slick-components 5.0.28 → 17.0.2
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 → esm2022}/public-api.mjs +44 -44
- package/{esm2020 → esm2022}/slick-accordion/slick-accordion-item-header.component.mjs +14 -14
- package/esm2022/slick-accordion/slick-accordion-item.component.mjs +92 -0
- package/{esm2020 → esm2022}/slick-accordion/slick-accordion.component.mjs +80 -80
- package/{esm2020 → esm2022}/slick-accordion/slick-accordion.module.mjs +23 -23
- package/{esm2020 → esm2022}/slick-auto-complete/slick-auto-complete-list-item-template.directive.mjs +22 -22
- package/esm2022/slick-auto-complete/slick-auto-complete.component.mjs +388 -0
- package/{esm2020 → esm2022}/slick-auto-complete/slick-auto-complete.module.mjs +25 -25
- package/esm2022/slick-button-spinner/slick-button-spinner.component.mjs +175 -0
- package/{esm2020 → esm2022}/slick-button-spinner/slick-button-spinner.module.mjs +19 -19
- package/esm2022/slick-calendar/slick-calendar.component.mjs +271 -0
- package/{esm2020 → esm2022}/slick-calendar/slick-calendar.module.mjs +19 -19
- package/{esm2020 → esm2022}/slick-card/slick-card-header.component.mjs +14 -14
- package/esm2022/slick-card/slick-card.component.mjs +42 -0
- package/{esm2020 → esm2022}/slick-card/slick-card.module.mjs +20 -20
- package/{esm2020 → esm2022}/slick-components.mjs +4 -4
- package/{esm2020 → esm2022}/slick-confirm-dialog/slick-confirm-dialog.component.mjs +65 -65
- package/{esm2020 → esm2022}/slick-confirm-dialog/slick-confirm-dialog.module.mjs +20 -20
- package/{esm2020 → esm2022}/slick-container/slick-container-body.component.mjs +24 -24
- package/{esm2020 → esm2022}/slick-container/slick-container-footer.component.mjs +20 -20
- package/{esm2020 → esm2022}/slick-container/slick-container-header.component.mjs +20 -20
- package/{esm2020 → esm2022}/slick-container/slick-container.component.mjs +21 -21
- package/{esm2020 → esm2022}/slick-container/slick-container.module.mjs +25 -25
- package/{esm2020 → esm2022}/slick-context-menu/slick-context-menu-item.component.mjs +14 -14
- package/esm2022/slick-context-menu/slick-context-menu.component.mjs +48 -0
- package/{esm2020 → esm2022}/slick-context-menu/slick-context-menu.module.mjs +20 -20
- package/{esm2020 → esm2022}/slick-currency-mask/slick-currency-mask-options.model.mjs +11 -11
- package/esm2022/slick-currency-mask/slick-currency-mask.directive.mjs +233 -0
- package/{esm2020 → esm2022}/slick-currency-mask/slick-currency-mask.module.mjs +19 -19
- package/esm2022/slick-date-picker/slick-date-picker.component.mjs +278 -0
- package/{esm2020 → esm2022}/slick-date-picker/slick-date-picker.module.mjs +21 -21
- package/{esm2020 → esm2022}/slick-dialog/slick-dialog-footer.component.mjs +24 -24
- package/esm2022/slick-dialog/slick-dialog.component.mjs +294 -0
- package/{esm2020 → esm2022}/slick-dialog/slick-dialog.module.mjs +23 -23
- package/esm2022/slick-dialog/slick-dialog.service.mjs +68 -0
- package/{esm2020 → esm2022}/slick-drag-drop/slick-drag-drop.directive.mjs +13 -13
- package/{esm2020 → esm2022}/slick-drag-drop/slick-drag-drop.module.mjs +21 -21
- package/{esm2020 → esm2022}/slick-drag-drop/slick-draggable.directive.mjs +13 -13
- package/{esm2020 → esm2022}/slick-drop-down/slick-drop-down-button.model.mjs +7 -7
- package/esm2022/slick-drop-down/slick-drop-down.component.mjs +447 -0
- package/{esm2020 → esm2022}/slick-drop-down/slick-drop-down.module.mjs +24 -24
- package/esm2022/slick-drop-down/slick-drop-down.service.mjs +55 -0
- package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list-grab.directive.mjs +18 -18
- package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list-item.directive.mjs +18 -18
- package/esm2022/slick-drop-list/slick-drop-list.directive.mjs +215 -0
- package/{esm2020 → esm2022}/slick-drop-list/slick-drop-list.module.mjs +23 -23
- package/{esm2020 → esm2022}/slick-email-viewer/slick-email-viewer-dialog.component.mjs +62 -62
- package/esm2022/slick-email-viewer/slick-email-viewer.component.mjs +42 -0
- package/{esm2020 → esm2022}/slick-email-viewer/slick-email-viewer.module.mjs +26 -26
- package/{esm2020 → esm2022}/slick-emailer/slick-emailer-address.model.mjs +2 -2
- package/esm2022/slick-emailer/slick-emailer-dialog.component.mjs +153 -0
- package/esm2022/slick-emailer/slick-emailer.component.mjs +235 -0
- package/{esm2020 → esm2022}/slick-emailer/slick-emailer.model.mjs +2 -2
- package/{esm2020 → esm2022}/slick-emailer/slick-emailer.module.mjs +29 -29
- package/esm2022/slick-file-drop/slick-file-drop.component.mjs +156 -0
- package/{esm2020 → esm2022}/slick-file-drop/slick-file-drop.module.mjs +20 -20
- package/esm2022/slick-file-list/slick-file-list-item.component.mjs +190 -0
- package/esm2022/slick-file-list/slick-file-list.component.mjs +130 -0
- package/{esm2020 → esm2022}/slick-file-list/slick-file-list.module.mjs +23 -23
- package/{esm2020 → esm2022}/slick-file-model/slick-file.model.mjs +2 -2
- package/esm2022/slick-google-address-search/slick-google-address-search.directive.mjs +78 -0
- package/{esm2020 → esm2022}/slick-google-address-search/slick-google-address-search.module.mjs +19 -19
- package/esm2022/slick-google-map/slick-google-map-dialog.component.mjs +50 -0
- package/esm2022/slick-google-map/slick-google-map.component.mjs +48 -0
- package/{esm2020 → esm2022}/slick-google-map/slick-google-map.module.mjs +22 -22
- package/{esm2020 → esm2022}/slick-grid/slick-grid-column-template.directive.mjs +19 -19
- package/{esm2020 → esm2022}/slick-grid/slick-grid-column.model.mjs +66 -66
- package/{esm2020 → esm2022}/slick-grid/slick-grid-favorite.model.mjs +2 -2
- package/{esm2020 → esm2022}/slick-grid/slick-grid-request.model.mjs +2 -2
- package/{esm2020 → esm2022}/slick-grid/slick-grid-response.model.mjs +2 -2
- package/{esm2020 → esm2022}/slick-grid/slick-grid-sanitize.pipe.mjs +20 -20
- package/esm2022/slick-grid/slick-grid.component.mjs +793 -0
- package/{esm2020 → esm2022}/slick-grid/slick-grid.module.mjs +43 -43
- package/{esm2020 → esm2022}/slick-grid/slick-grid.options.mjs +11 -11
- package/esm2022/slick-grid/slick-grid.service.mjs +66 -0
- package/esm2022/slick-multi-select/slick-multi-select.component.mjs +415 -0
- package/{esm2020 → esm2022}/slick-multi-select/slick-multi-select.module.mjs +20 -20
- package/esm2022/slick-multi-select/slick-multi-select.service.mjs +78 -0
- package/esm2022/slick-ordered-list/slick-ordered-list.component.mjs +200 -0
- package/{esm2020 → esm2022}/slick-ordered-list/slick-ordered-list.module.mjs +20 -20
- package/esm2022/slick-paging/slick-paging.component.mjs +185 -0
- package/{esm2020 → esm2022}/slick-paging/slick-paging.module.mjs +19 -19
- package/esm2022/slick-photo-gallery/slick-photo-gallery.component.mjs +98 -0
- package/{esm2020 → esm2022}/slick-photo-gallery/slick-photo-gallery.model.mjs +2 -2
- package/{esm2020 → esm2022}/slick-photo-gallery/slick-photo-gallery.module.mjs +21 -21
- package/{esm2020 → esm2022}/slick-pick-list/slick-pick-list.component.mjs +84 -84
- package/{esm2020 → esm2022}/slick-pick-list/slick-pick-list.module.mjs +20 -20
- package/esm2022/slick-popover/slick-popover.component.mjs +204 -0
- package/{esm2020 → esm2022}/slick-popover/slick-popover.module.mjs +19 -19
- package/esm2022/slick-profile-picture/slick-profile-picture.component.mjs +267 -0
- package/{esm2020 → esm2022}/slick-profile-picture/slick-profile-picture.module.mjs +20 -20
- package/{esm2020 → esm2022}/slick-progress-bar/slick-progress-bar.module.mjs +18 -18
- package/esm2022/slick-progress-bar/slick-progress-bar.service.mjs +53 -0
- package/{esm2020 → esm2022}/slick-screen-blocker/slick-screen-blocker.module.mjs +18 -18
- package/esm2022/slick-screen-blocker/slick-screen-blocker.service.mjs +83 -0
- package/esm2022/slick-search-bar/slick-search-bar.component.mjs +130 -0
- package/{esm2020 → esm2022}/slick-search-bar/slick-search-bar.module.mjs +20 -20
- package/{esm2020 → esm2022}/slick-slider/slick-slider-tick.model.mjs +2 -2
- package/esm2022/slick-slider/slick-slider.component.mjs +90 -0
- package/{esm2020 → esm2022}/slick-slider/slick-slider.module.mjs +20 -20
- package/{esm2020 → esm2022}/slick-split-screen/slick-screen-split-left-content.component.mjs +15 -15
- package/{esm2020 → esm2022}/slick-split-screen/slick-screen-split-right-content.component.mjs +15 -15
- package/esm2022/slick-split-screen/slick-split-screen.component.mjs +159 -0
- package/{esm2020 → esm2022}/slick-split-screen/slick-split-screen.module.mjs +21 -21
- package/esm2022/slick-star-rating/slick-star-rating.component.mjs +91 -0
- package/{esm2020 → esm2022}/slick-star-rating/slick-star-rating.module.mjs +21 -21
- package/{esm2020 → esm2022}/slick-tabs/slick-tab-header.component.mjs +28 -28
- package/esm2022/slick-tabs/slick-tab.component.mjs +63 -0
- package/{esm2020 → esm2022}/slick-tabs/slick-tab.model.mjs +2 -2
- package/esm2022/slick-tabs/slick-tabs.component.mjs +107 -0
- package/{esm2020 → esm2022}/slick-tabs/slick-tabs.module.mjs +23 -23
- package/{esm2020 → esm2022}/slick-toast/slick-toast.module.mjs +18 -18
- package/esm2022/slick-toast/slick-toast.service.mjs +88 -0
- package/esm2022/slick-tree-view/slick-tree-node.model.mjs +18 -0
- package/esm2022/slick-tree-view/slick-tree-view.component.mjs +293 -0
- package/{esm2020 → esm2022}/slick-tree-view/slick-tree-view.module.mjs +22 -22
- package/esm2022/slick-type-ahead/slick-type-ahead.directive.mjs +164 -0
- package/{esm2020 → esm2022}/slick-type-ahead/slick-type-ahead.module.mjs +18 -18
- package/esm2022/slick-validation-indicator/slick-validation-indicator.directive.mjs +66 -0
- package/{esm2020 → esm2022}/slick-validation-indicator/slick-validation-indicator.module.mjs +19 -19
- package/esm2022/utils/slick-function-lock.service.mjs +55 -0
- package/esm2022/utils/slick-init.service.mjs +49 -0
- package/{esm2020 → esm2022}/utils/slick-log.service.mjs +23 -23
- package/{esm2020 → esm2022}/utils/slick-sleep.service.mjs +14 -14
- package/esm2022/utils/slick-utils.service.mjs +247 -0
- package/{fesm2020 → fesm2022}/slick-components.mjs +8495 -8495
- package/fesm2022/slick-components.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/package.json +11 -17
- package/public-api.d.ts +41 -41
- package/slick-accordion/slick-accordion-item-header.component.d.ts +5 -5
- package/slick-accordion/slick-accordion-item.component.d.ts +24 -24
- package/slick-accordion/slick-accordion.component.d.ts +22 -22
- package/slick-accordion/slick-accordion.module.d.ts +16 -16
- package/slick-auto-complete/slick-auto-complete-list-item-template.directive.d.ts +10 -10
- package/slick-auto-complete/slick-auto-complete.component.d.ts +60 -60
- package/slick-auto-complete/slick-auto-complete.module.d.ts +15 -15
- package/slick-button-spinner/slick-button-spinner.component.d.ts +28 -28
- package/slick-button-spinner/slick-button-spinner.module.d.ts +10 -10
- package/slick-calendar/slick-calendar.component.d.ts +53 -53
- package/slick-calendar/slick-calendar.module.d.ts +10 -10
- package/slick-card/slick-card-header.component.d.ts +5 -5
- package/slick-card/slick-card.component.d.ts +13 -13
- package/slick-card/slick-card.module.d.ts +12 -12
- package/slick-confirm-dialog/slick-confirm-dialog.component.d.ts +26 -26
- package/slick-confirm-dialog/slick-confirm-dialog.module.d.ts +11 -11
- package/slick-container/slick-container-body.component.d.ts +7 -7
- package/slick-container/slick-container-footer.component.d.ts +6 -6
- package/slick-container/slick-container-header.component.d.ts +6 -6
- package/slick-container/slick-container.component.d.ts +8 -8
- package/slick-container/slick-container.module.d.ts +19 -19
- package/slick-context-menu/slick-context-menu-item.component.d.ts +5 -5
- package/slick-context-menu/slick-context-menu.component.d.ts +13 -13
- package/slick-context-menu/slick-context-menu.module.d.ts +12 -12
- package/slick-currency-mask/slick-currency-mask-options.model.d.ts +10 -10
- package/slick-currency-mask/slick-currency-mask.directive.d.ts +29 -29
- package/slick-currency-mask/slick-currency-mask.module.d.ts +10 -10
- package/slick-date-picker/slick-date-picker.component.d.ts +45 -45
- package/slick-date-picker/slick-date-picker.module.d.ts +12 -12
- package/slick-dialog/slick-dialog-footer.component.d.ts +7 -7
- package/slick-dialog/slick-dialog.component.d.ts +56 -56
- package/slick-dialog/slick-dialog.module.d.ts +13 -13
- package/slick-dialog/slick-dialog.service.d.ts +17 -17
- package/slick-drag-drop/slick-drag-drop.directive.d.ts +5 -5
- package/slick-drag-drop/slick-drag-drop.module.d.ts +13 -13
- package/slick-drag-drop/slick-draggable.directive.d.ts +5 -5
- package/slick-drop-down/slick-drop-down-button.model.d.ts +13 -13
- package/slick-drop-down/slick-drop-down.component.d.ts +78 -78
- package/slick-drop-down/slick-drop-down.module.d.ts +14 -14
- package/slick-drop-down/slick-drop-down.service.d.ts +12 -12
- package/slick-drop-list/slick-drop-list-grab.directive.d.ts +7 -7
- package/slick-drop-list/slick-drop-list-item.directive.d.ts +7 -7
- package/slick-drop-list/slick-drop-list.directive.d.ts +33 -33
- package/slick-drop-list/slick-drop-list.module.d.ts +16 -16
- package/slick-email-viewer/slick-email-viewer-dialog.component.d.ts +19 -19
- package/slick-email-viewer/slick-email-viewer.component.d.ts +13 -13
- package/slick-email-viewer/slick-email-viewer.module.d.ts +18 -18
- package/slick-emailer/slick-emailer-address.model.d.ts +10 -10
- package/slick-emailer/slick-emailer-dialog.component.d.ts +33 -33
- package/slick-emailer/slick-emailer.component.d.ts +50 -50
- package/slick-emailer/slick-emailer.model.d.ts +16 -16
- package/slick-emailer/slick-emailer.module.d.ts +21 -21
- package/slick-file-drop/slick-file-drop.component.d.ts +25 -25
- package/slick-file-drop/slick-file-drop.module.d.ts +11 -11
- package/slick-file-list/slick-file-list-item.component.d.ts +37 -37
- package/slick-file-list/slick-file-list.component.d.ts +31 -31
- package/slick-file-list/slick-file-list.module.d.ts +14 -14
- package/slick-file-model/slick-file.model.d.ts +28 -28
- package/slick-google-address-search/slick-google-address-search.directive.d.ts +16 -17
- package/slick-google-address-search/slick-google-address-search.module.d.ts +10 -10
- package/slick-google-map/slick-google-map-dialog.component.d.ts +15 -16
- package/slick-google-map/slick-google-map.component.d.ts +17 -18
- package/slick-google-map/slick-google-map.module.d.ts +14 -14
- package/slick-grid/slick-grid-column-template.directive.d.ts +9 -9
- package/slick-grid/slick-grid-column.model.d.ts +64 -64
- package/slick-grid/slick-grid-favorite.model.d.ts +9 -9
- package/slick-grid/slick-grid-request.model.d.ts +33 -33
- package/slick-grid/slick-grid-response.model.d.ts +8 -8
- package/slick-grid/slick-grid-sanitize.pipe.d.ts +10 -10
- package/slick-grid/slick-grid.component.d.ts +119 -119
- package/slick-grid/slick-grid.module.d.ts +32 -32
- package/slick-grid/slick-grid.options.d.ts +35 -35
- package/slick-grid/slick-grid.service.d.ts +12 -12
- package/slick-multi-select/slick-multi-select.component.d.ts +69 -69
- package/slick-multi-select/slick-multi-select.module.d.ts +11 -11
- package/slick-multi-select/slick-multi-select.service.d.ts +9 -9
- package/slick-ordered-list/slick-ordered-list.component.d.ts +28 -28
- package/slick-ordered-list/slick-ordered-list.module.d.ts +11 -11
- package/slick-paging/slick-paging.component.d.ts +31 -31
- package/slick-paging/slick-paging.module.d.ts +10 -10
- package/slick-photo-gallery/slick-photo-gallery.component.d.ts +26 -26
- package/slick-photo-gallery/slick-photo-gallery.model.d.ts +8 -8
- package/slick-photo-gallery/slick-photo-gallery.module.d.ts +12 -12
- package/slick-pick-list/slick-pick-list.component.d.ts +24 -24
- package/slick-pick-list/slick-pick-list.module.d.ts +11 -11
- package/slick-popover/slick-popover.component.d.ts +39 -39
- package/slick-popover/slick-popover.module.d.ts +10 -10
- package/slick-profile-picture/slick-profile-picture.component.d.ts +29 -29
- package/slick-profile-picture/slick-profile-picture.module.d.ts +11 -11
- package/slick-progress-bar/slick-progress-bar.module.d.ts +9 -9
- package/slick-progress-bar/slick-progress-bar.service.d.ts +12 -12
- package/slick-screen-blocker/slick-screen-blocker.module.d.ts +9 -9
- package/slick-screen-blocker/slick-screen-blocker.service.d.ts +16 -16
- package/slick-search-bar/slick-search-bar.component.d.ts +37 -37
- package/slick-search-bar/slick-search-bar.module.d.ts +11 -11
- package/slick-slider/slick-slider-tick.model.d.ts +10 -10
- package/slick-slider/slick-slider.component.d.ts +29 -29
- package/slick-slider/slick-slider.module.d.ts +11 -11
- package/slick-split-screen/slick-screen-split-left-content.component.d.ts +6 -6
- package/slick-split-screen/slick-screen-split-right-content.component.d.ts +6 -6
- package/slick-split-screen/slick-split-screen.component.d.ts +40 -40
- package/slick-split-screen/slick-split-screen.module.d.ts +14 -14
- package/slick-star-rating/slick-star-rating.component.d.ts +28 -28
- package/slick-star-rating/slick-star-rating.module.d.ts +12 -12
- package/slick-tabs/slick-tab-header.component.d.ts +12 -12
- package/slick-tabs/slick-tab.component.d.ts +22 -22
- package/slick-tabs/slick-tab.model.d.ts +10 -10
- package/slick-tabs/slick-tabs.component.d.ts +25 -25
- package/slick-tabs/slick-tabs.module.d.ts +16 -16
- package/slick-toast/slick-toast.module.d.ts +9 -9
- package/slick-toast/slick-toast.service.d.ts +16 -16
- package/slick-tree-view/slick-tree-node.model.d.ts +30 -30
- package/slick-tree-view/slick-tree-view.component.d.ts +62 -62
- package/slick-tree-view/slick-tree-view.module.d.ts +13 -13
- package/slick-type-ahead/slick-type-ahead.directive.d.ts +25 -25
- package/slick-type-ahead/slick-type-ahead.module.d.ts +9 -9
- package/slick-validation-indicator/slick-validation-indicator.directive.d.ts +22 -22
- package/slick-validation-indicator/slick-validation-indicator.module.d.ts +10 -10
- package/utils/slick-function-lock.service.d.ts +9 -9
- package/utils/slick-init.service.d.ts +21 -21
- package/utils/slick-log.service.d.ts +9 -9
- package/utils/slick-sleep.service.d.ts +6 -6
- package/utils/slick-utils.service.d.ts +24 -24
- package/esm2020/slick-accordion/slick-accordion-item.component.mjs +0 -92
- package/esm2020/slick-auto-complete/slick-auto-complete.component.mjs +0 -388
- package/esm2020/slick-button-spinner/slick-button-spinner.component.mjs +0 -175
- package/esm2020/slick-calendar/slick-calendar.component.mjs +0 -271
- package/esm2020/slick-card/slick-card.component.mjs +0 -42
- package/esm2020/slick-context-menu/slick-context-menu.component.mjs +0 -48
- package/esm2020/slick-currency-mask/slick-currency-mask.directive.mjs +0 -233
- package/esm2020/slick-date-picker/slick-date-picker.component.mjs +0 -278
- package/esm2020/slick-dialog/slick-dialog.component.mjs +0 -294
- package/esm2020/slick-dialog/slick-dialog.service.mjs +0 -68
- package/esm2020/slick-drop-down/slick-drop-down.component.mjs +0 -447
- package/esm2020/slick-drop-down/slick-drop-down.service.mjs +0 -55
- package/esm2020/slick-drop-list/slick-drop-list.directive.mjs +0 -215
- package/esm2020/slick-email-viewer/slick-email-viewer.component.mjs +0 -42
- package/esm2020/slick-emailer/slick-emailer-dialog.component.mjs +0 -153
- package/esm2020/slick-emailer/slick-emailer.component.mjs +0 -235
- package/esm2020/slick-file-drop/slick-file-drop.component.mjs +0 -156
- package/esm2020/slick-file-list/slick-file-list-item.component.mjs +0 -190
- package/esm2020/slick-file-list/slick-file-list.component.mjs +0 -130
- package/esm2020/slick-google-address-search/slick-google-address-search.directive.mjs +0 -78
- package/esm2020/slick-google-map/slick-google-map-dialog.component.mjs +0 -50
- package/esm2020/slick-google-map/slick-google-map.component.mjs +0 -48
- package/esm2020/slick-grid/slick-grid.component.mjs +0 -793
- package/esm2020/slick-grid/slick-grid.service.mjs +0 -66
- package/esm2020/slick-multi-select/slick-multi-select.component.mjs +0 -415
- package/esm2020/slick-multi-select/slick-multi-select.service.mjs +0 -78
- package/esm2020/slick-ordered-list/slick-ordered-list.component.mjs +0 -200
- package/esm2020/slick-paging/slick-paging.component.mjs +0 -185
- package/esm2020/slick-photo-gallery/slick-photo-gallery.component.mjs +0 -98
- package/esm2020/slick-popover/slick-popover.component.mjs +0 -204
- package/esm2020/slick-profile-picture/slick-profile-picture.component.mjs +0 -267
- package/esm2020/slick-progress-bar/slick-progress-bar.service.mjs +0 -53
- package/esm2020/slick-screen-blocker/slick-screen-blocker.service.mjs +0 -83
- package/esm2020/slick-search-bar/slick-search-bar.component.mjs +0 -130
- package/esm2020/slick-slider/slick-slider.component.mjs +0 -90
- package/esm2020/slick-split-screen/slick-split-screen.component.mjs +0 -159
- package/esm2020/slick-star-rating/slick-star-rating.component.mjs +0 -91
- package/esm2020/slick-tabs/slick-tab.component.mjs +0 -63
- package/esm2020/slick-tabs/slick-tabs.component.mjs +0 -107
- package/esm2020/slick-toast/slick-toast.service.mjs +0 -88
- package/esm2020/slick-tree-view/slick-tree-node.model.mjs +0 -18
- package/esm2020/slick-tree-view/slick-tree-view.component.mjs +0 -293
- package/esm2020/slick-type-ahead/slick-type-ahead.directive.mjs +0 -164
- package/esm2020/slick-validation-indicator/slick-validation-indicator.directive.mjs +0 -66
- package/esm2020/utils/slick-function-lock.service.mjs +0 -55
- package/esm2020/utils/slick-init.service.mjs +0 -49
- package/esm2020/utils/slick-utils.service.mjs +0 -247
- package/fesm2015/slick-components.mjs +0 -9084
- package/fesm2015/slick-components.mjs.map +0 -1
- package/fesm2020/slick-components.mjs.map +0 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, forwardRef, ViewChild } from "@angular/core";
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
|
+
import { SlickUtilsService } from "../utils/slick-utils.service";
|
|
4
|
+
import { SlickFunctionLockService } from "../utils/slick-function-lock.service";
|
|
5
|
+
import { SlickEmailerAddressModel } from "./slick-emailer-address.model";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../utils/slick-function-lock.service";
|
|
8
|
+
import * as i2 from "@angular/common";
|
|
9
|
+
import * as i3 from "@angular/forms";
|
|
10
|
+
import * as i4 from "../slick-auto-complete/slick-auto-complete.component";
|
|
11
|
+
import * as i5 from "../slick-auto-complete/slick-auto-complete-list-item-template.directive";
|
|
12
|
+
import * as i6 from "../slick-button-spinner/slick-button-spinner.component";
|
|
13
|
+
import * as i7 from "../slick-file-drop/slick-file-drop.component";
|
|
14
|
+
import * as i8 from "../slick-file-list/slick-file-list.component";
|
|
15
|
+
export class SlickEmailerComponent {
|
|
16
|
+
constructor(slickFunctionLockService, changeDetector) {
|
|
17
|
+
this.slickFunctionLockService = slickFunctionLockService;
|
|
18
|
+
this.changeDetector = changeDetector;
|
|
19
|
+
this.showButtons = true;
|
|
20
|
+
this.bodyHeight = "180px";
|
|
21
|
+
this.toAddressSearchEmitter = new EventEmitter();
|
|
22
|
+
this.sendEmailClickEmitter = new EventEmitter();
|
|
23
|
+
this.cancelEmailClickEmitter = new EventEmitter();
|
|
24
|
+
this.isSubmitted = false;
|
|
25
|
+
this.tinyMCEInitialized = false;
|
|
26
|
+
this.spinnerStatus = null;
|
|
27
|
+
this.propagateChange = (_) => { };
|
|
28
|
+
this.uuid = SlickUtilsService.newGuid();
|
|
29
|
+
}
|
|
30
|
+
async ngAfterViewInit() {
|
|
31
|
+
await this.initTinyMCE();
|
|
32
|
+
const body = (this.emailerModel) ? (this.emailerModel.body || '') : '';
|
|
33
|
+
tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.removeTinyMCE();
|
|
37
|
+
}
|
|
38
|
+
// this is the initial value set to the component
|
|
39
|
+
async writeValue(obj) {
|
|
40
|
+
if (obj) {
|
|
41
|
+
this.spinnerStatus = "reset";
|
|
42
|
+
this.emailerModel = obj;
|
|
43
|
+
if (!this.emailerModel.attachments)
|
|
44
|
+
this.emailerModel.attachments = [];
|
|
45
|
+
if (!this.emailerModel.toEmailAddresses)
|
|
46
|
+
this.emailerModel.toEmailAddresses = [];
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.emailerModel = null;
|
|
50
|
+
}
|
|
51
|
+
await this.initTinyMCE();
|
|
52
|
+
const body = (this.emailerModel) ? (this.emailerModel.body || '') : '';
|
|
53
|
+
tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);
|
|
54
|
+
}
|
|
55
|
+
// registers 'fn' that will be fired when changes are made
|
|
56
|
+
// this is how we emit the changes back to the form
|
|
57
|
+
registerOnChange(fn) {
|
|
58
|
+
this.propagateChange = fn;
|
|
59
|
+
}
|
|
60
|
+
// not used, used for touch input
|
|
61
|
+
registerOnTouched() { }
|
|
62
|
+
toAddressSearch(searchText) {
|
|
63
|
+
this.toAddressSearchEmitter.emit(searchText);
|
|
64
|
+
}
|
|
65
|
+
onSelectEmailAddress(emailerAddressModel) {
|
|
66
|
+
this.emailerModel.toEmailAddresses.push(emailerAddressModel);
|
|
67
|
+
this.toEmailAddress = null;
|
|
68
|
+
}
|
|
69
|
+
onFreeformTextSelect(text) {
|
|
70
|
+
const freeformEmailAddress = new SlickEmailerAddressModel();
|
|
71
|
+
freeformEmailAddress.displayName = text;
|
|
72
|
+
freeformEmailAddress.emailAddress = text;
|
|
73
|
+
this.emailerModel.toEmailAddresses.push(freeformEmailAddress);
|
|
74
|
+
this.toEmailAddress = null;
|
|
75
|
+
}
|
|
76
|
+
deleteEmailAddress(idx) {
|
|
77
|
+
this.emailerModel.toEmailAddresses.splice(idx, 1);
|
|
78
|
+
}
|
|
79
|
+
onAttachmentsChanged(attachments) {
|
|
80
|
+
this.emailerModel.attachments = this.emailerModel.attachments.concat(attachments);
|
|
81
|
+
}
|
|
82
|
+
validate() {
|
|
83
|
+
this.isSubmitted = true;
|
|
84
|
+
if (this.emailerModel.toEmailAddresses.length === 0)
|
|
85
|
+
return false;
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
getEmailAddresses(emailerModel) {
|
|
89
|
+
let slickEmailerAddresses = emailerModel.toEmailAddresses || [];
|
|
90
|
+
if (this.toEmailAddress) {
|
|
91
|
+
const scrubbedToEmailAddress = this.toEmailAddress.replace(",", ";").replace(/\s/g, ";");
|
|
92
|
+
const emailAddressesToAddStrings = scrubbedToEmailAddress.split(";").filter(x => x !== '');
|
|
93
|
+
const emailAddressesToAdd = emailAddressesToAddStrings.map(x => {
|
|
94
|
+
const slickEmailerAddressModel = new SlickEmailerAddressModel();
|
|
95
|
+
slickEmailerAddressModel.contactId = 0;
|
|
96
|
+
slickEmailerAddressModel.displayName = x;
|
|
97
|
+
slickEmailerAddressModel.emailAddress = x;
|
|
98
|
+
return slickEmailerAddressModel;
|
|
99
|
+
});
|
|
100
|
+
slickEmailerAddresses = slickEmailerAddresses.concat(emailAddressesToAdd);
|
|
101
|
+
}
|
|
102
|
+
this.toEmailAddress = null;
|
|
103
|
+
return slickEmailerAddresses;
|
|
104
|
+
}
|
|
105
|
+
async setBody(body) {
|
|
106
|
+
try {
|
|
107
|
+
await this.slickFunctionLockService.lock("SLICK_EMAILER_SET_BODY");
|
|
108
|
+
await this.initTinyMCE();
|
|
109
|
+
const tinyMCE = tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`);
|
|
110
|
+
if (!tinyMCE)
|
|
111
|
+
console.error("tinyMCE not initialized");
|
|
112
|
+
tinyMCE.setContent(body);
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
this.slickFunctionLockService.release("SLICK_EMAILER_SET_BODY");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
getBody() {
|
|
119
|
+
return tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).getContent();
|
|
120
|
+
}
|
|
121
|
+
onSendEmail() {
|
|
122
|
+
this.emailerModel.toEmailAddresses = this.getEmailAddresses(this.emailerModel);
|
|
123
|
+
if (this.validate() === false)
|
|
124
|
+
return;
|
|
125
|
+
this.emailerModel.body = this.getBody();
|
|
126
|
+
this.spinnerStatus = "spin";
|
|
127
|
+
if (this.sendEmailClickEmitter)
|
|
128
|
+
this.sendEmailClickEmitter.emit(this.emailerModel);
|
|
129
|
+
}
|
|
130
|
+
emailSent() {
|
|
131
|
+
this.spinnerStatus = "ok";
|
|
132
|
+
}
|
|
133
|
+
emailError() {
|
|
134
|
+
this.spinnerStatus = "error";
|
|
135
|
+
}
|
|
136
|
+
onCancelEmail() {
|
|
137
|
+
if (this.cancelEmailClickEmitter)
|
|
138
|
+
this.cancelEmailClickEmitter.emit();
|
|
139
|
+
}
|
|
140
|
+
async dialogInit() {
|
|
141
|
+
this.removeTinyMCE();
|
|
142
|
+
await this.initTinyMCE();
|
|
143
|
+
const body = (this.emailerModel) ? (this.emailerModel.body || '') : '';
|
|
144
|
+
tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);
|
|
145
|
+
}
|
|
146
|
+
async initTinyMCE() {
|
|
147
|
+
return new Promise(async (resolve) => {
|
|
148
|
+
await this.slickFunctionLockService.lock("SLICK_EMAILER_INIT_TINY_MCE");
|
|
149
|
+
if (this.tinyMCEUuid) {
|
|
150
|
+
this.slickFunctionLockService.release("SLICK_EMAILER_INIT_TINY_MCE");
|
|
151
|
+
resolve();
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
this.tinyMCEUuid = SlickUtilsService.newGuid();
|
|
155
|
+
const tinyMCEContainer = this.tinyMCEContainerRef.nativeElement;
|
|
156
|
+
const tinyMCETextarea = document.createElement("textarea");
|
|
157
|
+
tinyMCETextarea.id = `emailer_tinymce_${this.tinyMCEUuid}`;
|
|
158
|
+
tinyMCETextarea.style.minHeight = "300px";
|
|
159
|
+
tinyMCETextarea.style.maxHeight = "300px";
|
|
160
|
+
tinyMCEContainer.appendChild(tinyMCETextarea);
|
|
161
|
+
tinymce.init({
|
|
162
|
+
selector: `#emailer_tinymce_${this.tinyMCEUuid}`,
|
|
163
|
+
branding: false,
|
|
164
|
+
menubar: 'edit insert format tools',
|
|
165
|
+
plugins: 'link image imagetools code',
|
|
166
|
+
toolbar: 'fontselect | fontsizeselect | styleselect | bold italic underline | indent outdent | bullist | alignleft aligncenter alignright | code | image',
|
|
167
|
+
fontsize_formats: "8px 10px 12px 14px 18px 24px 36px",
|
|
168
|
+
height: this.bodyHeight,
|
|
169
|
+
convert_urls: false,
|
|
170
|
+
setup: (ed) => {
|
|
171
|
+
ed.on('init', (args) => {
|
|
172
|
+
ed.setContent((this.emailerModel) ? (this.emailerModel.body || '') : '');
|
|
173
|
+
this.tinyMCEInitialized = true;
|
|
174
|
+
this.slickFunctionLockService.release("SLICK_EMAILER_INIT_TINY_MCE");
|
|
175
|
+
resolve();
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
async removeTinyMCE() {
|
|
183
|
+
if (this.tinyMCEUuid) {
|
|
184
|
+
const tinyMCE = tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`);
|
|
185
|
+
if (tinyMCE)
|
|
186
|
+
tinyMCE.remove();
|
|
187
|
+
const tinyMCEContainer = this.tinyMCEContainerRef.nativeElement;
|
|
188
|
+
tinyMCEContainer.innerHTML = "";
|
|
189
|
+
this.tinyMCEInitialized = false;
|
|
190
|
+
this.tinyMCEUuid = null;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickEmailerComponent, deps: [{ token: i1.SlickFunctionLockService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
194
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: SlickEmailerComponent, selector: "slick-emailer", inputs: { toEmailAddressList: "toEmailAddressList", showButtons: "showButtons", bodyHeight: "bodyHeight" }, outputs: { toAddressSearchEmitter: "toAddressSearch", sendEmailClickEmitter: "sendEmailClick", cancelEmailClickEmitter: "cancelEmailClick" }, providers: [
|
|
195
|
+
{
|
|
196
|
+
provide: NG_VALUE_ACCESSOR,
|
|
197
|
+
useExisting: forwardRef((() => SlickEmailerComponent)),
|
|
198
|
+
multi: true,
|
|
199
|
+
},
|
|
200
|
+
SlickFunctionLockService
|
|
201
|
+
], viewQueries: [{ propertyName: "tinyMCEContainerRef", first: true, predicate: ["tinyMCEContainerRef"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"emailerModel\" id=\"slick-emailer_{{uuid}}\" class=\"slick-emailer\">\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <div *ngIf=\"isSubmitted === true && emailerModel.toEmailAddresses.length === 0\" class=\"errorWrapper showIcons\"><div class=\"text-danger\">Email must have at least one email address</div></div>\r\n <div class=\"input-group\">\r\n <span class=\"input-group-text\"><span class=\"fas fa-search\"></span></span>\r\n <input class=\"form-control\" #emailAddressAutocomplete [(ngModel)]=\"toEmailAddress\" placeholder=\"Email Search...\" autofocus />\r\n </div>\r\n <slick-auto-complete [inputRef]=\"emailAddressAutocomplete\" textField=\"emailDisplay\" [items]=\"toEmailAddressList\" (onRefresh)=\"toAddressSearch($event)\" (onSelect)=\"onSelectEmailAddress($event)\" (onFreeformTextSelect)=\"onFreeformTextSelect($event)\">\r\n <ng-template let-emailDisplay [slickAutoCompleteListItemTemplate]>\r\n <div style='line-height: 1.1em; font-size: 12px;'>\r\n {{emailDisplay.displayName}} [{{emailDisplay.emailAddress}}]\r\n </div>\r\n </ng-template>\r\n </slick-auto-complete>\r\n\r\n <label>To: </label>\r\n <div *ngFor=\"let emailAddress of emailerModel.toEmailAddresses; let idx = index;\" class=\"slick-emailer_email-address alert alert-secondary\">{{emailAddress.displayName}} [{{emailAddress.emailAddress}}]<i (click)=\"deleteEmailAddress(idx)\" class=\"fas fa-times-circle bg-white text-danger ms-1\"></i></div>\r\n </div>\r\n </div>\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Subject:</label>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"emailerModel.subject\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Body:</label>\r\n <div #tinyMCEContainerRef></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Attachments:</label>\r\n <slick-file-drop (filesChanged)=\"onAttachmentsChanged($event)\"></slick-file-drop>\r\n <slick-file-list [(files)]=\"emailerModel.attachments\"></slick-file-list>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showButtons\" class=\"row form-group\">\r\n <div class=\"col-12 text-center\">\r\n <button type=\"button\" style=\"width: 120px; margin-right: 10px;\" [slick-button-spinner]=\"spinnerStatus\" class=\"btn btn-outline-primary\" (click)=\"onSendEmail()\"><i class=\"far fa-envelope\"></i> Send</button>\r\n <button type=\"button\" style=\"width: 120px;\" class=\"btn btn-outline-danger\" (click)=\"onCancelEmail()\"><i class=\"far fa-times\"></i> Cancel</button>\r\n </div>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.SlickAutoCompleteComponent, selector: "slick-auto-complete", inputs: ["inputRef", "searchBarRef", "items", "delay", "selectFirst", "displayTextFieldName", "offset", "listHeight", "listWidth", "allowFreeformText", "showNoItemsFoundDisplay"], outputs: ["onRefresh", "onSelect", "onFreeformTextSelect"] }, { kind: "directive", type: i5.SlickAutoCompleteListItemTemplateDirective, selector: "[slickAutoCompleteListItemTemplate]", inputs: ["type", "slickAutoCompleteListItemTemplate"] }, { kind: "component", type: i6.SlickButtonSpinnerComponent, selector: "[slick-button-spinner]", inputs: ["slick-button-spinner"] }, { kind: "component", type: i7.SlickFileDropComponent, selector: "slick-file-drop", inputs: ["displayText"], outputs: ["filesChanged"] }, { kind: "component", type: i8.SlickFileListComponent, selector: "slick-file-list", inputs: ["files", "allowDelete", "showPhotoGallery", "showCheckboxes", "thumbnailSize", "confirmDelete"], outputs: ["filesEmitter", "onFileDelete", "onFileCheckChanged", "onFileClicked"] }] }); }
|
|
202
|
+
}
|
|
203
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickEmailerComponent, decorators: [{
|
|
204
|
+
type: Component,
|
|
205
|
+
args: [{ selector: 'slick-emailer', providers: [
|
|
206
|
+
{
|
|
207
|
+
provide: NG_VALUE_ACCESSOR,
|
|
208
|
+
useExisting: forwardRef((() => SlickEmailerComponent)),
|
|
209
|
+
multi: true,
|
|
210
|
+
},
|
|
211
|
+
SlickFunctionLockService
|
|
212
|
+
], template: "<div *ngIf=\"emailerModel\" id=\"slick-emailer_{{uuid}}\" class=\"slick-emailer\">\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <div *ngIf=\"isSubmitted === true && emailerModel.toEmailAddresses.length === 0\" class=\"errorWrapper showIcons\"><div class=\"text-danger\">Email must have at least one email address</div></div>\r\n <div class=\"input-group\">\r\n <span class=\"input-group-text\"><span class=\"fas fa-search\"></span></span>\r\n <input class=\"form-control\" #emailAddressAutocomplete [(ngModel)]=\"toEmailAddress\" placeholder=\"Email Search...\" autofocus />\r\n </div>\r\n <slick-auto-complete [inputRef]=\"emailAddressAutocomplete\" textField=\"emailDisplay\" [items]=\"toEmailAddressList\" (onRefresh)=\"toAddressSearch($event)\" (onSelect)=\"onSelectEmailAddress($event)\" (onFreeformTextSelect)=\"onFreeformTextSelect($event)\">\r\n <ng-template let-emailDisplay [slickAutoCompleteListItemTemplate]>\r\n <div style='line-height: 1.1em; font-size: 12px;'>\r\n {{emailDisplay.displayName}} [{{emailDisplay.emailAddress}}]\r\n </div>\r\n </ng-template>\r\n </slick-auto-complete>\r\n\r\n <label>To: </label>\r\n <div *ngFor=\"let emailAddress of emailerModel.toEmailAddresses; let idx = index;\" class=\"slick-emailer_email-address alert alert-secondary\">{{emailAddress.displayName}} [{{emailAddress.emailAddress}}]<i (click)=\"deleteEmailAddress(idx)\" class=\"fas fa-times-circle bg-white text-danger ms-1\"></i></div>\r\n </div>\r\n </div>\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Subject:</label>\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"emailerModel.subject\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Body:</label>\r\n <div #tinyMCEContainerRef></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row form-group\">\r\n <div class=\"col-12\">\r\n <label>Attachments:</label>\r\n <slick-file-drop (filesChanged)=\"onAttachmentsChanged($event)\"></slick-file-drop>\r\n <slick-file-list [(files)]=\"emailerModel.attachments\"></slick-file-list>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showButtons\" class=\"row form-group\">\r\n <div class=\"col-12 text-center\">\r\n <button type=\"button\" style=\"width: 120px; margin-right: 10px;\" [slick-button-spinner]=\"spinnerStatus\" class=\"btn btn-outline-primary\" (click)=\"onSendEmail()\"><i class=\"far fa-envelope\"></i> Send</button>\r\n <button type=\"button\" style=\"width: 120px;\" class=\"btn btn-outline-danger\" (click)=\"onCancelEmail()\"><i class=\"far fa-times\"></i> Cancel</button>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
213
|
+
}], ctorParameters: () => [{ type: i1.SlickFunctionLockService }, { type: i0.ChangeDetectorRef }], propDecorators: { toEmailAddressList: [{
|
|
214
|
+
type: Input,
|
|
215
|
+
args: ["toEmailAddressList"]
|
|
216
|
+
}], showButtons: [{
|
|
217
|
+
type: Input,
|
|
218
|
+
args: ["showButtons"]
|
|
219
|
+
}], bodyHeight: [{
|
|
220
|
+
type: Input,
|
|
221
|
+
args: ["bodyHeight"]
|
|
222
|
+
}], toAddressSearchEmitter: [{
|
|
223
|
+
type: Output,
|
|
224
|
+
args: ["toAddressSearch"]
|
|
225
|
+
}], sendEmailClickEmitter: [{
|
|
226
|
+
type: Output,
|
|
227
|
+
args: ["sendEmailClick"]
|
|
228
|
+
}], cancelEmailClickEmitter: [{
|
|
229
|
+
type: Output,
|
|
230
|
+
args: ["cancelEmailClick"]
|
|
231
|
+
}], tinyMCEContainerRef: [{
|
|
232
|
+
type: ViewChild,
|
|
233
|
+
args: ["tinyMCEContainerRef"]
|
|
234
|
+
}] } });
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZW1haWxlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1lbWFpbGVyL3NsaWNrLWVtYWlsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZW1haWxlci9zbGljay1lbWFpbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUErQyxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHaEYsT0FBTyxFQUE2Qix3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBZ0JwRyxNQUFNLE9BQU8scUJBQXFCO0lBb0JqQyxZQUFvQix3QkFBa0QsRUFBVSxjQUFpQztRQUE3Riw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBbEIzRixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUM3QixlQUFVLEdBQVcsT0FBTyxDQUFDO1FBQ3ZCLDJCQUFzQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25FLDBCQUFxQixHQUFxQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNFLDRCQUF1QixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBS25HLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBSTdCLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUdwQyxrQkFBYSxHQUFXLElB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b0JBQW9CO2dCQUNMLFdBQVc7c0JBQWhDLEtBQUs7dUJBQUMsYUFBYTtnQkFDQyxVQUFVO3NCQUE5QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ1Esc0JBQXNCO3NCQUFoRCxNQUFNO3VCQUFDLGlCQUFpQjtnQkFDQyxxQkFBcUI7c0JBQTlDLE1BQU07dUJBQUMsZ0JBQWdCO2dCQUNJLHVCQUF1QjtzQkFBbEQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBRVEsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTbGlja1NsZWVwU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1zbGVlcC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrVXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXV0aWxzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWZ1bmN0aW9uLWxvY2suc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJU2xpY2tGaWxlTW9kZWwgfSBmcm9tIFwiLi4vc2xpY2stZmlsZS1tb2RlbC9zbGljay1maWxlLm1vZGVsXCI7XHJcbmltcG9ydCB7IElTbGlja0VtYWlsZXJNb2RlbCwgfSBmcm9tIFwiLi9zbGljay1lbWFpbGVyLm1vZGVsXCI7XHJcbmltcG9ydCB7IElTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwsIFNsaWNrRW1haWxlckFkZHJlc3NNb2RlbCB9IGZyb20gXCIuL3NsaWNrLWVtYWlsZXItYWRkcmVzcy5tb2RlbFwiO1xyXG5cclxuZGVjbGFyZSBjb25zdCB0aW55bWNlOiBhbnk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLWVtYWlsZXInLFxyXG5cdHRlbXBsYXRlVXJsOiAnc2xpY2stZW1haWxlci5jb21wb25lbnQuaHRtbCcsXHJcblx0cHJvdmlkZXJzOiBbXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlja0VtYWlsZXJDb21wb25lbnQpLFxyXG5cdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRTbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2VcclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja0VtYWlsZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cdEBJbnB1dChcInRvRW1haWxBZGRyZXNzTGlzdFwiKSB0b0VtYWlsQWRkcmVzc0xpc3Q6IElTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWxbXTtcclxuXHRASW5wdXQoXCJzaG93QnV0dG9uc1wiKSBzaG93QnV0dG9uczogYm9vbGVhbiA9IHRydWU7XHJcblx0QElucHV0KFwiYm9keUhlaWdodFwiKSBib2R5SGVpZ2h0OiBzdHJpbmcgPSBcIjE4MHB4XCI7XHJcblx0QE91dHB1dChcInRvQWRkcmVzc1NlYXJjaFwiKSB0b0FkZHJlc3NTZWFyY2hFbWl0dGVyOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KFwic2VuZEVtYWlsQ2xpY2tcIikgc2VuZEVtYWlsQ2xpY2tFbWl0dGVyOiBFdmVudEVtaXR0ZXI8SVNsaWNrRW1haWxlck1vZGVsPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRAT3V0cHV0KFwiY2FuY2VsRW1haWxDbGlja1wiKSBjYW5jZWxFbWFpbENsaWNrRW1pdHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuXHRAVmlld0NoaWxkKFwidGlueU1DRUNvbnRhaW5lclJlZlwiKSB0aW55TUNFQ29udGFpbmVyUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuXHRlbWFpbGVyTW9kZWw6IElTbGlja0VtYWlsZXJNb2RlbDtcclxuXHRpc1N1Ym1pdHRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHR1dWlkOiBzdHJpbmc7XHJcblx0dGlueU1DRVV1aWQ6IHN0cmluZztcclxuXHR0aW55TUNFSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHR0b0VtYWlsQWRkcmVzczogc3RyaW5nO1xyXG5cdGVkaXRvcjogYW55O1xyXG5cdHNwaW5uZXJTdGF0dXM6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgc2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlOiBTbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcblx0XHR0aGlzLnV1aWQgPSBTbGlja1V0aWxzU2VydmljZS5uZXdHdWlkKCk7XHJcblxyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cdFx0YXdhaXQgdGhpcy5pbml0VGlueU1DRSgpO1xyXG5cdFx0Y29uc3QgYm9keSA9ICh0aGlzLmVtYWlsZXJNb2RlbCkgPyAodGhpcy5lbWFpbGVyTW9kZWwuYm9keSB8fCAnJykgOiAnJztcclxuXHRcdHRpbnltY2UuZ2V0KGBlbWFpbGVyX3RpbnltY2VfJHt0aGlzLnRpbnlNQ0VVdWlkfWApLnNldENvbnRlbnQoYm9keSk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMucmVtb3ZlVGlueU1DRSgpO1xyXG5cdH1cclxuXHJcblx0cHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG5cclxuXHQvLyB0aGlzIGlzIHRoZSBpbml0aWFsIHZhbHVlIHNldCB0byB0aGUgY29tcG9uZW50XHJcblx0cHVibGljIGFzeW5jIHdyaXRlVmFsdWUob2JqOiBJU2xpY2tFbWFpbGVyTW9kZWwpIHtcclxuXHRcdGlmIChvYmopIHtcclxuXHRcdFx0dGhpcy5zcGlubmVyU3RhdHVzID0gXCJyZXNldFwiO1xyXG5cdFx0XHR0aGlzLmVtYWlsZXJNb2RlbCA9IG9iajtcclxuXHJcblx0XHRcdGlmICghdGhpcy5lbWFpbGVyTW9kZWwuYXR0YWNobWVudHMpXHJcblx0XHRcdFx0dGhpcy5lbWFpbGVyTW9kZWwuYXR0YWNobWVudHMgPSBbXTtcclxuXHJcblx0XHRcdGlmICghdGhpcy5lbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3NlcylcclxuXHRcdFx0XHR0aGlzLmVtYWlsZXJNb2RlbC50b0VtYWlsQWRkcmVzc2VzID0gW107XHRcdFx0XHJcblx0XHR9XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0dGhpcy5lbWFpbGVyTW9kZWwgPSBudWxsO1xyXG5cdFx0fVxyXG5cclxuXHRcdGF3YWl0IHRoaXMuaW5pdFRpbnlNQ0UoKTtcclxuXHRcdGNvbnN0IGJvZHkgPSAodGhpcy5lbWFpbGVyTW9kZWwpID8gKHRoaXMuZW1haWxlck1vZGVsLmJvZHkgfHwgJycpIDogJyc7XHJcblx0XHR0aW55bWNlLmdldChgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gKS5zZXRDb250ZW50KGJvZHkpO1xyXG5cdH1cclxuXHJcblx0Ly8gcmVnaXN0ZXJzICdmbicgdGhhdCB3aWxsIGJlIGZpcmVkIHdoZW4gY2hhbmdlcyBhcmUgbWFkZVxyXG5cdC8vIHRoaXMgaXMgaG93IHdlIGVtaXQgdGhlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybVxyXG5cdHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuXHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcblx0fVxyXG5cclxuXHQvLyBub3QgdXNlZCwgdXNlZCBmb3IgdG91Y2ggaW5wdXRcclxuXHRwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoKSB7IH1cclxuXHJcblx0dG9BZGRyZXNzU2VhcmNoKHNlYXJjaFRleHQpIHtcclxuXHRcdHRoaXMudG9BZGRyZXNzU2VhcmNoRW1pdHRlci5lbWl0KHNlYXJjaFRleHQpO1xyXG5cdH1cclxuXHJcblx0b25TZWxlY3RFbWFpbEFkZHJlc3MoZW1haWxlckFkZHJlc3NNb2RlbDogSVNsaWNrRW1haWxlckFkZHJlc3NNb2RlbCkge1xyXG5cdFx0dGhpcy5lbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3Nlcy5wdXNoKGVtYWlsZXJBZGRyZXNzTW9kZWwpO1xyXG5cclxuXHRcdHRoaXMudG9FbWFpbEFkZHJlc3MgPSBudWxsO1xyXG5cdH1cclxuXHJcblx0b25GcmVlZm9ybVRleHRTZWxlY3QodGV4dDogc3RyaW5nKSB7XHJcblx0XHRjb25zdCBmcmVlZm9ybUVtYWlsQWRkcmVzcyA9IG5ldyBTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwoKTtcclxuXHRcdGZyZWVmb3JtRW1haWxBZGRyZXNzLmRpc3BsYXlOYW1lID0gdGV4dDtcclxuXHRcdGZyZWVmb3JtRW1haWxBZGRyZXNzLmVtYWlsQWRkcmVzcyA9IHRleHQ7XHJcblxyXG5cdFx0dGhpcy5lbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3Nlcy5wdXNoKGZyZWVmb3JtRW1haWxBZGRyZXNzKTtcclxuXHRcdHRoaXMudG9FbWFpbEFkZHJlc3MgPSBudWxsO1xyXG5cdH1cclxuXHJcblx0ZGVsZXRlRW1haWxBZGRyZXNzKGlkeDogbnVtYmVyKSB7XHJcblx0XHR0aGlzLmVtYWlsZXJNb2RlbC50b0VtYWlsQWRkcmVzc2VzLnNwbGljZShpZHgsIDEpO1xyXG5cdH1cclxuXHJcblx0b25BdHRhY2htZW50c0NoYW5nZWQoYXR0YWNobWVudHM6IElTbGlja0ZpbGVNb2RlbFtdKSB7XHJcblx0XHR0aGlzLmVtYWlsZXJNb2RlbC5hdHRhY2htZW50cyA9IHRoaXMuZW1haWxlck1vZGVsLmF0dGFjaG1lbnRzLmNvbmNhdChhdHRhY2htZW50cyk7XHJcblx0fVxyXG5cclxuXHR2YWxpZGF0ZSgpIHtcclxuXHRcdHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xyXG5cdFx0aWYgKHRoaXMuZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMubGVuZ3RoID09PSAwKVxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fVxyXG5cclxuXHRnZXRFbWFpbEFkZHJlc3NlcyhlbWFpbGVyTW9kZWw6IElTbGlja0VtYWlsZXJNb2RlbCk6IElTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWxbXSB7XHJcblx0XHRsZXQgc2xpY2tFbWFpbGVyQWRkcmVzc2VzID0gZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMgfHwgW107XHJcblxyXG5cdFx0aWYgKHRoaXMudG9FbWFpbEFkZHJlc3MpIHtcclxuXHRcdFx0Y29uc3Qgc2NydWJiZWRUb0VtYWlsQWRkcmVzcyA9IHRoaXMudG9FbWFpbEFkZHJlc3MucmVwbGFjZShcIixcIiwgXCI7XCIpLnJlcGxhY2UoL1xccy9nLCBcIjtcIik7XHJcblx0XHRcdGNvbnN0IGVtYWlsQWRkcmVzc2VzVG9BZGRTdHJpbmdzID0gc2NydWJiZWRUb0VtYWlsQWRkcmVzcy5zcGxpdChcIjtcIikuZmlsdGVyKHggPT4geCAhPT0gJycpO1xyXG5cdFx0XHRjb25zdCBlbWFpbEFkZHJlc3Nlc1RvQWRkID0gZW1haWxBZGRyZXNzZXNUb0FkZFN0cmluZ3MubWFwKHggPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHNsaWNrRW1haWxlckFkZHJlc3NNb2RlbCA9IG5ldyBTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwoKTtcclxuXHRcdFx0XHRzbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwuY29udGFjdElkID0gMDtcclxuXHRcdFx0XHRzbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwuZGlzcGxheU5hbWUgPSB4O1xyXG5cdFx0XHRcdHNsaWNrRW1haWxlckFkZHJlc3NNb2RlbC5lbWFpbEFkZHJlc3MgPSB4O1xyXG5cdFx0XHRcdHJldHVybiBzbGlja0VtYWlsZXJBZGRyZXNzTW9kZWw7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRzbGlja0VtYWlsZXJBZGRyZXNzZXMgPSBzbGlja0VtYWlsZXJBZGRyZXNzZXMuY29uY2F0KGVtYWlsQWRkcmVzc2VzVG9BZGQpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMudG9FbWFpbEFkZHJlc3MgPSBudWxsO1xyXG5cclxuXHRcdHJldHVybiBzbGlja0VtYWlsZXJBZGRyZXNzZXM7XHJcblx0fVxyXG5cclxuXHRhc3luYyBzZXRCb2R5KGJvZHk6IHN0cmluZykge1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0YXdhaXQgdGhpcy5zbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UubG9jayhcIlNMSUNLX0VNQUlMRVJfU0VUX0JPRFlcIik7XHJcblxyXG5cdFx0XHRhd2FpdCB0aGlzLmluaXRUaW55TUNFKCk7XHJcblx0XHRcdGNvbnN0IHRpbnlNQ0UgPSB0aW55bWNlLmdldChgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gKTtcclxuXHJcblx0XHRcdGlmICghdGlueU1DRSlcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKFwidGlueU1DRSBub3QgaW5pdGlhbGl6ZWRcIik7XHJcblxyXG5cdFx0XHR0aW55TUNFLnNldENvbnRlbnQoYm9keSk7XHJcblxyXG5cdFx0fVxyXG5cdFx0ZmluYWxseSB7XHJcblx0XHRcdHRoaXMuc2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLnJlbGVhc2UoXCJTTElDS19FTUFJTEVSX1NFVF9CT0RZXCIpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Z2V0Qm9keSgpIHtcclxuXHRcdHJldHVybiB0aW55bWNlLmdldChgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gKS5nZXRDb250ZW50KCk7XHJcblx0fVxyXG5cclxuXHRvblNlbmRFbWFpbCgpIHtcclxuXHRcdHRoaXMuZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMgPSB0aGlzLmdldEVtYWlsQWRkcmVzc2VzKHRoaXMuZW1haWxlck1vZGVsKTtcclxuXHJcblx0XHRpZiAodGhpcy52YWxpZGF0ZSgpID09PSBmYWxzZSlcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMuZW1haWxlck1vZGVsLmJvZHkgPSB0aGlzLmdldEJvZHkoKTtcclxuXHRcdHRoaXMuc3Bpbm5lclN0YXR1cyA9IFwic3BpblwiO1xyXG5cdFx0aWYgKHRoaXMuc2VuZEVtYWlsQ2xpY2tFbWl0dGVyKVxyXG5cdFx0XHR0aGlzLnNlbmRFbWFpbENsaWNrRW1pdHRlci5lbWl0KHRoaXMuZW1haWxlck1vZGVsKTtcclxuXHR9XHJcblxyXG5cdGVtYWlsU2VudCgpIHtcclxuXHRcdHRoaXMuc3Bpbm5lclN0YXR1cyA9IFwib2tcIjtcclxuXHR9XHJcblxyXG5cdGVtYWlsRXJyb3IoKSB7XHJcblx0XHR0aGlzLnNwaW5uZXJTdGF0dXMgPSBcImVycm9yXCI7XHJcblx0fVxyXG5cclxuXHRvbkNhbmNlbEVtYWlsKCkge1xyXG5cdFx0aWYgKHRoaXMuY2FuY2VsRW1haWxDbGlja0VtaXR0ZXIpXHJcblx0XHRcdHRoaXMuY2FuY2VsRW1haWxDbGlja0VtaXR0ZXIuZW1pdCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgZGlhbG9nSW5pdCgpIHtcclxuXHRcdHRoaXMucmVtb3ZlVGlueU1DRSgpO1xyXG5cclxuXHRcdGF3YWl0IHRoaXMuaW5pdFRpbnlNQ0UoKTtcclxuXHRcdGNvbnN0IGJvZHkgPSAodGhpcy5lbWFpbGVyTW9kZWwpID8gKHRoaXMuZW1haWxlck1vZGVsLmJvZHkgfHwgJycpIDogJyc7XHJcblx0XHR0aW55bWNlLmdldChgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gKS5zZXRDb250ZW50KGJvZHkpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgaW5pdFRpbnlNQ0UoKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KGFzeW5jIChyZXNvbHZlKSA9PiB7XHJcblx0XHRcdGF3YWl0IHRoaXMuc2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLmxvY2soXCJTTElDS19FTUFJTEVSX0lOSVRfVElOWV9NQ0VcIik7XHJcblxyXG5cdFx0XHRpZiAodGhpcy50aW55TUNFVXVpZCkge1xyXG5cdFx0XHRcdHRoaXMuc2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLnJlbGVhc2UoXCJTTElDS19FTUFJTEVSX0lOSVRfVElOWV9NQ0VcIik7XHJcblx0XHRcdFx0cmVzb2x2ZSgpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMudGlueU1DRVV1aWQgPSBTbGlja1V0aWxzU2VydmljZS5uZXdHdWlkKCk7XHJcblxyXG5cdFx0XHRcdGNvbnN0IHRpbnlNQ0VDb250YWluZXIgPSA8SFRNTERpdkVsZW1lbnQ+dGhpcy50aW55TUNFQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcblx0XHRcdFx0Y29uc3QgdGlueU1DRVRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRleHRhcmVhXCIpO1xyXG5cdFx0XHRcdHRpbnlNQ0VUZXh0YXJlYS5pZCA9IGBlbWFpbGVyX3RpbnltY2VfJHt0aGlzLnRpbnlNQ0VVdWlkfWA7XHJcblx0XHRcdFx0dGlueU1DRVRleHRhcmVhLnN0eWxlLm1pbkhlaWdodCA9IFwiMzAwcHhcIjtcclxuXHRcdFx0XHR0aW55TUNFVGV4dGFyZWEuc3R5bGUubWF4SGVpZ2h0ID0gXCIzMDBweFwiO1xyXG5cdFx0XHRcdHRpbnlNQ0VDb250YWluZXIuYXBwZW5kQ2hpbGQodGlueU1DRVRleHRhcmVhKTtcclxuXHJcblx0XHRcdFx0dGlueW1jZS5pbml0KHtcclxuXHRcdFx0XHRcdHNlbGVjdG9yOiBgI2VtYWlsZXJfdGlueW1jZV8ke3RoaXMudGlueU1DRVV1aWR9YCxcclxuXHRcdFx0XHRcdGJyYW5kaW5nOiBmYWxzZSxcclxuXHRcdFx0XHRcdG1lbnViYXI6ICdlZGl0IGluc2VydCBmb3JtYXQgdG9vbHMnLFxyXG5cdFx0XHRcdFx0cGx1Z2luczogJ2xpbmsgaW1hZ2UgaW1hZ2V0b29scyBjb2RlJyxcclxuXHRcdFx0XHRcdHRvb2xiYXI6ICdmb250c2VsZWN0IHwgZm9udHNpemVzZWxlY3QgfCBzdHlsZXNlbGVjdCB8IGJvbGQgaXRhbGljIHVuZGVybGluZSB8IGluZGVudCBvdXRkZW50IHwgYnVsbGlzdCB8IGFsaWdubGVmdCBhbGlnbmNlbnRlciBhbGlnbnJpZ2h0IHwgY29kZSB8IGltYWdlJyxcclxuXHRcdFx0XHRcdGZvbnRzaXplX2Zvcm1hdHM6IFwiOHB4IDEwcHggMTJweCAxNHB4IDE4cHggMjRweCAzNnB4XCIsXHJcblx0XHRcdFx0XHRoZWlnaHQ6IHRoaXMuYm9keUhlaWdodCxcclxuXHRcdFx0XHRcdGNvbnZlcnRfdXJsczogZmFsc2UsXHJcblx0XHRcdFx0XHRzZXR1cDogKGVkKSA9PiB7XHJcblx0XHRcdFx0XHRcdGVkLm9uKCdpbml0JywgKGFyZ3MpID0+IHtcclxuXHJcblx0XHRcdFx0XHRcdFx0ZWQuc2V0Q29udGVudCgodGhpcy5lbWFpbGVyTW9kZWwpID8gKHRoaXMuZW1haWxlck1vZGVsLmJvZHkgfHwgJycpIDogJycpO1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMudGlueU1DRUluaXRpYWxpemVkID0gdHJ1ZTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZS5yZWxlYXNlKFwiU0xJQ0tfRU1BSUxFUl9JTklUX1RJTllfTUNFXCIpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRhc3luYyByZW1vdmVUaW55TUNFKCkge1xyXG5cdFx0aWYgKHRoaXMudGlueU1DRVV1aWQpIHtcclxuXHRcdFx0Y29uc3QgdGlueU1DRSA9IHRpbnltY2UuZ2V0KGBlbWFpbGVyX3RpbnltY2VfJHt0aGlzLnRpbnlNQ0VVdWlkfWApO1xyXG5cclxuXHRcdFx0aWYgKHRpbnlNQ0UpXHJcblx0XHRcdFx0dGlueU1DRS5yZW1vdmUoKTtcclxuXHJcblx0XHRcdGNvbnN0IHRpbnlNQ0VDb250YWluZXIgPSA8SFRNTERpdkVsZW1lbnQ+dGhpcy50aW55TUNFQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQ7XHJcblx0XHRcdHRpbnlNQ0VDb250YWluZXIuaW5uZXJIVE1MID0gXCJcIjtcclxuXHJcblx0XHRcdHRoaXMudGlueU1DRUluaXRpYWxpemVkID0gZmFsc2U7XHJcblxyXG5cdFx0XHR0aGlzLnRpbnlNQ0VVdWlkID0gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImVtYWlsZXJNb2RlbFwiIGlkPVwic2xpY2stZW1haWxlcl97e3V1aWR9fVwiIGNsYXNzPVwic2xpY2stZW1haWxlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNTdWJtaXR0ZWQgPT09IHRydWUgJiYgZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJlcnJvcldyYXBwZXIgc2hvd0ljb25zXCI+PGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+RW1haWwgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBlbWFpbCBhZGRyZXNzPC9kaXY+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCI+PHNwYW4gY2xhc3M9XCJmYXMgZmEtc2VhcmNoXCI+PC9zcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiICNlbWFpbEFkZHJlc3NBdXRvY29tcGxldGUgWyhuZ01vZGVsKV09XCJ0b0VtYWlsQWRkcmVzc1wiIHBsYWNlaG9sZGVyPVwiRW1haWwgU2VhcmNoLi4uXCIgYXV0b2ZvY3VzIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c2xpY2stYXV0by1jb21wbGV0ZSBbaW5wdXRSZWZdPVwiZW1haWxBZGRyZXNzQXV0b2NvbXBsZXRlXCIgdGV4dEZpZWxkPVwiZW1haWxEaXNwbGF5XCIgW2l0ZW1zXT1cInRvRW1haWxBZGRyZXNzTGlzdFwiIChvblJlZnJlc2gpPVwidG9BZGRyZXNzU2VhcmNoKCRldmVudClcIiAob25TZWxlY3QpPVwib25TZWxlY3RFbWFpbEFkZHJlc3MoJGV2ZW50KVwiIChvbkZyZWVmb3JtVGV4dFNlbGVjdCk9XCJvbkZyZWVmb3JtVGV4dFNlbGVjdCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWVtYWlsRGlzcGxheSBbc2xpY2tBdXRvQ29tcGxldGVMaXN0SXRlbVRlbXBsYXRlXT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdsaW5lLWhlaWdodDogMS4xZW07IGZvbnQtc2l6ZTogMTJweDsnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2VtYWlsRGlzcGxheS5kaXNwbGF5TmFtZX19IFt7e2VtYWlsRGlzcGxheS5lbWFpbEFkZHJlc3N9fV1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvc2xpY2stYXV0by1jb21wbGV0ZT5cclxuXHJcbiAgICAgICAgICAgIDxsYWJlbD5UbzombmJzcDs8L2xhYmVsPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBlbWFpbEFkZHJlc3Mgb2YgZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXM7IGxldCBpZHggPSBpbmRleDtcIiBjbGFzcz1cInNsaWNrLWVtYWlsZXJfZW1haWwtYWRkcmVzcyBhbGVydCBhbGVydC1zZWNvbmRhcnlcIj57e2VtYWlsQWRkcmVzcy5kaXNwbGF5TmFtZX19IFt7e2VtYWlsQWRkcmVzcy5lbWFpbEFkZHJlc3N9fV08aSAoY2xpY2spPVwiZGVsZXRlRW1haWxBZGRyZXNzKGlkeClcIiBjbGFzcz1cImZhcyBmYS10aW1lcy1jaXJjbGUgYmctd2hpdGUgdGV4dC1kYW5nZXIgbXMtMVwiPjwvaT48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8bGFiZWw+U3ViamVjdDo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZW1haWxlck1vZGVsLnN1YmplY3RcIiAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8bGFiZWw+Qm9keTo8L2xhYmVsPlxyXG4gICAgICAgICAgICA8ZGl2ICN0aW55TUNFQ29udGFpbmVyUmVmPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8bGFiZWw+QXR0YWNobWVudHM6PC9sYWJlbD5cclxuICAgICAgICAgICAgPHNsaWNrLWZpbGUtZHJvcCAoZmlsZXNDaGFuZ2VkKT1cIm9uQXR0YWNobWVudHNDaGFuZ2VkKCRldmVudClcIj48L3NsaWNrLWZpbGUtZHJvcD5cclxuICAgICAgICAgICAgPHNsaWNrLWZpbGUtbGlzdCBbKGZpbGVzKV09XCJlbWFpbGVyTW9kZWwuYXR0YWNobWVudHNcIj48L3NsaWNrLWZpbGUtbGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJzaG93QnV0dG9uc1wiIGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHN0eWxlPVwid2lkdGg6IDEyMHB4OyBtYXJnaW4tcmlnaHQ6IDEwcHg7XCIgW3NsaWNrLWJ1dHRvbi1zcGlubmVyXT1cInNwaW5uZXJTdGF0dXNcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uU2VuZEVtYWlsKClcIj48aSBjbGFzcz1cImZhciBmYS1lbnZlbG9wZVwiPjwvaT4mbmJzcDtTZW5kPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHN0eWxlPVwid2lkdGg6IDEyMHB4O1wiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlclwiIChjbGljayk9XCJvbkNhbmNlbEVtYWlsKClcIj48aSBjbGFzcz1cImZhciBmYS10aW1lc1wiPjwvaT4mbmJzcDtDYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export class SlickEmailerModel {
|
|
2
|
-
}
|
|
1
|
+
export class SlickEmailerModel {
|
|
2
|
+
}
|
|
3
3
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZW1haWxlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLWVtYWlsZXIvc2xpY2stZW1haWxlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxNQUFNLE9BQU8saUJBQWlCO0NBTTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVNsaWNrRmlsZU1vZGVsIH0gZnJvbSBcIi4uL3NsaWNrLWZpbGUtbW9kZWwvc2xpY2stZmlsZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJU2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsIH0gZnJvbSBcIi4vc2xpY2stZW1haWxlci1hZGRyZXNzLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTbGlja0VtYWlsZXJNb2RlbCB7XHJcblx0dXVpZDogc3RyaW5nO1xyXG5cdHRvRW1haWxBZGRyZXNzZXM6IElTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWxbXTtcclxuXHRzdWJqZWN0OiBzdHJpbmc7XHJcblx0Ym9keTogc3RyaW5nO1xyXG5cdGF0dGFjaG1lbnRzOiBJU2xpY2tGaWxlTW9kZWxbXTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNsaWNrRW1haWxlck1vZGVsIGltcGxlbWVudHMgSVNsaWNrRW1haWxlck1vZGVsIHtcclxuXHR1dWlkOiBzdHJpbmc7XHJcblx0dG9FbWFpbEFkZHJlc3NlczogSVNsaWNrRW1haWxlckFkZHJlc3NNb2RlbFtdO1xyXG5cdHN1YmplY3Q6IHN0cmluZztcclxuXHRib2R5OiBzdHJpbmc7XHJcblx0YXR0YWNobWVudHM6IElTbGlja0ZpbGVNb2RlbFtdO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from "@angular/core";
|
|
3
|
-
import { FormsModule } from "@angular/forms";
|
|
4
|
-
import { SlickDialogModule } from "../slick-dialog/slick-dialog.module";
|
|
5
|
-
import { SlickAutoCompleteModule } from "../slick-auto-complete/slick-auto-complete.module";
|
|
6
|
-
import { SlickButtonSpinnerModule } from "../slick-button-spinner/slick-button-spinner.module";
|
|
7
|
-
import { SlickFileDropModule } from "../slick-file-drop/slick-file-drop.module";
|
|
8
|
-
import { SlickFileListModule } from "../slick-file-list/slick-file-list.module";
|
|
9
|
-
import { SlickEmailerComponent } from "./slick-emailer.component";
|
|
10
|
-
import { SlickEmailerDialogComponent } from "./slick-emailer-dialog.component";
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
export class SlickEmailerModule {
|
|
13
|
-
}
|
|
14
|
-
/** @nocollapse */
|
|
15
|
-
/** @nocollapse */
|
|
16
|
-
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
18
|
-
type: NgModule,
|
|
19
|
-
args: [{
|
|
20
|
-
imports: [CommonModule, FormsModule, SlickDialogModule, SlickAutoCompleteModule, SlickButtonSpinnerModule, SlickFileDropModule, SlickFileListModule],
|
|
21
|
-
declarations: [SlickEmailerComponent, SlickEmailerDialogComponent],
|
|
22
|
-
exports: [CommonModule, FormsModule, SlickEmailerComponent, SlickEmailerDialogComponent]
|
|
23
|
-
}]
|
|
24
|
-
}] });
|
|
25
|
-
export { SlickEmailerComponent };
|
|
26
|
-
export { SlickEmailerDialogComponent };
|
|
27
|
-
export { SlickEmailerModel } from "./slick-emailer.model";
|
|
28
|
-
export { SlickEmailerAddressModel } from "./slick-emailer-address.model";
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from "@angular/core";
|
|
3
|
+
import { FormsModule } from "@angular/forms";
|
|
4
|
+
import { SlickDialogModule } from "../slick-dialog/slick-dialog.module";
|
|
5
|
+
import { SlickAutoCompleteModule } from "../slick-auto-complete/slick-auto-complete.module";
|
|
6
|
+
import { SlickButtonSpinnerModule } from "../slick-button-spinner/slick-button-spinner.module";
|
|
7
|
+
import { SlickFileDropModule } from "../slick-file-drop/slick-file-drop.module";
|
|
8
|
+
import { SlickFileListModule } from "../slick-file-list/slick-file-list.module";
|
|
9
|
+
import { SlickEmailerComponent } from "./slick-emailer.component";
|
|
10
|
+
import { SlickEmailerDialogComponent } from "./slick-emailer-dialog.component";
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class SlickEmailerModule {
|
|
13
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickEmailerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: SlickEmailerModule, declarations: [SlickEmailerComponent, SlickEmailerDialogComponent], imports: [CommonModule, FormsModule, SlickDialogModule, SlickAutoCompleteModule, SlickButtonSpinnerModule, SlickFileDropModule, SlickFileListModule], exports: [CommonModule, FormsModule, SlickEmailerComponent, SlickEmailerDialogComponent] }); }
|
|
15
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickEmailerModule, imports: [CommonModule, FormsModule, SlickDialogModule, SlickAutoCompleteModule, SlickButtonSpinnerModule, SlickFileDropModule, SlickFileListModule, CommonModule, FormsModule] }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickEmailerModule, decorators: [{
|
|
18
|
+
type: NgModule,
|
|
19
|
+
args: [{
|
|
20
|
+
imports: [CommonModule, FormsModule, SlickDialogModule, SlickAutoCompleteModule, SlickButtonSpinnerModule, SlickFileDropModule, SlickFileListModule],
|
|
21
|
+
declarations: [SlickEmailerComponent, SlickEmailerDialogComponent],
|
|
22
|
+
exports: [CommonModule, FormsModule, SlickEmailerComponent, SlickEmailerDialogComponent]
|
|
23
|
+
}]
|
|
24
|
+
}] });
|
|
25
|
+
export { SlickEmailerComponent };
|
|
26
|
+
export { SlickEmailerDialogComponent };
|
|
27
|
+
export { SlickEmailerModel } from "./slick-emailer.model";
|
|
28
|
+
export { SlickEmailerAddressModel } from "./slick-emailer-address.model";
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZW1haWxlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1lbWFpbGVyL3NsaWNrLWVtYWlsZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFPL0UsTUFBTSxPQUFPLGtCQUFrQjtpSUFBbEIsa0JBQWtCO2tJQUFsQixrQkFBa0IsaUJBSGYscUJBQXFCLEVBQUUsMkJBQTJCLGFBRHZELFlBQVksRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLGFBRXpJLFlBQVksRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsMkJBQTJCO2tJQUUzRSxrQkFBa0IsWUFKcEIsWUFBWSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFFekksWUFBWSxFQUFFLFdBQVc7OzJGQUV2QixrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ1QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQztvQkFDcEosWUFBWSxFQUFFLENBQUMscUJBQXFCLEVBQUUsMkJBQTJCLENBQUM7b0JBQ2xFLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsMkJBQTJCLENBQUM7aUJBQ3hGOztBQUVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFBO0FBQ2hDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxDQUFBO0FBQ3RDLE9BQU8sRUFBc0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RSxPQUFPLEVBQTZCLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFNsaWNrRGlhbG9nTW9kdWxlIH0gZnJvbSBcIi4uL3NsaWNrLWRpYWxvZy9zbGljay1kaWFsb2cubW9kdWxlXCI7XHJcbmltcG9ydCB7IFNsaWNrQXV0b0NvbXBsZXRlTW9kdWxlIH0gZnJvbSBcIi4uL3NsaWNrLWF1dG8tY29tcGxldGUvc2xpY2stYXV0by1jb21wbGV0ZS5tb2R1bGVcIjtcclxuaW1wb3J0IHsgU2xpY2tCdXR0b25TcGlubmVyTW9kdWxlIH0gZnJvbSBcIi4uL3NsaWNrLWJ1dHRvbi1zcGlubmVyL3NsaWNrLWJ1dHRvbi1zcGlubmVyLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBTbGlja0ZpbGVEcm9wTW9kdWxlIH0gZnJvbSBcIi4uL3NsaWNrLWZpbGUtZHJvcC9zbGljay1maWxlLWRyb3AubW9kdWxlXCI7XHJcbmltcG9ydCB7IFNsaWNrRmlsZUxpc3RNb2R1bGUgfSBmcm9tIFwiLi4vc2xpY2stZmlsZS1saXN0L3NsaWNrLWZpbGUtbGlzdC5tb2R1bGVcIjtcclxuaW1wb3J0IHsgU2xpY2tFbWFpbGVyQ29tcG9uZW50IH0gZnJvbSBcIi4vc2xpY2stZW1haWxlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgU2xpY2tFbWFpbGVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSBcIi4vc2xpY2stZW1haWxlci1kaWFsb2cuY29tcG9uZW50XCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBTbGlja0RpYWxvZ01vZHVsZSwgU2xpY2tBdXRvQ29tcGxldGVNb2R1bGUsIFNsaWNrQnV0dG9uU3Bpbm5lck1vZHVsZSwgU2xpY2tGaWxlRHJvcE1vZHVsZSwgU2xpY2tGaWxlTGlzdE1vZHVsZV0sXHJcblx0ZGVjbGFyYXRpb25zOiBbU2xpY2tFbWFpbGVyQ29tcG9uZW50LCBTbGlja0VtYWlsZXJEaWFsb2dDb21wb25lbnRdLFxyXG5cdGV4cG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBTbGlja0VtYWlsZXJDb21wb25lbnQsIFNsaWNrRW1haWxlckRpYWxvZ0NvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNsaWNrRW1haWxlck1vZHVsZSB7IH1cclxuZXhwb3J0IHsgU2xpY2tFbWFpbGVyQ29tcG9uZW50IH1cclxuZXhwb3J0IHsgU2xpY2tFbWFpbGVyRGlhbG9nQ29tcG9uZW50IH1cclxuZXhwb3J0IHsgSVNsaWNrRW1haWxlck1vZGVsLCBTbGlja0VtYWlsZXJNb2RlbCB9IGZyb20gXCIuL3NsaWNrLWVtYWlsZXIubW9kZWxcIjtcclxuZXhwb3J0IHsgSVNsaWNrRW1haWxlckFkZHJlc3NNb2RlbCwgU2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsIH0gZnJvbSBcIi4vc2xpY2stZW1haWxlci1hZGRyZXNzLm1vZGVsXCI7XHJcbiJdfQ==
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewChild, HostListener } from "@angular/core";
|
|
2
|
+
import { SlickUtilsService } from "../utils/slick-utils.service";
|
|
3
|
+
import { SlickFileModel } from "../slick-file-model/slick-file.model";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
const imgExtensions = ['bmp', 'gif', 'jpeg', 'jpg', 'png', 'tif', 'tiff'];
|
|
6
|
+
export class SlickFileDropComponent {
|
|
7
|
+
onClick(e) {
|
|
8
|
+
this.fileInput.nativeElement.click();
|
|
9
|
+
this.fileInput.nativeElement.removeEventListener("change", this.fnOnFileInputChange, true);
|
|
10
|
+
this.fileInput.nativeElement.addEventListener("change", this.fnOnFileInputChange, true);
|
|
11
|
+
}
|
|
12
|
+
ngOnDestroy() {
|
|
13
|
+
this.fileInput.nativeElement.removeEventListener("change", this.fnOnFileInputChange, true);
|
|
14
|
+
}
|
|
15
|
+
onFileInputChange(e) {
|
|
16
|
+
try {
|
|
17
|
+
this.processFileTimeout = setTimeout(() => {
|
|
18
|
+
alert("Processing files timed out");
|
|
19
|
+
}, 10000);
|
|
20
|
+
this.processFiles(this.fileInput.nativeElement.files);
|
|
21
|
+
// A validation to make sure the files all got processed
|
|
22
|
+
clearTimeout(this.processFileTimeout);
|
|
23
|
+
this.fileInput.nativeElement.value = '';
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
alert("SlickFileDrop Error: " + err);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
onDrop(e) {
|
|
30
|
+
e.preventDefault();
|
|
31
|
+
e.stopPropagation();
|
|
32
|
+
this.containerRef.nativeElement.classList.remove("slick-file-drop_drag-enter");
|
|
33
|
+
this.processFiles(e.dataTransfer.files);
|
|
34
|
+
}
|
|
35
|
+
onDragEnter(e) {
|
|
36
|
+
this.containerRef.nativeElement.classList.add("slick-file-drop_drag-enter");
|
|
37
|
+
}
|
|
38
|
+
onDragOver(e) {
|
|
39
|
+
e.preventDefault();
|
|
40
|
+
}
|
|
41
|
+
onDragLeave(e) {
|
|
42
|
+
this.containerRef.nativeElement.classList.remove("slick-file-drop_drag-enter");
|
|
43
|
+
}
|
|
44
|
+
constructor() {
|
|
45
|
+
this.displayText = "Drop File or click to Upload";
|
|
46
|
+
this.filesChangedEmitter = new EventEmitter();
|
|
47
|
+
this.fnOnFileInputChange = (e) => this.onFileInputChange(e);
|
|
48
|
+
this.uuid = SlickUtilsService.newGuid();
|
|
49
|
+
}
|
|
50
|
+
async processFiles(files) {
|
|
51
|
+
let slickFileModels = [];
|
|
52
|
+
let imageLoadPromises = [];
|
|
53
|
+
let imgPromises = [];
|
|
54
|
+
for (let i = 0; i < files.length; i++) {
|
|
55
|
+
imageLoadPromises.push(new Promise(async (resolve) => {
|
|
56
|
+
let file = files.item(i);
|
|
57
|
+
let slickFileModel = new SlickFileModel();
|
|
58
|
+
slickFileModel.uuid = SlickUtilsService.newGuid();
|
|
59
|
+
slickFileModel.file = file;
|
|
60
|
+
slickFileModel.name = file.name;
|
|
61
|
+
slickFileModel.title = file.name;
|
|
62
|
+
let fileNameParts = slickFileModel.name.split('.');
|
|
63
|
+
let ext = fileNameParts[fileNameParts.length - 1].toLowerCase();
|
|
64
|
+
if (imgExtensions.indexOf(ext) >= 0) {
|
|
65
|
+
let img = new Image;
|
|
66
|
+
img.onload = () => {
|
|
67
|
+
slickFileModel.thumbnailBase64Image = this.resizeImageToBase64(img, 90, 90);
|
|
68
|
+
slickFileModel.base64Image = this.resizeImageToBase64(img, 1600, 1600);
|
|
69
|
+
slickFileModels.push(slickFileModel);
|
|
70
|
+
resolve(null);
|
|
71
|
+
};
|
|
72
|
+
img.src = await this.getBase64(file);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
slickFileModels.push(slickFileModel);
|
|
76
|
+
resolve(null);
|
|
77
|
+
}
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
await Promise.all(imageLoadPromises);
|
|
81
|
+
this.filesChangedEmitter.emit(slickFileModels);
|
|
82
|
+
}
|
|
83
|
+
resizeImageToBase64(img, width, height) {
|
|
84
|
+
let scale = 1;
|
|
85
|
+
if (img.width > img.height) {
|
|
86
|
+
if (img.width > width)
|
|
87
|
+
scale = width / img.width;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
if (img.height > height)
|
|
91
|
+
scale = height / img.height;
|
|
92
|
+
}
|
|
93
|
+
let newWidth = img.width * scale;
|
|
94
|
+
let newHeight = img.height * scale;
|
|
95
|
+
// We create a canvas and get its context.
|
|
96
|
+
var canvas = document.createElement('canvas');
|
|
97
|
+
var ctx = canvas.getContext('2d');
|
|
98
|
+
// We set the dimensions at the wanted size.
|
|
99
|
+
canvas.width = newWidth;
|
|
100
|
+
canvas.height = newHeight;
|
|
101
|
+
// We resize the image with the canvas method drawImage();
|
|
102
|
+
ctx.drawImage(img, 0, 0, newWidth, newHeight);
|
|
103
|
+
return canvas.toDataURL("image/jpeg");
|
|
104
|
+
}
|
|
105
|
+
getBase64(file) {
|
|
106
|
+
return new Promise((resolve, reject) => {
|
|
107
|
+
// Capacitor fails on the FileReader, so we need to get _readReader
|
|
108
|
+
// See: https://github.com/ionic-team/ionic-native/issues/505#issuecomment-503316333
|
|
109
|
+
let fileReader = new FileReader();
|
|
110
|
+
// Get the original real FileReader. The polyfill saves a reference to it.
|
|
111
|
+
const realFileReader = fileReader._realReader;
|
|
112
|
+
// Make sure we were able to get the original FileReader
|
|
113
|
+
if (realFileReader) {
|
|
114
|
+
// Swap out the polyfill instance for the original instance.
|
|
115
|
+
fileReader = realFileReader;
|
|
116
|
+
}
|
|
117
|
+
fileReader.readAsDataURL(file);
|
|
118
|
+
fileReader.onload = () => resolve(fileReader.result);
|
|
119
|
+
fileReader.onerror = (error) => reject('Error: ' + error);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickFileDropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
123
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: SlickFileDropComponent, selector: "slick-file-drop", inputs: { displayText: "displayText" }, outputs: { filesChangedEmitter: "filesChanged" }, host: { listeners: { "click": "onClick($event)", "drop": "onDrop($event)", "dragenter": "onDragEnter($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)" } }, viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true }, { propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<p #containerRef id=\"slick-file-drop_{{uuid}}\" class=\"slick-file-drop\">\r\n <i class=\"far fa-cloud-arrow-up me-1\"></i> {{displayText}}\r\n</p>\r\n<input type=\"file\" #fileInput style=\"display: none\" multiple />\r\n" }); }
|
|
124
|
+
}
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: SlickFileDropComponent, decorators: [{
|
|
126
|
+
type: Component,
|
|
127
|
+
args: [{ selector: 'slick-file-drop', template: "<p #containerRef id=\"slick-file-drop_{{uuid}}\" class=\"slick-file-drop\">\r\n <i class=\"far fa-cloud-arrow-up me-1\"></i> {{displayText}}\r\n</p>\r\n<input type=\"file\" #fileInput style=\"display: none\" multiple />\r\n" }]
|
|
128
|
+
}], ctorParameters: () => [], propDecorators: { displayText: [{
|
|
129
|
+
type: Input,
|
|
130
|
+
args: ["displayText"]
|
|
131
|
+
}], filesChangedEmitter: [{
|
|
132
|
+
type: Output,
|
|
133
|
+
args: ["filesChanged"]
|
|
134
|
+
}], containerRef: [{
|
|
135
|
+
type: ViewChild,
|
|
136
|
+
args: ["containerRef"]
|
|
137
|
+
}], fileInput: [{
|
|
138
|
+
type: ViewChild,
|
|
139
|
+
args: ["fileInput"]
|
|
140
|
+
}], onClick: [{
|
|
141
|
+
type: HostListener,
|
|
142
|
+
args: ['click', ['$event']]
|
|
143
|
+
}], onDrop: [{
|
|
144
|
+
type: HostListener,
|
|
145
|
+
args: ['drop', ['$event']]
|
|
146
|
+
}], onDragEnter: [{
|
|
147
|
+
type: HostListener,
|
|
148
|
+
args: ['dragenter', ['$event']]
|
|
149
|
+
}], onDragOver: [{
|
|
150
|
+
type: HostListener,
|
|
151
|
+
args: ['dragover', ['$event']]
|
|
152
|
+
}], onDragLeave: [{
|
|
153
|
+
type: HostListener,
|
|
154
|
+
args: ['dragleave', ['$event']]
|
|
155
|
+
}] } });
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZmlsZS1kcm9wLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLWZpbGUtZHJvcC9zbGljay1maWxlLWRyb3AuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZmlsZS1kcm9wL3NsaWNrLWZpbGUtZHJvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLFNBQVMsRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdkgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFtQixjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFFdkYsTUFBTSxhQUFhLEdBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtBQU1uRixNQUFNLE9BQU8sc0JBQXNCO0lBVWxDLE9BQU8sQ0FBQyxDQUFDO1FBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFjLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxXQUFXO1FBQ1MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFjLENBQUMsbUJBQW1CLENB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dGVyLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU2xpY2tVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stdXRpbHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJU2xpY2tGaWxlTW9kZWwsIFNsaWNrRmlsZU1vZGVsIH0gZnJvbSBcIi4uL3NsaWNrLWZpbGUtbW9kZWwvc2xpY2stZmlsZS5tb2RlbFwiO1xyXG5cclxuY29uc3QgaW1nRXh0ZW5zaW9uczogc3RyaW5nW10gPSBbJ2JtcCcsICdnaWYnLCAnanBlZycsICdqcGcnLCAncG5nJywgJ3RpZicsICd0aWZmJ11cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnc2xpY2stZmlsZS1kcm9wJyxcclxuXHR0ZW1wbGF0ZVVybDogJ3NsaWNrLWZpbGUtZHJvcC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNsaWNrRmlsZURyb3BDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cdEBJbnB1dChcImRpc3BsYXlUZXh0XCIpIGRpc3BsYXlUZXh0OiBzdHJpbmcgPSBcIkRyb3AgRmlsZSBvciBjbGljayB0byBVcGxvYWRcIjtcclxuXHRAT3V0cHV0KFwiZmlsZXNDaGFuZ2VkXCIpIGZpbGVzQ2hhbmdlZEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxJU2xpY2tGaWxlTW9kZWxbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QFZpZXdDaGlsZChcImNvbnRhaW5lclJlZlwiKSBjb250YWluZXJSZWY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcImZpbGVJbnB1dFwiKSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XHJcblxyXG5cdHByaXZhdGUgZm5PbkZpbGVJbnB1dENoYW5nZSA9IChlKSA9PiB0aGlzLm9uRmlsZUlucHV0Q2hhbmdlKGUpO1xyXG5cdHByaXZhdGUgcHJvY2Vzc0ZpbGVUaW1lb3V0OiBOb2RlSlMuVGltZW91dDtcclxuXHJcblx0QEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxyXG5cdG9uQ2xpY2soZSkge1xyXG5cdFx0dGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgdGhpcy5mbk9uRmlsZUlucHV0Q2hhbmdlLCB0cnVlKTtcclxuXHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50KS5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIHRoaXMuZm5PbkZpbGVJbnB1dENoYW5nZSwgdHJ1ZSk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50KS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIHRoaXMuZm5PbkZpbGVJbnB1dENoYW5nZSwgdHJ1ZSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIG9uRmlsZUlucHV0Q2hhbmdlKGUpIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdHRoaXMucHJvY2Vzc0ZpbGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0YWxlcnQoXCJQcm9jZXNzaW5nIGZpbGVzIHRpbWVkIG91dFwiKTtcclxuXHRcdFx0fSwgMTAwMDApO1xyXG5cclxuXHRcdFx0dGhpcy5wcm9jZXNzRmlsZXMoKDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQpLmZpbGVzKTtcclxuXHJcblx0XHRcdC8vIEEgdmFsaWRhdGlvbiB0byBtYWtlIHN1cmUgdGhlIGZpbGVzIGFsbCBnb3QgcHJvY2Vzc2VkXHJcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnByb2Nlc3NGaWxlVGltZW91dCk7XHJcblx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnO1xyXG5cdFx0fVxyXG5cdFx0Y2F0Y2ggKGVycikge1xyXG5cdFx0XHRhbGVydChcIlNsaWNrRmlsZURyb3AgRXJyb3I6IFwiICsgZXJyKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG5cdG9uRHJvcChlKSB7XHJcblx0XHRlLnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuXHRcdHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcInNsaWNrLWZpbGUtZHJvcF9kcmFnLWVudGVyXCIpO1xyXG5cclxuXHRcdHRoaXMucHJvY2Vzc0ZpbGVzKCg8RGF0YVRyYW5zZmVyPmUuZGF0YVRyYW5zZmVyKS5maWxlcyk7XHJcblx0fVxyXG5cclxuXHRASG9zdExpc3RlbmVyKCdkcmFnZW50ZXInLCBbJyRldmVudCddKVxyXG5cdG9uRHJhZ0VudGVyKGUpIHtcclxuXHRcdHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcInNsaWNrLWZpbGUtZHJvcF9kcmFnLWVudGVyXCIpO1xyXG5cdH1cclxuXHJcblx0QEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxyXG5cdG9uRHJhZ092ZXIoZSkge1xyXG5cdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdH1cclxuXHJcblx0QEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcclxuXHRvbkRyYWdMZWF2ZShlKSB7XHJcblx0XHR0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJzbGljay1maWxlLWRyb3BfZHJhZy1lbnRlclwiKTtcclxuXHR9XHJcblxyXG5cdHV1aWQ6IHN0cmluZztcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHR0aGlzLnV1aWQgPSBTbGlja1V0aWxzU2VydmljZS5uZXdHdWlkKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFzeW5jIHByb2Nlc3NGaWxlcyhmaWxlczogRmlsZUxpc3QpIHtcclxuXHRcdGxldCBzbGlja0ZpbGVNb2RlbHM6IElTbGlja0ZpbGVNb2RlbFtdID0gW107XHJcblx0XHRsZXQgaW1hZ2VMb2FkUHJvbWlzZXMgPSBbXTtcclxuXHJcblx0XHRsZXQgaW1nUHJvbWlzZXM6IFByb21pc2U8c3RyaW5nPltdID0gW107XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGltYWdlTG9hZFByb21pc2VzLnB1c2gobmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcclxuXHRcdFx0XHRsZXQgZmlsZTogRmlsZSA9IGZpbGVzLml0ZW0oaSk7XHJcblx0XHRcdFx0bGV0IHNsaWNrRmlsZU1vZGVsID0gbmV3IFNsaWNrRmlsZU1vZGVsKCk7XHJcblx0XHRcdFx0c2xpY2tGaWxlTW9kZWwudXVpZCA9IFNsaWNrVXRpbHNTZXJ2aWNlLm5ld0d1aWQoKTtcclxuXHRcdFx0XHRzbGlja0ZpbGVNb2RlbC5maWxlID0gZmlsZTtcclxuXHRcdFx0XHRzbGlja0ZpbGVNb2RlbC5uYW1lID0gZmlsZS5uYW1lO1xyXG5cdFx0XHRcdHNsaWNrRmlsZU1vZGVsLnRpdGxlID0gZmlsZS5uYW1lO1xyXG5cclxuXHRcdFx0XHRsZXQgZmlsZU5hbWVQYXJ0cyA9IHNsaWNrRmlsZU1vZGVsLm5hbWUuc3BsaXQoJy4nKTtcclxuXHRcdFx0XHRsZXQgZXh0ID0gZmlsZU5hbWVQYXJ0c1tmaWxlTmFtZVBhcnRzLmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7XHJcblxyXG5cdFx0XHRcdGlmIChpbWdFeHRlbnNpb25zLmluZGV4T2YoZXh0KSA+PSAwKSB7XHJcblx0XHRcdFx0XHRsZXQgaW1nID0gbmV3IEltYWdlO1xyXG5cdFx0XHRcdFx0aW1nLm9ubG9hZCA9ICgpID0+IHtcdFxyXG5cdFx0XHRcdFx0XHRzbGlja0ZpbGVNb2RlbC50aHVtYm5haWxCYXNlNjRJbWFnZSA9IHRoaXMucmVzaXplSW1hZ2VUb0Jhc2U2NChpbWcsIDkwLCA5MCk7XHJcblx0XHRcdFx0XHRcdHNsaWNrRmlsZU1vZGVsLmJhc2U2NEltYWdlID0gdGhpcy5yZXNpemVJbWFnZVRvQmFzZTY0KGltZywgMTYwMCwgMTYwMCk7XHJcblx0XHRcdFx0XHRcdHNsaWNrRmlsZU1vZGVscy5wdXNoKHNsaWNrRmlsZU1vZGVsKTtcclxuXHRcdFx0XHRcdFx0cmVzb2x2ZShudWxsKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGltZy5zcmMgPSBhd2FpdCB0aGlzLmdldEJhc2U2NChmaWxlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0XHRzbGlja0ZpbGVNb2RlbHMucHVzaChzbGlja0ZpbGVNb2RlbCk7XHJcblx0XHRcdFx0XHRyZXNvbHZlKG51bGwpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGF3YWl0IFByb21pc2UuYWxsKGltYWdlTG9hZFByb21pc2VzKTtcclxuXHRcdHRoaXMuZmlsZXNDaGFuZ2VkRW1pdHRlci5lbWl0KHNsaWNrRmlsZU1vZGVscyk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHJlc2l6ZUltYWdlVG9CYXNlNjQoaW1nOiBIVE1MSW1hZ2VFbGVtZW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IHN0cmluZyB7XHJcblx0XHRsZXQgc2NhbGU6IG51bWJlciA9IDE7XHJcblx0XHRpZiAoaW1nLndpZHRoID4gaW1nLmhlaWdodCkge1xyXG5cdFx0XHRpZiAoaW1nLndpZHRoID4gd2lkdGgpXHJcblx0XHRcdFx0c2NhbGUgPSB3aWR0aCAvIGltZy53aWR0aDtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRpZiAoaW1nLmhlaWdodCA+IGhlaWdodClcclxuXHRcdFx0XHRzY2FsZSA9IGhlaWdodCAvIGltZy5oZWlnaHQ7XHJcblx0XHR9XHJcblxyXG5cdFx0bGV0IG5ld1dpZHRoID0gaW1nLndpZHRoICogc2NhbGU7XHJcblx0XHRsZXQgbmV3SGVpZ2h0ID0gaW1nLmhlaWdodCAqIHNjYWxlO1xyXG5cclxuXHRcdC8vIFdlIGNyZWF0ZSBhIGNhbnZhcyBhbmQgZ2V0IGl0cyBjb250ZXh0LlxyXG5cdFx0dmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG5cdFx0dmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG5cclxuXHRcdC8vIFdlIHNldCB0aGUgZGltZW5zaW9ucyBhdCB0aGUgd2FudGVkIHNpemUuXHJcblx0XHRjYW52YXMud2lkdGggPSBuZXdXaWR0aDtcclxuXHRcdGNhbnZhcy5oZWlnaHQgPSBuZXdIZWlnaHQ7XHJcblxyXG5cdFx0Ly8gV2UgcmVzaXplIHRoZSBpbWFnZSB3aXRoIHRoZSBjYW52YXMgbWV0aG9kIGRyYXdJbWFnZSgpO1xyXG5cdFx0Y3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIG5ld1dpZHRoLCBuZXdIZWlnaHQpO1xyXG5cclxuXHRcdHJldHVybiBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvanBlZ1wiKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0QmFzZTY0KGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHQvLyBDYXBhY2l0b3IgZmFpbHMgb24gdGhlIEZpbGVSZWFkZXIsIHNvIHdlIG5lZWQgdG8gZ2V0IF9yZWFkUmVhZGVyXHJcblx0XHRcdC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2lvbmljLXRlYW0vaW9uaWMtbmF0aXZlL2lzc3Vlcy81MDUjaXNzdWVjb21tZW50LTUwMzMxNjMzM1xyXG5cdFx0XHRsZXQgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG5cdFx0XHQvLyBHZXQgdGhlIG9yaWdpbmFsIHJlYWwgRmlsZVJlYWRlci4gVGhlIHBvbHlmaWxsIHNhdmVzIGEgcmVmZXJlbmNlIHRvIGl0LlxyXG5cdFx0XHRjb25zdCByZWFsRmlsZVJlYWRlciA9IChmaWxlUmVhZGVyIGFzIGFueSkuX3JlYWxSZWFkZXI7XHJcblxyXG5cdFx0XHQvLyBNYWtlIHN1cmUgd2Ugd2VyZSBhYmxlIHRvIGdldCB0aGUgb3JpZ2luYWwgRmlsZVJlYWRlciBcclxuXHRcdFx0aWYgKHJlYWxGaWxlUmVhZGVyKSB7XHJcblx0XHRcdFx0Ly8gU3dhcCBvdXQgdGhlIHBvbHlmaWxsIGluc3RhbmNlIGZvciB0aGUgb3JpZ2luYWwgaW5zdGFuY2UuXHJcblx0XHRcdFx0ZmlsZVJlYWRlciA9IHJlYWxGaWxlUmVhZGVyO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRmaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcblx0XHRcdGZpbGVSZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZSg8c3RyaW5nPmZpbGVSZWFkZXIucmVzdWx0KTtcclxuXHRcdFx0ZmlsZVJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiByZWplY3QoJ0Vycm9yOiAnICsgZXJyb3IpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiIsIjxwICNjb250YWluZXJSZWYgaWQ9XCJzbGljay1maWxlLWRyb3Bfe3t1dWlkfX1cIiBjbGFzcz1cInNsaWNrLWZpbGUtZHJvcFwiPlxyXG4gICAgPGkgY2xhc3M9XCJmYXIgZmEtY2xvdWQtYXJyb3ctdXAgbWUtMVwiPjwvaT4ge3tkaXNwbGF5VGV4dH19XHJcbjwvcD5cclxuPGlucHV0IHR5cGU9XCJmaWxlXCIgI2ZpbGVJbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiBtdWx0aXBsZSAvPlxyXG4iXX0=
|