@resolveio/client-lib-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/account-manager.service.mjs +213 -0
- package/esm2020/lib/auth/auth-guard.service.mjs +137 -0
- package/esm2020/lib/auth/auth-permissions.service.mjs +24 -0
- package/esm2020/lib/auth/auth.service.mjs +241 -0
- package/esm2020/lib/auth/auth365.component.mjs +44 -0
- package/esm2020/lib/auth/can-deactivate-guard.service.mjs +13 -0
- package/esm2020/lib/auth/enroll.component.mjs +81 -0
- package/esm2020/lib/auth/forgot-password.component.mjs +82 -0
- package/esm2020/lib/core.component.mjs +488 -0
- package/esm2020/lib/core.module.mjs +179 -0
- package/esm2020/lib/core.service.mjs +96 -0
- package/esm2020/lib/directive/focus.mjs +22 -0
- package/esm2020/lib/directive/scroll.mjs +55 -0
- package/esm2020/lib/home/about-us.component.mjs +34 -0
- package/esm2020/lib/home/contact-us.component.mjs +57 -0
- package/esm2020/lib/home/demo.component.mjs +59 -0
- package/esm2020/lib/home/home.component.mjs +105 -0
- package/esm2020/lib/home/home.module.mjs +50 -0
- package/esm2020/lib/logger/logger.component.mjs +221 -0
- package/esm2020/lib/models/app-status.model.mjs +2 -0
- package/esm2020/lib/models/collection-document.model.mjs +2 -0
- package/esm2020/lib/models/cron-job.model.mjs +2 -0
- package/esm2020/lib/models/dialog.model.mjs +2 -0
- package/esm2020/lib/models/file.model.mjs +2 -0
- package/esm2020/lib/models/log-method-latency.model.mjs +2 -0
- package/esm2020/lib/models/navbar-main-tab.model.mjs +2 -0
- package/esm2020/lib/models/pagination.model.mjs +2 -0
- package/esm2020/lib/models/permission.model.mjs +2 -0
- package/esm2020/lib/models/select-data-label.model.mjs +2 -0
- package/esm2020/lib/models/subscription.model.mjs +2 -0
- package/esm2020/lib/models/support-ticket.model.mjs +2 -0
- package/esm2020/lib/models/user-group.model.mjs +2 -0
- package/esm2020/lib/models/user.model.mjs +2 -0
- package/esm2020/lib/offline-db.mjs +519 -0
- package/esm2020/lib/offline-manager.service.mjs +107 -0
- package/esm2020/lib/pipes/domsanitizor.pipe.mjs +28 -0
- package/esm2020/lib/pipes/filter.pipe.mjs +36 -0
- package/esm2020/lib/pipes/json-parse.pipe.mjs +29 -0
- package/esm2020/lib/pipes/minus-currency.pipe.mjs +16 -0
- package/esm2020/lib/pipes/phone.pipe.mjs +47 -0
- package/esm2020/lib/pipes/pipe.module.mjs +54 -0
- package/esm2020/lib/pipes/reverse-list.pipe.mjs +17 -0
- package/esm2020/lib/pipes/titlecase.pipe.mjs +22 -0
- package/esm2020/lib/resolveio-class.mjs +41 -0
- package/esm2020/lib/shared/shared.module.mjs +91 -0
- package/esm2020/lib/socket-manager.service.mjs +360 -0
- package/esm2020/lib/socket.service.mjs +129 -0
- package/esm2020/lib/standard-pages/contactus/contactus.component.mjs +45 -0
- package/esm2020/lib/standard-pages/faq/faq.component.mjs +45 -0
- package/esm2020/lib/standard-pages/features/features.component.mjs +23 -0
- package/esm2020/lib/standard-pages/home/home.component.mjs +38 -0
- package/esm2020/lib/standard-pages/howitwork/howitwork.component.mjs +23 -0
- package/esm2020/lib/standard-pages/loginsignup/loginsignup.component.mjs +23 -0
- package/esm2020/lib/standard-pages/pricing/pricing.component.mjs +37 -0
- package/esm2020/lib/standard-pages/standard-pages.module.mjs +69 -0
- package/esm2020/lib/support-ticket/detail/support-ticket-detail.component.mjs +204 -0
- package/esm2020/lib/support-ticket/edit/support-ticket-edit.component.mjs +122 -0
- package/esm2020/lib/support-ticket/list/support-ticket-list.component.mjs +137 -0
- package/esm2020/lib/support-ticket/new/support-ticket-new.component.mjs +115 -0
- package/esm2020/lib/support-ticket/support-ticket.component.mjs +63 -0
- package/esm2020/lib/support-ticket/support-ticket.module.mjs +57 -0
- package/esm2020/lib/support-ticket/support-ticket.routing.mjs +20 -0
- package/esm2020/lib/support-ticket/support-ticket.service.mjs +17 -0
- package/esm2020/lib/token-manager.service.mjs +24 -0
- package/esm2020/lib/user-settings/settings/users-settings.component.mjs +312 -0
- package/esm2020/lib/user-settings/user-settings.component.mjs +57 -0
- package/esm2020/lib/user-settings/user-settings.module.mjs +58 -0
- package/esm2020/lib/user-settings/user-settings.permission.mjs +10 -0
- package/esm2020/lib/user-settings/user-settings.routing.mjs +14 -0
- package/esm2020/lib/user-settings/user-settings.service.mjs +17 -0
- package/esm2020/lib/util/action-name.helper.mjs +9 -0
- package/esm2020/lib/util/aws.service.mjs +79 -0
- package/esm2020/lib/util/common.helper.mjs +140 -0
- package/esm2020/lib/util/validation.service.mjs +177 -0
- package/esm2020/lib/util/window-resize.service.mjs +24 -0
- package/esm2020/lib/util/window.service.mjs +16 -0
- package/esm2020/lib/widgets/alert/alert.model.mjs +2 -0
- package/esm2020/lib/widgets/alert/alert.service.mjs +76 -0
- package/esm2020/lib/widgets/chartjs/chart.component.mjs +86 -0
- package/esm2020/lib/widgets/chartjs/chart.module.mjs +17 -0
- package/esm2020/lib/widgets/collapse-table/collapse-table.component.mjs +79 -0
- package/esm2020/lib/widgets/collapse-table/collapse-table.module.mjs +36 -0
- package/esm2020/lib/widgets/data-table/data-table.component.mjs +77 -0
- package/esm2020/lib/widgets/data-table/data-table.model.mjs +2 -0
- package/esm2020/lib/widgets/data-table/data-table.module.mjs +43 -0
- package/esm2020/lib/widgets/date-shortcut/date-shortcut.component.mjs +195 -0
- package/esm2020/lib/widgets/date-shortcut/date-shortcut.module.mjs +34 -0
- package/esm2020/lib/widgets/dialog/dialog.confirm.content.mjs +63 -0
- package/esm2020/lib/widgets/dialog/dialog.error.content.mjs +57 -0
- package/esm2020/lib/widgets/dialog/dialog.input.content.mjs +197 -0
- package/esm2020/lib/widgets/dialog/dialog.login.content.mjs +348 -0
- package/esm2020/lib/widgets/dialog/dialog.notify.content.mjs +57 -0
- package/esm2020/lib/widgets/dialog/dialog.register.content.mjs +330 -0
- package/esm2020/lib/widgets/dialog/dialog.select-data-labels.content.mjs +191 -0
- package/esm2020/lib/widgets/dialog/dialog.select-datetime.content.mjs +140 -0
- package/esm2020/lib/widgets/dialog/dialog.service.mjs +71 -0
- package/esm2020/lib/widgets/file/file-upload.component.mjs +440 -0
- package/esm2020/lib/widgets/file/file-upload.module.mjs +50 -0
- package/esm2020/lib/widgets/form-button/form-button.component.mjs +91 -0
- package/esm2020/lib/widgets/form-button/form-button.module.mjs +30 -0
- package/esm2020/lib/widgets/navbar-main/navbar-main.component.mjs +209 -0
- package/esm2020/lib/widgets/navbar-module/navbar-module.component.mjs +138 -0
- package/esm2020/lib/widgets/navbar-module/navbar-module.model.mjs +2 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.mjs +14 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.mjs +34 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.mjs +2 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.mjs +76 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.mjs +70 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.mjs +10 -0
- package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.component.mjs +38 -0
- package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.module.mjs +26 -0
- package/esm2020/lib/widgets/scheduler/scheduler.component.mjs +185 -0
- package/esm2020/lib/widgets/scheduler/scheduler.module.mjs +39 -0
- package/esm2020/lib/widgets/sort-table/sort-table-header.component.mjs +67 -0
- package/esm2020/lib/widgets/sort-table/sort-table-ngfor.component.mjs +48 -0
- package/esm2020/lib/widgets/sort-table/sort-table.directive.mjs +174 -0
- package/esm2020/lib/widgets/sort-table/sort-table.module.mjs +40 -0
- package/esm2020/lib/widgets/user-role/user-role.component.mjs +27 -0
- package/esm2020/lib/widgets/user-role/user-role.module.mjs +26 -0
- package/esm2020/public_api.mjs +109 -0
- package/esm2020/resolveio-client-lib-core.mjs +5 -0
- package/fesm2015/resolveio-client-lib-core.mjs +8856 -0
- package/fesm2015/resolveio-client-lib-core.mjs.map +1 -0
- package/fesm2020/resolveio-client-lib-core.mjs +8849 -0
- package/fesm2020/resolveio-client-lib-core.mjs.map +1 -0
- package/lib/account-manager.service.d.ts +42 -0
- package/lib/auth/auth-guard.service.d.ts +25 -0
- package/lib/auth/auth-permissions.service.d.ts +10 -0
- package/lib/auth/auth.service.d.ts +29 -0
- package/lib/auth/auth365.component.d.ts +20 -0
- package/lib/auth/can-deactivate-guard.service.d.ts +11 -0
- package/lib/auth/enroll.component.d.ts +28 -0
- package/lib/auth/forgot-password.component.d.ts +28 -0
- package/lib/core.component.d.ts +69 -0
- package/lib/core.module.d.ts +32 -0
- package/lib/core.service.d.ts +53 -0
- package/lib/directive/focus.d.ts +10 -0
- package/lib/directive/scroll.d.ts +20 -0
- package/lib/home/about-us.component.d.ts +15 -0
- package/lib/home/contact-us.component.d.ts +20 -0
- package/lib/home/demo.component.d.ts +25 -0
- package/lib/home/home.component.d.ts +33 -0
- package/lib/home/home.module.d.ts +13 -0
- package/lib/logger/logger.component.d.ts +37 -0
- package/lib/models/app-status.model.d.ts +4 -0
- package/lib/models/collection-document.model.d.ts +6 -0
- package/lib/models/cron-job.model.d.ts +13 -0
- package/lib/models/dialog.model.d.ts +18 -0
- package/lib/models/file.model.d.ts +9 -0
- package/lib/models/log-method-latency.model.d.ts +7 -0
- package/lib/models/navbar-main-tab.model.d.ts +14 -0
- package/lib/models/pagination.model.d.ts +17 -0
- package/lib/models/permission.model.d.ts +13 -0
- package/lib/models/select-data-label.model.d.ts +9 -0
- package/lib/models/subscription.model.d.ts +19 -0
- package/lib/models/support-ticket.model.d.ts +71 -0
- package/lib/models/user-group.model.d.ts +19 -0
- package/lib/models/user.model.d.ts +70 -0
- package/lib/offline-db.d.ts +28 -0
- package/lib/offline-manager.service.d.ts +23 -0
- package/lib/pipes/domsanitizor.pipe.d.ts +10 -0
- package/lib/pipes/filter.pipe.d.ts +12 -0
- package/lib/pipes/json-parse.pipe.d.ts +7 -0
- package/lib/pipes/minus-currency.pipe.d.ts +7 -0
- package/lib/pipes/phone.pipe.d.ts +7 -0
- package/lib/pipes/pipe.module.d.ts +13 -0
- package/lib/pipes/reverse-list.pipe.d.ts +6 -0
- package/lib/pipes/titlecase.pipe.d.ts +7 -0
- package/lib/resolveio-class.d.ts +26 -0
- package/lib/shared/shared.module.d.ts +16 -0
- package/lib/socket-manager.service.d.ts +33 -0
- package/lib/socket.service.d.ts +33 -0
- package/lib/standard-pages/contactus/contactus.component.d.ts +17 -0
- package/lib/standard-pages/faq/faq.component.d.ts +17 -0
- package/lib/standard-pages/features/features.component.d.ts +12 -0
- package/lib/standard-pages/home/home.component.d.ts +14 -0
- package/lib/standard-pages/howitwork/howitwork.component.d.ts +12 -0
- package/lib/standard-pages/loginsignup/loginsignup.component.d.ts +12 -0
- package/lib/standard-pages/pricing/pricing.component.d.ts +14 -0
- package/lib/standard-pages/standard-pages.module.d.ts +17 -0
- package/lib/support-ticket/detail/support-ticket-detail.component.d.ts +32 -0
- package/lib/support-ticket/edit/support-ticket-edit.component.d.ts +30 -0
- package/lib/support-ticket/list/support-ticket-list.component.d.ts +26 -0
- package/lib/support-ticket/new/support-ticket-new.component.d.ts +26 -0
- package/lib/support-ticket/support-ticket.component.d.ts +20 -0
- package/lib/support-ticket/support-ticket.module.d.ts +16 -0
- package/lib/support-ticket/support-ticket.routing.d.ts +3 -0
- package/lib/support-ticket/support-ticket.service.d.ts +9 -0
- package/lib/token-manager.service.d.ts +11 -0
- package/lib/user-settings/settings/users-settings.component.d.ts +57 -0
- package/lib/user-settings/user-settings.component.d.ts +20 -0
- package/lib/user-settings/user-settings.module.d.ts +15 -0
- package/lib/user-settings/user-settings.permission.d.ts +2 -0
- package/lib/user-settings/user-settings.routing.d.ts +3 -0
- package/lib/user-settings/user-settings.service.d.ts +9 -0
- package/lib/util/action-name.helper.d.ts +1 -0
- package/lib/util/aws.service.d.ts +16 -0
- package/lib/util/common.helper.d.ts +12 -0
- package/lib/util/validation.service.d.ts +85 -0
- package/lib/util/window-resize.service.d.ts +12 -0
- package/lib/util/window.service.d.ts +6 -0
- package/lib/widgets/alert/alert.model.d.ts +1 -0
- package/lib/widgets/alert/alert.service.d.ts +11 -0
- package/lib/widgets/chartjs/chart.component.d.ts +22 -0
- package/lib/widgets/chartjs/chart.module.d.ts +8 -0
- package/lib/widgets/collapse-table/collapse-table.component.d.ts +23 -0
- package/lib/widgets/collapse-table/collapse-table.module.d.ts +9 -0
- package/lib/widgets/data-table/data-table.component.d.ts +23 -0
- package/lib/widgets/data-table/data-table.model.d.ts +13 -0
- package/lib/widgets/data-table/data-table.module.d.ts +12 -0
- package/lib/widgets/date-shortcut/date-shortcut.component.d.ts +20 -0
- package/lib/widgets/date-shortcut/date-shortcut.module.d.ts +10 -0
- package/lib/widgets/dialog/dialog.confirm.content.d.ts +12 -0
- package/lib/widgets/dialog/dialog.error.content.d.ts +11 -0
- package/lib/widgets/dialog/dialog.input.content.d.ts +18 -0
- package/lib/widgets/dialog/dialog.login.content.d.ts +16 -0
- package/lib/widgets/dialog/dialog.notify.content.d.ts +11 -0
- package/lib/widgets/dialog/dialog.register.content.d.ts +13 -0
- package/lib/widgets/dialog/dialog.select-data-labels.content.d.ts +22 -0
- package/lib/widgets/dialog/dialog.select-datetime.content.d.ts +16 -0
- package/lib/widgets/dialog/dialog.service.d.ts +18 -0
- package/lib/widgets/file/file-upload.component.d.ts +49 -0
- package/lib/widgets/file/file-upload.module.d.ts +14 -0
- package/lib/widgets/form-button/form-button.component.d.ts +14 -0
- package/lib/widgets/form-button/form-button.module.d.ts +9 -0
- package/lib/widgets/navbar-main/navbar-main.component.d.ts +52 -0
- package/lib/widgets/navbar-module/navbar-module.component.d.ts +24 -0
- package/lib/widgets/navbar-module/navbar-module.model.d.ts +13 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.d.ts +7 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.d.ts +17 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.d.ts +5 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.d.ts +26 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.d.ts +20 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.d.ts +9 -0
- package/lib/widgets/responsive-button-group/responsive-button-group.component.d.ts +17 -0
- package/lib/widgets/responsive-button-group/responsive-button-group.module.d.ts +8 -0
- package/lib/widgets/scheduler/scheduler.component.d.ts +50 -0
- package/lib/widgets/scheduler/scheduler.module.d.ts +11 -0
- package/lib/widgets/sort-table/sort-table-header.component.d.ts +23 -0
- package/lib/widgets/sort-table/sort-table-ngfor.component.d.ts +17 -0
- package/lib/widgets/sort-table/sort-table.directive.d.ts +48 -0
- package/lib/widgets/sort-table/sort-table.module.d.ts +11 -0
- package/lib/widgets/user-role/user-role.component.d.ts +10 -0
- package/lib/widgets/user-role/user-role.module.d.ts +8 -0
- package/package.json +72 -0
- package/public_api.d.ts +105 -0
- package/resolveio-client-lib-core.d.ts +5 -0
- package/src/assets/css/font-awesome.css +2338 -0
- package/src/assets/css/home-page-layout.css +7221 -0
- package/src/assets/css/home-page-theme.css +1157 -0
- package/src/assets/css/leaflet.css +629 -0
- package/src/assets/css/owl.carousel.min.css +1 -0
- package/src/assets/css/owl.theme.min.css +1 -0
- package/src/assets/css/style.css +1283 -0
- package/src/assets/css/tablet.css +18 -0
- package/src/assets/css/toastr.css +192 -0
- package/src/assets/images/ResolveIO.png +0 -0
- package/src/assets/images/ResolveIO_white.png +0 -0
- package/src/assets/images/contactus/Contact_bnr.jpg +0 -0
- package/src/assets/images/contactus/cont-comp.png +0 -0
- package/src/assets/images/contactus/cont-mail.png +0 -0
- package/src/assets/images/contactus/cont-phone.png +0 -0
- package/src/assets/images/contactus/form-img.png +0 -0
- package/src/assets/images/contactus/user.png +0 -0
- package/src/assets/images/faq/Faq-form.png +0 -0
- package/src/assets/images/faq/clientlogo1.jpg +0 -0
- package/src/assets/images/faq/clientlogo2.jpg +0 -0
- package/src/assets/images/faq/clientlogo3.jpg +0 -0
- package/src/assets/images/faq/clientlogo4.jpg +0 -0
- package/src/assets/images/faq/clientlogo5.jpg +0 -0
- package/src/assets/images/faq/faq_banner copy.jpg +0 -0
- package/src/assets/images/faq/faq_banner.jpg +0 -0
- package/src/assets/images/faq/faqwomen.jpg +0 -0
- package/src/assets/images/faq/mail-input.png +0 -0
- package/src/assets/images/faq/user-input.png +0 -0
- package/src/assets/images/favicon-32x32.png +0 -0
- package/src/assets/images/features/future-bnr.jpg +0 -0
- package/src/assets/images/features/polygon.png +0 -0
- package/src/assets/images/home/banner-1.jpg +0 -0
- package/src/assets/images/home/booking.png +0 -0
- package/src/assets/images/home/client.jpg +0 -0
- package/src/assets/images/home/client2.jpg +0 -0
- package/src/assets/images/home/clientlogo1.jpg +0 -0
- package/src/assets/images/home/clientlogo2.jpg +0 -0
- package/src/assets/images/home/clientlogo3.jpg +0 -0
- package/src/assets/images/home/clientlogo4.jpg +0 -0
- package/src/assets/images/home/clientlogo5.jpg +0 -0
- package/src/assets/images/home/easy_invoicing.png +0 -0
- package/src/assets/images/home/inventory.png +0 -0
- package/src/assets/images/home/manage.png +0 -0
- package/src/assets/images/home/more.png +0 -0
- package/src/assets/images/home/order_management.png +0 -0
- package/src/assets/images/home/plan.png +0 -0
- package/src/assets/images/home-page/AjaxLoader.gif +0 -0
- package/src/assets/images/home-page/ResolveIO_white.png +0 -0
- package/src/assets/images/home-page/abt_thumb.png +0 -0
- package/src/assets/images/home-page/aero_icon_right_white.png +0 -0
- package/src/assets/images/home-page/arrow_btn.png +0 -0
- package/src/assets/images/home-page/banner_thumb.png +0 -0
- package/src/assets/images/home-page/blank.gif +0 -0
- package/src/assets/images/home-page/close_icon.png +0 -0
- package/src/assets/images/home-page/contact_bg.jpg +0 -0
- package/src/assets/images/home-page/email_icon.png +0 -0
- package/src/assets/images/home-page/fancybox_loading.gif +0 -0
- package/src/assets/images/home-page/fancybox_loading@2x.gif +0 -0
- package/src/assets/images/home-page/fancybox_overlay.png +0 -0
- package/src/assets/images/home-page/fancybox_sprite.png +0 -0
- package/src/assets/images/home-page/fancybox_sprite@2x.png +0 -0
- package/src/assets/images/home-page/header_center_after.png +0 -0
- package/src/assets/images/home-page/header_left_after.png +0 -0
- package/src/assets/images/home-page/home_banner_1.jpg +0 -0
- package/src/assets/images/home-page/logo.png +0 -0
- package/src/assets/images/home-page/logo_thumb_ace.png +0 -0
- package/src/assets/images/home-page/logo_thumb_acquire.png +0 -0
- package/src/assets/images/home-page/logo_thumb_chemtech.jpeg +0 -0
- package/src/assets/images/home-page/logo_thumb_cherokee.png +0 -0
- package/src/assets/images/home-page/logo_thumb_coilchem.png +0 -0
- package/src/assets/images/home-page/logo_thumb_dcs.png +0 -0
- package/src/assets/images/home-page/logo_thumb_integrity.png +0 -0
- package/src/assets/images/home-page/logo_thumb_intrepid.png +0 -0
- package/src/assets/images/home-page/logo_thumb_omt.png +0 -0
- package/src/assets/images/home-page/logo_thumb_quantum.png +0 -0
- package/src/assets/images/home-page/logo_thumb_smartchemical.png +0 -0
- package/src/assets/images/home-page/logo_thumb_terra.png +0 -0
- package/src/assets/images/home-page/logo_thumb_truechem.png +0 -0
- package/src/assets/images/home-page/password_icon.png +0 -0
- package/src/assets/images/home-page/phone_icon.png +0 -0
- package/src/assets/images/home-page/software_icon_1.png +0 -0
- package/src/assets/images/home-page/software_icon_2.png +0 -0
- package/src/assets/images/home-page/software_sec_bg.jpg +0 -0
- package/src/assets/images/home-page/software_thumb.png +0 -0
- package/src/assets/images/home-page/white_arrow_btn.png +0 -0
- package/src/assets/images/howitwork/add-booking.png +0 -0
- package/src/assets/images/howitwork/add-order.png +0 -0
- package/src/assets/images/howitwork/add-stuff.png +0 -0
- package/src/assets/images/howitwork/how_banner.jpg +0 -0
- package/src/assets/images/howitwork/howimg1.png +0 -0
- package/src/assets/images/howitwork/howimg2.png +0 -0
- package/src/assets/images/howitwork/step-check.png +0 -0
- package/src/assets/images/loginsignup/formimg.jpg +0 -0
- package/src/assets/images/loginsignup/login-logo.png +0 -0
- package/src/assets/images/owl.video.play.png +0 -0
- package/src/assets/images/pricing/Pricing_banner.jpg +0 -0
- package/src/assets/images/pricing/clientlogo1.jpg +0 -0
- package/src/assets/images/pricing/clientlogo2.jpg +0 -0
- package/src/assets/images/pricing/clientlogo3.jpg +0 -0
- package/src/assets/images/pricing/clientlogo4.jpg +0 -0
- package/src/assets/images/pricing/clientlogo5.jpg +0 -0
- package/src/assets/images/pricing/info-ico.png +0 -0
- package/src/assets/scss/toastr.scss +201 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { UserSettingsService } from './user-settings.service';
|
|
3
|
+
import { UserSettingsModulePermission } from './user-settings.permission';
|
|
4
|
+
import { ProviderService, BaseComponent } from '../resolveio-class';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./user-settings.service";
|
|
7
|
+
import * as i2 from "../resolveio-class";
|
|
8
|
+
import * as i3 from "@angular/router";
|
|
9
|
+
export class UserSettingsComponent extends BaseComponent {
|
|
10
|
+
constructor(_us, _services) {
|
|
11
|
+
super(_services);
|
|
12
|
+
this._us = _us;
|
|
13
|
+
this._services = _services;
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
this.selectedUserSettings$ = this._us.selectedUser.subscribe(val => this.selectedUserSettingsChanged(val));
|
|
17
|
+
}
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
this._us.setSelectedUser('0');
|
|
20
|
+
this.selectedUserSettings$.unsubscribe();
|
|
21
|
+
}
|
|
22
|
+
selectedUserSettingsChanged(id) {
|
|
23
|
+
this.setUserSettingsMenuData();
|
|
24
|
+
}
|
|
25
|
+
setUserSettingsMenuData(id, user) {
|
|
26
|
+
let tabs = [];
|
|
27
|
+
UserSettingsModulePermission.views.forEach(view => {
|
|
28
|
+
if (this._services._account.isUserInView(view.link) || this._services._account.isUserSuperAdmin()) {
|
|
29
|
+
switch (view.link) {
|
|
30
|
+
case '/user-settings/settings':
|
|
31
|
+
tabs.push({ link: '/user-settings/settings', params: null, label: 'Settings' });
|
|
32
|
+
break;
|
|
33
|
+
default:
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
this.menuData = {
|
|
39
|
+
title: 'User Settings',
|
|
40
|
+
module: 'User Settings',
|
|
41
|
+
description_name: 'User: ',
|
|
42
|
+
description: user ? user.fullname : '',
|
|
43
|
+
tabs: tabs
|
|
44
|
+
};
|
|
45
|
+
this._services._app.setNavbarModuleData(this.menuData);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
UserSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsComponent, deps: [{ token: i1.UserSettingsService }, { token: i2.ProviderService }], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
+
UserSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: UserSettingsComponent, selector: "ng-component", providers: [ProviderService], usesInheritance: true, ngImport: i0, template: '<router-outlet></router-outlet>', isInline: true, directives: [{ type: i3.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsComponent, decorators: [{
|
|
51
|
+
type: Component,
|
|
52
|
+
args: [{
|
|
53
|
+
providers: [ProviderService],
|
|
54
|
+
template: '<router-outlet></router-outlet>'
|
|
55
|
+
}]
|
|
56
|
+
}], ctorParameters: function () { return [{ type: i1.UserSettingsService }, { type: i2.ProviderService }]; } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXNlci1zZXR0aW5ncy91c2VyLXNldHRpbmdzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVFwRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsYUFBYTtJQU12RCxZQUFvQixHQUF3QixFQUFVLFNBQTBCO1FBQy9FLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQURFLFFBQUcsR0FBSCxHQUFHLENBQXFCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFFaEYsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUMzRCxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxFQUFVO1FBQ3JDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxFQUFXLEVBQUUsSUFBZ0I7UUFDcEQsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWQsNEJBQTRCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtnQkFDbEcsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNsQixLQUFLLHlCQUF5Qjt3QkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO3dCQUM5RSxNQUFNO29CQUNQO3dCQUNDLE1BQU07aUJBQ1A7YUFDRDtRQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNmLEtBQUssRUFBRSxlQUFlO1lBQ3RCLE1BQU0sRUFBRSxlQUFlO1lBQ3ZCLGdCQUFnQixFQUFFLFFBQVE7WUFDMUIsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN0QyxJQUFJLEVBQUUsSUFBSTtTQUNWLENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7a0hBbERXLHFCQUFxQjtzR0FBckIscUJBQXFCLHVDQUp0QixDQUFDLGVBQWUsQ0FBQyxpREFDbEIsaUNBQWlDOzJGQUcvQixxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1YsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUM1QixRQUFRLEVBQUUsaUNBQWlDO2lCQUMzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZiYXJNb2RlbCB9IGZyb20gJy4uL3dpZGdldHMvbmF2YmFyLW1vZHVsZS9uYXZiYXItbW9kdWxlLm1vZGVsJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3VzZXItc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc01vZHVsZVBlcm1pc3Npb24gfSBmcm9tICcuL3VzZXItc2V0dGluZ3MucGVybWlzc2lvbic7XG5pbXBvcnQgeyBQcm92aWRlclNlcnZpY2UsIEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9yZXNvbHZlaW8tY2xhc3MnO1xuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3VzZXIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcblx0cHJvdmlkZXJzOiBbUHJvdmlkZXJTZXJ2aWNlXSxcblx0dGVtcGxhdGU6ICc8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+J1xufSlcblxuZXhwb3J0IGNsYXNzIFVzZXJTZXR0aW5nc0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7IFxuXG5cdHNlbGVjdGVkVXNlclNldHRpbmdzJDogU3Vic2NyaXB0aW9uO1xuXG5cdG1lbnVEYXRhOiBOYXZiYXJNb2RlbDtcblx0XG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3VzOiBVc2VyU2V0dGluZ3NTZXJ2aWNlLCBwcml2YXRlIF9zZXJ2aWNlczogUHJvdmlkZXJTZXJ2aWNlKSB7XG5cdFx0c3VwZXIoX3NlcnZpY2VzKTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuc2VsZWN0ZWRVc2VyU2V0dGluZ3MkID0gdGhpcy5fdXMuc2VsZWN0ZWRVc2VyLnN1YnNjcmliZShcblx0XHRcdHZhbCA9PiB0aGlzLnNlbGVjdGVkVXNlclNldHRpbmdzQ2hhbmdlZCh2YWwpXG5cdFx0KTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuX3VzLnNldFNlbGVjdGVkVXNlcignMCcpO1xuXG5cdFx0dGhpcy5zZWxlY3RlZFVzZXJTZXR0aW5ncyQudW5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdHNlbGVjdGVkVXNlclNldHRpbmdzQ2hhbmdlZChpZDogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXRVc2VyU2V0dGluZ3NNZW51RGF0YSgpO1xuXHR9XG5cblx0c2V0VXNlclNldHRpbmdzTWVudURhdGEoaWQ/OiBzdHJpbmcsIHVzZXI/OiBVc2VyTW9kZWwpIHtcblx0XHRsZXQgdGFicyA9IFtdO1xuXG5cdFx0VXNlclNldHRpbmdzTW9kdWxlUGVybWlzc2lvbi52aWV3cy5mb3JFYWNoKHZpZXcgPT4ge1xuXHRcdFx0aWYgKHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmlzVXNlckluVmlldyh2aWV3LmxpbmspIHx8IHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmlzVXNlclN1cGVyQWRtaW4oKSkge1xuXHRcdFx0XHRzd2l0Y2ggKHZpZXcubGluaykge1xuXHRcdFx0XHRcdGNhc2UgJy91c2VyLXNldHRpbmdzL3NldHRpbmdzJzogXG5cdFx0XHRcdFx0XHR0YWJzLnB1c2goe2xpbms6ICcvdXNlci1zZXR0aW5ncy9zZXR0aW5ncycsIHBhcmFtczogbnVsbCwgbGFiZWw6ICdTZXR0aW5ncyd9KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5tZW51RGF0YSA9IHtcblx0XHRcdHRpdGxlOiAnVXNlciBTZXR0aW5ncycsXG5cdFx0XHRtb2R1bGU6ICdVc2VyIFNldHRpbmdzJyxcblx0XHRcdGRlc2NyaXB0aW9uX25hbWU6ICdVc2VyOiAnLFxuXHRcdFx0ZGVzY3JpcHRpb246IHVzZXIgPyB1c2VyLmZ1bGxuYW1lIDogJycsXG5cdFx0XHR0YWJzOiB0YWJzXG5cdFx0fTtcblxuXHRcdHRoaXMuX3NlcnZpY2VzLl9hcHAuc2V0TmF2YmFyTW9kdWxlRGF0YSh0aGlzLm1lbnVEYXRhKTtcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { SharedModule } from '../shared/shared.module';
|
|
3
|
+
import { UserSettingsRouting } from './user-settings.routing';
|
|
4
|
+
import { UserSettingsComponent } from './user-settings.component';
|
|
5
|
+
import { UserSettingsService } from './user-settings.service';
|
|
6
|
+
import { DatatableModule } from '../widgets/data-table/data-table.module';
|
|
7
|
+
import { FileModule } from '../widgets/file/file-upload.module';
|
|
8
|
+
import { TreeNgxModule } from 'tree-ngx';
|
|
9
|
+
import { CKEditorModule } from '@ckeditor/ckeditor5-angular';
|
|
10
|
+
import { UsersSettingsComponent } from './settings/users-settings.component';
|
|
11
|
+
import { CommonModule } from '@angular/common';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "@angular/router";
|
|
14
|
+
// import { TourNgBootstrapModule } from '../widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module';
|
|
15
|
+
export class UserSettingsModule {
|
|
16
|
+
}
|
|
17
|
+
UserSettingsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
18
|
+
UserSettingsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsModule, declarations: [UserSettingsComponent,
|
|
19
|
+
UsersSettingsComponent], imports: [CommonModule,
|
|
20
|
+
SharedModule, i1.RouterModule, DatatableModule,
|
|
21
|
+
FileModule,
|
|
22
|
+
TreeNgxModule,
|
|
23
|
+
CKEditorModule] });
|
|
24
|
+
UserSettingsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsModule, providers: [
|
|
25
|
+
UserSettingsService
|
|
26
|
+
], imports: [[
|
|
27
|
+
CommonModule,
|
|
28
|
+
SharedModule,
|
|
29
|
+
UserSettingsRouting,
|
|
30
|
+
DatatableModule,
|
|
31
|
+
FileModule,
|
|
32
|
+
TreeNgxModule,
|
|
33
|
+
CKEditorModule,
|
|
34
|
+
// TourNgBootstrapModule
|
|
35
|
+
]] });
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsModule, decorators: [{
|
|
37
|
+
type: NgModule,
|
|
38
|
+
args: [{
|
|
39
|
+
imports: [
|
|
40
|
+
CommonModule,
|
|
41
|
+
SharedModule,
|
|
42
|
+
UserSettingsRouting,
|
|
43
|
+
DatatableModule,
|
|
44
|
+
FileModule,
|
|
45
|
+
TreeNgxModule,
|
|
46
|
+
CKEditorModule,
|
|
47
|
+
// TourNgBootstrapModule
|
|
48
|
+
],
|
|
49
|
+
declarations: [
|
|
50
|
+
UserSettingsComponent,
|
|
51
|
+
UsersSettingsComponent
|
|
52
|
+
],
|
|
53
|
+
providers: [
|
|
54
|
+
UserSettingsService
|
|
55
|
+
]
|
|
56
|
+
}]
|
|
57
|
+
}] });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXNlci1zZXR0aW5ncy91c2VyLXNldHRpbmdzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBQy9DLGdHQUFnRztBQXFCaEcsTUFBTSxPQUFPLGtCQUFrQjs7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQVA3QixxQkFBcUI7UUFDckIsc0JBQXNCLGFBWHRCLFlBQVk7UUFDWixZQUFZLG1CQUVaLGVBQWU7UUFDZixVQUFVO1FBQ1YsYUFBYTtRQUNiLGNBQWM7Z0hBV0gsa0JBQWtCLGFBSm5CO1FBQ1YsbUJBQW1CO0tBQ25CLFlBaEJRO1lBQ1IsWUFBWTtZQUNaLFlBQVk7WUFDWixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLFVBQVU7WUFDVixhQUFhO1lBQ2IsY0FBYztZQUNkLHdCQUF3QjtTQUN4QjsyRkFTVyxrQkFBa0I7a0JBbkI5QixRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRTt3QkFDUixZQUFZO3dCQUNaLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLFVBQVU7d0JBQ1YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLHdCQUF3QjtxQkFDeEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNiLHFCQUFxQjt3QkFDckIsc0JBQXNCO3FCQUN0QjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1YsbUJBQW1CO3FCQUNuQjtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5cbmltcG9ydCB7IFVzZXJTZXR0aW5nc1JvdXRpbmcgfSBmcm9tICcuL3VzZXItc2V0dGluZ3Mucm91dGluZyc7XG5pbXBvcnQgeyBVc2VyU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3VzZXItc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3VzZXItc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhdGFibGVNb2R1bGUgfSBmcm9tICcuLi93aWRnZXRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5tb2R1bGUnO1xuaW1wb3J0IHsgRmlsZU1vZHVsZSB9IGZyb20gJy4uL3dpZGdldHMvZmlsZS9maWxlLXVwbG9hZC5tb2R1bGUnO1xuaW1wb3J0IHsgVHJlZU5neE1vZHVsZSB9IGZyb20gJ3RyZWUtbmd4JztcbmltcG9ydCB7IENLRWRpdG9yTW9kdWxlIH0gZnJvbSAnQGNrZWRpdG9yL2NrZWRpdG9yNS1hbmd1bGFyJztcbmltcG9ydCB7IFVzZXJzU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmdzL3VzZXJzLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuLy8gaW1wb3J0IHsgVG91ck5nQm9vdHN0cmFwTW9kdWxlIH0gZnJvbSAnLi4vd2lkZ2V0cy9uZ3gtdG91ci1uZy1ib290c3RyYXAvbmctYm9vdHN0cmFwLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6IFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdFx0U2hhcmVkTW9kdWxlLFxuXHRcdFVzZXJTZXR0aW5nc1JvdXRpbmcsXG5cdFx0RGF0YXRhYmxlTW9kdWxlLFxuXHRcdEZpbGVNb2R1bGUsXG5cdFx0VHJlZU5neE1vZHVsZSxcblx0XHRDS0VkaXRvck1vZHVsZSxcblx0XHQvLyBUb3VyTmdCb290c3RyYXBNb2R1bGVcblx0XSxcblx0ZGVjbGFyYXRpb25zOiBbIFxuXHRcdFVzZXJTZXR0aW5nc0NvbXBvbmVudCxcblx0XHRVc2Vyc1NldHRpbmdzQ29tcG9uZW50XG5cdF0sXG5cdHByb3ZpZGVyczogW1xuXHRcdFVzZXJTZXR0aW5nc1NlcnZpY2Vcblx0XVxufSlcbmV4cG9ydCBjbGFzcyBVc2VyU2V0dGluZ3NNb2R1bGUgeyB9XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const UserSettingsModulePermission = {
|
|
2
|
+
name: 'user-settings',
|
|
3
|
+
views: [
|
|
4
|
+
{ link: '/user-settings/settings', label: 'Settings', has_parameter: false }
|
|
5
|
+
],
|
|
6
|
+
approval: {
|
|
7
|
+
type: 'user-settings'
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5wZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5wZXJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUEwQjtJQUNsRSxJQUFJLEVBQUUsZUFBZTtJQUNyQixLQUFLLEVBQUU7UUFDTixFQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUM7S0FDMUU7SUFDRCxRQUFRLEVBQUU7UUFDVCxJQUFJLEVBQUUsZUFBZTtLQUNyQjtDQUNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVQZXJtaXNzaW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvcGVybWlzc2lvbi5tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBVc2VyU2V0dGluZ3NNb2R1bGVQZXJtaXNzaW9uOiBNb2R1bGVQZXJtaXNzaW9uTW9kZWwgPSB7XG5cdG5hbWU6ICd1c2VyLXNldHRpbmdzJyxcblx0dmlld3M6IFtcblx0XHR7bGluazogJy91c2VyLXNldHRpbmdzL3NldHRpbmdzJywgbGFiZWw6ICdTZXR0aW5ncycsIGhhc19wYXJhbWV0ZXI6IGZhbHNlfVxuXHRdLFxuXHRhcHByb3ZhbDoge1xuXHRcdHR5cGU6ICd1c2VyLXNldHRpbmdzJ1xuXHR9XG59O1xuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RouterModule } from '@angular/router';
|
|
2
|
+
import { UserSettingsComponent } from './user-settings.component';
|
|
3
|
+
import { UsersSettingsComponent } from './settings/users-settings.component';
|
|
4
|
+
const routes = [{
|
|
5
|
+
path: 'user-settings',
|
|
6
|
+
component: UserSettingsComponent,
|
|
7
|
+
children: [
|
|
8
|
+
{ path: 'settings', component: UsersSettingsComponent },
|
|
9
|
+
{ path: '**', redirectTo: 'settings' }
|
|
10
|
+
]
|
|
11
|
+
}
|
|
12
|
+
];
|
|
13
|
+
export const UserSettingsRouting = RouterModule.forChild(routes);
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5yb3V0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5yb3V0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBVSxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3RSxNQUFNLE1BQU0sR0FBVyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxlQUFlO1FBQ3JCLFNBQVMsRUFBRSxxQkFBcUI7UUFDaEMsUUFBUSxFQUFFO1lBQ1QsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRTtZQUN2RCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRTtTQUN0QztLQUFDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUErQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXMsIFJvdXRlck1vZHVsZSwgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2Vyc1NldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5ncy91c2Vycy1zZXR0aW5ncy5jb21wb25lbnQnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFt7IFxuXHRwYXRoOiAndXNlci1zZXR0aW5ncycsXG5cdGNvbXBvbmVudDogVXNlclNldHRpbmdzQ29tcG9uZW50LFxuXHRjaGlsZHJlbjogW1xuXHRcdHsgcGF0aDogJ3NldHRpbmdzJywgY29tcG9uZW50OiBVc2Vyc1NldHRpbmdzQ29tcG9uZW50IH0sXG5cdFx0eyBwYXRoOiAnKionLCByZWRpcmVjdFRvOiAnc2V0dGluZ3MnIH1cblx0XX1cbl07XG5cbmV4cG9ydCBjb25zdCBVc2VyU2V0dGluZ3NSb3V0aW5nOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFJvdXRlPiA9IFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpO1xuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class UserSettingsService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.selectedUser = new BehaviorSubject('0');
|
|
7
|
+
}
|
|
8
|
+
setSelectedUser(id) {
|
|
9
|
+
this.selectedUser.next(id);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
UserSettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
13
|
+
UserSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsService });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsService, decorators: [{
|
|
15
|
+
type: Injectable
|
|
16
|
+
}], ctorParameters: function () { return []; } });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHdkMsTUFBTSxPQUFPLG1CQUFtQjtJQUkvQjtRQUZBLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekIsQ0FBQztJQUVoQixlQUFlLENBQUMsRUFBVTtRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDOztnSEFSVyxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyU2V0dGluZ3NTZXJ2aWNlIHtcblxuXHRzZWxlY3RlZFVzZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcwJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7fVxuXG5cdHNldFNlbGVjdGVkVXNlcihpZDogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZWxlY3RlZFVzZXIubmV4dChpZCk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
let typeCache = {};
|
|
2
|
+
export function type(label) {
|
|
3
|
+
if (typeCache[label]) {
|
|
4
|
+
throw new Error(`Action type "${label}" is not unqiue"`);
|
|
5
|
+
}
|
|
6
|
+
typeCache[label] = true;
|
|
7
|
+
return label;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW5hbWUuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3V0aWwvYWN0aW9uLW5hbWUuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksU0FBUyxHQUFpQyxFQUFFLENBQUM7QUFDakQsTUFBTSxVQUFVLElBQUksQ0FBSSxLQUFhO0lBQ3BDLElBQUksU0FBUyxDQUFTLEtBQUssQ0FBQyxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEtBQUssa0JBQWtCLENBQUMsQ0FBQztLQUN6RDtJQUVELFNBQVMsQ0FBUyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7SUFFaEMsT0FBVSxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImxldCB0eXBlQ2FjaGU6IHsgW2xhYmVsOiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiB0eXBlPFQ+KGxhYmVsOiBUIHwgJycpOiBUIHtcblx0aWYgKHR5cGVDYWNoZVs8c3RyaW5nPmxhYmVsXSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgQWN0aW9uIHR5cGUgXCIke2xhYmVsfVwiIGlzIG5vdCB1bnFpdWVcImApO1xuXHR9XG5cblx0dHlwZUNhY2hlWzxzdHJpbmc+bGFiZWxdID0gdHJ1ZTtcblxuXHRyZXR1cm4gPFQ+bGFiZWw7XG59XG4iXX0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { SocketManagerService } from '../socket-manager.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../socket-manager.service";
|
|
5
|
+
export class AwsService {
|
|
6
|
+
constructor(_socket) {
|
|
7
|
+
this._socket = _socket;
|
|
8
|
+
}
|
|
9
|
+
dataURItoFile(dataURI, filename) {
|
|
10
|
+
// convert base64 to raw binary data held in a string
|
|
11
|
+
// doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
|
|
12
|
+
let byteString = atob(dataURI.split(',')[1]);
|
|
13
|
+
// separate out the mime component
|
|
14
|
+
let mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
|
|
15
|
+
// write the bytes of the string to an ArrayBuffer
|
|
16
|
+
let ab = new ArrayBuffer(byteString.length);
|
|
17
|
+
let ia = new Uint8Array(ab);
|
|
18
|
+
for (let i = 0; i < byteString.length; i++) {
|
|
19
|
+
ia[i] = byteString.charCodeAt(i);
|
|
20
|
+
}
|
|
21
|
+
// write the ArrayBuffer to a blob, and you're done
|
|
22
|
+
let blob = new Blob([ab], { type: mimeString });
|
|
23
|
+
blob['lastModifiedDate'] = new Date();
|
|
24
|
+
blob['name'] = filename;
|
|
25
|
+
return blob;
|
|
26
|
+
}
|
|
27
|
+
uploadFile(file, type, order, filename) {
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
if (file.size) {
|
|
30
|
+
this.getBase64(file).then(data => {
|
|
31
|
+
this._socket.call('uploadFileAndSave', filename ? filename : file.name, data, file.size, order ? order : -1, type, true, (err, res) => {
|
|
32
|
+
if (res) {
|
|
33
|
+
resolve(res);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
reject(err);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
reject('Invalid File');
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
getFileWithKey(key, callback) {
|
|
47
|
+
this._socket.call('getFile', key, callback);
|
|
48
|
+
}
|
|
49
|
+
getFileWithId(id, callback) {
|
|
50
|
+
this._socket.call('findOne', 'files', { _id: id }, (err, file) => {
|
|
51
|
+
this.getFileWithKey(file.key, callback);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
deleteFile(key, callback) {
|
|
55
|
+
this._socket.call('deleteFile', key, callback);
|
|
56
|
+
}
|
|
57
|
+
deleteFileWithId(id, callback) {
|
|
58
|
+
this._socket.call('findOne', 'files', { _id: id }, (err, file) => {
|
|
59
|
+
this.deleteFile(file.key, callback);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
deleteFilesWithKeys(keys, callback) {
|
|
63
|
+
this._socket.call('deleteFiles', keys, callback);
|
|
64
|
+
}
|
|
65
|
+
getBase64(file) {
|
|
66
|
+
return new Promise((resolve, reject) => {
|
|
67
|
+
const reader = new FileReader();
|
|
68
|
+
reader.readAsDataURL(file);
|
|
69
|
+
reader.onload = () => resolve(reader.result);
|
|
70
|
+
reader.onerror = error => reject(error);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
AwsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AwsService, deps: [{ token: i1.SocketManagerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
75
|
+
AwsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AwsService });
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AwsService, decorators: [{
|
|
77
|
+
type: Injectable
|
|
78
|
+
}], ctorParameters: function () { return [{ type: i1.SocketManagerService }]; } });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXRpbC9hd3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFHakUsTUFBTSxPQUFPLFVBQVU7SUFFdEIsWUFBb0IsT0FBNkI7UUFBN0IsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7SUFBRyxDQUFDO0lBRXJELGFBQWEsQ0FBQyxPQUFlLEVBQUUsUUFBZ0I7UUFDOUMscURBQXFEO1FBQ3JELHNGQUFzRjtRQUN0RixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdDLGtDQUFrQztRQUNsQyxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkUsa0RBQWtEO1FBQ2xELElBQUksRUFBRSxHQUFHLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQztRQUVE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TSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyRCxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7dUdBL0VXLFVBQVU7MkdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNvY2tldE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc29ja2V0LW1hbmFnZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBd3NTZXJ2aWNlICB7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfc29ja2V0OiBTb2NrZXRNYW5hZ2VyU2VydmljZSkge31cblxuXHRkYXRhVVJJdG9GaWxlKGRhdGFVUkk6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IEZpbGUge1xuXHRcdC8vIGNvbnZlcnQgYmFzZTY0IHRvIHJhdyBiaW5hcnkgZGF0YSBoZWxkIGluIGEgc3RyaW5nXG5cdFx0Ly8gZG9lc24ndCBoYW5kbGUgVVJMRW5jb2RlZCBEYXRhVVJJcyAtIHNlZSBTTyBhbnN3ZXIgIzY4NTAyNzYgZm9yIGNvZGUgdGhhdCBkb2VzIHRoaXNcblx0XHRsZXQgYnl0ZVN0cmluZyA9IGF0b2IoZGF0YVVSSS5zcGxpdCgnLCcpWzFdKTtcblxuXHRcdC8vIHNlcGFyYXRlIG91dCB0aGUgbWltZSBjb21wb25lbnRcblx0XHRsZXQgbWltZVN0cmluZyA9IGRhdGFVUkkuc3BsaXQoJywnKVswXS5zcGxpdCgnOicpWzFdLnNwbGl0KCc7JylbMF07XG5cblx0XHQvLyB3cml0ZSB0aGUgYnl0ZXMgb2YgdGhlIHN0cmluZyB0byBhbiBBcnJheUJ1ZmZlclxuXHRcdGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcihieXRlU3RyaW5nLmxlbmd0aCk7XG5cdFx0bGV0IGlhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZVN0cmluZy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWFbaV0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cdFx0fVxuXG5cdFx0Ly8gd3JpdGUgdGhlIEFycmF5QnVmZmVyIHRvIGEgYmxvYiwgYW5kIHlvdSdyZSBkb25lXG5cdFx0bGV0IGJsb2IgPSBuZXcgQmxvYihbYWJdLCB7dHlwZTogbWltZVN0cmluZ30pO1xuXHRcdFxuXHRcdGJsb2JbJ2xhc3RNb2RpZmllZERhdGUnXSA9IG5ldyBEYXRlKCk7XG5cdFx0YmxvYlsnbmFtZSddID0gZmlsZW5hbWU7XG5cblx0XHRyZXR1cm4gPEZpbGU+YmxvYjtcblx0fVxuXG5cdHVwbG9hZEZpbGUoZmlsZTogRmlsZSwgdHlwZTogc3RyaW5nLCBvcmRlcj86IG51bWJlciwgZmlsZW5hbWU/OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UgKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdGlmIChmaWxlLnNpemUpIHtcblx0XHRcdFx0dGhpcy5nZXRCYXNlNjQoZmlsZSkudGhlbihkYXRhID0+IHtcblx0XHRcdFx0XHR0aGlzLl9zb2NrZXQuY2FsbCgndXBsb2FkRmlsZUFuZFNhdmUnLCBmaWxlbmFtZSA/IGZpbGVuYW1lIDogZmlsZS5uYW1lLCBkYXRhLCBmaWxlLnNpemUsIG9yZGVyID8gb3JkZXIgOiAtMSwgdHlwZSwgdHJ1ZSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocmVzKSB7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0cmVqZWN0KCdJbnZhbGlkIEZpbGUnKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGdldEZpbGVXaXRoS2V5KGtleTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcblx0XHR0aGlzLl9zb2NrZXQuY2FsbCgnZ2V0RmlsZScsIGtleSwgY2FsbGJhY2spO1xuXHR9XG5cblx0Z2V0RmlsZVdpdGhJZChpZDogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcblx0XHR0aGlzLl9zb2NrZXQuY2FsbCgnZmluZE9uZScsICdmaWxlcycsIHtfaWQ6IGlkfSwgKGVyciwgZmlsZSkgPT4ge1xuXHRcdFx0dGhpcy5nZXRGaWxlV2l0aEtleShmaWxlLmtleSwgY2FsbGJhY2spO1xuXHRcdH0pO1xuXHR9XG5cblx0ZGVsZXRlRmlsZShrZXk6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG5cdFx0dGhpcy5fc29ja2V0LmNhbGwoJ2RlbGV0ZUZpbGUnLCBrZXksIGNhbGxiYWNrKTtcblx0fVxuXG5cdGRlbGV0ZUZpbGVXaXRoSWQoaWQ6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG5cdFx0dGhpcy5fc29ja2V0LmNhbGwoJ2ZpbmRPbmUnLCAnZmlsZXMnLCB7X2lkOiBpZH0sIChlcnIsIGZpbGUpID0+IHtcblx0XHRcdHRoaXMuZGVsZXRlRmlsZShmaWxlLmtleSwgY2FsbGJhY2spO1xuXHRcdH0pO1xuXHR9XG5cblx0ZGVsZXRlRmlsZXNXaXRoS2V5cyhrZXlzOiBzdHJpbmdbXSwgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG5cdFx0dGhpcy5fc29ja2V0LmNhbGwoJ2RlbGV0ZUZpbGVzJywga2V5cywgY2FsbGJhY2spO1xuXHR9XG5cblx0Z2V0QmFzZTY0KGZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXHRcdFx0cmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG5cdFx0XHRyZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZSg8c3RyaW5nPnJlYWRlci5yZXN1bHQpO1xuXHRcdFx0cmVhZGVyLm9uZXJyb3IgPSBlcnJvciA9PiByZWplY3QoZXJyb3IpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { detailedDiff } from 'deep-object-diff';
|
|
2
|
+
import * as moment from 'moment';
|
|
3
|
+
const isObject = (object) => {
|
|
4
|
+
return object instanceof Object && object.constructor.name === 'Object';
|
|
5
|
+
};
|
|
6
|
+
export function toTitleCase(str) {
|
|
7
|
+
return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
|
|
8
|
+
}
|
|
9
|
+
export function isUpperCase(str) {
|
|
10
|
+
return (/^[A-Z]*$/).test(str);
|
|
11
|
+
}
|
|
12
|
+
export function pad(num, size) {
|
|
13
|
+
let s = num + '';
|
|
14
|
+
while (s.length < size) {
|
|
15
|
+
s = '0' + s;
|
|
16
|
+
}
|
|
17
|
+
return s;
|
|
18
|
+
}
|
|
19
|
+
export function deepCopy(obj) {
|
|
20
|
+
return JSON.parse(JSON.stringify(obj), dateReviver);
|
|
21
|
+
}
|
|
22
|
+
export function dateReviver(key, value) {
|
|
23
|
+
if (typeof value === 'string') {
|
|
24
|
+
let a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
|
|
25
|
+
if (a) {
|
|
26
|
+
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
export function b64toBlobURL(b64Data, contentType, sliceSize) {
|
|
32
|
+
b64Data = b64Data.replace('data:application/pdf;base64,', '');
|
|
33
|
+
contentType = contentType || '';
|
|
34
|
+
sliceSize = sliceSize || 512;
|
|
35
|
+
let byteCharacters = atob(b64Data);
|
|
36
|
+
let byteArrays = [];
|
|
37
|
+
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
|
|
38
|
+
let slice = byteCharacters.slice(offset, offset + sliceSize);
|
|
39
|
+
let byteNumbers = new Array(slice.length);
|
|
40
|
+
for (let i = 0; i < slice.length; i++) {
|
|
41
|
+
byteNumbers[i] = slice.charCodeAt(i);
|
|
42
|
+
}
|
|
43
|
+
let byteArray = new Uint8Array(byteNumbers);
|
|
44
|
+
byteArrays.push(byteArray);
|
|
45
|
+
}
|
|
46
|
+
let blob = new Blob(byteArrays, { type: contentType });
|
|
47
|
+
return URL.createObjectURL(blob);
|
|
48
|
+
}
|
|
49
|
+
export function blobToFile(theBlob, fileName) {
|
|
50
|
+
//A Blob() is almost a File() - it's just missing the two properties below which we will add
|
|
51
|
+
theBlob.lastModifiedDate = new Date();
|
|
52
|
+
theBlob.name = fileName;
|
|
53
|
+
return theBlob;
|
|
54
|
+
}
|
|
55
|
+
export function toDataURL(url, callback) {
|
|
56
|
+
let xhr = new XMLHttpRequest();
|
|
57
|
+
xhr.onload = function () {
|
|
58
|
+
let reader = new FileReader();
|
|
59
|
+
reader.onloadend = function () {
|
|
60
|
+
callback(reader.result);
|
|
61
|
+
};
|
|
62
|
+
reader.readAsDataURL(xhr.response);
|
|
63
|
+
};
|
|
64
|
+
xhr.open('GET', url);
|
|
65
|
+
xhr.responseType = 'blob';
|
|
66
|
+
xhr.send();
|
|
67
|
+
}
|
|
68
|
+
export function getDeepDiffDetails(obj1, obj2) {
|
|
69
|
+
let diff = detailedDiff(obj1, obj2);
|
|
70
|
+
let newDiff = detailedDiff(obj2, obj1);
|
|
71
|
+
let diffString = '';
|
|
72
|
+
if ((Object.keys(diff['updated']).length)) {
|
|
73
|
+
// if (Object.keys(diff['added']).length){
|
|
74
|
+
// diffString += '; ';
|
|
75
|
+
// }
|
|
76
|
+
// if (Object.keys(diff['deleted']).length) {
|
|
77
|
+
// diffString += '; ';
|
|
78
|
+
// }
|
|
79
|
+
for (let i = 0; i < Object.keys(diff['updated']).length; i++) {
|
|
80
|
+
if (!Array.isArray(obj1[Object.keys(diff['updated'])[i]])) {
|
|
81
|
+
let key = Object.keys(diff['updated'])[i];
|
|
82
|
+
let newKey = Object.keys(newDiff['updated'])[i];
|
|
83
|
+
if ((key.substr(0, 2) !== 'id')) {
|
|
84
|
+
if (diff['updated'][key] && moment.isDate(diff['updated'][key])) {
|
|
85
|
+
diffString += 'Updated: \n' + toTitleCase(key.replace(/_/g, ' ')) + ': "' + moment(diff['updated'][key]).format('llll') + '" to "' + moment(newDiff['updated'][newKey]).format('llll') + '"\n';
|
|
86
|
+
}
|
|
87
|
+
else if (diff['updated'][key] && typeof (diff['updated'][key]) === 'object') {
|
|
88
|
+
let objString = '';
|
|
89
|
+
for (let j = 0; j < Object.keys(diff['updated'][key]).length; j++) {
|
|
90
|
+
let objKey = Object.keys(diff['updated'][key])[j];
|
|
91
|
+
let newObjKey = Object.keys(newDiff['updated'][key])[j];
|
|
92
|
+
if (j > 0) {
|
|
93
|
+
objString += 'll, \n';
|
|
94
|
+
}
|
|
95
|
+
objString += toTitleCase(objKey.replace(/_/g, ' ')) + ': "' + diff['updated'][key][objKey] + '" to "' + newDiff['updated'][key][newObjKey] + '"' + (j < Object.keys(diff['updated'][key]).length - 1 ? ', ' : '');
|
|
96
|
+
}
|
|
97
|
+
diffString += 'Updated: \n' + objString + '\n';
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
diffString += 'Updated: \n' + toTitleCase(key.replace(/_/g, ' ')) + ': "' + diff['updated'][key] + '" to "' + newDiff['updated'][newKey] + '"' + (i < Object.keys(diff['updated']).length - 1 ? '\n' : '');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return diffString;
|
|
107
|
+
}
|
|
108
|
+
export function generateCronStringFromDate(date) {
|
|
109
|
+
return date.getSeconds() + ' ' + date.getMinutes() + ' ' + date.getHours() + ' ' + date.getDate() + ' ' + (date.getMonth() + 1) + ' ' + date.getDay();
|
|
110
|
+
}
|
|
111
|
+
export function s2ab(s) {
|
|
112
|
+
let buf = new ArrayBuffer(s.length);
|
|
113
|
+
let view = new Uint8Array(buf);
|
|
114
|
+
// tslint:disable-next-line:no-bitwise
|
|
115
|
+
for (let i = 0; i !== s.length; ++i) {
|
|
116
|
+
view[i] = s.charCodeAt(i) & 0xFF;
|
|
117
|
+
}
|
|
118
|
+
return buf;
|
|
119
|
+
}
|
|
120
|
+
export function mergeDeep(target, ...sources) {
|
|
121
|
+
if (!sources.length) {
|
|
122
|
+
return target;
|
|
123
|
+
}
|
|
124
|
+
const source = sources.shift();
|
|
125
|
+
if (isObject(target) && isObject(source)) {
|
|
126
|
+
for (const key in source) {
|
|
127
|
+
if (isObject(source[key])) {
|
|
128
|
+
if (!target[key]) {
|
|
129
|
+
Object.assign(target, { [key]: {} });
|
|
130
|
+
}
|
|
131
|
+
mergeDeep(target[key], source[key]);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
Object.assign(target, { [key]: source[key] });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return mergeDeep(target, ...sources);
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi91dGlsL2NvbW1vbi5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QyxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRixPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQzNCLE9BQU8sTUFBTSxZQUFZLE1BQU0sSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHO0lBQzlCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLElBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHO0lBQzlCLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUk7SUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNqQixPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFO1FBQ3ZCLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQ1o7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNWLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQUc7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TSxFQUFFO1FBQ3BCLE9BQU8sTUFBTSxDQUFDO0tBQ2Q7SUFDRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFL0IsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3pDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFO1lBQ3pCLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNqQixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDckM7Z0JBQ0QsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNwQztpQkFDSTtnQkFDSixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUM5QztTQUNEO0tBQ0Q7SUFFRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlmZiwgYWRkZWREaWZmLCBkZWxldGVkRGlmZiwgdXBkYXRlZERpZmYsIGRldGFpbGVkRGlmZiB9IGZyb20gJ2RlZXAtb2JqZWN0LWRpZmYnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmNvbnN0IGlzT2JqZWN0ID0gKG9iamVjdCkgPT4ge1xuXHRyZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgT2JqZWN0ICYmIG9iamVjdC5jb25zdHJ1Y3Rvci5uYW1lID09PSAnT2JqZWN0Jztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1RpdGxlQ2FzZShzdHIpIHtcblx0cmV0dXJuIHN0ci5yZXBsYWNlKC9cXHdcXFMqL2csIGZ1bmN0aW9uKHR4dCl7cmV0dXJuIHR4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHR4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTsgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VwcGVyQ2FzZShzdHIpIHtcblx0cmV0dXJuICgvXltBLVpdKiQvKS50ZXN0KHN0cik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWQobnVtLCBzaXplKSB7XG5cdGxldCBzID0gbnVtICsgJyc7XG5cdHdoaWxlIChzLmxlbmd0aCA8IHNpemUpIHtcblx0XHRzID0gJzAnICsgcztcblx0fVxuXHRyZXR1cm4gcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBDb3B5KG9iaikge1xuXHRyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopLCBkYXRlUmV2aXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlUmV2aXZlcihrZXksIHZhbHVlKSB7XG5cdGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG5cdFx0bGV0IGEgPSAvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0oPzpcXC5cXGQqKT8pWiQvLmV4ZWModmFsdWUpO1xuXHRcdGlmIChhKSB7XG5cdFx0XHRyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoK2FbMV0sICthWzJdIC0gMSwgK2FbM10sICthWzRdLCArYVs1XSwgK2FbNl0uc3BsaXQoJy4nKVswXSwgK2FbNl0uc3BsaXQoJy4nKVsxXSkpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiNjR0b0Jsb2JVUkwoYjY0RGF0YSwgY29udGVudFR5cGUsIHNsaWNlU2l6ZT8pIHtcblx0YjY0RGF0YSA9IGI2NERhdGEucmVwbGFjZSgnZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LCcsICcnKTtcblx0Y29udGVudFR5cGUgPSBjb250ZW50VHlwZSB8fCAnJztcblx0c2xpY2VTaXplID0gc2xpY2VTaXplIHx8IDUxMjtcblxuXHRsZXQgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGI2NERhdGEpO1xuXHRsZXQgYnl0ZUFycmF5cyA9IFtdO1xuXG5cdGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgb2Zmc2V0ICs9IHNsaWNlU2l6ZSkge1xuXHRcdGxldCBzbGljZSA9IGJ5dGVDaGFyYWN0ZXJzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc2xpY2VTaXplKTtcblxuXHRcdGxldCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShzbGljZS5sZW5ndGgpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2xpY2UubGVuZ3RoOyBpKyspIHtcblx0XHRieXRlTnVtYmVyc1tpXSA9IHNsaWNlLmNoYXJDb2RlQXQoaSk7XG5cdFx0fVxuXG5cdFx0bGV0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcblxuXHRcdGJ5dGVBcnJheXMucHVzaChieXRlQXJyYXkpO1xuXHR9XG5cblx0bGV0IGJsb2IgPSBuZXcgQmxvYihieXRlQXJyYXlzLCB7dHlwZTogY29udGVudFR5cGV9KTtcblx0cmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBibG9iVG9GaWxlKHRoZUJsb2IsIGZpbGVOYW1lKSA6IEZpbGUge1xuICAgIC8vQSBCbG9iKCkgaXMgYWxtb3N0IGEgRmlsZSgpIC0gaXQncyBqdXN0IG1pc3NpbmcgdGhlIHR3byBwcm9wZXJ0aWVzIGJlbG93IHdoaWNoIHdlIHdpbGwgYWRkXG4gICAgdGhlQmxvYi5sYXN0TW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcbiAgICB0aGVCbG9iLm5hbWUgPSBmaWxlTmFtZTtcbiAgICByZXR1cm4gKDxGaWxlPnRoZUJsb2IpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRhVVJMKHVybCwgY2FsbGJhY2spIHtcblx0bGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXHR4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7XG5cdFx0bGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cdFx0cmVhZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y2FsbGJhY2socmVhZGVyLnJlc3VsdCk7XG5cdFx0fTtcblx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTCh4aHIucmVzcG9uc2UpO1xuXHR9O1xuXHR4aHIub3BlbignR0VUJywgdXJsKTtcblx0eGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJztcblx0eGhyLnNlbmQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZXBEaWZmRGV0YWlscyhvYmoxOiBPYmplY3QsIG9iajI6IE9iamVjdCkge1xuXHRsZXQgZGlmZiA9IGRldGFpbGVkRGlmZihvYmoxLCBvYmoyKTtcblx0bGV0IG5ld0RpZmYgPSBkZXRhaWxlZERpZmYob2JqMiwgb2JqMSk7XG5cdFxuXHRsZXQgZGlmZlN0cmluZyA9ICcnO1xuXHRcdFxuXHRpZiAoKE9iamVjdC5rZXlzKGRpZmZbJ3VwZGF0ZWQnXSkubGVuZ3RoKSkge1xuXHRcdC8vIGlmIChPYmplY3Qua2V5cyhkaWZmWydhZGRlZCddKS5sZW5ndGgpe1xuXHRcdC8vIFx0ZGlmZlN0cmluZyArPSAnOyAnO1xuXHRcdC8vIH1cblx0XHRcblx0XHQvLyBpZiAoT2JqZWN0LmtleXMoZGlmZlsnZGVsZXRlZCddKS5sZW5ndGgpIHtcblx0XHQvLyBcdGRpZmZTdHJpbmcgKz0gJzsgJztcblx0XHQvLyB9XG5cdFx0XHRcdFx0XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBPYmplY3Qua2V5cyhkaWZmWyd1cGRhdGVkJ10pLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkob2JqMVtPYmplY3Qua2V5cyhkaWZmWyd1cGRhdGVkJ10pW2ldXSkpIHtcblx0XHRcdFx0bGV0IGtleSA9IE9iamVjdC5rZXlzKGRpZmZbJ3VwZGF0ZWQnXSlbaV07XG5cdFx0XHRcdGxldCBuZXdLZXkgPSBPYmplY3Qua2V5cyhuZXdEaWZmWyd1cGRhdGVkJ10pW2ldO1xuXG5cdFx0XHRcdGlmICgoa2V5LnN1YnN0cigwLCAyKSAhPT0gJ2lkJykpe1xuXHRcdFx0XHRcdGlmIChkaWZmWyd1cGRhdGVkJ11ba2V5XSAmJiBtb21lbnQuaXNEYXRlKGRpZmZbJ3VwZGF0ZWQnXVtrZXldKSkge1xuXHRcdFx0XHRcdFx0ZGlmZlN0cmluZyArPSAnVXBkYXRlZDogXFxuJyArIHRvVGl0bGVDYXNlKGtleS5yZXBsYWNlKC9fL2csICcgJykpICsgJzogXCInICsgbW9tZW50KGRpZmZbJ3VwZGF0ZWQnXVtrZXldKS5mb3JtYXQoJ2xsbGwnKSArICdcIiB0byBcIicgKyBtb21lbnQobmV3RGlmZlsndXBkYXRlZCddW25ld0tleV0pLmZvcm1hdCgnbGxsbCcpICsgJ1wiXFxuJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBpZiAoZGlmZlsndXBkYXRlZCddW2tleV0gJiYgdHlwZW9mKGRpZmZbJ3VwZGF0ZWQnXVtrZXldKSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRcdGxldCBvYmpTdHJpbmcgPSAnJztcblxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBPYmplY3Qua2V5cyhkaWZmWyd1cGRhdGVkJ11ba2V5XSkubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0bGV0IG9iaktleSA9IE9iamVjdC5rZXlzKGRpZmZbJ3VwZGF0ZWQnXVtrZXldKVtqXTtcblx0XHRcdFx0XHRcdFx0bGV0IG5ld09iaktleSA9IE9iamVjdC5rZXlzKG5ld0RpZmZbJ3VwZGF0ZWQnXVtrZXldKVtqXTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoaiA+IDApIHtcblx0XHRcdFx0XHRcdFx0XHRvYmpTdHJpbmcgKz0gJ2xsLCBcXG4nO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdG9ialN0cmluZyArPSB0b1RpdGxlQ2FzZShvYmpLZXkucmVwbGFjZSgvXy9nLCAnICcpKSArICc6IFwiJyArIGRpZmZbJ3VwZGF0ZWQnXVtrZXldW29iaktleV0gKyAnXCIgdG8gXCInICsgbmV3RGlmZlsndXBkYXRlZCddW2tleV1bbmV3T2JqS2V5XSArICdcIicgKyAoaiA8IE9iamVjdC5rZXlzKGRpZmZbJ3VwZGF0ZWQnXVtrZXldKS5sZW5ndGggLSAxID8gJywgJyA6ICcnKTtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRkaWZmU3RyaW5nICs9ICdVcGRhdGVkOiBcXG4nICsgb2JqU3RyaW5nICsgJ1xcbic7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRkaWZmU3RyaW5nICs9ICdVcGRhdGVkOiBcXG4nICsgdG9UaXRsZUNhc2Uoa2V5LnJlcGxhY2UoL18vZywgJyAnKSkgKyAnOiBcIicgKyBkaWZmWyd1cGRhdGVkJ11ba2V5XSArICdcIiB0byBcIicgKyBuZXdEaWZmWyd1cGRhdGVkJ11bbmV3S2V5XSArICdcIicgKyAoaSA8IE9iamVjdC5rZXlzKGRpZmZbJ3VwZGF0ZWQnXSkubGVuZ3RoIC0gMSA/ICdcXG4nIDogJycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRcblx0cmV0dXJuIGRpZmZTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUNyb25TdHJpbmdGcm9tRGF0ZShkYXRlOiBEYXRlKSB7XG5cdHJldHVybiBkYXRlLmdldFNlY29uZHMoKSArICcgJyArIGRhdGUuZ2V0TWludXRlcygpICsgJyAnICsgZGF0ZS5nZXRIb3VycygpICsgJyAnICsgZGF0ZS5nZXREYXRlKCkgKyAnICcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgKyAnICcgKyBkYXRlLmdldERheSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gczJhYihzKSB7XG5cdGxldCBidWYgPSBuZXcgQXJyYXlCdWZmZXIocy5sZW5ndGgpO1xuXHRsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG5cdC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG5cdGZvciAobGV0IGkgPSAwOyBpICE9PSBzLmxlbmd0aDsgKytpKSB7IHZpZXdbaV0gPSBzLmNoYXJDb2RlQXQoaSkgJiAweEZGOyB9XG5cdHJldHVybiBidWY7IFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VEZWVwKHRhcmdldCwgLi4uc291cmNlcykge1xuXHRpZiAoIXNvdXJjZXMubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIHRhcmdldDtcblx0fVxuXHRjb25zdCBzb3VyY2UgPSBzb3VyY2VzLnNoaWZ0KCk7XG5cblx0aWYgKGlzT2JqZWN0KHRhcmdldCkgJiYgaXNPYmplY3Qoc291cmNlKSkge1xuXHRcdGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuXHRcdFx0aWYgKGlzT2JqZWN0KHNvdXJjZVtrZXldKSkge1xuXHRcdFx0XHRpZiAoIXRhcmdldFtrZXldKSB7XG5cdFx0XHRcdFx0T2JqZWN0LmFzc2lnbih0YXJnZXQsIHsgW2tleV06IHt9IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1lcmdlRGVlcCh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuXHRcdFx0fSBcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKHRhcmdldCwgeyBba2V5XTogc291cmNlW2tleV0gfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1lcmdlRGVlcCh0YXJnZXQsIC4uLnNvdXJjZXMpO1xufSJdfQ==
|