slick-components 4.4.13 → 4.4.16
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/css/slick-components.css +598 -365
- package/css/slick-components.min.css +1 -1
- package/esm2020/public-api.mjs +43 -0
- package/esm2020/slick-accordion/slick-accordion-item-header.component.mjs +14 -0
- package/esm2020/slick-accordion/slick-accordion-item.component.mjs +86 -0
- package/esm2020/slick-accordion/slick-accordion.component.mjs +75 -0
- package/esm2020/slick-accordion/slick-accordion.module.mjs +23 -0
- package/esm2020/slick-auto-complete/slick-auto-complete-list-item-template.directive.mjs +22 -0
- package/esm2020/slick-auto-complete/slick-auto-complete.component.mjs +375 -0
- package/esm2020/slick-auto-complete/slick-auto-complete.module.mjs +24 -0
- package/esm2020/slick-button-spinner/slick-button-spinner.component.mjs +175 -0
- package/esm2020/slick-button-spinner/slick-button-spinner.module.mjs +19 -0
- package/esm2020/slick-calendar/slick-calendar.component.mjs +246 -0
- package/esm2020/slick-calendar/slick-calendar.module.mjs +19 -0
- package/esm2020/slick-card/slick-card-header.component.mjs +14 -0
- package/esm2020/slick-card/slick-card.component.mjs +42 -0
- package/esm2020/slick-card/slick-card.module.mjs +20 -0
- package/esm2020/slick-components.mjs +5 -0
- package/esm2020/slick-confirm-dialog/slick-confirm-dialog.component.mjs +65 -0
- package/esm2020/slick-confirm-dialog/slick-confirm-dialog.module.mjs +20 -0
- package/esm2020/slick-container/slick-container-body.component.mjs +24 -0
- package/esm2020/slick-container/slick-container-footer.component.mjs +20 -0
- package/esm2020/slick-container/slick-container-header.component.mjs +20 -0
- package/esm2020/slick-container/slick-container.component.mjs +21 -0
- package/esm2020/slick-container/slick-container.module.mjs +25 -0
- package/esm2020/slick-context-menu/slick-context-menu-item.component.mjs +14 -0
- package/esm2020/slick-context-menu/slick-context-menu.component.mjs +48 -0
- package/esm2020/slick-context-menu/slick-context-menu.module.mjs +20 -0
- package/{esm2015/slick-currency-mask/slick-currency-mask-options.model.js → esm2020/slick-currency-mask/slick-currency-mask-options.model.mjs} +0 -0
- package/esm2020/slick-currency-mask/slick-currency-mask.directive.mjs +233 -0
- package/esm2020/slick-currency-mask/slick-currency-mask.module.mjs +19 -0
- package/esm2020/slick-date-picker/slick-date-picker.component.mjs +278 -0
- package/esm2020/slick-date-picker/slick-date-picker.module.mjs +21 -0
- package/esm2020/slick-dialog/slick-dialog-footer.component.mjs +24 -0
- package/esm2020/slick-dialog/slick-dialog.component.mjs +294 -0
- package/esm2020/slick-dialog/slick-dialog.module.mjs +23 -0
- package/esm2020/slick-dialog/slick-dialog.service.mjs +68 -0
- package/esm2020/slick-drag-drop/slick-drag-drop.directive.mjs +13 -0
- package/esm2020/slick-drag-drop/slick-drag-drop.module.mjs +21 -0
- package/esm2020/slick-drag-drop/slick-draggable.directive.mjs +13 -0
- package/{esm2015/slick-drop-down/slick-drop-down-button.model.js → esm2020/slick-drop-down/slick-drop-down-button.model.mjs} +0 -0
- package/esm2020/slick-drop-down/slick-drop-down.component.mjs +479 -0
- package/esm2020/slick-drop-down/slick-drop-down.module.mjs +24 -0
- package/esm2020/slick-drop-down/slick-drop-down.service.mjs +55 -0
- package/esm2020/slick-drop-list/slick-drop-list-grab.directive.mjs +18 -0
- package/esm2020/slick-drop-list/slick-drop-list-item.directive.mjs +18 -0
- package/esm2020/slick-drop-list/slick-drop-list.directive.mjs +215 -0
- package/esm2020/slick-drop-list/slick-drop-list.module.mjs +23 -0
- package/esm2020/slick-email-viewer/slick-email-viewer-dialog.component.mjs +81 -0
- package/esm2020/slick-email-viewer/slick-email-viewer.component.mjs +42 -0
- package/esm2020/slick-email-viewer/slick-email-viewer.module.mjs +26 -0
- package/{esm2015/slick-emailer/slick-emailer-address.model.js → esm2020/slick-emailer/slick-emailer-address.model.mjs} +0 -0
- package/esm2020/slick-emailer/slick-emailer-dialog.component.mjs +153 -0
- package/esm2020/slick-emailer/slick-emailer.component.mjs +235 -0
- package/{esm2015/slick-emailer/slick-emailer.model.js → esm2020/slick-emailer/slick-emailer.model.mjs} +0 -0
- package/esm2020/slick-emailer/slick-emailer.module.mjs +29 -0
- package/esm2020/slick-file-drop/slick-file-drop.component.mjs +156 -0
- package/esm2020/slick-file-drop/slick-file-drop.module.mjs +20 -0
- package/esm2020/slick-file-list/slick-file-list-item.component.mjs +173 -0
- package/esm2020/slick-file-list/slick-file-list.component.mjs +130 -0
- package/esm2020/slick-file-list/slick-file-list.module.mjs +23 -0
- package/{esm2015/slick-file-model/slick-file.model.js → esm2020/slick-file-model/slick-file.model.mjs} +0 -0
- package/esm2020/slick-google-address-search/slick-google-address-search.directive.mjs +75 -0
- package/esm2020/slick-google-address-search/slick-google-address-search.module.mjs +19 -0
- package/esm2020/slick-google-map/slick-google-map-dialog.component.mjs +50 -0
- package/esm2020/slick-google-map/slick-google-map.component.mjs +48 -0
- package/esm2020/slick-google-map/slick-google-map.module.mjs +22 -0
- package/esm2020/slick-grid/slick-grid-column-template.directive.mjs +19 -0
- package/{esm2015/slick-grid/slick-grid-column.model.js → esm2020/slick-grid/slick-grid-column.model.mjs} +0 -0
- package/{esm2015/slick-grid/slick-grid-favorite.model.js → esm2020/slick-grid/slick-grid-favorite.model.mjs} +0 -0
- package/{esm2015/slick-grid/slick-grid-request.model.js → esm2020/slick-grid/slick-grid-request.model.mjs} +0 -0
- package/{esm2015/slick-grid/slick-grid-response.model.js → esm2020/slick-grid/slick-grid-response.model.mjs} +0 -0
- package/esm2020/slick-grid/slick-grid-sanitize.pipe.mjs +20 -0
- package/esm2020/slick-grid/slick-grid.component.mjs +793 -0
- package/esm2020/slick-grid/slick-grid.module.mjs +43 -0
- package/{esm2015/slick-grid/slick-grid.options.js → esm2020/slick-grid/slick-grid.options.mjs} +0 -0
- package/esm2020/slick-grid/slick-grid.service.mjs +66 -0
- package/esm2020/slick-multi-select/slick-multi-select.component.mjs +362 -0
- package/esm2020/slick-multi-select/slick-multi-select.module.mjs +20 -0
- package/esm2020/slick-multi-select/slick-multi-select.service.mjs +77 -0
- package/esm2020/slick-ordered-list/slick-ordered-list.component.mjs +200 -0
- package/esm2020/slick-ordered-list/slick-ordered-list.module.mjs +20 -0
- package/esm2020/slick-paging/slick-paging.component.mjs +185 -0
- package/esm2020/slick-paging/slick-paging.module.mjs +19 -0
- package/esm2020/slick-photo-gallery/slick-photo-gallery.component.mjs +98 -0
- package/{esm2015/slick-photo-gallery/slick-photo-gallery.model.js → esm2020/slick-photo-gallery/slick-photo-gallery.model.mjs} +0 -0
- package/esm2020/slick-photo-gallery/slick-photo-gallery.module.mjs +21 -0
- package/esm2020/slick-pick-list/slick-pick-list.component.mjs +84 -0
- package/esm2020/slick-pick-list/slick-pick-list.module.mjs +20 -0
- package/esm2020/slick-popover/slick-popover.component.mjs +204 -0
- package/esm2020/slick-popover/slick-popover.module.mjs +19 -0
- package/esm2020/slick-profile-picture/slick-profile-picture.component.mjs +267 -0
- package/esm2020/slick-profile-picture/slick-profile-picture.module.mjs +20 -0
- package/esm2020/slick-progress-bar/slick-progress-bar.module.mjs +18 -0
- package/esm2020/slick-progress-bar/slick-progress-bar.service.mjs +53 -0
- package/esm2020/slick-screen-blocker/slick-screen-blocker.module.mjs +18 -0
- package/esm2020/slick-screen-blocker/slick-screen-blocker.service.mjs +83 -0
- package/{esm2015/slick-slider/slick-slider-tick.model.js → esm2020/slick-slider/slick-slider-tick.model.mjs} +0 -0
- package/esm2020/slick-slider/slick-slider.component.mjs +90 -0
- package/esm2020/slick-slider/slick-slider.module.mjs +20 -0
- package/esm2020/slick-split-screen/slick-screen-split-left-content.component.mjs +15 -0
- package/esm2020/slick-split-screen/slick-screen-split-right-content.component.mjs +15 -0
- package/esm2020/slick-split-screen/slick-split-screen.component.mjs +159 -0
- package/esm2020/slick-split-screen/slick-split-screen.module.mjs +21 -0
- package/esm2020/slick-tabs/slick-tab-header.component.mjs +28 -0
- package/esm2020/slick-tabs/slick-tab.component.mjs +63 -0
- package/{esm2015/slick-tabs/slick-tab.model.js → esm2020/slick-tabs/slick-tab.model.mjs} +0 -0
- package/esm2020/slick-tabs/slick-tabs.component.mjs +107 -0
- package/esm2020/slick-tabs/slick-tabs.module.mjs +23 -0
- package/esm2020/slick-toast/slick-toast.module.mjs +18 -0
- package/esm2020/slick-toast/slick-toast.service.mjs +88 -0
- package/{esm2015/slick-tree-view/slick-tree-node.model.js → esm2020/slick-tree-view/slick-tree-node.model.mjs} +0 -0
- package/esm2020/slick-tree-view/slick-tree-view.component.mjs +293 -0
- package/esm2020/slick-tree-view/slick-tree-view.module.mjs +22 -0
- package/esm2020/slick-type-ahead/slick-type-ahead.directive.mjs +164 -0
- package/esm2020/slick-type-ahead/slick-type-ahead.module.mjs +18 -0
- package/esm2020/slick-validation-indicator/slick-validation-indicator.directive.mjs +63 -0
- package/esm2020/slick-validation-indicator/slick-validation-indicator.module.mjs +19 -0
- package/esm2020/utils/slick-function-lock.service.mjs +55 -0
- package/esm2020/utils/slick-init.service.mjs +49 -0
- package/esm2020/utils/slick-log.service.mjs +23 -0
- package/esm2020/utils/slick-sleep.service.mjs +14 -0
- package/esm2020/utils/slick-utils.service.mjs +247 -0
- package/fesm2015/{slick-components.js → slick-components.mjs} +2779 -2070
- package/fesm2015/slick-components.mjs.map +1 -0
- package/fesm2020/slick-components.mjs +8467 -0
- package/fesm2020/slick-components.mjs.map +1 -0
- package/package.json +20 -8
- package/public-api.d.ts +8 -8
- package/slick-accordion/slick-accordion-item-header.component.d.ts +3 -0
- package/slick-accordion/slick-accordion-item.component.d.ts +3 -0
- package/slick-accordion/slick-accordion.component.d.ts +3 -0
- package/slick-accordion/slick-accordion.module.d.ts +8 -0
- package/slick-auto-complete/slick-auto-complete-list-item-template.directive.d.ts +3 -0
- package/slick-auto-complete/slick-auto-complete.component.d.ts +3 -0
- package/slick-auto-complete/slick-auto-complete.module.d.ts +8 -0
- package/slick-button-spinner/slick-button-spinner.component.d.ts +3 -0
- package/slick-button-spinner/slick-button-spinner.module.d.ts +6 -0
- package/slick-calendar/slick-calendar.component.d.ts +3 -0
- package/slick-calendar/slick-calendar.module.d.ts +6 -0
- package/slick-card/slick-card-header.component.d.ts +3 -0
- package/slick-card/slick-card.component.d.ts +3 -0
- package/slick-card/slick-card.module.d.ts +10 -0
- package/slick-components.d.ts +1 -22
- package/slick-confirm-dialog/slick-confirm-dialog.component.d.ts +3 -0
- package/slick-confirm-dialog/slick-confirm-dialog.module.d.ts +7 -0
- package/slick-container/slick-container-body.component.d.ts +3 -0
- package/slick-container/slick-container-footer.component.d.ts +3 -0
- package/slick-container/slick-container-header.component.d.ts +3 -0
- package/slick-container/slick-container.component.d.ts +3 -0
- package/slick-container/slick-container.module.d.ts +9 -0
- package/slick-context-menu/slick-context-menu-item.component.d.ts +3 -0
- package/slick-context-menu/slick-context-menu.component.d.ts +3 -0
- package/slick-context-menu/slick-context-menu.module.d.ts +7 -0
- package/slick-currency-mask/slick-currency-mask.directive.d.ts +3 -0
- package/slick-currency-mask/slick-currency-mask.module.d.ts +5 -0
- package/slick-date-picker/slick-date-picker.component.d.ts +3 -0
- package/slick-date-picker/slick-date-picker.module.d.ts +8 -0
- package/slick-dialog/slick-dialog-footer.component.d.ts +3 -0
- package/slick-dialog/slick-dialog.component.d.ts +3 -0
- package/slick-dialog/slick-dialog.module.d.ts +10 -1
- package/slick-dialog/slick-dialog.service.d.ts +3 -0
- package/slick-drag-drop/slick-drag-drop.directive.d.ts +3 -0
- package/slick-drag-drop/slick-drag-drop.module.d.ts +11 -0
- package/slick-drag-drop/slick-draggable.directive.d.ts +3 -0
- package/slick-drop-down/slick-drop-down.component.d.ts +3 -0
- package/slick-drop-down/slick-drop-down.module.d.ts +9 -0
- package/slick-drop-down/slick-drop-down.service.d.ts +3 -0
- package/slick-drop-list/slick-drop-list-grab.directive.d.ts +3 -0
- package/slick-drop-list/slick-drop-list-item.directive.d.ts +3 -0
- package/slick-drop-list/slick-drop-list.directive.d.ts +13 -7
- package/slick-drop-list/slick-drop-list.module.d.ts +14 -0
- package/slick-email-viewer/slick-email-viewer-dialog.component.d.ts +3 -0
- package/slick-email-viewer/slick-email-viewer.component.d.ts +3 -0
- package/slick-email-viewer/slick-email-viewer.module.d.ts +10 -0
- package/slick-emailer/slick-emailer-dialog.component.d.ts +3 -0
- package/slick-emailer/slick-emailer.component.d.ts +3 -0
- package/slick-emailer/slick-emailer.module.d.ts +13 -0
- package/slick-file-drop/slick-file-drop.component.d.ts +3 -0
- package/slick-file-drop/slick-file-drop.module.d.ts +7 -0
- package/slick-file-list/slick-file-list-item.component.d.ts +3 -0
- package/slick-file-list/slick-file-list.component.d.ts +3 -0
- package/slick-file-list/slick-file-list.module.d.ts +10 -0
- package/slick-google-address-search/slick-google-address-search.directive.d.ts +3 -0
- package/slick-google-address-search/slick-google-address-search.module.d.ts +6 -0
- package/slick-google-map/slick-google-map-dialog.component.d.ts +3 -0
- package/slick-google-map/slick-google-map.component.d.ts +3 -0
- package/slick-google-map/slick-google-map.module.d.ts +8 -0
- package/slick-grid/slick-grid-column-template.directive.d.ts +3 -0
- package/slick-grid/slick-grid-sanitize.pipe.d.ts +3 -0
- package/slick-grid/slick-grid.component.d.ts +3 -0
- package/slick-grid/slick-grid.module.d.ts +16 -0
- package/slick-grid/slick-grid.service.d.ts +3 -0
- package/slick-multi-select/slick-multi-select.component.d.ts +3 -0
- package/slick-multi-select/slick-multi-select.module.d.ts +7 -0
- package/slick-multi-select/slick-multi-select.service.d.ts +3 -0
- package/slick-ordered-list/slick-ordered-list.component.d.ts +3 -0
- package/slick-ordered-list/slick-ordered-list.module.d.ts +7 -0
- package/slick-paging/slick-paging.component.d.ts +3 -0
- package/slick-paging/slick-paging.module.d.ts +6 -0
- package/slick-photo-gallery/slick-photo-gallery.component.d.ts +3 -0
- package/slick-photo-gallery/slick-photo-gallery.module.d.ts +6 -0
- package/slick-pick-list/slick-pick-list.component.d.ts +3 -0
- package/slick-pick-list/slick-pick-list.module.d.ts +7 -0
- package/slick-popover/slick-popover.component.d.ts +3 -0
- package/slick-popover/slick-popover.module.d.ts +6 -0
- package/slick-profile-picture/slick-profile-picture.component.d.ts +3 -0
- package/slick-profile-picture/slick-profile-picture.module.d.ts +7 -0
- package/slick-progress-bar/slick-progress-bar.module.d.ts +5 -0
- package/slick-progress-bar/slick-progress-bar.service.d.ts +3 -0
- package/slick-screen-blocker/slick-screen-blocker.module.d.ts +5 -0
- package/slick-screen-blocker/slick-screen-blocker.service.d.ts +3 -0
- package/slick-slider/slick-slider.component.d.ts +3 -0
- package/slick-slider/slick-slider.module.d.ts +6 -0
- package/slick-split-screen/slick-screen-split-left-content.component.d.ts +3 -0
- package/slick-split-screen/slick-screen-split-right-content.component.d.ts +3 -0
- package/slick-split-screen/slick-split-screen.component.d.ts +3 -0
- package/slick-split-screen/slick-split-screen.module.d.ts +8 -0
- package/slick-tabs/slick-tab-header.component.d.ts +3 -0
- package/slick-tabs/slick-tab.component.d.ts +3 -0
- package/slick-tabs/slick-tabs.component.d.ts +3 -0
- package/slick-tabs/slick-tabs.module.d.ts +10 -0
- package/slick-toast/slick-toast.module.d.ts +5 -0
- package/slick-toast/slick-toast.service.d.ts +3 -0
- package/slick-tree-view/slick-tree-view.component.d.ts +3 -0
- package/slick-tree-view/slick-tree-view.module.d.ts +8 -0
- package/slick-type-ahead/slick-type-ahead.directive.d.ts +3 -0
- package/slick-type-ahead/slick-type-ahead.module.d.ts +5 -0
- package/slick-validation-indicator/slick-validation-indicator.directive.d.ts +3 -0
- package/slick-validation-indicator/slick-validation-indicator.module.d.ts +6 -0
- package/utils/slick-function-lock.service.d.ts +3 -0
- package/utils/slick-init.service.d.ts +3 -0
- package/utils/slick-log.service.d.ts +3 -0
- package/utils/slick-sleep.service.d.ts +3 -0
- package/utils/slick-utils.service.d.ts +5 -0
- package/bundles/slick-components.umd.js +0 -9777
- package/bundles/slick-components.umd.js.map +0 -1
- package/esm2015/public-api.js +0 -43
- package/esm2015/slick-accordion/slick-accordion-item-header.component.js +0 -10
- package/esm2015/slick-accordion/slick-accordion-item.component.js +0 -80
- package/esm2015/slick-accordion/slick-accordion.component.js +0 -77
- package/esm2015/slick-accordion/slick-accordion.module.js +0 -18
- package/esm2015/slick-auto-complete/slick-auto-complete-list-item-template.directive.js +0 -21
- package/esm2015/slick-auto-complete/slick-auto-complete.component.js +0 -352
- package/esm2015/slick-auto-complete/slick-auto-complete.module.js +0 -19
- package/esm2015/slick-button-spinner/slick-button-spinner.component.js +0 -186
- package/esm2015/slick-button-spinner/slick-button-spinner.module.js +0 -14
- package/esm2015/slick-calendar/slick-calendar.component.js +0 -233
- package/esm2015/slick-calendar/slick-calendar.module.js +0 -14
- package/esm2015/slick-card/slick-card-header.component.js +0 -10
- package/esm2015/slick-card/slick-card.component.js +0 -37
- package/esm2015/slick-card/slick-card.module.js +0 -14
- package/esm2015/slick-components.js +0 -27
- package/esm2015/slick-confirm-dialog/slick-confirm-dialog.component.js +0 -62
- package/esm2015/slick-confirm-dialog/slick-confirm-dialog.module.js +0 -15
- package/esm2015/slick-container/slick-container-body.component.js +0 -18
- package/esm2015/slick-container/slick-container-footer.component.js +0 -16
- package/esm2015/slick-container/slick-container-header.component.js +0 -16
- package/esm2015/slick-container/slick-container.component.js +0 -19
- package/esm2015/slick-container/slick-container.module.js +0 -20
- package/esm2015/slick-context-menu/slick-context-menu-item.component.js +0 -10
- package/esm2015/slick-context-menu/slick-context-menu.component.js +0 -43
- package/esm2015/slick-context-menu/slick-context-menu.module.js +0 -15
- package/esm2015/slick-currency-mask/slick-currency-mask.directive.js +0 -234
- package/esm2015/slick-currency-mask/slick-currency-mask.module.js +0 -14
- package/esm2015/slick-date-picker/slick-date-picker.component.js +0 -267
- package/esm2015/slick-date-picker/slick-date-picker.module.js +0 -16
- package/esm2015/slick-dialog/slick-dialog-footer.component.js +0 -18
- package/esm2015/slick-dialog/slick-dialog.component.js +0 -282
- package/esm2015/slick-dialog/slick-dialog.module.js +0 -18
- package/esm2015/slick-dialog/slick-dialog.service.js +0 -67
- package/esm2015/slick-drag-drop/slick-drag-drop.directive.js +0 -9
- package/esm2015/slick-drag-drop/slick-drag-drop.module.js +0 -14
- package/esm2015/slick-drag-drop/slick-draggable.directive.js +0 -9
- package/esm2015/slick-drop-down/slick-drop-down.component.js +0 -465
- package/esm2015/slick-drop-down/slick-drop-down.module.js +0 -19
- package/esm2015/slick-drop-down/slick-drop-down.service.js +0 -59
- package/esm2015/slick-drop-list/slick-drop-list-grab.directive.js +0 -18
- package/esm2015/slick-drop-list/slick-drop-list-item.directive.js +0 -18
- package/esm2015/slick-drop-list/slick-drop-list.directive.js +0 -162
- package/esm2015/slick-drop-list/slick-drop-list.module.js +0 -15
- package/esm2015/slick-email-viewer/slick-email-viewer-dialog.component.js +0 -61
- package/esm2015/slick-email-viewer/slick-email-viewer.component.js +0 -39
- package/esm2015/slick-email-viewer/slick-email-viewer.module.js +0 -21
- package/esm2015/slick-emailer/slick-emailer-dialog.component.js +0 -122
- package/esm2015/slick-emailer/slick-emailer.component.js +0 -226
- package/esm2015/slick-emailer/slick-emailer.module.js +0 -24
- package/esm2015/slick-file-drop/slick-file-drop.component.js +0 -144
- package/esm2015/slick-file-drop/slick-file-drop.module.js +0 -15
- package/esm2015/slick-file-list/slick-file-list-item.component.js +0 -156
- package/esm2015/slick-file-list/slick-file-list.component.js +0 -114
- package/esm2015/slick-file-list/slick-file-list.module.js +0 -18
- package/esm2015/slick-google-address-search/slick-google-address-search.directive.js +0 -75
- package/esm2015/slick-google-address-search/slick-google-address-search.module.js +0 -14
- package/esm2015/slick-google-map/slick-google-map-dialog.component.js +0 -45
- package/esm2015/slick-google-map/slick-google-map.component.js +0 -45
- package/esm2015/slick-google-map/slick-google-map.module.js +0 -17
- package/esm2015/slick-grid/slick-grid-column-template.directive.js +0 -19
- package/esm2015/slick-grid/slick-grid-sanitize.pipe.js +0 -20
- package/esm2015/slick-grid/slick-grid.component.js +0 -792
- package/esm2015/slick-grid/slick-grid.module.js +0 -38
- package/esm2015/slick-grid/slick-grid.service.js +0 -72
- package/esm2015/slick-multi-select/slick-multi-select.component.js +0 -356
- package/esm2015/slick-multi-select/slick-multi-select.module.js +0 -15
- package/esm2015/slick-multi-select/slick-multi-select.service.js +0 -74
- package/esm2015/slick-ordered-list/slick-ordered-list.component.js +0 -198
- package/esm2015/slick-ordered-list/slick-ordered-list.module.js +0 -15
- package/esm2015/slick-paging/slick-paging.component.js +0 -180
- package/esm2015/slick-paging/slick-paging.module.js +0 -14
- package/esm2015/slick-photo-gallery/slick-photo-gallery.component.js +0 -101
- package/esm2015/slick-photo-gallery/slick-photo-gallery.module.js +0 -16
- package/esm2015/slick-pick-list/slick-pick-list.component.js +0 -78
- package/esm2015/slick-pick-list/slick-pick-list.module.js +0 -15
- package/esm2015/slick-popover/slick-popover.component.js +0 -199
- package/esm2015/slick-popover/slick-popover.module.js +0 -14
- package/esm2015/slick-profile-picture/slick-profile-picture.component.js +0 -242
- package/esm2015/slick-profile-picture/slick-profile-picture.module.js +0 -15
- package/esm2015/slick-progress-bar/slick-progress-bar.module.js +0 -13
- package/esm2015/slick-progress-bar/slick-progress-bar.service.js +0 -50
- package/esm2015/slick-screen-blocker/slick-screen-blocker.module.js +0 -13
- package/esm2015/slick-screen-blocker/slick-screen-blocker.service.js +0 -80
- package/esm2015/slick-slider/slick-slider.component.js +0 -88
- package/esm2015/slick-slider/slick-slider.module.js +0 -15
- package/esm2015/slick-split-screen/slick-screen-split-left-content.component.js +0 -13
- package/esm2015/slick-split-screen/slick-screen-split-right-content.component.js +0 -13
- package/esm2015/slick-split-screen/slick-split-screen.component.js +0 -148
- package/esm2015/slick-split-screen/slick-split-screen.module.js +0 -16
- package/esm2015/slick-tabs/slick-tab-header.component.js +0 -25
- package/esm2015/slick-tabs/slick-tab.component.js +0 -67
- package/esm2015/slick-tabs/slick-tabs.component.js +0 -104
- package/esm2015/slick-tabs/slick-tabs.module.js +0 -17
- package/esm2015/slick-toast/slick-toast.module.js +0 -13
- package/esm2015/slick-toast/slick-toast.service.js +0 -91
- package/esm2015/slick-tree-view/slick-tree-view.component.js +0 -287
- package/esm2015/slick-tree-view/slick-tree-view.module.js +0 -17
- package/esm2015/slick-type-ahead/slick-type-ahead.directive.js +0 -155
- package/esm2015/slick-type-ahead/slick-type-ahead.module.js +0 -13
- package/esm2015/slick-validation-indicator/slick-validation-indicator.directive.js +0 -61
- package/esm2015/slick-validation-indicator/slick-validation-indicator.module.js +0 -14
- package/esm2015/utils/slick-function-lock.service.js +0 -54
- package/esm2015/utils/slick-init.service.js +0 -48
- package/esm2015/utils/slick-log.service.js +0 -27
- package/esm2015/utils/slick-sleep.service.js +0 -14
- package/esm2015/utils/slick-utils.service.js +0 -229
- package/fesm2015/slick-components.js.map +0 -1
- package/slick-components.metadata.json +0 -1
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
// @dynamic
|
|
3
|
-
export class SlickUtilsService {
|
|
4
|
-
static newGuid() {
|
|
5
|
-
let d = new Date().getTime();
|
|
6
|
-
const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
7
|
-
const r = (d + Math.random() * 16) % 16 | 0;
|
|
8
|
-
d = Math.floor(d / 16);
|
|
9
|
-
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
|
|
10
|
-
});
|
|
11
|
-
return uuid;
|
|
12
|
-
}
|
|
13
|
-
static waitForElement(elementSelector, iterationTimeout = 50) {
|
|
14
|
-
let infiniteLoopCheck = 10;
|
|
15
|
-
let iterationId;
|
|
16
|
-
const p = new Promise((resolve, reject) => {
|
|
17
|
-
iterationId = setInterval(() => {
|
|
18
|
-
const el = document.querySelector(elementSelector);
|
|
19
|
-
if (el) {
|
|
20
|
-
clearInterval(iterationId);
|
|
21
|
-
resolve(el);
|
|
22
|
-
}
|
|
23
|
-
if (--infiniteLoopCheck <= 0) {
|
|
24
|
-
clearInterval(iterationId);
|
|
25
|
-
alert("Loop Check failed trying to find " + elementSelector);
|
|
26
|
-
reject();
|
|
27
|
-
}
|
|
28
|
-
}, 100);
|
|
29
|
-
});
|
|
30
|
-
return p;
|
|
31
|
-
}
|
|
32
|
-
static waitForElementRef(elementRef, iterationTimeout = 50) {
|
|
33
|
-
let infiniteLoopCheck = 10;
|
|
34
|
-
let iterationId;
|
|
35
|
-
const p = new Promise((resolve, reject) => {
|
|
36
|
-
iterationId = setInterval(() => {
|
|
37
|
-
const el = elementRef.nativeElement;
|
|
38
|
-
if (el && el.clientHeight && el.clientWidth) {
|
|
39
|
-
clearInterval(iterationId);
|
|
40
|
-
resolve(elementRef);
|
|
41
|
-
}
|
|
42
|
-
if (--infiniteLoopCheck <= 0) {
|
|
43
|
-
clearInterval(iterationId);
|
|
44
|
-
console.error("Loop Check failed trying to find element");
|
|
45
|
-
reject();
|
|
46
|
-
}
|
|
47
|
-
}, iterationTimeout);
|
|
48
|
-
});
|
|
49
|
-
return p;
|
|
50
|
-
}
|
|
51
|
-
static getDeepObject(obj, objName) {
|
|
52
|
-
const dotSplit = objName.split(".");
|
|
53
|
-
let currentObj = obj;
|
|
54
|
-
dotSplit.forEach((o) => {
|
|
55
|
-
if (currentObj === null || currentObj === undefined)
|
|
56
|
-
return null;
|
|
57
|
-
currentObj = currentObj[o];
|
|
58
|
-
});
|
|
59
|
-
return currentObj;
|
|
60
|
-
}
|
|
61
|
-
static setDeepObject(obj, objName, val) {
|
|
62
|
-
const dotSplit = objName.split(".");
|
|
63
|
-
let prevObj = obj;
|
|
64
|
-
let currentObj = obj;
|
|
65
|
-
dotSplit.forEach((o) => {
|
|
66
|
-
if (currentObj === null || currentObj === undefined)
|
|
67
|
-
return null;
|
|
68
|
-
prevObj = currentObj;
|
|
69
|
-
currentObj = currentObj[o];
|
|
70
|
-
});
|
|
71
|
-
prevObj[dotSplit[dotSplit.length - 1]] = val;
|
|
72
|
-
return currentObj;
|
|
73
|
-
}
|
|
74
|
-
static clone(obj) {
|
|
75
|
-
if (obj === null || obj === undefined)
|
|
76
|
-
return obj;
|
|
77
|
-
let returnObj = JSON.parse(JSON.stringify(obj));
|
|
78
|
-
//returnObj = this.dateSanitize(returnObj);
|
|
79
|
-
return returnObj;
|
|
80
|
-
}
|
|
81
|
-
static dateSanitize(obj, infiniteLoopCheck = 0) {
|
|
82
|
-
infiniteLoopCheck++;
|
|
83
|
-
if (infiniteLoopCheck > 20) {
|
|
84
|
-
console.error("infinte loop");
|
|
85
|
-
return obj;
|
|
86
|
-
}
|
|
87
|
-
if (obj === null || obj === undefined)
|
|
88
|
-
return obj;
|
|
89
|
-
// If the obj IS a date, return the processed date
|
|
90
|
-
if (typeof obj === "string" && /^([0-9]{4}-(0[1-9]|10|11|12)-([012][0-9]|30|31)T([01][0-9]|[2][0123]):([0-5][0-9]):([0-5][0-9])(.[0-9]{0,})?(z|Z))$/.test(obj))
|
|
91
|
-
return new Date(obj);
|
|
92
|
-
// If this is an atomic type (string, bool, number), just return the atomic object
|
|
93
|
-
if (typeof obj !== "object")
|
|
94
|
-
return obj;
|
|
95
|
-
let returnObj;
|
|
96
|
-
if (Array.isArray(obj)) {
|
|
97
|
-
returnObj = [];
|
|
98
|
-
obj.forEach(o => returnObj.push(this.dateSanitize(o, infiniteLoopCheck)));
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
returnObj = {};
|
|
102
|
-
for (const key in obj) {
|
|
103
|
-
if (obj[key] === null)
|
|
104
|
-
returnObj[key] = null;
|
|
105
|
-
else if (Array.isArray(obj[key])) {
|
|
106
|
-
returnObj[key] = [];
|
|
107
|
-
obj[key].forEach(o => returnObj[key].push(this.dateSanitize(o, infiniteLoopCheck)));
|
|
108
|
-
}
|
|
109
|
-
else if (typeof obj[key] === "object")
|
|
110
|
-
returnObj[key] = this.dateSanitize(obj[key], ++infiniteLoopCheck);
|
|
111
|
-
else if (/^([0-9]{4}-(0[1-9]|10|11|12)-([012][0-9]|30|31)T([01][0-9]|[2][0123]):([0-5][0-9]):([0-5][0-9])(.[0-9]{0,})?(z|Z))$/.test(obj[key]))
|
|
112
|
-
returnObj[key] = new Date(obj[key]);
|
|
113
|
-
else
|
|
114
|
-
returnObj[key] = obj[key];
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return returnObj;
|
|
118
|
-
}
|
|
119
|
-
static round(num, decimals) {
|
|
120
|
-
return Number(Math.round(parseFloat(num + 'e' + decimals)) + 'e-' + decimals);
|
|
121
|
-
}
|
|
122
|
-
static checkParentClassExists(el, className) {
|
|
123
|
-
let currentEl = el;
|
|
124
|
-
let hasSelector = false;
|
|
125
|
-
while (currentEl && currentEl !== document.body) {
|
|
126
|
-
if (currentEl.classList.contains(className)) {
|
|
127
|
-
hasSelector = true;
|
|
128
|
-
break;
|
|
129
|
-
}
|
|
130
|
-
currentEl = currentEl.parentElement;
|
|
131
|
-
}
|
|
132
|
-
return hasSelector;
|
|
133
|
-
}
|
|
134
|
-
static checkParentIdExists(el, idName) {
|
|
135
|
-
let currentEl = el;
|
|
136
|
-
let hasSelector = false;
|
|
137
|
-
while (currentEl && currentEl !== document.body) {
|
|
138
|
-
if (currentEl.getAttribute("id") === idName) {
|
|
139
|
-
hasSelector = true;
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
currentEl = currentEl.parentElement;
|
|
143
|
-
}
|
|
144
|
-
return hasSelector;
|
|
145
|
-
}
|
|
146
|
-
static findParent(el, className) {
|
|
147
|
-
let currentEl = el;
|
|
148
|
-
while (currentEl && currentEl !== document.body) {
|
|
149
|
-
if (currentEl.classList && currentEl.classList.contains(className)) {
|
|
150
|
-
return currentEl;
|
|
151
|
-
}
|
|
152
|
-
currentEl = currentEl.parentElement;
|
|
153
|
-
}
|
|
154
|
-
return null;
|
|
155
|
-
}
|
|
156
|
-
static getClosestSibling(el, className) {
|
|
157
|
-
let currentEl = el;
|
|
158
|
-
while (currentEl && currentEl !== document.body) {
|
|
159
|
-
if (currentEl.classList && currentEl.classList.contains(className)) {
|
|
160
|
-
return currentEl;
|
|
161
|
-
}
|
|
162
|
-
currentEl = currentEl.previousSibling;
|
|
163
|
-
}
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
static waitForTinyMCE(tinyMCEId) {
|
|
167
|
-
return new Promise((resolve, reject) => {
|
|
168
|
-
let waitForTinyMCE;
|
|
169
|
-
if (tinymce.get(tinyMCEId) && tinymce.get(tinyMCEId).initialized) {
|
|
170
|
-
resolve();
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
clearInterval(waitForTinyMCE);
|
|
174
|
-
let infiniteLoopCheck = 100;
|
|
175
|
-
waitForTinyMCE = setInterval(() => {
|
|
176
|
-
if ((tinymce.get(tinyMCEId) && tinymce.get(tinyMCEId).initialized) || infiniteLoopCheck === 0) {
|
|
177
|
-
clearInterval(waitForTinyMCE);
|
|
178
|
-
if (infiniteLoopCheck === 0) {
|
|
179
|
-
console.error("Timed out waiting for tinyMCE Id: " + tinyMCEId);
|
|
180
|
-
return reject();
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
return resolve();
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
infiniteLoopCheck--;
|
|
187
|
-
}, 100);
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
static attachElement(el, attachTo) {
|
|
192
|
-
if (attachTo === 'body')
|
|
193
|
-
document.body.appendChild(el);
|
|
194
|
-
else {
|
|
195
|
-
const parent = document.body.querySelector(attachTo);
|
|
196
|
-
if (!parent) {
|
|
197
|
-
console.error("Could not find element " + attachTo + " to attach to");
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
parent.appendChild(el);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
static removeElement(el) {
|
|
206
|
-
// it's okay if this fails. It was already removed
|
|
207
|
-
try {
|
|
208
|
-
// the default destroy won't get rid of this
|
|
209
|
-
document.body.removeChild(el);
|
|
210
|
-
}
|
|
211
|
-
catch (_a) { }
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
SlickUtilsService.getHashCode = function (str) {
|
|
215
|
-
let hash = 0;
|
|
216
|
-
let chr;
|
|
217
|
-
if (str.length === 0)
|
|
218
|
-
return hash;
|
|
219
|
-
for (let i = 0; i < str.length; i++) {
|
|
220
|
-
chr = str.charCodeAt(i);
|
|
221
|
-
hash = ((hash << 5) - hash) + chr;
|
|
222
|
-
hash |= 0; // Convert to 32bit integer
|
|
223
|
-
}
|
|
224
|
-
return Math.abs(hash);
|
|
225
|
-
};
|
|
226
|
-
SlickUtilsService.decorators = [
|
|
227
|
-
{ type: Injectable }
|
|
228
|
-
];
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stdXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3V0aWxzL3NsaWNrLXV0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUl2RCxXQUFXO0FBRVgsTUFBTSxPQUFPLGlCQUFpQjtJQUM3QixNQUFNLENBQUMsT0FBTztRQUNiLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLEdBQUcsc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7WUFDL0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBdUIsRUFBRSxnQkFBZ0IsR0FBRyxFQUFFO1FBQ25FLElBQUksaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksV0FBeUIsQ0FBQztRQUM5QixNQUFNLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0RCxX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QztJQUNsQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNwQyxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjtLQUN0QztJQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUM7O1lBdk5GLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFbGVtZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbmRlY2xhcmUgY29uc3QgdGlueW1jZTogYW55O1xyXG5cclxuLy8gQGR5bmFtaWNcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2xpY2tVdGlsc1NlcnZpY2Uge1xyXG5cdHN0YXRpYyBuZXdHdWlkKCk6IHN0cmluZyB7XHJcblx0XHRsZXQgZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG5cdFx0Y29uc3QgdXVpZCA9ICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24gKGMpIHtcclxuXHRcdFx0Y29uc3QgciA9IChkICsgTWF0aC5yYW5kb20oKSAqIDE2KSAlIDE2IHwgMDtcclxuXHRcdFx0ZCA9IE1hdGguZmxvb3IoZCAvIDE2KTtcclxuXHRcdFx0cmV0dXJuIChjID09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCkpLnRvU3RyaW5nKDE2KTtcclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIHV1aWQ7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgd2FpdEZvckVsZW1lbnQoZWxlbWVudFNlbGVjdG9yOiBzdHJpbmcsIGl0ZXJhdGlvblRpbWVvdXQgPSA1MCk6IFByb21pc2U8SFRNTEVsZW1lbnQ+IHtcclxuXHRcdGxldCBpbmZpbml0ZUxvb3BDaGVjayA9IDEwO1xyXG5cdFx0bGV0IGl0ZXJhdGlvbklkOiBOb2RlSlMuVGltZXI7XHJcblx0XHRjb25zdCBwID0gbmV3IFByb21pc2U8SFRNTEVsZW1lbnQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0aXRlcmF0aW9uSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgZWwgPSA8SFRNTEVsZW1lbnQ+ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlbGVtZW50U2VsZWN0b3IpO1xyXG5cdFx0XHRcdGlmIChlbCkge1xyXG5cdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbChpdGVyYXRpb25JZCk7XHJcblx0XHRcdFx0XHRyZXNvbHZlKGVsKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGlmICgtLWluZmluaXRlTG9vcENoZWNrIDw9IDApIHtcclxuXHRcdFx0XHRcdGNsZWFySW50ZXJ2YWwoaXRlcmF0aW9uSWQpO1xyXG5cdFx0XHRcdFx0YWxlcnQoXCJMb29wIENoZWNrIGZhaWxlZCB0cnlpbmcgdG8gZmluZCBcIiArIGVsZW1lbnRTZWxlY3Rvcik7XHJcblx0XHRcdFx0XHRyZWplY3QoKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9LCAxMDApO1xyXG5cclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBwO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHdhaXRGb3JFbGVtZW50UmVmKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGl0ZXJhdGlvblRpbWVvdXQgPSA1MCk6IFByb21pc2U8RWxlbWVudFJlZj4ge1xyXG5cdFx0bGV0IGluZmluaXRlTG9vcENoZWNrID0gMTA7XHJcblx0XHRsZXQgaXRlcmF0aW9uSWQ6IE5vZGVKUy5UaW1lcjtcclxuXHRcdGNvbnN0IHAgPSBuZXcgUHJvbWlzZTxFbGVtZW50UmVmPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdGl0ZXJhdGlvbklkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGVsID0gPEhUTUxFbGVtZW50PmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuXHRcdFx0XHRpZiAoZWwgJiYgZWwuY2xpZW50SGVpZ2h0ICYmIGVsLmNsaWVudFdpZHRoKSB7XHJcblx0XHRcdFx0XHRjbGVhckludGVydmFsKGl0ZXJhdGlvbklkKTtcclxuXHRcdFx0XHRcdHJlc29sdmUoZWxlbWVudFJlZik7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpZiAoLS1pbmZpbml0ZUxvb3BDaGVjayA8PSAwKSB7XHJcblx0XHRcdFx0XHRjbGVhckludGVydmFsKGl0ZXJhdGlvbklkKTtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJMb29wIENoZWNrIGZhaWxlZCB0cnlpbmcgdG8gZmluZCBlbGVtZW50XCIpO1xyXG5cdFx0XHRcdFx0cmVqZWN0KCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LCBpdGVyYXRpb25UaW1lb3V0KTtcclxuXHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gcDtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXREZWVwT2JqZWN0KG9iajogYW55LCBvYmpOYW1lOiBzdHJpbmcpOiBhbnkge1xyXG5cdFx0Y29uc3QgZG90U3BsaXQgPSBvYmpOYW1lLnNwbGl0KFwiLlwiKTtcclxuXHJcblx0XHRsZXQgY3VycmVudE9iaiA9IG9iajtcclxuXHRcdGRvdFNwbGl0LmZvckVhY2goKG8pID0+IHtcclxuXHRcdFx0aWYgKGN1cnJlbnRPYmogPT09IG51bGwgfHwgY3VycmVudE9iaiA9PT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRcdHJldHVybiBudWxsO1xyXG5cclxuXHRcdFx0Y3VycmVudE9iaiA9IGN1cnJlbnRPYmpbb107XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gY3VycmVudE9iajtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBzZXREZWVwT2JqZWN0KG9iajogYW55LCBvYmpOYW1lOiBzdHJpbmcsIHZhbDogYW55KSB7XHJcblx0XHRjb25zdCBkb3RTcGxpdCA9IG9iak5hbWUuc3BsaXQoXCIuXCIpO1xyXG5cclxuXHRcdGxldCBwcmV2T2JqID0gb2JqO1xyXG5cdFx0bGV0IGN1cnJlbnRPYmogPSBvYmo7XHJcblx0XHRkb3RTcGxpdC5mb3JFYWNoKChvKSA9PiB7XHJcblx0XHRcdGlmIChjdXJyZW50T2JqID09PSBudWxsIHx8IGN1cnJlbnRPYmogPT09IHVuZGVmaW5lZClcclxuXHRcdFx0XHRyZXR1cm4gbnVsbDtcclxuXHJcblx0XHRcdHByZXZPYmogPSBjdXJyZW50T2JqO1xyXG5cdFx0XHRjdXJyZW50T2JqID0gY3VycmVudE9ialtvXTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHByZXZPYmpbZG90U3BsaXRbZG90U3BsaXQubGVuZ3RoIC0gMV1dID0gdmFsO1xyXG5cclxuXHRcdHJldHVybiBjdXJyZW50T2JqO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGNsb25lKG9iajogYW55KTogYW55IHtcclxuXHRcdGlmIChvYmogPT09IG51bGwgfHwgb2JqID09PSB1bmRlZmluZWQpXHJcblx0XHRcdHJldHVybiBvYmo7XHJcblxyXG5cdFx0bGV0IHJldHVybk9iaiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqKSk7XHJcblx0XHQvL3JldHVybk9iaiA9IHRoaXMuZGF0ZVNhbml0aXplKHJldHVybk9iaik7XHJcblxyXG5cdFx0cmV0dXJuIHJldHVybk9iajtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBkYXRlU2FuaXRpemUob2JqOiBhbnksIGluZmluaXRlTG9vcENoZWNrOiBudW1iZXIgPSAwKTogYW55IHtcclxuXHRcdGluZmluaXRlTG9vcENoZWNrKys7XHJcblxyXG5cdFx0aWYgKGluZmluaXRlTG9vcENoZWNrID4gMjApIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihcImluZmludGUgbG9vcFwiKTtcclxuXHRcdFx0cmV0dXJuIG9iajtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAob2JqID09PSBudWxsIHx8IG9iaiA9PT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRyZXR1cm4gb2JqO1xyXG5cclxuXHRcdC8vIElmIHRoZSBvYmogSVMgYSBkYXRlLCByZXR1cm4gdGhlIHByb2Nlc3NlZCBkYXRlXHJcblx0XHRpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIiAmJiAvXihbMC05XXs0fS0oMFsxLTldfDEwfDExfDEyKS0oWzAxMl1bMC05XXwzMHwzMSlUKFswMV1bMC05XXxbMl1bMDEyM10pOihbMC01XVswLTldKTooWzAtNV1bMC05XSkoLlswLTldezAsfSk/KHp8WikpJC8udGVzdChvYmopKVxyXG5cdFx0XHRyZXR1cm4gbmV3IERhdGUob2JqKTtcclxuXHJcblx0XHQvLyBJZiB0aGlzIGlzIGFuIGF0b21pYyB0eXBlIChzdHJpbmcsIGJvb2wsIG51bWJlciksIGp1c3QgcmV0dXJuIHRoZSBhdG9taWMgb2JqZWN0XHJcblx0XHRpZiAodHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIilcclxuXHRcdFx0cmV0dXJuIG9iajtcclxuXHJcblx0XHRsZXQgcmV0dXJuT2JqO1xyXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG5cdFx0XHRyZXR1cm5PYmogPSBbXTtcclxuXHRcdFx0b2JqLmZvckVhY2gobyA9PiByZXR1cm5PYmoucHVzaCh0aGlzLmRhdGVTYW5pdGl6ZShvLCBpbmZpbml0ZUxvb3BDaGVjaykpKTtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRyZXR1cm5PYmogPSB7fTtcclxuXHJcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIG9iaikge1xyXG5cdFx0XHRcdGlmIChvYmpba2V5XSA9PT0gbnVsbClcclxuXHRcdFx0XHRcdHJldHVybk9ialtrZXldID0gbnVsbDtcclxuXHRcdFx0XHRlbHNlIGlmIChBcnJheS5pc0FycmF5KG9ialtrZXldKSkge1xyXG5cdFx0XHRcdFx0cmV0dXJuT2JqW2tleV0gPSBbXTtcclxuXHRcdFx0XHRcdG9ialtrZXldLmZvckVhY2gobyA9PiByZXR1cm5PYmpba2V5XS5wdXNoKHRoaXMuZGF0ZVNhbml0aXplKG8sIGluZmluaXRlTG9vcENoZWNrKSkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRlbHNlIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09IFwib2JqZWN0XCIpXHJcblx0XHRcdFx0XHRyZXR1cm5PYmpba2V5XSA9IHRoaXMuZGF0ZVNhbml0aXplKG9ialtrZXldLCArK2luZmluaXRlTG9vcENoZWNrKTtcclxuXHRcdFx0XHRlbHNlIGlmICgvXihbMC05XXs0fS0oMFsxLTldfDEwfDExfDEyKS0oWzAxMl1bMC05XXwzMHwzMSlUKFswMV1bMC05XXxbMl1bMDEyM10pOihbMC01XVswLTldKTooWzAtNV1bMC05XSkoLlswLTldezAsfSk/KHp8WikpJC8udGVzdChvYmpba2V5XSkpXHJcblx0XHRcdFx0XHRyZXR1cm5PYmpba2V5XSA9IG5ldyBEYXRlKG9ialtrZXldKTtcclxuXHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHRyZXR1cm5PYmpba2V5XSA9IG9ialtrZXldO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJldHVybk9iajtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyByb3VuZChudW06IG51bWJlciwgZGVjaW1hbHM6IG51bWJlcik6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gTnVtYmVyKE1hdGgucm91bmQocGFyc2VGbG9hdChudW0gKyAnZScgKyBkZWNpbWFscykpICsgJ2UtJyArIGRlY2ltYWxzKTtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBjaGVja1BhcmVudENsYXNzRXhpc3RzKGVsOiBIVE1MRWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHRcdGxldCBjdXJyZW50RWw6IEhUTUxFbGVtZW50ID0gZWw7XHJcblx0XHRsZXQgaGFzU2VsZWN0b3IgPSBmYWxzZTtcclxuXHRcdHdoaWxlIChjdXJyZW50RWwgJiYgY3VycmVudEVsICE9PSBkb2N1bWVudC5ib2R5KSB7XHJcblx0XHRcdGlmIChjdXJyZW50RWwuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcclxuXHRcdFx0XHRoYXNTZWxlY3RvciA9IHRydWU7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0Y3VycmVudEVsID0gY3VycmVudEVsLnBhcmVudEVsZW1lbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGhhc1NlbGVjdG9yO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIGNoZWNrUGFyZW50SWRFeGlzdHMoZWw6IEhUTUxFbGVtZW50LCBpZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG5cdFx0bGV0IGN1cnJlbnRFbDogSFRNTEVsZW1lbnQgPSBlbDtcclxuXHRcdGxldCBoYXNTZWxlY3RvciA9IGZhbHNlO1xyXG5cdFx0d2hpbGUgKGN1cnJlbnRFbCAmJiBjdXJyZW50RWwgIT09IGRvY3VtZW50LmJvZHkpIHtcclxuXHRcdFx0aWYgKGN1cnJlbnRFbC5nZXRBdHRyaWJ1dGUoXCJpZFwiKSA9PT0gaWROYW1lKSB7XHJcblx0XHRcdFx0aGFzU2VsZWN0b3IgPSB0cnVlO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHRcdGN1cnJlbnRFbCA9IGN1cnJlbnRFbC5wYXJlbnRFbGVtZW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBoYXNTZWxlY3RvcjtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBmaW5kUGFyZW50KGVsOiBIVE1MRWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XHJcblx0XHRsZXQgY3VycmVudEVsOiBIVE1MRWxlbWVudCA9IGVsO1xyXG5cdFx0d2hpbGUgKGN1cnJlbnRFbCAmJiBjdXJyZW50RWwgIT09IGRvY3VtZW50LmJvZHkpIHtcclxuXHRcdFx0aWYgKGN1cnJlbnRFbC5jbGFzc0xpc3QgJiYgY3VycmVudEVsLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XHJcblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRFbDtcclxuXHRcdFx0fVxyXG5cdFx0XHRjdXJyZW50RWwgPSA8SFRNTEVsZW1lbnQ+Y3VycmVudEVsLnBhcmVudEVsZW1lbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHJcblx0c3RhdGljIGdldENsb3Nlc3RTaWJsaW5nKGVsOiBIVE1MRWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcpOiBIVE1MRWxlbWVudCB7XHJcblx0XHRsZXQgY3VycmVudEVsOiBIVE1MRWxlbWVudCA9IGVsO1xyXG5cdFx0d2hpbGUgKGN1cnJlbnRFbCAmJiBjdXJyZW50RWwgIT09IGRvY3VtZW50LmJvZHkpIHtcclxuXHRcdFx0aWYgKGN1cnJlbnRFbC5jbGFzc0xpc3QgJiYgY3VycmVudEVsLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XHJcblx0XHRcdFx0cmV0dXJuIGN1cnJlbnRFbDtcclxuXHRcdFx0fVxyXG5cdFx0XHRjdXJyZW50RWwgPSA8SFRNTEVsZW1lbnQ+Y3VycmVudEVsLnByZXZpb3VzU2libGluZztcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyBnZXRIYXNoQ29kZSA9IGZ1bmN0aW9uIChzdHI6IHN0cmluZykge1xyXG5cdFx0bGV0IGhhc2g6IG51bWJlciA9IDA7XHJcblx0XHRsZXQgY2hyOiBudW1iZXI7XHJcblxyXG5cdFx0aWYgKHN0ci5sZW5ndGggPT09IDApIHJldHVybiBoYXNoO1xyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0Y2hyID0gc3RyLmNoYXJDb2RlQXQoaSk7XHJcblx0XHRcdGhhc2ggPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIGNocjtcclxuXHRcdFx0aGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcclxuXHRcdH1cclxuXHRcdHJldHVybiBNYXRoLmFicyhoYXNoKTtcclxuXHR9O1xyXG5cclxuXHRzdGF0aWMgd2FpdEZvclRpbnlNQ0UodGlueU1DRUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdGxldCB3YWl0Rm9yVGlueU1DRTogTm9kZUpTLlRpbWVyO1xyXG5cclxuXHRcdFx0aWYgKHRpbnltY2UuZ2V0KHRpbnlNQ0VJZCkgJiYgdGlueW1jZS5nZXQodGlueU1DRUlkKS5pbml0aWFsaXplZCkge1xyXG5cdFx0XHRcdHJlc29sdmUoKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHRjbGVhckludGVydmFsKHdhaXRGb3JUaW55TUNFKTtcclxuXHRcdFx0XHRsZXQgaW5maW5pdGVMb29wQ2hlY2sgPSAxMDA7XHJcblx0XHRcdFx0d2FpdEZvclRpbnlNQ0UgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAoKHRpbnltY2UuZ2V0KHRpbnlNQ0VJZCkgJiYgdGlueW1jZS5nZXQodGlueU1DRUlkKS5pbml0aWFsaXplZCkgfHwgaW5maW5pdGVMb29wQ2hlY2sgPT09IDApIHtcclxuXHRcdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh3YWl0Rm9yVGlueU1DRSk7XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoaW5maW5pdGVMb29wQ2hlY2sgPT09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFwiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHRpbnlNQ0UgSWQ6IFwiICsgdGlueU1DRUlkKTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVqZWN0KCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc29sdmUoKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdGluZmluaXRlTG9vcENoZWNrLS07XHJcblx0XHRcdFx0fSwgMTAwKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgYXR0YWNoRWxlbWVudChlbDogSFRNTEVsZW1lbnQsIGF0dGFjaFRvOiBzdHJpbmcpIHtcclxuXHRcdGlmIChhdHRhY2hUbyA9PT0gJ2JvZHknKVxyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsKTtcclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3IoYXR0YWNoVG8pO1xyXG5cdFx0XHRpZiAoIXBhcmVudCkge1xyXG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJDb3VsZCBub3QgZmluZCBlbGVtZW50IFwiICsgYXR0YWNoVG8gKyBcIiB0byBhdHRhY2ggdG9cIik7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHBhcmVudC5hcHBlbmRDaGlsZChlbCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHN0YXRpYyByZW1vdmVFbGVtZW50KGVsOiBIVE1MRWxlbWVudCkge1xyXG5cdFx0Ly8gaXQncyBva2F5IGlmIHRoaXMgZmFpbHMuICBJdCB3YXMgYWxyZWFkeSByZW1vdmVkXHJcblx0XHR0cnkge1xyXG5cdFx0XHQvLyB0aGUgZGVmYXVsdCBkZXN0cm95IHdvbid0IGdldCByaWQgb2YgdGhpc1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsKTtcclxuXHRcdH1cclxuXHRcdGNhdGNoIHsgfVxyXG5cdH1cclxufVxyXG5cclxuIl19
|