ca-components 1.3.34 → 1.3.36
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/assets/scss/background.scss +44 -0
- package/assets/scss/border-radius.scss +17 -0
- package/assets/scss/filters.scss +151 -0
- package/assets/scss/icons.scss +39 -0
- package/assets/scss/input-dropdown-test.scss +2030 -0
- package/assets/scss/spacing.scss +59 -0
- package/assets/scss/styles.scss +22 -1
- package/assets/scss/text-selection.scss +15 -0
- package/assets/theme/variables.scss +1 -1
- package/esm2022/lib/ca-components.module.mjs +26 -2
- package/esm2022/lib/components/ca-activity-log-list/ca-activity-log-list.component.mjs +3 -3
- package/esm2022/lib/components/ca-autoclose-popover/ca-autoclose-popover.component.mjs +6 -3
- package/esm2022/lib/components/ca-checkbox/ca-checkbox.component.mjs +2 -2
- package/esm2022/lib/components/ca-collapsible-filter/ca-collapsible-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-comment/ca-comment.component.mjs +2 -2
- package/esm2022/lib/components/ca-comment/modals/comment-modal/comment-modal.component.mjs +3 -3
- package/esm2022/lib/components/ca-custom-scrollbar/ca-custom-scrollbar.component.mjs +3 -3
- package/esm2022/lib/components/ca-details-dropdown/ca-details-dropdown.component.mjs +2 -2
- package/esm2022/lib/components/ca-dropdown-menu/ca-dropdown-menu.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/ca-filter.component.mjs +4 -4
- package/esm2022/lib/components/ca-filters/components/ca-dispatcher-filter/ca-dispatcher-filter.component.mjs +3 -3
- package/esm2022/lib/components/ca-filters/components/ca-location-filter/ca-location-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-pm-filter/ca-pm-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-state-filter/ca-state-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-status-filter/ca-status-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-time-filter/ca-time-filter.component.mjs +4 -4
- package/esm2022/lib/components/ca-filters/components/ca-trailer-type-filter/ca-trailer-type-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-truck-type-filter/ca-truck-type-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-user-filter/ca-user-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-violation-filter/ca-violation-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/pipes/index.mjs +7 -0
- package/esm2022/lib/components/ca-filters/utils/helpers/index.mjs +2 -1
- package/esm2022/lib/components/ca-filters/utils/helpers/time-filter.helper.mjs +117 -0
- package/esm2022/lib/components/ca-filters/utils/svg-routes/index.mjs +2 -0
- package/esm2022/lib/components/ca-input/ca-input.component.mjs +2 -2
- package/esm2022/lib/components/ca-input/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.mjs +3 -3
- package/esm2022/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.mjs +2 -2
- package/esm2022/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +2 -2
- package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +2 -2
- package/esm2022/lib/components/ca-input-note/ca-input-note.component.mjs +2 -2
- package/esm2022/lib/components/ca-input-test/base-classes/ca-input-event-manager.mjs +24 -0
- package/esm2022/lib/components/ca-input-test/components/ca-input-clear/ca-input-clear.component.mjs +66 -0
- package/esm2022/lib/components/ca-input-test/components/ca-input-commands/ca-input-commands.component.mjs +48 -0
- package/esm2022/lib/components/ca-input-test/components/ca-input-password/ca-input-password.component.mjs +63 -0
- package/esm2022/lib/components/ca-input-test/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.mjs +85 -0
- package/esm2022/lib/components/ca-input-test/config/ca-input.config.mjs +2 -0
- package/esm2022/lib/components/ca-input-test/config/index.mjs +2 -0
- package/esm2022/lib/components/ca-input-test/directives/caps-lock.directive.mjs +50 -0
- package/esm2022/lib/components/ca-input-test/directives/command-visible.directive.mjs +48 -0
- package/esm2022/lib/components/ca-input-test/directives/index.mjs +6 -0
- package/esm2022/lib/components/ca-input-test/directives/input-max-value.directive.mjs +53 -0
- package/esm2022/lib/components/ca-input-test/directives/min-max-value.directive.mjs +41 -0
- package/esm2022/lib/components/ca-input-test/directives/price_format.directive.mjs +41 -0
- package/esm2022/lib/components/ca-input-test/directives/restrict-input.directive.mjs +94 -0
- package/esm2022/lib/components/ca-input-test/enums/index.mjs +5 -0
- package/esm2022/lib/components/ca-input-test/enums/input-commands-action.enum.mjs +11 -0
- package/esm2022/lib/components/ca-input-test/enums/input-commands-type.enum.mjs +8 -0
- package/esm2022/lib/components/ca-input-test/enums/input-config-name-string.enum.mjs +9 -0
- package/esm2022/lib/components/ca-input-test/enums/input-string.enum.mjs +114 -0
- package/esm2022/lib/components/ca-input-test/enums/input-text-transform.enum.mjs +9 -0
- package/esm2022/lib/components/ca-input-test/input-test.component.mjs +273 -0
- package/esm2022/lib/components/ca-input-test/mixins/input-command.mixin.mjs +124 -0
- package/esm2022/lib/components/ca-input-test/mixins/input-helper.mixin.mjs +49 -0
- package/esm2022/lib/components/ca-input-test/mixins/restriction-pipe.mixin.mjs +34 -0
- package/esm2022/lib/components/ca-input-test/models/base.model.mjs +2 -0
- package/esm2022/lib/components/ca-input-test/models/command-click.model.mjs +2 -0
- package/esm2022/lib/components/ca-input-test/models/commands-event.model.mjs +2 -0
- package/esm2022/lib/components/ca-input-test/models/index.mjs +4 -0
- package/esm2022/lib/components/ca-input-test/models/label-color.model.mjs +2 -0
- package/esm2022/lib/components/ca-input-test/pipes/color-finder.pipe.mjs +62 -0
- package/esm2022/lib/components/ca-input-test/pipes/form-control.pipe.mjs +17 -0
- package/esm2022/lib/components/ca-input-test/pipes/index.mjs +20 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-class.pipe.mjs +155 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-clear-class.pipe.mjs +87 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-container-class.pipe.mjs +58 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-datetime-picker-class.pipe.mjs +77 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-dropdown-arrow-class.pipe.mjs +61 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-error.pipe.mjs +88 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-password-eye-class.pipe.mjs +37 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-pattern.pipe.mjs +326 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-placeholder-icon-right.pipe.mjs +46 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-placeholder-icon.class.pipe.mjs +58 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-placeholder-text-class.pipe.mjs +45 -0
- package/esm2022/lib/components/ca-input-test/pipes/input-type.pipe.mjs +25 -0
- package/esm2022/lib/components/ca-input-test/pipes/label-class.pipe.mjs +38 -0
- package/esm2022/lib/components/ca-input-test/pipes/show-clear.pipe.mjs +22 -0
- package/esm2022/lib/components/ca-input-test/pipes/show-dropdown-arrow.pipe.mjs +26 -0
- package/esm2022/lib/components/ca-input-test/pipes/show-invalid-danger-mark.pipe.mjs +27 -0
- package/esm2022/lib/components/ca-input-test/pipes/show-placeholder-text.pipe.mjs +24 -0
- package/esm2022/lib/components/ca-input-test/pipes/show-valid-check.pipe.mjs +27 -0
- package/esm2022/lib/components/ca-input-test/utils/index.mjs +3 -0
- package/esm2022/lib/components/ca-input-test/utils/input-change-value.type.mjs +2 -0
- package/esm2022/lib/components/ca-input-test/utils/input-svg-routes.mjs +17 -0
- package/esm2022/lib/components/ca-logo-change/ca-logo-change.component.mjs +3 -3
- package/esm2022/lib/components/ca-map/ca-map.component.mjs +2 -2
- package/esm2022/lib/components/ca-map-dropdown/ca-map-dropdown.component.mjs +2 -2
- package/esm2022/lib/components/ca-modal/ca-modal.component.mjs +2 -2
- package/esm2022/lib/components/ca-modal-button/ca-modal-button.component.mjs +3 -3
- package/esm2022/lib/components/ca-new-filter/ca-filter-dropdown.component.mjs +98 -0
- package/esm2022/lib/components/ca-new-filter/components/ca-filter-list-dropdown/ca-filter-list-dropdown.component.mjs +142 -0
- package/esm2022/lib/components/ca-new-filter/components/ca-filter-state-dropdown/ca-filter-state-dropdown.component.mjs +131 -0
- package/esm2022/lib/components/ca-new-filter/components/ca-filter-time-dropdown/ca-filter-time-dropdown.component.mjs +131 -0
- package/esm2022/lib/components/ca-new-filter/constant/filter-dropdown-icons.constant.mjs +87 -0
- package/esm2022/lib/components/ca-new-filter/constant/index.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/enums/filter-dropdown-types.enum.mjs +15 -0
- package/esm2022/lib/components/ca-new-filter/enums/filter-sorting-key.enum.mjs +6 -0
- package/esm2022/lib/components/ca-new-filter/enums/filter-time.enum.mjs +37 -0
- package/esm2022/lib/components/ca-new-filter/enums/index.mjs +4 -0
- package/esm2022/lib/components/ca-new-filter/interface/country.interface.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/interface/filter-action.interface.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/interface/filter-dropdown-configuration.interface.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/interface/filter-dropdown-list.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/interface/index.mjs +7 -0
- package/esm2022/lib/components/ca-new-filter/interface/sorting-emmiter.interface.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/interface/time-options.interface.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/pipes/filter-search.pipe.mjs +31 -0
- package/esm2022/lib/components/ca-new-filter/types/filter-dropdown.types.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/types/filter-sorting-key.type.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/types/filter-time.types.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/types/index.mjs +4 -0
- package/esm2022/lib/components/ca-new-filter/utils/configs/filter-dropdown-fields.config.mjs +37 -0
- package/esm2022/lib/components/ca-new-filter/utils/configs/index.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/utils/helpers/index.mjs +2 -0
- package/esm2022/lib/components/ca-new-filter/utils/helpers/time-filter.helper.mjs +133 -0
- package/esm2022/lib/components/ca-ngx-slider/ca-ngx-slider.component.mjs +2 -2
- package/esm2022/lib/components/ca-note/ca-note.component.mjs +2 -2
- package/esm2022/lib/components/ca-note-container/ca-note-container.component.mjs +2 -2
- package/esm2022/lib/components/ca-payroll-list-summary-overview/ca-payroll-list-summary-overview.component.mjs +2 -2
- package/esm2022/lib/components/ca-period-content/ca-period-content.component.mjs +2 -2
- package/esm2022/lib/components/ca-period-content/components/ca-period-content-extra-info/ca-period-content-extra-info.component.mjs +3 -3
- package/esm2022/lib/components/ca-period-content/components/ca-period-content-payment/ca-period-content-payment.component.mjs +2 -2
- package/esm2022/lib/components/ca-period-content/components/ca-period-content-user-info/ca-period-content-user-info.component.mjs +3 -3
- package/esm2022/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.mjs +3 -3
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/ca-load.component.mjs +3 -3
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-list/ca-load-list.component.mjs +3 -3
- package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/components/ca-load-single/ca-load-single.component.mjs +3 -3
- package/esm2022/lib/components/ca-profile-image/ca-profile-image.component.mjs +3 -3
- package/esm2022/lib/components/ca-progress-bar/ca-progress-bar.component.mjs +2 -2
- package/esm2022/lib/components/ca-progress-expiration/ca-progress-expiration.component.mjs +2 -2
- package/esm2022/lib/components/ca-rating-review/ca-rating-review.component.mjs +2 -2
- package/esm2022/lib/components/ca-rating-review/components/ca-rating-review-user/ca-rating-review-user.component.mjs +2 -2
- package/esm2022/lib/components/ca-rating-review/components/ca-ratings-reviews-popup/ca-ratings-reviews-popup.component.mjs +2 -2
- package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-company/ca-right-side-panel-company.component.mjs +3 -3
- package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-menu/ca-right-side-panel-menu.component.mjs +3 -3
- package/esm2022/lib/components/ca-right-side-panel/components/ca-right-side-panel-top-bar/ca-right-side-panel-top-bar.component.mjs +3 -3
- package/esm2022/lib/components/ca-search-multiple-states/ca-search-multiple-states.component.mjs +3 -3
- package/esm2022/lib/components/ca-search-multiple-states/models/tab-data.model.mjs +1 -1
- package/esm2022/lib/components/ca-sort-dropdown/ca-sort-dropdown.component.mjs +21 -8
- package/esm2022/lib/components/ca-sort-dropdown/types/index.mjs +2 -0
- package/esm2022/lib/components/ca-sort-dropdown/types/sort-directions.type.mjs +2 -0
- package/esm2022/lib/components/ca-sort-dropdown/utils/svg-routes/ca-sort-dropdown-svg-routes.mjs +3 -2
- package/esm2022/lib/components/ca-spinner/ca-spinner.component.mjs +2 -2
- package/esm2022/lib/components/ca-tab-switch/ca-tab-switch.component.mjs +3 -3
- package/esm2022/lib/components/ca-todo/ca-todo.component.mjs +3 -3
- package/esm2022/lib/components/ca-todo/components/ca-todo-card.component.mjs +3 -3
- package/esm2022/lib/components/ca-tooltip-list/ca-tooltip-list.component.mjs +3 -3
- package/esm2022/lib/components/ca-truck-trailer-progress-bar/ca-truck-trailer-progress-bar.component.mjs +2 -2
- package/esm2022/lib/components/ca-upload-files/ca-upload-files.component.mjs +3 -3
- package/esm2022/lib/components/ca-upload-files/components/ca-upload-dropzone/ca-upload-dropzone.component.mjs +3 -3
- package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/ca-upload-file.component.mjs +2 -2
- package/esm2022/lib/components/ca-upload-files/components/ca-upload-files-carousel/ca-upload-files-carousel.component.mjs +3 -3
- package/esm2022/public-api.mjs +9 -2
- package/fesm2022/ca-components.mjs +3411 -637
- package/fesm2022/ca-components.mjs.map +1 -1
- package/lib/ca-components.module.d.ts +38 -34
- package/lib/components/ca-autoclose-popover/ca-autoclose-popover.component.d.ts +2 -1
- package/lib/components/ca-filters/pipes/index.d.ts +6 -0
- package/lib/components/ca-filters/utils/helpers/index.d.ts +1 -0
- package/lib/components/ca-filters/utils/{constants/time-filter.constants.d.ts → helpers/time-filter.helper.d.ts} +14 -2
- package/lib/components/ca-filters/utils/svg-routes/index.d.ts +1 -0
- package/lib/components/ca-input-test/base-classes/ca-input-event-manager.d.ts +16 -0
- package/lib/components/ca-input-test/components/ca-input-clear/ca-input-clear.component.d.ts +20 -0
- package/lib/components/ca-input-test/components/ca-input-commands/ca-input-commands.component.d.ts +16 -0
- package/lib/components/ca-input-test/components/ca-input-password/ca-input-password.component.d.ts +20 -0
- package/lib/components/ca-input-test/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.d.ts +26 -0
- package/lib/components/ca-input-test/config/ca-input.config.d.ts +168 -0
- package/lib/components/ca-input-test/config/index.d.ts +1 -0
- package/lib/components/ca-input-test/directives/caps-lock.directive.d.ts +14 -0
- package/lib/components/ca-input-test/directives/index.d.ts +5 -0
- package/lib/components/ca-input-test/directives/input-max-value.directive.d.ts +12 -0
- package/lib/components/ca-input-test/directives/min-max-value.directive.d.ts +13 -0
- package/lib/components/ca-input-test/directives/price_format.directive.d.ts +11 -0
- package/lib/components/ca-input-test/directives/restrict-input.directive.d.ts +27 -0
- package/lib/components/ca-input-test/enums/index.d.ts +4 -0
- package/lib/components/ca-input-test/enums/input-commands-action.enum.d.ts +9 -0
- package/lib/components/ca-input-test/enums/input-commands-type.enum.d.ts +6 -0
- package/lib/components/ca-input-test/enums/input-config-name-string.enum.d.ts +7 -0
- package/lib/components/ca-input-test/enums/input-string.enum.d.ts +112 -0
- package/lib/components/ca-input-test/enums/input-text-transform.enum.d.ts +6 -0
- package/lib/components/{ca-input/input-test → ca-input-test}/input-test.component.d.ts +13 -12
- package/lib/components/ca-input-test/mixins/restriction-pipe.mixin.d.ts +12 -0
- package/lib/components/ca-input-test/models/command-click.model.d.ts +5 -0
- package/lib/components/ca-input-test/models/commands-event.model.d.ts +5 -0
- package/lib/components/ca-input-test/models/index.d.ts +3 -0
- package/lib/components/ca-input-test/models/label-color.model.d.ts +11 -0
- package/lib/components/ca-input-test/pipes/color-finder.pipe.d.ts +7 -0
- package/lib/components/ca-input-test/pipes/form-control.pipe.d.ts +8 -0
- package/lib/components/ca-input-test/pipes/index.d.ts +19 -0
- package/lib/components/ca-input-test/pipes/input-class.pipe.d.ts +13 -0
- package/lib/components/ca-input-test/pipes/input-clear-class.pipe.d.ts +11 -0
- package/lib/components/ca-input-test/pipes/input-container-class.pipe.d.ts +11 -0
- package/lib/components/ca-input-test/pipes/input-datetime-picker-class.pipe.d.ts +11 -0
- package/lib/components/ca-input-test/pipes/input-dropdown-arrow-class.pipe.d.ts +11 -0
- package/lib/components/ca-input-test/pipes/input-error.pipe.d.ts +7 -0
- package/lib/components/ca-input-test/pipes/input-password-eye-class.pipe.d.ts +11 -0
- package/lib/components/ca-input-test/pipes/input-pattern.pipe.d.ts +38 -0
- package/lib/components/ca-input-test/pipes/input-placeholder-icon-right.pipe.d.ts +11 -0
- package/lib/components/ca-input-test/pipes/input-placeholder-icon.class.pipe.d.ts +12 -0
- package/lib/components/ca-input-test/pipes/input-placeholder-text-class.pipe.d.ts +11 -0
- package/lib/components/ca-input-test/pipes/input-type.pipe.d.ts +7 -0
- package/lib/components/ca-input-test/pipes/label-class.pipe.d.ts +10 -0
- package/lib/components/ca-input-test/pipes/show-clear.pipe.d.ts +8 -0
- package/lib/components/ca-input-test/pipes/show-dropdown-arrow.pipe.d.ts +8 -0
- package/lib/components/ca-input-test/pipes/show-invalid-danger-mark.pipe.d.ts +9 -0
- package/lib/components/ca-input-test/pipes/show-placeholder-text.pipe.d.ts +9 -0
- package/lib/components/ca-input-test/pipes/show-valid-check.pipe.d.ts +9 -0
- package/lib/components/ca-input-test/utils/index.d.ts +2 -0
- package/lib/components/ca-input-test/utils/input-change-value.type.d.ts +1 -0
- package/lib/components/ca-input-test/utils/input-svg-routes.d.ts +16 -0
- package/lib/components/ca-new-filter/ca-filter-dropdown.component.d.ts +35 -0
- package/lib/components/ca-new-filter/components/ca-filter-list-dropdown/ca-filter-list-dropdown.component.d.ts +43 -0
- package/lib/components/ca-new-filter/components/ca-filter-state-dropdown/ca-filter-state-dropdown.component.d.ts +35 -0
- package/lib/components/ca-new-filter/components/ca-filter-time-dropdown/ca-filter-time-dropdown.component.d.ts +43 -0
- package/lib/components/ca-new-filter/constant/filter-dropdown-icons.constant.d.ts +3 -0
- package/lib/components/ca-new-filter/constant/index.d.ts +1 -0
- package/lib/components/ca-new-filter/enums/filter-dropdown-types.enum.d.ts +13 -0
- package/lib/components/ca-new-filter/enums/filter-sorting-key.enum.d.ts +4 -0
- package/lib/components/ca-new-filter/enums/filter-time.enum.d.ts +35 -0
- package/lib/components/ca-new-filter/enums/index.d.ts +3 -0
- package/lib/components/ca-new-filter/interface/country.interface.d.ts +13 -0
- package/lib/components/ca-new-filter/interface/filter-action.interface.d.ts +18 -0
- package/lib/components/ca-new-filter/interface/filter-dropdown-configuration.interface.d.ts +13 -0
- package/lib/components/ca-new-filter/interface/filter-dropdown-list.d.ts +17 -0
- package/lib/components/ca-new-filter/interface/index.d.ts +6 -0
- package/lib/components/ca-new-filter/interface/sorting-emmiter.interface.d.ts +5 -0
- package/lib/components/ca-new-filter/interface/time-options.interface.d.ts +9 -0
- package/lib/components/ca-new-filter/pipes/filter-search.pipe.d.ts +8 -0
- package/lib/components/ca-new-filter/types/filter-dropdown.types.d.ts +2 -0
- package/lib/components/ca-new-filter/types/filter-sorting-key.type.d.ts +2 -0
- package/lib/components/ca-new-filter/types/filter-time.types.d.ts +2 -0
- package/lib/components/ca-new-filter/types/index.d.ts +3 -0
- package/lib/components/ca-new-filter/utils/configs/filter-dropdown-fields.config.d.ts +7 -0
- package/lib/components/ca-new-filter/utils/configs/index.d.ts +1 -0
- package/lib/components/ca-new-filter/utils/helpers/index.d.ts +1 -0
- package/lib/components/ca-new-filter/utils/helpers/time-filter.helper.d.ts +6 -0
- package/lib/components/ca-search-multiple-states/ca-search-multiple-states.component.d.ts +2 -2
- package/lib/components/ca-search-multiple-states/models/tab-data.model.d.ts +11 -11
- package/lib/components/ca-sort-dropdown/ca-sort-dropdown.component.d.ts +12 -5
- package/lib/components/ca-sort-dropdown/types/index.d.ts +1 -0
- package/lib/components/ca-sort-dropdown/types/sort-directions.type.d.ts +5 -0
- package/lib/components/ca-sort-dropdown/utils/svg-routes/ca-sort-dropdown-svg-routes.d.ts +2 -1
- package/package.json +1 -1
- package/public-api.d.ts +8 -1
- package/src/assets/ca-components/svg/common/ic_arrow_desc.svg +3 -0
- package/esm2022/lib/components/ca-filters/utils/constants/time-filter.constants.mjs +0 -102
- package/esm2022/lib/components/ca-input/directives/command-visible.directive.mjs +0 -48
- package/esm2022/lib/components/ca-input/input-test/input-test.component.mjs +0 -266
- package/esm2022/lib/components/ca-input/mixins/input-command.mixin.mjs +0 -127
- package/esm2022/lib/components/ca-input/mixins/input-helper.mixin.mjs +0 -49
- package/esm2022/lib/components/ca-input/models/base.model.mjs +0 -2
- /package/lib/components/{ca-input → ca-input-test}/directives/command-visible.directive.d.ts +0 -0
- /package/lib/components/{ca-input → ca-input-test}/mixins/input-command.mixin.d.ts +0 -0
- /package/lib/components/{ca-input → ca-input-test}/mixins/input-helper.mixin.d.ts +0 -0
- /package/lib/components/{ca-input → ca-input-test}/models/base.model.d.ts +0 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
// Enums
|
|
5
|
+
import { eFilterDropdownEnum, eFilterSortingKey } from '../../enums';
|
|
6
|
+
import { LoadStatusEnum } from '../../../../enums/load-status.enum';
|
|
7
|
+
// Constants & Utils
|
|
8
|
+
import { CaFiltersSvgRoutes } from '../../../ca-filters/utils/svg-routes';
|
|
9
|
+
import { FilterDropdownIconsConst } from '../../constant';
|
|
10
|
+
// Components
|
|
11
|
+
import { CaFilterDropdownComponent } from '../../ca-filter-dropdown.component';
|
|
12
|
+
import { CaProfileImageComponent } from '../../../ca-profile-image/ca-profile-image.component';
|
|
13
|
+
import { CaInputComponent } from '../../../ca-input/ca-input.component';
|
|
14
|
+
// Pipes
|
|
15
|
+
import { FilterTrailerColorPipe, FilterTruckColorPipe, } from '../../../ca-filters/pipes';
|
|
16
|
+
import { DropdownLoadStatusColorPipe } from '../../../../pipes';
|
|
17
|
+
import { FilterSearchPipe } from '../../pipes/filter-search.pipe';
|
|
18
|
+
// External Libraries
|
|
19
|
+
import { SvgIconComponent } from 'angular-svg-icon';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "@angular/forms";
|
|
22
|
+
import * as i2 from "@angular/common";
|
|
23
|
+
export class CaFilterListDropdownComponent {
|
|
24
|
+
set type(value) {
|
|
25
|
+
this.setInitalType(value);
|
|
26
|
+
}
|
|
27
|
+
set list(value) {
|
|
28
|
+
this.setInitalList(value);
|
|
29
|
+
}
|
|
30
|
+
constructor(formBuilder) {
|
|
31
|
+
this.formBuilder = formBuilder;
|
|
32
|
+
this.setFilter = new EventEmitter();
|
|
33
|
+
this.caFiltersSvgRoutes = CaFiltersSvgRoutes;
|
|
34
|
+
this.loadStatusEnum = LoadStatusEnum;
|
|
35
|
+
this.srollLimitSize = 8;
|
|
36
|
+
this.selectedList = [];
|
|
37
|
+
this.unselectedList = [];
|
|
38
|
+
this.searchForm = this.formBuilder.group({
|
|
39
|
+
search: null,
|
|
40
|
+
});
|
|
41
|
+
this.sortKey = eFilterSortingKey.NAME;
|
|
42
|
+
this.directionMultiplier = 1;
|
|
43
|
+
this.initialListSize = 0;
|
|
44
|
+
this.selectedCount = 0;
|
|
45
|
+
this.activeCount = 0;
|
|
46
|
+
this._list = [];
|
|
47
|
+
// Public
|
|
48
|
+
this.selectItem = (item) => {
|
|
49
|
+
this.moveItem(item, this.unselectedList, this.selectedList);
|
|
50
|
+
};
|
|
51
|
+
this.unSelectItem = (item) => {
|
|
52
|
+
this.moveItem(item, this.selectedList, this.unselectedList);
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// Getters
|
|
56
|
+
get type() {
|
|
57
|
+
return this._type;
|
|
58
|
+
}
|
|
59
|
+
get truckOrTrailerIconPipe() {
|
|
60
|
+
return this.type === eFilterDropdownEnum.TRUCK_TYPE
|
|
61
|
+
? new FilterTruckColorPipe()
|
|
62
|
+
: new FilterTrailerColorPipe();
|
|
63
|
+
}
|
|
64
|
+
clearValues() {
|
|
65
|
+
this.emitData([]);
|
|
66
|
+
this.selectedList = [];
|
|
67
|
+
this.unselectedList = [...this._list];
|
|
68
|
+
this.selectedCount = 0;
|
|
69
|
+
this.activeCount = 0;
|
|
70
|
+
}
|
|
71
|
+
passFilterValue() {
|
|
72
|
+
this.emitData(this.selectedList.map((list) => list.id));
|
|
73
|
+
this.selectedCount = this.activeCount;
|
|
74
|
+
}
|
|
75
|
+
sortValues(sorting) {
|
|
76
|
+
this.sortKey = sorting.sortKey;
|
|
77
|
+
this.directionMultiplier = sorting.directionMultiplier;
|
|
78
|
+
}
|
|
79
|
+
emitData(list) {
|
|
80
|
+
this.setFilter.emit({
|
|
81
|
+
filterType: this.type,
|
|
82
|
+
selectedIds: list,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
updateLists() {
|
|
86
|
+
this.selectedList = this._list.filter((item) => item.selected);
|
|
87
|
+
this.unselectedList = this._list.filter((item) => !item.selected);
|
|
88
|
+
}
|
|
89
|
+
moveItem(item, fromList, toList) {
|
|
90
|
+
const index = fromList.indexOf(item);
|
|
91
|
+
if (index !== -1) {
|
|
92
|
+
fromList.splice(index, 1);
|
|
93
|
+
toList.push(item);
|
|
94
|
+
// Update references so list is updated
|
|
95
|
+
this.selectedList = [...this.selectedList];
|
|
96
|
+
this.unselectedList = [...this.unselectedList];
|
|
97
|
+
this.calculateSelectedCount();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
calculateSelectedCount() {
|
|
101
|
+
this.activeCount = this.selectedList.length;
|
|
102
|
+
}
|
|
103
|
+
setInitalList(value) {
|
|
104
|
+
if (value) {
|
|
105
|
+
// Pm and truck type don't have id so we need to map names
|
|
106
|
+
this._list = value.map((item) => ({
|
|
107
|
+
...item,
|
|
108
|
+
id: item.id ?? item.name,
|
|
109
|
+
}));
|
|
110
|
+
this.updateLists();
|
|
111
|
+
this.initialListSize = value.length;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
setInitalType(value) {
|
|
115
|
+
this._type = value;
|
|
116
|
+
this.config = FilterDropdownIconsConst[this._type];
|
|
117
|
+
}
|
|
118
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaFilterListDropdownComponent, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
119
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaFilterListDropdownComponent, isStandalone: true, selector: "app-ca-filter-list-dropdown", inputs: { type: "type", list: "list" }, outputs: { setFilter: "setFilter" }, ngImport: i0, template: "<app-ca-filter-dropdown\n [type]=\"type\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues()\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\n>\n @let isTruck = type === 'TruckType';\n @let isTrailer = type === 'TrailerType';\n @let isPm = type === 'Pm';\n @let isService = type === 'Service';\n @let isTruckOrTrailer = isTruck || isTrailer;\n @let hasLeftIcon = isPm || isService;\n <ng-template #bodyTemplate>\n @if (\n initialListSize > srollLimitSize &&\n config &&\n config.search &&\n config.formFieldConfig\n ) {\n <div [formGroup]=\"searchForm\">\n <app-ca-input\n formControlName=\"search\"\n [inputConfig]=\"config.formFieldConfig\"\n ></app-ca-input>\n </div>\n }\n <div\n class=\"filter-dropdown-list\"\n [class.ca-scroll-bar]=\"initialListSize > srollLimitSize\"\n >\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n @let searchString = searchForm.get('search')?.value;\n\n <!-- Selected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n selectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n clickFn: unSelectItem,\n selectedList: true,\n }\n \"\n ></ng-container>\n\n <!-- Unselected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n unselectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n clickFn: selectItem,\n selectedList: false,\n }\n \"\n ></ng-container>\n </div>\n </ng-template>\n\n <ng-template\n #listTemplate\n let-items=\"items\"\n let-clickFn=\"clickFn\"\n let-isSelectedList=\"selectedList\"\n >\n @if (items.length) {\n <div class=\"d-flex flex-column gap-xs mb-1 margin-t-4\">\n @for (item of items; track $index) {\n <div\n class=\"filter-dropdown-list-item padding-4 br-2 d-flex justify-content-between align-items-center c-pointer\"\n [ngClass]=\"{\n 'filter-dropdown-list-item-hover': isSelectedList,\n\n 'svg-hover-grey-4 svg-fill-muted':\n hasLeftIcon && !isSelectedList,\n\n 'svg-hover-blue-19 svg-fill-blue-8':\n hasLeftIcon && isSelectedList,\n }\"\n (click)=\"clickFn(item)\"\n >\n <div\n class=\"d-flex align-items-center w-100 margin-r-4\"\n [class.justify-content-between]=\"isTruckOrTrailer\"\n >\n @if (type === 'Dispatcher') {\n <app-ca-profile-image\n [indx]=\"$index\"\n [textShortName]=\"item.name\"\n [avatarImg]=\"item.avatar?.url\"\n [size]=\"'small'\"\n class=\"margin-r-4\"\n ></app-ca-profile-image>\n } @else if (type === 'Status') {\n <div\n [ngStyle]=\"\n loadStatusEnum[item.id!]\n | dropdownLoadStatusColor: true\n \"\n class=\"filter-dropdown-list-item-status-circle br-circle margin-r-4\"\n ></div>\n } @else if (hasLeftIcon) {\n <svg-icon\n [src]=\"item.icon\"\n class=\"margin-r-4 svg-size-18\"\n ></svg-icon>\n }\n\n <div\n class=\"text-color-white text-size-14\"\n [class.ca-font-extra-bold]=\"isSelectedList\"\n [class.text-uppercase]=\"type === 'Status'\"\n >\n {{ item.name }}\n </div>\n\n @if (isTruckOrTrailer) {\n @if (item.icon) {\n <div\n class=\"filter-dropdown-list-item-icons\"\n [ngStyle]=\"{\n '--svg-fill-color':\n truckOrTrailerIconPipe.transform(\n item.name\n ),\n }\"\n >\n <svg-icon [src]=\"item.icon\"></svg-icon>\n </div>\n }\n }\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n count: item.count,\n isSelected: isSelectedList,\n }\n \"\n ></ng-container>\n\n @if (isSelectedList) {\n <svg-icon\n [src]=\"caFiltersSvgRoutes.removeSelectedValue\"\n class=\"svg-size-10 svg-fill-red-10 filter-dropdown-list-item-remove justify-content-center filter-dropdown-list-badge\"\n ></svg-icon>\n }\n </div>\n }\n </div>\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n }\n </ng-template>\n\n <!-- Divider Template -->\n <ng-template #divider>\n <div class=\"background-black br-2 height-1\"></div>\n </ng-template>\n\n <ng-template #itemTemplate let-count=\"count\" let-isSelected=\"isSelected\">\n <!-- Count can be undefined for example on assign dispatch load list, or it can be 0 as well for some dispatchers -->\n @if (count !== undefined) {\n <div\n class=\"br-10 filter-dropdown-list-item-count text-size-11 ca-font-semi-bold padding-y-2 padding-x-5 d-flex align-items-center justify-content-center filter-dropdown-list-badge\"\n [ngClass]=\"\n isSelected\n ? 'background-blue-14 text-color-white'\n : 'background-black text-color-white-4'\n \"\n >\n {{ count }}\n </div>\n }\n </ng-template>\n</app-ca-filter-dropdown>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CaInputComponent, selector: "app-ca-input", inputs: ["inputConfig", "dateTimePopover", "incorrectValue", "selectedDropdownLabelColor", "template"], outputs: ["handleToggleDropdownOptions", "incorrectEvent", "blurInput", "focusInput", "change", "commandEvent", "clear", "showHideDropdown", "dropDownKeyNavigation"] }, { kind: "component", type: CaFilterDropdownComponent, selector: "app-ca-filter-dropdown", inputs: ["type", "config", "bodyTemplate", "isFormChanged", "appliedFiltersCount", "customTitle", "customCancelButton"], outputs: ["setFilter", "handleFiltersClear", "sorting"] }, { kind: "component", type: CaProfileImageComponent, selector: "app-ca-profile-image", inputs: ["indx", "avatarImg", "avatarColor", "textShortName", "name", "isRound", "size", "height", "fontSize", "isHoverEffect"] }, { kind: "component", type: SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "pipe", type: DropdownLoadStatusColorPipe, name: "dropdownLoadStatusColor" }, { kind: "pipe", type: FilterSearchPipe, name: "filterSearch" }] }); }
|
|
120
|
+
}
|
|
121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaFilterListDropdownComponent, decorators: [{
|
|
122
|
+
type: Component,
|
|
123
|
+
args: [{ selector: 'app-ca-filter-list-dropdown', standalone: true, imports: [
|
|
124
|
+
CommonModule,
|
|
125
|
+
ReactiveFormsModule,
|
|
126
|
+
CaInputComponent,
|
|
127
|
+
CaFilterDropdownComponent,
|
|
128
|
+
CaProfileImageComponent,
|
|
129
|
+
SvgIconComponent,
|
|
130
|
+
DropdownLoadStatusColorPipe,
|
|
131
|
+
FilterTruckColorPipe,
|
|
132
|
+
FilterTrailerColorPipe,
|
|
133
|
+
FilterSearchPipe,
|
|
134
|
+
], template: "<app-ca-filter-dropdown\n [type]=\"type\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues()\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\n>\n @let isTruck = type === 'TruckType';\n @let isTrailer = type === 'TrailerType';\n @let isPm = type === 'Pm';\n @let isService = type === 'Service';\n @let isTruckOrTrailer = isTruck || isTrailer;\n @let hasLeftIcon = isPm || isService;\n <ng-template #bodyTemplate>\n @if (\n initialListSize > srollLimitSize &&\n config &&\n config.search &&\n config.formFieldConfig\n ) {\n <div [formGroup]=\"searchForm\">\n <app-ca-input\n formControlName=\"search\"\n [inputConfig]=\"config.formFieldConfig\"\n ></app-ca-input>\n </div>\n }\n <div\n class=\"filter-dropdown-list\"\n [class.ca-scroll-bar]=\"initialListSize > srollLimitSize\"\n >\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n @let searchString = searchForm.get('search')?.value;\n\n <!-- Selected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n selectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n clickFn: unSelectItem,\n selectedList: true,\n }\n \"\n ></ng-container>\n\n <!-- Unselected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n unselectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n clickFn: selectItem,\n selectedList: false,\n }\n \"\n ></ng-container>\n </div>\n </ng-template>\n\n <ng-template\n #listTemplate\n let-items=\"items\"\n let-clickFn=\"clickFn\"\n let-isSelectedList=\"selectedList\"\n >\n @if (items.length) {\n <div class=\"d-flex flex-column gap-xs mb-1 margin-t-4\">\n @for (item of items; track $index) {\n <div\n class=\"filter-dropdown-list-item padding-4 br-2 d-flex justify-content-between align-items-center c-pointer\"\n [ngClass]=\"{\n 'filter-dropdown-list-item-hover': isSelectedList,\n\n 'svg-hover-grey-4 svg-fill-muted':\n hasLeftIcon && !isSelectedList,\n\n 'svg-hover-blue-19 svg-fill-blue-8':\n hasLeftIcon && isSelectedList,\n }\"\n (click)=\"clickFn(item)\"\n >\n <div\n class=\"d-flex align-items-center w-100 margin-r-4\"\n [class.justify-content-between]=\"isTruckOrTrailer\"\n >\n @if (type === 'Dispatcher') {\n <app-ca-profile-image\n [indx]=\"$index\"\n [textShortName]=\"item.name\"\n [avatarImg]=\"item.avatar?.url\"\n [size]=\"'small'\"\n class=\"margin-r-4\"\n ></app-ca-profile-image>\n } @else if (type === 'Status') {\n <div\n [ngStyle]=\"\n loadStatusEnum[item.id!]\n | dropdownLoadStatusColor: true\n \"\n class=\"filter-dropdown-list-item-status-circle br-circle margin-r-4\"\n ></div>\n } @else if (hasLeftIcon) {\n <svg-icon\n [src]=\"item.icon\"\n class=\"margin-r-4 svg-size-18\"\n ></svg-icon>\n }\n\n <div\n class=\"text-color-white text-size-14\"\n [class.ca-font-extra-bold]=\"isSelectedList\"\n [class.text-uppercase]=\"type === 'Status'\"\n >\n {{ item.name }}\n </div>\n\n @if (isTruckOrTrailer) {\n @if (item.icon) {\n <div\n class=\"filter-dropdown-list-item-icons\"\n [ngStyle]=\"{\n '--svg-fill-color':\n truckOrTrailerIconPipe.transform(\n item.name\n ),\n }\"\n >\n <svg-icon [src]=\"item.icon\"></svg-icon>\n </div>\n }\n }\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n count: item.count,\n isSelected: isSelectedList,\n }\n \"\n ></ng-container>\n\n @if (isSelectedList) {\n <svg-icon\n [src]=\"caFiltersSvgRoutes.removeSelectedValue\"\n class=\"svg-size-10 svg-fill-red-10 filter-dropdown-list-item-remove justify-content-center filter-dropdown-list-badge\"\n ></svg-icon>\n }\n </div>\n }\n </div>\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n }\n </ng-template>\n\n <!-- Divider Template -->\n <ng-template #divider>\n <div class=\"background-black br-2 height-1\"></div>\n </ng-template>\n\n <ng-template #itemTemplate let-count=\"count\" let-isSelected=\"isSelected\">\n <!-- Count can be undefined for example on assign dispatch load list, or it can be 0 as well for some dispatchers -->\n @if (count !== undefined) {\n <div\n class=\"br-10 filter-dropdown-list-item-count text-size-11 ca-font-semi-bold padding-y-2 padding-x-5 d-flex align-items-center justify-content-center filter-dropdown-list-badge\"\n [ngClass]=\"\n isSelected\n ? 'background-blue-14 text-color-white'\n : 'background-black text-color-white-4'\n \"\n >\n {{ count }}\n </div>\n }\n </ng-template>\n</app-ca-filter-dropdown>\n" }]
|
|
135
|
+
}], ctorParameters: () => [{ type: i1.UntypedFormBuilder }], propDecorators: { type: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], list: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], setFilter: [{
|
|
140
|
+
type: Output
|
|
141
|
+
}] } });
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtZmlsdGVyLWxpc3QtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtbmV3LWZpbHRlci9jb21wb25lbnRzL2NhLWZpbHRlci1saXN0LWRyb3Bkb3duL2NhLWZpbHRlci1saXN0LWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW5ldy1maWx0ZXIvY29tcG9uZW50cy9jYS1maWx0ZXItbGlzdC1kcm9wZG93bi9jYS1maWx0ZXItbGlzdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsUUFBUTtBQUNSLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFXcEUsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFELGFBQWE7QUFDYixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUMvRixPQUFP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Q3BCLHNCQUFzQjt3QkFDdEIsZ0JBQWdCO3FCQUNuQjt1RkFNRyxJQUFJO3NCQURQLEtBQUs7Z0JBTUYsSUFBSTtzQkFEUCxLQUFLO2dCQUtJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBQaXBlVHJhbnNmb3JtLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy8gRW51bXNcbmltcG9ydCB7IGVGaWx0ZXJEcm9wZG93bkVudW0sIGVGaWx0ZXJTb3J0aW5nS2V5IH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgTG9hZFN0YXR1c0VudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtcy9sb2FkLXN0YXR1cy5lbnVtJztcblxuLy8gVHlwZXMgJiBJbnRlcmZhY2VzXG5pbXBvcnQgeyBGaWx0ZXJEcm9wZG93blR5cGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgICBJRmlsdGVyQWN0aW9uLFxuICAgIElGaWx0ZXJEcm9wZG93bkNvbmZpZ3VyYXRpb24sXG4gICAgSUZpbHRlckRyb3Bkb3duTGlzdCxcbiAgICBJU29ydEVtaXQsXG59IGZyb20gJy4uLy4uL2ludGVyZmFjZSc7XG5cbi8vIENvbnN0YW50cyAmIFV0aWxzXG5pbXBvcnQgeyBDYUZpbHRlcnNTdmdSb3V0ZXMgfSBmcm9tICcuLi8uLi8uLi9jYS1maWx0ZXJzL3V0aWxzL3N2Zy1yb3V0ZXMnO1xuaW1wb3J0IHsgRmlsdGVyRHJvcGRvd25JY29uc0NvbnN0IH0gZnJvbSAnLi4vLi4vY29uc3RhbnQnO1xuXG4vLyBDb21wb25lbnRzXG5pbXBvcnQgeyBDYUZpbHRlckRyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY2EtZmlsdGVyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYVByb2ZpbGVJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLXByb2ZpbGUtaW1hZ2UvY2EtcHJvZmlsZS1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLWlucHV0L2NhLWlucHV0LmNvbXBvbmVudCc7XG5cbi8vIFBpcGVzXG5pbXBvcnQge1xuICAgIEZpbHRlclRyYWlsZXJDb2xvclBpcGUsXG4gICAgRmlsdGVyVHJ1Y2tDb2xvclBpcGUsXG59IGZyb20gJy4uLy4uLy4uL2NhLWZpbHRlcnMvcGlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25Mb2FkU3RhdHVzQ29sb3JQaXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGlwZXMnO1xuaW1wb3J0IHsgRmlsdGVyU2VhcmNoUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2ZpbHRlci1zZWFyY2gucGlwZSc7XG5cbi8vIEV4dGVybmFsIExpYnJhcmllc1xuaW1wb3J0IHsgU3ZnSWNvbkNvbXBvbmVudCB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1jYS1maWx0ZXItbGlzdC1kcm9wZG93bicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgXG4gICAgICAgIENhSW5wdXRDb21wb25lbnQsXG4gICAgICAgIENhRmlsdGVyRHJvcGRvd25Db21wb25lbnQsXG4gICAgICAgIENhUHJvZmlsZUltYWdlQ29tcG9uZW50LFxuICAgICAgICBTdmdJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIERyb3Bkb3duTG9hZFN0YXR1c0NvbG9yUGlwZSxcbiAgICAgICAgRmlsdGVyVHJ1Y2tDb2xvclBpcGUsXG4gICAgICAgIEZpbHRlclRyYWlsZXJDb2xvclBpcGUsXG4gICAgICAgIEZpbHRlclNlYXJjaFBpcGUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2EtZmlsdGVyLWxpc3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9jYS1maWx0ZXItbGlzdC1kcm9wZG93bi5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ2FGaWx0ZXJMaXN0RHJvcGRvd25Db21wb25lbnQge1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHR5cGUodmFsdWU6IEZpbHRlckRyb3Bkb3duVHlwZXMpIHtcbiAgICAgICAgdGhpcy5zZXRJbml0YWxUeXBlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBsaXN0KHZhbHVlOiBJRmlsdGVyRHJvcGRvd25MaXN0W10pIHtcbiAgICAgICAgdGhpcy5zZXRJbml0YWxMaXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgc2V0RmlsdGVyOiBFdmVudEVtaXR0ZXI8SUZpbHRlckFjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgY2FGaWx0ZXJzU3ZnUm91dGVzID0gQ2FGaWx0ZXJzU3ZnUm91dGVzO1xuICAgIHB1YmxpYyBsb2FkU3RhdHVzRW51bSA9IExvYWRTdGF0dXNFbnVtO1xuICAgIHB1YmxpYyBzcm9sbExpbWl0U2l6ZTogbnVtYmVyID0gODtcblxuICAgIHB1YmxpYyBzZWxlY3RlZExpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSA9IFtdO1xuICAgIHB1YmxpYyB1bnNlbGVjdGVkTGlzdDogSUZpbHRlckRyb3Bkb3duTGlzdFtdID0gW107XG4gICAgcHVibGljIHNlYXJjaEZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgc2VhcmNoOiBudWxsLFxuICAgIH0pO1xuICAgIHB1YmxpYyBzb3J0S2V5OiBrZXlvZiBJRmlsdGVyRHJvcGRvd25MaXN0ID0gZUZpbHRlclNvcnRpbmdLZXkuTkFNRTtcbiAgICBwdWJsaWMgZGlyZWN0aW9uTXVsdGlwbGllcjogbnVtYmVyID0gMTtcbiAgICBwdWJsaWMgaW5pdGlhbExpc3RTaXplOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBjb25maWchOiBJRmlsdGVyRHJvcGRvd25Db25maWd1cmF0aW9uO1xuICAgIFxuICAgIHB1YmxpYyBzZWxlY3RlZENvdW50OiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyBhY3RpdmVDb3VudDogbnVtYmVyID0gMDtcbiAgICBcbiAgICBwcml2YXRlIF90eXBlITogRmlsdGVyRHJvcGRvd25UeXBlczsgXG4gICAgcHJpdmF0ZSBfbGlzdDogSUZpbHRlckRyb3Bkb3duTGlzdFtdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIpIHt9XG5cbiAgICAvLyBHZXR0ZXJzXG4gICAgZ2V0IHR5cGUoKTogRmlsdGVyRHJvcGRvd25UeXBlcyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlO1xuICAgIH1cblxuICAgIC8vIFB1YmxpY1xuICAgIHB1YmxpYyBzZWxlY3RJdGVtID0gKGl0ZW06IElGaWx0ZXJEcm9wZG93bkxpc3QpID0+IHtcbiAgICAgICAgdGhpcy5tb3ZlSXRlbShpdGVtLCB0aGlzLnVuc2VsZWN0ZWRMaXN0LCB0aGlzLnNlbGVjdGVkTGlzdCk7XG4gICAgfTtcblxuICAgIHB1YmxpYyB1blNlbGVjdEl0ZW0gPSAoaXRlbTogSUZpbHRlckRyb3Bkb3duTGlzdCkgPT4ge1xuICAgICAgICB0aGlzLm1vdmVJdGVtKGl0ZW0sIHRoaXMuc2VsZWN0ZWRMaXN0LCB0aGlzLnVuc2VsZWN0ZWRMaXN0KTtcbiAgICB9O1xuXG4gICAgcHVibGljIGdldCB0cnVja09yVHJhaWxlckljb25QaXBlKCk6IFBpcGVUcmFuc2Zvcm0ge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBlRmlsdGVyRHJvcGRvd25FbnVtLlRSVUNLX1RZUEVcbiAgICAgICAgICAgID8gbmV3IEZpbHRlclRydWNrQ29sb3JQaXBlKClcbiAgICAgICAgICAgIDogbmV3IEZpbHRlclRyYWlsZXJDb2xvclBpcGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJWYWx1ZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW1pdERhdGEoW10pO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gW107XG4gICAgICAgIHRoaXMudW5zZWxlY3RlZExpc3QgPSBbLi4udGhpcy5fbGlzdF07IFxuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnQgPSAwO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvdW50ID0gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFzc0ZpbHRlclZhbHVlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVtaXREYXRhKHRoaXMuc2VsZWN0ZWRMaXN0Lm1hcCgobGlzdCkgPT4gbGlzdC5pZCkpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnQgPSB0aGlzLmFjdGl2ZUNvdW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0VmFsdWVzKHNvcnRpbmc6IElTb3J0RW1pdCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNvcnRLZXkgPSBzb3J0aW5nLnNvcnRLZXk7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uTXVsdGlwbGllciA9IHNvcnRpbmcuZGlyZWN0aW9uTXVsdGlwbGllcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXREYXRhKGxpc3Q6IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RmlsdGVyLmVtaXQoe1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgc2VsZWN0ZWRJZHM6IGxpc3QsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTGlzdHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0ID0gdGhpcy5fbGlzdC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLnVuc2VsZWN0ZWRMaXN0ID0gdGhpcy5fbGlzdC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnNlbGVjdGVkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmVJdGVtKFxuICAgICAgICBpdGVtOiBJRmlsdGVyRHJvcGRvd25MaXN0LFxuICAgICAgICBmcm9tTGlzdDogSUZpbHRlckRyb3Bkb3duTGlzdFtdLFxuICAgICAgICB0b0xpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXVxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IGZyb21MaXN0LmluZGV4T2YoaXRlbSk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGZyb21MaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB0b0xpc3QucHVzaChpdGVtKTtcblxuICAgICAgICAgICAgLy8gVXBkYXRlIHJlZmVyZW5jZXMgc28gbGlzdCBpcyB1cGRhdGVkXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGlzdCA9IFsuLi50aGlzLnNlbGVjdGVkTGlzdF07XG4gICAgICAgICAgICB0aGlzLnVuc2VsZWN0ZWRMaXN0ID0gWy4uLnRoaXMudW5zZWxlY3RlZExpc3RdO1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVTZWxlY3RlZENvdW50KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVTZWxlY3RlZENvdW50KCkgOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVDb3VudCA9IHRoaXMuc2VsZWN0ZWRMaXN0Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEluaXRhbExpc3QodmFsdWU6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSkgOiB2b2lkICB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgLy8gUG0gYW5kIHRydWNrIHR5cGUgZG9uJ3QgaGF2ZSBpZCBzbyB3ZSBuZWVkIHRvIG1hcCBuYW1lc1xuICAgICAgICAgICAgdGhpcy5fbGlzdCA9IHZhbHVlLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkID8/IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGlzdHMoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbExpc3RTaXplID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbml0YWxUeXBlKHZhbHVlOiBGaWx0ZXJEcm9wZG93blR5cGVzKSAgOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNvbmZpZyA9IEZpbHRlckRyb3Bkb3duSWNvbnNDb25zdFt0aGlzLl90eXBlXTtcbiAgICB9XG59XG4iLCI8YXBwLWNhLWZpbHRlci1kcm9wZG93blxuICAgIFt0eXBlXT1cInR5cGVcIlxuICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICBbYm9keVRlbXBsYXRlXT1cImJvZHlUZW1wbGF0ZVwiXG4gICAgW2lzRm9ybUNoYW5nZWRdPVwiISFhY3RpdmVDb3VudFwiXG4gICAgW2FwcGxpZWRGaWx0ZXJzQ291bnRdPVwic2VsZWN0ZWRDb3VudFwiXG4gICAgKGhhbmRsZUZpbHRlcnNDbGVhcik9XCJjbGVhclZhbHVlcygpXCJcbiAgICAoc2V0RmlsdGVyKT1cInBhc3NGaWx0ZXJWYWx1ZSgpXCJcbiAgICAoc29ydGluZyk9XCJzb3J0VmFsdWVzKCRldmVudClcIlxuPlxuICAgIEBsZXQgaXNUcnVjayA9IHR5cGUgPT09ICdUcnVja1R5cGUnO1xuICAgIEBsZXQgaXNUcmFpbGVyID0gdHlwZSA9PT0gJ1RyYWlsZXJUeXBlJztcbiAgICBAbGV0IGlzUG0gPSB0eXBlID09PSAnUG0nO1xuICAgIEBsZXQgaXNTZXJ2aWNlID0gdHlwZSA9PT0gJ1NlcnZpY2UnO1xuICAgIEBsZXQgaXNUcnVja09yVHJhaWxlciA9IGlzVHJ1Y2sgfHwgaXNUcmFpbGVyO1xuICAgIEBsZXQgaGFzTGVmdEljb24gPSBpc1BtIHx8IGlzU2VydmljZTtcbiAgICA8bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT5cbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgIGluaXRpYWxMaXN0U2l6ZSA+IHNyb2xsTGltaXRTaXplICYmXG4gICAgICAgICAgICBjb25maWcgJiZcbiAgICAgICAgICAgIGNvbmZpZy5zZWFyY2ggJiZcbiAgICAgICAgICAgIGNvbmZpZy5mb3JtRmllbGRDb25maWdcbiAgICAgICAgKSB7XG4gICAgICAgICAgICA8ZGl2IFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybVwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImNvbmZpZy5mb3JtRmllbGRDb25maWdcIlxuICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3RcIlxuICAgICAgICAgICAgW2NsYXNzLmNhLXNjcm9sbC1iYXJdPVwiaW5pdGlhbExpc3RTaXplID4gc3JvbGxMaW1pdFNpemVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGl2aWRlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgQGxldCBzZWFyY2hTdHJpbmcgPSBzZWFyY2hGb3JtLmdldCgnc2VhcmNoJyk/LnZhbHVlO1xuXG4gICAgICAgICAgICA8IS0tIFNlbGVjdGVkIExpc3QgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgbGlzdFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpbHRlclNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaFN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICduYW1lJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXJlY3Rpb25NdWx0aXBsaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tGbjogdW5TZWxlY3RJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPCEtLSBVbnNlbGVjdGVkIExpc3QgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgbGlzdFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNlbGVjdGVkTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyU2VhcmNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ25hbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydEtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRpcmVjdGlvbk11bHRpcGxpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGlja0ZuOiBzZWxlY3RJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgI2xpc3RUZW1wbGF0ZVxuICAgICAgICBsZXQtaXRlbXM9XCJpdGVtc1wiXG4gICAgICAgIGxldC1jbGlja0ZuPVwiY2xpY2tGblwiXG4gICAgICAgIGxldC1pc1NlbGVjdGVkTGlzdD1cInNlbGVjdGVkTGlzdFwiXG4gICAgPlxuICAgICAgICBAaWYgKGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAteHMgbWItMSBtYXJnaW4tdC00XCI+XG4gICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbSBwYWRkaW5nLTQgYnItMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGMtcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0taG92ZXInOiBpc1NlbGVjdGVkTGlzdCxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdmctaG92ZXItZ3JleS00IHN2Zy1maWxsLW11dGVkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGVmdEljb24gJiYgIWlzU2VsZWN0ZWRMaXN0LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N2Zy1ob3Zlci1ibHVlLTE5IHN2Zy1maWxsLWJsdWUtOCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0xlZnRJY29uICYmIGlzU2VsZWN0ZWRMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tGbihpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgbWFyZ2luLXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmp1c3RpZnktY29udGVudC1iZXR3ZWVuXT1cImlzVHJ1Y2tPclRyYWlsZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAodHlwZSA9PT0gJ0Rpc3BhdGNoZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtcHJvZmlsZS1pbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZHhdPVwiJGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0U2hvcnROYW1lXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXZhdGFySW1nXT1cIml0ZW0uYXZhdGFyPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hcmdpbi1yLTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtcHJvZmlsZS1pbWFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmICh0eXBlID09PSAnU3RhdHVzJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkU3RhdHVzRW51bVtpdGVtLmlkIV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkcm9wZG93bkxvYWRTdGF0dXNDb2xvcjogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbS1zdGF0dXMtY2lyY2xlIGJyLWNpcmNsZSBtYXJnaW4tci00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGhhc0xlZnRJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4tci00IHN2Zy1zaXplLTE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtY29sb3Itd2hpdGUgdGV4dC1zaXplLTE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNhLWZvbnQtZXh0cmEtYm9sZF09XCJpc1NlbGVjdGVkTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LXVwcGVyY2FzZV09XCJ0eXBlID09PSAnU3RhdHVzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNUcnVja09yVHJhaWxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbS1pY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1zdmctZmlsbC1jb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVja09yVHJhaWxlckljb25QaXBlLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uIFtzcmNdPVwiaXRlbS5pY29uXCI+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudDogaXRlbS5jb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ6IGlzU2VsZWN0ZWRMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpc1NlbGVjdGVkTGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImNhRmlsdGVyc1N2Z1JvdXRlcy5yZW1vdmVTZWxlY3RlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdmctc2l6ZS0xMCBzdmctZmlsbC1yZWQtMTAgZmlsdGVyLWRyb3Bkb3duLWxpc3QtaXRlbS1yZW1vdmUganVzdGlmeS1jb250ZW50LWNlbnRlciBmaWx0ZXItZHJvcGRvd24tbGlzdC1iYWRnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpdmlkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIERpdmlkZXIgVGVtcGxhdGUgLS0+XG4gICAgPG5nLXRlbXBsYXRlICNkaXZpZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZC1ibGFjayBici0yIGhlaWdodC0xXCI+PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlIGxldC1jb3VudD1cImNvdW50XCIgbGV0LWlzU2VsZWN0ZWQ9XCJpc1NlbGVjdGVkXCI+XG4gICAgICAgIDwhLS0gQ291bnQgY2FuIGJlIHVuZGVmaW5lZCBmb3IgZXhhbXBsZSBvbiBhc3NpZ24gZGlzcGF0Y2ggbG9hZCBsaXN0LCBvciBpdCBjYW4gYmUgMCBhcyB3ZWxsIGZvciBzb21lIGRpc3BhdGNoZXJzIC0tPlxuICAgICAgICBAaWYgKGNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJyLTEwIGZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0tY291bnQgdGV4dC1zaXplLTExIGNhLWZvbnQtc2VtaS1ib2xkIHBhZGRpbmcteS0yIHBhZGRpbmcteC01IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmaWx0ZXItZHJvcGRvd24tbGlzdC1iYWRnZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JhY2tncm91bmQtYmx1ZS0xNCB0ZXh0LWNvbG9yLXdoaXRlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmFja2dyb3VuZC1ibGFjayB0ZXh0LWNvbG9yLXdoaXRlLTQnXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBjb3VudCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9hcHAtY2EtZmlsdGVyLWRyb3Bkb3duPlxuIl19
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
// Components
|
|
5
|
+
import { CaFilterDropdownComponent } from '../../ca-filter-dropdown.component';
|
|
6
|
+
import { SvgIconComponent } from 'angular-svg-icon';
|
|
7
|
+
import { CaInputComponent } from '../../../ca-input/ca-input.component';
|
|
8
|
+
// Enums
|
|
9
|
+
import { eFilterDropdownEnum, eFilterSortingKey } from '../../enums';
|
|
10
|
+
// Svg routes
|
|
11
|
+
import { CaFiltersSvgRoutes } from '../../../ca-filters/utils/svg-routes';
|
|
12
|
+
// Const
|
|
13
|
+
import { FilterDropdownIconsConst } from '../../constant';
|
|
14
|
+
// Config
|
|
15
|
+
import { FilterDropdownFields } from '../../utils/configs';
|
|
16
|
+
// Pipes
|
|
17
|
+
import { FilterSearchPipe } from '../../pipes/filter-search.pipe';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "@angular/forms";
|
|
20
|
+
import * as i2 from "@angular/common";
|
|
21
|
+
export class CaFilterStateDropdownComponent {
|
|
22
|
+
set states(value) {
|
|
23
|
+
this.mapInitalStates(value);
|
|
24
|
+
}
|
|
25
|
+
constructor(formBuilder) {
|
|
26
|
+
this.formBuilder = formBuilder;
|
|
27
|
+
this.setFilter = new EventEmitter();
|
|
28
|
+
this.sortKey = eFilterSortingKey.NAME;
|
|
29
|
+
this.directionMultiplier = 1;
|
|
30
|
+
this.config = FilterDropdownIconsConst.State;
|
|
31
|
+
this.eFilterDropdownEnum = eFilterDropdownEnum;
|
|
32
|
+
this.caFiltersSvgRoutes = CaFiltersSvgRoutes;
|
|
33
|
+
this.selectedList = [];
|
|
34
|
+
this.unselectedList = [];
|
|
35
|
+
this.searchForm = this.formBuilder.group({
|
|
36
|
+
search: null,
|
|
37
|
+
});
|
|
38
|
+
this.stateSearchForm = FilterDropdownFields.stateSearch;
|
|
39
|
+
this.selectedCount = 0;
|
|
40
|
+
this.activeCount = 0;
|
|
41
|
+
this._states = [];
|
|
42
|
+
this.selectItem = (item, countryName) => {
|
|
43
|
+
const country = this.states.find((state) => state.country === countryName);
|
|
44
|
+
if (country) {
|
|
45
|
+
country.unselectedList = country.unselectedList.filter((_country) => _country !== item);
|
|
46
|
+
country.selectedList = [...country.selectedList, item];
|
|
47
|
+
}
|
|
48
|
+
this.calculateSelectedCount();
|
|
49
|
+
};
|
|
50
|
+
this.unSelectItem = (item, countryName) => {
|
|
51
|
+
const country = this.states.find((state) => state.country === countryName);
|
|
52
|
+
if (country) {
|
|
53
|
+
country.selectedList = country.selectedList.filter((_country) => _country !== item);
|
|
54
|
+
country.unselectedList = [...country.unselectedList, item];
|
|
55
|
+
}
|
|
56
|
+
this.calculateSelectedCount();
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
get states() {
|
|
60
|
+
return this._states;
|
|
61
|
+
}
|
|
62
|
+
calculateSelectedCount() {
|
|
63
|
+
this.activeCount = this._states.reduce((sum, state) => sum + state.selectedList.length, 0);
|
|
64
|
+
}
|
|
65
|
+
clearValues() {
|
|
66
|
+
this.emitData([]);
|
|
67
|
+
this.states = this.states.map((state) => {
|
|
68
|
+
return {
|
|
69
|
+
...state,
|
|
70
|
+
selectedList: [],
|
|
71
|
+
unselectedList: state.initalList,
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
this.selectedCount = 0;
|
|
75
|
+
this.activeCount = 0;
|
|
76
|
+
}
|
|
77
|
+
passFilterValue() {
|
|
78
|
+
const states = this.states
|
|
79
|
+
.map((country) => country.selectedList
|
|
80
|
+
.map((state) => state.stateShortName)
|
|
81
|
+
.filter((shortName) => Boolean(shortName)))
|
|
82
|
+
.flat();
|
|
83
|
+
this.emitData(states);
|
|
84
|
+
this.selectedCount = this.activeCount;
|
|
85
|
+
}
|
|
86
|
+
sortValues(sorting) {
|
|
87
|
+
this.sortKey = sorting.sortKey;
|
|
88
|
+
this.directionMultiplier = sorting.directionMultiplier;
|
|
89
|
+
}
|
|
90
|
+
emitData(selectedStates) {
|
|
91
|
+
this.setFilter.emit({
|
|
92
|
+
filterType: eFilterDropdownEnum.STATE,
|
|
93
|
+
selectedStates,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
mapInitalStates(value) {
|
|
97
|
+
this._states = value.map((country) => {
|
|
98
|
+
const states = country.states.map((state, index) => ({
|
|
99
|
+
stateShortName: state.stateShortName,
|
|
100
|
+
name: state.stateName || state.stateName,
|
|
101
|
+
count: state.count,
|
|
102
|
+
selected: false,
|
|
103
|
+
id: index,
|
|
104
|
+
}));
|
|
105
|
+
return {
|
|
106
|
+
...country,
|
|
107
|
+
unselectedList: states,
|
|
108
|
+
selectedList: [],
|
|
109
|
+
initialList: [...states],
|
|
110
|
+
};
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaFilterStateDropdownComponent, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
114
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CaFilterStateDropdownComponent, isStandalone: true, selector: "app-ca-filter-state-dropdown", inputs: { states: "states" }, outputs: { setFilter: "setFilter" }, ngImport: i0, template: "<app-ca-filter-dropdown\n [type]=\"eFilterDropdownEnum.STATE\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues()\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\n>\n <ng-template #bodyTemplate>\n @let searchString = searchForm.get('search')?.value;\n\n <div [formGroup]=\"searchForm\">\n <app-ca-input\n formControlName=\"search\"\n [inputConfig]=\"stateSearchForm\"\n ></app-ca-input>\n </div>\n\n <div class=\"filter-dropdown-list padding-x-4\">\n @for (country of states; track $index) {\n @if (country.selectedList.length) {\n <p\n class=\"text-color-white text-size-11 ca-font-bold margin-t-6\"\n >\n {{ country.country }}\n </p>\n <!-- Selected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n country.selectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n country: country.country,\n clickFn: unSelectItem,\n selectedList: true,\n }\n \"\n ></ng-container>\n }\n }\n\n @for (country of states; track $index) {\n @if (country.unselectedList.length) {\n <p\n class=\"text-color-white text-size-11 ca-font-bold margin-t-6\"\n >\n {{ country.country }}\n </p>\n <!-- Unselected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n country.unselectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n country: country.country,\n clickFn: selectItem,\n selectedList: false,\n }\n \"\n ></ng-container>\n }\n }\n </div>\n </ng-template>\n\n <ng-template\n #listTemplate\n let-items=\"items\"\n let-country=\"country\"\n let-clickFn=\"clickFn\"\n let-isSelectedList=\"selectedList\"\n >\n @if (items.length) {\n <div class=\"d-flex flex-column gap-xs mb-1 margin-t-4\">\n @for (item of items; track $index) {\n <div\n class=\"filter-dropdown-list-item padding-4 br-2 d-flex justify-content-between align-items-center c-pointer\"\n [ngClass]=\"{\n 'filter-dropdown-list-item-hover': isSelectedList,\n }\"\n (click)=\"clickFn(item, country)\"\n >\n <div class=\"d-flex align-items-center w-100 margin-r-4\">\n <div\n class=\"margin-r-4 br-1 ca-font-extra-bold text-shortName text-center\"\n [ngClass]=\"\n isSelectedList\n ? 'background-blue-13 text-color-blue-16'\n : 'background-black text-color-white-4'\n \"\n >\n {{ item.stateShortName }}\n </div>\n <div\n class=\"text-color-white text-size-14\"\n [class.ca-font-extra-bold]=\"isSelectedList\"\n >\n {{ item.name }}\n </div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n count: item.count,\n isSelected: isSelectedList,\n }\n \"\n ></ng-container>\n\n @if (isSelectedList) {\n <svg-icon\n [src]=\"caFiltersSvgRoutes.removeSelectedValue\"\n class=\"svg-size-10 svg-fill-red-10 filter-dropdown-list-item-remove justify-content-center filter-dropdown-list-badge\"\n ></svg-icon>\n }\n </div>\n }\n </div>\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n }\n </ng-template>\n\n <!-- Divider Template -->\n <ng-template #divider>\n <div class=\"background-black br-2 height-1\"></div>\n </ng-template>\n\n <ng-template #itemTemplate let-count=\"count\" let-isSelected=\"isSelected\">\n <!-- Count can be undefined for example on assign dispatch load list, or it can be 0 as well for some dispatchers -->\n @if (count !== undefined) {\n <div\n class=\"br-10 filter-dropdown-list-item-count text-size-11 ca-font-semi-bold padding-y-2 padding-x-5 d-flex align-items-center justify-content-center filter-dropdown-list-badge\"\n [ngClass]=\"\n isSelected\n ? 'background-blue-14 text-color-white'\n : 'background-black text-color-white-4'\n \"\n >\n {{ count }}\n </div>\n }\n </ng-template>\n</app-ca-filter-dropdown>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background:#66921833!important;color:#e9effd!important}.text-color-blue-16::selection{background:#66921833!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background:#ed929233!important;color:#ed9292!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{color:#fff!important;background:#fff3!important}.text-color-white::selection{color:#fff!important;background:#fff3!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#fff!important;background:#fff3!important}.text-color-white-2::selection{color:#fff!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.svg-fill-black svg path{fill:#424242!important}.svg-fill-white svg path{fill:#fff!important}.svg-fill-white-2 svg path{fill:#fff!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-8 svg path{fill:#6692f1!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-17 svg path{fill:#bed0f9!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-fill-white-4 svg path{fill:#ffffffb2!important}.svg-fill-grey svg path{fill:#919191!important}.svg-fill-red-10 svg path{fill:#e66767!important}.svg-fill-green svg path{fill:#56b4ac!important}.svg-hover-white svg path{transition:all .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:all .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:all .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-10 svg path{transition:all .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#bed0f9!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-19 svg path{transition:all .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-26 svg{width:26px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-blue-13{background-color:#6692f1}.background-blue-14{background-color:#3b73ed}.background-dark-2{background-color:#91919133}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-4{padding:4px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.gap-xs{gap:2px}.height-1{height:1px}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.text-shortName{font-size:11px;height:18px;line-height:18px;width:28px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CaFilterDropdownComponent, selector: "app-ca-filter-dropdown", inputs: ["type", "config", "bodyTemplate", "isFormChanged", "appliedFiltersCount", "customTitle", "customCancelButton"], outputs: ["setFilter", "handleFiltersClear", "sorting"] }, { kind: "component", type: CaInputComponent, selector: "app-ca-input", inputs: ["inputConfig", "dateTimePopover", "incorrectValue", "selectedDropdownLabelColor", "template"], outputs: ["handleToggleDropdownOptions", "incorrectEvent", "blurInput", "focusInput", "change", "commandEvent", "clear", "showHideDropdown", "dropDownKeyNavigation"] }, { kind: "component", type: SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "pipe", type: FilterSearchPipe, name: "filterSearch" }] }); }
|
|
115
|
+
}
|
|
116
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaFilterStateDropdownComponent, decorators: [{
|
|
117
|
+
type: Component,
|
|
118
|
+
args: [{ selector: 'app-ca-filter-state-dropdown', standalone: true, imports: [
|
|
119
|
+
CommonModule,
|
|
120
|
+
ReactiveFormsModule,
|
|
121
|
+
CaFilterDropdownComponent,
|
|
122
|
+
CaInputComponent,
|
|
123
|
+
SvgIconComponent,
|
|
124
|
+
FilterSearchPipe,
|
|
125
|
+
], template: "<app-ca-filter-dropdown\n [type]=\"eFilterDropdownEnum.STATE\"\n [config]=\"config\"\n [bodyTemplate]=\"bodyTemplate\"\n [isFormChanged]=\"!!activeCount\"\n [appliedFiltersCount]=\"selectedCount\"\n (handleFiltersClear)=\"clearValues()\"\n (setFilter)=\"passFilterValue()\"\n (sorting)=\"sortValues($event)\"\n>\n <ng-template #bodyTemplate>\n @let searchString = searchForm.get('search')?.value;\n\n <div [formGroup]=\"searchForm\">\n <app-ca-input\n formControlName=\"search\"\n [inputConfig]=\"stateSearchForm\"\n ></app-ca-input>\n </div>\n\n <div class=\"filter-dropdown-list padding-x-4\">\n @for (country of states; track $index) {\n @if (country.selectedList.length) {\n <p\n class=\"text-color-white text-size-11 ca-font-bold margin-t-6\"\n >\n {{ country.country }}\n </p>\n <!-- Selected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n country.selectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n country: country.country,\n clickFn: unSelectItem,\n selectedList: true,\n }\n \"\n ></ng-container>\n }\n }\n\n @for (country of states; track $index) {\n @if (country.unselectedList.length) {\n <p\n class=\"text-color-white text-size-11 ca-font-bold margin-t-6\"\n >\n {{ country.country }}\n </p>\n <!-- Unselected List -->\n <ng-container\n *ngTemplateOutlet=\"\n listTemplate;\n context: {\n items:\n country.unselectedList\n | filterSearch\n : searchString\n : 'name'\n : sortKey\n : directionMultiplier,\n country: country.country,\n clickFn: selectItem,\n selectedList: false,\n }\n \"\n ></ng-container>\n }\n }\n </div>\n </ng-template>\n\n <ng-template\n #listTemplate\n let-items=\"items\"\n let-country=\"country\"\n let-clickFn=\"clickFn\"\n let-isSelectedList=\"selectedList\"\n >\n @if (items.length) {\n <div class=\"d-flex flex-column gap-xs mb-1 margin-t-4\">\n @for (item of items; track $index) {\n <div\n class=\"filter-dropdown-list-item padding-4 br-2 d-flex justify-content-between align-items-center c-pointer\"\n [ngClass]=\"{\n 'filter-dropdown-list-item-hover': isSelectedList,\n }\"\n (click)=\"clickFn(item, country)\"\n >\n <div class=\"d-flex align-items-center w-100 margin-r-4\">\n <div\n class=\"margin-r-4 br-1 ca-font-extra-bold text-shortName text-center\"\n [ngClass]=\"\n isSelectedList\n ? 'background-blue-13 text-color-blue-16'\n : 'background-black text-color-white-4'\n \"\n >\n {{ item.stateShortName }}\n </div>\n <div\n class=\"text-color-white text-size-14\"\n [class.ca-font-extra-bold]=\"isSelectedList\"\n >\n {{ item.name }}\n </div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n count: item.count,\n isSelected: isSelectedList,\n }\n \"\n ></ng-container>\n\n @if (isSelectedList) {\n <svg-icon\n [src]=\"caFiltersSvgRoutes.removeSelectedValue\"\n class=\"svg-size-10 svg-fill-red-10 filter-dropdown-list-item-remove justify-content-center filter-dropdown-list-badge\"\n ></svg-icon>\n }\n </div>\n }\n </div>\n <ng-container *ngTemplateOutlet=\"divider\"></ng-container>\n }\n </ng-template>\n\n <!-- Divider Template -->\n <ng-template #divider>\n <div class=\"background-black br-2 height-1\"></div>\n </ng-template>\n\n <ng-template #itemTemplate let-count=\"count\" let-isSelected=\"isSelected\">\n <!-- Count can be undefined for example on assign dispatch load list, or it can be 0 as well for some dispatchers -->\n @if (count !== undefined) {\n <div\n class=\"br-10 filter-dropdown-list-item-count text-size-11 ca-font-semi-bold padding-y-2 padding-x-5 d-flex align-items-center justify-content-center filter-dropdown-list-badge\"\n [ngClass]=\"\n isSelected\n ? 'background-blue-14 text-color-white'\n : 'background-black text-color-white-4'\n \"\n >\n {{ count }}\n </div>\n }\n </ng-template>\n</app-ca-filter-dropdown>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background:#42424233!important;color:#424242!important}.text-color-black::selection{background:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background:#91919133!important;color:#919191!important}.text-color-muted::selection{background:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background:#56b4ac33!important;color:#56b4ac!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-13::selection{background:#66921833!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background:#66921833!important;color:#e9effd!important}.text-color-blue-16::selection{background:#66921833!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background:#e6676733!important;color:#e66767!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background:#ed929233!important;color:#ed9292!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{color:#ccc!important;background:#aaa3!important}.text-color-light-grey-6::selection{color:#ccc!important;background:#aaa3!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{color:#fff!important;background:#fff3!important}.text-color-white::selection{color:#fff!important;background:#fff3!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{color:#fff!important;background:#fff3!important}.text-color-white-2::selection{color:#fff!important;background:#fff3!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{color:#ffffffb2!important;background:#fff3!important}.text-color-white-4::selection{color:#ffffffb2!important;background:#fff3!important}.text-color-dark-grey{color:#6c6c6c!important}.text-color-dark-grey::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-dark-grey::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw6-2::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-bw-9::selection{color:#6c6c6c!important;background:#6c6c6c33!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey::selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{color:#919191!important;background:#91919133!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{color:#919191!important;background:#91919133!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.svg-fill-black svg path{fill:#424242!important}.svg-fill-white svg path{fill:#fff!important}.svg-fill-white-2 svg path{fill:#fff!important}.svg-fill-muted svg path{fill:#919191!important}.svg-fill-bw-9 svg path{fill:#dadada!important}.svg-fill-light-grey-2 svg path{fill:#aaa!important}.svg-fill-light-grey-6 svg path{fill:#ccc!important}.svg-fill-blue-8 svg path{fill:#6692f1!important}.svg-fill-blue-13 svg path{fill:#6692f1!important}.svg-fill-blue-17 svg path{fill:#bed0f9!important}.svg-fill-blue-19 svg path{fill:#92b1f5!important}.svg-fill-blue-26 svg path{fill:#4dc5eb!important}.svg-fill-white-4 svg path{fill:#ffffffb2!important}.svg-fill-grey svg path{fill:#919191!important}.svg-fill-red-10 svg path{fill:#e66767!important}.svg-fill-green svg path{fill:#56b4ac!important}.svg-hover-white svg path{transition:all .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:all .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:all .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:all .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:all .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-10 svg path{transition:all .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#bed0f9!important}.svg-hover-blue-15 svg path{transition:all .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-19 svg path{transition:all .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:all .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:all .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:all .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-26 svg{width:26px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-blue-13{background-color:#6692f1}.background-blue-14{background-color:#3b73ed}.background-dark-2{background-color:#91919133}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-4{padding:4px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.gap-xs{gap:2px}.height-1{height:1px}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.text-shortName{font-size:11px;height:18px;line-height:18px;width:28px}\n"] }]
|
|
126
|
+
}], ctorParameters: () => [{ type: i1.UntypedFormBuilder }], propDecorators: { states: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], setFilter: [{
|
|
129
|
+
type: Output
|
|
130
|
+
}] } });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtZmlsdGVyLXN0YXRlLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW5ldy1maWx0ZXIvY29tcG9uZW50cy9jYS1maWx0ZXItc3RhdGUtZHJvcGRvd24vY2EtZmlsdGVyLXN0YXRlLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLW5ldy1maWx0ZXIvY29tcG9uZW50cy9jYS1maWx0ZXItc3RhdGUtZHJvcGRvd24vY2EtZmlsdGVyLXN0YXRlLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxhQUFhO0FBQ2IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFeEUsUUFBUTtBQUNSLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVdyRSxhQUFhO0FBQ2IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFMUUsUUFBUTtBQUNSLE9BQU8sRUFBRyx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixD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ZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8vIENvbXBvbmVudHNcbmltcG9ydCB7IENhRmlsdGVyRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jYS1maWx0ZXItZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IFN2Z0ljb25Db21wb25lbnQgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcbmltcG9ydCB7IENhSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1pbnB1dC9jYS1pbnB1dC5jb21wb25lbnQnO1xuXG4vLyBFbnVtc1xuaW1wb3J0IHsgZUZpbHRlckRyb3Bkb3duRW51bSwgZUZpbHRlclNvcnRpbmdLZXkgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5cbi8vIEludGVyZmFjZVxuaW1wb3J0IHtcbiAgICBJRmlsdGVyRHJvcGRvd25MaXN0LFxuICAgIElDb3VudHJ5LFxuICAgIElGaWx0ZXJBY3Rpb24sXG4gICAgSVNvcnRFbWl0LFxuICAgIElTdGF0ZSxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlJztcblxuLy8gU3ZnIHJvdXRlc1xuaW1wb3J0IHsgQ2FGaWx0ZXJzU3ZnUm91dGVzIH0gZnJvbSAnLi4vLi4vLi4vY2EtZmlsdGVycy91dGlscy9zdmctcm91dGVzJztcblxuLy8gQ29uc3RcbmltcG9ydCB7ICBGaWx0ZXJEcm9wZG93bkljb25zQ29uc3QgfSBmcm9tICcuLi8uLi9jb25zdGFudCc7XG5cbi8vIENvbmZpZ1xuaW1wb3J0IHsgIEZpbHRlckRyb3Bkb3duRmllbGRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlncyc7XG5cbi8vIFBpcGVzXG5pbXBvcnQgeyBGaWx0ZXJTZWFyY2hQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvZmlsdGVyLXNlYXJjaC5waXBlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtY2EtZmlsdGVyLXN0YXRlLWRyb3Bkb3duJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBDYUZpbHRlckRyb3Bkb3duQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0Q29tcG9uZW50LFxuICAgICAgICBTdmdJY29uQ29tcG9uZW50LFxuICAgICAgICBGaWx0ZXJTZWFyY2hQaXBlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLWZpbHRlci1zdGF0ZS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2NhLWZpbHRlci1zdGF0ZS1kcm9wZG93bi5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIENhRmlsdGVyU3RhdGVEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBzZXQgc3RhdGVzKHZhbHVlOiBJQ291bnRyeVtdKSB7XG4gICAgICAgIHRoaXMubWFwSW5pdGFsU3RhdGVzKHZhbHVlKTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgc2V0RmlsdGVyOiBFdmVudEVtaXR0ZXI8SUZpbHRlckFjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwdWJsaWMgc29ydEtleToga2V5b2YgSUZpbHRlckRyb3Bkb3duTGlzdCA9IGVGaWx0ZXJTb3J0aW5nS2V5Lk5BTUU7XG4gICAgcHVibGljIGRpcmVjdGlvbk11bHRpcGxpZXI6IG51bWJlciA9IDE7XG4gICAgcHVibGljIGNvbmZpZyA9IEZpbHRlckRyb3Bkb3duSWNvbnNDb25zdC5TdGF0ZTtcbiAgICBwdWJsaWMgZUZpbHRlckRyb3Bkb3duRW51bSA9IGVGaWx0ZXJEcm9wZG93bkVudW07XG4gICAgcHVibGljIGNhRmlsdGVyc1N2Z1JvdXRlcyA9IENhRmlsdGVyc1N2Z1JvdXRlcztcbiAgICBwdWJsaWMgc2VsZWN0ZWRMaXN0OiBJRmlsdGVyRHJvcGRvd25MaXN0W10gPSBbXTtcbiAgICBwdWJsaWMgdW5zZWxlY3RlZExpc3Q6IElGaWx0ZXJEcm9wZG93bkxpc3RbXSA9IFtdO1xuICAgIHB1YmxpYyBzZWFyY2hGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIHNlYXJjaDogbnVsbCxcbiAgICB9KTtcbiAgICBwdWJsaWMgc3RhdGVTZWFyY2hGb3JtID0gRmlsdGVyRHJvcGRvd25GaWVsZHMuc3RhdGVTZWFyY2g7XG4gICAgcHVibGljIHNlbGVjdGVkQ291bnQ6IG51bWJlciA9IDA7XG4gICAgcHVibGljIGFjdGl2ZUNvdW50OiBudW1iZXIgPSAwO1xuXG4gICAgcHJpdmF0ZSBfc3RhdGVzOiBJQ291bnRyeVtdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIpIHt9IFxuXG4gICAgZ2V0IHN0YXRlcygpOiBJQ291bnRyeVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlU2VsZWN0ZWRDb3VudCgpOiB2b2lkIHsgXG4gICAgICAgIHRoaXMuYWN0aXZlQ291bnQgPSB0aGlzLl9zdGF0ZXMucmVkdWNlKFxuICAgICAgICAgICAgKHN1bSwgc3RhdGUpID0+IHN1bSArIHN0YXRlLnNlbGVjdGVkTGlzdC5sZW5ndGgsXG4gICAgICAgICAgICAwXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEl0ZW0gPSAoaXRlbTogSUZpbHRlckRyb3Bkb3duTGlzdCwgY291bnRyeU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBjb3VudHJ5ID0gdGhpcy5zdGF0ZXMuZmluZCgoc3RhdGUpID0+IHN0YXRlLmNvdW50cnkgPT09IGNvdW50cnlOYW1lKTtcbiAgICAgICAgaWYgKGNvdW50cnkpIHtcbiAgICAgICAgICAgIGNvdW50cnkudW5zZWxlY3RlZExpc3QgPSBjb3VudHJ5LnVuc2VsZWN0ZWRMaXN0LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoX2NvdW50cnkpID0+IF9jb3VudHJ5ICE9PSBpdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY291bnRyeS5zZWxlY3RlZExpc3QgPSBbLi4uY291bnRyeS5zZWxlY3RlZExpc3QsIGl0ZW1dO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlU2VsZWN0ZWRDb3VudCgpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgdW5TZWxlY3RJdGVtID0gKGl0ZW06IElGaWx0ZXJEcm9wZG93bkxpc3QsIGNvdW50cnlOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgY291bnRyeSA9IHRoaXMuc3RhdGVzLmZpbmQoKHN0YXRlKSA9PiBzdGF0ZS5jb3VudHJ5ID09PSBjb3VudHJ5TmFtZSk7XG4gICAgICAgIGlmIChjb3VudHJ5KSB7XG4gICAgICAgICAgICBjb3VudHJ5LnNlbGVjdGVkTGlzdCA9IGNvdW50cnkuc2VsZWN0ZWRMaXN0LmZpbHRlcihcbiAgICAgICAgICAgICAgICAoX2NvdW50cnkpID0+IF9jb3VudHJ5ICE9PSBpdGVtXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY291bnRyeS51bnNlbGVjdGVkTGlzdCA9IFsuLi5jb3VudHJ5LnVuc2VsZWN0ZWRMaXN0LCBpdGVtXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbGN1bGF0ZVNlbGVjdGVkQ291bnQoKTtcbiAgICB9O1xuXG4gICAgcHVibGljIGNsZWFyVmFsdWVzKCk6IHZvaWQge1xuICAgICAgIHRoaXMuZW1pdERhdGEoW10pXG5cbiAgICAgICAgdGhpcy5zdGF0ZXMgPSB0aGlzLnN0YXRlcy5tYXAoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdDogW10sXG4gICAgICAgICAgICAgICAgdW5zZWxlY3RlZExpc3Q6IHN0YXRlLmluaXRhbExpc3QsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnQgPSAwO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvdW50ID0gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFzc0ZpbHRlclZhbHVlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGF0ZXMgPSB0aGlzLnN0YXRlc1xuICAgICAgICAubWFwKChjb3VudHJ5KSA9PlxuICAgICAgICAgICAgY291bnRyeS5zZWxlY3RlZExpc3RcbiAgICAgICAgICAgICAgICAubWFwKChzdGF0ZSkgPT4gc3RhdGUuc3RhdGVTaG9ydE5hbWUpIFxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHNob3J0TmFtZSk6IHNob3J0TmFtZSBpcyBzdHJpbmcgPT4gQm9vbGVhbihzaG9ydE5hbWUpKSBcbiAgICAgICAgKVxuICAgICAgICAuZmxhdCgpO1xuXG4gICAgICAgIHRoaXMuZW1pdERhdGEoc3RhdGVzKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50ID0gdGhpcy5hY3RpdmVDb3VudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc29ydFZhbHVlcyhzb3J0aW5nOiBJU29ydEVtaXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zb3J0S2V5ID0gc29ydGluZy5zb3J0S2V5O1xuICAgICAgICB0aGlzLmRpcmVjdGlvbk11bHRpcGxpZXIgPSBzb3J0aW5nLmRpcmVjdGlvbk11bHRpcGxpZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0RGF0YShzZWxlY3RlZFN0YXRlczogc3RyaW5nW10pIDogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RmlsdGVyLmVtaXQoe1xuICAgICAgICAgICAgZmlsdGVyVHlwZTogZUZpbHRlckRyb3Bkb3duRW51bS5TVEFURSxcbiAgICAgICAgICAgIHNlbGVjdGVkU3RhdGVzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcEluaXRhbFN0YXRlcyh2YWx1ZTogSUNvdW50cnlbXSkgOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RhdGVzID0gdmFsdWUubWFwKChjb3VudHJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZXMgPSBjb3VudHJ5LnN0YXRlcy5tYXAoKHN0YXRlLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICBzdGF0ZVNob3J0TmFtZTogc3RhdGUuc3RhdGVTaG9ydE5hbWUsXG4gICAgICAgICAgICAgICAgbmFtZTogc3RhdGUuc3RhdGVOYW1lIHx8IHN0YXRlLnN0YXRlTmFtZSxcbiAgICAgICAgICAgICAgICBjb3VudDogc3RhdGUuY291bnQsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uY291bnRyeSxcbiAgICAgICAgICAgICAgICB1bnNlbGVjdGVkTGlzdDogc3RhdGVzLFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkTGlzdDogW10sXG4gICAgICAgICAgICAgICAgaW5pdGlhbExpc3Q6IFsuLi5zdGF0ZXNdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGFwcC1jYS1maWx0ZXItZHJvcGRvd25cbiAgICBbdHlwZV09XCJlRmlsdGVyRHJvcGRvd25FbnVtLlNUQVRFXCJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgW2JvZHlUZW1wbGF0ZV09XCJib2R5VGVtcGxhdGVcIlxuICAgIFtpc0Zvcm1DaGFuZ2VkXT1cIiEhYWN0aXZlQ291bnRcIlxuICAgIFthcHBsaWVkRmlsdGVyc0NvdW50XT1cInNlbGVjdGVkQ291bnRcIlxuICAgIChoYW5kbGVGaWx0ZXJzQ2xlYXIpPVwiY2xlYXJWYWx1ZXMoKVwiXG4gICAgKHNldEZpbHRlcik9XCJwYXNzRmlsdGVyVmFsdWUoKVwiXG4gICAgKHNvcnRpbmcpPVwic29ydFZhbHVlcygkZXZlbnQpXCJcbj5cbiAgICA8bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT5cbiAgICAgICAgQGxldCBzZWFyY2hTdHJpbmcgPSBzZWFyY2hGb3JtLmdldCgnc2VhcmNoJyk/LnZhbHVlO1xuXG4gICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJzZWFyY2hGb3JtXCI+XG4gICAgICAgICAgICA8YXBwLWNhLWlucHV0XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwic3RhdGVTZWFyY2hGb3JtXCJcbiAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1kcm9wZG93bi1saXN0IHBhZGRpbmcteC00XCI+XG4gICAgICAgICAgICBAZm9yIChjb3VudHJ5IG9mIHN0YXRlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQGlmIChjb3VudHJ5LnNlbGVjdGVkTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jb2xvci13aGl0ZSB0ZXh0LXNpemUtMTEgY2EtZm9udC1ib2xkIG1hcmdpbi10LTZcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb3VudHJ5LmNvdW50cnkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdGVkIExpc3QgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5LnNlbGVjdGVkTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXJTZWFyY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaFN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ25hbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXJlY3Rpb25NdWx0aXBsaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBjb3VudHJ5LmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrRm46IHVuU2VsZWN0SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBmb3IgKGNvdW50cnkgb2Ygc3RhdGVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBAaWYgKGNvdW50cnkudW5zZWxlY3RlZExpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtY29sb3Itd2hpdGUgdGV4dC1zaXplLTExIGNhLWZvbnQtYm9sZCBtYXJnaW4tdC02XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnRyeS5jb3VudHJ5IH19XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBVbnNlbGVjdGVkIExpc3QgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5LnVuc2VsZWN0ZWRMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpbHRlclNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2VhcmNoU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnbmFtZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRpcmVjdGlvbk11bHRpcGxpZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGNvdW50cnkuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tGbjogc2VsZWN0SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRMaXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICNsaXN0VGVtcGxhdGVcbiAgICAgICAgbGV0LWl0ZW1zPVwiaXRlbXNcIlxuICAgICAgICBsZXQtY291bnRyeT1cImNvdW50cnlcIlxuICAgICAgICBsZXQtY2xpY2tGbj1cImNsaWNrRm5cIlxuICAgICAgICBsZXQtaXNTZWxlY3RlZExpc3Q9XCJzZWxlY3RlZExpc3RcIlxuICAgID5cbiAgICAgICAgQGlmIChpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLXhzIG1iLTEgbWFyZ2luLXQtNFwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0gcGFkZGluZy00IGJyLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBjLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWx0ZXItZHJvcGRvd24tbGlzdC1pdGVtLWhvdmVyJzogaXNTZWxlY3RlZExpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0ZuKGl0ZW0sIGNvdW50cnkpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDAgbWFyZ2luLXItNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXJnaW4tci00IGJyLTEgY2EtZm9udC1leHRyYS1ib2xkIHRleHQtc2hvcnROYW1lIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2JhY2tncm91bmQtYmx1ZS0xMyB0ZXh0LWNvbG9yLWJsdWUtMTYnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnYmFja2dyb3VuZC1ibGFjayB0ZXh0LWNvbG9yLXdoaXRlLTQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnN0YXRlU2hvcnROYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtY29sb3Itd2hpdGUgdGV4dC1zaXplLTE0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNhLWZvbnQtZXh0cmEtYm9sZF09XCJpc1NlbGVjdGVkTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IGl0ZW0uY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXNTZWxlY3RlZExpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjYUZpbHRlcnNTdmdSb3V0ZXMucmVtb3ZlU2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3ZnLXNpemUtMTAgc3ZnLWZpbGwtcmVkLTEwIGZpbHRlci1kcm9wZG93bi1saXN0LWl0ZW0tcmVtb3ZlIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmlsdGVyLWRyb3Bkb3duLWxpc3QtYmFkZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkaXZpZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBEaXZpZGVyIFRlbXBsYXRlIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGl2aWRlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmQtYmxhY2sgYnItMiBoZWlnaHQtMVwiPjwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtY291bnQ9XCJjb3VudFwiIGxldC1pc1NlbGVjdGVkPVwiaXNTZWxlY3RlZFwiPlxuICAgICAgICA8IS0tIENvdW50IGNhbiBiZSB1bmRlZmluZWQgZm9yIGV4YW1wbGUgb24gYXNzaWduIGRpc3BhdGNoIGxvYWQgbGlzdCwgb3IgaXQgY2FuIGJlIDAgYXMgd2VsbCBmb3Igc29tZSBkaXNwYXRjaGVycyAtLT5cbiAgICAgICAgQGlmIChjb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJici0xMCBmaWx0ZXItZHJvcGRvd24tbGlzdC1pdGVtLWNvdW50IHRleHQtc2l6ZS0xMSBjYS1mb250LXNlbWktYm9sZCBwYWRkaW5nLXktMiBwYWRkaW5nLXgtNSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZmlsdGVyLWRyb3Bkb3duLWxpc3QtYmFkZ2VcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/ICdiYWNrZ3JvdW5kLWJsdWUtMTQgdGV4dC1jb2xvci13aGl0ZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2JhY2tncm91bmQtYmxhY2sgdGV4dC1jb2xvci13aGl0ZS00J1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgY291bnQgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvYXBwLWNhLWZpbHRlci1kcm9wZG93bj5cbiJdfQ==
|