From 8e72ca4939ea95f0b924b83bcd75e87207d5f6ce Mon Sep 17 00:00:00 2001 From: "krish@sentientgeeks.com" Date: Wed, 3 Mar 2021 16:55:40 +0530 Subject: [PATCH] initial commit --- LICENSE | 21 + README.md | 67 + angular.json | 143 + e2e/app.po.ts | 11 + e2e/tsconfig.e2e.json | 14 + karma.conf.js | 33 + package-lock.json | 15329 ++++++++++++++++ package.json | 74 + protractor.conf.js | 28 + proxy.json | 6 + server/auth.route.ts | 26 + server/create-course.route.ts | 29 + server/db-data.ts | 630 + server/delete-course.route.ts | 22 + server/get-courses.route.ts | 38 + server/save-course.route.ts | 24 + server/search-lessons.route.ts | 40 + server/server.ts | 45 + server/server.tsconfig.json | 6 + src/app/app.component.css | 17 + src/app/app.component.html | 1 + src/app/app.component.ts | 73 + src/app/app.module.ts | 71 + src/app/app.routing.ts | 80 + src/app/auth/action-types.ts | 5 + src/app/auth/auth.actions.ts | 14 + src/app/auth/auth.effects.ts | 39 + src/app/auth/auth.guard.ts | 37 + src/app/auth/auth.module.ts | 51 + src/app/auth/auth.selectors.ts | 19 + src/app/auth/auth.service.ts | 20 + src/app/auth/login/login.component.html | 92 + src/app/auth/login/login.component.scss | 11 + src/app/auth/login/login.component.ts | 152 + src/app/auth/model/user.model.ts | 6 + src/app/auth/reducers/index.ts | 40 + src/app/courses/course/course.component.css | 56 + src/app/courses/course/course.component.html | 51 + src/app/courses/course/course.component.ts | 73 + .../courses-card-list.component.css | 15 + .../courses-card-list.component.html | 33 + .../courses-card-list.component.ts | 67 + src/app/courses/courses.module.ts | 120 + .../edit-course-dialog.component.css | 10 + .../edit-course-dialog.component.html | 95 + .../edit-course-dialog.component.ts | 91 + src/app/courses/home/home.component.css | 38 + src/app/courses/home/home.component.html | 41 + src/app/courses/home/home.component.ts | 68 + src/app/courses/model/course.ts | 28 + src/app/courses/model/lesson.ts | 26 + .../courses/services/course-entity.service.ts | 19 + .../courses/services/courses-data.service.ts | 26 + .../courses/services/courses-http.service.ts | 48 + src/app/courses/services/courses.resolver.ts | 31 + .../courses/services/lesson-entity.service.ts | 13 + .../courses/shared/default-dialog-config.ts | 12 + src/app/reducers/index.ts | 20 + src/app/shared/animations/matx-animations.ts | 53 + .../breadcrumb/breadcrumb.component.html | 12 + .../breadcrumb/breadcrumb.component.scss | 0 .../breadcrumb/breadcrumb.component.ts | 66 + .../button-loading.component.html | 12 + .../button-loading.component.scss | 0 .../button-loading.component.spec.ts | 25 + .../button-loading.component.ts | 23 + .../customizer/customizer.component.html | 131 + .../customizer/customizer.component.scss | 118 + .../customizer/customizer.component.ts | 80 + .../components/footer/footer.component.html | 6 + .../components/footer/footer.component.scss | 0 .../footer/footer.component.spec.ts | 25 + .../components/footer/footer.component.ts | 15 + .../header-side/header-side.component.ts | 75 + .../header-side/header-side.template.html | 77 + .../admin-layout/admin-layout.component.ts | 138 + .../admin-layout/admin-layout.template.html | 66 + .../auth-layout/auth-layout.component.html | 1 + .../auth-layout/auth-layout.component.ts | 14 + .../notifications.component.html | 18 + .../notifications/notifications.component.ts | 46 + .../components/shared-components.module.ts | 66 + .../sidebar-side/sidebar-side.component.html | 95 + .../sidebar-side/sidebar-side.component.ts | 48 + .../components/sidenav/sidenav.component.ts | 29 + .../components/sidenav/sidenav.template.html | 133 + .../directives/dropdown-anchor.directive.ts | 19 + .../directives/dropdown-link.directive.ts | 46 + .../shared/directives/dropdown.directive.ts | 55 + .../shared/directives/font-size.directive.ts | 9 + .../directives/matx-highlight.directive.ts | 82 + .../matx-side-nav-toggle.directive.ts | 46 + .../matx-sidenav-helper.directive.ts | 91 + .../matx-sidenav-helper.service.ts | 21 + .../shared/directives/scroll-to.directive.ts | 64 + .../directives/shared-directives.module.ts | 33 + src/app/shared/guards/auth.guard.ts | 27 + src/app/shared/guards/user-role.guard.ts | 31 + src/app/shared/helpers/url.helper.ts | 10 + src/app/shared/helpers/utils.ts | 81 + src/app/shared/helpers/window.helper.ts | 32 + src/app/shared/inmemory-db/calendarEvents.ts | 58 + src/app/shared/inmemory-db/chat-db.ts | 177 + src/app/shared/inmemory-db/countries.ts | 247 + src/app/shared/inmemory-db/inbox.ts | 321 + .../shared/inmemory-db/inmemory-db.service.ts | 17 + src/app/shared/inmemory-db/invoices.ts | 104 + src/app/shared/inmemory-db/orders.ts | 8 + src/app/shared/inmemory-db/products.ts | 698 + src/app/shared/inmemory-db/todo.ts | 87 + src/app/shared/inmemory-db/users.ts | 1024 ++ .../shared/interceptors/token.interceptor.ts | 39 + src/app/shared/models/event.model.ts | 58 + src/app/shared/models/invoice.model.ts | 24 + src/app/shared/models/product.model.ts | 19 + src/app/shared/models/todo.model.ts | 19 + src/app/shared/models/user.model.ts | 5 + src/app/shared/pipes/excerpt.pipe.ts | 10 + src/app/shared/pipes/get-value-by-key.pipe.ts | 21 + src/app/shared/pipes/relative-time.pipe.ts | 33 + src/app/shared/pipes/shared-pipes.module.ts | 21 + .../search-input-over.component.html | 9 + .../search-input-over.component.scss | 40 + .../search-input-over.component.spec.ts | 25 + .../search-input-over.component.ts | 61 + src/app/shared/search/search.module.ts | 13 + src/app/shared/search/search.service.ts | 12 + .../app-confirm/app-confirm.component.ts | 28 + .../app-confirm/app-confirm.service.ts | 28 + .../app-loader/app-loader.component.css | 3 + .../app-loader/app-loader.component.html | 6 + .../app-loader/app-loader.component.ts | 17 + .../services/app-loader/app-loader.service.ts | 26 + .../shared/services/auth/jwt-auth.service.ts | 128 + src/app/shared/services/copier.service.ts | 60 + src/app/shared/services/customizer.service.ts | 242 + .../shared/services/error-handler.service.ts | 41 + src/app/shared/services/layout.service.ts | 113 + .../shared/services/local-store.service.ts | 30 + .../shared/services/match-media.service.ts | 31 + src/app/shared/services/navigation.service.ts | 156 + .../shared/services/route-parts.service.ts | 32 + src/app/shared/services/theme.service.ts | 87 + src/app/shared/shared-material.module.ts | 81 + src/app/shared/shared.module.ts | 37 + src/app/vendor/Chart.min.js | 14 + src/app/vendor/pace/pace-green.css | 22 + src/app/vendor/pace/pace-theme-min.css | 22 + src/app/vendor/pace/pace.min.js | 2 + .../analytics/analytics.component.html | 332 + .../analytics/analytics.component.scss | 0 .../analytics/analytics.component.spec.ts | 25 + .../analytics/analytics.component.ts | 366 + src/app/views/dashboard/dashboard.module.ts | 25 + src/app/views/dashboard/dashboard.routing.ts | 10 + .../forms/basic-form/basic-form.component.css | 0 .../basic-form/basic-form.component.html | 175 + .../forms/basic-form/basic-form.component.ts | 47 + .../file-upload/file-upload.component.css | 0 .../file-upload/file-upload.component.html | 116 + .../file-upload/file-upload.component.ts | 22 + src/app/views/forms/forms.module.ts | 55 + src/app/views/forms/forms.routing.ts | 29 + .../rich-text-editor.component.css | 0 .../rich-text-editor.component.html | 10 + .../rich-text-editor.component.ts | 26 + .../views/forms/wizard/wizard.component.css | 0 .../views/forms/wizard/wizard.component.html | 91 + .../views/forms/wizard/wizard.component.ts | 28 + .../views/mat-icons/mat-icons.component.css | 0 .../views/mat-icons/mat-icons.component.html | 35 + .../views/mat-icons/mat-icons.component.ts | 14 + src/app/views/mat-icons/mat-icons.module.ts | 21 + src/app/views/mat-icons/mat-icons.routing.ts | 8 + .../mat-kits/mat-kits.component.html | 11 + .../mat-kits/mat-kits.component.scss | 0 .../mat-kits/mat-kits.component.spec.ts | 25 + .../mat-kits/mat-kits.component.ts | 15 + .../material-components-routing.module.ts | 17 + .../material-components.module.ts | 17 + .../order-cost-list.component.html | 3 + .../order-cost-list.component.scss | 0 .../order-cost-list.component.spec.ts | 25 + .../order-cost-list.component.ts | 15 + .../order-detail/order-detail.component.html | 4 + .../order-detail/order-detail.component.scss | 0 .../order-detail.component.spec.ts | 25 + .../order-detail/order-detail.component.ts | 15 + .../order-list/order-list.component.html | 5 + .../order-list/order-list.component.scss | 0 .../order-list/order-list.component.spec.ts | 25 + .../order/order-list/order-list.component.ts | 15 + src/app/views/order/order-routing.module.ts | 33 + src/app/views/order/order.module.ts | 18 + src/app/views/order/order.service.ts | 9 + .../others/app-blank/app-blank.component.css | 0 .../others/app-blank/app-blank.component.html | 3 + .../others/app-blank/app-blank.component.ts | 15 + src/app/views/others/others.module.ts | 42 + src/app/views/others/others.routing.ts | 17 + src/app/views/search-view/country.service.ts | 17 + .../result-page/result-page.component.html | 69 + .../result-page/result-page.component.scss | 0 .../result-page/result-page.component.spec.ts | 25 + .../result-page/result-page.component.ts | 32 + .../search-view/search-view-routing.module.ts | 16 + .../views/search-view/search-view.module.ts | 14 + .../views/sessions/error/error.component.css | 0 .../views/sessions/error/error.component.html | 22 + .../views/sessions/error/error.component.ts | 15 + .../forgot-password.component.css | 0 .../forgot-password.component.html | 39 + .../forgot-password.component.ts | 21 + .../lockscreen/lockscreen.component.css | 0 .../lockscreen/lockscreen.component.html | 37 + .../lockscreen/lockscreen.component.ts | 29 + .../not-found/not-found.component.css | 0 .../not-found/not-found.component.html | 23 + .../sessions/not-found/not-found.component.ts | 15 + src/app/views/sessions/sessions.module.ts | 41 + src/app/views/sessions/sessions.routing.ts | 47 + .../sessions/signin/signin.component.html | 94 + .../sessions/signin/signin.component.scss | 0 .../sessions/signin/signin.component.spec.ts | 25 + .../views/sessions/signin/signin.component.ts | 87 + .../sessions/signup/signup.component.html | 85 + .../sessions/signup/signup.component.scss | 0 .../sessions/signup/signup.component.spec.ts | 25 + .../views/sessions/signup/signup.component.ts | 43 + .../material-table.component.html | 41 + .../material-table.component.scss | 0 .../material-table.component.spec.ts | 25 + .../material-table.component.ts | 30 + src/app/views/tables/tables.module.ts | 25 + src/app/views/tables/tables.routing.ts | 13 + src/app/views/tables/tables.service.ts | 640 + src/assets/.gitkeep | 0 .../examples/chart/chart-examples.module.ts | 17 + .../echart-bar/echart-bar.component.html | 20 + .../echart-bar/echart-bar.component.scss | 0 .../echart-bar/echart-bar.component.spec.ts | 25 + .../chart/echart-bar/echart-bar.component.ts | 345 + .../echart-heatmap.component.html | 8 + .../echart-heatmap.component.scss | 6 + .../echart-heatmap.component.spec.ts | 25 + .../echart-heatmap.component.ts | 449 + .../echart-pie/echart-pie.component.html | 14 + .../echart-pie/echart-pie.component.scss | 0 .../echart-pie/echart-pie.component.spec.ts | 25 + .../chart/echart-pie/echart-pie.component.ts | 444 + .../echart-radar/echart-radar.component.html | 8 + .../echart-radar/echart-radar.component.scss | 0 .../echart-radar.component.spec.ts | 25 + .../echart-radar/echart-radar.component.ts | 329 + src/assets/examples/chart/index.ts | 48 + .../accordin-expansion-panel.component.html | 69 + .../accordin-expansion-panel.component.scss | 13 + ...accordin-expansion-panel.component.spec.ts | 25 + .../accordin-expansion-panel.component.ts | 29 + .../align-tab-group.component.html | 18 + .../align-tab-group.component.scss | 4 + .../align-tab-group.component.spec.ts | 25 + .../align-tab-group.component.ts | 15 + .../animation-tab-group.component.html | 14 + .../animation-tab-group.component.scss | 4 + .../animation-tab-group.component.spec.ts | 25 + .../animation-tab-group.component.ts | 15 + .../appearance-form-field.component.html | 32 + .../appearance-form-field.component.scss | 0 .../appearance-form-field.component.spec.ts | 25 + .../appearance-form-field.component.ts | 15 + .../auto-hide-tooltip.component.html | 18 + .../auto-hide-tooltip.component.scss | 11 + .../auto-hide-tooltip.component.spec.ts | 25 + .../auto-hide-tooltip.component.ts | 20 + .../auto-resizing-texarea.component.html | 20 + .../auto-resizing-texarea.component.scss | 4 + .../auto-resizing-texarea.component.spec.ts | 25 + .../auto-resizing-texarea.component.ts | 24 + .../autocomplete-chip.component.html | 27 + .../autocomplete-chip.component.scss | 6 + .../autocomplete-chip.component.spec.ts | 25 + .../autocomplete-chip.component.ts | 74 + .../autocomplete-overview.component.html | 20 + .../autocomplete-overview.component.scss | 20 + .../autocomplete-overview.component.spec.ts | 25 + .../autocomplete-overview.component.ts | 63 + .../autoresize-sidenav.component.html | 16 + .../autoresize-sidenav.component.scss | 17 + .../autoresize-sidenav.component.spec.ts | 25 + .../autoresize-sidenav.component.ts | 17 + .../basic-badge/basic-badge.component.html | 22 + .../basic-badge/basic-badge.component.scss | 0 .../basic-badge/basic-badge.component.spec.ts | 25 + .../basic-badge/basic-badge.component.ts | 15 + .../basic-bar/basic-bar.component.html | 1 + .../basic-bar/basic-bar.component.scss | 0 .../basic-bar/basic-bar.component.spec.ts | 25 + .../material/basic-bar/basic-bar.component.ts | 15 + .../basic-button-toggle.component.html | 6 + .../basic-button-toggle.component.scss | 0 .../basic-button-toggle.component.spec.ts | 25 + .../basic-button-toggle.component.ts | 15 + .../basic-card/basic-card.component.html | 1 + .../basic-card/basic-card.component.scss | 0 .../basic-card/basic-card.component.spec.ts | 25 + .../basic-card/basic-card.component.ts | 15 + .../basic-checkbox.component.html | 1 + .../basic-checkbox.component.scss | 0 .../basic-checkbox.component.spec.ts | 25 + .../basic-checkbox.component.ts | 15 + .../basic-chip/basic-chip.component.html | 7 + .../basic-chip/basic-chip.component.scss | 0 .../basic-chip/basic-chip.component.spec.ts | 25 + .../basic-chip/basic-chip.component.ts | 15 + .../basic-datepicker.component.html | 5 + .../basic-datepicker.component.scss | 0 .../basic-datepicker.component.spec.ts | 25 + .../basic-datepicker.component.ts | 15 + .../basic-dialog-overview.component.html | 11 + .../basic-dialog-overview.component.scss | 0 .../basic-dialog-overview.component.spec.ts | 25 + .../basic-dialog-overview.component.ts | 20 + .../basic-dialog/basic-dialog.component.html | 13 + .../basic-dialog/basic-dialog.component.scss | 0 .../basic-dialog.component.spec.ts | 25 + .../basic-dialog/basic-dialog.component.ts | 34 + .../basic-divider.component.html | 7 + .../basic-divider.component.scss | 0 .../basic-divider.component.spec.ts | 25 + .../basic-divider/basic-divider.component.ts | 15 + .../basic-expansion-panel.component.html | 32 + .../basic-expansion-panel.component.scss | 0 .../basic-expansion-panel.component.spec.ts | 25 + .../basic-expansion-panel.component.ts | 17 + .../basic-grid/basic-grid.component.html | 6 + .../basic-grid/basic-grid.component.scss | 4 + .../basic-grid/basic-grid.component.spec.ts | 25 + .../basic-grid/basic-grid.component.ts | 15 + .../basic-icon/basic-icon.component.html | 1 + .../basic-icon/basic-icon.component.scss | 0 .../basic-icon/basic-icon.component.spec.ts | 25 + .../basic-icon/basic-icon.component.ts | 15 + .../basic-input/basic-input.component.html | 9 + .../basic-input/basic-input.component.scss | 10 + .../basic-input/basic-input.component.spec.ts | 25 + .../basic-input/basic-input.component.ts | 15 + .../basic-list/basic-list.component.html | 5 + .../basic-list/basic-list.component.scss | 0 .../basic-list/basic-list.component.spec.ts | 25 + .../basic-list/basic-list.component.ts | 15 + .../basic-menu/basic-menu.component.html | 5 + .../basic-menu/basic-menu.component.scss | 0 .../basic-menu/basic-menu.component.spec.ts | 25 + .../basic-menu/basic-menu.component.ts | 15 + .../basic-paginator.component.html | 4 + .../basic-paginator.component.scss | 0 .../basic-paginator.component.spec.ts | 25 + .../basic-paginator.component.ts | 15 + .../basic-radio/basic-radio.component.html | 4 + .../basic-radio/basic-radio.component.scss | 4 + .../basic-radio/basic-radio.component.spec.ts | 25 + .../basic-radio/basic-radio.component.ts | 15 + .../basic-select/basic-select.component.html | 20 + .../basic-select/basic-select.component.scss | 0 .../basic-select.component.spec.ts | 25 + .../basic-select/basic-select.component.ts | 26 + .../basic-sidenav.component.html | 12 + .../basic-sidenav.component.scss | 10 + .../basic-sidenav.component.spec.ts | 25 + .../basic-sidenav/basic-sidenav.component.ts | 15 + .../basic-slider/basic-slider.component.html | 1 + .../basic-slider/basic-slider.component.scss | 5 + .../basic-slider.component.spec.ts | 25 + .../basic-slider/basic-slider.component.ts | 15 + .../basic-snackbar.component.html | 9 + .../basic-snackbar.component.scss | 4 + .../basic-snackbar.component.spec.ts | 25 + .../basic-snackbar.component.ts | 22 + .../basic-sort-header.component.html | 17 + .../basic-sort-header.component.scss | 4 + .../basic-sort-header.component.spec.ts | 25 + .../basic-sort-header.component.ts | 57 + .../basic-spinner.component.html | 1 + .../basic-spinner.component.scss | 0 .../basic-spinner.component.spec.ts | 25 + .../basic-spinner/basic-spinner.component.ts | 15 + .../basic-stepper.component.html | 36 + .../basic-stepper.component.scss | 0 .../basic-stepper.component.spec.ts | 25 + .../basic-stepper/basic-stepper.component.ts | 26 + .../basic-tab-group.component.html | 6 + .../basic-tab-group.component.scss | 0 .../basic-tab-group.component.spec.ts | 25 + .../basic-tab-group.component.ts | 15 + .../basic-table/basic-table.component.html | 38 + .../basic-table/basic-table.component.scss | 9 + .../basic-table/basic-table.component.spec.ts | 25 + .../basic-table/basic-table.component.ts | 49 + .../basic-toggle/basic-toggle.component.html | 1 + .../basic-toggle/basic-toggle.component.scss | 0 .../basic-toggle.component.spec.ts | 25 + .../basic-toggle/basic-toggle.component.ts | 15 + .../basic-toolbar.component.html | 1 + .../basic-toolbar.component.scss | 0 .../basic-toolbar.component.spec.ts | 25 + .../basic-toolbar/basic-toolbar.component.ts | 15 + .../basic-tooltip.component.html | 5 + .../basic-tooltip.component.scss | 0 .../basic-tooltip.component.spec.ts | 25 + .../basic-tooltip/basic-tooltip.component.ts | 15 + .../bottom-sheet-overview.component.html | 21 + .../bottom-sheet-overview.component.scss | 0 .../bottom-sheet-overview.component.spec.ts | 25 + .../bottom-sheet-overview.component.ts | 21 + .../bottom-sheet/bottom-sheet.component.html | 3 + .../bottom-sheet/bottom-sheet.component.scss | 0 .../bottom-sheet.component.spec.ts | 25 + .../bottom-sheet/bottom-sheet.component.ts | 21 + .../button-examples.component.html | 43 + .../button-examples.component.scss | 1 + .../button-examples.component.spec.ts | 25 + .../button-examples.component.ts | 15 + .../button-toggle.component.html | 16 + .../button-toggle.component.scss | 4 + .../button-toggle.component.spec.ts | 25 + .../button-toggle/button-toggle.component.ts | 15 + .../material/buttons/buttons.component.html | 85 + .../material/buttons/buttons.component.scss | 4 + .../buttons/buttons.component.spec.ts | 25 + .../material/buttons/buttons.component.ts | 15 + .../changing-tooltip.component.html | 9 + .../changing-tooltip.component.scss | 4 + .../changing-tooltip.component.spec.ts | 25 + .../changing-tooltip.component.ts | 18 + .../checkbox-tree.component.html | 30 + .../checkbox-tree.component.scss | 0 .../checkbox-tree.component.spec.ts | 25 + .../checkbox-tree/checkbox-tree.component.ts | 264 + .../clear-button-input.component.html | 6 + .../clear-button-input.component.scss | 4 + .../clear-button-input.component.spec.ts | 25 + .../clear-button-input.component.ts | 17 + .../configurable-checkbox.component.html | 40 + .../configurable-checkbox.component.scss | 15 + .../configurable-checkbox.component.spec.ts | 25 + .../configurable-checkbox.component.ts | 20 + .../configurable-sidenav.component.html | 25 + .../configurable-sidenav.component.scss | 15 + .../configurable-sidenav.component.spec.ts | 25 + .../configurable-sidenav.component.ts | 18 + .../configurable-toggle.component.html | 44 + .../configurable-toggle.component.scss | 0 .../configurable-toggle.component.spec.ts | 25 + .../configurable-toggle.component.ts | 18 + .../custom-bar/custom-bar.component.html | 64 + .../custom-bar/custom-bar.component.scss | 15 + .../custom-bar/custom-bar.component.spec.ts | 25 + .../custom-bar/custom-bar.component.ts | 20 + .../custom-class-tooltip.component.html | 7 + .../custom-class-tooltip.component.scss | 8 + .../custom-class-tooltip.component.spec.ts | 25 + .../custom-class-tooltip.component.ts | 18 + .../custom-datepicker.component.html | 5 + .../custom-datepicker.component.scss | 0 .../custom-datepicker.component.spec.ts | 25 + .../custom-datepicker.component.ts | 50 + .../custom-loading-buttons.component.html | 11 + .../custom-loading-buttons.component.scss | 0 .../custom-loading-buttons.component.spec.ts | 25 + .../custom-loading-buttons.component.ts | 45 + .../custom-paginator.component.html | 28 + .../custom-paginator.component.scss | 4 + .../custom-paginator.component.spec.ts | 25 + .../custom-paginator.component.ts | 28 + .../custom-panel-select.component.html | 9 + .../custom-panel-select.component.scss | 12 + .../custom-panel-select.component.spec.ts | 25 + .../custom-panel-select.component.ts | 21 + .../custom-position-tooltip.component.html | 14 + .../custom-position-tooltip.component.scss | 4 + .../custom-position-tooltip.component.spec.ts | 25 + .../custom-position-tooltip.component.ts | 20 + .../custom-ripples.component.html | 21 + .../custom-ripples.component.scss | 26 + .../custom-ripples.component.spec.ts | 25 + .../custom-ripples.component.ts | 22 + .../custom-snackbar-overview.component.html | 3 + .../custom-snackbar-overview.component.scss | 3 + ...custom-snackbar-overview.component.spec.ts | 25 + .../custom-snackbar-overview.component.ts | 15 + .../custom-snackbar.component.html | 8 + .../custom-snackbar.component.scss | 0 .../custom-snackbar.component.spec.ts | 25 + .../custom-snackbar.component.ts | 25 + .../custom-spinner.component.html | 50 + .../custom-spinner.component.scss | 15 + .../custom-spinner.component.spec.ts | 25 + .../custom-spinner.component.ts | 19 + .../custom-tab-group.component.html | 37 + .../custom-tab-group.component.scss | 5 + .../custom-tab-group.component.spec.ts | 25 + .../custom-tab-group.component.ts | 15 + .../customized-stepper.component.html | 61 + .../customized-stepper.component.scss | 0 .../customized-stepper.component.spec.ts | 25 + .../customized-stepper.component.ts | 29 + .../data-dialog-overview.component.html | 15 + .../data-dialog-overview.component.scss | 0 .../data-dialog-overview.component.spec.ts | 25 + .../data-dialog-overview.component.ts | 16 + .../data-dialog/data-dialog.component.html | 1 + .../data-dialog/data-dialog.component.scss | 0 .../data-dialog/data-dialog.component.spec.ts | 25 + .../data-dialog/data-dialog.component.ts | 29 + .../delay-tooltip.component.html | 21 + .../delay-tooltip.component.scss | 5 + .../delay-tooltip.component.spec.ts | 25 + .../delay-tooltip/delay-tooltip.component.ts | 19 + ...different-locale-datepicker.component.html | 7 + ...different-locale-datepicker.component.scss | 4 + ...ferent-locale-datepicker.component.spec.ts | 25 + .../different-locale-datepicker.component.ts | 28 + .../disabled-datepicker.component.html | 23 + .../disabled-datepicker.component.scss | 0 .../disabled-datepicker.component.spec.ts | 25 + .../disabled-datepicker.component.ts | 15 + .../disabled-select.component.html | 29 + .../disabled-select.component.scss | 0 .../disabled-select.component.spec.ts | 25 + .../disabled-select.component.ts | 18 + .../disabled-tooltip.component.html | 10 + .../disabled-tooltip.component.scss | 4 + .../disabled-tooltip.component.spec.ts | 25 + .../disabled-tooltip.component.ts | 18 + .../display-value-autocomplete.component.html | 10 + .../display-value-autocomplete.component.scss | 10 + ...splay-value-autocomplete.component.spec.ts | 25 + .../display-value-autocomplete.component.ts | 46 + .../drawer-sidenav.component.html | 13 + .../drawer-sidenav.component.scss | 7 + .../drawer-sidenav.component.spec.ts | 25 + .../drawer-sidenav.component.ts | 15 + .../dynamic-data-tree.component.html | 19 + .../dynamic-data-tree.component.scss | 4 + .../dynamic-data-tree.component.spec.ts | 25 + .../dynamic-data-tree.component.ts | 143 + .../dynamic-grid/dynamic-grid.component.html | 9 + .../dynamic-grid/dynamic-grid.component.scss | 0 .../dynamic-grid.component.spec.ts | 25 + .../dynamic-grid/dynamic-grid.component.ts | 29 + .../dynamic-tab-group.component.html | 30 + .../dynamic-tab-group.component.scss | 5 + .../dynamic-tab-group.component.spec.ts | 25 + .../dynamic-tab-group.component.ts | 31 + .../error-form-field.component.html | 6 + .../error-form-field.component.scss | 9 + .../error-form-field.component.spec.ts | 25 + .../error-form-field.component.ts | 23 + .../error-input/error-input.component.html | 13 + .../error-input/error-input.component.scss | 10 + .../error-input/error-input.component.spec.ts | 25 + .../error-input/error-input.component.ts | 30 + .../error-message-input.component.html | 11 + .../error-message-input.component.scss | 10 + .../error-message-input.component.spec.ts | 25 + .../error-message-input.component.ts | 21 + .../error-select/error-select.component.html | 28 + .../error-select/error-select.component.scss | 0 .../error-select.component.spec.ts | 25 + .../error-select/error-select.component.ts | 42 + .../error-stepper.component.html | 33 + .../error-stepper.component.scss | 0 .../error-stepper.component.spec.ts | 25 + .../error-stepper/error-stepper.component.ts | 29 + .../escape-backdrop-sidenav.component.html | 11 + .../escape-backdrop-sidenav.component.scss | 8 + .../escape-backdrop-sidenav.component.spec.ts | 25 + .../escape-backdrop-sidenav.component.ts | 27 + .../event-datepicker.component.html | 10 + .../event-datepicker.component.scss | 7 + .../event-datepicker.component.spec.ts | 25 + .../event-datepicker.component.ts | 23 + .../feature-select.component.html | 28 + .../feature-select.component.scss | 0 .../feature-select.component.spec.ts | 25 + .../feature-select.component.ts | 30 + .../filter-autocomplete.component.html | 10 + .../filter-autocomplete.component.scss | 10 + .../filter-autocomplete.component.spec.ts | 25 + .../filter-autocomplete.component.ts | 33 + .../filter-datepicker.component.html | 5 + .../filter-datepicker.component.scss | 0 .../filter-datepicker.component.spec.ts | 25 + .../filter-datepicker.component.ts | 21 + .../filter-table/filter-table.component.html | 33 + .../filter-table/filter-table.component.scss | 10 + .../filter-table.component.spec.ts | 25 + .../filter-table/filter-table.component.ts | 43 + .../fixed-sidenav.component.html | 44 + .../fixed-sidenav.component.scss | 30 + .../fixed-sidenav.component.spec.ts | 25 + .../fixed-sidenav/fixed-sidenav.component.ts | 24 + .../flat-tree/flat-tree.component.html | 19 + .../flat-tree/flat-tree.component.scss | 0 .../flat-tree/flat-tree.component.spec.ts | 25 + .../material/flat-tree/flat-tree.component.ts | 78 + .../footer-table/footer-table.component.html | 19 + .../footer-table/footer-table.component.scss | 8 + .../footer-table.component.spec.ts | 25 + .../footer-table/footer-table.component.ts | 35 + .../form-input/form-input.component.html | 36 + .../form-input/form-input.component.scss | 14 + .../form-input/form-input.component.spec.ts | 25 + .../form-input/form-input.component.ts | 15 + .../form-select/form-select.component.html | 23 + .../form-select/form-select.component.scss | 0 .../form-select/form-select.component.spec.ts | 25 + .../form-select/form-select.component.ts | 40 + ...ighlight-first-autocomplete.component.html | 10 + ...ighlight-first-autocomplete.component.scss | 10 + ...light-first-autocomplete.component.spec.ts | 25 + .../highlight-first-autocomplete.component.ts | 30 + .../hints-form-field.component.html | 13 + .../hints-form-field.component.scss | 9 + .../hints-form-field.component.spec.ts | 25 + .../hints-form-field.component.ts | 15 + .../hints-input/hints-input.component.html | 9 + .../hints-input/hints-input.component.scss | 10 + .../hints-input/hints-input.component.spec.ts | 25 + .../hints-input/hints-input.component.ts | 15 + .../icon-menu/icon-menu.component.html | 17 + .../icon-menu/icon-menu.component.scss | 0 .../icon-menu/icon-menu.component.spec.ts | 25 + .../material/icon-menu/icon-menu.component.ts | 15 + .../indeterminate-bar.component.html | 2 + .../indeterminate-bar.component.scss | 0 .../indeterminate-bar.component.spec.ts | 25 + .../indeterminate-bar.component.ts | 15 + src/assets/examples/material/index.ts | 1040 ++ .../input-chip/input-chip.component.html | 15 + .../input-chip/input-chip.component.scss | 6 + .../input-chip/input-chip.component.spec.ts | 25 + .../input-chip/input-chip.component.ts | 50 + .../label-form-field.component.html | 34 + .../label-form-field.component.scss | 21 + .../label-form-field.component.spec.ts | 25 + .../label-form-field.component.ts | 20 + .../manual-hide-tooltip.component.html | 28 + .../manual-hide-tooltip.component.scss | 4 + .../manual-hide-tooltip.component.spec.ts | 25 + .../manual-hide-tooltip.component.ts | 15 + .../material/material-examples.module.ts | 20 + .../min-max-datepicker.component.html | 5 + .../min-max-datepicker.component.scss | 0 .../min-max-datepicker.component.spec.ts | 25 + .../min-max-datepicker.component.ts | 18 + .../moment-js-datepicker.component.html | 5 + .../moment-js-datepicker.component.scss | 0 .../moment-js-datepicker.component.spec.ts | 25 + .../moment-js-datepicker.component.ts | 36 + .../multi-row-toolbar.component.html | 18 + .../multi-row-toolbar.component.scss | 8 + .../multi-row-toolbar.component.spec.ts | 25 + .../multi-row-toolbar.component.ts | 15 + .../multi-section-card.component.html | 19 + .../multi-section-card.component.scss | 9 + .../multi-section-card.component.spec.ts | 25 + .../multi-section-card.component.ts | 15 + .../multiple-select.component.html | 9 + .../multiple-select.component.scss | 0 .../multiple-select.component.spec.ts | 25 + .../multiple-select.component.ts | 19 + .../nav-tab-group.component.html | 12 + .../nav-tab-group.component.scss | 4 + .../nav-tab-group.component.spec.ts | 25 + .../nav-tab-group/nav-tab-group.component.ts | 23 + .../nested-menu/nested-menu.component.html | 47 + .../nested-menu/nested-menu.component.scss | 0 .../nested-menu/nested-menu.component.spec.ts | 25 + .../nested-menu/nested-menu.component.ts | 15 + .../nested-tree/nested-tree.component.html | 28 + .../nested-tree/nested-tree.component.scss | 11 + .../nested-tree/nested-tree.component.spec.ts | 25 + .../nested-tree/nested-tree.component.ts | 61 + .../ngmodel-radio.component.html | 10 + .../ngmodel-radio.component.scss | 10 + .../ngmodel-radio.component.spec.ts | 25 + .../ngmodel-radio/ngmodel-radio.component.ts | 18 + .../open-close-sidenav.component.html | 15 + .../open-close-sidenav.component.scss | 15 + .../open-close-sidenav.component.spec.ts | 25 + .../open-close-sidenav.component.ts | 18 + .../open-method-datepicker.component.html | 5 + .../open-method-datepicker.component.scss | 4 + .../open-method-datepicker.component.spec.ts | 25 + .../open-method-datepicker.component.ts | 15 + .../option-group-autocomplete.component.html | 12 + .../option-group-autocomplete.component.scss | 0 ...ption-group-autocomplete.component.spec.ts | 25 + .../option-group-autocomplete.component.ts | 111 + .../option-group-select.component.html | 28 + .../option-group-select.component.scss | 0 .../option-group-select.component.spec.ts | 25 + .../option-group-select.component.ts | 63 + .../pagination-table.component.html | 33 + .../pagination-table.component.scss | 4 + .../pagination-table.component.spec.ts | 25 + .../pagination-table.component.ts | 51 + .../prefix-suffix-form-field.component.html | 14 + .../prefix-suffix-form-field.component.scss | 22 + ...prefix-suffix-form-field.component.spec.ts | 25 + .../prefix-suffix-form-field.component.ts | 17 + .../reset-select/reset-select.component.html | 20 + .../reset-select/reset-select.component.scss | 0 .../reset-select.component.spec.ts | 25 + .../reset-select/reset-select.component.ts | 25 + .../responsive-sidenav.component.html | 20 + .../responsive-sidenav.component.scss | 32 + .../responsive-sidenav.component.spec.ts | 25 + .../responsive-sidenav.component.ts | 28 + .../rippleless-select.component.html | 8 + .../rippleless-select.component.scss | 0 .../rippleless-select.component.spec.ts | 25 + .../rippleless-select.component.ts | 15 + .../scrollable-dialog-overview.component.html | 64 + .../scrollable-dialog-overview.component.scss | 0 ...rollable-dialog-overview.component.spec.ts | 25 + .../scrollable-dialog-overview.component.ts | 15 + .../scrollable-dialog.component.html | 1 + .../scrollable-dialog.component.scss | 0 .../scrollable-dialog.component.spec.ts | 25 + .../scrollable-dialog.component.ts | 25 + .../section-list/section-list.component.html | 15 + .../section-list/section-list.component.scss | 4 + .../section-list.component.spec.ts | 25 + .../section-list/section-list.component.ts | 45 + .../selected-value-datepicker.component.html | 18 + .../selected-value-datepicker.component.scss | 4 + ...elected-value-datepicker.component.spec.ts | 25 + .../selected-value-datepicker.component.ts | 17 + .../selection-table.component.html | 49 + .../selection-table.component.scss | 4 + .../selection-table.component.spec.ts | 25 + .../selection-table.component.ts | 58 + .../simple-autocomplete.component.html | 10 + .../simple-autocomplete.component.scss | 10 + .../simple-autocomplete.component.spec.ts | 25 + .../simple-autocomplete.component.ts | 19 + .../simple-form-field.component.html | 15 + .../simple-form-field.component.scss | 9 + .../simple-form-field.component.spec.ts | 25 + .../simple-form-field.component.ts | 15 + .../material/slider/slider.component.html | 63 + .../material/slider/slider.component.scss | 23 + .../material/slider/slider.component.spec.ts | 25 + .../material/slider/slider.component.ts | 35 + .../sorting-table.component.html | 29 + .../sorting-table.component.scss | 8 + .../sorting-table.component.spec.ts | 25 + .../sorting-table/sorting-table.component.ts | 41 + .../stacked-chip/stacked-chip.component.html | 6 + .../stacked-chip/stacked-chip.component.scss | 4 + .../stacked-chip.component.spec.ts | 25 + .../stacked-chip/stacked-chip.component.ts | 23 + .../start-date-datepicker.component.html | 5 + .../start-date-datepicker.component.scss | 0 .../start-date-datepicker.component.spec.ts | 25 + .../start-date-datepicker.component.ts | 17 + .../sticky-column-table.component.html | 39 + .../sticky-column-table.component.scss | 27 + .../sticky-column-table.component.spec.ts | 25 + .../sticky-column-table.component.ts | 44 + .../sticky-footer-table.component.html | 21 + .../sticky-footer-table.component.scss | 17 + .../sticky-footer-table.component.spec.ts | 25 + .../sticky-footer-table.component.ts | 35 + .../sticky-header-table.component.html | 31 + .../sticky-header-table.component.scss | 9 + .../sticky-header-table.component.spec.ts | 25 + .../sticky-header-table.component.ts | 38 + .../suffix-prefix-input.component.html | 9 + .../suffix-prefix-input.component.scss | 10 + .../suffix-prefix-input.component.spec.ts | 25 + .../suffix-prefix-input.component.ts | 15 + .../material/svg-icon/svg-icon.component.html | 1 + .../material/svg-icon/svg-icon.component.scss | 0 .../svg-icon/svg-icon.component.spec.ts | 25 + .../material/svg-icon/svg-icon.component.ts | 21 + .../table-sorting.component.html | 29 + .../table-sorting.component.scss | 8 + .../table-sorting.component.spec.ts | 25 + .../table-sorting/table-sorting.component.ts | 41 + .../theming-form-field.component.html | 14 + .../theming-form-field.component.scss | 9 + .../theming-form-field.component.spec.ts | 25 + .../theming-form-field.component.ts | 27 + .../touch-datepicker.component.html | 5 + .../touch-datepicker.component.scss | 0 .../touch-datepicker.component.spec.ts | 25 + .../touch-datepicker.component.ts | 15 + .../trigger-select.component.html | 11 + .../trigger-select.component.scss | 5 + .../trigger-select.component.spec.ts | 25 + .../trigger-select.component.ts | 20 + .../two-sidenav/two-sidenav.component.html | 5 + .../two-sidenav/two-sidenav.component.scss | 8 + .../two-sidenav/two-sidenav.component.spec.ts | 25 + .../two-sidenav/two-sidenav.component.ts | 15 + .../two-way-binding-select.component.html | 14 + .../two-way-binding-select.component.scss | 0 .../two-way-binding-select.component.spec.ts | 25 + .../two-way-binding-select.component.ts | 17 + .../vertical-stepper.component.html | 36 + .../vertical-stepper.component.scss | 0 .../vertical-stepper.component.spec.ts | 25 + .../vertical-stepper.component.ts | 26 + src/assets/i18n/en.json | 78 + src/assets/i18n/es.json | 78 + src/assets/images/5-star.png | Bin 0 -> 2256 bytes src/assets/images/UI-Lib-dummy.svg | 36 + .../images/backgrounds/card-coffee-cup.jpg | Bin 0 -> 211530 bytes .../images/backgrounds/fancy-twilight.jpg | Bin 0 -> 126152 bytes .../images/backgrounds/sea-twilight.jpg | Bin 0 -> 273033 bytes .../images/backgrounds/trianglify-1.png | Bin 0 -> 63533 bytes .../images/backgrounds/trianglify-2.png | Bin 0 -> 63769 bytes .../images/backgrounds/trianglify-3.png | Bin 0 -> 136731 bytes .../images/backgrounds/trianglify-4.png | Bin 0 -> 141753 bytes src/assets/images/backgrounds/waterfall.jpg | Bin 0 -> 345151 bytes src/assets/images/badges/badge-1.svg | 94 + src/assets/images/badges/badge-2.svg | 27 + src/assets/images/badges/badge-3.svg | 38 + src/assets/images/badges/badge-4.svg | 89 + src/assets/images/badges/badge-5.svg | 22 + src/assets/images/badges/badge-6.svg | 80 + src/assets/images/badges/badge-7.svg | 38 + src/assets/images/badges/badge-8.svg | 84 + src/assets/images/badges/badge-9.svg | 96 + src/assets/images/bg-2.jpg | Bin 0 -> 120314 bytes src/assets/images/cancel.png | Bin 0 -> 1203 bytes src/assets/images/circles.png | Bin 0 -> 4179 bytes src/assets/images/cryptocurrencies/ADA.png | Bin 0 -> 7602 bytes src/assets/images/cryptocurrencies/ADX.png | Bin 0 -> 9324 bytes src/assets/images/cryptocurrencies/AE.png | Bin 0 -> 10652 bytes src/assets/images/cryptocurrencies/ARDR.png | Bin 0 -> 13776 bytes src/assets/images/cryptocurrencies/ARK.png | Bin 0 -> 13528 bytes src/assets/images/cryptocurrencies/BAT.png | Bin 0 -> 13817 bytes src/assets/images/cryptocurrencies/BCC.png | Bin 0 -> 9351 bytes src/assets/images/cryptocurrencies/BCH.png | Bin 0 -> 11265 bytes src/assets/images/cryptocurrencies/BCN.png | Bin 0 -> 8302 bytes src/assets/images/cryptocurrencies/BLOCK.png | Bin 0 -> 9968 bytes src/assets/images/cryptocurrencies/BNB.png | Bin 0 -> 8257 bytes src/assets/images/cryptocurrencies/BNT.png | Bin 0 -> 9903 bytes src/assets/images/cryptocurrencies/BTC.png | Bin 0 -> 10638 bytes src/assets/images/cryptocurrencies/BTCD.png | Bin 0 -> 9637 bytes src/assets/images/cryptocurrencies/BTG.png | Bin 0 -> 22333 bytes src/assets/images/cryptocurrencies/BTM.png | Bin 0 -> 18711 bytes src/assets/images/cryptocurrencies/BTS.png | Bin 0 -> 13627 bytes src/assets/images/cryptocurrencies/CNX.png | Bin 0 -> 20101 bytes src/assets/images/cryptocurrencies/CVC.png | Bin 0 -> 10785 bytes src/assets/images/cryptocurrencies/DASH.png | Bin 0 -> 7736 bytes src/assets/images/cryptocurrencies/DCR.png | Bin 0 -> 9845 bytes src/assets/images/cryptocurrencies/DGB.png | Bin 0 -> 17301 bytes src/assets/images/cryptocurrencies/DGD.png | Bin 0 -> 5000 bytes src/assets/images/cryptocurrencies/DOGE.png | Bin 0 -> 8263 bytes src/assets/images/cryptocurrencies/EDG.png | Bin 0 -> 14998 bytes src/assets/images/cryptocurrencies/EMC2.png | Bin 0 -> 11000 bytes src/assets/images/cryptocurrencies/EOS.png | Bin 0 -> 11133 bytes src/assets/images/cryptocurrencies/ETC.png | Bin 0 -> 15210 bytes src/assets/images/cryptocurrencies/ETH.png | Bin 0 -> 9721 bytes src/assets/images/cryptocurrencies/ETHOS.png | Bin 0 -> 11598 bytes src/assets/images/cryptocurrencies/ETP.png | Bin 0 -> 12336 bytes src/assets/images/cryptocurrencies/FCT.png | Bin 0 -> 28136 bytes src/assets/images/cryptocurrencies/FUN.png | Bin 0 -> 16721 bytes src/assets/images/cryptocurrencies/GAME.png | Bin 0 -> 9139 bytes src/assets/images/cryptocurrencies/GAS.png | Bin 0 -> 9998 bytes src/assets/images/cryptocurrencies/GBYTE.png | Bin 0 -> 9417 bytes src/assets/images/cryptocurrencies/GNO.png | Bin 0 -> 11493 bytes src/assets/images/cryptocurrencies/GNT.png | Bin 0 -> 10401 bytes src/assets/images/cryptocurrencies/GRS.png | Bin 0 -> 14852 bytes src/assets/images/cryptocurrencies/GXS.png | Bin 0 -> 10325 bytes src/assets/images/cryptocurrencies/HSR.png | Bin 0 -> 10731 bytes src/assets/images/cryptocurrencies/ICN.png | Bin 0 -> 6377 bytes src/assets/images/cryptocurrencies/IOT.png | Bin 0 -> 10415 bytes src/assets/images/cryptocurrencies/KMD.png | Bin 0 -> 11032 bytes src/assets/images/cryptocurrencies/KNC.png | Bin 0 -> 15130 bytes src/assets/images/cryptocurrencies/LSK.png | Bin 0 -> 17387 bytes src/assets/images/cryptocurrencies/LTC.png | Bin 0 -> 16236 bytes src/assets/images/cryptocurrencies/MAID.png | Bin 0 -> 10007 bytes src/assets/images/cryptocurrencies/MCO.png | Bin 0 -> 11698 bytes src/assets/images/cryptocurrencies/MNX.png | Bin 0 -> 9529 bytes src/assets/images/cryptocurrencies/MONA.png | Bin 0 -> 9132 bytes src/assets/images/cryptocurrencies/MTL.png | Bin 0 -> 5724 bytes src/assets/images/cryptocurrencies/NAV.png | Bin 0 -> 11987 bytes src/assets/images/cryptocurrencies/NEO.png | Bin 0 -> 28127 bytes src/assets/images/cryptocurrencies/NXS.png | Bin 0 -> 25792 bytes src/assets/images/cryptocurrencies/NXT.png | Bin 0 -> 8036 bytes src/assets/images/cryptocurrencies/OMG.png | Bin 0 -> 10345 bytes src/assets/images/cryptocurrencies/PAY.png | Bin 0 -> 7482 bytes src/assets/images/cryptocurrencies/PIVX.png | Bin 0 -> 11669 bytes src/assets/images/cryptocurrencies/POT.png | Bin 0 -> 8754 bytes src/assets/images/cryptocurrencies/POWER.png | Bin 0 -> 25471 bytes src/assets/images/cryptocurrencies/PPC.png | Bin 0 -> 9677 bytes src/assets/images/cryptocurrencies/PPT.png | Bin 0 -> 8908 bytes src/assets/images/cryptocurrencies/PURA.png | Bin 0 -> 7866 bytes src/assets/images/cryptocurrencies/QASH.png | Bin 0 -> 17731 bytes src/assets/images/cryptocurrencies/QTUM.png | Bin 0 -> 23506 bytes src/assets/images/cryptocurrencies/RDN.png | Bin 0 -> 8737 bytes src/assets/images/cryptocurrencies/REP.png | Bin 0 -> 14388 bytes src/assets/images/cryptocurrencies/SALT.png | Bin 0 -> 9031 bytes src/assets/images/cryptocurrencies/SAN.png | Bin 0 -> 9673 bytes src/assets/images/cryptocurrencies/SC.png | Bin 0 -> 11927 bytes src/assets/images/cryptocurrencies/SKY.png | Bin 0 -> 13193 bytes src/assets/images/cryptocurrencies/SNGLS.png | Bin 0 -> 11169 bytes src/assets/images/cryptocurrencies/SNT.png | Bin 0 -> 8502 bytes src/assets/images/cryptocurrencies/START.png | Bin 0 -> 17468 bytes src/assets/images/cryptocurrencies/STEEM.png | Bin 0 -> 13968 bytes src/assets/images/cryptocurrencies/STORJ.png | Bin 0 -> 13465 bytes src/assets/images/cryptocurrencies/SYS.png | Bin 0 -> 11226 bytes src/assets/images/cryptocurrencies/TRX.png | Bin 0 -> 11950 bytes src/assets/images/cryptocurrencies/UBQ.png | Bin 0 -> 5693 bytes src/assets/images/cryptocurrencies/USDT.png | Bin 0 -> 8288 bytes src/assets/images/cryptocurrencies/VEN.png | Bin 0 -> 14037 bytes src/assets/images/cryptocurrencies/VTC.png | Bin 0 -> 6780 bytes src/assets/images/cryptocurrencies/WAVES.png | Bin 0 -> 10383 bytes src/assets/images/cryptocurrencies/WTC.png | Bin 0 -> 11919 bytes src/assets/images/cryptocurrencies/XEM.png | Bin 0 -> 9622 bytes src/assets/images/cryptocurrencies/XLM.png | Bin 0 -> 15664 bytes src/assets/images/cryptocurrencies/XMR.png | Bin 0 -> 7147 bytes src/assets/images/cryptocurrencies/XRP.png | Bin 0 -> 13158 bytes src/assets/images/cryptocurrencies/XUC.png | Bin 0 -> 32118 bytes src/assets/images/cryptocurrencies/XVG.png | Bin 0 -> 8041 bytes src/assets/images/cryptocurrencies/XZC.png | Bin 0 -> 10625 bytes src/assets/images/cryptocurrencies/ZEC.png | Bin 0 -> 12342 bytes src/assets/images/cryptocurrencies/ZEN.png | Bin 0 -> 10734 bytes src/assets/images/cryptocurrencies/ZRX.png | Bin 0 -> 6526 bytes src/assets/images/debit-card.png | Bin 0 -> 53407 bytes src/assets/images/demo_all.jpg | Bin 0 -> 52816 bytes src/assets/images/demo_home_one.jpg | Bin 0 -> 58931 bytes src/assets/images/demo_home_two.jpg | Bin 0 -> 48041 bytes src/assets/images/dots.png | Bin 0 -> 3416 bytes src/assets/images/edit.svg | 38 + src/assets/images/egret-screen.jpg | Bin 0 -> 54176 bytes src/assets/images/egret-screen.png | Bin 0 -> 82867 bytes src/assets/images/face-1.jpg | Bin 0 -> 4862 bytes src/assets/images/face-2.jpg | Bin 0 -> 5082 bytes src/assets/images/face-3.jpg | Bin 0 -> 5213 bytes src/assets/images/face-4.jpg | Bin 0 -> 5761 bytes src/assets/images/face-5.jpg | Bin 0 -> 6082 bytes src/assets/images/face-6.jpg | Bin 0 -> 5680 bytes src/assets/images/face-7.jpg | Bin 0 -> 5169 bytes src/assets/images/faces/10.jpg | Bin 0 -> 8713 bytes src/assets/images/faces/12.jpg | Bin 0 -> 7607 bytes src/assets/images/faces/13.jpg | Bin 0 -> 7344 bytes src/assets/images/faces/15.jpg | Bin 0 -> 9925 bytes src/assets/images/faces/16.jpg | Bin 0 -> 9880 bytes src/assets/images/faces/17.jpg | Bin 0 -> 8709 bytes src/assets/images/faces/2.jpg | Bin 0 -> 5919 bytes src/assets/images/faces/3.jpg | Bin 0 -> 4409 bytes src/assets/images/faces/4.jpg | Bin 0 -> 7517 bytes src/assets/images/faces/5.jpg | Bin 0 -> 7318 bytes src/assets/images/faces/9.jpg | Bin 0 -> 6677 bytes src/assets/images/gr.png | Bin 0 -> 5175 bytes src/assets/images/home-bg-black.png | Bin 0 -> 41848 bytes src/assets/images/home-bg-indigo.jpg | Bin 0 -> 32884 bytes src/assets/images/home-bg.jpg | Bin 0 -> 32884 bytes src/assets/images/home-bg.png | Bin 0 -> 41127 bytes src/assets/images/illustrations/1.svg | 43 + src/assets/images/illustrations/2.svg | 59 + src/assets/images/illustrations/404.svg | 1 + src/assets/images/illustrations/agreement.svg | 1 + .../images/illustrations/all_the_data.svg | 1 + .../images/illustrations/announcement.svg | 25 + src/assets/images/illustrations/baby.svg | 1 + .../illustrations/breaking_barriers.svg | 1 + .../images/illustrations/business_deal.svg | 1 + src/assets/images/illustrations/designer.svg | 65 + src/assets/images/illustrations/dreamer.svg | 1 + .../images/illustrations/lighthouse.svg | 70 + .../images/illustrations/posting_photo.svg | 71 + src/assets/images/illustrations/upgrade.svg | 66 + src/assets/images/logo-circle.png | Bin 0 -> 22815 bytes src/assets/images/logo-circle.svg | 25 + src/assets/images/logo-full-200px.png | Bin 0 -> 3748 bytes src/assets/images/logo-full-strong.png | Bin 0 -> 2785 bytes src/assets/images/logo-full-white.png | Bin 0 -> 2687 bytes src/assets/images/logo-full.png | Bin 0 -> 11314 bytes src/assets/images/logo-lg.png | Bin 0 -> 24163 bytes src/assets/images/logo-text-white.png | Bin 0 -> 3886 bytes src/assets/images/logo-text.png | Bin 0 -> 3909 bytes src/assets/images/logo.png | Bin 0 -> 5713 bytes src/assets/images/logo.svg | 26 + src/assets/images/logos/angular.png | Bin 0 -> 2385 bytes src/assets/images/logos/bootstrap.png | Bin 0 -> 104016 bytes src/assets/images/logos/gulp.png | Bin 0 -> 14436 bytes src/assets/images/logos/laravel.png | Bin 0 -> 132168 bytes src/assets/images/logos/logo-1.png | Bin 0 -> 2959 bytes src/assets/images/logos/logo-2.png | Bin 0 -> 2288 bytes src/assets/images/logos/logo-3.png | Bin 0 -> 2617 bytes src/assets/images/logos/logo-4.png | Bin 0 -> 1936 bytes src/assets/images/logos/logo-5.png | Bin 0 -> 1262 bytes src/assets/images/logos/logo-6.png | Bin 0 -> 2582 bytes src/assets/images/logos/logo-7.png | Bin 0 -> 1864 bytes src/assets/images/logos/logo-8.png | Bin 0 -> 785 bytes src/assets/images/logos/logo-9.png | Bin 0 -> 2196 bytes src/assets/images/logos/react.png | Bin 0 -> 11314 bytes src/assets/images/logos/sass.png | Bin 0 -> 21689 bytes src/assets/images/logos/webpack.png | Bin 0 -> 92426 bytes src/assets/images/mock-logo-1.png | Bin 0 -> 3455 bytes src/assets/images/mock-logo-2.png | Bin 0 -> 5043 bytes src/assets/images/mock-logo-3.png | Bin 0 -> 4037 bytes src/assets/images/mock-logo-4.png | Bin 0 -> 4214 bytes src/assets/images/oc.png | Bin 0 -> 3620 bytes src/assets/images/payment-methods/amazon.png | Bin 0 -> 3176 bytes src/assets/images/payment-methods/amex.png | Bin 0 -> 5114 bytes src/assets/images/payment-methods/cirrus.png | Bin 0 -> 4028 bytes src/assets/images/payment-methods/maestro.png | Bin 0 -> 5076 bytes .../images/payment-methods/master-card.png | Bin 0 -> 4060 bytes src/assets/images/payment-methods/paypal.png | Bin 0 -> 4121 bytes src/assets/images/payment-methods/shopify.png | Bin 0 -> 4059 bytes src/assets/images/payment-methods/skrill.png | Bin 0 -> 2541 bytes .../images/payment-methods/visa-electron.png | Bin 0 -> 3899 bytes src/assets/images/payment-methods/visa.png | Bin 0 -> 3799 bytes .../images/payment-methods/western-union.png | Bin 0 -> 2294 bytes src/assets/images/photo-1.jpg | Bin 0 -> 39235 bytes src/assets/images/photo-2.jpg | Bin 0 -> 20738 bytes src/assets/images/photo-3.jpg | Bin 0 -> 100128 bytes src/assets/images/photo-600_220.jpg | Bin 0 -> 37163 bytes src/assets/images/products/headphone-1.jpg | Bin 0 -> 22555 bytes src/assets/images/products/headphone-2.jpg | Bin 0 -> 10675 bytes src/assets/images/products/headphone-3.jpg | Bin 0 -> 10930 bytes src/assets/images/products/headphone-4.jpg | Bin 0 -> 9003 bytes src/assets/images/products/iphone-1.jpg | Bin 0 -> 51731 bytes src/assets/images/products/iphone-2.jpg | Bin 0 -> 47202 bytes src/assets/images/products/speaker-1.jpg | Bin 0 -> 22577 bytes src/assets/images/products/speaker-2.jpg | Bin 0 -> 24300 bytes src/assets/images/products/watch-1.jpg | Bin 0 -> 27773 bytes src/assets/images/products/watch-2.jpg | Bin 0 -> 28821 bytes .../images/screenshots/black_sidebar.png | Bin 0 -> 191485 bytes src/assets/images/screenshots/calendar.jpg | Bin 0 -> 29160 bytes .../images/screenshots/dark-pink-title.png | Bin 0 -> 95733 bytes .../images/screenshots/dark-purple-title.png | Bin 0 -> 93124 bytes src/assets/images/screenshots/dark_theme.png | Bin 0 -> 46089 bytes src/assets/images/screenshots/dashboard.jpg | Bin 0 -> 33048 bytes .../images/screenshots/gull-dashboard.png | Bin 0 -> 39902 bytes src/assets/images/screenshots/landing-1.png | Bin 0 -> 565232 bytes src/assets/images/screenshots/landing-2.png | Bin 0 -> 524265 bytes src/assets/images/screenshots/landing-3.png | Bin 0 -> 200443 bytes .../images/screenshots/landing-intro.png | Bin 0 -> 63011 bytes .../screenshots/layout1-blue-customizer.png | Bin 0 -> 39483 bytes .../screenshots/layout1-customizer-1.png | Bin 0 -> 43463 bytes .../screenshots/layout1-customizer-old.png | Bin 0 -> 320173 bytes .../images/screenshots/layout1-customizer.png | Bin 0 -> 41619 bytes .../images/screenshots/layout2-customizer.png | Bin 0 -> 41470 bytes .../images/screenshots/layout3-customizer.png | Bin 0 -> 41474 bytes .../images/screenshots/layout4-customizer.png | Bin 0 -> 26398 bytes .../images/screenshots/light-blue-title.png | Bin 0 -> 105922 bytes src/assets/images/screenshots/login.jpg | Bin 0 -> 13884 bytes .../images/screenshots/side-simple-ltr.png | Bin 0 -> 104557 bytes .../images/screenshots/side-simple-rtl.png | Bin 0 -> 86144 bytes .../images/screenshots/side-title-ltr.png | Bin 0 -> 94192 bytes .../images/screenshots/top-simple-ltr.png | Bin 0 -> 197516 bytes .../images/screenshots/top-simple-rtl.png | Bin 0 -> 41465 bytes .../images/screenshots/white_sidebar.png | Bin 0 -> 168124 bytes src/assets/images/sidebar-bg-dark.jpg | Bin 0 -> 76644 bytes src/assets/images/sidebar-bg.jpg | Bin 0 -> 124313 bytes src/assets/images/sidebar/sidebar-bg-dark.jpg | Bin 0 -> 76644 bytes .../images/sidebar/sidebar-bg-light.jpg | Bin 0 -> 124313 bytes src/assets/images/social-dribble.png | Bin 0 -> 1619 bytes src/assets/images/social-facebook.png | Bin 0 -> 502 bytes src/assets/images/social-linkedin.png | Bin 0 -> 642 bytes src/assets/images/social-twitter.png | Bin 0 -> 933 bytes src/assets/images/sq-1.jpg | Bin 0 -> 87130 bytes src/assets/images/sq-10.jpg | Bin 0 -> 36090 bytes src/assets/images/sq-11.jpg | Bin 0 -> 16318 bytes src/assets/images/sq-12.jpg | Bin 0 -> 22789 bytes src/assets/images/sq-13.jpg | Bin 0 -> 52710 bytes src/assets/images/sq-15.jpg | Bin 0 -> 36529 bytes src/assets/images/sq-16.jpg | Bin 0 -> 43860 bytes src/assets/images/sq-17.jpg | Bin 0 -> 12082 bytes src/assets/images/sq-2.jpg | Bin 0 -> 55433 bytes src/assets/images/sq-3.jpg | Bin 0 -> 93319 bytes src/assets/images/sq-4.jpg | Bin 0 -> 74733 bytes src/assets/images/sq-5.jpg | Bin 0 -> 55232 bytes src/assets/images/sq-6.jpg | Bin 0 -> 248205 bytes src/assets/images/sq-7.jpg | Bin 0 -> 35879 bytes src/assets/images/sq-8.jpg | Bin 0 -> 21544 bytes src/assets/images/sq-9.jpg | Bin 0 -> 55455 bytes src/assets/images/sq-face-220.jpg | Bin 0 -> 10793 bytes src/assets/images/star-rating.icons.svg | 24 + src/assets/images/svgIconExample.svg | 38 + src/assets/images/tf.png | Bin 0 -> 4399 bytes src/assets/images/wide-1.jpg | Bin 0 -> 36919 bytes src/assets/styles/app.scss | 63 + .../bootstrap-utilities/_functions.scss | 132 + .../styles/bootstrap-utilities/_mixins.scss | 18 + .../bootstrap-utilities/_utilities.scss | 10 + .../bootstrap-utilities/_variables.scss | 1143 ++ .../bootstrap-utilities.scss | 4 + .../bootstrap-utilities/mixins/_alert.scss | 13 + .../mixins/_background-variant.scss | 22 + .../bootstrap-utilities/mixins/_badge.scss | 17 + .../mixins/_border-radius.scss | 63 + .../mixins/_box-shadow.scss | 20 + .../mixins/_breakpoints.scss | 123 + .../bootstrap-utilities/mixins/_buttons.scss | 110 + .../bootstrap-utilities/mixins/_caret.scss | 62 + .../bootstrap-utilities/mixins/_clearfix.scss | 7 + .../mixins/_deprecate.scss | 10 + .../bootstrap-utilities/mixins/_float.scss | 14 + .../bootstrap-utilities/mixins/_forms.scss | 177 + .../mixins/_gradients.scss | 45 + .../mixins/_grid-framework.scss | 71 + .../bootstrap-utilities/mixins/_grid.scss | 69 + .../bootstrap-utilities/mixins/_hover.scss | 37 + .../bootstrap-utilities/mixins/_image.scss | 36 + .../mixins/_list-group.scss | 21 + .../bootstrap-utilities/mixins/_lists.scss | 7 + .../mixins/_nav-divider.scss | 11 + .../mixins/_pagination.scss | 22 + .../mixins/_reset-text.scss | 17 + .../bootstrap-utilities/mixins/_resize.scss | 6 + .../mixins/_screen-reader.scss | 34 + .../bootstrap-utilities/mixins/_size.scss | 7 + .../mixins/_table-row.scss | 39 + .../mixins/_text-emphasis.scss | 17 + .../mixins/_text-hide.scss | 11 + .../mixins/_text-truncate.scss | 8 + .../mixins/_transition.scss | 16 + .../mixins/_visibility.scss | 8 + .../bootstrap-utilities/utilities/_align.scss | 8 + .../utilities/_background.scss | 19 + .../utilities/_borders.scss | 75 + .../utilities/_clearfix.scss | 3 + .../utilities/_display.scss | 26 + .../bootstrap-utilities/utilities/_embed.scss | 39 + .../bootstrap-utilities/utilities/_flex.scss | 51 + .../bootstrap-utilities/utilities/_float.scss | 11 + .../utilities/_overflow.scss | 5 + .../utilities/_position.scss | 32 + .../utilities/_screenreaders.scss | 11 + .../utilities/_shadows.scss | 6 + .../utilities/_sizing.scss | 20 + .../utilities/_spacing.scss | 73 + .../utilities/_stretched-link.scss | 19 + .../bootstrap-utilities/utilities/_text.scss | 72 + .../utilities/_visibility.scss | 13 + src/assets/styles/scss/_animations.scss | 8 + src/assets/styles/scss/_colors.scss | 879 + src/assets/styles/scss/_page-layouts.scss | 63 + src/assets/styles/scss/_palette.scss | 102 + src/assets/styles/scss/_variables.scss | 32 + .../styles/scss/components/_button.scss | 22 + src/assets/styles/scss/components/_card.scss | 70 + .../styles/scss/components/_components.scss | 3 + .../styles/scss/components/_matx-sidebar.scss | 48 + .../styles/scss/components/_ngx-table.scss | 7 + .../scss/functions/_color.function.scss | 304 + .../styles/scss/functions/_functions.scss | 1 + src/assets/styles/scss/main/_breadcrumb.scss | 75 + src/assets/styles/scss/main/_footer.scss | 7 + src/assets/styles/scss/main/_header-side.scss | 54 + src/assets/styles/scss/main/_header-top.scss | 50 + src/assets/styles/scss/main/_header.scss | 50 + src/assets/styles/scss/main/_layout.scss | 211 + src/assets/styles/scss/main/_main.scss | 22 + .../styles/scss/main/_notifications.scss | 21 + src/assets/styles/scss/main/_scaffolding.scss | 736 + src/assets/styles/scss/main/_sidebar.scss | 135 + src/assets/styles/scss/main/_sidenav.scss | 284 + src/assets/styles/scss/main/_topnav.scss | 232 + src/assets/styles/scss/main/_typography.scss | 115 + src/assets/styles/scss/mixins/_gradients.scss | 24 + src/assets/styles/scss/mixins/_mixins.scss | 8 + src/assets/styles/scss/themes/_matx-blue.scss | 123 + .../styles/scss/themes/_matx-dark-pink.scss | 189 + .../styles/scss/themes/_matx-dark-purple.scss | 244 + .../scss/themes/_matx-light-purple.scss | 123 + src/assets/styles/scss/themes/_matx-navy.scss | 150 + src/assets/styles/scss/themes/_themes.scss | 12 + .../styles/scss/utilities/_alignment.scss | 9 + src/assets/styles/scss/utilities/_avatar.scss | 36 + src/assets/styles/scss/utilities/_border.scss | 62 + .../styles/scss/utilities/_display.scss | 7 + .../styles/scss/utilities/_height-width.scss | 66 + src/assets/styles/scss/utilities/_others.scss | 10 + .../styles/scss/utilities/_spacing.scss | 258 + .../styles/scss/utilities/_utilities.scss | 7 + src/assets/styles/scss/views/_views.scss | 1 + .../styles/scss/views/sessions/_sessions.scss | 40 + .../styles/scss/views/sessions/_signup.scss | 43 + src/config.ts | 10 + src/environments/environment.prod.ts | 3 + src/environments/environment.ts | 8 + src/favicon.ico | Bin 0 -> 5430 bytes src/index.html | 22 + src/main.ts | 14 + src/polyfills.ts | 76 + src/styles.scss | 64 + src/test.ts | 32 + src/tsconfig.app.json | 15 + src/tsconfig.spec.json | 19 + src/typings.d.ts | 5 + src/vendor/Chart.min.js | 14 + src/vendor/pace/pace-green.css | 22 + src/vendor/pace/pace-theme-min.css | 22 + src/vendor/pace/pace.min.js | 2 + tsconfig.base.json | 21 + tsconfig.json | 17 + tslint.json | 142 + 1210 files changed, 51412 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 angular.json create mode 100644 e2e/app.po.ts create mode 100644 e2e/tsconfig.e2e.json create mode 100644 karma.conf.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 protractor.conf.js create mode 100644 proxy.json create mode 100644 server/auth.route.ts create mode 100644 server/create-course.route.ts create mode 100644 server/db-data.ts create mode 100644 server/delete-course.route.ts create mode 100644 server/get-courses.route.ts create mode 100644 server/save-course.route.ts create mode 100644 server/search-lessons.route.ts create mode 100644 server/server.ts create mode 100644 server/server.tsconfig.json create mode 100644 src/app/app.component.css create mode 100644 src/app/app.component.html create mode 100644 src/app/app.component.ts create mode 100644 src/app/app.module.ts create mode 100644 src/app/app.routing.ts create mode 100644 src/app/auth/action-types.ts create mode 100644 src/app/auth/auth.actions.ts create mode 100644 src/app/auth/auth.effects.ts create mode 100644 src/app/auth/auth.guard.ts create mode 100644 src/app/auth/auth.module.ts create mode 100644 src/app/auth/auth.selectors.ts create mode 100644 src/app/auth/auth.service.ts create mode 100644 src/app/auth/login/login.component.html create mode 100644 src/app/auth/login/login.component.scss create mode 100644 src/app/auth/login/login.component.ts create mode 100644 src/app/auth/model/user.model.ts create mode 100644 src/app/auth/reducers/index.ts create mode 100644 src/app/courses/course/course.component.css create mode 100644 src/app/courses/course/course.component.html create mode 100644 src/app/courses/course/course.component.ts create mode 100644 src/app/courses/courses-card-list/courses-card-list.component.css create mode 100644 src/app/courses/courses-card-list/courses-card-list.component.html create mode 100644 src/app/courses/courses-card-list/courses-card-list.component.ts create mode 100644 src/app/courses/courses.module.ts create mode 100644 src/app/courses/edit-course-dialog/edit-course-dialog.component.css create mode 100644 src/app/courses/edit-course-dialog/edit-course-dialog.component.html create mode 100644 src/app/courses/edit-course-dialog/edit-course-dialog.component.ts create mode 100644 src/app/courses/home/home.component.css create mode 100644 src/app/courses/home/home.component.html create mode 100644 src/app/courses/home/home.component.ts create mode 100644 src/app/courses/model/course.ts create mode 100644 src/app/courses/model/lesson.ts create mode 100644 src/app/courses/services/course-entity.service.ts create mode 100644 src/app/courses/services/courses-data.service.ts create mode 100644 src/app/courses/services/courses-http.service.ts create mode 100644 src/app/courses/services/courses.resolver.ts create mode 100644 src/app/courses/services/lesson-entity.service.ts create mode 100644 src/app/courses/shared/default-dialog-config.ts create mode 100644 src/app/reducers/index.ts create mode 100644 src/app/shared/animations/matx-animations.ts create mode 100644 src/app/shared/components/breadcrumb/breadcrumb.component.html create mode 100644 src/app/shared/components/breadcrumb/breadcrumb.component.scss create mode 100644 src/app/shared/components/breadcrumb/breadcrumb.component.ts create mode 100644 src/app/shared/components/button-loading/button-loading.component.html create mode 100644 src/app/shared/components/button-loading/button-loading.component.scss create mode 100644 src/app/shared/components/button-loading/button-loading.component.spec.ts create mode 100644 src/app/shared/components/button-loading/button-loading.component.ts create mode 100644 src/app/shared/components/customizer/customizer.component.html create mode 100644 src/app/shared/components/customizer/customizer.component.scss create mode 100644 src/app/shared/components/customizer/customizer.component.ts create mode 100644 src/app/shared/components/footer/footer.component.html create mode 100644 src/app/shared/components/footer/footer.component.scss create mode 100644 src/app/shared/components/footer/footer.component.spec.ts create mode 100644 src/app/shared/components/footer/footer.component.ts create mode 100644 src/app/shared/components/header-side/header-side.component.ts create mode 100644 src/app/shared/components/header-side/header-side.template.html create mode 100644 src/app/shared/components/layouts/admin-layout/admin-layout.component.ts create mode 100644 src/app/shared/components/layouts/admin-layout/admin-layout.template.html create mode 100644 src/app/shared/components/layouts/auth-layout/auth-layout.component.html create mode 100644 src/app/shared/components/layouts/auth-layout/auth-layout.component.ts create mode 100644 src/app/shared/components/notifications/notifications.component.html create mode 100644 src/app/shared/components/notifications/notifications.component.ts create mode 100644 src/app/shared/components/shared-components.module.ts create mode 100644 src/app/shared/components/sidebar-side/sidebar-side.component.html create mode 100644 src/app/shared/components/sidebar-side/sidebar-side.component.ts create mode 100644 src/app/shared/components/sidenav/sidenav.component.ts create mode 100644 src/app/shared/components/sidenav/sidenav.template.html create mode 100644 src/app/shared/directives/dropdown-anchor.directive.ts create mode 100644 src/app/shared/directives/dropdown-link.directive.ts create mode 100644 src/app/shared/directives/dropdown.directive.ts create mode 100644 src/app/shared/directives/font-size.directive.ts create mode 100644 src/app/shared/directives/matx-highlight.directive.ts create mode 100644 src/app/shared/directives/matx-side-nav-toggle.directive.ts create mode 100644 src/app/shared/directives/matx-sidenav-helper/matx-sidenav-helper.directive.ts create mode 100644 src/app/shared/directives/matx-sidenav-helper/matx-sidenav-helper.service.ts create mode 100644 src/app/shared/directives/scroll-to.directive.ts create mode 100644 src/app/shared/directives/shared-directives.module.ts create mode 100644 src/app/shared/guards/auth.guard.ts create mode 100644 src/app/shared/guards/user-role.guard.ts create mode 100644 src/app/shared/helpers/url.helper.ts create mode 100644 src/app/shared/helpers/utils.ts create mode 100644 src/app/shared/helpers/window.helper.ts create mode 100644 src/app/shared/inmemory-db/calendarEvents.ts create mode 100644 src/app/shared/inmemory-db/chat-db.ts create mode 100644 src/app/shared/inmemory-db/countries.ts create mode 100644 src/app/shared/inmemory-db/inbox.ts create mode 100644 src/app/shared/inmemory-db/inmemory-db.service.ts create mode 100644 src/app/shared/inmemory-db/invoices.ts create mode 100644 src/app/shared/inmemory-db/orders.ts create mode 100644 src/app/shared/inmemory-db/products.ts create mode 100644 src/app/shared/inmemory-db/todo.ts create mode 100644 src/app/shared/inmemory-db/users.ts create mode 100644 src/app/shared/interceptors/token.interceptor.ts create mode 100644 src/app/shared/models/event.model.ts create mode 100644 src/app/shared/models/invoice.model.ts create mode 100644 src/app/shared/models/product.model.ts create mode 100644 src/app/shared/models/todo.model.ts create mode 100644 src/app/shared/models/user.model.ts create mode 100644 src/app/shared/pipes/excerpt.pipe.ts create mode 100644 src/app/shared/pipes/get-value-by-key.pipe.ts create mode 100644 src/app/shared/pipes/relative-time.pipe.ts create mode 100644 src/app/shared/pipes/shared-pipes.module.ts create mode 100644 src/app/shared/search/search-input-over/search-input-over.component.html create mode 100644 src/app/shared/search/search-input-over/search-input-over.component.scss create mode 100644 src/app/shared/search/search-input-over/search-input-over.component.spec.ts create mode 100644 src/app/shared/search/search-input-over/search-input-over.component.ts create mode 100644 src/app/shared/search/search.module.ts create mode 100644 src/app/shared/search/search.service.ts create mode 100644 src/app/shared/services/app-confirm/app-confirm.component.ts create mode 100644 src/app/shared/services/app-confirm/app-confirm.service.ts create mode 100644 src/app/shared/services/app-loader/app-loader.component.css create mode 100644 src/app/shared/services/app-loader/app-loader.component.html create mode 100644 src/app/shared/services/app-loader/app-loader.component.ts create mode 100644 src/app/shared/services/app-loader/app-loader.service.ts create mode 100644 src/app/shared/services/auth/jwt-auth.service.ts create mode 100644 src/app/shared/services/copier.service.ts create mode 100644 src/app/shared/services/customizer.service.ts create mode 100644 src/app/shared/services/error-handler.service.ts create mode 100644 src/app/shared/services/layout.service.ts create mode 100644 src/app/shared/services/local-store.service.ts create mode 100644 src/app/shared/services/match-media.service.ts create mode 100644 src/app/shared/services/navigation.service.ts create mode 100644 src/app/shared/services/route-parts.service.ts create mode 100644 src/app/shared/services/theme.service.ts create mode 100644 src/app/shared/shared-material.module.ts create mode 100644 src/app/shared/shared.module.ts create mode 100644 src/app/vendor/Chart.min.js create mode 100644 src/app/vendor/pace/pace-green.css create mode 100644 src/app/vendor/pace/pace-theme-min.css create mode 100644 src/app/vendor/pace/pace.min.js create mode 100644 src/app/views/dashboard/analytics/analytics.component.html create mode 100644 src/app/views/dashboard/analytics/analytics.component.scss create mode 100644 src/app/views/dashboard/analytics/analytics.component.spec.ts create mode 100644 src/app/views/dashboard/analytics/analytics.component.ts create mode 100644 src/app/views/dashboard/dashboard.module.ts create mode 100644 src/app/views/dashboard/dashboard.routing.ts create mode 100644 src/app/views/forms/basic-form/basic-form.component.css create mode 100644 src/app/views/forms/basic-form/basic-form.component.html create mode 100644 src/app/views/forms/basic-form/basic-form.component.ts create mode 100644 src/app/views/forms/file-upload/file-upload.component.css create mode 100644 src/app/views/forms/file-upload/file-upload.component.html create mode 100644 src/app/views/forms/file-upload/file-upload.component.ts create mode 100644 src/app/views/forms/forms.module.ts create mode 100644 src/app/views/forms/forms.routing.ts create mode 100644 src/app/views/forms/rich-text-editor/rich-text-editor.component.css create mode 100644 src/app/views/forms/rich-text-editor/rich-text-editor.component.html create mode 100644 src/app/views/forms/rich-text-editor/rich-text-editor.component.ts create mode 100644 src/app/views/forms/wizard/wizard.component.css create mode 100644 src/app/views/forms/wizard/wizard.component.html create mode 100644 src/app/views/forms/wizard/wizard.component.ts create mode 100644 src/app/views/mat-icons/mat-icons.component.css create mode 100644 src/app/views/mat-icons/mat-icons.component.html create mode 100644 src/app/views/mat-icons/mat-icons.component.ts create mode 100644 src/app/views/mat-icons/mat-icons.module.ts create mode 100644 src/app/views/mat-icons/mat-icons.routing.ts create mode 100644 src/app/views/material-components/mat-kits/mat-kits.component.html create mode 100644 src/app/views/material-components/mat-kits/mat-kits.component.scss create mode 100644 src/app/views/material-components/mat-kits/mat-kits.component.spec.ts create mode 100644 src/app/views/material-components/mat-kits/mat-kits.component.ts create mode 100644 src/app/views/material-components/material-components-routing.module.ts create mode 100644 src/app/views/material-components/material-components.module.ts create mode 100644 src/app/views/order/order-cost-list/order-cost-list.component.html create mode 100644 src/app/views/order/order-cost-list/order-cost-list.component.scss create mode 100644 src/app/views/order/order-cost-list/order-cost-list.component.spec.ts create mode 100644 src/app/views/order/order-cost-list/order-cost-list.component.ts create mode 100644 src/app/views/order/order-detail/order-detail.component.html create mode 100644 src/app/views/order/order-detail/order-detail.component.scss create mode 100644 src/app/views/order/order-detail/order-detail.component.spec.ts create mode 100644 src/app/views/order/order-detail/order-detail.component.ts create mode 100644 src/app/views/order/order-list/order-list.component.html create mode 100644 src/app/views/order/order-list/order-list.component.scss create mode 100644 src/app/views/order/order-list/order-list.component.spec.ts create mode 100644 src/app/views/order/order-list/order-list.component.ts create mode 100644 src/app/views/order/order-routing.module.ts create mode 100644 src/app/views/order/order.module.ts create mode 100644 src/app/views/order/order.service.ts create mode 100644 src/app/views/others/app-blank/app-blank.component.css create mode 100644 src/app/views/others/app-blank/app-blank.component.html create mode 100644 src/app/views/others/app-blank/app-blank.component.ts create mode 100644 src/app/views/others/others.module.ts create mode 100644 src/app/views/others/others.routing.ts create mode 100644 src/app/views/search-view/country.service.ts create mode 100644 src/app/views/search-view/result-page/result-page.component.html create mode 100644 src/app/views/search-view/result-page/result-page.component.scss create mode 100644 src/app/views/search-view/result-page/result-page.component.spec.ts create mode 100644 src/app/views/search-view/result-page/result-page.component.ts create mode 100644 src/app/views/search-view/search-view-routing.module.ts create mode 100644 src/app/views/search-view/search-view.module.ts create mode 100644 src/app/views/sessions/error/error.component.css create mode 100644 src/app/views/sessions/error/error.component.html create mode 100644 src/app/views/sessions/error/error.component.ts create mode 100644 src/app/views/sessions/forgot-password/forgot-password.component.css create mode 100644 src/app/views/sessions/forgot-password/forgot-password.component.html create mode 100644 src/app/views/sessions/forgot-password/forgot-password.component.ts create mode 100644 src/app/views/sessions/lockscreen/lockscreen.component.css create mode 100644 src/app/views/sessions/lockscreen/lockscreen.component.html create mode 100644 src/app/views/sessions/lockscreen/lockscreen.component.ts create mode 100644 src/app/views/sessions/not-found/not-found.component.css create mode 100644 src/app/views/sessions/not-found/not-found.component.html create mode 100644 src/app/views/sessions/not-found/not-found.component.ts create mode 100644 src/app/views/sessions/sessions.module.ts create mode 100644 src/app/views/sessions/sessions.routing.ts create mode 100644 src/app/views/sessions/signin/signin.component.html create mode 100644 src/app/views/sessions/signin/signin.component.scss create mode 100644 src/app/views/sessions/signin/signin.component.spec.ts create mode 100644 src/app/views/sessions/signin/signin.component.ts create mode 100644 src/app/views/sessions/signup/signup.component.html create mode 100644 src/app/views/sessions/signup/signup.component.scss create mode 100644 src/app/views/sessions/signup/signup.component.spec.ts create mode 100644 src/app/views/sessions/signup/signup.component.ts create mode 100644 src/app/views/tables/material-table/material-table.component.html create mode 100644 src/app/views/tables/material-table/material-table.component.scss create mode 100644 src/app/views/tables/material-table/material-table.component.spec.ts create mode 100644 src/app/views/tables/material-table/material-table.component.ts create mode 100644 src/app/views/tables/tables.module.ts create mode 100644 src/app/views/tables/tables.routing.ts create mode 100644 src/app/views/tables/tables.service.ts create mode 100644 src/assets/.gitkeep create mode 100644 src/assets/examples/chart/chart-examples.module.ts create mode 100644 src/assets/examples/chart/echart-bar/echart-bar.component.html create mode 100644 src/assets/examples/chart/echart-bar/echart-bar.component.scss create mode 100644 src/assets/examples/chart/echart-bar/echart-bar.component.spec.ts create mode 100644 src/assets/examples/chart/echart-bar/echart-bar.component.ts create mode 100644 src/assets/examples/chart/echart-heatmap/echart-heatmap.component.html create mode 100644 src/assets/examples/chart/echart-heatmap/echart-heatmap.component.scss create mode 100644 src/assets/examples/chart/echart-heatmap/echart-heatmap.component.spec.ts create mode 100644 src/assets/examples/chart/echart-heatmap/echart-heatmap.component.ts create mode 100644 src/assets/examples/chart/echart-pie/echart-pie.component.html create mode 100644 src/assets/examples/chart/echart-pie/echart-pie.component.scss create mode 100644 src/assets/examples/chart/echart-pie/echart-pie.component.spec.ts create mode 100644 src/assets/examples/chart/echart-pie/echart-pie.component.ts create mode 100644 src/assets/examples/chart/echart-radar/echart-radar.component.html create mode 100644 src/assets/examples/chart/echart-radar/echart-radar.component.scss create mode 100644 src/assets/examples/chart/echart-radar/echart-radar.component.spec.ts create mode 100644 src/assets/examples/chart/echart-radar/echart-radar.component.ts create mode 100644 src/assets/examples/chart/index.ts create mode 100644 src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.html create mode 100644 src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.scss create mode 100644 src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.spec.ts create mode 100644 src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.ts create mode 100644 src/assets/examples/material/align-tab-group/align-tab-group.component.html create mode 100644 src/assets/examples/material/align-tab-group/align-tab-group.component.scss create mode 100644 src/assets/examples/material/align-tab-group/align-tab-group.component.spec.ts create mode 100644 src/assets/examples/material/align-tab-group/align-tab-group.component.ts create mode 100644 src/assets/examples/material/animation-tab-group/animation-tab-group.component.html create mode 100644 src/assets/examples/material/animation-tab-group/animation-tab-group.component.scss create mode 100644 src/assets/examples/material/animation-tab-group/animation-tab-group.component.spec.ts create mode 100644 src/assets/examples/material/animation-tab-group/animation-tab-group.component.ts create mode 100644 src/assets/examples/material/appearance-form-field/appearance-form-field.component.html create mode 100644 src/assets/examples/material/appearance-form-field/appearance-form-field.component.scss create mode 100644 src/assets/examples/material/appearance-form-field/appearance-form-field.component.spec.ts create mode 100644 src/assets/examples/material/appearance-form-field/appearance-form-field.component.ts create mode 100644 src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.html create mode 100644 src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.scss create mode 100644 src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.spec.ts create mode 100644 src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.ts create mode 100644 src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.html create mode 100644 src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.scss create mode 100644 src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.spec.ts create mode 100644 src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.ts create mode 100644 src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.html create mode 100644 src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.scss create mode 100644 src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.spec.ts create mode 100644 src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.ts create mode 100644 src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.html create mode 100644 src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.scss create mode 100644 src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.spec.ts create mode 100644 src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.ts create mode 100644 src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.html create mode 100644 src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.scss create mode 100644 src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.spec.ts create mode 100644 src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.ts create mode 100644 src/assets/examples/material/basic-badge/basic-badge.component.html create mode 100644 src/assets/examples/material/basic-badge/basic-badge.component.scss create mode 100644 src/assets/examples/material/basic-badge/basic-badge.component.spec.ts create mode 100644 src/assets/examples/material/basic-badge/basic-badge.component.ts create mode 100644 src/assets/examples/material/basic-bar/basic-bar.component.html create mode 100644 src/assets/examples/material/basic-bar/basic-bar.component.scss create mode 100644 src/assets/examples/material/basic-bar/basic-bar.component.spec.ts create mode 100644 src/assets/examples/material/basic-bar/basic-bar.component.ts create mode 100644 src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.html create mode 100644 src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.scss create mode 100644 src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.spec.ts create mode 100644 src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.ts create mode 100644 src/assets/examples/material/basic-card/basic-card.component.html create mode 100644 src/assets/examples/material/basic-card/basic-card.component.scss create mode 100644 src/assets/examples/material/basic-card/basic-card.component.spec.ts create mode 100644 src/assets/examples/material/basic-card/basic-card.component.ts create mode 100644 src/assets/examples/material/basic-checkbox/basic-checkbox.component.html create mode 100644 src/assets/examples/material/basic-checkbox/basic-checkbox.component.scss create mode 100644 src/assets/examples/material/basic-checkbox/basic-checkbox.component.spec.ts create mode 100644 src/assets/examples/material/basic-checkbox/basic-checkbox.component.ts create mode 100644 src/assets/examples/material/basic-chip/basic-chip.component.html create mode 100644 src/assets/examples/material/basic-chip/basic-chip.component.scss create mode 100644 src/assets/examples/material/basic-chip/basic-chip.component.spec.ts create mode 100644 src/assets/examples/material/basic-chip/basic-chip.component.ts create mode 100644 src/assets/examples/material/basic-datepicker/basic-datepicker.component.html create mode 100644 src/assets/examples/material/basic-datepicker/basic-datepicker.component.scss create mode 100644 src/assets/examples/material/basic-datepicker/basic-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/basic-datepicker/basic-datepicker.component.ts create mode 100644 src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.html create mode 100644 src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.scss create mode 100644 src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.spec.ts create mode 100644 src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.ts create mode 100644 src/assets/examples/material/basic-dialog/basic-dialog.component.html create mode 100644 src/assets/examples/material/basic-dialog/basic-dialog.component.scss create mode 100644 src/assets/examples/material/basic-dialog/basic-dialog.component.spec.ts create mode 100644 src/assets/examples/material/basic-dialog/basic-dialog.component.ts create mode 100644 src/assets/examples/material/basic-divider/basic-divider.component.html create mode 100644 src/assets/examples/material/basic-divider/basic-divider.component.scss create mode 100644 src/assets/examples/material/basic-divider/basic-divider.component.spec.ts create mode 100644 src/assets/examples/material/basic-divider/basic-divider.component.ts create mode 100644 src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.html create mode 100644 src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.scss create mode 100644 src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.spec.ts create mode 100644 src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.ts create mode 100644 src/assets/examples/material/basic-grid/basic-grid.component.html create mode 100644 src/assets/examples/material/basic-grid/basic-grid.component.scss create mode 100644 src/assets/examples/material/basic-grid/basic-grid.component.spec.ts create mode 100644 src/assets/examples/material/basic-grid/basic-grid.component.ts create mode 100644 src/assets/examples/material/basic-icon/basic-icon.component.html create mode 100644 src/assets/examples/material/basic-icon/basic-icon.component.scss create mode 100644 src/assets/examples/material/basic-icon/basic-icon.component.spec.ts create mode 100644 src/assets/examples/material/basic-icon/basic-icon.component.ts create mode 100644 src/assets/examples/material/basic-input/basic-input.component.html create mode 100644 src/assets/examples/material/basic-input/basic-input.component.scss create mode 100644 src/assets/examples/material/basic-input/basic-input.component.spec.ts create mode 100644 src/assets/examples/material/basic-input/basic-input.component.ts create mode 100644 src/assets/examples/material/basic-list/basic-list.component.html create mode 100644 src/assets/examples/material/basic-list/basic-list.component.scss create mode 100644 src/assets/examples/material/basic-list/basic-list.component.spec.ts create mode 100644 src/assets/examples/material/basic-list/basic-list.component.ts create mode 100644 src/assets/examples/material/basic-menu/basic-menu.component.html create mode 100644 src/assets/examples/material/basic-menu/basic-menu.component.scss create mode 100644 src/assets/examples/material/basic-menu/basic-menu.component.spec.ts create mode 100644 src/assets/examples/material/basic-menu/basic-menu.component.ts create mode 100644 src/assets/examples/material/basic-paginator/basic-paginator.component.html create mode 100644 src/assets/examples/material/basic-paginator/basic-paginator.component.scss create mode 100644 src/assets/examples/material/basic-paginator/basic-paginator.component.spec.ts create mode 100644 src/assets/examples/material/basic-paginator/basic-paginator.component.ts create mode 100644 src/assets/examples/material/basic-radio/basic-radio.component.html create mode 100644 src/assets/examples/material/basic-radio/basic-radio.component.scss create mode 100644 src/assets/examples/material/basic-radio/basic-radio.component.spec.ts create mode 100644 src/assets/examples/material/basic-radio/basic-radio.component.ts create mode 100644 src/assets/examples/material/basic-select/basic-select.component.html create mode 100644 src/assets/examples/material/basic-select/basic-select.component.scss create mode 100644 src/assets/examples/material/basic-select/basic-select.component.spec.ts create mode 100644 src/assets/examples/material/basic-select/basic-select.component.ts create mode 100644 src/assets/examples/material/basic-sidenav/basic-sidenav.component.html create mode 100644 src/assets/examples/material/basic-sidenav/basic-sidenav.component.scss create mode 100644 src/assets/examples/material/basic-sidenav/basic-sidenav.component.spec.ts create mode 100644 src/assets/examples/material/basic-sidenav/basic-sidenav.component.ts create mode 100644 src/assets/examples/material/basic-slider/basic-slider.component.html create mode 100644 src/assets/examples/material/basic-slider/basic-slider.component.scss create mode 100644 src/assets/examples/material/basic-slider/basic-slider.component.spec.ts create mode 100644 src/assets/examples/material/basic-slider/basic-slider.component.ts create mode 100644 src/assets/examples/material/basic-snackbar/basic-snackbar.component.html create mode 100644 src/assets/examples/material/basic-snackbar/basic-snackbar.component.scss create mode 100644 src/assets/examples/material/basic-snackbar/basic-snackbar.component.spec.ts create mode 100644 src/assets/examples/material/basic-snackbar/basic-snackbar.component.ts create mode 100644 src/assets/examples/material/basic-sort-header/basic-sort-header.component.html create mode 100644 src/assets/examples/material/basic-sort-header/basic-sort-header.component.scss create mode 100644 src/assets/examples/material/basic-sort-header/basic-sort-header.component.spec.ts create mode 100644 src/assets/examples/material/basic-sort-header/basic-sort-header.component.ts create mode 100644 src/assets/examples/material/basic-spinner/basic-spinner.component.html create mode 100644 src/assets/examples/material/basic-spinner/basic-spinner.component.scss create mode 100644 src/assets/examples/material/basic-spinner/basic-spinner.component.spec.ts create mode 100644 src/assets/examples/material/basic-spinner/basic-spinner.component.ts create mode 100644 src/assets/examples/material/basic-stepper/basic-stepper.component.html create mode 100644 src/assets/examples/material/basic-stepper/basic-stepper.component.scss create mode 100644 src/assets/examples/material/basic-stepper/basic-stepper.component.spec.ts create mode 100644 src/assets/examples/material/basic-stepper/basic-stepper.component.ts create mode 100644 src/assets/examples/material/basic-tab-group/basic-tab-group.component.html create mode 100644 src/assets/examples/material/basic-tab-group/basic-tab-group.component.scss create mode 100644 src/assets/examples/material/basic-tab-group/basic-tab-group.component.spec.ts create mode 100644 src/assets/examples/material/basic-tab-group/basic-tab-group.component.ts create mode 100644 src/assets/examples/material/basic-table/basic-table.component.html create mode 100644 src/assets/examples/material/basic-table/basic-table.component.scss create mode 100644 src/assets/examples/material/basic-table/basic-table.component.spec.ts create mode 100644 src/assets/examples/material/basic-table/basic-table.component.ts create mode 100644 src/assets/examples/material/basic-toggle/basic-toggle.component.html create mode 100644 src/assets/examples/material/basic-toggle/basic-toggle.component.scss create mode 100644 src/assets/examples/material/basic-toggle/basic-toggle.component.spec.ts create mode 100644 src/assets/examples/material/basic-toggle/basic-toggle.component.ts create mode 100644 src/assets/examples/material/basic-toolbar/basic-toolbar.component.html create mode 100644 src/assets/examples/material/basic-toolbar/basic-toolbar.component.scss create mode 100644 src/assets/examples/material/basic-toolbar/basic-toolbar.component.spec.ts create mode 100644 src/assets/examples/material/basic-toolbar/basic-toolbar.component.ts create mode 100644 src/assets/examples/material/basic-tooltip/basic-tooltip.component.html create mode 100644 src/assets/examples/material/basic-tooltip/basic-tooltip.component.scss create mode 100644 src/assets/examples/material/basic-tooltip/basic-tooltip.component.spec.ts create mode 100644 src/assets/examples/material/basic-tooltip/basic-tooltip.component.ts create mode 100644 src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.html create mode 100644 src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.scss create mode 100644 src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.spec.ts create mode 100644 src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.ts create mode 100644 src/assets/examples/material/bottom-sheet/bottom-sheet.component.html create mode 100644 src/assets/examples/material/bottom-sheet/bottom-sheet.component.scss create mode 100644 src/assets/examples/material/bottom-sheet/bottom-sheet.component.spec.ts create mode 100644 src/assets/examples/material/bottom-sheet/bottom-sheet.component.ts create mode 100644 src/assets/examples/material/button-examples/button-examples.component.html create mode 100644 src/assets/examples/material/button-examples/button-examples.component.scss create mode 100644 src/assets/examples/material/button-examples/button-examples.component.spec.ts create mode 100644 src/assets/examples/material/button-examples/button-examples.component.ts create mode 100644 src/assets/examples/material/button-toggle/button-toggle.component.html create mode 100644 src/assets/examples/material/button-toggle/button-toggle.component.scss create mode 100644 src/assets/examples/material/button-toggle/button-toggle.component.spec.ts create mode 100644 src/assets/examples/material/button-toggle/button-toggle.component.ts create mode 100644 src/assets/examples/material/buttons/buttons.component.html create mode 100644 src/assets/examples/material/buttons/buttons.component.scss create mode 100644 src/assets/examples/material/buttons/buttons.component.spec.ts create mode 100644 src/assets/examples/material/buttons/buttons.component.ts create mode 100644 src/assets/examples/material/changing-tooltip/changing-tooltip.component.html create mode 100644 src/assets/examples/material/changing-tooltip/changing-tooltip.component.scss create mode 100644 src/assets/examples/material/changing-tooltip/changing-tooltip.component.spec.ts create mode 100644 src/assets/examples/material/changing-tooltip/changing-tooltip.component.ts create mode 100644 src/assets/examples/material/checkbox-tree/checkbox-tree.component.html create mode 100644 src/assets/examples/material/checkbox-tree/checkbox-tree.component.scss create mode 100644 src/assets/examples/material/checkbox-tree/checkbox-tree.component.spec.ts create mode 100644 src/assets/examples/material/checkbox-tree/checkbox-tree.component.ts create mode 100644 src/assets/examples/material/clear-button-input/clear-button-input.component.html create mode 100644 src/assets/examples/material/clear-button-input/clear-button-input.component.scss create mode 100644 src/assets/examples/material/clear-button-input/clear-button-input.component.spec.ts create mode 100644 src/assets/examples/material/clear-button-input/clear-button-input.component.ts create mode 100644 src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.html create mode 100644 src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.scss create mode 100644 src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.spec.ts create mode 100644 src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.ts create mode 100644 src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.html create mode 100644 src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.scss create mode 100644 src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.spec.ts create mode 100644 src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.ts create mode 100644 src/assets/examples/material/configurable-toggle/configurable-toggle.component.html create mode 100644 src/assets/examples/material/configurable-toggle/configurable-toggle.component.scss create mode 100644 src/assets/examples/material/configurable-toggle/configurable-toggle.component.spec.ts create mode 100644 src/assets/examples/material/configurable-toggle/configurable-toggle.component.ts create mode 100644 src/assets/examples/material/custom-bar/custom-bar.component.html create mode 100644 src/assets/examples/material/custom-bar/custom-bar.component.scss create mode 100644 src/assets/examples/material/custom-bar/custom-bar.component.spec.ts create mode 100644 src/assets/examples/material/custom-bar/custom-bar.component.ts create mode 100644 src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.html create mode 100644 src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.scss create mode 100644 src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.spec.ts create mode 100644 src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.ts create mode 100644 src/assets/examples/material/custom-datepicker/custom-datepicker.component.html create mode 100644 src/assets/examples/material/custom-datepicker/custom-datepicker.component.scss create mode 100644 src/assets/examples/material/custom-datepicker/custom-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/custom-datepicker/custom-datepicker.component.ts create mode 100644 src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.html create mode 100644 src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.scss create mode 100644 src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.spec.ts create mode 100644 src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.ts create mode 100644 src/assets/examples/material/custom-paginator/custom-paginator.component.html create mode 100644 src/assets/examples/material/custom-paginator/custom-paginator.component.scss create mode 100644 src/assets/examples/material/custom-paginator/custom-paginator.component.spec.ts create mode 100644 src/assets/examples/material/custom-paginator/custom-paginator.component.ts create mode 100644 src/assets/examples/material/custom-panel-select/custom-panel-select.component.html create mode 100644 src/assets/examples/material/custom-panel-select/custom-panel-select.component.scss create mode 100644 src/assets/examples/material/custom-panel-select/custom-panel-select.component.spec.ts create mode 100644 src/assets/examples/material/custom-panel-select/custom-panel-select.component.ts create mode 100644 src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.html create mode 100644 src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.scss create mode 100644 src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.spec.ts create mode 100644 src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.ts create mode 100644 src/assets/examples/material/custom-ripples/custom-ripples.component.html create mode 100644 src/assets/examples/material/custom-ripples/custom-ripples.component.scss create mode 100644 src/assets/examples/material/custom-ripples/custom-ripples.component.spec.ts create mode 100644 src/assets/examples/material/custom-ripples/custom-ripples.component.ts create mode 100644 src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.html create mode 100644 src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.scss create mode 100644 src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.spec.ts create mode 100644 src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.ts create mode 100644 src/assets/examples/material/custom-snackbar/custom-snackbar.component.html create mode 100644 src/assets/examples/material/custom-snackbar/custom-snackbar.component.scss create mode 100644 src/assets/examples/material/custom-snackbar/custom-snackbar.component.spec.ts create mode 100644 src/assets/examples/material/custom-snackbar/custom-snackbar.component.ts create mode 100644 src/assets/examples/material/custom-spinner/custom-spinner.component.html create mode 100644 src/assets/examples/material/custom-spinner/custom-spinner.component.scss create mode 100644 src/assets/examples/material/custom-spinner/custom-spinner.component.spec.ts create mode 100644 src/assets/examples/material/custom-spinner/custom-spinner.component.ts create mode 100644 src/assets/examples/material/custom-tab-group/custom-tab-group.component.html create mode 100644 src/assets/examples/material/custom-tab-group/custom-tab-group.component.scss create mode 100644 src/assets/examples/material/custom-tab-group/custom-tab-group.component.spec.ts create mode 100644 src/assets/examples/material/custom-tab-group/custom-tab-group.component.ts create mode 100644 src/assets/examples/material/customized-stepper/customized-stepper.component.html create mode 100644 src/assets/examples/material/customized-stepper/customized-stepper.component.scss create mode 100644 src/assets/examples/material/customized-stepper/customized-stepper.component.spec.ts create mode 100644 src/assets/examples/material/customized-stepper/customized-stepper.component.ts create mode 100644 src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.html create mode 100644 src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.scss create mode 100644 src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.spec.ts create mode 100644 src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.ts create mode 100644 src/assets/examples/material/data-dialog/data-dialog.component.html create mode 100644 src/assets/examples/material/data-dialog/data-dialog.component.scss create mode 100644 src/assets/examples/material/data-dialog/data-dialog.component.spec.ts create mode 100644 src/assets/examples/material/data-dialog/data-dialog.component.ts create mode 100644 src/assets/examples/material/delay-tooltip/delay-tooltip.component.html create mode 100644 src/assets/examples/material/delay-tooltip/delay-tooltip.component.scss create mode 100644 src/assets/examples/material/delay-tooltip/delay-tooltip.component.spec.ts create mode 100644 src/assets/examples/material/delay-tooltip/delay-tooltip.component.ts create mode 100644 src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.html create mode 100644 src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.scss create mode 100644 src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.ts create mode 100644 src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.html create mode 100644 src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.scss create mode 100644 src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.ts create mode 100644 src/assets/examples/material/disabled-select/disabled-select.component.html create mode 100644 src/assets/examples/material/disabled-select/disabled-select.component.scss create mode 100644 src/assets/examples/material/disabled-select/disabled-select.component.spec.ts create mode 100644 src/assets/examples/material/disabled-select/disabled-select.component.ts create mode 100644 src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.html create mode 100644 src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.scss create mode 100644 src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.spec.ts create mode 100644 src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.ts create mode 100644 src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.html create mode 100644 src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.scss create mode 100644 src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.spec.ts create mode 100644 src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.ts create mode 100644 src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.html create mode 100644 src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.scss create mode 100644 src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.spec.ts create mode 100644 src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.ts create mode 100644 src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.html create mode 100644 src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.scss create mode 100644 src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.spec.ts create mode 100644 src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.ts create mode 100644 src/assets/examples/material/dynamic-grid/dynamic-grid.component.html create mode 100644 src/assets/examples/material/dynamic-grid/dynamic-grid.component.scss create mode 100644 src/assets/examples/material/dynamic-grid/dynamic-grid.component.spec.ts create mode 100644 src/assets/examples/material/dynamic-grid/dynamic-grid.component.ts create mode 100644 src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.html create mode 100644 src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.scss create mode 100644 src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.spec.ts create mode 100644 src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.ts create mode 100644 src/assets/examples/material/error-form-field/error-form-field.component.html create mode 100644 src/assets/examples/material/error-form-field/error-form-field.component.scss create mode 100644 src/assets/examples/material/error-form-field/error-form-field.component.spec.ts create mode 100644 src/assets/examples/material/error-form-field/error-form-field.component.ts create mode 100644 src/assets/examples/material/error-input/error-input.component.html create mode 100644 src/assets/examples/material/error-input/error-input.component.scss create mode 100644 src/assets/examples/material/error-input/error-input.component.spec.ts create mode 100644 src/assets/examples/material/error-input/error-input.component.ts create mode 100644 src/assets/examples/material/error-message-input/error-message-input.component.html create mode 100644 src/assets/examples/material/error-message-input/error-message-input.component.scss create mode 100644 src/assets/examples/material/error-message-input/error-message-input.component.spec.ts create mode 100644 src/assets/examples/material/error-message-input/error-message-input.component.ts create mode 100644 src/assets/examples/material/error-select/error-select.component.html create mode 100644 src/assets/examples/material/error-select/error-select.component.scss create mode 100644 src/assets/examples/material/error-select/error-select.component.spec.ts create mode 100644 src/assets/examples/material/error-select/error-select.component.ts create mode 100644 src/assets/examples/material/error-stepper/error-stepper.component.html create mode 100644 src/assets/examples/material/error-stepper/error-stepper.component.scss create mode 100644 src/assets/examples/material/error-stepper/error-stepper.component.spec.ts create mode 100644 src/assets/examples/material/error-stepper/error-stepper.component.ts create mode 100644 src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.html create mode 100644 src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.scss create mode 100644 src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.spec.ts create mode 100644 src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.ts create mode 100644 src/assets/examples/material/event-datepicker/event-datepicker.component.html create mode 100644 src/assets/examples/material/event-datepicker/event-datepicker.component.scss create mode 100644 src/assets/examples/material/event-datepicker/event-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/event-datepicker/event-datepicker.component.ts create mode 100644 src/assets/examples/material/feature-select/feature-select.component.html create mode 100644 src/assets/examples/material/feature-select/feature-select.component.scss create mode 100644 src/assets/examples/material/feature-select/feature-select.component.spec.ts create mode 100644 src/assets/examples/material/feature-select/feature-select.component.ts create mode 100644 src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.html create mode 100644 src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.scss create mode 100644 src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.spec.ts create mode 100644 src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.ts create mode 100644 src/assets/examples/material/filter-datepicker/filter-datepicker.component.html create mode 100644 src/assets/examples/material/filter-datepicker/filter-datepicker.component.scss create mode 100644 src/assets/examples/material/filter-datepicker/filter-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/filter-datepicker/filter-datepicker.component.ts create mode 100644 src/assets/examples/material/filter-table/filter-table.component.html create mode 100644 src/assets/examples/material/filter-table/filter-table.component.scss create mode 100644 src/assets/examples/material/filter-table/filter-table.component.spec.ts create mode 100644 src/assets/examples/material/filter-table/filter-table.component.ts create mode 100644 src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.html create mode 100644 src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.scss create mode 100644 src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.spec.ts create mode 100644 src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.ts create mode 100644 src/assets/examples/material/flat-tree/flat-tree.component.html create mode 100644 src/assets/examples/material/flat-tree/flat-tree.component.scss create mode 100644 src/assets/examples/material/flat-tree/flat-tree.component.spec.ts create mode 100644 src/assets/examples/material/flat-tree/flat-tree.component.ts create mode 100644 src/assets/examples/material/footer-table/footer-table.component.html create mode 100644 src/assets/examples/material/footer-table/footer-table.component.scss create mode 100644 src/assets/examples/material/footer-table/footer-table.component.spec.ts create mode 100644 src/assets/examples/material/footer-table/footer-table.component.ts create mode 100644 src/assets/examples/material/form-input/form-input.component.html create mode 100644 src/assets/examples/material/form-input/form-input.component.scss create mode 100644 src/assets/examples/material/form-input/form-input.component.spec.ts create mode 100644 src/assets/examples/material/form-input/form-input.component.ts create mode 100644 src/assets/examples/material/form-select/form-select.component.html create mode 100644 src/assets/examples/material/form-select/form-select.component.scss create mode 100644 src/assets/examples/material/form-select/form-select.component.spec.ts create mode 100644 src/assets/examples/material/form-select/form-select.component.ts create mode 100644 src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.html create mode 100644 src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.scss create mode 100644 src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.spec.ts create mode 100644 src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.ts create mode 100644 src/assets/examples/material/hints-form-field/hints-form-field.component.html create mode 100644 src/assets/examples/material/hints-form-field/hints-form-field.component.scss create mode 100644 src/assets/examples/material/hints-form-field/hints-form-field.component.spec.ts create mode 100644 src/assets/examples/material/hints-form-field/hints-form-field.component.ts create mode 100644 src/assets/examples/material/hints-input/hints-input.component.html create mode 100644 src/assets/examples/material/hints-input/hints-input.component.scss create mode 100644 src/assets/examples/material/hints-input/hints-input.component.spec.ts create mode 100644 src/assets/examples/material/hints-input/hints-input.component.ts create mode 100644 src/assets/examples/material/icon-menu/icon-menu.component.html create mode 100644 src/assets/examples/material/icon-menu/icon-menu.component.scss create mode 100644 src/assets/examples/material/icon-menu/icon-menu.component.spec.ts create mode 100644 src/assets/examples/material/icon-menu/icon-menu.component.ts create mode 100644 src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.html create mode 100644 src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.scss create mode 100644 src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.spec.ts create mode 100644 src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.ts create mode 100644 src/assets/examples/material/index.ts create mode 100644 src/assets/examples/material/input-chip/input-chip.component.html create mode 100644 src/assets/examples/material/input-chip/input-chip.component.scss create mode 100644 src/assets/examples/material/input-chip/input-chip.component.spec.ts create mode 100644 src/assets/examples/material/input-chip/input-chip.component.ts create mode 100644 src/assets/examples/material/label-form-field/label-form-field.component.html create mode 100644 src/assets/examples/material/label-form-field/label-form-field.component.scss create mode 100644 src/assets/examples/material/label-form-field/label-form-field.component.spec.ts create mode 100644 src/assets/examples/material/label-form-field/label-form-field.component.ts create mode 100644 src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.html create mode 100644 src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.scss create mode 100644 src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.spec.ts create mode 100644 src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.ts create mode 100644 src/assets/examples/material/material-examples.module.ts create mode 100644 src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.html create mode 100644 src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.scss create mode 100644 src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.ts create mode 100644 src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.html create mode 100644 src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.scss create mode 100644 src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.ts create mode 100644 src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.html create mode 100644 src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.scss create mode 100644 src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.spec.ts create mode 100644 src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.ts create mode 100644 src/assets/examples/material/multi-section-card/multi-section-card.component.html create mode 100644 src/assets/examples/material/multi-section-card/multi-section-card.component.scss create mode 100644 src/assets/examples/material/multi-section-card/multi-section-card.component.spec.ts create mode 100644 src/assets/examples/material/multi-section-card/multi-section-card.component.ts create mode 100644 src/assets/examples/material/multiple-select/multiple-select.component.html create mode 100644 src/assets/examples/material/multiple-select/multiple-select.component.scss create mode 100644 src/assets/examples/material/multiple-select/multiple-select.component.spec.ts create mode 100644 src/assets/examples/material/multiple-select/multiple-select.component.ts create mode 100644 src/assets/examples/material/nav-tab-group/nav-tab-group.component.html create mode 100644 src/assets/examples/material/nav-tab-group/nav-tab-group.component.scss create mode 100644 src/assets/examples/material/nav-tab-group/nav-tab-group.component.spec.ts create mode 100644 src/assets/examples/material/nav-tab-group/nav-tab-group.component.ts create mode 100644 src/assets/examples/material/nested-menu/nested-menu.component.html create mode 100644 src/assets/examples/material/nested-menu/nested-menu.component.scss create mode 100644 src/assets/examples/material/nested-menu/nested-menu.component.spec.ts create mode 100644 src/assets/examples/material/nested-menu/nested-menu.component.ts create mode 100644 src/assets/examples/material/nested-tree/nested-tree.component.html create mode 100644 src/assets/examples/material/nested-tree/nested-tree.component.scss create mode 100644 src/assets/examples/material/nested-tree/nested-tree.component.spec.ts create mode 100644 src/assets/examples/material/nested-tree/nested-tree.component.ts create mode 100644 src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.html create mode 100644 src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.scss create mode 100644 src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.spec.ts create mode 100644 src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.ts create mode 100644 src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.html create mode 100644 src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.scss create mode 100644 src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.spec.ts create mode 100644 src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.ts create mode 100644 src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.html create mode 100644 src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.scss create mode 100644 src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.ts create mode 100644 src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.html create mode 100644 src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.scss create mode 100644 src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.spec.ts create mode 100644 src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.ts create mode 100644 src/assets/examples/material/option-group-select/option-group-select.component.html create mode 100644 src/assets/examples/material/option-group-select/option-group-select.component.scss create mode 100644 src/assets/examples/material/option-group-select/option-group-select.component.spec.ts create mode 100644 src/assets/examples/material/option-group-select/option-group-select.component.ts create mode 100644 src/assets/examples/material/pagination-table/pagination-table.component.html create mode 100644 src/assets/examples/material/pagination-table/pagination-table.component.scss create mode 100644 src/assets/examples/material/pagination-table/pagination-table.component.spec.ts create mode 100644 src/assets/examples/material/pagination-table/pagination-table.component.ts create mode 100644 src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.html create mode 100644 src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.scss create mode 100644 src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.spec.ts create mode 100644 src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.ts create mode 100644 src/assets/examples/material/reset-select/reset-select.component.html create mode 100644 src/assets/examples/material/reset-select/reset-select.component.scss create mode 100644 src/assets/examples/material/reset-select/reset-select.component.spec.ts create mode 100644 src/assets/examples/material/reset-select/reset-select.component.ts create mode 100644 src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.html create mode 100644 src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.scss create mode 100644 src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.spec.ts create mode 100644 src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.ts create mode 100644 src/assets/examples/material/rippleless-select/rippleless-select.component.html create mode 100644 src/assets/examples/material/rippleless-select/rippleless-select.component.scss create mode 100644 src/assets/examples/material/rippleless-select/rippleless-select.component.spec.ts create mode 100644 src/assets/examples/material/rippleless-select/rippleless-select.component.ts create mode 100644 src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.html create mode 100644 src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.scss create mode 100644 src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.spec.ts create mode 100644 src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.ts create mode 100644 src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.html create mode 100644 src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.scss create mode 100644 src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.spec.ts create mode 100644 src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.ts create mode 100644 src/assets/examples/material/section-list/section-list.component.html create mode 100644 src/assets/examples/material/section-list/section-list.component.scss create mode 100644 src/assets/examples/material/section-list/section-list.component.spec.ts create mode 100644 src/assets/examples/material/section-list/section-list.component.ts create mode 100644 src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.html create mode 100644 src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.scss create mode 100644 src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.ts create mode 100644 src/assets/examples/material/selection-table/selection-table.component.html create mode 100644 src/assets/examples/material/selection-table/selection-table.component.scss create mode 100644 src/assets/examples/material/selection-table/selection-table.component.spec.ts create mode 100644 src/assets/examples/material/selection-table/selection-table.component.ts create mode 100644 src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.html create mode 100644 src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.scss create mode 100644 src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.spec.ts create mode 100644 src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.ts create mode 100644 src/assets/examples/material/simple-form-field/simple-form-field.component.html create mode 100644 src/assets/examples/material/simple-form-field/simple-form-field.component.scss create mode 100644 src/assets/examples/material/simple-form-field/simple-form-field.component.spec.ts create mode 100644 src/assets/examples/material/simple-form-field/simple-form-field.component.ts create mode 100644 src/assets/examples/material/slider/slider.component.html create mode 100644 src/assets/examples/material/slider/slider.component.scss create mode 100644 src/assets/examples/material/slider/slider.component.spec.ts create mode 100644 src/assets/examples/material/slider/slider.component.ts create mode 100644 src/assets/examples/material/sorting-table/sorting-table.component.html create mode 100644 src/assets/examples/material/sorting-table/sorting-table.component.scss create mode 100644 src/assets/examples/material/sorting-table/sorting-table.component.spec.ts create mode 100644 src/assets/examples/material/sorting-table/sorting-table.component.ts create mode 100644 src/assets/examples/material/stacked-chip/stacked-chip.component.html create mode 100644 src/assets/examples/material/stacked-chip/stacked-chip.component.scss create mode 100644 src/assets/examples/material/stacked-chip/stacked-chip.component.spec.ts create mode 100644 src/assets/examples/material/stacked-chip/stacked-chip.component.ts create mode 100644 src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.html create mode 100644 src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.scss create mode 100644 src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.ts create mode 100644 src/assets/examples/material/sticky-column-table/sticky-column-table.component.html create mode 100644 src/assets/examples/material/sticky-column-table/sticky-column-table.component.scss create mode 100644 src/assets/examples/material/sticky-column-table/sticky-column-table.component.spec.ts create mode 100644 src/assets/examples/material/sticky-column-table/sticky-column-table.component.ts create mode 100644 src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.html create mode 100644 src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.scss create mode 100644 src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.spec.ts create mode 100644 src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.ts create mode 100644 src/assets/examples/material/sticky-header-table/sticky-header-table.component.html create mode 100644 src/assets/examples/material/sticky-header-table/sticky-header-table.component.scss create mode 100644 src/assets/examples/material/sticky-header-table/sticky-header-table.component.spec.ts create mode 100644 src/assets/examples/material/sticky-header-table/sticky-header-table.component.ts create mode 100644 src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.html create mode 100644 src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.scss create mode 100644 src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.spec.ts create mode 100644 src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.ts create mode 100644 src/assets/examples/material/svg-icon/svg-icon.component.html create mode 100644 src/assets/examples/material/svg-icon/svg-icon.component.scss create mode 100644 src/assets/examples/material/svg-icon/svg-icon.component.spec.ts create mode 100644 src/assets/examples/material/svg-icon/svg-icon.component.ts create mode 100644 src/assets/examples/material/table-sorting/table-sorting.component.html create mode 100644 src/assets/examples/material/table-sorting/table-sorting.component.scss create mode 100644 src/assets/examples/material/table-sorting/table-sorting.component.spec.ts create mode 100644 src/assets/examples/material/table-sorting/table-sorting.component.ts create mode 100644 src/assets/examples/material/theming-form-field/theming-form-field.component.html create mode 100644 src/assets/examples/material/theming-form-field/theming-form-field.component.scss create mode 100644 src/assets/examples/material/theming-form-field/theming-form-field.component.spec.ts create mode 100644 src/assets/examples/material/theming-form-field/theming-form-field.component.ts create mode 100644 src/assets/examples/material/touch-datepicker/touch-datepicker.component.html create mode 100644 src/assets/examples/material/touch-datepicker/touch-datepicker.component.scss create mode 100644 src/assets/examples/material/touch-datepicker/touch-datepicker.component.spec.ts create mode 100644 src/assets/examples/material/touch-datepicker/touch-datepicker.component.ts create mode 100644 src/assets/examples/material/trigger-select/trigger-select.component.html create mode 100644 src/assets/examples/material/trigger-select/trigger-select.component.scss create mode 100644 src/assets/examples/material/trigger-select/trigger-select.component.spec.ts create mode 100644 src/assets/examples/material/trigger-select/trigger-select.component.ts create mode 100644 src/assets/examples/material/two-sidenav/two-sidenav.component.html create mode 100644 src/assets/examples/material/two-sidenav/two-sidenav.component.scss create mode 100644 src/assets/examples/material/two-sidenav/two-sidenav.component.spec.ts create mode 100644 src/assets/examples/material/two-sidenav/two-sidenav.component.ts create mode 100644 src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.html create mode 100644 src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.scss create mode 100644 src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.spec.ts create mode 100644 src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.ts create mode 100644 src/assets/examples/material/vertical-stepper/vertical-stepper.component.html create mode 100644 src/assets/examples/material/vertical-stepper/vertical-stepper.component.scss create mode 100644 src/assets/examples/material/vertical-stepper/vertical-stepper.component.spec.ts create mode 100644 src/assets/examples/material/vertical-stepper/vertical-stepper.component.ts create mode 100644 src/assets/i18n/en.json create mode 100644 src/assets/i18n/es.json create mode 100644 src/assets/images/5-star.png create mode 100644 src/assets/images/UI-Lib-dummy.svg create mode 100644 src/assets/images/backgrounds/card-coffee-cup.jpg create mode 100644 src/assets/images/backgrounds/fancy-twilight.jpg create mode 100644 src/assets/images/backgrounds/sea-twilight.jpg create mode 100644 src/assets/images/backgrounds/trianglify-1.png create mode 100644 src/assets/images/backgrounds/trianglify-2.png create mode 100644 src/assets/images/backgrounds/trianglify-3.png create mode 100644 src/assets/images/backgrounds/trianglify-4.png create mode 100644 src/assets/images/backgrounds/waterfall.jpg create mode 100644 src/assets/images/badges/badge-1.svg create mode 100644 src/assets/images/badges/badge-2.svg create mode 100644 src/assets/images/badges/badge-3.svg create mode 100644 src/assets/images/badges/badge-4.svg create mode 100644 src/assets/images/badges/badge-5.svg create mode 100644 src/assets/images/badges/badge-6.svg create mode 100644 src/assets/images/badges/badge-7.svg create mode 100644 src/assets/images/badges/badge-8.svg create mode 100644 src/assets/images/badges/badge-9.svg create mode 100644 src/assets/images/bg-2.jpg create mode 100644 src/assets/images/cancel.png create mode 100644 src/assets/images/circles.png create mode 100644 src/assets/images/cryptocurrencies/ADA.png create mode 100644 src/assets/images/cryptocurrencies/ADX.png create mode 100644 src/assets/images/cryptocurrencies/AE.png create mode 100644 src/assets/images/cryptocurrencies/ARDR.png create mode 100644 src/assets/images/cryptocurrencies/ARK.png create mode 100644 src/assets/images/cryptocurrencies/BAT.png create mode 100644 src/assets/images/cryptocurrencies/BCC.png create mode 100644 src/assets/images/cryptocurrencies/BCH.png create mode 100644 src/assets/images/cryptocurrencies/BCN.png create mode 100644 src/assets/images/cryptocurrencies/BLOCK.png create mode 100644 src/assets/images/cryptocurrencies/BNB.png create mode 100644 src/assets/images/cryptocurrencies/BNT.png create mode 100644 src/assets/images/cryptocurrencies/BTC.png create mode 100644 src/assets/images/cryptocurrencies/BTCD.png create mode 100644 src/assets/images/cryptocurrencies/BTG.png create mode 100644 src/assets/images/cryptocurrencies/BTM.png create mode 100644 src/assets/images/cryptocurrencies/BTS.png create mode 100644 src/assets/images/cryptocurrencies/CNX.png create mode 100644 src/assets/images/cryptocurrencies/CVC.png create mode 100644 src/assets/images/cryptocurrencies/DASH.png create mode 100644 src/assets/images/cryptocurrencies/DCR.png create mode 100644 src/assets/images/cryptocurrencies/DGB.png create mode 100644 src/assets/images/cryptocurrencies/DGD.png create mode 100644 src/assets/images/cryptocurrencies/DOGE.png create mode 100644 src/assets/images/cryptocurrencies/EDG.png create mode 100644 src/assets/images/cryptocurrencies/EMC2.png create mode 100644 src/assets/images/cryptocurrencies/EOS.png create mode 100644 src/assets/images/cryptocurrencies/ETC.png create mode 100644 src/assets/images/cryptocurrencies/ETH.png create mode 100644 src/assets/images/cryptocurrencies/ETHOS.png create mode 100644 src/assets/images/cryptocurrencies/ETP.png create mode 100644 src/assets/images/cryptocurrencies/FCT.png create mode 100644 src/assets/images/cryptocurrencies/FUN.png create mode 100644 src/assets/images/cryptocurrencies/GAME.png create mode 100644 src/assets/images/cryptocurrencies/GAS.png create mode 100644 src/assets/images/cryptocurrencies/GBYTE.png create mode 100644 src/assets/images/cryptocurrencies/GNO.png create mode 100644 src/assets/images/cryptocurrencies/GNT.png create mode 100644 src/assets/images/cryptocurrencies/GRS.png create mode 100644 src/assets/images/cryptocurrencies/GXS.png create mode 100644 src/assets/images/cryptocurrencies/HSR.png create mode 100644 src/assets/images/cryptocurrencies/ICN.png create mode 100644 src/assets/images/cryptocurrencies/IOT.png create mode 100644 src/assets/images/cryptocurrencies/KMD.png create mode 100644 src/assets/images/cryptocurrencies/KNC.png create mode 100644 src/assets/images/cryptocurrencies/LSK.png create mode 100644 src/assets/images/cryptocurrencies/LTC.png create mode 100644 src/assets/images/cryptocurrencies/MAID.png create mode 100644 src/assets/images/cryptocurrencies/MCO.png create mode 100644 src/assets/images/cryptocurrencies/MNX.png create mode 100644 src/assets/images/cryptocurrencies/MONA.png create mode 100644 src/assets/images/cryptocurrencies/MTL.png create mode 100644 src/assets/images/cryptocurrencies/NAV.png create mode 100644 src/assets/images/cryptocurrencies/NEO.png create mode 100644 src/assets/images/cryptocurrencies/NXS.png create mode 100644 src/assets/images/cryptocurrencies/NXT.png create mode 100644 src/assets/images/cryptocurrencies/OMG.png create mode 100644 src/assets/images/cryptocurrencies/PAY.png create mode 100644 src/assets/images/cryptocurrencies/PIVX.png create mode 100644 src/assets/images/cryptocurrencies/POT.png create mode 100644 src/assets/images/cryptocurrencies/POWER.png create mode 100644 src/assets/images/cryptocurrencies/PPC.png create mode 100644 src/assets/images/cryptocurrencies/PPT.png create mode 100644 src/assets/images/cryptocurrencies/PURA.png create mode 100644 src/assets/images/cryptocurrencies/QASH.png create mode 100644 src/assets/images/cryptocurrencies/QTUM.png create mode 100644 src/assets/images/cryptocurrencies/RDN.png create mode 100644 src/assets/images/cryptocurrencies/REP.png create mode 100644 src/assets/images/cryptocurrencies/SALT.png create mode 100644 src/assets/images/cryptocurrencies/SAN.png create mode 100644 src/assets/images/cryptocurrencies/SC.png create mode 100644 src/assets/images/cryptocurrencies/SKY.png create mode 100644 src/assets/images/cryptocurrencies/SNGLS.png create mode 100644 src/assets/images/cryptocurrencies/SNT.png create mode 100644 src/assets/images/cryptocurrencies/START.png create mode 100644 src/assets/images/cryptocurrencies/STEEM.png create mode 100644 src/assets/images/cryptocurrencies/STORJ.png create mode 100644 src/assets/images/cryptocurrencies/SYS.png create mode 100644 src/assets/images/cryptocurrencies/TRX.png create mode 100644 src/assets/images/cryptocurrencies/UBQ.png create mode 100644 src/assets/images/cryptocurrencies/USDT.png create mode 100644 src/assets/images/cryptocurrencies/VEN.png create mode 100644 src/assets/images/cryptocurrencies/VTC.png create mode 100644 src/assets/images/cryptocurrencies/WAVES.png create mode 100644 src/assets/images/cryptocurrencies/WTC.png create mode 100644 src/assets/images/cryptocurrencies/XEM.png create mode 100644 src/assets/images/cryptocurrencies/XLM.png create mode 100644 src/assets/images/cryptocurrencies/XMR.png create mode 100644 src/assets/images/cryptocurrencies/XRP.png create mode 100644 src/assets/images/cryptocurrencies/XUC.png create mode 100644 src/assets/images/cryptocurrencies/XVG.png create mode 100644 src/assets/images/cryptocurrencies/XZC.png create mode 100644 src/assets/images/cryptocurrencies/ZEC.png create mode 100644 src/assets/images/cryptocurrencies/ZEN.png create mode 100644 src/assets/images/cryptocurrencies/ZRX.png create mode 100644 src/assets/images/debit-card.png create mode 100644 src/assets/images/demo_all.jpg create mode 100644 src/assets/images/demo_home_one.jpg create mode 100644 src/assets/images/demo_home_two.jpg create mode 100644 src/assets/images/dots.png create mode 100644 src/assets/images/edit.svg create mode 100644 src/assets/images/egret-screen.jpg create mode 100644 src/assets/images/egret-screen.png create mode 100644 src/assets/images/face-1.jpg create mode 100644 src/assets/images/face-2.jpg create mode 100644 src/assets/images/face-3.jpg create mode 100644 src/assets/images/face-4.jpg create mode 100644 src/assets/images/face-5.jpg create mode 100644 src/assets/images/face-6.jpg create mode 100644 src/assets/images/face-7.jpg create mode 100644 src/assets/images/faces/10.jpg create mode 100644 src/assets/images/faces/12.jpg create mode 100644 src/assets/images/faces/13.jpg create mode 100644 src/assets/images/faces/15.jpg create mode 100644 src/assets/images/faces/16.jpg create mode 100644 src/assets/images/faces/17.jpg create mode 100644 src/assets/images/faces/2.jpg create mode 100644 src/assets/images/faces/3.jpg create mode 100644 src/assets/images/faces/4.jpg create mode 100644 src/assets/images/faces/5.jpg create mode 100644 src/assets/images/faces/9.jpg create mode 100644 src/assets/images/gr.png create mode 100644 src/assets/images/home-bg-black.png create mode 100644 src/assets/images/home-bg-indigo.jpg create mode 100644 src/assets/images/home-bg.jpg create mode 100644 src/assets/images/home-bg.png create mode 100644 src/assets/images/illustrations/1.svg create mode 100644 src/assets/images/illustrations/2.svg create mode 100644 src/assets/images/illustrations/404.svg create mode 100644 src/assets/images/illustrations/agreement.svg create mode 100644 src/assets/images/illustrations/all_the_data.svg create mode 100644 src/assets/images/illustrations/announcement.svg create mode 100644 src/assets/images/illustrations/baby.svg create mode 100644 src/assets/images/illustrations/breaking_barriers.svg create mode 100644 src/assets/images/illustrations/business_deal.svg create mode 100644 src/assets/images/illustrations/designer.svg create mode 100644 src/assets/images/illustrations/dreamer.svg create mode 100644 src/assets/images/illustrations/lighthouse.svg create mode 100644 src/assets/images/illustrations/posting_photo.svg create mode 100644 src/assets/images/illustrations/upgrade.svg create mode 100644 src/assets/images/logo-circle.png create mode 100644 src/assets/images/logo-circle.svg create mode 100644 src/assets/images/logo-full-200px.png create mode 100644 src/assets/images/logo-full-strong.png create mode 100644 src/assets/images/logo-full-white.png create mode 100644 src/assets/images/logo-full.png create mode 100644 src/assets/images/logo-lg.png create mode 100644 src/assets/images/logo-text-white.png create mode 100644 src/assets/images/logo-text.png create mode 100644 src/assets/images/logo.png create mode 100644 src/assets/images/logo.svg create mode 100644 src/assets/images/logos/angular.png create mode 100644 src/assets/images/logos/bootstrap.png create mode 100644 src/assets/images/logos/gulp.png create mode 100644 src/assets/images/logos/laravel.png create mode 100644 src/assets/images/logos/logo-1.png create mode 100644 src/assets/images/logos/logo-2.png create mode 100644 src/assets/images/logos/logo-3.png create mode 100644 src/assets/images/logos/logo-4.png create mode 100644 src/assets/images/logos/logo-5.png create mode 100644 src/assets/images/logos/logo-6.png create mode 100644 src/assets/images/logos/logo-7.png create mode 100644 src/assets/images/logos/logo-8.png create mode 100644 src/assets/images/logos/logo-9.png create mode 100644 src/assets/images/logos/react.png create mode 100644 src/assets/images/logos/sass.png create mode 100644 src/assets/images/logos/webpack.png create mode 100644 src/assets/images/mock-logo-1.png create mode 100644 src/assets/images/mock-logo-2.png create mode 100644 src/assets/images/mock-logo-3.png create mode 100644 src/assets/images/mock-logo-4.png create mode 100644 src/assets/images/oc.png create mode 100644 src/assets/images/payment-methods/amazon.png create mode 100644 src/assets/images/payment-methods/amex.png create mode 100644 src/assets/images/payment-methods/cirrus.png create mode 100644 src/assets/images/payment-methods/maestro.png create mode 100644 src/assets/images/payment-methods/master-card.png create mode 100644 src/assets/images/payment-methods/paypal.png create mode 100644 src/assets/images/payment-methods/shopify.png create mode 100644 src/assets/images/payment-methods/skrill.png create mode 100644 src/assets/images/payment-methods/visa-electron.png create mode 100644 src/assets/images/payment-methods/visa.png create mode 100644 src/assets/images/payment-methods/western-union.png create mode 100644 src/assets/images/photo-1.jpg create mode 100644 src/assets/images/photo-2.jpg create mode 100644 src/assets/images/photo-3.jpg create mode 100644 src/assets/images/photo-600_220.jpg create mode 100644 src/assets/images/products/headphone-1.jpg create mode 100644 src/assets/images/products/headphone-2.jpg create mode 100644 src/assets/images/products/headphone-3.jpg create mode 100644 src/assets/images/products/headphone-4.jpg create mode 100644 src/assets/images/products/iphone-1.jpg create mode 100644 src/assets/images/products/iphone-2.jpg create mode 100644 src/assets/images/products/speaker-1.jpg create mode 100644 src/assets/images/products/speaker-2.jpg create mode 100644 src/assets/images/products/watch-1.jpg create mode 100644 src/assets/images/products/watch-2.jpg create mode 100644 src/assets/images/screenshots/black_sidebar.png create mode 100644 src/assets/images/screenshots/calendar.jpg create mode 100755 src/assets/images/screenshots/dark-pink-title.png create mode 100755 src/assets/images/screenshots/dark-purple-title.png create mode 100644 src/assets/images/screenshots/dark_theme.png create mode 100644 src/assets/images/screenshots/dashboard.jpg create mode 100644 src/assets/images/screenshots/gull-dashboard.png create mode 100644 src/assets/images/screenshots/landing-1.png create mode 100644 src/assets/images/screenshots/landing-2.png create mode 100644 src/assets/images/screenshots/landing-3.png create mode 100644 src/assets/images/screenshots/landing-intro.png create mode 100755 src/assets/images/screenshots/layout1-blue-customizer.png create mode 100755 src/assets/images/screenshots/layout1-customizer-1.png create mode 100644 src/assets/images/screenshots/layout1-customizer-old.png create mode 100755 src/assets/images/screenshots/layout1-customizer.png create mode 100755 src/assets/images/screenshots/layout2-customizer.png create mode 100755 src/assets/images/screenshots/layout3-customizer.png create mode 100755 src/assets/images/screenshots/layout4-customizer.png create mode 100755 src/assets/images/screenshots/light-blue-title.png create mode 100644 src/assets/images/screenshots/login.jpg create mode 100755 src/assets/images/screenshots/side-simple-ltr.png create mode 100755 src/assets/images/screenshots/side-simple-rtl.png create mode 100755 src/assets/images/screenshots/side-title-ltr.png create mode 100755 src/assets/images/screenshots/top-simple-ltr.png create mode 100755 src/assets/images/screenshots/top-simple-rtl.png create mode 100644 src/assets/images/screenshots/white_sidebar.png create mode 100644 src/assets/images/sidebar-bg-dark.jpg create mode 100644 src/assets/images/sidebar-bg.jpg create mode 100644 src/assets/images/sidebar/sidebar-bg-dark.jpg create mode 100644 src/assets/images/sidebar/sidebar-bg-light.jpg create mode 100644 src/assets/images/social-dribble.png create mode 100644 src/assets/images/social-facebook.png create mode 100644 src/assets/images/social-linkedin.png create mode 100644 src/assets/images/social-twitter.png create mode 100644 src/assets/images/sq-1.jpg create mode 100644 src/assets/images/sq-10.jpg create mode 100644 src/assets/images/sq-11.jpg create mode 100644 src/assets/images/sq-12.jpg create mode 100644 src/assets/images/sq-13.jpg create mode 100644 src/assets/images/sq-15.jpg create mode 100644 src/assets/images/sq-16.jpg create mode 100644 src/assets/images/sq-17.jpg create mode 100644 src/assets/images/sq-2.jpg create mode 100644 src/assets/images/sq-3.jpg create mode 100644 src/assets/images/sq-4.jpg create mode 100644 src/assets/images/sq-5.jpg create mode 100644 src/assets/images/sq-6.jpg create mode 100644 src/assets/images/sq-7.jpg create mode 100644 src/assets/images/sq-8.jpg create mode 100644 src/assets/images/sq-9.jpg create mode 100644 src/assets/images/sq-face-220.jpg create mode 100644 src/assets/images/star-rating.icons.svg create mode 100644 src/assets/images/svgIconExample.svg create mode 100644 src/assets/images/tf.png create mode 100644 src/assets/images/wide-1.jpg create mode 100644 src/assets/styles/app.scss create mode 100644 src/assets/styles/bootstrap-utilities/_functions.scss create mode 100644 src/assets/styles/bootstrap-utilities/_mixins.scss create mode 100644 src/assets/styles/bootstrap-utilities/_utilities.scss create mode 100644 src/assets/styles/bootstrap-utilities/_variables.scss create mode 100644 src/assets/styles/bootstrap-utilities/bootstrap-utilities.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_alert.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_background-variant.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_badge.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_border-radius.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_box-shadow.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_breakpoints.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_buttons.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_caret.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_clearfix.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_deprecate.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_float.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_forms.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_gradients.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_grid-framework.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_grid.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_hover.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_image.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_list-group.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_lists.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_nav-divider.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_pagination.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_reset-text.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_resize.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_screen-reader.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_size.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_table-row.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_text-emphasis.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_text-hide.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_text-truncate.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_transition.scss create mode 100644 src/assets/styles/bootstrap-utilities/mixins/_visibility.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_align.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_background.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_borders.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_clearfix.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_display.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_embed.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_flex.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_float.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_overflow.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_position.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_screenreaders.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_shadows.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_sizing.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_spacing.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_stretched-link.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_text.scss create mode 100644 src/assets/styles/bootstrap-utilities/utilities/_visibility.scss create mode 100644 src/assets/styles/scss/_animations.scss create mode 100644 src/assets/styles/scss/_colors.scss create mode 100644 src/assets/styles/scss/_page-layouts.scss create mode 100644 src/assets/styles/scss/_palette.scss create mode 100644 src/assets/styles/scss/_variables.scss create mode 100644 src/assets/styles/scss/components/_button.scss create mode 100644 src/assets/styles/scss/components/_card.scss create mode 100644 src/assets/styles/scss/components/_components.scss create mode 100644 src/assets/styles/scss/components/_matx-sidebar.scss create mode 100644 src/assets/styles/scss/components/_ngx-table.scss create mode 100644 src/assets/styles/scss/functions/_color.function.scss create mode 100644 src/assets/styles/scss/functions/_functions.scss create mode 100644 src/assets/styles/scss/main/_breadcrumb.scss create mode 100644 src/assets/styles/scss/main/_footer.scss create mode 100644 src/assets/styles/scss/main/_header-side.scss create mode 100644 src/assets/styles/scss/main/_header-top.scss create mode 100644 src/assets/styles/scss/main/_header.scss create mode 100644 src/assets/styles/scss/main/_layout.scss create mode 100644 src/assets/styles/scss/main/_main.scss create mode 100644 src/assets/styles/scss/main/_notifications.scss create mode 100644 src/assets/styles/scss/main/_scaffolding.scss create mode 100644 src/assets/styles/scss/main/_sidebar.scss create mode 100644 src/assets/styles/scss/main/_sidenav.scss create mode 100644 src/assets/styles/scss/main/_topnav.scss create mode 100644 src/assets/styles/scss/main/_typography.scss create mode 100644 src/assets/styles/scss/mixins/_gradients.scss create mode 100644 src/assets/styles/scss/mixins/_mixins.scss create mode 100644 src/assets/styles/scss/themes/_matx-blue.scss create mode 100644 src/assets/styles/scss/themes/_matx-dark-pink.scss create mode 100644 src/assets/styles/scss/themes/_matx-dark-purple.scss create mode 100644 src/assets/styles/scss/themes/_matx-light-purple.scss create mode 100644 src/assets/styles/scss/themes/_matx-navy.scss create mode 100644 src/assets/styles/scss/themes/_themes.scss create mode 100644 src/assets/styles/scss/utilities/_alignment.scss create mode 100644 src/assets/styles/scss/utilities/_avatar.scss create mode 100644 src/assets/styles/scss/utilities/_border.scss create mode 100644 src/assets/styles/scss/utilities/_display.scss create mode 100644 src/assets/styles/scss/utilities/_height-width.scss create mode 100644 src/assets/styles/scss/utilities/_others.scss create mode 100644 src/assets/styles/scss/utilities/_spacing.scss create mode 100644 src/assets/styles/scss/utilities/_utilities.scss create mode 100644 src/assets/styles/scss/views/_views.scss create mode 100644 src/assets/styles/scss/views/sessions/_sessions.scss create mode 100644 src/assets/styles/scss/views/sessions/_signup.scss create mode 100644 src/config.ts create mode 100644 src/environments/environment.prod.ts create mode 100644 src/environments/environment.ts create mode 100644 src/favicon.ico create mode 100644 src/index.html create mode 100644 src/main.ts create mode 100644 src/polyfills.ts create mode 100644 src/styles.scss create mode 100644 src/test.ts create mode 100644 src/tsconfig.app.json create mode 100644 src/tsconfig.spec.json create mode 100644 src/typings.d.ts create mode 100644 src/vendor/Chart.min.js create mode 100644 src/vendor/pace/pace-green.css create mode 100644 src/vendor/pace/pace-theme-min.css create mode 100644 src/vendor/pace/pace.min.js create mode 100644 tsconfig.base.json create mode 100644 tsconfig.json create mode 100644 tslint.json diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1d1f035 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Angular University + +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/README.md b/README.md new file mode 100644 index 0000000..eb5adc8 --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ + +## Important Information +This repository is exclusively meant for presenting samples of code. + +The Files and Codes present in this repository are part of a running project. In order to ensure the security of the project several files have been intentionally removed. The codes are exclusively for viewing purpose and will not execute properly if tried. + +# Installation pre-requisites + +For taking the course we recommend installing Node 12. These are some tutorials to install node in different operating systems: + +- [Install Node and NPM on Windows](https://www.youtube.com/watch?v=8ODS6RM6x7g) +- [Install Node and NPM on Linux](https://www.youtube.com/watch?v=yUdHk-Dk_BY) +- [Install Node and NPM on Mac](https://www.youtube.com/watch?v=Imj8PgG3bZU) + +To easily switch between node versions on your machine, we recommend using a node virtual environment tool such as [nave](https://www.npmjs.com/package/nave) or [nvm-windows](https://github.com/coreybutler/nvm-windows), depending on your operating system. + +For example, here is how you switch to a new node version using nave: + + # note that you don't even need to update your node version before installing nave + npm install -g nave + + nave use 12.3.1 + node -v + v12.3.1 + +# Installing the Angular CLI + +With the following command the angular-cli will be installed globally in your machine: + + npm install -g @angular/cli + + +# How To install this repository + +We can install the master branch using the following commands: + + git clone https://github.com/angular-university/ngrx-course.git + +This repository is made of several separate npm modules, that are installable separately. For example, to run the au-input module, we can do the following: + + cd ngrx-course + npm install + +Its also possible to install the modules as usual using npm: + + npm install + +This should take a couple of minutes. If there are issues, please post the complete error message in the Questions section of the course. + +# To Run the Development Backend Server + +We can start the sample application backend with the following command: + + npm run server + +This is a small Node REST API server. + +# To run the Development UI Server + +To run the frontend part of our code, we will use the Angular CLI: + + npm start + +The application is visible at port 4200: [http://localhost:4200](http://localhost:4200) + + + diff --git a/angular.json b/angular.json new file mode 100644 index 0000000..fddb5c2 --- /dev/null +++ b/angular.json @@ -0,0 +1,143 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "angular-ngrx-course": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "aot": true, + "outputPath": "dist", + "index": "src/index.html", + "main": "src/main.ts", + "tsConfig": "src/tsconfig.app.json", + "polyfills": "src/polyfills.ts", + "assets": [ + "src/assets", + "src/favicon.ico" + ], + "styles": [ + "src/assets/styles/app.scss" + ], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "anyComponentStyle", + "maximumWarning": "6kb" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "angular-ngrx-course:build" + }, + "configurations": { + "production": { + "browserTarget": "angular-ngrx-course:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "angular-ngrx-course:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "karmaConfig": "./karma.conf.js", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "scripts": [], + "styles": [ + "src/styles.scss" + ], + "assets": [ + "src/assets", + "src/favicon.ico" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "angular-ngrx-course-e2e": { + "root": "", + "sourceRoot": "", + "projectType": "application", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "./protractor.conf.js", + "devServerTarget": "angular-ngrx-course:serve" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "e2e/tsconfig.e2e.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + } + }, + "defaultProject": "angular-ngrx-course", + "schematics": { + "@ngrx/schematics:component": { + "prefix": "", + "styleext": "scss" + }, + "@ngrx/schematics:directive": { + "prefix": "" + } + }, + "cli": { + "defaultCollection": "@ngrx/schematics", + "analytics": "78da76fb-38f9-4848-a7fe-1767a6672d4a" + } +} \ No newline at end of file diff --git a/e2e/app.po.ts b/e2e/app.po.ts new file mode 100644 index 0000000..82ea75b --- /dev/null +++ b/e2e/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..8cc9c0d --- /dev/null +++ b/e2e/tsconfig.e2e.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "baseUrl": "./", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..84af9d1 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,33 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client:{ + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ], + fixWebpackSourcePaths: true + }, + angularCli: { + environment: 'dev' + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..c422b68 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,15329 @@ +{ + "name": "sgeeks-starter-v2", + "version": "0.0.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.1000.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1000.0.tgz", + "integrity": "sha512-luzBYe7t994ebq6xIfYJudxOkMBO0bywafk6sQqb+bOaBQAran4orF1R/zEx6f8TJzEoXELjUvxm/ePSqZdpKg==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.0.0", + "rxjs": "6.5.5" + }, + "dependencies": { + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + } + } + }, + "@angular-devkit/build-angular": { + "version": "0.1000.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1000.0.tgz", + "integrity": "sha512-bU3Xq0evtX1xqD0KSY1lSwDQkz82AKZSKFv7fq+OL6+xrALG5DTtZq2SBwpTsy5AQ/Aq027GX2eMTrczWzQ4KA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1000.0", + "@angular-devkit/build-optimizer": "0.1000.0", + "@angular-devkit/build-webpack": "0.1000.0", + "@angular-devkit/core": "10.0.0", + "@babel/core": "7.9.6", + "@babel/generator": "7.9.6", + "@babel/plugin-transform-runtime": "7.9.6", + "@babel/preset-env": "7.9.6", + "@babel/runtime": "7.9.6", + "@babel/template": "7.8.6", + "@jsdevtools/coverage-istanbul-loader": "3.0.3", + "@ngtools/webpack": "10.0.0", + "ajv": "6.12.2", + "autoprefixer": "9.8.0", + "babel-loader": "8.1.0", + "browserslist": "^4.9.1", + "cacache": "15.0.3", + "caniuse-lite": "^1.0.30001032", + "circular-dependency-plugin": "5.2.0", + "copy-webpack-plugin": "6.0.2", + "core-js": "3.6.4", + "css-loader": "3.5.3", + "cssnano": "4.1.10", + "file-loader": "6.0.0", + "find-cache-dir": "3.3.1", + "glob": "7.1.6", + "jest-worker": "26.0.0", + "karma-source-map-support": "1.4.0", + "less-loader": "6.1.0", + "license-webpack-plugin": "2.2.0", + "loader-utils": "2.0.0", + "mini-css-extract-plugin": "0.9.0", + "minimatch": "3.0.4", + "open": "7.0.4", + "parse5": "4.0.0", + "pnp-webpack-plugin": "1.6.4", + "postcss": "7.0.31", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "4.0.1", + "regenerator-runtime": "0.13.5", + "resolve-url-loader": "3.1.1", + "rimraf": "3.0.2", + "rollup": "2.10.9", + "rxjs": "6.5.5", + "sass": "1.26.5", + "sass-loader": "8.0.2", + "semver": "7.3.2", + "source-map": "0.7.3", + "source-map-loader": "1.0.0", + "source-map-support": "0.5.19", + "speed-measure-webpack-plugin": "1.3.3", + "style-loader": "1.2.1", + "stylus": "0.54.7", + "stylus-loader": "3.0.2", + "terser": "4.7.0", + "terser-webpack-plugin": "3.0.1", + "tree-kill": "1.2.2", + "webpack": "4.43.0", + "webpack-dev-middleware": "3.7.2", + "webpack-dev-server": "3.11.0", + "webpack-merge": "4.2.2", + "webpack-sources": "1.4.3", + "webpack-subresource-integrity": "1.4.1", + "worker-plugin": "4.0.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "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" + } + }, + "core-js": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", + "dev": true + }, + "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==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.1000.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1000.0.tgz", + "integrity": "sha512-WrC/PX/ORAoqKP6FsrWsmzfic0mHyLAZ6XgNNr3RY4xxvBe4+K7FGoG+PaIwD4tILvO6QwwJ1wwBbnGIqQLIHA==", + "dev": true, + "requires": { + "loader-utils": "2.0.0", + "source-map": "0.7.3", + "tslib": "2.0.0", + "webpack-sources": "1.4.3" + }, + "dependencies": { + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.1000.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1000.0.tgz", + "integrity": "sha512-5SGcc9YzGK1DQ3/2/gOnVpJIwmOvywE9OB/J7IFR1uRYxQ4fSdOZvHZJ4DvqwfFExGIFeSBnfxIs8nefT+s8Nw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1000.0", + "@angular-devkit/core": "10.0.0", + "rxjs": "6.5.5" + }, + "dependencies": { + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + } + } + }, + "@angular-devkit/core": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.0.0.tgz", + "integrity": "sha512-IvX9IMaCjDkN9vDVnYcgWbSBinlUUb7jdFhDGeTtK6rGSnjX1GoLvWneVI2hoccS07fPbnfMoYXBoZLwVxiIxw==", + "dev": true, + "requires": { + "ajv": "6.12.2", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.5", + "source-map": "0.7.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "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" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + } + } + }, + "@angular-devkit/schematics": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.2.0.tgz", + "integrity": "sha512-TQI5NnE6iM3ChF5gZQ9qb+lZgMWa7aLoF5ksOyT3zrmOuICiQYJhA6SsjV95q7J4M55qYymwBib8KTqU/xuQww==", + "requires": { + "@angular-devkit/core": "10.2.0", + "ora": "5.0.0", + "rxjs": "6.6.2" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.2.0.tgz", + "integrity": "sha512-XAszFhSF3mZw1VjoOsYGbArr5NJLcStjOvcCGjBPl1UBM2AKpuCQXHxI9XJGYKL3B93Vp5G58d8qkHvamT53OA==", + "requires": { + "ajv": "6.12.4", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.2", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "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" + } + }, + "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-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==" + }, + "rxjs": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", + "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/animations": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-10.0.2.tgz", + "integrity": "sha512-3fMR574KnaeAon7ZlwYCB2qkUoZ255Y2KwU6Z/ki37U66QZc8XMqf/d4oUiTZgLsJG4a5Whse0IX8Jz5/HAvQQ==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" + } + } + }, + "@angular/cdk": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-10.0.1.tgz", + "integrity": "sha512-tEgaTDQplptbOf4cHHdVScH0h5QNvkWDhabAWpWaT4/dVXEsp+p2E9Pzkemesi/gNmUIetVjGaicX5VqsijZSQ==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^2.0.0" + } + }, + "@angular/cli": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-10.0.0.tgz", + "integrity": "sha512-I+2cltQCmThgrnHwsG5AX0hQ9z6rK/8ysRWWeiJXHtEtqupW9eNzXX1QfXWxWB3o6oIKgijvnLlp04BUlWCyXA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1000.0", + "@angular-devkit/core": "10.0.0", + "@angular-devkit/schematics": "10.0.0", + "@schematics/angular": "10.0.0", + "@schematics/update": "0.1000.0", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.1.1", + "ini": "1.3.5", + "inquirer": "7.1.0", + "npm-package-arg": "8.0.1", + "npm-pick-manifest": "6.1.0", + "open": "7.0.4", + "pacote": "9.5.12", + "read-package-tree": "5.3.1", + "rimraf": "3.0.2", + "semver": "7.3.2", + "symbol-observable": "1.2.0", + "universal-analytics": "0.4.20", + "uuid": "8.1.0" + }, + "dependencies": { + "@angular-devkit/schematics": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.0.0.tgz", + "integrity": "sha512-FJ/dY18M+cnAT9RkVjVRJ0PMFZci3ok0WoOosW25Fk68jwNSbGCeF8k8NcD6YE60+CfF4/0LxQWgFagr/wdEhw==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.0.0", + "ora": "4.0.4", + "rxjs": "6.5.5" + } + }, + "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==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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 + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "ora": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz", + "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==", + "dev": true, + "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" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "uuid": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.1.0.tgz", + "integrity": "sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg==", + "dev": true + } + } + }, + "@angular/common": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-10.0.2.tgz", + "integrity": "sha512-zpNB2XD6jinXZjfihoO5Q1Yg7urfpZTt/fitdmwFHCcQ/1qZ9T2BVh8+VqVRkh6Pjxmtvu0uPnJ1a/aZ5f9r9A==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" + } + } + }, + "@angular/compiler": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-10.0.2.tgz", + "integrity": "sha512-TNE5ESDlRCVneb/K62HOEgLpxuZZTlw8RcmOy5vt3SngEVc576OE/aYsEA6MCwTlqj16GLSS3jGm9HBJcBKUVw==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" + } + } + }, + "@angular/compiler-cli": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-10.0.2.tgz", + "integrity": "sha512-LGX86k1hOyaw5aPCjFfoLuPhVLKMENOdCBeNBzZB+H2CUGHfv8OWFB1EzjZO1N07VGR7JoMx9ZWSP7ornhuS4Q==", + "dev": true, + "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", + "tslib": "^2.0.0", + "yargs": "15.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "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==", + "dev": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.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==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "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" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz", + "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.0" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-10.0.2.tgz", + "integrity": "sha512-r4M1D2NOdkmmFyvYLHRYSIBKTGNXQarZHDZcm5oEq2eTsRVe2u9MYIeOpHKeVQCQK7XKQVB13IZQP3XpUvljFg==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" + } + } + }, + "@angular/flex-layout": { + "version": "10.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-10.0.0-beta.32.tgz", + "integrity": "sha512-JvuY4dUoy5jyCTIrFiq7n30Znakh1pD3nbg0h0hs2r3t1OiDQb0ZSI1wcumosG/vYHsuJQTuNhbfaIZzA1x8nA==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/forms": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-10.0.2.tgz", + "integrity": "sha512-qnfApb5Q58SFdl8za8i6ijvP0UfVGxxTtIVnf8czVU5Jz5/KYDbPeChVw/aPl3hfXq8jt0Q6Yl99aAm/BNyhpQ==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" + } + } + }, + "@angular/language-service": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-10.0.2.tgz", + "integrity": "sha512-kEMJ3DkprpoGJvEjvH/PZrBKtgCbLtFYtrXHRDy2+92vgCT0Xz6TwzZ2qlwlQSijffOgsV5LwdjI4oxpgVKReQ==", + "dev": true + }, + "@angular/material": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-10.0.1.tgz", + "integrity": "sha512-4xGIupOiPbyYG/tTbVhgjATRZSRf+Xj2FGkX3csSlIOvhrFtN1B9gTlcbOjzWHPpWTFChZALzMXA/841KA9QqA==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/material-moment-adapter": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-10.0.1.tgz", + "integrity": "sha512-cVcn+GZNPxnKtf8wTnjS6pLO3WPHYXZXbabldyGbPOqDa+BrKoZ5+MHohGGkyy5NG3GFwqB9RjfSBK4szGNFTA==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/platform-browser": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-10.0.2.tgz", + "integrity": "sha512-FLS3fYSuWvrDc7PiVCvs4joWZZxDe9+alJi90Sub1oBS/EnxmZpkS0Gr7zQv4MjAvVhNCVoTzL3CaV/SIoZqaw==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" + } + } + }, + "@angular/platform-browser-dynamic": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.2.tgz", + "integrity": "sha512-R1rt1/Ynm0DHgzMBcduCPoDg2y3MrYZVgT+N0DLobr2nCaVD74vGsJBVCRv7/m1sdCxyhPlOvq8Bm5sRauw2fw==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" + } + } + }, + "@angular/router": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-10.0.2.tgz", + "integrity": "sha512-IcA3W+r5T0NC8TM4J9F0VOxG0wr7nJOSef6Qek6utZd6ByLlXxOhBrPIC5Ou+QNZeg9OuI2FBt6coea9jgmNOA==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" + } + } + }, + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.4.tgz", + "integrity": "sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/core": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", + "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.6", + "@babel/parser": "^7.9.6", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "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.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", + "dev": true, + "requires": { + "@babel/types": "^7.9.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "@babel/helper-define-map": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz", + "integrity": "sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.4", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz", + "integrity": "sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A==", + "dev": true, + "requires": { + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz", + "integrity": "sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz", + "integrity": "sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.4.tgz", + "integrity": "sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz", + "integrity": "sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } + } + }, + "@babel/helpers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + } + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/parser": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.4.tgz", + "integrity": "sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz", + "integrity": "sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz", + "integrity": "sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz", + "integrity": "sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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-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-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-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-top-level-await": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz", + "integrity": "sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz", + "integrity": "sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz", + "integrity": "sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz", + "integrity": "sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz", + "integrity": "sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz", + "integrity": "sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz", + "integrity": "sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.6.tgz", + "integrity": "sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.6", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.6", + "@babel/plugin-transform-modules-commonjs": "^7.9.6", + "@babel/plugin-transform-modules-systemjs": "^7.9.6", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.9.5", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.6", + "browserslist": "^4.11.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "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.9.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", + "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.4.tgz", + "integrity": "sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/generator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.4.tgz", + "integrity": "sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@jsdevtools/coverage-istanbul-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.3.tgz", + "integrity": "sha512-TAdNkeGB5Fe4Og+ZkAr1Kvn9by2sfL44IAHFtxlh1BA1XJ5cLpO9iSNki5opWESv3l3vSHsZ9BNKuqFKbEbFaA==", + "dev": true, + "requires": { + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.1", + "loader-utils": "^1.4.0", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.6.4" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@ngrx/data": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/data/-/data-8.0.1.tgz", + "integrity": "sha512-+vXN2czCi8qKNnZvV452TwKYbv5WrC4d5RIR5k5QrkbS8gL6v2hOB9aUo+1jbZ+r4wLxeUtqHzPrBC174PdXJA==" + }, + "@ngrx/effects": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-8.0.1.tgz", + "integrity": "sha512-f15SjzZ670HdHVpu3byOiP5R6MOxh/DMQgP8PynKtmadmkKkM69imGsp+8qDEQNABw5O8oJGAn8aLm76QGPnjQ==" + }, + "@ngrx/entity": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/entity/-/entity-8.0.1.tgz", + "integrity": "sha512-mdsrKHxo/uYP+sIjgIWmVbIKrLpqvcUlUamV+QfMPTxQXN9nmFsvNsemcOHN1fCklaGWzLo0tfoF/NVwdhJb5w==" + }, + "@ngrx/router-store": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-8.0.1.tgz", + "integrity": "sha512-ItgyqjPtjpUmMRKe48pyBMzrntimJwImttxqRa0uMWooPGIJB6zAmbgjn2AtyUqX63IRl8BGT8V3pJ4FLrxIow==" + }, + "@ngrx/schematics": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/schematics/-/schematics-8.0.1.tgz", + "integrity": "sha512-BnHYRHkzAqXKDRQW5WZoSOwxJkHmwsd/bEJ5wRinplVRSUJY0BYgCVe1by1hj37/FAsRH5E6WBtoOgUyn0i/MQ==", + "dev": true + }, + "@ngrx/store": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-8.0.1.tgz", + "integrity": "sha512-B6HY8TCFZ4+bUfJAJatF42+F33Qboo7zKc+gxTi6eEioKvNqWkb22K4De5HV2j/l/blXvMOPMSO1Rf/sGqID0w==" + }, + "@ngrx/store-devtools": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-8.0.1.tgz", + "integrity": "sha512-TxOksSARaQ1hCZM0/qMCun6axbSFuhSEmuW9YLRhuU5m3gvJN4cr5tk960DDVGl8/06YX6Q2CQ7uIgx5qCwbsg==" + }, + "@ngtools/webpack": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-10.0.0.tgz", + "integrity": "sha512-2mnuzkCokn84PrBIiSwUqZImd5uKdsdZcpnuvgABmbxe3bAPxbOgzud/bLxG1/ynLvk/vd/FCNeDcY6HylB8OQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.0.0", + "enhanced-resolve": "4.1.1", + "rxjs": "6.5.5", + "webpack-sources": "1.4.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@npmcli/move-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", + "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "@schematics/angular": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-10.0.0.tgz", + "integrity": "sha512-m7Pxz4guAMbe7NASKCPUNxvUX/LeieDjGsXwIt09tVE4dEi9yqJP5zq8kOnZEiLKKflP7GoB65RNex4dTxsydw==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.0.0", + "@angular-devkit/schematics": "10.0.0" + }, + "dependencies": { + "@angular-devkit/schematics": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.0.0.tgz", + "integrity": "sha512-FJ/dY18M+cnAT9RkVjVRJ0PMFZci3ok0WoOosW25Fk68jwNSbGCeF8k8NcD6YE60+CfF4/0LxQWgFagr/wdEhw==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.0.0", + "ora": "4.0.4", + "rxjs": "6.5.5" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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 + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ora": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz", + "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==", + "dev": true, + "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" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@schematics/update": { + "version": "0.1000.0", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1000.0.tgz", + "integrity": "sha512-snjz7sQCOn4Xi66XQREXZx9K6R/vAnUfdyO5nXekls8+E+MIowlP+gqHM0whi8qJDwCLd9maYmeVsD6XZaGImQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.0.0", + "@angular-devkit/schematics": "10.0.0", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "npm-package-arg": "^8.0.0", + "pacote": "9.5.12", + "rxjs": "6.5.5", + "semver": "7.3.2", + "semver-intersect": "1.4.0" + }, + "dependencies": { + "@angular-devkit/schematics": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.0.0.tgz", + "integrity": "sha512-FJ/dY18M+cnAT9RkVjVRJ0PMFZci3ok0WoOosW25Fk68jwNSbGCeF8k8NcD6YE60+CfF4/0LxQWgFagr/wdEhw==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.0.0", + "ora": "4.0.4", + "rxjs": "6.5.5" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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 + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ora": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz", + "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==", + "dev": true, + "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" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@swimlane/ngx-datatable": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@swimlane/ngx-datatable/-/ngx-datatable-18.0.0.tgz", + "integrity": "sha512-secqjzlLpGJqoXjcoCoTf8ClnVlZAENJcXvuBfseGenOD+evGNXc4UTZhwCPDUBlJ4xnMZHUWK6IVk5sXe+WlQ==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@types/body-parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", + "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/chart.js": { + "version": "2.9.27", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.27.tgz", + "integrity": "sha512-b3ho2RpPLWzLzOXKkFwpvlRDEVWQrCknu2/p90mLY5v2DO8owk0OwWkv4MqAC91kJL52bQGXkVw/De+N/0/1+A==", + "requires": { + "moment": "^2.10.2" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/connect": { + "version": "3.4.32", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", + "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.1.tgz", + "integrity": "sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.6.tgz", + "integrity": "sha512-8wr3CA/EMybyb6/V8qvTRKiNkPmgUA26uA9XWD6hlA0yFDuqi4r2L0C2B0U2HAYltJamoYJszlkaWM31vrKsHg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "2.5.54", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.54.tgz", + "integrity": "sha512-B9YofFbUljs19g5gBKUYeLIulsh31U5AK70F41BImQRHEZQGm4GcN922UvnYwkduMqbC/NH+9fruWa/zrqvHIg==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.6.tgz", + "integrity": "sha512-2ZOKrxb8bKRmP/po5ObYnRDgFE4i+lQiEB27bAMmtMWLgJSqlIDqlLx6S0IRorpOmOPRQ6O80NujTmQAtBkeNw==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "dev": true + }, + "@types/mime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", + "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "12.12.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.27.tgz", + "integrity": "sha512-odQFl/+B9idbdS0e8IxDl2ia/LP8KZLXhV3BUeI98TrZp0uoIzQPhGd+5EtzHmT0SMOIaPd7jfz6pOHLWTtl7A==", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz", + "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@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==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "adjust-sourcemap-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", + "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "dev": true, + "requires": { + "assert": "1.4.1", + "camelcase": "5.0.0", + "loader-utils": "1.2.3", + "object-path": "0.11.4", + "regex-parser": "2.2.10" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + } + } + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "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==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.0.tgz", + "integrity": "sha512-eyoaac3btgU8eJlvh01En8OCKzRqlLe2G5jDsCr3RiE2uLGMEEB1aaGwVVpwR8M95956tGH6R+9edC++OvzaVw==", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "app-root-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", + "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "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-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", + "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001061", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.30", + "postcss-value-parser": "^4.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "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": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "dev": true + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "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 + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "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==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.2.tgz", + "integrity": "sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001088", + "electron-to-chromium": "^1.3.483", + "escalade": "^3.0.1", + "node-releases": "^1.1.58" + } + }, + "browserstack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.0.tgz", + "integrity": "sha512-HJDJ0TSlmkwnt9RZ+v5gFpa1XZTBYTj0ywvLwJ3241J7vMw2jAsGNVhKHtmCOyg+VxeLZyaibO9UL71AsUeDIw==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacache": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.3.tgz", + "integrity": "sha512-bc3jKYjqv7k4pWh7I/ixIjfcjPul4V4jme/WbjvwGS5LzoPL/GzXr4C5EgPNLO/QEZl9Oi61iGitYEdwcrwLCQ==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "move-file": "^2.0.0", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", + "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "tar": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz", + "integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.0", + "mkdirp": "^1.0.3", + "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==", + "dev": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "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-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001091", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001091.tgz", + "integrity": "sha512-ECd8gfBBpv0GKsEYY5052+8PBjExiugDoi3dfkJcxujh2mf7kiuDvb1o27GXlOOGopKiIPYEX8XDPYj7eo3E9w==", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": 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" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + } + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", + "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "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.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==" + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "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" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "codelyzer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.1.tgz", + "integrity": "sha512-awBZXFcJUyC5HMYXiHzjr3D24tww2l1D1OqtfA9vUhEtYr32a65A+Gblm/OvsO+HuKLYzn8EDMw1inSM3VbxWA==", + "dev": true, + "requires": { + "app-root-path": "^2.2.1", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "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==", + "dev": true, + "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "dev": true, + "requires": { + "arity-n": "^1.0.4" + } + }, + "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" + }, + "dependencies": { + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + } + } + }, + "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": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "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" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "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==" + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "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" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.2.tgz", + "integrity": "sha512-9Gm8X0c6eXlKnmltMPFCBeGOKjtcRIyTt4VaO3k1TkNgVTe5Ov2lYsYVuyLp0kp8DItO3apewflM+1GYgh6V2Q==", + "dev": true, + "requires": { + "cacache": "^15.0.4", + "fast-glob": "^3.2.2", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.7.0", + "serialize-javascript": "^3.1.0", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "cacache": { + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.4.tgz", + "integrity": "sha512-YlnKQqTbD/6iyoJvEY3KJftjrdBYroCbxxYXzhOzsFLWlp6KX4BOlEf4mTx0cMUfVaTS3ENL2QtDWeRYoGLkkw==", + "dev": true, + "requires": { + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.0.tgz", + "integrity": "sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "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" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "tar": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.2.tgz", + "integrity": "sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.0", + "mkdirp": "^1.0.3", + "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==", + "dev": true + } + } + }, + "core-js": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.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==", + "dev": true + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.3.tgz", + "integrity": "sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.27", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.3", + "schema-utils": "^2.6.6", + "semver": "^6.3.0" + }, + "dependencies": { + "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 + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "requires": { + "css": "^2.0.0" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-what": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", + "dev": true + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "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 + } + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "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==", + "dev": true, + "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" + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "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": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "electron-to-chromium": { + "version": "1.3.483", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz", + "integrity": "sha512-+05RF8S9rk8S0G8eBCqBRBaRq7+UN3lDs2DAvnG8SBSgQO3hjy0+qt4CmRk5eiuGbTcaicgXfPmBi31a+BD3lg==", + "dev": true + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", + "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "0.3.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "^7.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "engine.io-client": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.3.tgz", + "integrity": "sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw==", + "dev": true, + "requires": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", + "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": 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.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", + "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escalade": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.1.tgz", + "integrity": "sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "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 + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "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" + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "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" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "dev": true, + "requires": { + "debug": "^3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.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==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + } + } + }, + "fs-minipass": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz", + "integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "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": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "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==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "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": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "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==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "highlight.js": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.3.1.tgz", + "integrity": "sha512-jeW8rdPdhshYKObedYg5XGbpVgb1/DT4AHvDFXhkU7UnGSIjy9kkJ7zHG7qplhFHMitTSzh5/iClKQk3Kb2RFQ==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", + "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "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 + }, + "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==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "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": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "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==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "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==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dev": true, + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "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-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "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-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "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==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "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 + }, + "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" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "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": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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 + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "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.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz", + "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz", + "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==", + "dev": true, + "requires": { + "colors": "1.4.0" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "jest-worker": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.0.0.tgz", + "integrity": "sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.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==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "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": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "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==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "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==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "karma": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.9.tgz", + "integrity": "sha512-dUA5z7Lo7G4FRSe1ZAXqOINEEWxmCjDBbfRBmU/wYlSMwxUQJP/tEEP90yJt3Uqo03s9rCgVnxtlfq+uDhxSPg==", + "dev": true, + "requires": { + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.0.0", + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "flatted": "^2.0.2", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.15", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^2.3.0", + "source-map": "^0.6.1", + "tmp": "0.2.1", + "ua-parser-js": "0.7.21", + "yargs": "^15.3.1" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "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" + } + }, + "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==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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 + }, + "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-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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-1.0.1.tgz", + "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "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": "3.3.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.3.1.tgz", + "integrity": "sha512-Nxh7eX9mOQMyK0VSsMxdod+bcqrR/ikrmEiWj5M6fwuQ7oI+YEF1FckaDsWfs6TIpULm9f0fTKMjF7XcrvWyqQ==", + "dev": true, + "requires": { + "jasmine-core": "^3.5.0" + } + }, + "karma-jasmine-html-reporter": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", + "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", + "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" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "less": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/less/-/less-3.11.3.tgz", + "integrity": "sha512-VkZiTDdtNEzXA3LgjQiC3D7/ejleBPFVvq+aRI9mIj+Zhmif5TvFPM244bT4rzkvOCvJ9q4zAztok1M7Nygagw==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0", + "tslib": "^1.10.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==", + "dev": true, + "optional": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + }, + "less-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-6.1.0.tgz", + "integrity": "sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "less": "^3.11.1", + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "license-webpack-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.2.0.tgz", + "integrity": "sha512-XPsdL/0brSHf+7dXIlRqotnCQ58RX2au6otkOg4U3dm8uH+Ka/fW4iukEs95uXm+qKe/SBs+s1Ll/aQddKG+tg==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash-es": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", + "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "requires": { + "chalk": "^4.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.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "dev": true, + "requires": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "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-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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "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==", + "dev": true, + "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" + }, + "dependencies": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "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" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + } + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "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": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.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 + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "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==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "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==", + "dev": true + } + } + }, + "minipass-pipeline": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz", + "integrity": "sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "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==", + "dev": true + } + } + }, + "minizlib": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "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" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "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" + } + }, + "move-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/move-file/-/move-file-2.0.0.tgz", + "integrity": "sha512-cdkdhNCgbP5dvS4tlGxZbD+nloio9GIimP57EjqFhwLcMjnU+XJKAZzlmg/TN/AK1LuNAdTSvm3CPPP4Xkv0iQ==", + "dev": true, + "requires": { + "path-exists": "^4.0.0" + }, + "dependencies": { + "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 + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "ng2-charts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-2.4.2.tgz", + "integrity": "sha512-mY3C2uKCaApHCQizS2YxEOqQ7sSZZLxdV6N1uM9u/VvUgVtYvlPtdcXbKpN52ak93ZE22I73DiLWVDnDNG4/AQ==", + "requires": { + "@types/chart.js": "^2.9.24", + "lodash-es": "^4.17.15", + "tslib": "^2.0.0" + } + }, + "ng2-file-upload": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ng2-file-upload/-/ng2-file-upload-1.4.0.tgz", + "integrity": "sha512-3J/KPU/tyh/ad6TFeUbrxX+SihUj0iOEt2Zsg4EX7mB3GFiQscXOfcUOxCkBtPWWWaqt3azrYbVGzsYa3/7NzQ==", + "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==" + } + } + }, + "ngx-custom-validators": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/ngx-custom-validators/-/ngx-custom-validators-9.1.0.tgz", + "integrity": "sha512-vvTcpPgqZDAVLP7UkIpeMsZE4BkNPVOYryuOoE3xnOT6fB6HuOHmSgTCCb4sIyUKtDwTGQ0JB9OqPRzUUGE9VQ==", + "requires": { + "@angular/common": "~9.1.0", + "@angular/compiler": "~9.1.0", + "@angular/core": "~9.1.0", + "@angular/forms": "~9.1.0", + "@angular/platform-browser": "~9.1.0", + "@angular/platform-browser-dynamic": "~9.1.0", + "@angular/router": "~9.1.0", + "moment": "^2.24.0", + "rxjs": "~6.5.4", + "tslib": "^1.10.0", + "zone.js": "~0.10.2" + }, + "dependencies": { + "@angular/common": { + "version": "9.1.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.1.12.tgz", + "integrity": "sha512-XSIqkbM6VV1yixF9zuzeE5eqN1VsiXS517K2VU0XgCRSAzhVhLOeKsdYjeLf7PdSu/HgW/Tr81H+isi9A9I0YA==" + }, + "@angular/compiler": { + "version": "9.1.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.1.12.tgz", + "integrity": "sha512-suefk0OFkaJpUUKnV+phbL4T8fmVGHvzkereY5eqybQlumOez8NPL1PJcygAylh/E6OIAYm8SWookYwM6ZY9dg==" + }, + "@angular/core": { + "version": "9.1.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.1.12.tgz", + "integrity": "sha512-WVA/eh3fzjx0apOzkKot4YRRUsGkHj50zFQWrAOMgivGaj1YVrvhf+m3hpglj5fn/BkLiFDl8RT0wAE8z9X+gQ==" + }, + "@angular/forms": { + "version": "9.1.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.1.12.tgz", + "integrity": "sha512-LhjnZlC4WEsEsAJfOZLte+Lks3WBAFVeRv2lzoQNFVr/IMzBNDVfjEaaSqKF1cei3cjY39Df2nYDMJM7HfqbJA==" + }, + "@angular/platform-browser": { + "version": "9.1.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.1.12.tgz", + "integrity": "sha512-rPa/hJcLfdId6bYB0b6pFUo3QIgjZlvUlmtKMGdrLNLYR8XQxPa2Y/UdN/5YeZ12htGw6GXrX9U8U7nTbUSpkw==" + }, + "@angular/platform-browser-dynamic": { + "version": "9.1.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.1.12.tgz", + "integrity": "sha512-NmwUZaQeMnA6f+vP9Fp9P+qjL72H8dKlxLS76ujlKHVf75pP5oahWS8wfl7KXel1tKW3FQWMMffmKf5/NHRiSw==" + }, + "@angular/router": { + "version": "9.1.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.1.12.tgz", + "integrity": "sha512-+qCaXa9y0nsRhzjAYBqmGoQ2YkrdXgftZwuFDf6t4qEi30EXa0oS97KrlFq0M5GKdLIDGrbUm9PcdHSTOI+ZhA==" + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "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==" + } + } + }, + "ngx-perfect-scrollbar": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-10.0.1.tgz", + "integrity": "sha512-01Li+Cx1OwNQ3WPHeavImS+p1ifK2UEdKly6JkdVw/s7rMxbjXkraOcj7FH+I141lpvxCmNlsWS5iiIA5GAnDg==", + "requires": { + "perfect-scrollbar": "1.5.0", + "resize-observer-polyfill": "^1.5.0", + "tslib": "^2.0.0" + } + }, + "ngx-quill": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/ngx-quill/-/ngx-quill-12.0.1.tgz", + "integrity": "sha512-XSyj1ABpfdoIsRguV4vCemOUU0VnDeISBtF6O6XU11AUYSSP1Eh58x0ct2SEJuNIW/qruEGexQvLAYHkuA6+Xw==", + "requires": { + "tslib": "^2.0.0" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "node-releases": { + "version": "1.1.58", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", + "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", + "dev": true + }, + "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==", + "dev": true, + "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.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz", + "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.0.0", + "semver": "^7.0.0" + } + }, + "npm-registry-fetch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.5.tgz", + "integrity": "sha512-yQ0/U4fYpCCqmueB2g8sc+89ckQ3eXpmU4+Yi2j5o/r0WkKvE2+Y0tK3DEILAtn2UaQTkjTHxIXe2/CSdit+/Q==", + "dev": true, + "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.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "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==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "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.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "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": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.4.tgz", + "integrity": "sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + } + } + }, + "ora": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.0.0.tgz", + "integrity": "sha512-s26qdWqke2kjN/wC4dy+IQPBIMWBJlSU/0JZhk30ZDBLelW25rv66yutUWARMigpGPzcXHb+Nac5pNhN/WsARw==", + "requires": { + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.4.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "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.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "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==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.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==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "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": "9.5.12", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", + "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", + "dev": true, + "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": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "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": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + } + } + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "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==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "optional": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "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 + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "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": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "portfinder": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.31.tgz", + "integrity": "sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.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==", + "dev": true + } + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "dependencies": { + "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 + } + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "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": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + } + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "protractor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" + }, + "dependencies": { + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "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.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.7", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz", + "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.1.32", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", + "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "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.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "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==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "raw-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz", + "integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-package-json": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.1.tgz", + "integrity": "sha512-dAiqGtVc/q5doFz6096CcnXhpYk0ZN8dEKVkGLU0CsASt8SrgF6SF7OTKAYubfvFhWaqofl+Y8HK19GR8jwW+A==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "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" + } + }, + "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==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "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==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regex-parser": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", + "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "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": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "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.0", + "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.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "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.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resolve-url-loader": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", + "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "2.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.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 + } + } + }, + "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" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "2.10.9", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.10.9.tgz", + "integrity": "sha512-dY/EbjiWC17ZCUSyk14hkxATAMAShkMsD43XmZGWjLrgFj15M3Dw2kEkA9ns64BiLFm9PKN6vTQw8neHwK74eg==", + "dev": true, + "requires": { + "fsevents": "~2.1.2" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "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==" + } + } + }, + "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==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "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.26.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.5.tgz", + "integrity": "sha512-FG2swzaZUiX53YzZSjSakzvGtlds0lcbF+URuU9mxOv7WBh7NhXEVDa4kPKN4hN6fC2TkOTOKqiqp6d53N9X5Q==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "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" + } + }, + "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==", + "dev": true + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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==", + "dev": true, + "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==", + "dev": true + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "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": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "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": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "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.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "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": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "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==", + "dev": true + } + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", + "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", + "dev": true, + "requires": { + "debug": "~4.1.0", + "engine.io": "~3.4.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.3.0", + "socket.io-parser": "~3.4.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", + "dev": true + }, + "socket.io-client": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", + "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "engine.io-client": "~3.4.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "socket.io-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + } + } + }, + "socket.io-parser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", + "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + }, + "source-map-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.0.0.tgz", + "integrity": "sha512-ZayyQCSCrQazN50aCvuS84lJT4xc1ZAcykH5blHaBdVveSwjiFK8UGMPvao0ho54DTb0Jf7m57uRRG/YYUZ2Fg==", + "dev": true, + "requires": { + "data-urls": "^2.0.0", + "iconv-lite": "^0.5.1", + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6", + "source-map": "^0.6.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "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 + } + } + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "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==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "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" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz", + "integrity": "sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "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": "8.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + }, + "dependencies": { + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "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==", + "dev": true + } + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "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==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.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==", + "dev": true + }, + "streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "dev": true, + "requires": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-loader": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", + "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "stylus": { + "version": "0.54.7", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz", + "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==", + "dev": true, + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.3", + "mkdirp": "~0.5.x", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.0.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.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==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", + "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.0.1.tgz", + "integrity": "sha512-eFDtq8qPUEa9hXcUzTwKXTnugIVtlqc1Z/ZVhG8LmRT3lgRY13+pQTnFLY2N7ATB6TKCHuW/IGjoAnZz9wOIqw==", + "dev": true, + "requires": { + "cacache": "^15.0.3", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.0.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^3.0.0", + "source-map": "^0.6.1", + "terser": "^4.6.13", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "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" + } + }, + "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 + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "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 + }, + "ts-node": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.2.2.tgz", + "integrity": "sha1-u9KOOK9Kqj6WB2xGbhsiAZfBo84=", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "chalk": "^2.0.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.0", + "tsconfig": "^6.0.0", + "v8flags": "^3.0.0", + "yn": "^2.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, + "tsconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz", + "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" + }, + "tslint": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.2.tgz", + "integrity": "sha512-UyNrLdK3E0fQG/xWNqAFAC5ugtFyPO4JJR1KyyfQAyzR8W0fTRrC91A8Wej4BntFzcvETdCSDa/4PnNYJQLYiA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.10.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", + "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "v8flags": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", + "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "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": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", + "dev": true, + "requires": { + "chokidar": "^3.4.0", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "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==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.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==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "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==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + } + } + }, + "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": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + }, + "webpack": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.1", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "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" + } + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "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" + } + }, + "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==", + "dev": true + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.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 + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^3.1.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.20", + "sockjs-client": "1.4.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "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==", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz", + "integrity": "sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw==", + "dev": true, + "requires": { + "webpack-sources": "^1.3.0" + } + }, + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true, + "requires": { + "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==", + "dev": true + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.1.0.tgz", + "integrity": "sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^5.0.0" + } + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "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" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.3.tgz", + "integrity": "sha512-7hFDYWiKcE3yHZvemsoM9lZis/PzurHAEX1ej8PLCu818Rt6QqUAiDdxHPCKZctzmhqzPpcFSgvMCiPbtooqAg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "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 + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz", + "integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==", + "dev": true + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..aa75251 --- /dev/null +++ b/package.json @@ -0,0 +1,74 @@ +{ + "name": "sgeeks-starter-v2", + "version": "0.0.2", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve --proxy-config ./proxy.json", + "server": "ts-node -P ./server/server.tsconfig.json ./server/server.ts", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular-devkit/schematics": "^10.2.0", + "@angular/animations": "^10.0.2", + "@angular/cdk": "^10.0.1", + "@angular/common": "^10.0.2", + "@angular/compiler": "^10.0.2", + "@angular/core": "^10.0.2", + "@angular/flex-layout": "^10.0.0-beta.32", + "@angular/forms": "^10.0.2", + "@angular/material": "^10.0.1", + "@angular/material-moment-adapter": "^10.0.1", + "@angular/platform-browser": "^10.0.2", + "@angular/platform-browser-dynamic": "^10.0.2", + "@angular/router": "^10.0.2", + "@ngrx/data": "^8.0.1", + "@ngrx/effects": "^8.0.1", + "@ngrx/entity": "^8.0.1", + "@ngrx/router-store": "^8.0.1", + "@ngrx/store": "^8.0.1", + "@ngrx/store-devtools": "^8.0.1", + "@swimlane/ngx-datatable": "^18.0.0", + "body-parser": "^1.18.2", + "core-js": "^2.4.1", + "express": "^4.16.2", + "highlight.js": "^10.3.1", + "moment": "^2.22.2", + "ng2-file-upload": "^1.4.0", + "ngx-custom-validators": "^9.1.0", + "ngx-perfect-scrollbar": "^10.0.1", + "perfect-scrollbar": "^1.5.0", + "rxjs": "^6.6.3", + "tinycolor2": "^1.4.2", + "tslib": "^2.0.0", + "zone.js": "~0.10.3" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.1000.0", + "@angular/cli": "^10.0.0", + "@angular/compiler-cli": "^10.0.2", + "@angular/language-service": "^10.0.2", + "@ngrx/schematics": "^8.0.1", + "@types/express": "^4.0.39", + "@types/jasmine": "~2.5.53", + "@types/jasminewd2": "~2.0.2", + "@types/node": "^12.11.1", + "codelyzer": "^5.1.2", + "jasmine-core": "~3.5.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "~5.0.0", + "karma-chrome-launcher": "~3.1.0", + "karma-cli": "~1.0.1", + "karma-coverage-istanbul-reporter": "~3.0.2", + "karma-jasmine": "~3.3.0", + "karma-jasmine-html-reporter": "^1.5.0", + "protractor": "~7.0.0", + "ts-node": "~3.2.0", + "tslint": "~6.1.0", + "typescript": "~3.9.5" + } +} diff --git a/protractor.conf.js b/protractor.conf.js new file mode 100644 index 0000000..7ee3b5e --- /dev/null +++ b/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: [ + './e2e/**/*.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: 'e2e/tsconfig.e2e.json' + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; diff --git a/proxy.json b/proxy.json new file mode 100644 index 0000000..33a4f78 --- /dev/null +++ b/proxy.json @@ -0,0 +1,6 @@ +{ + "/api": { + "target": "http://localhost:9000", + "secure": false + } +} \ No newline at end of file diff --git a/server/auth.route.ts b/server/auth.route.ts new file mode 100644 index 0000000..82d8ade --- /dev/null +++ b/server/auth.route.ts @@ -0,0 +1,26 @@ + + +import {Request, Response} from 'express'; +import {authenticate} from "./db-data"; + + + + +export function loginUser(req: Request, res: Response) { + + console.log("User login attempt ..."); + + const {email, password} = req.body; + + const user = authenticate(email, password); + + if (user) { + res.status(200).json({id:user.id, email: user.email}); + } + else { + res.sendStatus(403); + } + +} + + diff --git a/server/create-course.route.ts b/server/create-course.route.ts new file mode 100644 index 0000000..3f73565 --- /dev/null +++ b/server/create-course.route.ts @@ -0,0 +1,29 @@ +import {Request, Response} from 'express'; +import {COURSES} from './db-data'; + +export var coursesKeyCounter = 100; + +export function createCourse(req: Request, res: Response) { + + console.log("Creating new course ..."); + + const changes = req.body; + + const newCourse = { + id: coursesKeyCounter, + seqNo: coursesKeyCounter, + ...changes + }; + + COURSES[newCourse.id] = newCourse; + + coursesKeyCounter += 1; + + setTimeout(() => { + + res.status(200).json(newCourse); + + }, 2000); + +} + diff --git a/server/db-data.ts b/server/db-data.ts new file mode 100644 index 0000000..57656f7 --- /dev/null +++ b/server/db-data.ts @@ -0,0 +1,630 @@ +export const USERS = { + 1: { + id: 1, + email: 'test@angular-university.io', + password: 'test' + } + +}; + + +export const COURSES: any = { + + 4: { + id: 4, + description: 'NgRx (with NgRx Data) - The Complete Guide', + longDescription: 'Learn the modern Ngrx Ecosystem, including NgRx Data, Store, Effects, Router Store, Ngrx Entity, and Dev Tools.', + iconUrl: 'https://angular-university.s3-us-west-1.amazonaws.com/course-images/ngrx-v2.png', + category: 'BEGINNER', + lessonsCount: 10, + seqNo: 0, + url: 'ngrx-course' + }, + + 2: { + id: 2, + description: 'Angular Core Deep Dive', + longDescription: 'A detailed walk-through of the most important part of Angular - the Core and Common modules', + iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/angular-core-in-depth-small.png', + lessonsCount: 10, + category: 'BEGINNER', + seqNo: 1, + url: 'angular-core-course' + }, + + 3: { + id: 3, + description: 'RxJs In Practice Course', + longDescription: 'Understand the RxJs Observable pattern, learn the RxJs Operators via practical examples', + iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/rxjs-in-practice-course.png', + category: 'BEGINNER', + lessonsCount: 10, + seqNo: 2, + url: 'rxjs-course' + }, + + 1: { + id: 1, + description: 'Serverless Angular with Firebase Course', + longDescription: 'Serveless Angular with Firestore, Firebase Storage & Hosting, Firebase Cloud Functions & AngularFire', + iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/serverless-angular-small.png', + lessonsCount: 10, + category: 'BEGINNER', + seqNo: 4, + url: 'serverless-angular' + }, + + /* + + + 5: { + id: 5, + description: 'Angular for Beginners', + longDescription: "Establish a solid layer of fundamentals, learn what's under the hood of Angular", + iconUrl: 'https://angular-academy.s3.amazonaws.com/thumbnails/angular2-for-beginners-small-v2.png', + category: 'BEGINNER', + lessonsCount: 10, + seqNo: 5, + url: 'angular-for-beginners' + }, + +*/ + + 12: { + id: 12, + description: 'Angular Testing Course', + longDescription: 'In-depth guide to Unit Testing and E2E Testing of Angular Applications', + iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/angular-testing-small.png', + category: 'BEGINNER', + seqNo: 6, + url: 'angular-testing-course', + lessonsCount: 10, + }, + + 6: { + id: 6, + description: 'Angular Security Course - Web Security Fundamentals', + longDescription: 'Learn Web Security Fundamentals and apply them to defend an Angular / Node Application from multiple types of attacks.', + iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/security-cover-small-v2.png', + category: 'ADVANCED', + lessonsCount: 11, + seqNo: 7, + url: 'angular-security-course' + }, + + 7: { + id: 7, + description: 'Angular PWA - Progressive Web Apps Course', + longDescription: 'Learn Angular Progressive Web Applications, build the future of the Web Today.', + iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/angular-pwa-course.png', + category: 'ADVANCED', + lessonsCount: 8, + seqNo: 8, + url: 'angular-pwa-course' + }, + + 8: { + id: 8, + description: 'Angular Advanced Library Laboratory: Build Your Own Library', + longDescription: 'Learn Advanced Angular functionality typically used in Library Development. Advanced Components, Directives, Testing, Npm', + iconUrl: 'https://angular-academy.s3.amazonaws.com/thumbnails/advanced_angular-small-v3.png', + category: 'ADVANCED', + seqNo: 9, + url: 'angular-advanced-course' + }, + + 9: { + id: 9, + description: 'The Complete Typescript Course', + longDescription: 'Complete Guide to Typescript From Scratch: Learn the language in-depth and use it to build a Node REST API.', + iconUrl: 'https://angular-academy.s3.amazonaws.com/thumbnails/typescript-2-small.png', + category: 'BEGINNER', + seqNo: 10, + url: 'typescript-course' + }, + + 10: { + id: 10, + description: 'Rxjs and Reactive Patterns Angular Architecture Course', + longDescription: 'Learn the core RxJs Observable Pattern as well and many other Design Patterns for building Reactive Angular Applications.', + iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-academy/blog/images/rxjs-reactive-patterns-small.png', + category: 'BEGINNER', + seqNo: 11, + url: 'rxjs-patterns-course' + }, + + 11: { + id: 11, + description: 'Angular Material Course', + longDescription: 'Build Applications with the official Angular Widget Library', + iconUrl: 'https://s3-us-west-1.amazonaws.com/angular-university/course-images/material_design.png', + category: 'BEGINNER', + seqNo: 12, + url: 'angular-material-course' + } + +}; + + +export const LESSONS = { + + 1: { + id: 1, + 'description': 'Angular Tutorial For Beginners - Build Your First App - Hello World Step By Step', + 'duration': '4:17', + 'seqNo': 1, + courseId: 5 + }, + 2: { + id: 2, + 'description': 'Building Your First Component - Component Composition', + 'duration': '2:07', + 'seqNo': 2, + courseId: 5 + }, + 3: { + id: 3, + 'description': 'Component @Input - How To Pass Input Data To an Component', + 'duration': '2:33', + 'seqNo': 3, + courseId: 5 + }, + 4: { + id: 4, + 'description': ' Component Events - Using @Output to create custom events', + 'duration': '4:44', + 'seqNo': 4, + courseId: 5 + }, + 5: { + id: 5, + 'description': ' Component Templates - Inline Vs External', + 'duration': '2:55', + 'seqNo': 5, + courseId: 5 + }, + 6: { + id: 6, + 'description': 'Styling Components - Learn About Component Style Isolation', + 'duration': '3:27', + 'seqNo': 6, + courseId: 5 + }, + 7: { + id: 7, + 'description': ' Component Interaction - Extended Components Example', + 'duration': '9:22', + 'seqNo': 7, + courseId: 5 + }, + 8: { + id: 8, + 'description': ' Components Tutorial For Beginners - Components Exercise !', + 'duration': '1:26', + 'seqNo': 8, + courseId: 5 + }, + 9: { + id: 9, + 'description': ' Components Tutorial For Beginners - Components Exercise Solution Inside', + 'duration': '2:08', + 'seqNo': 9, + courseId: 5 + }, + 10: { + id: 10, + 'description': ' Directives - Inputs, Output Event Emitters and How To Export Template References', + 'duration': '4:01', + 'seqNo': 10, + courseId: 5 + }, + + + // Security Course + 11: { + id: 11, + 'description': 'Course Helicopter View', + 'duration': '08:19', + 'seqNo': 1, + courseId: 6 + }, + + 12: { + id: 12, + 'description': 'Installing Git, Node, NPM and Choosing an IDE', + 'duration': '04:17', + 'seqNo': 2, + courseId: 6 + }, + + 13: { + id: 13, + 'description': 'Installing The Lessons Code - Learn Why Its Essential To Use NPM 5', + 'duration': '06:05', + 'seqNo': 3, + courseId: 6 + }, + + 14: { + id: 14, + 'description': 'How To Run Node In TypeScript With Hot Reloading', + 'duration': '03:57', + 'seqNo': 4, + courseId: 6 + }, + + 15: { + id: 15, + 'description': 'Guided Tour Of The Sample Application', + 'duration': '06:00', + 'seqNo': 5, + courseId: 6 + }, + 16: { + id: 16, + 'description': 'Client Side Authentication Service - API Design', + 'duration': '04:53', + 'seqNo': 6, + courseId: 6 + }, + 17: { + id: 17, + 'description': 'Client Authentication Service - Design and Implementation', + 'duration': '09:14', + 'seqNo': 7, + courseId: 6 + }, + 18: { + id: 18, + 'description': 'The New Angular HTTP Client - Doing a POST Call To The Server', + 'duration': '06:08', + 'seqNo': 8, + courseId: 6 + }, + 19: { + id: 19, + 'description': 'User Sign Up Server-Side Implementation in Express', + 'duration': '08:50', + 'seqNo': 9, + courseId: 6 + }, + 20: { + id: 20, + 'description': 'Introduction To Cryptographic Hashes - A Running Demo', + 'duration': '05:46', + 'seqNo': 10, + courseId: 6 + }, + 21: { + id: 21, + 'description': 'Some Interesting Properties Of Hashing Functions - Validating Passwords', + 'duration': '06:31', + 'seqNo': 11, + courseId: 6 + }, + + + // PWA course + + 22: { + id: 22, + 'description': 'Course Kick-Off - Install Node, NPM, IDE And Service Workers Section Code', + 'duration': '07:19', + 'seqNo': 1, + courseId: 7 + }, + 23: { + id: 23, + 'description': 'Service Workers In a Nutshell - Service Worker Registration', + 'duration': '6:59', + 'seqNo': 2, + courseId: 7 + }, + 24: { + id: 24, + 'description': 'Service Workers Hello World - Lifecycle Part 1 and PWA Chrome Dev Tools', + 'duration': '7:28', + 'seqNo': 3, + courseId: 7 + }, + 25: { + id: 25, + 'description': 'Service Workers and Application Versioning - Install & Activate Lifecycle Phases', + 'duration': '10:17', + 'seqNo': 4, + courseId: 7 + }, + + 26: { + id: 26, + 'description': 'Downloading The Offline Page - The Service Worker Installation Phase', + 'duration': '09:50', + 'seqNo': 5, + courseId: 7 + }, + 27: { + id: 27, + 'description': 'Introduction to the Cache Storage PWA API', + 'duration': '04:44', + 'seqNo': 6, + courseId: 7 + }, + 28: { + id: 28, + 'description': 'View Service Workers HTTP Interception Features In Action', + 'duration': '06:07', + 'seqNo': 7, + courseId: 7 + }, + 29: { + id: 29, + 'description': 'Service Workers Error Handling - Serving The Offline Page', + 'duration': '5:38', + 'seqNo': 8, + courseId: 7 + }, + + // Serverless Angular with Firebase Course + + 30: { + id: 30, + description: 'Development Environment Setup', + 'duration': '5:38', + 'seqNo': 1, + courseId: 1 + }, + + 31: { + id: 31, + description: 'Introduction to the Firebase Ecosystem', + 'duration': '5:12', + 'seqNo': 2, + courseId: 1 + }, + + 32: { + id: 32, + description: 'Importing Data into Firestore', + 'duration': '4:07', + 'seqNo': 3, + courseId: 1 + }, + + 33: { + id: 33, + description: 'Firestore Documents in Detail', + 'duration': '7:32', + 'seqNo': 4, + courseId: 1 + }, + + 34: { + id: 34, + description: 'Firestore Collections in Detail', + 'duration': '6:28', + 'seqNo': 5, + courseId: 1 + }, + + 35: { + id: 35, + description: 'Firestore Unique Identifiers', + 'duration': '4:38', + 'seqNo': 6, + courseId: 1 + }, + + 36: { + id: 36, + description: 'Querying Firestore Collections', + 'duration': '7:54', + 'seqNo': 7, + courseId: 1 + }, + + 37: { + id: 37, + description: 'Firebase Security Rules In Detail', + 'duration': '5:31', + 'seqNo': 8, + courseId: 1 + }, + + 38: { + id: 38, + description: 'Firebase Cloud Functions In Detail', + 'duration': '8:19', + 'seqNo': 9, + courseId: 1 + }, + + 39: { + id: 39, + description: 'Firebase Storage In Detail', + 'duration': '7:05', + 'seqNo': 10, + courseId: 1 + }, + + + // Angular Testing Course + + 40: { + id: 40, + description: 'Angular Testing Course - Helicopter View', + 'duration': '5:38', + 'seqNo': 1, + courseId: 12 + }, + + 41: { + id: 41, + description: 'Setting Up the Development Environment', + 'duration': '5:12', + 'seqNo': 2, + courseId: 12 + }, + + 42: { + id: 42, + description: 'Introduction to Jasmine, Spies and specs', + 'duration': '4:07', + 'seqNo': 3, + courseId: 12 + }, + + 43: { + id: 43, + description: 'Introduction to Service Testing', + 'duration': '7:32', + 'seqNo': 4, + courseId: 12 + }, + + 44: { + id: 44, + description: 'Settting up the Angular TestBed', + 'duration': '6:28', + 'seqNo': 5, + courseId: 12 + }, + + 45: { + id: 45, + description: 'Mocking Angular HTTP requests', + 'duration': '4:38', + 'seqNo': 6, + courseId: 12 + }, + + 46: { + id: 46, + description: 'Simulating Failing HTTP Requests', + 'duration': '7:54', + 'seqNo': 7, + courseId: 12 + }, + + 47: { + id: 47, + description: 'Introduction to Angular Component Testing', + 'duration': '5:31', + 'seqNo': 8, + courseId: 12 + }, + + 48: { + id: 48, + description: 'Testing Angular Components without the DOM', + 'duration': '8:19', + 'seqNo': 9, + courseId: 12 + }, + + 49: { + id: 49, + description: 'Testing Angular Components with the DOM', + 'duration': '7:05', + 'seqNo': 10, + courseId: 12 + }, + + + // Ngrx Course + 50: { + id: 50, + "description": "Welcome to the Angular Ngrx Course", + "duration": "6:53", + "seqNo": 1, + courseId: 4 + + }, + 51: { + id: 51, + "description": "The Angular Ngrx Architecture Course - Helicopter View", + "duration": "5:52", + "seqNo": 2, + courseId: 4 + }, + 52: { + id: 52, + "description": "The Origins of Flux - Understanding the Famous Facebook Bug Problem", + "duration": "8:17", + "seqNo": 3, + courseId: 4 + }, + 53: { + id: 53, + "description": "Custom Global Events - Why Don't They Scale In Complexity?", + "duration": "7:47", + "seqNo": 4, + courseId: 4 + }, + 54: { + id: 54, + "description": "The Flux Architecture - How Does it Solve Facebook Counter Problem?", + "duration": "9:22", + "seqNo": 5, + courseId: 4 + }, + 55: { + id: 55, + "description": "Unidirectional Data Flow And The Angular Development Mode", + "duration": "7:07", + "seqNo": 6, + courseId: 4 + }, + + 56: { + id: 56, + "description": "Dispatching an Action - Implementing the Login Component", + "duration": "4:39", + "seqNo": 7, + courseId: 4 + }, + 57: { + id: 57, + "description": "Setting Up the Ngrx DevTools - Demo", + "duration": "4:44", + "seqNo": 8, + courseId: 4 + }, + 58: { + id: 58, + "description": "Understanding Reducers - Writing Our First Reducer", + "duration": "9:10", + "seqNo": 9, + courseId: 4 + }, + 59: { + id: 59, + "description": "How To Define the Store Initial AppState", + "duration": "9:10", + "seqNo": 10, + courseId: 4 + } + + +}; + + +export function findCourseById(courseId: number) { + return COURSES[courseId]; +} + +export function findLessonsForCourse(courseId: number) { + return Object.values(LESSONS).filter(lesson => lesson.courseId == courseId); +} + + +export function authenticate(email: string, password: string) { + + const user: any = Object.values(USERS).find(user => user.email === email); + + if (user && user.password == password) { + return user; + } else { + return undefined; + } + +} diff --git a/server/delete-course.route.ts b/server/delete-course.route.ts new file mode 100644 index 0000000..72ca792 --- /dev/null +++ b/server/delete-course.route.ts @@ -0,0 +1,22 @@ +import {Request, Response} from 'express'; +import {COURSES} from "./db-data"; + + +export function deleteCourse(req: Request, res: Response) { + + console.log("Deleting course ..."); + + const id = req.params["id"]; + + const course = COURSES[id]; + + delete COURSES[id]; + + setTimeout(() => { + + res.status(200).json({id}); + + }, 2000); + +} + diff --git a/server/get-courses.route.ts b/server/get-courses.route.ts new file mode 100644 index 0000000..daa6988 --- /dev/null +++ b/server/get-courses.route.ts @@ -0,0 +1,38 @@ + + +import {Request, Response} from 'express'; +import {COURSES} from "./db-data"; + + + +export function getAllCourses(req: Request, res: Response) { + + console.log("Retrieving courses data ..."); + + setTimeout(() => { + + res.status(200).json({payload:Object.values(COURSES)}); + + }, 1000); + + + +} + + +export function getCourseByUrl(req: Request, res: Response) { + + const courseUrl = req.params["courseUrl"]; + + const courses:any = Object.values(COURSES); + + const course = courses.find(course => course.url == courseUrl); + + setTimeout(() => { + + res.status(200).json(course); + + }, 1000); + + +} diff --git a/server/save-course.route.ts b/server/save-course.route.ts new file mode 100644 index 0000000..d5cb4ab --- /dev/null +++ b/server/save-course.route.ts @@ -0,0 +1,24 @@ +import {Request, Response} from 'express'; +import {COURSES} from "./db-data"; + + +export function saveCourse(req: Request, res: Response) { + + console.log("Saving course ..."); + + const id = req.params["id"], + changes = req.body; + + COURSES[id] = { + ...COURSES[id], + ...changes + }; + + setTimeout(() => { + + res.status(200).json(COURSES[id]); + + }, 2000); + +} + diff --git a/server/search-lessons.route.ts b/server/search-lessons.route.ts new file mode 100644 index 0000000..29f34b6 --- /dev/null +++ b/server/search-lessons.route.ts @@ -0,0 +1,40 @@ + + + +import {Request, Response} from 'express'; +import {LESSONS} from "./db-data"; +import {setTimeout} from "timers"; + + + +export function searchLessons(req: Request, res: Response) { + + console.log('Searching for lessons ...'); + + const queryParams = req.query; + + const courseId = queryParams.courseId, + filter = queryParams.filter || '', + sortOrder = queryParams.sortOrder || 'asc', + pageNumber = parseInt(queryParams.pageNumber) || 0, + pageSize = parseInt(queryParams.pageSize); + + let lessons = Object.values(LESSONS).filter(lesson => lesson.courseId == courseId).sort((l1, l2) => l1.id - l2.id); + + if (filter) { + lessons = lessons.filter(lesson => lesson.description.trim().toLowerCase().search(filter.toLowerCase()) >= 0); + } + + if (sortOrder == "desc") { + lessons = lessons.reverse(); + } + + const initialPos = pageNumber * pageSize; + + console.log(`Retrieving lessons page starting at position ${initialPos}, page size ${pageSize} for course ${courseId}`); + + const lessonsPage = lessons.slice(initialPos, initialPos + pageSize); + + res.status(200).json(lessonsPage); + +} diff --git a/server/server.ts b/server/server.ts new file mode 100644 index 0000000..7534ea8 --- /dev/null +++ b/server/server.ts @@ -0,0 +1,45 @@ + + +import * as express from 'express'; +import {Application} from "express"; +import {getAllCourses, getCourseByUrl} from "./get-courses.route"; +import {searchLessons} from "./search-lessons.route"; +import {loginUser} from "./auth.route"; +import {saveCourse} from "./save-course.route"; +import {createCourse} from './create-course.route'; +import {deleteCourse} from './delete-course.route'; + +const bodyParser = require('body-parser'); + + + +const app: Application = express(); + + +app.use(bodyParser.json()); + + +app.route('/api/login').post(loginUser); + +app.route('/api/courses').get(getAllCourses); + +app.route('/api/course').post(createCourse); + +app.route('/api/course/:id').put(saveCourse); + +app.route('/api/course/:id').delete(deleteCourse); + +app.route('/api/courses/:courseUrl').get(getCourseByUrl); + +app.route('/api/lessons').get(searchLessons); + + + + +const httpServer:any = app.listen(9000, () => { + console.log("HTTP REST API Server running at http://localhost:" + httpServer.address().port); +}); + + + + diff --git a/server/server.tsconfig.json b/server/server.tsconfig.json new file mode 100644 index 0000000..36d0c71 --- /dev/null +++ b/server/server.tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": ["es2017"] + } +} diff --git a/src/app/app.component.css b/src/app/app.component.css new file mode 100644 index 0000000..c9345a5 --- /dev/null +++ b/src/app/app.component.css @@ -0,0 +1,17 @@ + +>>> body { + margin: 0; +} + +main { + margin: 30px; +} + +.menu-button { + background: rgba(255, 170, 0, 0.76); + color: white; + border: none; + cursor:pointer; + outline:none; +} + diff --git a/src/app/app.component.html b/src/app/app.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/src/app/app.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000..9b40124 --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,73 @@ +import {Component, OnInit} from '@angular/core'; +import {select, Store} from '@ngrx/store'; +import {Observable} from 'rxjs'; +import {distinctUntilChanged, map} from 'rxjs/operators'; +import {NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router} from '@angular/router'; +import {AppState} from './reducers'; +import {isLoggedIn, isLoggedOut} from './auth/auth.selectors'; +import {login, logout} from './auth/auth.actions'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent implements OnInit { + + loading = true; + + isLoggedIn$: Observable; + + isLoggedOut$: Observable; + + constructor(private router: Router, + private store: Store) { + + } + + ngOnInit() { + + // const userProfile = localStorage.getItem("user"); + + // if (userProfile) { + // this.store.dispatch(login({user: JSON.parse(userProfile)})); + // } + + // this.router.events.subscribe(event => { + // switch (true) { + // case event instanceof NavigationStart: { + // this.loading = true; + // break; + // } + + // case event instanceof NavigationEnd: + // case event instanceof NavigationCancel: + // case event instanceof NavigationError: { + // this.loading = false; + // break; + // } + // default: { + // break; + // } + // } + // }); + + // this.isLoggedIn$ = this.store + // .pipe( + // select(isLoggedIn) + // ); + + // this.isLoggedOut$ = this.store + // .pipe( + // select(isLoggedOut) + // ); + + } + + logout() { + + this.store.dispatch(logout()); + + } + +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 0000000..1599e95 --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,71 @@ +import {BrowserModule} from '@angular/platform-browser'; +import {NgModule} from '@angular/core'; + +import {AppComponent} from './app.component'; +import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; +import {MatMenuModule} from '@angular/material/menu'; +import {MatIconModule} from '@angular/material/icon'; + +import {MatListModule} from '@angular/material/list'; +import {MatSidenavModule} from '@angular/material/sidenav'; +import {MatToolbarModule} from '@angular/material/toolbar'; +import {HttpClientModule} from '@angular/common/http'; + +import {RouterModule, Routes} from '@angular/router'; +import {AuthModule} from './auth/auth.module'; +import {StoreModule} from '@ngrx/store'; +import {StoreDevtoolsModule} from '@ngrx/store-devtools'; +import {environment} from '../environments/environment'; +import {RouterState, StoreRouterConnectingModule} from '@ngrx/router-store'; + +import {EffectsModule} from '@ngrx/effects'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import {metaReducers, reducers} from './reducers'; +import {AuthGuard} from './auth/auth.guard'; +import {EntityDataModule} from '@ngrx/data'; +import { rootRouterConfig } from './app.routing'; +import { SharedModule } from './shared/shared.module'; + + + + +@NgModule({ + declarations: [ + AppComponent + ], + imports: [ + BrowserModule, + BrowserAnimationsModule, + HttpClientModule, + MatMenuModule, + MatIconModule, + MatSidenavModule, + MatProgressSpinnerModule, + MatListModule, + MatToolbarModule, + SharedModule, + //AuthModule.forRoot(), + StoreModule.forRoot(reducers, { + metaReducers, + runtimeChecks : { + strictStateImmutability: true, + strictActionImmutability: true, + strictActionSerializability: true, + strictStateSerializability: true + } + }), + StoreDevtoolsModule.instrument({maxAge: 25, logOnly: environment.production}), + EffectsModule.forRoot([]), + EntityDataModule.forRoot({}), + StoreRouterConnectingModule.forRoot({ + stateKey: 'router', + routerState: RouterState.Minimal + }), + RouterModule.forRoot(rootRouterConfig, { useHash: false }) + ], + bootstrap: [AppComponent], +providers:[AuthGuard] + +}) +export class AppModule { +} diff --git a/src/app/app.routing.ts b/src/app/app.routing.ts new file mode 100644 index 0000000..a2db4ce --- /dev/null +++ b/src/app/app.routing.ts @@ -0,0 +1,80 @@ +import { Routes } from '@angular/router'; +import { AdminLayoutComponent } from './shared/components/layouts/admin-layout/admin-layout.component'; +import { AuthLayoutComponent } from './shared/components/layouts/auth-layout/auth-layout.component'; +import { AuthGuard } from './shared/guards/auth.guard'; + +export const rootRouterConfig: Routes = [ + { + path: '', + redirectTo: '/dashboard/analytics', + pathMatch: 'full', + }, + + { + path: '', + component: AdminLayoutComponent, + canActivate: [AuthGuard], + children: [ + { + path: 'dashboard', + loadChildren: () => + import('./views/dashboard/dashboard.module').then( + (m) => m.DashboardModule + ), + }, + { + path: 'mat-kits', + loadChildren: () => + import('./views/material-components/material-components.module').then( + (m) => m.MaterialComponentsModule + ), + data: { title: 'Material Coponents', breadcrumb: 'Material Coponents' }, + }, + { + path: 'pages', + loadChildren: () => + import('./views/others/others.module').then((m) => m.OthersModule), + data: { title: 'Pages', breadcrumb: 'Pages' }, + }, + { + path: 'tables', + loadChildren: () => + import('./views/tables/tables.module').then((m) => m.TablesModule), + data: { title: 'Tables', breadcrumb: 'Tables' }, + }, + { + path: 'forms', + loadChildren: () => + import('./views/forms/forms.module').then((m) => m.AppFormsModule), + data: { title: 'Forms', breadcrumb: 'Forms' }, + }, + + { + path: 'search', + loadChildren: () => + import('./views/search-view/search-view.module').then( + (m) => m.SearchViewModule + ), + }, + + { + path: 'orders', + loadChildren: () => + import('./views/order/order.module').then((m) => m.OrderModule), + data: { title: 'Orders', breadcrumb: 'Orders' }, + }, + { + path: 'icons', + loadChildren: () => + import('./views/mat-icons/mat-icons.module').then( + (m) => m.MatIconsModule + ), + data: { title: 'Icons', breadcrumb: 'Mat icons' }, + }, + ], + }, + { + path: '**', + redirectTo: 'sessions/404', + }, +]; diff --git a/src/app/auth/action-types.ts b/src/app/auth/action-types.ts new file mode 100644 index 0000000..0e5353f --- /dev/null +++ b/src/app/auth/action-types.ts @@ -0,0 +1,5 @@ + + +import * as AuthActions from './auth.actions'; + +export {AuthActions}; diff --git a/src/app/auth/auth.actions.ts b/src/app/auth/auth.actions.ts new file mode 100644 index 0000000..ef07b2c --- /dev/null +++ b/src/app/auth/auth.actions.ts @@ -0,0 +1,14 @@ +import {createAction, props} from '@ngrx/store'; +import {User} from './model/user.model'; + + +export const login = createAction( + "[Login Page] User Login", + props<{user: User}>() +); + + + +export const logout = createAction( + "[Top Menu] Logout" +); diff --git a/src/app/auth/auth.effects.ts b/src/app/auth/auth.effects.ts new file mode 100644 index 0000000..82c820c --- /dev/null +++ b/src/app/auth/auth.effects.ts @@ -0,0 +1,39 @@ +import {Injectable} from '@angular/core'; +import {Actions, createEffect, ofType} from '@ngrx/effects'; +import {AuthActions} from './action-types'; +import {tap} from 'rxjs/operators'; +import {Router} from '@angular/router'; + + +@Injectable() +export class AuthEffects { + + login$ = createEffect(() => + this.actions$ + .pipe( + ofType(AuthActions.login), + tap(action => localStorage.setItem('user', + JSON.stringify(action.user)) + ) + ) + , + {dispatch: false}); + + logout$ = createEffect(() => + this.actions$ + .pipe( + ofType(AuthActions.logout), + tap(action => { + localStorage.removeItem('user'); + this.router.navigateByUrl('/login'); + }) + ) + , {dispatch: false}); + + + constructor(private actions$: Actions, + private router: Router) { + + } + +} diff --git a/src/app/auth/auth.guard.ts b/src/app/auth/auth.guard.ts new file mode 100644 index 0000000..27d7561 --- /dev/null +++ b/src/app/auth/auth.guard.ts @@ -0,0 +1,37 @@ +import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router'; +import {Injectable} from '@angular/core'; +import {Observable} from 'rxjs'; +import {AppState} from '../reducers'; +import {select, Store} from '@ngrx/store'; +import {isLoggedIn} from './auth.selectors'; +import {tap} from 'rxjs/operators'; +import {login, logout} from './auth.actions'; + + +@Injectable() +export class AuthGuard implements CanActivate { + + constructor( + private store: Store, + private router: Router) { + + } + + canActivate( + route: ActivatedRouteSnapshot, + state: RouterStateSnapshot): Observable { + + return this.store + .pipe( + select(isLoggedIn), + tap(loggedIn => { + if (!loggedIn) { + this.router.navigateByUrl('/login'); + } + }) + ) + + + } + +} diff --git a/src/app/auth/auth.module.ts b/src/app/auth/auth.module.ts new file mode 100644 index 0000000..22ce104 --- /dev/null +++ b/src/app/auth/auth.module.ts @@ -0,0 +1,51 @@ +import {ModuleWithProviders, NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {LoginComponent} from './login/login.component'; +import {MatCardModule} from '@angular/material/card'; +import { MatInputModule } from '@angular/material/input'; +import {RouterModule} from '@angular/router'; +import {ReactiveFormsModule} from '@angular/forms'; +import {MatButtonModule} from '@angular/material/button'; +import { StoreModule } from '@ngrx/store'; +import {AuthService} from './auth.service'; +import * as fromAuth from './reducers'; +import {authReducer} from './reducers'; +import {AuthGuard} from './auth.guard'; +import {EffectsModule} from '@ngrx/effects'; +import {AuthEffects} from './auth.effects'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { ButtonLoadingComponent } from 'app/shared/components/button-loading/button-loading.component'; +import { SharedComponentsModule } from '../shared/components/shared-components.module'; +import { SharedMaterialModule } from '../shared/shared-material.module'; +import { FlexLayoutModule } from '@angular/flex-layout'; + +@NgModule({ + imports: [ + CommonModule, + ReactiveFormsModule, + MatCardModule, + MatInputModule, + MatButtonModule, + SharedComponentsModule, + BrowserAnimationsModule, + SharedMaterialModule, + FlexLayoutModule, + RouterModule.forChild([{path: '', component: LoginComponent}]), + StoreModule.forFeature('auth', authReducer), + EffectsModule.forFeature([AuthEffects]), + + ], + declarations: [LoginComponent], + exports: [LoginComponent] +}) +export class AuthModule { + static forRoot(): ModuleWithProviders { + return { + ngModule: AuthModule, + providers: [ + AuthService, + AuthGuard + ] + } + } +} diff --git a/src/app/auth/auth.selectors.ts b/src/app/auth/auth.selectors.ts new file mode 100644 index 0000000..81e784b --- /dev/null +++ b/src/app/auth/auth.selectors.ts @@ -0,0 +1,19 @@ +import {createFeatureSelector, createSelector} from '@ngrx/store'; +import {AuthState} from './reducers'; + + +export const selectAuthState = + createFeatureSelector("auth"); + + +export const isLoggedIn = createSelector( + selectAuthState, + auth => !!auth.user + +); + + +export const isLoggedOut = createSelector( + isLoggedIn, + loggedIn => !loggedIn +); diff --git a/src/app/auth/auth.service.ts b/src/app/auth/auth.service.ts new file mode 100644 index 0000000..6542bed --- /dev/null +++ b/src/app/auth/auth.service.ts @@ -0,0 +1,20 @@ +import {Injectable} from '@angular/core'; +import {HttpClient} from '@angular/common/http'; +import {Observable} from 'rxjs'; +import {User} from './model/user.model'; + + + + +@Injectable() +export class AuthService { + + constructor(private http: HttpClient) { + + } + + login(email:string, password: string): Observable { + return this.http.post('/api/login', {email, password}); + } + +} diff --git a/src/app/auth/login/login.component.html b/src/app/auth/login/login.component.html new file mode 100644 index 0000000..bc95450 --- /dev/null +++ b/src/app/auth/login/login.component.html @@ -0,0 +1,92 @@ +
+
+ +
+
+ +
+
+ + +
+
+ + Email + + + + + Password + + + + + +
+ Sign in + or + Sign Up +
+ + +
+
+
+
diff --git a/src/app/auth/login/login.component.scss b/src/app/auth/login/login.component.scss new file mode 100644 index 0000000..259f011 --- /dev/null +++ b/src/app/auth/login/login.component.scss @@ -0,0 +1,11 @@ + + +.login-page { + max-width: 350px; + margin: 50px auto 0 auto; +} + +.login-form { + display: flex; + flex-direction: column; +} \ No newline at end of file diff --git a/src/app/auth/login/login.component.ts b/src/app/auth/login/login.component.ts new file mode 100644 index 0000000..bb522e4 --- /dev/null +++ b/src/app/auth/login/login.component.ts @@ -0,0 +1,152 @@ +import { Component, OnInit, ViewEncapsulation } from '@angular/core'; +import {FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms'; + +import {Store} from '@ngrx/store'; + +import {AuthService} from '../auth.service'; +import {takeUntil, tap} from 'rxjs/operators'; +import {noop, Subject} from 'rxjs'; +import {ActivatedRoute, Router} from '@angular/router'; +import {AppState} from '../../reducers'; +import {login} from '../auth.actions'; +import {AuthActions} from '../action-types'; +import { matxAnimations } from 'app/shared/animations/matx-animations'; +import { AppLoaderService } from 'app/shared/services/app-loader/app-loader.service'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.scss'], + animations: matxAnimations + +}) +export class LoginComponent implements OnInit { + signinForm: FormGroup; + errorMsg = ''; + return: string; + loading: Boolean; + + private _unsubscribeAll: Subject; + constructor( + private auth: AuthService, + private matxLoader: AppLoaderService, + private router: Router, + private route: ActivatedRoute, + private store: Store + ) { + this._unsubscribeAll = new Subject(); + } + + ngOnInit() { + this.signinForm = new FormGroup({ + username: new FormControl('Watson', Validators.required), + password: new FormControl('12345678', Validators.required), + //rememberMe: new FormControl(true) + }); + + this.route.queryParams + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe(params => this.return = params['return'] || '/'); + } + + ngAfterViewInit() { + // setTimeout(() => { + //this.autoSignIn(); + // }) + } + + // tslint:disable-next-line: use-lifecycle-interface + ngOnDestroy() { + this._unsubscribeAll.next(); + this._unsubscribeAll.complete(); + } + + signin() { + // const signinData = this.signinForm.value; + // this.loading = true; + // this.jwtAuth.signin(signinData.username, signinData.password) + // .subscribe(response => { + // this.loading = false; + // this.router.navigateByUrl(this.return); + // }, err => { + // this.loading = false; + // this.errorMsg = err.message; + // }) + const val = this.signinForm.value; + + this.auth.login(val.email, val.password) + .pipe( + tap(user => { + + console.log(user); + + this.store.dispatch(login({user})); + + this.router.navigateByUrl('/dashboard/analytics'); + + }) + ) + .subscribe( + noop, + () => alert('Login Failed') + ); + + } + + autoSignIn() { + if (this.return === '/') { + return; + } + this.matxLoader.open(`Automatically Signing you in! \n Return url: ${this.return.substring(0, 20)}...`, {width: '320px'}); + setTimeout(() => { + this.signin(); + console.log('autoSignIn'); + this.matxLoader.close(); + }, 2000); + } +// form: FormGroup; + +// constructor( +// private fb: FormBuilder, +// private auth: AuthService, +// private router: Router, +// private store: Store) { + +// this.form = fb.group({ +// email: ['test@angular-university.io', [Validators.required]], +// password: ['test', [Validators.required]] +// }); + +// } + +// ngOnInit() { + +// } + +// login() { + +// const val = this.form.value; + +// this.auth.login(val.email, val.password) +// .pipe( +// tap(user => { + +// console.log(user); + +// this.store.dispatch(login({user})); + +// this.router.navigateByUrl('/dashboard/analytics'); + +// }) +// ) +// .subscribe( +// noop, +// () => alert('Login Failed') +// ); + + + +// } + +} + diff --git a/src/app/auth/model/user.model.ts b/src/app/auth/model/user.model.ts new file mode 100644 index 0000000..6bf68e4 --- /dev/null +++ b/src/app/auth/model/user.model.ts @@ -0,0 +1,6 @@ + + +export interface User { + id: string; + email: string; +} diff --git a/src/app/auth/reducers/index.ts b/src/app/auth/reducers/index.ts new file mode 100644 index 0000000..75bf90a --- /dev/null +++ b/src/app/auth/reducers/index.ts @@ -0,0 +1,40 @@ +import { + ActionReducer, + ActionReducerMap, + createFeatureSelector, createReducer, + createSelector, + MetaReducer, on +} from '@ngrx/store'; +import {User} from '../model/user.model'; +import {AuthActions} from '../action-types'; + + + +export interface AuthState { + user: User +} + +export const initialAuthState: AuthState = { + user: undefined +}; + +export const authReducer = createReducer( + + initialAuthState, + + on(AuthActions.login, (state, action) => { + return { + user: action.user + } + }), + + on(AuthActions.logout, (state, action) => { + return { + user: undefined + } + }) + + + +); + diff --git a/src/app/courses/course/course.component.css b/src/app/courses/course/course.component.css new file mode 100644 index 0000000..a846c4e --- /dev/null +++ b/src/app/courses/course/course.component.css @@ -0,0 +1,56 @@ + +.course { + text-align: center; + max-width: 390px; + margin: 0 auto; +} + +.course-thumbnail { + width: 175px; + margin: 20px auto 0 auto; + display: block; + border-radius: 4px; +} + +.description-cell { + text-align: left; + margin: 10px auto; +} + +.duration-cell { + text-align: center; +} + +.duration-cell mat-icon { + display: inline-block; + vertical-align: middle; + font-size: 20px; +} + +.lessons-table { + min-height: 360px; + margin-top: 10px; +} + +.spinner-container mat-spinner { + margin: 95px auto 0 auto; +} + +.action-toolbar { + margin-top: 20px; +} + +h2 { + font-family: "Roboto"; +} + + +.bottom-toolbar { + margin-top: 20px; + margin-bottom: 200px; +} + + +.spinner-container { + width:390px; +} diff --git a/src/app/courses/course/course.component.html b/src/app/courses/course/course.component.html new file mode 100644 index 0000000..97f480b --- /dev/null +++ b/src/app/courses/course/course.component.html @@ -0,0 +1,51 @@ +
+ +

{{course?.description}}

+ + + +
+ + + +
+ + + + + + # + + {{lesson.seqNo}} + + + + + + Description + + {{lesson.description}} + + + + + + Duration + + {{lesson.duration}} + + + + + + + + + + + + +
diff --git a/src/app/courses/course/course.component.ts b/src/app/courses/course/course.component.ts new file mode 100644 index 0000000..c1949f2 --- /dev/null +++ b/src/app/courses/course/course.component.ts @@ -0,0 +1,73 @@ +import {AfterViewInit, ChangeDetectionStrategy, Component, OnInit} from '@angular/core'; +import {ActivatedRoute} from '@angular/router'; +import {Course} from '../model/course'; +import {Observable, of} from 'rxjs'; +import {Lesson} from '../model/lesson'; +import {concatMap, delay, filter, first, map, shareReplay, tap, withLatestFrom} from 'rxjs/operators'; +import {CoursesHttpService} from '../services/courses-http.service'; +import {CourseEntityService} from '../services/course-entity.service'; +import {LessonEntityService} from '../services/lesson-entity.service'; + + +@Component({ + selector: 'course', + templateUrl: './course.component.html', + styleUrls: ['./course.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class CourseComponent implements OnInit { + + course$: Observable; + + loading$: Observable; + + lessons$: Observable; + + displayedColumns = ['seqNo', 'description', 'duration']; + + nextPage = 0; + + constructor( + private coursesService: CourseEntityService, + private lessonsService: LessonEntityService, + private route: ActivatedRoute) { + + } + + ngOnInit() { + + const courseUrl = this.route.snapshot.paramMap.get('courseUrl'); + + this.course$ = this.coursesService.entities$ + .pipe( + map(courses => courses.find(course => course.url == courseUrl)) + ); + + this.lessons$ = this.lessonsService.entities$ + .pipe( + withLatestFrom(this.course$), + tap(([lessons, course]) => { + if (this.nextPage == 0) { + this.loadLessonsPage(course); + } + }), + map(([lessons, course]) => + lessons.filter(lesson => lesson.courseId == course.id)) + ); + + this.loading$ = this.lessonsService.loading$.pipe(delay(0)); + + } + + loadLessonsPage(course: Course) { + this.lessonsService.getWithQuery({ + 'courseId': course.id.toString(), + 'pageNumber': this.nextPage.toString(), + 'pageSize': '3' + }); + + this.nextPage += 1; + + } + +} diff --git a/src/app/courses/courses-card-list/courses-card-list.component.css b/src/app/courses/courses-card-list/courses-card-list.component.css new file mode 100644 index 0000000..111d591 --- /dev/null +++ b/src/app/courses/courses-card-list/courses-card-list.component.css @@ -0,0 +1,15 @@ + + +.course-card { + margin: 20px 10px; +} + +.course-actions { + text-align: center; + +} + +.course-actions button { + margin-right: 10px; +} + diff --git a/src/app/courses/courses-card-list/courses-card-list.component.html b/src/app/courses/courses-card-list/courses-card-list.component.html new file mode 100644 index 0000000..502c78d --- /dev/null +++ b/src/app/courses/courses-card-list/courses-card-list.component.html @@ -0,0 +1,33 @@ + + + + + + + {{course.description}} + + + + + + +

{{course.longDescription}}

+
+ + + + + + + + + + + +
diff --git a/src/app/courses/courses-card-list/courses-card-list.component.ts b/src/app/courses/courses-card-list/courses-card-list.component.ts new file mode 100644 index 0000000..33915e3 --- /dev/null +++ b/src/app/courses/courses-card-list/courses-card-list.component.ts @@ -0,0 +1,67 @@ +import {ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation} from '@angular/core'; +import {Course} from "../model/course"; +import { MatDialog, MatDialogConfig } from "@angular/material/dialog"; +import {EditCourseDialogComponent} from "../edit-course-dialog/edit-course-dialog.component"; +import {defaultDialogConfig} from '../shared/default-dialog-config'; +import {CourseEntityService} from '../services/course-entity.service'; + +@Component({ + selector: 'courses-card-list', + templateUrl: './courses-card-list.component.html', + styleUrls: ['./courses-card-list.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class CoursesCardListComponent implements OnInit { + + @Input() + courses: Course[]; + + @Output() + courseChanged = new EventEmitter(); + + constructor( + private dialog: MatDialog, + private courseService: CourseEntityService) { + } + + ngOnInit() { + + } + + editCourse(course:Course) { + + const dialogConfig = defaultDialogConfig(); + + dialogConfig.data = { + dialogTitle:"Edit Course", + course, + mode: 'update' + }; + + this.dialog.open(EditCourseDialogComponent, dialogConfig) + .afterClosed() + .subscribe(() => this.courseChanged.emit()); + + } + + onDeleteCourse(course:Course) { + + this.courseService.delete(course) + .subscribe( + () => console.log("Delete completed"), + err => console.log("Deleted failed", err) + ); + + + } + +} + + + + + + + + + diff --git a/src/app/courses/courses.module.ts b/src/app/courses/courses.module.ts new file mode 100644 index 0000000..97a84a3 --- /dev/null +++ b/src/app/courses/courses.module.ts @@ -0,0 +1,120 @@ +import {NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {HomeComponent} from './home/home.component'; +import {CoursesCardListComponent} from './courses-card-list/courses-card-list.component'; +import {EditCourseDialogComponent} from './edit-course-dialog/edit-course-dialog.component'; +import {CoursesHttpService} from './services/courses-http.service'; +import {CourseComponent} from './course/course.component'; +import {MatDatepickerModule} from '@angular/material/datepicker'; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatInputModule} from '@angular/material/input'; +import {MatPaginatorModule} from '@angular/material/paginator'; +import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; +import {MatSelectModule} from '@angular/material/select'; +import {MatSlideToggleModule} from '@angular/material/slide-toggle'; +import {MatSortModule} from '@angular/material/sort'; +import {MatTableModule} from '@angular/material/table'; +import {MatTabsModule} from '@angular/material/tabs'; +import {ReactiveFormsModule} from '@angular/forms'; +import {MatMomentDateModule} from '@angular/material-moment-adapter'; +import {MatCardModule} from '@angular/material/card'; +import {MatButtonModule} from '@angular/material/button'; +import {MatIconModule} from '@angular/material/icon'; +import {RouterModule, Routes} from '@angular/router'; +import {EntityDataService, EntityDefinitionService, EntityMetadataMap} from '@ngrx/data'; +import {compareCourses, Course} from './model/course'; + +import {compareLessons, Lesson} from './model/lesson'; +import {CourseEntityService} from './services/course-entity.service'; +import {CoursesResolver} from './services/courses.resolver'; +import {CoursesDataService} from './services/courses-data.service'; +import {LessonEntityService} from './services/lesson-entity.service'; + + +export const coursesRoutes: Routes = [ + { + path: '', + component: HomeComponent, + resolve: { + courses: CoursesResolver + } + }, + { + path: ':courseUrl', + component: CourseComponent, + resolve: { + courses: CoursesResolver + } + } +]; + +const entityMetadata: EntityMetadataMap = { + Course: { + sortComparer: compareCourses, + entityDispatcherOptions: { + optimisticUpdate: true + } + }, + Lesson: { + sortComparer: compareLessons + } +}; + + +@NgModule({ + imports: [ + CommonModule, + MatButtonModule, + MatIconModule, + MatCardModule, + MatTabsModule, + MatInputModule, + MatTableModule, + MatPaginatorModule, + MatSortModule, + MatProgressSpinnerModule, + MatSlideToggleModule, + MatDialogModule, + MatSelectModule, + MatDatepickerModule, + MatMomentDateModule, + ReactiveFormsModule, + RouterModule.forChild(coursesRoutes) + ], + declarations: [ + HomeComponent, + CoursesCardListComponent, + EditCourseDialogComponent, + CourseComponent + ], + exports: [ + HomeComponent, + CoursesCardListComponent, + + EditCourseDialogComponent, + CourseComponent + ], + entryComponents: [EditCourseDialogComponent], + providers: [ + CoursesHttpService, + CourseEntityService, + LessonEntityService, + CoursesResolver, + CoursesDataService + ] +}) +export class CoursesModule { + + constructor( + private eds: EntityDefinitionService, + private entityDataService: EntityDataService, + private coursesDataService: CoursesDataService) { + + eds.registerMetadataMap(entityMetadata); + + entityDataService.registerService('Course', coursesDataService); + + } + + +} diff --git a/src/app/courses/edit-course-dialog/edit-course-dialog.component.css b/src/app/courses/edit-course-dialog/edit-course-dialog.component.css new file mode 100644 index 0000000..a6ca8f0 --- /dev/null +++ b/src/app/courses/edit-course-dialog/edit-course-dialog.component.css @@ -0,0 +1,10 @@ + + +.mat-form-field { + display: block; +} + +textarea { + height: 100px; + resize: vertical; +} diff --git a/src/app/courses/edit-course-dialog/edit-course-dialog.component.html b/src/app/courses/edit-course-dialog/edit-course-dialog.component.html new file mode 100644 index 0000000..21351cb --- /dev/null +++ b/src/app/courses/edit-course-dialog/edit-course-dialog.component.html @@ -0,0 +1,95 @@ + +

{{dialogTitle}}

+ + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Beginner + + Intermediate + + Advanced + + + + + + Promotion On + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + diff --git a/src/app/courses/edit-course-dialog/edit-course-dialog.component.ts b/src/app/courses/edit-course-dialog/edit-course-dialog.component.ts new file mode 100644 index 0000000..ebe2353 --- /dev/null +++ b/src/app/courses/edit-course-dialog/edit-course-dialog.component.ts @@ -0,0 +1,91 @@ +import {ChangeDetectionStrategy, Component, Inject} from '@angular/core'; +import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog'; +import {Course} from '../model/course'; +import {FormBuilder, FormGroup, Validators} from '@angular/forms'; +import {Observable} from 'rxjs'; +import {CoursesHttpService} from '../services/courses-http.service'; +import {CourseEntityService} from '../services/course-entity.service'; + +@Component({ + selector: 'course-dialog', + templateUrl: './edit-course-dialog.component.html', + styleUrls: ['./edit-course-dialog.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class EditCourseDialogComponent { + + form: FormGroup; + + dialogTitle: string; + + course: Course; + + mode: 'create' | 'update'; + + loading$: Observable; + + constructor( + private fb: FormBuilder, + private dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) data, + private coursesService: CourseEntityService) { + + this.dialogTitle = data.dialogTitle; + this.course = data.course; + this.mode = data.mode; + + const formControls = { + description: ['', Validators.required], + category: ['', Validators.required], + longDescription: ['', Validators.required], + promo: ['', []] + }; + + if (this.mode == 'update') { + this.form = this.fb.group(formControls); + this.form.patchValue({...data.course}); + } else if (this.mode == 'create') { + this.form = this.fb.group({ + ...formControls, + url: ['', Validators.required], + iconUrl: ['', Validators.required] + }); + } + } + + onClose() { + this.dialogRef.close(); + } + + onSave() { + + const course: Course = { + ...this.course, + ...this.form.value + }; + + if (this.mode == 'update') { + + this.coursesService.update(course); + + this.dialogRef.close(); + } else if (this.mode == 'create') { + + this.coursesService.add(course) + .subscribe( + newCourse => { + + console.log('New Course', newCourse); + + this.dialogRef.close(); + + } + ); + + } + + + } + + +} diff --git a/src/app/courses/home/home.component.css b/src/app/courses/home/home.component.css new file mode 100644 index 0000000..6c18b26 --- /dev/null +++ b/src/app/courses/home/home.component.css @@ -0,0 +1,38 @@ + + +.title { + text-align: center; + margin-right: 15px; + +} + +.courses-panel { + max-width: 350px; + margin: 0 auto; +} + + +.counters { + display: flex; +} + +.filler { + flex: 1 1 auto; +} + +h2 { + font-family: "Roboto"; +} + +.header { + display: flex; + justify-content: center; + align-items: center; + +} + + + +.spinner-container { + margin-top: 100px; +} diff --git a/src/app/courses/home/home.component.html b/src/app/courses/home/home.component.html new file mode 100644 index 0000000..2e2d4b8 --- /dev/null +++ b/src/app/courses/home/home.component.html @@ -0,0 +1,41 @@ +
+ +
+ +

All Courses

+ + + +
+ +
+

In Promo: {{promoTotal$ | async}}

+
+ + + + + + + + + + + + + + + + + + + + +
+ diff --git a/src/app/courses/home/home.component.ts b/src/app/courses/home/home.component.ts new file mode 100644 index 0000000..0b286ec --- /dev/null +++ b/src/app/courses/home/home.component.ts @@ -0,0 +1,68 @@ +import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core'; +import {Course} from '../model/course'; +import {Observable} from 'rxjs'; +import {defaultDialogConfig} from '../shared/default-dialog-config'; +import {EditCourseDialogComponent} from '../edit-course-dialog/edit-course-dialog.component'; +import { MatDialog } from '@angular/material/dialog'; +import {map} from 'rxjs/operators'; +import {CourseEntityService} from '../services/course-entity.service'; + + +@Component({ + selector: 'home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class HomeComponent implements OnInit { + + promoTotal$: Observable; + + beginnerCourses$: Observable; + + advancedCourses$: Observable; + + constructor( + private dialog: MatDialog, + private coursesService: CourseEntityService) { + + } + + ngOnInit() { + this.reload(); + } + + reload() { + + this.beginnerCourses$ = this.coursesService.entities$ + .pipe( + map(courses => courses.filter(course => course.category == 'BEGINNER')) + ); + + this.advancedCourses$ = this.coursesService.entities$ + .pipe( + map(courses => courses.filter(course => course.category == 'ADVANCED')) + ); + + this.promoTotal$ = this.coursesService.entities$ + .pipe( + map(courses => courses.filter(course => course.promo).length) + ); + + } + + onAddCourse() { + + const dialogConfig = defaultDialogConfig(); + + dialogConfig.data = { + dialogTitle:"Create Course", + mode: 'create' + }; + + this.dialog.open(EditCourseDialogComponent, dialogConfig); + + } + + +} diff --git a/src/app/courses/model/course.ts b/src/app/courses/model/course.ts new file mode 100644 index 0000000..b863fb0 --- /dev/null +++ b/src/app/courses/model/course.ts @@ -0,0 +1,28 @@ + +export interface Course { + id: number; + seqNo:number; + url:string; + iconUrl: string; + courseListIcon: string; + description: string; + longDescription?: string; + category: string; + lessonsCount: number; + promo: boolean; +} + + +export function compareCourses(c1:Course, c2: Course) { + + const compare = c1.seqNo - c2.seqNo; + + if (compare > 0) { + return 1; + } + else if ( compare < 0) { + return -1; + } + else return 0; + +} diff --git a/src/app/courses/model/lesson.ts b/src/app/courses/model/lesson.ts new file mode 100644 index 0000000..7654526 --- /dev/null +++ b/src/app/courses/model/lesson.ts @@ -0,0 +1,26 @@ + + +export interface Lesson { + id: number; + description: string; + duration: string; + seqNo: number; + courseId: number; +} + + +export function compareLessons(l1:Lesson, l2: Lesson) { + + const compareCourses = l1.courseId - l2.courseId; + + if (compareCourses > 0) { + return 1; + } + else if (compareCourses < 0){ + return -1; + } + else { + return l1.seqNo - l2.seqNo; + } + +} diff --git a/src/app/courses/services/course-entity.service.ts b/src/app/courses/services/course-entity.service.ts new file mode 100644 index 0000000..1cda64c --- /dev/null +++ b/src/app/courses/services/course-entity.service.ts @@ -0,0 +1,19 @@ +import {Injectable} from '@angular/core'; +import {EntityCollectionServiceBase, EntityCollectionServiceElementsFactory} from '@ngrx/data'; +import {Course} from '../model/course'; + + +@Injectable() +export class CourseEntityService + extends EntityCollectionServiceBase { + + constructor( + serviceElementsFactory: + EntityCollectionServiceElementsFactory) { + + super('Course', serviceElementsFactory); + + } + +} + diff --git a/src/app/courses/services/courses-data.service.ts b/src/app/courses/services/courses-data.service.ts new file mode 100644 index 0000000..b02ebb6 --- /dev/null +++ b/src/app/courses/services/courses-data.service.ts @@ -0,0 +1,26 @@ +import {Injectable} from '@angular/core'; +import {DefaultDataService, HttpUrlGenerator} from '@ngrx/data'; +import {Course} from '../model/course'; +import {HttpClient} from '@angular/common/http'; +import {Observable} from 'rxjs'; +import {map} from 'rxjs/operators'; + + + +@Injectable() +export class CoursesDataService extends DefaultDataService { + + + constructor(http:HttpClient, httpUrlGenerator: HttpUrlGenerator) { + super('Course', http, httpUrlGenerator); + + } + + getAll(): Observable { + return this.http.get('/api/courses') + .pipe( + map(res => res["payload"]) + ); + } + +} diff --git a/src/app/courses/services/courses-http.service.ts b/src/app/courses/services/courses-http.service.ts new file mode 100644 index 0000000..e8a6cea --- /dev/null +++ b/src/app/courses/services/courses-http.service.ts @@ -0,0 +1,48 @@ + + +import {Injectable} from '@angular/core'; +import {HttpClient, HttpParams} from '@angular/common/http'; +import {Observable} from 'rxjs'; +import {Course} from '../model/course'; +import {map} from 'rxjs/operators'; +import {Lesson} from '../model/lesson'; + + +@Injectable() +export class CoursesHttpService { + + constructor(private http:HttpClient) { + + } + + findAllCourses(): Observable { + return this.http.get('/api/courses') + .pipe( + map(res => res['payload']) + ); + } + + findCourseByUrl(courseUrl: string): Observable { + return this.http.get(`/api/courses/${courseUrl}`); + } + + findLessons( + courseId:number, + pageNumber = 0, pageSize = 3): Observable { + + return this.http.get('/api/lessons', { + params: new HttpParams() + .set('courseId', courseId.toString()) + .set('sortOrder', 'asc') + .set('pageNumber', pageNumber.toString()) + .set('pageSize', pageSize.toString()) + }); + } + + + saveCourse(courseId: string | number, changes: Partial) { + return this.http.put('/api/course/' + courseId, changes); + } + + +} diff --git a/src/app/courses/services/courses.resolver.ts b/src/app/courses/services/courses.resolver.ts new file mode 100644 index 0000000..a59a13c --- /dev/null +++ b/src/app/courses/services/courses.resolver.ts @@ -0,0 +1,31 @@ +import {Injectable} from '@angular/core'; +import {ActivatedRouteSnapshot, Resolve, RouterStateSnapshot} from '@angular/router'; +import {Observable} from 'rxjs'; +import {CourseEntityService} from './course-entity.service'; +import {filter, first, map, tap} from 'rxjs/operators'; + + +@Injectable() +export class CoursesResolver implements Resolve { + + constructor(private coursesService: CourseEntityService) { + + } + + resolve(route: ActivatedRouteSnapshot, + state: RouterStateSnapshot): Observable { + + return this.coursesService.loaded$ + .pipe( + tap(loaded => { + if (!loaded) { + this.coursesService.getAll(); + } + }), + filter(loaded => !!loaded), + first() + ); + + } + +} diff --git a/src/app/courses/services/lesson-entity.service.ts b/src/app/courses/services/lesson-entity.service.ts new file mode 100644 index 0000000..66cd01a --- /dev/null +++ b/src/app/courses/services/lesson-entity.service.ts @@ -0,0 +1,13 @@ +import {Injectable} from '@angular/core'; +import {EntityCollectionServiceBase, EntityCollectionServiceElementsFactory} from '@ngrx/data'; +import {Lesson} from '../model/lesson'; + + +@Injectable() +export class LessonEntityService extends EntityCollectionServiceBase { + + constructor(serviceElementsFactory: EntityCollectionServiceElementsFactory) { + super('Lesson', serviceElementsFactory); + } + +} diff --git a/src/app/courses/shared/default-dialog-config.ts b/src/app/courses/shared/default-dialog-config.ts new file mode 100644 index 0000000..18814c7 --- /dev/null +++ b/src/app/courses/shared/default-dialog-config.ts @@ -0,0 +1,12 @@ +import { MatDialogConfig } from '@angular/material/dialog'; + + +export function defaultDialogConfig() { + const dialogConfig = new MatDialogConfig(); + + dialogConfig.disableClose = true; + dialogConfig.autoFocus = true; + dialogConfig.width = '400px'; + + return dialogConfig; +} diff --git a/src/app/reducers/index.ts b/src/app/reducers/index.ts new file mode 100644 index 0000000..74aa93b --- /dev/null +++ b/src/app/reducers/index.ts @@ -0,0 +1,20 @@ +import { + ActionReducer, + ActionReducerMap, + createFeatureSelector, + createSelector, + MetaReducer +} from '@ngrx/store'; +import { environment } from '../../environments/environment'; +import {routerReducer} from '@ngrx/router-store'; + +export interface AppState { + +} + + + +export const metaReducers: MetaReducer[] = + !environment.production ? [logger] : []; + + diff --git a/src/app/shared/animations/matx-animations.ts b/src/app/shared/animations/matx-animations.ts new file mode 100644 index 0000000..3bd84b4 --- /dev/null +++ b/src/app/shared/animations/matx-animations.ts @@ -0,0 +1,53 @@ +import { + trigger, + animate, + style, + transition, + state, + animation, + useAnimation +} from "@angular/animations"; + +const reusable = animation( + [ + style({ + opacity: "{{opacity}}", + transform: "scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})" + }), + animate("{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)", style("*")) + ], + { + params: { + duration: "200ms", + delay: "0ms", + opacity: "0", + scale: "1", + x: "0", + y: "0", + z: "0" + } + } +); + +export const matxAnimations = [ + trigger("animate", [transition("void => *", [useAnimation(reusable)])]), + + trigger("fadeInOut", [ + state( + "0", + style({ + opacity: 0, + display: "none" + }) + ), + state( + "1", + style({ + opacity: 1, + display: "block" + }) + ), + transition("0 => 1", animate("300ms")), + transition("1 => 0", animate("300ms")) + ]) +]; diff --git a/src/app/shared/components/breadcrumb/breadcrumb.component.html b/src/app/shared/components/breadcrumb/breadcrumb.component.html new file mode 100644 index 0000000..886904a --- /dev/null +++ b/src/app/shared/components/breadcrumb/breadcrumb.component.html @@ -0,0 +1,12 @@ + + + \ No newline at end of file diff --git a/src/app/shared/components/breadcrumb/breadcrumb.component.scss b/src/app/shared/components/breadcrumb/breadcrumb.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/shared/components/breadcrumb/breadcrumb.component.ts b/src/app/shared/components/breadcrumb/breadcrumb.component.ts new file mode 100644 index 0000000..5c47cbc --- /dev/null +++ b/src/app/shared/components/breadcrumb/breadcrumb.component.ts @@ -0,0 +1,66 @@ +import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Router, NavigationEnd, ActivatedRoute, ActivatedRouteSnapshot } from '@angular/router'; +import { RoutePartsService } from '../../../shared/services/route-parts.service'; +import { LayoutService } from '../../../shared/services/layout.service'; +import { Subscription } from "rxjs"; +import { filter } from 'rxjs/operators'; + +@Component({ + selector: 'app-breadcrumb', + templateUrl: './breadcrumb.component.html', + styleUrls: ['./breadcrumb.component.scss'] +}) +export class BreadcrumbComponent implements OnInit, OnDestroy { + routeParts:any[]; + routerEventSub: Subscription; + // public isEnabled: boolean = true; + constructor( + private router: Router, + private routePartsService: RoutePartsService, + private activeRoute: ActivatedRoute, + public layout: LayoutService + ) { + this.routeParts = this.routePartsService.generateRouteParts(this.activeRoute.snapshot); + + this.routerEventSub = this.router.events + .pipe(filter(event => event instanceof NavigationEnd)) + .subscribe((routeChange) => { + this.routeParts = this.routePartsService.generateRouteParts(this.activeRoute.snapshot); + // generate url from parts + this.routeParts.reverse().map((item, i) => { + item.breadcrumb = this.parseText(item); + item.urlSegments.forEach((urlSegment, j) => { + if(j === 0) + return item.url = `${urlSegment.path}`; + item.url += `/${urlSegment.path}` + }); + if(i === 0) { + return item; + } + // prepend previous part to current part + item.url = `${this.routeParts[i - 1].url}/${item.url}`; + return item; + }); + }); + } + + ngOnInit() { + } + ngOnDestroy() { + if(this.routerEventSub) { + this.routerEventSub.unsubscribe() + } + } + + parseText(part) { + if(!part.breadcrumb) { + return '' + } + part.breadcrumb = part.breadcrumb.replace(/{{([^{}]*)}}/g, function (a, b) { + var r = part.params[b]; + return typeof r === 'string' ? r : a; + }); + return part.breadcrumb; + } + +} diff --git a/src/app/shared/components/button-loading/button-loading.component.html b/src/app/shared/components/button-loading/button-loading.component.html new file mode 100644 index 0000000..87a5f62 --- /dev/null +++ b/src/app/shared/components/button-loading/button-loading.component.html @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/src/app/shared/components/button-loading/button-loading.component.scss b/src/app/shared/components/button-loading/button-loading.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/shared/components/button-loading/button-loading.component.spec.ts b/src/app/shared/components/button-loading/button-loading.component.spec.ts new file mode 100644 index 0000000..fec4f91 --- /dev/null +++ b/src/app/shared/components/button-loading/button-loading.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonLoadingComponent } from './button-loading.component'; + +describe('ButtonLoadingComponent', () => { + let component: ButtonLoadingComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ButtonLoadingComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ButtonLoadingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/button-loading/button-loading.component.ts b/src/app/shared/components/button-loading/button-loading.component.ts new file mode 100644 index 0000000..a53a14c --- /dev/null +++ b/src/app/shared/components/button-loading/button-loading.component.ts @@ -0,0 +1,23 @@ +import { Component, OnInit, Input } from '@angular/core'; + +@Component({ + selector: 'button-loading', + templateUrl: './button-loading.component.html', + styleUrls: ['./button-loading.component.scss'] +}) +export class ButtonLoadingComponent implements OnInit { + + @Input('loading') loading: boolean; + @Input('btnClass') btnClass: string; + @Input('raised') raised: boolean = true; + @Input('loadingText') loadingText = 'Please wait'; + @Input('type') type: 'button' | 'submit' = 'submit'; + @Input('color') color: 'primary' | 'accent' | 'warn'; + + constructor() { + } + + ngOnInit() { + } + +} diff --git a/src/app/shared/components/customizer/customizer.component.html b/src/app/shared/components/customizer/customizer.component.html new file mode 100644 index 0000000..bf1f244 --- /dev/null +++ b/src/app/shared/components/customizer/customizer.component.html @@ -0,0 +1,131 @@ +
+ +
+
+ + +
+ + + apps + + + settings + + + code + + + + + + + +
+
+ + What is this? +
+
+ + + +
+
+
+ + + + +
+
+
+ +
+ + + + +
+
Header Colors
+ +
+
+ check +
+
+
+ +
+
Sidebar colors
+
+
+ check +
+
+
+ +
+
Material Themes
+
+
+ check +
+
+
+ +
+
Footer Colors
+
+ Fixed Footer +
+ +
+
+ check +
+
+
+ +
+
Breadcrumb
+
+ Use breadcrumb +
+ Breadcrumb types + + Simple + Simple with title + +
+ +
+ Custom scrollbar +
+ +
+ +
+
\ No newline at end of file diff --git a/src/app/shared/components/customizer/customizer.component.scss b/src/app/shared/components/customizer/customizer.component.scss new file mode 100644 index 0000000..5de12ff --- /dev/null +++ b/src/app/shared/components/customizer/customizer.component.scss @@ -0,0 +1,118 @@ +.handle { + position: fixed; + bottom: 90px; + right: 30px; + z-index: 99; +} +#app-customizer { + position: fixed; + bottom: 0px; + top: 0; + right: 0; + min-width: 180px; + max-width: 280px; + z-index: 999; + .title { + text-transform: uppercase; + font-size: 12px; + font-weight: bold; + margin: 0 0 1rem; + } + .mat-card { + margin: 0; + border-radius: 0; + } + .mat-card-content { + position: relative; + padding: 1rem 1.5rem 2rem; + height: calc(100vh - 120px); + } +} +.pos-rel { + position: relative; + z-index: 99; + .olay { + position: absolute; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, .5); + z-index: 100; + } +} + +.colors { + display: flex; + flex-wrap: wrap; + .color { + position: relative; + width: 36px; + height: 36px; + display: inline-block; + border-radius: 50%; + margin: 8px; + text-align: center; + box-shadow: 0 4px 20px 1px rgba(0,0,0,.06), 0 1px 4px rgba(0,0,0,.03); + cursor: pointer; + .active-icon { + position: absolute; + left: 0; + right: 0; + margin: auto; + top: 6px; + } + } +} + +.layout-box { + width: 100%; + margin: 16px 0; + max-height: 150px; + border-radius: 8px; + overflow: hidden; + cursor: pointer; + > div { + overflow: hidden; + display: flex; + position: relative; + // height: 76px; + width: 100%; + &:hover { + &::before, + .layout-name { + display: block; + } + } + &::before, + .layout-name { + text-align: center; + position: absolute; + top: 0; + left: 0; + right: 0; + display: none; + } + &::before { + content: " "; + width: 100%; + height: 100%; + background: rgba(0,0,0,0.3); + } + .layout-name { + color: #ffffff; + top: calc(50% - 18px) + } + img { + // position: absolute; + top: 0; + left: 0; + } + } +} + +// [dir="rtl"] { +// .handle {} +// #app-customizer { +// right: auto; +// left: 0; +// } +// } \ No newline at end of file diff --git a/src/app/shared/components/customizer/customizer.component.ts b/src/app/shared/components/customizer/customizer.component.ts new file mode 100644 index 0000000..781af68 --- /dev/null +++ b/src/app/shared/components/customizer/customizer.component.ts @@ -0,0 +1,80 @@ +import { Component, OnInit, Input, Renderer2 } from "@angular/core"; +import { NavigationService } from "../../../shared/services/navigation.service"; +import { LayoutService } from "../../../shared/services/layout.service"; +import PerfectScrollbar from "perfect-scrollbar"; +import { CustomizerService } from "app/shared/services/customizer.service"; +import { ThemeService, ITheme } from "app/shared/services/theme.service"; + +@Component({ + selector: "app-customizer", + templateUrl: "./customizer.component.html", + styleUrls: ["./customizer.component.scss"] +}) +export class CustomizerComponent implements OnInit { + isCustomizerOpen: boolean = false; + // viewMode: 'options' | 'json' | 'demos' = 'demos'; + sidenavTypes = [ + { + name: "Default Menu", + value: "default-menu" + }, + { + name: "Separator Menu", + value: "separator-menu" + }, + { + name: "Icon Menu", + value: "icon-menu" + } + ]; + sidebarColors: any[]; + topbarColors: any[]; + + layoutConf; + selectedMenu: string = "icon-menu"; + selectedLayout: string; + isTopbarFixed = false; + isFooterFixed = false; + isRTL = false; + matxThemes: ITheme[]; + perfectScrollbarEnabled: boolean = true; + + constructor( + private navService: NavigationService, + public layout: LayoutService, + private themeService: ThemeService, + public customizer: CustomizerService, + private renderer: Renderer2 + ) {} + + ngOnInit() { + this.layoutConf = this.layout.layoutConf; + this.selectedLayout = this.layoutConf.navigationPos; + this.isTopbarFixed = this.layoutConf.topbarFixed; + this.isRTL = this.layoutConf.dir === "rtl"; + this.matxThemes = this.themeService.matxThemes; + } + changeTheme(theme) { + // this.themeService.changeTheme(theme); + this.layout.publishLayoutChange({matTheme: theme.name}) + } + changeLayoutStyle(data) { + this.layout.publishLayoutChange({ navigationPos: this.selectedLayout }); + } + changeSidenav(data) { + this.navService.publishNavigationChange(data.value); + } + toggleBreadcrumb(data) { + this.layout.publishLayoutChange({ useBreadcrumb: data.checked }); + } + toggleTopbarFixed(data) { + this.layout.publishLayoutChange({ topbarFixed: data.checked }); + } + toggleDir(data) { + + } + tooglePerfectScrollbar(data) { + this.layout.publishLayoutChange({perfectScrollbar: this.perfectScrollbarEnabled}) + } + +} diff --git a/src/app/shared/components/footer/footer.component.html b/src/app/shared/components/footer/footer.component.html new file mode 100644 index 0000000..e3ae63f --- /dev/null +++ b/src/app/shared/components/footer/footer.component.html @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/src/app/shared/components/footer/footer.component.scss b/src/app/shared/components/footer/footer.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/shared/components/footer/footer.component.spec.ts b/src/app/shared/components/footer/footer.component.spec.ts new file mode 100644 index 0000000..2ca6c45 --- /dev/null +++ b/src/app/shared/components/footer/footer.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FooterComponent } from './footer.component'; + +describe('FooterComponent', () => { + let component: FooterComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + 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/shared/components/footer/footer.component.ts b/src/app/shared/components/footer/footer.component.ts new file mode 100644 index 0000000..da17d82 --- /dev/null +++ b/src/app/shared/components/footer/footer.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-footer', + templateUrl: './footer.component.html', + styleUrls: ['./footer.component.scss'] +}) +export class FooterComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/shared/components/header-side/header-side.component.ts b/src/app/shared/components/header-side/header-side.component.ts new file mode 100644 index 0000000..686fd01 --- /dev/null +++ b/src/app/shared/components/header-side/header-side.component.ts @@ -0,0 +1,75 @@ +import { Component, OnInit, EventEmitter, Input, Output, Renderer2 } from '@angular/core'; +import { ThemeService } from '../../services/theme.service'; +import { LayoutService } from '../../services/layout.service'; +import { JwtAuthService } from 'app/shared/services/auth/jwt-auth.service'; + +@Component({ + selector: 'app-header-side', + templateUrl: './header-side.template.html' +}) +export class HeaderSideComponent implements OnInit { + @Input() notificPanel; + public availableLangs = [{ + name: 'EN', + code: 'en', + flag: 'flag-icon-us' + }, { + name: 'ES', + code: 'es', + flag: 'flag-icon-es' + }] + currentLang = this.availableLangs[0]; + + public matxThemes; + public layoutConf:any; + constructor( + private themeService: ThemeService, + private layout: LayoutService, + private renderer: Renderer2, + public jwtAuth: JwtAuthService + ) {} + ngOnInit() { + this.matxThemes = this.themeService.matxThemes; + this.layoutConf = this.layout.layoutConf; + } + setLang(lng) { + + } + changeTheme(theme) { + // this.themeService.changeTheme(theme); + } + toggleNotific() { + this.notificPanel.toggle(); + } + toggleSidenav() { + if(this.layoutConf.sidebarStyle === 'closed') { + return this.layout.publishLayoutChange({ + sidebarStyle: 'full' + }) + } + this.layout.publishLayoutChange({ + sidebarStyle: 'closed' + }) + } + + toggleCollapse() { + // compact --> full + if(this.layoutConf.sidebarStyle === 'compact') { + return this.layout.publishLayoutChange({ + sidebarStyle: 'full', + sidebarCompactToggle: false + }, {transitionClass: true}) + } + + // * --> compact + this.layout.publishLayoutChange({ + sidebarStyle: 'compact', + sidebarCompactToggle: true + }, {transitionClass: true}) + + } + + onSearch(e) { + // console.log(e) + } +} \ No newline at end of file diff --git a/src/app/shared/components/header-side/header-side.template.html b/src/app/shared/components/header-side/header-side.template.html new file mode 100644 index 0000000..9296859 --- /dev/null +++ b/src/app/shared/components/header-side/header-side.template.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/shared/components/layouts/admin-layout/admin-layout.component.ts b/src/app/shared/components/layouts/admin-layout/admin-layout.component.ts new file mode 100644 index 0000000..5488e53 --- /dev/null +++ b/src/app/shared/components/layouts/admin-layout/admin-layout.component.ts @@ -0,0 +1,138 @@ +import { Component, OnInit, AfterViewInit, ViewChild, HostListener, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; +import { + Router, + NavigationEnd, + RouteConfigLoadStart, + RouteConfigLoadEnd, + ResolveStart, + ResolveEnd +} from '@angular/router'; +import { Subscription } from "rxjs"; +import { ThemeService } from '../../../services/theme.service'; +import { LayoutService } from '../../../services/layout.service'; +import { filter } from 'rxjs/operators'; +import { JwtAuthService } from '../../../services/auth/jwt-auth.service'; + +@Component({ + selector: 'app-admin-layout', + templateUrl: './admin-layout.template.html', + // changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AdminLayoutComponent implements OnInit, AfterViewInit { + public isModuleLoading: Boolean = false; + private moduleLoaderSub: Subscription; + private layoutConfSub: Subscription; + private routerEventSub: Subscription; + + public scrollConfig = {} + public layoutConf: any = {}; + public adminContainerClasses: any = {}; + + constructor( + private router: Router, + public themeService: ThemeService, + private layout: LayoutService, + private cdr: ChangeDetectorRef, + private jwtAuth: JwtAuthService + ) { + // Check Auth Token is valid + this.jwtAuth.checkTokenIsValid().subscribe(); + + // Close sidenav after route change in mobile + this.routerEventSub = router.events.pipe(filter(event => event instanceof NavigationEnd)) + .subscribe((routeChange: NavigationEnd) => { + this.layout.adjustLayout({ route: routeChange.url }); + this.scrollToTop(); + }); + } + + ngOnInit() { + // this.layoutConf = this.layout.layoutConf; + this.layoutConfSub = this.layout.layoutConf$.subscribe((layoutConf) => { + this.layoutConf = layoutConf; + // console.log(this.layoutConf); + + this.adminContainerClasses = this.updateAdminContainerClasses(this.layoutConf); + this.cdr.markForCheck(); + }); + + // FOR MODULE LOADER FLAG + this.moduleLoaderSub = this.router.events.subscribe(event => { + if(event instanceof RouteConfigLoadStart || event instanceof ResolveStart) { + this.isModuleLoading = true; + } + if(event instanceof RouteConfigLoadEnd || event instanceof ResolveEnd) { + this.isModuleLoading = false; + } + }); + } + @HostListener('window:resize', ['$event']) + onResize(event) { + this.layout.adjustLayout(event); + } + + ngAfterViewInit() { + + } + + scrollToTop() { + if(document) { + setTimeout(() => { + let element; + if(this.layoutConf.topbarFixed) { + element = document.querySelector('#rightside-content-hold'); + } else { + element = document.querySelector('#main-content-wrap'); + } + element.scrollTop = 0; + }) + } + } + ngOnDestroy() { + if(this.moduleLoaderSub) { + this.moduleLoaderSub.unsubscribe(); + } + if(this.layoutConfSub) { + this.layoutConfSub.unsubscribe(); + } + if(this.routerEventSub) { + this.routerEventSub.unsubscribe(); + } + } + closeSidebar() { + this.layout.publishLayoutChange({ + sidebarStyle: 'closed' + }) + } + + sidebarMouseenter(e) { + // console.log(this.layoutConf); + if(this.layoutConf.sidebarStyle === 'compact') { + this.layout.publishLayoutChange({sidebarStyle: 'full'}, {transitionClass: true}); + } + } + + sidebarMouseleave(e) { + // console.log(this.layoutConf); + if ( + this.layoutConf.sidebarStyle === 'full' && + this.layoutConf.sidebarCompactToggle + ) { + this.layout.publishLayoutChange({sidebarStyle: 'compact'}, {transitionClass: true}); + } + } + + updateAdminContainerClasses(layoutConf) { + return { + 'navigation-top': layoutConf.navigationPos === 'top', + 'sidebar-full': layoutConf.sidebarStyle === 'full', + 'sidebar-compact': layoutConf.sidebarStyle === 'compact' && layoutConf.navigationPos === 'side', + 'compact-toggle-active': layoutConf.sidebarCompactToggle, + 'sidebar-compact-big': layoutConf.sidebarStyle === 'compact-big' && layoutConf.navigationPos === 'side', + 'sidebar-opened': layoutConf.sidebarStyle !== 'closed' && layoutConf.navigationPos === 'side', + 'sidebar-closed': layoutConf.sidebarStyle === 'closed', + 'fixed-topbar': layoutConf.topbarFixed && layoutConf.navigationPos === 'side' + } + } + +} \ No newline at end of file diff --git a/src/app/shared/components/layouts/admin-layout/admin-layout.template.html b/src/app/shared/components/layouts/admin-layout/admin-layout.template.html new file mode 100644 index 0000000..c6557a0 --- /dev/null +++ b/src/app/shared/components/layouts/admin-layout/admin-layout.template.html @@ -0,0 +1,66 @@ +
+ + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+
+ + + + + + +
+ + +
+ + + + +
+ + + + +
+ +
+
+
+
+ + + + + \ No newline at end of file diff --git a/src/app/shared/components/layouts/auth-layout/auth-layout.component.html b/src/app/shared/components/layouts/auth-layout/auth-layout.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/src/app/shared/components/layouts/auth-layout/auth-layout.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/shared/components/layouts/auth-layout/auth-layout.component.ts b/src/app/shared/components/layouts/auth-layout/auth-layout.component.ts new file mode 100644 index 0000000..a7a1cb6 --- /dev/null +++ b/src/app/shared/components/layouts/auth-layout/auth-layout.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-auth-layout', + templateUrl: './auth-layout.component.html' +}) +export class AuthLayoutComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/shared/components/notifications/notifications.component.html b/src/app/shared/components/notifications/notifications.component.html new file mode 100644 index 0000000..9caa516 --- /dev/null +++ b/src/app/shared/components/notifications/notifications.component.html @@ -0,0 +1,18 @@ +
+
Notifications
+
+ + + + {{n.icon}} + +
+

{{n.message}}

+ {{n.time}} +
+
+
+
+ \ No newline at end of file diff --git a/src/app/shared/components/notifications/notifications.component.ts b/src/app/shared/components/notifications/notifications.component.ts new file mode 100644 index 0000000..467aa07 --- /dev/null +++ b/src/app/shared/components/notifications/notifications.component.ts @@ -0,0 +1,46 @@ +import { Component, OnInit, ViewChild, Input } from '@angular/core'; +import { MatSidenav } from '@angular/material/sidenav'; +import { Router, NavigationEnd } from '@angular/router'; + +@Component({ + selector: 'app-notifications', + templateUrl: './notifications.component.html' +}) +export class NotificationsComponent implements OnInit { + @Input() notificPanel; + + // Dummy notifications + notifications = [{ + message: 'New contact added', + icon: 'assignment_ind', + time: '1 min ago', + route: '/inbox', + color: 'primary' + }, { + message: 'New message', + icon: 'chat', + time: '4 min ago', + route: '/chat', + color: 'accent' + }, { + message: 'Server rebooted', + icon: 'settings_backup_restore', + time: '12 min ago', + route: '/charts', + color: 'warn' + }] + + constructor(private router: Router) {} + + ngOnInit() { + this.router.events.subscribe((routeChange) => { + if (routeChange instanceof NavigationEnd) { + this.notificPanel.close(); + } + }); + } + clearAll(e) { + e.preventDefault(); + this.notifications = []; + } +} diff --git a/src/app/shared/components/shared-components.module.ts b/src/app/shared/components/shared-components.module.ts new file mode 100644 index 0000000..f0111b6 --- /dev/null +++ b/src/app/shared/components/shared-components.module.ts @@ -0,0 +1,66 @@ +import { NgModule } from "@angular/core"; +import { RouterModule } from "@angular/router"; +import { SharedMaterialModule } from "../shared-material.module"; +import { CommonModule } from "@angular/common"; +import { FormsModule } from "@angular/forms"; +import { PerfectScrollbarModule } from "ngx-perfect-scrollbar"; +import { SearchModule } from "../search/search.module"; +import { SharedPipesModule } from "../pipes/shared-pipes.module"; +import { FlexLayoutModule } from "@angular/flex-layout"; +import { SharedDirectivesModule } from "../directives/shared-directives.module"; + +// ONLY REQUIRED FOR **SIDE** NAVIGATION LAYOUT +import { HeaderSideComponent } from "./header-side/header-side.component"; +import { SidebarSideComponent } from "./sidebar-side/sidebar-side.component"; + +// ONLY FOR DEMO +import { CustomizerComponent } from "./customizer/customizer.component"; + +// ALWAYS REQUIRED +import { AdminLayoutComponent } from "./layouts/admin-layout/admin-layout.component"; +import { AuthLayoutComponent } from "./layouts/auth-layout/auth-layout.component"; +import { NotificationsComponent } from "./notifications/notifications.component"; +import { SidenavComponent } from "./sidenav/sidenav.component"; +import { FooterComponent } from "./footer/footer.component"; +import { BreadcrumbComponent } from "./breadcrumb/breadcrumb.component"; +import { AppComfirmComponent } from "../services/app-confirm/app-confirm.component"; +import { AppLoaderComponent } from "../services/app-loader/app-loader.component"; + +import { ButtonLoadingComponent } from "./button-loading/button-loading.component"; + + +const components = [ + SidenavComponent, + NotificationsComponent, + SidebarSideComponent, + HeaderSideComponent, + AdminLayoutComponent, + AuthLayoutComponent, + BreadcrumbComponent, + AppComfirmComponent, + AppLoaderComponent, + ButtonLoadingComponent, + CustomizerComponent, + FooterComponent, +]; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + RouterModule, + FlexLayoutModule, + PerfectScrollbarModule, + SearchModule, + SharedPipesModule, + SharedDirectivesModule, + SharedMaterialModule + ], + declarations: components, + entryComponents: [ + AppComfirmComponent, + AppLoaderComponent + ], + exports: components +}) +export class SharedComponentsModule {} diff --git a/src/app/shared/components/sidebar-side/sidebar-side.component.html b/src/app/shared/components/sidebar-side/sidebar-side.component.html new file mode 100644 index 0000000..74ff1fa --- /dev/null +++ b/src/app/shared/components/sidebar-side/sidebar-side.component.html @@ -0,0 +1,95 @@ + diff --git a/src/app/shared/components/sidebar-side/sidebar-side.component.ts b/src/app/shared/components/sidebar-side/sidebar-side.component.ts new file mode 100644 index 0000000..d453bcb --- /dev/null +++ b/src/app/shared/components/sidebar-side/sidebar-side.component.ts @@ -0,0 +1,48 @@ +import { Component, OnInit, OnDestroy, AfterViewInit } from "@angular/core"; +import { NavigationService } from "../../../shared/services/navigation.service"; +import { ThemeService } from "../../services/theme.service"; +import { Subscription } from "rxjs"; +import { ILayoutConf, LayoutService } from "app/shared/services/layout.service"; +import { JwtAuthService } from "app/shared/services/auth/jwt-auth.service"; + +@Component({ + selector: "app-sidebar-side", + templateUrl: "./sidebar-side.component.html" +}) +export class SidebarSideComponent implements OnInit, OnDestroy, AfterViewInit { + public menuItems: any[]; + public hasIconTypeMenuItem: boolean; + public iconTypeMenuTitle: string; + private menuItemsSub: Subscription; + public layoutConf: ILayoutConf; + + constructor( + private navService: NavigationService, + public themeService: ThemeService, + private layout: LayoutService, + public jwtAuth: JwtAuthService + ) {} + + ngOnInit() { + this.iconTypeMenuTitle = this.navService.iconTypeMenuTitle; + this.menuItemsSub = this.navService.menuItems$.subscribe(menuItem => { + this.menuItems = menuItem; + //Checks item list has any icon type. + this.hasIconTypeMenuItem = !!this.menuItems.filter( + item => item.type === "icon" + ).length; + }); + this.layoutConf = this.layout.layoutConf; + } + ngAfterViewInit() {} + ngOnDestroy() { + if (this.menuItemsSub) { + this.menuItemsSub.unsubscribe(); + } + } + toggleCollapse() { + this.layout.publishLayoutChange({ + sidebarCompactToggle: !this.layoutConf.sidebarCompactToggle + }); + } +} diff --git a/src/app/shared/components/sidenav/sidenav.component.ts b/src/app/shared/components/sidenav/sidenav.component.ts new file mode 100644 index 0000000..e2b6b0b --- /dev/null +++ b/src/app/shared/components/sidenav/sidenav.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit, Input } from "@angular/core"; + +@Component({ + selector: "app-sidenav", + templateUrl: "./sidenav.template.html" +}) +export class SidenavComponent { + @Input("items") public menuItems: any[] = []; + @Input("hasIconMenu") public hasIconTypeMenuItem: boolean; + @Input("iconMenuTitle") public iconTypeMenuTitle: string; + + constructor() {} + ngOnInit() {} + + // Only for demo purpose + addMenuItem() { + this.menuItems.push({ + name: "ITEM", + type: "dropDown", + tooltip: "Item", + icon: "done", + state: "material", + sub: [ + { name: "SUBITEM", state: "cards" }, + { name: "SUBITEM", state: "buttons" } + ] + }); + } +} diff --git a/src/app/shared/components/sidenav/sidenav.template.html b/src/app/shared/components/sidenav/sidenav.template.html new file mode 100644 index 0000000..1217df8 --- /dev/null +++ b/src/app/shared/components/sidenav/sidenav.template.html @@ -0,0 +1,133 @@ + diff --git a/src/app/shared/directives/dropdown-anchor.directive.ts b/src/app/shared/directives/dropdown-anchor.directive.ts new file mode 100644 index 0000000..7ab3aba --- /dev/null +++ b/src/app/shared/directives/dropdown-anchor.directive.ts @@ -0,0 +1,19 @@ +import { Directive, HostListener, Inject } from '@angular/core'; +import { DropdownLinkDirective } from './dropdown-link.directive'; + +@Directive({ + selector: '[appDropdownToggle]' +}) +export class DropdownAnchorDirective { + + protected navlink: DropdownLinkDirective; + + constructor( @Inject(DropdownLinkDirective) navlink: DropdownLinkDirective) { + this.navlink = navlink; + } + + @HostListener('click', ['$event']) + onClick(e: any) { + this.navlink.toggle(); + } +} diff --git a/src/app/shared/directives/dropdown-link.directive.ts b/src/app/shared/directives/dropdown-link.directive.ts new file mode 100644 index 0000000..ca31be4 --- /dev/null +++ b/src/app/shared/directives/dropdown-link.directive.ts @@ -0,0 +1,46 @@ +import { + Directive, HostBinding, Inject, Input, OnInit, OnDestroy +} from '@angular/core'; + +import { AppDropdownDirective } from './dropdown.directive'; + +@Directive({ + selector: '[appDropdownLink]' +}) +export class DropdownLinkDirective { + + @Input() public group: any; + + @HostBinding('class.open') + @Input() + get open(): boolean { + return this._open; + } + + set open(value: boolean) { + this._open = value; + if (value) { + this.nav.closeOtherLinks(this); + } + } + + protected _open: boolean; + protected nav: AppDropdownDirective; + + public constructor(@Inject(AppDropdownDirective) nav: AppDropdownDirective) { + this.nav = nav; + } + + public ngOnInit(): any { + this.nav.addLink(this); + } + + public ngOnDestroy(): any { + this.nav.removeGroup(this); + } + + public toggle(): any { + this.open = !this.open; + } + +} diff --git a/src/app/shared/directives/dropdown.directive.ts b/src/app/shared/directives/dropdown.directive.ts new file mode 100644 index 0000000..0e75fe1 --- /dev/null +++ b/src/app/shared/directives/dropdown.directive.ts @@ -0,0 +1,55 @@ +import { Directive } from '@angular/core'; +import { Router, NavigationEnd } from '@angular/router'; +import { DropdownLinkDirective } from './dropdown-link.directive'; +import { Subscription } from 'rxjs'; +import { filter } from 'rxjs/operators'; + +@Directive({ + selector: '[appDropdown]' +}) +export class AppDropdownDirective { + protected navlinks: Array = []; + + private _router: Subscription; + + public closeOtherLinks(openLink: DropdownLinkDirective): void { + this.navlinks.forEach((link: DropdownLinkDirective) => { + if (link !== openLink) { + link.open = false; + } + }); + } + + public addLink(link: DropdownLinkDirective): void { + this.navlinks.push(link); + } + + public removeGroup(link: DropdownLinkDirective): void { + const index = this.navlinks.indexOf(link); + if (index !== -1) { + this.navlinks.splice(index, 1); + } + } + + public getUrl() { + return this.router.url; + } + + public ngOnInit(): any { + this._router = this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe((event: NavigationEnd) => { + this.navlinks.forEach((link: DropdownLinkDirective) => { + if (link.group) { + const routeUrl = this.getUrl(); + const currentUrl = routeUrl.split('/'); + if (currentUrl.indexOf( link.group ) > 0) { + link.open = true; + this.closeOtherLinks(link); + } + } + }); + }); + } + + constructor( private router: Router) {} + +} diff --git a/src/app/shared/directives/font-size.directive.ts b/src/app/shared/directives/font-size.directive.ts new file mode 100644 index 0000000..acf8060 --- /dev/null +++ b/src/app/shared/directives/font-size.directive.ts @@ -0,0 +1,9 @@ +import { Directive, ElementRef, Attribute, OnInit } from '@angular/core'; + +@Directive({ selector: '[fontSize]' }) +export class FontSizeDirective implements OnInit { + constructor( @Attribute('fontSize') public fontSize: string, private el: ElementRef) { } + ngOnInit() { + this.el.nativeElement.fontSize = this.fontSize; + } +} diff --git a/src/app/shared/directives/matx-highlight.directive.ts b/src/app/shared/directives/matx-highlight.directive.ts new file mode 100644 index 0000000..f922b62 --- /dev/null +++ b/src/app/shared/directives/matx-highlight.directive.ts @@ -0,0 +1,82 @@ +import { + Directive, + ElementRef, + Attribute, + OnInit, + Input, + Renderer2, + NgZone, + SimpleChanges, + OnChanges, + OnDestroy, + ChangeDetectorRef +} from "@angular/core"; +import * as hl from "highlight.js"; +import { HttpClient } from "@angular/common/http"; +import { Subject } from "rxjs"; +import { takeUntil } from "rxjs/operators"; + +@Directive({ + host: { + "[class.hljs]": "true", + "[innerHTML]": "highlightedCode" + }, + selector: "[matxHighlight]" +}) +export class MatXHighlightDirective implements OnInit, OnChanges, OnDestroy { + constructor( + private el: ElementRef, + private cdr: ChangeDetectorRef, + private _zone: NgZone, + private http: HttpClient + ) { + this.unsubscribeAll = new Subject(); + } + // Inner highlighted html + highlightedCode: string; + + @Input() path: string; + @Input("matxHighlight") code: string; + private unsubscribeAll: Subject; + @Input() languages: string[]; + + ngOnInit() { + if (this.code) { + this.highlightElement(this.code); + } + if (this.path) { + this.highlightedCode = "Loading..." + this.http + .get(this.path, { responseType: "text" }) + .pipe(takeUntil(this.unsubscribeAll)) + .subscribe(response => { + this.highlightElement(response, this.languages); + }); + } + } + + ngOnDestroy() { + this.unsubscribeAll.next(); + this.unsubscribeAll.complete(); + } + + ngOnChanges(changes: SimpleChanges) { + if ( + changes["code"] && + changes["code"].currentValue && + changes["code"].currentValue !== changes["code"].previousValue + ) { + this.highlightElement(this.code); + // console.log('hljs on change', changes) + } + } + + highlightElement(code: string, languages?: string[]) { + this._zone.runOutsideAngular(() => { + const res = hl.highlightAuto(code); + this.highlightedCode = res.value; + // this.cdr.detectChanges(); + // console.log(languages) + }); + } +} diff --git a/src/app/shared/directives/matx-side-nav-toggle.directive.ts b/src/app/shared/directives/matx-side-nav-toggle.directive.ts new file mode 100644 index 0000000..10bfce8 --- /dev/null +++ b/src/app/shared/directives/matx-side-nav-toggle.directive.ts @@ -0,0 +1,46 @@ +import { Directive, Host, Self, Optional, OnDestroy, OnInit } from '@angular/core'; +import { MediaChange, MediaObserver } from "@angular/flex-layout"; +import { Subscription } from "rxjs"; +import { MatSidenav } from '@angular/material/sidenav'; + + +@Directive({ + selector: '[MatXSideNavToggle]' +}) +export class MatXSideNavToggleDirective implements OnInit, OnDestroy { + isMobile; + screenSizeWatcher: Subscription; + constructor( + private mediaObserver: MediaObserver, + @Host() @Self() @Optional() public sideNav: MatSidenav + ) { + } + + ngOnInit() { + this.initSideNav(); + } + + ngOnDestroy() { + if(this.screenSizeWatcher) { + this.screenSizeWatcher.unsubscribe() + } + } + + updateSidenav() { + var self = this; + setTimeout(() => { + self.sideNav.opened = !self.isMobile; + self.sideNav.mode = self.isMobile ? 'over' : 'side'; + }) + } + initSideNav() { + this.isMobile = this.mediaObserver.isActive('xs') || this.mediaObserver.isActive('sm'); + // console.log(this.isMobile) + this.updateSidenav(); + this.screenSizeWatcher = this.mediaObserver.media$.subscribe((change: MediaChange) => { + this.isMobile = (change.mqAlias == 'xs') || (change.mqAlias == 'sm'); + this.updateSidenav(); + }); + } + +} diff --git a/src/app/shared/directives/matx-sidenav-helper/matx-sidenav-helper.directive.ts b/src/app/shared/directives/matx-sidenav-helper/matx-sidenav-helper.directive.ts new file mode 100644 index 0000000..7b20977 --- /dev/null +++ b/src/app/shared/directives/matx-sidenav-helper/matx-sidenav-helper.directive.ts @@ -0,0 +1,91 @@ +import { + Directive, + OnInit, + OnDestroy, + HostBinding, + Input, + HostListener +} from "@angular/core"; +import { takeUntil } from "rxjs/operators"; +import { Subject } from "rxjs"; +import { MatchMediaService } from "app/shared/services/match-media.service"; +import { MatXSidenavHelperService } from "./matx-sidenav-helper.service"; +import { MatSidenav } from "@angular/material/sidenav"; +import { MediaObserver } from "@angular/flex-layout"; + +@Directive({ + selector: "[matxSidenavHelper]" +}) +export class MatXSidenavHelperDirective implements OnInit, OnDestroy { + @HostBinding("class.is-open") + isOpen: boolean; + + @Input("matxSidenavHelper") + id: string; + + @Input("isOpen") + isOpenBreakpoint: string; + + private unsubscribeAll: Subject; + + constructor( + private matchMediaService: MatchMediaService, + private matxSidenavHelperService: MatXSidenavHelperService, + private matSidenav: MatSidenav, + private mediaObserver: MediaObserver + ) { + // Set the default value + this.isOpen = true; + + this.unsubscribeAll = new Subject(); + } + + ngOnInit(): void { + this.matxSidenavHelperService.setSidenav(this.id, this.matSidenav); + + if (this.mediaObserver.isActive(this.isOpenBreakpoint)) { + this.isOpen = true; + this.matSidenav.mode = "side"; + this.matSidenav.toggle(true); + } else { + this.isOpen = false; + this.matSidenav.mode = "over"; + this.matSidenav.toggle(false); + } + + this.matchMediaService.onMediaChange + .pipe(takeUntil(this.unsubscribeAll)) + .subscribe(() => { + if (this.mediaObserver.isActive(this.isOpenBreakpoint)) { + this.isOpen = true; + this.matSidenav.mode = "side"; + this.matSidenav.toggle(true); + } else { + this.isOpen = false; + this.matSidenav.mode = "over"; + this.matSidenav.toggle(false); + } + }); + } + + ngOnDestroy(): void { + this.unsubscribeAll.next(); + this.unsubscribeAll.complete(); + } +} + +@Directive({ + selector: "[matxSidenavToggler]" +}) +export class MatXSidenavTogglerDirective { + @Input("matxSidenavToggler") + public id: any; + + constructor(private matxSidenavHelperService: MatXSidenavHelperService) {} + + @HostListener("click") + onClick() { + // console.log(this.matxSidenavHelperService.getSidenav(this.id)) + this.matxSidenavHelperService.getSidenav(this.id).toggle(); + } +} diff --git a/src/app/shared/directives/matx-sidenav-helper/matx-sidenav-helper.service.ts b/src/app/shared/directives/matx-sidenav-helper/matx-sidenav-helper.service.ts new file mode 100644 index 0000000..73066e4 --- /dev/null +++ b/src/app/shared/directives/matx-sidenav-helper/matx-sidenav-helper.service.ts @@ -0,0 +1,21 @@ +import { Injectable } from "@angular/core"; +import { MatSidenav } from "@angular/material/sidenav"; + +@Injectable({ + providedIn: "root" +}) +export class MatXSidenavHelperService { + sidenavList: MatSidenav[]; + + constructor() { + this.sidenavList = []; + } + + setSidenav(id, sidenav): void { + this.sidenavList[id] = sidenav; + } + + getSidenav(id): any { + return this.sidenavList[id]; + } +} diff --git a/src/app/shared/directives/scroll-to.directive.ts b/src/app/shared/directives/scroll-to.directive.ts new file mode 100644 index 0000000..171355b --- /dev/null +++ b/src/app/shared/directives/scroll-to.directive.ts @@ -0,0 +1,64 @@ +import { Directive, ElementRef, Attribute, OnInit, HostListener } from '@angular/core'; + +@Directive({ selector: '[scrollTo]' }) +export class ScrollToDirective implements OnInit { + constructor( @Attribute('scrollTo') public elmID: string, private el: ElementRef) { } + + ngOnInit() {} + + currentYPosition() { + // Firefox, Chrome, Opera, Safari + if (self.pageYOffset) return self.pageYOffset; + // Internet Explorer 6 - standards mode + if (document.documentElement && document.documentElement.scrollTop) + return document.documentElement.scrollTop; + // Internet Explorer 6, 7 and 8 + if (document.body.scrollTop) return document.body.scrollTop; + return 0; + }; + + elmYPosition(eID) { + var elm = document.getElementById(eID); + var y = elm.offsetTop; + var node: any = elm; + while (node.offsetParent && node.offsetParent != document.body) { + node = node.offsetParent; + y += node.offsetTop; + } + return y; + }; + + @HostListener('click', ['$event']) + smoothScroll() { + if(!this.elmID) + return; + var startY = this.currentYPosition(); + var stopY = this.elmYPosition(this.elmID); + var distance = stopY > startY ? stopY - startY : startY - stopY; + if (distance < 100) { + scrollTo(0, stopY); + return; + } + var speed = Math.round(distance / 50); + if (speed >= 20) speed = 20; + var step = Math.round(distance / 25); + var leapY = stopY > startY ? startY + step : startY - step; + var timer = 0; + if (stopY > startY) { + for (var i = startY; i < stopY; i += step) { + setTimeout("window.scrollTo(0, " + leapY + ")", timer * speed); + leapY += step; + if (leapY > stopY) leapY = stopY; + timer++; + } + return; + } + for (var i = startY; i > stopY; i -= step) { + setTimeout("window.scrollTo(0, " + leapY + ")", timer * speed); + leapY -= step; + if (leapY < stopY) leapY = stopY; + timer++; + } + return false; + }; +} \ No newline at end of file diff --git a/src/app/shared/directives/shared-directives.module.ts b/src/app/shared/directives/shared-directives.module.ts new file mode 100644 index 0000000..e267728 --- /dev/null +++ b/src/app/shared/directives/shared-directives.module.ts @@ -0,0 +1,33 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { FontSizeDirective } from './font-size.directive'; +import { ScrollToDirective } from './scroll-to.directive'; +import { AppDropdownDirective } from './dropdown.directive'; +import { DropdownAnchorDirective } from './dropdown-anchor.directive'; +import { DropdownLinkDirective } from './dropdown-link.directive'; +import { MatXSideNavToggleDirective } from './matx-side-nav-toggle.directive'; +import { MatXSidenavHelperDirective, MatXSidenavTogglerDirective } from './matx-sidenav-helper/matx-sidenav-helper.directive'; +import { MatXHighlightDirective } from './matx-highlight.directive'; + + +const directives = [ + FontSizeDirective, + ScrollToDirective, + AppDropdownDirective, + DropdownAnchorDirective, + DropdownLinkDirective, + MatXSideNavToggleDirective, + MatXSidenavHelperDirective, + MatXSidenavTogglerDirective, + MatXHighlightDirective +] + +@NgModule({ + imports: [ + CommonModule + ], + declarations: directives, + exports: directives +}) +export class SharedDirectivesModule {} \ No newline at end of file diff --git a/src/app/shared/guards/auth.guard.ts b/src/app/shared/guards/auth.guard.ts new file mode 100644 index 0000000..d97239d --- /dev/null +++ b/src/app/shared/guards/auth.guard.ts @@ -0,0 +1,27 @@ +import { Injectable } from '@angular/core'; +import { + CanActivate, + ActivatedRouteSnapshot, + RouterStateSnapshot, + Router, +} from '@angular/router'; +import { JwtAuthService } from '../services/auth/jwt-auth.service'; + +@Injectable() +export class AuthGuard implements CanActivate { + + constructor(private router: Router, private jwtAuth: JwtAuthService) {} + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { + if (this.jwtAuth.isLoggedIn()) { + return true; + } else { + this.router.navigate(['/sessions/signin'], { + queryParams: { + return: state.url + } + }); + return false; + } + } +} \ No newline at end of file diff --git a/src/app/shared/guards/user-role.guard.ts b/src/app/shared/guards/user-role.guard.ts new file mode 100644 index 0000000..386a60d --- /dev/null +++ b/src/app/shared/guards/user-role.guard.ts @@ -0,0 +1,31 @@ +import { Injectable } from "@angular/core"; +import { + CanActivate, + ActivatedRouteSnapshot, + RouterStateSnapshot +} from "@angular/router"; +import { JwtAuthService } from "../services/auth/jwt-auth.service"; +import { MatSnackBar } from "@angular/material/snack-bar"; + +@Injectable() +export class UserRoleGuard implements CanActivate { + constructor( + private jwtAuth: JwtAuthService, + private snack: MatSnackBar + ) {} + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { + var user = this.jwtAuth.getUser(); + + if (route?.data?.roles?.includes(user.role)) { + return true; + } else { + this.snack.open("You do not have access to this page!", "View Documentaion") + .onAction() + .subscribe(() => { + window.open('http://demos.ui-lib.com/matx-angular-doc/authentication.html', '_blank'); + }); + return false; + } + } +} diff --git a/src/app/shared/helpers/url.helper.ts b/src/app/shared/helpers/url.helper.ts new file mode 100644 index 0000000..fd0c26d --- /dev/null +++ b/src/app/shared/helpers/url.helper.ts @@ -0,0 +1,10 @@ +export function getQueryParam(prop) { + var params = {}; + var search = decodeURIComponent(window.location.href.slice(window.location.href.indexOf('?') + 1)); + var definitions = search.split('&'); + definitions.forEach(function (val, key) { + var parts = val.split('=', 2); + params[parts[0]] = parts[1]; + }); + return (prop && prop in params) ? params[prop] : params; +} \ No newline at end of file diff --git a/src/app/shared/helpers/utils.ts b/src/app/shared/helpers/utils.ts new file mode 100644 index 0000000..64248af --- /dev/null +++ b/src/app/shared/helpers/utils.ts @@ -0,0 +1,81 @@ +export function getIndexBy(array: Array<{}>, { name, value }): number { + for (let i = 0; i < array.length; i++) { + if (array[i][name] === value) { + return i; + } + } + return -1; +} + +function currentYPosition() { + if (!window) { + return; + } + // Firefox, Chrome, Opera, Safari + if (window.pageYOffset) return window.pageYOffset; + // Internet Explorer 6 - standards mode + if (document.documentElement && document.documentElement.scrollTop) + return document.documentElement.scrollTop; + // Internet Explorer 6, 7 and 8 + if (document.body.scrollTop) return document.body.scrollTop; + return 0; +} + +function elmYPosition(elm) { + var y = elm.offsetTop; + var node = elm; + while (node.offsetParent && node.offsetParent !== document.body) { + node = node.offsetParent; + y += node.offsetTop; + } + return y; +} + +export function scrollTo(selector) { + var elm = document.querySelector(selector); + if (!selector || !elm) { + return; + } + var startY = currentYPosition(); + var stopY = elmYPosition(elm); + var distance = stopY > startY ? stopY - startY : startY - stopY; + if (distance < 100) { + window.scrollTo(0, stopY); + return; + } + var speed = Math.round(distance / 50); + if (speed >= 20) speed = 20; + var step = Math.round(distance / 25); + var leapY = stopY > startY ? startY + step : startY - step; + var timer = 0; + if (stopY > startY) { + for (var i = startY; i < stopY; i += step) { + setTimeout( + (function(leapY) { + return () => { + window.scrollTo(0, leapY); + }; + })(leapY), + timer * speed + ); + leapY += step; + if (leapY > stopY) leapY = stopY; + timer++; + } + return; + } + for (let i = startY; i > stopY; i -= step) { + setTimeout( + (function(leapY) { + return () => { + window.scrollTo(0, leapY); + }; + })(leapY), + timer * speed + ); + leapY -= step; + if (leapY < stopY) leapY = stopY; + timer++; + } + return false; +} \ No newline at end of file diff --git a/src/app/shared/helpers/window.helper.ts b/src/app/shared/helpers/window.helper.ts new file mode 100644 index 0000000..40a8d2f --- /dev/null +++ b/src/app/shared/helpers/window.helper.ts @@ -0,0 +1,32 @@ +import { ClassProvider, FactoryProvider, InjectionToken } from "@angular/core"; + +export function _window(): any { + return window; +} +export const WINDOW = new InjectionToken("WindowToken"); +export abstract class WindowRef { + get nativeWindow(): Window { + throw new Error("Not implemented."); + } +} +export class BrowserWindowRef extends WindowRef { + constructor() { + super(); + } + get nativeWindow(): Window { + return _window(); + } +} +const browserWindowProvider: ClassProvider = { + provide: WindowRef, + useClass: BrowserWindowRef +}; +export const windowProvider: FactoryProvider = { + provide: WINDOW, + useFactory: _window, + deps: [] +}; +export const WINDOW_PROVIDERS = [ + browserWindowProvider, + windowProvider +]; diff --git a/src/app/shared/inmemory-db/calendarEvents.ts b/src/app/shared/inmemory-db/calendarEvents.ts new file mode 100644 index 0000000..7e553a1 --- /dev/null +++ b/src/app/shared/inmemory-db/calendarEvents.ts @@ -0,0 +1,58 @@ +import { + startOfDay, + endOfDay, + subDays, + addDays, + endOfMonth, + isSameDay, + isSameMonth, + addHours +} from 'date-fns'; +import { MatXCalendarEvent } from '../../shared/models/event.model'; + +export class CalendarEventDB { + private colors: any = { + red: { + primary: '#f44336', + secondary: '#FAE3E3' + }, + blue: { + primary: '#247ba0 ', + secondary: '#D1E8FF' + }, + yellow: { + primary: '#ffd97d', + secondary: '#FDF1BA' + } + }; + + public events: any[] = [{ + _id: '100', + start: subDays(startOfDay(new Date()), 1), + end: addDays(new Date(), 1), + title: 'A 3 day event', + color: this.colors.red + }, { + _id: '101', + start: startOfDay(new Date()), + title: 'An event with no end date', + color: this.colors.yellow + }, { + _id: '102', + start: subDays(endOfMonth(new Date()), 3), + end: addDays(endOfMonth(new Date()), 3), + title: 'A long event that spans 2 months', + color: this.colors.blue + }, { + _id: '103', + start: addHours(startOfDay(new Date()), 2), + end: new Date(), + title: 'A draggable and resizable event', + color: this.colors.yellow, + resizable: { + beforeStart: true, + afterEnd: true + }, + draggable: true + }]; +} \ No newline at end of file diff --git a/src/app/shared/inmemory-db/chat-db.ts b/src/app/shared/inmemory-db/chat-db.ts new file mode 100644 index 0000000..e667c7f --- /dev/null +++ b/src/app/shared/inmemory-db/chat-db.ts @@ -0,0 +1,177 @@ +export class ChatDB { + public static user = [ + { + id: "7863a6802ez0e277a0f98534", + name: "John Doe", + avatar: "assets/images/face-1.jpg", + status: "online", + chatInfo: [ + { + chatId: "89564a680b3249760ea21fe77", + contactId: "323sa680b3249760ea21rt47", + contactName: "Frank Powell", + unread: 4, + lastChatTime: "2017-06-12T02:10:18.931Z" + }, + { + chatId: "3289564a680b2134760ea21fe7753", + contactId: "14663a3406eb47ffa63d4fec9429cb71", + contactName: "Betty Diaz", + unread: 0, + lastChatTime: "2019-03-10T02:10:18.931Z" + } + ] + } + ]; + public static contacts = [ + { + id: "323sa680b3249760ea21rt47", + name: "Frank Powell", + avatar: "assets/images/faces/13.jpg", + status: "online", + mood: "" + }, + { + id: "14663a3406eb47ffa63d4fec9429cb71", + name: "Betty Diaz", + avatar: "assets/images/faces/12.jpg", + status: "online", + mood: "" + }, + { + id: "43bd9bc59d164b5aea498e3ae1c24c3c", + name: "Brian Stephens", + avatar: "assets/images/faces/3.jpg", + status: "online", + mood: "" + }, + { + id: "3fc8e01f3ce649d1caf884fbf4f698e4", + name: "Jacqueline Day", + avatar: "assets/images/faces/16.jpg", + status: "offline", + mood: "" + }, + { + id: "e929b1d790ab49968ed8e34648553df4", + name: "Arthur Mendoza", + avatar: "assets/images/faces/10.jpg", + status: "online", + mood: "" + }, + { + id: "d6caf04bba614632b5fecf91aebf4564", + name: "Jeremy Lee", + avatar: "assets/images/faces/9.jpg", + status: "offline", + mood: "" + }, + { + id: "be0fb188c8e242f097fafa24632107e4", + name: "Johnny Newman", + avatar: "assets/images/faces/5.jpg", + status: "offline", + mood: "" + }, + { + id: "dea902191b964a68ba5f2d93cff37e13", + name: "Jeffrey Little", + avatar: "assets/images/faces/15.jpg", + status: "online", + mood: "" + }, + { + id: "0bf58f5ccc4543a9f8747350b7bda3c7", + name: "Barbara Romero", + avatar: "assets/images/faces/4.jpg", + status: "offline", + mood: "" + }, + { + id: "c5d7498bbcb84d81fc72168871ac6a6e", + name: "Daniel James", + avatar: "assets/images/faces/2.jpg", + status: "offline", + mood: "" + }, + { + id: "97bfbdd9413e46efdaca2010400fe18c", + name: "Alice Sanders", + avatar: "assets/images/faces/17.jpg", + status: "offline", + mood: "" + } + ]; + public static chatCollection = [ + { + id: "89564a680b3249760ea21fe77", + chats: [ + { + contactId: "323sa680b3249760ea21rt47", + text: "Do you ever find yourself falling into the “discount trap?”", + time: "2018-02-10T08:45:28.291Z" + }, + { + contactId: "7863a6802ez0e277a0f98534", + text: "Giving away your knowledge or product just to gain clients?", + time: "2018-02-10T08:45:28.291Z" + }, + { + contactId: "323sa680b3249760ea21rt47", + text: "Yes", + time: "2018-02-10T08:45:28.291Z" + }, + { + contactId: "7863a6802ez0e277a0f98534", + text: "Don’t feel bad. It happens to a lot of us", + time: "2018-02-10T08:45:28.291Z" + }, + { + contactId: "323sa680b3249760ea21rt47", + text: "Do you ever find yourself falling into the “discount trap?”", + time: "2018-02-10T08:45:28.291Z" + }, + { + contactId: "7863a6802ez0e277a0f98534", + text: "Giving away your knowledge or product just to gain clients?", + time: "2018-02-10T08:45:28.291Z" + }, + { + contactId: "323sa680b3249760ea21rt47", + text: "Yes", + time: "2018-02-10T08:45:28.291Z" + }, + { + contactId: "7863a6802ez0e277a0f98534", + text: "Don’t feel bad. It happens to a lot of us", + time: "2018-02-10T08:45:28.291Z" + } + ] + }, + { + id: "3289564a680b2134760ea21fe7753", + chats: [ + { + contactId: "14663a3406eb47ffa63d4fec9429cb71", + text: "Do you ever find yourself falling into the “discount trap?”", + time: "2019-03-10T08:45:28.291Z" + }, + { + contactId: "7863a6802ez0e277a0f98534", + text: "Giving away your knowledge or product just to gain clients?", + time: "2019-03-10T08:45:28.291Z" + }, + { + contactId: "14663a3406eb47ffa63d4fec9429cb71", + text: "Yes", + time: "2019-03-10T08:45:28.291Z" + }, + { + contactId: "7863a6802ez0e277a0f98534", + text: "Don’t feel bad. It happens to a lot of us", + time: "2019-03-10T08:45:28.291Z" + } + ] + } + ]; +} diff --git a/src/app/shared/inmemory-db/countries.ts b/src/app/shared/inmemory-db/countries.ts new file mode 100644 index 0000000..9fa7bd6 --- /dev/null +++ b/src/app/shared/inmemory-db/countries.ts @@ -0,0 +1,247 @@ +export class CountryDB { + public countries = [ + { name: 'Afghanistan', code: 'AF' }, + { name: 'Åland Islands', code: 'AX' }, + { name: 'Albania', code: 'AL' }, + { name: 'Algeria', code: 'DZ' }, + { name: 'American Samoa', code: 'AS' }, + { name: 'AndorrA', code: 'AD' }, + { name: 'Angola', code: 'AO' }, + { name: 'Anguilla', code: 'AI' }, + { name: 'Antarctica', code: 'AQ' }, + { name: 'Antigua and Barbuda', code: 'AG' }, + { name: 'Argentina', code: 'AR' }, + { name: 'Armenia', code: 'AM' }, + { name: 'Aruba', code: 'AW' }, + { name: 'Australia', code: 'AU' }, + { name: 'Austria', code: 'AT' }, + { name: 'Azerbaijan', code: 'AZ' }, + { name: 'Bahamas', code: 'BS' }, + { name: 'Bahrain', code: 'BH' }, + { name: 'Bangladesh', code: 'BD' }, + { name: 'Barbados', code: 'BB' }, + { name: 'Belarus', code: 'BY' }, + { name: 'Belgium', code: 'BE' }, + { name: 'Belize', code: 'BZ' }, + { name: 'Benin', code: 'BJ' }, + { name: 'Bermuda', code: 'BM' }, + { name: 'Bhutan', code: 'BT' }, + { name: 'Bolivia', code: 'BO' }, + { name: 'Bosnia and Herzegovina', code: 'BA' }, + { name: 'Botswana', code: 'BW' }, + { name: 'Bouvet Island', code: 'BV' }, + { name: 'Brazil', code: 'BR' }, + { name: 'British Indian Ocean Territory', code: 'IO' }, + { name: 'Brunei Darussalam', code: 'BN' }, + { name: 'Bulgaria', code: 'BG' }, + { name: 'Burkina Faso', code: 'BF' }, + { name: 'Burundi', code: 'BI' }, + { name: 'Cambodia', code: 'KH' }, + { name: 'Cameroon', code: 'CM' }, + { name: 'Canada', code: 'CA' }, + { name: 'Cape Verde', code: 'CV' }, + { name: 'Cayman Islands', code: 'KY' }, + { name: 'Central African Republic', code: 'CF' }, + { name: 'Chad', code: 'TD' }, + { name: 'Chile', code: 'CL' }, + { name: 'China', code: 'CN' }, + { name: 'Christmas Island', code: 'CX' }, + { name: 'Cocos (Keeling) Islands', code: 'CC' }, + { name: 'Colombia', code: 'CO' }, + { name: 'Comoros', code: 'KM' }, + { name: 'Congo', code: 'CG' }, + { name: 'Congo, The Democratic Republic of the', code: 'CD' }, + { name: 'Cook Islands', code: 'CK' }, + { name: 'Costa Rica', code: 'CR' }, + { name: 'Cote D\'Ivoire', code: 'CI' }, + { name: 'Croatia', code: 'HR' }, + { name: 'Cuba', code: 'CU' }, + { name: 'Cyprus', code: 'CY' }, + { name: 'Czech Republic', code: 'CZ' }, + { name: 'Denmark', code: 'DK' }, + { name: 'Djibouti', code: 'DJ' }, + { name: 'Dominica', code: 'DM' }, + { name: 'Dominican Republic', code: 'DO' }, + { name: 'Ecuador', code: 'EC' }, + { name: 'Egypt', code: 'EG' }, + { name: 'El Salvador', code: 'SV' }, + { name: 'Equatorial Guinea', code: 'GQ' }, + { name: 'Eritrea', code: 'ER' }, + { name: 'Estonia', code: 'EE' }, + { name: 'Ethiopia', code: 'ET' }, + { name: 'Falkland Islands (Malvinas)', code: 'FK' }, + { name: 'Faroe Islands', code: 'FO' }, + { name: 'Fiji', code: 'FJ' }, + { name: 'Finland', code: 'FI' }, + { name: 'France', code: 'FR' }, + { name: 'French Guiana', code: 'GF' }, + { name: 'French Polynesia', code: 'PF' }, + { name: 'French Southern Territories', code: 'TF' }, + { name: 'Gabon', code: 'GA' }, + { name: 'Gambia', code: 'GM' }, + { name: 'Georgia', code: 'GE' }, + { name: 'Germany', code: 'DE' }, + { name: 'Ghana', code: 'GH' }, + { name: 'Gibraltar', code: 'GI' }, + { name: 'Greece', code: 'GR' }, + { name: 'Greenland', code: 'GL' }, + { name: 'Grenada', code: 'GD' }, + { name: 'Guadeloupe', code: 'GP' }, + { name: 'Guam', code: 'GU' }, + { name: 'Guatemala', code: 'GT' }, + { name: 'Guernsey', code: 'GG' }, + { name: 'Guinea', code: 'GN' }, + { name: 'Guinea-Bissau', code: 'GW' }, + { name: 'Guyana', code: 'GY' }, + { name: 'Haiti', code: 'HT' }, + { name: 'Heard Island and Mcdonald Islands', code: 'HM' }, + { name: 'Holy See (Vatican City State)', code: 'VA' }, + { name: 'Honduras', code: 'HN' }, + { name: 'Hong Kong', code: 'HK' }, + { name: 'Hungary', code: 'HU' }, + { name: 'Iceland', code: 'IS' }, + { name: 'India', code: 'IN' }, + { name: 'Indonesia', code: 'ID' }, + { name: 'Iran, Islamic Republic Of', code: 'IR' }, + { name: 'Iraq', code: 'IQ' }, + { name: 'Ireland', code: 'IE' }, + { name: 'Isle of Man', code: 'IM' }, + { name: 'Israel', code: 'IL' }, + { name: 'Italy', code: 'IT' }, + { name: 'Jamaica', code: 'JM' }, + { name: 'Japan', code: 'JP' }, + { name: 'Jersey', code: 'JE' }, + { name: 'Jordan', code: 'JO' }, + { name: 'Kazakhstan', code: 'KZ' }, + { name: 'Kenya', code: 'KE' }, + { name: 'Kiribati', code: 'KI' }, + { name: 'Korea, Democratic People\'S Republic of', code: 'KP' }, + { name: 'Korea, Republic of', code: 'KR' }, + { name: 'Kuwait', code: 'KW' }, + { name: 'Kyrgyzstan', code: 'KG' }, + { name: 'Lao People\'S Democratic Republic', code: 'LA' }, + { name: 'Latvia', code: 'LV' }, + { name: 'Lebanon', code: 'LB' }, + { name: 'Lesotho', code: 'LS' }, + { name: 'Liberia', code: 'LR' }, + { name: 'Libyan Arab Jamahiriya', code: 'LY' }, + { name: 'Liechtenstein', code: 'LI' }, + { name: 'Lithuania', code: 'LT' }, + { name: 'Luxembourg', code: 'LU' }, + { name: 'Macao', code: 'MO' }, + { name: 'Macedonia, The Former Yugoslav Republic of', code: 'MK' }, + { name: 'Madagascar', code: 'MG' }, + { name: 'Malawi', code: 'MW' }, + { name: 'Malaysia', code: 'MY' }, + { name: 'Maldives', code: 'MV' }, + { name: 'Mali', code: 'ML' }, + { name: 'Malta', code: 'MT' }, + { name: 'Marshall Islands', code: 'MH' }, + { name: 'Martinique', code: 'MQ' }, + { name: 'Mauritania', code: 'MR' }, + { name: 'Mauritius', code: 'MU' }, + { name: 'Mayotte', code: 'YT' }, + { name: 'Mexico', code: 'MX' }, + { name: 'Micronesia, Federated States of', code: 'FM' }, + { name: 'Moldova, Republic of', code: 'MD' }, + { name: 'Monaco', code: 'MC' }, + { name: 'Mongolia', code: 'MN' }, + { name: 'Montserrat', code: 'MS' }, + { name: 'Morocco', code: 'MA' }, + { name: 'Mozambique', code: 'MZ' }, + { name: 'Myanmar', code: 'MM' }, + { name: 'Namibia', code: 'NA' }, + { name: 'Nauru', code: 'NR' }, + { name: 'Nepal', code: 'NP' }, + { name: 'Netherlands', code: 'NL' }, + { name: 'Netherlands Antilles', code: 'AN' }, + { name: 'New Caledonia', code: 'NC' }, + { name: 'New Zealand', code: 'NZ' }, + { name: 'Nicaragua', code: 'NI' }, + { name: 'Niger', code: 'NE' }, + { name: 'Nigeria', code: 'NG' }, + { name: 'Niue', code: 'NU' }, + { name: 'Norfolk Island', code: 'NF' }, + { name: 'Northern Mariana Islands', code: 'MP' }, + { name: 'Norway', code: 'NO' }, + { name: 'Oman', code: 'OM' }, + { name: 'Pakistan', code: 'PK' }, + { name: 'Palau', code: 'PW' }, + { name: 'Palestinian Territory, Occupied', code: 'PS' }, + { name: 'Panama', code: 'PA' }, + { name: 'Papua New Guinea', code: 'PG' }, + { name: 'Paraguay', code: 'PY' }, + { name: 'Peru', code: 'PE' }, + { name: 'Philippines', code: 'PH' }, + { name: 'Pitcairn', code: 'PN' }, + { name: 'Poland', code: 'PL' }, + { name: 'Portugal', code: 'PT' }, + { name: 'Puerto Rico', code: 'PR' }, + { name: 'Qatar', code: 'QA' }, + { name: 'Reunion', code: 'RE' }, + { name: 'Romania', code: 'RO' }, + { name: 'Russian Federation', code: 'RU' }, + { name: 'RWANDA', code: 'RW' }, + { name: 'Saint Helena', code: 'SH' }, + { name: 'Saint Kitts and Nevis', code: 'KN' }, + { name: 'Saint Lucia', code: 'LC' }, + { name: 'Saint Pierre and Miquelon', code: 'PM' }, + { name: 'Saint Vincent and the Grenadines', code: 'VC' }, + { name: 'Samoa', code: 'WS' }, + { name: 'San Marino', code: 'SM' }, + { name: 'Sao Tome and Principe', code: 'ST' }, + { name: 'Saudi Arabia', code: 'SA' }, + { name: 'Senegal', code: 'SN' }, + { name: 'Serbia and Montenegro', code: 'CS' }, + { name: 'Seychelles', code: 'SC' }, + { name: 'Sierra Leone', code: 'SL' }, + { name: 'Singapore', code: 'SG' }, + { name: 'Slovakia', code: 'SK' }, + { name: 'Slovenia', code: 'SI' }, + { name: 'Solomon Islands', code: 'SB' }, + { name: 'Somalia', code: 'SO' }, + { name: 'South Africa', code: 'ZA' }, + { name: 'South Georgia and the South Sandwich Islands', code: 'GS' }, + { name: 'Spain', code: 'ES' }, + { name: 'Sri Lanka', code: 'LK' }, + { name: 'Sudan', code: 'SD' }, + { name: 'Suriname', code: 'SR' }, + { name: 'Svalbard and Jan Mayen', code: 'SJ' }, + { name: 'Swaziland', code: 'SZ' }, + { name: 'Sweden', code: 'SE' }, + { name: 'Switzerland', code: 'CH' }, + { name: 'Syrian Arab Republic', code: 'SY' }, + { name: 'Taiwan, Province of China', code: 'TW' }, + { name: 'Tajikistan', code: 'TJ' }, + { name: 'Tanzania, United Republic of', code: 'TZ' }, + { name: 'Thailand', code: 'TH' }, + { name: 'Timor-Leste', code: 'TL' }, + { name: 'Togo', code: 'TG' }, + { name: 'Tokelau', code: 'TK' }, + { name: 'Tonga', code: 'TO' }, + { name: 'Trinidad and Tobago', code: 'TT' }, + { name: 'Tunisia', code: 'TN' }, + { name: 'Turkey', code: 'TR' }, + { name: 'Turkmenistan', code: 'TM' }, + { name: 'Turks and Caicos Islands', code: 'TC' }, + { name: 'Tuvalu', code: 'TV' }, + { name: 'Uganda', code: 'UG' }, + { name: 'Ukraine', code: 'UA' }, + { name: 'United Arab Emirates', code: 'AE' }, + { name: 'United Kingdom', code: 'GB' }, + { name: 'United States', code: 'US' }, + { name: 'United States Minor Outlying Islands', code: 'UM' }, + { name: 'Uruguay', code: 'UY' }, + { name: 'Uzbekistan', code: 'UZ' }, + { name: 'Vanuatu', code: 'VU' }, + { name: 'Venezuela', code: 'VE' }, + { name: 'Viet Nam', code: 'VN' }, + { name: 'Virgin Islands, British', code: 'VG' }, + { name: 'Virgin Islands, U.S.', code: 'VI' }, + { name: 'Wallis and Futuna', code: 'WF' }, + { name: 'Western Sahara', code: 'EH' }, + { name: 'Yemen', code: 'YE' }, + { name: 'Zambia', code: 'ZM' }, + { name: 'Zimbabwe', code: 'ZW' } + ] +} \ No newline at end of file diff --git a/src/app/shared/inmemory-db/inbox.ts b/src/app/shared/inmemory-db/inbox.ts new file mode 100644 index 0000000..681415d --- /dev/null +++ b/src/app/shared/inmemory-db/inbox.ts @@ -0,0 +1,321 @@ +export class InboxDB { + public messages = [ + { + sender: { + name: 'Henrik Gevorg', + photo: 'assets/images/face-1.jpg' + }, + date: new Date('1/25/2018'), + selected: false, + subject: 'Welcome to Angular MatX', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.


+ Thanks
+ Jhone` + }, + { + sender: { + name: 'Gevorg Spartak', + photo: 'assets/images/face-2.jpg' + }, + date: new Date('4/3/2017'), + selected: false, + subject: 'Confirm your email address', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +

+ Thanks
+ Mark` + + }, + { + sender: { + name: 'Petros Toros', + photo: 'assets/images/face-3.jpg' + }, + date: new Date('1/20/2017'), + selected: false, + subject: 'New order informations', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.


+ Thanks
+ Jhone` + + }, + { + sender: { + name: 'Henrik Gevorg', + photo: 'assets/images/face-1.jpg' + }, + date: new Date('1/8/2017'), + selected: false, + subject: 'Welcome to Angular MatX', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.


+ Thanks
+ Jhone` + }, + { + sender: { + name: 'Gevorg Spartak', + photo: 'assets/images/face-2.jpg' + }, + date: new Date('10/3/2016'), + selected: false, + subject: 'Confirm your email address', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +

+ Thanks
+ Mark` + + }, + { + sender: { + name: 'Petros Toros', + photo: 'assets/images/face-4.jpg' + }, + date: new Date('10/3/2015'), + selected: false, + subject: 'New order informations', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.


+ Thanks
+ Jhone` + + }, + { + sender: { + name: 'Henrik Gevorg', + photo: 'assets/images/face-1.jpg' + }, + date: new Date('10/3/2015'), + selected: false, + subject: 'Welcome to Angular MatX', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.


+ Thanks
+ Jhone` + }, + { + sender: { + name: 'Gevorg Spartak', + photo: 'assets/images/face-2.jpg' + }, + date: new Date('10/3/2015'), + selected: false, + subject: 'Confirm your email address', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +

+ Thanks
+ Mark` + + }, + { + sender: { + name: 'Petros Toros', + photo: 'assets/images/face-4.jpg' + }, + date: new Date('10/3/2015'), + selected: false, + subject: 'New order informations', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.


+ Thanks
+ Jhone` + + }, + { + sender: { + name: 'Gevorg Spartak', + photo: 'assets/images/face-2.jpg' + }, + date: new Date('10/3/2015'), + selected: false, + subject: 'Confirm your email address', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +

+ Thanks
+ Mark` + + }, + { + sender: { + name: 'Petros Toros', + photo: 'assets/images/face-4.jpg' + }, + date: new Date('10/3/2015'), + selected: false, + subject: 'New order informations', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.


+ Thanks
+ Jhone` + + }, + { + sender: { + name: 'Gevorg Spartak', + photo: 'assets/images/face-2.jpg' + }, + date: new Date('10/3/2012'), + selected: false, + subject: 'Confirm your email address', + message: `

Natus consequuntur perspiciatis esse beatae illo quos eaque.

+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +
+

Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. Iusto ipsam, nihil? Eveniet modi maxime animi excepturi a dignissimos doloribus, + inventore sed ratione, ducimus atque earum maiores tenetur officia commodi dicta tempora consequatur non nesciunt ipsam, + consequuntur quia fuga aspernatur impedit et? Natus, earum.

+
+ Earum, quisquam, fugit? Numquam dolor magni nisi? Suscipit odit, ipsam iusto enim culpa, + temporibus vero possimus error voluptates sequi. +

+ Thanks
+ Mark` + + } + ] +} \ No newline at end of file diff --git a/src/app/shared/inmemory-db/inmemory-db.service.ts b/src/app/shared/inmemory-db/inmemory-db.service.ts new file mode 100644 index 0000000..c2b1930 --- /dev/null +++ b/src/app/shared/inmemory-db/inmemory-db.service.ts @@ -0,0 +1,17 @@ +import { InMemoryDbService } from 'angular-in-memory-web-api'; +import { ChatDB } from './chat-db'; +import { InvoiceDB } from './invoices'; +import { Todo, TodoTag } from './todo'; + +export class InMemoryDataService implements InMemoryDbService { + createDb() { + return { + 'contacts': ChatDB.contacts, + 'chat-collections': ChatDB.chatCollection, + 'chat-user': ChatDB.user, + 'invoices': InvoiceDB.invoices, + 'todoList': Todo.todoList, + 'todoTag': TodoTag.tag + } + } +} \ No newline at end of file diff --git a/src/app/shared/inmemory-db/invoices.ts b/src/app/shared/inmemory-db/invoices.ts new file mode 100644 index 0000000..f5b86bc --- /dev/null +++ b/src/app/shared/inmemory-db/invoices.ts @@ -0,0 +1,104 @@ +export class InvoiceDB { + static invoices = [ + { + id: '5a9ae2106518248b68251fd1', + orderNo: '232', + status: 'pending', + date: (new Date()), + currency: '$', + vat: 10, + buyer: { + name: 'Schoen, Conn and Mills', + address: 'rodriguez.trent@senger.com \n 61 Johnson St. Shirley, NY 11967. \n \n +202-555-0170', + }, + seller: { + name: 'UI Lib', + address: 'sales@ui-lib.com \n 8254 S. Garfield Street. Villa Rica, GA 30180. \n \n +1-202-555-0170', + }, + item: [{ + name: 'Item 1', + unit: 9, + price: 200 + }, { + name: 'Item 2', + unit: 15, + price: 300 + }] + }, + { + id: '5a9ae2106518248b68251fd2', + orderNo: '233', + status: 'processing', + date: (new Date()), + currency: '$', + vat: 10, + buyer: { + name: 'New Age Inc.', + address: 'this is a test address \n 7664 Rockcrest Road. Longview, TX 75604. \n \n +1-202-555-0153', + }, + seller: { + name: 'UI Lib', + address: 'sales@ui-lib.com \n 8254 S. Garfield Street. Villa Rica, GA 30180. \n \n +1-202-555-0170', + }, + item: [{ + name: 'Item 1', + unit: 3, + price: 2000 + }, { + name: 'Item 2', + unit: 2, + price: 4000 + }] + }, + { + id: '5a9ae2106518248b68251fd3', + orderNo: '234', + status: 'delivered', + date: (new Date()), + currency: '$', + vat: 10, + buyer: { + name: 'Predovic, Schowalter and Haag', + address: 'linwood53@price.com \n 7178 Plumb Branch Dr. South Bend, IN 46614 \n \n +999 9999 9999', + }, + seller: { + name: 'UI Lib', + address: 'sales@ui-lib.com \n 8254 S. Garfield Street. Villa Rica, GA 30180. \n \n +1-202-555-0170', + }, + item: [{ + name: 'Item 1', + unit: 5, + price: 1000 + }, { + name: 'Item 2', + unit: 2, + price: 4000 + }] + }, + { + id: '5a9ae2106518248b68251fd4', + orderNo: '235', + status: 'delivered', + date: (new Date()), + currency: '$', + vat: 10, + buyer: { + name: 'Hane PLC', + address: 'nader.savanna@lindgren.org \n 858 8th St. Nanuet, NY 10954. \n \n +202-555-0131', + }, + seller: { + name: 'UI Lib', + address: 'sales@ui-lib.com \n 8254 S. Garfield Street. Villa Rica, GA 30180. \n \n +1-202-555-0170', + }, + item: [{ + name: 'Item 1', + unit: 3, + price: 4000 + }, { + name: 'Item 2', + unit: 1, + price: 5000 + }] + } + ] +} \ No newline at end of file diff --git a/src/app/shared/inmemory-db/orders.ts b/src/app/shared/inmemory-db/orders.ts new file mode 100644 index 0000000..49fe355 --- /dev/null +++ b/src/app/shared/inmemory-db/orders.ts @@ -0,0 +1,8 @@ +export class OrderDB { + static orders = [ + { + id: 1, + + } + ] +} \ No newline at end of file diff --git a/src/app/shared/inmemory-db/products.ts b/src/app/shared/inmemory-db/products.ts new file mode 100644 index 0000000..f0227e3 --- /dev/null +++ b/src/app/shared/inmemory-db/products.ts @@ -0,0 +1,698 @@ +export class ProductDB { + public products = [ + { + '_id': '5a9ae2106518248b68251fdf', + 'name': 'Wireless Bluetooth V4.0 Portable Speaker with HD Sound and Bass', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'Lorem ipsum dolor sit amet, et nec putent quodsi, admodum assentior ad duo. Pri ad sapientem ocurreret incorrupte', + 'category': 'speaker', + 'tags': [ + 'sunt', + 'sunt', + 'culpa' + ], + 'price': { + 'sale': 32, + 'previous': 54 + }, + 'ratings': { + 'rating': 3.86, + 'ratingCount': 26 + }, + 'features': [ + 'aliquip aliquip', + 'nulla laboris', + 'pariatur consequat' + ], + 'photo': '../../../../assets/images/products/speaker-1.jpg', + 'gallery': [ + '../../../../assets/images/products/speaker-1.jpg', + '../../../../assets/images/products/speaker-2.jpg' + ], + 'badge': { + 'text': '20% off', + 'color': '#0D47A1' + } + }, + { + '_id': '5a9ae210b7b4d3ad2f048bbe', + 'name': 'Portable Speaker with HD Sound', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'cillum eiusmod', + 'category': 'speaker', + 'tags': [ + 'Lorem', + 'nisi', + 'ad' + ], + 'price': { + 'sale': 25, + 'previous': 43 + }, + 'ratings': { + 'rating': 3.72, + 'ratingCount': 18 + }, + 'features': [ + 'magna est', + 'consectetur dolor', + 'est proident' + ], + 'photo': '../../../../assets/images/products/speaker-2.jpg', + 'gallery': [ + '../../../../assets/images/products/speaker-1.jpg', + '../../../../assets/images/products/speaker-2.jpg' + ], + 'badge': { + 'text': 'Sale', + 'color': '#DD2C00' + } + }, + { + '_id': '5a9ae210d9a8d6dda7256417', + 'name': 'Lightweight On-Ear Headphones - Black', + 'subtitle': 'On-ear fit to minimize noise so you can hear every beat', + 'description': 'sit laborum', + 'category': 'headphone', + 'tags': [ + 'eu', + 'irure', + 'proident' + ], + 'price': { + 'sale': 29, + 'previous': 55 + }, + 'ratings': { + 'rating': 3.79, + 'ratingCount': 77 + }, + 'features': [ + 'laboris id', + 'magna eu', + 'sint quis' + ], + 'photo': '../../../../assets/images/products/headphone-2.jpg', + 'gallery': [ + '../../../../assets/images/products/headphone-1.jpg', + '../../../../assets/images/products/headphone-2.jpg', + '../../../../assets/images/products/headphone-3.jpg', + '../../../../assets/images/products/headphone-4.jpg' + ], + 'badge': { + 'text': '-40%', + 'color': '#0288D1' + } + }, + { + '_id': '5a9ae210e8329237332e56d7', + 'name': 'Automatic-self-wind mens Watch 5102PR-001 (Certified Pre-owned)', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'eiusmod elit', + 'category': 'watch', + 'tags': [ + 'laborum', + 'minim', + 'tempor' + ], + 'price': { + 'sale': 33, + 'previous': 58 + }, + 'ratings': { + 'rating': 4.74, + 'ratingCount': 64 + }, + 'features': [ + 'cillum ullamco', + 'ad minim', + 'duis exercitation' + ], + 'photo': '../../../../assets/images/products/watch-1.jpg', + 'gallery': [ + '../../../../assets/images/products/watch-1.jpg', + '../../../../assets/images/products/watch-2.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5a9ae210cb9937d28c6eca1a', + 'name': 'Automatic-self-wind mens Watch 5102PR-001', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'dolore tempor', + 'category': 'watch', + 'tags': [ + 'Lorem', + 'dolor', + 'duis' + ], + 'price': { + 'sale': 38, + 'previous': 50 + }, + 'ratings': { + 'rating': 4.43, + 'ratingCount': 98 + }, + 'features': [ + 'aliquip consequat', + 'excepteur non', + 'aliquip eu' + ], + 'photo': '../../../../assets/images/products/watch-2.jpg', + 'gallery': [ + '../../../../assets/images/products/watch-1.jpg', + '../../../../assets/images/products/watch-2.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5a9ae2106f155194e5c95d67', + 'name': 'On-Ear Headphones - Black', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'elit Lorem', + 'category': 'headphone', + 'tags': [ + 'magna', + 'veniam', + 'sunt' + ], + 'price': { + 'sale': 38, + 'previous': 54 + }, + 'ratings': { + 'rating': 4.84, + 'ratingCount': 52 + }, + 'features': [ + 'est mollit', + 'adipisicing exercitation', + 'esse incididunt' + ], + 'photo': '../../../../assets/images/products/headphone-3.jpg', + 'gallery': [ + '../../../../assets/images/products/headphone-1.jpg', + '../../../../assets/images/products/headphone-2.jpg', + '../../../../assets/images/products/headphone-3.jpg', + '../../../../assets/images/products/headphone-4.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5a9ae2101625a02fee92e27f', + 'name': 'In-Ear Headphone', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'proident non', + 'category': 'headphone', + 'tags': [ + 'Lorem', + 'occaecat', + 'laborum' + ], + 'price': { + 'sale': 31, + 'previous': 58 + }, + 'ratings': { + 'rating': 3.18, + 'ratingCount': 90 + }, + 'features': [ + 'ullamco quis', + 'veniam laboris', + 'nulla sunt' + ], + 'photo': '../../../../assets/images/products/headphone-4.jpg', + 'gallery': [ + '../../../../assets/images/products/headphone-1.jpg', + '../../../../assets/images/products/headphone-2.jpg', + '../../../../assets/images/products/headphone-3.jpg', + '../../../../assets/images/products/headphone-4.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5a9ae2108970b01447ec34aa', + 'name': 'Duis exercitation nostrud anim', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'dolore enim', + 'category': 'phone', + 'tags': [ + 'do', + 'aliqua', + 'irure' + ], + 'price': { + 'sale': 22, + 'previous': 44 + }, + 'ratings': { + 'rating': 3.53, + 'ratingCount': 47 + }, + 'features': [ + 'sunt laboris', + 'incididunt nulla', + 'ullamco qui' + ], + 'photo': '../../../../assets/images/products/iphone-2.jpg', + 'gallery': [ + '../../../../assets/images/products/iphone-1.jpg', + '../../../../assets/images/products/iphone-2.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5a9ae2103c04707145e21300', + 'name': 'Dolor eu nostrud excepteur', + 'description': 'enim fugiat', + 'category': 'phone', + 'tags': [ + 'laborum', + 'nulla', + 'sit' + ], + 'price': { + 'sale': 31, + 'previous': 40 + }, + 'ratings': { + 'rating': 3.42, + 'ratingCount': 35 + }, + 'features': [ + 'exercitation excepteur', + 'eiusmod mollit', + 'irure adipisicing' + ], + 'photo': '../../../../assets/images/products/iphone-1.jpg', + 'gallery': [ + '../../../../assets/images/products/iphone-1.jpg', + '../../../../assets/images/products/iphone-2.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5a9ae21021b2911c97ad6c5b', + 'name': 'Over-Ear Headphones, Stereo Lightweight Adjustable Wired Headset', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'sit commodo', + 'category': 'headphone', + 'tags': [ + 'adipisicing', + 'labore', + 'voluptate' + ], + 'price': { + 'sale': 33, + 'previous': 57 + }, + 'ratings': { + 'rating': 3.51, + 'ratingCount': 60 + }, + 'features': [ + 'culpa id', + 'eu excepteur', + 'incididunt aute' + ], + 'photo': '../../../../assets/images/products/headphone-1.jpg', + 'gallery': [ + '../../../../assets/images/products/headphone-1.jpg', + '../../../../assets/images/products/headphone-2.jpg', + '../../../../assets/images/products/headphone-3.jpg', + '../../../../assets/images/products/headphone-4.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + },{ + '_id': '5a9ae2106518248b68251fdf', + 'name': 'Wireless Bluetooth V4.0 Portable Speaker with HD Sound and Bass', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'Lorem ipsum dolor sit amet, et nec putent quodsi, admodum assentior ad duo. Pri ad sapientem ocurreret incorrupte', + 'category': 'speaker', + 'tags': [ + 'sunt', + 'sunt', + 'culpa' + ], + 'price': { + 'sale': 32, + 'previous': 54 + }, + 'ratings': { + 'rating': 3.86, + 'ratingCount': 26 + }, + 'features': [ + 'aliquip aliquip', + 'nulla laboris', + 'pariatur consequat' + ], + 'photo': '../../../../assets/images/products/speaker-1.jpg', + 'gallery': [ + '../../../../assets/images/products/speaker-1.jpg', + '../../../../assets/images/products/speaker-2.jpg' + ], + 'badge': { + 'text': '20% off', + 'color': '#0D47A1' + } + }, + { + '_id': '5a9ae210b7b4d3ad2f048dsbbe', + 'name': 'Portable Speaker with HD Sound', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'cillum eiusmod', + 'category': 'speaker', + 'tags': [ + 'Lorem', + 'nisi', + 'ad' + ], + 'price': { + 'sale': 25, + 'previous': 43 + }, + 'ratings': { + 'rating': 3.72, + 'ratingCount': 18 + }, + 'features': [ + 'magna est', + 'consectetur dolor', + 'est proident' + ], + 'photo': '../../../../assets/images/products/speaker-2.jpg', + 'gallery': [ + '../../../../assets/images/products/speaker-1.jpg', + '../../../../assets/images/products/speaker-2.jpg' + ], + 'badge': { + 'text': 'Sale', + 'color': '#DD2C00' + } + }, + { + '_id': '5a9ae2sd10d9a8d6dda7256417', + 'name': 'Lightweight On-Ear Headphones - Black', + 'subtitle': 'On-ear fit to minimize noise so you can hear every beat', + 'description': 'sit laborum', + 'category': 'headphone', + 'tags': [ + 'eu', + 'irure', + 'proident' + ], + 'price': { + 'sale': 29, + 'previous': 55 + }, + 'ratings': { + 'rating': 3.79, + 'ratingCount': 77 + }, + 'features': [ + 'laboris id', + 'magna eu', + 'sint quis' + ], + 'photo': '../../../../assets/images/products/headphone-2.jpg', + 'gallery': [ + '../../../../assets/images/products/headphone-1.jpg', + '../../../../assets/images/products/headphone-2.jpg', + '../../../../assets/images/products/headphone-3.jpg', + '../../../../assets/images/products/headphone-4.jpg' + ], + 'badge': { + 'text': '-40%', + 'color': '#0288D1' + } + }, + { + '_id': '5a9ae210e8329fs237332e56d7', + 'name': 'Automatic-self-wind mens Watch 5102PR-001 (Certified Pre-owned)', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'eiusmod elit', + 'category': 'watch', + 'tags': [ + 'laborum', + 'minim', + 'tempor' + ], + 'price': { + 'sale': 33, + 'previous': 58 + }, + 'ratings': { + 'rating': 4.74, + 'ratingCount': 64 + }, + 'features': [ + 'cillum ullamco', + 'ad minim', + 'duis exercitation' + ], + 'photo': '../../../../assets/images/products/watch-1.jpg', + 'gallery': [ + '../../../../assets/images/products/watch-1.jpg', + '../../../../assets/images/products/watch-2.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5a9ae210cba9937d28c6eca1a', + 'name': 'Automatic-self-wind mens Watch 5102PR-001', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'dolore tempor', + 'category': 'watch', + 'tags': [ + 'Lorem', + 'dolor', + 'duis' + ], + 'price': { + 'sale': 38, + 'previous': 50 + }, + 'ratings': { + 'rating': 4.43, + 'ratingCount': 98 + }, + 'features': [ + 'aliquip consequat', + 'excepteur non', + 'aliquip eu' + ], + 'photo': '../../../../assets/images/products/watch-2.jpg', + 'gallery': [ + '../../../../assets/images/products/watch-1.jpg', + '../../../../assets/images/products/watch-2.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5ad9ae2106f155194e5c95d67', + 'name': 'On-Ear Headphones - Black', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'elit Lorem', + 'category': 'headphone', + 'tags': [ + 'magna', + 'veniam', + 'sunt' + ], + 'price': { + 'sale': 38, + 'previous': 54 + }, + 'ratings': { + 'rating': 4.84, + 'ratingCount': 52 + }, + 'features': [ + 'est mollit', + 'adipisicing exercitation', + 'esse incididunt' + ], + 'photo': '../../../../assets/images/products/headphone-3.jpg', + 'gallery': [ + '../../../../assets/images/products/headphone-1.jpg', + '../../../../assets/images/products/headphone-2.jpg', + '../../../../assets/images/products/headphone-3.jpg', + '../../../../assets/images/products/headphone-4.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5a9ae2101625a02fee92fe27f', + 'name': 'In-Ear Headphone', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'proident non', + 'category': 'headphone', + 'tags': [ + 'Lorem', + 'occaecat', + 'laborum' + ], + 'price': { + 'sale': 31, + 'previous': 58 + }, + 'ratings': { + 'rating': 3.18, + 'ratingCount': 90 + }, + 'features': [ + 'ullamco quis', + 'veniam laboris', + 'nulla sunt' + ], + 'photo': '../../../../assets/images/products/headphone-4.jpg', + 'gallery': [ + '../../../../assets/images/products/headphone-1.jpg', + '../../../../assets/images/products/headphone-2.jpg', + '../../../../assets/images/products/headphone-3.jpg', + '../../../../assets/images/products/headphone-4.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5a9ae2108970bs01447ec34aa', + 'name': 'Duis exercitation nostrud anim', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'dolore enim', + 'category': 'phone', + 'tags': [ + 'do', + 'aliqua', + 'irure' + ], + 'price': { + 'sale': 22, + 'previous': 44 + }, + 'ratings': { + 'rating': 3.53, + 'ratingCount': 47 + }, + 'features': [ + 'sunt laboris', + 'incididunt nulla', + 'ullamco qui' + ], + 'photo': '../../../../assets/images/products/iphone-2.jpg', + 'gallery': [ + '../../../../assets/images/products/iphone-1.jpg', + '../../../../assets/images/products/iphone-2.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5a9ae2103c0470f7145e21300', + 'name': 'Dolor eu nostrud excepteur', + 'description': 'enim fugiat', + 'category': 'phone', + 'tags': [ + 'laborum', + 'nulla', + 'sit' + ], + 'price': { + 'sale': 31, + 'previous': 40 + }, + 'ratings': { + 'rating': 3.42, + 'ratingCount': 35 + }, + 'features': [ + 'exercitation excepteur', + 'eiusmod mollit', + 'irure adipisicing' + ], + 'photo': '../../../../assets/images/products/iphone-1.jpg', + 'gallery': [ + '../../../../assets/images/products/iphone-1.jpg', + '../../../../assets/images/products/iphone-2.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + }, + { + '_id': '5a9aef21021b2911c97ad6c5b', + 'name': 'Over-Ear Headphones, Stereo Lightweight Adjustable Wired Headset', + 'subtitle': 'Admodum assentior ad duo', + 'description': 'sit commodo', + 'category': 'headphone', + 'tags': [ + 'adipisicing', + 'labore', + 'voluptate' + ], + 'price': { + 'sale': 33, + 'previous': 57 + }, + 'ratings': { + 'rating': 3.51, + 'ratingCount': 60 + }, + 'features': [ + 'culpa id', + 'eu excepteur', + 'incididunt aute' + ], + 'photo': '../../../../assets/images/products/headphone-1.jpg', + 'gallery': [ + '../../../../assets/images/products/headphone-1.jpg', + '../../../../assets/images/products/headphone-2.jpg', + '../../../../assets/images/products/headphone-3.jpg', + '../../../../assets/images/products/headphone-4.jpg' + ], + 'badge': { + 'text': '', + 'color': 'red' + } + } + + ] +} \ No newline at end of file diff --git a/src/app/shared/inmemory-db/todo.ts b/src/app/shared/inmemory-db/todo.ts new file mode 100644 index 0000000..458f233 --- /dev/null +++ b/src/app/shared/inmemory-db/todo.ts @@ -0,0 +1,87 @@ +export class Todo { + static todoList = [ + { + id: 1, + title: "API problem", + note: "API is malfunctioning. kindly fix it", + important: true, + starred: true, + done: false, + read: false, + selected: false, + startDate: new Date().toISOString(), + dueDate: new Date().toISOString(), + + tag: [1, 2] + }, + { + id: 2, + title: "Mobile problem", + note: "Mobile is malfunctioning. fix it", + important: false, + starred: false, + done: true, + read: true, + selected: false, + startDate: new Date().toISOString(), + dueDate: new Date().toISOString(), + + tag: [2] + }, + { + id: 3, + title: "API problem", + note: "API is malfunctioning. fix it", + important: false, + starred: false, + done: true, + read: false, + selected: false, + startDate: new Date().toISOString(), + dueDate: new Date().toISOString(), + + tag: [1] + }, + { + id: 4, + title: "API problem", + note: "API is malfunctioning. fix it", + important: false, + starred: false, + done: false, + read: true, + selected: false, + startDate: new Date().toISOString(), + dueDate: new Date().toISOString(), + + tag: [1, 2, 3] + } + ]; + read: any; +} + +// ============================================ +export class TodoTag { + static tag = [ + { + id: 1, + name: "frontend" + }, + { + id: 2, + name: "backend" + }, + { + id: 3, + name: "API" + }, + { + id: 4, + name: "issue" + }, + { + id: 5, + name: "mobile" + } + ]; +} diff --git a/src/app/shared/inmemory-db/users.ts b/src/app/shared/inmemory-db/users.ts new file mode 100644 index 0000000..27e372f --- /dev/null +++ b/src/app/shared/inmemory-db/users.ts @@ -0,0 +1,1024 @@ +export class UserDB { + public users = [ + { + '_id': '5a7b73f76bed15c94d1e46d4', + 'index': 0, + 'guid': 'c01da2d1-07f8-4acc-a1e3-72dda7310af8', + 'isActive': false, + 'balance': 2838.08, + 'age': 30, + 'name': 'Stefanie Marsh', + 'gender': 'female', + 'company': 'ACIUM', + 'email': 'stefaniemarsh@acium.com', + 'phone': '+1 (857) 535-2066', + 'address': '163 Poplar Avenue, Cliffside, Virginia, 4592', + 'bd': '2015-02-08T04:28:44 -06:00' + }, + { + '_id': '5a7b73f7f79f4250b96a355a', + 'index': 1, + 'guid': '3f04aa40-62da-466d-ac14-2b8a5da3d1ce', + 'isActive': true, + 'balance': 3043.81, + 'age': 39, + 'name': 'Elena Bennett', + 'gender': 'female', + 'company': 'FIBRODYNE', + 'email': 'elenabennett@fibrodyne.com', + 'phone': '+1 (994) 570-2070', + 'address': '526 Grace Court, Cherokee, Oregon, 7017', + 'bd': '2017-11-15T09:04:57 -06:00' + }, + { + '_id': '5a7b73f78b64a02a67204d6e', + 'index': 2, + 'guid': 'e7d9d61e-b657-4fcf-b069-2eb9bfdc44fa', + 'isActive': true, + 'balance': 1796.92, + 'age': 23, + 'name': 'Joni Cabrera', + 'gender': 'female', + 'company': 'POWERNET', + 'email': 'jonicabrera@powernet.com', + 'phone': '+1 (848) 410-2368', + 'address': '554 Barlow Drive, Alamo, Michigan, 3686', + 'bd': '2017-10-15T12:55:51 -06:00' + }, + { + '_id': '5a7b73f7572e59b231149b94', + 'index': 3, + 'guid': '47673d82-ab31-48a1-8a16-2c6701573c67', + 'isActive': false, + 'balance': 2850.27, + 'age': 37, + 'name': 'Gallagher Shaw', + 'gender': 'male', + 'company': 'ZILLAR', + 'email': 'gallaghershaw@zillar.com', + 'phone': '+1 (896) 422-3786', + 'address': '111 Argyle Road, Graball, Idaho, 7272', + 'bd': '2017-11-19T03:38:30 -06:00' + }, + { + '_id': '5a7b73f70f9d074552e13090', + 'index': 4, + 'guid': 'bc9c7cd3-04e0-4095-a933-af28efaf3b3e', + 'isActive': false, + 'balance': 3743.48, + 'age': 26, + 'name': 'Blanchard Knapp', + 'gender': 'male', + 'company': 'ACRODANCE', + 'email': 'blanchardknapp@acrodance.com', + 'phone': '+1 (867) 542-2772', + 'address': '707 Malta Street, Yukon, Wyoming, 6861', + 'bd': '2014-05-28T01:33:58 -06:00' + }, + { + '_id': '5a7b73f78988bd6e92650473', + 'index': 5, + 'guid': '08cb947c-e49c-4736-9687-0fca0992ec38', + 'isActive': false, + 'balance': 3453.79, + 'age': 34, + 'name': 'Parker Rivas', + 'gender': 'male', + 'company': 'SLAMBDA', + 'email': 'parkerrivas@slambda.com', + 'phone': '+1 (997) 413-2418', + 'address': '543 Roosevelt Place, Tibbie, Minnesota, 6944', + 'bd': '2015-01-05T09:55:23 -06:00' + }, + { + '_id': '5a7b73f72488770f90649570', + 'index': 6, + 'guid': '771c85d5-7762-4bae-96fd-09892a9c4374', + 'isActive': false, + 'balance': 3334.73, + 'age': 20, + 'name': 'Alexandria Forbes', + 'gender': 'female', + 'company': 'EQUITOX', + 'email': 'alexandriaforbes@equitox.com', + 'phone': '+1 (869) 521-2533', + 'address': '663 Minna Street, Omar, Alabama, 5265', + 'bd': '2017-03-09T05:48:57 -06:00' + }, + { + '_id': '5a7b73f7c576e368b321a705', + 'index': 7, + 'guid': '2455a7ef-a537-46e1-a210-75e5e2187460', + 'isActive': false, + 'balance': 3488.64, + 'age': 37, + 'name': 'Lessie Wise', + 'gender': 'female', + 'company': 'AFFLUEX', + 'email': 'lessiewise@affluex.com', + 'phone': '+1 (820) 404-2967', + 'address': '752 Woodhull Street, Utting, Oklahoma, 2739', + 'bd': '2014-10-21T03:09:34 -06:00' + }, + { + '_id': '5a7b73f705f8a9c6e35c8ca2', + 'index': 8, + 'guid': 'a90d65a8-681d-462f-bf08-eceeef366375', + 'isActive': true, + 'balance': 3786.67, + 'age': 36, + 'name': 'Carrie Gates', + 'gender': 'female', + 'company': 'VIRVA', + 'email': 'carriegates@virva.com', + 'phone': '+1 (845) 463-3986', + 'address': '561 Boulevard Court, Rote, Louisiana, 8458', + 'bd': '2017-03-30T02:06:23 -06:00' + }, + { + '_id': '5a7b73f7a3e2be2dbb7b093e', + 'index': 9, + 'guid': 'fb3d0f97-91ae-4336-b0b4-19f4a00fe567', + 'isActive': false, + 'balance': 3335.5, + 'age': 33, + 'name': 'Dalton Spears', + 'gender': 'male', + 'company': 'MIRACLIS', + 'email': 'daltonspears@miraclis.com', + 'phone': '+1 (919) 541-3528', + 'address': '167 Lester Court, Glasgow, Arkansas, 6311', + 'bd': '2017-04-01T01:41:12 -06:00' + }, + { + '_id': '5a7b73f716de69a9217c1273', + 'index': 10, + 'guid': '129a92fd-848f-48eb-98a1-aebf6e92b079', + 'isActive': false, + 'balance': 3811.15, + 'age': 30, + 'name': 'Delia Merrill', + 'gender': 'female', + 'company': 'COMTEST', + 'email': 'deliamerrill@comtest.com', + 'phone': '+1 (879) 401-2304', + 'address': '761 Polhemus Place, Kidder, Puerto Rico, 5901', + 'bd': '2014-08-29T08:42:59 -06:00' + }, + { + '_id': '5a7b73f7ed19007bed2d29fb', + 'index': 11, + 'guid': 'd799b69a-192d-4ee3-9a69-9e8e5afc45b0', + 'isActive': false, + 'balance': 3935.82, + 'age': 28, + 'name': 'Vance Aguilar', + 'gender': 'male', + 'company': 'CYCLONICA', + 'email': 'vanceaguilar@cyclonica.com', + 'phone': '+1 (972) 549-2681', + 'address': '653 Billings Place, Gardners, Connecticut, 7805', + 'bd': '2015-02-21T03:06:14 -06:00' + }, + { + '_id': '5a7b73f78d0dc0858a70c44a', + 'index': 12, + 'guid': '8cbb37bb-7644-4993-b48b-df3a69deb339', + 'isActive': true, + 'balance': 3868.95, + 'age': 28, + 'name': 'Adams Harper', + 'gender': 'male', + 'company': 'NORSUP', + 'email': 'adamsharper@norsup.com', + 'phone': '+1 (824) 494-3395', + 'address': '571 Turner Place, Norris, Mississippi, 3829', + 'bd': '2014-01-30T02:05:53 -06:00' + }, + { + '_id': '5a7b73f7e929494a8568a885', + 'index': 13, + 'guid': '22ec32d7-0ba9-4366-b6d8-ca16389a2cd9', + 'isActive': false, + 'balance': 3954.41, + 'age': 34, + 'name': 'Bass Sexton', + 'gender': 'male', + 'company': 'CIRCUM', + 'email': 'basssexton@circum.com', + 'phone': '+1 (930) 476-3634', + 'address': '563 Victor Road, Richmond, Kansas, 7742', + 'bd': '2014-05-04T10:16:32 -06:00' + }, + { + '_id': '5a7b73f767e97ce3136444fd', + 'index': 14, + 'guid': '031d282f-0be9-49e1-a211-9aa59d449d91', + 'isActive': false, + 'balance': 3287.33, + 'age': 24, + 'name': 'Howard Velez', + 'gender': 'male', + 'company': 'ECOSYS', + 'email': 'howardvelez@ecosys.com', + 'phone': '+1 (920) 556-2885', + 'address': '378 Grimes Road, Websterville, Marshall Islands, 3506', + 'bd': '2015-12-19T08:17:58 -06:00' + }, + { + '_id': '5a7b73f7fba076653cc18925', + 'index': 15, + 'guid': 'd76ab6d6-d1db-4286-8516-ce6c9db3972a', + 'isActive': false, + 'balance': 3279.98, + 'age': 21, + 'name': 'Lola Morton', + 'gender': 'female', + 'company': 'PROVIDCO', + 'email': 'lolamorton@providco.com', + 'phone': '+1 (963) 458-2788', + 'address': '991 Ashland Place, Richville, New York, 3529', + 'bd': '2016-11-29T07:58:24 -06:00' + }, + { + '_id': '5a7b73f7c6d408bc853be87c', + 'index': 16, + 'guid': '30c2d1c7-770b-4adb-b6df-cc205d748323', + 'isActive': false, + 'balance': 3955.55, + 'age': 37, + 'name': 'Bishop Rutledge', + 'gender': 'male', + 'company': 'DAYCORE', + 'email': 'bishoprutledge@daycore.com', + 'phone': '+1 (886) 539-3156', + 'address': '870 Vanderveer Place, Bridgetown, California, 7593', + 'bd': '2014-11-10T04:47:00 -06:00' + }, + { + '_id': '5a7b73f7abe6c78719d2f494', + 'index': 17, + 'guid': '2d8e77a1-4a88-4642-b6a8-693de296661c', + 'isActive': true, + 'balance': 1832.83, + 'age': 23, + 'name': 'Lea Reese', + 'gender': 'female', + 'company': 'GLUID', + 'email': 'leareese@gluid.com', + 'phone': '+1 (866) 413-2199', + 'address': '811 Dunne Place, Vowinckel, Rhode Island, 8646', + 'bd': '2014-03-16T04:30:06 -06:00' + }, + { + '_id': '5a7b73f72d64af126b8080be', + 'index': 18, + 'guid': 'e1e8ee63-6d08-48fc-a077-2265cee34f23', + 'isActive': true, + 'balance': 2419.18, + 'age': 23, + 'name': 'Knox Moses', + 'gender': 'male', + 'company': 'BRAINCLIP', + 'email': 'knoxmoses@brainclip.com', + 'phone': '+1 (982) 519-2486', + 'address': '917 Turnbull Avenue, Shasta, Virgin Islands, 7016', + 'bd': '2015-11-09T10:11:15 -06:00' + }, + { + '_id': '5a7b73f789b4e9086d34b255', + 'index': 19, + 'guid': '13552b7d-928c-4b92-a2ae-5ccbee807594', + 'isActive': false, + 'balance': 1220.91, + 'age': 22, + 'name': 'Marsha Jacobs', + 'gender': 'female', + 'company': 'COMSTAR', + 'email': 'marshajacobs@comstar.com', + 'phone': '+1 (858) 511-2546', + 'address': '580 Hampton Avenue, Ilchester, New Hampshire, 2191', + 'bd': '2016-02-11T01:34:23 -06:00' + }, + { + '_id': '5a7b73f737eea8e94089b7b4', + 'index': 20, + 'guid': 'cf577c87-b40c-4c09-9fac-d04c9a824b86', + 'isActive': false, + 'balance': 2446.07, + 'age': 25, + 'name': 'Bell Emerson', + 'gender': 'male', + 'company': 'MULTIFLEX', + 'email': 'bellemerson@multiflex.com', + 'phone': '+1 (806) 496-2473', + 'address': '238 Oxford Walk, Monument, New Mexico, 1345', + 'bd': '2016-10-07T01:07:21 -06:00' + }, + { + '_id': '5a7b73f76bc821dc6ee56ee2', + 'index': 21, + 'guid': 'b6c685c2-a497-4261-9217-622723d5235f', + 'isActive': false, + 'balance': 3694.63, + 'age': 33, + 'name': 'Cecelia Graham', + 'gender': 'female', + 'company': 'ZOXY', + 'email': 'ceceliagraham@zoxy.com', + 'phone': '+1 (933) 429-3129', + 'address': '954 Lawton Street, Terlingua, New Jersey, 6723', + 'bd': '2017-12-01T04:36:13 -06:00' + }, + { + '_id': '5a7b73f794c27c4048290cbf', + 'index': 22, + 'guid': '7e887403-8ff5-41b4-9902-bb63ff714fee', + 'isActive': true, + 'balance': 2804.02, + 'age': 29, + 'name': 'Anthony Pennington', + 'gender': 'male', + 'company': 'NAMEGEN', + 'email': 'anthonypennington@namegen.com', + 'phone': '+1 (860) 458-3988', + 'address': '287 Auburn Place, Gardiner, Northern Mariana Islands, 7131', + 'bd': '2018-02-04T11:06:51 -06:00' + }, + { + '_id': '5a7b73f720a5781f7d19597a', + 'index': 23, + 'guid': '9e108687-e1ca-4385-bdd5-62ab006f8aa3', + 'isActive': true, + 'balance': 1984.1, + 'age': 36, + 'name': 'Mayo Justice', + 'gender': 'male', + 'company': 'SLOFAST', + 'email': 'mayojustice@slofast.com', + 'phone': '+1 (854) 428-2270', + 'address': '648 Melba Court, Dodge, Pennsylvania, 7596', + 'bd': '2016-12-29T07:28:10 -06:00' + }, + { + '_id': '5a7b73f7f0a4c5e6c9807fb2', + 'index': 24, + 'guid': '93b0b383-dd69-4453-be26-f13ae361ce67', + 'isActive': true, + 'balance': 1845.13, + 'age': 22, + 'name': 'Vaughn Salazar', + 'gender': 'male', + 'company': 'ZAGGLE', + 'email': 'vaughnsalazar@zaggle.com', + 'phone': '+1 (986) 415-3294', + 'address': '382 Dewitt Avenue, Goodville, Palau, 711', + 'bd': '2014-10-31T12:32:59 -06:00' + }, + { + '_id': '5a7b73f7e6c45298c709371c', + 'index': 25, + 'guid': '5a059bbb-3f6d-47bc-ba2b-c13eeaaa93b4', + 'isActive': false, + 'balance': 3684.79, + 'age': 31, + 'name': 'Calhoun Bradshaw', + 'gender': 'male', + 'company': 'OVERPLEX', + 'email': 'calhounbradshaw@overplex.com', + 'phone': '+1 (964) 594-2363', + 'address': '527 Seton Place, Wedgewood, Wisconsin, 8306', + 'bd': '2016-05-27T10:46:17 -06:00' + }, + { + '_id': '5a7b73f79468759d25ecdcf4', + 'index': 26, + 'guid': '68d7f78e-5001-480b-a67d-72b370a5c2de', + 'isActive': false, + 'balance': 1831.14, + 'age': 29, + 'name': 'Dianne Bauer', + 'gender': 'female', + 'company': 'XUMONK', + 'email': 'diannebauer@xumonk.com', + 'phone': '+1 (866) 510-2479', + 'address': '540 Moffat Street, Emison, South Carolina, 7329', + 'bd': '2014-09-02T04:57:23 -06:00' + }, + { + '_id': '5a7b73f7346b1bbab11524fa', + 'index': 27, + 'guid': '0729eef8-36c5-4aa2-8e31-f5e2ca19b94b', + 'isActive': false, + 'balance': 1719.77, + 'age': 22, + 'name': 'Hebert Bryan', + 'gender': 'male', + 'company': 'COMTRAIL', + 'email': 'hebertbryan@comtrail.com', + 'phone': '+1 (838) 579-3709', + 'address': '669 Hausman Street, Gerber, Kentucky, 7779', + 'bd': '2017-11-29T12:22:59 -06:00' + }, + { + '_id': '5a7b73f75116874002de08de', + 'index': 28, + 'guid': '63014b40-3f1e-40ff-b2f7-f55ef6a5a599', + 'isActive': true, + 'balance': 1973.27, + 'age': 20, + 'name': 'Cash Bean', + 'gender': 'male', + 'company': 'SUPREMIA', + 'email': 'cashbean@supremia.com', + 'phone': '+1 (846) 551-2291', + 'address': '152 Garnet Street, Boling, Nevada, 4867', + 'bd': '2014-01-06T10:18:37 -06:00' + }, + { + '_id': '5a7b73f739be4dc1f743993c', + 'index': 29, + 'guid': 'ae498760-b43b-4c9c-8575-820f419984f6', + 'isActive': true, + 'balance': 2118.14, + 'age': 36, + 'name': 'Candy Hopper', + 'gender': 'female', + 'company': 'ACCUFARM', + 'email': 'candyhopper@accufarm.com', + 'phone': '+1 (841) 425-2442', + 'address': '695 Nassau Avenue, Nutrioso, Maryland, 2026', + 'bd': '2016-01-03T02:15:56 -06:00' + }, + { + '_id': '5a7b73f70b86f2969d762be2', + 'index': 30, + 'guid': 'f19cb86e-ab4f-4d07-833a-4adb8a19d0af', + 'isActive': false, + 'balance': 3794.89, + 'age': 37, + 'name': 'Fisher Powell', + 'gender': 'male', + 'company': 'ENOMEN', + 'email': 'fisherpowell@enomen.com', + 'phone': '+1 (876) 562-2932', + 'address': '616 Tapscott Avenue, Crucible, Nebraska, 4900', + 'bd': '2018-01-31T05:15:13 -06:00' + }, + { + '_id': '5a7b73f7394648a68c2a6ae3', + 'index': 31, + 'guid': 'a88e5389-0b07-4d19-ac6c-718ce9e0de55', + 'isActive': false, + 'balance': 3343.45, + 'age': 38, + 'name': 'Rosemary Sloan', + 'gender': 'female', + 'company': 'PHORMULA', + 'email': 'rosemarysloan@phormula.com', + 'phone': '+1 (924) 517-3289', + 'address': '687 Navy Walk, Edmund, Delaware, 1419', + 'bd': '2018-01-23T11:32:25 -06:00' + }, + { + '_id': '5a7b73f77ad97f4e1c2fa65a', + 'index': 32, + 'guid': 'fb915568-2875-49b3-96d7-6b54b2b186a1', + 'isActive': true, + 'balance': 2680.62, + 'age': 30, + 'name': 'Elba Glover', + 'gender': 'female', + 'company': 'APPLICA', + 'email': 'elbaglover@applica.com', + 'phone': '+1 (857) 495-3565', + 'address': '279 Bridgewater Street, Edneyville, Utah, 9246', + 'bd': '2015-10-03T12:24:56 -06:00' + }, + { + '_id': '5a7b73f72598106a97fbf7d5', + 'index': 33, + 'guid': 'fac3cd4b-2d42-4b4f-9d6f-0bac689bd47b', + 'isActive': false, + 'balance': 3286.46, + 'age': 37, + 'name': 'Mildred Short', + 'gender': 'female', + 'company': 'NIXELT', + 'email': 'mildredshort@nixelt.com', + 'phone': '+1 (980) 530-3588', + 'address': '434 Elm Place, Coloma, West Virginia, 1990', + 'bd': '2016-03-22T10:13:26 -06:00' + }, + { + '_id': '5a7b73f7b88290b05f53faa1', + 'index': 34, + 'guid': 'b1c6a3a3-00bd-4bc6-87df-69eecd909ab5', + 'isActive': false, + 'balance': 1484.16, + 'age': 24, + 'name': 'Karin Schultz', + 'gender': 'female', + 'company': 'PLASMOS', + 'email': 'karinschultz@plasmos.com', + 'phone': '+1 (904) 544-2796', + 'address': '380 Rockaway Avenue, Faxon, American Samoa, 5776', + 'bd': '2016-03-27T09:30:36 -06:00' + }, + { + '_id': '5a7b73f7d2f7429d0caec5fe', + 'index': 35, + 'guid': '62c961ac-49b1-4a69-b4bf-13a396ec4fd9', + 'isActive': false, + 'balance': 3450.17, + 'age': 23, + 'name': 'Addie Rose', + 'gender': 'female', + 'company': 'XYQAG', + 'email': 'addierose@xyqag.com', + 'phone': '+1 (838) 549-3147', + 'address': '999 Coleridge Street, Golconda, Vermont, 9575', + 'bd': '2016-10-01T06:50:42 -06:00' + }, + { + '_id': '5a7b73f78a4c54ff8334e053', + 'index': 36, + 'guid': '4f2f7ae5-0bd1-4665-b97f-c556e5162349', + 'isActive': false, + 'balance': 1797.89, + 'age': 23, + 'name': 'Janie Ellison', + 'gender': 'female', + 'company': 'SPLINX', + 'email': 'janieellison@splinx.com', + 'phone': '+1 (947) 460-2254', + 'address': '114 Landis Court, Genoa, Indiana, 5198', + 'bd': '2017-07-28T12:45:44 -06:00' + }, + { + '_id': '5a7b73f7c87f7e86fcb00055', + 'index': 37, + 'guid': 'b7236378-8129-44b5-bcc6-0369290ffad6', + 'isActive': false, + 'balance': 3776.51, + 'age': 38, + 'name': 'Elisabeth Campbell', + 'gender': 'female', + 'company': 'GOKO', + 'email': 'elisabethcampbell@goko.com', + 'phone': '+1 (849) 430-3377', + 'address': '832 Kermit Place, Lutsen, Georgia, 9145', + 'bd': '2015-04-26T06:40:08 -06:00' + }, + { + '_id': '5a7b73f712f9208f145fa6ea', + 'index': 38, + 'guid': '5c955e3a-5f3a-4ead-96ee-80a5de6dc479', + 'isActive': true, + 'balance': 3794.93, + 'age': 27, + 'name': 'Noble Holland', + 'gender': 'male', + 'company': 'NUTRALAB', + 'email': 'nobleholland@nutralab.com', + 'phone': '+1 (888) 573-3730', + 'address': '408 Roosevelt Court, Hiwasse, North Dakota, 281', + 'bd': '2014-03-25T12:24:34 -06:00' + }, + { + '_id': '5a7b73f7aa1f371de59df90b', + 'index': 39, + 'guid': '94698a81-61a6-4e23-a952-76a50fba71ef', + 'isActive': true, + 'balance': 2205.55, + 'age': 35, + 'name': 'Laverne Brock', + 'gender': 'female', + 'company': 'ICOLOGY', + 'email': 'lavernebrock@icology.com', + 'phone': '+1 (821) 600-3174', + 'address': '391 Conover Street, Cassel, Tennessee, 6566', + 'bd': '2016-01-27T09:40:41 -06:00' + }, + { + '_id': '5a7b73f7c45c697931199945', + 'index': 40, + 'guid': 'a05a215f-be1c-49d1-89ca-c821b118f923', + 'isActive': true, + 'balance': 2397.12, + 'age': 29, + 'name': 'Irene Frost', + 'gender': 'female', + 'company': 'RODEMCO', + 'email': 'irenefrost@rodemco.com', + 'phone': '+1 (918) 539-2612', + 'address': '401 Moore Place, Groton, Arizona, 3415', + 'bd': '2017-09-14T09:46:55 -06:00' + }, + { + '_id': '5a7b73f7ef55416e92ebc818', + 'index': 41, + 'guid': '1ae8ceac-e8d0-4417-9f6f-04cd4e4738ad', + 'isActive': false, + 'balance': 3335.51, + 'age': 35, + 'name': 'Beard Hendricks', + 'gender': 'male', + 'company': 'QUONK', + 'email': 'beardhendricks@quonk.com', + 'phone': '+1 (847) 521-3952', + 'address': '576 Bayard Street, Chloride, Federated States Of Micronesia, 8070', + 'bd': '2016-11-01T12:47:26 -06:00' + }, + { + '_id': '5a7b73f7cbeecfe6febd672d', + 'index': 42, + 'guid': 'afdf3298-77bd-46b3-ae8d-232f815c5f01', + 'isActive': false, + 'balance': 2205.01, + 'age': 37, + 'name': 'Nelson Shields', + 'gender': 'male', + 'company': 'ARTWORLDS', + 'email': 'nelsonshields@artworlds.com', + 'phone': '+1 (956) 534-3050', + 'address': '581 Maple Street, Needmore, Colorado, 2062', + 'bd': '2014-07-21T08:22:01 -06:00' + }, + { + '_id': '5a7b73f71803de25c5f754ad', + 'index': 43, + 'guid': '5b872cad-4388-496b-8ede-5f86990dec00', + 'isActive': true, + 'balance': 1001.05, + 'age': 21, + 'name': 'Luella Duffy', + 'gender': 'female', + 'company': 'KROG', + 'email': 'luelladuffy@krog.com', + 'phone': '+1 (973) 451-2222', + 'address': '349 Bryant Street, Tioga, South Dakota, 6493', + 'bd': '2016-04-27T02:46:46 -06:00' + }, + { + '_id': '5a7b73f77f2a05eacb331c74', + 'index': 44, + 'guid': '7d6b7650-10d7-435d-87ca-33a1fe12cd57', + 'isActive': false, + 'balance': 1926.79, + 'age': 27, + 'name': 'Rosa Guthrie', + 'gender': 'female', + 'company': 'COMTOURS', + 'email': 'rosaguthrie@comtours.com', + 'phone': '+1 (814) 528-2701', + 'address': '719 Kathleen Court, Morriston, Guam, 4011', + 'bd': '2015-07-02T08:22:18 -06:00' + }, + { + '_id': '5a7b73f7727afbb0fc15653b', + 'index': 45, + 'guid': 'ebbc985b-227e-4954-a8a6-588b2a2bff22', + 'isActive': false, + 'balance': 2464.9, + 'age': 29, + 'name': 'Dillard Carlson', + 'gender': 'male', + 'company': 'COMCUR', + 'email': 'dillardcarlson@comcur.com', + 'phone': '+1 (847) 469-3741', + 'address': '918 Oceanic Avenue, Cochranville, Missouri, 1018', + 'bd': '2016-06-11T11:31:54 -06:00' + }, + { + '_id': '5a7b73f71dd7612e967e01ae', + 'index': 46, + 'guid': '63a2ee7f-2141-4ec5-b1e2-fcdcd62f28ed', + 'isActive': false, + 'balance': 3917.74, + 'age': 25, + 'name': 'Faye Walls', + 'gender': 'female', + 'company': 'EMERGENT', + 'email': 'fayewalls@emergent.com', + 'phone': '+1 (964) 527-3791', + 'address': '947 Judge Street, Nescatunga, Maine, 4928', + 'bd': '2014-06-23T12:46:21 -06:00' + }, + { + '_id': '5a7b73f7b33c73c425db7ee0', + 'index': 47, + 'guid': '61d40a89-af0c-40ca-8970-c54978134e6b', + 'isActive': true, + 'balance': 2213.18, + 'age': 32, + 'name': 'Norma Hooper', + 'gender': 'female', + 'company': 'PARCOE', + 'email': 'normahooper@parcoe.com', + 'phone': '+1 (827) 503-2742', + 'address': '470 Fenimore Street, Hatteras, Texas, 1582', + 'bd': '2015-01-15T12:22:00 -06:00' + }, + { + '_id': '5a7b73f7c30aa4064670cf21', + 'index': 48, + 'guid': '969d77af-b251-4924-82cf-7c787752161d', + 'isActive': false, + 'balance': 3673.94, + 'age': 23, + 'name': 'Lee Wiggins', + 'gender': 'female', + 'company': 'NITRACYR', + 'email': 'leewiggins@nitracyr.com', + 'phone': '+1 (941) 478-3536', + 'address': '958 Flatbush Avenue, Clara, North Carolina, 970', + 'bd': '2018-01-09T11:09:34 -06:00' + }, + { + '_id': '5a7b73f7ecd5a4859f2d94dc', + 'index': 49, + 'guid': 'cdf9b8de-a309-4cb7-80bb-f1b830b8b640', + 'isActive': true, + 'balance': 2166.21, + 'age': 27, + 'name': 'Alvarez Lynch', + 'gender': 'male', + 'company': 'KIGGLE', + 'email': 'alvarezlynch@kiggle.com', + 'phone': '+1 (929) 528-3805', + 'address': '901 Stratford Road, Derwood, Iowa, 1402', + 'bd': '2015-01-08T04:28:57 -06:00' + }, + { + '_id': '5a7b73f7216c8cabc849eea7', + 'index': 50, + 'guid': 'c4175d6a-1560-468e-b682-701c1549b6b1', + 'isActive': false, + 'balance': 3479.39, + 'age': 39, + 'name': 'Oneal Rosario', + 'gender': 'male', + 'company': 'UBERLUX', + 'email': 'onealrosario@uberlux.com', + 'phone': '+1 (951) 572-3027', + 'address': '267 Rockaway Parkway, Chapin, Montana, 7813', + 'bd': '2014-02-10T05:08:13 -06:00' + }, + { + '_id': '5a7b73f78841719bf955b2d9', + 'index': 51, + 'guid': '966c9ce6-9151-47cb-8c71-98c4cd0d2f40', + 'isActive': false, + 'balance': 1625.49, + 'age': 36, + 'name': 'Olsen Stevens', + 'gender': 'male', + 'company': 'EMPIRICA', + 'email': 'olsenstevens@empirica.com', + 'phone': '+1 (871) 403-3377', + 'address': '704 Lamont Court, Saranap, Massachusetts, 3171', + 'bd': '2014-09-17T05:13:13 -06:00' + }, + { + '_id': '5a7b73f7b7b8e578dff0f85c', + 'index': 52, + 'guid': '8269a34f-3a02-47d6-bcb1-8f076bb478f0', + 'isActive': true, + 'balance': 1143.73, + 'age': 27, + 'name': 'Marian Henson', + 'gender': 'female', + 'company': 'ENDIPINE', + 'email': 'marianhenson@endipine.com', + 'phone': '+1 (995) 406-2592', + 'address': '803 Ellery Street, Boykin, Alaska, 8624', + 'bd': '2016-08-28T01:22:51 -06:00' + }, + { + '_id': '5a7b73f737459ec79c91ca75', + 'index': 53, + 'guid': 'badb9342-10fd-4520-ae66-c246e47add8f', + 'isActive': false, + 'balance': 1458.01, + 'age': 23, + 'name': 'Dudley Dickson', + 'gender': 'male', + 'company': 'POLARIA', + 'email': 'dudleydickson@polaria.com', + 'phone': '+1 (860) 428-3250', + 'address': '833 Revere Place, Rockbridge, Illinois, 4628', + 'bd': '2017-01-19T12:36:59 -06:00' + }, + { + '_id': '5a7b73f70ddc6fc11ebf043a', + 'index': 54, + 'guid': '52b1be89-8186-4685-81b7-203c17ed9f89', + 'isActive': true, + 'balance': 2815.76, + 'age': 25, + 'name': 'Earnestine Oneil', + 'gender': 'female', + 'company': 'CYTREK', + 'email': 'earnestineoneil@cytrek.com', + 'phone': '+1 (879) 541-3490', + 'address': '442 Emerald Street, Graniteville, Hawaii, 1302', + 'bd': '2017-07-07T10:34:33 -06:00' + }, + { + '_id': '5a7b73f78b816185ccd2b4b3', + 'index': 55, + 'guid': 'e66850ea-546b-4eb5-ae76-d66b0e727f44', + 'isActive': true, + 'balance': 3645.09, + 'age': 21, + 'name': 'Nicholson Mason', + 'gender': 'male', + 'company': 'TELEQUIET', + 'email': 'nicholsonmason@telequiet.com', + 'phone': '+1 (861) 528-3215', + 'address': '261 Aitken Place, Cecilia, Ohio, 1381', + 'bd': '2016-03-20T08:31:34 -06:00' + }, + { + '_id': '5a7b73f780f8bf8fbe24d75c', + 'index': 56, + 'guid': '40b999cd-00bf-46e0-9107-b44906d832e0', + 'isActive': false, + 'balance': 2477.66, + 'age': 36, + 'name': 'Linda Shaffer', + 'gender': 'female', + 'company': 'ZORK', + 'email': 'lindashaffer@zork.com', + 'phone': '+1 (828) 524-3011', + 'address': '350 Plymouth Street, Waterford, Washington, 6715', + 'bd': '2017-07-09T05:51:11 -06:00' + }, + { + '_id': '5a7b73f741e22fc19ffa6952', + 'index': 57, + 'guid': 'cc2ac19d-7d67-4f60-973a-369160a9c377', + 'isActive': false, + 'balance': 2651.39, + 'age': 20, + 'name': 'Montoya Riggs', + 'gender': 'male', + 'company': 'MARKETOID', + 'email': 'montoyariggs@marketoid.com', + 'phone': '+1 (809) 562-3786', + 'address': '633 Monitor Street, Chicopee, District Of Columbia, 550', + 'bd': '2016-02-05T12:36:05 -06:00' + }, + { + '_id': '5a7b73f7de56ead40c26e69a', + 'index': 58, + 'guid': '6e0b06b8-1199-498c-8002-41f4972aa2d2', + 'isActive': false, + 'balance': 3463.92, + 'age': 28, + 'name': 'Walker Duran', + 'gender': 'male', + 'company': 'GEOFORM', + 'email': 'walkerduran@geoform.com', + 'phone': '+1 (868) 502-2553', + 'address': '550 Kensington Walk, Wyano, Virginia, 7703', + 'bd': '2017-08-18T12:39:37 -06:00' + }, + { + '_id': '5a7b73f70a04fe142269ea8d', + 'index': 59, + 'guid': 'c6733cd5-1e73-4317-b4bc-1a9e597581a4', + 'isActive': true, + 'balance': 3846.35, + 'age': 26, + 'name': 'Suzanne House', + 'gender': 'female', + 'company': 'SYBIXTEX', + 'email': 'suzannehouse@sybixtex.com', + 'phone': '+1 (892) 533-2739', + 'address': '367 Harwood Place, Twilight, Oregon, 9799', + 'bd': '2016-11-26T11:57:18 -06:00' + }, + { + '_id': '5a7b73f7339943d94af3b39d', + 'index': 60, + 'guid': '4ff2c2aa-0573-4be1-a1c8-f684af8a5fbf', + 'isActive': false, + 'balance': 2717.94, + 'age': 26, + 'name': 'Lewis Oconnor', + 'gender': 'male', + 'company': 'EXOZENT', + 'email': 'lewisoconnor@exozent.com', + 'phone': '+1 (954) 582-2660', + 'address': '717 Sutter Avenue, Bartley, Michigan, 1142', + 'bd': '2017-08-21T08:25:00 -06:00' + }, + { + '_id': '5a7b73f7d8e266ad1bc5daa8', + 'index': 61, + 'guid': '94667aad-86fc-4a2c-94fb-11b572307c75', + 'isActive': false, + 'balance': 2725.58, + 'age': 39, + 'name': 'Shelley Bonner', + 'gender': 'female', + 'company': 'INDEXIA', + 'email': 'shelleybonner@indexia.com', + 'phone': '+1 (965) 490-3768', + 'address': '896 Clinton Avenue, Canoochee, Idaho, 1154', + 'bd': '2016-04-11T06:08:29 -06:00' + }, + { + '_id': '5a7b73f7e74a5af674e4cbdd', + 'index': 62, + 'guid': 'ec68c47e-7cbd-485e-8d54-fab1bb6ea008', + 'isActive': true, + 'balance': 1343.87, + 'age': 29, + 'name': 'Mccall Morales', + 'gender': 'male', + 'company': 'QUILITY', + 'email': 'mccallmorales@quility.com', + 'phone': '+1 (939) 455-2610', + 'address': '325 Crystal Street, Harleigh, Wyoming, 5658', + 'bd': '2014-11-20T07:30:04 -06:00' + }, + { + '_id': '5a7b73f7efb231e53a0c94cd', + 'index': 63, + 'guid': '6a8b3f55-406c-4ae8-be59-94a0f8fbd180', + 'isActive': false, + 'balance': 1092.69, + 'age': 37, + 'name': 'Vera Mcpherson', + 'gender': 'female', + 'company': 'CIPROMOX', + 'email': 'veramcpherson@cipromox.com', + 'phone': '+1 (890) 500-3729', + 'address': '771 Beard Street, Rivera, Minnesota, 4726', + 'bd': '2017-07-13T02:47:50 -06:00' + }, + { + '_id': '5a7b73f7e345c5dfc5d636e4', + 'index': 64, + 'guid': '46879caf-76e6-46e0-9b8b-bc17667a81ea', + 'isActive': true, + 'balance': 2077.12, + 'age': 36, + 'name': 'Gregory Roth', + 'gender': 'male', + 'company': 'EARWAX', + 'email': 'gregoryroth@earwax.com', + 'phone': '+1 (806) 595-2477', + 'address': '349 Dunham Place, Sardis, Alabama, 3320', + 'bd': '2017-11-08T02:26:23 -06:00' + }, + { + '_id': '5a7b73f77f5f9d730fab11e0', + 'index': 65, + 'guid': '9cfb8f58-7acf-4a39-bf2b-c90269c33db0', + 'isActive': true, + 'balance': 3503.58, + 'age': 31, + 'name': 'Russell Carver', + 'gender': 'male', + 'company': 'PREMIANT', + 'email': 'russellcarver@premiant.com', + 'phone': '+1 (849) 521-2335', + 'address': '851 Noble Street, Holcombe, Oklahoma, 311', + 'bd': '2016-07-10T10:08:35 -06:00' + }, + { + '_id': '5a7b73f7cab10f461153989c', + 'index': 66, + 'guid': '2562a818-4451-4193-94cd-650d131ff097', + 'isActive': false, + 'balance': 1652.9, + 'age': 21, + 'name': 'Darlene Hurley', + 'gender': 'female', + 'company': 'STELAECOR', + 'email': 'darlenehurley@stelaecor.com', + 'phone': '+1 (868) 492-2270', + 'address': '627 Wilson Street, Loveland, Louisiana, 765', + 'bd': '2017-05-20T12:39:31 -06:00' + }, + { + '_id': '5a7b73f7ecccc997e4160a59', + 'index': 67, + 'guid': '0050170f-0283-481d-9633-dc9d134be121', + 'isActive': true, + 'balance': 3692.88, + 'age': 21, + 'name': 'Lela Bailey', + 'gender': 'female', + 'company': 'AQUOAVO', + 'email': 'lelabailey@aquoavo.com', + 'phone': '+1 (917) 449-2329', + 'address': '121 Adams Street, Malo, Arkansas, 7435', + 'bd': '2016-11-06T04:55:46 -06:00' + } + ] +} \ No newline at end of file diff --git a/src/app/shared/interceptors/token.interceptor.ts b/src/app/shared/interceptors/token.interceptor.ts new file mode 100644 index 0000000..26564d3 --- /dev/null +++ b/src/app/shared/interceptors/token.interceptor.ts @@ -0,0 +1,39 @@ +import { Injectable } from "@angular/core"; +import { + HttpEvent, + HttpInterceptor, + HttpHandler, + HttpRequest +} from "@angular/common/http"; +import { Observable } from "rxjs"; +import { JwtAuthService } from "../services/auth/jwt-auth.service"; + +@Injectable() +export class TokenInterceptor implements HttpInterceptor { + + constructor(private jwtAuth: JwtAuthService) {} + + intercept( + req: HttpRequest, + next: HttpHandler + ): Observable> { + var token = this.jwtAuth.token || this.jwtAuth.getJwtToken(); + + var changedReq; + + if (token) { + + changedReq = req.clone({ + setHeaders: { + Authorization: `Bearer ${token}` + }, + }); + + } else { + + changedReq = req; + + } + return next.handle(changedReq); + } +} \ No newline at end of file diff --git a/src/app/shared/models/event.model.ts b/src/app/shared/models/event.model.ts new file mode 100644 index 0000000..30cfaa2 --- /dev/null +++ b/src/app/shared/models/event.model.ts @@ -0,0 +1,58 @@ +import { CalendarEventAction, CalendarEvent } from 'angular-calendar'; +import { + startOfDay, + endOfDay, + subDays, + addDays, + endOfMonth, + isSameDay, + isSameMonth, + addHours +} from 'date-fns'; + +export class MatXCalendarEvent implements CalendarEvent { + _id?: string; + start: Date; + end?: Date; + title: string; + color?: { + primary: string; + secondary: string; + }; + actions?: CalendarEventAction[]; + allDay?: boolean; + cssClass?: string; + resizable?: { + beforeStart?: boolean; + afterEnd?: boolean; + }; + draggable?: boolean; + meta?: { + location: string, + notes: string + }; + + constructor(data?) { + data = data || {}; + this.start = new Date(data.start) || startOfDay(new Date()); + this.end = data.end ? new Date(data.end) : null; + this._id = data._id || ''; + this.title = data.title || ''; + this.color = { + primary: data.color && data.color.primary || '#247ba0', + secondary: data.color && data.color.secondary || '#D1E8FF' + }; + this.draggable = data.draggable || true; + this.resizable = { + beforeStart: data.resizable && data.resizable.beforeStart || true, + afterEnd: data.resizable && data.resizable.afterEnd || true + }; + this.actions = data.actions || []; + this.allDay = data.allDay || false; + this.cssClass = data.cssClass || ''; + this.meta = { + location: data.meta && data.meta.location || '', + notes: data.meta && data.meta.notes || '' + }; + } +} diff --git a/src/app/shared/models/invoice.model.ts b/src/app/shared/models/invoice.model.ts new file mode 100644 index 0000000..fca0e1a --- /dev/null +++ b/src/app/shared/models/invoice.model.ts @@ -0,0 +1,24 @@ +export interface Invoice { + id?: string; + orderNo?: string; + status?: string; + date?: string; + currency?: string; + vat?: number; + buyer?: { + name: string; + address: string; + }; + seller?: { + name: string; + address: string; + }; + item?: InvoiceItem[]; +} + +export interface InvoiceItem { + name: string; + unit: number; + price: number; + id? ; +} diff --git a/src/app/shared/models/product.model.ts b/src/app/shared/models/product.model.ts new file mode 100644 index 0000000..277e7ad --- /dev/null +++ b/src/app/shared/models/product.model.ts @@ -0,0 +1,19 @@ +export class Product { + public _id: string; + public name: string; + public description?: string; + public category?: string; + public tags?: string[]; + public price: { + sale: number, + previous?: number + }; + public ratings?: { + rating: number, + ratingCount: number + }; + public features?: string[]; + public photo?: string; + public gallery?: string[]; + public badge?: { text: string, color?: string }; +} diff --git a/src/app/shared/models/todo.model.ts b/src/app/shared/models/todo.model.ts new file mode 100644 index 0000000..290add0 --- /dev/null +++ b/src/app/shared/models/todo.model.ts @@ -0,0 +1,19 @@ +export interface TodoItem { + id?: number; + title?: string; + note?: string; + important?: boolean; + starred?: boolean; + done?: boolean; + read?: boolean; + selected?: boolean; + startDate?: string; + dueDate?: string; + + tag?: number[]; +} + +export interface TagItem { + id?: number; + name?: string; +} \ No newline at end of file diff --git a/src/app/shared/models/user.model.ts b/src/app/shared/models/user.model.ts new file mode 100644 index 0000000..6ca9082 --- /dev/null +++ b/src/app/shared/models/user.model.ts @@ -0,0 +1,5 @@ +export interface User { + id?: string; + displayName?: string; + role?: string +} \ No newline at end of file diff --git a/src/app/shared/pipes/excerpt.pipe.ts b/src/app/shared/pipes/excerpt.pipe.ts new file mode 100644 index 0000000..4c35159 --- /dev/null +++ b/src/app/shared/pipes/excerpt.pipe.ts @@ -0,0 +1,10 @@ +import { Pipe, PipeTransform } from "@angular/core"; + +@Pipe({ name: 'excerpt' }) +export class ExcerptPipe implements PipeTransform { + transform(text: string, limit: number = 5) { + if(text.length <= limit) + return text; + return text.substring(0, limit) + '...'; + } +} \ No newline at end of file diff --git a/src/app/shared/pipes/get-value-by-key.pipe.ts b/src/app/shared/pipes/get-value-by-key.pipe.ts new file mode 100644 index 0000000..8d40de8 --- /dev/null +++ b/src/app/shared/pipes/get-value-by-key.pipe.ts @@ -0,0 +1,21 @@ +import { Pipe, PipeTransform } from "@angular/core"; + +@Pipe({ + name: "getValueByKey", + pure: false +}) +export class GetValueByKeyPipe implements PipeTransform { + transform(value: any[], id: number, property: string): any { + const filteredObj = value.find(item => { + if (item.id !== undefined) { + return item.id === id; + } + + return false; + }); + + if (filteredObj) { + return filteredObj[property]; + } + } +} diff --git a/src/app/shared/pipes/relative-time.pipe.ts b/src/app/shared/pipes/relative-time.pipe.ts new file mode 100644 index 0000000..5a21e4d --- /dev/null +++ b/src/app/shared/pipes/relative-time.pipe.ts @@ -0,0 +1,33 @@ +import { Pipe, PipeTransform } from "@angular/core"; + +@Pipe({ name: 'relativeTime' }) +export class RelativeTimePipe implements PipeTransform { + transform(value: Date) { + if(!(value instanceof Date)) + value = new Date(value); + + let seconds: number = Math.floor(((new Date()).getTime() - value.getTime()) / 1000); + let interval: number = Math.floor(seconds / 31536000); + + if (interval > 1) { + return interval + " years ago"; + } + interval = Math.floor(seconds / 2592000); + if (interval > 1) { + return interval + " months ago"; + } + interval = Math.floor(seconds / 86400); + if (interval > 1) { + return interval + " days ago"; + } + interval = Math.floor(seconds / 3600); + if (interval > 1) { + return interval + " hours ago"; + } + interval = Math.floor(seconds / 60); + if (interval > 1) { + return interval + " minutes ago"; + } + return Math.floor(seconds) + " seconds ago"; + } +} \ No newline at end of file diff --git a/src/app/shared/pipes/shared-pipes.module.ts b/src/app/shared/pipes/shared-pipes.module.ts new file mode 100644 index 0000000..b39a79f --- /dev/null +++ b/src/app/shared/pipes/shared-pipes.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { RelativeTimePipe } from './relative-time.pipe'; +import { ExcerptPipe } from "./excerpt.pipe"; +import { GetValueByKeyPipe } from './get-value-by-key.pipe'; + +const pipes = [ + RelativeTimePipe, + ExcerptPipe, + GetValueByKeyPipe +] + +@NgModule({ + imports: [ + CommonModule + ], + declarations: pipes, + exports: pipes +}) +export class SharedPipesModule {} \ No newline at end of file diff --git a/src/app/shared/search/search-input-over/search-input-over.component.html b/src/app/shared/search/search-input-over/search-input-over.component.html new file mode 100644 index 0000000..dcb581a --- /dev/null +++ b/src/app/shared/search/search-input-over/search-input-over.component.html @@ -0,0 +1,9 @@ +
+ +
+ +
+ close +
diff --git a/src/app/shared/search/search-input-over/search-input-over.component.scss b/src/app/shared/search/search-input-over/search-input-over.component.scss new file mode 100644 index 0000000..6e95fe8 --- /dev/null +++ b/src/app/shared/search/search-input-over/search-input-over.component.scss @@ -0,0 +1,40 @@ +.search-bar-wide { + &.open { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 64px; + z-index: 999; + .search-icon-btn { + display: none; + } + div { + display: flex; + } + .search-close { + display: block; + } + } + div { + display: none; + height: 100%; + width: 100%; + input { + height: 100%; + width: 100%; + border: 0; + outline: 0; + padding: 0; + font-weight: 700; + padding-left: 15px; + } + } + .search-close { + display: none; + position: absolute; + top: 20px; + right: 15px; + cursor: pointer; + } +} \ No newline at end of file diff --git a/src/app/shared/search/search-input-over/search-input-over.component.spec.ts b/src/app/shared/search/search-input-over/search-input-over.component.spec.ts new file mode 100644 index 0000000..9043200 --- /dev/null +++ b/src/app/shared/search/search-input-over/search-input-over.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SearchInputOverComponent } from './search-input-over.component'; + +describe('SearchInputOverComponent', () => { + let component: SearchInputOverComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SearchInputOverComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SearchInputOverComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/search/search-input-over/search-input-over.component.ts b/src/app/shared/search/search-input-over/search-input-over.component.ts new file mode 100644 index 0000000..a3eacb9 --- /dev/null +++ b/src/app/shared/search/search-input-over/search-input-over.component.ts @@ -0,0 +1,61 @@ +import { + Component, + OnInit, + Output, + EventEmitter, + OnDestroy, + Input +} from "@angular/core"; +import { FormControl } from "@angular/forms"; +import { Subscription } from "rxjs"; +import { debounceTime } from "rxjs/operators"; +import { SearchService } from "../search.service"; +import { Router, ActivatedRoute } from "@angular/router"; + +@Component({ + selector: "matx-search-input-over", + templateUrl: "./search-input-over.component.html", + styleUrls: ["./search-input-over.component.scss"] +}) +export class SearchInputOverComponent implements OnInit, OnDestroy { + isOpen: boolean; + @Input('resultPage') resultPage: string; + @Input('placeholder') placeholder: string = "Search here"; + @Output("search") search = new EventEmitter(); + searchCtrl = new FormControl(); + searchCtrlSub: Subscription; + constructor( + private searchService: SearchService, + private router: Router, + private route: ActivatedRoute + ) {} + + ngOnInit() { + this.searchCtrl.valueChanges.pipe(debounceTime(200)) + .subscribe(value => { + this.search.emit(value); + this.searchService.searchTerm.next(value); + }); + } + + ngOnDestroy() { + if (this.searchCtrlSub) { + this.searchCtrlSub.unsubscribe(); + } + } + navigateToResult() { + if(this.resultPage) { + this.router.navigateByUrl(this.resultPage); + } + } + open() { + this.isOpen = true; + this.navigateToResult(); + } + close() { + this.isOpen = false; + } + toggle() { + this.isOpen = !this.isOpen; + } +} diff --git a/src/app/shared/search/search.module.ts b/src/app/shared/search/search.module.ts new file mode 100644 index 0000000..711c551 --- /dev/null +++ b/src/app/shared/search/search.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { SearchInputOverComponent } from "./search-input-over/search-input-over.component"; +import { ReactiveFormsModule } from "@angular/forms"; +import { MatButtonModule } from "@angular/material/button"; +import { MatIconModule } from "@angular/material/icon"; + +@NgModule({ + declarations: [SearchInputOverComponent], + exports: [SearchInputOverComponent], + imports: [ReactiveFormsModule, MatIconModule, MatButtonModule, CommonModule] +}) +export class SearchModule {} diff --git a/src/app/shared/search/search.service.ts b/src/app/shared/search/search.service.ts new file mode 100644 index 0000000..95f1e93 --- /dev/null +++ b/src/app/shared/search/search.service.ts @@ -0,0 +1,12 @@ +import { Injectable } from '@angular/core'; +import { Observable, BehaviorSubject } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class SearchService { + public searchTerm: BehaviorSubject = new BehaviorSubject(''); + public searchTerm$: Observable = this.searchTerm.asObservable(); + + constructor() {} +} diff --git a/src/app/shared/services/app-confirm/app-confirm.component.ts b/src/app/shared/services/app-confirm/app-confirm.component.ts new file mode 100644 index 0000000..a21e5c4 --- /dev/null +++ b/src/app/shared/services/app-confirm/app-confirm.component.ts @@ -0,0 +1,28 @@ +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { Component, Inject } from '@angular/core'; + +@Component({ + selector: 'app-confirm', + template: `

{{ data.title }}

+
{{ data.message }}
+
+ +   + + +
`, +}) +export class AppComfirmComponent { + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data:any + ) {} +} \ No newline at end of file diff --git a/src/app/shared/services/app-confirm/app-confirm.service.ts b/src/app/shared/services/app-confirm/app-confirm.service.ts new file mode 100644 index 0000000..5f3ed10 --- /dev/null +++ b/src/app/shared/services/app-confirm/app-confirm.service.ts @@ -0,0 +1,28 @@ +import { Observable } from 'rxjs'; +import { MatDialogRef, MatDialog, MatDialogConfig } from '@angular/material/dialog'; +import { Injectable } from '@angular/core'; + +import { AppComfirmComponent } from './app-confirm.component'; + +interface confirmData { + title?: string, + message?: string +} + +@Injectable() +export class AppConfirmService { + + constructor(private dialog: MatDialog) { } + + public confirm(data:confirmData = {}): Observable { + data.title = data.title || 'Confirm'; + data.message = data.message || 'Are you sure?'; + let dialogRef: MatDialogRef; + dialogRef = this.dialog.open(AppComfirmComponent, { + width: '380px', + disableClose: true, + data: {title: data.title, message: data.message} + }); + return dialogRef.afterClosed(); + } +} \ No newline at end of file diff --git a/src/app/shared/services/app-loader/app-loader.component.css b/src/app/shared/services/app-loader/app-loader.component.css new file mode 100644 index 0000000..c785377 --- /dev/null +++ b/src/app/shared/services/app-loader/app-loader.component.css @@ -0,0 +1,3 @@ +.mat-dialog-content { + min-height: 122px; +} \ No newline at end of file diff --git a/src/app/shared/services/app-loader/app-loader.component.html b/src/app/shared/services/app-loader/app-loader.component.html new file mode 100644 index 0000000..e44a95d --- /dev/null +++ b/src/app/shared/services/app-loader/app-loader.component.html @@ -0,0 +1,6 @@ +
+
{{ title }}
+
+ +
+
diff --git a/src/app/shared/services/app-loader/app-loader.component.ts b/src/app/shared/services/app-loader/app-loader.component.ts new file mode 100644 index 0000000..1c65f8a --- /dev/null +++ b/src/app/shared/services/app-loader/app-loader.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from '@angular/core'; +import { MatDialogRef } from '@angular/material/dialog'; + +@Component({ + selector: 'app-app-loader', + templateUrl: './app-loader.component.html', + styleUrls: ['./app-loader.component.css'] +}) +export class AppLoaderComponent implements OnInit { + title; + message; + constructor(public dialogRef: MatDialogRef) {} + + ngOnInit() { + } + +} diff --git a/src/app/shared/services/app-loader/app-loader.service.ts b/src/app/shared/services/app-loader/app-loader.service.ts new file mode 100644 index 0000000..d4e77ea --- /dev/null +++ b/src/app/shared/services/app-loader/app-loader.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@angular/core'; +import { MatDialog, MatDialogRef } from '@angular/material/dialog'; +import { Observable } from 'rxjs'; +import { AppLoaderComponent } from './app-loader.component'; + +interface Config { + width?: string +} + +@Injectable() +export class AppLoaderService { + dialogRef: MatDialogRef; + constructor(private dialog: MatDialog) { } + + public open(title: string = 'Please wait', config: Config = {width: '200px'}): Observable { + this.dialogRef = this.dialog.open(AppLoaderComponent, { disableClose: true, backdropClass: 'light-backdrop'}); + this.dialogRef.updateSize(config.width); + this.dialogRef.componentInstance.title = title; + return this.dialogRef.afterClosed(); + } + + public close() { + if(this.dialogRef) + this.dialogRef.close(); + } +} \ No newline at end of file diff --git a/src/app/shared/services/auth/jwt-auth.service.ts b/src/app/shared/services/auth/jwt-auth.service.ts new file mode 100644 index 0000000..2c5fc3a --- /dev/null +++ b/src/app/shared/services/auth/jwt-auth.service.ts @@ -0,0 +1,128 @@ +import { Injectable } from '@angular/core'; +import { LocalStoreService } from '../local-store.service'; +import { HttpClient } from '@angular/common/http'; +import { Router } from '@angular/router'; +import { map, catchError, delay } from 'rxjs/operators'; +import { User } from '../../models/user.model'; +import { of, BehaviorSubject, throwError } from 'rxjs'; +import { environment } from 'environments/environment'; + +// ================= only for demo purpose =========== +const DEMO_TOKEN = + 'eyJfaWQiOiI1YjhkNDc4MDc4NmM3MjE3MjBkYzU1NzMiLCJlbWFpbCI6InJhZmkuYm9ncmFAZ21haWwuY29tIiwicm9sZSI6IlNBIiwiYWN0aXZlIjp0cnVlLCJpYXQiOjE1ODc3MTc2NTgsImV4cCI6MTU4ODMyMjQ1OH0.dXw0ySun5ex98dOzTEk0lkmXJvxg3Qgz4ed'; + +const DEMO_USER: User = { + id: '4sa00c45639d2c0c54b354ba', + displayName: 'John Doe', + role: 'Admin', +}; +// ================= you will get those data from server ======= + +@Injectable({ + providedIn: 'root', +}) +export class JwtAuthService { + token; + isAuthenticated: Boolean; + user: User; + user$ = (new BehaviorSubject(this.user)); + signingIn: Boolean; + JWT_TOKEN = 'JWT_TOKEN'; + APP_USER = 'MATX_USER'; + + constructor( + private ls: LocalStoreService, + private http: HttpClient, + private router: Router + ) {} + + public signin(username, password) { + return of({token: DEMO_TOKEN, user: DEMO_USER}) + .pipe( + delay(1000), + map((res: any) => { + this.setUserAndToken(res.token, res.user, !!res); + this.signingIn = false; + return res; + }), + catchError((error) => { + return throwError(error); + }) + ); + + // FOLLOWING CODE SENDS SIGNIN REQUEST TO SERVER + + // this.signingIn = true; + // return this.http.post(`${environment.apiURL}/auth/local`, { username, password }) + // .pipe( + // map((res: any) => { + // this.setUserAndToken(res.token, res.user, !!res); + // this.signingIn = false; + // return res; + // }), + // catchError((error) => { + // return throwError(error); + // }) + // ); + } + + /* + checkTokenIsValid is called inside constructor of + shared/components/layouts/admin-layout/admin-layout.component.ts + */ + public checkTokenIsValid() { + return of(DEMO_USER) + .pipe( + map((profile: User) => { + this.setUserAndToken(this.getJwtToken(), profile, true); + this.signingIn = false; + return profile; + }), + catchError((error) => { + return of(error); + }) + ); + + /* + The following code get user data and jwt token is assigned to + Request header using token.interceptor + This checks if the existing token is valid when app is reloaded + */ + + // return this.http.get(`${environment.apiURL}/api/users/profile`) + // .pipe( + // map((profile: User) => { + // this.setUserAndToken(this.getJwtToken(), profile, true); + // return profile; + // }), + // catchError((error) => { + // return of(error); + // }) + // ); + } + + public signout() { + this.setUserAndToken(null, null, false); + this.router.navigateByUrl('sessions/signin'); + } + + isLoggedIn(): Boolean { + return !!this.getJwtToken(); + } + + getJwtToken() { + return this.ls.getItem(this.JWT_TOKEN); + } + getUser() { + return this.ls.getItem(this.APP_USER); + } + + setUserAndToken(token: String, user: User, isAuthenticated: Boolean) { + this.isAuthenticated = isAuthenticated; + this.token = token; + this.user = user; + this.user$.next(user); + this.ls.setItem(this.JWT_TOKEN, token); + this.ls.setItem(this.APP_USER, user); + } +} \ No newline at end of file diff --git a/src/app/shared/services/copier.service.ts b/src/app/shared/services/copier.service.ts new file mode 100644 index 0000000..f2f37e0 --- /dev/null +++ b/src/app/shared/services/copier.service.ts @@ -0,0 +1,60 @@ +/** + * This class is based on the code in the following projects: + * + * - https://github.com/zenorocha/select + * - https://github.com/zenorocha/clipboard.js/ + * + * Both released under MIT license - © Zeno Rocha + */ +import {Injectable} from '@angular/core'; + +@Injectable() +export class CopierService { + + private textarea: HTMLTextAreaElement; + + /** Copy the text value to the clipboard. */ + copyText(text: string): boolean { + this.createTextareaAndSelect(text); + + const copySuccessful = document.execCommand('copy'); + this.removeFake(); + + return copySuccessful; + } + + /** + * Creates a hidden textarea element, sets its value from `text` property, + * and makes a selection on it. + */ + private createTextareaAndSelect(text: string) { + // Create a fake element to hold the contents to copy + this.textarea = document.createElement('textarea'); + + // Prevent zooming on iOS + this.textarea.style.fontSize = '12pt'; + + // Hide the element + this.textarea.classList.add('cdk-visually-hidden'); + + // Move element to the same position vertically + const yPosition = window.pageYOffset || document.documentElement.scrollTop; + this.textarea.style.top = yPosition + 'px'; + + this.textarea.setAttribute('readonly', ''); + this.textarea.value = text; + + document.body.appendChild(this.textarea); + + this.textarea.select(); + this.textarea.setSelectionRange(0, this.textarea.value.length); + } + + /** Remove the text area from the DOM. */ + private removeFake() { + if (this.textarea) { + document.body.removeChild(this.textarea); + this.textarea = null; + } + } +} \ No newline at end of file diff --git a/src/app/shared/services/customizer.service.ts b/src/app/shared/services/customizer.service.ts new file mode 100644 index 0000000..fd5a1fd --- /dev/null +++ b/src/app/shared/services/customizer.service.ts @@ -0,0 +1,242 @@ +import { Injectable } from "@angular/core"; +import { Router, NavigationStart } from "@angular/router"; +import { filter } from "rxjs/operators"; +import { LayoutService } from "./layout.service"; + +@Injectable({ + providedIn: "root", +}) +export class CustomizerService { + colors = [ + { + class: "black", + active: false, + }, + { + class: "white", + active: false, + }, + { + class: "dark-blue", + active: false, + }, + { + class: "grey", + active: false, + }, + { + class: "brown", + active: false, + }, + { + class: "gray", + active: false, + }, + { + class: "purple", + active: false, + }, + { + class: "blue", + active: false, + }, + + { + class: "indigo", + active: false, + }, + { + class: "yellow", + active: false, + }, + { + class: "green", + active: false, + }, + { + class: "pink", + active: false, + }, + { + class: "red", + active: false, + }, + { + class: "slate", + active: false, + }, + ]; + + layoutOptions = [ + { + name: "Vertical Nav", + thumbnail: "assets/images/screenshots/layout1-customizer.png", + options: { + navigationPos: "side", + sidebarColor: "white", + sidebarCompactToggle: false, + topbarColor: "blue", + footerColor: "blue", + matTheme: "matx-blue", + }, + }, + { + name: "Dark Sidebar", + thumbnail: "assets/images/screenshots/layout1-blue-customizer.png", + options: { + navigationPos: "side", + sidebarColor: "slate", + sidebarCompactToggle: false, + topbarColor: "blue", + footerColor: "slate", + matTheme: "matx-blue", + }, + }, + { + name: "Night Mode", + thumbnail: "assets/images/screenshots/layout3-customizer.png", + options: { + sidebarColor: "slate", + sidebarCompactToggle: false, + topbarColor: "purple", + footerColor: "slate", + matTheme: "matx-dark-purple", + }, + } + ]; + + selectedSidebarColor; + topbarColors: any[]; + sidebarColors: any[]; + footerColors: any[]; + + constructor(private router: Router, private layout: LayoutService) { + this.topbarColors = this.getTopbarColors(); + this.sidebarColors = this.getSidebarColors(); + this.footerColors = this.getFooterColors(); + } + + getSidebarColors() { + let sidebarColors = [ + "black", + "slate", + "white", + "purple", + "blue", + "dark-blue", + ]; + return this.colors + .filter((color) => { + return sidebarColors.includes(color.class); + }) + .map((c) => { + c.active = c.class === this.layout.layoutConf.sidebarColor; + return { ...c }; + }); + } + + getTopbarColors() { + let topbarColors = [ + "black", + "slate", + "white", + "dark-gray", + "purple", + "dark-blue", + "blue", + "pink", + ]; + return this.colors + .filter((color) => { + return topbarColors.includes(color.class); + }) + .map((c) => { + c.active = c.class === this.layout.layoutConf.topbarColor; + return { ...c }; + }); + } + + getFooterColors() { + let footerColors = [ + "black", + "slate", + "white", + "dark-gray", + "purple", + "dark-blue", + "indigo", + "pink", + "red", + "yellow", + "green", + ]; + return this.colors + .filter((color) => { + return footerColors.includes(color.class); + }) + .map((c) => { + c.active = c.class === this.layout.layoutConf.footerColor; + return { ...c }; + }); + } + + changeSidebarColor(color) { + this.layout.publishLayoutChange({ sidebarColor: color.class }); + this.sidebarColors = this.getSidebarColors(); + } + + changeTopbarColor(color) { + this.layout.publishLayoutChange({ topbarColor: color.class }); + this.topbarColors = this.getTopbarColors(); + } + + changeFooterColor(color) { + this.layout.publishLayoutChange({ footerColor: color.class }); + this.footerColors = this.getFooterColors(); + } + + removeClass(el, className) { + if (!el || el.length === 0) return; + if (!el.length) { + el.classList.remove(className); + } else { + for (var i = 0; i < el.length; i++) { + el[i].classList.remove(className); + } + } + } + addClass(el, className) { + if (!el) return; + if (!el.length) { + el.classList.add(className); + } else { + for (var i = 0; i < el.length; i++) { + el[i].classList.add(className); + } + } + } + findClosest(el, className) { + if (!el) return; + while (el) { + var parent = el.parentElement; + if (parent && this.hasClass(parent, className)) { + return parent; + } + el = parent; + } + } + hasClass(el, className) { + if (!el) return; + return ( + ` ${el.className} `.replace(/[\n\t]/g, " ").indexOf(` ${className} `) > -1 + ); + } + toggleClass(el, className) { + if (!el) return; + if (this.hasClass(el, className)) { + this.removeClass(el, className); + } else { + this.addClass(el, className); + } + } +} diff --git a/src/app/shared/services/error-handler.service.ts b/src/app/shared/services/error-handler.service.ts new file mode 100644 index 0000000..2596721 --- /dev/null +++ b/src/app/shared/services/error-handler.service.ts @@ -0,0 +1,41 @@ +import { ErrorHandler, Injectable, Injector, ApplicationRef, ChangeDetectorRef } from '@angular/core'; + +@Injectable() +export class ErrorHandlerService extends ErrorHandler { + + errorCount = 0; + + constructor(protected injector: Injector) { + super(); + } + // https://github.com/angular/angular/issues/17010 + handleError(error: any) { + let increment = 5; + let max = 50; + + // Prevents change detection + let debugCtx = error['ngDebugContext']; + let changeDetectorRef = debugCtx && debugCtx.injector.get(ChangeDetectorRef); + if (changeDetectorRef) changeDetectorRef.detach(); + + this.errorCount = this.errorCount + 1; + if (this.errorCount % increment === 0) { + console.log(' '); + console.log(`errorHandler() was called ${this.errorCount} times.`); + console.log(' '); + super.handleError(error); + + if (this.errorCount === max) { + console.log(' '); + console.log(`Preventing recursive error after ${this.errorCount} recursive errors.`); + console.log(' '); + + let appRef = this.injector.get(ApplicationRef); + appRef.tick(); + } + } + else if (this.errorCount === 1) { + super.handleError(error); + } + } +} diff --git a/src/app/shared/services/layout.service.ts b/src/app/shared/services/layout.service.ts new file mode 100644 index 0000000..ca0b739 --- /dev/null +++ b/src/app/shared/services/layout.service.ts @@ -0,0 +1,113 @@ +import { Injectable, Renderer2 } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; +import { getQueryParam } from '../helpers/url.helper'; +import { ThemeService } from './theme.service'; + +export interface ILayoutConf { + navigationPos?: string; // side + sidebarStyle?: string; // full, compact, closed + sidebarCompactToggle?: boolean; // sidebar expandable on hover + sidebarColor?: string; // Sidebar background color http://demos.ui-lib.com/matx-doc/#matx-colors + isMobile?: boolean; // updated automatically + useBreadcrumb?: boolean; // Breadcrumb enabled/disabled + breadcrumb?: string; // simple, title + topbarFixed?: boolean; // Fixed header + footerFixed?: boolean; // Fixed Footer + topbarColor?: string; // Header background color http://demos.ui-lib.com/matx-doc/#matx-colors + footerColor?: string; // Header background color http://demos.ui-lib.com/matx-doc/#matx-colors + matTheme?: string; // material theme. matx-blue, matx-navy, matx-dark-purple, matx-dark-pink + perfectScrollbar?: boolean; +} +export interface ILayoutChangeOptions { + duration?: number; + transitionClass?: boolean; +} +interface IAdjustScreenOptions { + browserEvent?: any; + route?: string; +} + +@Injectable({ + providedIn: 'root' +}) +export class LayoutService { + public layoutConf: ILayoutConf; + layoutConfSubject = new BehaviorSubject(this.layoutConf); + layoutConf$ = this.layoutConfSubject.asObservable(); + public isMobile: boolean; + public currentRoute: string; + public fullWidthRoutes = []; + + constructor(private themeService: ThemeService) { + this.setAppLayout( + // ******** SET YOUR LAYOUT OPTIONS HERE ********* + { + navigationPos: 'side', + sidebarStyle: 'full', // full, compact, closed + sidebarColor: 'slate', // http://demos.ui-lib.com/matx-doc/#matx-colors + sidebarCompactToggle: false, // applied when "sidebarStyle" is "compact" + useBreadcrumb: true, + footerFixed: true, + topbarColor: 'purple', // http://demos.ui-lib.com/matx-doc/#matx-colors + footerColor: 'slate', // http://demos.ui-lib.com/matx-doc/#matx-colors + matTheme: 'matx-light-purple', // matx-blue, matx-navy, matx-light-purple, matx-dark-purple, matx-dark-pink + breadcrumb: 'simple', // simple, title + perfectScrollbar: true + } + ); + } + + setAppLayout(layoutConf: ILayoutConf) { + this.layoutConf = { ...this.layoutConf, ...layoutConf }; + this.applyMatTheme(this.layoutConf.matTheme); + + // ******* Only for demo purpose *** + this.setLayoutFromQuery(); + // ********************** + } + + publishLayoutChange(lc: ILayoutConf, opt: ILayoutChangeOptions = {}) { + if (this.layoutConf.matTheme !== lc.matTheme && lc.matTheme) { + this.themeService.changeTheme(this.layoutConf.matTheme, lc.matTheme); + } + + this.layoutConf = Object.assign(this.layoutConf, lc); + this.layoutConfSubject.next(this.layoutConf); + } + + applyMatTheme(theme) { + this.themeService.applyMatTheme(this.layoutConf.matTheme); + } + + setLayoutFromQuery() { + const layoutConfString = getQueryParam('layout'); + const prevTheme = this.layoutConf.matTheme; + try { + this.layoutConf = JSON.parse(layoutConfString); + this.themeService.changeTheme(prevTheme, this.layoutConf.matTheme); + } catch (e) {} + } + + adjustLayout(options: IAdjustScreenOptions = {}) { + let sidebarStyle: string; + this.isMobile = this.isSm(); + this.currentRoute = options.route || this.currentRoute; + sidebarStyle = this.isMobile ? 'closed' : 'full'; + + if (this.currentRoute) { + this.fullWidthRoutes.forEach(route => { + if (this.currentRoute.indexOf(route) !== -1) { + sidebarStyle = 'closed'; + } + }); + } + + this.publishLayoutChange({ + isMobile: this.isMobile, + sidebarStyle: sidebarStyle + }); + } + isSm() { + return window.matchMedia(`(max-width: 959px)`).matches; + } +} diff --git a/src/app/shared/services/local-store.service.ts b/src/app/shared/services/local-store.service.ts new file mode 100644 index 0000000..c7b55b3 --- /dev/null +++ b/src/app/shared/services/local-store.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class LocalStoreService { + + private ls = window.localStorage; + + constructor() { } + + public setItem(key, value) { + value = JSON.stringify(value) + this.ls.setItem(key, value) + return true + } + + public getItem(key) { + let value = this.ls.getItem(key) + try { + return JSON.parse(value) + } catch (e) { + return null + } + } + + public clear() { + this.ls.clear(); + } +} \ No newline at end of file diff --git a/src/app/shared/services/match-media.service.ts b/src/app/shared/services/match-media.service.ts new file mode 100644 index 0000000..87f5815 --- /dev/null +++ b/src/app/shared/services/match-media.service.ts @@ -0,0 +1,31 @@ +import { Injectable } from '@angular/core'; +import { MediaObserver, MediaChange } from '@angular/flex-layout'; +import { BehaviorSubject } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class MatchMediaService { + activeMediaQuery: string; + onMediaChange: BehaviorSubject = new BehaviorSubject(''); + + constructor( + private mediaObserver: MediaObserver + ) { + this.activeMediaQuery = ''; + this.init(); + } + + + private init(): void + { + this.mediaObserver.media$ + .subscribe((change: MediaChange) => { + if ( this.activeMediaQuery !== change.mqAlias ) + { + this.activeMediaQuery = change.mqAlias; + this.onMediaChange.next(change.mqAlias); + } + }); + } +} diff --git a/src/app/shared/services/navigation.service.ts b/src/app/shared/services/navigation.service.ts new file mode 100644 index 0000000..aca444d --- /dev/null +++ b/src/app/shared/services/navigation.service.ts @@ -0,0 +1,156 @@ +import { Injectable } from "@angular/core"; +import { BehaviorSubject } from "rxjs"; + +interface IMenuItem { + type: string; // Possible values: link/dropDown/separator/extLink + name?: string; // Used as display text for item and title for separator type + state?: string; // Router state + icon?: string; // Material icon name + tooltip?: string; // Tooltip text + disabled?: boolean; // If true, item will not be appeared in sidenav. + sub?: IChildItem[]; // Dropdown items + badges?: IBadge[]; +} +interface IChildItem { + type?: string; + name: string; // Display text + state?: string; // Router state + icon?: string; + sub?: IChildItem[]; +} + +interface IBadge { + color: string; // primary/accent/warn/hex color codes(#fff000) + value: string; // Display text +} + +@Injectable() +export class NavigationService { + constructor() {} + iconMenu: IMenuItem[] = [ + + { + name: "Dashboard", + type: "link", + tooltip: "Dashboard", + icon: "dashboard", + state: "dashboard/analytics" + }, + { + name: "PAGES", + type: "separator" + }, + { + name: "Sessions", + type: "dropDown", + tooltip: "Pages", + icon: "how_to_reg", + state: "sessions", + badges: [{color: 'primary', value: '6'}], + sub: [ + { name: "Sign up", state: "signup" }, + { name: "Sign in", state: "signin" }, + { name: "Forgot", state: "forgot-password" }, + { name: "Lock screen", state: "lockscreen" }, + { name: "Not Found", state: "404" }, + { name: "Error", state: "error" } + ] + }, + { + name: "Blank Page", + type: "link", + icon: "check_box_outline_blank", + state: "pages/blank" + }, + { + name: "COMPONENTS", + type: "separator" + }, + { + name: "Forms", + type: "dropDown", + tooltip: "Forms", + icon: "description", + state: "forms", + sub: [ + { name: "Basic", state: "basic" }, + { name: "Editor", state: "editor" }, + { name: "Upload", state: "upload" }, + { name: "Wizard", state: "wizard" } + ] + }, + { + name: "Data Table", + type: "link", + tooltip: "Tables", + icon: "format_line_spacing", + state: "tables/mat-table" + }, + { + name: "Material Kit", + type: "link", + icon: "move_to_inbox", + state: "mat-kits" + }, + { + name: "OTHERS", + type: "separator" + }, + { + name: "Icons", + type: "link", + tooltip: "Material Icons", + icon: "store", + state: "icons" + }, + { + name: "Multi Level", + type: "dropDown", + tooltip: "Multi Level", + icon: "format_align_center", + state: "", + sub: [ + { + name: "Level Two", + type: "dropDown", + state: "fake-1", + sub: [ + { name: "Level Three", state: "fake-2" }, + { name: "Level Three", state: "fake-3" } + ] + }, + { name: "Level Two", state: "fake-4" }, + { name: "Level Two", state: "fake-5" } + ] + }, + { + name: "Documentation", + type: "extLink", + icon: "library_books", + state: "http://demos.ui-lib.com/matx-angular-doc/" + }, + { + name: "Upgrade to PRO", + type: "extLink", + icon: "present_to_all", + state: "http://matx-angular.ui-lib.com" + } + ]; + + + // Icon menu TITLE at the very top of navigation. + // This title will appear if any icon type item is present in menu. + iconTypeMenuTitle: string = "Frequently Accessed"; + // sets iconMenu as default; + menuItems = new BehaviorSubject(this.iconMenu); + // navigation component has subscribed to this Observable + menuItems$ = this.menuItems.asObservable(); + + // Customizer component uses this method to change menu. + // You can remove this method and customizer component. + // Or you can customize this method to supply different menu for + // different user type. + publishNavigationChange(menuType: string) { + this.menuItems.next(this.iconMenu); + } +} diff --git a/src/app/shared/services/route-parts.service.ts b/src/app/shared/services/route-parts.service.ts new file mode 100644 index 0000000..2d07b40 --- /dev/null +++ b/src/app/shared/services/route-parts.service.ts @@ -0,0 +1,32 @@ +import { Injectable } from '@angular/core'; +import { Router, ActivatedRoute, NavigationEnd, ActivatedRouteSnapshot, Params, PRIMARY_OUTLET } from "@angular/router"; + +interface IRoutePart { + title: string, + breadcrumb: string, + params?: Params, + url: string, + urlSegments: any[] +} + +@Injectable() +export class RoutePartsService { + public routeParts: IRoutePart[]; + constructor(private router: Router) {} + + ngOnInit() { + } + generateRouteParts(snapshot: ActivatedRouteSnapshot): IRoutePart[] { + var routeParts = []; + if (snapshot) { + if (snapshot.firstChild) { + routeParts = routeParts.concat(this.generateRouteParts(snapshot.firstChild)); + } + if (snapshot.data['title'] && snapshot.url.length) { + // console.log(snapshot.data['title'], snapshot.url) + + } + } + return routeParts; + } +} \ No newline at end of file diff --git a/src/app/shared/services/theme.service.ts b/src/app/shared/services/theme.service.ts new file mode 100644 index 0000000..df119e9 --- /dev/null +++ b/src/app/shared/services/theme.service.ts @@ -0,0 +1,87 @@ +import { Injectable, Inject, Renderer2, RendererFactory2, EventEmitter } from '@angular/core'; +import { DOCUMENT } from '@angular/common'; +import { getQueryParam } from '../helpers/url.helper'; + +export interface ITheme { + name: string, + baseColor?: string, + isActive?: boolean +} + +@Injectable() +export class ThemeService { + public onThemeChange :EventEmitter = new EventEmitter(); + + public matxThemes :ITheme[] = [{ + "name": "matx-dark-purple", + "baseColor": "#7367f0", + "isActive": false + }, { + "name": "matx-dark-pink", + "baseColor": "#e91e63", + "isActive": false + }, { + "name": "matx-blue", + "baseColor": "#1976d2", + "isActive": true + }, { + "name": "matx-light-purple", + "baseColor": "#7367f0", + "isActive": false + }, { + "name": "matx-navy", + "baseColor": "#10174c", + "isActive": false + }]; + public activatedTheme: ITheme; + private renderer: Renderer2; + constructor( + @Inject(DOCUMENT) private document: Document, + rendererFactory: RendererFactory2 + ) { + this.renderer = rendererFactory.createRenderer(null, null); + } + + // Invoked in AppComponent and apply 'activatedTheme' on startup + applyMatTheme( themeName: string) { + + this.activatedTheme = this.matxThemes.find(t => t.name === themeName); + this.flipActiveFlag(themeName); + + // *********** ONLY FOR DEMO ********** + this.setThemeFromQuery(); + // ************************************ + + // this.changeTheme(themeName); + this.renderer.addClass(this.document.body, themeName); + + } + + changeTheme(prevTheme, themeName: string) { + this.renderer.removeClass(this.document.body, prevTheme); + this.renderer.addClass(this.document.body, themeName); + this.flipActiveFlag(themeName); + this.onThemeChange.emit(this.activatedTheme); + } + + flipActiveFlag(themeName:string) { + this.matxThemes.forEach((t) => { + t.isActive = false; + if(t.name === themeName) { + t.isActive = true; + this.activatedTheme = t; + } + }); + } + + // *********** ONLY FOR DEMO ********** + setThemeFromQuery() { + let themeStr = getQueryParam('theme'); + try { + this.activatedTheme = JSON.parse(themeStr); + console.log(this.activatedTheme); + + this.flipActiveFlag(this.activatedTheme.name); + } catch(e) {} + } +} diff --git a/src/app/shared/shared-material.module.ts b/src/app/shared/shared-material.module.ts new file mode 100644 index 0000000..672c517 --- /dev/null +++ b/src/app/shared/shared-material.module.ts @@ -0,0 +1,81 @@ +import { NgModule } from "@angular/core"; + +import { MatAutocompleteModule } from "@angular/material/autocomplete"; +import { MatBadgeModule } from "@angular/material/badge"; +import { MatBottomSheetModule } from "@angular/material/bottom-sheet"; +import { MatButtonModule } from "@angular/material/button"; +import { MatButtonToggleModule } from "@angular/material/button-toggle"; +import { MatCardModule } from "@angular/material/card"; +import { MatCheckboxModule } from "@angular/material/checkbox"; +import { MatChipsModule } from "@angular/material/chips"; +import { MatRippleModule, MatNativeDateModule } from "@angular/material/core"; +import { MatDatepickerModule } from "@angular/material/datepicker"; +import { MatDialogModule } from "@angular/material/dialog"; +import { MatDividerModule } from "@angular/material/divider"; +import { MatExpansionModule } from "@angular/material/expansion"; +import { MatFormFieldModule } from "@angular/material/form-field"; +import { MatGridListModule } from "@angular/material/grid-list"; +import { MatIconModule } from "@angular/material/icon"; +import { MatInputModule } from "@angular/material/input"; +import { MatListModule } from "@angular/material/list"; +import { MatMenuModule } from "@angular/material/menu"; +import { MatPaginatorModule } from "@angular/material/paginator"; +import { MatProgressBarModule } from "@angular/material/progress-bar"; +import { MatProgressSpinnerModule } from "@angular/material/progress-spinner"; +import { MatRadioModule } from "@angular/material/radio"; +import { MatSelectModule } from "@angular/material/select"; +import { MatSidenavModule } from "@angular/material/sidenav"; +import { MatSlideToggleModule } from "@angular/material/slide-toggle"; +import { MatSliderModule } from "@angular/material/slider"; +import { MatSnackBarModule } from "@angular/material/snack-bar"; +import { MatSortModule } from "@angular/material/sort"; +import { MatStepperModule } from "@angular/material/stepper"; +import { MatTableModule } from "@angular/material/table"; +import { MatTabsModule } from "@angular/material/tabs"; +import { MatToolbarModule } from "@angular/material/toolbar"; +import { MatTooltipModule } from "@angular/material/tooltip"; +import { MatTreeModule } from "@angular/material/tree"; +import { MatMomentDateModule } from "@angular/material-moment-adapter"; + +@NgModule({ + exports: [ + MatCheckboxModule, + MatButtonModule, + MatInputModule, + MatAutocompleteModule, + MatDatepickerModule, + MatFormFieldModule, + MatRadioModule, + MatSelectModule, + MatSliderModule, + MatSlideToggleModule, + MatMenuModule, + MatSidenavModule, + MatToolbarModule, + MatListModule, + MatGridListModule, + MatCardModule, + MatStepperModule, + MatTabsModule, + MatExpansionModule, + MatButtonToggleModule, + MatChipsModule, + MatIconModule, + MatProgressSpinnerModule, + MatProgressBarModule, + MatDialogModule, + MatTooltipModule, + MatSnackBarModule, + MatTableModule, + MatSortModule, + MatPaginatorModule, + MatNativeDateModule, + MatMomentDateModule, + MatTreeModule, + MatRippleModule, + MatBadgeModule, + MatBottomSheetModule, + MatDividerModule + ] +}) +export class SharedMaterialModule {} diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts new file mode 100644 index 0000000..ef8db73 --- /dev/null +++ b/src/app/shared/shared.module.ts @@ -0,0 +1,37 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +// SERVICES +import { ThemeService } from './services/theme.service'; +import { NavigationService } from "./services/navigation.service"; +import { RoutePartsService } from './services/route-parts.service'; +import { AuthGuard } from './guards/auth.guard'; +import { UserRoleGuard } from './guards/user-role.guard'; +import { AppConfirmService } from './services/app-confirm/app-confirm.service'; +import { AppLoaderService } from './services/app-loader/app-loader.service'; + +import { SharedComponentsModule } from './components/shared-components.module'; +import { SharedPipesModule } from './pipes/shared-pipes.module'; +import { SharedDirectivesModule } from './directives/shared-directives.module'; + +@NgModule({ + imports: [ + CommonModule, + SharedComponentsModule, + SharedPipesModule, + SharedDirectivesModule + ], + providers: [ + ThemeService, + NavigationService, + RoutePartsService, + AuthGuard, + UserRoleGuard, + AppConfirmService, + AppLoaderService + ], + exports: [ + + ] +}) +export class SharedModule { } diff --git a/src/app/vendor/Chart.min.js b/src/app/vendor/Chart.min.js new file mode 100644 index 0000000..0bdd5e5 --- /dev/null +++ b/src/app/vendor/Chart.min.js @@ -0,0 +1,14 @@ +/*! + * Chart.js + * http://chartjs.org/ + * Version: 2.1.6 + * + * Copyright 2016 Nick Downie + * Released under the MIT license + * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Chart=t()}}(function(){return function t(e,a,i){function n(r,l){if(!a[r]){if(!e[r]){var s="function"==typeof require&&require;if(!l&&s)return s(r,!0);if(o)return o(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var u=a[r]={exports:{}};e[r][0].call(u.exports,function(t){var a=e[r][1][t];return n(a?a:t)},u,u.exports,t,e,a,i)}return a[r].exports}for(var o="function"==typeof require&&require,r=0;re||t[3]&&t[3]<1?c(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"}function c(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function h(t,e){if(1>e||t[3]&&t[3]<1)return f(t,e);var a=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),n=Math.round(t[2]/255*100);return"rgb("+a+"%, "+i+"%, "+n+"%)"}function f(t,e){var a=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),n=Math.round(t[2]/255*100);return"rgba("+a+"%, "+i+"%, "+n+"%, "+(e||t[3]||1)+")"}function g(t,e){return 1>e||t[3]&&t[3]<1?p(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"}function p(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function m(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"}function b(t){return k[t.slice(0,3)]}function v(t,e,a){return Math.min(Math.max(e,t),a)}function x(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var y=t(6);e.exports={getRgba:i,getHsla:n,getRgb:r,getHsl:l,getHwb:o,getAlpha:s,hexString:d,rgbString:u,rgbaString:c,percentString:h,percentaString:f,hslString:g,hslaString:p,hwbString:m,keyword:b};var k={};for(var S in y)k[y[S]]=S},{6:6}],3:[function(t,e,a){var i=t(5),n=t(2),o=function(t){if(t instanceof o)return t;if(!(this instanceof o))return new o(t);this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1};var e;if("string"==typeof t)if(e=n.getRgba(t))this.setValues("rgb",e);else if(e=n.getHsla(t))this.setValues("hsl",e);else{if(!(e=n.getHwb(t)))throw new Error('Unable to parse color from string "'+t+'"');this.setValues("hwb",e)}else if("object"==typeof t)if(e=t,void 0!==e.r||void 0!==e.red)this.setValues("rgb",e);else if(void 0!==e.l||void 0!==e.lightness)this.setValues("hsl",e);else if(void 0!==e.v||void 0!==e.value)this.setValues("hsv",e);else if(void 0!==e.w||void 0!==e.whiteness)this.setValues("hwb",e);else{if(void 0===e.c&&void 0===e.cyan)throw new Error("Unable to parse color from object "+JSON.stringify(t));this.setValues("cmyk",e)}};o.prototype={rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t%=360,t=0>t?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return n.hexString(this.values.rgb)},rgbString:function(){return n.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return n.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return n.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return n.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return n.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return n.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return n.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],a=0;a=i?i/12.92:Math.pow((i+.055)/1.055,2.4)}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast:function(t){var e=this.luminosity(),a=t.luminosity();return e>a?(e+.05)/(a+.05):(a+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb,e=(299*t[0]+587*t[1]+114*t[2])/1e3;return 128>e},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;3>e;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,a=(e[0]+t)%360;return e[0]=0>a?360+a:a,this.setValues("hsl",e),this},mix:function(t,e){var a=this,i=t,n=void 0===e?.5:e,o=2*n-1,r=a.alpha()-i.alpha(),l=((o*r===-1?o:(o+r)/(1+o*r))+1)/2,s=1-l;return this.rgb(l*a.red()+s*i.red(),l*a.green()+s*i.green(),l*a.blue()+s*i.blue()).alpha(a.alpha()*n+i.alpha()*(1-n))},toJSON:function(){return this.rgb()},clone:function(){var t,e,a=new o,i=this.values,n=a.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],e={}.toString.call(t),"[object Array]"===e?n[r]=t.slice(0):"[object Number]"===e?n[r]=t:console.error("unexpected color value:",t));return a}},o.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},o.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},o.prototype.getValues=function(t){for(var e=this.values,a={},i=0;ie&&(e+=360),i=(l+s)/2,a=s==l?0:.5>=i?d/(s+l):d/(2-s-l),[e,100*a,100*i]}function n(t){var e,a,i,n=t[0],o=t[1],r=t[2],l=Math.min(n,o,r),s=Math.max(n,o,r),d=s-l;return a=0==s?0:d/s*1e3/10,s==l?e=0:n==s?e=(o-r)/d:o==s?e=2+(r-n)/d:r==s&&(e=4+(n-o)/d),e=Math.min(60*e,360),0>e&&(e+=360),i=s/255*1e3/10,[e,a,i]}function o(t){var e=t[0],a=t[1],n=t[2],o=i(t)[0],r=1/255*Math.min(e,Math.min(a,n)),n=1-1/255*Math.max(e,Math.max(a,n));return[o,100*r,100*n]}function l(t){var e,a,i,n,o=t[0]/255,r=t[1]/255,l=t[2]/255;return n=Math.min(1-o,1-r,1-l),e=(1-o-n)/(1-n)||0,a=(1-r-n)/(1-n)||0,i=(1-l-n)/(1-n)||0,[100*e,100*a,100*i,100*n]}function s(t){return Q[JSON.stringify(t)]}function d(t){var e=t[0]/255,a=t[1]/255,i=t[2]/255;e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,a=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92,i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92;var n=.4124*e+.3576*a+.1805*i,o=.2126*e+.7152*a+.0722*i,r=.0193*e+.1192*a+.9505*i;return[100*n,100*o,100*r]}function u(t){var e,a,i,n=d(t),o=n[0],r=n[1],l=n[2];return o/=95.047,r/=100,l/=108.883,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,l=l>.008856?Math.pow(l,1/3):7.787*l+16/116,e=116*r-16,a=500*(o-r),i=200*(r-l),[e,a,i]}function c(t){return W(u(t))}function h(t){var e,a,i,n,o,r=t[0]/360,l=t[1]/100,s=t[2]/100;if(0==l)return o=255*s,[o,o,o];a=.5>s?s*(1+l):s+l-s*l,e=2*s-a,n=[0,0,0];for(var d=0;3>d;d++)i=r+1/3*-(d-1),0>i&&i++,i>1&&i--,o=1>6*i?e+6*(a-e)*i:1>2*i?a:2>3*i?e+(a-e)*(2/3-i)*6:e,n[d]=255*o;return n}function f(t){var e,a,i=t[0],n=t[1]/100,o=t[2]/100;return 0===o?[0,0,0]:(o*=2,n*=1>=o?o:2-o,a=(o+n)/2,e=2*n/(o+n),[i,100*e,100*a])}function p(t){return o(h(t))}function m(t){return l(h(t))}function v(t){return s(h(t))}function x(t){var e=t[0]/60,a=t[1]/100,i=t[2]/100,n=Math.floor(e)%6,o=e-Math.floor(e),r=255*i*(1-a),l=255*i*(1-a*o),s=255*i*(1-a*(1-o)),i=255*i;switch(n){case 0:return[i,s,r];case 1:return[l,i,r];case 2:return[r,i,s];case 3:return[r,l,i];case 4:return[s,r,i];case 5:return[i,r,l]}}function y(t){var e,a,i=t[0],n=t[1]/100,o=t[2]/100;return a=(2-n)*o,e=n*o,e/=1>=a?a:2-a,e=e||0,a/=2,[i,100*e,100*a]}function k(t){return o(x(t))}function S(t){return l(x(t))}function w(t){return s(x(t))}function C(t){var e,a,i,n,o=t[0]/360,l=t[1]/100,s=t[2]/100,d=l+s;switch(d>1&&(l/=d,s/=d),e=Math.floor(6*o),a=1-s,i=6*o-e,0!=(1&e)&&(i=1-i),n=l+i*(a-l),e){default:case 6:case 0:r=a,g=n,b=l;break;case 1:r=n,g=a,b=l;break;case 2:r=l,g=a,b=n;break;case 3:r=l,g=n,b=a;break;case 4:r=n,g=l,b=a;break;case 5:r=a,g=l,b=n}return[255*r,255*g,255*b]}function M(t){return i(C(t))}function D(t){return n(C(t))}function A(t){return l(C(t))}function I(t){return s(C(t))}function F(t){var e,a,i,n=t[0]/100,o=t[1]/100,r=t[2]/100,l=t[3]/100;return e=1-Math.min(1,n*(1-l)+l),a=1-Math.min(1,o*(1-l)+l),i=1-Math.min(1,r*(1-l)+l),[255*e,255*a,255*i]}function T(t){return i(F(t))}function P(t){return n(F(t))}function _(t){return o(F(t))}function R(t){return s(F(t))}function V(t){var e,a,i,n=t[0]/100,o=t[1]/100,r=t[2]/100;return e=3.2406*n+-1.5372*o+r*-.4986,a=n*-.9689+1.8758*o+.0415*r,i=.0557*n+o*-.204+1.057*r,e=e>.0031308?1.055*Math.pow(e,1/2.4)-.055:e=12.92*e,a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:a=12.92*a,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i=12.92*i,e=Math.min(Math.max(0,e),1),a=Math.min(Math.max(0,a),1),i=Math.min(Math.max(0,i),1),[255*e,255*a,255*i]}function O(t){var e,a,i,n=t[0],o=t[1],r=t[2];return n/=95.047,o/=100,r/=108.883,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,e=116*o-16,a=500*(n-o),i=200*(o-r),[e,a,i]}function L(t){return W(O(t))}function B(t){var e,a,i,n,o=t[0],r=t[1],l=t[2];return 8>=o?(a=100*o/903.3,n=7.787*(a/100)+16/116):(a=100*Math.pow((o+16)/116,3),n=Math.pow(a/100,1/3)),e=.008856>=e/95.047?e=95.047*(r/500+n-16/116)/7.787:95.047*Math.pow(r/500+n,3),i=.008859>=i/108.883?i=108.883*(n-l/200-16/116)/7.787:108.883*Math.pow(n-l/200,3),[e,a,i]}function W(t){var e,a,i,n=t[0],o=t[1],r=t[2];return e=Math.atan2(r,o),a=360*e/2/Math.PI,0>a&&(a+=360),i=Math.sqrt(o*o+r*r),[n,i,a]}function z(t){return V(B(t))}function H(t){var e,a,i,n=t[0],o=t[1],r=t[2];return i=r/360*2*Math.PI,e=o*Math.cos(i),a=o*Math.sin(i),[n,e,a]}function N(t){return B(H(t))}function E(t){return z(H(t))}function U(t){return G[t]}function q(t){return i(U(t))}function j(t){return n(U(t))}function Y(t){return o(U(t))}function J(t){return l(U(t))}function X(t){return u(U(t))}function Z(t){return d(U(t))}e.exports={rgb2hsl:i,rgb2hsv:n,rgb2hwb:o,rgb2cmyk:l,rgb2keyword:s,rgb2xyz:d,rgb2lab:u,rgb2lch:c,hsl2rgb:h,hsl2hsv:f,hsl2hwb:p,hsl2cmyk:m,hsl2keyword:v,hsv2rgb:x,hsv2hsl:y,hsv2hwb:k,hsv2cmyk:S,hsv2keyword:w,hwb2rgb:C,hwb2hsl:M,hwb2hsv:D,hwb2cmyk:A,hwb2keyword:I,cmyk2rgb:F,cmyk2hsl:T,cmyk2hsv:P,cmyk2hwb:_,cmyk2keyword:R,keyword2rgb:U,keyword2hsl:q,keyword2hsv:j,keyword2hwb:Y,keyword2cmyk:J,keyword2lab:X,keyword2xyz:Z,xyz2rgb:V,xyz2lab:O,xyz2lch:L,lab2xyz:B,lab2rgb:z,lab2lch:W,lch2lab:H,lch2xyz:N,lch2rgb:E};var G={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Q={};for(var $ in G)Q[JSON.stringify(G[$])]=$},{}],5:[function(t,e,a){var i=t(4),n=function(){return new d};for(var o in i){n[o+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),i[t](e)}}(o);var r=/(\w+)2(\w+)/.exec(o),l=r[1],s=r[2];n[l]=n[l]||{},n[l][s]=n[o]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var a=i[t](e);if("string"==typeof a||void 0===a)return a;for(var n=0;ns)for(var d=0;t>d;d++){var u=l[d],c=r.getDatasetMeta(d);c.bar&&c.yAxisID===n.id&&r.isDatasetVisible(d)&&(o+=u.data[e]<0?u.data[e]:0)}else for(var h=0;t>h;h++){var f=l[h],g=r.getDatasetMeta(h);g.bar&&g.yAxisID===n.id&&r.isDatasetVisible(h)&&(o+=f.data[e]>0?f.data[e]:0)}return n.getPixelForValue(o)}return n.getBasePixel()},getRuler:function(t){var e,a=this,i=a.getMeta(),n=a.getScaleForId(i.xAxisID),o=a.getBarCount();e="category"===n.options.type?n.getPixelForTick(t+1)-n.getPixelForTick(t):n.width/n.ticks.length;var r=e*n.options.categoryPercentage,l=(e-e*n.options.categoryPercentage)/2,s=r/o;if(n.ticks.length!==a.chart.data.labels.length){var d=n.ticks.length/a.chart.data.labels.length;s*=d}var u=s*n.options.barPercentage,c=s-s*n.options.barPercentage;return{datasetCount:o,tickWidth:e,categoryWidth:r,categorySpacing:l,fullBarWidth:s,barWidth:u,barSpacing:c}},calculateBarWidth:function(t){var e=this.getScaleForId(this.getMeta().xAxisID),a=this.getRuler(t);return e.options.stacked?a.categoryWidth:a.barWidth},getBarIndex:function(t){var e,a,i=0;for(a=0;t>a;++a)e=this.chart.getDatasetMeta(a),e.bar&&this.chart.isDatasetVisible(a)&&++i;return i},calculateBarX:function(t,e){var a=this,i=a.getMeta(),n=a.getScaleForId(i.xAxisID),o=a.getBarIndex(e),r=a.getRuler(t),l=n.getPixelForValue(null,t,e,a.chart.isCombo);return l-=a.chart.isCombo?r.tickWidth/2:0,n.options.stacked?l+r.categoryWidth/2+r.categorySpacing:l+r.barWidth/2+r.categorySpacing+r.barWidth*o+r.barSpacing/2+r.barSpacing*o},calculateBarY:function(t,e){var a=this,i=a.getMeta(),n=a.getScaleForId(i.yAxisID),o=a.getDataset().data[t];if(n.options.stacked){for(var r=0,l=0,s=0;e>s;s++){var d=a.chart.data.datasets[s],u=a.chart.getDatasetMeta(s);u.bar&&u.yAxisID===n.id&&a.chart.isDatasetVisible(s)&&(d.data[t]<0?l+=d.data[t]||0:r+=d.data[t]||0)}return 0>o?n.getPixelForValue(l+o):n.getPixelForValue(r+o)}return n.getPixelForValue(o)},draw:function(t){var a=this,i=t||1;e.each(a.getMeta().data,function(t,e){var n=a.getDataset().data[e];null===n||void 0===n||isNaN(n)||t.transition(i).draw()},a)},setHoverStyle:function(t){var a=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},o=t._model;o.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:e.getValueAtIndexOrDefault(a.hoverBackgroundColor,i,e.getHoverColor(o.backgroundColor)),o.borderColor=n.hoverBorderColor?n.hoverBorderColor:e.getValueAtIndexOrDefault(a.hoverBorderColor,i,e.getHoverColor(o.borderColor)),o.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:e.getValueAtIndexOrDefault(a.hoverBorderWidth,i,o.borderWidth)},removeHoverStyle:function(t){var a=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},o=t._model,r=this.chart.options.elements.rectangle;o.backgroundColor=n.backgroundColor?n.backgroundColor:e.getValueAtIndexOrDefault(a.backgroundColor,i,r.backgroundColor),o.borderColor=n.borderColor?n.borderColor:e.getValueAtIndexOrDefault(a.borderColor,i,r.borderColor),o.borderWidth=n.borderWidth?n.borderWidth:e.getValueAtIndexOrDefault(a.borderWidth,i,r.borderWidth)}}),t.defaults.horizontalBar={hover:{mode:"label"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var a="";return t.length>0&&(t[0].yLabel?a=t[0].yLabel:e.labels.length>0&&t[0].indexc;c++)e.lineTo.apply(e,t(c));e.fill(),a.borderWidth&&e.stroke()},inRange:function(t,e){var a=this._view,i=!1;return a&&(i=a.x=a.y-a.height/2&&e<=a.y+a.height/2&&t>=a.x&&t<=a.base:e>=a.y-a.height/2&&e<=a.y+a.height/2&&t>=a.base&&t<=a.x),i}}),t.pivot()},calculateBarBase:function(t,e){ +var a=this,i=a.getMeta(),n=a.getScaleForId(i.xAxisID),o=0;if(n.options.stacked){var r=a.chart.data.datasets[t].data[e];if(0>r)for(var l=0;t>l;l++){var s=a.chart.data.datasets[l],d=a.chart.getDatasetMeta(l);d.bar&&d.xAxisID===n.id&&a.chart.isDatasetVisible(l)&&(o+=s.data[e]<0?s.data[e]:0)}else for(var u=0;t>u;u++){var c=a.chart.data.datasets[u],h=a.chart.getDatasetMeta(u);h.bar&&h.xAxisID===n.id&&a.chart.isDatasetVisible(u)&&(o+=c.data[e]>0?c.data[e]:0)}return n.getPixelForValue(o)}return n.getBasePixel()},getRuler:function(t){var e,a=this,i=a.getMeta(),n=a.getScaleForId(i.yAxisID),o=a.getBarCount();e="category"===n.options.type?n.getPixelForTick(t+1)-n.getPixelForTick(t):n.width/n.ticks.length;var r=e*n.options.categoryPercentage,l=(e-e*n.options.categoryPercentage)/2,s=r/o;if(n.ticks.length!==a.chart.data.labels.length){var d=n.ticks.length/a.chart.data.labels.length;s*=d}var u=s*n.options.barPercentage,c=s-s*n.options.barPercentage;return{datasetCount:o,tickHeight:e,categoryHeight:r,categorySpacing:l,fullBarHeight:s,barHeight:u,barSpacing:c}},calculateBarHeight:function(t){var e=this,a=e.getScaleForId(e.getMeta().yAxisID),i=e.getRuler(t);return a.options.stacked?i.categoryHeight:i.barHeight},calculateBarX:function(t,e){var a=this,i=a.getMeta(),n=a.getScaleForId(i.xAxisID),o=a.getDataset().data[t];if(n.options.stacked){for(var r=0,l=0,s=0;e>s;s++){var d=a.chart.data.datasets[s],u=a.chart.getDatasetMeta(s);u.bar&&u.xAxisID===n.id&&a.chart.isDatasetVisible(s)&&(d.data[t]<0?l+=d.data[t]||0:r+=d.data[t]||0)}return 0>o?n.getPixelForValue(l+o):n.getPixelForValue(r+o)}return n.getPixelForValue(o)},calculateBarY:function(t,e){var a=this,i=a.getMeta(),n=a.getScaleForId(i.yAxisID),o=a.getBarIndex(e),r=a.getRuler(t),l=n.getPixelForValue(null,t,e,a.chart.isCombo);return l-=a.chart.isCombo?r.tickHeight/2:0,n.options.stacked?l+r.categoryHeight/2+r.categorySpacing:l+r.barHeight/2+r.categorySpacing+r.barHeight*o+r.barSpacing/2+r.barSpacing*o}})}},{}],16:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.bubble={hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(t,e){return""},label:function(t,e){var a=e.datasets[t.datasetIndex].label||"",i=e.datasets[t.datasetIndex].data[t.index];return a+": ("+i.x+", "+i.y+", "+i.r+")"}}}},t.controllers.bubble=t.DatasetController.extend({dataElementType:t.elements.Point,update:function(t){var a=this,i=a.getMeta(),n=i.data;e.each(n,function(e,i){a.updateElement(e,i,t)})},updateElement:function(a,i,n){var o=this,r=o.getMeta(),l=o.getScaleForId(r.xAxisID),s=o.getScaleForId(r.yAxisID),d=a.custom||{},u=o.getDataset(),c=u.data[i],h=o.chart.options.elements.point,f=o.index;e.extend(a,{_xScale:l,_yScale:s,_datasetIndex:f,_index:i,_model:{x:n?l.getPixelForDecimal(.5):l.getPixelForValue(c,i,f,o.chart.isCombo),y:n?s.getBasePixel():s.getPixelForValue(c,i,f),radius:n?0:d.radius?d.radius:o.getRadius(c),hitRadius:d.hitRadius?d.hitRadius:e.getValueAtIndexOrDefault(u.hitRadius,i,h.hitRadius)}}),t.DatasetController.prototype.removeHoverStyle.call(o,a,h);var g=a._model;g.skip=d.skip?d.skip:isNaN(g.x)||isNaN(g.y),a.pivot()},getRadius:function(t){return t.r||this.chart.options.elements.point.radius},setHoverStyle:function(a){var i=this;t.DatasetController.prototype.setHoverStyle.call(i,a);var n=i.chart.data.datasets[a._datasetIndex],o=a._index,r=a.custom||{},l=a._model;l.radius=r.hoverRadius?r.hoverRadius:e.getValueAtIndexOrDefault(n.hoverRadius,o,i.chart.options.elements.point.hoverRadius)+i.getRadius(n.data[o])},removeHoverStyle:function(e){var a=this;t.DatasetController.prototype.removeHoverStyle.call(a,e,a.chart.options.elements.point);var i=a.chart.data.datasets[e._datasetIndex].data[e._index],n=e.custom||{},o=e._model;o.radius=n.radius?n.radius:a.getRadius(i)}})}},{}],17:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a=t.defaults;a.doughnut={animation:{animateRotate:!0,animateScale:!1},aspectRatio:1,hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('
    ');var a=t.data,i=a.datasets,n=a.labels;if(i.length)for(var o=0;o'),n[o]&&e.push(n[o]),e.push("");return e.push("
"),e.join("")},legend:{labels:{generateLabels:function(t){var a=t.data;return a.labels.length&&a.datasets.length?a.labels.map(function(i,n){var o=t.getDatasetMeta(0),r=a.datasets[0],l=o.data[n],s=l.custom||{},d=e.getValueAtIndexOrDefault,u=t.options.elements.arc,c=s.backgroundColor?s.backgroundColor:d(r.backgroundColor,n,u.backgroundColor),h=s.borderColor?s.borderColor:d(r.borderColor,n,u.borderColor),f=s.borderWidth?s.borderWidth:d(r.borderWidth,n,u.borderWidth);return{text:i,fillStyle:c,strokeStyle:h,lineWidth:f,hidden:isNaN(r.data[n])||o.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var a,i,n,o=e.index,r=this.chart;for(a=0,i=(r.data.datasets||[]).length;i>a;++a)n=r.getDatasetMeta(a),n.data[o].hidden=!n.data[o].hidden;r.update()}},cutoutPercentage:50,rotation:Math.PI*-.5,circumference:2*Math.PI,tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+e.datasets[t.datasetIndex].data[t.index]}}}},a.pie=e.clone(a.doughnut),e.extend(a.pie,{cutoutPercentage:0}),t.controllers.doughnut=t.controllers.pie=t.DatasetController.extend({dataElementType:t.elements.Arc,linkScales:e.noop,getRingIndex:function(t){for(var e=0,a=0;t>a;++a)this.chart.isDatasetVisible(a)&&++e;return e},update:function(t){var a=this,i=a.chart,n=i.chartArea,o=i.options,r=o.elements.arc,l=n.right-n.left-r.borderWidth,s=n.bottom-n.top-r.borderWidth,d=Math.min(l,s),u={x:0,y:0},c=a.getMeta(),h=o.cutoutPercentage,f=o.circumference;if(f<2*Math.PI){var g=o.rotation%(2*Math.PI);g+=2*Math.PI*(g>=Math.PI?-1:g<-Math.PI?1:0);var p=g+f,m={x:Math.cos(g),y:Math.sin(g)},b={x:Math.cos(p),y:Math.sin(p)},v=0>=g&&p>=0||g<=2*Math.PI&&2*Math.PI<=p,x=g<=.5*Math.PI&&.5*Math.PI<=p||g<=2.5*Math.PI&&2.5*Math.PI<=p,y=g<=-Math.PI&&-Math.PI<=p||g<=Math.PI&&Math.PI<=p,k=g<=.5*-Math.PI&&.5*-Math.PI<=p||g<=1.5*Math.PI&&1.5*Math.PI<=p,S=h/100,w={x:y?-1:Math.min(m.x*(m.x<0?1:S),b.x*(b.x<0?1:S)),y:k?-1:Math.min(m.y*(m.y<0?1:S),b.y*(b.y<0?1:S))},C={x:v?1:Math.max(m.x*(m.x>0?1:S),b.x*(b.x>0?1:S)),y:x?1:Math.max(m.y*(m.y>0?1:S),b.y*(b.y>0?1:S))},M={width:.5*(C.x-w.x),height:.5*(C.y-w.y)};d=Math.min(l/M.width,s/M.height),u={x:(C.x+w.x)*-.5,y:(C.y+w.y)*-.5}}i.outerRadius=Math.max(d/2,0),i.innerRadius=Math.max(h?i.outerRadius/100*h:1,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),i.offsetX=u.x*i.outerRadius,i.offsetY=u.y*i.outerRadius,c.total=a.calculateTotal(),a.outerRadius=i.outerRadius-i.radiusLength*a.getRingIndex(a.index),a.innerRadius=a.outerRadius-i.radiusLength,e.each(c.data,function(e,i){a.updateElement(e,i,t)})},updateElement:function(t,a,i){var n=this,o=n.chart,r=o.chartArea,l=o.options,s=l.animation,d=(l.elements.arc,(r.left+r.right)/2),u=(r.top+r.bottom)/2,c=l.rotation,h=l.rotation,f=n.getDataset(),g=i&&s.animateRotate?0:t.hidden?0:n.calculateCircumference(f.data[a])*(l.circumference/(2*Math.PI)),p=i&&s.animateScale?0:n.innerRadius,m=i&&s.animateScale?0:n.outerRadius,b=(t.custom||{},e.getValueAtIndexOrDefault);e.extend(t,{_datasetIndex:n.index,_index:a,_model:{x:d+o.offsetX,y:u+o.offsetY,startAngle:c,endAngle:h,circumference:g,outerRadius:m,innerRadius:p,label:b(f.label,a,o.data.labels[a])}});var v=t._model;this.removeHoverStyle(t),i&&s.animateRotate||(0===a?v.startAngle=l.rotation:v.startAngle=n.getMeta().data[a-1]._model.endAngle,v.endAngle=v.startAngle+v.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,a=this.getDataset(),i=this.getMeta(),n=0;return e.each(i.data,function(e,i){t=a.data[i],isNaN(t)||e.hidden||(n+=Math.abs(t))}),n},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(t/e):0}})}},{}],18:[function(t,e,a){"use strict";e.exports=function(t){function e(t,e){return a.getValueOrDefault(t.showLine,e.showLines)}var a=t.helpers;t.defaults.line={showLines:!0,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}},t.controllers.line=t.DatasetController.extend({datasetElementType:t.elements.Line,dataElementType:t.elements.Point,addElementAndReset:function(a){var i=this,n=i.chart.options,o=i.getMeta();t.DatasetController.prototype.addElementAndReset.call(i,a),e(i.getDataset(),n)&&0!==o.dataset._model.tension&&i.updateBezierControlPoints()},update:function(t){var i,n,o,r=this,l=r.getMeta(),s=l.dataset,d=l.data||[],u=r.chart.options,c=u.elements.line,h=r.getScaleForId(l.yAxisID),f=r.getDataset(),g=e(f,u);for(g&&(o=s.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),s._scale=h,s._datasetIndex=r.index,s._children=d,s._model={spanGaps:f.spanGaps?f.spanGaps:!1,tension:o.tension?o.tension:a.getValueOrDefault(f.lineTension,c.tension),backgroundColor:o.backgroundColor?o.backgroundColor:f.backgroundColor||c.backgroundColor,borderWidth:o.borderWidth?o.borderWidth:f.borderWidth||c.borderWidth,borderColor:o.borderColor?o.borderColor:f.borderColor||c.borderColor,borderCapStyle:o.borderCapStyle?o.borderCapStyle:f.borderCapStyle||c.borderCapStyle,borderDash:o.borderDash?o.borderDash:f.borderDash||c.borderDash,borderDashOffset:o.borderDashOffset?o.borderDashOffset:f.borderDashOffset||c.borderDashOffset,borderJoinStyle:o.borderJoinStyle?o.borderJoinStyle:f.borderJoinStyle||c.borderJoinStyle,fill:o.fill?o.fill:void 0!==f.fill?f.fill:c.fill,scaleTop:h.top,scaleBottom:h.bottom,scaleZero:h.getBasePixel()},s.pivot()),i=0,n=d.length;n>i;++i)r.updateElement(d[i],i,t);for(g&&0!==s._model.tension&&r.updateBezierControlPoints(),i=0,n=d.length;n>i;++i)d[i].pivot()},getPointBackgroundColor:function(t,e){var i=this.chart.options.elements.point.backgroundColor,n=this.getDataset(),o=t.custom||{};return o.backgroundColor?i=o.backgroundColor:n.pointBackgroundColor?i=a.getValueAtIndexOrDefault(n.pointBackgroundColor,e,i):n.backgroundColor&&(i=n.backgroundColor),i},getPointBorderColor:function(t,e){var i=this.chart.options.elements.point.borderColor,n=this.getDataset(),o=t.custom||{};return o.borderColor?i=o.borderColor:n.pointBorderColor?i=a.getValueAtIndexOrDefault(n.pointBorderColor,e,i):n.borderColor&&(i=n.borderColor),i},getPointBorderWidth:function(t,e){var i=this.chart.options.elements.point.borderWidth,n=this.getDataset(),o=t.custom||{};return o.borderWidth?i=o.borderWidth:n.pointBorderWidth?i=a.getValueAtIndexOrDefault(n.pointBorderWidth,e,i):n.borderWidth&&(i=n.borderWidth),i},updateElement:function(t,e,i){var n,o,r=this,l=r.getMeta(),s=t.custom||{},d=r.getDataset(),u=r.index,c=d.data[e],h=r.getScaleForId(l.yAxisID),f=r.getScaleForId(l.xAxisID),g=r.chart.options.elements.point;void 0!==d.radius&&void 0===d.pointRadius&&(d.pointRadius=d.radius),void 0!==d.hitRadius&&void 0===d.pointHitRadius&&(d.pointHitRadius=d.hitRadius),n=f.getPixelForValue(c,e,u,r.chart.isCombo),o=i?h.getBasePixel():r.calculatePointY(c,e,u,r.chart.isCombo),t._xScale=f,t._yScale=h,t._datasetIndex=u,t._index=e,t._model={x:n,y:o,skip:s.skip||isNaN(n)||isNaN(o),radius:s.radius||a.getValueAtIndexOrDefault(d.pointRadius,e,g.radius),pointStyle:s.pointStyle||a.getValueAtIndexOrDefault(d.pointStyle,e,g.pointStyle),backgroundColor:r.getPointBackgroundColor(t,e),borderColor:r.getPointBorderColor(t,e),borderWidth:r.getPointBorderWidth(t,e),tension:l.dataset._model?l.dataset._model.tension:0,hitRadius:s.hitRadius||a.getValueAtIndexOrDefault(d.pointHitRadius,e,g.hitRadius)}},calculatePointY:function(t,e,a,i){var n,o,r,l=this,s=l.chart,d=l.getMeta(),u=l.getScaleForId(d.yAxisID),c=0,h=0;if(u.options.stacked){for(n=0;a>n;n++)o=s.data.datasets[n],r=s.getDatasetMeta(n),"line"===r.type&&s.isDatasetVisible(n)&&(o.data[e]<0?h+=o.data[e]||0:c+=o.data[e]||0);return 0>t?u.getPixelForValue(h+t):u.getPixelForValue(c+t)}return u.getPixelForValue(t)},updateBezierControlPoints:function(){var t,e,i,n,o,r=this.getMeta(),l=(this.chart.chartArea,r.data||[]);for(t=0,e=l.length;e>t;++t)i=l[t],n=i._model,o=a.splineCurve(a.previousItem(l,t)._model,n,a.nextItem(l,t)._model,r.dataset._model.tension),n.controlPointPreviousX=o.previous.x,n.controlPointPreviousY=o.previous.y,n.controlPointNextX=o.next.x,n.controlPointNextY=o.next.y},draw:function(t){var a,i,n=this,o=n.getMeta(),r=o.data||[],l=t||1;for(a=0,i=r.length;i>a;++a)r[a].transition(l);for(e(n.getDataset(),n.chart.options)&&o.dataset.transition(l).draw(),a=0,i=r.length;i>a;++a)r[a].draw()},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},o=t._model;o.radius=n.hoverRadius||a.getValueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),o.backgroundColor=n.hoverBackgroundColor||a.getValueAtIndexOrDefault(e.pointHoverBackgroundColor,i,a.getHoverColor(o.backgroundColor)),o.borderColor=n.hoverBorderColor||a.getValueAtIndexOrDefault(e.pointHoverBorderColor,i,a.getHoverColor(o.borderColor)),o.borderWidth=n.hoverBorderWidth||a.getValueAtIndexOrDefault(e.pointHoverBorderWidth,i,o.borderWidth)},removeHoverStyle:function(t){var e=this,i=e.chart.data.datasets[t._datasetIndex],n=t._index,o=t.custom||{},r=t._model;void 0!==i.radius&&void 0===i.pointRadius&&(i.pointRadius=i.radius),r.radius=o.radius||a.getValueAtIndexOrDefault(i.pointRadius,n,e.chart.options.elements.point.radius),r.backgroundColor=e.getPointBackgroundColor(t,n),r.borderColor=e.getPointBorderColor(t,n),r.borderWidth=e.getPointBorderWidth(t,n)}})}},{}],19:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.polarArea={scale:{type:"radialLinear",lineArc:!0},animation:{animateRotate:!0,animateScale:!0},aspectRatio:1,legendCallback:function(t){var e=[];e.push('
    ');var a=t.data,i=a.datasets,n=a.labels;if(i.length)for(var o=0;o'),n[o]&&e.push(n[o]),e.push("");return e.push("
"),e.join("")},legend:{labels:{generateLabels:function(t){var a=t.data;return a.labels.length&&a.datasets.length?a.labels.map(function(i,n){var o=t.getDatasetMeta(0),r=a.datasets[0],l=o.data[n],s=l.custom||{},d=e.getValueAtIndexOrDefault,u=t.options.elements.arc,c=s.backgroundColor?s.backgroundColor:d(r.backgroundColor,n,u.backgroundColor),h=s.borderColor?s.borderColor:d(r.borderColor,n,u.borderColor),f=s.borderWidth?s.borderWidth:d(r.borderWidth,n,u.borderWidth);return{text:i,fillStyle:c,strokeStyle:h,lineWidth:f,hidden:isNaN(r.data[n])||o.data[n].hidden,index:n}}):[]}},onClick:function(t,e){var a,i,n,o=e.index,r=this.chart;for(a=0,i=(r.data.datasets||[]).length;i>a;++a)n=r.getDatasetMeta(a),n.data[o].hidden=!n.data[o].hidden;r.update()}},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return e.labels[t.index]+": "+t.yLabel}}}},t.controllers.polarArea=t.DatasetController.extend({dataElementType:t.elements.Arc,linkScales:e.noop,update:function(t){var a=this,i=a.chart,n=i.chartArea,o=a.getMeta(),r=i.options,l=r.elements.arc,s=Math.min(n.right-n.left,n.bottom-n.top);i.outerRadius=Math.max((s-l.borderWidth/2)/2,0),i.innerRadius=Math.max(r.cutoutPercentage?i.outerRadius/100*r.cutoutPercentage:1,0),i.radiusLength=(i.outerRadius-i.innerRadius)/i.getVisibleDatasetCount(),a.outerRadius=i.outerRadius-i.radiusLength*a.index,a.innerRadius=a.outerRadius-i.radiusLength,o.count=a.countVisibleElements(),e.each(o.data,function(e,i){a.updateElement(e,i,t)})},updateElement:function(t,a,i){for(var n=this,o=n.chart,r=o.chartArea,l=n.getDataset(),s=o.options,d=s.animation,u=(s.elements.arc,t.custom||{},o.scale),c=e.getValueAtIndexOrDefault,h=o.data.labels,f=n.calculateCircumference(l.data[a]),g=(r.left+r.right)/2,p=(r.top+r.bottom)/2,m=0,b=n.getMeta(),v=0;a>v;++v)isNaN(l.data[v])||b.data[v].hidden||++m;var x=-.5*Math.PI,y=t.hidden?0:u.getDistanceFromCenterForValue(l.data[a]),k=x+f*m,S=k+(t.hidden?0:f),w=d.animateScale?0:u.getDistanceFromCenterForValue(l.data[a]);e.extend(t,{_datasetIndex:n.index,_index:a,_scale:u,_model:{x:g,y:p,innerRadius:0,outerRadius:i?w:y,startAngle:i&&d.animateRotate?x:k,endAngle:i&&d.animateRotate?x:S,label:c(h,a,h[a])}}),n.removeHoverStyle(t),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},countVisibleElements:function(){var t=this.getDataset(),a=this.getMeta(),i=0;return e.each(a.data,function(e,a){isNaN(t.data[a])||e.hidden||i++}),i},calculateCircumference:function(t){var e=this.getMeta().count;return e>0&&!isNaN(t)?2*Math.PI/e:0}})}},{}],20:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.radar={scale:{type:"radialLinear"},elements:{line:{tension:0}}},t.controllers.radar=t.DatasetController.extend({datasetElementType:t.elements.Line,dataElementType:t.elements.Point,linkScales:e.noop,addElementAndReset:function(e){t.DatasetController.prototype.addElementAndReset.call(this,e),this.updateBezierControlPoints()},update:function(t){var a=this,i=a.getMeta(),n=i.dataset,o=i.data,r=n.custom||{},l=a.getDataset(),s=a.chart.options.elements.line,d=a.chart.scale;void 0!==l.tension&&void 0===l.lineTension&&(l.lineTension=l.tension),e.extend(i.dataset,{_datasetIndex:a.index,_children:o,_loop:!0,_model:{tension:r.tension?r.tension:e.getValueOrDefault(l.lineTension,s.tension),backgroundColor:r.backgroundColor?r.backgroundColor:l.backgroundColor||s.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:l.borderWidth||s.borderWidth,borderColor:r.borderColor?r.borderColor:l.borderColor||s.borderColor,fill:r.fill?r.fill:void 0!==l.fill?l.fill:s.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:l.borderCapStyle||s.borderCapStyle,borderDash:r.borderDash?r.borderDash:l.borderDash||s.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:l.borderDashOffset||s.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:l.borderJoinStyle||s.borderJoinStyle,scaleTop:d.top,scaleBottom:d.bottom,scaleZero:d.getBasePosition()}}),i.dataset.pivot(),e.each(o,function(e,i){a.updateElement(e,i,t)},a),a.updateBezierControlPoints()},updateElement:function(t,a,i){var n=this,o=t.custom||{},r=n.getDataset(),l=n.chart.scale,s=n.chart.options.elements.point,d=l.getPointPositionForValue(a,r.data[a]);e.extend(t,{_datasetIndex:n.index,_index:a,_scale:l,_model:{x:i?l.xCenter:d.x,y:i?l.yCenter:d.y,tension:o.tension?o.tension:e.getValueOrDefault(r.tension,n.chart.options.elements.line.tension),radius:o.radius?o.radius:e.getValueAtIndexOrDefault(r.pointRadius,a,s.radius),backgroundColor:o.backgroundColor?o.backgroundColor:e.getValueAtIndexOrDefault(r.pointBackgroundColor,a,s.backgroundColor),borderColor:o.borderColor?o.borderColor:e.getValueAtIndexOrDefault(r.pointBorderColor,a,s.borderColor),borderWidth:o.borderWidth?o.borderWidth:e.getValueAtIndexOrDefault(r.pointBorderWidth,a,s.borderWidth),pointStyle:o.pointStyle?o.pointStyle:e.getValueAtIndexOrDefault(r.pointStyle,a,s.pointStyle),hitRadius:o.hitRadius?o.hitRadius:e.getValueAtIndexOrDefault(r.hitRadius,a,s.hitRadius)}}),t._model.skip=o.skip?o.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,a=this.getMeta();e.each(a.data,function(i,n){var o=i._model,r=e.splineCurve(e.previousItem(a.data,n,!0)._model,o,e.nextItem(a.data,n,!0)._model,o.tension);o.controlPointPreviousX=Math.max(Math.min(r.previous.x,t.right),t.left),o.controlPointPreviousY=Math.max(Math.min(r.previous.y,t.bottom),t.top),o.controlPointNextX=Math.max(Math.min(r.next.x,t.right),t.left),o.controlPointNextY=Math.max(Math.min(r.next.y,t.bottom),t.top),i.pivot()})},draw:function(t){var a=this.getMeta(),i=t||1;e.each(a.data,function(t,e){t.transition(i)}),a.dataset.transition(i).draw(),e.each(a.data,function(t){t.draw()})},setHoverStyle:function(t){var a=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,o=t._model;o.radius=i.hoverRadius?i.hoverRadius:e.getValueAtIndexOrDefault(a.pointHoverRadius,n,this.chart.options.elements.point.hoverRadius),o.backgroundColor=i.hoverBackgroundColor?i.hoverBackgroundColor:e.getValueAtIndexOrDefault(a.pointHoverBackgroundColor,n,e.getHoverColor(o.backgroundColor)),o.borderColor=i.hoverBorderColor?i.hoverBorderColor:e.getValueAtIndexOrDefault(a.pointHoverBorderColor,n,e.getHoverColor(o.borderColor)),o.borderWidth=i.hoverBorderWidth?i.hoverBorderWidth:e.getValueAtIndexOrDefault(a.pointHoverBorderWidth,n,o.borderWidth)},removeHoverStyle:function(t){var a=this.chart.data.datasets[t._datasetIndex],i=t.custom||{},n=t._index,o=t._model,r=this.chart.options.elements.point;o.radius=i.radius?i.radius:e.getValueAtIndexOrDefault(a.radius,n,r.radius),o.backgroundColor=i.backgroundColor?i.backgroundColor:e.getValueAtIndexOrDefault(a.pointBackgroundColor,n,r.backgroundColor),o.borderColor=i.borderColor?i.borderColor:e.getValueAtIndexOrDefault(a.pointBorderColor,n,r.borderColor),o.borderWidth=i.borderWidth?i.borderWidth:e.getValueAtIndexOrDefault(a.pointBorderWidth,n,r.borderWidth)}})}},{}],21:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.global.animation={duration:1e3,easing:"easeOutQuart",onProgress:e.noop,onComplete:e.noop},t.Animation=t.Element.extend({currentStep:null,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,a,i){var n=this;i||(t.animating=!0);for(var o=0;o1&&(a=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1);for(var i=0;it.animations[i].animationObject.numSteps&&(t.animations[i].animationObject.currentStep=t.animations[i].animationObject.numSteps),t.animations[i].animationObject.render(t.animations[i].chartInstance,t.animations[i].animationObject),t.animations[i].animationObject.onAnimationProgress&&t.animations[i].animationObject.onAnimationProgress.call&&t.animations[i].animationObject.onAnimationProgress.call(t.animations[i].chartInstance,t.animations[i]),t.animations[i].animationObject.currentStep===t.animations[i].animationObject.numSteps?(t.animations[i].animationObject.onAnimationComplete&&t.animations[i].animationObject.onAnimationComplete.call&&t.animations[i].animationObject.onAnimationComplete.call(t.animations[i].chartInstance,t.animations[i]),t.animations[i].chartInstance.animating=!1,t.animations.splice(i,1)):++i;var n=Date.now(),o=(n-e)/t.frameDuration;t.dropFrames+=o,t.animations.length>0&&t.requestAnimationFrame()}}}},{}],22:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.types={},t.instances={},t.controllers={},t.Controller=function(a){return this.chart=a,this.config=a.config,this.options=this.config.options=e.configMerge(t.defaults.global,t.defaults[this.config.type],this.config.options||{}),this.id=e.uid(),Object.defineProperty(this,"data",{get:function(){return this.config.data}}),t.instances[this.id]=this,this.options.responsive&&this.resize(!0),this.initialize(),this},e.extend(t.Controller.prototype,{initialize:function(){var e=this;return t.plugins.notify("beforeInit",[e]),e.bindEvents(),e.ensureScalesHaveIDs(),e.buildOrUpdateControllers(),e.buildScales(),e.updateLayout(),e.resetElements(),e.initToolTip(),e.update(),t.plugins.notify("afterInit",[e]),e},clear:function(){return e.clear(this.chart),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(a){var i=this,n=i.chart,o=n.canvas,r=e.getMaximumWidth(o),l=n.aspectRatio,s=i.options.maintainAspectRatio&&isNaN(l)===!1&&isFinite(l)&&0!==l?r/l:e.getMaximumHeight(o),d=n.width!==r||n.height!==s;if(!d)return i;o.width=n.width=r,o.height=n.height=s,e.retinaScale(n);var u={width:r,height:s};return t.plugins.notify("resize",[i,u]),i.options.onResize&&i.options.onResize(i,u),a||(i.stop(),i.update(i.options.responsiveAnimationDuration)),i},ensureScalesHaveIDs:function(){var t=this.options,a=t.scales||{},i=t.scale;e.each(a.xAxes,function(t,e){t.id=t.id||"x-axis-"+e}),e.each(a.yAxes,function(t,e){t.id=t.id||"y-axis-"+e}),i&&(i.id=i.id||"scale")},buildScales:function(){var a=this,i=a.options,n=a.scales={},o=[];i.scales&&(o=o.concat((i.scales.xAxes||[]).map(function(t){return{options:t,dtype:"category"}}),(i.scales.yAxes||[]).map(function(t){return{options:t,dtype:"linear"}}))),i.scale&&o.push({options:i.scale,dtype:"radialLinear",isDefault:!0}),e.each(o,function(i,o){var r=i.options,l=e.getValueOrDefault(r.type,i.dtype),s=t.scaleService.getScaleConstructor(l);if(s){var d=new s({id:r.id,options:r,ctx:a.chart.ctx,chart:a});n[d.id]=d,i.isDefault&&(a.scale=d)}}),t.scaleService.addScalesToLayout(this)},updateLayout:function(){t.layoutService.update(this,this.chart.width,this.chart.height)},buildOrUpdateControllers:function(){var a=this,i=[],n=[];if(e.each(a.data.datasets,function(e,o){var r=a.getDatasetMeta(o);r.type||(r.type=e.type||a.config.type),i.push(r.type),r.controller?r.controller.updateIndex(o):(r.controller=new t.controllers[r.type](a,o),n.push(r.controller))},a),i.length>1)for(var o=1;oe;++e)i.getDatasetMeta(e).controller.update();t.plugins.notify("afterDatasetsUpdate",[i])}},render:function(a,i){var n=this;t.plugins.notify("beforeRender",[n]);var o=n.options.animation;if(o&&("undefined"!=typeof a&&0!==a||"undefined"==typeof a&&0!==o.duration)){var r=new t.Animation;r.numSteps=(a||o.duration)/16.66,r.easing=o.easing,r.render=function(t,a){var i=e.easingEffects[a.easing],n=a.currentStep/a.numSteps,o=i(n);t.draw(o,n,a.currentStep)},r.onAnimationProgress=o.onProgress,r.onAnimationComplete=o.onComplete,t.animationService.addAnimation(n,r,a,i)}else n.draw(),o&&o.onComplete&&o.onComplete.call&&o.onComplete.call(n);return n},draw:function(a){var i=this,n=a||1;i.clear(),t.plugins.notify("beforeDraw",[i,n]),e.each(i.boxes,function(t){t.draw(i.chartArea)},i),i.scale&&i.scale.draw(),t.plugins.notify("beforeDatasetsDraw",[i,n]),e.each(i.data.datasets,function(t,e){i.isDatasetVisible(e)&&i.getDatasetMeta(e).controller.draw(a)},i,!0),t.plugins.notify("afterDatasetsDraw",[i,n]),i.tooltip.transition(n).draw(),t.plugins.notify("afterDraw",[i,n])},getElementAtEvent:function(t){var a=this,i=e.getRelativePosition(t,a.chart),n=[];return e.each(a.data.datasets,function(t,o){if(a.isDatasetVisible(o)){var r=a.getDatasetMeta(o);e.each(r.data,function(t,e){return t.inRange(i.x,i.y)?(n.push(t),n):void 0})}}),n},getElementsAtEvent:function(t){var a=this,i=e.getRelativePosition(t,a.chart),n=[],o=function(){if(a.data.datasets)for(var t=0;t0&&(e=this.getDatasetMeta(e[0]._datasetIndex).data),e},getDatasetMeta:function(t){var e=this,a=e.data.datasets[t];a._meta||(a._meta={});var i=a._meta[e.id];return i||(i=a._meta[e.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),i},getVisibleDatasetCount:function(){for(var t=0,e=0,a=this.data.datasets.length;a>e;++e)this.isDatasetVisible(e)&&t++;return t},isDatasetVisible:function(t){var e=this.getDatasetMeta(t);return"boolean"==typeof e.hidden?!e.hidden:!this.data.datasets[t].hidden},generateLegend:function(){return this.options.legendCallback(this)},destroy:function(){var a=this;a.stop(),a.clear(),e.unbindEvents(a,a.events),e.removeResizeListener(a.chart.canvas.parentNode);var i=a.chart.canvas;i.width=a.chart.width,i.height=a.chart.height,void 0!==a.chart.originalDevicePixelRatio&&a.chart.ctx.scale(1/a.chart.originalDevicePixelRatio,1/a.chart.originalDevicePixelRatio),i.style.width=a.chart.originalCanvasStyleWidth,i.style.height=a.chart.originalCanvasStyleHeight,t.plugins.notify("destroy",[a]),delete t.instances[a.id]},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)},initToolTip:function(){var e=this;e.tooltip=new t.Tooltip({_chart:e.chart,_chartInstance:e,_data:e.data,_options:e.options.tooltips},e)},bindEvents:function(){var t=this;e.bindEvents(t,t.options.events,function(e){t.eventHandler(e)})},updateHoverStyle:function(t,e,a){var i,n,o,r=a?"setHoverStyle":"removeHoverStyle";switch(e){case"single":t=[t[0]];break;case"label":case"dataset":break;default:return}for(n=0,o=t.length;o>n;++n)i=t[n],i&&this.getDatasetMeta(i._datasetIndex).controller[r](i)},eventHandler:function(t){var a=this,i=a.tooltip,n=a.options||{},o=n.hover,r=n.tooltips;return a.lastActive=a.lastActive||[],a.lastTooltipActive=a.lastTooltipActive||[],"mouseout"===t.type?(a.active=[],a.tooltipActive=[]):(a.active=a.getElementsAtEventForMode(t,o.mode),a.tooltipActive=a.getElementsAtEventForMode(t,r.mode)),o.onHover&&o.onHover.call(a,a.active),("mouseup"===t.type||"click"===t.type)&&(n.onClick&&n.onClick.call(a,t,a.active),a.legend&&a.legend.handleEvent&&a.legend.handleEvent(t)),a.lastActive.length&&a.updateHoverStyle(a.lastActive,o.mode,!1),a.active.length&&o.mode&&a.updateHoverStyle(a.active,o.mode,!0),(r.enabled||r.custom)&&(i.initialize(),i._active=a.tooltipActive,i.update(!0)),i.pivot(),a.animating||e.arrayEquals(a.active,a.lastActive)&&e.arrayEquals(a.tooltipActive,a.lastTooltipActive)||(a.stop(),(r.enabled||r.custom)&&i.update(!0),a.render(o.animationDuration,!0)),a.lastActive=a.active,a.lastTooltipActive=a.tooltipActive,a}})}},{}],23:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a=e.noop;t.DatasetController=function(t,e){this.initialize.call(this,t,e)},e.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){var a=this;a.chart=t,a.index=e,a.linkScales(),a.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),a=t.getDataset();null===e.xAxisID&&(e.xAxisID=a.xAxisID||t.chart.options.scales.xAxes[0].id),null===e.yAxisID&&(e.yAxisID=a.yAxisID||t.chart.options.scales.yAxes[0].id); +},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},createMetaDataset:function(){var t=this,e=t.datasetElementType;return e&&new e({_chart:t.chart.chart,_datasetIndex:t.index})},createMetaData:function(t){var e=this,a=e.dataElementType;return a&&new a({_chart:e.chart.chart,_datasetIndex:e.index,_index:t})},addElements:function(){var t,e,a=this,i=a.getMeta(),n=a.getDataset().data||[],o=i.data;for(t=0,e=n.length;e>t;++t)o[t]=o[t]||a.createMetaData(i,t);i.dataset=i.dataset||a.createMetaDataset()},addElementAndReset:function(t){var e=this,a=e.createMetaData(t);e.getMeta().data.splice(t,0,a),e.updateElement(a,t,!0)},buildOrUpdateElements:function(){var t=this.getMeta(),e=t.data,a=this.getDataset().data.length,i=e.length;if(i>a)e.splice(a,i-a);else if(a>i)for(var n=i;a>n;++n)this.addElementAndReset(n)},update:a,draw:function(t){var a=t||1;e.each(this.getMeta().data,function(t,e){t.transition(a).draw()})},removeHoverStyle:function(t,a){var i=this.chart.data.datasets[t._datasetIndex],n=t._index,o=t.custom||{},r=e.getValueAtIndexOrDefault,l=(e.color,t._model);l.backgroundColor=o.backgroundColor?o.backgroundColor:r(i.backgroundColor,n,a.backgroundColor),l.borderColor=o.borderColor?o.borderColor:r(i.borderColor,n,a.borderColor),l.borderWidth=o.borderWidth?o.borderWidth:r(i.borderWidth,n,a.borderWidth)},setHoverStyle:function(t){var a=this.chart.data.datasets[t._datasetIndex],i=t._index,n=t.custom||{},o=e.getValueAtIndexOrDefault,r=(e.color,e.getHoverColor),l=t._model;l.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:o(a.hoverBackgroundColor,i,r(l.backgroundColor)),l.borderColor=n.hoverBorderColor?n.hoverBorderColor:o(a.hoverBorderColor,i,r(l.borderColor)),l.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:o(a.hoverBorderWidth,i,l.borderWidth)}}),t.DatasetController.extend=e.inherits}},{}],24:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.elements={},t.Element=function(t){e.extend(this,t),this.initialize.apply(this,arguments)},e.extend(t.Element.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=e.clone(t._model)),t._start=e.clone(t._view),t},transition:function(t){var a=this;return a._view||(a._view=e.clone(a._model)),1===t?(a._view=a._model,a._start=null,a):(a._start||a.pivot(),e.each(a._model,function(i,n){if("_"===n[0]);else if(a._view.hasOwnProperty(n))if(i===a._view[n]);else if("string"==typeof i)try{var o=e.color(a._model[n]).mix(e.color(a._start[n]),t);a._view[n]=o.rgbString()}catch(r){a._view[n]=i}else if("number"==typeof i){var l=void 0!==a._start[n]&&isNaN(a._start[n])===!1?a._start[n]:0;a._view[n]=(a._model[n]-l)*t+l}else a._view[n]=i;else"number"!=typeof i||isNaN(a._view[n])?a._view[n]=i:a._view[n]=i*t},a),a)},tooltipPosition:function(){return{x:this._model.x,y:this._model.y}},hasValue:function(){return e.isNumber(this._model.x)&&e.isNumber(this._model.y)}}),t.Element.extend=e.inherits}},{}],25:[function(t,e,a){"use strict";var i=t(3);e.exports=function(t){function e(t,e,a){var i;return"string"==typeof t?(i=parseInt(t,10),-1!=t.indexOf("%")&&(i=i/100*e.parentNode[a])):i=t,i}function a(t){return void 0!==t&&null!==t&&"none"!==t}function n(t,i,n){var o=document.defaultView,r=t.parentNode,l=o.getComputedStyle(t)[i],s=o.getComputedStyle(r)[i],d=a(l),u=a(s),c=Number.POSITIVE_INFINITY;return d||u?Math.min(d?e(l,t,n):c,u?e(s,r,n):c):"none"}var o=t.helpers={};o.each=function(t,e,a,i){var n,r;if(o.isArray(t))if(r=t.length,i)for(n=r-1;n>=0;n--)e.call(a,t[n],n);else for(n=0;r>n;n++)e.call(a,t[n],n);else if("object"==typeof t){var l=Object.keys(t);for(r=l.length,n=0;r>n;n++)e.call(a,t[l[n]],l[n])}},o.clone=function(t){var e={};return o.each(t,function(t,a){o.isArray(t)?e[a]=t.slice(0):"object"==typeof t&&null!==t?e[a]=o.clone(t):e[a]=t}),e},o.extend=function(t){for(var e=function(e,a){t[a]=e},a=1,i=arguments.length;i>a;a++)o.each(arguments[a],e);return t},o.configMerge=function(e){var a=o.clone(e);return o.each(Array.prototype.slice.call(arguments,1),function(e){o.each(e,function(e,i){if("scales"===i)a[i]=o.scaleMerge(a.hasOwnProperty(i)?a[i]:{},e);else if("scale"===i)a[i]=o.configMerge(a.hasOwnProperty(i)?a[i]:{},t.scaleService.getScaleDefaults(e.type),e);else if(a.hasOwnProperty(i)&&o.isArray(a[i])&&o.isArray(e)){var n=a[i];o.each(e,function(t,e){e=i[a].length||!i[a][n].type?i[a].push(o.configMerge(l,e)):e.type&&e.type!==i[a][n].type?i[a][n]=o.configMerge(i[a][n],l,e):i[a][n]=o.configMerge(i[a][n],e)}):(i[a]=[],o.each(e,function(e){var n=o.getValueOrDefault(e.type,"xAxes"===a?"category":"linear");i[a].push(o.configMerge(t.scaleService.getScaleDefaults(n),e))})):i.hasOwnProperty(a)&&"object"==typeof i[a]&&null!==i[a]&&"object"==typeof e?i[a]=o.configMerge(i[a],e):i[a]=e}),i},o.getValueAtIndexOrDefault=function(t,e,a){return void 0===t||null===t?a:o.isArray(t)?ea;++a)if(t[a]===e)return a;return-1},o.where=function(t,e){if(o.isArray(t)&&Array.prototype.filter)return t.filter(e);var a=[];return o.each(t,function(t){e(t)&&a.push(t)}),a},o.findIndex=Array.prototype.findIndex?function(t,e,a){return t.findIndex(e,a)}:function(t,e,a){a=void 0===a?t:a;for(var i=0,n=t.length;n>i;++i)if(e.call(a,t[i],i,t))return i;return-1},o.findNextWhere=function(t,e,a){(void 0===a||null===a)&&(a=-1);for(var i=a+1;i=0;i--){var n=t[i];if(e(n))return n}},o.inherits=function(t){var e=this,a=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return e.apply(this,arguments)},i=function(){this.constructor=a};return i.prototype=e.prototype,a.prototype=new i,a.extend=o.inherits,t&&o.extend(a.prototype,t),a.__super__=e.prototype,a},o.noop=function(){},o.uid=function(){var t=0;return function(){return t++}}(),o.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},o.almostEquals=function(t,e,a){return Math.abs(t-e)0?1:-1},o.log10=Math.log10?function(t){return Math.log10(t)}:function(t){return Math.log(t)/Math.LN10},o.toRadians=function(t){return t*(Math.PI/180)},o.toDegrees=function(t){return t*(180/Math.PI)},o.getAngleFromPoint=function(t,e){var a=e.x-t.x,i=e.y-t.y,n=Math.sqrt(a*a+i*i),o=Math.atan2(i,a);return o<-.5*Math.PI&&(o+=2*Math.PI),{angle:o,distance:n}},o.aliasPixel=function(t){return t%2===0?0:.5},o.splineCurve=function(t,e,a,i){var n=t.skip?e:t,o=e,r=a.skip?e:a,l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),s=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2)),d=l/(l+s),u=s/(l+s);d=isNaN(d)?0:d,u=isNaN(u)?0:u;var c=i*d,h=i*u;return{previous:{x:o.x-c*(r.x-n.x),y:o.y-c*(r.y-n.y)},next:{x:o.x+h*(r.x-n.x),y:o.y+h*(r.y-n.y)}}},o.nextItem=function(t,e,a){return a?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},o.previousItem=function(t,e,a){return a?0>=e?t[t.length-1]:t[e-1]:0>=e?t[0]:t[e-1]},o.niceNum=function(t,e){var a,i=Math.floor(o.log10(t)),n=t/Math.pow(10,i);return a=e?1.5>n?1:3>n?2:7>n?5:10:1>=n?1:2>=n?2:5>=n?5:10,a*Math.pow(10,i)};var r=o.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-0.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-0.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-0.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-0.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,a=0,i=1;return 0===t?0:1===(t/=1)?1:(a||(a=.3),it?-.5*(i*Math.pow(2,10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/a)):i*Math.pow(2,-10*(t-=1))*Math.sin((1*t-e)*(2*Math.PI)/a)*.5+1)},easeInBack:function(t){var e=1.70158;return 1*(t/=1)*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return 1*((t=t/1-1)*t*((e+1)*t+e)+1)},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?.5*(t*t*(((e*=1.525)+1)*t-e)):.5*((t-=2)*t*(((e*=1.525)+1)*t+e)+2)},easeInBounce:function(t){return 1-r.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?1*(7.5625*t*t):2/2.75>t?1*(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375)},easeInOutBounce:function(t){return.5>t?.5*r.easeInBounce(2*t):.5*r.easeOutBounce(2*t-1)+.5}};o.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),o.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(t){return window.clearTimeout(t,1e3/60)}}(),o.getRelativePosition=function(t,e){var a,i,n=t.originalEvent||t,r=t.currentTarget||t.srcElement,l=r.getBoundingClientRect(),s=n.touches;s&&s.length>0?(a=s[0].clientX,i=s[0].clientY):(a=n.clientX,i=n.clientY);var d=parseFloat(o.getStyle(r,"padding-left")),u=parseFloat(o.getStyle(r,"padding-top")),c=parseFloat(o.getStyle(r,"padding-right")),h=parseFloat(o.getStyle(r,"padding-bottom")),f=l.right-l.left-d-c,g=l.bottom-l.top-u-h;return a=Math.round((a-l.left-d)/f*r.width/e.currentDevicePixelRatio),i=Math.round((i-l.top-u)/g*r.height/e.currentDevicePixelRatio),{x:a,y:i}},o.addEvent=function(t,e,a){t.addEventListener?t.addEventListener(e,a):t.attachEvent?t.attachEvent("on"+e,a):t["on"+e]=a},o.removeEvent=function(t,e,a){t.removeEventListener?t.removeEventListener(e,a,!1):t.detachEvent?t.detachEvent("on"+e,a):t["on"+e]=o.noop},o.bindEvents=function(t,e,a){var i=t.events=t.events||{};o.each(e,function(e){i[e]=function(){a.apply(t,arguments)},o.addEvent(t.chart.canvas,e,i[e])})},o.unbindEvents=function(t,e){var a=t.chart.canvas;o.each(e,function(t,e){o.removeEvent(a,e,t)})},o.getConstraintWidth=function(t){return n(t,"max-width","clientWidth")},o.getConstraintHeight=function(t){return n(t,"max-height","clientHeight")},o.getMaximumWidth=function(t){var e=t.parentNode,a=parseInt(o.getStyle(e,"padding-left"))+parseInt(o.getStyle(e,"padding-right")),i=e.clientWidth-a,n=o.getConstraintWidth(t);return isNaN(n)?i:Math.min(i,n)},o.getMaximumHeight=function(t){var e=t.parentNode,a=parseInt(o.getStyle(e,"padding-top"))+parseInt(o.getStyle(e,"padding-bottom")),i=e.clientHeight-a,n=o.getConstraintHeight(t);return isNaN(n)?i:Math.min(i,n)},o.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},o.retinaScale=function(t){var e=t.ctx,a=t.canvas,i=a.width,n=a.height,o=t.currentDevicePixelRatio=window.devicePixelRatio||1;1!==o&&(a.height=n*o,a.width=i*o,e.scale(o,o),t.originalDevicePixelRatio=t.originalDevicePixelRatio||o),a.style.width=i+"px",a.style.height=n+"px"},o.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},o.fontString=function(t,e,a){return e+" "+t+"px "+a},o.longestText=function(t,e,a,i){i=i||{};var n=i.data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(n=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var l=0;o.each(a,function(e){void 0!==e&&null!==e&&o.isArray(e)!==!0?l=o.measureText(t,n,r,l,e):o.isArray(e)&&o.each(e,function(e){void 0===e||null===e||o.isArray(e)||(l=o.measureText(t,n,r,l,e))})});var s=r.length/2;if(s>a.length){for(var d=0;s>d;d++)delete n[r[d]];r.splice(0,s)}return l},o.measureText=function(t,e,a,i,n){var o=e[n];return o||(o=e[n]=t.measureText(n).width,a.push(n)),o>i&&(i=o),i},o.numberOfLabelLines=function(t){var e=1;return o.each(t,function(t){o.isArray(t)&&t.length>e&&(e=t.length)}),e},o.drawRoundedRectangle=function(t,e,a,i,n,o){t.beginPath(),t.moveTo(e+o,a),t.lineTo(e+i-o,a),t.quadraticCurveTo(e+i,a,e+i,a+o),t.lineTo(e+i,a+n-o),t.quadraticCurveTo(e+i,a+n,e+i-o,a+n),t.lineTo(e+o,a+n),t.quadraticCurveTo(e,a+n,e,a+n-o),t.lineTo(e,a+o),t.quadraticCurveTo(e,a,e+o,a),t.closePath()},o.color=function(e){return i?i(e instanceof CanvasGradient?t.defaults.global.defaultColor:e):(console.log("Color.js not found!"),e)},o.addResizeListener=function(t,e){var a=document.createElement("iframe"),i="chartjs-hidden-iframe";a.classlist?a.classlist.add(i):a.setAttribute("class",i);var n=a.style;n.width="100%",n.display="block",n.border=0,n.height=0,n.margin=0,n.position="absolute",n.left=0,n.right=0,n.top=0,n.bottom=0,t.insertBefore(a,t.firstChild),(a.contentWindow||a).onresize=function(){e&&e()}},o.removeResizeListener=function(t){var e=t.querySelector(".chartjs-hidden-iframe");e&&e.parentNode.removeChild(e)},o.isArray=Array.isArray?function(t){return Array.isArray(t)}:function(t){return"[object Array]"===Object.prototype.toString.call(t)},o.arrayEquals=function(t,e){var a,i,n,r;if(!t||!e||t.length!=e.length)return!1;for(a=0,i=t.length;i>a;++a)if(n=t[a],r=e[a],n instanceof Array&&r instanceof Array){if(!o.arrayEquals(n,r))return!1}else if(n!=r)return!1;return!0},o.callCallback=function(t,e,a){t&&"function"==typeof t.call&&t.apply(a,e)},o.getHoverColor=function(t){return t instanceof CanvasPattern?t:o.color(t).saturate(.5).darken(.1).rgbString()}}},{3:3}],26:[function(t,e,a){"use strict";e.exports=function(){var t=function(e,a){var i=this,n=t.helpers;return i.config=a,e.length&&e[0].getContext&&(e=e[0]),e.getContext&&(e=e.getContext("2d")),i.ctx=e,i.canvas=e.canvas,e.canvas.style.display=e.canvas.style.display||"block",i.width=e.canvas.width||parseInt(n.getStyle(e.canvas,"width"),10)||n.getMaximumWidth(e.canvas),i.height=e.canvas.height||parseInt(n.getStyle(e.canvas,"height"),10)||n.getMaximumHeight(e.canvas),i.aspectRatio=i.width/i.height,(isNaN(i.aspectRatio)||isFinite(i.aspectRatio)===!1)&&(i.aspectRatio=void 0!==a.aspectRatio?a.aspectRatio:2),i.originalCanvasStyleWidth=e.canvas.style.width,i.originalCanvasStyleHeight=e.canvas.style.height,n.retinaScale(i),a&&(i.controller=new t.Controller(i)),n.addResizeListener(e.canvas.parentNode,function(){i.controller&&i.controller.config.options.responsive&&i.controller.resize()}),i.controller?i.controller:i};return t.defaults={global:{responsive:!0,responsiveAnimationDuration:0,maintainAspectRatio:!0,events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"single",animationDuration:400},onClick:null,defaultColor:"rgba(0,0,0,0.1)",defaultFontColor:"#666",defaultFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",defaultFontSize:12,defaultFontStyle:"normal",showLines:!0,elements:{},legendCallback:function(t){var e=[];e.push('
    ');for(var a=0;a'),t.data.datasets[a].label&&e.push(t.data.datasets[a].label),e.push("");return e.push("
"),e.join("")}}},t.Chart=t,t}},{}],27:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.layoutService={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),t.boxes.push(e)},removeBox:function(t,e){t.boxes&&t.boxes.splice(t.boxes.indexOf(e),1)},update:function(t,a,i){function n(t){var e,a=t.isHorizontal();a?(e=t.update(t.options.fullWidth?p:k,y),S-=e.height):(e=t.update(x,v),k-=e.width),w.push({horizontal:a,minSize:e,box:t})}function o(t){var a=e.findNextWhere(w,function(e){return e.box===t});if(a)if(t.isHorizontal()){var i={left:C,right:M,top:0,bottom:0};t.update(t.options.fullWidth?p:k,m/2,i)}else t.update(a.minSize.width,S)}function r(t){var a=e.findNextWhere(w,function(e){return e.box===t}),i={left:0,right:0,top:D,bottom:A};a&&t.update(a.minSize.width,S,i)}function l(t){t.isHorizontal()?(t.left=t.options.fullWidth?s:C,t.right=t.options.fullWidth?a-s:C+k,t.top=P,t.bottom=P+t.height,P=t.bottom):(t.left=T,t.right=T+t.width,t.top=D,t.bottom=D+S,T=t.right)}if(t){var s=0,d=0,u=e.where(t.boxes,function(t){return"left"===t.options.position}),c=e.where(t.boxes,function(t){return"right"===t.options.position}),h=e.where(t.boxes,function(t){return"top"===t.options.position}),f=e.where(t.boxes,function(t){return"bottom"===t.options.position}),g=e.where(t.boxes,function(t){return"chartArea"===t.options.position});h.sort(function(t,e){return(e.options.fullWidth?1:0)-(t.options.fullWidth?1:0)}),f.sort(function(t,e){return(t.options.fullWidth?1:0)-(e.options.fullWidth?1:0)});var p=a-2*s,m=i-2*d,b=p/2,v=m/2,x=(a-b)/(u.length+c.length),y=(i-v)/(h.length+f.length),k=p,S=m,w=[];e.each(u.concat(c,h,f),n);var C=s,M=s,D=d,A=d;e.each(u.concat(c),o),e.each(u,function(t){C+=t.width}),e.each(c,function(t){M+=t.width}),e.each(h.concat(f),o),e.each(h,function(t){D+=t.height}),e.each(f,function(t){A+=t.height}),e.each(u.concat(c),r),C=s,M=s,D=d,A=d,e.each(u,function(t){C+=t.width}),e.each(c,function(t){M+=t.width}),e.each(h,function(t){D+=t.height}),e.each(f,function(t){A+=t.height});var I=i-D-A,F=a-C-M;(F!==k||I!==S)&&(e.each(u,function(t){t.height=I}),e.each(c,function(t){t.height=I}),e.each(h,function(t){t.options.fullWidth||(t.width=F)}),e.each(f,function(t){t.options.fullWidth||(t.width=F)}),S=I,k=F);var T=s,P=d;e.each(u.concat(h),l),T+=k,P+=S,e.each(c,l),e.each(f,l),t.chartArea={left:C,top:D,right:C+k,bottom:D+S},e.each(g,function(e){e.left=t.chartArea.left,e.top=t.chartArea.top,e.right=t.chartArea.right,e.bottom=t.chartArea.bottom,e.update(k,S)})}}}}},{}],28:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a=e.noop;t.defaults.global.legend={display:!0,position:"top",fullWidth:!0,reverse:!1,onClick:function(t,e){var a=e.datasetIndex,i=this.chart,n=i.getDatasetMeta(a);n.hidden=null===n.hidden?!i.data.datasets[a].hidden:null,i.update()},labels:{boxWidth:40,padding:10,generateLabels:function(t){var a=t.data;return e.isArray(a.datasets)?a.datasets.map(function(a,i){return{text:a.label,fillStyle:e.isArray(a.backgroundColor)?a.backgroundColor[0]:a.backgroundColor,hidden:!t.isDatasetVisible(i),lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:a.borderWidth,strokeStyle:a.borderColor,datasetIndex:i}},this):[]}}},t.Legend=t.Element.extend({initialize:function(t){e.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:a,update:function(t,e,a){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=a,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:a,beforeSetDimensions:a,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:a,beforeBuildLabels:a,buildLabels:function(){var t=this;t.legendItems=t.options.labels.generateLabels.call(t,t.chart),t.options.reverse&&t.legendItems.reverse()},afterBuildLabels:a,beforeFit:a,fit:function(){var a=this,i=a.options,n=i.labels,o=i.display,r=a.ctx,l=t.defaults.global,s=e.getValueOrDefault,d=s(n.fontSize,l.defaultFontSize),u=s(n.fontStyle,l.defaultFontStyle),c=s(n.fontFamily,l.defaultFontFamily),h=e.fontString(d,u,c),f=a.legendHitBoxes=[],g=a.minSize,p=a.isHorizontal();if(p?(g.width=a.maxWidth,g.height=o?10:0):(g.width=o?10:0,g.height=a.maxHeight),o)if(r.font=h,p){var m=a.lineWidths=[0],b=a.legendItems.length?d+n.padding:0;r.textAlign="left",r.textBaseline="top",e.each(a.legendItems,function(t,e){var i=n.boxWidth+d/2+r.measureText(t.text).width;m[m.length-1]+i+n.padding>=a.width&&(b+=d+n.padding,m[m.length]=a.left),f[e]={left:0,top:0,width:i,height:d},m[m.length-1]+=i+n.padding}),g.height+=b}else{var v=n.padding,x=a.columnWidths=[],y=n.padding,k=0,S=0,w=d+v;e.each(a.legendItems,function(t,e){var a=n.boxWidth+d/2+r.measureText(t.text).width;S+w>g.height&&(y+=k+n.padding,x.push(k),k=0,S=0),k=Math.max(k,a),S+=w,f[e]={left:0,top:0,width:a,height:d}}),y+=k,x.push(k),g.width+=y}a.width=g.width,a.height=g.height},afterFit:a,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var a=this,i=a.options,n=i.labels,o=t.defaults.global,r=o.elements.line,l=a.width,s=(a.height,a.lineWidths);if(i.display){var d,u=a.ctx,c=e.getValueOrDefault,h=c(n.fontColor,o.defaultFontColor),f=c(n.fontSize,o.defaultFontSize),g=c(n.fontStyle,o.defaultFontStyle),p=c(n.fontFamily,o.defaultFontFamily),m=e.fontString(f,g,p);u.textAlign="left",u.textBaseline="top",u.lineWidth=.5,u.strokeStyle=h,u.fillStyle=h,u.font=m;var b=n.boxWidth,v=a.legendHitBoxes,x=function(t,e,a){u.save(),u.fillStyle=c(a.fillStyle,o.defaultColor),u.lineCap=c(a.lineCap,r.borderCapStyle),u.lineDashOffset=c(a.lineDashOffset,r.borderDashOffset),u.lineJoin=c(a.lineJoin,r.borderJoinStyle),u.lineWidth=c(a.lineWidth,r.borderWidth),u.strokeStyle=c(a.strokeStyle,o.defaultColor),u.setLineDash&&u.setLineDash(c(a.lineDash,r.borderDash)),u.strokeRect(t,e,b,f),u.fillRect(t,e,b,f),u.restore()},y=function(t,e,a,i){u.fillText(a.text,b+f/2+t,e),a.hidden&&(u.beginPath(),u.lineWidth=2,u.moveTo(b+f/2+t,e+f/2),u.lineTo(b+f/2+t+i,e+f/2),u.stroke())},k=a.isHorizontal();d=k?{x:a.left+(l-s[0])/2,y:a.top+n.padding,line:0}:{x:a.left+n.padding,y:a.top,line:0};var S=f+n.padding;e.each(a.legendItems,function(t,e){var i=u.measureText(t.text).width,o=b+f/2+i,r=d.x,c=d.y;k?r+o>=l&&(c=d.y+=f+n.padding,d.line++,r=d.x=a.left+(l-s[d.line])/2):c+S>a.bottom&&(r=d.x=r+a.columnWidths[d.line]+n.padding,c=d.y=a.top,d.line++),x(r,c,t),v[e].left=r,v[e].top=c,y(r,c,t,i),k?d.x+=o+n.padding:d.y+=S})}},handleEvent:function(t){var a=this,i=e.getRelativePosition(t,a.chart.chart),n=i.x,o=i.y,r=a.options;if(n>=a.left&&n<=a.right&&o>=a.top&&o<=a.bottom)for(var l=a.legendHitBoxes,s=0;s=d.left&&n<=d.left+d.width&&o>=d.top&&o<=d.top+d.height){r.onClick&&r.onClick.call(a,t,a.legendItems[s]);break}}}}),t.plugins.register({beforeInit:function(e){var a=e.options,i=a.legend;i&&(e.legend=new t.Legend({ctx:e.chart.ctx,options:i,chart:e}),t.layoutService.addBox(e,e.legend))}})}},{}],29:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers.noop;t.plugins={_plugins:[],register:function(t){var e=this._plugins;[].concat(t).forEach(function(t){-1===e.indexOf(t)&&e.push(t)})},unregister:function(t){var e=this._plugins;[].concat(t).forEach(function(t){var a=e.indexOf(t);-1!==a&&e.splice(a,1)})},clear:function(){this._plugins=[]},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e){var a,i,n=this._plugins,o=n.length;for(a=0;o>a;++a)if(i=n[a],"function"==typeof i[t]&&i[t].apply(i,e||[])===!1)return!1;return!0}},t.PluginBase=t.Element.extend({beforeInit:e,afterInit:e,beforeUpdate:e,afterUpdate:e,beforeDraw:e,afterDraw:e,destroy:e}),t.pluginService=t.plugins}},{}],30:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers;t.defaults.scale={display:!0,position:"left",gridLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1,drawBorder:!0,drawOnChartArea:!0,drawTicks:!0,tickMarkLength:10,zeroLineWidth:1,zeroLineColor:"rgba(0,0,0,0.25)",offsetGridLines:!1},scaleLabel:{labelString:"",display:!1},ticks:{beginAtZero:!1,minRotation:0,maxRotation:50,mirror:!1,padding:10,reverse:!1,display:!0,autoSkip:!0,autoSkipPadding:0,labelOffset:0,callback:function(t){return e.isArray(t)?t:""+t}}},t.Scale=t.Element.extend({beforeUpdate:function(){e.callCallback(this.options.beforeUpdate,[this])},update:function(t,a,i){var n=this;return n.beforeUpdate(),n.maxWidth=t,n.maxHeight=a,n.margins=e.extend({left:0,right:0,top:0,bottom:0},i),n.beforeSetDimensions(),n.setDimensions(),n.afterSetDimensions(),n.beforeDataLimits(),n.determineDataLimits(),n.afterDataLimits(),n.beforeBuildTicks(),n.buildTicks(),n.afterBuildTicks(),n.beforeTickToLabelConversion(),n.convertTicksToLabels(),n.afterTickToLabelConversion(),n.beforeCalculateTickRotation(),n.calculateTickRotation(),n.afterCalculateTickRotation(),n.beforeFit(),n.fit(),n.afterFit(),n.afterUpdate(),n.minSize},afterUpdate:function(){e.callCallback(this.options.afterUpdate,[this])},beforeSetDimensions:function(){e.callCallback(this.options.beforeSetDimensions,[this])},setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0},afterSetDimensions:function(){e.callCallback(this.options.afterSetDimensions,[this])},beforeDataLimits:function(){e.callCallback(this.options.beforeDataLimits,[this])},determineDataLimits:e.noop,afterDataLimits:function(){e.callCallback(this.options.afterDataLimits,[this])},beforeBuildTicks:function(){e.callCallback(this.options.beforeBuildTicks,[this])},buildTicks:e.noop,afterBuildTicks:function(){e.callCallback(this.options.afterBuildTicks,[this])},beforeTickToLabelConversion:function(){e.callCallback(this.options.beforeTickToLabelConversion,[this])},convertTicksToLabels:function(){var t=this;t.ticks=t.ticks.map(function(e,a,i){return t.options.ticks.userCallback?t.options.ticks.userCallback(e,a,i):t.options.ticks.callback(e,a,i)},t)},afterTickToLabelConversion:function(){e.callCallback(this.options.afterTickToLabelConversion,[this])},beforeCalculateTickRotation:function(){e.callCallback(this.options.beforeCalculateTickRotation,[this])},calculateTickRotation:function(){var a=this,i=a.ctx,n=t.defaults.global,o=a.options.ticks,r=e.getValueOrDefault(o.fontSize,n.defaultFontSize),l=e.getValueOrDefault(o.fontStyle,n.defaultFontStyle),s=e.getValueOrDefault(o.fontFamily,n.defaultFontFamily),d=e.fontString(r,l,s);i.font=d;var u,c=i.measureText(a.ticks[0]).width,h=i.measureText(a.ticks[a.ticks.length-1]).width;if(a.labelRotation=o.minRotation||0,a.paddingRight=0,a.paddingLeft=0,a.options.display&&a.isHorizontal()){a.paddingRight=h/2+3,a.paddingLeft=c/2+3,a.longestTextCache||(a.longestTextCache={});for(var f,g,p=e.longestText(i,d,a.ticks,a.longestTextCache),m=p,b=a.getPixelForTick(1)-a.getPixelForTick(0)-6;m>b&&a.labelRotationa.yLabelWidth&&(a.paddingLeft=u+r/2),a.paddingRight=r/2,g*p>a.maxHeight){a.labelRotation--;break}a.labelRotation++,m=f*p}}a.margins&&(a.paddingLeft=Math.max(a.paddingLeft-a.margins.left,0),a.paddingRight=Math.max(a.paddingRight-a.margins.right,0))},afterCalculateTickRotation:function(){e.callCallback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){e.callCallback(this.options.beforeFit,[this])},fit:function(){var a=this,i=a.minSize={width:0,height:0},n=a.options,o=t.defaults.global,r=n.ticks,l=n.scaleLabel,s=n.display,d=a.isHorizontal(),u=e.getValueOrDefault(r.fontSize,o.defaultFontSize),c=e.getValueOrDefault(r.fontStyle,o.defaultFontStyle),h=e.getValueOrDefault(r.fontFamily,o.defaultFontFamily),f=e.fontString(u,c,h),g=e.getValueOrDefault(l.fontSize,o.defaultFontSize),p=e.getValueOrDefault(l.fontStyle,o.defaultFontStyle),m=e.getValueOrDefault(l.fontFamily,o.defaultFontFamily),b=(e.fontString(g,p,m),n.gridLines.tickMarkLength);if(d?i.width=a.isFullWidth()?a.maxWidth-a.margins.left-a.margins.right:a.maxWidth:i.width=s?b:0,d?i.height=s?b:0:i.height=a.maxHeight,l.display&&s&&(d?i.height+=1.5*g:i.width+=1.5*g),r.display&&s){a.longestTextCache||(a.longestTextCache={});var v=e.longestText(a.ctx,f,a.ticks,a.longestTextCache),x=e.numberOfLabelLines(a.ticks),y=.5*u;if(d){a.longestLabelWidth=v;var k=Math.sin(e.toRadians(a.labelRotation))*a.longestLabelWidth+u*x+y*x;i.height=Math.min(a.maxHeight,i.height+k),a.ctx.font=f;var S=a.ctx.measureText(a.ticks[0]).width,w=a.ctx.measureText(a.ticks[a.ticks.length-1]).width,C=Math.cos(e.toRadians(a.labelRotation)),M=Math.sin(e.toRadians(a.labelRotation));a.paddingLeft=0!==a.labelRotation?C*S+3:S/2+3,a.paddingRight=0!==a.labelRotation?M*(u/2)+3:w/2+3}else{var D=a.maxWidth-i.width,A=r.mirror;A?v=0:v+=a.options.ticks.padding,D>v?i.width+=v:i.width=a.maxWidth,a.paddingTop=u/2,a.paddingBottom=u/2}}a.margins&&(a.paddingLeft=Math.max(a.paddingLeft-a.margins.left,0),a.paddingTop=Math.max(a.paddingTop-a.margins.top,0),a.paddingRight=Math.max(a.paddingRight-a.margins.right,0),a.paddingBottom=Math.max(a.paddingBottom-a.margins.bottom,0)),a.width=i.width,a.height=i.height},afterFit:function(){e.callCallback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function a(t){return null===t||"undefined"==typeof t?NaN:"number"==typeof t&&isNaN(t)?NaN:"object"==typeof t?t instanceof Date||t.isValid?t:a(this.isHorizontal()?t.x:t.y):t},getLabelForIndex:e.noop,getPixelForValue:e.noop,getValueForPixel:e.noop,getPixelForTick:function(t,e){var a=this;if(a.isHorizontal()){var i=a.width-(a.paddingLeft+a.paddingRight),n=i/Math.max(a.ticks.length-(a.options.gridLines.offsetGridLines?0:1),1),o=n*t+a.paddingLeft;e&&(o+=n/2);var r=a.left+Math.round(o);return r+=a.isFullWidth()?a.margins.left:0}var l=a.height-(a.paddingTop+a.paddingBottom);return a.top+t*(l/(a.ticks.length-1))},getPixelForDecimal:function(t){var e=this;if(e.isHorizontal()){var a=e.width-(e.paddingLeft+e.paddingRight),i=a*t+e.paddingLeft,n=e.left+Math.round(i);return n+=e.isFullWidth()?e.margins.left:0}return e.top+t*e.height},getBasePixel:function(){var t=this,e=t.min,a=t.max;return t.getPixelForValue(t.beginAtZero?0:0>e&&0>a?a:e>0&&a>0?e:0)},draw:function(a){var i=this,n=i.options;if(n.display){ +var o,r,l=i.ctx,s=t.defaults.global,d=n.ticks,u=n.gridLines,c=n.scaleLabel,h=0!==i.labelRotation,f=d.autoSkip,g=i.isHorizontal();d.maxTicksLimit&&(r=d.maxTicksLimit);var p=e.getValueOrDefault(d.fontColor,s.defaultFontColor),m=e.getValueOrDefault(d.fontSize,s.defaultFontSize),b=e.getValueOrDefault(d.fontStyle,s.defaultFontStyle),v=e.getValueOrDefault(d.fontFamily,s.defaultFontFamily),x=e.fontString(m,b,v),y=u.tickMarkLength,k=e.getValueOrDefault(c.fontColor,s.defaultFontColor),S=e.getValueOrDefault(c.fontSize,s.defaultFontSize),w=e.getValueOrDefault(c.fontStyle,s.defaultFontStyle),C=e.getValueOrDefault(c.fontFamily,s.defaultFontFamily),M=e.fontString(S,w,C),D=e.toRadians(i.labelRotation),A=Math.cos(D),I=(Math.sin(D),i.longestLabelWidth*A);l.fillStyle=p;var F=[];if(g){if(o=!1,h&&(I/=2),(I+d.autoSkipPadding)*i.ticks.length>i.width-(i.paddingLeft+i.paddingRight)&&(o=1+Math.floor((I+d.autoSkipPadding)*i.ticks.length/(i.width-(i.paddingLeft+i.paddingRight)))),r&&i.ticks.length>r)for(;!o||i.ticks.length/(o||1)>r;)o||(o=1),o+=1;f||(o=!1)}var T="right"===n.position?i.left:i.right-y,P="right"===n.position?i.left+y:i.right,_="bottom"===n.position?i.top:i.bottom-y,R="bottom"===n.position?i.top+y:i.bottom;if(e.each(i.ticks,function(t,r){if(void 0!==t&&null!==t){var l=i.ticks.length===r+1,s=o>1&&r%o>0||r%o===0&&r+o>=i.ticks.length;if((!s||l)&&void 0!==t&&null!==t){var c,f;r===("undefined"!=typeof i.zeroLineIndex?i.zeroLineIndex:0)?(c=u.zeroLineWidth,f=u.zeroLineColor):(c=e.getValueAtIndexOrDefault(u.lineWidth,r),f=e.getValueAtIndexOrDefault(u.color,r));var p,m,b,v,x,k,S,w,C,M,A,I="middle";if(g){h||(I="top"===n.position?"bottom":"top"),A=h?"right":"center";var V=i.getPixelForTick(r)+e.aliasPixel(c);C=i.getPixelForTick(r,u.offsetGridLines)+d.labelOffset,M=h?i.top+12:"top"===n.position?i.bottom-y:i.top+y,p=b=x=S=V,m=_,v=R,k=a.top,w=a.bottom}else{"left"===n.position?d.mirror?(C=i.right+d.padding,A="left"):(C=i.right-d.padding,A="right"):d.mirror?(C=i.left-d.padding,A="right"):(C=i.left+d.padding,A="left");var O=i.getPixelForTick(r);O+=e.aliasPixel(c),M=i.getPixelForTick(r,u.offsetGridLines),p=T,b=P,x=a.left,S=a.right,m=v=k=w=O}F.push({tx1:p,ty1:m,tx2:b,ty2:v,x1:x,y1:k,x2:S,y2:w,labelX:C,labelY:M,glWidth:c,glColor:f,rotation:-1*D,label:t,textBaseline:I,textAlign:A})}}}),e.each(F,function(t){if(u.display&&(l.lineWidth=t.glWidth,l.strokeStyle=t.glColor,l.beginPath(),u.drawTicks&&(l.moveTo(t.tx1,t.ty1),l.lineTo(t.tx2,t.ty2)),u.drawOnChartArea&&(l.moveTo(t.x1,t.y1),l.lineTo(t.x2,t.y2)),l.stroke()),d.display){l.save(),l.translate(t.labelX,t.labelY),l.rotate(t.rotation),l.font=x,l.textBaseline=t.textBaseline,l.textAlign=t.textAlign;var a=t.label;if(e.isArray(a))for(var i=0,n=0;ie;++e){var o=t[e];if(o&&o.hasValue()){var r=o.tooltipPosition();i.push(r.x),n.push(r.y)}}var l=0,s=0;for(e=0,a-i.length;a>e;++e)l+=i[e],s+=n[e];return{x:Math.round(l/i.length),y:Math.round(s/i.length)}}function i(t){var e=t._xScale,a=t._yScale||t._scale,i=t._index,n=t._datasetIndex;return{xLabel:e?e.getLabelForIndex(i,n):"",yLabel:a?a.getLabelForIndex(i,n):"",index:i,datasetIndex:n}}var n=t.helpers;t.defaults.global.tooltips={enabled:!0,custom:null,mode:"single",backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,yAlign:"center",xAlign:"center",caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",callbacks:{beforeTitle:n.noop,title:function(t,e){var a="",i=e.labels,n=i?i.length:0;if(t.length>0){var o=t[0];o.xLabel?a=o.xLabel:n>0&&o.indexe;++e)g.push(i(d[e]));l.itemSort&&(g=g.sort(l.itemSort)),d.length>1&&n.each(g,function(t){h.push(l.callbacks.labelColor.call(r,t,c))}),n.extend(s,{title:r.getTitle(g,u),beforeBody:r.getBeforeBody(g,u),body:r.getBody(g,u),afterBody:r.getAfterBody(g,u),footer:r.getFooter(g,u),x:Math.round(f.x),y:Math.round(f.y),caretPadding:n.getValueOrDefault(f.padding,2),labelColors:h});var p=r.getTooltipSize(s);r.determineAlignment(p),n.extend(s,r.getBackgroundPoint(s,p))}else r._model.opacity=0;return t&&l.custom&&l.custom.call(r,s),r},getTooltipSize:function(t){var e=this._chart.ctx,a={height:2*t.yPadding,width:0},i=t.body,o=i.reduce(function(t,e){return t+e.before.length+e.lines.length+e.after.length},0);o+=t.beforeBody.length+t.afterBody.length;var r=t.title.length,l=t.footer.length,s=t.titleFontSize,d=t.bodyFontSize,u=t.footerFontSize;a.height+=r*s,a.height+=(r-1)*t.titleSpacing,a.height+=r?t.titleMarginBottom:0,a.height+=o*d,a.height+=o?(o-1)*t.bodySpacing:0,a.height+=l?t.footerMarginTop:0,a.height+=l*u,a.height+=l?(l-1)*t.footerSpacing:0;var c=0,h=function(t){a.width=Math.max(a.width,e.measureText(t).width+c)};return e.font=n.fontString(s,t._titleFontStyle,t._titleFontFamily),n.each(t.title,h),e.font=n.fontString(d,t._bodyFontStyle,t._bodyFontFamily),n.each(t.beforeBody.concat(t.afterBody),h),c=i.length>1?d+2:0,n.each(i,function(t){n.each(t.before,h),n.each(t.lines,h),n.each(t.after,h)}),c=0,e.font=n.fontString(u,t._footerFontStyle,t._footerFontFamily),n.each(t.footer,h),a.width+=2*t.xPadding,a},determineAlignment:function(t){var e=this,a=e._model,i=e._chart,n=e._chartInstance.chartArea;a.yi.height-t.height&&(a.yAlign="bottom");var o,r,l,s,d,u=(n.left+n.right)/2,c=(n.top+n.bottom)/2;"center"===a.yAlign?(o=function(t){return u>=t},r=function(t){return t>u}):(o=function(e){return e<=t.width/2},r=function(e){return e>=i.width-t.width/2}),l=function(e){return e+t.width>i.width},s=function(e){return e-t.width<0},d=function(t){return c>=t?"top":"bottom"},o(a.x)?(a.xAlign="left",l(a.x)&&(a.xAlign="center",a.yAlign=d(a.y))):r(a.x)&&(a.xAlign="right",s(a.x)&&(a.xAlign="center",a.yAlign=d(a.y)))},getBackgroundPoint:function(t,e){var a={x:t.x,y:t.y},i=t.caretSize,n=t.caretPadding,o=t.cornerRadius,r=t.xAlign,l=t.yAlign,s=i+n,d=o+n;return"right"===r?a.x-=e.width:"center"===r&&(a.x-=e.width/2),"top"===l?a.y+=s:"bottom"===l?a.y-=e.height+s:a.y-=e.height/2,"center"===l?"left"===r?a.x+=s:"right"===r&&(a.x-=s):"left"===r?a.x-=d:"right"===r&&(a.x+=d),a},drawCaret:function(t,e,a,i){var o,r,l,s,d,u,c=this._view,h=this._chart.ctx,f=c.caretSize,g=c.cornerRadius,p=c.xAlign,m=c.yAlign,b=t.x,v=t.y,x=e.width,y=e.height;"center"===m?("left"===p?(o=b,r=o-f,l=o):(o=b+x,r=o+f,l=o),d=v+y/2,s=d-f,u=d+f):("left"===p?(o=b+g,r=o+f,l=r+f):"right"===p?(o=b+x-g,r=o-f,l=r-f):(r=b+x/2,o=r-f,l=r+f),"top"===m?(s=v,d=s-f,u=s):(s=v+y,d=s+f,u=s));var k=n.color(c.backgroundColor);h.fillStyle=k.alpha(a*k.alpha()).rgbString(),h.beginPath(),h.moveTo(o,s),h.lineTo(r,d),h.lineTo(l,u),h.closePath(),h.fill()},drawTitle:function(t,e,a,i){var o=e.title;if(o.length){a.textAlign=e._titleAlign,a.textBaseline="top";var r=e.titleFontSize,l=e.titleSpacing,s=n.color(e.titleFontColor);a.fillStyle=s.alpha(i*s.alpha()).rgbString(),a.font=n.fontString(r,e._titleFontStyle,e._titleFontFamily);var d,u;for(d=0,u=o.length;u>d;++d)a.fillText(o[d],t.x,t.y),t.y+=r+l,d+1===o.length&&(t.y+=e.titleMarginBottom-l)}},drawBody:function(t,e,a,i){var o=e.bodyFontSize,r=e.bodySpacing,l=e.body;a.textAlign=e._bodyAlign,a.textBaseline="top";var s=n.color(e.bodyFontColor),d=s.alpha(i*s.alpha()).rgbString();a.fillStyle=d,a.font=n.fontString(o,e._bodyFontStyle,e._bodyFontFamily);var u=0,c=function(e){a.fillText(e,t.x+u,t.y),t.y+=o+r};n.each(e.beforeBody,c);var h=l.length>1;u=h?o+2:0,n.each(l,function(r,l){n.each(r.before,c),n.each(r.lines,function(r){h&&(a.fillStyle=n.color(e.legendColorBackground).alpha(i).rgbaString(),a.fillRect(t.x,t.y,o,o),a.strokeStyle=n.color(e.labelColors[l].borderColor).alpha(i).rgbaString(),a.strokeRect(t.x,t.y,o,o),a.fillStyle=n.color(e.labelColors[l].backgroundColor).alpha(i).rgbaString(),a.fillRect(t.x+1,t.y+1,o-2,o-2),a.fillStyle=d),c(r)}),n.each(r.after,c)}),u=0,n.each(e.afterBody,c),t.y-=r},drawFooter:function(t,e,a,i){var o=e.footer;if(o.length){t.y+=e.footerMarginTop,a.textAlign=e._footerAlign,a.textBaseline="top";var r=n.color(e.footerFontColor);a.fillStyle=r.alpha(i*r.alpha()).rgbString(),a.font=n.fontString(e.footerFontSize,e._footerFontStyle,e._footerFontFamily),n.each(o,function(i){a.fillText(i,t.x,t.y),t.y+=e.footerFontSize+e.footerSpacing})}},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var a=this.getTooltipSize(e),i={x:e.x,y:e.y},o=Math.abs(e.opacity<.001)?0:e.opacity;if(this._options.enabled){var r=n.color(e.backgroundColor);t.fillStyle=r.alpha(o*r.alpha()).rgbString(),n.drawRoundedRectangle(t,i.x,i.y,a.width,a.height,e.cornerRadius),t.fill(),this.drawCaret(i,a,o,e.caretPadding),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,o),this.drawBody(i,e,t,o),this.drawFooter(i,e,t,o)}}}})}},{}],34:[function(t,e,a){"use strict";e.exports=function(t,e){var a=t.helpers,i=t.defaults.global;i.elements.arc={backgroundColor:i.defaultColor,borderColor:"#fff",borderWidth:2},t.elements.Arc=t.Element.extend({inLabelRange:function(t){var e=this._view;return e?Math.pow(t-e.x,2)s;)s+=2*Math.PI;for(;o>s;)o-=2*Math.PI;for(;l>o;)o+=2*Math.PI;var d=o>=l&&s>=o,u=r>=i.innerRadius&&r<=i.outerRadius;return d&&u}return!1},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,a=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*a,y:t.y+Math.sin(e)*a}},draw:function(){var t=this._chart.ctx,e=this._view,a=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,a,i),t.arc(e.x,e.y,e.innerRadius,i,a,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})}},{}],35:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a=t.defaults.global;t.defaults.global.elements.line={tension:.4,backgroundColor:a.defaultColor,borderWidth:3,borderColor:a.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",fill:!0},t.elements.Line=t.Element.extend({lineToNextPoint:function(t,e,a,i,n){var o=this,r=o._chart.ctx,l=o._view?o._view.spanGaps:!1;e._view.skip&&!l?i.call(o,t,e,a):t._view.skip&&!l?n.call(o,t,e,a):0===e._view.tension?r.lineTo(e._view.x,e._view.y):r.bezierCurveTo(t._view.controlPointNextX,t._view.controlPointNextY,e._view.controlPointPreviousX,e._view.controlPointPreviousY,e._view.x,e._view.y)},draw:function(){function t(t){r._view.skip||l._view.skip?t&&o.lineTo(i._view.scaleZero.x,i._view.scaleZero.y):o.bezierCurveTo(l._view.controlPointNextX,l._view.controlPointNextY,r._view.controlPointPreviousX,r._view.controlPointPreviousY,r._view.x,r._view.y)}var i=this,n=i._view,o=i._chart.ctx,r=i._children[0],l=i._children[i._children.length-1];o.save(),i._children.length>0&&n.fill&&(o.beginPath(),e.each(i._children,function(t,a){var r=e.previousItem(i._children,a),l=e.nextItem(i._children,a);0===a?(i._loop?o.moveTo(n.scaleZero.x,n.scaleZero.y):o.moveTo(t._view.x,n.scaleZero),t._view.skip?i._loop||o.moveTo(l._view.x,i._view.scaleZero):o.lineTo(t._view.x,t._view.y)):i.lineToNextPoint(r,t,l,function(t,e,a){i._loop?o.lineTo(i._view.scaleZero.x,i._view.scaleZero.y):(o.lineTo(t._view.x,i._view.scaleZero),o.moveTo(a._view.x,i._view.scaleZero))},function(t,e){o.lineTo(e._view.x,e._view.y)})},i),i._loop?t(!0):(o.lineTo(i._children[i._children.length-1]._view.x,n.scaleZero),o.lineTo(i._children[0]._view.x,n.scaleZero)),o.fillStyle=n.backgroundColor||a.defaultColor,o.closePath(),o.fill());var s=a.elements.line;o.lineCap=n.borderCapStyle||s.borderCapStyle,o.setLineDash&&o.setLineDash(n.borderDash||s.borderDash),o.lineDashOffset=n.borderDashOffset||s.borderDashOffset,o.lineJoin=n.borderJoinStyle||s.borderJoinStyle,o.lineWidth=n.borderWidth||s.borderWidth,o.strokeStyle=n.borderColor||a.defaultColor,o.beginPath(),e.each(i._children,function(t,a){var n=e.previousItem(i._children,a),r=e.nextItem(i._children,a);0===a?o.moveTo(t._view.x,t._view.y):i.lineToNextPoint(n,t,r,function(t,e,a){o.moveTo(a._view.x,a._view.y)},function(t,e){o.moveTo(e._view.x,e._view.y)})},i),i._loop&&i._children.length>0&&t(),o.stroke(),o.restore()}})}},{}],36:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a=t.defaults.global,i=a.defaultColor;a.elements.point={radius:3,pointStyle:"circle",backgroundColor:i,borderWidth:1,borderColor:i,hitRadius:1,hoverRadius:4,hoverBorderWidth:1},t.elements.Point=t.Element.extend({inRange:function(t,e){var a=this._view;return a?Math.pow(t-a.x,2)+Math.pow(e-a.y,2)=h)){switch(u.strokeStyle=d.borderColor||i,u.lineWidth=e.getValueOrDefault(d.borderWidth,a.elements.point.borderWidth),u.fillStyle=d.backgroundColor||i,c){default:u.beginPath(),u.arc(f,g,h,0,2*Math.PI),u.closePath(),u.fill();break;case"triangle":u.beginPath(),n=3*h/Math.sqrt(3),l=n*Math.sqrt(3)/2,u.moveTo(f-n/2,g+l/3),u.lineTo(f+n/2,g+l/3),u.lineTo(f,g-2*l/3),u.closePath(),u.fill();break;case"rect":s=1/Math.SQRT2*h,u.fillRect(f-s,g-s,2*s,2*s),u.strokeRect(f-s,g-s,2*s,2*s);break;case"rectRot":s=1/Math.SQRT2*h,u.beginPath(),u.moveTo(f-s,g),u.lineTo(f,g+s),u.lineTo(f+s,g),u.lineTo(f,g-s),u.closePath(),u.fill();break;case"cross":u.beginPath(),u.moveTo(f,g+h),u.lineTo(f,g-h),u.moveTo(f-h,g),u.lineTo(f+h,g),u.closePath();break;case"crossRot":u.beginPath(),o=Math.cos(Math.PI/4)*h,r=Math.sin(Math.PI/4)*h,u.moveTo(f-o,g-r),u.lineTo(f+o,g+r),u.moveTo(f-o,g+r),u.lineTo(f+o,g-r),u.closePath();break;case"star":u.beginPath(),u.moveTo(f,g+h),u.lineTo(f,g-h),u.moveTo(f-h,g),u.lineTo(f+h,g),o=Math.cos(Math.PI/4)*h,r=Math.sin(Math.PI/4)*h,u.moveTo(f-o,g-r),u.lineTo(f+o,g+r),u.moveTo(f-o,g+r),u.lineTo(f+o,g-r),u.closePath();break;case"line":u.beginPath(),u.moveTo(f-h,g),u.lineTo(f+h,g),u.closePath();break;case"dash":u.beginPath(),u.moveTo(f,g),u.lineTo(f+h,g),u.closePath()}u.stroke()}}}})}},{}],37:[function(t,e,a){"use strict";e.exports=function(t){var e=(t.helpers,t.defaults.global);e.elements.rectangle={backgroundColor:e.defaultColor,borderWidth:0,borderColor:e.defaultColor,borderSkipped:"bottom"},t.elements.Rectangle=t.Element.extend({draw:function(){function t(t){return s[(u+t)%4]}var e=this._chart.ctx,a=this._view,i=a.width/2,n=a.x-i,o=a.x+i,r=a.base-(a.base-a.y),l=a.borderWidth/2;a.borderWidth&&(n+=l,o-=l,r+=l),e.beginPath(),e.fillStyle=a.backgroundColor,e.strokeStyle=a.borderColor,e.lineWidth=a.borderWidth;var s=[[n,a.base],[n,r],[o,r],[o,a.base]],d=["bottom","left","top","right"],u=d.indexOf(a.borderSkipped,0);-1===u&&(u=0),e.moveTo.apply(e,t(0));for(var c=1;4>c;c++)e.lineTo.apply(e,t(c));e.fill(),a.borderWidth&&e.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var a=this._view;return a?a.y=a.x-a.width/2&&t<=a.x+a.width/2&&e>=a.y&&e<=a.base:t>=a.x-a.width/2&&t<=a.x+a.width/2&&e>=a.base&&e<=a.y:!1},inLabelRange:function(t){var e=this._view;return e?t>=e.x-e.width/2&&t<=e.x+e.width/2:!1},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})}},{}],38:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a={position:"bottom"},i=t.Scale.extend({determineDataLimits:function(){var t=this;t.minIndex=0,t.maxIndex=t.chart.data.labels.length-1;var a;void 0!==t.options.ticks.min&&(a=e.indexOf(t.chart.data.labels,t.options.ticks.min),t.minIndex=-1!==a?a:t.minIndex),void 0!==t.options.ticks.max&&(a=e.indexOf(t.chart.data.labels,t.options.ticks.max),t.maxIndex=-1!==a?a:t.maxIndex),t.min=t.chart.data.labels[t.minIndex],t.max=t.chart.data.labels[t.maxIndex]},buildTicks:function(t){var e=this;e.ticks=0===e.minIndex&&e.maxIndex===e.chart.data.labels.length-1?e.chart.data.labels:e.chart.data.labels.slice(e.minIndex,e.maxIndex+1)},getLabelForIndex:function(t,e){return this.ticks[t]},getPixelForValue:function(t,e,a,i){var n=this,o=Math.max(n.maxIndex+1-n.minIndex-(n.options.gridLines.offsetGridLines?0:1),1);if(n.isHorizontal()){var r=n.width-(n.paddingLeft+n.paddingRight),l=r/o,s=l*(e-n.minIndex)+n.paddingLeft;return n.options.gridLines.offsetGridLines&&i&&(s+=l/2),n.left+Math.round(s)}var d=n.height-(n.paddingTop+n.paddingBottom),u=d/o,c=u*(e-n.minIndex)+n.paddingTop;return n.options.gridLines.offsetGridLines&&i&&(c+=u/2),n.top+Math.round(c)},getPixelForTick:function(t,e){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null,e)},getValueForPixel:function(t){var e,a=this,i=Math.max(a.ticks.length-(a.options.gridLines.offsetGridLines?0:1),1),n=a.isHorizontal(),o=n?a.width-(a.paddingLeft+a.paddingRight):a.height-(a.paddingTop+a.paddingBottom),r=o/i;return a.options.gridLines.offsetGridLines&&(t-=r/2),t-=n?a.paddingLeft:a.paddingTop,e=0>=t?0:Math.round(t/r)}});t.scaleService.registerScaleType("category",i,a)}},{}],39:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a={position:"left",ticks:{callback:function(t,a,i){var n=i.length>3?i[2]-i[1]:i[1]-i[0];Math.abs(n)>1&&t!==Math.floor(t)&&(n=t-Math.floor(t));var o=e.log10(Math.abs(n)),r="";if(0!==t){var l=-1*Math.floor(o);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r="0";return r}}},i=t.LinearScaleBase.extend({determineDataLimits:function(){function t(t){return l?t.xAxisID===a.id:t.yAxisID===a.id}var a=this,i=a.options,n=(i.ticks,a.chart),o=n.data,r=o.datasets,l=a.isHorizontal();if(a.min=null,a.max=null,i.stacked){var s={},d=!1,u=!1;e.each(r,function(o,r){var l=n.getDatasetMeta(r);void 0===s[l.type]&&(s[l.type]={positiveValues:[],negativeValues:[]});var c=s[l.type].positiveValues,h=s[l.type].negativeValues;n.isDatasetVisible(r)&&t(l)&&e.each(o.data,function(t,e){var n=+a.getRightValue(t);isNaN(n)||l.data[e].hidden||(c[e]=c[e]||0,h[e]=h[e]||0,i.relativePoints?c[e]=100:0>n?(u=!0,h[e]+=n):(d=!0,c[e]+=n))})}),e.each(s,function(t){var i=t.positiveValues.concat(t.negativeValues),n=e.min(i),o=e.max(i);a.min=null===a.min?n:Math.min(a.min,n),a.max=null===a.max?o:Math.max(a.max,o)})}else e.each(r,function(i,o){var r=n.getDatasetMeta(o);n.isDatasetVisible(o)&&t(r)&&e.each(i.data,function(t,e){var i=+a.getRightValue(t);isNaN(i)||r.data[e].hidden||(null===a.min?a.min=i:ia.max&&(a.max=i))})});this.handleTickRangeOptions()},getTickLimit:function(){var a,i=this,n=i.options.ticks;if(i.isHorizontal())a=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(i.width/50));else{var o=e.getValueOrDefault(n.fontSize,t.defaults.global.defaultFontSize);a=Math.min(n.maxTicksLimit?n.maxTicksLimit:11,Math.ceil(i.height/(2*o)))}return a},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t,e,a,i){var n,o,r=this,l=r.paddingLeft,s=r.paddingBottom,d=r.start,u=+r.getRightValue(t),c=r.end-d;return r.isHorizontal()?(o=r.width-(l+r.paddingRight),n=r.left+o/c*(u-d),Math.round(n+l)):(o=r.height-(r.paddingTop+s),n=r.bottom-s-o/c*(u-d),Math.round(n))},getValueForPixel:function(t){var e=this,a=e.isHorizontal(),i=e.paddingLeft,n=e.paddingBottom,o=a?e.width-(i+e.paddingRight):e.height-(e.paddingTop+n),r=(a?t-e.left-i:e.bottom-n-t)/o;return e.start+(e.end-e.start)*r},getPixelForTick:function(t,e){return this.getPixelForValue(this.ticksAsNumbers[t],null,null,e)}});t.scaleService.registerScaleType("linear",i,a)}},{}],40:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a=e.noop;t.LinearScaleBase=t.Scale.extend({handleTickRangeOptions:function(){var t=this,a=t.options,i=a.ticks;if(i.beginAtZero){var n=e.sign(t.min),o=e.sign(t.max);0>n&&0>o?t.max=0:n>0&&o>0&&(t.min=0)}void 0!==i.min?t.min=i.min:void 0!==i.suggestedMin&&(t.min=Math.min(t.min,i.suggestedMin)),void 0!==i.max?t.max=i.max:void 0!==i.suggestedMax&&(t.max=Math.max(t.max,i.suggestedMax)),t.min===t.max&&(t.max++,i.beginAtZero||t.min--)},getTickLimit:a,handleDirectionalChanges:a,buildTicks:function(){var t=this,a=t.options,i=a.ticks,n=e.getValueOrDefault,o=(t.isHorizontal(),t.ticks=[]),r=t.getTickLimit();r=Math.max(2,r);var l,s=i.fixedStepSize&&i.fixedStepSize>0||i.stepSize&&i.stepSize>0;if(s)l=n(i.fixedStepSize,i.stepSize);else{var d=e.niceNum(t.max-t.min,!1);l=e.niceNum(d/(r-1),!0)}var u=Math.floor(t.min/l)*l,c=Math.ceil(t.max/l)*l,h=(c-u)/l;h=e.almostEquals(h,Math.round(h),l/1e3)?Math.round(h):Math.ceil(h),o.push(void 0!==i.min?i.min:u);for(var f=1;h>f;++f)o.push(u+f*l);o.push(void 0!==i.max?i.max:c),t.handleDirectionalChanges(),t.max=e.max(o),t.min=e.min(o),i.reverse?(o.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var e=this;e.ticksAsNumbers=e.ticks.slice(),e.zeroLineIndex=e.ticks.indexOf(0),t.Scale.prototype.convertTicksToLabels.call(e)}})}},{}],41:[function(t,e,a){"use strict";e.exports=function(t){var e=t.helpers,a={position:"left",ticks:{callback:function(t,a,i){var n=t/Math.pow(10,Math.floor(e.log10(t)));return 1===n||2===n||5===n||0===a||a===i.length-1?t.toExponential():""}}},i=t.Scale.extend({determineDataLimits:function(){function t(t){return d?t.xAxisID===a.id:t.yAxisID===a.id}var a=this,i=a.options,n=i.ticks,o=a.chart,r=o.data,l=r.datasets,s=e.getValueOrDefault,d=a.isHorizontal();if(a.min=null,a.max=null,i.stacked){var u={};e.each(l,function(n,r){var l=o.getDatasetMeta(r);o.isDatasetVisible(r)&&t(l)&&(void 0===u[l.type]&&(u[l.type]=[]),e.each(n.data,function(t,e){var n=u[l.type],o=+a.getRightValue(t);isNaN(o)||l.data[e].hidden||(n[e]=n[e]||0,i.relativePoints?n[e]=100:n[e]+=o)}))}),e.each(u,function(t){var i=e.min(t),n=e.max(t);a.min=null===a.min?i:Math.min(a.min,i),a.max=null===a.max?n:Math.max(a.max,n)})}else e.each(l,function(i,n){var r=o.getDatasetMeta(n);o.isDatasetVisible(n)&&t(r)&&e.each(i.data,function(t,e){var i=+a.getRightValue(t);isNaN(i)||r.data[e].hidden||(null===a.min?a.min=i:ia.max&&(a.max=i))})});a.min=s(n.min,a.min),a.max=s(n.max,a.max),a.min===a.max&&(0!==a.min&&null!==a.min?(a.min=Math.pow(10,Math.floor(e.log10(a.min))-1),a.max=Math.pow(10,Math.floor(e.log10(a.max))+1)):(a.min=1,a.max=10))},buildTicks:function(){for(var t=this,a=t.options,i=a.ticks,n=e.getValueOrDefault,o=t.ticks=[],r=n(i.min,Math.pow(10,Math.floor(e.log10(t.min))));rt.max&&(t.max=i))})}}),t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,i=e.getValueOrDefault(t.fontSize,a.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*i)))},convertTicksToLabels:function(){ +var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t,i,n,o,r,l,s,d,u,c,h,f,g=this.options.pointLabels,p=e.getValueOrDefault(g.fontSize,a.defaultFontSize),m=e.getValueOrDefault(g.fontStyle,a.defaultFontStyle),b=e.getValueOrDefault(g.fontFamily,a.defaultFontFamily),v=e.fontString(p,m,b),x=e.min([this.height/2-p-5,this.width/2]),y=this.width,k=0;for(this.ctx.font=v,i=0;iy&&(y=t.x+o,r=i),t.x-oy&&(y=t.x+n,r=i):i>this.getValueCount()/2&&t.x-ne&&0>a?a:e>0&&a>0?e:0)},draw:function(){var t=this,i=t.options,n=i.gridLines,o=i.ticks,r=i.angleLines,l=i.pointLabels,s=e.getValueOrDefault;if(i.display){var d=t.ctx,u=s(o.fontSize,a.defaultFontSize),c=s(o.fontStyle,a.defaultFontStyle),h=s(o.fontFamily,a.defaultFontFamily),f=e.fontString(u,c,h);if(e.each(t.ticks,function(r,l){if(l>0||i.reverse){var c=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),h=t.yCenter-c;if(n.display&&0!==l)if(d.strokeStyle=e.getValueAtIndexOrDefault(n.color,l-1),d.lineWidth=e.getValueAtIndexOrDefault(n.lineWidth,l-1),i.lineArc)d.beginPath(),d.arc(t.xCenter,t.yCenter,c,0,2*Math.PI),d.closePath(),d.stroke();else{d.beginPath();for(var g=0;g=0;x--){if(r.display){var y=t.getPointPosition(x,g);d.beginPath(),d.moveTo(t.xCenter,t.yCenter),d.lineTo(y.x,y.y),d.stroke(),d.closePath()}var k=t.getPointPosition(x,g+5),S=s(l.fontColor,a.defaultFontColor);d.font=v,d.fillStyle=S;var w=t.pointLabels,C=w.length,M=w.length/2,D=M/2,A=D>x||x>C-D,I=x===D||x===C-D;0===x?d.textAlign="center":x===M?d.textAlign="center":M>x?d.textAlign="left":d.textAlign="right",I?d.textBaseline="middle":A?d.textBaseline="bottom":d.textBaseline="top",d.fillText(w[x]?w[x]:"",k.x,k.y)}}}}});t.scaleService.registerScaleType("radialLinear",n,i)}},{}],43:[function(t,e,a){"use strict";var i=t(1);i="function"==typeof i?i:window.moment,e.exports=function(t){var e=t.helpers,a={units:[{name:"millisecond",steps:[1,2,5,10,20,50,100,250,500]},{name:"second",steps:[1,2,5,10,30]},{name:"minute",steps:[1,2,5,10,30]},{name:"hour",steps:[1,2,3,6,12]},{name:"day",steps:[1,2,5]},{name:"week",maxStep:4},{name:"month",maxStep:3},{name:"quarter",maxStep:4},{name:"year",maxStep:!1}]},n={position:"bottom",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm:ss a",hour:"MMM D, hA",day:"ll",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1}},o=t.Scale.extend({initialize:function(){if(!i)throw new Error("Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com");t.Scale.prototype.initialize.call(this)},getLabelMoment:function(t,e){return this.labelMoments[t][e]},getMomentStartOf:function(t){var e=this;return"week"===e.options.time.unit&&e.options.time.isoWeekday!==!1?t.clone().startOf("isoWeek").isoWeekday(e.options.time.isoWeekday):t.clone().startOf(e.tickUnit)},determineDataLimits:function(){var t=this;t.labelMoments=[];var a=[];t.chart.data.labels&&t.chart.data.labels.length>0?(e.each(t.chart.data.labels,function(e,i){var n=t.parseTime(e);n.isValid()&&(t.options.time.round&&n.startOf(t.options.time.round),a.push(n))},t),t.firstTick=i.min.call(t,a),t.lastTick=i.max.call(t,a)):(t.firstTick=null,t.lastTick=null),e.each(t.chart.data.datasets,function(n,o){var r=[],l=t.chart.isDatasetVisible(o);"object"==typeof n.data[0]&&null!==n.data[0]?e.each(n.data,function(e,a){var n=t.parseTime(t.getRightValue(e));n.isValid()&&(t.options.time.round&&n.startOf(t.options.time.round),r.push(n),l&&(t.firstTick=null!==t.firstTick?i.min(t.firstTick,n):n,t.lastTick=null!==t.lastTick?i.max(t.lastTick,n):n))},t):r=a,t.labelMoments.push(r)},t),t.options.time.min&&(t.firstTick=t.parseTime(t.options.time.min)),t.options.time.max&&(t.lastTick=t.parseTime(t.options.time.max)),t.firstTick=(t.firstTick||i()).clone(),t.lastTick=(t.lastTick||i()).clone()},buildTicks:function(i){var n=this;n.ctx.save();var o=e.getValueOrDefault(n.options.ticks.fontSize,t.defaults.global.defaultFontSize),r=e.getValueOrDefault(n.options.ticks.fontStyle,t.defaults.global.defaultFontStyle),l=e.getValueOrDefault(n.options.ticks.fontFamily,t.defaults.global.defaultFontFamily),s=e.fontString(o,r,l);if(n.ctx.font=s,n.ticks=[],n.unitScale=1,n.scaleSizeInUnits=0,n.options.time.unit)n.tickUnit=n.options.time.unit||"day",n.displayFormat=n.options.time.displayFormats[n.tickUnit],n.scaleSizeInUnits=n.lastTick.diff(n.firstTick,n.tickUnit,!0),n.unitScale=e.getValueOrDefault(n.options.time.unitStepSize,1);else{var d=n.isHorizontal()?n.width-(n.paddingLeft+n.paddingRight):n.height-(n.paddingTop+n.paddingBottom),u=n.tickFormatFunction(n.firstTick,0,[]),c=n.ctx.measureText(u).width,h=Math.cos(e.toRadians(n.options.ticks.maxRotation)),f=Math.sin(e.toRadians(n.options.ticks.maxRotation));c=c*h+o*f;var g=d/c;n.tickUnit="millisecond",n.scaleSizeInUnits=n.lastTick.diff(n.firstTick,n.tickUnit,!0),n.displayFormat=n.options.time.displayFormats[n.tickUnit];for(var p=0,m=a.units[p];p=Math.ceil(n.scaleSizeInUnits/g)){n.unitScale=e.getValueOrDefault(n.options.time.unitStepSize,m.steps[b]);break}break}if(m.maxStep===!1||Math.ceil(n.scaleSizeInUnits/g)=0)break;S%n.unitScale===0&&n.ticks.push(w)}var C=n.ticks[n.ticks.length-1].diff(n.lastTick,n.tickUnit);(0!==C||0===n.scaleSizeInUnits)&&(n.options.time.max?(n.ticks.push(n.lastTick.clone()),n.scaleSizeInUnits=n.lastTick.diff(n.ticks[0],n.tickUnit,!0)):(n.ticks.push(n.lastTick.clone()),n.scaleSizeInUnits=n.lastTick.diff(n.firstTick,n.tickUnit,!0))),n.ctx.restore()},getLabelForIndex:function(t,e){var a=this,i=a.chart.data.labels&&tb;b++)if(b in this&&this[b]===a)return b;return-1};for(t={catchupTime:500,initialRate:.03,minTime:500,ghostTime:500,maxProgressPerFrame:10,easeFactor:1.25,startOnPageLoad:!0,restartOnPushState:!0,restartOnRequestAfter:500,target:"body",elements:{checkInterval:100,selectors:["body"]},eventLag:{minSamples:10,sampleCount:3,lagThreshold:3},ajax:{trackMethods:["GET"],trackWebSockets:!0,ignoreURLs:[]}},B=function(){var a;return null!=(a="undefined"!=typeof performance&&null!==performance&&"function"==typeof performance.now?performance.now():void 0)?a:+new Date},D=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame,s=window.cancelAnimationFrame||window.mozCancelAnimationFrame,null==D&&(D=function(a){return setTimeout(a,50)},s=function(a){return clearTimeout(a)}),F=function(a){var b,c;return b=B(),(c=function(){var d;return d=B()-b,d>=33?(b=B(),a(d,function(){return D(c)})):setTimeout(c,33-d)})()},E=function(){var a,b,c;return c=arguments[0],b=arguments[1],a=3<=arguments.length?W.call(arguments,2):[],"function"==typeof c[b]?c[b].apply(c,a):c[b]},u=function(){var a,b,c,d,e,f,g;for(b=arguments[0],d=2<=arguments.length?W.call(arguments,1):[],f=0,g=d.length;g>f;f++)if(c=d[f])for(a in c)X.call(c,a)&&(e=c[a],null!=b[a]&&"object"==typeof b[a]&&null!=e&&"object"==typeof e?u(b[a],e):b[a]=e);return b},p=function(a){var b,c,d,e,f;for(c=b=0,e=0,f=a.length;f>e;e++)d=a[e],c+=Math.abs(d),b++;return c/b},w=function(a,b){var c,d,e;if(null==a&&(a="options"),null==b&&(b=!0),e=document.querySelector("[data-pace-"+a+"]")){if(c=e.getAttribute("data-pace-"+a),!b)return c;try{return JSON.parse(c)}catch(f){return d=f,"undefined"!=typeof console&&null!==console?console.error("Error parsing inline pace options",d):void 0}}},g=function(){function a(){}return a.prototype.on=function(a,b,c,d){var e;return null==d&&(d=!1),null==this.bindings&&(this.bindings={}),null==(e=this.bindings)[a]&&(e[a]=[]),this.bindings[a].push({handler:b,ctx:c,once:d})},a.prototype.once=function(a,b,c){return this.on(a,b,c,!0)},a.prototype.off=function(a,b){var c,d,e;if(null!=(null!=(d=this.bindings)?d[a]:void 0)){if(null==b)return delete this.bindings[a];for(c=0,e=[];cP;P++)J=T[P],C[J]===!0&&(C[J]=t[J]);i=function(a){function b(){return U=b.__super__.constructor.apply(this,arguments)}return Y(b,a),b}(Error),b=function(){function a(){this.progress=0}return a.prototype.getElement=function(){var a;if(null==this.el){if(a=document.querySelector(C.target),!a)throw new i;this.el=document.createElement("div"),this.el.className="pace pace-active",document.body.className=document.body.className.replace(/pace-done/g,""),document.body.className+=" pace-running",this.el.innerHTML='
\n
\n
\n
',null!=a.firstChild?a.insertBefore(this.el,a.firstChild):a.appendChild(this.el)}return this.el},a.prototype.finish=function(){var a;return a=this.getElement(),a.className=a.className.replace("pace-active",""),a.className+=" pace-inactive",document.body.className=document.body.className.replace("pace-running",""),document.body.className+=" pace-done"},a.prototype.update=function(a){return this.progress=a,this.render()},a.prototype.destroy=function(){try{this.getElement().parentNode.removeChild(this.getElement())}catch(a){i=a}return this.el=void 0},a.prototype.render=function(){var a,b;return null==document.querySelector(C.target)?!1:(a=this.getElement(),a.children[0].style.width=""+this.progress+"%",(!this.lastRenderedProgress||this.lastRenderedProgress|0!==this.progress|0)&&(a.children[0].setAttribute("data-progress-text",""+(0|this.progress)+"%"),this.progress>=100?b="99":(b=this.progress<10?"0":"",b+=0|this.progress),a.children[0].setAttribute("data-progress",""+b)),this.lastRenderedProgress=this.progress)},a.prototype.done=function(){return this.progress>=100},a}(),h=function(){function a(){this.bindings={}}return a.prototype.trigger=function(a,b){var c,d,e,f,g;if(null!=this.bindings[a]){for(f=this.bindings[a],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.call(this,b));return g}},a.prototype.on=function(a,b){var c;return null==(c=this.bindings)[a]&&(c[a]=[]),this.bindings[a].push(b)},a}(),O=window.XMLHttpRequest,N=window.XDomainRequest,M=window.WebSocket,v=function(a,b){var c,d,e,f;f=[];for(d in b.prototype)try{e=b.prototype[d],f.push(null==a[d]&&"function"!=typeof e?a[d]=e:void 0)}catch(g){c=g}return f},z=[],Pace.ignore=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?W.call(arguments,1):[],z.unshift("ignore"),c=b.apply(null,a),z.shift(),c},Pace.track=function(){var a,b,c;return b=arguments[0],a=2<=arguments.length?W.call(arguments,1):[],z.unshift("track"),c=b.apply(null,a),z.shift(),c},I=function(a){var b;if(null==a&&(a="GET"),"track"===z[0])return"force";if(!z.length&&C.ajax){if("socket"===a&&C.ajax.trackWebSockets)return!0;if(b=a.toUpperCase(),Z.call(C.ajax.trackMethods,b)>=0)return!0}return!1},j=function(a){function b(){var a,c=this;b.__super__.constructor.apply(this,arguments),a=function(a){var b;return b=a.open,a.open=function(d,e){return I(d)&&c.trigger("request",{type:d,url:e,request:a}),b.apply(a,arguments)}},window.XMLHttpRequest=function(b){var c;return c=new O(b),a(c),c},v(window.XMLHttpRequest,O),null!=N&&(window.XDomainRequest=function(){var b;return b=new N,a(b),b},v(window.XDomainRequest,N)),null!=M&&C.ajax.trackWebSockets&&(window.WebSocket=function(a,b){var d;return d=null!=b?new M(a,b):new M(a),I("socket")&&c.trigger("request",{type:"socket",url:a,protocols:b,request:d}),d},v(window.WebSocket,M))}return Y(b,a),b}(h),Q=null,x=function(){return null==Q&&(Q=new j),Q},H=function(a){var b,c,d,e;for(e=C.ajax.ignoreURLs,c=0,d=e.length;d>c;c++)if(b=e[c],"string"==typeof b){if(-1!==a.indexOf(b))return!0}else if(b.test(a))return!0;return!1},x().on("request",function(b){var c,d,e,f,g;return f=b.type,e=b.request,g=b.url,H(g)?void 0:Pace.running||C.restartOnRequestAfter===!1&&"force"!==I(f)?void 0:(d=arguments,c=C.restartOnRequestAfter||0,"boolean"==typeof c&&(c=0),setTimeout(function(){var b,c,g,h,i,j;if(b="socket"===f?e.readyState<2:0<(h=e.readyState)&&4>h){for(Pace.restart(),i=Pace.sources,j=[],c=0,g=i.length;g>c;c++){if(J=i[c],J instanceof a){J.watch.apply(J,d);break}j.push(void 0)}return j}},c))}),a=function(){function a(){var a=this;this.elements=[],x().on("request",function(){return a.watch.apply(a,arguments)})}return a.prototype.watch=function(a){var b,c,d,e;return d=a.type,b=a.request,e=a.url,H(e)?void 0:(c="socket"===d?new m(b):new n(b),this.elements.push(c))},a}(),n=function(){function a(a){var b,c,d,e,f,g,h=this;if(this.progress=0,null!=window.ProgressEvent)for(c=null,a.addEventListener("progress",function(a){return h.progress=a.lengthComputable?100*a.loaded/a.total:h.progress+(100-h.progress)/2}),g=["load","abort","timeout","error"],d=0,e=g.length;e>d;d++)b=g[d],a.addEventListener(b,function(){return h.progress=100});else f=a.onreadystatechange,a.onreadystatechange=function(){var b;return 0===(b=a.readyState)||4===b?h.progress=100:3===a.readyState&&(h.progress=50),"function"==typeof f?f.apply(null,arguments):void 0}}return a}(),m=function(){function a(a){var b,c,d,e,f=this;for(this.progress=0,e=["error","open"],c=0,d=e.length;d>c;c++)b=e[c],a.addEventListener(b,function(){return f.progress=100})}return a}(),d=function(){function a(a){var b,c,d,f;for(null==a&&(a={}),this.elements=[],null==a.selectors&&(a.selectors=[]),f=a.selectors,c=0,d=f.length;d>c;c++)b=f[c],this.elements.push(new e(b))}return a}(),e=function(){function a(a){this.selector=a,this.progress=0,this.check()}return a.prototype.check=function(){var a=this;return document.querySelector(this.selector)?this.done():setTimeout(function(){return a.check()},C.elements.checkInterval)},a.prototype.done=function(){return this.progress=100},a}(),c=function(){function a(){var a,b,c=this;this.progress=null!=(b=this.states[document.readyState])?b:100,a=document.onreadystatechange,document.onreadystatechange=function(){return null!=c.states[document.readyState]&&(c.progress=c.states[document.readyState]),"function"==typeof a?a.apply(null,arguments):void 0}}return a.prototype.states={loading:0,interactive:50,complete:100},a}(),f=function(){function a(){var a,b,c,d,e,f=this;this.progress=0,a=0,e=[],d=0,c=B(),b=setInterval(function(){var g;return g=B()-c-50,c=B(),e.push(g),e.length>C.eventLag.sampleCount&&e.shift(),a=p(e),++d>=C.eventLag.minSamples&&a=100&&(this.done=!0),b===this.last?this.sinceLastUpdate+=a:(this.sinceLastUpdate&&(this.rate=(b-this.last)/this.sinceLastUpdate),this.catchup=(b-this.progress)/C.catchupTime,this.sinceLastUpdate=0,this.last=b),b>this.progress&&(this.progress+=this.catchup*a),c=1-Math.pow(this.progress/100,C.easeFactor),this.progress+=c*this.rate*a,this.progress=Math.min(this.lastProgress+C.maxProgressPerFrame,this.progress),this.progress=Math.max(0,this.progress),this.progress=Math.min(100,this.progress),this.lastProgress=this.progress,this.progress},a}(),K=null,G=null,q=null,L=null,o=null,r=null,Pace.running=!1,y=function(){return C.restartOnPushState?Pace.restart():void 0},null!=window.history.pushState&&(S=window.history.pushState,window.history.pushState=function(){return y(),S.apply(window.history,arguments)}),null!=window.history.replaceState&&(V=window.history.replaceState,window.history.replaceState=function(){return y(),V.apply(window.history,arguments)}),k={ajax:a,elements:d,document:c,eventLag:f},(A=function(){var a,c,d,e,f,g,h,i;for(Pace.sources=K=[],g=["ajax","elements","document","eventLag"],c=0,e=g.length;e>c;c++)a=g[c],C[a]!==!1&&K.push(new k[a](C[a]));for(i=null!=(h=C.extraSources)?h:[],d=0,f=i.length;f>d;d++)J=i[d],K.push(new J(C));return Pace.bar=q=new b,G=[],L=new l})(),Pace.stop=function(){return Pace.trigger("stop"),Pace.running=!1,q.destroy(),r=!0,null!=o&&("function"==typeof s&&s(o),o=null),A()},Pace.restart=function(){return Pace.trigger("restart"),Pace.stop(),Pace.start()},Pace.go=function(){var a;return Pace.running=!0,q.render(),a=B(),r=!1,o=F(function(b,c){var d,e,f,g,h,i,j,k,m,n,o,p,s,t,u,v;for(k=100-q.progress,e=o=0,f=!0,i=p=0,t=K.length;t>p;i=++p)for(J=K[i],n=null!=G[i]?G[i]:G[i]=[],h=null!=(v=J.elements)?v:[J],j=s=0,u=h.length;u>s;j=++s)g=h[j],m=null!=n[j]?n[j]:n[j]=new l(g),f&=m.done,m.done||(e++,o+=m.tick(b));return d=o/e,q.update(L.tick(b,d)),q.done()||f||r?(q.update(100),Pace.trigger("done"),setTimeout(function(){return q.finish(),Pace.running=!1,Pace.trigger("hide")},Math.max(C.ghostTime,Math.max(C.minTime-(B()-a),0)))):c()})},Pace.start=function(a){u(C,a),Pace.running=!0;try{q.render()}catch(b){i=b}return document.querySelector(".pace")?(Pace.trigger("start"),Pace.go()):setTimeout(Pace.start,50)},"function"==typeof define&&define.amd?define(function(){return Pace}):"object"==typeof exports?module.exports=Pace:C.startOnPageLoad&&Pace.start()}).call(this); \ No newline at end of file diff --git a/src/app/views/dashboard/analytics/analytics.component.html b/src/app/views/dashboard/analytics/analytics.component.html new file mode 100644 index 0000000..f3d4242 --- /dev/null +++ b/src/app/views/dashboard/analytics/analytics.component.html @@ -0,0 +1,332 @@ +
+
Last 12 Months Sales
+
+
+
+
+
+
+
+ +
+ {{ + item.icon + }} +
+

{{ item.title }}

+
{{ item.amount }}
+
+
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name +
+ {{ element.name }} +

+ {{ element.name }} +

+
+
Revenue${{ element.price }}Stock Status + + {{ getProductStatus(element.available).status }} + + Action + +
+
+ +
+ +
+ +
+ Active Users +
+
+
+

+ 10.8k +

+
+
+ + expand_less + +
+ + (+21%) + +
+
+
+ +
+ +
+ Transactions +
+
+
+

+ $2.8M +

+
+
+ + expand_less + +
+ + (+21%) + +
+
+
+
+ +
+ Ongoing Projects + +
+ +
+ + +

+ {{ item.title }} +

+
+ +
+

+ 03/02/2020 07:13PM +

+ +
+ + + +

+ +3 +

+
+
+ + +
+
+
+
+ +
+
+ + Traffic Sources + Last 30 days +
+
+ + + upgrade +

+ Upgrade to MatX PRO for
+ more resources +

+ +
+
+
+
+ + Campaigns + +

Today

+
+ + Google (102k) +
+
+ + Facebook (120k) +
+
+ + Tensor (80k) +
+ +

Yesterday

+
+ + Google (102k) +
+
+ + Facebook (120k) +
+
+ + Tensor (80k) +
+ +

Last Month

+
+ + Google (102k) +
+
+ + Facebook (120k) +
+
+ + Tensor (80k) +
+
+
+
+
+
diff --git a/src/app/views/dashboard/analytics/analytics.component.scss b/src/app/views/dashboard/analytics/analytics.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/dashboard/analytics/analytics.component.spec.ts b/src/app/views/dashboard/analytics/analytics.component.spec.ts new file mode 100644 index 0000000..6c00899 --- /dev/null +++ b/src/app/views/dashboard/analytics/analytics.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AnalyticsComponent } from './analytics.component'; + +describe('AnalyticsComponent', () => { + let component: AnalyticsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AnalyticsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AnalyticsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/dashboard/analytics/analytics.component.ts b/src/app/views/dashboard/analytics/analytics.component.ts new file mode 100644 index 0000000..44684b4 --- /dev/null +++ b/src/app/views/dashboard/analytics/analytics.component.ts @@ -0,0 +1,366 @@ +import { + Component, + OnInit, + AfterViewInit, + ChangeDetectionStrategy +} from '@angular/core'; +import { matxAnimations } from 'app/shared/animations/matx-animations'; +import { ThemeService } from 'app/shared/services/theme.service'; +import tinyColor from 'tinycolor2'; +import PerfectScrollbar from 'perfect-scrollbar'; + +@Component({ + selector: 'app-analytics', + templateUrl: './analytics.component.html', + styleUrls: ['./analytics.component.scss'], + animations: matxAnimations +}) +export class AnalyticsComponent implements OnInit, AfterViewInit { + trafficVsSaleOptions: any; + trafficVsSale: any; + trafficData: any; + saleData: any; + + sessionOptions: any; + sessions: any; + sessionsData: any; + + trafficGrowthChart: any; + bounceRateGrowthChart: any; + + dailyTrafficChartBar: any; + trafficSourcesChart: any; + countryTrafficStats: any[]; + doughNutPieOptions: any; + + statCardList = [ + { + icon: 'people', + title: 'New Leads', + amount: '3,050', + color: 'primary' + }, + { + icon: 'attach_money', + title: 'This week Sales', + amount: '$80,500', + color: 'primary' + }, + { + icon: 'store', + title: 'Inventory Status', + amount: '8.5% Stock Surplus', + color: 'accent' + }, + { + icon: 'shopping_cart', + title: 'Orders to deliver', + amount: '305 Orders', + color: 'accent' + } + ]; + + productList = [ + { + imgUrl: 'assets/images/products/headphone-2.jpg', + name: 'earphone', + price: 100, + available: 15 + }, + { + imgUrl: 'assets/images/products/headphone-3.jpg', + name: 'earphone', + price: 1500, + available: 30 + }, + { + imgUrl: 'assets/images/products/iphone-2.jpg', + name: 'iPhone x', + price: 1900, + available: 35 + }, + { + imgUrl: 'assets/images/products/iphone-1.jpg', + name: 'iPhone x', + price: 100, + available: 0 + }, + { + imgUrl: 'assets/images/products/headphone-3.jpg', + name: 'Head phone', + price: 1190, + available: 5 + } + ]; + + onGoingProjectList = [ + { + icon: 'start_border', + color: 'warn', + title: 'project 1' + }, + { + icon: 'date_range', + color: 'primary', + title: 'project 2' + }, + { + icon: 'start_border', + color: 'warn', + title: 'project 3' + }, + { + icon: 'date_range', + color: 'accent', + title: 'project 4' + } + ]; + + displayedColumns: string[] = ['name', 'price', 'available', 'action']; + + constructor(private themeService: ThemeService) {} + + ngAfterViewInit() {} + ngOnInit() { + this.themeService.onThemeChange.subscribe(activeTheme => { + this.initDoughNutPieOptions(activeTheme); + this.initDailyTrafficChartBar(activeTheme); + }); + this.initDailyTrafficChartBar(this.themeService.activatedTheme); + this.initDoughNutPieOptions(this.themeService.activatedTheme); + } + + initDoughNutPieOptions(theme) { + this.doughNutPieOptions = { + backgroundColor: 'transparent', + color: [ + '#f44336', + '#ff9e43', + 'rgba(116, 103, 239, 1)' + ], + legend: { + show: true, + itemGap: 20, + icon: 'circle', + bottom: 0, + textStyle: { + fontSize: 13, + fontFamily: 'roboto' + } + }, + tooltip: { + show: false, + trigger: 'item', + formatter: '{a}
{b}: {c} ({d}%)' + }, + xAxis: [ + { + axisLine: { + show: false + }, + splitLine: { + show: false + } + } + ], + yAxis: [ + { + axisLine: { + show: false + }, + splitLine: { + show: false + } + } + ], + + series: [ + { + name: 'Traffic Rate', + type: 'pie', + radius: ['45%', '72.55%'], + center: ['50%', '50%'], + avoidLabelOverlap: false, + hoverOffset: 5, + stillShowZeroSum: false, + + label: { + normal: { + show: false, + position: 'center', + textStyle: { + fontSize: '13', + fontWeight: 'normal' + }, + formatter: '{a}' + }, + emphasis: { + show: true, + textStyle: { + fontSize: '15', + fontWeight: 'normal', + color: 'rgba(116, 103, 239, 1)' + }, + formatter: '{b} \n{c} ({d}%)' + } + }, + labelLine: { + normal: { + show: false + } + }, + data: [ + { + value: 65, + name: 'Google' + }, + { + value: 20, + name: 'Facebook' + }, + { value: 15, name: 'Others' } + ], + + itemStyle: { + emphasis: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + } + } + ] + }; + } + + initDailyTrafficChartBar(theme) { + this.dailyTrafficChartBar = { + grid: { + top: 16, + left: 36, + right: 16, + bottom: 32 + }, + legend: {}, + tooltip: { + show: true, + trigger: 'axis', + + axisPointer: { + type: 'cross', + lineStyle: { + opacity: 0 + } + }, + crossStyle: { + color: '#000' + } + }, + series: [ + { + data: [34, 45, 31, 45, 31, 43, 26, 43, 31, 45, 33, 40], + type: 'line', + areaStyle: {}, + smooth: true, + lineStyle: { + width: 2, + color: '#fff' + } + } + ], + xAxis: { + show: true, + type: 'category', + showGrid: false, + boundaryGap: false, + data: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec' + ], + axisLabel: { + color: '#ccc', + margin: 20 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + } + }, + yAxis: { + type: 'value', + min: 10, + max: 60, + axisLabel: { + color: '#ccc', + margin: 20, + fontSize: 13, + fontFamily: 'roboto' + }, + splitLine: { + show: true, + lineStyle: { + color: 'rgba(255, 255, 255, .1)' + } + }, + + axisLine: { + show: false + }, + axisTick: { + show: false + } + }, + color: [ + { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { + offset: 0, + color: 'rgba(255,255,255,0.3)' // color at 0% position + }, + { + offset: 1, + color: 'rgba(255,255,255,0)' // color at 100% position + } + ], + global: false // false by default + } + ] + }; + } + + getProductStatus(value) { + if (value) { + if (value < 20) { + return { + color: 'accent', + status: `${value} available` + }; + } else + return { + color: 'primary', + status: `in stock` + }; + } else + return { + color: 'warn', + status: `out of stcok` + }; + } +} diff --git a/src/app/views/dashboard/dashboard.module.ts b/src/app/views/dashboard/dashboard.module.ts new file mode 100644 index 0000000..1dc5c68 --- /dev/null +++ b/src/app/views/dashboard/dashboard.module.ts @@ -0,0 +1,25 @@ +import { SharedMaterialModule } from 'app/shared/shared-material.module'; +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { FlexLayoutModule } from '@angular/flex-layout'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; +import { SharedPipesModule } from 'app/shared/pipes/shared-pipes.module'; +import { DashboardRoutes } from './dashboard.routing'; +import { AnalyticsComponent } from './analytics/analytics.component'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +@NgModule({ + imports: [ + CommonModule, + SharedMaterialModule, + FlexLayoutModule, + NgxDatatableModule, + SharedPipesModule, + PerfectScrollbarModule, + RouterModule.forChild(DashboardRoutes) + ], + declarations: [AnalyticsComponent], + exports: [] +}) +export class DashboardModule {} diff --git a/src/app/views/dashboard/dashboard.routing.ts b/src/app/views/dashboard/dashboard.routing.ts new file mode 100644 index 0000000..cb6f523 --- /dev/null +++ b/src/app/views/dashboard/dashboard.routing.ts @@ -0,0 +1,10 @@ +import { Routes } from "@angular/router"; + +import { AnalyticsComponent } from "./analytics/analytics.component"; + +export const DashboardRoutes: Routes = [ + { + path: "analytics", + component: AnalyticsComponent + } +]; diff --git a/src/app/views/forms/basic-form/basic-form.component.css b/src/app/views/forms/basic-form/basic-form.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/forms/basic-form/basic-form.component.html b/src/app/views/forms/basic-form/basic-form.component.html new file mode 100644 index 0000000..7872f95 --- /dev/null +++ b/src/app/views/forms/basic-form/basic-form.component.html @@ -0,0 +1,175 @@ + + +
Form validation
+ +
+ +
+
+
+
+ + + + Username require at least {{basicForm.controls['username'].errors.minlength.requiredLength}} characters + Username can not contain more than {{basicForm.controls['username'].errors.maxlength.requiredLength}} characters +
+ +
+ + + + First name is required +
+ +
+ + + + Email is required + Invaild email address +
+ +
+ + + + Invaild web address +
+ +
+ + + + + + +
+
+ +
+
+ + + + Invaild card number +
+ +
+ + + + Invaild phone number +
+ +
+ + + + Password is required +
+ +
+ + + + Password mismatch +
+ +
+ + + Male + Female + +
+ +
+ I have read and agree to the terms of service. + + You must agree to the terms and conditions +
+
+
+ +
+
+
+ diff --git a/src/app/views/forms/basic-form/basic-form.component.ts b/src/app/views/forms/basic-form/basic-form.component.ts new file mode 100644 index 0000000..d02d24f --- /dev/null +++ b/src/app/views/forms/basic-form/basic-form.component.ts @@ -0,0 +1,47 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup, FormControl, Validators } from '@angular/forms'; +import { CustomValidators } from 'ngx-custom-validators'; + +@Component({ + selector: 'app-basic-form', + templateUrl: './basic-form.component.html', + styleUrls: ['./basic-form.component.css'] +}) +export class BasicFormComponent implements OnInit { + formData = {}; + console = console; + basicForm: FormGroup; + + constructor() {} + + ngOnInit() { + const password = new FormControl('', Validators.required); + const confirmPassword = new FormControl( + '', + //CustomValidators.equalTo(password) + ); + + this.basicForm = new FormGroup({ + username: new FormControl('', [ + Validators.minLength(4), + Validators.maxLength(9) + ]), + firstname: new FormControl('', [Validators.required]), + email: new FormControl('', [Validators.required, Validators.email]), + website: new FormControl(''), + date: new FormControl(), + cardno: new FormControl(''), + phone: new FormControl('', [Validators.required]), + password: password, + confirmPassword: confirmPassword, + gender: new FormControl('', [Validators.required]), + agreed: new FormControl('', (control: FormControl) => { + const agreed = control.value; + if (!agreed) { + return { agreed: true }; + } + return null; + }) + }); + } +} diff --git a/src/app/views/forms/file-upload/file-upload.component.css b/src/app/views/forms/file-upload/file-upload.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/forms/file-upload/file-upload.component.html b/src/app/views/forms/file-upload/file-upload.component.html new file mode 100644 index 0000000..b850216 --- /dev/null +++ b/src/app/views/forms/file-upload/file-upload.component.html @@ -0,0 +1,116 @@ + + +
File upload
+ +
+ +
+

Multiple

+
+ +

Single

+ +
+ +
+
+ Drop file here +
+
+ + + + + + + + + + + + + + + + + + + + + +

Queue is empty

+
+
NameSizeProgressStatusActions
{{ item?.file?.name }}{{ item?.file?.size/1024/1024 | number:'.2' }} MB +
+
+ + +
+
+ check + cancel + error + + + + + +
+ + +
+

Queue progress:

+
+ + +
+ + + + + + +
+
+
diff --git a/src/app/views/forms/file-upload/file-upload.component.ts b/src/app/views/forms/file-upload/file-upload.component.ts new file mode 100644 index 0000000..682cab4 --- /dev/null +++ b/src/app/views/forms/file-upload/file-upload.component.ts @@ -0,0 +1,22 @@ +import { Component, OnInit } from "@angular/core"; +import { FileUploader } from "ng2-file-upload"; + +@Component({ + selector: "app-file-upload", + templateUrl: "./file-upload.component.html", + styleUrls: ["./file-upload.component.css"] +}) +export class FileUploadComponent implements OnInit { + public uploader: FileUploader = new FileUploader({ + url: "https://evening-anchorage-315.herokuapp.com/api/" + }); + public hasBaseDropZoneOver: boolean = false; + console = console; + constructor() {} + + ngOnInit() {} + + public fileOverBase(e: any): void { + this.hasBaseDropZoneOver = e; + } +} diff --git a/src/app/views/forms/forms.module.ts b/src/app/views/forms/forms.module.ts new file mode 100644 index 0000000..c00cec7 --- /dev/null +++ b/src/app/views/forms/forms.module.ts @@ -0,0 +1,55 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatNativeDateModule } from '@angular/material/core'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatListModule } from '@angular/material/list'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; +import { MatRadioModule } from '@angular/material/radio'; +import { MatStepperModule } from '@angular/material/stepper'; +import { FlexLayoutModule } from '@angular/flex-layout'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; +import { FileUploadModule } from 'ng2-file-upload'; + +import { BasicFormComponent } from './basic-form/basic-form.component'; +import { RichTextEditorComponent } from './rich-text-editor/rich-text-editor.component'; +import { FileUploadComponent } from './file-upload/file-upload.component'; + +import { FormsRoutes } from './forms.routing'; +import { WizardComponent } from './wizard/wizard.component'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + MatInputModule, + MatListModule, + MatCardModule, + MatDatepickerModule, + MatNativeDateModule, + MatProgressBarModule, + MatRadioModule, + MatCheckboxModule, + MatButtonModule, + MatIconModule, + MatStepperModule, + FlexLayoutModule, + NgxDatatableModule, + FileUploadModule, + RouterModule.forChild(FormsRoutes) + ], + declarations: [ + BasicFormComponent, + RichTextEditorComponent, + FileUploadComponent, + WizardComponent + ] +}) +export class AppFormsModule {} diff --git a/src/app/views/forms/forms.routing.ts b/src/app/views/forms/forms.routing.ts new file mode 100644 index 0000000..7b027a7 --- /dev/null +++ b/src/app/views/forms/forms.routing.ts @@ -0,0 +1,29 @@ +import { Routes } from '@angular/router'; + +import { BasicFormComponent } from './basic-form/basic-form.component'; +import { RichTextEditorComponent } from './rich-text-editor/rich-text-editor.component'; +import { FileUploadComponent } from './file-upload/file-upload.component'; +import { WizardComponent } from './wizard/wizard.component'; + +export const FormsRoutes: Routes = [ + { + path: '', + children: [{ + path: 'basic', + component: BasicFormComponent, + data: { title: 'Basic', breadcrumb: 'Basic' } + }, { + path: 'editor', + component: RichTextEditorComponent, + data: { title: 'Editor', breadcrumb: 'Editor' } + }, { + path: 'upload', + component: FileUploadComponent, + data: { title: 'Upload', breadcrumb: 'Upload' } + }, { + path: 'wizard', + component: WizardComponent, + data: { title: 'Wizard', breadcrumb: 'Wizard' } + }] + } +]; \ No newline at end of file diff --git a/src/app/views/forms/rich-text-editor/rich-text-editor.component.css b/src/app/views/forms/rich-text-editor/rich-text-editor.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/forms/rich-text-editor/rich-text-editor.component.html b/src/app/views/forms/rich-text-editor/rich-text-editor.component.html new file mode 100644 index 0000000..a2f7b1f --- /dev/null +++ b/src/app/views/forms/rich-text-editor/rich-text-editor.component.html @@ -0,0 +1,10 @@ + + + + + + diff --git a/src/app/views/forms/rich-text-editor/rich-text-editor.component.ts b/src/app/views/forms/rich-text-editor/rich-text-editor.component.ts new file mode 100644 index 0000000..fb07ee0 --- /dev/null +++ b/src/app/views/forms/rich-text-editor/rich-text-editor.component.ts @@ -0,0 +1,26 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-rich-text-editor', + templateUrl: './rich-text-editor.component.html', + styleUrls: [ + './rich-text-editor.component.css' + ] +}) +export class RichTextEditorComponent implements OnInit { + + editorData = `

MatX | Angular material admin

+

UI Lib

+


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. It has survived not only five centuries

`; + + constructor() { } + + ngOnInit() { + } + + onContentChanged() { } + onSelectionChanged() { } +} diff --git a/src/app/views/forms/wizard/wizard.component.css b/src/app/views/forms/wizard/wizard.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/forms/wizard/wizard.component.html b/src/app/views/forms/wizard/wizard.component.html new file mode 100644 index 0000000..4bec4b8 --- /dev/null +++ b/src/app/views/forms/wizard/wizard.component.html @@ -0,0 +1,91 @@ + + +
Horizontal
+ +
+ + + +
+ Fill out your name + + + +
+ +
+
+
+ +
+ Fill out your address + + + +
+ + + +
+
+
+ + Done +
+ check +
+
You Are Done.
+
+ + + +
+
+
+
+
+ + + +
Verticle
+ +
+ + + +
+ Fill out your name + + + +
+ +
+
+
+ +
+ Fill out your address + + + +
+ + + +
+
+
+ + Done +
+ check +
+
You Are Done.
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/src/app/views/forms/wizard/wizard.component.ts b/src/app/views/forms/wizard/wizard.component.ts new file mode 100644 index 0000000..a3b56f4 --- /dev/null +++ b/src/app/views/forms/wizard/wizard.component.ts @@ -0,0 +1,28 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; + +@Component({ + selector: 'app-wizard', + templateUrl: './wizard.component.html', + styleUrls: ['./wizard.component.css'] +}) +export class WizardComponent implements OnInit { + firstFormGroup: FormGroup; + secondFormGroup: FormGroup; + + constructor(private fb: FormBuilder) { } + + ngOnInit() { + this.firstFormGroup = this.fb.group({ + firstCtrl: ['', Validators.required] + }); + this.secondFormGroup = this.fb.group({ + secondCtrl: ['', Validators.required] + }); + } + + submit() { + console.log(this.firstFormGroup.value); + console.log(this.secondFormGroup.value); + } +} diff --git a/src/app/views/mat-icons/mat-icons.component.css b/src/app/views/mat-icons/mat-icons.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/mat-icons/mat-icons.component.html b/src/app/views/mat-icons/mat-icons.component.html new file mode 100644 index 0000000..debfa20 --- /dev/null +++ b/src/app/views/mat-icons/mat-icons.component.html @@ -0,0 +1,35 @@ + + +
Easy to use
+
+ +

HTML

+

<mat-icon>3d_rotation</mat-icon>

+

Output

+ 3d_rotation +
+
+ + + +
Material icon list
+
+ +
+
+ {{icon}}
+
{{icon}}
+
+
+
+
diff --git a/src/app/views/mat-icons/mat-icons.component.ts b/src/app/views/mat-icons/mat-icons.component.ts new file mode 100644 index 0000000..318fced --- /dev/null +++ b/src/app/views/mat-icons/mat-icons.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-mat-icons', + templateUrl: './mat-icons.component.html', + styleUrls: ['./mat-icons.component.css'] +}) +export class MatIconsComponent implements OnInit { + + constructor() { } + + ngOnInit() { } + icons = ['3d_rotation', 'ac_unit', 'access_alarm', 'access_alarms', 'access_time', 'accessibility', 'accessible', 'account_balance', 'account_balance_wallet', 'account_box', 'account_circle', 'adb', 'add', 'add_a_photo', 'add_alarm', 'add_alert', 'add_box', 'add_circle', 'add_circle_outline', 'add_location', 'add_shopping_cart', 'add_to_photos', 'add_to_queue', 'adjust', 'airline_seat_flat', 'airline_seat_flat_angled', 'airline_seat_individual_suite', 'airline_seat_legroom_extra', 'airline_seat_legroom_normal', 'airline_seat_legroom_reduced', 'airline_seat_recline_extra', 'airline_seat_recline_normal', 'airplanemode_active', 'airplanemode_inactive', 'airplay', 'airport_shuttle', 'alarm', 'alarm_add', 'alarm_off', 'alarm_on', 'album', 'all_inclusive', 'all_out', 'android', 'announcement', 'apps', 'archive', 'arrow_back', 'arrow_downward', 'arrow_drop_down', 'arrow_drop_down_circle', 'arrow_drop_up', 'arrow_forward', 'arrow_upward', 'art_track', 'aspect_ratio', 'assessment', 'assignment', 'assignment_ind', 'assignment_late', 'assignment_return', 'assignment_returned', 'assignment_turned_in', 'assistant', 'assistant_photo', 'attach_file', 'attach_money', 'attachment', 'audiotrack', 'autorenew', 'av_timer', 'backspace', 'backup', 'battery_alert', 'battery_charging_full', 'battery_full', 'battery_std', 'battery_unknown', 'beach_access', 'beenhere', 'block', 'bluetooth', 'bluetooth_audio', 'bluetooth_connected', 'bluetooth_disabled', 'bluetooth_searching', 'blur_circular', 'blur_linear', 'blur_off', 'blur_on', 'book', 'bookmark', 'bookmark_border', 'border_all', 'border_bottom', 'border_clear', 'border_color', 'border_horizontal', 'border_inner', 'border_left', 'border_outer', 'border_right', 'border_style', 'border_top', 'border_vertical', 'branding_watermark', 'brightness_1', 'brightness_2', 'brightness_3', 'brightness_4', 'brightness_5', 'brightness_6', 'brightness_7', 'brightness_auto', 'brightness_high', 'brightness_low', 'brightness_medium', 'broken_image', 'brush', 'bubble_chart', 'bug_report', 'build', 'burst_mode', 'business', 'business_center', 'cached', 'cake', 'call', 'call_end', 'call_made', 'call_merge', 'call_missed', 'call_missed_outgoing', 'call_received', 'call_split', 'call_to_action', 'camera', 'camera_alt', 'camera_enhance', 'camera_front', 'camera_rear', 'camera_roll', 'cancel', 'card_giftcard', 'card_membership', 'card_travel', 'casino', 'cast', 'cast_connected', 'center_focus_strong', 'center_focus_weak', 'change_history', 'chat', 'chat_bubble', 'chat_bubble_outline', 'check', 'check_box', 'check_box_outline_blank', 'check_circle', 'chevron_left', 'chevron_right', 'child_care', 'child_friendly', 'chrome_reader_mode', 'class', 'clear', 'clear_all', 'close', 'closed_caption', 'cloud', 'cloud_circle', 'cloud_done', 'cloud_download', 'cloud_off', 'cloud_queue', 'cloud_upload', 'code', 'collections', 'collections_bookmark', 'color_lens', 'colorize', 'comment', 'compare', 'compare_arrows', 'computer', 'confirmation_number', 'contact_mail', 'contact_phone', 'contacts', 'content_copy', 'content_cut', 'content_paste', 'control_point', 'control_point_duplicate', 'copyright', 'create', 'create_new_folder', 'credit_card', 'crop', 'crop_16_9', 'crop_3_2', 'crop_5_4', 'crop_7_5', 'crop_din', 'crop_free', 'crop_landscape', 'crop_original', 'crop_portrait', 'crop_rotate', 'crop_square', 'dashboard', 'data_usage', 'date_range', 'dehaze', 'delete', 'delete_forever', 'delete_sweep', 'description', 'desktop_mac', 'desktop_windows', 'details', 'developer_board', 'developer_mode', 'device_hub', 'devices', 'devices_other', 'dialer_sip', 'dialpad', 'directions', 'directions_bike', 'directions_boat', 'directions_bus', 'directions_car', 'directions_railway', 'directions_run', 'directions_subway', 'directions_transit', 'directions_walk', 'disc_full', 'dns', 'do_not_disturb', 'do_not_disturb_alt', 'do_not_disturb_off', 'do_not_disturb_on', 'dock', 'domain', 'done', 'done_all', 'donut_large', 'donut_small', 'drafts', 'drag_handle', 'drive_eta', 'dvr', 'edit', 'edit_location', 'eject', 'email', 'enhanced_encryption', 'equalizer', 'error', 'error_outline', 'euro_symbol', 'ev_station', 'event', 'event_available', 'event_busy', 'event_note', 'event_seat', 'exit_to_app', 'expand_less', 'expand_more', 'explicit', 'explore', 'exposure', 'exposure_neg_1', 'exposure_neg_2', 'exposure_plus_1', 'exposure_plus_2', 'exposure_zero', 'extension', 'face', 'fast_forward', 'fast_rewind', 'favorite', 'favorite_border', 'featured_play_list', 'featured_video', 'feedback', 'fiber_dvr', 'fiber_manual_record', 'fiber_new', 'fiber_pin', 'fiber_smart_record', 'file_download', 'file_upload', 'filter', 'filter_1', 'filter_2', 'filter_3', 'filter_4', 'filter_5', 'filter_6', 'filter_7', 'filter_8', 'filter_9', 'filter_9_plus', 'filter_b_and_w', 'filter_center_focus', 'filter_drama', 'filter_frames', 'filter_hdr', 'filter_list', 'filter_none', 'filter_tilt_shift', 'filter_vintage', 'find_in_page', 'find_replace', 'fingerprint', 'first_page', 'fitness_center', 'flag', 'flare', 'flash_auto', 'flash_off', 'flash_on', 'flight', 'flight_land', 'flight_takeoff', 'flip', 'flip_to_back', 'flip_to_front', 'folder', 'folder_open', 'folder_shared', 'folder_special', 'font_download', 'format_align_center', 'format_align_justify', 'format_align_left', 'format_align_right', 'format_bold', 'format_clear', 'format_color_fill', 'format_color_reset', 'format_color_text', 'format_indent_decrease', 'format_indent_increase', 'format_italic', 'format_line_spacing', 'format_list_bulleted', 'format_list_numbered', 'format_paint', 'format_quote', 'format_shapes', 'format_size', 'format_strikethrough', 'format_textdirection_l_to_r', 'format_textdirection_r_to_l', 'format_underlined', 'forum', 'forward', 'forward_10', 'forward_30', 'forward_5', 'free_breakfast', 'fullscreen', 'fullscreen_exit', 'functions', 'g_translate', 'gamepad', 'games', 'gavel', 'gesture', 'get_app', 'gif', 'golf_course', 'gps_fixed', 'gps_not_fixed', 'gps_off', 'grade', 'gradient', 'grain', 'graphic_eq', 'grid_off', 'grid_on', 'group', 'group_add', 'group_work', 'hd', 'hdr_off', 'hdr_on', 'hdr_strong', 'hdr_weak', 'headset', 'headset_mic', 'healing', 'hearing', 'help', 'help_outline', 'high_quality', 'highlight', 'highlight_off', 'history', 'home', 'hot_tub', 'hotel', 'hourglass_empty', 'hourglass_full', 'http', 'https', 'image', 'image_aspect_ratio', 'import_contacts', 'import_export', 'important_devices', 'inbox', 'indeterminate_check_box', 'info', 'info_outline', 'input', 'insert_chart', 'insert_comment', 'insert_drive_file', 'insert_emoticon', 'insert_invitation', 'insert_link', 'insert_photo', 'invert_colors', 'invert_colors_off', 'iso', 'keyboard', 'keyboard_arrow_down', 'keyboard_arrow_left', 'keyboard_arrow_right', 'keyboard_arrow_up', 'keyboard_backspace', 'keyboard_capslock', 'keyboard_hide', 'keyboard_return', 'keyboard_tab', 'keyboard_voice', 'kitchen', 'label', 'label_outline', 'landscape', 'language', 'laptop', 'laptop_chromebook', 'laptop_mac', 'laptop_windows', 'last_page', 'launch', 'layers', 'layers_clear', 'leak_add', 'leak_remove', 'lens', 'library_add', 'library_books', 'library_music', 'lightbulb_outline', 'line_style', 'line_weight', 'linear_scale', 'link', 'linked_camera', 'list', 'live_help', 'live_tv', 'local_activity', 'local_airport', 'local_atm', 'local_bar', 'local_cafe', 'local_car_wash', 'local_convenience_store', 'local_dining', 'local_drink', 'local_florist', 'local_gas_station', 'local_grocery_store', 'local_hospital', 'local_hotel', 'local_laundry_service', 'local_library', 'local_mall', 'local_movies', 'local_offer', 'local_parking', 'local_pharmacy', 'local_phone', 'local_pizza', 'local_play', 'local_post_office', 'local_printshop', 'local_see', 'local_shipping', 'local_taxi', 'location_city', 'location_disabled', 'location_off', 'location_on', 'location_searching', 'lock', 'lock_open', 'lock_outline', 'looks', 'looks_3', 'looks_4', 'looks_5', 'looks_6', 'looks_one', 'looks_two', 'loop', 'loupe', 'low_priority', 'loyalty', 'mail', 'mail_outline', 'map', 'markunread', 'markunread_mailbox', 'memory', 'menu', 'merge_type', 'message', 'mic', 'mic_none', 'mic_off', 'mms', 'mode_comment', 'mode_edit', 'monetization_on', 'money_off', 'monochrome_photos', 'mood', 'mood_bad', 'more', 'more_horiz', 'more_vert', 'motorcycle', 'mouse', 'move_to_inbox', 'movie', 'movie_creation', 'movie_filter', 'multiline_chart', 'music_note', 'music_video', 'my_location', 'nature', 'nature_people', 'navigate_before', 'navigate_next', 'navigation', 'near_me', 'network_cell', 'network_check', 'network_locked', 'network_wifi', 'new_releases', 'next_week', 'nfc', 'no_encryption', 'no_sim', 'not_interested', 'note', 'note_add', 'notifications', 'notifications_active', 'notifications_none', 'notifications_off', 'notifications_paused', 'offline_pin', 'ondemand_video', 'opacity', 'open_in_browser', 'open_in_new', 'open_with', 'pages', 'pageview', 'palette', 'pan_tool', 'panorama', 'panorama_fish_eye', 'panorama_horizontal', 'panorama_vertical', 'panorama_wide_angle', 'party_mode', 'pause', 'pause_circle_filled', 'pause_circle_outline', 'payment', 'people', 'people_outline', 'perm_camera_mic', 'perm_contact_calendar', 'perm_data_setting', 'perm_device_information', 'perm_identity', 'perm_media', 'perm_phone_msg', 'perm_scan_wifi', 'person', 'person_add', 'person_outline', 'person_pin', 'person_pin_circle', 'personal_video', 'pets', 'phone', 'phone_android', 'phone_bluetooth_speaker', 'phone_forwarded', 'phone_in_talk', 'phone_iphone', 'phone_locked', 'phone_missed', 'phone_paused', 'phonelink', 'phonelink_erase', 'phonelink_lock', 'phonelink_off', 'phonelink_ring', 'phonelink_setup', 'photo', 'photo_album', 'photo_camera', 'photo_filter', 'photo_library', 'photo_size_select_actual', 'photo_size_select_large', 'photo_size_select_small', 'picture_as_pdf', 'picture_in_picture', 'picture_in_picture_alt', 'pie_chart', 'pie_chart_outlined', 'pin_drop', 'place', 'play_arrow', 'play_circle_filled', 'play_circle_outline', 'play_for_work', 'playlist_add', 'playlist_add_check', 'playlist_play', 'plus_one', 'poll', 'polymer', 'pool', 'portable_wifi_off', 'portrait', 'power', 'power_input', 'power_settings_new', 'pregnant_woman', 'present_to_all', 'print', 'priority_high', 'public', 'publish', 'query_builder', 'question_answer', 'queue', 'queue_music', 'queue_play_next', 'radio', 'radio_button_checked', 'radio_button_unchecked', 'rate_review', 'receipt', 'recent_actors', 'record_voice_over', 'redeem', 'redo', 'refresh', 'remove', 'remove_circle', 'remove_circle_outline', 'remove_from_queue', 'remove_red_eye', 'remove_shopping_cart', 'reorder', 'repeat', 'repeat_one', 'replay', 'replay_10', 'replay_30', 'replay_5', 'reply', 'reply_all', 'report', 'report_problem', 'restaurant', 'restaurant_menu', 'restore', 'restore_page', 'ring_volume', 'room', 'room_service', 'rotate_90_degrees_ccw', 'rotate_left', 'rotate_right', 'rounded_corner', 'router', 'rowing', 'rss_feed', 'rv_hookup', 'satellite', 'save', 'scanner', 'schedule', 'school', 'screen_lock_landscape', 'screen_lock_portrait', 'screen_lock_rotation', 'screen_rotation', 'screen_share', 'sd_card', 'sd_storage', 'search', 'security', 'select_all', 'send', 'sentiment_dissatisfied', 'sentiment_neutral', 'sentiment_satisfied', 'sentiment_very_dissatisfied', 'sentiment_very_satisfied', 'settings', 'settings_applications', 'settings_backup_restore', 'settings_bluetooth', 'settings_brightness', 'settings_cell', 'settings_ethernet', 'settings_input_antenna', 'settings_input_component', 'settings_input_composite', 'settings_input_hdmi', 'settings_input_svideo', 'settings_overscan', 'settings_phone', 'settings_power', 'settings_remote', 'settings_system_daydream', 'settings_voice', 'share', 'shop', 'shop_two', 'shopping_basket', 'shopping_cart', 'short_text', 'show_chart', 'shuffle', 'signal_cellular_4_bar', 'signal_cellular_connected_no_internet_4_bar', 'signal_cellular_no_sim', 'signal_cellular_null', 'signal_cellular_off', 'signal_wifi_4_bar', 'signal_wifi_4_bar_lock', 'signal_wifi_off', 'sim_card', 'sim_card_alert', 'skip_next', 'skip_previous', 'slideshow', 'slow_motion_video', 'smartphone', 'smoke_free', 'smoking_rooms', 'sms', 'sms_failed', 'snooze', 'sort', 'sort_by_alpha', 'spa', 'space_bar', 'speaker', 'speaker_group', 'speaker_notes', 'speaker_notes_off', 'speaker_phone', 'spellcheck', 'star', 'star_border', 'star_half', 'stars', 'stay_current_landscape', 'stay_current_portrait', 'stay_primary_landscape', 'stay_primary_portrait', 'stop', 'stop_screen_share', 'storage', 'store', 'store_mall_directory', 'straighten', 'streetview', 'strikethrough_s', 'style', 'subdirectory_arrow_left', 'subdirectory_arrow_right', 'subject', 'subscriptions', 'subtitles', 'subway', 'supervisor_account', 'surround_sound', 'swap_calls', 'swap_horiz', 'swap_vert', 'swap_vertical_circle', 'switch_camera', 'switch_video', 'sync', 'sync_disabled', 'sync_problem', 'system_update', 'system_update_alt', 'tab', 'tab_unselected', 'tablet', 'tablet_android', 'tablet_mac', 'tag_faces', 'tap_and_play', 'terrain', 'text_fields', 'text_format', 'textsms', 'texture', 'theaters', 'thumb_down', 'thumb_up', 'thumbs_up_down', 'time_to_leave', 'timelapse', 'timeline', 'timer', 'timer_10', 'timer_3', 'timer_off', 'title', 'toc', 'today', 'toll', 'tonality', 'touch_app', 'toys', 'track_changes', 'traffic', 'train', 'tram', 'transfer_within_a_station', 'transform', 'translate', 'trending_down', 'trending_flat', 'trending_up', 'tune', 'turned_in', 'turned_in_not', 'tv', 'unarchive', 'undo', 'unfold_less', 'unfold_more', 'update', 'usb', 'verified_user', 'vertical_align_bottom', 'vertical_align_center', 'vertical_align_top', 'vibration', 'video_call', 'video_label', 'video_library', 'videocam', 'videocam_off', 'videogame_asset', 'view_agenda', 'view_array', 'view_carousel', 'view_column', 'view_comfy', 'view_compact', 'view_day', 'view_headline', 'view_list', 'view_module', 'view_quilt', 'view_stream', 'view_week', 'vignette', 'visibility', 'visibility_off', 'voice_chat', 'voicemail', 'volume_down', 'volume_mute', 'volume_off', 'volume_up', 'vpn_key', 'vpn_lock', 'wallpaper', 'warning', 'watch', 'watch_later', 'wb_auto', 'wb_cloudy', 'wb_incandescent', 'wb_iridescent', 'wb_sunny', 'wc', 'web', 'web_asset', 'weekend', 'whatshot', 'widgets', 'wifi', 'wifi_lock', 'wifi_tethering', 'work', 'wrap_text', 'youtube_searched_for', 'zoom_in', 'zoom_out', 'zoom_out_map'] +} diff --git a/src/app/views/mat-icons/mat-icons.module.ts b/src/app/views/mat-icons/mat-icons.module.ts new file mode 100644 index 0000000..6b91c6e --- /dev/null +++ b/src/app/views/mat-icons/mat-icons.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { MatCardModule } from '@angular/material/card'; +import { MatIconModule } from '@angular/material/icon'; +import { FlexLayoutModule } from '@angular/flex-layout'; + +import { MatIconsComponent } from './mat-icons.component'; +import { MatIconsRoutes } from "./mat-icons.routing"; + +@NgModule({ + imports: [ + CommonModule, + MatCardModule, + MatIconModule, + FlexLayoutModule, + RouterModule.forChild(MatIconsRoutes) + ], + declarations: [MatIconsComponent] +}) +export class MatIconsModule { } diff --git a/src/app/views/mat-icons/mat-icons.routing.ts b/src/app/views/mat-icons/mat-icons.routing.ts new file mode 100644 index 0000000..5c61623 --- /dev/null +++ b/src/app/views/mat-icons/mat-icons.routing.ts @@ -0,0 +1,8 @@ +import { Routes } from '@angular/router'; + +import { MatIconsComponent } from './mat-icons.component'; + + +export const MatIconsRoutes: Routes = [ + { path: '', component: MatIconsComponent, data: { title: 'Material icons' } } +]; \ No newline at end of file diff --git a/src/app/views/material-components/mat-kits/mat-kits.component.html b/src/app/views/material-components/mat-kits/mat-kits.component.html new file mode 100644 index 0000000..5883909 --- /dev/null +++ b/src/app/views/material-components/mat-kits/mat-kits.component.html @@ -0,0 +1,11 @@ + + +

Matx includes all the components from + Angular material library. + It has SharedMaterialModule which you can use in your + module to get access of Material components. +

+ + Browse available Components +
+
\ No newline at end of file diff --git a/src/app/views/material-components/mat-kits/mat-kits.component.scss b/src/app/views/material-components/mat-kits/mat-kits.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/material-components/mat-kits/mat-kits.component.spec.ts b/src/app/views/material-components/mat-kits/mat-kits.component.spec.ts new file mode 100644 index 0000000..45c0268 --- /dev/null +++ b/src/app/views/material-components/mat-kits/mat-kits.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MatKitsComponent } from './mat-kits.component'; + +describe('MatKitsComponent', () => { + let component: MatKitsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MatKitsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MatKitsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/material-components/mat-kits/mat-kits.component.ts b/src/app/views/material-components/mat-kits/mat-kits.component.ts new file mode 100644 index 0000000..d6449a0 --- /dev/null +++ b/src/app/views/material-components/mat-kits/mat-kits.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-mat-kits', + templateUrl: './mat-kits.component.html', + styleUrls: ['./mat-kits.component.scss'] +}) +export class MatKitsComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/views/material-components/material-components-routing.module.ts b/src/app/views/material-components/material-components-routing.module.ts new file mode 100644 index 0000000..3813993 --- /dev/null +++ b/src/app/views/material-components/material-components-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { MatKitsComponent } from '../material-components/mat-kits/mat-kits.component'; + + +const routes: Routes = [ + { + path: '', + component: MatKitsComponent + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], +exports: [RouterModule] +}) +export class MaterialComponentsRoutingModule { } diff --git a/src/app/views/material-components/material-components.module.ts b/src/app/views/material-components/material-components.module.ts new file mode 100644 index 0000000..8d41179 --- /dev/null +++ b/src/app/views/material-components/material-components.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { MaterialComponentsRoutingModule } from './material-components-routing.module'; +import { MatKitsComponent } from './mat-kits/mat-kits.component'; +import { SharedMaterialModule } from '../../shared/shared-material.module'; + + +@NgModule({ + declarations: [MatKitsComponent], + imports: [ + CommonModule, + SharedMaterialModule, + MaterialComponentsRoutingModule + ] +}) +export class MaterialComponentsModule { } diff --git a/src/app/views/order/order-cost-list/order-cost-list.component.html b/src/app/views/order/order-cost-list/order-cost-list.component.html new file mode 100644 index 0000000..8c27a76 --- /dev/null +++ b/src/app/views/order/order-cost-list/order-cost-list.component.html @@ -0,0 +1,3 @@ +

+ order-cost-list works! +

diff --git a/src/app/views/order/order-cost-list/order-cost-list.component.scss b/src/app/views/order/order-cost-list/order-cost-list.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/order/order-cost-list/order-cost-list.component.spec.ts b/src/app/views/order/order-cost-list/order-cost-list.component.spec.ts new file mode 100644 index 0000000..8244014 --- /dev/null +++ b/src/app/views/order/order-cost-list/order-cost-list.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OrderCostListComponent } from './order-cost-list.component'; + +describe('OrderCostListComponent', () => { + let component: OrderCostListComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ OrderCostListComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OrderCostListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/order/order-cost-list/order-cost-list.component.ts b/src/app/views/order/order-cost-list/order-cost-list.component.ts new file mode 100644 index 0000000..6435803 --- /dev/null +++ b/src/app/views/order/order-cost-list/order-cost-list.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-order-cost-list', + templateUrl: './order-cost-list.component.html', + styleUrls: ['./order-cost-list.component.scss'] +}) +export class OrderCostListComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/views/order/order-detail/order-detail.component.html b/src/app/views/order/order-detail/order-detail.component.html new file mode 100644 index 0000000..a160895 --- /dev/null +++ b/src/app/views/order/order-detail/order-detail.component.html @@ -0,0 +1,4 @@ +

+ order-detail works! +

+ \ No newline at end of file diff --git a/src/app/views/order/order-detail/order-detail.component.scss b/src/app/views/order/order-detail/order-detail.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/order/order-detail/order-detail.component.spec.ts b/src/app/views/order/order-detail/order-detail.component.spec.ts new file mode 100644 index 0000000..a5478ce --- /dev/null +++ b/src/app/views/order/order-detail/order-detail.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OrderDetailComponent } from './order-detail.component'; + +describe('OrderDetailComponent', () => { + let component: OrderDetailComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ OrderDetailComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OrderDetailComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/order/order-detail/order-detail.component.ts b/src/app/views/order/order-detail/order-detail.component.ts new file mode 100644 index 0000000..73f5850 --- /dev/null +++ b/src/app/views/order/order-detail/order-detail.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-order-detail', + templateUrl: './order-detail.component.html', + styleUrls: ['./order-detail.component.scss'] +}) +export class OrderDetailComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/views/order/order-list/order-list.component.html b/src/app/views/order/order-list/order-list.component.html new file mode 100644 index 0000000..7fbfc24 --- /dev/null +++ b/src/app/views/order/order-list/order-list.component.html @@ -0,0 +1,5 @@ +

+ order-list works! +

+ + diff --git a/src/app/views/order/order-list/order-list.component.scss b/src/app/views/order/order-list/order-list.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/order/order-list/order-list.component.spec.ts b/src/app/views/order/order-list/order-list.component.spec.ts new file mode 100644 index 0000000..2688bcf --- /dev/null +++ b/src/app/views/order/order-list/order-list.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OrderListComponent } from './order-list.component'; + +describe('OrderListComponent', () => { + let component: OrderListComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ OrderListComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OrderListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/order/order-list/order-list.component.ts b/src/app/views/order/order-list/order-list.component.ts new file mode 100644 index 0000000..1b406f6 --- /dev/null +++ b/src/app/views/order/order-list/order-list.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-order-list', + templateUrl: './order-list.component.html', + styleUrls: ['./order-list.component.scss'] +}) +export class OrderListComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/views/order/order-routing.module.ts b/src/app/views/order/order-routing.module.ts new file mode 100644 index 0000000..f1b3044 --- /dev/null +++ b/src/app/views/order/order-routing.module.ts @@ -0,0 +1,33 @@ +import { NgModule } from "@angular/core"; +import { Routes, RouterModule } from "@angular/router"; +import { OrderCostListComponent } from "./order-cost-list/order-cost-list.component"; +import { OrderDetailComponent } from "./order-detail/order-detail.component"; +import { OrderListComponent } from "./order-list/order-list.component"; + +const routes: Routes = [ + { + path: "", + component: OrderListComponent + }, + { + path: ":id", + data: { title: "Order Details", breadcrumb: "Order id: {{id}}" }, + children: [ + { + path: "", + component: OrderDetailComponent + }, + { + path: "costs", + component: OrderCostListComponent, + data: { title: "Costs", breadcrumb: "Costs" } + } + ] + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class OrderRoutingModule {} diff --git a/src/app/views/order/order.module.ts b/src/app/views/order/order.module.ts new file mode 100644 index 0000000..2a18b0e --- /dev/null +++ b/src/app/views/order/order.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; + +import { OrderRoutingModule } from "./order-routing.module"; +import { OrderListComponent } from "./order-list/order-list.component"; +import { OrderDetailComponent } from "./order-detail/order-detail.component"; +import { OrderCostListComponent } from "./order-cost-list/order-cost-list.component"; +import { SharedMaterialModule } from "app/shared/shared-material.module"; + +@NgModule({ + declarations: [ + OrderListComponent, + OrderDetailComponent, + OrderCostListComponent + ], + imports: [CommonModule, SharedMaterialModule, OrderRoutingModule] +}) +export class OrderModule {} diff --git a/src/app/views/order/order.service.ts b/src/app/views/order/order.service.ts new file mode 100644 index 0000000..c20ec33 --- /dev/null +++ b/src/app/views/order/order.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class OrderService { + + constructor() { } +} diff --git a/src/app/views/others/app-blank/app-blank.component.css b/src/app/views/others/app-blank/app-blank.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/others/app-blank/app-blank.component.html b/src/app/views/others/app-blank/app-blank.component.html new file mode 100644 index 0000000..ce7090c --- /dev/null +++ b/src/app/views/others/app-blank/app-blank.component.html @@ -0,0 +1,3 @@ +

+ This is a blank component. +

diff --git a/src/app/views/others/app-blank/app-blank.component.ts b/src/app/views/others/app-blank/app-blank.component.ts new file mode 100644 index 0000000..9dfb754 --- /dev/null +++ b/src/app/views/others/app-blank/app-blank.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-blank', + templateUrl: './app-blank.component.html', + styleUrls: ['./app-blank.component.css'] +}) +export class AppBlankComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/views/others/others.module.ts b/src/app/views/others/others.module.ts new file mode 100644 index 0000000..5b60e73 --- /dev/null +++ b/src/app/views/others/others.module.ts @@ -0,0 +1,42 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatChipsModule } from '@angular/material/chips'; +import { MatGridListModule } from '@angular/material/grid-list'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatListModule } from '@angular/material/list'; +import { MatMenuModule } from '@angular/material/menu'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; +import { MatRadioModule } from '@angular/material/radio'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { MatTabsModule } from '@angular/material/tabs'; +import { FlexLayoutModule } from '@angular/flex-layout'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; +import { FileUploadModule } from 'ng2-file-upload'; +import { SharedModule } from './../../shared/shared.module'; +import { SharedMaterialModule } from 'app/shared/shared-material.module'; + +import { AppBlankComponent } from './app-blank/app-blank.component'; +import { OthersRoutes } from './others.routing'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + SharedMaterialModule, + FlexLayoutModule, + NgxDatatableModule, + FileUploadModule, + SharedModule, + RouterModule.forChild(OthersRoutes) + ], + declarations: [ + AppBlankComponent + ] +}) +export class OthersModule {} diff --git a/src/app/views/others/others.routing.ts b/src/app/views/others/others.routing.ts new file mode 100644 index 0000000..5fbd070 --- /dev/null +++ b/src/app/views/others/others.routing.ts @@ -0,0 +1,17 @@ +import { Routes } from '@angular/router'; +import { AppBlankComponent } from './app-blank/app-blank.component'; +import { config } from 'config'; +import { UserRoleGuard } from '../../shared/guards/user-role.guard'; + + +export const OthersRoutes: Routes = [ + { + path: '', + children: [{ + path: 'blank', + canActivate: [UserRoleGuard], + component: AppBlankComponent, + data: { title: 'Blank', breadcrumb: 'Blank', roles: config.authRoles.sa } + }] + } +]; \ No newline at end of file diff --git a/src/app/views/search-view/country.service.ts b/src/app/views/search-view/country.service.ts new file mode 100644 index 0000000..8f49b8c --- /dev/null +++ b/src/app/views/search-view/country.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class CountryService { + + constructor( + private http: HttpClient + ) { } + + getCountries(name) { + return this.http.get('https://restcountries.eu/rest/v2/name/'+name); + } +} diff --git a/src/app/views/search-view/result-page/result-page.component.html b/src/app/views/search-view/result-page/result-page.component.html new file mode 100644 index 0000000..087e5e3 --- /dev/null +++ b/src/app/views/search-view/result-page/result-page.component.html @@ -0,0 +1,69 @@ +
+
+ Search result for "{{ searchService.searchTerm$ | async }}" +
+
+ +
+ + + + Flag + + + + + + + + + Name + + + {{ value }} + + + + + + Region + + + {{ value }} + + + + + + Capital + + + {{ value }} + + + + + + Population + + + {{ value }} + + + +
diff --git a/src/app/views/search-view/result-page/result-page.component.scss b/src/app/views/search-view/result-page/result-page.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/search-view/result-page/result-page.component.spec.ts b/src/app/views/search-view/result-page/result-page.component.spec.ts new file mode 100644 index 0000000..4d821d8 --- /dev/null +++ b/src/app/views/search-view/result-page/result-page.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ResultPageComponent } from './result-page.component'; + +describe('ResultPageComponent', () => { + let component: ResultPageComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ResultPageComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ResultPageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/search-view/result-page/result-page.component.ts b/src/app/views/search-view/result-page/result-page.component.ts new file mode 100644 index 0000000..2800e9d --- /dev/null +++ b/src/app/views/search-view/result-page/result-page.component.ts @@ -0,0 +1,32 @@ +import { Component, OnInit, OnDestroy } from "@angular/core"; +import { SearchService } from "app/shared/search/search.service"; +import { Observable, Subscription } from "rxjs"; +import { CountryService } from "../country.service"; + +@Component({ + selector: "app-result-page", + templateUrl: "./result-page.component.html", + styleUrls: ["./result-page.component.scss"] +}) +export class ResultPageComponent implements OnInit, OnDestroy { + countries$: Observable; + searchTermSub: Subscription; + + constructor( + public searchService: SearchService, + public countryService: CountryService + ) {} + + ngOnInit() { + this.searchTermSub = this.searchService.searchTerm$.subscribe(term => { + this.countries$ = this.countryService.getCountries(term); + }); + } + + ngOnDestroy() { + if (this.searchTermSub) { + this.searchTermSub.unsubscribe(); + } + } + +} diff --git a/src/app/views/search-view/search-view-routing.module.ts b/src/app/views/search-view/search-view-routing.module.ts new file mode 100644 index 0000000..c7aaf87 --- /dev/null +++ b/src/app/views/search-view/search-view-routing.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { ResultPageComponent } from './result-page/result-page.component'; + +const routes: Routes = [ + { + path: '', + component: ResultPageComponent + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class SearchViewRoutingModule { } diff --git a/src/app/views/search-view/search-view.module.ts b/src/app/views/search-view/search-view.module.ts new file mode 100644 index 0000000..89aabc0 --- /dev/null +++ b/src/app/views/search-view/search-view.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; + +import { SearchViewRoutingModule } from "./search-view-routing.module"; +import { ResultPageComponent } from "./result-page/result-page.component"; +import { MatCardModule } from "@angular/material/card"; +import { SearchModule } from "app/shared/search/search.module"; +import { NgxDatatableModule } from "@swimlane/ngx-datatable"; + +@NgModule({ + declarations: [ResultPageComponent], + imports: [MatCardModule, CommonModule, NgxDatatableModule, SearchViewRoutingModule] +}) +export class SearchViewModule {} diff --git a/src/app/views/sessions/error/error.component.css b/src/app/views/sessions/error/error.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/sessions/error/error.component.html b/src/app/views/sessions/error/error.component.html new file mode 100644 index 0000000..f86272f --- /dev/null +++ b/src/app/views/sessions/error/error.component.html @@ -0,0 +1,22 @@ +
+
+
+ warning +
+

500

+
Server Error!
+
+
+ +
+ + +
+
+
diff --git a/src/app/views/sessions/error/error.component.ts b/src/app/views/sessions/error/error.component.ts new file mode 100644 index 0000000..725b557 --- /dev/null +++ b/src/app/views/sessions/error/error.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-error', + templateUrl: './error.component.html', + styleUrls: ['./error.component.css'] +}) +export class ErrorComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/views/sessions/forgot-password/forgot-password.component.css b/src/app/views/sessions/forgot-password/forgot-password.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/sessions/forgot-password/forgot-password.component.html b/src/app/views/sessions/forgot-password/forgot-password.component.html new file mode 100644 index 0000000..0f27b0e --- /dev/null +++ b/src/app/views/sessions/forgot-password/forgot-password.component.html @@ -0,0 +1,39 @@ +
+
+ + + +
+ +

New password will be sent to your email address

+
+
+ +
+ + + + Email is required +
+ + + +
+
+
+
+
+ diff --git a/src/app/views/sessions/forgot-password/forgot-password.component.ts b/src/app/views/sessions/forgot-password/forgot-password.component.ts new file mode 100644 index 0000000..f257749 --- /dev/null +++ b/src/app/views/sessions/forgot-password/forgot-password.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatButton } from '@angular/material/button'; +import { MatProgressBar } from '@angular/material/progress-bar'; +@Component({ + selector: 'app-forgot-password', + templateUrl: './forgot-password.component.html', + styleUrls: ['./forgot-password.component.css'] +}) +export class ForgotPasswordComponent implements OnInit { + userEmail; + @ViewChild(MatProgressBar) progressBar: MatProgressBar; + @ViewChild(MatButton) submitButton: MatButton; + constructor() { } + + ngOnInit() { + } + submitEmail() { + this.submitButton.disabled = true; + this.progressBar.mode = 'indeterminate'; + } +} diff --git a/src/app/views/sessions/lockscreen/lockscreen.component.css b/src/app/views/sessions/lockscreen/lockscreen.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/sessions/lockscreen/lockscreen.component.html b/src/app/views/sessions/lockscreen/lockscreen.component.html new file mode 100644 index 0000000..5551baa --- /dev/null +++ b/src/app/views/sessions/lockscreen/lockscreen.component.html @@ -0,0 +1,37 @@ +
+
+ + + +
+
+ +
John Doe
+ Last seen 1 hour ago +
+
+
+ + + + Password is required +
+ + + +
+
+
+
+
+
+ diff --git a/src/app/views/sessions/lockscreen/lockscreen.component.ts b/src/app/views/sessions/lockscreen/lockscreen.component.ts new file mode 100644 index 0000000..1fb7805 --- /dev/null +++ b/src/app/views/sessions/lockscreen/lockscreen.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { MatButton } from '@angular/material/button'; +import { MatProgressBar } from '@angular/material/progress-bar'; + +@Component({ + selector: 'app-lockscreen', + templateUrl: './lockscreen.component.html', + styleUrls: ['./lockscreen.component.css'] +}) +export class LockscreenComponent implements OnInit { + @ViewChild(MatProgressBar) progressBar: MatProgressBar; + @ViewChild(MatButton) submitButton: MatButton; + + lockscreenData = { + password: '' + } + + constructor() { } + + ngOnInit() { + } + + unlock() { + console.log(this.lockscreenData); + + this.submitButton.disabled = true; + this.progressBar.mode = 'indeterminate'; + } +} diff --git a/src/app/views/sessions/not-found/not-found.component.css b/src/app/views/sessions/not-found/not-found.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/sessions/not-found/not-found.component.html b/src/app/views/sessions/not-found/not-found.component.html new file mode 100644 index 0000000..f7c90fe --- /dev/null +++ b/src/app/views/sessions/not-found/not-found.component.html @@ -0,0 +1,23 @@ +
+
+
+ error +
+

404

+
Page Not Found!
+
+
+ +
+ + + +
+
+
diff --git a/src/app/views/sessions/not-found/not-found.component.ts b/src/app/views/sessions/not-found/not-found.component.ts new file mode 100644 index 0000000..029bd54 --- /dev/null +++ b/src/app/views/sessions/not-found/not-found.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-not-found', + templateUrl: './not-found.component.html', + styleUrls: ['./not-found.component.css'] +}) +export class NotFoundComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/views/sessions/sessions.module.ts b/src/app/views/sessions/sessions.module.ts new file mode 100644 index 0000000..2afb71e --- /dev/null +++ b/src/app/views/sessions/sessions.module.ts @@ -0,0 +1,41 @@ +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; +import { SharedMaterialModule } from '../../shared/shared-material.module'; + +import { FlexLayoutModule } from '@angular/flex-layout'; +import { SharedComponentsModule } from '../../shared/components/shared-components.module'; + +// import { CommonDirectivesModule } from './sdirectives/common/common-directives.module'; +import { ForgotPasswordComponent } from './forgot-password/forgot-password.component'; +import { LockscreenComponent } from './lockscreen/lockscreen.component'; +import { SigninComponent } from './signin/signin.component'; +import { SignupComponent } from './signup/signup.component'; +import { SessionsRoutes } from './sessions.routing'; +import { NotFoundComponent } from './not-found/not-found.component'; +import { ErrorComponent } from './error/error.component'; + + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + SharedMaterialModule, + SharedComponentsModule, + FlexLayoutModule, + PerfectScrollbarModule, + RouterModule.forChild(SessionsRoutes), + ], + declarations: [ + ForgotPasswordComponent, + LockscreenComponent, + SigninComponent, + SignupComponent, + NotFoundComponent, + ErrorComponent + ], +}) +export class SessionsModule {} diff --git a/src/app/views/sessions/sessions.routing.ts b/src/app/views/sessions/sessions.routing.ts new file mode 100644 index 0000000..6e57ef3 --- /dev/null +++ b/src/app/views/sessions/sessions.routing.ts @@ -0,0 +1,47 @@ +import { Routes } from "@angular/router"; + +import { ForgotPasswordComponent } from "./forgot-password/forgot-password.component"; +import { LockscreenComponent } from "./lockscreen/lockscreen.component"; +import { SigninComponent } from "./signin/signin.component"; +import { SignupComponent } from "./signup/signup.component"; +import { NotFoundComponent } from "./not-found/not-found.component"; +import { ErrorComponent } from "./error/error.component"; + + +export const SessionsRoutes: Routes = [ + { + path: "", + children: [ + { + path: "signup", + component: SignupComponent, + data: { title: "Signup" }, + }, + { + path: "signin", + component: SigninComponent, + data: { title: "Signin" }, + }, + { + path: "forgot-password", + component: ForgotPasswordComponent, + data: { title: "Forgot password" }, + }, + { + path: "lockscreen", + component: LockscreenComponent, + data: { title: "Lockscreen" }, + }, + { + path: "404", + component: NotFoundComponent, + data: { title: "Not Found" }, + }, + { + path: "error", + component: ErrorComponent, + data: { title: "Error" }, + }, + ], + }, +]; diff --git a/src/app/views/sessions/signin/signin.component.html b/src/app/views/sessions/signin/signin.component.html new file mode 100644 index 0000000..b7299d4 --- /dev/null +++ b/src/app/views/sessions/signin/signin.component.html @@ -0,0 +1,94 @@ +
+
+ +
+
+ +
+
+ + +
+
+ + Email + + + + + Password + + + + Remember this computer + +
+ Sign in + or + Sign Up +
+ + +
+
+
+
diff --git a/src/app/views/sessions/signin/signin.component.scss b/src/app/views/sessions/signin/signin.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/sessions/signin/signin.component.spec.ts b/src/app/views/sessions/signin/signin.component.spec.ts new file mode 100644 index 0000000..4f50c36 --- /dev/null +++ b/src/app/views/sessions/signin/signin.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SigninComponent } from './signin.component'; + +describe('Signin4Component', () => { + let component: SigninComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SigninComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SigninComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/sessions/signin/signin.component.ts b/src/app/views/sessions/signin/signin.component.ts new file mode 100644 index 0000000..badcfec --- /dev/null +++ b/src/app/views/sessions/signin/signin.component.ts @@ -0,0 +1,87 @@ +import { Component, OnInit, AfterViewInit } from '@angular/core'; +import { + FormGroup, + FormBuilder, + Validators, + FormControl +} from '@angular/forms'; +import { CustomValidators } from 'ngx-custom-validators'; +import { matxAnimations } from 'app/shared/animations/matx-animations'; +import { JwtAuthService } from 'app/shared/services/auth/jwt-auth.service'; +import { AppLoaderService } from 'app/shared/services/app-loader/app-loader.service'; +import { Router, ActivatedRoute } from '@angular/router'; +import { Subject } from 'rxjs'; +import { takeUntil } from 'rxjs/operators'; + +@Component({ + selector: 'app-signin', + templateUrl: './signin.component.html', + styleUrls: ['./signin.component.scss'], + animations: matxAnimations +}) +export class SigninComponent implements OnInit, AfterViewInit { + signinForm: FormGroup; + errorMsg = ''; + return: string; + loading: Boolean; + + private _unsubscribeAll: Subject; + + constructor( + private jwtAuth: JwtAuthService, + private matxLoader: AppLoaderService, + private router: Router, + private route: ActivatedRoute + ) { + this._unsubscribeAll = new Subject(); + } + + ngOnInit() { + this.signinForm = new FormGroup({ + username: new FormControl('Watson', Validators.required), + password: new FormControl('12345678', Validators.required), + rememberMe: new FormControl(true) + }); + + this.route.queryParams + .pipe(takeUntil(this._unsubscribeAll)) + .subscribe(params => this.return = params['return'] || '/'); + } + + ngAfterViewInit() { + // setTimeout(() => { + //this.autoSignIn(); + // }) + } + + // tslint:disable-next-line: use-lifecycle-interface + ngOnDestroy() { + this._unsubscribeAll.next(); + this._unsubscribeAll.complete(); + } + + signin() { + const signinData = this.signinForm.value; + this.loading = true; + this.jwtAuth.signin(signinData.username, signinData.password) + .subscribe(response => { + this.loading = false; + this.router.navigateByUrl(this.return); + }, err => { + this.loading = false; + this.errorMsg = err.message; + }) + } + + autoSignIn() { + if (this.return === '/') { + return; + } + this.matxLoader.open(`Automatically Signing you in! \n Return url: ${this.return.substring(0, 20)}...`, {width: '320px'}); + setTimeout(() => { + this.signin(); + console.log('autoSignIn'); + this.matxLoader.close(); + }, 2000); + } +} diff --git a/src/app/views/sessions/signup/signup.component.html b/src/app/views/sessions/signup/signup.component.html new file mode 100644 index 0000000..d7f70fe --- /dev/null +++ b/src/app/views/sessions/signup/signup.component.html @@ -0,0 +1,85 @@ +
+
+ + +
+ +
+ +
+ +
+ + +
+
+ + + Username + + + + + Email + + + + + Password + + + + I agree with terms and conditions + +
+ + or + Sign In +
+ + + +
+
+
+
diff --git a/src/app/views/sessions/signup/signup.component.scss b/src/app/views/sessions/signup/signup.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/sessions/signup/signup.component.spec.ts b/src/app/views/sessions/signup/signup.component.spec.ts new file mode 100644 index 0000000..43e46a5 --- /dev/null +++ b/src/app/views/sessions/signup/signup.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SignupComponent } from './signup.component'; + +describe('SignupComponent', () => { + let component: SignupComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SignupComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SignupComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/sessions/signup/signup.component.ts b/src/app/views/sessions/signup/signup.component.ts new file mode 100644 index 0000000..7045445 --- /dev/null +++ b/src/app/views/sessions/signup/signup.component.ts @@ -0,0 +1,43 @@ +import { Component, OnInit } from '@angular/core'; +import { + Validators, + FormControl, + FormBuilder, + FormGroup +} from '@angular/forms'; +import { CustomValidators } from 'ngx-custom-validators'; +import { matxAnimations } from 'app/shared/animations/matx-animations'; + +@Component({ + selector: 'app-signup', + templateUrl: './signup.component.html', + styleUrls: ['./signup.component.scss'], + animations: matxAnimations +}) +export class SignupComponent implements OnInit { + signupForm: FormGroup; + + constructor(private fb: FormBuilder) {} + + ngOnInit() { + const password = new FormControl('', Validators.required); + const confirmPassword = new FormControl( + '', + //CustomValidators.equalTo(password) + ); + + this.signupForm = this.fb.group({ + username: ['', Validators.required], + email: ['', [Validators.required, Validators.email]], + password: password, + agreed: [false, Validators.required] + }); + } + + onSubmit() { + if (!this.signupForm.invalid) { + // do what you wnat with your data + console.log(this.signupForm.value); + } + } +} diff --git a/src/app/views/tables/material-table/material-table.component.html b/src/app/views/tables/material-table/material-table.component.html new file mode 100644 index 0000000..a825579 --- /dev/null +++ b/src/app/views/tables/material-table/material-table.component.html @@ -0,0 +1,41 @@ +
+
+ + + + ID + {{row.id}} + + + + Progress + {{row.age}} + + + + Name + {{row.name}} + + + + Gender + {{row.gender}} + + + + Company + {{row.company}} + + + + Company + {{row.email}} + + + + + + + +
+
diff --git a/src/app/views/tables/material-table/material-table.component.scss b/src/app/views/tables/material-table/material-table.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/tables/material-table/material-table.component.spec.ts b/src/app/views/tables/material-table/material-table.component.spec.ts new file mode 100644 index 0000000..a3338d2 --- /dev/null +++ b/src/app/views/tables/material-table/material-table.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MaterialTableComponent } from './material-table.component'; + +describe('MaterialTableComponent', () => { + let component: MaterialTableComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MaterialTableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MaterialTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/views/tables/material-table/material-table.component.ts b/src/app/views/tables/material-table/material-table.component.ts new file mode 100644 index 0000000..4bfe375 --- /dev/null +++ b/src/app/views/tables/material-table/material-table.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { TablesService } from '../tables.service'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; + +@Component({ + selector: 'app-material-table', + templateUrl: './material-table.component.html', + styleUrls: ['./material-table.component.scss'] +}) +export class MaterialTableComponent implements OnInit { + @ViewChild(MatPaginator) paginator: MatPaginator; + @ViewChild(MatSort) sort: MatSort; + + displayedColumns: string[] = []; + dataSource: any; + + constructor(private tableService: TablesService) { } + + ngOnInit() { + this.displayedColumns = this.tableService.getDataConf().map((c) => c.prop) + this.dataSource = new MatTableDataSource(this.tableService.getAll()); + } + ngAfterViewInit() { + this.dataSource.paginator = this.paginator; + this.dataSource.sort = this.sort; + } + +} diff --git a/src/app/views/tables/tables.module.ts b/src/app/views/tables/tables.module.ts new file mode 100644 index 0000000..110ca28 --- /dev/null +++ b/src/app/views/tables/tables.module.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { MatInputModule } from '@angular/material/input'; +import { MatPaginatorModule } from '@angular/material/paginator'; +import { MatSortModule } from '@angular/material/sort'; +import { MatTableDataSource, MatTableModule } from '@angular/material/table'; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; + +import { TablesRoutes } from './tables.routing'; +import { MaterialTableComponent } from './material-table/material-table.component'; + +@NgModule({ + imports: [ + CommonModule, + MatInputModule, + MatPaginatorModule, + MatSortModule, + MatTableModule, + NgxDatatableModule, + RouterModule.forChild(TablesRoutes) + ], + declarations: [MaterialTableComponent] +}) +export class TablesModule { } diff --git a/src/app/views/tables/tables.routing.ts b/src/app/views/tables/tables.routing.ts new file mode 100644 index 0000000..32e2738 --- /dev/null +++ b/src/app/views/tables/tables.routing.ts @@ -0,0 +1,13 @@ +import { Routes } from '@angular/router'; +import { MaterialTableComponent } from './material-table/material-table.component'; + +export const TablesRoutes: Routes = [ + { + path: '', + children: [{ + path: 'mat-table', + component: MaterialTableComponent, + data: { title: 'Material TAble', breadcrumb: 'Material Table' } + }] + } +]; diff --git a/src/app/views/tables/tables.service.ts b/src/app/views/tables/tables.service.ts new file mode 100644 index 0000000..9b21b4c --- /dev/null +++ b/src/app/views/tables/tables.service.ts @@ -0,0 +1,640 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class TablesService { + constructor() { } + getDataConf() { + return [ + { + prop: 'id' + }, + { + prop: 'age', + name: 'Age' + }, + { + prop: 'name', + name: 'Name' + }, + { + prop: 'gender', + name: 'Gender' + }, + { + prop: 'company', + name: 'Company' + }, + { + prop: 'email', + name: 'Email' + } + ]; + } + getAll() { + return [ + { + 'id': 0, + 'age': 40, + 'name': 'Mclean Brady', + 'gender': 'male', + 'company': 'JAMNATION', + 'email': 'mcleanbrady@jamnation.com', + 'phone': '+1 (875) 472-2061', + 'registered': '2014-10-20T04:54:00 -06:00' + }, + { + 'id': 1, + 'age': 39, + 'name': 'Dillon Ruiz', + 'gender': 'male', + 'company': 'ACRODANCE', + 'email': 'dillonruiz@acrodance.com', + 'phone': '+1 (858) 562-2261', + 'registered': '2016-08-07T12:15:31 -06:00' + }, + { + 'id': 2, + 'age': 39, + 'name': 'Robyn Knox', + 'gender': 'female', + 'company': 'GLUID', + 'email': 'robynknox@gluid.com', + 'phone': '+1 (826) 491-3098', + 'registered': '2017-02-12T02:43:39 -06:00' + }, + { + 'id': 3, + 'age': 32, + 'name': 'Santana Wagner', + 'gender': 'male', + 'company': 'INTRADISK', + 'email': 'santanawagner@intradisk.com', + 'phone': '+1 (841) 550-2276', + 'registered': '2016-03-28T11:22:15 -06:00' + }, + { + 'id': 4, + 'age': 34, + 'name': 'Jennie Branch', + 'gender': 'female', + 'company': 'VERAQ', + 'email': 'jenniebranch@veraq.com', + 'phone': '+1 (895) 483-3982', + 'registered': '2015-03-16T01:30:06 -06:00' + }, + { + 'id': 5, + 'age': 39, + 'name': 'Farrell Preston', + 'gender': 'male', + 'company': 'HONOTRON', + 'email': 'farrellpreston@honotron.com', + 'phone': '+1 (993) 534-2843', + 'registered': '2015-08-14T09:07:47 -06:00' + }, + { + 'id': 6, + 'age': 38, + 'name': 'Garner Reyes', + 'gender': 'male', + 'company': 'VIOCULAR', + 'email': 'garnerreyes@viocular.com', + 'phone': '+1 (973) 495-3873', + 'registered': '2016-03-23T03:47:23 -06:00' + }, + { + 'id': 7, + 'age': 32, + 'name': 'Ella Boone', + 'gender': 'female', + 'company': 'ARCHITAX', + 'email': 'ellaboone@architax.com', + 'phone': '+1 (945) 491-2580', + 'registered': '2015-07-01T09:35:10 -06:00' + }, + { + 'id': 8, + 'age': 30, + 'name': 'Kathryn Owens', + 'gender': 'female', + 'company': 'CYCLONICA', + 'email': 'kathrynowens@cyclonica.com', + 'phone': '+1 (978) 598-2767', + 'registered': '2014-03-11T11:38:12 -06:00' + }, + { + 'id': 9, + 'age': 22, + 'name': 'Byers Santana', + 'gender': 'male', + 'company': 'KAGGLE', + 'email': 'byerssantana@kaggle.com', + 'phone': '+1 (984) 546-3400', + 'registered': '2015-08-17T02:48:09 -06:00' + }, + { + 'id': 10, + 'age': 30, + 'name': 'Nina Middleton', + 'gender': 'female', + 'company': 'ZINCA', + 'email': 'ninamiddleton@zinca.com', + 'phone': '+1 (829) 553-2060', + 'registered': '2014-12-20T09:53:27 -06:00' + }, + { + 'id': 11, + 'age': 38, + 'name': 'Nixon Morrow', + 'gender': 'male', + 'company': 'CUBIX', + 'email': 'nixonmorrow@cubix.com', + 'phone': '+1 (825) 501-3712', + 'registered': '2014-09-10T10:23:34 -06:00' + }, + { + 'id': 12, + 'age': 28, + 'name': 'Bonita Pate', + 'gender': 'female', + 'company': 'MAGNEATO', + 'email': 'bonitapate@magneato.com', + 'phone': '+1 (808) 497-3968', + 'registered': '2016-01-20T02:45:43 -06:00' + }, + { + 'id': 13, + 'age': 30, + 'name': 'Amy Hyde', + 'gender': 'female', + 'company': 'UNDERTAP', + 'email': 'amyhyde@undertap.com', + 'phone': '+1 (867) 555-2669', + 'registered': '2015-04-12T08:39:31 -06:00' + }, + { + 'id': 14, + 'age': 20, + 'name': 'Cortez Camacho', + 'gender': 'male', + 'company': 'IDEGO', + 'email': 'cortezcamacho@idego.com', + 'phone': '+1 (986) 546-3364', + 'registered': '2014-08-21T11:00:20 -06:00' + }, + { + 'id': 15, + 'age': 29, + 'name': 'Castaneda Armstrong', + 'gender': 'male', + 'company': 'INTERFIND', + 'email': 'castanedaarmstrong@interfind.com', + 'phone': '+1 (975) 557-2651', + 'registered': '2014-11-15T10:38:24 -06:00' + }, + { + 'id': 16, + 'age': 37, + 'name': 'Liza West', + 'gender': 'female', + 'company': 'COWTOWN', + 'email': 'lizawest@cowtown.com', + 'phone': '+1 (852) 415-2358', + 'registered': '2017-05-06T09:46:03 -06:00' + }, + { + 'id': 17, + 'age': 37, + 'name': 'Roth Baird', + 'gender': 'male', + 'company': 'RODEMCO', + 'email': 'rothbaird@rodemco.com', + 'phone': '+1 (840) 417-3313', + 'registered': '2015-04-18T10:58:50 -06:00' + }, + { + 'id': 18, + 'age': 26, + 'name': 'Alexis Blackburn', + 'gender': 'female', + 'company': 'PREMIANT', + 'email': 'alexisblackburn@premiant.com', + 'phone': '+1 (957) 576-2362', + 'registered': '2014-08-08T12:59:38 -06:00' + }, + { + 'id': 19, + 'age': 35, + 'name': 'Sadie Tillman', + 'gender': 'female', + 'company': 'DUOFLEX', + 'email': 'sadietillman@duoflex.com', + 'phone': '+1 (843) 499-3330', + 'registered': '2016-02-21T09:25:03 -06:00' + }, + { + 'id': 20, + 'age': 27, + 'name': 'Sharron Conley', + 'gender': 'female', + 'company': 'QUARMONY', + 'email': 'sharronconley@quarmony.com', + 'phone': '+1 (951) 459-2465', + 'registered': '2014-10-19T06:04:36 -06:00' + }, + { + 'id': 21, + 'age': 27, + 'name': 'Jordan Mccoy', + 'gender': 'male', + 'company': 'ACCUSAGE', + 'email': 'jordanmccoy@accusage.com', + 'phone': '+1 (825) 568-3296', + 'registered': '2017-01-27T01:53:02 -06:00' + }, + { + 'id': 22, + 'age': 35, + 'name': 'Rene House', + 'gender': 'female', + 'company': 'INSURETY', + 'email': 'renehouse@insurety.com', + 'phone': '+1 (838) 578-3190', + 'registered': '2015-11-07T10:07:58 -06:00' + }, + { + 'id': 23, + 'age': 38, + 'name': 'Bernice Berry', + 'gender': 'female', + 'company': 'ROCKYARD', + 'email': 'berniceberry@rockyard.com', + 'phone': '+1 (885) 466-2145', + 'registered': '2014-04-17T07:43:02 -06:00' + }, + { + 'id': 24, + 'age': 30, + 'name': 'Bowen Beach', + 'gender': 'male', + 'company': 'TETRATREX', + 'email': 'bowenbeach@tetratrex.com', + 'phone': '+1 (843) 493-3197', + 'registered': '2015-07-27T03:38:33 -06:00' + }, + { + 'id': 25, + 'age': 31, + 'name': 'Monica Leblanc', + 'gender': 'female', + 'company': 'TALENDULA', + 'email': 'monicaleblanc@talendula.com', + 'phone': '+1 (911) 524-2349', + 'registered': '2016-04-10T08:33:17 -06:00' + }, + { + 'id': 26, + 'age': 36, + 'name': 'Lina Rivas', + 'gender': 'female', + 'company': 'BOINK', + 'email': 'linarivas@boink.com', + 'phone': '+1 (983) 572-2470', + 'registered': '2014-08-28T09:44:32 -06:00' + }, + { + 'id': 27, + 'age': 25, + 'name': 'Joyce Yang', + 'gender': 'female', + 'company': 'SPORTAN', + 'email': 'joyceyang@sportan.com', + 'phone': '+1 (807) 491-3917', + 'registered': '2015-07-22T12:58:31 -06:00' + }, + { + 'id': 28, + 'age': 20, + 'name': 'Lana Joseph', + 'gender': 'female', + 'company': 'BOLAX', + 'email': 'lanajoseph@bolax.com', + 'phone': '+1 (942) 467-2363', + 'registered': '2016-10-30T06:13:50 -06:00' + }, + { + 'id': 29, + 'age': 20, + 'name': 'Jimenez Guerrero', + 'gender': 'male', + 'company': 'INSURON', + 'email': 'jimenezguerrero@insuron.com', + 'phone': '+1 (991) 585-3706', + 'registered': '2016-09-15T01:35:16 -06:00' + }, + { + 'id': 30, + 'age': 35, + 'name': 'Williams Bentley', + 'gender': 'male', + 'company': 'ZEAM', + 'email': 'williamsbentley@zeam.com', + 'phone': '+1 (837) 490-2610', + 'registered': '2014-01-06T01:04:11 -06:00' + }, + { + 'id': 31, + 'age': 27, + 'name': 'Doreen Garrett', + 'gender': 'female', + 'company': 'ENERSAVE', + 'email': 'doreengarrett@enersave.com', + 'phone': '+1 (920) 522-2847', + 'registered': '2017-01-25T03:24:47 -06:00' + }, + { + 'id': 32, + 'age': 34, + 'name': 'Shaw Cannon', + 'gender': 'male', + 'company': 'EBIDCO', + 'email': 'shawcannon@ebidco.com', + 'phone': '+1 (903) 530-2676', + 'registered': '2014-04-11T04:49:08 -06:00' + }, + { + 'id': 33, + 'age': 25, + 'name': 'Sonya Skinner', + 'gender': 'female', + 'company': 'EXOSWITCH', + 'email': 'sonyaskinner@exoswitch.com', + 'phone': '+1 (923) 428-3014', + 'registered': '2014-02-09T11:59:54 -06:00' + }, + { + 'id': 34, + 'age': 27, + 'name': 'Todd Potter', + 'gender': 'male', + 'company': 'MUSIX', + 'email': 'toddpotter@musix.com', + 'phone': '+1 (817) 491-2268', + 'registered': '2015-04-06T11:10:47 -06:00' + }, + { + 'id': 35, + 'age': 21, + 'name': 'Celina Rose', + 'gender': 'female', + 'company': 'TWIIST', + 'email': 'celinarose@twiist.com', + 'phone': '+1 (863) 599-2063', + 'registered': '2015-09-04T07:59:29 -06:00' + }, + { + 'id': 36, + 'age': 40, + 'name': 'Ingrid Day', + 'gender': 'female', + 'company': 'ZBOO', + 'email': 'ingridday@zboo.com', + 'phone': '+1 (921) 447-2312', + 'registered': '2016-10-01T08:26:07 -06:00' + }, + { + 'id': 37, + 'age': 24, + 'name': 'Lynch Stark', + 'gender': 'male', + 'company': 'PYRAMIA', + 'email': 'lynchstark@pyramia.com', + 'phone': '+1 (995) 431-2354', + 'registered': '2014-01-26T11:38:48 -06:00' + }, + { + 'id': 38, + 'age': 29, + 'name': 'Helga Mendez', + 'gender': 'female', + 'company': 'COMVEYER', + 'email': 'helgamendez@comveyer.com', + 'phone': '+1 (897) 418-3815', + 'registered': '2015-10-03T08:58:45 -06:00' + }, + { + 'id': 39, + 'age': 30, + 'name': 'Corinne Calhoun', + 'gender': 'female', + 'company': 'ADORNICA', + 'email': 'corinnecalhoun@adornica.com', + 'phone': '+1 (841) 564-3617', + 'registered': '2016-05-24T10:42:36 -06:00' + }, + { + 'id': 40, + 'age': 40, + 'name': 'Winifred Conrad', + 'gender': 'female', + 'company': 'SATIANCE', + 'email': 'winifredconrad@satiance.com', + 'phone': '+1 (885) 533-2416', + 'registered': '2017-03-01T06:12:08 -06:00' + }, + { + 'id': 41, + 'age': 27, + 'name': 'Lawanda Stevenson', + 'gender': 'female', + 'company': 'ZILLACTIC', + 'email': 'lawandastevenson@zillactic.com', + 'phone': '+1 (823) 535-3187', + 'registered': '2014-07-07T05:26:22 -06:00' + }, + { + 'id': 42, + 'age': 30, + 'name': 'Kirsten Long', + 'gender': 'female', + 'company': 'IMAGEFLOW', + 'email': 'kirstenlong@imageflow.com', + 'phone': '+1 (809) 592-2264', + 'registered': '2014-05-08T07:41:56 -06:00' + }, + { + 'id': 43, + 'age': 39, + 'name': 'Summer Farley', + 'gender': 'female', + 'company': 'ENTOGROK', + 'email': 'summerfarley@entogrok.com', + 'phone': '+1 (814) 490-3578', + 'registered': '2016-10-28T10:02:34 -06:00' + }, + { + 'id': 44, + 'age': 31, + 'name': 'Mendoza Randall', + 'gender': 'male', + 'company': 'COREPAN', + 'email': 'mendozarandall@corepan.com', + 'phone': '+1 (846) 501-2860', + 'registered': '2015-12-14T12:58:18 -06:00' + }, + { + 'id': 45, + 'age': 27, + 'name': 'Marcy Doyle', + 'gender': 'female', + 'company': 'VORATAK', + 'email': 'marcydoyle@voratak.com', + 'phone': '+1 (848) 411-2728', + 'registered': '2014-02-12T10:46:27 -06:00' + }, + { + 'id': 46, + 'age': 30, + 'name': 'Burch Walker', + 'gender': 'male', + 'company': 'COMVEYOR', + 'email': 'burchwalker@comveyor.com', + 'phone': '+1 (968) 445-2104', + 'registered': '2014-01-07T05:16:30 -06:00' + }, + { + 'id': 47, + 'age': 31, + 'name': 'Solis Lester', + 'gender': 'male', + 'company': 'MACRONAUT', + 'email': 'solislester@macronaut.com', + 'phone': '+1 (857) 422-3242', + 'registered': '2016-10-20T09:40:51 -06:00' + }, + { + 'id': 48, + 'age': 20, + 'name': 'Lorene Mooney', + 'gender': 'female', + 'company': 'ORGANICA', + 'email': 'lorenemooney@organica.com', + 'phone': '+1 (853) 406-2716', + 'registered': '2015-09-17T03:54:41 -06:00' + }, + { + 'id': 49, + 'age': 34, + 'name': 'Rhodes Vega', + 'gender': 'male', + 'company': 'CHILLIUM', + 'email': 'rhodesvega@chillium.com', + 'phone': '+1 (863) 577-3562', + 'registered': '2016-06-15T05:36:10 -06:00' + }, + { + 'id': 50, + 'age': 28, + 'name': 'Pruitt Merrill', + 'gender': 'male', + 'company': 'KYAGURU', + 'email': 'pruittmerrill@kyaguru.com', + 'phone': '+1 (910) 585-3659', + 'registered': '2017-04-02T09:36:00 -06:00' + }, + { + 'id': 51, + 'age': 33, + 'name': 'Bernadine Hart', + 'gender': 'female', + 'company': 'BITTOR', + 'email': 'bernadinehart@bittor.com', + 'phone': '+1 (906) 446-3518', + 'registered': '2015-11-10T07:45:59 -06:00' + }, + { + 'id': 52, + 'age': 22, + 'name': 'Carver Mckenzie', + 'gender': 'male', + 'company': 'LOCAZONE', + 'email': 'carvermckenzie@locazone.com', + 'phone': '+1 (803) 407-3142', + 'registered': '2015-06-24T07:16:02 -06:00' + }, + { + 'id': 53, + 'age': 27, + 'name': 'Dean Cobb', + 'gender': 'male', + 'company': 'ASSISTIA', + 'email': 'deancobb@assistia.com', + 'phone': '+1 (877) 539-3346', + 'registered': '2016-12-02T01:14:47 -06:00' + }, + { + 'id': 54, + 'age': 32, + 'name': 'Camacho Robinson', + 'gender': 'male', + 'company': 'INSURITY', + 'email': 'camachorobinson@insurity.com', + 'phone': '+1 (929) 430-3079', + 'registered': '2016-12-14T08:59:33 -06:00' + }, + { + 'id': 55, + 'age': 36, + 'name': 'Nancy Rodgers', + 'gender': 'female', + 'company': 'COSMOSIS', + 'email': 'nancyrodgers@cosmosis.com', + 'phone': '+1 (873) 489-2643', + 'registered': '2014-08-21T02:19:28 -06:00' + }, + { + 'id': 56, + 'age': 27, + 'name': 'June Henry', + 'gender': 'female', + 'company': 'PETIGEMS', + 'email': 'junehenry@petigems.com', + 'phone': '+1 (808) 536-2445', + 'registered': '2014-03-28T08:36:27 -06:00' + }, + { + 'id': 57, + 'age': 26, + 'name': 'Rochelle Simmons', + 'gender': 'female', + 'company': 'DANJA', + 'email': 'rochellesimmons@danja.com', + 'phone': '+1 (936) 563-3886', + 'registered': '2015-12-07T08:01:18 -06:00' + }, + { + 'id': 58, + 'age': 32, + 'name': 'Alice Thornton', + 'gender': 'female', + 'company': 'ISOSURE', + 'email': 'alicethornton@isosure.com', + 'phone': '+1 (962) 560-2318', + 'registered': '2015-06-07T08:09:50 -06:00' + }, + { + 'id': 59, + 'age': 39, + 'name': 'Clara Downs', + 'gender': 'female', + 'company': 'ZANILLA', + 'email': 'claradowns@zanilla.com', + 'phone': '+1 (977) 595-2657', + 'registered': '2015-06-14T02:33:33 -06:00' + } + ] + } + +} diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/chart/chart-examples.module.ts b/src/assets/examples/chart/chart-examples.module.ts new file mode 100644 index 0000000..0c6dd3f --- /dev/null +++ b/src/assets/examples/chart/chart-examples.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { CHART_EXAMPLE_COMPONENT_LIST } from '.'; +import { SharedMaterialModule } from 'app/shared/shared-material.module'; +import { NgxEchartsModule } from 'ngx-echarts'; + +@NgModule({ + declarations: [...CHART_EXAMPLE_COMPONENT_LIST], + imports: [ + NgxEchartsModule, + CommonModule, + SharedMaterialModule + ], + exports: [...CHART_EXAMPLE_COMPONENT_LIST], + entryComponents: [...CHART_EXAMPLE_COMPONENT_LIST] +}) +export class ChartExamplesModule { } diff --git a/src/assets/examples/chart/echart-bar/echart-bar.component.html b/src/assets/examples/chart/echart-bar/echart-bar.component.html new file mode 100644 index 0000000..b4cea6a --- /dev/null +++ b/src/assets/examples/chart/echart-bar/echart-bar.component.html @@ -0,0 +1,20 @@ +

Bar chart with zoom option

+
+
+ +
+ +

Bar chart with multiple series option

+
+
+ +
+ +

Cluster bar chart with rotation

+
+
+ +
+ +

Middle bar chart

+
\ No newline at end of file diff --git a/src/assets/examples/chart/echart-bar/echart-bar.component.scss b/src/assets/examples/chart/echart-bar/echart-bar.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/chart/echart-bar/echart-bar.component.spec.ts b/src/assets/examples/chart/echart-bar/echart-bar.component.spec.ts new file mode 100644 index 0000000..2c4f920 --- /dev/null +++ b/src/assets/examples/chart/echart-bar/echart-bar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EchartBarComponent } from './echart-bar.component'; + +describe('EchartBarComponent', () => { + let component: EchartBarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EchartBarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EchartBarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/chart/echart-bar/echart-bar.component.ts b/src/assets/examples/chart/echart-bar/echart-bar.component.ts new file mode 100644 index 0000000..eb6142b --- /dev/null +++ b/src/assets/examples/chart/echart-bar/echart-bar.component.ts @@ -0,0 +1,345 @@ +import { Component, OnInit } from "@angular/core"; +import * as echarts from "echarts"; +import { Z } from "@angular/cdk/keycodes"; + +@Component({ + selector: "app-echart-bar", + templateUrl: "./echart-bar.component.html", + styleUrls: ["./echart-bar.component.scss"] +}) +export class EchartBarComponent implements OnInit { + dataAxis = [ + "mango", + "banana", + "jack", + "sparrow", + "clara", + "smith", + "john", + "doe", + "naem", + "hridoy", + "ricky", + "fahim", + "sandy", + "savage", + "slow", + "snow", + "kashmir", + "great wall", + "godzilla", + "genious" + ]; + data = [ + 220, + 182, + 191, + 234, + 290, + 330, + 310, + 123, + 442, + 321, + 90, + 149, + 210, + 122, + 133, + 334, + 198, + 123, + 125, + 220 + ]; + yMax = 500; + dataShadow = []; + + constructor() {} + + ngOnInit() { + for (var i = 0; i < this.data.length; i++) { + this.dataShadow.push(this.yMax); + } + } + +zoomBarOptions = { + // title: { + // text: "Bar Chart with Zoom Option", + // subtext: "Feature Sample: Gradient Color, Shadow, Click Zoom" + // }, + color: ['rgba(15, 21, 77, 0.8)','rgba(246,107,191, 0.8)','#03A9F4','#FFC107','rgba(15, 21, 77, 0.6)','#9C27BB','rgba(15, 21, 77, 0.4)','rgba(146, 213, 249, 0.8)','#9C27B0'], + xAxis: { + data: this.dataAxis, + axisLabel: { + inside: true, + position: 'insideBottom', + align: 'left', + rotate: 90, + textStyle: { + color: "#fff" + } + }, + axisTick: { + show: false + }, + axisLine: { + show: false + }, + z: 10 + }, + yAxis: { + axisLine: { + show: false + }, + axisTick: { + show: false + }, + axisLabel: { + textStyle: { + color: "#999" + } + } + }, + dataZoom: [ + { + type: "inside" + } + ], + series: [ + { + // For shadow + type: "bar", + itemStyle: { + normal: { color: "rgba(0,0,0,0.05)" } + }, + barGap: "-100%", + barCategoryGap: "40%", + data: this.dataShadow, + animation: false + }, + { + type: "bar", + itemStyle: { + normal: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { offset: 0, color: "#83bff6" }, + { offset: 0.5, color: "#188df0" }, + { offset: 1, color: "#03A9F4" } + ]) + }, + emphasis: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { offset: 0, color: "#2378f7" }, + { offset: 0.7, color: "#2378f7" }, + { offset: 1, color: "#83bff6" } + ]) + } + }, + data: this.data + } + ] + }; + + // ================================================ + + labelOption = { + normal: { + show: true, + position: 'insideBottom', + distance: 5, + align: 'left', + verticalAlign: 'middle', + rotate: 90, + formatter: '{c} {name|{a}}', + fontSize: 16, + rich: { + name: { + textBorderColor: '#fff' + } + } + } +}; + + +clusteredVBarOptions = { + color: ['rgba(15, 21, 77, 0.8)','rgba(246,107,191, 0.8)','#03A9F4','#FFC107','rgba(15, 21, 77, 0.6)','#9C27BB','rgba(15, 21, 77, 0.4)','rgba(146, 213, 249, 0.8)','#9C27B0'], + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + } + }, + legend: { + data: ['Forest', 'Steppe', 'Desert', 'Wetland'] + }, + toolbox: { + show: true, + orient: 'vertical', + left: 'right', + top: 'center', + feature: { + mark: {show: true}, + dataView: {show: true, readOnly: false}, + magicType: {show: true, type: ['line', 'bar', 'stack', 'tiled']}, + restore: {show: true}, + saveAsImage: {show: true} + } + + }, + calculable: true, + xAxis: [ + { + type: 'category', + axisTick: {show: false}, + data: ['2012', '2013', '2014', '2015', '2016'] + } + ], + yAxis: [ + { + type: 'value' + } + ], + series: [ + { + name: 'Forest', + type: 'bar', + barGap: 0, + label: this.labelOption, + data: [320, 332, 301, 334, 390] + }, + { + name: 'Steppe', + type: 'bar', + label: this.labelOption, + data: [220, 182, 191, 234, 290] + }, + { + name: 'Desert', + type: 'bar', + label: this.labelOption, + data: [150, 232, 201, 154, 190] + }, + { + name: 'Wetland', + type: 'bar', + label: this.labelOption, + data: [98, 77, 101, 99, 40] + } + ] +}; + + +// ==================================================== + + +middleBarOption = { + color: ['rgba(15, 21, 77, 0.8)','rgba(15, 21, 77, 0.5)','#03A9F4','#FFC107','rgba(15, 21, 77, 0.6)','#9C27BB','rgba(15, 21, 77, 0.4)','rgba(146, 213, 249, 0.8)','#9C27B0'], + tooltip : { + trigger: 'axis', + axisPointer : { + type : 'shadow' + } + }, + legend: { + data:['Mango', 'Banana', 'Litchi'] + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + xAxis : [ + { + type : 'value' + } + ], + yAxis : [ + { + type : 'category', + axisTick : {show: false}, + data : ['2001','2002','2003','2004','2005','2006','2007'] + } + ], + series : [ + { + name:'Fruits', + type:'bar', + label: { + normal: { + show: true, + position: 'inside' + } + }, + data:[200, 170, 240, 244, 200, 220, 210] + }, + { + name:'Production', + type:'bar', + stack: 'Loss', + label: { + normal: { + show: true + } + }, + data:[320, 302, 341, 374, 390, 450, 420] + }, + { + name:'Loss', + type:'bar', + stack: 'Loss', + label: { + normal: { + show: true, + position: 'left' + } + }, + data:[-120, -132, -101, -134, -190, -230, -210] + } + ] +}; + +// ================ multiple series basic char ============================= +multipleSeriesBasicOptions = { + + color: ['rgba(15, 21, 77, 0.8)','rgba(15, 21, 77, 0.5)','#03A9F4','#FFC107','rgba(15, 21, 77, 0.8)','rgba(171,42,205,0.7)','rgba(15, 21, 77, 0.4)','rgba(146, 213, 249, 0.8)','rgba(255,212,7,0.7)'], + legend: { + padding: [20,0,0,0] + }, + tooltip: {}, + dataset: { + source: [ + ['product', '2012', '2013', '2014', '2015'], + ['Matcha Latte', 41.1, 30.4, 65.1, 53.3], + ['Milk Tea', 86.5, 92.1, 85.7, 83.1], + ['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4] + ] + }, + xAxis: [ + {type: 'category', gridIndex: 0}, + {type: 'category', gridIndex: 1} + ], + yAxis: [ + {gridIndex: 0}, + {gridIndex: 1} + ], + grid: [ + {bottom: '55%'}, + {top: '55%'} + ], + series: [ + // These series are in the first grid. + {type: 'bar', seriesLayoutBy: 'row'}, + {type: 'bar', seriesLayoutBy: 'row'}, + {type: 'bar', seriesLayoutBy: 'row'}, + // These series are in the second grid. + {type: 'bar', xAxisIndex: 1, yAxisIndex: 1}, + {type: 'bar', xAxisIndex: 1, yAxisIndex: 1}, + {type: 'bar', xAxisIndex: 1, yAxisIndex: 1}, + {type: 'bar', xAxisIndex: 1, yAxisIndex: 1} + ] +}; + + +} diff --git a/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.html b/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.html new file mode 100644 index 0000000..0c872c5 --- /dev/null +++ b/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.html @@ -0,0 +1,8 @@ +

Heatmap on Cartesian

+
+
+ +
+ +

Heatmap - 2w Data

+
\ No newline at end of file diff --git a/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.scss b/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.scss new file mode 100644 index 0000000..0a54fe2 --- /dev/null +++ b/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.scss @@ -0,0 +1,6 @@ +// .fsdfsdfsd { + +// color: #c23531; +// color:#2f4554'; +// #61a0a8;color:#d48265;color:#91c7ae;color:#749f83;color:#ca8622;color:#bda29a;color:#6e7074', '#546570', '#c4ccd3' +// } \ No newline at end of file diff --git a/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.spec.ts b/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.spec.ts new file mode 100644 index 0000000..3b0a7b4 --- /dev/null +++ b/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EchartHeatmapComponent } from './echart-heatmap.component'; + +describe('EchartHeatmapComponent', () => { + let component: EchartHeatmapComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EchartHeatmapComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EchartHeatmapComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.ts b/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.ts new file mode 100644 index 0000000..802608c --- /dev/null +++ b/src/assets/examples/chart/echart-heatmap/echart-heatmap.component.ts @@ -0,0 +1,449 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-echart-heatmap', + templateUrl: './echart-heatmap.component.html', + styleUrls: ['./echart-heatmap.component.scss'] +}) +export class EchartHeatmapComponent { + + 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']; +days = ['Saturday', 'Friday', 'Thursday', + 'Wednesday', 'Tuesday', 'Monday', 'Sunday']; + +data: any = [[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]]; + +heatMapOptions; + +heatMap2wOptions; + + constructor() { } + + ngOnInit() { + + this.data = this.data.map(function (item) { + return [item[1], item[0], item[2] || '-']; + }); + + this.heatMapOptions = { + tooltip: { + position: 'top' + }, + animation: false, + grid: { + height: '70%', + // width: '90%', + y: '10%' + }, + xAxis: { + type: 'category', + data: this.hours, + splitArea: { + show: true + } + }, + yAxis: { + type: 'category', + data: this.days, + splitArea: { + show: true + } + }, + visualMap: { + min: 0, + max: 10, + calculable: true, + orient: 'horizontal', + left: 'center', + bottom: '0' + }, + series: [{ + name: 'Punch Card', + type: 'heatmap', + data: this.data, + label: { + normal: { + show: true + } + }, + itemStyle: { + emphasis: { + shadowBlur: 10, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + } + }] + }; + + this.loadHeatMap2wData(); + } + + // ======================= heatmap 2w data ========================== + + + loadHeatMap2wData() { + +var noise = this.getNoiseHelper(); +var xData = []; +var yData = []; +noise.seed(Math.random()); +function generateData(theta, min, max) { + var data = []; + for (var i = 0; i <= 200; i++) { + for (var j = 0; j <= 100; j++) { + // var x = (max - min) * i / 200 + min; + // var y = (max - min) * j / 100 + min; + data.push([i, j, noise.perlin2(i / 40, j / 20) + 0.5]); + // data.push([i, j, normalDist(theta, x) * normalDist(theta, y)]); + } + xData.push(i); + } + for (var j = 0; j < 100; j++) { + yData.push(j); + } + return data; +} +var data = generateData(2, -5, 5); + +this.heatMap2wOptions = { + tooltip: {}, + grid: { + height: '100%' + }, + xAxis: { + type: 'category', + data: xData + }, + yAxis: { + type: 'category', + data: yData + }, + visualMap: { + min: 0, + max: 1, + calculable: true, + realtime: false, + inRange: { + color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'] + } + }, + series: [{ + name: 'Gaussian', + type: 'heatmap', + data: data, + itemStyle: { + emphasis: { + borderColor: '#333', + borderWidth: 1 + } + }, + progressive: 1000, + animation: false + }] +}; +} + +/////////////////////////////////////////////////////////////////////////// +// Simplex and perlin noise helper from https://github.com/josephg/noisejs +/////////////////////////////////////////////////////////////////////////// +getNoiseHelper(global?:any) { + + var module:any = {}; + + function Grad(x, y, z) { + this.x = x; this.y = y; this.z = z; + } + + Grad.prototype.dot2 = function(x, y) { + return this.x*x + this.y*y; + }; + + Grad.prototype.dot3 = function(x, y, z) { + return this.x*x + this.y*y + this.z*z; + }; + + var grad3 = [new Grad(1,1,0),new Grad(-1,1,0),new Grad(1,-1,0),new Grad(-1,-1,0), + new Grad(1,0,1),new Grad(-1,0,1),new Grad(1,0,-1),new Grad(-1,0,-1), + new Grad(0,1,1),new Grad(0,-1,1),new Grad(0,1,-1),new Grad(0,-1,-1)]; + + var p = [151,160,137,91,90,15, + 131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, + 190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, + 88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, + 77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, + 102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, + 135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, + 5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, + 223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, + 129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, + 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, + 49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, + 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180]; + // To remove the need for index wrapping, double the permutation table length + var perm = new Array(512); + var gradP = new Array(512); + + // This isn't a very good seeding function, but it works ok. It supports 2^16 + // different seed values. Write something better if you need more seeds. + module.seed = function(seed) { + if(seed > 0 && seed < 1) { + // Scale the seed out + seed *= 65536; + } + + seed = Math.floor(seed); + if(seed < 256) { + seed |= seed << 8; + } + + for(var i = 0; i < 256; i++) { + var v; + if (i & 1) { + v = p[i] ^ (seed & 255); + } else { + v = p[i] ^ ((seed>>8) & 255); + } + + perm[i] = perm[i + 256] = v; + gradP[i] = gradP[i + 256] = grad3[v % 12]; + } + }; + + module.seed(0); + + /* + for(var i=0; i<256; i++) { + perm[i] = perm[i + 256] = p[i]; + gradP[i] = gradP[i + 256] = grad3[perm[i] % 12]; + }*/ + + // Skewing and unskewing factors for 2, 3, and 4 dimensions + var F2 = 0.5*(Math.sqrt(3)-1); + var G2 = (3-Math.sqrt(3))/6; + + var F3 = 1/3; + var G3 = 1/6; + + // 2D simplex noise + module.simplex2 = function(xin, yin) { + var n0, n1, n2; // Noise contributions from the three corners + // Skew the input space to determine which simplex cell we're in + var s = (xin+yin)*F2; // Hairy factor for 2D + var i = Math.floor(xin+s); + var j = Math.floor(yin+s); + var t = (i+j)*G2; + var x0 = xin-i+t; // The x,y distances from the cell origin, unskewed. + var y0 = yin-j+t; + // For the 2D case, the simplex shape is an equilateral triangle. + // Determine which simplex we are in. + var i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords + if(x0>y0) { // lower triangle, XY order: (0,0)->(1,0)->(1,1) + i1=1; j1=0; + } else { // upper triangle, YX order: (0,0)->(0,1)->(1,1) + i1=0; j1=1; + } + // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and + // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where + // c = (3-sqrt(3))/6 + var x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords + var y1 = y0 - j1 + G2; + var x2 = x0 - 1 + 2 * G2; // Offsets for last corner in (x,y) unskewed coords + var y2 = y0 - 1 + 2 * G2; + // Work out the hashed gradient indices of the three simplex corners + i &= 255; + j &= 255; + var gi0 = gradP[i+perm[j]]; + var gi1 = gradP[i+i1+perm[j+j1]]; + var gi2 = gradP[i+1+perm[j+1]]; + // Calculate the contribution from the three corners + var t0 = 0.5 - x0*x0-y0*y0; + if(t0<0) { + n0 = 0; + } else { + t0 *= t0; + n0 = t0 * t0 * gi0.dot2(x0, y0); // (x,y) of grad3 used for 2D gradient + } + var t1 = 0.5 - x1*x1-y1*y1; + if(t1<0) { + n1 = 0; + } else { + t1 *= t1; + n1 = t1 * t1 * gi1.dot2(x1, y1); + } + var t2 = 0.5 - x2*x2-y2*y2; + if(t2<0) { + n2 = 0; + } else { + t2 *= t2; + n2 = t2 * t2 * gi2.dot2(x2, y2); + } + // Add contributions from each corner to get the final noise value. + // The result is scaled to return values in the interval [-1,1]. + return 70 * (n0 + n1 + n2); + }; + + // 3D simplex noise + module.simplex3 = function(xin, yin, zin) { + var n0, n1, n2, n3; // Noise contributions from the four corners + + // Skew the input space to determine which simplex cell we're in + var s = (xin+yin+zin)*F3; // Hairy factor for 2D + var i = Math.floor(xin+s); + var j = Math.floor(yin+s); + var k = Math.floor(zin+s); + + var t = (i+j+k)*G3; + var x0 = xin-i+t; // The x,y distances from the cell origin, unskewed. + var y0 = yin-j+t; + var z0 = zin-k+t; + + // For the 3D case, the simplex shape is a slightly irregular tetrahedron. + // Determine which simplex we are in. + var i1, j1, k1; // Offsets for second corner of simplex in (i,j,k) coords + var i2, j2, k2; // Offsets for third corner of simplex in (i,j,k) coords + if(x0 >= y0) { + if(y0 >= z0) { i1=1; j1=0; k1=0; i2=1; j2=1; k2=0; } + else if(x0 >= z0) { i1=1; j1=0; k1=0; i2=1; j2=0; k2=1; } + else { i1=0; j1=0; k1=1; i2=1; j2=0; k2=1; } + } else { + if(y0 < z0) { i1=0; j1=0; k1=1; i2=0; j2=1; k2=1; } + else if(x0 < z0) { i1=0; j1=1; k1=0; i2=0; j2=1; k2=1; } + else { i1=0; j1=1; k1=0; i2=1; j2=1; k2=0; } + } + // A step of (1,0,0) in (i,j,k) means a step of (1-c,-c,-c) in (x,y,z), + // a step of (0,1,0) in (i,j,k) means a step of (-c,1-c,-c) in (x,y,z), and + // a step of (0,0,1) in (i,j,k) means a step of (-c,-c,1-c) in (x,y,z), where + // c = 1/6. + var x1 = x0 - i1 + G3; // Offsets for second corner + var y1 = y0 - j1 + G3; + var z1 = z0 - k1 + G3; + + var x2 = x0 - i2 + 2 * G3; // Offsets for third corner + var y2 = y0 - j2 + 2 * G3; + var z2 = z0 - k2 + 2 * G3; + + var x3 = x0 - 1 + 3 * G3; // Offsets for fourth corner + var y3 = y0 - 1 + 3 * G3; + var z3 = z0 - 1 + 3 * G3; + + // Work out the hashed gradient indices of the four simplex corners + i &= 255; + j &= 255; + k &= 255; + var gi0 = gradP[i+ perm[j+ perm[k ]]]; + var gi1 = gradP[i+i1+perm[j+j1+perm[k+k1]]]; + var gi2 = gradP[i+i2+perm[j+j2+perm[k+k2]]]; + var gi3 = gradP[i+ 1+perm[j+ 1+perm[k+ 1]]]; + + // Calculate the contribution from the four corners + var t0 = 0.6 - x0*x0 - y0*y0 - z0*z0; + if(t0<0) { + n0 = 0; + } else { + t0 *= t0; + n0 = t0 * t0 * gi0.dot3(x0, y0, z0); // (x,y) of grad3 used for 2D gradient + } + var t1 = 0.6 - x1*x1 - y1*y1 - z1*z1; + if(t1<0) { + n1 = 0; + } else { + t1 *= t1; + n1 = t1 * t1 * gi1.dot3(x1, y1, z1); + } + var t2 = 0.6 - x2*x2 - y2*y2 - z2*z2; + if(t2<0) { + n2 = 0; + } else { + t2 *= t2; + n2 = t2 * t2 * gi2.dot3(x2, y2, z2); + } + var t3 = 0.6 - x3*x3 - y3*y3 - z3*z3; + if(t3<0) { + n3 = 0; + } else { + t3 *= t3; + n3 = t3 * t3 * gi3.dot3(x3, y3, z3); + } + // Add contributions from each corner to get the final noise value. + // The result is scaled to return values in the interval [-1,1]. + return 32 * (n0 + n1 + n2 + n3); + + }; + + // ##### Perlin noise stuff + + function fade(t) { + return t*t*t*(t*(t*6-15)+10); + } + + function lerp(a, b, t) { + return (1-t)*a + t*b; + } + + // 2D Perlin Noise + module.perlin2 = function(x, y) { + // Find unit grid cell containing point + var X = Math.floor(x), Y = Math.floor(y); + // Get relative xy coordinates of point within that cell + x = x - X; y = y - Y; + // Wrap the integer cells at 255 (smaller integer period can be introduced here) + X = X & 255; Y = Y & 255; + + // Calculate noise contributions from each of the four corners + var n00 = gradP[X+perm[Y]].dot2(x, y); + var n01 = gradP[X+perm[Y+1]].dot2(x, y-1); + var n10 = gradP[X+1+perm[Y]].dot2(x-1, y); + var n11 = gradP[X+1+perm[Y+1]].dot2(x-1, y-1); + + // Compute the fade curve value for x + var u = fade(x); + + // Interpolate the four results + return lerp( + lerp(n00, n10, u), + lerp(n01, n11, u), + fade(y)); + }; + + // 3D Perlin Noise + module.perlin3 = function(x, y, z) { + // Find unit grid cell containing point + var X = Math.floor(x), Y = Math.floor(y), Z = Math.floor(z); + // Get relative xyz coordinates of point within that cell + x = x - X; y = y - Y; z = z - Z; + // Wrap the integer cells at 255 (smaller integer period can be introduced here) + X = X & 255; Y = Y & 255; Z = Z & 255; + + // Calculate noise contributions from each of the eight corners + var n000 = gradP[X+ perm[Y+ perm[Z ]]].dot3(x, y, z); + var n001 = gradP[X+ perm[Y+ perm[Z+1]]].dot3(x, y, z-1); + var n010 = gradP[X+ perm[Y+1+perm[Z ]]].dot3(x, y-1, z); + var n011 = gradP[X+ perm[Y+1+perm[Z+1]]].dot3(x, y-1, z-1); + var n100 = gradP[X+1+perm[Y+ perm[Z ]]].dot3(x-1, y, z); + var n101 = gradP[X+1+perm[Y+ perm[Z+1]]].dot3(x-1, y, z-1); + var n110 = gradP[X+1+perm[Y+1+perm[Z ]]].dot3(x-1, y-1, z); + var n111 = gradP[X+1+perm[Y+1+perm[Z+1]]].dot3(x-1, y-1, z-1); + + // Compute the fade curve value for x, y, z + var u = fade(x); + var v = fade(y); + var w = fade(z); + + // Interpolate + return lerp( + lerp( + lerp(n000, n100, u), + lerp(n001, n101, u), w), + lerp( + lerp(n010, n110, u), + lerp(n011, n111, u), w), + v); + }; + + + return module; +} +} diff --git a/src/assets/examples/chart/echart-pie/echart-pie.component.html b/src/assets/examples/chart/echart-pie/echart-pie.component.html new file mode 100644 index 0000000..17ffc97 --- /dev/null +++ b/src/assets/examples/chart/echart-pie/echart-pie.component.html @@ -0,0 +1,14 @@ +

Basic Pie Chart

+
+
+ +

Nightingale's Rose Diagram

+
+
+ +

Doughnut Pie

+
+
+ +

Nested Pie

+
\ No newline at end of file diff --git a/src/assets/examples/chart/echart-pie/echart-pie.component.scss b/src/assets/examples/chart/echart-pie/echart-pie.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/chart/echart-pie/echart-pie.component.spec.ts b/src/assets/examples/chart/echart-pie/echart-pie.component.spec.ts new file mode 100644 index 0000000..8f55383 --- /dev/null +++ b/src/assets/examples/chart/echart-pie/echart-pie.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EchartPieComponent } from './echart-pie.component'; + +describe('EchartPieComponent', () => { + let component: EchartPieComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EchartPieComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EchartPieComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/chart/echart-pie/echart-pie.component.ts b/src/assets/examples/chart/echart-pie/echart-pie.component.ts new file mode 100644 index 0000000..590735b --- /dev/null +++ b/src/assets/examples/chart/echart-pie/echart-pie.component.ts @@ -0,0 +1,444 @@ +import { Component, OnInit } from "@angular/core"; + +@Component({ + selector: "app-echart-pie", + templateUrl: "./echart-pie.component.html", + styleUrls: ["./echart-pie.component.scss"] +}) +export class EchartPieComponent { + pieOptions = { + backgroundColor: "#ffffff", + + // title: { + // text: 'Basic Pie', + // left: 'center', + // top: 10, + // textStyle: { + // color: '#000000', + // } + // }, + + grid: { + left: "3%", + right: "4%", + top: "3%", + containLabel: true + }, + color: [ + "rgba(15, 21, 77, .6)", + // "rgba(244, 67, 54, .7)", + "rgba(15, 21, 77, 0.7)", + "rgba(15, 21, 77, 0.8)" + ], + tooltip: { + show: false, + trigger: "item", + formatter: "{a}
{b}: {c} ({d}%)" + }, + xAxis: [ + { + axisLine: { + show: false + }, + splitLine: { + show: false + } + } + ], + yAxis: [ + { + axisLine: { + show: false + }, + splitLine: { + show: false + } + } + ], + + series: [ + { + name: "Sessions", + type: "pie", + radius: ["0%", "65%"], + center: ["50%", "50%"], + avoidLabelOverlap: false, + hoverOffset: 5, + stillShowZeroSum: false, + label: { + normal: { + show: false, + // position: "center", + textStyle: { + fontSize: "13", + fontWeight: "normal" + }, + formatter: "{a}" + }, + emphasis: { + show: true, + textStyle: { + fontSize: "15", + fontWeight: "normal", + color: "rgba(15, 21, 77, 1)" + }, + formatter: "{b} \n{c} ({d}%)" + } + }, + labelLine: { + normal: { + show: false + } + }, + data: [ + { + value: 335, + name: "Direct" + }, + { + value: 310, + name: "Search Eng." + }, + { value: 148, name: "Social" } + ], + itemStyle: { + emphasis: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: "rgba(0, 0, 0, 0.5)" + } + } + } + ] + }; + + doughNutPieOptions = { + backgroundColor: "#ffffff", + + // title: { + // text: 'Doughnut Pie', + // left: 'center', + // top: 20, + // textStyle: { + // color: '#000000' + // } + // }, + grid: { + left: "3%", + right: "4%", + bottom: "3%", + containLabel: true + }, + color: [ + "rgba(15, 21, 77, .6)", + // "rgba(244, 67, 54, .7)", + "rgba(15, 21, 77, 0.7)", + "rgba(15, 21, 77, 0.8)" + ], + tooltip: { + show: false, + trigger: "item", + formatter: "{a}
{b}: {c} ({d}%)" + }, + xAxis: [ + { + axisLine: { + show: false + }, + splitLine: { + show: false + } + } + ], + yAxis: [ + { + axisLine: { + show: false + }, + splitLine: { + show: false + } + } + ], + + series: [ + { + name: "Sessions", + type: "pie", + radius: ["45%", "65%"], + center: ["50%", "50%"], + avoidLabelOverlap: false, + hoverOffset: 5, + stillShowZeroSum: false, + label: { + normal: { + show: false, + // position: "center", + textStyle: { + fontSize: "13", + fontWeight: "normal" + }, + formatter: "{a}" + }, + emphasis: { + show: true, + textStyle: { + fontSize: "15", + fontWeight: "normal", + color: "rgba(15, 21, 77, 1)" + }, + formatter: "{b} \n{c} ({d}%)" + } + }, + labelLine: { + normal: { + show: false + } + }, + data: [ + { + value: 335, + name: "Direct" + }, + { + value: 310, + name: "Search Eng." + }, + { value: 148, name: "Social" } + ], + itemStyle: { + emphasis: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: "rgba(0, 0, 0, 0.5)" + } + } + } + ] + }; + + customPieOptions = { + backgroundColor: "#ffffff", + color: [ + "#3CB2EF", + "#71F6F9", + "#FFDB5C", + "#FFAE8B", + "#E062AE", + "#2C3162", + "#6F7394", + "#FFFFFF", + "#F44336" + ], + // title: { + // text: 'Customized Pie', + // left: 'center', + // top: 20, + // textStyle: { + // color: '#ccc' + // } + // }, + + tooltip: { + trigger: "item", + formatter: "{a}
{b} : {c} ({d}%)" + }, + + visualMap: { + show: false, + min: 80, + max: 600, + inRange: { + colorLightness: [0, 1] + } + }, + series: [ + { + name: "Production", + type: "pie", + radius: "65%", + center: ["50%", "50%"], + data: [ + { value: 335, name: "Potato" }, + { value: 310, name: "Mango" }, + { value: 274, name: "Banana" }, + { value: 235, name: "Strawberry" }, + { value: 400, name: "Jackfruit" } + ].sort(function(a, b) { + return a.value - b.value; + }), + roseType: "radius", + label: { + normal: { + textStyle: { + color: "rgba(0 , 0, 0, 0.87)" + } + } + }, + labelLine: { + normal: { + lineStyle: { + color: "rgba(0 , 0, 0, 0.87)" + }, + smooth: 0.2, + length: 10, + length2: 20 + } + }, + itemStyle: { + normal: { + color: "#2C3162" + // shadowBlur: 200, + // shadowColor: 'rgba(15, 21, 77, 0.5)' + } + }, + + animationType: "scale", + animationEasing: "elasticOut", + animationDelay: function(idx) { + return Math.random() * 200; + } + } + ] + }; + + nestedPieOptions = { + // title: { + // text: 'Nested Pie', + // left: 'center', + // top: 0, + // textStyle: { + // color: '#000000' + // } + // }, + tooltip: { + trigger: "item", + formatter: "{a}
{b}: {c} ({d}%)" + }, + color: [ + "rgba(15, 21, 77, 0.8)", + "rgba(246,107,191, 0.8)", + "#03A9F4", + "#FFC107", + "rgba(15, 21, 77, 0.6)", + "#9C27BB", + "rgba(15, 21, 77, 0.4)", + "rgba(146, 213, 249, 0.8)", + "#9C27B0" + ], + legend: { + textStyle: { + color: "rgba(0,0,0,0.87)" + }, + orient: "horizontal", + x: "left", + data: [ + "Banana", + "Mango", + "Jackfruit", + "Pineapple", + "Strawberry", + "Respberry", + "Blackberry", + "Litchi", + "Guava", + "Watermelon" + ] + }, + series: [ + { + name: "Inner Pie", + type: "pie", + selectedMode: "single", + radius: [0, "30%"], + + label: { + normal: { + position: "inner" + } + }, + labelLine: { + normal: { + show: true + } + }, + data: [ + { value: 335, name: "Banana", selected: true }, + { value: 679, name: "Mango" }, + { value: 1548, name: "Jackfrui" } + ], + itemStyle: { + normal: { + // shadowBlur: 200, + // shadowColor: 'rgba(15, 21, 77, 0.5)' + } + } + }, + { + name: "Outer Pie", + type: "pie", + radius: ["40%", "55%"], + label: { + normal: { + formatter: "{a|{a}}{abg|}\n{hr|}\n {b|{b}:}{c} {per|{d}%} ", + backgroundColor: "#eee", + borderColor: "rgba(0,0,0,0.67)", + borderWidth: 1, + borderRadius: 4, + // shadowBlur:3, + // shadowOffsetX: 2, + // shadowOffsetY: 2, + // shadowColor: '#999', + // padding: [0, 7], + rich: { + a: { + color: "rgba(0,0,0,0.67)", + lineHeight: 22, + align: "center" + }, + // abg: { + // backgroundColor: '#333', + // width: '100%', + // align: 'right', + // height: 22, + // borderRadius: [4, 4, 0, 0] + // }, + hr: { + borderColor: "rgba(0,0,0,0.67)", + width: "100%", + borderWidth: 0.5, + height: 0 + }, + b: { + fontSize: 16, + lineHeight: 33 + }, + per: { + color: "#ccc", + backgroundColor: "#334455", + padding: [2, 4], + borderRadius: 2 + } + } + } + }, + data: [ + { value: 335, name: "Orange" }, + { value: 310, name: "Banana" }, + { value: 234, name: "Litchi" }, + { value: 135, name: "Dragon fruit" }, + { value: 1048, name: "Pineapple" }, + { value: 251, name: "Mango" }, + { value: 147, name: "Apricot" }, + { value: 102, name: "Avocado" } + ], + itemStyle: { + normal: { + // shadowBlur: 200, + // shadowColor: 'rgba(15, 21, 77, 0.5)' + } + } + } + ] + }; +} diff --git a/src/assets/examples/chart/echart-radar/echart-radar.component.html b/src/assets/examples/chart/echart-radar/echart-radar.component.html new file mode 100644 index 0000000..17e4ec1 --- /dev/null +++ b/src/assets/examples/chart/echart-radar/echart-radar.component.html @@ -0,0 +1,8 @@ +

Proportion of Browsers

+
+
+ +
+ +

AQI Radar Chart

+
\ No newline at end of file diff --git a/src/assets/examples/chart/echart-radar/echart-radar.component.scss b/src/assets/examples/chart/echart-radar/echart-radar.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/chart/echart-radar/echart-radar.component.spec.ts b/src/assets/examples/chart/echart-radar/echart-radar.component.spec.ts new file mode 100644 index 0000000..c52ba6d --- /dev/null +++ b/src/assets/examples/chart/echart-radar/echart-radar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EchartRadarComponent } from './echart-radar.component'; + +describe('EchartRadarComponent', () => { + let component: EchartRadarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EchartRadarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EchartRadarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/chart/echart-radar/echart-radar.component.ts b/src/assets/examples/chart/echart-radar/echart-radar.component.ts new file mode 100644 index 0000000..7a3503b --- /dev/null +++ b/src/assets/examples/chart/echart-radar/echart-radar.component.ts @@ -0,0 +1,329 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-echart-radar', + templateUrl: './echart-radar.component.html', + styleUrls: ['./echart-radar.component.scss'] +}) +export class EchartRadarComponent implements OnInit { + +aquiRadar; +fancyRadar; + + constructor() { } + + ngOnInit() { + this.loadAQIRadarData(); + this.loadFancyRadarData(); + } + + loadFancyRadarData() { + this.fancyRadar = { + // title: { + // text: 'Proportion Radar', + // subtext: 'Proportion of Browsers', + // top: 10, + // left: 10 + // }, + tooltip: { + trigger: 'item', + backgroundColor : 'rgba(0,0,250,0.2)' + }, + legend: { + type: 'scroll', + bottom: 10, + data: (function (){ + var list = []; + for (var i = 1; i <=28; i++) { + list.push(i + 2000 + ''); + } + return list; + })() + }, + visualMap: { + top: 'middle', + right: 10, + color: ['rgba(15, 21, 77, 0.8)', '#03A9F4'], + calculable: true + }, + radar: { + name: { + textStyle: { + color: 'rgba(0,0,0,0.87)' + } + }, + indicator : [ + { text: 'IE8-', max: 400}, + { text: 'IE9+', max: 400}, + { text: 'Safari', max: 400}, + { text: 'Firefox', max: 400}, + { text: 'Chrome', max: 400} + ] + }, + series : (function (){ + var series = []; + for (var i = 1; i <= 28; i++) { + series.push({ + name:'Hridoy', + type: 'radar', + symbol: 'none', + lineStyle: { + width: 1 + }, + emphasis: { + areaStyle: { + color: '#FFC107' + } + }, + data:[ + { + value:[ + (40 - i) * 10, + (38 - i) * 4 + 60, + i * 5 + 10, + i * 9, + i * i /2 + ], + name: i + 2000 + '' + } + ] + }); + } + return series; + })() +}; + } + + +loadAQIRadarData() { +// Schema: +// date,AQIindex,PM2.5,PM10,CO,NO2,SO2 +var dataBJ = [ + [55,9,56,0.46,18,6,1], + [25,11,21,0.65,34,9,2], + [56,7,63,0.3,14,5,3], + [33,7,29,0.33,16,6,4], + [42,24,44,0.76,40,16,5], + [82,58,90,1.77,68,33,6], + [74,49,77,1.46,48,27,7], + [78,55,80,1.29,59,29,8], + [267,216,280,4.8,108,64,9], + [185,127,216,2.52,61,27,10], + [39,19,38,0.57,31,15,11], + [41,11,40,0.43,21,7,12], + [64,38,74,1.04,46,22,13], + [108,79,120,1.7,75,41,14], + [108,63,116,1.48,44,26,15], + [33,6,29,0.34,13,5,16], + [94,66,110,1.54,62,31,17], + [186,142,192,3.88,93,79,18], + [57,31,54,0.96,32,14,19], + [22,8,17,0.48,23,10,20], + [39,15,36,0.61,29,13,21], + [94,69,114,2.08,73,39,22], + [99,73,110,2.43,76,48,23], + [31,12,30,0.5,32,16,24], + [42,27,43,1,53,22,25], + [154,117,157,3.05,92,58,26], + [234,185,230,4.09,123,69,27], + [160,120,186,2.77,91,50,28], + [134,96,165,2.76,83,41,29], + [52,24,60,1.03,50,21,30], + [46,5,49,0.28,10,6,31] +]; + +var dataGZ = [ + [26,37,27,1.163,27,13,1], + [85,62,71,1.195,60,8,2], + [78,38,74,1.363,37,7,3], + [21,21,36,0.634,40,9,4], + [41,42,46,0.915,81,13,5], + [56,52,69,1.067,92,16,6], + [64,30,28,0.924,51,2,7], + [55,48,74,1.236,75,26,8], + [76,85,113,1.237,114,27,9], + [91,81,104,1.041,56,40,10], + [84,39,60,0.964,25,11,11], + [64,51,101,0.862,58,23,12], + [70,69,120,1.198,65,36,13], + [77,105,178,2.549,64,16,14], + [109,68,87,0.996,74,29,15], + [73,68,97,0.905,51,34,16], + [54,27,47,0.592,53,12,17], + [51,61,97,0.811,65,19,18], + [91,71,121,1.374,43,18,19], + [73,102,182,2.787,44,19,20], + [73,50,76,0.717,31,20,21], + [84,94,140,2.238,68,18,22], + [93,77,104,1.165,53,7,23], + [99,130,227,3.97,55,15,24], + [146,84,139,1.094,40,17,25], + [113,108,137,1.481,48,15,26], + [81,48,62,1.619,26,3,27], + [56,48,68,1.336,37,9,28], + [82,92,174,3.29,0,13,29], + [106,116,188,3.628,101,16,30], + [118,50,0,1.383,76,11,31] +]; + +var dataSH = [ + [91,45,125,0.82,34,23,1], + [65,27,78,0.86,45,29,2], + [83,60,84,1.09,73,27,3], + [109,81,121,1.28,68,51,4], + [106,77,114,1.07,55,51,5], + [109,81,121,1.28,68,51,6], + [106,77,114,1.07,55,51,7], + [89,65,78,0.86,51,26,8], + [53,33,47,0.64,50,17,9], + [80,55,80,1.01,75,24,10], + [117,81,124,1.03,45,24,11], + [99,71,142,1.1,62,42,12], + [95,69,130,1.28,74,50,13], + [116,87,131,1.47,84,40,14], + [108,80,121,1.3,85,37,15], + [134,83,167,1.16,57,43,16], + [79,43,107,1.05,59,37,17], + [71,46,89,0.86,64,25,18], + [97,71,113,1.17,88,31,19], + [84,57,91,0.85,55,31,20], + [87,63,101,0.9,56,41,21], + [104,77,119,1.09,73,48,22], + [87,62,100,1,72,28,23], + [168,128,172,1.49,97,56,24], + [65,45,51,0.74,39,17,25], + [39,24,38,0.61,47,17,26], + [39,24,39,0.59,50,19,27], + [93,68,96,1.05,79,29,28], + [188,143,197,1.66,99,51,29], + [174,131,174,1.55,108,50,30], + [187,143,201,1.39,89,53,31] +]; + +var lineStyle = { + normal: { + width: 1, + opacity: 0.5, + color: "rgba(15, 21, 77, 0.8)" + } +}; + +this.aquiRadar = { + backgroundColor: '#ffffff', +// title: { +// text: 'AQI - Radar', +// left: 'center', +// textStyle: { +// color: '#eee' +// } +// }, + legend: { + bottom: 5, + data: ['Mango', 'Banana', 'Litchi'], + itemGap: 20, + textStyle: { + color: "rgba(0,0,0,, 0.87)", + fontSize: 14 + }, + selectedMode: 'single' + }, + // visualMap: { + // show: true, + // min: 0, + // max: 20, + // dimension: 6, + // inRange: { + // colorLightness: [0.5, 0.8] + // } + // }, + radar: { + indicator: [ + {name: 'AQI', max: 300}, + {name: 'PM2.5', max: 250}, + {name: 'PM10', max: 300}, + {name: 'CO', max: 5}, + {name: 'NO2', max: 200}, + {name: 'SO2', max: 100} + ], + shape: 'circle', + splitNumber: 5, + name: { + textStyle: { + color: 'rgba(0, 0, 0, 0.87)' + } + }, + splitLine: { + lineStyle: { + color: [ + 'rgba(238, 197, 102, 0.1)', 'rgba(238, 197, 102, 0.2)', + 'rgba(238, 197, 102, 0.4)', 'rgba(238, 197, 102, 0.6)', + 'rgba(238, 197, 102, 0.8)', 'rgba(238, 197, 102, 1)' + ].reverse() + } + }, + splitArea: { + show: false + }, + axisLine: { + lineStyle: { + color: 'rgba(238, 197, 102, 0.5)' + } + } + }, + series: [ + { + name: 'Mango', + type: 'radar', + lineStyle: lineStyle, + data: dataBJ, + symbol: 'none', + itemStyle: { + normal: { + color: 'rgba(15, 21, 77, 0.8)' + } + }, + areaStyle: { + normal: { + opacity: 0.1 + } + } + }, + { + name: 'Banana', + type: 'radar', + lineStyle: lineStyle, + data: dataSH, + symbol: 'none', + itemStyle: { + normal: { + color: '#FFC107' + } + }, + areaStyle: { + normal: { + opacity: 0.05 + } + } + }, + { + name: 'Litchi', + type: 'radar', + lineStyle: lineStyle, + data: dataGZ, + symbol: 'none', + itemStyle: { + normal: { + color: '#03A9F4' + } + }, + areaStyle: { + normal: { + opacity: 0.05 + } + } + } + ] +}; +} + +} diff --git a/src/assets/examples/chart/index.ts b/src/assets/examples/chart/index.ts new file mode 100644 index 0000000..890e0e5 --- /dev/null +++ b/src/assets/examples/chart/index.ts @@ -0,0 +1,48 @@ +import { EchartPieComponent } from "./echart-pie/echart-pie.component"; +import { EchartBarComponent } from "./echart-bar/echart-bar.component"; +import { EchartHeatmapComponent } from "./echart-heatmap/echart-heatmap.component"; +import { EchartRadarComponent } from "./echart-radar/echart-radar.component"; + +// ng g c ../assets/examples/chart/ --skip-import + +export const CHART_EXAMPLE_COMPONENT_MAP = { + 'pie': [ + 'echart-pie', + ], + 'bar': [ + 'echart-bar' + ], + 'heatmap': [ + 'echart-heatmap' + ], + 'radar': [ + 'echart-radar' + ] +} + +export const CHART_EXAMPLE_COMPONENTS = { + 'echart-pie': { + title: 'Echart Pie', + component: EchartPieComponent + }, + 'echart-bar': { + title: 'Echart Bar', + component: EchartBarComponent + }, + 'echart-heatmap': { + title: 'Echart Heatmap', + component: EchartHeatmapComponent + }, + 'echart-radar': { + title: 'Echart Radar', + component: EchartRadarComponent + }, + +} + +export const CHART_EXAMPLE_COMPONENT_LIST = [ + EchartPieComponent, + EchartBarComponent, + EchartHeatmapComponent, + EchartRadarComponent +] \ No newline at end of file diff --git a/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.html b/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.html new file mode 100644 index 0000000..c76cdf8 --- /dev/null +++ b/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.html @@ -0,0 +1,69 @@ + + + + + Personal data + + + Type your name and age + account_circle + + + + + + + + + + + + + + + + + + + + Destination + + + Type the country name + map + + + + + + + + + + + + + + + + + Day of the trip + + + Inform the date you wish to travel + date_range + + + + + + + + + + + + + + + diff --git a/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.scss b/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.scss new file mode 100644 index 0000000..dadd684 --- /dev/null +++ b/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.scss @@ -0,0 +1,13 @@ +.example-headers-align .mat-expansion-panel-header-title, +.example-headers-align .mat-expansion-panel-header-description { + flex-basis: 0; +} + +.example-headers-align .mat-expansion-panel-header-description { + justify-content: space-between; + align-items: center; +} + +mat-form-field { + margin-right: 12px; +} diff --git a/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.spec.ts b/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.spec.ts new file mode 100644 index 0000000..22bfa17 --- /dev/null +++ b/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AccordinExpansionPanelComponent } from './accordin-expansion-panel.component'; + +describe('AccordinExpansionPanelComponent', () => { + let component: AccordinExpansionPanelComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AccordinExpansionPanelComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AccordinExpansionPanelComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.ts b/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.ts new file mode 100644 index 0000000..517c748 --- /dev/null +++ b/src/assets/examples/material/accordin-expansion-panel/accordin-expansion-panel.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-accordin-expansion-panel', + templateUrl: './accordin-expansion-panel.component.html', + styleUrls: ['./accordin-expansion-panel.component.scss'] +}) +export class AccordinExpansionPanelComponent implements OnInit { + + step = 0; + + setStep(index: number) { + this.step = index; + } + + nextStep() { + this.step++; + } + + prevStep() { + this.step--; + } + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/align-tab-group/align-tab-group.component.html b/src/assets/examples/material/align-tab-group/align-tab-group.component.html new file mode 100644 index 0000000..a65b5e8 --- /dev/null +++ b/src/assets/examples/material/align-tab-group/align-tab-group.component.html @@ -0,0 +1,18 @@ + + Content 1 + Content 2 + Content 3 + + + + Content 1 + Content 2 + Content 3 + + + + Content 1 + Content 2 + Content 3 + + \ No newline at end of file diff --git a/src/assets/examples/material/align-tab-group/align-tab-group.component.scss b/src/assets/examples/material/align-tab-group/align-tab-group.component.scss new file mode 100644 index 0000000..39901a6 --- /dev/null +++ b/src/assets/examples/material/align-tab-group/align-tab-group.component.scss @@ -0,0 +1,4 @@ +.mat-tab-group { + margin-bottom: 48px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/align-tab-group/align-tab-group.component.spec.ts b/src/assets/examples/material/align-tab-group/align-tab-group.component.spec.ts new file mode 100644 index 0000000..8b4ecb3 --- /dev/null +++ b/src/assets/examples/material/align-tab-group/align-tab-group.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AlignTabGroupComponent } from './align-tab-group.component'; + +describe('AlignTabGroupComponent', () => { + let component: AlignTabGroupComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AlignTabGroupComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AlignTabGroupComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/align-tab-group/align-tab-group.component.ts b/src/assets/examples/material/align-tab-group/align-tab-group.component.ts new file mode 100644 index 0000000..3a4360c --- /dev/null +++ b/src/assets/examples/material/align-tab-group/align-tab-group.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-align-tab-group', + templateUrl: './align-tab-group.component.html', + styleUrls: ['./align-tab-group.component.scss'] +}) +export class AlignTabGroupComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/animation-tab-group/animation-tab-group.component.html b/src/assets/examples/material/animation-tab-group/animation-tab-group.component.html new file mode 100644 index 0000000..4feae22 --- /dev/null +++ b/src/assets/examples/material/animation-tab-group/animation-tab-group.component.html @@ -0,0 +1,14 @@ +

No animation

+ + + Content 1 + Content 2 + Content 3 + + +

Very slow animation

+ + Content 1 + Content 2 + Content 3 + diff --git a/src/assets/examples/material/animation-tab-group/animation-tab-group.component.scss b/src/assets/examples/material/animation-tab-group/animation-tab-group.component.scss new file mode 100644 index 0000000..39901a6 --- /dev/null +++ b/src/assets/examples/material/animation-tab-group/animation-tab-group.component.scss @@ -0,0 +1,4 @@ +.mat-tab-group { + margin-bottom: 48px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/animation-tab-group/animation-tab-group.component.spec.ts b/src/assets/examples/material/animation-tab-group/animation-tab-group.component.spec.ts new file mode 100644 index 0000000..54a67e9 --- /dev/null +++ b/src/assets/examples/material/animation-tab-group/animation-tab-group.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AnimationTabGroupComponent } from './animation-tab-group.component'; + +describe('AnimationTabGroupComponent', () => { + let component: AnimationTabGroupComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AnimationTabGroupComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AnimationTabGroupComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/animation-tab-group/animation-tab-group.component.ts b/src/assets/examples/material/animation-tab-group/animation-tab-group.component.ts new file mode 100644 index 0000000..5c06f60 --- /dev/null +++ b/src/assets/examples/material/animation-tab-group/animation-tab-group.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-animation-tab-group', + templateUrl: './animation-tab-group.component.html', + styleUrls: ['./animation-tab-group.component.scss'] +}) +export class AnimationTabGroupComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/appearance-form-field/appearance-form-field.component.html b/src/assets/examples/material/appearance-form-field/appearance-form-field.component.html new file mode 100644 index 0000000..4ccce92 --- /dev/null +++ b/src/assets/examples/material/appearance-form-field/appearance-form-field.component.html @@ -0,0 +1,32 @@ +

+ + Legacy form field + + sentiment_very_satisfied + Hint + +

+

+ + Standard form field + + sentiment_very_satisfied + Hint + +

+

+ + Fill form field + + sentiment_very_satisfied + Hint + +

+

+ + Outline form field + + sentiment_very_satisfied + Hint + +

diff --git a/src/assets/examples/material/appearance-form-field/appearance-form-field.component.scss b/src/assets/examples/material/appearance-form-field/appearance-form-field.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/appearance-form-field/appearance-form-field.component.spec.ts b/src/assets/examples/material/appearance-form-field/appearance-form-field.component.spec.ts new file mode 100644 index 0000000..15bdcbd --- /dev/null +++ b/src/assets/examples/material/appearance-form-field/appearance-form-field.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AppearanceFormFieldComponent } from './appearance-form-field.component'; + +describe('AppearanceFormFieldComponent', () => { + let component: AppearanceFormFieldComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AppearanceFormFieldComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AppearanceFormFieldComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/appearance-form-field/appearance-form-field.component.ts b/src/assets/examples/material/appearance-form-field/appearance-form-field.component.ts new file mode 100644 index 0000000..6a0076e --- /dev/null +++ b/src/assets/examples/material/appearance-form-field/appearance-form-field.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-appearance-form-field', + templateUrl: './appearance-form-field.component.html', + styleUrls: ['./appearance-form-field.component.scss'] +}) +export class AppearanceFormFieldComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.html b/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.html new file mode 100644 index 0000000..cd09f06 --- /dev/null +++ b/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.html @@ -0,0 +1,18 @@ + + + + {{positionOption}} + + + + +
+ +
diff --git a/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.scss b/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.scss new file mode 100644 index 0000000..f301120 --- /dev/null +++ b/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.scss @@ -0,0 +1,11 @@ +.example-button { + display: block; + margin: 80px auto 400px; + } + + .example-container { + height: 200px; + overflow: auto; + border: 1px solid #ccc; + } + \ No newline at end of file diff --git a/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.spec.ts b/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.spec.ts new file mode 100644 index 0000000..106d9cc --- /dev/null +++ b/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AutoHideTooltipComponent } from './auto-hide-tooltip.component'; + +describe('AutoHideTooltipComponent', () => { + let component: AutoHideTooltipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AutoHideTooltipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AutoHideTooltipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.ts b/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.ts new file mode 100644 index 0000000..afc1668 --- /dev/null +++ b/src/assets/examples/material/auto-hide-tooltip/auto-hide-tooltip.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; +import { TooltipPosition } from '@angular/material/tooltip'; + +@Component({ + selector: 'app-auto-hide-tooltip', + templateUrl: './auto-hide-tooltip.component.html', + styleUrls: ['./auto-hide-tooltip.component.scss'] +}) +export class AutoHideTooltipComponent implements OnInit { + + positionOptions: TooltipPosition[] = ['below', 'above', 'left', 'right']; + position = new FormControl(this.positionOptions[0]); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.html b/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.html new file mode 100644 index 0000000..761214c --- /dev/null +++ b/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.html @@ -0,0 +1,20 @@ + + Font size + + 10px + 12px + 14px + 16px + 18px + 20px + + + + + Autosize textarea + + diff --git a/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.scss b/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.scss new file mode 100644 index 0000000..692ed8c --- /dev/null +++ b/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.scss @@ -0,0 +1,4 @@ +mat-form-field { + margin-right: 12px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.spec.ts b/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.spec.ts new file mode 100644 index 0000000..23bdf50 --- /dev/null +++ b/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AutoResizingTexareaComponent } from './auto-resizing-texarea.component'; + +describe('AutoResizingTexareaComponent', () => { + let component: AutoResizingTexareaComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AutoResizingTexareaComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AutoResizingTexareaComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.ts b/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.ts new file mode 100644 index 0000000..3b413da --- /dev/null +++ b/src/assets/examples/material/auto-resizing-texarea/auto-resizing-texarea.component.ts @@ -0,0 +1,24 @@ +import { Component, OnInit } from "@angular/core"; +import { CdkTextareaAutosize } from "@angular/cdk/text-field"; +import { NgZone, ViewChild } from "@angular/core"; +import { take } from "rxjs/operators"; + +@Component({ + selector: "app-auto-resizing-texarea", + templateUrl: "./auto-resizing-texarea.component.html", + styleUrls: ["./auto-resizing-texarea.component.scss"] +}) +export class AutoResizingTexareaComponent implements OnInit { + constructor(private ngZone: NgZone) {} + + @ViewChild("autosize") autosize: CdkTextareaAutosize; + + triggerResize() { + // Wait for changes to be applied, then trigger textarea resize. + this.ngZone.onStable + .pipe(take(1)) + .subscribe(() => this.autosize.resizeToFitContent(true)); + } + + ngOnInit() {} +} diff --git a/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.html b/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.html new file mode 100644 index 0000000..0a5901d --- /dev/null +++ b/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.html @@ -0,0 +1,27 @@ + + + + {{fruit}} + cancel + + + + + + {{fruit}} + + + + \ No newline at end of file diff --git a/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.scss b/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.scss new file mode 100644 index 0000000..df15c4b --- /dev/null +++ b/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.scss @@ -0,0 +1,6 @@ +.example-chip-list { + width: 100%; + } + .mat-chip:not(.mat-basic-chip) { + display: flex; + } \ No newline at end of file diff --git a/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.spec.ts b/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.spec.ts new file mode 100644 index 0000000..dff5342 --- /dev/null +++ b/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AutocompleteChipComponent } from './autocomplete-chip.component'; + +describe('AutocompleteChipComponent', () => { + let component: AutocompleteChipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AutocompleteChipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AutocompleteChipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.ts b/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.ts new file mode 100644 index 0000000..d708407 --- /dev/null +++ b/src/assets/examples/material/autocomplete-chip/autocomplete-chip.component.ts @@ -0,0 +1,74 @@ +import {COMMA, ENTER} from '@angular/cdk/keycodes'; +import {Component, ElementRef, ViewChild} from '@angular/core'; +import {FormControl} from '@angular/forms'; +import { MatAutocompleteSelectedEvent, MatAutocomplete } from '@angular/material/autocomplete'; +import { MatChipInputEvent } from '@angular/material/chips'; +import {Observable} from 'rxjs'; +import {map, startWith} from 'rxjs/operators'; + +@Component({ + selector: 'app-autocomplete-chip', + templateUrl: './autocomplete-chip.component.html', + styleUrls: ['./autocomplete-chip.component.scss'] +}) +export class AutocompleteChipComponent{ + visible = true; + selectable = true; + removable = true; + addOnBlur = true; + separatorKeysCodes: number[] = [ENTER, COMMA]; + fruitCtrl = new FormControl(); + filteredFruits: Observable; + fruits: string[] = ['Lemon']; + allFruits: string[] = ['Apple', 'Lemon', 'Lime', 'Orange', 'Strawberry']; + + @ViewChild('fruitInput') fruitInput: ElementRef; + @ViewChild('auto') matAutocomplete: MatAutocomplete; + + constructor() { + this.filteredFruits = this.fruitCtrl.valueChanges.pipe( + startWith(null), + map((fruit: string | null) => fruit ? this._filter(fruit) : this.allFruits.slice())); + } + + add(event: MatChipInputEvent): void { + // Add fruit only when MatAutocomplete is not open + // To make sure this does not conflict with OptionSelected Event + if (!this.matAutocomplete.isOpen) { + const input = event.input; + const value = event.value; + + // Add our fruit + if ((value || '').trim()) { + this.fruits.push(value.trim()); + } + + // Reset the input value + if (input) { + input.value = ''; + } + + this.fruitCtrl.setValue(null); + } + } + + remove(fruit: string): void { + const index = this.fruits.indexOf(fruit); + + if (index >= 0) { + this.fruits.splice(index, 1); + } + } + + selected(event: MatAutocompleteSelectedEvent): void { + this.fruits.push(event.option.viewValue); + this.fruitInput.nativeElement.value = ''; + this.fruitCtrl.setValue(null); + } + + private _filter(value: string): string[] { + const filterValue = value.toLowerCase(); + + return this.allFruits.filter(fruit => fruit.toLowerCase().indexOf(filterValue) === 0); + } +} diff --git a/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.html b/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.html new file mode 100644 index 0000000..09ab07f --- /dev/null +++ b/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.html @@ -0,0 +1,20 @@ +
+ + + + + + {{state.name}} | + Population: {{state.population}} + + + + +
+ + + Disable Input? + +
diff --git a/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.scss b/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.scss new file mode 100644 index 0000000..3957a6e --- /dev/null +++ b/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.scss @@ -0,0 +1,20 @@ +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; + } + + .example-full-width { + width: 100%; + } + + .example-option-img { + vertical-align: middle; + margin-right: 8px; + } + + [dir='rtl'] .example-option-img { + margin-right: 0; + margin-left: 8px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.spec.ts b/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.spec.ts new file mode 100644 index 0000000..020b3f4 --- /dev/null +++ b/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AutocompleteOverviewComponent } from './autocomplete-overview.component'; + +describe('AutocompleteOverviewComponent', () => { + let component: AutocompleteOverviewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AutocompleteOverviewComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AutocompleteOverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.ts b/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.ts new file mode 100644 index 0000000..9dbf0af --- /dev/null +++ b/src/assets/examples/material/autocomplete-overview/autocomplete-overview.component.ts @@ -0,0 +1,63 @@ +import {Component} from '@angular/core'; +import {FormControl} from '@angular/forms'; +import {Observable} from 'rxjs'; +import {map, startWith} from 'rxjs/operators'; + +export interface State { + flag: string; + name: string; + population: string; +} + +@Component({ + selector: 'app-autocomplete-overview', + templateUrl: './autocomplete-overview.component.html', + styleUrls: ['./autocomplete-overview.component.scss'] +}) +export class AutocompleteOverviewComponent { + + stateCtrl = new FormControl(); + filteredStates: Observable; + + states: State[] = [ + { + name: 'Arkansas', + population: '2.978M', + // https://commons.wikimedia.org/wiki/File:Flag_of_Arkansas.svg + flag: 'https://upload.wikimedia.org/wikipedia/commons/9/9d/Flag_of_Arkansas.svg' + }, + { + name: 'California', + population: '39.14M', + // https://commons.wikimedia.org/wiki/File:Flag_of_California.svg + flag: 'https://upload.wikimedia.org/wikipedia/commons/0/01/Flag_of_California.svg' + }, + { + name: 'Florida', + population: '20.27M', + // https://commons.wikimedia.org/wiki/File:Flag_of_Florida.svg + flag: 'https://upload.wikimedia.org/wikipedia/commons/f/f7/Flag_of_Florida.svg' + }, + { + name: 'Texas', + population: '27.47M', + // https://commons.wikimedia.org/wiki/File:Flag_of_Texas.svg + flag: 'https://upload.wikimedia.org/wikipedia/commons/f/f7/Flag_of_Texas.svg' + } + ]; + + constructor() { + this.filteredStates = this.stateCtrl.valueChanges + .pipe( + startWith(''), + map(state => state ? this._filterStates(state) : this.states.slice()) + ); + } + + private _filterStates(value: string): State[] { + const filterValue = value.toLowerCase(); + + return this.states.filter(state => state.name.toLowerCase().indexOf(filterValue) === 0); + } + +} diff --git a/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.html b/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.html new file mode 100644 index 0000000..f9326a3 --- /dev/null +++ b/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.html @@ -0,0 +1,16 @@ + + +

Auto-resizing sidenav

+

Lorem, ipsum dolor sit amet consectetur.

+ +
+ +
+ +
+ +
diff --git a/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.scss b/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.scss new file mode 100644 index 0000000..1629d12 --- /dev/null +++ b/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.scss @@ -0,0 +1,17 @@ +.example-container { + width: 500px; + height: 300px; + border: 1px solid rgba(0, 0, 0, 0.5); + } + + .example-sidenav-content { + display: flex; + height: 100%; + align-items: center; + justify-content: center; + } + + .example-sidenav { + padding: 20px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.spec.ts b/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.spec.ts new file mode 100644 index 0000000..7c25993 --- /dev/null +++ b/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AutoresizeSidenavComponent } from './autoresize-sidenav.component'; + +describe('AutoresizeSidenavComponent', () => { + let component: AutoresizeSidenavComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AutoresizeSidenavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AutoresizeSidenavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.ts b/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.ts new file mode 100644 index 0000000..45736f2 --- /dev/null +++ b/src/assets/examples/material/autoresize-sidenav/autoresize-sidenav.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-autoresize-sidenav', + templateUrl: './autoresize-sidenav.component.html', + styleUrls: ['./autoresize-sidenav.component.scss'] +}) +export class AutoresizeSidenavComponent implements OnInit { + + showFiller = false; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-badge/basic-badge.component.html b/src/assets/examples/material/basic-badge/basic-badge.component.html new file mode 100644 index 0000000..3412708 --- /dev/null +++ b/src/assets/examples/material/basic-badge/basic-badge.component.html @@ -0,0 +1,22 @@ +

+ Text with a badge +

+ +

+ Button with a badge on the left + +

+ +

+ Icon with a badge + home + + + Example with a home icon with overlaid badge showing the number 15 + +

+ + \ No newline at end of file diff --git a/src/assets/examples/material/basic-badge/basic-badge.component.scss b/src/assets/examples/material/basic-badge/basic-badge.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-badge/basic-badge.component.spec.ts b/src/assets/examples/material/basic-badge/basic-badge.component.spec.ts new file mode 100644 index 0000000..bd171cf --- /dev/null +++ b/src/assets/examples/material/basic-badge/basic-badge.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicBadgeComponent } from './basic-badge.component'; + +describe('BasicBadgeComponent', () => { + let component: BasicBadgeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicBadgeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicBadgeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-badge/basic-badge.component.ts b/src/assets/examples/material/basic-badge/basic-badge.component.ts new file mode 100644 index 0000000..ad9223b --- /dev/null +++ b/src/assets/examples/material/basic-badge/basic-badge.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-badge', + templateUrl: './basic-badge.component.html', + styleUrls: ['./basic-badge.component.scss'] +}) +export class BasicBadgeComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-bar/basic-bar.component.html b/src/assets/examples/material/basic-bar/basic-bar.component.html new file mode 100644 index 0000000..905e852 --- /dev/null +++ b/src/assets/examples/material/basic-bar/basic-bar.component.html @@ -0,0 +1 @@ + diff --git a/src/assets/examples/material/basic-bar/basic-bar.component.scss b/src/assets/examples/material/basic-bar/basic-bar.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-bar/basic-bar.component.spec.ts b/src/assets/examples/material/basic-bar/basic-bar.component.spec.ts new file mode 100644 index 0000000..a2fe1ec --- /dev/null +++ b/src/assets/examples/material/basic-bar/basic-bar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicBarComponent } from './basic-bar.component'; + +describe('BasicBarComponent', () => { + let component: BasicBarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicBarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicBarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-bar/basic-bar.component.ts b/src/assets/examples/material/basic-bar/basic-bar.component.ts new file mode 100644 index 0000000..be59eee --- /dev/null +++ b/src/assets/examples/material/basic-bar/basic-bar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-bar', + templateUrl: './basic-bar.component.html', + styleUrls: ['./basic-bar.component.scss'] +}) +export class BasicBarComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.html b/src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.html new file mode 100644 index 0000000..3a765e2 --- /dev/null +++ b/src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.html @@ -0,0 +1,6 @@ + + Bold + Italic + Underline + + \ No newline at end of file diff --git a/src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.scss b/src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.spec.ts b/src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.spec.ts new file mode 100644 index 0000000..e06f7b2 --- /dev/null +++ b/src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicButtonToggleComponent } from './basic-button-toggle.component'; + +describe('BasicButtonToggleComponent', () => { + let component: BasicButtonToggleComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicButtonToggleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicButtonToggleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.ts b/src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.ts new file mode 100644 index 0000000..cb23f85 --- /dev/null +++ b/src/assets/examples/material/basic-button-toggle/basic-button-toggle.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-button-toggle', + templateUrl: './basic-button-toggle.component.html', + styleUrls: ['./basic-button-toggle.component.scss'] +}) +export class BasicButtonToggleComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-card/basic-card.component.html b/src/assets/examples/material/basic-card/basic-card.component.html new file mode 100644 index 0000000..7745315 --- /dev/null +++ b/src/assets/examples/material/basic-card/basic-card.component.html @@ -0,0 +1 @@ +Simple card diff --git a/src/assets/examples/material/basic-card/basic-card.component.scss b/src/assets/examples/material/basic-card/basic-card.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-card/basic-card.component.spec.ts b/src/assets/examples/material/basic-card/basic-card.component.spec.ts new file mode 100644 index 0000000..8281a20 --- /dev/null +++ b/src/assets/examples/material/basic-card/basic-card.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicCardComponent } from './basic-card.component'; + +describe('BasicCardComponent', () => { + let component: BasicCardComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicCardComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicCardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-card/basic-card.component.ts b/src/assets/examples/material/basic-card/basic-card.component.ts new file mode 100644 index 0000000..4a35c08 --- /dev/null +++ b/src/assets/examples/material/basic-card/basic-card.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-card', + templateUrl: './basic-card.component.html', + styleUrls: ['./basic-card.component.scss'] +}) +export class BasicCardComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-checkbox/basic-checkbox.component.html b/src/assets/examples/material/basic-checkbox/basic-checkbox.component.html new file mode 100644 index 0000000..b5b049f --- /dev/null +++ b/src/assets/examples/material/basic-checkbox/basic-checkbox.component.html @@ -0,0 +1 @@ +Check me! diff --git a/src/assets/examples/material/basic-checkbox/basic-checkbox.component.scss b/src/assets/examples/material/basic-checkbox/basic-checkbox.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-checkbox/basic-checkbox.component.spec.ts b/src/assets/examples/material/basic-checkbox/basic-checkbox.component.spec.ts new file mode 100644 index 0000000..7164f70 --- /dev/null +++ b/src/assets/examples/material/basic-checkbox/basic-checkbox.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicCheckboxComponent } from './basic-checkbox.component'; + +describe('BasicCheckboxComponent', () => { + let component: BasicCheckboxComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicCheckboxComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicCheckboxComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-checkbox/basic-checkbox.component.ts b/src/assets/examples/material/basic-checkbox/basic-checkbox.component.ts new file mode 100644 index 0000000..7cf788a --- /dev/null +++ b/src/assets/examples/material/basic-checkbox/basic-checkbox.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-checkbox', + templateUrl: './basic-checkbox.component.html', + styleUrls: ['./basic-checkbox.component.scss'] +}) +export class BasicCheckboxComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-chip/basic-chip.component.html b/src/assets/examples/material/basic-chip/basic-chip.component.html new file mode 100644 index 0000000..6307166 --- /dev/null +++ b/src/assets/examples/material/basic-chip/basic-chip.component.html @@ -0,0 +1,7 @@ + + One fish + Two fish + Primary fish + Accent fish + + \ No newline at end of file diff --git a/src/assets/examples/material/basic-chip/basic-chip.component.scss b/src/assets/examples/material/basic-chip/basic-chip.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-chip/basic-chip.component.spec.ts b/src/assets/examples/material/basic-chip/basic-chip.component.spec.ts new file mode 100644 index 0000000..5b2e46d --- /dev/null +++ b/src/assets/examples/material/basic-chip/basic-chip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicChipComponent } from './basic-chip.component'; + +describe('BasicChipComponent', () => { + let component: BasicChipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicChipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicChipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-chip/basic-chip.component.ts b/src/assets/examples/material/basic-chip/basic-chip.component.ts new file mode 100644 index 0000000..e87a3c5 --- /dev/null +++ b/src/assets/examples/material/basic-chip/basic-chip.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-chip', + templateUrl: './basic-chip.component.html', + styleUrls: ['./basic-chip.component.scss'] +}) +export class BasicChipComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-datepicker/basic-datepicker.component.html b/src/assets/examples/material/basic-datepicker/basic-datepicker.component.html new file mode 100644 index 0000000..f828805 --- /dev/null +++ b/src/assets/examples/material/basic-datepicker/basic-datepicker.component.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/examples/material/basic-datepicker/basic-datepicker.component.scss b/src/assets/examples/material/basic-datepicker/basic-datepicker.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-datepicker/basic-datepicker.component.spec.ts b/src/assets/examples/material/basic-datepicker/basic-datepicker.component.spec.ts new file mode 100644 index 0000000..15c395d --- /dev/null +++ b/src/assets/examples/material/basic-datepicker/basic-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicDatepickerComponent } from './basic-datepicker.component'; + +describe('BasicDatepickerComponent', () => { + let component: BasicDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-datepicker/basic-datepicker.component.ts b/src/assets/examples/material/basic-datepicker/basic-datepicker.component.ts new file mode 100644 index 0000000..4e87673 --- /dev/null +++ b/src/assets/examples/material/basic-datepicker/basic-datepicker.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-datepicker', + templateUrl: './basic-datepicker.component.html', + styleUrls: ['./basic-datepicker.component.scss'] +}) +export class BasicDatepickerComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.html b/src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.html new file mode 100644 index 0000000..daa6744 --- /dev/null +++ b/src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.html @@ -0,0 +1,11 @@ +

Hi {{data.name}}

+
+

What's your favorite animal?

+ + + +
+
+ + +
diff --git a/src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.scss b/src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.spec.ts b/src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.spec.ts new file mode 100644 index 0000000..47a8029 --- /dev/null +++ b/src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicDialogOverviewComponent } from './basic-dialog-overview.component'; + +describe('BasicDialogOverviewComponent', () => { + let component: BasicDialogOverviewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicDialogOverviewComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicDialogOverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.ts b/src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.ts new file mode 100644 index 0000000..afe8a56 --- /dev/null +++ b/src/assets/examples/material/basic-dialog/basic-dialog-overview/basic-dialog-overview.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +// import { any } from '../basic-dialog.component'; + +@Component({ + selector: 'app-basic-dialog-overview', + templateUrl: './basic-dialog-overview.component.html', + styleUrls: ['./basic-dialog-overview.component.scss'] +}) +export class BasicDialogOverviewComponent{ + + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: any) {} + + onNoClick(): void { + this.dialogRef.close(); + } + +} diff --git a/src/assets/examples/material/basic-dialog/basic-dialog.component.html b/src/assets/examples/material/basic-dialog/basic-dialog.component.html new file mode 100644 index 0000000..00e1485 --- /dev/null +++ b/src/assets/examples/material/basic-dialog/basic-dialog.component.html @@ -0,0 +1,13 @@ +
    +
  1. + + + +
  2. +
  3. + +
  4. +
  5. + You chose: {{animal}} +
  6. +
diff --git a/src/assets/examples/material/basic-dialog/basic-dialog.component.scss b/src/assets/examples/material/basic-dialog/basic-dialog.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-dialog/basic-dialog.component.spec.ts b/src/assets/examples/material/basic-dialog/basic-dialog.component.spec.ts new file mode 100644 index 0000000..dc8ca75 --- /dev/null +++ b/src/assets/examples/material/basic-dialog/basic-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicDialogComponent } from './basic-dialog.component'; + +describe('BasicDialogComponent', () => { + let component: BasicDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicDialogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-dialog/basic-dialog.component.ts b/src/assets/examples/material/basic-dialog/basic-dialog.component.ts new file mode 100644 index 0000000..4f6ee54 --- /dev/null +++ b/src/assets/examples/material/basic-dialog/basic-dialog.component.ts @@ -0,0 +1,34 @@ +import {Component} from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { BasicDialogOverviewComponent } from './basic-dialog-overview/basic-dialog-overview.component'; + +export interface DialogData { + animal: string; + name: string; +} + +@Component({ + selector: 'app-basic-dialog', + templateUrl: './basic-dialog.component.html', + styleUrls: ['./basic-dialog.component.scss'] +}) +export class BasicDialogComponent { + + animal: string; + name: string; + + constructor(public dialog: MatDialog) {} + + openDialog(): void { + const dialogRef = this.dialog.open(BasicDialogOverviewComponent, { + width: '250px', + data: {name: this.name, animal: this.animal} + }); + + dialogRef.afterClosed().subscribe(result => { + // console.log('The dialog was closed'); + this.animal = result; + }); + } + +} diff --git a/src/assets/examples/material/basic-divider/basic-divider.component.html b/src/assets/examples/material/basic-divider/basic-divider.component.html new file mode 100644 index 0000000..c0e121f --- /dev/null +++ b/src/assets/examples/material/basic-divider/basic-divider.component.html @@ -0,0 +1,7 @@ + + Item 1 + + Item 2 + + Item 3 + diff --git a/src/assets/examples/material/basic-divider/basic-divider.component.scss b/src/assets/examples/material/basic-divider/basic-divider.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-divider/basic-divider.component.spec.ts b/src/assets/examples/material/basic-divider/basic-divider.component.spec.ts new file mode 100644 index 0000000..510d4a0 --- /dev/null +++ b/src/assets/examples/material/basic-divider/basic-divider.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicDividerComponent } from './basic-divider.component'; + +describe('BasicDividerComponent', () => { + let component: BasicDividerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicDividerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicDividerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-divider/basic-divider.component.ts b/src/assets/examples/material/basic-divider/basic-divider.component.ts new file mode 100644 index 0000000..0831ec3 --- /dev/null +++ b/src/assets/examples/material/basic-divider/basic-divider.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-divider', + templateUrl: './basic-divider.component.html', + styleUrls: ['./basic-divider.component.scss'] +}) +export class BasicDividerComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.html b/src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.html new file mode 100644 index 0000000..8ba383c --- /dev/null +++ b/src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.html @@ -0,0 +1,32 @@ + + + + + Personal data + + + Type your name and age + + + + + + + + + + + + + + + Self aware panel + + + Currently I am {{panelOpenState ? 'open' : 'closed'}} + + +

I'm visible because I am open

+
+
diff --git a/src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.scss b/src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.spec.ts b/src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.spec.ts new file mode 100644 index 0000000..02cafaf --- /dev/null +++ b/src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicExpansionPanelComponent } from './basic-expansion-panel.component'; + +describe('BasicExpansionPanelComponent', () => { + let component: BasicExpansionPanelComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicExpansionPanelComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicExpansionPanelComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.ts b/src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.ts new file mode 100644 index 0000000..417e8a9 --- /dev/null +++ b/src/assets/examples/material/basic-expansion-panel/basic-expansion-panel.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-expansion-panel', + templateUrl: './basic-expansion-panel.component.html', + styleUrls: ['./basic-expansion-panel.component.scss'] +}) +export class BasicExpansionPanelComponent implements OnInit { + + panelOpenState = false; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-grid/basic-grid.component.html b/src/assets/examples/material/basic-grid/basic-grid.component.html new file mode 100644 index 0000000..ae33854 --- /dev/null +++ b/src/assets/examples/material/basic-grid/basic-grid.component.html @@ -0,0 +1,6 @@ + + 1 + 2 + 3 + 4 + diff --git a/src/assets/examples/material/basic-grid/basic-grid.component.scss b/src/assets/examples/material/basic-grid/basic-grid.component.scss new file mode 100644 index 0000000..1425732 --- /dev/null +++ b/src/assets/examples/material/basic-grid/basic-grid.component.scss @@ -0,0 +1,4 @@ +mat-grid-tile { + background: lightblue; + } + \ No newline at end of file diff --git a/src/assets/examples/material/basic-grid/basic-grid.component.spec.ts b/src/assets/examples/material/basic-grid/basic-grid.component.spec.ts new file mode 100644 index 0000000..cd2a165 --- /dev/null +++ b/src/assets/examples/material/basic-grid/basic-grid.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicGridComponent } from './basic-grid.component'; + +describe('BasicGridComponent', () => { + let component: BasicGridComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicGridComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicGridComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-grid/basic-grid.component.ts b/src/assets/examples/material/basic-grid/basic-grid.component.ts new file mode 100644 index 0000000..6ef9fc3 --- /dev/null +++ b/src/assets/examples/material/basic-grid/basic-grid.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-grid', + templateUrl: './basic-grid.component.html', + styleUrls: ['./basic-grid.component.scss'] +}) +export class BasicGridComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-icon/basic-icon.component.html b/src/assets/examples/material/basic-icon/basic-icon.component.html new file mode 100644 index 0000000..ac069be --- /dev/null +++ b/src/assets/examples/material/basic-icon/basic-icon.component.html @@ -0,0 +1 @@ +home diff --git a/src/assets/examples/material/basic-icon/basic-icon.component.scss b/src/assets/examples/material/basic-icon/basic-icon.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-icon/basic-icon.component.spec.ts b/src/assets/examples/material/basic-icon/basic-icon.component.spec.ts new file mode 100644 index 0000000..1f0fdc4 --- /dev/null +++ b/src/assets/examples/material/basic-icon/basic-icon.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicIconComponent } from './basic-icon.component'; + +describe('BasicIconComponent', () => { + let component: BasicIconComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicIconComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicIconComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-icon/basic-icon.component.ts b/src/assets/examples/material/basic-icon/basic-icon.component.ts new file mode 100644 index 0000000..32fbb3f --- /dev/null +++ b/src/assets/examples/material/basic-icon/basic-icon.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-icon', + templateUrl: './basic-icon.component.html', + styleUrls: ['./basic-icon.component.scss'] +}) +export class BasicIconComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-input/basic-input.component.html b/src/assets/examples/material/basic-input/basic-input.component.html new file mode 100644 index 0000000..5f3a09c --- /dev/null +++ b/src/assets/examples/material/basic-input/basic-input.component.html @@ -0,0 +1,9 @@ +
+ + + + + + + +
diff --git a/src/assets/examples/material/basic-input/basic-input.component.scss b/src/assets/examples/material/basic-input/basic-input.component.scss new file mode 100644 index 0000000..9a473b4 --- /dev/null +++ b/src/assets/examples/material/basic-input/basic-input.component.scss @@ -0,0 +1,10 @@ +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; + } + + .example-full-width { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/basic-input/basic-input.component.spec.ts b/src/assets/examples/material/basic-input/basic-input.component.spec.ts new file mode 100644 index 0000000..aeceda2 --- /dev/null +++ b/src/assets/examples/material/basic-input/basic-input.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicInputComponent } from './basic-input.component'; + +describe('BasicInputComponent', () => { + let component: BasicInputComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicInputComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-input/basic-input.component.ts b/src/assets/examples/material/basic-input/basic-input.component.ts new file mode 100644 index 0000000..e3e33ef --- /dev/null +++ b/src/assets/examples/material/basic-input/basic-input.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-input', + templateUrl: './basic-input.component.html', + styleUrls: ['./basic-input.component.scss'] +}) +export class BasicInputComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-list/basic-list.component.html b/src/assets/examples/material/basic-list/basic-list.component.html new file mode 100644 index 0000000..c177f87 --- /dev/null +++ b/src/assets/examples/material/basic-list/basic-list.component.html @@ -0,0 +1,5 @@ + + Item 1 + Item 2 + Item 3 + diff --git a/src/assets/examples/material/basic-list/basic-list.component.scss b/src/assets/examples/material/basic-list/basic-list.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-list/basic-list.component.spec.ts b/src/assets/examples/material/basic-list/basic-list.component.spec.ts new file mode 100644 index 0000000..ae2de9a --- /dev/null +++ b/src/assets/examples/material/basic-list/basic-list.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicListComponent } from './basic-list.component'; + +describe('BasicListComponent', () => { + let component: BasicListComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicListComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-list/basic-list.component.ts b/src/assets/examples/material/basic-list/basic-list.component.ts new file mode 100644 index 0000000..2cda02d --- /dev/null +++ b/src/assets/examples/material/basic-list/basic-list.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-list', + templateUrl: './basic-list.component.html', + styleUrls: ['./basic-list.component.scss'] +}) +export class BasicListComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-menu/basic-menu.component.html b/src/assets/examples/material/basic-menu/basic-menu.component.html new file mode 100644 index 0000000..64f76da --- /dev/null +++ b/src/assets/examples/material/basic-menu/basic-menu.component.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/examples/material/basic-menu/basic-menu.component.scss b/src/assets/examples/material/basic-menu/basic-menu.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-menu/basic-menu.component.spec.ts b/src/assets/examples/material/basic-menu/basic-menu.component.spec.ts new file mode 100644 index 0000000..a9defae --- /dev/null +++ b/src/assets/examples/material/basic-menu/basic-menu.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicMenuComponent } from './basic-menu.component'; + +describe('BasicMenuComponent', () => { + let component: BasicMenuComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicMenuComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicMenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-menu/basic-menu.component.ts b/src/assets/examples/material/basic-menu/basic-menu.component.ts new file mode 100644 index 0000000..8fb4797 --- /dev/null +++ b/src/assets/examples/material/basic-menu/basic-menu.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-menu', + templateUrl: './basic-menu.component.html', + styleUrls: ['./basic-menu.component.scss'] +}) +export class BasicMenuComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-paginator/basic-paginator.component.html b/src/assets/examples/material/basic-paginator/basic-paginator.component.html new file mode 100644 index 0000000..9269f3b --- /dev/null +++ b/src/assets/examples/material/basic-paginator/basic-paginator.component.html @@ -0,0 +1,4 @@ + + diff --git a/src/assets/examples/material/basic-paginator/basic-paginator.component.scss b/src/assets/examples/material/basic-paginator/basic-paginator.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-paginator/basic-paginator.component.spec.ts b/src/assets/examples/material/basic-paginator/basic-paginator.component.spec.ts new file mode 100644 index 0000000..73534bc --- /dev/null +++ b/src/assets/examples/material/basic-paginator/basic-paginator.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicPaginatorComponent } from './basic-paginator.component'; + +describe('BasicPaginatorComponent', () => { + let component: BasicPaginatorComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicPaginatorComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicPaginatorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-paginator/basic-paginator.component.ts b/src/assets/examples/material/basic-paginator/basic-paginator.component.ts new file mode 100644 index 0000000..dcff703 --- /dev/null +++ b/src/assets/examples/material/basic-paginator/basic-paginator.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-paginator', + templateUrl: './basic-paginator.component.html', + styleUrls: ['./basic-paginator.component.scss'] +}) +export class BasicPaginatorComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-radio/basic-radio.component.html b/src/assets/examples/material/basic-radio/basic-radio.component.html new file mode 100644 index 0000000..6e3bfae --- /dev/null +++ b/src/assets/examples/material/basic-radio/basic-radio.component.html @@ -0,0 +1,4 @@ + + Option 1 + Option 2 + diff --git a/src/assets/examples/material/basic-radio/basic-radio.component.scss b/src/assets/examples/material/basic-radio/basic-radio.component.scss new file mode 100644 index 0000000..26c8b53 --- /dev/null +++ b/src/assets/examples/material/basic-radio/basic-radio.component.scss @@ -0,0 +1,4 @@ +.mat-radio-button ~ .mat-radio-button { + margin-left: 16px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/basic-radio/basic-radio.component.spec.ts b/src/assets/examples/material/basic-radio/basic-radio.component.spec.ts new file mode 100644 index 0000000..1287e0c --- /dev/null +++ b/src/assets/examples/material/basic-radio/basic-radio.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicRadioComponent } from './basic-radio.component'; + +describe('BasicRadioComponent', () => { + let component: BasicRadioComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicRadioComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicRadioComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-radio/basic-radio.component.ts b/src/assets/examples/material/basic-radio/basic-radio.component.ts new file mode 100644 index 0000000..bdb0c00 --- /dev/null +++ b/src/assets/examples/material/basic-radio/basic-radio.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-radio', + templateUrl: './basic-radio.component.html', + styleUrls: ['./basic-radio.component.scss'] +}) +export class BasicRadioComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-select/basic-select.component.html b/src/assets/examples/material/basic-select/basic-select.component.html new file mode 100644 index 0000000..d7df828 --- /dev/null +++ b/src/assets/examples/material/basic-select/basic-select.component.html @@ -0,0 +1,20 @@ +

Basic mat-select

+ + Favorite food + + + {{food.viewValue}} + + + + +

Basic native select

+ + Cars + + diff --git a/src/assets/examples/material/basic-select/basic-select.component.scss b/src/assets/examples/material/basic-select/basic-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-select/basic-select.component.spec.ts b/src/assets/examples/material/basic-select/basic-select.component.spec.ts new file mode 100644 index 0000000..8933cae --- /dev/null +++ b/src/assets/examples/material/basic-select/basic-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicSelectComponent } from './basic-select.component'; + +describe('BasicSelectComponent', () => { + let component: BasicSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-select/basic-select.component.ts b/src/assets/examples/material/basic-select/basic-select.component.ts new file mode 100644 index 0000000..311c485 --- /dev/null +++ b/src/assets/examples/material/basic-select/basic-select.component.ts @@ -0,0 +1,26 @@ +import { Component, OnInit } from '@angular/core'; + +export interface Food { + value: string; + viewValue: string; +} + +@Component({ + selector: 'app-basic-select', + templateUrl: './basic-select.component.html', + styleUrls: ['./basic-select.component.scss'] +}) +export class BasicSelectComponent implements OnInit { + + foods: Food[] = [ + {value: 'steak-0', viewValue: 'Steak'}, + {value: 'pizza-1', viewValue: 'Pizza'}, + {value: 'tacos-2', viewValue: 'Tacos'} + ]; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-sidenav/basic-sidenav.component.html b/src/assets/examples/material/basic-sidenav/basic-sidenav.component.html new file mode 100644 index 0000000..3037dae --- /dev/null +++ b/src/assets/examples/material/basic-sidenav/basic-sidenav.component.html @@ -0,0 +1,12 @@ + + Sidenav content + + Main content
+ Main content
+ Main content
+ Main content
+ Main content
+ Main content
+ Main content
+
+
\ No newline at end of file diff --git a/src/assets/examples/material/basic-sidenav/basic-sidenav.component.scss b/src/assets/examples/material/basic-sidenav/basic-sidenav.component.scss new file mode 100644 index 0000000..effc6d9 --- /dev/null +++ b/src/assets/examples/material/basic-sidenav/basic-sidenav.component.scss @@ -0,0 +1,10 @@ +.example-container { + // position: absolute; + // top: 0; + // bottom: 0; + // left: 0; + // right: 0; + background: #eee; + min-height: 200px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/basic-sidenav/basic-sidenav.component.spec.ts b/src/assets/examples/material/basic-sidenav/basic-sidenav.component.spec.ts new file mode 100644 index 0000000..a3ddc39 --- /dev/null +++ b/src/assets/examples/material/basic-sidenav/basic-sidenav.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicSidenavComponent } from './basic-sidenav.component'; + +describe('BasicSidenavComponent', () => { + let component: BasicSidenavComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicSidenavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicSidenavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-sidenav/basic-sidenav.component.ts b/src/assets/examples/material/basic-sidenav/basic-sidenav.component.ts new file mode 100644 index 0000000..3d5787a --- /dev/null +++ b/src/assets/examples/material/basic-sidenav/basic-sidenav.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-sidenav', + templateUrl: './basic-sidenav.component.html', + styleUrls: ['./basic-sidenav.component.scss'] +}) +export class BasicSidenavComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-slider/basic-slider.component.html b/src/assets/examples/material/basic-slider/basic-slider.component.html new file mode 100644 index 0000000..49162f5 --- /dev/null +++ b/src/assets/examples/material/basic-slider/basic-slider.component.html @@ -0,0 +1 @@ + diff --git a/src/assets/examples/material/basic-slider/basic-slider.component.scss b/src/assets/examples/material/basic-slider/basic-slider.component.scss new file mode 100644 index 0000000..d7863cb --- /dev/null +++ b/src/assets/examples/material/basic-slider/basic-slider.component.scss @@ -0,0 +1,5 @@ +/** No CSS for this example */ +mat-slider { + width: 300px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/basic-slider/basic-slider.component.spec.ts b/src/assets/examples/material/basic-slider/basic-slider.component.spec.ts new file mode 100644 index 0000000..c14d6a3 --- /dev/null +++ b/src/assets/examples/material/basic-slider/basic-slider.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicSliderComponent } from './basic-slider.component'; + +describe('BasicSliderComponent', () => { + let component: BasicSliderComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicSliderComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicSliderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-slider/basic-slider.component.ts b/src/assets/examples/material/basic-slider/basic-slider.component.ts new file mode 100644 index 0000000..4b7917d --- /dev/null +++ b/src/assets/examples/material/basic-slider/basic-slider.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-slider', + templateUrl: './basic-slider.component.html', + styleUrls: ['./basic-slider.component.scss'] +}) +export class BasicSliderComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-snackbar/basic-snackbar.component.html b/src/assets/examples/material/basic-snackbar/basic-snackbar.component.html new file mode 100644 index 0000000..6706529 --- /dev/null +++ b/src/assets/examples/material/basic-snackbar/basic-snackbar.component.html @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/examples/material/basic-snackbar/basic-snackbar.component.scss b/src/assets/examples/material/basic-snackbar/basic-snackbar.component.scss new file mode 100644 index 0000000..692ed8c --- /dev/null +++ b/src/assets/examples/material/basic-snackbar/basic-snackbar.component.scss @@ -0,0 +1,4 @@ +mat-form-field { + margin-right: 12px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/basic-snackbar/basic-snackbar.component.spec.ts b/src/assets/examples/material/basic-snackbar/basic-snackbar.component.spec.ts new file mode 100644 index 0000000..b46517e --- /dev/null +++ b/src/assets/examples/material/basic-snackbar/basic-snackbar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicSnackbarComponent } from './basic-snackbar.component'; + +describe('BasicSnackbarComponent', () => { + let component: BasicSnackbarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicSnackbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicSnackbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-snackbar/basic-snackbar.component.ts b/src/assets/examples/material/basic-snackbar/basic-snackbar.component.ts new file mode 100644 index 0000000..c096320 --- /dev/null +++ b/src/assets/examples/material/basic-snackbar/basic-snackbar.component.ts @@ -0,0 +1,22 @@ +import { Component, OnInit } from '@angular/core'; +import { MatSnackBar } from '@angular/material/snack-bar'; + +@Component({ + selector: 'app-basic-snackbar', + templateUrl: './basic-snackbar.component.html', + styleUrls: ['./basic-snackbar.component.scss'] +}) +export class BasicSnackbarComponent implements OnInit { + + constructor(private snackBar: MatSnackBar) {} + + openSnackBar(message: string, action: string) { + this.snackBar.open(message, action, { + duration: 2000, + }); + } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-sort-header/basic-sort-header.component.html b/src/assets/examples/material/basic-sort-header/basic-sort-header.component.html new file mode 100644 index 0000000..2b970af --- /dev/null +++ b/src/assets/examples/material/basic-sort-header/basic-sort-header.component.html @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +
Dessert (100g)CaloriesFat (g)Carbs (g)Protein (g)
{{dessert.name}}{{dessert.calories}}{{dessert.fat}}{{dessert.carbs}}{{dessert.protein}}
diff --git a/src/assets/examples/material/basic-sort-header/basic-sort-header.component.scss b/src/assets/examples/material/basic-sort-header/basic-sort-header.component.scss new file mode 100644 index 0000000..39c8953 --- /dev/null +++ b/src/assets/examples/material/basic-sort-header/basic-sort-header.component.scss @@ -0,0 +1,4 @@ +.mat-sort-header-container { + align-items: center; + } + \ No newline at end of file diff --git a/src/assets/examples/material/basic-sort-header/basic-sort-header.component.spec.ts b/src/assets/examples/material/basic-sort-header/basic-sort-header.component.spec.ts new file mode 100644 index 0000000..495b680 --- /dev/null +++ b/src/assets/examples/material/basic-sort-header/basic-sort-header.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicSortHeaderComponent } from './basic-sort-header.component'; + +describe('BasicSortHeaderComponent', () => { + let component: BasicSortHeaderComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicSortHeaderComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicSortHeaderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-sort-header/basic-sort-header.component.ts b/src/assets/examples/material/basic-sort-header/basic-sort-header.component.ts new file mode 100644 index 0000000..13ce7f7 --- /dev/null +++ b/src/assets/examples/material/basic-sort-header/basic-sort-header.component.ts @@ -0,0 +1,57 @@ +import { Component, OnInit } from '@angular/core'; +import { Sort } from '@angular/material/sort'; + +export interface Dessert { + calories: number; + carbs: number; + fat: number; + name: string; + protein: number; +} + +@Component({ + selector: 'app-basic-sort-header', + templateUrl: './basic-sort-header.component.html', + styleUrls: ['./basic-sort-header.component.scss'] +}) +export class BasicSortHeaderComponent{ + + desserts: Dessert[] = [ + {name: 'Frozen yogurt', calories: 159, fat: 6, carbs: 24, protein: 4}, + {name: 'Ice cream sandwich', calories: 237, fat: 9, carbs: 37, protein: 4}, + {name: 'Eclair', calories: 262, fat: 16, carbs: 24, protein: 6}, + {name: 'Cupcake', calories: 305, fat: 4, carbs: 67, protein: 4}, + {name: 'Gingerbread', calories: 356, fat: 16, carbs: 49, protein: 4}, + ]; + + sortedData: Dessert[]; + + constructor() { + this.sortedData = this.desserts.slice(); + } + + sortData(sort: Sort) { + const data = this.desserts.slice(); + if (!sort.active || sort.direction === '') { + this.sortedData = data; + return; + } + + this.sortedData = data.sort((a, b) => { + const isAsc = sort.direction === 'asc'; + switch (sort.active) { + case 'name': return compare(a.name, b.name, isAsc); + case 'calories': return compare(a.calories, b.calories, isAsc); + case 'fat': return compare(a.fat, b.fat, isAsc); + case 'carbs': return compare(a.carbs, b.carbs, isAsc); + case 'protein': return compare(a.protein, b.protein, isAsc); + default: return 0; + } + }); + } +} + +function compare(a: number | string, b: number | string, isAsc: boolean) { + return (a < b ? -1 : 1) * (isAsc ? 1 : -1); + +} diff --git a/src/assets/examples/material/basic-spinner/basic-spinner.component.html b/src/assets/examples/material/basic-spinner/basic-spinner.component.html new file mode 100644 index 0000000..34e51f7 --- /dev/null +++ b/src/assets/examples/material/basic-spinner/basic-spinner.component.html @@ -0,0 +1 @@ + diff --git a/src/assets/examples/material/basic-spinner/basic-spinner.component.scss b/src/assets/examples/material/basic-spinner/basic-spinner.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-spinner/basic-spinner.component.spec.ts b/src/assets/examples/material/basic-spinner/basic-spinner.component.spec.ts new file mode 100644 index 0000000..0c23c50 --- /dev/null +++ b/src/assets/examples/material/basic-spinner/basic-spinner.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicSpinnerComponent } from './basic-spinner.component'; + +describe('BasicSpinnerComponent', () => { + let component: BasicSpinnerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicSpinnerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicSpinnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-spinner/basic-spinner.component.ts b/src/assets/examples/material/basic-spinner/basic-spinner.component.ts new file mode 100644 index 0000000..1ce002b --- /dev/null +++ b/src/assets/examples/material/basic-spinner/basic-spinner.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-spinner', + templateUrl: './basic-spinner.component.html', + styleUrls: ['./basic-spinner.component.scss'] +}) +export class BasicSpinnerComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-stepper/basic-stepper.component.html b/src/assets/examples/material/basic-stepper/basic-stepper.component.html new file mode 100644 index 0000000..bf1d758 --- /dev/null +++ b/src/assets/examples/material/basic-stepper/basic-stepper.component.html @@ -0,0 +1,36 @@ + + + +
+ Fill out your name + + + +
+ +
+
+
+ +
+ Fill out your address + + + +
+ + +
+
+
+ + Done + You are now done. +
+ + +
+
+
diff --git a/src/assets/examples/material/basic-stepper/basic-stepper.component.scss b/src/assets/examples/material/basic-stepper/basic-stepper.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-stepper/basic-stepper.component.spec.ts b/src/assets/examples/material/basic-stepper/basic-stepper.component.spec.ts new file mode 100644 index 0000000..4abdefc --- /dev/null +++ b/src/assets/examples/material/basic-stepper/basic-stepper.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicStepperComponent } from './basic-stepper.component'; + +describe('BasicStepperComponent', () => { + let component: BasicStepperComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicStepperComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicStepperComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-stepper/basic-stepper.component.ts b/src/assets/examples/material/basic-stepper/basic-stepper.component.ts new file mode 100644 index 0000000..1a68163 --- /dev/null +++ b/src/assets/examples/material/basic-stepper/basic-stepper.component.ts @@ -0,0 +1,26 @@ +import {Component, OnInit} from '@angular/core'; +import {FormBuilder, FormGroup, Validators} from '@angular/forms'; + +@Component({ + selector: 'app-basic-stepper', + templateUrl: './basic-stepper.component.html', + styleUrls: ['./basic-stepper.component.scss'] +}) +export class BasicStepperComponent implements OnInit { + + isLinear = false; + firstFormGroup: FormGroup; + secondFormGroup: FormGroup; + + constructor(private _formBuilder: FormBuilder) {} + + ngOnInit() { + this.firstFormGroup = this._formBuilder.group({ + firstCtrl: ['', Validators.required] + }); + this.secondFormGroup = this._formBuilder.group({ + secondCtrl: ['', Validators.required] + }); + } + +} diff --git a/src/assets/examples/material/basic-tab-group/basic-tab-group.component.html b/src/assets/examples/material/basic-tab-group/basic-tab-group.component.html new file mode 100644 index 0000000..f8e1465 --- /dev/null +++ b/src/assets/examples/material/basic-tab-group/basic-tab-group.component.html @@ -0,0 +1,6 @@ + + Content 1 + Content 2 + Content 3 + + \ No newline at end of file diff --git a/src/assets/examples/material/basic-tab-group/basic-tab-group.component.scss b/src/assets/examples/material/basic-tab-group/basic-tab-group.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-tab-group/basic-tab-group.component.spec.ts b/src/assets/examples/material/basic-tab-group/basic-tab-group.component.spec.ts new file mode 100644 index 0000000..568d9cf --- /dev/null +++ b/src/assets/examples/material/basic-tab-group/basic-tab-group.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicTabGroupComponent } from './basic-tab-group.component'; + +describe('BasicTabGroupComponent', () => { + let component: BasicTabGroupComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicTabGroupComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicTabGroupComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-tab-group/basic-tab-group.component.ts b/src/assets/examples/material/basic-tab-group/basic-tab-group.component.ts new file mode 100644 index 0000000..80cc669 --- /dev/null +++ b/src/assets/examples/material/basic-tab-group/basic-tab-group.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-tab-group', + templateUrl: './basic-tab-group.component.html', + styleUrls: ['./basic-tab-group.component.scss'] +}) +export class BasicTabGroupComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-table/basic-table.component.html b/src/assets/examples/material/basic-table/basic-table.component.html new file mode 100644 index 0000000..3713dbd --- /dev/null +++ b/src/assets/examples/material/basic-table/basic-table.component.html @@ -0,0 +1,38 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No.{{ element.position }}Name{{ element.name }}Weight{{ element.weight }}Symbol{{ element.symbol }}
+
diff --git a/src/assets/examples/material/basic-table/basic-table.component.scss b/src/assets/examples/material/basic-table/basic-table.component.scss new file mode 100644 index 0000000..cfb1698 --- /dev/null +++ b/src/assets/examples/material/basic-table/basic-table.component.scss @@ -0,0 +1,9 @@ +.table-container { + width: 550px; + overflow: auto; +} + +table { + width: 800px; +} + \ No newline at end of file diff --git a/src/assets/examples/material/basic-table/basic-table.component.spec.ts b/src/assets/examples/material/basic-table/basic-table.component.spec.ts new file mode 100644 index 0000000..211db97 --- /dev/null +++ b/src/assets/examples/material/basic-table/basic-table.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicTableComponent } from './basic-table.component'; + +describe('BasicTableComponent', () => { + let component: BasicTableComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + 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/assets/examples/material/basic-table/basic-table.component.ts b/src/assets/examples/material/basic-table/basic-table.component.ts new file mode 100644 index 0000000..a9fcbfc --- /dev/null +++ b/src/assets/examples/material/basic-table/basic-table.component.ts @@ -0,0 +1,49 @@ +import { AfterViewInit } from '@angular/core'; +import { Component, OnInit, ChangeDetectorRef, } from '@angular/core'; + +export interface PeriodicElement { + name: string; + position: number; + weight: number; + symbol: string; +} + +const ELEMENT_DATA: PeriodicElement[] = [ + {position: 1, name: 'Hydrogen', weight: 1.0078, symbol: 'H'}, + {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, + {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, + {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, + {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, + {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, + {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, + {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, + {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, + {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, +]; + +@Component({ + selector: 'app-basic-table', + templateUrl: './basic-table.component.html', + styleUrls: ['./basic-table.component.scss'] +}) +export class BasicTableComponent implements OnInit, AfterViewInit { + + displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; + dataSource; + + constructor( + private cdr: ChangeDetectorRef + ) { } + + ngOnInit() { + setTimeout(() => { + this.dataSource = ELEMENT_DATA; + this.cdr.detectChanges() + + }) + } + ngAfterViewInit() { + + } + +} diff --git a/src/assets/examples/material/basic-toggle/basic-toggle.component.html b/src/assets/examples/material/basic-toggle/basic-toggle.component.html new file mode 100644 index 0000000..d9d6ab1 --- /dev/null +++ b/src/assets/examples/material/basic-toggle/basic-toggle.component.html @@ -0,0 +1 @@ +Slide me! diff --git a/src/assets/examples/material/basic-toggle/basic-toggle.component.scss b/src/assets/examples/material/basic-toggle/basic-toggle.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-toggle/basic-toggle.component.spec.ts b/src/assets/examples/material/basic-toggle/basic-toggle.component.spec.ts new file mode 100644 index 0000000..9cf14e7 --- /dev/null +++ b/src/assets/examples/material/basic-toggle/basic-toggle.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicToggleComponent } from './basic-toggle.component'; + +describe('BasicToggleComponent', () => { + let component: BasicToggleComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicToggleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicToggleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-toggle/basic-toggle.component.ts b/src/assets/examples/material/basic-toggle/basic-toggle.component.ts new file mode 100644 index 0000000..250bc17 --- /dev/null +++ b/src/assets/examples/material/basic-toggle/basic-toggle.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-toggle', + templateUrl: './basic-toggle.component.html', + styleUrls: ['./basic-toggle.component.scss'] +}) +export class BasicToggleComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-toolbar/basic-toolbar.component.html b/src/assets/examples/material/basic-toolbar/basic-toolbar.component.html new file mode 100644 index 0000000..05520fd --- /dev/null +++ b/src/assets/examples/material/basic-toolbar/basic-toolbar.component.html @@ -0,0 +1 @@ +My App diff --git a/src/assets/examples/material/basic-toolbar/basic-toolbar.component.scss b/src/assets/examples/material/basic-toolbar/basic-toolbar.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-toolbar/basic-toolbar.component.spec.ts b/src/assets/examples/material/basic-toolbar/basic-toolbar.component.spec.ts new file mode 100644 index 0000000..f6b03fa --- /dev/null +++ b/src/assets/examples/material/basic-toolbar/basic-toolbar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicToolbarComponent } from './basic-toolbar.component'; + +describe('BasicToolbarComponent', () => { + let component: BasicToolbarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicToolbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicToolbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-toolbar/basic-toolbar.component.ts b/src/assets/examples/material/basic-toolbar/basic-toolbar.component.ts new file mode 100644 index 0000000..c6bbacd --- /dev/null +++ b/src/assets/examples/material/basic-toolbar/basic-toolbar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-toolbar', + templateUrl: './basic-toolbar.component.html', + styleUrls: ['./basic-toolbar.component.scss'] +}) +export class BasicToolbarComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/basic-tooltip/basic-tooltip.component.html b/src/assets/examples/material/basic-tooltip/basic-tooltip.component.html new file mode 100644 index 0000000..29978af --- /dev/null +++ b/src/assets/examples/material/basic-tooltip/basic-tooltip.component.html @@ -0,0 +1,5 @@ + diff --git a/src/assets/examples/material/basic-tooltip/basic-tooltip.component.scss b/src/assets/examples/material/basic-tooltip/basic-tooltip.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/basic-tooltip/basic-tooltip.component.spec.ts b/src/assets/examples/material/basic-tooltip/basic-tooltip.component.spec.ts new file mode 100644 index 0000000..4063bb1 --- /dev/null +++ b/src/assets/examples/material/basic-tooltip/basic-tooltip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicTooltipComponent } from './basic-tooltip.component'; + +describe('BasicTooltipComponent', () => { + let component: BasicTooltipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BasicTooltipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BasicTooltipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/basic-tooltip/basic-tooltip.component.ts b/src/assets/examples/material/basic-tooltip/basic-tooltip.component.ts new file mode 100644 index 0000000..310f065 --- /dev/null +++ b/src/assets/examples/material/basic-tooltip/basic-tooltip.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-basic-tooltip', + templateUrl: './basic-tooltip.component.html', + styleUrls: ['./basic-tooltip.component.scss'] +}) +export class BasicTooltipComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.html b/src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.html new file mode 100644 index 0000000..a4ecc8b --- /dev/null +++ b/src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.html @@ -0,0 +1,21 @@ + + + Google Keep + Add to a note + + + + Google Docs + Embed in a document + + + + Google Plus + Share with your friends + + + + Google Hangouts + Show to your coworkers + + diff --git a/src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.scss b/src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.spec.ts b/src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.spec.ts new file mode 100644 index 0000000..79422b5 --- /dev/null +++ b/src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BottomSheetOverviewComponent } from './bottom-sheet-overview.component'; + +describe('BottomSheetOverviewComponent', () => { + let component: BottomSheetOverviewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BottomSheetOverviewComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BottomSheetOverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.ts b/src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.ts new file mode 100644 index 0000000..3798b1b --- /dev/null +++ b/src/assets/examples/material/bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +import { MatBottomSheetRef } from '@angular/material/bottom-sheet'; + +@Component({ + selector: 'app-bottom-sheet-overview', + templateUrl: './bottom-sheet-overview.component.html', + styleUrls: ['./bottom-sheet-overview.component.scss'] +}) +export class BottomSheetOverviewComponent implements OnInit { + + constructor(private bottomSheetRef: MatBottomSheetRef) {} + + openLink(event: MouseEvent): void { + this.bottomSheetRef.dismiss(); + event.preventDefault(); + } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/bottom-sheet/bottom-sheet.component.html b/src/assets/examples/material/bottom-sheet/bottom-sheet.component.html new file mode 100644 index 0000000..d980521 --- /dev/null +++ b/src/assets/examples/material/bottom-sheet/bottom-sheet.component.html @@ -0,0 +1,3 @@ +

You have received a file called "cat-picture.jpeg".

+ + diff --git a/src/assets/examples/material/bottom-sheet/bottom-sheet.component.scss b/src/assets/examples/material/bottom-sheet/bottom-sheet.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/bottom-sheet/bottom-sheet.component.spec.ts b/src/assets/examples/material/bottom-sheet/bottom-sheet.component.spec.ts new file mode 100644 index 0000000..e35c936 --- /dev/null +++ b/src/assets/examples/material/bottom-sheet/bottom-sheet.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BottomSheetComponent } from './bottom-sheet.component'; + +describe('BottomSheetComponent', () => { + let component: BottomSheetComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ BottomSheetComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BottomSheetComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/bottom-sheet/bottom-sheet.component.ts b/src/assets/examples/material/bottom-sheet/bottom-sheet.component.ts new file mode 100644 index 0000000..83d046e --- /dev/null +++ b/src/assets/examples/material/bottom-sheet/bottom-sheet.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +import { MatBottomSheet } from '@angular/material/bottom-sheet'; +import { BottomSheetOverviewComponent } from './bottom-sheet-overview/bottom-sheet-overview.component'; + +@Component({ + selector: 'app-bottom-sheet', + templateUrl: './bottom-sheet.component.html', + styleUrls: ['./bottom-sheet.component.scss'] +}) +export class BottomSheetComponent implements OnInit { + + constructor(private bottomSheet: MatBottomSheet) {} + + openBottomSheet(): void { + this.bottomSheet.open(BottomSheetOverviewComponent); + } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/button-examples/button-examples.component.html b/src/assets/examples/material/button-examples/button-examples.component.html new file mode 100644 index 0000000..b3304cf --- /dev/null +++ b/src/assets/examples/material/button-examples/button-examples.component.html @@ -0,0 +1,43 @@ +
+

Basic buttons

+ + + + + +
+ +
+

Raised buttons

+ + + + + +
+ +
+

Fab buttons

+ + +
+ +
+

Toggle buttons

+ + + format_align_left + + + format_align_center + + + format_align_right + + + format_align_justify + + +
diff --git a/src/assets/examples/material/button-examples/button-examples.component.scss b/src/assets/examples/material/button-examples/button-examples.component.scss new file mode 100644 index 0000000..2e808d5 --- /dev/null +++ b/src/assets/examples/material/button-examples/button-examples.component.scss @@ -0,0 +1 @@ +//No SCSS \ No newline at end of file diff --git a/src/assets/examples/material/button-examples/button-examples.component.spec.ts b/src/assets/examples/material/button-examples/button-examples.component.spec.ts new file mode 100644 index 0000000..94e4b50 --- /dev/null +++ b/src/assets/examples/material/button-examples/button-examples.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonExamplesComponent } from './button-examples.component'; + +describe('ButtonExamplesComponent', () => { + let component: ButtonExamplesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ButtonExamplesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ButtonExamplesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/button-examples/button-examples.component.ts b/src/assets/examples/material/button-examples/button-examples.component.ts new file mode 100644 index 0000000..f3d7d47 --- /dev/null +++ b/src/assets/examples/material/button-examples/button-examples.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-button-examples', + templateUrl: './button-examples.component.html', + styleUrls: ['./button-examples.component.scss'] +}) +export class ButtonExamplesComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/button-toggle/button-toggle.component.html b/src/assets/examples/material/button-toggle/button-toggle.component.html new file mode 100644 index 0000000..d36939a --- /dev/null +++ b/src/assets/examples/material/button-toggle/button-toggle.component.html @@ -0,0 +1,16 @@ + + + format_align_left + + + format_align_center + + + format_align_right + + + format_align_justify + + +
Selected value: {{group.value}}
+ \ No newline at end of file diff --git a/src/assets/examples/material/button-toggle/button-toggle.component.scss b/src/assets/examples/material/button-toggle/button-toggle.component.scss new file mode 100644 index 0000000..1e6efb2 --- /dev/null +++ b/src/assets/examples/material/button-toggle/button-toggle.component.scss @@ -0,0 +1,4 @@ +.example-selected-value { + margin: 15px 0; + } + \ No newline at end of file diff --git a/src/assets/examples/material/button-toggle/button-toggle.component.spec.ts b/src/assets/examples/material/button-toggle/button-toggle.component.spec.ts new file mode 100644 index 0000000..e693e71 --- /dev/null +++ b/src/assets/examples/material/button-toggle/button-toggle.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonToggleComponent } from './button-toggle.component'; + +describe('ButtonToggleComponent', () => { + let component: ButtonToggleComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ButtonToggleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ButtonToggleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/button-toggle/button-toggle.component.ts b/src/assets/examples/material/button-toggle/button-toggle.component.ts new file mode 100644 index 0000000..4acf7a0 --- /dev/null +++ b/src/assets/examples/material/button-toggle/button-toggle.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-button-toggle', + templateUrl: './button-toggle.component.html', + styleUrls: ['./button-toggle.component.scss'] +}) +export class ButtonToggleComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/buttons/buttons.component.html b/src/assets/examples/material/buttons/buttons.component.html new file mode 100644 index 0000000..a28baa0 --- /dev/null +++ b/src/assets/examples/material/buttons/buttons.component.html @@ -0,0 +1,85 @@ +

Basic Buttons


+
+ + + + + + Link +
+

+

Raised Buttons


+
+ + + + + + Link +
+

+

Stroked Buttons


+
+ + + + + + Link +
+

+

Flat Buttons


+
+ + + + + + Link +
+

+

Icon Buttons


+
+ + + + + +
+

+

Fab Buttons


+
+ + + + + + + Link +
+

+ +

Mini Fab Buttons


+
+ + + + + + + Link +
diff --git a/src/assets/examples/material/buttons/buttons.component.scss b/src/assets/examples/material/buttons/buttons.component.scss new file mode 100644 index 0000000..3408788 --- /dev/null +++ b/src/assets/examples/material/buttons/buttons.component.scss @@ -0,0 +1,4 @@ +.example-button-row button, +.example-button-row a { + margin-right: 8px; +} diff --git a/src/assets/examples/material/buttons/buttons.component.spec.ts b/src/assets/examples/material/buttons/buttons.component.spec.ts new file mode 100644 index 0000000..4f0b4bd --- /dev/null +++ b/src/assets/examples/material/buttons/buttons.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonsComponent } from './buttons.component'; + +describe('ButtonsComponent', () => { + let component: ButtonsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + 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/assets/examples/material/buttons/buttons.component.ts b/src/assets/examples/material/buttons/buttons.component.ts new file mode 100644 index 0000000..70af7dd --- /dev/null +++ b/src/assets/examples/material/buttons/buttons.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-buttons', + templateUrl: './buttons.component.html', + styleUrls: ['./buttons.component.scss'] +}) +export class ButtonsComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/changing-tooltip/changing-tooltip.component.html b/src/assets/examples/material/changing-tooltip/changing-tooltip.component.html new file mode 100644 index 0000000..234a18f --- /dev/null +++ b/src/assets/examples/material/changing-tooltip/changing-tooltip.component.html @@ -0,0 +1,9 @@ + + + + + diff --git a/src/assets/examples/material/changing-tooltip/changing-tooltip.component.scss b/src/assets/examples/material/changing-tooltip/changing-tooltip.component.scss new file mode 100644 index 0000000..46e50d6 --- /dev/null +++ b/src/assets/examples/material/changing-tooltip/changing-tooltip.component.scss @@ -0,0 +1,4 @@ +.example-user-input { + margin-right: 8px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/changing-tooltip/changing-tooltip.component.spec.ts b/src/assets/examples/material/changing-tooltip/changing-tooltip.component.spec.ts new file mode 100644 index 0000000..e70978e --- /dev/null +++ b/src/assets/examples/material/changing-tooltip/changing-tooltip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ChangingTooltipComponent } from './changing-tooltip.component'; + +describe('ChangingTooltipComponent', () => { + let component: ChangingTooltipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ChangingTooltipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ChangingTooltipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/changing-tooltip/changing-tooltip.component.ts b/src/assets/examples/material/changing-tooltip/changing-tooltip.component.ts new file mode 100644 index 0000000..d1136bc --- /dev/null +++ b/src/assets/examples/material/changing-tooltip/changing-tooltip.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; + +@Component({ + selector: 'app-changing-tooltip', + templateUrl: './changing-tooltip.component.html', + styleUrls: ['./changing-tooltip.component.scss'] +}) +export class ChangingTooltipComponent implements OnInit { + + message = new FormControl('Info about the action'); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/checkbox-tree/checkbox-tree.component.html b/src/assets/examples/material/checkbox-tree/checkbox-tree.component.html new file mode 100644 index 0000000..66f4022 --- /dev/null +++ b/src/assets/examples/material/checkbox-tree/checkbox-tree.component.html @@ -0,0 +1,30 @@ + + + + {{node.item}} + + + + + + + + + + + + + {{node.item}} + + + + \ No newline at end of file diff --git a/src/assets/examples/material/checkbox-tree/checkbox-tree.component.scss b/src/assets/examples/material/checkbox-tree/checkbox-tree.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/checkbox-tree/checkbox-tree.component.spec.ts b/src/assets/examples/material/checkbox-tree/checkbox-tree.component.spec.ts new file mode 100644 index 0000000..37e8f14 --- /dev/null +++ b/src/assets/examples/material/checkbox-tree/checkbox-tree.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CheckboxTreeComponent } from './checkbox-tree.component'; + +describe('CheckboxTreeComponent', () => { + let component: CheckboxTreeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CheckboxTreeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CheckboxTreeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/checkbox-tree/checkbox-tree.component.ts b/src/assets/examples/material/checkbox-tree/checkbox-tree.component.ts new file mode 100644 index 0000000..0d07fd4 --- /dev/null +++ b/src/assets/examples/material/checkbox-tree/checkbox-tree.component.ts @@ -0,0 +1,264 @@ +import {SelectionModel} from '@angular/cdk/collections'; +import {FlatTreeControl} from '@angular/cdk/tree'; +import {Component, Injectable} from '@angular/core'; +import {MatTreeFlatDataSource, MatTreeFlattener} from '@angular/material/tree'; +import {BehaviorSubject} from 'rxjs'; + + +/** + * Node for to-do item + */ +export class TodoItemNode { + children: TodoItemNode[]; + item: string; +} + +/** Flat to-do item node with expandable and level information */ +export class TodoItemFlatNode { + item: string; + level: number; + expandable: boolean; +} + +/** + * The Json object for to-do list data. + */ +const TREE_DATA = { + Groceries: { + 'Almond Meal flour': null, + 'Organic eggs': null, + 'Protein Powder': null, + Fruits: { + Apple: null, + Berries: ['Blueberry', 'Raspberry'], + Orange: null + } + }, + Reminders: [ + 'Cook dinner', + 'Read the Material Design spec', + 'Upgrade Application to Angular' + ] +}; + +/** + * Checklist database, it can build a tree structured Json object. + * Each node in Json object represents a to-do item or a category. + * If a node is a category, it has children items and new items can be added under the category. + */ +@Injectable() +export class ChecklistDatabase { + dataChange = new BehaviorSubject([]); + + get data(): TodoItemNode[] { return this.dataChange.value; } + + constructor() { + this.initialize(); + } + + initialize() { + // Build the tree nodes from Json object. The result is a list of `TodoItemNode` with nested + // file node as children. + const data = this.buildFileTree(TREE_DATA, 0); + + // Notify the change. + this.dataChange.next(data); + } + + /** + * Build the file structure tree. The `value` is the Json object, or a sub-tree of a Json object. + * The return value is the list of `TodoItemNode`. + */ + buildFileTree(obj: {[key: string]: any}, level: number): TodoItemNode[] { + return Object.keys(obj).reduce((accumulator, key) => { + const value = obj[key]; + const node = new TodoItemNode(); + node.item = key; + + if (value != null) { + if (typeof value === 'object') { + node.children = this.buildFileTree(value, level + 1); + } else { + node.item = value; + } + } + + return accumulator.concat(node); + }, []); + } + + /** Add an item to to-do list */ + insertItem(parent: TodoItemNode, name: string) { + if (parent.children) { + parent.children.push({item: name} as TodoItemNode); + this.dataChange.next(this.data); + } + } + + updateItem(node: TodoItemNode, name: string) { + node.item = name; + this.dataChange.next(this.data); + } +} + +@Component({ + selector: 'app-checkbox-tree', + templateUrl: './checkbox-tree.component.html', + styleUrls: ['./checkbox-tree.component.scss'], + providers: [ChecklistDatabase] +}) +export class CheckboxTreeComponent { + +/** Map from flat node to nested node. This helps us finding the nested node to be modified */ +flatNodeMap = new Map(); + +/** Map from nested node to flattened node. This helps us to keep the same object for selection */ +nestedNodeMap = new Map(); + +/** A selected parent node to be inserted */ +selectedParent: TodoItemFlatNode | null = null; + +/** The new item's name */ +newItemName = ''; + +treeControl: FlatTreeControl; + +treeFlattener: MatTreeFlattener; + +dataSource: MatTreeFlatDataSource; + +/** The selection for checklist */ +checklistSelection = new SelectionModel(true /* multiple */); + +constructor(private database: ChecklistDatabase) { + this.treeFlattener = new MatTreeFlattener(this.transformer, this.getLevel, + this.isExpandable, this.getChildren); + this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable); + this.dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener); + + database.dataChange.subscribe(data => { + this.dataSource.data = data; + }); +} + +getLevel = (node: TodoItemFlatNode) => node.level; + +isExpandable = (node: TodoItemFlatNode) => node.expandable; + +getChildren = (node: TodoItemNode): TodoItemNode[] => node.children; + +hasChild = (_: number, _nodeData: TodoItemFlatNode) => _nodeData.expandable; + +hasNoContent = (_: number, _nodeData: TodoItemFlatNode) => _nodeData.item === ''; + +/** + * Transformer to convert nested node to flat node. Record the nodes in maps for later use. + */ +transformer = (node: TodoItemNode, level: number) => { + const existingNode = this.nestedNodeMap.get(node); + const flatNode = existingNode && existingNode.item === node.item + ? existingNode + : new TodoItemFlatNode(); + flatNode.item = node.item; + flatNode.level = level; + flatNode.expandable = !!node.children; + this.flatNodeMap.set(flatNode, node); + this.nestedNodeMap.set(node, flatNode); + return flatNode; +} + +/** Whether all the descendants of the node are selected. */ +descendantsAllSelected(node: TodoItemFlatNode): boolean { + const descendants = this.treeControl.getDescendants(node); + const descAllSelected = descendants.every(child => + this.checklistSelection.isSelected(child) + ); + return descAllSelected; +} + +/** Whether part of the descendants are selected */ +descendantsPartiallySelected(node: TodoItemFlatNode): boolean { + const descendants = this.treeControl.getDescendants(node); + const result = descendants.some(child => this.checklistSelection.isSelected(child)); + return result && !this.descendantsAllSelected(node); +} + +/** Toggle the to-do item selection. Select/deselect all the descendants node */ +todoItemSelectionToggle(node: TodoItemFlatNode): void { + this.checklistSelection.toggle(node); + const descendants = this.treeControl.getDescendants(node); + this.checklistSelection.isSelected(node) + ? this.checklistSelection.select(...descendants) + : this.checklistSelection.deselect(...descendants); + + // Force update for the parent + descendants.every(child => + this.checklistSelection.isSelected(child) + ); + this.checkAllParentsSelection(node); +} + +/** Toggle a leaf to-do item selection. Check all the parents to see if they changed */ +todoLeafItemSelectionToggle(node: TodoItemFlatNode): void { + this.checklistSelection.toggle(node); + this.checkAllParentsSelection(node); +} + +/* Checks all the parents when a leaf node is selected/unselected */ +checkAllParentsSelection(node: TodoItemFlatNode): void { + let parent: TodoItemFlatNode | null = this.getParentNode(node); + while (parent) { + this.checkRootNodeSelection(parent); + parent = this.getParentNode(parent); + } +} + +/** Check root node checked state and change it accordingly */ +checkRootNodeSelection(node: TodoItemFlatNode): void { + const nodeSelected = this.checklistSelection.isSelected(node); + const descendants = this.treeControl.getDescendants(node); + const descAllSelected = descendants.every(child => + this.checklistSelection.isSelected(child) + ); + if (nodeSelected && !descAllSelected) { + this.checklistSelection.deselect(node); + } else if (!nodeSelected && descAllSelected) { + this.checklistSelection.select(node); + } +} + +/* Get the parent node of a node */ +getParentNode(node: TodoItemFlatNode): TodoItemFlatNode | null { + const currentLevel = this.getLevel(node); + + if (currentLevel < 1) { + return null; + } + + const startIndex = this.treeControl.dataNodes.indexOf(node) - 1; + + for (let i = startIndex; i >= 0; i--) { + const currentNode = this.treeControl.dataNodes[i]; + + if (this.getLevel(currentNode) < currentLevel) { + return currentNode; + } + } + return null; +} + +/** Select the category so we can insert the new item. */ +addNewItem(node: TodoItemFlatNode) { + const parentNode = this.flatNodeMap.get(node); + this.database.insertItem(parentNode!, ''); + this.treeControl.expand(node); +} + +/** Save the node to database */ +saveNode(node: TodoItemFlatNode, itemValue: string) { + const nestedNode = this.flatNodeMap.get(node); + this.database.updateItem(nestedNode!, itemValue); +} + + +} diff --git a/src/assets/examples/material/clear-button-input/clear-button-input.component.html b/src/assets/examples/material/clear-button-input/clear-button-input.component.html new file mode 100644 index 0000000..4a135e1 --- /dev/null +++ b/src/assets/examples/material/clear-button-input/clear-button-input.component.html @@ -0,0 +1,6 @@ + + + + diff --git a/src/assets/examples/material/clear-button-input/clear-button-input.component.scss b/src/assets/examples/material/clear-button-input/clear-button-input.component.scss new file mode 100644 index 0000000..44beb8d --- /dev/null +++ b/src/assets/examples/material/clear-button-input/clear-button-input.component.scss @@ -0,0 +1,4 @@ +.example-form-field { + width: 200px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/clear-button-input/clear-button-input.component.spec.ts b/src/assets/examples/material/clear-button-input/clear-button-input.component.spec.ts new file mode 100644 index 0000000..86ee5a0 --- /dev/null +++ b/src/assets/examples/material/clear-button-input/clear-button-input.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ClearButtonInputComponent } from './clear-button-input.component'; + +describe('ClearButtonInputComponent', () => { + let component: ClearButtonInputComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ClearButtonInputComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ClearButtonInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/clear-button-input/clear-button-input.component.ts b/src/assets/examples/material/clear-button-input/clear-button-input.component.ts new file mode 100644 index 0000000..1452d01 --- /dev/null +++ b/src/assets/examples/material/clear-button-input/clear-button-input.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-clear-button-input', + templateUrl: './clear-button-input.component.html', + styleUrls: ['./clear-button-input.component.scss'] +}) +export class ClearButtonInputComponent implements OnInit { + + value = 'Clear me'; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.html b/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.html new file mode 100644 index 0000000..a413ae6 --- /dev/null +++ b/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.html @@ -0,0 +1,40 @@ + + +

Checkbox configuration

+ +
+ Checked + Indeterminate +
+ +
+ + + After + Before + +
+ +
+ Disabled +
+
+
+ + + +

Result

+ +
+ + I'm a checkbox + +
+
+
+ diff --git a/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.scss b/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.scss new file mode 100644 index 0000000..ae79026 --- /dev/null +++ b/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.scss @@ -0,0 +1,15 @@ +.example-h2 { + margin: 10px; + } + + .example-section { + display: flex; + align-content: center; + align-items: center; + height: 60px; + } + + .example-margin { + margin: 0 10px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.spec.ts b/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.spec.ts new file mode 100644 index 0000000..07498d7 --- /dev/null +++ b/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ConfigurableCheckboxComponent } from './configurable-checkbox.component'; + +describe('ConfigurableCheckboxComponent', () => { + let component: ConfigurableCheckboxComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ConfigurableCheckboxComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ConfigurableCheckboxComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.ts b/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.ts new file mode 100644 index 0000000..32bfb2d --- /dev/null +++ b/src/assets/examples/material/configurable-checkbox/configurable-checkbox.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-configurable-checkbox', + templateUrl: './configurable-checkbox.component.html', + styleUrls: ['./configurable-checkbox.component.scss'] +}) +export class ConfigurableCheckboxComponent implements OnInit { + + checked = false; + indeterminate = false; + labelPosition = 'after'; + disabled = false; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.html b/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.html new file mode 100644 index 0000000..80add10 --- /dev/null +++ b/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.html @@ -0,0 +1,25 @@ + + +

+

+ + + Over + Side + Push + +

+
+ + +

+

+ + + Over + Side + Push + +

+
+
\ No newline at end of file diff --git a/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.scss b/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.scss new file mode 100644 index 0000000..87f1db6 --- /dev/null +++ b/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.scss @@ -0,0 +1,15 @@ +.example-container { + // position: absolute; + // top: 0; + // bottom: 0; + // left: 0; + // right: 0; + } + + .example-radio-group { + display: block; + border: 1px solid #555; + margin: 20px; + padding: 10px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.spec.ts b/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.spec.ts new file mode 100644 index 0000000..d0afb3f --- /dev/null +++ b/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ConfigurableSidenavComponent } from './configurable-sidenav.component'; + +describe('ConfigurableSidenavComponent', () => { + let component: ConfigurableSidenavComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ConfigurableSidenavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ConfigurableSidenavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.ts b/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.ts new file mode 100644 index 0000000..928763f --- /dev/null +++ b/src/assets/examples/material/configurable-sidenav/configurable-sidenav.component.ts @@ -0,0 +1,18 @@ +import { FormControl } from '@angular/forms'; +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-configurable-sidenav', + templateUrl: './configurable-sidenav.component.html', + styleUrls: ['./configurable-sidenav.component.scss'] +}) +export class ConfigurableSidenavComponent implements OnInit { + + mode = new FormControl('over'); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/configurable-toggle/configurable-toggle.component.html b/src/assets/examples/material/configurable-toggle/configurable-toggle.component.html new file mode 100644 index 0000000..b7f41c0 --- /dev/null +++ b/src/assets/examples/material/configurable-toggle/configurable-toggle.component.html @@ -0,0 +1,44 @@ + + +

Slider configuration

+ +
+ + + + Primary + + + Accent + + + Warn + + +
+ +
+ Checked +
+ +
+ Disabled +
+
+
+ + + +

Result

+ +
+ + Slide me! + +
+
+
diff --git a/src/assets/examples/material/configurable-toggle/configurable-toggle.component.scss b/src/assets/examples/material/configurable-toggle/configurable-toggle.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/configurable-toggle/configurable-toggle.component.spec.ts b/src/assets/examples/material/configurable-toggle/configurable-toggle.component.spec.ts new file mode 100644 index 0000000..a8d09fb --- /dev/null +++ b/src/assets/examples/material/configurable-toggle/configurable-toggle.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ConfigurableToggleComponent } from './configurable-toggle.component'; + +describe('ConfigurableToggleComponent', () => { + let component: ConfigurableToggleComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ConfigurableToggleComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ConfigurableToggleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/configurable-toggle/configurable-toggle.component.ts b/src/assets/examples/material/configurable-toggle/configurable-toggle.component.ts new file mode 100644 index 0000000..7085593 --- /dev/null +++ b/src/assets/examples/material/configurable-toggle/configurable-toggle.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-configurable-toggle', + templateUrl: './configurable-toggle.component.html', + styleUrls: ['./configurable-toggle.component.scss'] +}) +export class ConfigurableToggleComponent implements OnInit { + color; + checked; + disabled; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/custom-bar/custom-bar.component.html b/src/assets/examples/material/custom-bar/custom-bar.component.html new file mode 100644 index 0000000..9396cbe --- /dev/null +++ b/src/assets/examples/material/custom-bar/custom-bar.component.html @@ -0,0 +1,64 @@ + + +

Progress bar configuration

+ +
+ + + + Primary + + + Accent + + + Warn + + +
+ +
+ + + + Determinate + + + Indeterminate + + + Buffer + + + Query + + +
+ +
+ + +
+
+ + +
+
+
+ + + +

Result

+ +
+ + +
+
+
+ \ No newline at end of file diff --git a/src/assets/examples/material/custom-bar/custom-bar.component.scss b/src/assets/examples/material/custom-bar/custom-bar.component.scss new file mode 100644 index 0000000..ae79026 --- /dev/null +++ b/src/assets/examples/material/custom-bar/custom-bar.component.scss @@ -0,0 +1,15 @@ +.example-h2 { + margin: 10px; + } + + .example-section { + display: flex; + align-content: center; + align-items: center; + height: 60px; + } + + .example-margin { + margin: 0 10px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/custom-bar/custom-bar.component.spec.ts b/src/assets/examples/material/custom-bar/custom-bar.component.spec.ts new file mode 100644 index 0000000..583ded1 --- /dev/null +++ b/src/assets/examples/material/custom-bar/custom-bar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomBarComponent } from './custom-bar.component'; + +describe('CustomBarComponent', () => { + let component: CustomBarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomBarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomBarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-bar/custom-bar.component.ts b/src/assets/examples/material/custom-bar/custom-bar.component.ts new file mode 100644 index 0000000..93c67aa --- /dev/null +++ b/src/assets/examples/material/custom-bar/custom-bar.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-custom-bar', + templateUrl: './custom-bar.component.html', + styleUrls: ['./custom-bar.component.scss'] +}) +export class CustomBarComponent implements OnInit { + + color = 'primary'; + mode = 'determinate'; + value = 50; + bufferValue = 75; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.html b/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.html new file mode 100644 index 0000000..fde04a9 --- /dev/null +++ b/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.html @@ -0,0 +1,7 @@ + diff --git a/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.scss b/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.scss new file mode 100644 index 0000000..4d463e8 --- /dev/null +++ b/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.scss @@ -0,0 +1,8 @@ +.example-button { + margin-top: 16px; + } + + .example-tooltip-red { + background: #b71c1c; + } + \ No newline at end of file diff --git a/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.spec.ts b/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.spec.ts new file mode 100644 index 0000000..371b047 --- /dev/null +++ b/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomClassTooltipComponent } from './custom-class-tooltip.component'; + +describe('CustomClassTooltipComponent', () => { + let component: CustomClassTooltipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomClassTooltipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomClassTooltipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.ts b/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.ts new file mode 100644 index 0000000..8e6742c --- /dev/null +++ b/src/assets/examples/material/custom-class-tooltip/custom-class-tooltip.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit, ViewEncapsulation } from '@angular/core'; + +@Component({ + selector: 'app-custom-class-tooltip', + templateUrl: './custom-class-tooltip.component.html', + styleUrls: ['./custom-class-tooltip.component.scss'], + // Need to remove view encapsulation so that the custom tooltip style defined in + // `tooltip-custom-class-example.css` will not be scoped to this component's view. + encapsulation: ViewEncapsulation.None +}) +export class CustomClassTooltipComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/custom-datepicker/custom-datepicker.component.html b/src/assets/examples/material/custom-datepicker/custom-datepicker.component.html new file mode 100644 index 0000000..4868f2d --- /dev/null +++ b/src/assets/examples/material/custom-datepicker/custom-datepicker.component.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/examples/material/custom-datepicker/custom-datepicker.component.scss b/src/assets/examples/material/custom-datepicker/custom-datepicker.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/custom-datepicker/custom-datepicker.component.spec.ts b/src/assets/examples/material/custom-datepicker/custom-datepicker.component.spec.ts new file mode 100644 index 0000000..95f60bb --- /dev/null +++ b/src/assets/examples/material/custom-datepicker/custom-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomDatepickerComponent } from './custom-datepicker.component'; + +describe('CustomDatepickerComponent', () => { + let component: CustomDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-datepicker/custom-datepicker.component.ts b/src/assets/examples/material/custom-datepicker/custom-datepicker.component.ts new file mode 100644 index 0000000..4d3f389 --- /dev/null +++ b/src/assets/examples/material/custom-datepicker/custom-datepicker.component.ts @@ -0,0 +1,50 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; +import {MomentDateAdapter} from '@angular/material-moment-adapter'; +import {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core'; + +// Depending on whether rollup is used, moment needs to be imported differently. +// Since Moment.js doesn't have a default export, we normally need to import using the `* as` +// syntax. However, rollup creates a synthetic default module and we thus need to import it using +// the `default as` syntax. +import * as _moment from 'moment'; + +const moment = _moment; + +// See the Moment.js docs for the meaning of these formats: +// https://momentjs.com/docs/#/displaying/format/ +export const MY_FORMATS = { + parse: { + dateInput: 'LL', + }, + display: { + dateInput: 'LL', + monthYearLabel: 'MMM YYYY', + dateA11yLabel: 'LL', + monthYearA11yLabel: 'MMMM YYYY', + }, +}; + +@Component({ + selector: 'app-custom-datepicker', + templateUrl: './custom-datepicker.component.html', + styleUrls: ['./custom-datepicker.component.scss'], + providers: [ + // `MomentDateAdapter` can be automatically provided by importing `MomentDateModule` in your + // application's root module. We provide it at the component level here, due to limitations of + // our example generation script. + {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]}, + + {provide: MAT_DATE_FORMATS, useValue: MY_FORMATS}, + ], +}) +export class CustomDatepickerComponent implements OnInit { + + date = new FormControl(moment()); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.html b/src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.html new file mode 100644 index 0000000..123eff0 --- /dev/null +++ b/src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.html @@ -0,0 +1,11 @@ +

ngModule

+

SharedComponentsModule

+ +Click Me diff --git a/src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.scss b/src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.spec.ts b/src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.spec.ts new file mode 100644 index 0000000..bb8f22f --- /dev/null +++ b/src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomLoadingButtonsComponent } from './custom-loading-buttons.component'; + +describe('CustomLoadingButtonsComponent', () => { + let component: CustomLoadingButtonsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomLoadingButtonsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomLoadingButtonsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.ts b/src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.ts new file mode 100644 index 0000000..abc2a10 --- /dev/null +++ b/src/assets/examples/material/custom-loading-buttons/custom-loading-buttons.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit, ChangeDetectorRef } from "@angular/core"; + +@Component({ + selector: "app-custom-loading-buttons", + templateUrl: "./custom-loading-buttons.component.html", + styleUrls: ["./custom-loading-buttons.component.scss"] +}) +export class CustomLoadingButtonsComponent implements OnInit { + defaultLoading: boolean; + primaryLoading: boolean; + accentLoading: boolean; + warnLoading: boolean; + buttons = [ + { + name: "default", + loading: false + }, + { + name: "primary", + loading: false + }, + { + name: "accent", + loading: false + }, + { + name: "warn", + loading: false + } + ]; + + constructor( + private cdr: ChangeDetectorRef + ) {} + + ngOnInit() {} + + showLoading(button) { + button.loading = true; + setTimeout(() => { + button.loading = false; + this.cdr.detectChanges(); + }, 3000); + } +} diff --git a/src/assets/examples/material/custom-paginator/custom-paginator.component.html b/src/assets/examples/material/custom-paginator/custom-paginator.component.html new file mode 100644 index 0000000..665cacf --- /dev/null +++ b/src/assets/examples/material/custom-paginator/custom-paginator.component.html @@ -0,0 +1,28 @@ + + List length: + + + + + Page size: + + + + Page size options: + + + + + + +
+
Page Change Event Properties
+
List length: {{pageEvent.length}}
+
Page size: {{pageEvent.pageSize}}
+
Page index: {{pageEvent.pageIndex}}
+
diff --git a/src/assets/examples/material/custom-paginator/custom-paginator.component.scss b/src/assets/examples/material/custom-paginator/custom-paginator.component.scss new file mode 100644 index 0000000..692ed8c --- /dev/null +++ b/src/assets/examples/material/custom-paginator/custom-paginator.component.scss @@ -0,0 +1,4 @@ +mat-form-field { + margin-right: 12px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/custom-paginator/custom-paginator.component.spec.ts b/src/assets/examples/material/custom-paginator/custom-paginator.component.spec.ts new file mode 100644 index 0000000..ff8b3f4 --- /dev/null +++ b/src/assets/examples/material/custom-paginator/custom-paginator.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomPaginatorComponent } from './custom-paginator.component'; + +describe('CustomPaginatorComponent', () => { + let component: CustomPaginatorComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomPaginatorComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomPaginatorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-paginator/custom-paginator.component.ts b/src/assets/examples/material/custom-paginator/custom-paginator.component.ts new file mode 100644 index 0000000..f673b25 --- /dev/null +++ b/src/assets/examples/material/custom-paginator/custom-paginator.component.ts @@ -0,0 +1,28 @@ +import { Component, OnInit } from '@angular/core'; +import { PageEvent } from '@angular/material/paginator'; + +@Component({ + selector: 'app-custom-paginator', + templateUrl: './custom-paginator.component.html', + styleUrls: ['./custom-paginator.component.scss'] +}) +export class CustomPaginatorComponent implements OnInit { + + // MatPaginator Inputs + length = 100; + pageSize = 10; + pageSizeOptions: number[] = [5, 10, 25, 100]; + + // MatPaginator Output + pageEvent: PageEvent; + + constructor() { } + + ngOnInit() { + } + + setPageSizeOptions(setPageSizeOptionsInput: string) { + this.pageSizeOptions = setPageSizeOptionsInput.split(',').map(str => +str); + } + +} diff --git a/src/assets/examples/material/custom-panel-select/custom-panel-select.component.html b/src/assets/examples/material/custom-panel-select/custom-panel-select.component.html new file mode 100644 index 0000000..1e48e43 --- /dev/null +++ b/src/assets/examples/material/custom-panel-select/custom-panel-select.component.html @@ -0,0 +1,9 @@ + + Panel color + + Red + Green + Blue + + diff --git a/src/assets/examples/material/custom-panel-select/custom-panel-select.component.scss b/src/assets/examples/material/custom-panel-select/custom-panel-select.component.scss new file mode 100644 index 0000000..20137c7 --- /dev/null +++ b/src/assets/examples/material/custom-panel-select/custom-panel-select.component.scss @@ -0,0 +1,12 @@ +.example-panel-red.mat-select-panel { + background: rgba(255, 0, 0, 0.5); + } + + .example-panel-green.mat-select-panel { + background: rgba(0, 255, 0, 0.5); + } + + .example-panel-blue.mat-select-panel { + background: rgba(0, 0, 255, 0.5); + } + \ No newline at end of file diff --git a/src/assets/examples/material/custom-panel-select/custom-panel-select.component.spec.ts b/src/assets/examples/material/custom-panel-select/custom-panel-select.component.spec.ts new file mode 100644 index 0000000..28211d2 --- /dev/null +++ b/src/assets/examples/material/custom-panel-select/custom-panel-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomPanelSelectComponent } from './custom-panel-select.component'; + +describe('CustomPanelSelectComponent', () => { + let component: CustomPanelSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomPanelSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomPanelSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-panel-select/custom-panel-select.component.ts b/src/assets/examples/material/custom-panel-select/custom-panel-select.component.ts new file mode 100644 index 0000000..ec281b9 --- /dev/null +++ b/src/assets/examples/material/custom-panel-select/custom-panel-select.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit, ViewEncapsulation } from '@angular/core'; +import {FormControl} from '@angular/forms'; + +@Component({ + selector: 'app-custom-panel-select', + templateUrl: './custom-panel-select.component.html', + styleUrls: ['./custom-panel-select.component.scss'], + // Encapsulation has to be disabled in order for the + // component style to apply to the select panel. + encapsulation: ViewEncapsulation.None, +}) +export class CustomPanelSelectComponent implements OnInit { + + panelColor = new FormControl('red'); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.html b/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.html new file mode 100644 index 0000000..444dbad --- /dev/null +++ b/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.html @@ -0,0 +1,14 @@ + + + + {{positionOption}} + + + + + diff --git a/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.scss b/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.scss new file mode 100644 index 0000000..46e50d6 --- /dev/null +++ b/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.scss @@ -0,0 +1,4 @@ +.example-user-input { + margin-right: 8px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.spec.ts b/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.spec.ts new file mode 100644 index 0000000..c6b0026 --- /dev/null +++ b/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomPositionTooltipComponent } from './custom-position-tooltip.component'; + +describe('CustomPositionTooltipComponent', () => { + let component: CustomPositionTooltipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomPositionTooltipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomPositionTooltipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.ts b/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.ts new file mode 100644 index 0000000..ee7ad04 --- /dev/null +++ b/src/assets/examples/material/custom-position-tooltip/custom-position-tooltip.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; +import { TooltipPosition } from '@angular/material/tooltip'; + +@Component({ + selector: 'app-custom-position-tooltip', + templateUrl: './custom-position-tooltip.component.html', + styleUrls: ['./custom-position-tooltip.component.scss'] +}) +export class CustomPositionTooltipComponent implements OnInit { + + positionOptions: TooltipPosition[] = ['after', 'before', 'above', 'below', 'left', 'right']; + position = new FormControl(this.positionOptions[0]); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/custom-ripples/custom-ripples.component.html b/src/assets/examples/material/custom-ripples/custom-ripples.component.html new file mode 100644 index 0000000..fb36d93 --- /dev/null +++ b/src/assets/examples/material/custom-ripples/custom-ripples.component.html @@ -0,0 +1,21 @@ +Centered +Disabled +Unbounded + + + + + + + + + +
+ Click me +
diff --git a/src/assets/examples/material/custom-ripples/custom-ripples.component.scss b/src/assets/examples/material/custom-ripples/custom-ripples.component.scss new file mode 100644 index 0000000..b603984 --- /dev/null +++ b/src/assets/examples/material/custom-ripples/custom-ripples.component.scss @@ -0,0 +1,26 @@ +.example-ripple-container { + cursor: pointer; + text-align: center; + + width: 300px; + height: 300px; + line-height: 300px; + + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + + -webkit-user-drag: none; + -webkit-tap-highlight-color: transparent; + } + + /** Styles to make the demo look better. */ + .example-ripple-checkbox { + margin: 6px 12px 6px 0; + } + + .example-ripple-form-field { + margin: 0 12px 0 0; + } + \ No newline at end of file diff --git a/src/assets/examples/material/custom-ripples/custom-ripples.component.spec.ts b/src/assets/examples/material/custom-ripples/custom-ripples.component.spec.ts new file mode 100644 index 0000000..26ef897 --- /dev/null +++ b/src/assets/examples/material/custom-ripples/custom-ripples.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomRipplesComponent } from './custom-ripples.component'; + +describe('CustomRipplesComponent', () => { + let component: CustomRipplesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomRipplesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomRipplesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-ripples/custom-ripples.component.ts b/src/assets/examples/material/custom-ripples/custom-ripples.component.ts new file mode 100644 index 0000000..c086ea4 --- /dev/null +++ b/src/assets/examples/material/custom-ripples/custom-ripples.component.ts @@ -0,0 +1,22 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-custom-ripples', + templateUrl: './custom-ripples.component.html', + styleUrls: ['./custom-ripples.component.scss'] +}) +export class CustomRipplesComponent implements OnInit { + + centered = false; + disabled = false; + unbounded = false; + + radius: number; + color: string; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.html b/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.html new file mode 100644 index 0000000..cfba7c4 --- /dev/null +++ b/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.html @@ -0,0 +1,3 @@ + + Pizza party!!! 🍕 + diff --git a/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.scss b/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.scss new file mode 100644 index 0000000..61d7802 --- /dev/null +++ b/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.scss @@ -0,0 +1,3 @@ +.example-pizza-party { + color: hotpink; + } \ No newline at end of file diff --git a/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.spec.ts b/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.spec.ts new file mode 100644 index 0000000..adffe20 --- /dev/null +++ b/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomSnackbarOverviewComponent } from './custom-snackbar-overview.component'; + +describe('CustomSnackbarOverviewComponent', () => { + let component: CustomSnackbarOverviewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomSnackbarOverviewComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomSnackbarOverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.ts b/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.ts new file mode 100644 index 0000000..c7be81b --- /dev/null +++ b/src/assets/examples/material/custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-custom-snackbar-overview', + templateUrl: './custom-snackbar-overview.component.html', + styleUrls: ['./custom-snackbar-overview.component.scss'] +}) +export class CustomSnackbarOverviewComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/custom-snackbar/custom-snackbar.component.html b/src/assets/examples/material/custom-snackbar/custom-snackbar.component.html new file mode 100644 index 0000000..c54dfc6 --- /dev/null +++ b/src/assets/examples/material/custom-snackbar/custom-snackbar.component.html @@ -0,0 +1,8 @@ + + Snack bar duration (seconds) + + + + diff --git a/src/assets/examples/material/custom-snackbar/custom-snackbar.component.scss b/src/assets/examples/material/custom-snackbar/custom-snackbar.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/custom-snackbar/custom-snackbar.component.spec.ts b/src/assets/examples/material/custom-snackbar/custom-snackbar.component.spec.ts new file mode 100644 index 0000000..e305eb4 --- /dev/null +++ b/src/assets/examples/material/custom-snackbar/custom-snackbar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomSnackbarComponent } from './custom-snackbar.component'; + +describe('CustomSnackbarComponent', () => { + let component: CustomSnackbarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomSnackbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomSnackbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-snackbar/custom-snackbar.component.ts b/src/assets/examples/material/custom-snackbar/custom-snackbar.component.ts new file mode 100644 index 0000000..25f10b4 --- /dev/null +++ b/src/assets/examples/material/custom-snackbar/custom-snackbar.component.ts @@ -0,0 +1,25 @@ +import { MatSnackBar } from '@angular/material/snack-bar'; +import { Component, OnInit } from '@angular/core'; +import { CustomSnackbarOverviewComponent } from './custom-snackbar-overview/custom-snackbar-overview.component'; + +@Component({ + selector: 'app-custom-snackbar', + templateUrl: './custom-snackbar.component.html', + styleUrls: ['./custom-snackbar.component.scss'] +}) +export class CustomSnackbarComponent implements OnInit { + + durationInSeconds = 5; + + constructor(private snackBar: MatSnackBar) {} + + openSnackBar() { + this.snackBar.openFromComponent(CustomSnackbarOverviewComponent, { + duration: this.durationInSeconds * 1000, + }); + } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/custom-spinner/custom-spinner.component.html b/src/assets/examples/material/custom-spinner/custom-spinner.component.html new file mode 100644 index 0000000..37d4852 --- /dev/null +++ b/src/assets/examples/material/custom-spinner/custom-spinner.component.html @@ -0,0 +1,50 @@ + + +

Progress spinner configuration

+ +
+ + + + Primary + + + Accent + + + Warn + + +
+ +
+ + + + Determinate + + + Indeterminate + + +
+ +
+ + +
+
+
+ + +

Result

+ + + +
+
+ \ No newline at end of file diff --git a/src/assets/examples/material/custom-spinner/custom-spinner.component.scss b/src/assets/examples/material/custom-spinner/custom-spinner.component.scss new file mode 100644 index 0000000..ae79026 --- /dev/null +++ b/src/assets/examples/material/custom-spinner/custom-spinner.component.scss @@ -0,0 +1,15 @@ +.example-h2 { + margin: 10px; + } + + .example-section { + display: flex; + align-content: center; + align-items: center; + height: 60px; + } + + .example-margin { + margin: 0 10px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/custom-spinner/custom-spinner.component.spec.ts b/src/assets/examples/material/custom-spinner/custom-spinner.component.spec.ts new file mode 100644 index 0000000..4d8bc0c --- /dev/null +++ b/src/assets/examples/material/custom-spinner/custom-spinner.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomSpinnerComponent } from './custom-spinner.component'; + +describe('CustomSpinnerComponent', () => { + let component: CustomSpinnerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomSpinnerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomSpinnerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-spinner/custom-spinner.component.ts b/src/assets/examples/material/custom-spinner/custom-spinner.component.ts new file mode 100644 index 0000000..481fb55 --- /dev/null +++ b/src/assets/examples/material/custom-spinner/custom-spinner.component.ts @@ -0,0 +1,19 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-custom-spinner', + templateUrl: './custom-spinner.component.html', + styleUrls: ['./custom-spinner.component.scss'] +}) +export class CustomSpinnerComponent implements OnInit { + + color = 'primary'; + mode = 'determinate'; + value = 50; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/custom-tab-group/custom-tab-group.component.html b/src/assets/examples/material/custom-tab-group/custom-tab-group.component.html new file mode 100644 index 0000000..30546df --- /dev/null +++ b/src/assets/examples/material/custom-tab-group/custom-tab-group.component.html @@ -0,0 +1,37 @@ +
+ + Top + Bottom + + Tab-group +
+ +
+
+ + Primary + Accent + + Color +
+ +
+ + Primary + Accent + + Background Color +
+ + + Content 1 + Content 2 + Content 3 + + \ No newline at end of file diff --git a/src/assets/examples/material/custom-tab-group/custom-tab-group.component.scss b/src/assets/examples/material/custom-tab-group/custom-tab-group.component.scss new file mode 100644 index 0000000..3bbc7d4 --- /dev/null +++ b/src/assets/examples/material/custom-tab-group/custom-tab-group.component.scss @@ -0,0 +1,5 @@ +.example-button-toggle-label { + display: inline-block; + margin: 16px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/custom-tab-group/custom-tab-group.component.spec.ts b/src/assets/examples/material/custom-tab-group/custom-tab-group.component.spec.ts new file mode 100644 index 0000000..e29af55 --- /dev/null +++ b/src/assets/examples/material/custom-tab-group/custom-tab-group.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomTabGroupComponent } from './custom-tab-group.component'; + +describe('CustomTabGroupComponent', () => { + let component: CustomTabGroupComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomTabGroupComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomTabGroupComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/custom-tab-group/custom-tab-group.component.ts b/src/assets/examples/material/custom-tab-group/custom-tab-group.component.ts new file mode 100644 index 0000000..c8b02f6 --- /dev/null +++ b/src/assets/examples/material/custom-tab-group/custom-tab-group.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-custom-tab-group', + templateUrl: './custom-tab-group.component.html', + styleUrls: ['./custom-tab-group.component.scss'] +}) +export class CustomTabGroupComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/customized-stepper/customized-stepper.component.html b/src/assets/examples/material/customized-stepper/customized-stepper.component.html new file mode 100644 index 0000000..b5bb61c --- /dev/null +++ b/src/assets/examples/material/customized-stepper/customized-stepper.component.html @@ -0,0 +1,61 @@ + + +
+ Fill out your name + + + +
+ +
+
+
+ +
+ Fill out your address + + + +
+ + +
+
+
+ + Done + You are now done. +
+ + +
+
+
+ + + +

Put down your phones.

+
+ +
+
+ +

Socialize with each other.

+
+ + +
+
+ +

You're welcome.

+
+ + + + call_end + + + forum + +
+ \ No newline at end of file diff --git a/src/assets/examples/material/customized-stepper/customized-stepper.component.scss b/src/assets/examples/material/customized-stepper/customized-stepper.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/customized-stepper/customized-stepper.component.spec.ts b/src/assets/examples/material/customized-stepper/customized-stepper.component.spec.ts new file mode 100644 index 0000000..4c040c7 --- /dev/null +++ b/src/assets/examples/material/customized-stepper/customized-stepper.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CustomizedStepperComponent } from './customized-stepper.component'; + +describe('CustomizedStepperComponent', () => { + let component: CustomizedStepperComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CustomizedStepperComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CustomizedStepperComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/customized-stepper/customized-stepper.component.ts b/src/assets/examples/material/customized-stepper/customized-stepper.component.ts new file mode 100644 index 0000000..2274250 --- /dev/null +++ b/src/assets/examples/material/customized-stepper/customized-stepper.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit } from '@angular/core'; +import {FormBuilder, FormGroup, Validators} from '@angular/forms'; +import {STEPPER_GLOBAL_OPTIONS} from '@angular/cdk/stepper'; + +@Component({ + selector: 'app-customized-stepper', + templateUrl: './customized-stepper.component.html', + styleUrls: ['./customized-stepper.component.scss'], + providers: [{ + provide: STEPPER_GLOBAL_OPTIONS, useValue: {displayDefaultIndicatorType: false, showError: true} + }] +}) +export class CustomizedStepperComponent implements OnInit { + + firstFormGroup: FormGroup; + secondFormGroup: FormGroup; + + constructor(private _formBuilder: FormBuilder) {} + + ngOnInit() { + this.firstFormGroup = this._formBuilder.group({ + firstCtrl: ['', Validators.required] + }); + this.secondFormGroup = this._formBuilder.group({ + secondCtrl: ['', Validators.required] + }); + } + +} diff --git a/src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.html b/src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.html new file mode 100644 index 0000000..6d263ba --- /dev/null +++ b/src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.html @@ -0,0 +1,15 @@ +

Favorite Animal

+
+ My favorite animal is: +
    +
  • + Panda +
  • +
  • + Unicorn +
  • +
  • + Lion +
  • +
+
diff --git a/src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.scss b/src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.spec.ts b/src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.spec.ts new file mode 100644 index 0000000..b64c396 --- /dev/null +++ b/src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DataDialogOverviewComponent } from './data-dialog-overview.component'; + +describe('DataDialogOverviewComponent', () => { + let component: DataDialogOverviewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DataDialogOverviewComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DataDialogOverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.ts b/src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.ts new file mode 100644 index 0000000..0c051e6 --- /dev/null +++ b/src/assets/examples/material/data-dialog/data-dialog-overview/data-dialog-overview.component.ts @@ -0,0 +1,16 @@ +import { MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { Component, OnInit, Inject } from '@angular/core'; + +@Component({ + selector: 'app-data-dialog-overview', + templateUrl: './data-dialog-overview.component.html', + styleUrls: ['./data-dialog-overview.component.scss'] +}) +export class DataDialogOverviewComponent implements OnInit { + + constructor(@Inject(MAT_DIALOG_DATA) public data: any) {} + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/data-dialog/data-dialog.component.html b/src/assets/examples/material/data-dialog/data-dialog.component.html new file mode 100644 index 0000000..cdfc2fb --- /dev/null +++ b/src/assets/examples/material/data-dialog/data-dialog.component.html @@ -0,0 +1 @@ + diff --git a/src/assets/examples/material/data-dialog/data-dialog.component.scss b/src/assets/examples/material/data-dialog/data-dialog.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/data-dialog/data-dialog.component.spec.ts b/src/assets/examples/material/data-dialog/data-dialog.component.spec.ts new file mode 100644 index 0000000..f71774e --- /dev/null +++ b/src/assets/examples/material/data-dialog/data-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DataDialogComponent } from './data-dialog.component'; + +describe('DataDialogComponent', () => { + let component: DataDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DataDialogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DataDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/data-dialog/data-dialog.component.ts b/src/assets/examples/material/data-dialog/data-dialog.component.ts new file mode 100644 index 0000000..862bde6 --- /dev/null +++ b/src/assets/examples/material/data-dialog/data-dialog.component.ts @@ -0,0 +1,29 @@ +import { MatDialog } from '@angular/material/dialog'; +import { Component, OnInit } from '@angular/core'; +import { DataDialogOverviewComponent } from './data-dialog-overview/data-dialog-overview.component'; + +export interface DialogData { + animal: 'panda' | 'unicorn' | 'lion'; +} + +@Component({ + selector: 'app-data-dialog', + templateUrl: './data-dialog.component.html', + styleUrls: ['./data-dialog.component.scss'] +}) +export class DataDialogComponent implements OnInit { + + constructor(public dialog: MatDialog) {} + + openDialog() { + this.dialog.open(DataDialogOverviewComponent, { + data: { + animal: 'panda' + } + }); + } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/delay-tooltip/delay-tooltip.component.html b/src/assets/examples/material/delay-tooltip/delay-tooltip.component.html new file mode 100644 index 0000000..2abdb30 --- /dev/null +++ b/src/assets/examples/material/delay-tooltip/delay-tooltip.component.html @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/src/assets/examples/material/delay-tooltip/delay-tooltip.component.scss b/src/assets/examples/material/delay-tooltip/delay-tooltip.component.scss new file mode 100644 index 0000000..f0cc963 --- /dev/null +++ b/src/assets/examples/material/delay-tooltip/delay-tooltip.component.scss @@ -0,0 +1,5 @@ +.example-user-input { + display: block; + width: 150px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/delay-tooltip/delay-tooltip.component.spec.ts b/src/assets/examples/material/delay-tooltip/delay-tooltip.component.spec.ts new file mode 100644 index 0000000..a5b0da3 --- /dev/null +++ b/src/assets/examples/material/delay-tooltip/delay-tooltip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DelayTooltipComponent } from './delay-tooltip.component'; + +describe('DelayTooltipComponent', () => { + let component: DelayTooltipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DelayTooltipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DelayTooltipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/delay-tooltip/delay-tooltip.component.ts b/src/assets/examples/material/delay-tooltip/delay-tooltip.component.ts new file mode 100644 index 0000000..f5016a7 --- /dev/null +++ b/src/assets/examples/material/delay-tooltip/delay-tooltip.component.ts @@ -0,0 +1,19 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; + +@Component({ + selector: 'app-delay-tooltip', + templateUrl: './delay-tooltip.component.html', + styleUrls: ['./delay-tooltip.component.scss'] +}) +export class DelayTooltipComponent implements OnInit { + + showDelay = new FormControl(1000); + hideDelay = new FormControl(2000); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.html b/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.html new file mode 100644 index 0000000..f92432a --- /dev/null +++ b/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.scss b/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.scss new file mode 100644 index 0000000..692ed8c --- /dev/null +++ b/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.scss @@ -0,0 +1,4 @@ +mat-form-field { + margin-right: 12px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.spec.ts b/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.spec.ts new file mode 100644 index 0000000..34df5bf --- /dev/null +++ b/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DifferentLocaleDatepickerComponent } from './different-locale-datepicker.component'; + +describe('DifferentLocaleDatepickerComponent', () => { + let component: DifferentLocaleDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DifferentLocaleDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DifferentLocaleDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.ts b/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.ts new file mode 100644 index 0000000..494c705 --- /dev/null +++ b/src/assets/examples/material/different-locale-datepicker/different-locale-datepicker.component.ts @@ -0,0 +1,28 @@ +import {Component} from '@angular/core'; +import {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core'; +import {MAT_MOMENT_DATE_FORMATS, MomentDateAdapter} from '@angular/material-moment-adapter'; + +@Component({ + selector: 'app-different-locale-datepicker', + templateUrl: './different-locale-datepicker.component.html', + styleUrls: ['./different-locale-datepicker.component.scss'], + providers: [ + // The locale would typically be provided on the root module of your application. We do it at + // the component level here, due to limitations of our example generation script. + {provide: MAT_DATE_LOCALE, useValue: 'ja-JP'}, + + // `MomentDateAdapter` and `MAT_MOMENT_DATE_FORMATS` can be automatically provided by importing + // `MatMomentDateModule` in your applications root module. We provide it at the component level + // here, due to limitations of our example generation script. + {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]}, + {provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS}, + ], +}) +export class DifferentLocaleDatepickerComponent { + + constructor(private adapter: DateAdapter) {} + + french() { + this.adapter.setLocale('fr'); + } +} diff --git a/src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.html b/src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.html new file mode 100644 index 0000000..ad3b075 --- /dev/null +++ b/src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.html @@ -0,0 +1,23 @@ +

+ + + + + +

+ +

+ + + + + +

+ +

+ + + + + +

diff --git a/src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.scss b/src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.spec.ts b/src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.spec.ts new file mode 100644 index 0000000..5809956 --- /dev/null +++ b/src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DisabledDatepickerComponent } from './disabled-datepicker.component'; + +describe('DisabledDatepickerComponent', () => { + let component: DisabledDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DisabledDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DisabledDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.ts b/src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.ts new file mode 100644 index 0000000..c40db59 --- /dev/null +++ b/src/assets/examples/material/disabled-datepicker/disabled-datepicker.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-disabled-datepicker', + templateUrl: './disabled-datepicker.component.html', + styleUrls: ['./disabled-datepicker.component.scss'] +}) +export class DisabledDatepickerComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/disabled-select/disabled-select.component.html b/src/assets/examples/material/disabled-select/disabled-select.component.html new file mode 100644 index 0000000..baf14a8 --- /dev/null +++ b/src/assets/examples/material/disabled-select/disabled-select.component.html @@ -0,0 +1,29 @@ +

+ disabled-select works! +

+

+ Disable select +

+ +

mat-select

+ + Choose an option + + Option 1 + Option 2 (disabled) + Option 3 + + + +

native html select

+ + Choose an option + + + diff --git a/src/assets/examples/material/disabled-select/disabled-select.component.scss b/src/assets/examples/material/disabled-select/disabled-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/disabled-select/disabled-select.component.spec.ts b/src/assets/examples/material/disabled-select/disabled-select.component.spec.ts new file mode 100644 index 0000000..da14584 --- /dev/null +++ b/src/assets/examples/material/disabled-select/disabled-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DisabledSelectComponent } from './disabled-select.component'; + +describe('DisabledSelectComponent', () => { + let component: DisabledSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DisabledSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DisabledSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/disabled-select/disabled-select.component.ts b/src/assets/examples/material/disabled-select/disabled-select.component.ts new file mode 100644 index 0000000..0db383a --- /dev/null +++ b/src/assets/examples/material/disabled-select/disabled-select.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; + +@Component({ + selector: 'app-disabled-select', + templateUrl: './disabled-select.component.html', + styleUrls: ['./disabled-select.component.scss'] +}) +export class DisabledSelectComponent implements OnInit { + + disableSelect = new FormControl(false); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.html b/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.html new file mode 100644 index 0000000..449ca44 --- /dev/null +++ b/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.html @@ -0,0 +1,10 @@ + + + + Tooltip disabled + diff --git a/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.scss b/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.scss new file mode 100644 index 0000000..7643c64 --- /dev/null +++ b/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.scss @@ -0,0 +1,4 @@ +.example-disabled-checkbox { + margin-left: 8px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.spec.ts b/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.spec.ts new file mode 100644 index 0000000..11bdc50 --- /dev/null +++ b/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DisabledTooltipComponent } from './disabled-tooltip.component'; + +describe('DisabledTooltipComponent', () => { + let component: DisabledTooltipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DisabledTooltipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DisabledTooltipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.ts b/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.ts new file mode 100644 index 0000000..be680d0 --- /dev/null +++ b/src/assets/examples/material/disabled-tooltip/disabled-tooltip.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; + +@Component({ + selector: 'app-disabled-tooltip', + templateUrl: './disabled-tooltip.component.html', + styleUrls: ['./disabled-tooltip.component.scss'] +}) +export class DisabledTooltipComponent implements OnInit { + + disabled = new FormControl(false); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.html b/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.html new file mode 100644 index 0000000..5daac57 --- /dev/null +++ b/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.html @@ -0,0 +1,10 @@ +
+ + + + + {{option.name}} + + + +
diff --git a/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.scss b/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.scss new file mode 100644 index 0000000..9a473b4 --- /dev/null +++ b/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.scss @@ -0,0 +1,10 @@ +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; + } + + .example-full-width { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.spec.ts b/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.spec.ts new file mode 100644 index 0000000..2f15515 --- /dev/null +++ b/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DisplayValueAutocompleteComponent } from './display-value-autocomplete.component'; + +describe('DisplayValueAutocompleteComponent', () => { + let component: DisplayValueAutocompleteComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DisplayValueAutocompleteComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DisplayValueAutocompleteComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.ts b/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.ts new file mode 100644 index 0000000..4f7b91a --- /dev/null +++ b/src/assets/examples/material/display-value-autocomplete/display-value-autocomplete.component.ts @@ -0,0 +1,46 @@ +import {Component, OnInit} from '@angular/core'; +import {FormControl} from '@angular/forms'; +import {Observable} from 'rxjs'; +import {map, startWith} from 'rxjs/operators'; + +export interface User { + name: string; +} + +@Component({ + selector: 'app-display-value-autocomplete', + templateUrl: './display-value-autocomplete.component.html', + styleUrls: ['./display-value-autocomplete.component.scss'] +}) +export class DisplayValueAutocompleteComponent implements OnInit { + + myControl = new FormControl(); + + options: User[] = [ + {name: 'Mary'}, + {name: 'Shelley'}, + {name: 'Igor'} + ]; + + filteredOptions: Observable; + + ngOnInit() { + this.filteredOptions = this.myControl.valueChanges + .pipe( + startWith(''), + map((value:any) => typeof value === 'string' ? value : value.name), + map(name => name ? this._filter(name) : this.options.slice()) + ); + } + + displayFn(user?: User): string | undefined { + return user ? user.name : undefined; + } + + private _filter(name: string): User[] { + const filterValue = name.toLowerCase(); + + return this.options.filter(option => option.name.toLowerCase().indexOf(filterValue) === 0); + } + +} diff --git a/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.html b/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.html new file mode 100644 index 0000000..0a11bdc --- /dev/null +++ b/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.html @@ -0,0 +1,13 @@ + + Drawer content + + Main content + Main content + Main content + Main content + Main content + Main content + Main content + Main content + + diff --git a/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.scss b/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.scss new file mode 100644 index 0000000..fa488f9 --- /dev/null +++ b/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.scss @@ -0,0 +1,7 @@ +.example-container { + width: 400px; + height: 200px; + margin: 10px; + border: 1px solid #555; + } + \ No newline at end of file diff --git a/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.spec.ts b/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.spec.ts new file mode 100644 index 0000000..4567768 --- /dev/null +++ b/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DrawerSidenavComponent } from './drawer-sidenav.component'; + +describe('DrawerSidenavComponent', () => { + let component: DrawerSidenavComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DrawerSidenavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DrawerSidenavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.ts b/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.ts new file mode 100644 index 0000000..271f76b --- /dev/null +++ b/src/assets/examples/material/drawer-sidenav/drawer-sidenav.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-drawer-sidenav', + templateUrl: './drawer-sidenav.component.html', + styleUrls: ['./drawer-sidenav.component.scss'] +}) +export class DrawerSidenavComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.html b/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.html new file mode 100644 index 0000000..f1075b0 --- /dev/null +++ b/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.html @@ -0,0 +1,19 @@ + + + + {{node.item}} + + + + {{node.item}} + + + + \ No newline at end of file diff --git a/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.scss b/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.scss new file mode 100644 index 0000000..f8da11a --- /dev/null +++ b/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.scss @@ -0,0 +1,4 @@ +.example-tree-progress-bar { + margin-left: 30px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.spec.ts b/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.spec.ts new file mode 100644 index 0000000..9704bcf --- /dev/null +++ b/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DynamicDataTreeComponent } from './dynamic-data-tree.component'; + +describe('DynamicDataTreeComponent', () => { + let component: DynamicDataTreeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DynamicDataTreeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DynamicDataTreeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.ts b/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.ts new file mode 100644 index 0000000..5b00e9d --- /dev/null +++ b/src/assets/examples/material/dynamic-data-tree/dynamic-data-tree.component.ts @@ -0,0 +1,143 @@ +import { OnInit } from '@angular/core'; +import {CollectionViewer, SelectionChange} from '@angular/cdk/collections'; +import {FlatTreeControl} from '@angular/cdk/tree'; +import {Component, Injectable} from '@angular/core'; +import {BehaviorSubject, merge, Observable} from 'rxjs'; +import {map} from 'rxjs/operators'; + +/** Flat node with expandable and level information */ +export class DynamicFlatNode { + constructor(public item: string, public level = 1, public expandable = false, + public isLoading = false) {} +} + +/** + * Database for dynamic data. When expanding a node in the tree, the data source will need to fetch + * the descendants data from the database. + */ +@Injectable() +export class DynamicDatabase { + dataMap = new Map([ + ['Fruits', ['Apple', 'Orange', 'Banana']], + ['Vegetables', ['Tomato', 'Potato', 'Onion']], + ['Apple', ['Fuji', 'Macintosh']], + ['Onion', ['Yellow', 'White', 'Purple']] + ]); + + rootLevelNodes: string[] = ['Fruits', 'Vegetables']; + + /** Initial data from database */ + initialData(): DynamicFlatNode[] { + return this.rootLevelNodes.map(name => new DynamicFlatNode(name, 0, true)); + } + + getChildren(node: string): string[] | undefined { + return this.dataMap.get(node); + } + + isExpandable(node: string): boolean { + return this.dataMap.has(node); + } +} +/** + * File database, it can build a tree structured Json object from string. + * Each node in Json object represents a file or a directory. For a file, it has filename and type. + * For a directory, it has filename and children (a list of files or directories). + * The input will be a json object string, and the output is a list of `FileNode` with nested + * structure. + */ +@Injectable() +export class DynamicDataSource { + + dataChange = new BehaviorSubject([]); + + get data(): DynamicFlatNode[] { return this.dataChange.value; } + set data(value: DynamicFlatNode[]) { + this.treeControl.dataNodes = value; + this.dataChange.next(value); + } + + constructor(private treeControl: FlatTreeControl, + private database: DynamicDatabase) {} + + connect(collectionViewer: CollectionViewer): Observable { + this.treeControl.expansionModel.changed.subscribe(change => { + if ((change as SelectionChange).added || + (change as SelectionChange).removed) { + this.handleTreeControl(change as SelectionChange); + } + }); + + return merge(collectionViewer.viewChange, this.dataChange).pipe(map(() => this.data)); + } + + /** Handle expand/collapse behaviors */ + handleTreeControl(change: SelectionChange) { + if (change.added) { + change.added.forEach(node => this.toggleNode(node, true)); + } + if (change.removed) { + change.removed.slice().reverse().forEach(node => this.toggleNode(node, false)); + } + } + + /** + * Toggle the node, remove from display list + */ + toggleNode(node: DynamicFlatNode, expand: boolean) { + const children = this.database.getChildren(node.item); + const index = this.data.indexOf(node); + if (!children || index < 0) { // If no children, or cannot find the node, no op + return; + } + + node.isLoading = true; + + setTimeout(() => { + if (expand) { + const nodes = children.map(name => + new DynamicFlatNode(name, node.level + 1, this.database.isExpandable(name))); + this.data.splice(index + 1, 0, ...nodes); + } else { + let count = 0; + for (let i = index + 1; i < this.data.length + && this.data[i].level > node.level; i++, count++) {} + this.data.splice(index + 1, count); + } + + // notify the change + this.dataChange.next(this.data); + node.isLoading = false; + }, 1000); + } +} + +@Component({ + selector: 'app-dynamic-data-tree', + templateUrl: './dynamic-data-tree.component.html', + styleUrls: ['./dynamic-data-tree.component.scss'], + providers: [DynamicDatabase] +}) +export class DynamicDataTreeComponent implements OnInit { + + constructor(database: DynamicDatabase) { + this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable); + this.dataSource = new DynamicDataSource(this.treeControl, database); + + this.dataSource.data = database.initialData(); + } + + treeControl: FlatTreeControl; + + dataSource: DynamicDataSource; + + getLevel = (node: DynamicFlatNode) => node.level; + + isExpandable = (node: DynamicFlatNode) => node.expandable; + + hasChild = (_: number, _nodeData: DynamicFlatNode) => _nodeData.expandable; + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/dynamic-grid/dynamic-grid.component.html b/src/assets/examples/material/dynamic-grid/dynamic-grid.component.html new file mode 100644 index 0000000..c79507b --- /dev/null +++ b/src/assets/examples/material/dynamic-grid/dynamic-grid.component.html @@ -0,0 +1,9 @@ + + + {{tile.text}} + + diff --git a/src/assets/examples/material/dynamic-grid/dynamic-grid.component.scss b/src/assets/examples/material/dynamic-grid/dynamic-grid.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/dynamic-grid/dynamic-grid.component.spec.ts b/src/assets/examples/material/dynamic-grid/dynamic-grid.component.spec.ts new file mode 100644 index 0000000..0f3060c --- /dev/null +++ b/src/assets/examples/material/dynamic-grid/dynamic-grid.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DynamicGridComponent } from './dynamic-grid.component'; + +describe('DynamicGridComponent', () => { + let component: DynamicGridComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DynamicGridComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DynamicGridComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/dynamic-grid/dynamic-grid.component.ts b/src/assets/examples/material/dynamic-grid/dynamic-grid.component.ts new file mode 100644 index 0000000..02396c8 --- /dev/null +++ b/src/assets/examples/material/dynamic-grid/dynamic-grid.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit } from '@angular/core'; + +export interface Tile { + color: string; + cols: number; + rows: number; + text: string; +} + +@Component({ + selector: 'app-dynamic-grid', + templateUrl: './dynamic-grid.component.html', + styleUrls: ['./dynamic-grid.component.scss'] +}) +export class DynamicGridComponent implements OnInit { + + tiles: Tile[] = [ + {text: 'One', cols: 3, rows: 1, color: 'lightblue'}, + {text: 'Two', cols: 1, rows: 2, color: 'lightgreen'}, + {text: 'Three', cols: 1, rows: 1, color: 'lightpink'}, + {text: 'Four', cols: 2, rows: 1, color: '#DDBDF1'}, + ]; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.html b/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.html new file mode 100644 index 0000000..cc4e5f0 --- /dev/null +++ b/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.html @@ -0,0 +1,30 @@ +
+ Selected tab index: + + + +
+ +
+ + Select tab after adding +
+ + + + Contents for {{tab}} tab + + + + + \ No newline at end of file diff --git a/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.scss b/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.scss new file mode 100644 index 0000000..a28708d --- /dev/null +++ b/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.scss @@ -0,0 +1,5 @@ +.example-input-label, +.example-add-tab-button, +.example-delete-tab-button { + margin: 8px; +} diff --git a/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.spec.ts b/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.spec.ts new file mode 100644 index 0000000..6090e96 --- /dev/null +++ b/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DynamicTabGroupComponent } from './dynamic-tab-group.component'; + +describe('DynamicTabGroupComponent', () => { + let component: DynamicTabGroupComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DynamicTabGroupComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DynamicTabGroupComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.ts b/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.ts new file mode 100644 index 0000000..11a7015 --- /dev/null +++ b/src/assets/examples/material/dynamic-tab-group/dynamic-tab-group.component.ts @@ -0,0 +1,31 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; + +@Component({ + selector: 'app-dynamic-tab-group', + templateUrl: './dynamic-tab-group.component.html', + styleUrls: ['./dynamic-tab-group.component.scss'] +}) +export class DynamicTabGroupComponent implements OnInit { + + tabs = ['First', 'Second', 'Third']; + selected = new FormControl(0); + + constructor() { } + + ngOnInit() { + } + + addTab(selectAfterAdding: boolean) { + this.tabs.push('New'); + + if (selectAfterAdding) { + this.selected.setValue(this.tabs.length - 1); + } + } + + removeTab(index: number) { + this.tabs.splice(index, 1); + } + +} diff --git a/src/assets/examples/material/error-form-field/error-form-field.component.html b/src/assets/examples/material/error-form-field/error-form-field.component.html new file mode 100644 index 0000000..4b06c9b --- /dev/null +++ b/src/assets/examples/material/error-form-field/error-form-field.component.html @@ -0,0 +1,6 @@ +
+ + + {{getErrorMessage()}} + +
diff --git a/src/assets/examples/material/error-form-field/error-form-field.component.scss b/src/assets/examples/material/error-form-field/error-form-field.component.scss new file mode 100644 index 0000000..621f9a7 --- /dev/null +++ b/src/assets/examples/material/error-form-field/error-form-field.component.scss @@ -0,0 +1,9 @@ +.example-container { + display: flex; + flex-direction: column; + } + + .example-container > * { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/error-form-field/error-form-field.component.spec.ts b/src/assets/examples/material/error-form-field/error-form-field.component.spec.ts new file mode 100644 index 0000000..4972e83 --- /dev/null +++ b/src/assets/examples/material/error-form-field/error-form-field.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ErrorFormFieldComponent } from './error-form-field.component'; + +describe('ErrorFormFieldComponent', () => { + let component: ErrorFormFieldComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ErrorFormFieldComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ErrorFormFieldComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/error-form-field/error-form-field.component.ts b/src/assets/examples/material/error-form-field/error-form-field.component.ts new file mode 100644 index 0000000..75100bc --- /dev/null +++ b/src/assets/examples/material/error-form-field/error-form-field.component.ts @@ -0,0 +1,23 @@ +import { Component, OnInit } from "@angular/core"; +import { FormControl, Validators } from "@angular/forms"; + +@Component({ + selector: "app-error-form-field", + templateUrl: "./error-form-field.component.html", + styleUrls: ["./error-form-field.component.scss"] +}) +export class ErrorFormFieldComponent implements OnInit { + email = new FormControl("", [Validators.required, Validators.email]); + + constructor() {} + + ngOnInit() {} + + getErrorMessage() { + return this.email.hasError("required") + ? "You must enter a value" + : this.email.hasError("email") + ? "Not a valid email" + : ""; + } +} diff --git a/src/assets/examples/material/error-input/error-input.component.html b/src/assets/examples/material/error-input/error-input.component.html new file mode 100644 index 0000000..a9a0244 --- /dev/null +++ b/src/assets/examples/material/error-input/error-input.component.html @@ -0,0 +1,13 @@ +
+ + + Errors appear instantly! + + Please enter a valid email address + + + Email is required + + +
diff --git a/src/assets/examples/material/error-input/error-input.component.scss b/src/assets/examples/material/error-input/error-input.component.scss new file mode 100644 index 0000000..9a473b4 --- /dev/null +++ b/src/assets/examples/material/error-input/error-input.component.scss @@ -0,0 +1,10 @@ +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; + } + + .example-full-width { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/error-input/error-input.component.spec.ts b/src/assets/examples/material/error-input/error-input.component.spec.ts new file mode 100644 index 0000000..079e8ec --- /dev/null +++ b/src/assets/examples/material/error-input/error-input.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ErrorInputComponent } from './error-input.component'; + +describe('ErrorInputComponent', () => { + let component: ErrorInputComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ErrorInputComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ErrorInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/error-input/error-input.component.ts b/src/assets/examples/material/error-input/error-input.component.ts new file mode 100644 index 0000000..01ccf59 --- /dev/null +++ b/src/assets/examples/material/error-input/error-input.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl, FormGroupDirective, NgForm, Validators} from '@angular/forms'; +import {ErrorStateMatcher} from '@angular/material/core'; + +/** Error when invalid control is dirty, touched, or submitted. */ +export class MyErrorStateMatcher implements ErrorStateMatcher { + isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean { + const isSubmitted = form && form.submitted; + return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted)); + } +} + +@Component({ + selector: 'app-error-input', + templateUrl: './error-input.component.html', + styleUrls: ['./error-input.component.scss'] +}) +export class ErrorInputComponent implements OnInit { + + emailFormControl = new FormControl('', [ + Validators.required, + Validators.email, + ]); + + matcher = new MyErrorStateMatcher(); + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/error-message-input/error-message-input.component.html b/src/assets/examples/material/error-message-input/error-message-input.component.html new file mode 100644 index 0000000..cf241ee --- /dev/null +++ b/src/assets/examples/material/error-message-input/error-message-input.component.html @@ -0,0 +1,11 @@ +
+ + + + Please enter a valid email address + + + Email is required + + +
diff --git a/src/assets/examples/material/error-message-input/error-message-input.component.scss b/src/assets/examples/material/error-message-input/error-message-input.component.scss new file mode 100644 index 0000000..9a473b4 --- /dev/null +++ b/src/assets/examples/material/error-message-input/error-message-input.component.scss @@ -0,0 +1,10 @@ +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; + } + + .example-full-width { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/error-message-input/error-message-input.component.spec.ts b/src/assets/examples/material/error-message-input/error-message-input.component.spec.ts new file mode 100644 index 0000000..0ba6060 --- /dev/null +++ b/src/assets/examples/material/error-message-input/error-message-input.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ErrorMessageInputComponent } from './error-message-input.component'; + +describe('ErrorMessageInputComponent', () => { + let component: ErrorMessageInputComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ErrorMessageInputComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ErrorMessageInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/error-message-input/error-message-input.component.ts b/src/assets/examples/material/error-message-input/error-message-input.component.ts new file mode 100644 index 0000000..7db9e7b --- /dev/null +++ b/src/assets/examples/material/error-message-input/error-message-input.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl, Validators} from '@angular/forms'; + +@Component({ + selector: 'app-error-message-input', + templateUrl: './error-message-input.component.html', + styleUrls: ['./error-message-input.component.scss'] +}) +export class ErrorMessageInputComponent implements OnInit { + + emailFormControl = new FormControl('', [ + Validators.required, + Validators.email, + ]); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/error-select/error-select.component.html b/src/assets/examples/material/error-select/error-select.component.html new file mode 100644 index 0000000..9e5f17b --- /dev/null +++ b/src/assets/examples/material/error-select/error-select.component.html @@ -0,0 +1,28 @@ +

mat-select

+ + Choose one + + Clear + Valid option + Invalid option + + Errors appear instantly! + You must make a selection + + Your selection is invalid + + + +

native html select

+ + Choose one + + You must make a selection + + Your selection is invalid + + diff --git a/src/assets/examples/material/error-select/error-select.component.scss b/src/assets/examples/material/error-select/error-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/error-select/error-select.component.spec.ts b/src/assets/examples/material/error-select/error-select.component.spec.ts new file mode 100644 index 0000000..199730c --- /dev/null +++ b/src/assets/examples/material/error-select/error-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ErrorSelectComponent } from './error-select.component'; + +describe('ErrorSelectComponent', () => { + let component: ErrorSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ErrorSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ErrorSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/error-select/error-select.component.ts b/src/assets/examples/material/error-select/error-select.component.ts new file mode 100644 index 0000000..9011c99 --- /dev/null +++ b/src/assets/examples/material/error-select/error-select.component.ts @@ -0,0 +1,42 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl, FormGroupDirective, NgForm, Validators} from '@angular/forms'; +import {ErrorStateMatcher} from '@angular/material/core'; + +/** Error when invalid control is dirty, touched, or submitted. */ +export class MyErrorStateMatcher implements ErrorStateMatcher { + isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean { + const isSubmitted = form && form.submitted; + return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted)); + } +} + +@Component({ + selector: 'app-error-select', + templateUrl: './error-select.component.html', + styleUrls: ['./error-select.component.scss'] +}) +export class ErrorSelectComponent implements OnInit { + + selected = new FormControl('valid', [ + Validators.required, + Validators.pattern('valid'), + ]); + + selectFormControl = new FormControl('valid', [ + Validators.required, + Validators.pattern('valid'), + ]); + + nativeSelectFormControl = new FormControl('valid', [ + Validators.required, + Validators.pattern('valid'), + ]); + + matcher = new MyErrorStateMatcher(); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/error-stepper/error-stepper.component.html b/src/assets/examples/material/error-stepper/error-stepper.component.html new file mode 100644 index 0000000..dbd2eaa --- /dev/null +++ b/src/assets/examples/material/error-stepper/error-stepper.component.html @@ -0,0 +1,33 @@ + + +
+ Fill out your name + + + +
+ +
+
+
+ +
+ Fill out your address + + + +
+ + +
+
+
+ + Done + You are now done. +
+ + +
+
+
diff --git a/src/assets/examples/material/error-stepper/error-stepper.component.scss b/src/assets/examples/material/error-stepper/error-stepper.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/error-stepper/error-stepper.component.spec.ts b/src/assets/examples/material/error-stepper/error-stepper.component.spec.ts new file mode 100644 index 0000000..ac3e2b6 --- /dev/null +++ b/src/assets/examples/material/error-stepper/error-stepper.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ErrorStepperComponent } from './error-stepper.component'; + +describe('ErrorStepperComponent', () => { + let component: ErrorStepperComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ErrorStepperComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ErrorStepperComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/error-stepper/error-stepper.component.ts b/src/assets/examples/material/error-stepper/error-stepper.component.ts new file mode 100644 index 0000000..8aa0bf2 --- /dev/null +++ b/src/assets/examples/material/error-stepper/error-stepper.component.ts @@ -0,0 +1,29 @@ +import {Component, OnInit} from '@angular/core'; +import {FormBuilder, FormGroup, Validators} from '@angular/forms'; +import {STEPPER_GLOBAL_OPTIONS} from '@angular/cdk/stepper'; + +@Component({ + selector: 'app-error-stepper', + templateUrl: './error-stepper.component.html', + styleUrls: ['./error-stepper.component.scss'], + providers: [{ + provide: STEPPER_GLOBAL_OPTIONS, useValue: {showError: true} + }] +}) +export class ErrorStepperComponent implements OnInit { + + firstFormGroup: FormGroup; + secondFormGroup: FormGroup; + + constructor(private _formBuilder: FormBuilder) {} + + ngOnInit() { + this.firstFormGroup = this._formBuilder.group({ + firstCtrl: ['', Validators.required] + }); + this.secondFormGroup = this._formBuilder.group({ + secondCtrl: ['', Validators.required] + }); + } + +} diff --git a/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.html b/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.html new file mode 100644 index 0000000..a2c1886 --- /dev/null +++ b/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.html @@ -0,0 +1,11 @@ + + +

+
+ + +

+

Closed due to: {{reason}}

+
+
\ No newline at end of file diff --git a/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.scss b/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.scss new file mode 100644 index 0000000..afacdb8 --- /dev/null +++ b/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.scss @@ -0,0 +1,8 @@ +.example-container { + // position: absolute; + // top: 0; + // bottom: 0; + // left: 0; + // right: 0; + } + \ No newline at end of file diff --git a/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.spec.ts b/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.spec.ts new file mode 100644 index 0000000..eb8d9da --- /dev/null +++ b/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EscapeBackdropSidenavComponent } from './escape-backdrop-sidenav.component'; + +describe('EscapeBackdropSidenavComponent', () => { + let component: EscapeBackdropSidenavComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EscapeBackdropSidenavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EscapeBackdropSidenavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.ts b/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.ts new file mode 100644 index 0000000..7ea0cee --- /dev/null +++ b/src/assets/examples/material/escape-backdrop-sidenav/escape-backdrop-sidenav.component.ts @@ -0,0 +1,27 @@ +import { MatSidenav } from '@angular/material/sidenav'; +import { Component, OnInit, ViewChild } from '@angular/core'; + +@Component({ + selector: 'app-escape-backdrop-sidenav', + templateUrl: './escape-backdrop-sidenav.component.html', + styleUrls: ['./escape-backdrop-sidenav.component.scss'] +}) +export class EscapeBackdropSidenavComponent implements OnInit { + + @ViewChild('sidenav') sidenav: MatSidenav; + + reason = ''; + + constructor() { } + + ngOnInit() { + } + + close(reason: string) { + this.reason = reason; + this.sidenav.close(); + } + + + +} diff --git a/src/assets/examples/material/event-datepicker/event-datepicker.component.html b/src/assets/examples/material/event-datepicker/event-datepicker.component.html new file mode 100644 index 0000000..1935c71 --- /dev/null +++ b/src/assets/examples/material/event-datepicker/event-datepicker.component.html @@ -0,0 +1,10 @@ + + + + + + +
+
{{e}}
+
diff --git a/src/assets/examples/material/event-datepicker/event-datepicker.component.scss b/src/assets/examples/material/event-datepicker/event-datepicker.component.scss new file mode 100644 index 0000000..be335f5 --- /dev/null +++ b/src/assets/examples/material/event-datepicker/event-datepicker.component.scss @@ -0,0 +1,7 @@ +.example-events { + width: 400px; + height: 200px; + border: 1px solid #555; + overflow: auto; + } + \ No newline at end of file diff --git a/src/assets/examples/material/event-datepicker/event-datepicker.component.spec.ts b/src/assets/examples/material/event-datepicker/event-datepicker.component.spec.ts new file mode 100644 index 0000000..f2cb6f6 --- /dev/null +++ b/src/assets/examples/material/event-datepicker/event-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EventDatepickerComponent } from './event-datepicker.component'; + +describe('EventDatepickerComponent', () => { + let component: EventDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ EventDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EventDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/event-datepicker/event-datepicker.component.ts b/src/assets/examples/material/event-datepicker/event-datepicker.component.ts new file mode 100644 index 0000000..229bad0 --- /dev/null +++ b/src/assets/examples/material/event-datepicker/event-datepicker.component.ts @@ -0,0 +1,23 @@ +import { OnInit } from '@angular/core'; +import {Component} from '@angular/core'; +import {MatDatepickerInputEvent} from '@angular/material/datepicker'; + +@Component({ + selector: 'app-event-datepicker', + templateUrl: './event-datepicker.component.html', + styleUrls: ['./event-datepicker.component.scss'] +}) +export class EventDatepickerComponent implements OnInit { + + events: string[] = []; + + constructor() { } + + ngOnInit() { + } + + addEvent(type: string, event: MatDatepickerInputEvent) { + this.events.push(`${type}: ${event.value}`); + } + +} diff --git a/src/assets/examples/material/feature-select/feature-select.component.html b/src/assets/examples/material/feature-select/feature-select.component.html new file mode 100644 index 0000000..d10b0d4 --- /dev/null +++ b/src/assets/examples/material/feature-select/feature-select.component.html @@ -0,0 +1,28 @@ +

mat select

+ + Favorite animal + + -- + + {{animal.name}} + + + Please choose an animal + {{animalControl.value?.sound}} + + +

native html select

+ + Select your car (required) + + + This field is required + + You can pick up your favorite car here + + diff --git a/src/assets/examples/material/feature-select/feature-select.component.scss b/src/assets/examples/material/feature-select/feature-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/feature-select/feature-select.component.spec.ts b/src/assets/examples/material/feature-select/feature-select.component.spec.ts new file mode 100644 index 0000000..a0101e6 --- /dev/null +++ b/src/assets/examples/material/feature-select/feature-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FeatureSelectComponent } from './feature-select.component'; + +describe('FeatureSelectComponent', () => { + let component: FeatureSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FeatureSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FeatureSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/feature-select/feature-select.component.ts b/src/assets/examples/material/feature-select/feature-select.component.ts new file mode 100644 index 0000000..3c66a6f --- /dev/null +++ b/src/assets/examples/material/feature-select/feature-select.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl, Validators} from '@angular/forms'; + +export interface Animal { + name: string; + sound: string; +} + +@Component({ + selector: 'app-feature-select', + templateUrl: './feature-select.component.html', + styleUrls: ['./feature-select.component.scss'] +}) +export class FeatureSelectComponent implements OnInit { + + animalControl = new FormControl('', [Validators.required]); + selectFormControl = new FormControl('', Validators.required); + animals: Animal[] = [ + {name: 'Dog', sound: 'Woof!'}, + {name: 'Cat', sound: 'Meow!'}, + {name: 'Cow', sound: 'Moo!'}, + {name: 'Fox', sound: 'Wa-pa-pa-pa-pa-pa-pow!'}, + ]; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.html b/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.html new file mode 100644 index 0000000..3a5aefa --- /dev/null +++ b/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.html @@ -0,0 +1,10 @@ +
+ + + + + {{option}} + + + +
diff --git a/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.scss b/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.scss new file mode 100644 index 0000000..9a473b4 --- /dev/null +++ b/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.scss @@ -0,0 +1,10 @@ +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; + } + + .example-full-width { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.spec.ts b/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.spec.ts new file mode 100644 index 0000000..bc5c411 --- /dev/null +++ b/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FilterAutocompleteComponent } from './filter-autocomplete.component'; + +describe('FilterAutocompleteComponent', () => { + let component: FilterAutocompleteComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FilterAutocompleteComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FilterAutocompleteComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.ts b/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.ts new file mode 100644 index 0000000..d8fda01 --- /dev/null +++ b/src/assets/examples/material/filter-autocomplete/filter-autocomplete.component.ts @@ -0,0 +1,33 @@ +import {Component, OnInit} from '@angular/core'; +import {FormControl} from '@angular/forms'; +import {Observable} from 'rxjs'; +import {map, startWith} from 'rxjs/operators'; + +@Component({ + selector: 'app-filter-autocomplete', + templateUrl: './filter-autocomplete.component.html', + styleUrls: ['./filter-autocomplete.component.scss'] +}) +export class FilterAutocompleteComponent implements OnInit { + + constructor() { } + + myControl = new FormControl(); + options: string[] = ['One', 'Two', 'Three']; + filteredOptions: Observable; + + ngOnInit() { + this.filteredOptions = this.myControl.valueChanges + .pipe( + startWith(''), + map(value => this._filter(value)) + ); + } + + private _filter(value: string): string[] { + const filterValue = value.toLowerCase(); + + return this.options.filter(option => option.toLowerCase().includes(filterValue)); + } + +} diff --git a/src/assets/examples/material/filter-datepicker/filter-datepicker.component.html b/src/assets/examples/material/filter-datepicker/filter-datepicker.component.html new file mode 100644 index 0000000..6a44973 --- /dev/null +++ b/src/assets/examples/material/filter-datepicker/filter-datepicker.component.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/examples/material/filter-datepicker/filter-datepicker.component.scss b/src/assets/examples/material/filter-datepicker/filter-datepicker.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/filter-datepicker/filter-datepicker.component.spec.ts b/src/assets/examples/material/filter-datepicker/filter-datepicker.component.spec.ts new file mode 100644 index 0000000..e72ad62 --- /dev/null +++ b/src/assets/examples/material/filter-datepicker/filter-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FilterDatepickerComponent } from './filter-datepicker.component'; + +describe('FilterDatepickerComponent', () => { + let component: FilterDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FilterDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FilterDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/filter-datepicker/filter-datepicker.component.ts b/src/assets/examples/material/filter-datepicker/filter-datepicker.component.ts new file mode 100644 index 0000000..a92c14f --- /dev/null +++ b/src/assets/examples/material/filter-datepicker/filter-datepicker.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-filter-datepicker', + templateUrl: './filter-datepicker.component.html', + styleUrls: ['./filter-datepicker.component.scss'] +}) +export class FilterDatepickerComponent implements OnInit { + + myFilter = (d: Date): boolean => { + const day = d.getDay(); + // Prevent Saturday and Sunday from being selected. + return day !== 0 && day !== 6; + } + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/filter-table/filter-table.component.html b/src/assets/examples/material/filter-table/filter-table.component.html new file mode 100644 index 0000000..f0e4e00 --- /dev/null +++ b/src/assets/examples/material/filter-table/filter-table.component.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}}
diff --git a/src/assets/examples/material/filter-table/filter-table.component.scss b/src/assets/examples/material/filter-table/filter-table.component.scss new file mode 100644 index 0000000..d8e79b1 --- /dev/null +++ b/src/assets/examples/material/filter-table/filter-table.component.scss @@ -0,0 +1,10 @@ +/* Structure */ +table { + width: 100%; + } + + .mat-form-field { + font-size: 14px; + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/filter-table/filter-table.component.spec.ts b/src/assets/examples/material/filter-table/filter-table.component.spec.ts new file mode 100644 index 0000000..bb4831e --- /dev/null +++ b/src/assets/examples/material/filter-table/filter-table.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FilterTableComponent } from './filter-table.component'; + +describe('FilterTableComponent', () => { + let component: FilterTableComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FilterTableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FilterTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/filter-table/filter-table.component.ts b/src/assets/examples/material/filter-table/filter-table.component.ts new file mode 100644 index 0000000..a853502 --- /dev/null +++ b/src/assets/examples/material/filter-table/filter-table.component.ts @@ -0,0 +1,43 @@ +import { Component, OnInit } from '@angular/core'; +import { MatTableDataSource } from '@angular/material/table'; + +export interface PeriodicElement { + name: string; + position: number; + weight: number; + symbol: string; +} + +const ELEMENT_DATA: PeriodicElement[] = [ + {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, + {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, + {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, + {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, + {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, + {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, + {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, + {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, + {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, + {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, +]; + +@Component({ + selector: 'app-filter-table', + templateUrl: './filter-table.component.html', + styleUrls: ['./filter-table.component.scss'] +}) +export class FilterTableComponent implements OnInit { + + displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; + dataSource = new MatTableDataSource(ELEMENT_DATA); + + constructor() { } + + ngOnInit() { + } + + applyFilter(filterValue: string) { + this.dataSource.filter = filterValue.trim().toLowerCase(); + } + +} diff --git a/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.html b/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.html new file mode 100644 index 0000000..5ecf3fb --- /dev/null +++ b/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.html @@ -0,0 +1,44 @@ + + + + + + {{ options.value.fixed ? "Fixed" : "Non-fixed" }} Sidenav + + + +

Fixed

+

+ + + +

+

+ + + +

+

+
+
+ + +
diff --git a/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.scss b/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.scss new file mode 100644 index 0000000..129ed07 --- /dev/null +++ b/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.scss @@ -0,0 +1,30 @@ +.example-container { + position: absolute; + top: 60px; + bottom: 60px; + left: 0; + right: 0; + } + + .example-sidenav { + display: flex; + align-items: center; + justify-content: center; + width: 200px; + background: rgba(255, 0, 0, 0.5); + } + + .example-header { + position: fixed; + top: 0; + left: 0; + right: 0; + } + + .example-footer { + position: fixed; + bottom: 0; + left: 0; + right: 0; + } + \ No newline at end of file diff --git a/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.spec.ts b/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.spec.ts new file mode 100644 index 0000000..c33b510 --- /dev/null +++ b/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FixedSidenavComponent } from './fixed-sidenav.component'; + +describe('FixedSidenavComponent', () => { + let component: FixedSidenavComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FixedSidenavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FixedSidenavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.ts b/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.ts new file mode 100644 index 0000000..aad9a58 --- /dev/null +++ b/src/assets/examples/material/fixed-sidenav/fixed-sidenav.component.ts @@ -0,0 +1,24 @@ +import { Component, OnInit } from '@angular/core'; +import {FormBuilder, FormGroup} from '@angular/forms'; + +@Component({ + selector: 'app-fixed-sidenav', + templateUrl: './fixed-sidenav.component.html', + styleUrls: ['./fixed-sidenav.component.scss'] +}) +export class FixedSidenavComponent implements OnInit { + + options: FormGroup; + + constructor(fb: FormBuilder) { + this.options = fb.group({ + bottom: 0, + fixed: false, + top: 0 + }); + } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/flat-tree/flat-tree.component.html b/src/assets/examples/material/flat-tree/flat-tree.component.html new file mode 100644 index 0000000..4bf277f --- /dev/null +++ b/src/assets/examples/material/flat-tree/flat-tree.component.html @@ -0,0 +1,19 @@ + + + + + + {{node.name}} + + + + + {{node.name}} + + + \ No newline at end of file diff --git a/src/assets/examples/material/flat-tree/flat-tree.component.scss b/src/assets/examples/material/flat-tree/flat-tree.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/flat-tree/flat-tree.component.spec.ts b/src/assets/examples/material/flat-tree/flat-tree.component.spec.ts new file mode 100644 index 0000000..edfa5ec --- /dev/null +++ b/src/assets/examples/material/flat-tree/flat-tree.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FlatTreeComponent } from './flat-tree.component'; + +describe('FlatTreeComponent', () => { + let component: FlatTreeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FlatTreeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FlatTreeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/flat-tree/flat-tree.component.ts b/src/assets/examples/material/flat-tree/flat-tree.component.ts new file mode 100644 index 0000000..d72a52d --- /dev/null +++ b/src/assets/examples/material/flat-tree/flat-tree.component.ts @@ -0,0 +1,78 @@ +import { Component, OnInit } from '@angular/core'; +import {FlatTreeControl} from '@angular/cdk/tree'; +import {MatTreeFlatDataSource, MatTreeFlattener} from '@angular/material/tree'; + +/** + * Food data with nested structure. + * Each node has a name and an optiona list of children. + */ +interface FoodNode { + name: string; + children?: FoodNode[]; +} + +const TREE_DATA: FoodNode[] = [ + { + name: 'Fruit', + children: [ + {name: 'Apple'}, + {name: 'Banana'}, + {name: 'Fruit loops'}, + ] + }, { + name: 'Vegetables', + children: [ + { + name: 'Green', + children: [ + {name: 'Broccoli'}, + {name: 'Brussel sprouts'}, + ] + }, { + name: 'Orange', + children: [ + {name: 'Pumpkins'}, + {name: 'Carrots'}, + ] + }, + ] + }, +]; + +/** Flat node with expandable and level information */ +interface ExampleFlatNode { + expandable: boolean; + name: string; + level: number; +} + +@Component({ + selector: 'app-flat-tree', + templateUrl: './flat-tree.component.html', + styleUrls: ['./flat-tree.component.scss'] +}) +export class FlatTreeComponent { + + private transformer = (node: FoodNode, level: number) => { + return { + expandable: !!node.children && node.children.length > 0, + name: node.name, + level: level, + }; + } + + treeControl = new FlatTreeControl( + node => node.level, node => node.expandable); + + treeFlattener = new MatTreeFlattener( + this.transformer, node => node.level, node => node.expandable, node => node.children); + + dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener); + + constructor() { + this.dataSource.data = TREE_DATA; + } + + hasChild = (_: number, node: ExampleFlatNode) => node.expandable; + +} diff --git a/src/assets/examples/material/footer-table/footer-table.component.html b/src/assets/examples/material/footer-table/footer-table.component.html new file mode 100644 index 0000000..c5faed4 --- /dev/null +++ b/src/assets/examples/material/footer-table/footer-table.component.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + +
Item {{transaction.item}} Total Cost {{transaction.cost | currency}} {{getTotalCost() | currency}}
diff --git a/src/assets/examples/material/footer-table/footer-table.component.scss b/src/assets/examples/material/footer-table/footer-table.component.scss new file mode 100644 index 0000000..f93f9b4 --- /dev/null +++ b/src/assets/examples/material/footer-table/footer-table.component.scss @@ -0,0 +1,8 @@ +table { + width: 100%; + } + + tr.mat-footer-row { + font-weight: bold; + } + \ No newline at end of file diff --git a/src/assets/examples/material/footer-table/footer-table.component.spec.ts b/src/assets/examples/material/footer-table/footer-table.component.spec.ts new file mode 100644 index 0000000..1b68a6f --- /dev/null +++ b/src/assets/examples/material/footer-table/footer-table.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FooterTableComponent } from './footer-table.component'; + +describe('FooterTableComponent', () => { + let component: FooterTableComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FooterTableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FooterTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/footer-table/footer-table.component.ts b/src/assets/examples/material/footer-table/footer-table.component.ts new file mode 100644 index 0000000..0832a92 --- /dev/null +++ b/src/assets/examples/material/footer-table/footer-table.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from '@angular/core'; + +export interface Transaction { + item: string; + cost: number; +} + +@Component({ + selector: 'app-footer-table', + templateUrl: './footer-table.component.html', + styleUrls: ['./footer-table.component.scss'] +}) +export class FooterTableComponent implements OnInit { + + displayedColumns: string[] = ['item', 'cost']; + transactions: Transaction[] = [ + {item: 'Beach ball', cost: 4}, + {item: 'Towel', cost: 5}, + {item: 'Frisbee', cost: 2}, + {item: 'Sunscreen', cost: 4}, + {item: 'Cooler', cost: 25}, + {item: 'Swim suit', cost: 15}, + ]; + + /** Gets the total cost of all transactions. */ + getTotalCost() { + return this.transactions.map(t => t.cost).reduce((acc, value) => acc + value, 0); + } + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/form-input/form-input.component.html b/src/assets/examples/material/form-input/form-input.component.html new file mode 100644 index 0000000..8cf31e0 --- /dev/null +++ b/src/assets/examples/material/form-input/form-input.component.html @@ -0,0 +1,36 @@ +
+ + + + + + + +
+ + + +
+ +

+ + + + + + +

+ + + + + +
+ + + + + + {{postalCode.value.length}} / 5 +
+
diff --git a/src/assets/examples/material/form-input/form-input.component.scss b/src/assets/examples/material/form-input/form-input.component.scss new file mode 100644 index 0000000..73bd16f --- /dev/null +++ b/src/assets/examples/material/form-input/form-input.component.scss @@ -0,0 +1,14 @@ +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; + } + + .example-full-width { + width: 100%; + } + + td { + padding-right: 8px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/form-input/form-input.component.spec.ts b/src/assets/examples/material/form-input/form-input.component.spec.ts new file mode 100644 index 0000000..d0d4bba --- /dev/null +++ b/src/assets/examples/material/form-input/form-input.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FormInputComponent } from './form-input.component'; + +describe('FormInputComponent', () => { + let component: FormInputComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FormInputComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FormInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/form-input/form-input.component.ts b/src/assets/examples/material/form-input/form-input.component.ts new file mode 100644 index 0000000..4c034b5 --- /dev/null +++ b/src/assets/examples/material/form-input/form-input.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-form-input', + templateUrl: './form-input.component.html', + styleUrls: ['./form-input.component.scss'] +}) +export class FormInputComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/form-select/form-select.component.html b/src/assets/examples/material/form-select/form-select.component.html new file mode 100644 index 0000000..f2b02b6 --- /dev/null +++ b/src/assets/examples/material/form-select/form-select.component.html @@ -0,0 +1,23 @@ +
+

mat-select

+ + Favorite food + + + {{food.viewValue}} + + + +

Selected food: {{selectedValue}}

+

native html select

+ + Favorite car + + +

Selected car: {{selectedCar}}

+
diff --git a/src/assets/examples/material/form-select/form-select.component.scss b/src/assets/examples/material/form-select/form-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/form-select/form-select.component.spec.ts b/src/assets/examples/material/form-select/form-select.component.spec.ts new file mode 100644 index 0000000..3b8813b --- /dev/null +++ b/src/assets/examples/material/form-select/form-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FormSelectComponent } from './form-select.component'; + +describe('FormSelectComponent', () => { + let component: FormSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FormSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FormSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/form-select/form-select.component.ts b/src/assets/examples/material/form-select/form-select.component.ts new file mode 100644 index 0000000..0ec9331 --- /dev/null +++ b/src/assets/examples/material/form-select/form-select.component.ts @@ -0,0 +1,40 @@ +import { Component, OnInit } from '@angular/core'; + +export interface Food { + value: string; + viewValue: string; +} + +export interface Car { + value: string; + viewValue: string; +} + +@Component({ + selector: 'app-form-select', + templateUrl: './form-select.component.html', + styleUrls: ['./form-select.component.scss'] +}) +export class FormSelectComponent implements OnInit { + + selectedValue: string; + selectedCar: string; + + foods: Food[] = [ + {value: 'steak-0', viewValue: 'Steak'}, + {value: 'pizza-1', viewValue: 'Pizza'}, + {value: 'tacos-2', viewValue: 'Tacos'} + ]; + + cars: Car[] = [ + {value: 'volvo', viewValue: 'Volvo'}, + {value: 'saab', viewValue: 'Saab'}, + {value: 'mercedes', viewValue: 'Mercedes'} + ]; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.html b/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.html new file mode 100644 index 0000000..50dd982 --- /dev/null +++ b/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.html @@ -0,0 +1,10 @@ +
+ + + + + {{option}} + + + +
diff --git a/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.scss b/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.scss new file mode 100644 index 0000000..9a473b4 --- /dev/null +++ b/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.scss @@ -0,0 +1,10 @@ +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; + } + + .example-full-width { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.spec.ts b/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.spec.ts new file mode 100644 index 0000000..dc45ba7 --- /dev/null +++ b/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HighlightFirstAutocompleteComponent } from './highlight-first-autocomplete.component'; + +describe('HighlightFirstAutocompleteComponent', () => { + let component: HighlightFirstAutocompleteComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HighlightFirstAutocompleteComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HighlightFirstAutocompleteComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.ts b/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.ts new file mode 100644 index 0000000..064e813 --- /dev/null +++ b/src/assets/examples/material/highlight-first-autocomplete/highlight-first-autocomplete.component.ts @@ -0,0 +1,30 @@ +import {Component, OnInit} from '@angular/core'; +import {FormControl} from '@angular/forms'; +import {Observable} from 'rxjs'; +import {map, startWith} from 'rxjs/operators'; + +@Component({ + selector: 'app-highlight-first-autocomplete', + templateUrl: './highlight-first-autocomplete.component.html', + styleUrls: ['./highlight-first-autocomplete.component.scss'] +}) +export class HighlightFirstAutocompleteComponent implements OnInit { + + myControl = new FormControl(); + options: string[] = ['One', 'Two', 'Three']; + filteredOptions: Observable; + + ngOnInit() { + this.filteredOptions = this.myControl.valueChanges.pipe( + startWith(''), + map(value => this._filter(value)) + ); + } + + private _filter(value: string): string[] { + const filterValue = value.toLowerCase(); + + return this.options.filter(option => option.toLowerCase().indexOf(filterValue) === 0); + } + +} diff --git a/src/assets/examples/material/hints-form-field/hints-form-field.component.html b/src/assets/examples/material/hints-form-field/hints-form-field.component.html new file mode 100644 index 0000000..a402d98 --- /dev/null +++ b/src/assets/examples/material/hints-form-field/hints-form-field.component.html @@ -0,0 +1,13 @@ +
+ + + {{input.value?.length || 0}}/10 + + + + + Option + + Here's the dropdown arrow ^ + +
diff --git a/src/assets/examples/material/hints-form-field/hints-form-field.component.scss b/src/assets/examples/material/hints-form-field/hints-form-field.component.scss new file mode 100644 index 0000000..621f9a7 --- /dev/null +++ b/src/assets/examples/material/hints-form-field/hints-form-field.component.scss @@ -0,0 +1,9 @@ +.example-container { + display: flex; + flex-direction: column; + } + + .example-container > * { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/hints-form-field/hints-form-field.component.spec.ts b/src/assets/examples/material/hints-form-field/hints-form-field.component.spec.ts new file mode 100644 index 0000000..e54f57b --- /dev/null +++ b/src/assets/examples/material/hints-form-field/hints-form-field.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HintsFormFieldComponent } from './hints-form-field.component'; + +describe('HintsFormFieldComponent', () => { + let component: HintsFormFieldComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HintsFormFieldComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HintsFormFieldComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/hints-form-field/hints-form-field.component.ts b/src/assets/examples/material/hints-form-field/hints-form-field.component.ts new file mode 100644 index 0000000..b91124b --- /dev/null +++ b/src/assets/examples/material/hints-form-field/hints-form-field.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-hints-form-field', + templateUrl: './hints-form-field.component.html', + styleUrls: ['./hints-form-field.component.scss'] +}) +export class HintsFormFieldComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/hints-input/hints-input.component.html b/src/assets/examples/material/hints-input/hints-input.component.html new file mode 100644 index 0000000..b7595cf --- /dev/null +++ b/src/assets/examples/material/hints-input/hints-input.component.html @@ -0,0 +1,9 @@ +
+ + + + Don't disclose personal info + {{message.value.length}} / 256 + + +
diff --git a/src/assets/examples/material/hints-input/hints-input.component.scss b/src/assets/examples/material/hints-input/hints-input.component.scss new file mode 100644 index 0000000..9a473b4 --- /dev/null +++ b/src/assets/examples/material/hints-input/hints-input.component.scss @@ -0,0 +1,10 @@ +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; + } + + .example-full-width { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/hints-input/hints-input.component.spec.ts b/src/assets/examples/material/hints-input/hints-input.component.spec.ts new file mode 100644 index 0000000..bc7c3fc --- /dev/null +++ b/src/assets/examples/material/hints-input/hints-input.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HintsInputComponent } from './hints-input.component'; + +describe('HintsInputComponent', () => { + let component: HintsInputComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HintsInputComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HintsInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/hints-input/hints-input.component.ts b/src/assets/examples/material/hints-input/hints-input.component.ts new file mode 100644 index 0000000..17f37a8 --- /dev/null +++ b/src/assets/examples/material/hints-input/hints-input.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-hints-input', + templateUrl: './hints-input.component.html', + styleUrls: ['./hints-input.component.scss'] +}) +export class HintsInputComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/icon-menu/icon-menu.component.html b/src/assets/examples/material/icon-menu/icon-menu.component.html new file mode 100644 index 0000000..fb66054 --- /dev/null +++ b/src/assets/examples/material/icon-menu/icon-menu.component.html @@ -0,0 +1,17 @@ + + + + + + diff --git a/src/assets/examples/material/icon-menu/icon-menu.component.scss b/src/assets/examples/material/icon-menu/icon-menu.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/icon-menu/icon-menu.component.spec.ts b/src/assets/examples/material/icon-menu/icon-menu.component.spec.ts new file mode 100644 index 0000000..2b78de9 --- /dev/null +++ b/src/assets/examples/material/icon-menu/icon-menu.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { IconMenuComponent } from './icon-menu.component'; + +describe('IconMenuComponent', () => { + let component: IconMenuComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ IconMenuComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(IconMenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/icon-menu/icon-menu.component.ts b/src/assets/examples/material/icon-menu/icon-menu.component.ts new file mode 100644 index 0000000..00b2030 --- /dev/null +++ b/src/assets/examples/material/icon-menu/icon-menu.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-icon-menu', + templateUrl: './icon-menu.component.html', + styleUrls: ['./icon-menu.component.scss'] +}) +export class IconMenuComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.html b/src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.html new file mode 100644 index 0000000..635b0ba --- /dev/null +++ b/src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.scss b/src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.spec.ts b/src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.spec.ts new file mode 100644 index 0000000..b3bb947 --- /dev/null +++ b/src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { IndeterminateBarComponent } from './indeterminate-bar.component'; + +describe('IndeterminateBarComponent', () => { + let component: IndeterminateBarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ IndeterminateBarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(IndeterminateBarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.ts b/src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.ts new file mode 100644 index 0000000..ab2bcbd --- /dev/null +++ b/src/assets/examples/material/indeterminate-bar/indeterminate-bar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-indeterminate-bar', + templateUrl: './indeterminate-bar.component.html', + styleUrls: ['./indeterminate-bar.component.scss'] +}) +export class IndeterminateBarComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/index.ts b/src/assets/examples/material/index.ts new file mode 100644 index 0000000..8d06fb7 --- /dev/null +++ b/src/assets/examples/material/index.ts @@ -0,0 +1,1040 @@ +import { CustomSnackbarOverviewComponent } from './custom-snackbar/custom-snackbar-overview/custom-snackbar-overview.component'; +import { CustomSnackbarComponent } from './custom-snackbar/custom-snackbar.component'; +import { BasicSnackbarComponent } from './basic-snackbar/basic-snackbar.component'; +import { ScrollableDialogOverviewComponent } from './scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component'; +import { ScrollableDialogComponent } from './scrollable-dialog/scrollable-dialog.component'; +import { DataDialogOverviewComponent } from './data-dialog/data-dialog-overview/data-dialog-overview.component'; +import { BasicDialogOverviewComponent } from './basic-dialog/basic-dialog-overview/basic-dialog-overview.component'; +import { BasicDialogComponent } from './basic-dialog/basic-dialog.component'; +import { BottomSheetOverviewComponent } from './bottom-sheet/bottom-sheet-overview/bottom-sheet-overview.component'; +import { BottomSheetComponent } from './bottom-sheet/bottom-sheet.component'; +import { FooterTableComponent } from './footer-table/footer-table.component'; +import { PaginationTableComponent } from './pagination-table/pagination-table.component'; +import { BasicTableComponent } from './basic-table/basic-table.component'; +import { TableSortingComponent } from './table-sorting/table-sorting.component'; +import { BasicSortHeaderComponent } from './basic-sort-header/basic-sort-header.component'; +import { CustomPaginatorComponent } from './custom-paginator/custom-paginator.component'; +import { BasicPaginatorComponent } from './basic-paginator/basic-paginator.component'; +import { AutoHideTooltipComponent } from './auto-hide-tooltip/auto-hide-tooltip.component'; +import { CustomPositionTooltipComponent } from './custom-position-tooltip/custom-position-tooltip.component'; +import { BasicTooltipComponent } from './basic-tooltip/basic-tooltip.component'; +import { CustomBarComponent } from './custom-bar/custom-bar.component'; +import { BasicBarComponent } from './basic-bar/basic-bar.component'; +import { CustomSpinnerComponent } from './custom-spinner/custom-spinner.component'; +import { BasicSpinnerComponent } from './basic-spinner/basic-spinner.component'; +import { BasicIconComponent } from './basic-icon/basic-icon.component'; +import { InputChipComponent } from './input-chip/input-chip.component'; +import { AutocompleteChipComponent } from './autocomplete-chip/autocomplete-chip.component'; +import { BasicChipComponent } from './basic-chip/basic-chip.component'; +import { BasicBadgeComponent } from './basic-badge/basic-badge.component'; +import { BasicButtonToggleComponent } from './basic-button-toggle/basic-button-toggle.component'; +import { ButtonToggleComponent } from './button-toggle/button-toggle.component'; +import { CheckboxTreeComponent } from './checkbox-tree/checkbox-tree.component'; +import { NestedTreeComponent } from './nested-tree/nested-tree.component'; +import { CustomTabGroupComponent } from './custom-tab-group/custom-tab-group.component'; +import { AnimationTabGroupComponent } from './animation-tab-group/animation-tab-group.component'; +import { BasicTabGroupComponent } from './basic-tab-group/basic-tab-group.component'; +import { CustomizedStepperComponent } from './customized-stepper/customized-stepper.component'; +import { VerticalStepperComponent } from './vertical-stepper/vertical-stepper.component'; +import { BasicStepperComponent } from './basic-stepper/basic-stepper.component'; +import { BasicGridComponent } from './basic-grid/basic-grid.component'; +import { AccordinExpansionPanelComponent } from './accordin-expansion-panel/accordin-expansion-panel.component'; +import { BasicDividerComponent } from './basic-divider/basic-divider.component'; +import { MultiSectionCardComponent } from './multi-section-card/multi-section-card.component'; +import { BasicCardComponent } from './basic-card/basic-card.component'; +import { BasicToolbarComponent } from './basic-toolbar/basic-toolbar.component'; +import { FixedSidenavComponent } from './fixed-sidenav/fixed-sidenav.component'; +import { AutoresizeSidenavComponent } from './autoresize-sidenav/autoresize-sidenav.component'; +import { EscapeBackdropSidenavComponent } from './escape-backdrop-sidenav/escape-backdrop-sidenav.component'; +import { ConfigurableSidenavComponent } from './configurable-sidenav/configurable-sidenav.component'; +import { OpenCloseSidenavComponent } from './open-close-sidenav/open-close-sidenav.component'; +import { TwoSidenavComponent } from './two-sidenav/two-sidenav.component'; +import { BasicSidenavComponent } from './basic-sidenav/basic-sidenav.component'; +import { IconMenuComponent } from './icon-menu/icon-menu.component'; +import { BasicMenuComponent } from './basic-menu/basic-menu.component'; +import { ConfigurableToggleComponent } from './configurable-toggle/configurable-toggle.component'; +import { BasicToggleComponent } from './basic-toggle/basic-toggle.component'; +import { BasicSliderComponent } from './basic-slider/basic-slider.component'; +import { ErrorSelectComponent } from './error-select/error-select.component'; +import { RipplelessSelectComponent } from './rippleless-select/rippleless-select.component'; +import { ResetSelectComponent } from './reset-select/reset-select.component'; +import { DisabledSelectComponent } from './disabled-select/disabled-select.component'; +import { FeatureSelectComponent } from './feature-select/feature-select.component'; +import { FormSelectComponent } from './form-select/form-select.component'; +import { BasicSelectComponent } from './basic-select/basic-select.component'; +import { BasicRadioComponent } from './basic-radio/basic-radio.component'; +import { SuffixPrefixInputComponent } from './suffix-prefix-input/suffix-prefix-input.component'; +import { HintsInputComponent } from './hints-input/hints-input.component'; +import { FormInputComponent } from './form-input/form-input.component'; +import { ClearButtonInputComponent } from './clear-button-input/clear-button-input.component'; +import { AutoResizingTexareaComponent } from './auto-resizing-texarea/auto-resizing-texarea.component'; +import { ErrorInputComponent } from './error-input/error-input.component'; +import { BasicInputComponent } from './basic-input/basic-input.component'; +import { HintsFormFieldComponent } from './hints-form-field/hints-form-field.component'; +import { AppearanceFormFieldComponent } from './appearance-form-field/appearance-form-field.component'; +import { CustomDatepickerComponent } from './custom-datepicker/custom-datepicker.component'; +import { DifferentLocaleDatepickerComponent } from './different-locale-datepicker/different-locale-datepicker.component'; +import { DisabledDatepickerComponent } from './disabled-datepicker/disabled-datepicker.component'; +import { EventDatepickerComponent } from './event-datepicker/event-datepicker.component'; +import { FilterDatepickerComponent } from './filter-datepicker/filter-datepicker.component'; +import { MinMaxDatepickerComponent } from './min-max-datepicker/min-max-datepicker.component'; +import { BasicDatepickerComponent } from './basic-datepicker/basic-datepicker.component'; +import { ConfigurableCheckboxComponent } from './configurable-checkbox/configurable-checkbox.component'; +import { BasicCheckboxComponent } from './basic-checkbox/basic-checkbox.component'; +import { HighlightFirstAutocompleteComponent } from './highlight-first-autocomplete/highlight-first-autocomplete.component'; +import { FilterAutocompleteComponent } from './filter-autocomplete/filter-autocomplete.component'; +import { ButtonExamplesComponent } from "./button-examples/button-examples.component"; +import { AutocompleteOverviewComponent } from "./autocomplete-overview/autocomplete-overview.component"; +import { SimpleAutocompleteComponent } from "./simple-autocomplete/simple-autocomplete.component"; +import { DisplayValueAutocompleteComponent } from './display-value-autocomplete/display-value-autocomplete.component'; +import { OptionGroupAutocompleteComponent } from './option-group-autocomplete/option-group-autocomplete.component'; +import { StartDateDatepickerComponent } from './start-date-datepicker/start-date-datepicker.component'; +import { SelectedValueDatepickerComponent } from './selected-value-datepicker/selected-value-datepicker.component'; +import { TouchDatepickerComponent } from './touch-datepicker/touch-datepicker.component'; +import { OpenMethodDatepickerComponent } from './open-method-datepicker/open-method-datepicker.component'; +import { MomentJsDatepickerComponent } from './moment-js-datepicker/moment-js-datepicker.component'; +import { SimpleFormFieldComponent } from './simple-form-field/simple-form-field.component'; +import { LabelFormFieldComponent } from './label-form-field/label-form-field.component'; +import { ErrorFormFieldComponent } from './error-form-field/error-form-field.component'; +import { PrefixSuffixFormFieldComponent } from './prefix-suffix-form-field/prefix-suffix-form-field.component'; +import { ThemingFormFieldComponent } from './theming-form-field/theming-form-field.component'; +import { ErrorMessageInputComponent } from './error-message-input/error-message-input.component'; +import { NgmodelRadioComponent } from './ngmodel-radio/ngmodel-radio.component'; +import { TwoWayBindingSelectComponent } from './two-way-binding-select/two-way-binding-select.component'; +import { OptionGroupSelectComponent } from './option-group-select/option-group-select.component'; +import { MultipleSelectComponent } from './multiple-select/multiple-select.component'; +import { TriggerSelectComponent } from './trigger-select/trigger-select.component'; +import { CustomPanelSelectComponent } from './custom-panel-select/custom-panel-select.component'; +import { SliderComponent } from './slider/slider.component'; +import { NestedMenuComponent } from './nested-menu/nested-menu.component'; +import { DrawerSidenavComponent } from './drawer-sidenav/drawer-sidenav.component'; +import { ResponsiveSidenavComponent } from './responsive-sidenav/responsive-sidenav.component'; +import { MultiRowToolbarComponent } from './multi-row-toolbar/multi-row-toolbar.component'; +import { BasicExpansionPanelComponent } from './basic-expansion-panel/basic-expansion-panel.component'; +import { DynamicGridComponent } from './dynamic-grid/dynamic-grid.component'; +import { BasicListComponent } from './basic-list/basic-list.component'; +import { SectionListComponent } from './section-list/section-list.component'; +import { ErrorStepperComponent } from './error-stepper/error-stepper.component'; +import { AlignTabGroupComponent } from './align-tab-group/align-tab-group.component'; +import { DynamicTabGroupComponent } from './dynamic-tab-group/dynamic-tab-group.component'; +import { NavTabGroupComponent } from './nav-tab-group/nav-tab-group.component'; +import { FlatTreeComponent } from './flat-tree/flat-tree.component'; +import { DynamicDataTreeComponent } from './dynamic-data-tree/dynamic-data-tree.component'; +import { ButtonsComponent } from './buttons/buttons.component'; +import { StackedChipComponent } from './stacked-chip/stacked-chip.component'; +import { SvgIconComponent } from './svg-icon/svg-icon.component'; +import { IndeterminateBarComponent } from './indeterminate-bar/indeterminate-bar.component'; +import { CustomRipplesComponent } from './custom-ripples/custom-ripples.component'; +import { CustomClassTooltipComponent } from './custom-class-tooltip/custom-class-tooltip.component'; +import { DelayTooltipComponent } from './delay-tooltip/delay-tooltip.component'; +import { DisabledTooltipComponent } from './disabled-tooltip/disabled-tooltip.component'; +import { ManualHideTooltipComponent } from './manual-hide-tooltip/manual-hide-tooltip.component'; +import { ChangingTooltipComponent } from './changing-tooltip/changing-tooltip.component'; +import { SortingTableComponent } from './sorting-table/sorting-table.component'; +import { SelectionTableComponent } from './selection-table/selection-table.component'; +import { StickyHeaderTableComponent } from './sticky-header-table/sticky-header-table.component'; +import { StickyFooterTableComponent } from './sticky-footer-table/sticky-footer-table.component'; +import { StickyColumnTableComponent } from './sticky-column-table/sticky-column-table.component'; +import { FilterTableComponent } from './filter-table/filter-table.component'; +import { DataDialogComponent } from './data-dialog/data-dialog.component'; +import { CustomLoadingButtonsComponent } from './custom-loading-buttons/custom-loading-buttons.component'; + + +// ng g c ../assets/examples/hints-form-field --skip-import + +export const MATERIAL_EXAMPLE_COMPONENT_MAP = { + 'buttons': [ + 'buttons', + 'custom-loading-buttons' + ], + 'button-toggle': [ + 'basic-button-toggle', + 'button-toggle' + ], + 'autocomplete': [ + 'autocomplete-overview', + 'simple-autocomplete', + 'filter-autocomplete', + 'display-value-autocomplete', + 'highlight-first-autocomplete', + 'option-group-autocomplete' + ], + 'checkbox': [ + 'basic-checkbox', + 'configurable-checkbox' + ], + 'datepicker': [ + 'basic-datepicker', + 'start-date-datepicker', + 'selected-value-datepicker', + 'min-max-datepicker', + 'filter-datepicker', + 'event-datepicker', + 'disabled-datepicker', + 'touch-datepicker', + 'open-method-datepicker', + 'different-locale-datepicker', + 'moment-js-datepicker', + 'custom-datepicker', + ], + 'form-field': [ + 'simple-form-field', + 'label-form-field', + 'appearance-form-field', + 'hints-form-field', + 'error-form-field', + 'prefix-suffix-form-field', + 'theming-form-field', + // 'telephone-form-field' + ], + 'input-field': [ + 'basic-input', + 'auto-resizing-texarea', + 'clear-button-input', + 'error-input', + 'error-message-input', + 'form-input', + 'hints-input', + 'suffix-prefix-input', + ], + 'radio-button': [ + 'basic-radio', + 'ngmodel-radio', + ], + 'select': [ + 'basic-select', + 'two-way-binding-select', + 'form-select', + 'feature-select', + 'disabled-select', + 'reset-select', + 'option-group-select', + 'multiple-select', + 'trigger-select', + 'rippleless-select', + 'custom-panel-select', + 'error-select' + ], + 'slider': [ + 'basic-slider', + 'configurable-slider' + ], + 'slider-toggle': [ + 'basic-toggle', + 'configurable-toggle' + ], + 'menu': [ + 'basic-menu', + 'nested-menu', + 'icon-menu', + ], + 'sidenav': [ + 'basic-sidenav', + 'drawer-sidenav', + 'two-sidenav', + 'open-close-sidenav', + 'configurable-sidenav', + 'escape-backdrop-sidenav', + 'autoresize-sidenav', + 'fixed-sidenav', + 'responsive-sidenav', + ], + 'toolbar': [ + 'basic-toolbar', + 'multi-row-toolbar' + ], + 'card': [ + 'basic-card', + 'multi-section-card' + ], + 'divider': [ + 'basic-divider' + ], + 'expansion-panel': [ + 'basic-expansion-panel', + 'accordin-expansion-panel', + ], + 'grid': [ + 'basic-grid', + 'dynamic-grid' + ], + 'list': [ + 'basic-list', + 'section-list' + ], + 'stepper': [ + 'basic-stepper', + 'vertical-stepper', + 'error-stepper', + 'customized-stepper' + ], + 'tab-group': [ + 'basic-tab-group', + 'align-tab-group', + 'animation-tab-group', + 'dynamic-tab-group', + 'nav-tab-group', + 'custom-tab-group', + ], + 'tree': [ + 'flat-tree', + 'nested-tree', + 'checkbox-tree', + 'dynamic-data-tree' + ], + 'badge': [ + 'basic-badge' + ], + 'chips': [ + 'basic-chip', + 'autocomplete-chip', + 'input-chip', + 'stacked-chip' + ], + 'icons': [ + 'basic-icon', + 'svg-icon' + ], + 'progress-spinner': [ + 'basic-spinner', + 'custom-spinner' + ], + 'progress-bar': [ + 'basic-bar', + 'custom-bar', + 'indeterminate-bar' + ], + 'ripples': [ + 'custom-ripples' + ], + 'tooltip': [ + 'basic-tooltip', + 'custom-position-tooltip', + 'custom-class-tooltip', + 'delay-tooltip', + 'disabled-tooltip', + 'manual-hide-tooltip', + 'changing-tooltip', + 'auto-hide-tooltip' + ], + 'paginator': [ + 'basic-paginator', + 'custom-paginator' + ], + 'sort-header': [ + 'basic-sort-header', + 'table-sorting' + ], + 'table': [ + 'basic-table', + 'pagination-table', + 'sorting-table', + 'filter-table', + 'selection-table', + 'footer-table', + 'sticky-header-table', + 'sticky-footer-table', + 'sticky-column-table', + ], + 'bottom-sheet': [ + 'bottom-sheet' + ], + 'dialog': [ + 'basic-dialog', + 'data-dialog', + 'scrollable-dialog' + ], + 'snackbar': [ + 'basic-snackbar', + 'custom-snackbar' + ] +} + +export const MATERIAL_EXAMPLE_COMPONENTS = { + 'autocomplete-overview': { + title: 'Autocomplete overview', + component: AutocompleteOverviewComponent + }, + 'simple-autocomplete': { + title: 'Simple autocomplete', + component: SimpleAutocompleteComponent + }, + 'filter-autocomplete': { + title: 'Filter autocomplete', + component: FilterAutocompleteComponent + }, + 'display-value-autocomplete': { + title: 'Display value autocomplete', + component: DisplayValueAutocompleteComponent + }, + 'highlight-first-autocomplete': { + title: 'Highlight the first autocomplete option', + component: HighlightFirstAutocompleteComponent + }, + 'option-group-autocomplete': { + title: 'Option groups autocomplete', + component: OptionGroupAutocompleteComponent + }, + 'basic-checkbox': { + title: 'Basic checkboxes', + component: BasicCheckboxComponent + }, + 'configurable-checkbox': { + title: 'Configurable checkboxes', + component: ConfigurableCheckboxComponent + }, + 'basic-datepicker': { + title: 'Basic datepicker', + component: BasicDatepickerComponent + }, + 'start-date-datepicker': { + title: 'Datepicker with starting date', + component: StartDateDatepickerComponent + }, + 'selected-value-datepicker': { + title: 'Datepicker with selected date', + component: SelectedValueDatepickerComponent + }, + 'min-max-datepicker': { + title: 'Datepicker with minimum and maximum date', + component: MinMaxDatepickerComponent + }, + 'filter-datepicker': { + title: 'Datepicker with filtered date', + component: FilterDatepickerComponent + }, + 'event-datepicker': { + title: 'Datepicker input and change event', + component: EventDatepickerComponent + }, + 'disabled-datepicker': { + title: 'Disabled datepicker', + component: DisabledDatepickerComponent + }, + 'touch-datepicker': { + title: 'Disabled with touh UI', + component: TouchDatepickerComponent + }, + 'open-method-datepicker': { + title: 'Datepicker open method', + component: OpenMethodDatepickerComponent + }, + 'different-locale-datepicker': { + title: 'Datepicker with different locale', + component: DifferentLocaleDatepickerComponent + }, + 'moment-js-datepicker': { + title: 'Datepicker that uses Moment.js dates', + component: MomentJsDatepickerComponent + }, + 'custom-datepicker': { + title: 'Datepicker with custom formats', + component: CustomDatepickerComponent + }, + 'simple-form-field': { + title: 'Simple form field', + component: SimpleFormFieldComponent + }, + 'label-form-field': { + title: 'Form field with label', + component: LabelFormFieldComponent + }, + 'appearance-form-field': { + title: 'Form field appearance variants', + component: AppearanceFormFieldComponent + }, + 'hints-form-field': { + title: 'Form field with hints', + component: HintsFormFieldComponent + }, + 'error-form-field': { + title: 'Form field with error messages', + component: ErrorFormFieldComponent + }, + 'prefix-suffix-form-field': { + title: 'Form field with prefix & suffix', + component: PrefixSuffixFormFieldComponent + }, + 'theming-form-field': { + title: 'Form field theming', + component: ThemingFormFieldComponent + }, + // 'telephone-form-field': { + // title: 'Form field with custom telephone number input control', + // component: TelephoneFormFieldComponent + // }, + 'basic-input': { + title: 'Basic Inputs', + component: BasicInputComponent + }, + 'error-input': { + title: 'Input with a custom ErrorStateMatcher', + component: ErrorInputComponent + }, + 'auto-resizing-texarea': { + title: 'Auto-resizing textarea', + component: AutoResizingTexareaComponent + }, + 'clear-button-input': { + title: 'Input with a clear button', + component: ClearButtonInputComponent + }, + 'error-message-input': { + title: 'Input with error messages', + component: ErrorMessageInputComponent + }, + 'form-input': { + title: 'Inputs in a form', + component: FormInputComponent + }, + 'hints-input': { + title: 'Input with hints', + component: HintsInputComponent + }, + 'suffix-prefix-input': { + title: 'Inputs with prefixes and suffixes', + component: SuffixPrefixInputComponent + }, + 'basic-radio': { + title: 'Basic radios', + component: BasicRadioComponent + }, + 'ngmodel-radio': { + title: 'Radios with ngMode', + component: NgmodelRadioComponent + }, + 'basic-select': { + title: 'Basic select', + component: BasicSelectComponent + }, + 'two-way-binding-select': { + title: 'Select with 2-way value binding', + component: TwoWayBindingSelectComponent + }, + 'form-select': { + title: 'Select in a form', + component: FormSelectComponent + }, + 'feature-select': { + title: 'Select with form field features', + component: FeatureSelectComponent + }, + 'disabled-select': { + title: 'Disabled select', + component: DisabledSelectComponent + }, + 'reset-select': { + title: 'Select with reset option', + component: ResetSelectComponent + }, + 'option-group-select': { + title: 'Select with option groups', + component: OptionGroupSelectComponent + }, + 'multiple-select': { + title: 'Select with multiple selection', + component: MultipleSelectComponent + }, + 'trigger-select': { + title: 'Select with custom trigger text', + component: TriggerSelectComponent + }, + 'rippleless-select': { + title: 'Select with no option ripple', + component: RipplelessSelectComponent + }, + 'custom-panel-select': { + title: 'Select with custom panel styling', + component: CustomPanelSelectComponent + }, + 'error-select': { + title: 'Select with a custom ErrorStateMatcher', + component: ErrorSelectComponent + }, + 'configurable-slider': { + title: 'Configurable slider', + component: SliderComponent + }, + 'basic-slider': { + title: 'Basic slider', + component: BasicSliderComponent + }, + 'basic-toggle': { + title: 'Basic slide-toggle', + component: BasicToggleComponent + }, + 'configurable-toggle': { + title: 'Configurable slide-toggle', + component: ConfigurableToggleComponent + }, + 'basic-menu': { + title: 'Basic menu', + component: BasicMenuComponent + }, + 'nested-menu': { + title: 'Nested menu', + component: NestedMenuComponent + }, + 'icon-menu': { + title: 'Menu with icons', + component: IconMenuComponent + }, + 'basic-sidenav': { + title: 'Basic sidenav', + component: BasicSidenavComponent + }, + 'drawer-sidenav': { + title: 'Basic drawer', + component: DrawerSidenavComponent + }, + 'two-sidenav': { + title: 'Implicit main content with two sidenavs', + component: TwoSidenavComponent + }, + 'open-close-sidenav': { + title: 'Sidenav open & close behavior', + component: OpenCloseSidenavComponent + }, + 'configurable-sidenav': { + title: 'Sidenav with configurable mode', + component: ConfigurableSidenavComponent + }, + 'escape-backdrop-sidenav': { + title: 'Sidenav with custom escape and backdrop click behavior', + component: EscapeBackdropSidenavComponent + }, + 'autoresize-sidenav': { + title: 'Autosize sidenav', + component: AutoresizeSidenavComponent + }, + 'fixed-sidenav': { + title: 'Fixed sidenav', + component: FixedSidenavComponent + }, + 'responsive-sidenav': { + title: 'Responsive sidenav', + component: ResponsiveSidenavComponent + }, + 'basic-toolbar': { + title: 'Basic toolbar', + component: BasicToolbarComponent + }, + 'multi-row-toolbar': { + title: 'Multi-row toolbar', + component: MultiRowToolbarComponent + }, + 'basic-card': { + title: 'Basic card', + component: BasicCardComponent + }, + 'multi-section-card': { + title: 'Card with multiple sections', + component: MultiSectionCardComponent + }, + 'basic-divider': { + title: 'Basic divider', + component: BasicDividerComponent + }, + 'basic-expansion-panel': { + title: 'Basic expansion panel', + component: BasicExpansionPanelComponent + }, + 'accordin-expansion-panel': { + title: 'Expansion panel as accordion', + component: AccordinExpansionPanelComponent + }, + 'basic-grid': { + title: 'Basic grid', + component: BasicGridComponent + }, + 'dynamic-grid': { + title: 'Dynamic grid', + component: DynamicGridComponent + }, + 'basic-list': { + title: 'Basic list', + component: BasicListComponent + }, + 'section-list': { + title: 'List with sections', + component: SectionListComponent + }, + 'basic-stepper': { + title: 'Stepper overview', + component: BasicStepperComponent + }, + 'vertical-stepper': { + title: 'Vertical stepper', + component: VerticalStepperComponent + }, + 'error-stepper': { + title: 'Stepper that displays errors in the steps', + component: ErrorStepperComponent + }, + 'customized-stepper': { + title: 'Stepper with customized states', + component: CustomizedStepperComponent + }, + 'basic-tab-group': { + title: 'Basic use of the tab group', + component: BasicTabGroupComponent + }, + 'align-tab-group': { + title: 'Tab group with aligned labels', + component: AlignTabGroupComponent + }, + 'animation-tab-group': { + title: 'Tab group animations', + component: AnimationTabGroupComponent + }, + 'dynamic-tab-group': { + title: 'Tab group with dynamically changing tabs', + component: DynamicTabGroupComponent + }, + 'nav-tab-group': { + title: 'Basic use of the tab nav bar', + component: NavTabGroupComponent + }, + 'custom-tab-group': { + title: 'Customizing the theme options on the tab group', + component: CustomTabGroupComponent + }, + 'flat-tree': { + title: 'Tree with flat nodes', + component: FlatTreeComponent + }, + 'nested-tree': { + title: 'Tree with nested nodes', + component: NestedTreeComponent + }, + 'checkbox-tree': { + title: 'Tree with checkboxes', + component: CheckboxTreeComponent + }, + 'dynamic-data-tree': { + title: 'Tree with dynamic data', + component: DynamicDataTreeComponent + }, + 'buttons': { + title: 'Various buttons', + component: ButtonsComponent + }, + 'custom-loading-buttons': { + title: 'Loading buttons', + component: CustomLoadingButtonsComponent + }, + 'button-toggle': { + title: 'Exclusive selection', + component: ButtonToggleComponent + }, + 'basic-button-toggle': { + title: 'Basic button toggle', + component: BasicButtonToggleComponent + }, + 'basic-badge': { + title: 'Badge overview', + component: BasicBadgeComponent + }, + 'basic-chip': { + title: 'Basic chips', + component: BasicChipComponent + }, + 'autocomplete-chip': { + title: 'Chips Autocomplete', + component: AutocompleteChipComponent + }, + 'input-chip': { + title: 'Chips with input', + component: InputChipComponent + }, + 'stacked-chip': { + title: 'Stacked chips', + component: StackedChipComponent + }, + 'basic-icon': { + title: 'Basic icon', + component: BasicIconComponent + }, + 'svg-icon': { + title: 'SVG icon', + component: SvgIconComponent + }, + 'basic-spinner': { + title: 'Basic spinner', + component: BasicSpinnerComponent + }, + 'custom-spinner': { + title: 'Configurable progress spinner', + component: CustomSpinnerComponent + }, + 'basic-bar': { + title: 'Determinate progress-bar', + component: BasicBarComponent + }, + 'custom-bar': { + title: 'Configurable progress-bar', + component: CustomBarComponent + }, + 'indeterminate-bar': { + title: 'Indeterminate progress-bar', + component: IndeterminateBarComponent + }, + 'custom-ripples': { + title: 'MatRipple basic usage', + component: CustomRipplesComponent + }, + 'basic-tooltip': { + title: 'Basic tooltip', + component: BasicTooltipComponent + }, + 'custom-position-tooltip': { + title: 'Tooltip with a custom position', + component: CustomPositionTooltipComponent + }, + 'custom-class-tooltip': { + title: 'Tooltip that can have a custom class applied', + component: CustomClassTooltipComponent + }, + 'delay-tooltip': { + title: 'Tooltip with a show and hide delay', + component: DelayTooltipComponent + }, + 'disabled-tooltip': { + title: 'Tooltip that can be disabled', + component: DisabledTooltipComponent + }, + 'manual-hide-tooltip': { + title: 'Tooltip that can be manually shown/hidden', + component: ManualHideTooltipComponent + }, + 'changing-tooltip': { + title: 'Tooltip with a changing message', + component: ChangingTooltipComponent + }, + 'auto-hide-tooltip': { + title: 'Tooltip that demonstrates auto-hiding when it clips out of its scrolling container', + component: AutoHideTooltipComponent + }, + 'basic-paginator': { + title: 'Paginator', + component: BasicPaginatorComponent + }, + 'custom-paginator': { + title: 'Configurable paginator', + component: CustomPaginatorComponent + }, + 'basic-sort-header': { + title: 'Sorting overview', + component: BasicSortHeaderComponent + }, + 'table-sorting': { + title: 'Table with sorting', + component: TableSortingComponent + }, + 'basic-table': { + title: 'Basic use of `` with horizontal scroll', + component: BasicTableComponent + }, + 'pagination-table': { + title: 'Table with pagination', + component: PaginationTableComponent + }, + 'sorting-table': { + title: 'Table with sorting', + component: SortingTableComponent + }, + 'filter-table': { + title: 'Table with filtering', + component: FilterTableComponent + }, + 'selection-table': { + title: 'Table with selection', + component: SelectionTableComponent + }, + 'footer-table': { + title: 'Footer row table', + component: FooterTableComponent + }, + 'sticky-header-table': { + title: 'Table with sticky header', + component: StickyHeaderTableComponent + }, + 'sticky-footer-table': { + title: 'Table with sticky footer', + component: StickyFooterTableComponent + }, + 'sticky-column-table': { + title: 'Table with sticky columns', + component: StickyColumnTableComponent + }, + 'bottom-sheet': { + title: 'Bottom Sheet Overview', + component: BottomSheetComponent + }, + 'basic-dialog': { + title: 'Dialog Overview', + component: BasicDialogComponent + }, + 'data-dialog': { + title: 'Injecting data when opening a dialog', + component: DataDialogComponent + }, + 'scrollable-dialog': { + title: 'Dialog with header, scrollable content and actions', + component: ScrollableDialogComponent + }, + 'basic-snackbar': { + title: 'Basic snack-bar', + component: BasicSnackbarComponent + }, + 'custom-snackbar': { + title: 'Snack-bar with a custom component', + component: CustomSnackbarComponent + }, + + +} + +export const MATERIAL_EXAMPLE_COMPONENT_LIST = [ + ButtonExamplesComponent, + AutocompleteOverviewComponent, + SimpleAutocompleteComponent, + FilterAutocompleteComponent, + DisplayValueAutocompleteComponent, + HighlightFirstAutocompleteComponent, + OptionGroupAutocompleteComponent, + BasicCheckboxComponent, + ConfigurableCheckboxComponent, + BasicDatepickerComponent, + StartDateDatepickerComponent, + SelectedValueDatepickerComponent, + MinMaxDatepickerComponent, + FilterDatepickerComponent, + EventDatepickerComponent, + DisabledDatepickerComponent, + TouchDatepickerComponent, + OpenMethodDatepickerComponent, + DifferentLocaleDatepickerComponent, + MomentJsDatepickerComponent, + CustomDatepickerComponent, + SimpleFormFieldComponent, + LabelFormFieldComponent, + AppearanceFormFieldComponent, + HintsFormFieldComponent, + ErrorFormFieldComponent, + PrefixSuffixFormFieldComponent, + ThemingFormFieldComponent, + BasicInputComponent, + ErrorInputComponent, + AutoResizingTexareaComponent, + ClearButtonInputComponent, + ErrorMessageInputComponent, + FormInputComponent, + HintsInputComponent, + SuffixPrefixInputComponent, + BasicRadioComponent, + NgmodelRadioComponent, + BasicSelectComponent, + TwoWayBindingSelectComponent, + FormSelectComponent, + FeatureSelectComponent, + DisabledSelectComponent, + ResetSelectComponent, + OptionGroupSelectComponent, + MultipleSelectComponent, + TriggerSelectComponent, + RipplelessSelectComponent, + CustomPanelSelectComponent, + ErrorSelectComponent, + SliderComponent, + BasicSliderComponent, + BasicToggleComponent, + ConfigurableToggleComponent, + BasicMenuComponent, + NestedMenuComponent, + IconMenuComponent, + BasicSidenavComponent, + DrawerSidenavComponent, + TwoSidenavComponent, + OpenCloseSidenavComponent, + ConfigurableSidenavComponent, + EscapeBackdropSidenavComponent, + AutoresizeSidenavComponent, + FixedSidenavComponent, + ResponsiveSidenavComponent, + BasicToolbarComponent, + MultiRowToolbarComponent, + BasicCardComponent, + MultiSectionCardComponent, + BasicSidenavComponent, + BasicExpansionPanelComponent, + AccordinExpansionPanelComponent, + BasicGridComponent, + DynamicGridComponent, + BasicListComponent, + SectionListComponent, + BasicStepperComponent, + VerticalStepperComponent, + ErrorStepperComponent, + CustomizedStepperComponent, + BasicTabGroupComponent, + AlignTabGroupComponent, + AnimationTabGroupComponent, + DynamicTabGroupComponent, + NavTabGroupComponent, + CustomTabGroupComponent, + FlatTreeComponent, + NestedTreeComponent, + CheckboxTreeComponent, + DynamicDataTreeComponent, + ButtonsComponent, + CustomLoadingButtonsComponent, + ButtonToggleComponent, + BasicButtonToggleComponent, + BasicBadgeComponent, + BasicChipComponent, + AutocompleteChipComponent, + InputChipComponent, + StackedChipComponent, + BasicIconComponent, + SvgIconComponent, + BasicSpinnerComponent, + CustomSpinnerComponent, + BasicBarComponent, + CustomBarComponent, + IndeterminateBarComponent, + CustomRipplesComponent, + BasicTooltipComponent, + CustomPositionTooltipComponent, + CustomClassTooltipComponent, + DelayTooltipComponent, + DisabledTooltipComponent, + ManualHideTooltipComponent, + ChangingTooltipComponent, + AutoHideTooltipComponent, + BasicPaginatorComponent, + CustomPaginatorComponent, + BasicSortHeaderComponent, + TableSortingComponent, + BasicTableComponent, + PaginationTableComponent, + SortingTableComponent, + FilterTableComponent, + SelectionTableComponent, + FooterTableComponent, + StickyHeaderTableComponent, + StickyFooterTableComponent, + StickyColumnTableComponent, + BottomSheetComponent, + BottomSheetOverviewComponent, + BasicDialogComponent, + BasicDialogOverviewComponent, + DataDialogComponent, + DataDialogOverviewComponent, + ScrollableDialogComponent, + ScrollableDialogOverviewComponent, + BasicSnackbarComponent, + CustomSnackbarComponent, + BasicDividerComponent, + CustomSnackbarOverviewComponent +] \ No newline at end of file diff --git a/src/assets/examples/material/input-chip/input-chip.component.html b/src/assets/examples/material/input-chip/input-chip.component.html new file mode 100644 index 0000000..d5de071 --- /dev/null +++ b/src/assets/examples/material/input-chip/input-chip.component.html @@ -0,0 +1,15 @@ + + + + {{fruit.name}} + cancel + + + + + \ No newline at end of file diff --git a/src/assets/examples/material/input-chip/input-chip.component.scss b/src/assets/examples/material/input-chip/input-chip.component.scss new file mode 100644 index 0000000..26b0a93 --- /dev/null +++ b/src/assets/examples/material/input-chip/input-chip.component.scss @@ -0,0 +1,6 @@ +.example-chip-list { + width: 100%; + } + .mat-chip:not(.mat-basic-chip) { + display: flex; + } \ No newline at end of file diff --git a/src/assets/examples/material/input-chip/input-chip.component.spec.ts b/src/assets/examples/material/input-chip/input-chip.component.spec.ts new file mode 100644 index 0000000..4260282 --- /dev/null +++ b/src/assets/examples/material/input-chip/input-chip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { InputChipComponent } from './input-chip.component'; + +describe('InputChipComponent', () => { + let component: InputChipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ InputChipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(InputChipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/input-chip/input-chip.component.ts b/src/assets/examples/material/input-chip/input-chip.component.ts new file mode 100644 index 0000000..7c7a9ff --- /dev/null +++ b/src/assets/examples/material/input-chip/input-chip.component.ts @@ -0,0 +1,50 @@ +import {COMMA, ENTER} from '@angular/cdk/keycodes'; +import {Component} from '@angular/core'; +import { MatChipInputEvent } from '@angular/material/chips'; + +export interface Fruit { + name: string; +} + +@Component({ + selector: 'app-input-chip', + templateUrl: './input-chip.component.html', + styleUrls: ['./input-chip.component.scss'] +}) +export class InputChipComponent { + + visible = true; + selectable = true; + removable = true; + addOnBlur = true; + readonly separatorKeysCodes: number[] = [ENTER, COMMA]; + fruits: Fruit[] = [ + {name: 'Lemon'}, + {name: 'Lime'}, + {name: 'Apple'}, + ]; + + add(event: MatChipInputEvent): void { + const input = event.input; + const value = event.value; + + // Add our fruit + if ((value || '').trim()) { + this.fruits.push({name: value.trim()}); + } + + // Reset the input value + if (input) { + input.value = ''; + } + } + + remove(fruit: Fruit): void { + const index = this.fruits.indexOf(fruit); + + if (index >= 0) { + this.fruits.splice(index, 1); + } + } + +} diff --git a/src/assets/examples/material/label-form-field/label-form-field.component.html b/src/assets/examples/material/label-form-field/label-form-field.component.html new file mode 100644 index 0000000..4d0b412 --- /dev/null +++ b/src/assets/examples/material/label-form-field/label-form-field.component.html @@ -0,0 +1,34 @@ +
+
+ Hide required marker +
+ + + Auto + Always + Never + +
+ + + + + + + + Both a label and a placeholder + + + + + + -- None -- + Option + + favorite Fancy label + +
diff --git a/src/assets/examples/material/label-form-field/label-form-field.component.scss b/src/assets/examples/material/label-form-field/label-form-field.component.scss new file mode 100644 index 0000000..e774267 --- /dev/null +++ b/src/assets/examples/material/label-form-field/label-form-field.component.scss @@ -0,0 +1,21 @@ +.example-container { + display: flex; + flex-direction: column; + } + + .example-container > * { + width: 100%; + } + + .example-container form { + margin-bottom: 20px; + } + + .example-container form > * { + margin: 5px 0; + } + + .example-container .mat-radio-button { + margin: 0 12px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/label-form-field/label-form-field.component.spec.ts b/src/assets/examples/material/label-form-field/label-form-field.component.spec.ts new file mode 100644 index 0000000..ab552d4 --- /dev/null +++ b/src/assets/examples/material/label-form-field/label-form-field.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LabelFormFieldComponent } from './label-form-field.component'; + +describe('LabelFormFieldComponent', () => { + let component: LabelFormFieldComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LabelFormFieldComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LabelFormFieldComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/label-form-field/label-form-field.component.ts b/src/assets/examples/material/label-form-field/label-form-field.component.ts new file mode 100644 index 0000000..a7fea32 --- /dev/null +++ b/src/assets/examples/material/label-form-field/label-form-field.component.ts @@ -0,0 +1,20 @@ +import {Component} from '@angular/core'; +import {FormBuilder, FormGroup} from '@angular/forms'; + +@Component({ + selector: 'app-label-form-field', + templateUrl: './label-form-field.component.html', + styleUrls: ['./label-form-field.component.scss'] +}) +export class LabelFormFieldComponent { + + options: FormGroup; + + constructor(fb: FormBuilder) { + this.options = fb.group({ + hideRequired: false, + floatLabel: 'auto', + }); + } + +} diff --git a/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.html b/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.html new file mode 100644 index 0000000..4a0791a --- /dev/null +++ b/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.html @@ -0,0 +1,28 @@ +
+ Click the following buttons to... + + + +
+ + \ No newline at end of file diff --git a/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.scss b/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.scss new file mode 100644 index 0000000..b8a9b6d --- /dev/null +++ b/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.scss @@ -0,0 +1,4 @@ +.example-action-button { + margin-top: 16px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.spec.ts b/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.spec.ts new file mode 100644 index 0000000..2bd4e91 --- /dev/null +++ b/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ManualHideTooltipComponent } from './manual-hide-tooltip.component'; + +describe('ManualHideTooltipComponent', () => { + let component: ManualHideTooltipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ManualHideTooltipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ManualHideTooltipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.ts b/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.ts new file mode 100644 index 0000000..a6ac450 --- /dev/null +++ b/src/assets/examples/material/manual-hide-tooltip/manual-hide-tooltip.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-manual-hide-tooltip', + templateUrl: './manual-hide-tooltip.component.html', + styleUrls: ['./manual-hide-tooltip.component.scss'] +}) +export class ManualHideTooltipComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/material-examples.module.ts b/src/assets/examples/material/material-examples.module.ts new file mode 100644 index 0000000..6fb007a --- /dev/null +++ b/src/assets/examples/material/material-examples.module.ts @@ -0,0 +1,20 @@ +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { MATERIAL_EXAMPLE_COMPONENT_LIST } from '.'; +import { SharedMaterialModule } from 'app/shared/shared-material.module'; +import { SharedComponentsModule } from 'app/shared/components/shared-components.module'; + +@NgModule({ + declarations: [...MATERIAL_EXAMPLE_COMPONENT_LIST], + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + SharedComponentsModule, + SharedMaterialModule + ], + exports: [...MATERIAL_EXAMPLE_COMPONENT_LIST], + entryComponents: [...MATERIAL_EXAMPLE_COMPONENT_LIST] +}) +export class MaterialExamplesModule { } diff --git a/src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.html b/src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.html new file mode 100644 index 0000000..4ee60cd --- /dev/null +++ b/src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.scss b/src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.spec.ts b/src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.spec.ts new file mode 100644 index 0000000..94810a6 --- /dev/null +++ b/src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MinMaxDatepickerComponent } from './min-max-datepicker.component'; + +describe('MinMaxDatepickerComponent', () => { + let component: MinMaxDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MinMaxDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MinMaxDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.ts b/src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.ts new file mode 100644 index 0000000..8d6a306 --- /dev/null +++ b/src/assets/examples/material/min-max-datepicker/min-max-datepicker.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-min-max-datepicker', + templateUrl: './min-max-datepicker.component.html', + styleUrls: ['./min-max-datepicker.component.scss'] +}) +export class MinMaxDatepickerComponent implements OnInit { + + minDate = new Date(2000, 0, 1); + maxDate = new Date(2020, 0, 1); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.html b/src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.html new file mode 100644 index 0000000..a6ae46c --- /dev/null +++ b/src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.scss b/src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.spec.ts b/src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.spec.ts new file mode 100644 index 0000000..b4bdd24 --- /dev/null +++ b/src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MomentJsDatepickerComponent } from './moment-js-datepicker.component'; + +describe('MomentJsDatepickerComponent', () => { + let component: MomentJsDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MomentJsDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MomentJsDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.ts b/src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.ts new file mode 100644 index 0000000..195ef9c --- /dev/null +++ b/src/assets/examples/material/moment-js-datepicker/moment-js-datepicker.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; +import {MAT_MOMENT_DATE_FORMATS, MomentDateAdapter} from '@angular/material-moment-adapter'; +import {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core'; + +// Depending on whether rollup is used, moment needs to be imported differently. +// Since Moment.js doesn't have a default export, we normally need to import using the `* as` +// syntax. However, rollup creates a synthetic default module and we thus need to import it using +// the `default as` syntax. +import * as _moment from 'moment'; +// tslint:disable-next-line:no-duplicate-imports +const moment = _moment; + +@Component({ + selector: 'app-moment-js-datepicker', + templateUrl: './moment-js-datepicker.component.html', + styleUrls: ['./moment-js-datepicker.component.scss'], + providers: [ + // `MomentDateAdapter` and `MAT_MOMENT_DATE_FORMATS` can be automatically provided by importing + // `MatMomentDateModule` in your applications root module. We provide it at the component level + // here, due to limitations of our example generation script. + {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE]}, + {provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS}, + ], +}) +export class MomentJsDatepickerComponent implements OnInit { + + // Datepicker takes `Moment` objects instead of `Date` objects. + date = new FormControl(moment([2017, 0, 1])); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.html b/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.html new file mode 100644 index 0000000..4c2071c --- /dev/null +++ b/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.html @@ -0,0 +1,18 @@ + + + Custom Toolbar + + + + Second Line + + verified_user + + + + Third Line + + favorite + delete + + diff --git a/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.scss b/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.scss new file mode 100644 index 0000000..2a56ae5 --- /dev/null +++ b/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.scss @@ -0,0 +1,8 @@ +.example-icon { + padding: 0 14px; + } + + .example-spacer { + flex: 1 1 auto; + } + \ No newline at end of file diff --git a/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.spec.ts b/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.spec.ts new file mode 100644 index 0000000..bfdfa58 --- /dev/null +++ b/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MultiRowToolbarComponent } from './multi-row-toolbar.component'; + +describe('MultiRowToolbarComponent', () => { + let component: MultiRowToolbarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MultiRowToolbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MultiRowToolbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.ts b/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.ts new file mode 100644 index 0000000..94783bd --- /dev/null +++ b/src/assets/examples/material/multi-row-toolbar/multi-row-toolbar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-multi-row-toolbar', + templateUrl: './multi-row-toolbar.component.html', + styleUrls: ['./multi-row-toolbar.component.scss'] +}) +export class MultiRowToolbarComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/multi-section-card/multi-section-card.component.html b/src/assets/examples/material/multi-section-card/multi-section-card.component.html new file mode 100644 index 0000000..e7fdeb8 --- /dev/null +++ b/src/assets/examples/material/multi-section-card/multi-section-card.component.html @@ -0,0 +1,19 @@ + + +
+ Shiba Inu + Dog Breed +
+ Photo of a Shiba Inu + +

+ The Shiba Inu is the smallest of the six original and distinct spitz breeds of dog from Japan. + A small, agile dog that copes very well with mountainous terrain, the Shiba Inu was originally + bred for hunting. +

+
+ + + + +
diff --git a/src/assets/examples/material/multi-section-card/multi-section-card.component.scss b/src/assets/examples/material/multi-section-card/multi-section-card.component.scss new file mode 100644 index 0000000..1a5b60e --- /dev/null +++ b/src/assets/examples/material/multi-section-card/multi-section-card.component.scss @@ -0,0 +1,9 @@ +.example-card { + max-width: 400px; + } + + .example-header-image { + background-image: url('https://material.angular.io/assets/img/examples/shiba1.jpg'); + background-size: cover; + } + \ No newline at end of file diff --git a/src/assets/examples/material/multi-section-card/multi-section-card.component.spec.ts b/src/assets/examples/material/multi-section-card/multi-section-card.component.spec.ts new file mode 100644 index 0000000..d1ab4f2 --- /dev/null +++ b/src/assets/examples/material/multi-section-card/multi-section-card.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MultiSectionCardComponent } from './multi-section-card.component'; + +describe('MultiSectionCardComponent', () => { + let component: MultiSectionCardComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MultiSectionCardComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MultiSectionCardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/multi-section-card/multi-section-card.component.ts b/src/assets/examples/material/multi-section-card/multi-section-card.component.ts new file mode 100644 index 0000000..62f41fb --- /dev/null +++ b/src/assets/examples/material/multi-section-card/multi-section-card.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-multi-section-card', + templateUrl: './multi-section-card.component.html', + styleUrls: ['./multi-section-card.component.scss'] +}) +export class MultiSectionCardComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/multiple-select/multiple-select.component.html b/src/assets/examples/material/multiple-select/multiple-select.component.html new file mode 100644 index 0000000..fdd7aeb --- /dev/null +++ b/src/assets/examples/material/multiple-select/multiple-select.component.html @@ -0,0 +1,9 @@ +

+ multiple-select works! +

+ + Toppings + + {{topping}} + + diff --git a/src/assets/examples/material/multiple-select/multiple-select.component.scss b/src/assets/examples/material/multiple-select/multiple-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/multiple-select/multiple-select.component.spec.ts b/src/assets/examples/material/multiple-select/multiple-select.component.spec.ts new file mode 100644 index 0000000..c310ce4 --- /dev/null +++ b/src/assets/examples/material/multiple-select/multiple-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MultipleSelectComponent } from './multiple-select.component'; + +describe('MultipleSelectComponent', () => { + let component: MultipleSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MultipleSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MultipleSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/multiple-select/multiple-select.component.ts b/src/assets/examples/material/multiple-select/multiple-select.component.ts new file mode 100644 index 0000000..5d9b8d5 --- /dev/null +++ b/src/assets/examples/material/multiple-select/multiple-select.component.ts @@ -0,0 +1,19 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; + +@Component({ + selector: 'app-multiple-select', + templateUrl: './multiple-select.component.html', + styleUrls: ['./multiple-select.component.scss'] +}) +export class MultipleSelectComponent implements OnInit { + + toppings = new FormControl(); + toppingList: string[] = ['Extra cheese', 'Mushroom', 'Onion', 'Pepperoni', 'Sausage', 'Tomato']; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/nav-tab-group/nav-tab-group.component.html b/src/assets/examples/material/nav-tab-group/nav-tab-group.component.html new file mode 100644 index 0000000..538f335 --- /dev/null +++ b/src/assets/examples/material/nav-tab-group/nav-tab-group.component.html @@ -0,0 +1,12 @@ + + + diff --git a/src/assets/examples/material/nav-tab-group/nav-tab-group.component.scss b/src/assets/examples/material/nav-tab-group/nav-tab-group.component.scss new file mode 100644 index 0000000..ebfb85b --- /dev/null +++ b/src/assets/examples/material/nav-tab-group/nav-tab-group.component.scss @@ -0,0 +1,4 @@ +.example-action-button { + margin-bottom: 8px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/nav-tab-group/nav-tab-group.component.spec.ts b/src/assets/examples/material/nav-tab-group/nav-tab-group.component.spec.ts new file mode 100644 index 0000000..76d1fab --- /dev/null +++ b/src/assets/examples/material/nav-tab-group/nav-tab-group.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NavTabGroupComponent } from './nav-tab-group.component'; + +describe('NavTabGroupComponent', () => { + let component: NavTabGroupComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NavTabGroupComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NavTabGroupComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/nav-tab-group/nav-tab-group.component.ts b/src/assets/examples/material/nav-tab-group/nav-tab-group.component.ts new file mode 100644 index 0000000..1ff7ed9 --- /dev/null +++ b/src/assets/examples/material/nav-tab-group/nav-tab-group.component.ts @@ -0,0 +1,23 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-nav-tab-group', + templateUrl: './nav-tab-group.component.html', + styleUrls: ['./nav-tab-group.component.scss'] +}) +export class NavTabGroupComponent implements OnInit { + + links = ['First', 'Second', 'Third']; + activeLink = this.links[0]; + background = ''; + + toggleBackground() { + this.background = this.background ? '' : 'primary'; + } + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/nested-menu/nested-menu.component.html b/src/assets/examples/material/nested-menu/nested-menu.component.html new file mode 100644 index 0000000..6145854 --- /dev/null +++ b/src/assets/examples/material/nested-menu/nested-menu.component.html @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/examples/material/nested-menu/nested-menu.component.scss b/src/assets/examples/material/nested-menu/nested-menu.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/nested-menu/nested-menu.component.spec.ts b/src/assets/examples/material/nested-menu/nested-menu.component.spec.ts new file mode 100644 index 0000000..c209914 --- /dev/null +++ b/src/assets/examples/material/nested-menu/nested-menu.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NestedMenuComponent } from './nested-menu.component'; + +describe('NestedMenuComponent', () => { + let component: NestedMenuComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NestedMenuComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NestedMenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/nested-menu/nested-menu.component.ts b/src/assets/examples/material/nested-menu/nested-menu.component.ts new file mode 100644 index 0000000..b38ad78 --- /dev/null +++ b/src/assets/examples/material/nested-menu/nested-menu.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-nested-menu', + templateUrl: './nested-menu.component.html', + styleUrls: ['./nested-menu.component.scss'] +}) +export class NestedMenuComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/nested-tree/nested-tree.component.html b/src/assets/examples/material/nested-tree/nested-tree.component.html new file mode 100644 index 0000000..8260e1c --- /dev/null +++ b/src/assets/examples/material/nested-tree/nested-tree.component.html @@ -0,0 +1,28 @@ + + + +
  • + + + {{node.name}} +
  • +
    + + +
  • +
    + + {{node.name}} +
    +
      + +
    +
  • +
    +
    + \ No newline at end of file diff --git a/src/assets/examples/material/nested-tree/nested-tree.component.scss b/src/assets/examples/material/nested-tree/nested-tree.component.scss new file mode 100644 index 0000000..91c0502 --- /dev/null +++ b/src/assets/examples/material/nested-tree/nested-tree.component.scss @@ -0,0 +1,11 @@ +.example-tree-invisible { + display: none; + } + + .example-tree ul, + .example-tree li { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; + } + \ No newline at end of file diff --git a/src/assets/examples/material/nested-tree/nested-tree.component.spec.ts b/src/assets/examples/material/nested-tree/nested-tree.component.spec.ts new file mode 100644 index 0000000..66946b0 --- /dev/null +++ b/src/assets/examples/material/nested-tree/nested-tree.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NestedTreeComponent } from './nested-tree.component'; + +describe('NestedTreeComponent', () => { + let component: NestedTreeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NestedTreeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NestedTreeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/nested-tree/nested-tree.component.ts b/src/assets/examples/material/nested-tree/nested-tree.component.ts new file mode 100644 index 0000000..c3b981a --- /dev/null +++ b/src/assets/examples/material/nested-tree/nested-tree.component.ts @@ -0,0 +1,61 @@ +import { Component, OnInit } from '@angular/core'; +import {NestedTreeControl} from '@angular/cdk/tree'; +import {MatTreeNestedDataSource} from '@angular/material/tree'; + +/** + * Food data with nested structure. + * Each node has a name and an optiona list of children. + */ +interface FoodNode { + name: string; + children?: FoodNode[]; +} + +const TREE_DATA: FoodNode[] = [ + { + name: 'Fruit', + children: [ + {name: 'Apple'}, + {name: 'Banana'}, + {name: 'Fruit loops'}, + ] + }, { + name: 'Vegetables', + children: [ + { + name: 'Green', + children: [ + {name: 'Broccoli'}, + {name: 'Brussel sprouts'}, + ] + }, { + name: 'Orange', + children: [ + {name: 'Pumpkins'}, + {name: 'Carrots'}, + ] + }, + ] + }, +]; + +@Component({ + selector: 'app-nested-tree', + templateUrl: './nested-tree.component.html', + styleUrls: ['./nested-tree.component.scss'] +}) +export class NestedTreeComponent implements OnInit { + + treeControl = new NestedTreeControl(node => node.children); + dataSource = new MatTreeNestedDataSource(); + + constructor() { + this.dataSource.data = TREE_DATA; + } + + hasChild = (_: number, node: FoodNode) => !!node.children && node.children.length > 0; + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.html b/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.html new file mode 100644 index 0000000..5369faa --- /dev/null +++ b/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.html @@ -0,0 +1,10 @@ + + + + {{season}} + + +
    Your favorite season is: {{favoriteSeason}}
    diff --git a/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.scss b/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.scss new file mode 100644 index 0000000..839b6a3 --- /dev/null +++ b/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.scss @@ -0,0 +1,10 @@ +.example-radio-group { + display: flex; + flex-direction: column; + margin: 15px 0; + } + + .example-radio-button { + margin: 5px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.spec.ts b/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.spec.ts new file mode 100644 index 0000000..c58e090 --- /dev/null +++ b/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NgmodelRadioComponent } from './ngmodel-radio.component'; + +describe('NgmodelRadioComponent', () => { + let component: NgmodelRadioComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NgmodelRadioComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NgmodelRadioComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.ts b/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.ts new file mode 100644 index 0000000..856eafb --- /dev/null +++ b/src/assets/examples/material/ngmodel-radio/ngmodel-radio.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-ngmodel-radio', + templateUrl: './ngmodel-radio.component.html', + styleUrls: ['./ngmodel-radio.component.scss'] +}) +export class NgmodelRadioComponent implements OnInit { + + favoriteSeason: string; + seasons: string[] = ['Winter', 'Spring', 'Summer', 'Autumn']; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.html b/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.html new file mode 100644 index 0000000..2c03572 --- /dev/null +++ b/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.html @@ -0,0 +1,15 @@ + + + Sidenav content + + + +

    sidenav.opened

    +

    +

    Events:

    +
    +
    {{e}}
    +
    +
    +
    \ No newline at end of file diff --git a/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.scss b/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.scss new file mode 100644 index 0000000..c4e7a91 --- /dev/null +++ b/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.scss @@ -0,0 +1,15 @@ +.example-container { + // position: absolute; + // top: 0; + // bottom: 0; + // left: 0; + // right: 0; + } + + .example-events { + width: 300px; + height: 200px; + overflow: auto; + border: 1px solid #555; + } + \ No newline at end of file diff --git a/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.spec.ts b/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.spec.ts new file mode 100644 index 0000000..89f48d9 --- /dev/null +++ b/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OpenCloseSidenavComponent } from './open-close-sidenav.component'; + +describe('OpenCloseSidenavComponent', () => { + let component: OpenCloseSidenavComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ OpenCloseSidenavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OpenCloseSidenavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.ts b/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.ts new file mode 100644 index 0000000..1a89b8f --- /dev/null +++ b/src/assets/examples/material/open-close-sidenav/open-close-sidenav.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-open-close-sidenav', + templateUrl: './open-close-sidenav.component.html', + styleUrls: ['./open-close-sidenav.component.scss'] +}) +export class OpenCloseSidenavComponent implements OnInit { + + events: string[] = []; + opened: boolean; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.html b/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.html new file mode 100644 index 0000000..453fe29 --- /dev/null +++ b/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.scss b/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.scss new file mode 100644 index 0000000..692ed8c --- /dev/null +++ b/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.scss @@ -0,0 +1,4 @@ +mat-form-field { + margin-right: 12px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.spec.ts b/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.spec.ts new file mode 100644 index 0000000..9b827a5 --- /dev/null +++ b/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OpenMethodDatepickerComponent } from './open-method-datepicker.component'; + +describe('OpenMethodDatepickerComponent', () => { + let component: OpenMethodDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ OpenMethodDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OpenMethodDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.ts b/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.ts new file mode 100644 index 0000000..6447680 --- /dev/null +++ b/src/assets/examples/material/open-method-datepicker/open-method-datepicker.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-open-method-datepicker', + templateUrl: './open-method-datepicker.component.html', + styleUrls: ['./open-method-datepicker.component.scss'] +}) +export class OpenMethodDatepickerComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.html b/src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.html new file mode 100644 index 0000000..0d9a4bf --- /dev/null +++ b/src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.html @@ -0,0 +1,12 @@ +
    + + + + + + {{name}} + + + + + diff --git a/src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.scss b/src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.spec.ts b/src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.spec.ts new file mode 100644 index 0000000..227a28d --- /dev/null +++ b/src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OptionGroupAutocompleteComponent } from './option-group-autocomplete.component'; + +describe('OptionGroupAutocompleteComponent', () => { + let component: OptionGroupAutocompleteComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ OptionGroupAutocompleteComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OptionGroupAutocompleteComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.ts b/src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.ts new file mode 100644 index 0000000..801dc10 --- /dev/null +++ b/src/assets/examples/material/option-group-autocomplete/option-group-autocomplete.component.ts @@ -0,0 +1,111 @@ +import {Component, OnInit} from '@angular/core'; +import {FormBuilder, FormGroup} from '@angular/forms'; +import {Observable} from 'rxjs'; +import {startWith, map} from 'rxjs/operators'; + +export interface StateGroup { + letter: string; + names: string[]; +} + +export const _filter = (opt: string[], value: string): string[] => { + const filterValue = value.toLowerCase(); + + return opt.filter(item => item.toLowerCase().indexOf(filterValue) === 0); +}; + +@Component({ + selector: 'app-option-group-autocomplete', + templateUrl: './option-group-autocomplete.component.html', + styleUrls: ['./option-group-autocomplete.component.scss'] +}) +export class OptionGroupAutocompleteComponent implements OnInit { + + stateForm: FormGroup = this.fb.group({ + stateGroup: '', + }); + + stateGroups: StateGroup[] = [{ + letter: 'A', + names: ['Alabama', 'Alaska', 'Arizona', 'Arkansas'] + }, { + letter: 'C', + names: ['California', 'Colorado', 'Connecticut'] + }, { + letter: 'D', + names: ['Delaware'] + }, { + letter: 'F', + names: ['Florida'] + }, { + letter: 'G', + names: ['Georgia'] + }, { + letter: 'H', + names: ['Hawaii'] + }, { + letter: 'I', + names: ['Idaho', 'Illinois', 'Indiana', 'Iowa'] + }, { + letter: 'K', + names: ['Kansas', 'Kentucky'] + }, { + letter: 'L', + names: ['Louisiana'] + }, { + letter: 'M', + names: ['Maine', 'Maryland', 'Massachusetts', 'Michigan', + 'Minnesota', 'Mississippi', 'Missouri', 'Montana'] + }, { + letter: 'N', + names: ['Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', + 'New Mexico', 'New York', 'North Carolina', 'North Dakota'] + }, { + letter: 'O', + names: ['Ohio', 'Oklahoma', 'Oregon'] + }, { + letter: 'P', + names: ['Pennsylvania'] + }, { + letter: 'R', + names: ['Rhode Island'] + }, { + letter: 'S', + names: ['South Carolina', 'South Dakota'] + }, { + letter: 'T', + names: ['Tennessee', 'Texas'] + }, { + letter: 'U', + names: ['Utah'] + }, { + letter: 'V', + names: ['Vermont', 'Virginia'] + }, { + letter: 'W', + names: ['Washington', 'West Virginia', 'Wisconsin', 'Wyoming'] + }]; + + stateGroupOptions: Observable; + + constructor(private fb: FormBuilder) {} + + ngOnInit() { + this.stateGroupOptions = this.stateForm.get('stateGroup')!.valueChanges + .pipe( + startWith(''), + map(value => this._filterGroup(value)) + ); + } + + private _filterGroup(value: string): StateGroup[] { + if (value) { + return this.stateGroups + .map(group => ({letter: group.letter, names: _filter(group.names, value)})) + .filter(group => group.names.length > 0); + } + + return this.stateGroups; + } + +} diff --git a/src/assets/examples/material/option-group-select/option-group-select.component.html b/src/assets/examples/material/option-group-select/option-group-select.component.html new file mode 100644 index 0000000..6482720 --- /dev/null +++ b/src/assets/examples/material/option-group-select/option-group-select.component.html @@ -0,0 +1,28 @@ +

    mat-select

    + + Pokemon + + -- None -- + + + {{pokemon.viewValue}} + + + + + +

    native html select

    + + Cars + + diff --git a/src/assets/examples/material/option-group-select/option-group-select.component.scss b/src/assets/examples/material/option-group-select/option-group-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/option-group-select/option-group-select.component.spec.ts b/src/assets/examples/material/option-group-select/option-group-select.component.spec.ts new file mode 100644 index 0000000..edc693a --- /dev/null +++ b/src/assets/examples/material/option-group-select/option-group-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OptionGroupSelectComponent } from './option-group-select.component'; + +describe('OptionGroupSelectComponent', () => { + let component: OptionGroupSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ OptionGroupSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(OptionGroupSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/option-group-select/option-group-select.component.ts b/src/assets/examples/material/option-group-select/option-group-select.component.ts new file mode 100644 index 0000000..3e7cd23 --- /dev/null +++ b/src/assets/examples/material/option-group-select/option-group-select.component.ts @@ -0,0 +1,63 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; + +export interface Pokemon { + value: string; + viewValue: string; +} + +export interface PokemonGroup { + disabled?: boolean; + name: string; + pokemon: Pokemon[]; +} + +@Component({ + selector: 'app-option-group-select', + templateUrl: './option-group-select.component.html', + styleUrls: ['./option-group-select.component.scss'] +}) +export class OptionGroupSelectComponent implements OnInit { + + pokemonControl = new FormControl(); + pokemonGroups: PokemonGroup[] = [ + { + name: 'Grass', + pokemon: [ + {value: 'bulbasaur-0', viewValue: 'Bulbasaur'}, + {value: 'oddish-1', viewValue: 'Oddish'}, + {value: 'bellsprout-2', viewValue: 'Bellsprout'} + ] + }, + { + name: 'Water', + pokemon: [ + {value: 'squirtle-3', viewValue: 'Squirtle'}, + {value: 'psyduck-4', viewValue: 'Psyduck'}, + {value: 'horsea-5', viewValue: 'Horsea'} + ] + }, + { + name: 'Fire', + disabled: true, + pokemon: [ + {value: 'charmander-6', viewValue: 'Charmander'}, + {value: 'vulpix-7', viewValue: 'Vulpix'}, + {value: 'flareon-8', viewValue: 'Flareon'} + ] + }, + { + name: 'Psychic', + pokemon: [ + {value: 'mew-9', viewValue: 'Mew'}, + {value: 'mewtwo-10', viewValue: 'Mewtwo'}, + ] + } + ]; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/pagination-table/pagination-table.component.html b/src/assets/examples/material/pagination-table/pagination-table.component.html new file mode 100644 index 0000000..a410ebb --- /dev/null +++ b/src/assets/examples/material/pagination-table/pagination-table.component.html @@ -0,0 +1,33 @@ +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}}
    + + +
    diff --git a/src/assets/examples/material/pagination-table/pagination-table.component.scss b/src/assets/examples/material/pagination-table/pagination-table.component.scss new file mode 100644 index 0000000..ca85107 --- /dev/null +++ b/src/assets/examples/material/pagination-table/pagination-table.component.scss @@ -0,0 +1,4 @@ +table { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/pagination-table/pagination-table.component.spec.ts b/src/assets/examples/material/pagination-table/pagination-table.component.spec.ts new file mode 100644 index 0000000..0d470ac --- /dev/null +++ b/src/assets/examples/material/pagination-table/pagination-table.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PaginationTableComponent } from './pagination-table.component'; + +describe('PaginationTableComponent', () => { + let component: PaginationTableComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PaginationTableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PaginationTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/pagination-table/pagination-table.component.ts b/src/assets/examples/material/pagination-table/pagination-table.component.ts new file mode 100644 index 0000000..a997ff0 --- /dev/null +++ b/src/assets/examples/material/pagination-table/pagination-table.component.ts @@ -0,0 +1,51 @@ +import {Component, OnInit, ViewChild} from '@angular/core'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatTableDataSource } from '@angular/material/table'; + +export interface PeriodicElement { + name: string; + position: number; + weight: number; + symbol: string; +} + +const ELEMENT_DATA: PeriodicElement[] = [ + {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, + {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, + {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, + {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, + {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, + {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, + {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, + {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, + {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, + {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, + {position: 11, name: 'Sodium', weight: 22.9897, symbol: 'Na'}, + {position: 12, name: 'Magnesium', weight: 24.305, symbol: 'Mg'}, + {position: 13, name: 'Aluminum', weight: 26.9815, symbol: 'Al'}, + {position: 14, name: 'Silicon', weight: 28.0855, symbol: 'Si'}, + {position: 15, name: 'Phosphorus', weight: 30.9738, symbol: 'P'}, + {position: 16, name: 'Sulfur', weight: 32.065, symbol: 'S'}, + {position: 17, name: 'Chlorine', weight: 35.453, symbol: 'Cl'}, + {position: 18, name: 'Argon', weight: 39.948, symbol: 'Ar'}, + {position: 19, name: 'Potassium', weight: 39.0983, symbol: 'K'}, + {position: 20, name: 'Calcium', weight: 40.078, symbol: 'Ca'}, +]; + +@Component({ + selector: 'app-pagination-table', + templateUrl: './pagination-table.component.html', + styleUrls: ['./pagination-table.component.scss'] +}) +export class PaginationTableComponent implements OnInit { + + displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; + dataSource = new MatTableDataSource(ELEMENT_DATA); + + @ViewChild(MatPaginator) paginator: MatPaginator; + + ngOnInit() { + this.dataSource.paginator = this.paginator; + } + +} diff --git a/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.html b/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.html new file mode 100644 index 0000000..5edb299 --- /dev/null +++ b/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.html @@ -0,0 +1,14 @@ +
    + + + + + + + + + .00 + +
    diff --git a/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.scss b/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.scss new file mode 100644 index 0000000..fb0ea2b --- /dev/null +++ b/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.scss @@ -0,0 +1,22 @@ +.example-container { + display: flex; + flex-direction: column; + } + + .example-container > * { + width: 100%; + } + + .example-right-align { + text-align: right; + } + + input.example-right-align::-webkit-outer-spin-button, + input.example-right-align::-webkit-inner-spin-button { + display: none; + } + + input.example-right-align { + -moz-appearance: textfield; + } + \ No newline at end of file diff --git a/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.spec.ts b/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.spec.ts new file mode 100644 index 0000000..512941c --- /dev/null +++ b/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PrefixSuffixFormFieldComponent } from './prefix-suffix-form-field.component'; + +describe('PrefixSuffixFormFieldComponent', () => { + let component: PrefixSuffixFormFieldComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PrefixSuffixFormFieldComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PrefixSuffixFormFieldComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.ts b/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.ts new file mode 100644 index 0000000..489402e --- /dev/null +++ b/src/assets/examples/material/prefix-suffix-form-field/prefix-suffix-form-field.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-prefix-suffix-form-field', + templateUrl: './prefix-suffix-form-field.component.html', + styleUrls: ['./prefix-suffix-form-field.component.scss'] +}) +export class PrefixSuffixFormFieldComponent implements OnInit { + + hide = true; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/reset-select/reset-select.component.html b/src/assets/examples/material/reset-select/reset-select.component.html new file mode 100644 index 0000000..e0f7345 --- /dev/null +++ b/src/assets/examples/material/reset-select/reset-select.component.html @@ -0,0 +1,20 @@ +

    mat-select

    + + State + + None + {{state}} + + + +

    native html select

    + + Select your car + + diff --git a/src/assets/examples/material/reset-select/reset-select.component.scss b/src/assets/examples/material/reset-select/reset-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/reset-select/reset-select.component.spec.ts b/src/assets/examples/material/reset-select/reset-select.component.spec.ts new file mode 100644 index 0000000..456076f --- /dev/null +++ b/src/assets/examples/material/reset-select/reset-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ResetSelectComponent } from './reset-select.component'; + +describe('ResetSelectComponent', () => { + let component: ResetSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ResetSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ResetSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/reset-select/reset-select.component.ts b/src/assets/examples/material/reset-select/reset-select.component.ts new file mode 100644 index 0000000..60a6fb7 --- /dev/null +++ b/src/assets/examples/material/reset-select/reset-select.component.ts @@ -0,0 +1,25 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-reset-select', + templateUrl: './reset-select.component.html', + styleUrls: ['./reset-select.component.scss'] +}) +export class ResetSelectComponent implements OnInit { + + states: string[] = [ + 'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', + 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', + 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', + 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', + 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', + 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', + 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming' + ]; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.html b/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.html new file mode 100644 index 0000000..e08fe97 --- /dev/null +++ b/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.html @@ -0,0 +1,20 @@ +
    + + +

    Responsive App

    +
    + + + + + {{nav}} + + + + +

    {{content}}

    +
    +
    +
    \ No newline at end of file diff --git a/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.scss b/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.scss new file mode 100644 index 0000000..5cb2ca5 --- /dev/null +++ b/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.scss @@ -0,0 +1,32 @@ +.example-container { + display: flex; + flex-direction: column; + // position: absolute; + // top: 0; + // bottom: 0; + // left: 0; + // right: 0; + } + + .example-is-mobile .example-toolbar { + position: fixed; + /* Make sure the toolbar will stay on top of the content as it scrolls past. */ + z-index: 2; + } + + h1.example-app-name { + margin-left: 8px; + } + + .example-sidenav-container { + /* When the sidenav is not fixed, stretch the sidenav container to fill the available space. This + causes `` to act as our scrolling element for desktop layouts. */ + flex: 1; + } + + .example-is-mobile .example-sidenav-container { + /* When the sidenav is fixed, don't constrain the height of the sidenav container. This allows the + `` to be our scrolling element for mobile layouts. */ + flex: 1 0 auto; + } + \ No newline at end of file diff --git a/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.spec.ts b/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.spec.ts new file mode 100644 index 0000000..9566986 --- /dev/null +++ b/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ResponsiveSidenavComponent } from './responsive-sidenav.component'; + +describe('ResponsiveSidenavComponent', () => { + let component: ResponsiveSidenavComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ResponsiveSidenavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ResponsiveSidenavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.ts b/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.ts new file mode 100644 index 0000000..6f4b45e --- /dev/null +++ b/src/assets/examples/material/responsive-sidenav/responsive-sidenav.component.ts @@ -0,0 +1,28 @@ +import {ChangeDetectorRef, Component, OnDestroy} from '@angular/core'; +import { MediaMatcher } from '@angular/cdk/layout'; + +@Component({ + selector: 'app-responsive-sidenav', + templateUrl: './responsive-sidenav.component.html', + styleUrls: ['./responsive-sidenav.component.scss'] +}) +export class ResponsiveSidenavComponent implements OnDestroy { + + mobileQuery: MediaQueryList; + + fillerNav = Array.from({length: 10}, (_, i) => `Nav Item ${i + 1}`); + + fillerContent = Array.from({length: 5}, () => `my content`); + + private _mobileQueryListener: () => void; + + constructor(changeDetectorRef: ChangeDetectorRef, media: MediaMatcher) { + this.mobileQuery = media.matchMedia('(max-width: 600px)'); + this._mobileQueryListener = () => changeDetectorRef.detectChanges(); + this.mobileQuery.addListener(this._mobileQueryListener); + } + + ngOnDestroy(): void { + this.mobileQuery.removeListener(this._mobileQueryListener); + } +} diff --git a/src/assets/examples/material/rippleless-select/rippleless-select.component.html b/src/assets/examples/material/rippleless-select/rippleless-select.component.html new file mode 100644 index 0000000..4c722ae --- /dev/null +++ b/src/assets/examples/material/rippleless-select/rippleless-select.component.html @@ -0,0 +1,8 @@ + + Select an option + + Option 1 + Option 2 + Option 3 + + diff --git a/src/assets/examples/material/rippleless-select/rippleless-select.component.scss b/src/assets/examples/material/rippleless-select/rippleless-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/rippleless-select/rippleless-select.component.spec.ts b/src/assets/examples/material/rippleless-select/rippleless-select.component.spec.ts new file mode 100644 index 0000000..25c8ae0 --- /dev/null +++ b/src/assets/examples/material/rippleless-select/rippleless-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RipplelessSelectComponent } from './rippleless-select.component'; + +describe('RipplelessSelectComponent', () => { + let component: RipplelessSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ RipplelessSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RipplelessSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/rippleless-select/rippleless-select.component.ts b/src/assets/examples/material/rippleless-select/rippleless-select.component.ts new file mode 100644 index 0000000..6b09fdc --- /dev/null +++ b/src/assets/examples/material/rippleless-select/rippleless-select.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-rippleless-select', + templateUrl: './rippleless-select.component.html', + styleUrls: ['./rippleless-select.component.scss'] +}) +export class RipplelessSelectComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.html b/src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.html new file mode 100644 index 0000000..a5f12bc --- /dev/null +++ b/src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.html @@ -0,0 +1,64 @@ +

    Install Angular

    + +

    Develop across all platforms

    +

    Learn one way to build applications with Angular and reuse your code and abilities to build + apps for any deployment target. For web, mobile web, native mobile and native desktop.

    + +

    Speed & Performance

    +

    Achieve the maximum speed possible on the Web Platform today, and take it further, via Web + Workers and server-side rendering. Angular puts you in control over scalability. Meet huge + data requirements by building data models on RxJS, Immutable.js or another push-model.

    + +

    Incredible tooling

    +

    Build features quickly with simple, declarative templates. Extend the template language with + your own components and use a wide array of existing components. Get immediate Angular-specific + help and feedback with nearly every IDE and editor. All this comes together so you can focus + on building amazing apps rather than trying to make the code work.

    + +

    Loved by millions

    +

    From prototype through global deployment, Angular delivers the productivity and scalable + infrastructure that supports Google's largest applications.

    + +

    What is Angular?

    + +

    Angular is a platform that makes it easy to build applications with the web. Angular + combines declarative templates, dependency injection, end to end tooling, and integrated + best practices to solve development challenges. Angular empowers developers to build + applications that live on the web, mobile, or the desktop

    + +

    Architecture overview

    + +

    Angular is a platform and framework for building client applications in HTML and TypeScript. + Angular is itself written in TypeScript. It implements core and optional functionality as a + set of TypeScript libraries that you import into your apps.

    + +

    The basic building blocks of an Angular application are NgModules, which provide a compilation + context for components. NgModules collect related code into functional sets; an Angular app is + defined by a set of NgModules. An app always has at least a root module that enables + bootstrapping, and typically has many more feature modules.

    + +

    Components define views, which are sets of screen elements that Angular can choose among and + modify according to your program logic and data. Every app has at least a root component.

    + +

    Components use services, which provide specific functionality not directly related to views. + Service providers can be injected into components as dependencies, making your code modular, + reusable, and efficient.

    + +

    Both components and services are simply classes, with decorators that mark their type and + provide metadata that tells Angular how to use them.

    + +

    The metadata for a component class associates it with a template that defines a view. A + template combines ordinary HTML with Angular directives and binding markup that allow Angular + to modify the HTML before rendering it for display.

    + +

    The metadata for a service class provides the information Angular needs to make it available + to components through Dependency Injection (DI).

    + +

    An app's components typically define many views, arranged hierarchically. Angular provides + the Router service to help you define navigation paths among views. The router provides + sophisticated in-browser navigational capabilities.

    +
    + + + + diff --git a/src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.scss b/src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.spec.ts b/src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.spec.ts new file mode 100644 index 0000000..a9908e9 --- /dev/null +++ b/src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ScrollableDialogOverviewComponent } from './scrollable-dialog-overview.component'; + +describe('ScrollableDialogOverviewComponent', () => { + let component: ScrollableDialogOverviewComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ScrollableDialogOverviewComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ScrollableDialogOverviewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.ts b/src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.ts new file mode 100644 index 0000000..2759a4c --- /dev/null +++ b/src/assets/examples/material/scrollable-dialog/scrollable-dialog-overview/scrollable-dialog-overview.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-scrollable-dialog-overview', + templateUrl: './scrollable-dialog-overview.component.html', + styleUrls: ['./scrollable-dialog-overview.component.scss'] +}) +export class ScrollableDialogOverviewComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.html b/src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.html new file mode 100644 index 0000000..cdfc2fb --- /dev/null +++ b/src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.html @@ -0,0 +1 @@ + diff --git a/src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.scss b/src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.spec.ts b/src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.spec.ts new file mode 100644 index 0000000..2dfa190 --- /dev/null +++ b/src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ScrollableDialogComponent } from './scrollable-dialog.component'; + +describe('ScrollableDialogComponent', () => { + let component: ScrollableDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ScrollableDialogComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ScrollableDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.ts b/src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.ts new file mode 100644 index 0000000..31767e4 --- /dev/null +++ b/src/assets/examples/material/scrollable-dialog/scrollable-dialog.component.ts @@ -0,0 +1,25 @@ +import { MatDialog } from '@angular/material/dialog'; +import { Component, OnInit } from '@angular/core'; +import { ScrollableDialogOverviewComponent } from './scrollable-dialog-overview/scrollable-dialog-overview.component'; + +@Component({ + selector: 'app-scrollable-dialog', + templateUrl: './scrollable-dialog.component.html', + styleUrls: ['./scrollable-dialog.component.scss'] +}) +export class ScrollableDialogComponent implements OnInit { + + constructor(public dialog: MatDialog) {} + + openDialog() { + const dialogRef = this.dialog.open(ScrollableDialogOverviewComponent); + + dialogRef.afterClosed().subscribe(result => { + // console.log(`Dialog result: ${result}`); + }); + } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/section-list/section-list.component.html b/src/assets/examples/material/section-list/section-list.component.html new file mode 100644 index 0000000..ecb32bb --- /dev/null +++ b/src/assets/examples/material/section-list/section-list.component.html @@ -0,0 +1,15 @@ + +

    Folders

    + + folder +

    {{folder.name}}

    +

    {{folder.updated | date}}

    +
    + +

    Notes

    + + note +

    {{note.name}}

    +

    {{note.updated | date}}

    +
    +
    diff --git a/src/assets/examples/material/section-list/section-list.component.scss b/src/assets/examples/material/section-list/section-list.component.scss new file mode 100644 index 0000000..ef1bfb5 --- /dev/null +++ b/src/assets/examples/material/section-list/section-list.component.scss @@ -0,0 +1,4 @@ +.mat-list-icon { + color: rgba(0, 0, 0, 0.54); + } + \ No newline at end of file diff --git a/src/assets/examples/material/section-list/section-list.component.spec.ts b/src/assets/examples/material/section-list/section-list.component.spec.ts new file mode 100644 index 0000000..8703be2 --- /dev/null +++ b/src/assets/examples/material/section-list/section-list.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SectionListComponent } from './section-list.component'; + +describe('SectionListComponent', () => { + let component: SectionListComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SectionListComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SectionListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/section-list/section-list.component.ts b/src/assets/examples/material/section-list/section-list.component.ts new file mode 100644 index 0000000..bdff611 --- /dev/null +++ b/src/assets/examples/material/section-list/section-list.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit } from '@angular/core'; + +export interface Section { + name: string; + updated: Date; +} + +@Component({ + selector: 'app-section-list', + templateUrl: './section-list.component.html', + styleUrls: ['./section-list.component.scss'] +}) +export class SectionListComponent implements OnInit { + + folders: Section[] = [ + { + name: 'Photos', + updated: new Date('1/1/16'), + }, + { + name: 'Recipes', + updated: new Date('1/17/16'), + }, + { + name: 'Work', + updated: new Date('1/28/16'), + } + ]; + notes: Section[] = [ + { + name: 'Vacation Itinerary', + updated: new Date('2/20/16'), + }, + { + name: 'Kitchen Remodel', + updated: new Date('1/18/16'), + } + ]; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.html b/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.html new file mode 100644 index 0000000..fbd5f59 --- /dev/null +++ b/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + diff --git a/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.scss b/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.scss new file mode 100644 index 0000000..692ed8c --- /dev/null +++ b/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.scss @@ -0,0 +1,4 @@ +mat-form-field { + margin-right: 12px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.spec.ts b/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.spec.ts new file mode 100644 index 0000000..28aa3c5 --- /dev/null +++ b/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SelectedValueDatepickerComponent } from './selected-value-datepicker.component'; + +describe('SelectedValueDatepickerComponent', () => { + let component: SelectedValueDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SelectedValueDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SelectedValueDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.ts b/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.ts new file mode 100644 index 0000000..c81793c --- /dev/null +++ b/src/assets/examples/material/selected-value-datepicker/selected-value-datepicker.component.ts @@ -0,0 +1,17 @@ +import {Component} from '@angular/core'; +import {FormControl} from '@angular/forms'; + +@Component({ + selector: 'app-selected-value-datepicker', + templateUrl: './selected-value-datepicker.component.html', + styleUrls: ['./selected-value-datepicker.component.scss'] +}) +export class SelectedValueDatepickerComponent { + + date = new FormControl(new Date()); + serializedDate = new FormControl((new Date()).toISOString()); + + constructor() { } + + +} diff --git a/src/assets/examples/material/selection-table/selection-table.component.html b/src/assets/examples/material/selection-table/selection-table.component.html new file mode 100644 index 0000000..9bf76f1 --- /dev/null +++ b/src/assets/examples/material/selection-table/selection-table.component.html @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}}
    diff --git a/src/assets/examples/material/selection-table/selection-table.component.scss b/src/assets/examples/material/selection-table/selection-table.component.scss new file mode 100644 index 0000000..ca85107 --- /dev/null +++ b/src/assets/examples/material/selection-table/selection-table.component.scss @@ -0,0 +1,4 @@ +table { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/selection-table/selection-table.component.spec.ts b/src/assets/examples/material/selection-table/selection-table.component.spec.ts new file mode 100644 index 0000000..410b253 --- /dev/null +++ b/src/assets/examples/material/selection-table/selection-table.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SelectionTableComponent } from './selection-table.component'; + +describe('SelectionTableComponent', () => { + let component: SelectionTableComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SelectionTableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SelectionTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/selection-table/selection-table.component.ts b/src/assets/examples/material/selection-table/selection-table.component.ts new file mode 100644 index 0000000..6f8bd69 --- /dev/null +++ b/src/assets/examples/material/selection-table/selection-table.component.ts @@ -0,0 +1,58 @@ +import {SelectionModel} from '@angular/cdk/collections'; +import {Component} from '@angular/core'; +import { MatTableDataSource } from '@angular/material/table'; + +export interface PeriodicElement { + name: string; + position: number; + weight: number; + symbol: string; +} + +const ELEMENT_DATA: PeriodicElement[] = [ + {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, + {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, + {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, + {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, + {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, + {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, + {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, + {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, + {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, + {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, +]; + +@Component({ + selector: 'app-selection-table', + templateUrl: './selection-table.component.html', + styleUrls: ['./selection-table.component.scss'] +}) +export class SelectionTableComponent { + + displayedColumns: string[] = ['select', 'position', 'name', 'weight', 'symbol']; + dataSource = new MatTableDataSource(ELEMENT_DATA); + selection = new SelectionModel(true, []); + + /** Whether the number of selected elements matches the total number of rows. */ + isAllSelected() { + const numSelected = this.selection.selected.length; + const numRows = this.dataSource.data.length; + return numSelected === numRows; + } + + /** Selects all rows if they are not all selected; otherwise clear selection. */ + masterToggle() { + this.isAllSelected() ? + this.selection.clear() : + this.dataSource.data.forEach(row => this.selection.select(row)); + } + + /** The label for the checkbox on the passed row */ + checkboxLabel(row?: PeriodicElement): string { + if (!row) { + return `${this.isAllSelected() ? 'select' : 'deselect'} all`; + } + return `${this.selection.isSelected(row) ? 'deselect' : 'select'} row ${row.position + 1}`; + } + +} diff --git a/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.html b/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.html new file mode 100644 index 0000000..cfd6bdf --- /dev/null +++ b/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.html @@ -0,0 +1,10 @@ +
    + + + + + {{option}} + + + +
    diff --git a/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.scss b/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.scss new file mode 100644 index 0000000..9a473b4 --- /dev/null +++ b/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.scss @@ -0,0 +1,10 @@ +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; + } + + .example-full-width { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.spec.ts b/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.spec.ts new file mode 100644 index 0000000..59ec075 --- /dev/null +++ b/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SimpleAutocompleteComponent } from './simple-autocomplete.component'; + +describe('SimpleAutocompleteComponent', () => { + let component: SimpleAutocompleteComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SimpleAutocompleteComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SimpleAutocompleteComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.ts b/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.ts new file mode 100644 index 0000000..f5ebfaf --- /dev/null +++ b/src/assets/examples/material/simple-autocomplete/simple-autocomplete.component.ts @@ -0,0 +1,19 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; + +@Component({ + selector: 'app-simple-autocomplete', + templateUrl: './simple-autocomplete.component.html', + styleUrls: ['./simple-autocomplete.component.scss'] +}) +export class SimpleAutocompleteComponent implements OnInit { + + myControl = new FormControl(); + options: string[] = ['One', 'Two', 'Three']; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/simple-form-field/simple-form-field.component.html b/src/assets/examples/material/simple-form-field/simple-form-field.component.html new file mode 100644 index 0000000..6427e7d --- /dev/null +++ b/src/assets/examples/material/simple-form-field/simple-form-field.component.html @@ -0,0 +1,15 @@ +
    + + + + + + + + + + + Option + + +
    diff --git a/src/assets/examples/material/simple-form-field/simple-form-field.component.scss b/src/assets/examples/material/simple-form-field/simple-form-field.component.scss new file mode 100644 index 0000000..621f9a7 --- /dev/null +++ b/src/assets/examples/material/simple-form-field/simple-form-field.component.scss @@ -0,0 +1,9 @@ +.example-container { + display: flex; + flex-direction: column; + } + + .example-container > * { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/simple-form-field/simple-form-field.component.spec.ts b/src/assets/examples/material/simple-form-field/simple-form-field.component.spec.ts new file mode 100644 index 0000000..42aab4c --- /dev/null +++ b/src/assets/examples/material/simple-form-field/simple-form-field.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SimpleFormFieldComponent } from './simple-form-field.component'; + +describe('SimpleFormFieldComponent', () => { + let component: SimpleFormFieldComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SimpleFormFieldComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SimpleFormFieldComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/simple-form-field/simple-form-field.component.ts b/src/assets/examples/material/simple-form-field/simple-form-field.component.ts new file mode 100644 index 0000000..857dee7 --- /dev/null +++ b/src/assets/examples/material/simple-form-field/simple-form-field.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-simple-form-field', + templateUrl: './simple-form-field.component.html', + styleUrls: ['./simple-form-field.component.scss'] +}) +export class SimpleFormFieldComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/slider/slider.component.html b/src/assets/examples/material/slider/slider.component.html new file mode 100644 index 0000000..8f3544a --- /dev/null +++ b/src/assets/examples/material/slider/slider.component.html @@ -0,0 +1,63 @@ + + +

    Slider configuration

    + +
    + + + + + + + + + + + + +
    + +
    + Show ticks + + Auto ticks + + + + +
    + +
    + Show thumb label +
    + +
    + Vertical + Inverted +
    + +
    + Disabled +
    + +
    +
    + + + +

    Result

    + + + +
    +
    diff --git a/src/assets/examples/material/slider/slider.component.scss b/src/assets/examples/material/slider/slider.component.scss new file mode 100644 index 0000000..cb7c641 --- /dev/null +++ b/src/assets/examples/material/slider/slider.component.scss @@ -0,0 +1,23 @@ +.example-h2 { + margin: 10px; + } + + .example-section { + display: flex; + align-content: center; + align-items: center; + height: 60px; + } + + .example-margin { + margin: 10px; + } + + .mat-slider-horizontal { + width: 300px; + } + + .mat-slider-vertical { + height: 300px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/slider/slider.component.spec.ts b/src/assets/examples/material/slider/slider.component.spec.ts new file mode 100644 index 0000000..3c3e069 --- /dev/null +++ b/src/assets/examples/material/slider/slider.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SliderComponent } from './slider.component'; + +describe('SliderComponent', () => { + let component: SliderComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SliderComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SliderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/slider/slider.component.ts b/src/assets/examples/material/slider/slider.component.ts new file mode 100644 index 0000000..d03fbcb --- /dev/null +++ b/src/assets/examples/material/slider/slider.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from '@angular/core'; +import {coerceNumberProperty} from '@angular/cdk/coercion'; + +@Component({ + selector: 'app-slider', + templateUrl: './slider.component.html', + styleUrls: ['./slider.component.scss'] +}) +export class SliderComponent implements OnInit { + + autoTicks = false; + disabled = false; + invert = false; + max = 100; + min = 0; + showTicks = false; + step = 1; + thumbLabel = false; + value = 0; + vertical = false; + + get tickInterval(): number | 'auto' { + return this.showTicks ? (this.autoTicks ? 'auto' : this._tickInterval) : 0; + } + set tickInterval(value) { + this._tickInterval = coerceNumberProperty(value); + } + private _tickInterval = 1; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/sorting-table/sorting-table.component.html b/src/assets/examples/material/sorting-table/sorting-table.component.html new file mode 100644 index 0000000..977bed0 --- /dev/null +++ b/src/assets/examples/material/sorting-table/sorting-table.component.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}}
    diff --git a/src/assets/examples/material/sorting-table/sorting-table.component.scss b/src/assets/examples/material/sorting-table/sorting-table.component.scss new file mode 100644 index 0000000..20f3b6e --- /dev/null +++ b/src/assets/examples/material/sorting-table/sorting-table.component.scss @@ -0,0 +1,8 @@ +table { + width: 100%; + } + + th.mat-sort-header-sorted { + color: black; + } + \ No newline at end of file diff --git a/src/assets/examples/material/sorting-table/sorting-table.component.spec.ts b/src/assets/examples/material/sorting-table/sorting-table.component.spec.ts new file mode 100644 index 0000000..c3cdf65 --- /dev/null +++ b/src/assets/examples/material/sorting-table/sorting-table.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SortingTableComponent } from './sorting-table.component'; + +describe('SortingTableComponent', () => { + let component: SortingTableComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SortingTableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SortingTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/sorting-table/sorting-table.component.ts b/src/assets/examples/material/sorting-table/sorting-table.component.ts new file mode 100644 index 0000000..22f382e --- /dev/null +++ b/src/assets/examples/material/sorting-table/sorting-table.component.ts @@ -0,0 +1,41 @@ +import {Component, OnInit, ViewChild} from '@angular/core'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; + +export interface PeriodicElement { + name: string; + position: number; + weight: number; + symbol: string; +} + +const ELEMENT_DATA: PeriodicElement[] = [ + {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, + {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, + {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, + {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, + {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, + {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, + {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, + {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, + {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, + {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, +]; + +@Component({ + selector: 'app-sorting-table', + templateUrl: './sorting-table.component.html', + styleUrls: ['./sorting-table.component.scss'] +}) +export class SortingTableComponent implements OnInit { + + displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; + dataSource = new MatTableDataSource(ELEMENT_DATA); + + @ViewChild(MatSort) sort: MatSort; + + ngOnInit() { + this.dataSource.sort = this.sort; + } + +} diff --git a/src/assets/examples/material/stacked-chip/stacked-chip.component.html b/src/assets/examples/material/stacked-chip/stacked-chip.component.html new file mode 100644 index 0000000..be85e43 --- /dev/null +++ b/src/assets/examples/material/stacked-chip/stacked-chip.component.html @@ -0,0 +1,6 @@ + + + {{chip.name}} + + + \ No newline at end of file diff --git a/src/assets/examples/material/stacked-chip/stacked-chip.component.scss b/src/assets/examples/material/stacked-chip/stacked-chip.component.scss new file mode 100644 index 0000000..63548be --- /dev/null +++ b/src/assets/examples/material/stacked-chip/stacked-chip.component.scss @@ -0,0 +1,4 @@ +mat-chip { + max-width: 200px; + } + \ No newline at end of file diff --git a/src/assets/examples/material/stacked-chip/stacked-chip.component.spec.ts b/src/assets/examples/material/stacked-chip/stacked-chip.component.spec.ts new file mode 100644 index 0000000..2511fa6 --- /dev/null +++ b/src/assets/examples/material/stacked-chip/stacked-chip.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StackedChipComponent } from './stacked-chip.component'; + +describe('StackedChipComponent', () => { + let component: StackedChipComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ StackedChipComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StackedChipComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/stacked-chip/stacked-chip.component.ts b/src/assets/examples/material/stacked-chip/stacked-chip.component.ts new file mode 100644 index 0000000..e20c94c --- /dev/null +++ b/src/assets/examples/material/stacked-chip/stacked-chip.component.ts @@ -0,0 +1,23 @@ +import {Component} from '@angular/core'; +import {ThemePalette} from '@angular/material/core'; + +export interface ChipColor { + name: string; + color: ThemePalette; +} + +@Component({ + selector: 'app-stacked-chip', + templateUrl: './stacked-chip.component.html', + styleUrls: ['./stacked-chip.component.scss'] +}) +export class StackedChipComponent{ + + availableColors: ChipColor[] = [ + {name: 'none', color: undefined}, + {name: 'Primary', color: 'primary'}, + {name: 'Accent', color: 'accent'}, + {name: 'Warn', color: 'warn'} + ]; + +} diff --git a/src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.html b/src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.html new file mode 100644 index 0000000..e10afca --- /dev/null +++ b/src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.scss b/src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.spec.ts b/src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.spec.ts new file mode 100644 index 0000000..2f4825a --- /dev/null +++ b/src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StartDateDatepickerComponent } from './start-date-datepicker.component'; + +describe('StartDateDatepickerComponent', () => { + let component: StartDateDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ StartDateDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StartDateDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.ts b/src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.ts new file mode 100644 index 0000000..16f4307 --- /dev/null +++ b/src/assets/examples/material/start-date-datepicker/start-date-datepicker.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-start-date-datepicker', + templateUrl: './start-date-datepicker.component.html', + styleUrls: ['./start-date-datepicker.component.scss'] +}) +export class StartDateDatepickerComponent implements OnInit { + + startDate = new Date(1990, 0, 1); + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/sticky-column-table/sticky-column-table.component.html b/src/assets/examples/material/sticky-column-table/sticky-column-table.component.html new file mode 100644 index 0000000..73b460f --- /dev/null +++ b/src/assets/examples/material/sticky-column-table/sticky-column-table.component.html @@ -0,0 +1,39 @@ +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Name {{element.name}} No. {{element.position}} Weight {{element.weight}} Symbol {{element.symbol}} + more_vert +
    +
    diff --git a/src/assets/examples/material/sticky-column-table/sticky-column-table.component.scss b/src/assets/examples/material/sticky-column-table/sticky-column-table.component.scss new file mode 100644 index 0000000..e8559e7 --- /dev/null +++ b/src/assets/examples/material/sticky-column-table/sticky-column-table.component.scss @@ -0,0 +1,27 @@ +.example-container { + height: 400px; + width: 550px; + overflow: auto; + } + + table { + width: 800px; + } + + td.mat-column-star { + width: 20px; + padding-right: 8px; + } + + th.mat-column-position, td.mat-column-position { + padding-left: 8px; + } + + .mat-table-sticky:first-child { + border-right: 1px solid #e0e0e0; + } + + .mat-table-sticky:last-child { + border-left: 1px solid #e0e0e0; + } + \ No newline at end of file diff --git a/src/assets/examples/material/sticky-column-table/sticky-column-table.component.spec.ts b/src/assets/examples/material/sticky-column-table/sticky-column-table.component.spec.ts new file mode 100644 index 0000000..c1340f3 --- /dev/null +++ b/src/assets/examples/material/sticky-column-table/sticky-column-table.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StickyColumnTableComponent } from './sticky-column-table.component'; + +describe('StickyColumnTableComponent', () => { + let component: StickyColumnTableComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ StickyColumnTableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StickyColumnTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/sticky-column-table/sticky-column-table.component.ts b/src/assets/examples/material/sticky-column-table/sticky-column-table.component.ts new file mode 100644 index 0000000..adfeaa1 --- /dev/null +++ b/src/assets/examples/material/sticky-column-table/sticky-column-table.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit } from "@angular/core"; + +export interface PeriodicElement { + name: string; + position: number; + weight: number; + symbol: string; +} + +const ELEMENT_DATA: PeriodicElement[] = [ + { position: 1, name: "Hydrogen", weight: 1.0079, symbol: "H" }, + { position: 2, name: "Helium", weight: 4.0026, symbol: "He" }, + { position: 3, name: "Lithium", weight: 6.941, symbol: "Li" }, + { position: 4, name: "Beryllium", weight: 9.0122, symbol: "Be" }, + { position: 5, name: "Boron", weight: 10.811, symbol: "B" }, + { position: 6, name: "Carbon", weight: 12.0107, symbol: "C" }, + { position: 7, name: "Nitrogen", weight: 14.0067, symbol: "N" }, + { position: 8, name: "Oxygen", weight: 15.9994, symbol: "O" }, + { position: 9, name: "Fluorine", weight: 18.9984, symbol: "F" }, + { position: 10, name: "Neon", weight: 20.1797, symbol: "Ne" } +]; + +@Component({ + selector: "app-sticky-column-table", + templateUrl: "./sticky-column-table.component.html", + styleUrls: ["./sticky-column-table.component.scss"] +}) +export class StickyColumnTableComponent implements OnInit { + displayedColumns = [ + "name", + "position", + "weight", + "symbol", + "position", + "weight", + "symbol", + "star" + ]; + dataSource = ELEMENT_DATA; + + constructor() {} + + ngOnInit() {} +} diff --git a/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.html b/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.html new file mode 100644 index 0000000..c8c7557 --- /dev/null +++ b/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.html @@ -0,0 +1,21 @@ +
    + + + + + + + + + + + + + + + + + + +
    Item {{transaction.item}} Total Cost {{transaction.cost | currency}} {{getTotalCost() | currency}}
    +
    diff --git a/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.scss b/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.scss new file mode 100644 index 0000000..dd960d8 --- /dev/null +++ b/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.scss @@ -0,0 +1,17 @@ +.example-container { + height: 270px; + overflow: auto; + } + + table { + width: 100%; + } + + tr.mat-footer-row { + font-weight: bold; + } + + .mat-table-sticky { + border-top: 1px solid #e0e0e0; + } + \ No newline at end of file diff --git a/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.spec.ts b/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.spec.ts new file mode 100644 index 0000000..063ac40 --- /dev/null +++ b/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StickyFooterTableComponent } from './sticky-footer-table.component'; + +describe('StickyFooterTableComponent', () => { + let component: StickyFooterTableComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ StickyFooterTableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StickyFooterTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.ts b/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.ts new file mode 100644 index 0000000..8a2f3cc --- /dev/null +++ b/src/assets/examples/material/sticky-footer-table/sticky-footer-table.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from '@angular/core'; + +export interface Transaction { + item: string; + cost: number; +} + +@Component({ + selector: 'app-sticky-footer-table', + templateUrl: './sticky-footer-table.component.html', + styleUrls: ['./sticky-footer-table.component.scss'] +}) +export class StickyFooterTableComponent implements OnInit { + + displayedColumns = ['item', 'cost']; + transactions: Transaction[] = [ + {item: 'Beach ball', cost: 4}, + {item: 'Towel', cost: 5}, + {item: 'Frisbee', cost: 2}, + {item: 'Sunscreen', cost: 4}, + {item: 'Cooler', cost: 25}, + {item: 'Swim suit', cost: 15}, + ]; + + /** Gets the total cost of all transactions. */ + getTotalCost() { + return this.transactions.map(t => t.cost).reduce((acc, value) => acc + value, 0); + } + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/sticky-header-table/sticky-header-table.component.html b/src/assets/examples/material/sticky-header-table/sticky-header-table.component.html new file mode 100644 index 0000000..ccf93e2 --- /dev/null +++ b/src/assets/examples/material/sticky-header-table/sticky-header-table.component.html @@ -0,0 +1,31 @@ +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}}
    +
    \ No newline at end of file diff --git a/src/assets/examples/material/sticky-header-table/sticky-header-table.component.scss b/src/assets/examples/material/sticky-header-table/sticky-header-table.component.scss new file mode 100644 index 0000000..ad125b6 --- /dev/null +++ b/src/assets/examples/material/sticky-header-table/sticky-header-table.component.scss @@ -0,0 +1,9 @@ +.example-container { + height: 400px; + overflow: auto; + } + + table { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/sticky-header-table/sticky-header-table.component.spec.ts b/src/assets/examples/material/sticky-header-table/sticky-header-table.component.spec.ts new file mode 100644 index 0000000..0f52a89 --- /dev/null +++ b/src/assets/examples/material/sticky-header-table/sticky-header-table.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StickyHeaderTableComponent } from './sticky-header-table.component'; + +describe('StickyHeaderTableComponent', () => { + let component: StickyHeaderTableComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ StickyHeaderTableComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(StickyHeaderTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/sticky-header-table/sticky-header-table.component.ts b/src/assets/examples/material/sticky-header-table/sticky-header-table.component.ts new file mode 100644 index 0000000..709a9c4 --- /dev/null +++ b/src/assets/examples/material/sticky-header-table/sticky-header-table.component.ts @@ -0,0 +1,38 @@ +import { Component, OnInit } from '@angular/core'; + +export interface PeriodicElement { + name: string; + position: number; + weight: number; + symbol: string; +} + +const ELEMENT_DATA: PeriodicElement[] = [ + {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, + {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, + {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, + {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, + {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, + {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, + {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, + {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, + {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, + {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, +]; + +@Component({ + selector: 'app-sticky-header-table', + templateUrl: './sticky-header-table.component.html', + styleUrls: ['./sticky-header-table.component.scss'] +}) +export class StickyHeaderTableComponent implements OnInit { + + displayedColumns = ['position', 'name', 'weight', 'symbol']; + dataSource = ELEMENT_DATA; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.html b/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.html new file mode 100644 index 0000000..7bff7e4 --- /dev/null +++ b/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.html @@ -0,0 +1,9 @@ +
    + + + +1   + + mode_edit + + +
    diff --git a/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.scss b/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.scss new file mode 100644 index 0000000..9a473b4 --- /dev/null +++ b/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.scss @@ -0,0 +1,10 @@ +.example-form { + min-width: 150px; + max-width: 500px; + width: 100%; + } + + .example-full-width { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.spec.ts b/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.spec.ts new file mode 100644 index 0000000..3f51751 --- /dev/null +++ b/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SuffixPrefixInputComponent } from './suffix-prefix-input.component'; + +describe('SuffixPrefixInputComponent', () => { + let component: SuffixPrefixInputComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SuffixPrefixInputComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SuffixPrefixInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.ts b/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.ts new file mode 100644 index 0000000..c385f11 --- /dev/null +++ b/src/assets/examples/material/suffix-prefix-input/suffix-prefix-input.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-suffix-prefix-input', + templateUrl: './suffix-prefix-input.component.html', + styleUrls: ['./suffix-prefix-input.component.scss'] +}) +export class SuffixPrefixInputComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/svg-icon/svg-icon.component.html b/src/assets/examples/material/svg-icon/svg-icon.component.html new file mode 100644 index 0000000..1559771 --- /dev/null +++ b/src/assets/examples/material/svg-icon/svg-icon.component.html @@ -0,0 +1 @@ + diff --git a/src/assets/examples/material/svg-icon/svg-icon.component.scss b/src/assets/examples/material/svg-icon/svg-icon.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/svg-icon/svg-icon.component.spec.ts b/src/assets/examples/material/svg-icon/svg-icon.component.spec.ts new file mode 100644 index 0000000..768ee2b --- /dev/null +++ b/src/assets/examples/material/svg-icon/svg-icon.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SvgIconComponent } from './svg-icon.component'; + +describe('SvgIconComponent', () => { + let component: SvgIconComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SvgIconComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SvgIconComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/svg-icon/svg-icon.component.ts b/src/assets/examples/material/svg-icon/svg-icon.component.ts new file mode 100644 index 0000000..e332927 --- /dev/null +++ b/src/assets/examples/material/svg-icon/svg-icon.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +import {DomSanitizer} from '@angular/platform-browser'; +import { MatIconRegistry } from '@angular/material/icon'; + +@Component({ + selector: 'app-svg-icon', + templateUrl: './svg-icon.component.html', + styleUrls: ['./svg-icon.component.scss'] +}) +export class SvgIconComponent implements OnInit { + + constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer) { + iconRegistry.addSvgIcon( + 'thumbs-up', + sanitizer.bypassSecurityTrustResourceUrl('./assets/images/svgIconExample.svg')); + } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/table-sorting/table-sorting.component.html b/src/assets/examples/material/table-sorting/table-sorting.component.html new file mode 100644 index 0000000..977bed0 --- /dev/null +++ b/src/assets/examples/material/table-sorting/table-sorting.component.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}}
    diff --git a/src/assets/examples/material/table-sorting/table-sorting.component.scss b/src/assets/examples/material/table-sorting/table-sorting.component.scss new file mode 100644 index 0000000..20f3b6e --- /dev/null +++ b/src/assets/examples/material/table-sorting/table-sorting.component.scss @@ -0,0 +1,8 @@ +table { + width: 100%; + } + + th.mat-sort-header-sorted { + color: black; + } + \ No newline at end of file diff --git a/src/assets/examples/material/table-sorting/table-sorting.component.spec.ts b/src/assets/examples/material/table-sorting/table-sorting.component.spec.ts new file mode 100644 index 0000000..8cf153f --- /dev/null +++ b/src/assets/examples/material/table-sorting/table-sorting.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TableSortingComponent } from './table-sorting.component'; + +describe('TableSortingComponent', () => { + let component: TableSortingComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TableSortingComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TableSortingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/table-sorting/table-sorting.component.ts b/src/assets/examples/material/table-sorting/table-sorting.component.ts new file mode 100644 index 0000000..8ecb9be --- /dev/null +++ b/src/assets/examples/material/table-sorting/table-sorting.component.ts @@ -0,0 +1,41 @@ +import {Component, OnInit, ViewChild} from '@angular/core'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; + +export interface PeriodicElement { + name: string; + position: number; + weight: number; + symbol: string; +} + +const ELEMENT_DATA: PeriodicElement[] = [ + {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, + {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, + {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, + {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, + {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, + {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, + {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, + {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, + {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, + {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, +]; + +@Component({ + selector: 'app-table-sorting', + templateUrl: './table-sorting.component.html', + styleUrls: ['./table-sorting.component.scss'] +}) +export class TableSortingComponent implements OnInit { + + displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; + dataSource = new MatTableDataSource(ELEMENT_DATA); + + @ViewChild(MatSort) sort: MatSort; + + ngOnInit() { + this.dataSource.sort = this.sort; + } + +} diff --git a/src/assets/examples/material/theming-form-field/theming-form-field.component.html b/src/assets/examples/material/theming-form-field/theming-form-field.component.html new file mode 100644 index 0000000..5c61418 --- /dev/null +++ b/src/assets/examples/material/theming-form-field/theming-form-field.component.html @@ -0,0 +1,14 @@ +
    + + + Primary + Accent + Warn + + + + + + Min size: 10px + +
    diff --git a/src/assets/examples/material/theming-form-field/theming-form-field.component.scss b/src/assets/examples/material/theming-form-field/theming-form-field.component.scss new file mode 100644 index 0000000..621f9a7 --- /dev/null +++ b/src/assets/examples/material/theming-form-field/theming-form-field.component.scss @@ -0,0 +1,9 @@ +.example-container { + display: flex; + flex-direction: column; + } + + .example-container > * { + width: 100%; + } + \ No newline at end of file diff --git a/src/assets/examples/material/theming-form-field/theming-form-field.component.spec.ts b/src/assets/examples/material/theming-form-field/theming-form-field.component.spec.ts new file mode 100644 index 0000000..111dd6d --- /dev/null +++ b/src/assets/examples/material/theming-form-field/theming-form-field.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ThemingFormFieldComponent } from './theming-form-field.component'; + +describe('ThemingFormFieldComponent', () => { + let component: ThemingFormFieldComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ThemingFormFieldComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ThemingFormFieldComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/theming-form-field/theming-form-field.component.ts b/src/assets/examples/material/theming-form-field/theming-form-field.component.ts new file mode 100644 index 0000000..6521ebc --- /dev/null +++ b/src/assets/examples/material/theming-form-field/theming-form-field.component.ts @@ -0,0 +1,27 @@ +import { Component, OnInit } from '@angular/core'; +import {FormBuilder, FormGroup, Validators} from '@angular/forms'; + +@Component({ + selector: 'app-theming-form-field', + templateUrl: './theming-form-field.component.html', + styleUrls: ['./theming-form-field.component.scss'] +}) +export class ThemingFormFieldComponent implements OnInit { + + options: FormGroup; + + constructor(fb: FormBuilder) { + this.options = fb.group({ + color: 'primary', + fontSize: [16, Validators.min(10)], + }); + } + + getFontSize() { + return Math.max(10, this.options.value.fontSize); + } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/touch-datepicker/touch-datepicker.component.html b/src/assets/examples/material/touch-datepicker/touch-datepicker.component.html new file mode 100644 index 0000000..70a7e61 --- /dev/null +++ b/src/assets/examples/material/touch-datepicker/touch-datepicker.component.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/examples/material/touch-datepicker/touch-datepicker.component.scss b/src/assets/examples/material/touch-datepicker/touch-datepicker.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/touch-datepicker/touch-datepicker.component.spec.ts b/src/assets/examples/material/touch-datepicker/touch-datepicker.component.spec.ts new file mode 100644 index 0000000..7ba021a --- /dev/null +++ b/src/assets/examples/material/touch-datepicker/touch-datepicker.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TouchDatepickerComponent } from './touch-datepicker.component'; + +describe('TouchDatepickerComponent', () => { + let component: TouchDatepickerComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TouchDatepickerComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TouchDatepickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/touch-datepicker/touch-datepicker.component.ts b/src/assets/examples/material/touch-datepicker/touch-datepicker.component.ts new file mode 100644 index 0000000..d525de9 --- /dev/null +++ b/src/assets/examples/material/touch-datepicker/touch-datepicker.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-touch-datepicker', + templateUrl: './touch-datepicker.component.html', + styleUrls: ['./touch-datepicker.component.scss'] +}) +export class TouchDatepickerComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/trigger-select/trigger-select.component.html b/src/assets/examples/material/trigger-select/trigger-select.component.html new file mode 100644 index 0000000..9c6f896 --- /dev/null +++ b/src/assets/examples/material/trigger-select/trigger-select.component.html @@ -0,0 +1,11 @@ + + + + {{toppings.value ? toppings.value[0] : ''}} + + (+{{toppings.value.length - 1}} {{toppings.value?.length === 2 ? 'other' : 'others'}}) + + + {{topping}} + + diff --git a/src/assets/examples/material/trigger-select/trigger-select.component.scss b/src/assets/examples/material/trigger-select/trigger-select.component.scss new file mode 100644 index 0000000..19ed971 --- /dev/null +++ b/src/assets/examples/material/trigger-select/trigger-select.component.scss @@ -0,0 +1,5 @@ +.example-additional-selection { + opacity: 0.75; + font-size: 0.75em; + } + \ No newline at end of file diff --git a/src/assets/examples/material/trigger-select/trigger-select.component.spec.ts b/src/assets/examples/material/trigger-select/trigger-select.component.spec.ts new file mode 100644 index 0000000..4211f8b --- /dev/null +++ b/src/assets/examples/material/trigger-select/trigger-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TriggerSelectComponent } from './trigger-select.component'; + +describe('TriggerSelectComponent', () => { + let component: TriggerSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TriggerSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TriggerSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/trigger-select/trigger-select.component.ts b/src/assets/examples/material/trigger-select/trigger-select.component.ts new file mode 100644 index 0000000..86062fa --- /dev/null +++ b/src/assets/examples/material/trigger-select/trigger-select.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit } from '@angular/core'; +import {FormControl} from '@angular/forms'; + +@Component({ + selector: 'app-trigger-select', + templateUrl: './trigger-select.component.html', + styleUrls: ['./trigger-select.component.scss'] +}) +export class TriggerSelectComponent implements OnInit { + + toppings = new FormControl(); + + toppingList: string[] = ['Extra cheese', 'Mushroom', 'Onion', 'Pepperoni', 'Sausage', 'Tomato']; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/two-sidenav/two-sidenav.component.html b/src/assets/examples/material/two-sidenav/two-sidenav.component.html new file mode 100644 index 0000000..308ac10 --- /dev/null +++ b/src/assets/examples/material/two-sidenav/two-sidenav.component.html @@ -0,0 +1,5 @@ + + Start content + End content + Implicit main content + diff --git a/src/assets/examples/material/two-sidenav/two-sidenav.component.scss b/src/assets/examples/material/two-sidenav/two-sidenav.component.scss new file mode 100644 index 0000000..afacdb8 --- /dev/null +++ b/src/assets/examples/material/two-sidenav/two-sidenav.component.scss @@ -0,0 +1,8 @@ +.example-container { + // position: absolute; + // top: 0; + // bottom: 0; + // left: 0; + // right: 0; + } + \ No newline at end of file diff --git a/src/assets/examples/material/two-sidenav/two-sidenav.component.spec.ts b/src/assets/examples/material/two-sidenav/two-sidenav.component.spec.ts new file mode 100644 index 0000000..b457aba --- /dev/null +++ b/src/assets/examples/material/two-sidenav/two-sidenav.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TwoSidenavComponent } from './two-sidenav.component'; + +describe('TwoSidenavComponent', () => { + let component: TwoSidenavComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TwoSidenavComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TwoSidenavComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/two-sidenav/two-sidenav.component.ts b/src/assets/examples/material/two-sidenav/two-sidenav.component.ts new file mode 100644 index 0000000..965e4ad --- /dev/null +++ b/src/assets/examples/material/two-sidenav/two-sidenav.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-two-sidenav', + templateUrl: './two-sidenav.component.html', + styleUrls: ['./two-sidenav.component.scss'] +}) +export class TwoSidenavComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.html b/src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.html new file mode 100644 index 0000000..f8d0566 --- /dev/null +++ b/src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.html @@ -0,0 +1,14 @@ +

    + two-way-binding-select works! +

    + + Select an option + + None + Option 1 + Option 2 + Option 3 + + + +

    You selected: {{selected}}

    diff --git a/src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.scss b/src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.spec.ts b/src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.spec.ts new file mode 100644 index 0000000..748e99b --- /dev/null +++ b/src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TwoWayBindingSelectComponent } from './two-way-binding-select.component'; + +describe('TwoWayBindingSelectComponent', () => { + let component: TwoWayBindingSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TwoWayBindingSelectComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TwoWayBindingSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.ts b/src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.ts new file mode 100644 index 0000000..4426b21 --- /dev/null +++ b/src/assets/examples/material/two-way-binding-select/two-way-binding-select.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-two-way-binding-select', + templateUrl: './two-way-binding-select.component.html', + styleUrls: ['./two-way-binding-select.component.scss'] +}) +export class TwoWayBindingSelectComponent implements OnInit { + + selected = 'option2'; + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/assets/examples/material/vertical-stepper/vertical-stepper.component.html b/src/assets/examples/material/vertical-stepper/vertical-stepper.component.html new file mode 100644 index 0000000..422e28d --- /dev/null +++ b/src/assets/examples/material/vertical-stepper/vertical-stepper.component.html @@ -0,0 +1,36 @@ + + + +
    + Fill out your name + + + +
    + +
    +
    +
    + +
    + Fill out your address + + + +
    + + +
    +
    +
    + + Done + You are now done. +
    + + +
    +
    +
    diff --git a/src/assets/examples/material/vertical-stepper/vertical-stepper.component.scss b/src/assets/examples/material/vertical-stepper/vertical-stepper.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/examples/material/vertical-stepper/vertical-stepper.component.spec.ts b/src/assets/examples/material/vertical-stepper/vertical-stepper.component.spec.ts new file mode 100644 index 0000000..9ecce5e --- /dev/null +++ b/src/assets/examples/material/vertical-stepper/vertical-stepper.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { VerticalStepperComponent } from './vertical-stepper.component'; + +describe('VerticalStepperComponent', () => { + let component: VerticalStepperComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ VerticalStepperComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(VerticalStepperComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/examples/material/vertical-stepper/vertical-stepper.component.ts b/src/assets/examples/material/vertical-stepper/vertical-stepper.component.ts new file mode 100644 index 0000000..cd9c162 --- /dev/null +++ b/src/assets/examples/material/vertical-stepper/vertical-stepper.component.ts @@ -0,0 +1,26 @@ +import {Component, OnInit} from '@angular/core'; +import {FormBuilder, FormGroup, Validators} from '@angular/forms'; + +@Component({ + selector: 'app-vertical-stepper', + templateUrl: './vertical-stepper.component.html', + styleUrls: ['./vertical-stepper.component.scss'] +}) +export class VerticalStepperComponent implements OnInit { + + isLinear = false; + firstFormGroup: FormGroup; + secondFormGroup: FormGroup; + + constructor(private _formBuilder: FormBuilder) {} + + ngOnInit() { + this.firstFormGroup = this._formBuilder.group({ + firstCtrl: ['', Validators.required] + }); + this.secondFormGroup = this._formBuilder.group({ + secondCtrl: ['', Validators.required] + }); + } + +} diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json new file mode 100644 index 0000000..5e3b601 --- /dev/null +++ b/src/assets/i18n/en.json @@ -0,0 +1,78 @@ +{ + "DASHBOARD": "Dashboard", + "APPS": "Apps", + "INBOX": "Inbox", + "CHAT": "Chat", + "CALENDAR": "Calendar", + "DIALOGS": "Dialogs", + "CONFIRM": "Confirm", + "LOADER": "Loader", + + "MATERIAL": "Material", + "BUTTONS": "Buttons", + "CARDS": "Cards", + "SELECT": "Select", + "AUTOCOMPLETE": "Autocomplete", + "INPUT": "Input", + "CHECKBOX": "Checkbox", + "DATEPICKER": "Datepicker", + "RADIO": "Radio", + "TOOLBAR": "Toolbar", + "LISTS": "Lists", + "GRIDS": "Grids", + "PROGRESS": "Progress", + "TABS": "Tabs", + "SWITCH": "Switch", + "TOOLTIP": "Tooltip", + "MENU": "Menu", + "MEMBER": "Member", + "SAVE": "Save", + "SLIDER": "Slider", + "SNACKBAR": "Snackbar", + + "FORMS": "Forms", + "EDITOR": "Editor", + "BASIC": "Basic", + "UPLOAD": "Upload", + "WIZARD": "Wizard", + + "TABLES": "Tables", + "TOUR": "Tour", + "FULLSCREEN": "Fullscreen", + "PAGING": "Paging", + "FILTER": "Filter", + + "MAP": "Map", + "CHARTS": "Charts", + "DND": "Drag and Drop", + + "PAGES": "Pages", + "SESSIONS": "Sessions", + "SIGNIN": "Signin", + "SIGNUP": "Signup", + "FORGOT": "Forgot", + "LOCKSCREEN": "Lockscreen", + + "OTHERS": "Others", + "GALLERY": "Gallery", + "PRICINGS": "Pricings", + "USERS": "Users", + "PROFILE": "Profile", + "BLANK": "Blank", + "MATICONS": "Material Icons", + "ADD": "Add", + "ITEM": "Item", + "SUBITEM": "Subitem", + "DOC": "Documentation", + "NOTFOUND": "Not Found", + "ERROR": "Error", + "OVERVIEW": "Overview", + "SETTINGS": "Settings", + + "ECOMMERCE": "Ecommerce", + "SHOP": "Shop", + "PRODUCTS": "Products", + "PRODUCT DETAILS": "Product Details", + "CART": "Cart", + "CHECKOUT": "Checkout" +} \ No newline at end of file diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json new file mode 100644 index 0000000..fdf0099 --- /dev/null +++ b/src/assets/i18n/es.json @@ -0,0 +1,78 @@ +{ + "DASHBOARD": "Tablero", + "APPS": "Apps", + "INBOX": "Mensaje", + "CHAT": "Charla", + "CALENDAR": "Calendario", + "DIALOGS": "Diálogo", + "CONFIRM": "Confirmar", + "LOADER": "Loader", + + "MEMBER": "Miembro", + "MATERIAL": "Material", + "BUTTONS": "Botones", + "CARDS": "Tarjeta", + "SELECT": "Seleccionar", + "AUTOCOMPLETE": "Autocomplete", + "INPUT": "Entrada", + "CHECKBOX": "Checkbox", + "DATEPICKER": "Datepicker", + "RADIO": "Radio", + "TOOLBAR": "Toolbar", + "LISTS": "lista", + "GRIDS": "Grids", + "PROGRESS": "Progreso", + "TABS": "Tabs", + "SWITCH": "Cambio", + "TOOLTIP": "Tooltip", + "MENU": "Menú", + "SAVE": "Salvar", + "SLIDER": "Slider", + "SNACKBAR": "Snackbar", + + "FORMS": "Formularios", + "EDITOR": "Editor", + "BASIC": "Sencillo", + "UPLOAD": "Upload", + "WIZARD": "paso a paso", + + "TABLES": "Mesas", + "FULLSCREEN": "Pantalla Completa", + "PAGING": "Paging", + "FILTER": "Filtrar", + + "MAP": "Mapa", + "CHARTS": "Gráfico", + "DND": "Arrastrar y soltar", + + "PAGES": "Página", + "TOUR": "Gira", + "SESSIONS": "Sesiones", + "SIGNIN": "Registrarse", + "SIGNUP": "Regístrate", + "FORGOT": "Forgot", + "LOCKSCREEN": "Lockscreen", + + "OTHERS": "Otros", + "GALLERY": "Gallery", + "PRICINGS": "Pricings", + "USERS": "Users", + "PROFILE": "Perfil", + "BLANK": "Blank", + "MATICONS": "Material Iconos", + "ADD": "Añadir", + "ITEM": "ít.", + "SUBITEM": "Subitem", + "DOC": "Documentación", + "NOTFOUND": "Perdió", + "ERROR": "Error", + "OVERVIEW": "Resumen", + "SETTINGS": "Ajustes", + + "ECOMMERCE": "Ecommerce", + "SHOP": "Shop", + "PRODUCTS": "Products", + "PRODUCT DETAILS": "Product Details", + "CART": "Cart", + "CHECKOUT": "Checkout" +} \ No newline at end of file diff --git a/src/assets/images/5-star.png b/src/assets/images/5-star.png new file mode 100644 index 0000000000000000000000000000000000000000..324a8846458c86b451bd479d72f04e4369e1e074 GIT binary patch literal 2256 zcmaJ@X;c$w77aGrfC#oQtsEwh8E6{N|mN0QI+d6Srv51L_ za_5jZQhy*x9ITQ7;i`}bp(;g47vX%ov0h3BN&o@~AFBjYB``zD#LeKXY0NRBXZXr&)p0HvR4CGaPiP{D{wzLZENkn}Ch1#&q5KNJK% zN5cpg__N;sNeoA1NC6@jfFZd|hz>5%UY|HSQ0knDVM!1I!AX!5>+e6S z8rCIBED=HJ@XA>Xhr?h?V1zFb0&Er&hq4gFViAKxb*0i-t`w3V&6P|JpwR+Zv;g-2 znuj0FpY9q+nZvRmp&SGx$Q)MmC)V|gSiK!UDVmuD$ixaj6exp0>}=Z%@t12MeUa}I zR`lgs$X~<~(PD`D;r?aVb62Q?^xMzYMGv3N4@gkQ%TQ|@f79)N!5FP!vwS0z{l5>y zrCJ9p!@Md}w}a0ETq1JBHBl^lcM{fWQL$msQpX=HuMOpRtqGe7*q>i~-fDBEOSNXO zV3&0cxgpb`V=?=%b4>#|Z=QFbW=U&A9*4Kp1XQKBJzwu?-pki2pmZpGN#ddLScO)R zP4)bsE>q(T4N7BQ`h5>xtzPug6Iz_X%}u8{s|V))>ujk><_go@+spjP4v$aPo4bGl zwV&MRoUYsL(t^EZ2i9ID#b3E=I!tgB6nUhjh7hqjkj#7G(SBrKF}69uU_${t)zu#CSG(a^1%}-Mi-eC9I_Xy9FUwU*%@CXyuKlN zKutf5xS_DxuLG7%V zKJx>b6EuNmoZ^s2Lux~7;(6OK(L0@kY1j`*9V~l?#;YV>>NSM^+Ww~M_-T$6@9Wse zQ$D9OK2y&ITYIzroqYA~A3@efzL#XhbV>%dJ(C^{)Dz`P7n*qbto5!<@#zYgI=)Oy zEVf_vE7yr;%7rQ*)1@yFCN)4AQFUDGG-K$|;-W1*_l6YN~Mw`7{#Z`kN~ zXZMk$dc~@th>POAPv7<)tD7zgHk-G!vr^m943BxezhvZOGoHcOL{psGg$lfG*R48D z>DYqs`Bkr8Ph{*j-5KM%W_;7Vu7tkfLvmw+!{v#sO|L$x<))sVkxvxtt_-dG#;D!q ze)1Td&=p6lxbuSBZ&-hIym6Ix{LBodUc%n37FVv^=X>M438jF(Z$e>UXSTk7B8|6< z&^$D-F{{~J^!nD?aYhqme)q4f)lPpO>W;$m5}Fb!IT&6sp-t^PLa}qV@Hh1+^}IV$ zd^daB>6Y?+jd7BoCC?|g<3`0EKY$zMbWU51q~=lG8I>32W*^u_7wbq$P}6tR^5^%+ zM(xbyNva$3EV#kujZ0_te&eX&)c9z)Rj++=DeuW1d|5x>5zf9IqSM4{+sZAr%-m2V z_HNX;y>Q8GSNBz1NLksZdgqZd_;tc0?a`>-ZMgKqwYuK;%nD=tg~$=-DSPL)*Dc$7 zUqdCfwnt*4%wp=p%YB*!Y4D4Zr54OW%V>yyW9xDQ$ssi9xf;UJV>bWLIfssRY`QSw z`{JHjS7__g`iCWqovtpkIasta;^=p^-YwIv|9qF_*{A#6-l96-;;4`9x?``JZ^S*h zIO2%aP{J%icRx3azK#gTe^@oWNhK|6<#Y;f9U(o#4dNw%dKU0 zdha*1RG3&d<#T`Dxx#4Pa{vAbOWsJ`2cyLp+a09En;*{X(Enqw143AJehEAO3rZ2S AZ2$lO literal 0 HcmV?d00001 diff --git a/src/assets/images/UI-Lib-dummy.svg b/src/assets/images/UI-Lib-dummy.svg new file mode 100644 index 0000000..8c7e0d2 --- /dev/null +++ b/src/assets/images/UI-Lib-dummy.svg @@ -0,0 +1,36 @@ + + + + + background + + + + + + + Layer 1 + + + + background + + + + + + + Layer 1 + + + UI-Lib + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/backgrounds/card-coffee-cup.jpg b/src/assets/images/backgrounds/card-coffee-cup.jpg new file mode 100644 index 0000000000000000000000000000000000000000..63bef18a9491696f02a57a0c8c003a37ffffc38e GIT binary patch literal 211530 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

    *9Y6zKwf5tsrBH!Dpb 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%0DeGL3Sf%S`Z0}s>*x4TOH<#wxIoEjf? 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 UqQ18A2aCPl&R%=1wbx#2x17E9-hRIN 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

    HRUq#Do0{`Hne)z!^%UNkR!mHN||$q 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/backgrounds/sea-twilight.jpg b/src/assets/images/backgrounds/sea-twilight.jpg new file mode 100644 index 0000000000000000000000000000000000000000..603af0ccdc0a80c1cd444c0c4095a2e41754261c GIT binary patch literal 273033 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

    }BACrWb>5y-T1UALuFLwD;Q0dHT= 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 n0AmxF6N~3Q0zT#~ouHO1Ww7VzJ5KNGGVtW4 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

    x2a$6Z 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�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 J)h$df{|7VZu|EI+ literal 0 HcmV?d00001 diff --git a/src/assets/images/backgrounds/trianglify-3.png b/src/assets/images/backgrounds/trianglify-3.png new file mode 100644 index 0000000000000000000000000000000000000000..17c1b759d7a194b6a87c0a7bf9fd7e7867f381ed GIT binary patch literal 136731 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

    s#vf9pwq-}v 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/backgrounds/trianglify-4.png b/src/assets/images/backgrounds/trianglify-4.png new file mode 100644 index 0000000000000000000000000000000000000000..901aebf199c59a27af0df08932f54662c1de5f07 GIT binary patch literal 141753 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�_c_ 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ⅅ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