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
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SlickMultiSelectService {
|
|
4
|
+
getVisibleItems(items, selectedIds, idFieldName, textFieldName) {
|
|
5
|
+
let foundSomeText = false;
|
|
6
|
+
if (!items || items.length === 0)
|
|
7
|
+
return null;
|
|
8
|
+
let visibleItems = items.map((item) => {
|
|
9
|
+
let id = item[idFieldName];
|
|
10
|
+
if (id === null || id === undefined) {
|
|
11
|
+
console.error("%c Id not found for multiSelect item. The idFieldName is '" + idFieldName + "'. Is this correct?", 'background: red; color: white');
|
|
12
|
+
console.error("First Item: ", items[0]);
|
|
13
|
+
}
|
|
14
|
+
if (!selectedIds || (selectedIds.indexOf(id) === -1 && selectedIds.indexOf(id.toString()) === -1)) {
|
|
15
|
+
let text = item[textFieldName];
|
|
16
|
+
if (text !== null && text !== undefined)
|
|
17
|
+
foundSomeText = true;
|
|
18
|
+
return {
|
|
19
|
+
id: id,
|
|
20
|
+
text: text ? text.toString() : null,
|
|
21
|
+
item: item
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
visibleItems = visibleItems.filter(x => !!x);
|
|
26
|
+
if (visibleItems.length === 0)
|
|
27
|
+
return null;
|
|
28
|
+
if (foundSomeText === false) {
|
|
29
|
+
console.error("%c Warning! No text was found for multiSelect item. The textFieldName is '" + textFieldName + "'. Is this correct?", 'background: red; color: white');
|
|
30
|
+
console.error("First Item: ", items[0]);
|
|
31
|
+
}
|
|
32
|
+
return visibleItems;
|
|
33
|
+
}
|
|
34
|
+
getSelectedItems(items, selectedIds, idFieldName, textFieldName) {
|
|
35
|
+
let foundSomeText = false;
|
|
36
|
+
if (!items || items.length === 0 || !selectedIds || selectedIds.length === 0)
|
|
37
|
+
return null;
|
|
38
|
+
let selectedItems = selectedIds.map((id) => {
|
|
39
|
+
let item = items.find(x => x[idFieldName] == id);
|
|
40
|
+
if (item === null || item === undefined) {
|
|
41
|
+
console.error("%c Id not found for multiSelect item. The idFieldName is '" + idFieldName + "'. Is this correct?", 'background: red; color: white');
|
|
42
|
+
console.error("First Item: ", items[0]);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
let text = item[textFieldName];
|
|
46
|
+
if (text !== null && text !== undefined)
|
|
47
|
+
foundSomeText = true;
|
|
48
|
+
return {
|
|
49
|
+
id: id,
|
|
50
|
+
text: text ? text.toString() : null
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
if (foundSomeText === false) {
|
|
54
|
+
console.error("%c Warning! No text was found for multiSelect item. The textFieldName is '" + textFieldName + "'. Is this correct?", 'background: red; color: white');
|
|
55
|
+
console.error("First Item: ", items[0]);
|
|
56
|
+
}
|
|
57
|
+
return selectedItems;
|
|
58
|
+
}
|
|
59
|
+
getSelectedItem(items, selectedId) {
|
|
60
|
+
if (!items || items.length === 0)
|
|
61
|
+
return null;
|
|
62
|
+
let selectedItem = items.find((item) => { return item.id === selectedId; });
|
|
63
|
+
if (selectedItem)
|
|
64
|
+
return selectedItem;
|
|
65
|
+
else
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
getItemIndex(items, selectedId) {
|
|
69
|
+
return items.findIndex((item) => { return item.id === selectedId; });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** @nocollapse */ SlickMultiSelectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickMultiSelectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
73
|
+
/** @nocollapse */ SlickMultiSelectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickMultiSelectService });
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickMultiSelectService, decorators: [{
|
|
75
|
+
type: Injectable
|
|
76
|
+
}] });
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stbXVsdGktc2VsZWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1tdWx0aS1zZWxlY3Qvc2xpY2stbXVsdGktc2VsZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLHVCQUF1QjtJQUM1QixlQUFlLENBQUMsS0FBWSxFQUFFLFdBQXFCLEVBQUUsV0FBbUIsRUFBRSxhQUFxQjtRQUNyRyxJQUFJLGFBQWEsR0FBWSxLQUFLLENBQUM7UUFFbkMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUM7UUFFYixJQUFJLFlBQVksR0FBVSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNCLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFO2dCQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLDZEQUE2RCxHQUFHLFdBQVcsR0FBRyxzQkFBc0IsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO2dCQUNySixPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN4QztZQUVELElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEcsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFD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LENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0UsSUFBSSxZQUFZO1lBQ2YsT0FBTyxZQUFZLENBQUM7O1lBRXBCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFZLEVBQUUsVUFBa0I7UUFDbkQsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLElBQUksQ0FBQyxFQUFFLEtBQUssVUFBVSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQzs7dUlBeEZXLHVCQUF1QjsySUFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNsaWNrTXVsdGlTZWxlY3RTZXJ2aWNlIHtcclxuXHRwdWJsaWMgZ2V0VmlzaWJsZUl0ZW1zKGl0ZW1zOiBhbnlbXSwgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdLCBpZEZpZWxkTmFtZTogc3RyaW5nLCB0ZXh0RmllbGROYW1lOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRsZXQgZm91bmRTb21lVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdFx0XHJcblx0XHRpZiAoIWl0ZW1zIHx8IGl0ZW1zLmxlbmd0aCA9PT0gMClcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblxyXG5cdFx0bGV0IHZpc2libGVJdGVtczogYW55W10gPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcclxuXHRcdFx0bGV0IGlkID0gaXRlbVtpZEZpZWxkTmFtZV07XHRcdFx0XHRcdFx0XHJcblx0XHRcdGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0Y29uc29sZS5lcnJvcihcIiVjIElkIG5vdCBmb3VuZCBmb3IgbXVsdGlTZWxlY3QgaXRlbS4gIFRoZSBpZEZpZWxkTmFtZSBpcyAnXCIgKyBpZEZpZWxkTmFtZSArIFwiJy4gIElzIHRoaXMgY29ycmVjdD9cIiwgJ2JhY2tncm91bmQ6IHJlZDsgY29sb3I6IHdoaXRlJyk7XHJcblx0XHRcdFx0Y29uc29sZS5lcnJvcihcIkZpcnN0IEl0ZW06IFwiLCBpdGVtc1swXSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICghc2VsZWN0ZWRJZHMgfHwgKHNlbGVjdGVkSWRzLmluZGV4T2YoaWQpID09PSAtMSAmJiBzZWxlY3RlZElkcy5pbmRleE9mKGlkLnRvU3RyaW5nKCkpID09PSAtMSkpIHtcclxuXHRcdFx0XHRsZXQgdGV4dCA9IGl0ZW1bdGV4dEZpZWxkTmFtZV07XHJcblx0XHRcdFx0aWYgKHRleHQgIT09IG51bGwgJiYgdGV4dCAhPT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRcdFx0Zm91bmRTb21lVGV4dCA9IHRydWU7XHJcblxyXG5cdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHRpZDogaWQsXHJcblx0XHRcdFx0XHR0ZXh0OiB0ZXh0ID8gdGV4dC50b1N0cmluZygpIDogbnVsbCxcclxuXHRcdFx0XHRcdGl0ZW06IGl0ZW1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHZpc2libGVJdGVtcyA9IHZpc2libGVJdGVtcy5maWx0ZXIoeCA9PiAhIXgpO1xyXG5cclxuXHRcdGlmICh2aXNpYmxlSXRlbXMubGVuZ3RoID09PSAwKVxyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHJcblx0XHRpZiAoZm91bmRTb21lVGV4dCA9PT0gZmFsc2UpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihcIiVjIFdhcm5pbmchICBObyB0ZXh0IHdhcyBmb3VuZCBmb3IgbXVsdGlTZWxlY3QgaXRlbS4gIFRoZSB0ZXh0RmllbGROYW1lIGlzICdcIiArIHRleHRGaWVsZE5hbWUgKyBcIicuICBJcyB0aGlzIGNvcnJlY3Q/XCIsICdiYWNrZ3JvdW5kOiByZWQ7IGNvbG9yOiB3aGl0ZScpO1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKFwiRmlyc3QgSXRlbTogXCIsIGl0ZW1zWzBdKTtcclxuXHRcdH1cclxuXHJcblxyXG5cdFx0cmV0dXJuIHZpc2libGVJdGVtcztcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBnZXRTZWxlY3RlZEl0ZW1zKGl0ZW1zOiBhbnlbXSwgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdLCBpZEZpZWxkTmFtZTogc3RyaW5nLCB0ZXh0RmllbGROYW1lOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRsZXQgZm91bmRTb21lVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRcdGlmICghaXRlbXMgfHwgaXRlbXMubGVuZ3RoID09PSAwIHx8ICFzZWxlY3RlZElkcyB8fCBzZWxlY3RlZElkcy5sZW5ndGggPT09IDApXHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cclxuXHRcdGxldCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IHNlbGVjdGVkSWRzLm1hcCgoaWQ6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRsZXQgaXRlbSA9IGl0ZW1zLmZpbmQoeCA9PiB4W2lkRmllbGROYW1lXSA9PSBpZCk7XHJcblx0XHRcdFxyXG5cdFx0XHRpZiAoaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKFwiJWMgSWQgbm90IGZvdW5kIGZvciBtdWx0aVNlbGVjdCBpdGVtLiAgVGhlIGlkRmllbGROYW1lIGlzICdcIiArIGlkRmllbGROYW1lICsgXCInLiAgSXMgdGhpcyBjb3JyZWN0P1wiLCAnYmFja2dyb3VuZDogcmVkOyBjb2xvcjogd2hpdGUnKTtcclxuXHRcdFx0XHRjb25zb2xlLmVycm9yKFwiRmlyc3QgSXRlbTogXCIsIGl0ZW1zWzBdKTtcclxuXHRcdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0bGV0IHRleHQgPSBpdGVtW3RleHRGaWVsZE5hbWVdO1xyXG5cdFx0XHRpZiAodGV4dCAhPT0gbnVsbCAmJiB0ZXh0ICE9PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0Zm91bmRTb21lVGV4dCA9IHRydWU7XHJcblxyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGlkOiBpZCxcclxuXHRcdFx0XHR0ZXh0OiB0ZXh0ID8gdGV4dC50b1N0cmluZygpIDogbnVsbFxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRpZiAoZm91bmRTb21lVGV4dCA9PT0gZmFsc2UpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcihcIiVjIFdhcm5pbmchICBObyB0ZXh0IHdhcyBmb3VuZCBmb3IgbXVsdGlTZWxlY3QgaXRlbS4gIFRoZSB0ZXh0RmllbGROYW1lIGlzICdcIiArIHRleHRGaWVsZE5hbWUgKyBcIicuICBJcyB0aGlzIGNvcnJlY3Q/XCIsICdiYWNrZ3JvdW5kOiByZWQ7IGNvbG9yOiB3aGl0ZScpO1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKFwiRmlyc3QgSXRlbTogXCIsIGl0ZW1zWzBdKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gc2VsZWN0ZWRJdGVtcztcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBnZXRTZWxlY3RlZEl0ZW0oaXRlbXM6IGFueVtdLCBzZWxlY3RlZElkOiBzdHJpbmcpOiBhbnkge1xyXG5cdFx0aWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApXHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cclxuXHRcdGxldCBzZWxlY3RlZEl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmlkID09PSBzZWxlY3RlZElkIH0pO1xyXG5cclxuXHRcdGlmIChzZWxlY3RlZEl0ZW0pXHJcblx0XHRcdHJldHVybiBzZWxlY3RlZEl0ZW07XHJcblx0XHRlbHNlXHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGdldEl0ZW1JbmRleChpdGVtczogYW55W10sIHNlbGVjdGVkSWQ6IHN0cmluZyk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmlkID09PSBzZWxlY3RlZElkIH0pO1xyXG5cdH1cclxufSJdfQ==
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from "@angular/core";
|
|
2
|
+
import { SlickUtilsService } from "../utils/slick-utils.service";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class SlickOrderedListComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.itemsChange = new EventEmitter();
|
|
8
|
+
this.selectedItemsChange = new EventEmitter();
|
|
9
|
+
this.buttonAlignment = "left";
|
|
10
|
+
this.internalItems = [];
|
|
11
|
+
this.anySelected = false;
|
|
12
|
+
this.fnDocumentClick = (e) => this.documentClick(e);
|
|
13
|
+
this.uuid = SlickUtilsService.newGuid();
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
document.addEventListener("click", this.fnDocumentClick, true);
|
|
17
|
+
}
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
document.removeEventListener("click", this.fnDocumentClick, true);
|
|
20
|
+
}
|
|
21
|
+
documentClick(e) {
|
|
22
|
+
if (e.target && SlickUtilsService.checkParentIdExists(e.target, "slick-ordered-list_" + this.uuid))
|
|
23
|
+
return;
|
|
24
|
+
// If we're using this in the picklist, don't do anything
|
|
25
|
+
if (e.target && SlickUtilsService.checkParentClassExists(e.target, "slick-pick-list_buttons"))
|
|
26
|
+
return;
|
|
27
|
+
this.internalItems.forEach(item => item.selected = false);
|
|
28
|
+
this.anySelected = false;
|
|
29
|
+
if (this.selectedItemsChange)
|
|
30
|
+
this.selectedItemsChange.emit(null);
|
|
31
|
+
}
|
|
32
|
+
async ngOnChanges(changes) {
|
|
33
|
+
if (!this.items || !this.sortOrderFieldName || !this.displayFieldName)
|
|
34
|
+
return;
|
|
35
|
+
if (changes.items) {
|
|
36
|
+
this.internalItems = [];
|
|
37
|
+
this.sortList();
|
|
38
|
+
let sortOrder = 0;
|
|
39
|
+
this.items.forEach(item => {
|
|
40
|
+
if (!item.uuid)
|
|
41
|
+
item.uuid = SlickUtilsService.newGuid();
|
|
42
|
+
if (item)
|
|
43
|
+
SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, sortOrder);
|
|
44
|
+
this.internalItems.push({
|
|
45
|
+
uuid: item.uuid,
|
|
46
|
+
sortOrder: sortOrder,
|
|
47
|
+
selected: false,
|
|
48
|
+
text: SlickUtilsService.getDeepObject(item, this.displayFieldName)
|
|
49
|
+
});
|
|
50
|
+
sortOrder++;
|
|
51
|
+
});
|
|
52
|
+
this.anySelected = false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
selectItem(e, item) {
|
|
56
|
+
if (e.ctrlKey) {
|
|
57
|
+
item.selected = !item.selected;
|
|
58
|
+
}
|
|
59
|
+
else if (e.shiftKey) {
|
|
60
|
+
let selectedItemIdx = this.internalItems.findIndex(internalItem => item.uuid === internalItem.uuid);
|
|
61
|
+
this.internalItems[selectedItemIdx].selected = !this.internalItems[selectedItemIdx].selected;
|
|
62
|
+
// Check to see if there is a selected item previously in the list. This will be the default
|
|
63
|
+
// For example, if the 2nd item has been selected, then they shift-select the 5th item, iterate backwards through
|
|
64
|
+
// the list until we find the 2nd item, which is flagged as selected. Then mark everything from the 2nd-5th as selected.
|
|
65
|
+
let prevSelectedIndex = selectedItemIdx;
|
|
66
|
+
do {
|
|
67
|
+
prevSelectedIndex--;
|
|
68
|
+
} while (prevSelectedIndex >= 0 && this.internalItems[prevSelectedIndex].selected === false);
|
|
69
|
+
if (prevSelectedIndex >= 0) {
|
|
70
|
+
for (let i = prevSelectedIndex; i <= selectedItemIdx; i++)
|
|
71
|
+
this.internalItems[i].selected = true;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Check to see if we're going bottom->top select
|
|
75
|
+
// For example, if the 5th item has been selected, then they shift-select the 2nd item, iterate forwards through
|
|
76
|
+
// the list until we find the 5th item, which is flagged as selected. Then mark everything from the 2nd-5th as selected.
|
|
77
|
+
let nextSelectedIndex = selectedItemIdx;
|
|
78
|
+
do {
|
|
79
|
+
nextSelectedIndex++;
|
|
80
|
+
} while (nextSelectedIndex <= this.internalItems.length && this.internalItems[nextSelectedIndex].selected === false);
|
|
81
|
+
if (nextSelectedIndex <= this.internalItems.length) {
|
|
82
|
+
for (let i = selectedItemIdx; i <= nextSelectedIndex; i++)
|
|
83
|
+
this.internalItems[i].selected = true;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.internalItems.forEach(item => item.selected = false);
|
|
89
|
+
item.selected = true;
|
|
90
|
+
}
|
|
91
|
+
this.anySelected = false;
|
|
92
|
+
let selectedItems = [];
|
|
93
|
+
this.internalItems.forEach(item => {
|
|
94
|
+
if (item.selected === true)
|
|
95
|
+
selectedItems.push(item);
|
|
96
|
+
this.anySelected = (this.anySelected === true || item.selected === true);
|
|
97
|
+
});
|
|
98
|
+
if (this.selectedItemsChange)
|
|
99
|
+
this.selectedItemsChange.emit((selectedItems.length > 0) ? selectedItems : null);
|
|
100
|
+
}
|
|
101
|
+
moveTop() {
|
|
102
|
+
let uuidsToMove = this.internalItems.filter(item => item.selected === true).map(item => item.uuid);
|
|
103
|
+
let topArray = [];
|
|
104
|
+
uuidsToMove.forEach((uuid, idx) => {
|
|
105
|
+
let itemIdx = this.internalItems.findIndex(item => item.uuid === uuid);
|
|
106
|
+
let temp = this.internalItems.splice(itemIdx, 1);
|
|
107
|
+
topArray.push(temp[0]);
|
|
108
|
+
});
|
|
109
|
+
this.internalItems = topArray.concat(this.internalItems);
|
|
110
|
+
this.internalItems.forEach((internalItem, idx) => {
|
|
111
|
+
internalItem.sortOrder = idx;
|
|
112
|
+
let item = this.items.find(item => item.uuid === internalItem.uuid);
|
|
113
|
+
SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);
|
|
114
|
+
});
|
|
115
|
+
this.sortList();
|
|
116
|
+
}
|
|
117
|
+
moveUp() {
|
|
118
|
+
let newArray = [];
|
|
119
|
+
this.internalItems.forEach(x => x.sortOrder *= 10);
|
|
120
|
+
this.internalItems.forEach((internalItem, idx) => {
|
|
121
|
+
if (internalItem.selected === true)
|
|
122
|
+
internalItem.sortOrder -= 11;
|
|
123
|
+
});
|
|
124
|
+
this.internalItems = this.internalItems.sort((a, b) => (a.sortOrder > b.sortOrder) ? 1 : (a.sortOrder < b.sortOrder) ? -1 : 0);
|
|
125
|
+
this.internalItems.forEach((internalItem, idx) => {
|
|
126
|
+
internalItem.sortOrder = idx;
|
|
127
|
+
let item = this.items.find(item => item.uuid === internalItem.uuid);
|
|
128
|
+
SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);
|
|
129
|
+
});
|
|
130
|
+
this.sortList();
|
|
131
|
+
}
|
|
132
|
+
moveDown() {
|
|
133
|
+
let newArray = [];
|
|
134
|
+
this.internalItems.forEach(x => x.sortOrder *= 10);
|
|
135
|
+
this.internalItems.forEach((internalItem, idx) => {
|
|
136
|
+
if (internalItem.selected === true)
|
|
137
|
+
internalItem.sortOrder += 11;
|
|
138
|
+
});
|
|
139
|
+
this.internalItems = this.internalItems.sort((a, b) => (a.sortOrder > b.sortOrder) ? 1 : (a.sortOrder < b.sortOrder) ? -1 : 0);
|
|
140
|
+
this.internalItems.forEach((internalItem, idx) => {
|
|
141
|
+
internalItem.sortOrder = idx;
|
|
142
|
+
let item = this.items.find(item => item.uuid === internalItem.uuid);
|
|
143
|
+
SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);
|
|
144
|
+
});
|
|
145
|
+
this.sortList();
|
|
146
|
+
}
|
|
147
|
+
moveBottom() {
|
|
148
|
+
let uuidsToMove = this.internalItems.filter(item => item.selected === true).map(item => item.uuid);
|
|
149
|
+
let bottomArray = [];
|
|
150
|
+
uuidsToMove.forEach((uuid, idx) => {
|
|
151
|
+
let itemIdx = this.internalItems.findIndex(item => item.uuid === uuid);
|
|
152
|
+
let temp = this.internalItems.splice(itemIdx, 1);
|
|
153
|
+
bottomArray.push(temp[0]);
|
|
154
|
+
});
|
|
155
|
+
this.internalItems = this.internalItems.concat(bottomArray);
|
|
156
|
+
this.internalItems.forEach((internalItem, idx) => {
|
|
157
|
+
internalItem.sortOrder = idx;
|
|
158
|
+
let item = this.items.find(item => item.uuid === internalItem.uuid);
|
|
159
|
+
SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx);
|
|
160
|
+
});
|
|
161
|
+
this.sortList();
|
|
162
|
+
}
|
|
163
|
+
sortList() {
|
|
164
|
+
if (this.items) {
|
|
165
|
+
this.items = this.items.sort((a, b) => {
|
|
166
|
+
let val1 = SlickUtilsService.getDeepObject(a, this.sortOrderFieldName);
|
|
167
|
+
let val2 = SlickUtilsService.getDeepObject(b, this.sortOrderFieldName);
|
|
168
|
+
if (val1 < val2)
|
|
169
|
+
return -1;
|
|
170
|
+
else if (val1 > val2)
|
|
171
|
+
return 1;
|
|
172
|
+
else
|
|
173
|
+
return 0;
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
this.items.forEach((item, idx) => SlickUtilsService.setDeepObject(item, this.sortOrderFieldName, idx));
|
|
177
|
+
this.itemsChange.emit(this.items);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/** @nocollapse */ SlickOrderedListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
181
|
+
/** @nocollapse */ SlickOrderedListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: SlickOrderedListComponent, selector: "slick-ordered-list", inputs: { items: "items", title: "title", sortOrderFieldName: "sortOrderFieldName", displayFieldName: "displayFieldName", buttonAlignment: "buttonAlignment" }, outputs: { itemsChange: "itemsChange", selectedItemsChange: "selectedItemsChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"slick-ordered-list\" id=\"slick-ordered-list_{{uuid}}\">\r\n\t<div *ngIf=\"buttonAlignment === 'left'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n\t<div class=\"slick-ordered-list_list-items\">\r\n\t\t{{title}}<br />\r\n\t\t<ul class=\"dropdown-menu\">\r\n\t\t\t<li *ngFor=\"let item of internalItems\" class=\"dropdown-item\" style=\"cursor: pointer;\" [ngClass]=\"{'active': item.selected}\" (click)=\"selectItem($event, item)\">{{item.text}}</li>\r\n\t\t\t<li *ngIf=\"!internalItems || internalItems.length === 0\" class=\"slick-ordered-list_no-items list-group-item\">No Items</li>\r\n\t\t</ul>\r\n\r\n\t</div>\r\n\t<div *ngIf=\"buttonAlignment === 'right'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n</div>", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
182
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListComponent, decorators: [{
|
|
183
|
+
type: Component,
|
|
184
|
+
args: [{ selector: 'slick-ordered-list', template: "<div class=\"slick-ordered-list\" id=\"slick-ordered-list_{{uuid}}\">\r\n\t<div *ngIf=\"buttonAlignment === 'left'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n\t<div class=\"slick-ordered-list_list-items\">\r\n\t\t{{title}}<br />\r\n\t\t<ul class=\"dropdown-menu\">\r\n\t\t\t<li *ngFor=\"let item of internalItems\" class=\"dropdown-item\" style=\"cursor: pointer;\" [ngClass]=\"{'active': item.selected}\" (click)=\"selectItem($event, item)\">{{item.text}}</li>\r\n\t\t\t<li *ngIf=\"!internalItems || internalItems.length === 0\" class=\"slick-ordered-list_no-items list-group-item\">No Items</li>\r\n\t\t</ul>\r\n\r\n\t</div>\r\n\t<div *ngIf=\"buttonAlignment === 'right'\" class=\"slick-ordered-list_buttons\">\r\n\t\t<span *ngIf=\"title\"><br /></span>\r\n\t\t<button type=\"button\" class=\"move-top btn btn-outline-primary\" (click)=\"moveTop()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveUp()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-up\"></i></button>\r\n\t\t<button type=\"button\" class=\"btn btn-outline-primary\" (click)=\"moveDown()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-down\"></i></button>\r\n\t\t<button type=\"button\" class=\"move-bottom btn btn-outline-primary\" (click)=\"moveBottom()\" [disabled]=\"anySelected === false\"><i class=\"far fa-chevron-double-down\"></i></button>\r\n\t</div>\r\n</div>" }]
|
|
185
|
+
}], ctorParameters: function () { return []; }, propDecorators: { items: [{
|
|
186
|
+
type: Input
|
|
187
|
+
}], itemsChange: [{
|
|
188
|
+
type: Output
|
|
189
|
+
}], title: [{
|
|
190
|
+
type: Input
|
|
191
|
+
}], selectedItemsChange: [{
|
|
192
|
+
type: Output
|
|
193
|
+
}], sortOrderFieldName: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], displayFieldName: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}], buttonAlignment: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}] } });
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stb3JkZXJlZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLW9yZGVyZWQtbGlzdC9zbGljay1vcmRlcmVkLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stb3JkZXJlZC1saXN0L3NsaWNrLW9yZGVyZWQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBTWpFLE1BQU0sT0FBTyx5QkFBeUI7SUFlckM7UUFiVSxnQkFBVyxHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXRELHdCQUFtQixHQUF3QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRy9ELG9CQUFlLEdBQVcsTUFBTSxDQUFDO1FBRzFDLGtCQUFhLEdBQVUsRUFBRSxDQUFDO1FBQzFCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTdCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFHOUMsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUTtRQUNQLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsV0FBVztRQUNWLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMs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QUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDOzt5SUF6TlcseUJBQXlCOzZIQUF6Qix5QkFBeUIsb1VDUHRDLDh0RUF1Qk07MkZEaEJPLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDQyxvQkFBb0I7MEVBSXJCLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNFLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0Usa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTbGlja1V0aWxzU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay11dGlscy5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLW9yZGVyZWQtbGlzdCcsXHJcblx0dGVtcGxhdGVVcmw6ICdzbGljay1vcmRlcmVkLWxpc3QuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja09yZGVyZWRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcblx0QElucHV0KCkgaXRlbXM6IGFueVtdO1xyXG5cdEBPdXRwdXQoKSBpdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHRASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG5cdEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBJbnB1dCgpIHNvcnRPcmRlckZpZWxkTmFtZTogc3RyaW5nO1xyXG5cdEBJbnB1dCgpIGRpc3BsYXlGaWVsZE5hbWU6IHN0cmluZztcclxuXHRASW5wdXQoKSBidXR0b25BbGlnbm1lbnQ6IHN0cmluZyA9IFwibGVmdFwiO1xyXG5cclxuXHR1dWlkOiBzdHJpbmc7XHJcblx0aW50ZXJuYWxJdGVtczogYW55W10gPSBbXTtcclxuXHRhbnlTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRmbkRvY3VtZW50Q2xpY2sgPSAoZSkgPT4gdGhpcy5kb2N1bWVudENsaWNrKGUpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHRoaXMudXVpZCA9IFNsaWNrVXRpbHNTZXJ2aWNlLm5ld0d1aWQoKTtcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcdFxyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5mbkRvY3VtZW50Q2xpY2ssIHRydWUpO1x0XHJcblx0fVxyXG5cclxuXHRkb2N1bWVudENsaWNrKGU6IE1vdXNlRXZlbnQpIHtcclxuXHRcdGlmIChlLnRhcmdldCAmJiBTbGlja1V0aWxzU2VydmljZS5jaGVja1BhcmVudElkRXhpc3RzKDxIVE1MRWxlbWVudD5lLnRhcmdldCwgXCJzbGljay1vcmRlcmVkLWxpc3RfXCIgKyB0aGlzLnV1aWQpKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0Ly8gSWYgd2UncmUgdXNpbmcgdGhpcyBpbiB0aGUgcGlja2xpc3QsIGRvbid0IGRvIGFueXRoaW5nXHJcblx0XHRpZiAoZS50YXJnZXQgJiYgU2xpY2tVdGlsc1NlcnZpY2UuY2hlY2tQYXJlbnRDbGFzc0V4aXN0cyg8SFRNTEVsZW1lbnQ+ZS50YXJnZXQsIFwic2xpY2stcGljay1saXN0X2J1dHRvbnNcIikpIFxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0dGhpcy5pbnRlcm5hbEl0ZW1zLmZvckVhY2goaXRlbSA9PiBpdGVtLnNlbGVjdGVkID0gZmFsc2UpO1x0XHRcclxuXHRcdHRoaXMuYW55U2VsZWN0ZWQgPSBmYWxzZTtcclxuXHRcdGlmICh0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UpXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KG51bGwpO1xyXG5cclxuXHR9XHJcblxyXG5cdGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuXHRcdGlmICghdGhpcy5pdGVtcyB8fCAhdGhpcy5zb3J0T3JkZXJGaWVsZE5hbWUgfHwgIXRoaXMuZGlzcGxheUZpZWxkTmFtZSlcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLml0ZW1zKSB7XHJcblx0XHRcdHRoaXMuaW50ZXJuYWxJdGVtcyA9IFtdO1xyXG5cdFx0XHRcclxuXHRcdFx0dGhpcy5zb3J0TGlzdCgpO1xyXG5cclxuXHRcdFx0bGV0IHNvcnRPcmRlciA9IDA7XHJcblx0XHRcdHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuXHRcdFx0XHRpZiAoIWl0ZW0udXVpZClcclxuXHRcdFx0XHRcdGl0ZW0udXVpZCA9IFNsaWNrVXRpbHNTZXJ2aWNlLm5ld0d1aWQoKTtcclxuXHJcblx0XHRcdFx0aWYgKGl0ZW0pXHJcblx0XHRcdFx0XHRTbGlja1V0aWxzU2VydmljZS5zZXREZWVwT2JqZWN0KGl0ZW0sIHRoaXMuc29ydE9yZGVyRmllbGROYW1lLCBzb3J0T3JkZXIpO1xyXG5cclxuXHRcdFx0XHR0aGlzLmludGVybmFsSXRlbXMucHVzaCh7XHJcblx0XHRcdFx0XHR1dWlkOiBpdGVtLnV1aWQsXHJcblx0XHRcdFx0XHRzb3J0T3JkZXI6IHNvcnRPcmRlcixcclxuXHRcdFx0XHRcdHNlbGVjdGVkOiBmYWxzZSxcclxuXHRcdFx0XHRcdHRleHQ6IFNsaWNrVXRpbHNTZXJ2aWNlLmdldERlZXBPYmplY3QoaXRlbSwgdGhpcy5kaXNwbGF5RmllbGROYW1lKVxyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHRzb3J0T3JkZXIrKztcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHR0aGlzLmFueVNlbGVjdGVkID0gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRzZWxlY3RJdGVtKGU6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSkge1xyXG5cdFx0aWYgKGUuY3RybEtleSkge1xyXG5cdFx0XHRpdGVtLnNlbGVjdGVkID0gIWl0ZW0uc2VsZWN0ZWQ7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmIChlLnNoaWZ0S2V5KSB7XHJcblx0XHRcdGxldCBzZWxlY3RlZEl0ZW1JZHggPSB0aGlzLmludGVybmFsSXRlbXMuZmluZEluZGV4KGludGVybmFsSXRlbSA9PiBpdGVtLnV1aWQgPT09IGludGVybmFsSXRlbS51dWlkKTtcclxuXHRcdFx0dGhpcy5pbnRlcm5hbEl0ZW1zW3NlbGVjdGVkSXRlbUlkeF0uc2VsZWN0ZWQgPSAhdGhpcy5pbnRlcm5hbEl0ZW1zW3NlbGVjdGVkSXRlbUlkeF0uc2VsZWN0ZWQ7XHJcblxyXG5cdFx0XHQvLyBDaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYSBzZWxlY3RlZCBpdGVtIHByZXZpb3VzbHkgaW4gdGhlIGxpc3QuICBUaGlzIHdpbGwgYmUgdGhlIGRlZmF1bHRcclxuXHRcdFx0Ly8gRm9yIGV4YW1wbGUsIGlmIHRoZSAybmQgaXRlbSBoYXMgYmVlbiBzZWxlY3RlZCwgdGhlbiB0aGV5IHNoaWZ0LXNlbGVjdCB0aGUgNXRoIGl0ZW0sIGl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2hcclxuXHRcdFx0Ly8gdGhlIGxpc3QgdW50aWwgd2UgZmluZCB0aGUgMm5kIGl0ZW0sIHdoaWNoIGlzIGZsYWdnZWQgYXMgc2VsZWN0ZWQuICBUaGVuIG1hcmsgZXZlcnl0aGluZyBmcm9tIHRoZSAybmQtNXRoIGFzIHNlbGVjdGVkLlxyXG5cdFx0XHRsZXQgcHJldlNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEl0ZW1JZHg7XHJcblx0XHRcdGRvIHtcclxuXHRcdFx0XHRwcmV2U2VsZWN0ZWRJbmRleC0tO1xyXG5cdFx0XHR9IHdoaWxlIChwcmV2U2VsZWN0ZWRJbmRleCA+PSAwICYmIHRoaXMuaW50ZXJuYWxJdGVtc1twcmV2U2VsZWN0ZWRJbmRleF0uc2VsZWN0ZWQgPT09IGZhbHNlKTtcclxuXHRcdFx0XHJcblx0XHRcdGlmIChwcmV2U2VsZWN0ZWRJbmRleCA+PSAwKSB7XHJcblx0XHRcdFx0Zm9yIChsZXQgaSA9IHByZXZTZWxlY3RlZEluZGV4OyBpIDw9IHNlbGVjdGVkSXRlbUlkeDsgaSsrKSBcclxuXHRcdFx0XHRcdHRoaXMuaW50ZXJuYWxJdGVtc1tpXS5zZWxlY3RlZCA9IHRydWU7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIHdlJ3JlIGdvaW5nIGJvdHRvbS0+dG9wIHNlbGVjdFxyXG5cdFx0XHRcdC8vIEZvciBleGFtcGxlLCBpZiB0aGUgNXRoIGl0ZW0gaGFzIGJlZW4gc2VsZWN0ZWQsIHRoZW4gdGhleSBzaGlmdC1zZWxlY3QgdGhlIDJuZCBpdGVtLCBpdGVyYXRlIGZvcndhcmRzIHRocm91Z2hcclxuXHRcdFx0XHQvLyB0aGUgbGlzdCB1bnRpbCB3ZSBmaW5kIHRoZSA1dGggaXRlbSwgd2hpY2ggaXMgZmxhZ2dlZCBhcyBzZWxlY3RlZC4gIFRoZW4gbWFyayBldmVyeXRoaW5nIGZyb20gdGhlIDJuZC01dGggYXMgc2VsZWN0ZWQuXHJcblx0XHRcdFx0bGV0IG5leHRTZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJdGVtSWR4O1xyXG5cdFx0XHRcdGRvIHtcclxuXHRcdFx0XHRcdG5leHRTZWxlY3RlZEluZGV4Kys7XHJcblx0XHRcdFx0fSB3aGlsZSAobmV4dFNlbGVjdGVkSW5kZXggPD0gdGhpcy5pbnRlcm5hbEl0ZW1zLmxlbmd0aCAmJiB0aGlzLmludGVybmFsSXRlbXNbbmV4dFNlbGVjdGVkSW5kZXhdLnNlbGVjdGVkID09PSBmYWxzZSk7XHJcblxyXG5cdFx0XHRcdGlmIChuZXh0U2VsZWN0ZWRJbmRleCA8PSB0aGlzLmludGVybmFsSXRlbXMubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gc2VsZWN0ZWRJdGVtSWR4OyBpIDw9IG5leHRTZWxlY3RlZEluZGV4OyBpKyspIFxyXG5cdFx0XHRcdFx0XHR0aGlzLmludGVybmFsSXRlbXNbaV0uc2VsZWN0ZWQgPSB0cnVlO1xyXG5cdFx0XHRcdH0gXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHR0aGlzLmludGVybmFsSXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZSk7XHJcblx0XHRcdGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuYW55U2VsZWN0ZWQgPSBmYWxzZTtcclxuXHRcdGxldCBzZWxlY3RlZEl0ZW1zID0gW107XHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuXHRcdFx0aWYgKGl0ZW0uc2VsZWN0ZWQgPT09IHRydWUpXHJcblx0XHRcdFx0c2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG5cdFx0XHR0aGlzLmFueVNlbGVjdGVkID0gKHRoaXMuYW55U2VsZWN0ZWQgPT09IHRydWUgfHwgaXRlbS5zZWxlY3RlZCA9PT0gdHJ1ZSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZEl0ZW1zQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCgoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSA/IHNlbGVjdGVkSXRlbXMgOiBudWxsKTtcclxuXHR9XHJcblxyXG5cdG1vdmVUb3AoKSB7XHJcblx0XHRsZXQgdXVpZHNUb01vdmUgPSB0aGlzLmludGVybmFsSXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCA9PT0gdHJ1ZSkubWFwKGl0ZW0gPT4gaXRlbS51dWlkKTtcclxuXHRcdGxldCB0b3BBcnJheTogYW55W10gPSBbXTtcclxuXHRcdHV1aWRzVG9Nb3ZlLmZvckVhY2goKHV1aWQsIGlkeCkgPT4ge1xyXG5cdFx0XHRsZXQgaXRlbUlkeCA9IHRoaXMuaW50ZXJuYWxJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnV1aWQgPT09IHV1aWQpO1xyXG5cdFx0XHRsZXQgdGVtcCA9IHRoaXMuaW50ZXJuYWxJdGVtcy5zcGxpY2UoaXRlbUlkeCwgMSk7XHJcblx0XHRcdHRvcEFycmF5LnB1c2godGVtcFswXSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMgPSB0b3BBcnJheS5jb25jYXQodGhpcy5pbnRlcm5hbEl0ZW1zKTtcclxuXHRcdHRoaXMuaW50ZXJuYWxJdGVtcy5mb3JFYWNoKChpbnRlcm5hbEl0ZW0sIGlkeCkgPT4ge1xyXG5cdFx0XHRpbnRlcm5hbEl0ZW0uc29ydE9yZGVyID0gaWR4O1xyXG5cdFx0XHRsZXQgaXRlbSA9IHRoaXMuaXRlbXMuZmluZChpdGVtID0+IGl0ZW0udXVpZCA9PT0gaW50ZXJuYWxJdGVtLnV1aWQpO1xyXG5cdFx0XHRTbGlja1V0aWxzU2VydmljZS5zZXREZWVwT2JqZWN0KGl0ZW0sIHRoaXMuc29ydE9yZGVyRmllbGROYW1lLCBpZHgpO1xyXG5cdFx0fSlcclxuXHJcblx0XHR0aGlzLnNvcnRMaXN0KCk7XHJcblx0fVxyXG5cclxuXHRtb3ZlVXAoKSB7XHJcblx0XHRsZXQgbmV3QXJyYXkgPSBbXTtcclxuXHRcdHRoaXMuaW50ZXJuYWxJdGVtcy5mb3JFYWNoKHggPT4geC5zb3J0T3JkZXIgKj0gMTApO1xyXG5cdFx0dGhpcy5pbnRlcm5hbEl0ZW1zLmZvckVhY2goKGludGVybmFsSXRlbSwgaWR4KSA9PiB7XHJcblx0XHRcdGlmIChpbnRlcm5hbEl0ZW0uc2VsZWN0ZWQgPT09IHRydWUpXHJcblx0XHRcdFx0aW50ZXJuYWxJdGVtLnNvcnRPcmRlciAtPSAxMTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuaW50ZXJuYWxJdGVtcyA9IHRoaXMuaW50ZXJuYWxJdGVtcy5zb3J0KChhLCBiKSA9PiAoYS5zb3J0T3JkZXIgPiBiLnNvcnRPcmRlcikgPyAxIDogKGEuc29ydE9yZGVyIDwgYi5zb3J0T3JkZXIpID8gLTEgOiAwKTtcclxuXHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMuZm9yRWFjaCgoaW50ZXJuYWxJdGVtLCBpZHgpID0+IHtcclxuXHRcdFx0aW50ZXJuYWxJdGVtLnNvcnRPcmRlciA9IGlkeDtcclxuXHRcdFx0bGV0IGl0ZW0gPSB0aGlzLml0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnV1aWQgPT09IGludGVybmFsSXRlbS51dWlkKTtcclxuXHRcdFx0U2xpY2tVdGlsc1NlcnZpY2Uuc2V0RGVlcE9iamVjdChpdGVtLCB0aGlzLnNvcnRPcmRlckZpZWxkTmFtZSwgaWR4KTtcclxuXHRcdH0pXHRcdFxyXG5cclxuXHRcdHRoaXMuc29ydExpc3QoKTtcclxuXHR9XHJcblxyXG5cdG1vdmVEb3duKCkge1xyXG5cdFx0bGV0IG5ld0FycmF5ID0gW107XHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMuZm9yRWFjaCh4ID0+IHguc29ydE9yZGVyICo9IDEwKTtcclxuXHRcdHRoaXMuaW50ZXJuYWxJdGVtcy5mb3JFYWNoKChpbnRlcm5hbEl0ZW0sIGlkeCkgPT4ge1xyXG5cdFx0XHRpZiAoaW50ZXJuYWxJdGVtLnNlbGVjdGVkID09PSB0cnVlKVxyXG5cdFx0XHRcdGludGVybmFsSXRlbS5zb3J0T3JkZXIgKz0gMTE7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMgPSB0aGlzLmludGVybmFsSXRlbXMuc29ydCgoYSwgYikgPT4gKGEuc29ydE9yZGVyID4gYi5zb3J0T3JkZXIpID8gMSA6IChhLnNvcnRPcmRlciA8IGIuc29ydE9yZGVyKSA/IC0xIDogMCk7XHJcblxyXG5cdFx0dGhpcy5pbnRlcm5hbEl0ZW1zLmZvckVhY2goKGludGVybmFsSXRlbSwgaWR4KSA9PiB7XHJcblx0XHRcdGludGVybmFsSXRlbS5zb3J0T3JkZXIgPSBpZHg7XHJcblx0XHRcdGxldCBpdGVtID0gdGhpcy5pdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS51dWlkID09PSBpbnRlcm5hbEl0ZW0udXVpZCk7XHJcblx0XHRcdFNsaWNrVXRpbHNTZXJ2aWNlLnNldERlZXBPYmplY3QoaXRlbSwgdGhpcy5zb3J0T3JkZXJGaWVsZE5hbWUsIGlkeCk7XHJcblx0XHR9KVxyXG5cclxuXHRcdHRoaXMuc29ydExpc3QoKTtcclxuXHR9XHJcblxyXG5cdG1vdmVCb3R0b20oKSB7XHJcblx0XHRsZXQgdXVpZHNUb01vdmUgPSB0aGlzLmludGVybmFsSXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCA9PT0gdHJ1ZSkubWFwKGl0ZW0gPT4gaXRlbS51dWlkKTtcclxuXHRcdGxldCBib3R0b21BcnJheTogYW55W10gPSBbXTtcclxuXHRcdHV1aWRzVG9Nb3ZlLmZvckVhY2goKHV1aWQsIGlkeCkgPT4ge1xyXG5cdFx0XHRsZXQgaXRlbUlkeCA9IHRoaXMuaW50ZXJuYWxJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnV1aWQgPT09IHV1aWQpO1xyXG5cdFx0XHRsZXQgdGVtcCA9IHRoaXMuaW50ZXJuYWxJdGVtcy5zcGxpY2UoaXRlbUlkeCwgMSk7XHJcblx0XHRcdGJvdHRvbUFycmF5LnB1c2godGVtcFswXSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLmludGVybmFsSXRlbXMgPSB0aGlzLmludGVybmFsSXRlbXMuY29uY2F0KGJvdHRvbUFycmF5KTtcclxuXHRcdHRoaXMuaW50ZXJuYWxJdGVtcy5mb3JFYWNoKChpbnRlcm5hbEl0ZW0sIGlkeCkgPT4ge1xyXG5cdFx0XHRpbnRlcm5hbEl0ZW0uc29ydE9yZGVyID0gaWR4O1xyXG5cdFx0XHRsZXQgaXRlbSA9IHRoaXMuaXRlbXMuZmluZChpdGVtID0+IGl0ZW0udXVpZCA9PT0gaW50ZXJuYWxJdGVtLnV1aWQpO1xyXG5cdFx0XHRTbGlja1V0aWxzU2VydmljZS5zZXREZWVwT2JqZWN0KGl0ZW0sIHRoaXMuc29ydE9yZGVyRmllbGROYW1lLCBpZHgpO1xyXG5cdFx0fSlcclxuXHJcblx0XHR0aGlzLnNvcnRMaXN0KCk7XHJcblx0fVxyXG5cclxuXHRzb3J0TGlzdCgpIHtcclxuXHRcdGlmICh0aGlzLml0ZW1zKSB7XHJcblx0XHRcdHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcblx0XHRcdFx0bGV0IHZhbDEgPSBTbGlja1V0aWxzU2VydmljZS5nZXREZWVwT2JqZWN0KGEsIHRoaXMuc29ydE9yZGVyRmllbGROYW1lKTtcclxuXHRcdFx0XHRsZXQgdmFsMiA9IFNsaWNrVXRpbHNTZXJ2aWNlLmdldERlZXBPYmplY3QoYiwgdGhpcy5zb3J0T3JkZXJGaWVsZE5hbWUpO1xyXG5cclxuXHRcdFx0XHRpZiAodmFsMSA8IHZhbDIpXHJcblx0XHRcdFx0XHRyZXR1cm4gLTE7XHJcblx0XHRcdFx0ZWxzZSBpZiAodmFsMSA+IHZhbDIpXHJcblx0XHRcdFx0XHRyZXR1cm4gMTtcclxuXHRcdFx0XHRlbHNlXHJcblx0XHRcdFx0XHRyZXR1cm4gMDtcdFx0XHRcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtLCBpZHgpID0+IFNsaWNrVXRpbHNTZXJ2aWNlLnNldERlZXBPYmplY3QoaXRlbSwgdGhpcy5zb3J0T3JkZXJGaWVsZE5hbWUsIGlkeCkpO1xyXG5cdFx0dGhpcy5pdGVtc0NoYW5nZS5lbWl0KHRoaXMuaXRlbXMpO1xyXG5cdH1cclxufSIsIjxkaXYgY2xhc3M9XCJzbGljay1vcmRlcmVkLWxpc3RcIiBpZD1cInNsaWNrLW9yZGVyZWQtbGlzdF97e3V1aWR9fVwiPlxyXG5cdDxkaXYgKm5nSWY9XCJidXR0b25BbGlnbm1lbnQgPT09ICdsZWZ0J1wiIGNsYXNzPVwic2xpY2stb3JkZXJlZC1saXN0X2J1dHRvbnNcIj5cclxuXHRcdDxzcGFuICpuZ0lmPVwidGl0bGVcIj48YnIgLz48L3NwYW4+XHJcblx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1vdmUtdG9wIGJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vdmVUb3AoKVwiIFtkaXNhYmxlZF09XCJhbnlTZWxlY3RlZCA9PT0gZmFsc2VcIj48aSBjbGFzcz1cImZhciBmYS1jaGV2cm9uLWRvdWJsZS11cFwiPjwvaT48L2J1dHRvbj5cclxuXHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwibW92ZVVwKClcIiBbZGlzYWJsZWRdPVwiYW55U2VsZWN0ZWQgPT09IGZhbHNlXCI+PGkgY2xhc3M9XCJmYXIgZmEtY2hldnJvbi11cFwiPjwvaT48L2J1dHRvbj5cclxuXHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwibW92ZURvd24oKVwiIFtkaXNhYmxlZF09XCJhbnlTZWxlY3RlZCA9PT0gZmFsc2VcIj48aSBjbGFzcz1cImZhciBmYS1jaGV2cm9uLWRvd25cIj48L2k+PC9idXR0b24+XHJcblx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1vdmUtYm90dG9tIGJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vdmVCb3R0b20oKVwiIFtkaXNhYmxlZF09XCJhbnlTZWxlY3RlZCA9PT0gZmFsc2VcIj48aSBjbGFzcz1cImZhciBmYS1jaGV2cm9uLWRvdWJsZS1kb3duXCI+PC9pPjwvYnV0dG9uPlxyXG5cdDwvZGl2PlxyXG5cdDxkaXYgY2xhc3M9XCJzbGljay1vcmRlcmVkLWxpc3RfbGlzdC1pdGVtc1wiPlxyXG5cdFx0e3t0aXRsZX19PGJyIC8+XHJcblx0XHQ8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XHJcblx0XHRcdDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbnRlcm5hbEl0ZW1zXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpdGVtLnNlbGVjdGVkfVwiIChjbGljayk9XCJzZWxlY3RJdGVtKCRldmVudCwgaXRlbSlcIj57e2l0ZW0udGV4dH19PC9saT5cclxuXHRcdFx0PGxpICpuZ0lmPVwiIWludGVybmFsSXRlbXMgfHwgaW50ZXJuYWxJdGVtcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cInNsaWNrLW9yZGVyZWQtbGlzdF9uby1pdGVtcyBsaXN0LWdyb3VwLWl0ZW1cIj5ObyBJdGVtczwvbGk+XHJcblx0XHQ8L3VsPlxyXG5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2ICpuZ0lmPVwiYnV0dG9uQWxpZ25tZW50ID09PSAncmlnaHQnXCIgY2xhc3M9XCJzbGljay1vcmRlcmVkLWxpc3RfYnV0dG9uc1wiPlxyXG5cdFx0PHNwYW4gKm5nSWY9XCJ0aXRsZVwiPjxiciAvPjwvc3Bhbj5cclxuXHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibW92ZS10b3AgYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwibW92ZVRvcCgpXCIgW2Rpc2FibGVkXT1cImFueVNlbGVjdGVkID09PSBmYWxzZVwiPjxpIGNsYXNzPVwiZmFyIGZhLWNoZXZyb24tZG91YmxlLXVwXCI+PC9pPjwvYnV0dG9uPlxyXG5cdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJtb3ZlVXAoKVwiIFtkaXNhYmxlZF09XCJhbnlTZWxlY3RlZCA9PT0gZmFsc2VcIj48aSBjbGFzcz1cImZhciBmYS1jaGV2cm9uLXVwXCI+PC9pPjwvYnV0dG9uPlxyXG5cdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJtb3ZlRG93bigpXCIgW2Rpc2FibGVkXT1cImFueVNlbGVjdGVkID09PSBmYWxzZVwiPjxpIGNsYXNzPVwiZmFyIGZhLWNoZXZyb24tZG93blwiPjwvaT48L2J1dHRvbj5cclxuXHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibW92ZS1ib3R0b20gYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwibW92ZUJvdHRvbSgpXCIgW2Rpc2FibGVkXT1cImFueVNlbGVjdGVkID09PSBmYWxzZVwiPjxpIGNsYXNzPVwiZmFyIGZhLWNoZXZyb24tZG91YmxlLWRvd25cIj48L2k+PC9idXR0b24+XHJcblx0PC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { CommonModule } from "@angular/common";
|
|
3
|
+
import { FormsModule } from "@angular/forms";
|
|
4
|
+
import { SlickOrderedListComponent } from "./slick-ordered-list.component";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class SlickOrderedListModule {
|
|
7
|
+
}
|
|
8
|
+
/** @nocollapse */ SlickOrderedListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
/** @nocollapse */ SlickOrderedListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListModule, declarations: [SlickOrderedListComponent], imports: [CommonModule, FormsModule], exports: [CommonModule, FormsModule, SlickOrderedListComponent] });
|
|
10
|
+
/** @nocollapse */ SlickOrderedListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListModule, imports: [[CommonModule, FormsModule], CommonModule, FormsModule] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickOrderedListModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
imports: [CommonModule, FormsModule],
|
|
15
|
+
declarations: [SlickOrderedListComponent],
|
|
16
|
+
exports: [CommonModule, FormsModule, SlickOrderedListComponent]
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
export { SlickOrderedListComponent };
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stb3JkZXJlZC1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLW9yZGVyZWQtbGlzdC9zbGljay1vcmRlcmVkLWxpc3QubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFPM0UsTUFBTSxPQUFPLHNCQUFzQjs7c0lBQXRCLHNCQUFzQjt1SUFBdEIsc0JBQXNCLGlCQUhuQix5QkFBeUIsYUFEOUIsWUFBWSxFQUFFLFdBQVcsYUFFekIsWUFBWSxFQUFFLFdBQVcsRUFBRSx5QkFBeUI7dUlBRWxELHNCQUFzQixZQUp6QixDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsRUFFMUIsWUFBWSxFQUFFLFdBQVc7MkZBRXZCLHNCQUFzQjtrQkFMbEMsUUFBUTttQkFBQztvQkFDVCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUNwQyxZQUFZLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDekMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSx5QkFBeUIsQ0FBQztpQkFDL0Q7O0FBR0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU2xpY2tPcmRlcmVkTGlzdENvbXBvbmVudCB9IGZyb20gXCIuL3NsaWNrLW9yZGVyZWQtbGlzdC5jb21wb25lbnRcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0aW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxyXG5cdGRlY2xhcmF0aW9uczogW1NsaWNrT3JkZXJlZExpc3RDb21wb25lbnRdLFxyXG5cdGV4cG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBTbGlja09yZGVyZWRMaXN0Q29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2tPcmRlcmVkTGlzdE1vZHVsZSB7IH1cclxuXHJcbmV4cG9ydCB7IFNsaWNrT3JkZXJlZExpc3RDb21wb25lbnQgfTsiXX0=
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, HostBinding } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class SlickPagingComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.class = 'd-flex';
|
|
7
|
+
this.pageNumber = 1;
|
|
8
|
+
this.pageNumberChange = new EventEmitter();
|
|
9
|
+
this.onPageChange = new EventEmitter();
|
|
10
|
+
this.showEllipses = false;
|
|
11
|
+
// This will be 10 20 30, etc
|
|
12
|
+
this.preDisplayPageNumbers = [];
|
|
13
|
+
this.preDisplayEllipses = false;
|
|
14
|
+
// This will be 41, 42, 43, 44, etc
|
|
15
|
+
this.displayPageNumbers = [];
|
|
16
|
+
// This will be 50 60 70, etc
|
|
17
|
+
this.postDisplayPageNumbers = [];
|
|
18
|
+
this.postDisplayEllipses = false;
|
|
19
|
+
}
|
|
20
|
+
ngOnChanges(changes) {
|
|
21
|
+
if (changes.pageNumber) {
|
|
22
|
+
this.pageNumber = parseInt((changes.pageNumber.currentValue || '1').toString());
|
|
23
|
+
}
|
|
24
|
+
this.recalc();
|
|
25
|
+
}
|
|
26
|
+
selectPage(selectedPageNumber) {
|
|
27
|
+
this.pageNumber = selectedPageNumber;
|
|
28
|
+
this.recalc();
|
|
29
|
+
if (this.onPageChange)
|
|
30
|
+
this.onPageChange.emit(this.pageNumber);
|
|
31
|
+
if (this.pageNumberChange)
|
|
32
|
+
this.pageNumberChange.emit(this.pageNumber);
|
|
33
|
+
}
|
|
34
|
+
first() {
|
|
35
|
+
this.pageNumber = 1;
|
|
36
|
+
this.recalc();
|
|
37
|
+
if (this.onPageChange)
|
|
38
|
+
this.onPageChange.emit(this.pageNumber);
|
|
39
|
+
if (this.pageNumberChange)
|
|
40
|
+
this.pageNumberChange.emit(this.pageNumber);
|
|
41
|
+
}
|
|
42
|
+
previousPage() {
|
|
43
|
+
this.pageNumber--;
|
|
44
|
+
this.recalc();
|
|
45
|
+
if (this.onPageChange)
|
|
46
|
+
this.onPageChange.emit(this.pageNumber);
|
|
47
|
+
if (this.pageNumberChange)
|
|
48
|
+
this.pageNumberChange.emit(this.pageNumber);
|
|
49
|
+
}
|
|
50
|
+
previousSet() {
|
|
51
|
+
this.pageNumber -= 20;
|
|
52
|
+
this.recalc();
|
|
53
|
+
if (this.onPageChange)
|
|
54
|
+
this.onPageChange.emit(this.pageNumber);
|
|
55
|
+
if (this.pageNumberChange)
|
|
56
|
+
this.pageNumberChange.emit(this.pageNumber);
|
|
57
|
+
}
|
|
58
|
+
nextPage() {
|
|
59
|
+
this.pageNumber++;
|
|
60
|
+
this.recalc();
|
|
61
|
+
if (this.onPageChange)
|
|
62
|
+
this.onPageChange.emit(this.pageNumber);
|
|
63
|
+
if (this.pageNumberChange)
|
|
64
|
+
this.pageNumberChange.emit(this.pageNumber);
|
|
65
|
+
}
|
|
66
|
+
nextSet() {
|
|
67
|
+
this.pageNumber += 20;
|
|
68
|
+
this.recalc();
|
|
69
|
+
if (this.onPageChange)
|
|
70
|
+
this.onPageChange.emit(this.pageNumber);
|
|
71
|
+
if (this.pageNumberChange)
|
|
72
|
+
this.pageNumberChange.emit(this.pageNumber);
|
|
73
|
+
}
|
|
74
|
+
last() {
|
|
75
|
+
this.pageNumber = this.totalPages;
|
|
76
|
+
this.recalc();
|
|
77
|
+
if (this.onPageChange)
|
|
78
|
+
this.onPageChange.emit(this.pageNumber);
|
|
79
|
+
if (this.pageNumberChange)
|
|
80
|
+
this.pageNumberChange.emit(this.pageNumber);
|
|
81
|
+
}
|
|
82
|
+
recalc() {
|
|
83
|
+
this.preDisplayEllipses = false;
|
|
84
|
+
this.postDisplayEllipses = false;
|
|
85
|
+
if (!this.recordsPerPage)
|
|
86
|
+
return;
|
|
87
|
+
this.totalRecords = this.totalRecords || 0;
|
|
88
|
+
if (this.totalRecords < 0)
|
|
89
|
+
this.totalRecords = 0;
|
|
90
|
+
this.recordsPerPage = this.recordsPerPage || 1;
|
|
91
|
+
if (this.recordsPerPage <= 0)
|
|
92
|
+
this.recordsPerPage = 1;
|
|
93
|
+
this.totalPages = Math.floor(this.totalRecords / this.recordsPerPage);
|
|
94
|
+
if ((this.totalRecords % this.recordsPerPage) > 0)
|
|
95
|
+
this.totalPages++;
|
|
96
|
+
if (this.pageNumber < 1)
|
|
97
|
+
this.pageNumber = 1;
|
|
98
|
+
if (this.pageNumber > this.totalPages)
|
|
99
|
+
this.pageNumber = this.totalPages;
|
|
100
|
+
this.currentRecordNumber = ((this.recordsPerPage) * (this.pageNumber - 1)) + 1;
|
|
101
|
+
this.endRecordNumber = this.currentRecordNumber + this.recordsPerPage - 1;
|
|
102
|
+
if (this.endRecordNumber > this.totalRecords)
|
|
103
|
+
this.endRecordNumber = this.totalRecords;
|
|
104
|
+
this.preDisplayPageNumbers = [];
|
|
105
|
+
this.displayPageNumbers = [];
|
|
106
|
+
this.postDisplayPageNumbers = [];
|
|
107
|
+
// 10 is a special case where we want to just show all 10
|
|
108
|
+
if (this.totalPages === 10) {
|
|
109
|
+
for (let i = 1; i <= 10; i++) {
|
|
110
|
+
this.displayPageNumbers.push(i);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
const preDisplayPageTotal = Math.floor(this.pageNumber / 10);
|
|
115
|
+
if (preDisplayPageTotal > 0) {
|
|
116
|
+
for (let i = 0; i < preDisplayPageTotal; i++) {
|
|
117
|
+
if (i === 0)
|
|
118
|
+
this.preDisplayPageNumbers.push(1);
|
|
119
|
+
else
|
|
120
|
+
this.preDisplayPageNumbers.push(i * 10);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
let currentDisplayPageStart = preDisplayPageTotal * 10;
|
|
124
|
+
let currentDisplayPageEnd = currentDisplayPageStart + 9;
|
|
125
|
+
if (currentDisplayPageEnd > this.totalPages)
|
|
126
|
+
currentDisplayPageEnd = this.totalPages;
|
|
127
|
+
for (let i = currentDisplayPageStart; i <= currentDisplayPageEnd; i++) {
|
|
128
|
+
if (i > 0)
|
|
129
|
+
this.displayPageNumbers.push(i);
|
|
130
|
+
}
|
|
131
|
+
const postDisplayPageTotal = Math.floor((this.totalPages - preDisplayPageTotal + 10) / 10);
|
|
132
|
+
if (postDisplayPageTotal > 0) {
|
|
133
|
+
for (let i = preDisplayPageTotal + 1; i < postDisplayPageTotal; i++)
|
|
134
|
+
this.postDisplayPageNumbers.push(i * 10);
|
|
135
|
+
}
|
|
136
|
+
if (this.preDisplayPageNumbers.length > 1) {
|
|
137
|
+
this.preDisplayEllipses = true;
|
|
138
|
+
this.preDisplayPageNumbers = this.preDisplayPageNumbers.slice(this.preDisplayPageNumbers.length - 1, this.preDisplayPageNumbers.length);
|
|
139
|
+
}
|
|
140
|
+
if (this.postDisplayPageNumbers.length > 1) {
|
|
141
|
+
this.postDisplayEllipses = true;
|
|
142
|
+
this.postDisplayPageNumbers = this.postDisplayPageNumbers.slice(0, 1);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//// If we can show ALL the pages without the ..., then do it
|
|
146
|
+
//if (this.totalPages <= (this.adjacent * 2)) {
|
|
147
|
+
// this.allDisplayPageNumbers = [];
|
|
148
|
+
// this.showEllipses = false;
|
|
149
|
+
// for (let i = 1; i <= this.totalPages; i++) {
|
|
150
|
+
// this.allDisplayPageNumbers.push(i);
|
|
151
|
+
// }
|
|
152
|
+
//}
|
|
153
|
+
//else {
|
|
154
|
+
// this.showEllipses = true;
|
|
155
|
+
// if (this.allDisplayPageNumbers.indexOf(this.pageNumber) < 0) {
|
|
156
|
+
// this.allDisplayPageNumbers = [];
|
|
157
|
+
// for (let i = this.pageNumber; i < this.pageNumber + this.adjacent; i++)
|
|
158
|
+
// this.allDisplayPageNumbers.push(i);
|
|
159
|
+
// this.allDisplayPageNumbers.push(-1)
|
|
160
|
+
// for (let i = this.totalPages - this.adjacent; i < this.totalPages; i++)
|
|
161
|
+
// this.allDisplayPageNumbers.push(i);
|
|
162
|
+
// }
|
|
163
|
+
//}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/** @nocollapse */ SlickPagingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickPagingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
167
|
+
/** @nocollapse */ SlickPagingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: SlickPagingComponent, selector: "slick-paging", inputs: { pageNumber: "pageNumber", totalRecords: "totalRecords", recordsPerPage: "recordsPerPage" }, outputs: { pageNumberChange: "pageNumberChange", onPageChange: "onPageChange" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"slick-paging\">\r\n\t<div class=\"ml-2 d-flex flex-column\">\r\n\t\t<ul class=\"pagination m-0\">\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === 1\"><button type=\"button\" class=\"page-link\" (click)=\"previousPage()\" style=\"margin-left: 1px;\"><i class=\"far fa-angle-left\"></i></button></li>\r\n\t\t\t<li *ngIf=\"pageNumber > 10\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"first()\" style=\"margin-left: 1px;\">1</button></li>\r\n\t\t\t<li *ngIf=\"preDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"previousSet()\" style=\"margin-left: 1px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of preDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"page-item\" [class.active]=\"pageNumber === displayPageNumber\" *ngFor=\"let displayPageNumber of displayPageNumbers\">\r\n\t\t\t\t<button *ngIf=\"displayPageNumber !== -1\" type=\"button\" class=\"page-link\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t\t<div *ngIf=\"displayPageNumber === -1\" class=\"page-link ellipses pl-1 pr-1 text-white bg-primary\"><i class=\"far fa-ellipsis-h\" style=\"position: relative;\ttop: 4px;\"></i></div>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayPageNumbers.length > 0\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of postDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"nextSet()\" style=\"margin-right: 2px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" [class.disabled]=\"pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"last()\" style=\"margin-right: 2px;\">{{totalPages}}</button></li>\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"nextPage()\"><i class=\"far fa-angle-right\"></i></button></li>\r\n\t\t</ul>\r\n\t\t<div *ngIf=\"totalRecords <= 0\" style=\"font-size: .8em; line-height: 1.4em;\"> </div>\r\n\t\t<div *ngIf=\"totalRecords > 0\" style=\"font-size: .8em; line-height: 1.4em;\">\r\n\t\t\tShowing {{currentRecordNumber}}-{{endRecordNumber}} of {{totalRecords}}\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
168
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickPagingComponent, decorators: [{
|
|
169
|
+
type: Component,
|
|
170
|
+
args: [{ selector: 'slick-paging', template: "<div class=\"slick-paging\">\r\n\t<div class=\"ml-2 d-flex flex-column\">\r\n\t\t<ul class=\"pagination m-0\">\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === 1\"><button type=\"button\" class=\"page-link\" (click)=\"previousPage()\" style=\"margin-left: 1px;\"><i class=\"far fa-angle-left\"></i></button></li>\r\n\t\t\t<li *ngIf=\"pageNumber > 10\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"first()\" style=\"margin-left: 1px;\">1</button></li>\r\n\t\t\t<li *ngIf=\"preDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"previousSet()\" style=\"margin-left: 1px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of preDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li class=\"page-item\" [class.active]=\"pageNumber === displayPageNumber\" *ngFor=\"let displayPageNumber of displayPageNumbers\">\r\n\t\t\t\t<button *ngIf=\"displayPageNumber !== -1\" type=\"button\" class=\"page-link\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t\t<div *ngIf=\"displayPageNumber === -1\" class=\"page-link ellipses pl-1 pr-1 text-white bg-primary\"><i class=\"far fa-ellipsis-h\" style=\"position: relative;\ttop: 4px;\"></i></div>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayPageNumbers.length > 0\" class=\"page-item\" style=\"margin-left: 2px;\"></li>\r\n\r\n\t\t\t<li class=\"page-item\" *ngFor=\"let displayPageNumber of postDisplayPageNumbers\">\r\n\t\t\t\t<button type=\"button\" class=\"page-link\" style=\"margin-right: 2px;\" (click)=\"selectPage(displayPageNumber)\">{{displayPageNumber}}</button>\r\n\t\t\t</li>\r\n\r\n\t\t\t<li *ngIf=\"postDisplayEllipses === true\" class=\"page-item\"><button type=\"button\" class=\"page-link\" (click)=\"nextSet()\" style=\"margin-right: 2px;\"><i style=\"line-height: .8rem; vertical-align: bottom;\" class=\"far fa-ellipsis-h\"></i></button></li>\r\n\t\t\t<li *ngIf=\"totalPages > 10\" class=\"page-item\" [class.disabled]=\"pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"last()\" style=\"margin-right: 2px;\">{{totalPages}}</button></li>\r\n\t\t\t<li class=\"page-item\" [class.disabled]=\"!totalRecords || pageNumber === totalPages\"><button type=\"button\" class=\"page-link\" (click)=\"nextPage()\"><i class=\"far fa-angle-right\"></i></button></li>\r\n\t\t</ul>\r\n\t\t<div *ngIf=\"totalRecords <= 0\" style=\"font-size: .8em; line-height: 1.4em;\"> </div>\r\n\t\t<div *ngIf=\"totalRecords > 0\" style=\"font-size: .8em; line-height: 1.4em;\">\r\n\t\t\tShowing {{currentRecordNumber}}-{{endRecordNumber}} of {{totalRecords}}\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n" }]
|
|
171
|
+
}], ctorParameters: function () { return []; }, propDecorators: { class: [{
|
|
172
|
+
type: HostBinding,
|
|
173
|
+
args: ['class']
|
|
174
|
+
}], pageNumber: [{
|
|
175
|
+
type: Input
|
|
176
|
+
}], pageNumberChange: [{
|
|
177
|
+
type: Output
|
|
178
|
+
}], onPageChange: [{
|
|
179
|
+
type: Output
|
|
180
|
+
}], totalRecords: [{
|
|
181
|
+
type: Input
|
|
182
|
+
}], recordsPerPage: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}] } });
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stcGFnaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLXBhZ2luZy9zbGljay1wYWdpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stcGFnaW5nL3NsaWNrLXBhZ2luZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU05RyxNQUFNLE9BQU8sb0JBQW9CO0lBc0JoQztRQXJCc0IsVUFBSyxHQUFHLFFBQVEsQ0FBQztRQUU5QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLHFCQUFnQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVELGlCQUFZLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJbEUsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFOUIsNkJBQTZCO1FBQzdCLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztRQUNyQyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFDcEMsbUNBQW1DO1FBQ25DLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUNsQyw2QkFBNkI7UUFDN0IsMkJBQXNCLEdBQWEsRUFBRSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztJQUtyQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2pDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDaEY7UUFFRCxJQUFJLENBQUMsTUFBTSxF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QztnQkFDaEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0Q7UUFFRCw2REFBNkQ7UUFDN0QsK0NBQStDO1FBQy9DLG1DQUFtQztRQUVuQyw2QkFBNkI7UUFFN0IsK0NBQStDO1FBQy9DLHVDQUF1QztRQUN2QyxJQUFJO1FBQ0osR0FBRztRQUNILFFBQVE7UUFDUiw0QkFBNEI7UUFFNUIsaUVBQWlFO1FBQ2pFLG9DQUFvQztRQUVwQywyRUFBMkU7UUFDM0Usd0NBQXdDO1FBRXhDLHVDQUF1QztRQUV2QywyRUFBMkU7UUFDM0Usd0NBQXdDO1FBQ3hDLElBQUk7UUFDSixHQUFHO0lBQ0osQ0FBQzs7b0lBdE1XLG9CQUFvQjt3SEFBcEIsb0JBQW9CLGlUQ05qQyxzaEdBa0NBOzJGRDVCYSxvQkFBb0I7a0JBSmhDLFNBQVM7K0JBQ0MsY0FBYzswRUFJRixLQUFLO3NCQUExQixXQUFXO3VCQUFDLE9BQU87Z0JBRVgsVUFBVTtzQkFBbEIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRSxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBIb3N0QmluZGluZyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLXBhZ2luZycsXHJcblx0dGVtcGxhdGVVcmw6ICdzbGljay1wYWdpbmcuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja1BhZ2luZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblx0QEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ2QtZmxleCc7XHJcblxyXG5cdEBJbnB1dCgpIHBhZ2VOdW1iZXI6IG51bWJlciA9IDE7XHJcblx0QE91dHB1dCgpIHBhZ2VOdW1iZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoKSBvblBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBJbnB1dCgpIHRvdGFsUmVjb3JkczogbnVtYmVyO1xyXG5cdEBJbnB1dCgpIHJlY29yZHNQZXJQYWdlOiBudW1iZXI7XHJcblxyXG5cdHNob3dFbGxpcHNlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHRvdGFsUGFnZXM6IG51bWJlcjtcclxuXHQvLyBUaGlzIHdpbGwgYmUgMTAgMjAgMzAsIGV0Y1xyXG5cdHByZURpc3BsYXlQYWdlTnVtYmVyczogbnVtYmVyW10gPSBbXTtcclxuXHRwcmVEaXNwbGF5RWxsaXBzZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHQvLyBUaGlzIHdpbGwgYmUgNDEsIDQyLCA0MywgNDQsIGV0Y1xyXG5cdGRpc3BsYXlQYWdlTnVtYmVyczogbnVtYmVyW10gPSBbXTtcclxuXHQvLyBUaGlzIHdpbGwgYmUgNTAgNjAgNzAsIGV0Y1xyXG5cdHBvc3REaXNwbGF5UGFnZU51bWJlcnM6IG51bWJlcltdID0gW107XHJcblx0cG9zdERpc3BsYXlFbGxpcHNlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGN1cnJlbnRSZWNvcmROdW1iZXI6IG51bWJlcjtcclxuXHRlbmRSZWNvcmROdW1iZXI6IG51bWJlcjtcclxuXHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0fVxyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRpZiAoY2hhbmdlcy5wYWdlTnVtYmVyKSB7XHJcblx0XHRcdHRoaXMucGFnZU51bWJlciA9IHBhcnNlSW50KChjaGFuZ2VzLnBhZ2VOdW1iZXIuY3VycmVudFZhbHVlIHx8ICcxJykudG9TdHJpbmcoKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5yZWNhbGMoKTtcclxuXHR9XHJcblxyXG5cdHNlbGVjdFBhZ2Uoc2VsZWN0ZWRQYWdlTnVtYmVyOiBudW1iZXIpIHtcclxuXHRcdHRoaXMucGFnZU51bWJlciA9IHNlbGVjdGVkUGFnZU51bWJlcjtcclxuXHRcdHRoaXMucmVjYWxjKCk7XHJcblx0XHRpZiAodGhpcy5vblBhZ2VDaGFuZ2UpXHJcblx0XHRcdHRoaXMub25QYWdlQ2hhbmdlLmVtaXQodGhpcy5wYWdlTnVtYmVyKTtcclxuXHRcdGlmICh0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UpXHJcblx0XHRcdHRoaXMucGFnZU51bWJlckNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0fVxyXG5cclxuXHRmaXJzdCgpIHtcclxuXHRcdHRoaXMucGFnZU51bWJlciA9IDE7XHJcblx0XHR0aGlzLnJlY2FsYygpO1xyXG5cdFx0aWYgKHRoaXMub25QYWdlQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VOdW1iZXIpO1xyXG5cdH1cclxuXHJcblx0cHJldmlvdXNQYWdlKCkge1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyLS07XHJcblx0XHR0aGlzLnJlY2FsYygpO1xyXG5cdFx0aWYgKHRoaXMub25QYWdlQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VOdW1iZXIpO1xyXG5cdH1cclxuXHJcblx0cHJldmlvdXNTZXQoKSB7XHJcblx0XHR0aGlzLnBhZ2VOdW1iZXIgLT0gMjA7XHJcblx0XHR0aGlzLnJlY2FsYygpO1xyXG5cdFx0aWYgKHRoaXMub25QYWdlQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VOdW1iZXIpO1xyXG5cdH1cclxuXHJcblx0bmV4dFBhZ2UoKSB7XHJcblx0XHR0aGlzLnBhZ2VOdW1iZXIrKztcclxuXHRcdHRoaXMucmVjYWxjKCk7XHJcblx0XHRpZiAodGhpcy5vblBhZ2VDaGFuZ2UpXHJcblx0XHRcdHRoaXMub25QYWdlQ2hhbmdlLmVtaXQodGhpcy5wYWdlTnVtYmVyKTtcclxuXHRcdGlmICh0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UpXHJcblx0XHRcdHRoaXMucGFnZU51bWJlckNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0fVxyXG5cclxuXHRuZXh0U2V0KCkge1xyXG5cdFx0dGhpcy5wYWdlTnVtYmVyICs9IDIwO1xyXG5cdFx0dGhpcy5yZWNhbGMoKTtcclxuXHRcdGlmICh0aGlzLm9uUGFnZUNoYW5nZSlcclxuXHRcdFx0dGhpcy5vblBhZ2VDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VOdW1iZXIpO1xyXG5cdFx0aWYgKHRoaXMucGFnZU51bWJlckNoYW5nZSlcclxuXHRcdFx0dGhpcy5wYWdlTnVtYmVyQ2hhbmdlLmVtaXQodGhpcy5wYWdlTnVtYmVyKTtcclxuXHR9XHJcblxyXG5cdGxhc3QoKSB7XHJcblx0XHR0aGlzLnBhZ2VOdW1iZXIgPSB0aGlzLnRvdGFsUGFnZXM7XHJcblx0XHR0aGlzLnJlY2FsYygpO1xyXG5cdFx0aWYgKHRoaXMub25QYWdlQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLm9uUGFnZUNoYW5nZS5lbWl0KHRoaXMucGFnZU51bWJlcik7XHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyQ2hhbmdlKVxyXG5cdFx0XHR0aGlzLnBhZ2VOdW1iZXJDaGFuZ2UuZW1pdCh0aGlzLnBhZ2VOdW1iZXIpO1xyXG5cdH1cclxuXHJcblx0cmVjYWxjKCkge1xyXG5cdFx0dGhpcy5wcmVEaXNwbGF5RWxsaXBzZXMgPSBmYWxzZTtcclxuXHRcdHRoaXMucG9zdERpc3BsYXlFbGxpcHNlcyA9IGZhbHNlO1xyXG5cclxuXHRcdGlmICghdGhpcy5yZWNvcmRzUGVyUGFnZSlcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMudG90YWxSZWNvcmRzID0gdGhpcy50b3RhbFJlY29yZHMgfHwgMDtcclxuXHRcdGlmICh0aGlzLnRvdGFsUmVjb3JkcyA8IDApXHJcblx0XHRcdHRoaXMudG90YWxSZWNvcmRzID0gMDtcclxuXHRcdHRoaXMucmVjb3Jkc1BlclBhZ2UgPSB0aGlzLnJlY29yZHNQZXJQYWdlIHx8IDE7XHJcblx0XHRpZiAodGhpcy5yZWNvcmRzUGVyUGFnZSA8PSAwKVxyXG5cdFx0XHR0aGlzLnJlY29yZHNQZXJQYWdlID0gMTtcclxuXHJcblx0XHR0aGlzLnRvdGFsUGFnZXMgPSBNYXRoLmZsb29yKHRoaXMudG90YWxSZWNvcmRzIC8gdGhpcy5yZWNvcmRzUGVyUGFnZSk7XHJcblx0XHRpZiAoKHRoaXMudG90YWxSZWNvcmRzICUgdGhpcy5yZWNvcmRzUGVyUGFnZSkgPiAwKVxyXG5cdFx0XHR0aGlzLnRvdGFsUGFnZXMrKztcclxuXHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyIDwgMSlcclxuXHRcdFx0dGhpcy5wYWdlTnVtYmVyID0gMTtcclxuXHJcblx0XHRpZiAodGhpcy5wYWdlTnVtYmVyID4gdGhpcy50b3RhbFBhZ2VzKVxyXG5cdFx0XHR0aGlzLnBhZ2VOdW1iZXIgPSB0aGlzLnRvdGFsUGFnZXM7XHJcblxyXG5cdFx0dGhpcy5jdXJyZW50UmVjb3JkTnVtYmVyID0gKCh0aGlzLnJlY29yZHNQZXJQYWdlKSAqICh0aGlzLnBhZ2VOdW1iZXIgLSAxKSkgKyAxO1xyXG5cclxuXHRcdHRoaXMuZW5kUmVjb3JkTnVtYmVyID0gdGhpcy5jdXJyZW50UmVjb3JkTnVtYmVyICsgdGhpcy5yZWNvcmRzUGVyUGFnZSAtIDE7XHJcblx0XHRpZiAodGhpcy5lbmRSZWNvcmROdW1iZXIgPiB0aGlzLnRvdGFsUmVjb3JkcylcclxuXHRcdFx0dGhpcy5lbmRSZWNvcmROdW1iZXIgPSB0aGlzLnRvdGFsUmVjb3JkcztcclxuXHJcblx0XHR0aGlzLnByZURpc3BsYXlQYWdlTnVtYmVycyA9IFtdO1xyXG5cdFx0dGhpcy5kaXNwbGF5UGFnZU51bWJlcnMgPSBbXTtcclxuXHRcdHRoaXMucG9zdERpc3BsYXlQYWdlTnVtYmVycyA9IFtdO1xyXG5cclxuXHRcdC8vIDEwIGlzIGEgc3BlY2lhbCBjYXNlIHdoZXJlIHdlIHdhbnQgdG8ganVzdCBzaG93IGFsbCAxMFxyXG5cdFx0aWYgKHRoaXMudG90YWxQYWdlcyA9PT0gMTApIHtcclxuXHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPD0gMTA7IGkrKykge1xyXG5cdFx0XHRcdHRoaXMuZGlzcGxheVBhZ2VOdW1iZXJzLnB1c2goaSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRjb25zdCBwcmVEaXNwbGF5UGFnZVRvdGFsID0gTWF0aC5mbG9vcih0aGlzLnBhZ2VOdW1iZXIgLyAxMCk7XHJcblx0XHRcdGlmIChwcmVEaXNwbGF5UGFnZVRvdGFsID4gMCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcHJlRGlzcGxheVBhZ2VUb3RhbDsgaSsrKSB7XHJcblx0XHRcdFx0XHRpZiAoaSA9PT0gMClcclxuXHRcdFx0XHRcdFx0dGhpcy5wcmVEaXNwbGF5UGFnZU51bWJlcnMucHVzaCgxKTtcclxuXHRcdFx0XHRcdGVsc2VcclxuXHRcdFx0XHRcdFx0dGhpcy5wcmVEaXNwbGF5UGFnZU51bWJlcnMucHVzaChpICogMTApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0bGV0IGN1cnJlbnREaXNwbGF5UGFnZVN0YXJ0ID0gcHJlRGlzcGxheVBhZ2VUb3RhbCAqIDEwO1xyXG5cdFx0XHRsZXQgY3VycmVudERpc3BsYXlQYWdlRW5kID0gY3VycmVudERpc3BsYXlQYWdlU3RhcnQgKyA5O1xyXG5cdFx0XHRpZiAoY3VycmVudERpc3BsYXlQYWdlRW5kID4gdGhpcy50b3RhbFBhZ2VzKVxyXG5cdFx0XHRcdGN1cnJlbnREaXNwbGF5UGFnZUVuZCA9IHRoaXMudG90YWxQYWdlcztcclxuXHJcblx0XHRcdGZvciAobGV0IGkgPSBjdXJyZW50RGlzcGxheVBhZ2VTdGFydDsgaSA8PSBjdXJyZW50RGlzcGxheVBhZ2VFbmQ7IGkrKykge1xyXG5cdFx0XHRcdGlmIChpID4gMClcclxuXHRcdFx0XHRcdHRoaXMuZGlzcGxheVBhZ2VOdW1iZXJzLnB1c2goaSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGNvbnN0IHBvc3REaXNwbGF5UGFnZVRvdGFsID0gTWF0aC5mbG9vcigodGhpcy50b3RhbFBhZ2VzIC0gcHJlRGlzcGxheVBhZ2VUb3RhbCArIDEwKSAvIDEwKTtcclxuXHRcdFx0aWYgKHBvc3REaXNwbGF5UGFnZVRvdGFsID4gMCkge1xyXG5cdFx0XHRcdGZvciAobGV0IGkgPSBwcmVEaXNwbGF5UGFnZVRvdGFsICsgMTsgaSA8IHBvc3REaXNwbGF5UGFnZVRvdGFsOyBpKyspXHJcblx0XHRcdFx0XHR0aGlzLnBvc3REaXNwbGF5UGFnZU51bWJlcnMucHVzaChpICogMTApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5wcmVEaXNwbGF5UGFnZU51bWJlcnMubGVuZ3RoID4gMSkge1xyXG5cdFx0XHRcdHRoaXMucHJlRGlzcGxheUVsbGlwc2VzID0gdHJ1ZTtcclxuXHRcdFx0XHR0aGlzLnByZURpc3BsYXlQYWdlTnVtYmVycyA9IHRoaXMucHJlRGlzcGxheVBhZ2VOdW1iZXJzLnNsaWNlKHRoaXMucHJlRGlzcGxheVBhZ2VOdW1iZXJzLmxlbmd0aCAtIDEsIHRoaXMucHJlRGlzcGxheVBhZ2VOdW1iZXJzLmxlbmd0aCk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHRoaXMucG9zdERpc3BsYXlQYWdlTnVtYmVycy5sZW5ndGggPiAxKSB7XHJcblx0XHRcdFx0dGhpcy5wb3N0RGlzcGxheUVsbGlwc2VzID0gdHJ1ZTtcclxuXHRcdFx0XHR0aGlzLnBvc3REaXNwbGF5UGFnZU51bWJlcnMgPSB0aGlzLnBvc3REaXNwbGF5UGFnZU51bWJlcnMuc2xpY2UoMCwgMSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvLy8vIElmIHdlIGNhbiBzaG93IEFMTCB0aGUgcGFnZXMgd2l0aG91dCB0aGUgLi4uLCB0aGVuIGRvIGl0XHJcblx0XHQvL2lmICh0aGlzLnRvdGFsUGFnZXMgPD0gKHRoaXMuYWRqYWNlbnQgKiAyKSkge1xyXG5cdFx0Ly9cdHRoaXMuYWxsRGlzcGxheVBhZ2VOdW1iZXJzID0gW107XHJcblxyXG5cdFx0Ly9cdHRoaXMuc2hvd0VsbGlwc2VzID0gZmFsc2U7XHJcblxyXG5cdFx0Ly9cdGZvciAobGV0IGkgPSAxOyBpIDw9IHRoaXMudG90YWxQYWdlczsgaSsrKSB7XHJcblx0XHQvL1x0XHR0aGlzLmFsbERpc3BsYXlQYWdlTnVtYmVycy5wdXNoKGkpO1xyXG5cdFx0Ly9cdH1cclxuXHRcdC8vfVxyXG5cdFx0Ly9lbHNlIHtcclxuXHRcdC8vXHR0aGlzLnNob3dFbGxpcHNlcyA9IHRydWU7XHJcblxyXG5cdFx0Ly9cdGlmICh0aGlzLmFsbERpc3BsYXlQYWdlTnVtYmVycy5pbmRleE9mKHRoaXMucGFnZU51bWJlcikgPCAwKSB7XHJcblx0XHQvL1x0XHR0aGlzLmFsbERpc3BsYXlQYWdlTnVtYmVycyA9IFtdO1xyXG5cclxuXHRcdC8vXHRcdGZvciAobGV0IGkgPSB0aGlzLnBhZ2VOdW1iZXI7IGkgPCB0aGlzLnBhZ2VOdW1iZXIgKyB0aGlzLmFkamFjZW50OyBpKyspXHJcblx0XHQvL1x0XHRcdHRoaXMuYWxsRGlzcGxheVBhZ2VOdW1iZXJzLnB1c2goaSk7XHJcblxyXG5cdFx0Ly9cdFx0dGhpcy5hbGxEaXNwbGF5UGFnZU51bWJlcnMucHVzaCgtMSlcclxuXHJcblx0XHQvL1x0XHRmb3IgKGxldCBpID0gdGhpcy50b3RhbFBhZ2VzIC0gdGhpcy5hZGphY2VudDsgaSA8IHRoaXMudG90YWxQYWdlczsgaSsrKVxyXG5cdFx0Ly9cdFx0XHR0aGlzLmFsbERpc3BsYXlQYWdlTnVtYmVycy5wdXNoKGkpO1xyXG5cdFx0Ly9cdH1cclxuXHRcdC8vfVxyXG5cdH1cclxuXHJcbn0iLCI8ZGl2IGNsYXNzPVwic2xpY2stcGFnaW5nXCI+XHJcblx0PGRpdiBjbGFzcz1cIm1sLTIgZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcblx0XHQ8dWwgY2xhc3M9XCJwYWdpbmF0aW9uIG0tMFwiPlxyXG5cdFx0XHQ8bGkgY2xhc3M9XCJwYWdlLWl0ZW1cIiBbY2xhc3MuZGlzYWJsZWRdPVwiIXRvdGFsUmVjb3JkcyB8fCBwYWdlTnVtYmVyID09PSAxXCI+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwicHJldmlvdXNQYWdlKClcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxcHg7XCI+PGkgY2xhc3M9XCJmYXIgZmEtYW5nbGUtbGVmdFwiPjwvaT48L2J1dHRvbj48L2xpPlxyXG5cdFx0XHQ8bGkgKm5nSWY9XCJwYWdlTnVtYmVyID4gMTBcIiBjbGFzcz1cInBhZ2UtaXRlbVwiPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cImZpcnN0KClcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxcHg7XCI+MTwvYnV0dG9uPjwvbGk+XHJcblx0XHRcdDxsaSAqbmdJZj1cInByZURpc3BsYXlFbGxpcHNlcyA9PT0gdHJ1ZVwiIGNsYXNzPVwicGFnZS1pdGVtXCI+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwicHJldmlvdXNTZXQoKVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDFweDtcIj48aSBzdHlsZT1cImxpbmUtaGVpZ2h0OiAuOHJlbTsgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcIiBjbGFzcz1cImZhciBmYS1lbGxpcHNpcy1oXCI+PC9pPjwvYnV0dG9uPjwvbGk+XHJcblxyXG5cdFx0XHQ8bGkgKm5nSWY9XCJ0b3RhbFBhZ2VzID4gMTBcIiBjbGFzcz1cInBhZ2UtaXRlbVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDJweDtcIj48L2xpPlxyXG5cclxuXHRcdFx0PGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgKm5nRm9yPVwibGV0IGRpc3BsYXlQYWdlTnVtYmVyIG9mIHByZURpc3BsYXlQYWdlTnVtYmVyc1wiPlxyXG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicGFnZS1saW5rXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDJweDtcIiAoY2xpY2spPVwic2VsZWN0UGFnZShkaXNwbGF5UGFnZU51bWJlcilcIj57e2Rpc3BsYXlQYWdlTnVtYmVyfX08L2J1dHRvbj5cclxuXHRcdFx0PC9saT5cclxuXHJcblx0XHRcdDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwicGFnZU51bWJlciA9PT0gZGlzcGxheVBhZ2VOdW1iZXJcIiAqbmdGb3I9XCJsZXQgZGlzcGxheVBhZ2VOdW1iZXIgb2YgZGlzcGxheVBhZ2VOdW1iZXJzXCI+XHJcblx0XHRcdFx0PGJ1dHRvbiAqbmdJZj1cImRpc3BsYXlQYWdlTnVtYmVyICE9PSAtMVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJzZWxlY3RQYWdlKGRpc3BsYXlQYWdlTnVtYmVyKVwiPnt7ZGlzcGxheVBhZ2VOdW1iZXJ9fTwvYnV0dG9uPlxyXG5cdFx0XHRcdDxkaXYgKm5nSWY9XCJkaXNwbGF5UGFnZU51bWJlciA9PT0gLTFcIiBjbGFzcz1cInBhZ2UtbGluayBlbGxpcHNlcyBwbC0xIHByLTEgdGV4dC13aGl0ZSBiZy1wcmltYXJ5XCI+PGkgY2xhc3M9XCJmYXIgZmEtZWxsaXBzaXMtaFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1x0dG9wOiA0cHg7XCI+PC9pPjwvZGl2PlxyXG5cdFx0XHQ8L2xpPlxyXG5cclxuXHRcdFx0PGxpICpuZ0lmPVwicG9zdERpc3BsYXlQYWdlTnVtYmVycy5sZW5ndGggPiAwXCIgY2xhc3M9XCJwYWdlLWl0ZW1cIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAycHg7XCI+PC9saT5cclxuXHJcblx0XHRcdDxsaSBjbGFzcz1cInBhZ2UtaXRlbVwiICpuZ0Zvcj1cImxldCBkaXNwbGF5UGFnZU51bWJlciBvZiBwb3N0RGlzcGxheVBhZ2VOdW1iZXJzXCI+XHJcblx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwYWdlLWxpbmtcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMnB4O1wiIChjbGljayk9XCJzZWxlY3RQYWdlKGRpc3BsYXlQYWdlTnVtYmVyKVwiPnt7ZGlzcGxheVBhZ2VOdW1iZXJ9fTwvYnV0dG9uPlxyXG5cdFx0XHQ8L2xpPlxyXG5cclxuXHRcdFx0PGxpICpuZ0lmPVwicG9zdERpc3BsYXlFbGxpcHNlcyA9PT0gdHJ1ZVwiIGNsYXNzPVwicGFnZS1pdGVtXCI+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwYWdlLWxpbmtcIiAoY2xpY2spPVwibmV4dFNldCgpXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDJweDtcIj48aSBzdHlsZT1cImxpbmUtaGVpZ2h0OiAuOHJlbTsgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcIiBjbGFzcz1cImZhciBmYS1lbGxpcHNpcy1oXCI+PC9pPjwvYnV0dG9uPjwvbGk+XHJcblx0XHRcdDxsaSAqbmdJZj1cInRvdGFsUGFnZXMgPiAxMFwiIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cInBhZ2VOdW1iZXIgPT09IHRvdGFsUGFnZXNcIj48YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInBhZ2UtbGlua1wiIChjbGljayk9XCJsYXN0KClcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMnB4O1wiPnt7dG90YWxQYWdlc319PC9idXR0b24+PC9saT5cclxuXHRcdFx0PGxpIGNsYXNzPVwicGFnZS1pdGVtXCIgW2NsYXNzLmRpc2FibGVkXT1cIiF0b3RhbFJlY29yZHMgfHwgcGFnZU51bWJlciA9PT0gdG90YWxQYWdlc1wiPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicGFnZS1saW5rXCIgKGNsaWNrKT1cIm5leHRQYWdlKClcIj48aSBjbGFzcz1cImZhciBmYS1hbmdsZS1yaWdodFwiPjwvaT48L2J1dHRvbj48L2xpPlxyXG5cdFx0PC91bD5cclxuXHRcdDxkaXYgKm5nSWY9XCJ0b3RhbFJlY29yZHMgPD0gMFwiIHN0eWxlPVwiZm9udC1zaXplOiAuOGVtOyBsaW5lLWhlaWdodDogMS40ZW07XCI+Jm5ic3A7PC9kaXY+XHJcblx0XHQ8ZGl2ICpuZ0lmPVwidG90YWxSZWNvcmRzID4gMFwiIHN0eWxlPVwiZm9udC1zaXplOiAuOGVtOyBsaW5lLWhlaWdodDogMS40ZW07XCI+XHJcblx0XHRcdFNob3dpbmcge3tjdXJyZW50UmVjb3JkTnVtYmVyfX0te3tlbmRSZWNvcmROdW1iZXJ9fSBvZiB7e3RvdGFsUmVjb3Jkc319XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|