cmat 0.0.16 → 0.0.18
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/components/carousel/carousel.component.d.ts +136 -0
- package/components/carousel/carousel.interface.d.ts +38 -0
- package/components/carousel/index.d.ts +5 -0
- package/components/carousel/public-api.d.ts +2 -0
- package/components/custom-formly/public-api.d.ts +1 -0
- package/components/custom-formly/types/knob/knob.component.d.ts +36 -0
- package/components/custom-formly/types/table/table.component.d.ts +3 -8
- package/components/custom-formly/wrappers/form-field/form-field.component.d.ts +4 -4
- package/components/image-viewer/image-viewer.component.d.ts +76 -0
- package/components/image-viewer/index.d.ts +5 -0
- package/components/image-viewer/public-api.d.ts +1 -0
- package/components/knob-input/index.d.ts +5 -0
- package/components/knob-input/knob-input.component.d.ts +95 -0
- package/components/knob-input/public-api.d.ts +1 -0
- package/components/material-datetimepicker/datetimepicker-input.d.ts +2 -2
- package/components/opt-input/index.d.ts +5 -0
- package/components/opt-input/models/config.d.ts +14 -0
- package/components/opt-input/otp-input.component.d.ts +70 -0
- package/components/opt-input/public-api.d.ts +1 -0
- package/components/opt-input/utils/keyboard-util.d.ts +9 -0
- package/components/opt-input/utils/object-util.d.ts +3 -0
- package/components/org-chart/designer/chart-designer.component.d.ts +17 -0
- package/components/org-chart/index.d.ts +5 -0
- package/components/org-chart/node/chart-node.component.d.ts +17 -0
- package/components/org-chart/node/node.type.d.ts +22 -0
- package/components/org-chart/org-chart.component.d.ts +12 -0
- package/components/org-chart/public-api.d.ts +2 -0
- package/components/popover/popover.interfaces.d.ts +1 -1
- package/components/select-search/select-search.component.d.ts +2 -1
- package/components/select-table/index.d.ts +5 -0
- package/components/select-table/public-api.d.ts +2 -0
- package/components/select-table/select-table.component.d.ts +96 -0
- package/components/select-table/select-table.type.d.ts +20 -0
- package/components/select-tree/select-tree.component.d.ts +11 -12
- package/components/speed-dial/index.d.ts +5 -0
- package/components/speed-dial/public-api.d.ts +2 -0
- package/components/speed-dial/speed-dial.component.d.ts +63 -0
- package/components/transfer-picker/interface.d.ts +0 -1
- package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.d.ts +8 -6
- package/components/treetable/index.d.ts +5 -0
- package/components/treetable/public-api.d.ts +2 -0
- package/components/treetable/treetable.component.d.ts +32 -0
- package/components/treetable/treetable.interface.d.ts +9 -0
- package/directives/animate-on-scroll/animate-on-scroll.directive.d.ts +4 -4
- package/directives/arrow-cursor/arrow-cursor.directive.d.ts +31 -0
- package/directives/arrow-cursor/index.d.ts +5 -0
- package/directives/arrow-cursor/public-api.d.ts +1 -0
- package/directives/data-exporter/constants.d.ts +26 -0
- package/directives/data-exporter/data-exporter.directive.d.ts +18 -0
- package/directives/data-exporter/index.d.ts +5 -0
- package/directives/data-exporter/mime.d.ts +5 -0
- package/directives/data-exporter/options.d.ts +21 -0
- package/directives/data-exporter/public-api.d.ts +2 -0
- package/directives/data-exporter/services/exporters/csv-exporter.service.d.ts +12 -0
- package/directives/data-exporter/services/exporters/exporter.d.ts +4 -0
- package/directives/data-exporter/services/exporters/file-exporter.d.ts +8 -0
- package/directives/data-exporter/services/exporters/json-exporter.service.d.ts +11 -0
- package/directives/data-exporter/services/exporters/txt-exporter.service.d.ts +12 -0
- package/directives/data-exporter/services/exporters/worksheet-exporter.d.ts +10 -0
- package/directives/data-exporter/services/exporters/xls-exporter.service.d.ts +14 -0
- package/directives/data-exporter/services/exporters/xlsx-exporter.service.d.ts +9 -0
- package/directives/data-exporter/services/file-util.d.ts +8 -0
- package/directives/data-exporter/services/service-locator.service.d.ts +11 -0
- package/directives/debounce/abstract-debounce.directive.d.ts +1 -1
- package/fesm2022/cmat-animations.mjs.map +1 -1
- package/fesm2022/cmat-components-adapter.mjs +9 -9
- package/fesm2022/cmat-components-adapter.mjs.map +1 -1
- package/fesm2022/cmat-components-breadcrumb.mjs +10 -10
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs +4 -4
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-carousel.mjs +711 -0
- package/fesm2022/cmat-components-carousel.mjs.map +1 -0
- package/fesm2022/cmat-components-cascade.mjs +12 -12
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs +5 -5
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-custom-formly.mjs +168 -155
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-date-range.mjs +5 -5
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs +6 -6
- package/fesm2022/cmat-components-drawer.mjs.map +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs +4 -4
- package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
- package/fesm2022/cmat-components-highlight.mjs +7 -7
- package/fesm2022/cmat-components-highlight.mjs.map +1 -1
- package/fesm2022/cmat-components-image-viewer.mjs +227 -0
- package/fesm2022/cmat-components-image-viewer.mjs.map +1 -0
- package/fesm2022/cmat-components-json-editor.mjs +4 -4
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-knob-input.mjs +404 -0
- package/fesm2022/cmat-components-knob-input.mjs.map +1 -0
- package/fesm2022/cmat-components-masonry.mjs +4 -4
- package/fesm2022/cmat-components-masonry.mjs.map +1 -1
- package/fesm2022/cmat-components-material-color-picker.mjs +4 -4
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +53 -53
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +51 -51
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-opt-input.mjs +457 -0
- package/fesm2022/cmat-components-opt-input.mjs.map +1 -0
- package/fesm2022/cmat-components-org-chart.mjs +141 -0
- package/fesm2022/cmat-components-org-chart.mjs.map +1 -0
- package/fesm2022/cmat-components-pagination.mjs +13 -13
- package/fesm2022/cmat-components-pagination.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +12 -12
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +10 -10
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-progress-bar.mjs +4 -4
- package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +4 -4
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +11 -11
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-table.mjs +658 -0
- package/fesm2022/cmat-components-select-table.mjs.map +1 -0
- package/fesm2022/cmat-components-select-tree.mjs +75 -57
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-speed-dial.mjs +312 -0
- package/fesm2022/cmat-components-speed-dial.mjs.map +1 -0
- package/fesm2022/cmat-components-timeline.mjs +14 -14
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +11 -11
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +60 -41
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-treetable.mjs +122 -0
- package/fesm2022/cmat-components-treetable.mjs.map +1 -0
- package/fesm2022/cmat-components-upload.mjs +11 -11
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +21 -21
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
- package/fesm2022/cmat-directives-arrow-cursor.mjs +184 -0
- package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -0
- package/fesm2022/cmat-directives-autofocus.mjs +3 -3
- package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
- package/fesm2022/cmat-directives-data-exporter.mjs +324 -0
- package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -0
- package/fesm2022/cmat-directives-debounce.mjs +9 -9
- package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
- package/fesm2022/cmat-directives-digit-only.mjs +8 -6
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
- package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
- package/fesm2022/cmat-lib-mock-api.mjs +6 -6
- package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
- package/fesm2022/cmat-pipes-bytes.mjs +3 -3
- package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
- package/fesm2022/cmat-pipes-date-format.mjs +3 -3
- package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
- package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
- package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
- package/fesm2022/cmat-pipes-group-by.mjs +3 -3
- package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
- package/fesm2022/cmat-pipes-keys.mjs +3 -3
- package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
- package/fesm2022/cmat-pipes-secure.mjs +3 -3
- package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
- package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
- package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
- package/fesm2022/cmat-services-alert.mjs +3 -3
- package/fesm2022/cmat-services-alert.mjs.map +1 -1
- package/fesm2022/cmat-services-config.mjs +6 -6
- package/fesm2022/cmat-services-config.mjs.map +1 -1
- package/fesm2022/cmat-services-confirmation.mjs +7 -7
- package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
- package/fesm2022/cmat-services-data.mjs +5 -5
- package/fesm2022/cmat-services-data.mjs.map +1 -1
- package/fesm2022/cmat-services-export-as.mjs +211 -0
- package/fesm2022/cmat-services-export-as.mjs.map +1 -0
- package/fesm2022/cmat-services-loading.mjs +6 -6
- package/fesm2022/cmat-services-loading.mjs.map +1 -1
- package/fesm2022/cmat-services-local-storage.mjs +3 -3
- package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
- package/fesm2022/cmat-services-media-watcher.mjs +3 -3
- package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
- package/fesm2022/cmat-services-platform.mjs +3 -3
- package/fesm2022/cmat-services-platform.mjs.map +1 -1
- package/fesm2022/cmat-services-splash-screen.mjs +3 -3
- package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
- package/fesm2022/cmat-services-title.mjs +3 -3
- package/fesm2022/cmat-services-title.mjs.map +1 -1
- package/fesm2022/cmat-services-translation.mjs +3 -3
- package/fesm2022/cmat-services-translation.mjs.map +1 -1
- package/fesm2022/cmat-services-utils.mjs +35 -3
- package/fesm2022/cmat-services-utils.mjs.map +1 -1
- package/fesm2022/cmat-validators.mjs.map +1 -1
- package/fesm2022/cmat-version.mjs.map +1 -1
- package/icons/arrow-cursor.svg +1 -1
- package/package.json +81 -147
- package/services/data/data.service.d.ts +1 -1
- package/services/export-as/export-as-config.model.d.ts +8 -0
- package/services/export-as/export-as.service.d.ts +43 -0
- package/services/export-as/index.d.ts +5 -0
- package/services/export-as/public-api.d.ts +2 -0
- package/services/utils/utils.service.d.ts +4 -0
- package/styles/overrides/angular-material.scss +95 -13
- package/esm2022/animations/cmat-animations.mjs +0 -5
- package/esm2022/animations/defaults.mjs +0 -12
- package/esm2022/animations/dropdown.mjs +0 -26
- package/esm2022/animations/expand-collapse.mjs +0 -17
- package/esm2022/animations/fade.mjs +0 -170
- package/esm2022/animations/public-api.mjs +0 -19
- package/esm2022/animations/shake.mjs +0 -59
- package/esm2022/animations/slide.mjs +0 -124
- package/esm2022/animations/transform.mjs +0 -16
- package/esm2022/animations/zoom.mjs +0 -38
- package/esm2022/cmat.mjs +0 -5
- package/esm2022/components/adapter/cmat-components-adapter.mjs +0 -5
- package/esm2022/components/adapter/datetime-adapter.mjs +0 -127
- package/esm2022/components/adapter/datetime-formats.mjs +0 -3
- package/esm2022/components/adapter/dayjs-date-adapter.mjs +0 -198
- package/esm2022/components/adapter/dayjs-date-formats.mjs +0 -12
- package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +0 -100
- package/esm2022/components/adapter/dayjs-datetime-formats.mjs +0 -21
- package/esm2022/components/adapter/native-datetime-adapter.mjs +0 -130
- package/esm2022/components/adapter/native-datetime-formats.mjs +0 -15
- package/esm2022/components/adapter/public-api.mjs +0 -9
- package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +0 -19
- package/esm2022/components/breadcrumb/breadcrumb.component.mjs +0 -94
- package/esm2022/components/breadcrumb/breadcrumb.service.mjs +0 -333
- package/esm2022/components/breadcrumb/cmat-components-breadcrumb.mjs +0 -5
- package/esm2022/components/breadcrumb/public-api.mjs +0 -6
- package/esm2022/components/breadcrumb/types/breadcrumb.config.mjs +0 -2
- package/esm2022/components/breadcrumb/types/breadcrumb.mjs +0 -2
- package/esm2022/components/card/card.component.mjs +0 -49
- package/esm2022/components/card/card.types.mjs +0 -2
- package/esm2022/components/card/cmat-components-card.mjs +0 -5
- package/esm2022/components/card/public-api.mjs +0 -3
- package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +0 -49
- package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +0 -384
- package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +0 -22
- package/esm2022/components/cascade/cmat-components-cascade.mjs +0 -5
- package/esm2022/components/cascade/options.interface.mjs +0 -2
- package/esm2022/components/cascade/public-api.mjs +0 -4
- package/esm2022/components/chip-input/chip-input.component.mjs +0 -251
- package/esm2022/components/chip-input/cmat-components-chip-input.mjs +0 -5
- package/esm2022/components/chip-input/public-api.mjs +0 -2
- package/esm2022/components/custom-formly/cmat-components-custom-formly.mjs +0 -5
- package/esm2022/components/custom-formly/extension/addons.extension.mjs +0 -13
- package/esm2022/components/custom-formly/public-api.mjs +0 -29
- package/esm2022/components/custom-formly/types/button/button.component.mjs +0 -81
- package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +0 -71
- package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +0 -161
- package/esm2022/components/custom-formly/types/chips/chips.component.mjs +0 -55
- package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +0 -15
- package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +0 -25
- package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +0 -51
- package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +0 -88
- package/esm2022/components/custom-formly/types/number/number.component.mjs +0 -27
- package/esm2022/components/custom-formly/types/quill/quill.component.mjs +0 -171
- package/esm2022/components/custom-formly/types/radio/radio.component.mjs +0 -87
- package/esm2022/components/custom-formly/types/rating/rating.component.mjs +0 -27
- package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +0 -25
- package/esm2022/components/custom-formly/types/select/select.component.mjs +0 -167
- package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +0 -66
- package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +0 -28
- package/esm2022/components/custom-formly/types/stepper/stepper.type.mjs +0 -2
- package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +0 -28
- package/esm2022/components/custom-formly/types/table/table.component.mjs +0 -127
- package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +0 -16
- package/esm2022/components/custom-formly/types/tags/tags.component.mjs +0 -146
- package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +0 -25
- package/esm2022/components/custom-formly/types/upload/upload.component.mjs +0 -58
- package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +0 -92
- package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +0 -14
- package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +0 -14
- package/esm2022/components/custom-formly/wrappers/form-field/form-field.component.mjs +0 -47
- package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +0 -12
- package/esm2022/components/date-range/cmat-components-date-range.mjs +0 -5
- package/esm2022/components/date-range/date-range.component.mjs +0 -558
- package/esm2022/components/date-range/public-api.mjs +0 -2
- package/esm2022/components/drawer/cmat-components-drawer.mjs +0 -5
- package/esm2022/components/drawer/drawer.component.mjs +0 -301
- package/esm2022/components/drawer/drawer.service.mjs +0 -41
- package/esm2022/components/drawer/drawer.types.mjs +0 -2
- package/esm2022/components/drawer/public-api.mjs +0 -4
- package/esm2022/components/fullscreen/cmat-components-fullscreen.mjs +0 -5
- package/esm2022/components/fullscreen/fullscreen.component.mjs +0 -44
- package/esm2022/components/fullscreen/public-api.mjs +0 -2
- package/esm2022/components/highlight/cmat-components-highlight.mjs +0 -5
- package/esm2022/components/highlight/highlight.component.mjs +0 -80
- package/esm2022/components/highlight/highlight.service.mjs +0 -47
- package/esm2022/components/highlight/public-api.mjs +0 -3
- package/esm2022/components/json-editor/cmat-components-json-editor.mjs +0 -5
- package/esm2022/components/json-editor/json-editor.component.mjs +0 -176
- package/esm2022/components/json-editor/public-api.mjs +0 -2
- package/esm2022/components/masonry/cmat-components-masonry.mjs +0 -5
- package/esm2022/components/masonry/masonry.component.mjs +0 -54
- package/esm2022/components/masonry/public-api.mjs +0 -2
- package/esm2022/components/material-color-picker/base-color.mjs +0 -13
- package/esm2022/components/material-color-picker/cmat-components-material-color-picker.mjs +0 -5
- package/esm2022/components/material-color-picker/material-color-picker.component.mjs +0 -147
- package/esm2022/components/material-color-picker/public-api.mjs +0 -3
- package/esm2022/components/material-color-picker/selected-color.mjs +0 -3
- package/esm2022/components/material-datetimepicker/calendar-body.mjs +0 -76
- package/esm2022/components/material-datetimepicker/calendar.mjs +0 -670
- package/esm2022/components/material-datetimepicker/clock.mjs +0 -290
- package/esm2022/components/material-datetimepicker/cmat-components-material-datetimepicker.mjs +0 -5
- package/esm2022/components/material-datetimepicker/datetimepicker-animations.mjs +0 -34
- package/esm2022/components/material-datetimepicker/datetimepicker-errors.mjs +0 -6
- package/esm2022/components/material-datetimepicker/datetimepicker-filtertype.mjs +0 -8
- package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +0 -341
- package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +0 -63
- package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +0 -87
- package/esm2022/components/material-datetimepicker/datetimepicker-types.mjs +0 -2
- package/esm2022/components/material-datetimepicker/datetimepicker.mjs +0 -531
- package/esm2022/components/material-datetimepicker/month-view.mjs +0 -141
- package/esm2022/components/material-datetimepicker/multi-year-view.mjs +0 -197
- package/esm2022/components/material-datetimepicker/public-api.mjs +0 -11
- package/esm2022/components/material-datetimepicker/time.mjs +0 -455
- package/esm2022/components/material-datetimepicker/year-view.mjs +0 -124
- package/esm2022/components/navigation/cmat-components-navigation.mjs +0 -5
- package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +0 -70
- package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +0 -82
- package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +0 -47
- package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +0 -47
- package/esm2022/components/navigation/horizontal/horizontal.component.mjs +0 -87
- package/esm2022/components/navigation/navigation.service.mjs +0 -140
- package/esm2022/components/navigation/navigation.types.mjs +0 -3
- package/esm2022/components/navigation/public-api.mjs +0 -5
- package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +0 -162
- package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +0 -60
- package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +0 -277
- package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +0 -56
- package/esm2022/components/navigation/vertical/components/group/group.component.mjs +0 -78
- package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +0 -56
- package/esm2022/components/navigation/vertical/vertical.component.mjs +0 -584
- package/esm2022/components/pagination/cmat-components-pagination.mjs +0 -5
- package/esm2022/components/pagination/pagination.component.mjs +0 -67
- package/esm2022/components/pagination/pagination.directive.mjs +0 -197
- package/esm2022/components/pagination/pagination.instance.mjs +0 -2
- package/esm2022/components/pagination/pagination.pipe.mjs +0 -100
- package/esm2022/components/pagination/pagination.service.mjs +0 -90
- package/esm2022/components/pagination/public-api.mjs +0 -6
- package/esm2022/components/password-strength/animations/index.mjs +0 -48
- package/esm2022/components/password-strength/cmat-components-password-strength.mjs +0 -5
- package/esm2022/components/password-strength/enum.mjs +0 -17
- package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +0 -27
- package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +0 -206
- package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +0 -150
- package/esm2022/components/password-strength/mat-password-strength-validator.mjs +0 -36
- package/esm2022/components/password-strength/public-api.mjs +0 -4
- package/esm2022/components/password-strength/regexp.class.mjs +0 -8
- package/esm2022/components/popover/cmat-components-popover.mjs +0 -5
- package/esm2022/components/popover/popover-trigger.mjs +0 -442
- package/esm2022/components/popover/popover.component.mjs +0 -348
- package/esm2022/components/popover/popover.errors.mjs +0 -27
- package/esm2022/components/popover/popover.interfaces.mjs +0 -2
- package/esm2022/components/popover/popover.target.mjs +0 -18
- package/esm2022/components/popover/popover.type.mjs +0 -2
- package/esm2022/components/popover/public-api.mjs +0 -5
- package/esm2022/components/progress-bar/cmat-components-progress-bar.mjs +0 -5
- package/esm2022/components/progress-bar/progress-bar.component.mjs +0 -58
- package/esm2022/components/progress-bar/public-api.mjs +0 -2
- package/esm2022/components/rating/cmat-components-rating.mjs +0 -5
- package/esm2022/components/rating/public-api.mjs +0 -2
- package/esm2022/components/rating/rating.component.mjs +0 -202
- package/esm2022/components/select-search/cmat-components-select-search.mjs +0 -5
- package/esm2022/components/select-search/default-options.mjs +0 -16
- package/esm2022/components/select-search/public-api.mjs +0 -3
- package/esm2022/components/select-search/select-no-entries-found.directive.mjs +0 -14
- package/esm2022/components/select-search/select-search-clear.directive.mjs +0 -14
- package/esm2022/components/select-search/select-search.component.mjs +0 -485
- package/esm2022/components/select-tree/cmat-components-select-tree.mjs +0 -5
- package/esm2022/components/select-tree/public-api.mjs +0 -4
- package/esm2022/components/select-tree/select-tree.component.mjs +0 -565
- package/esm2022/components/select-tree/select-tree.flatnode.mjs +0 -3
- package/esm2022/components/select-tree/select-tree.node.mjs +0 -3
- package/esm2022/components/timeline/cmat-components-timeline.mjs +0 -5
- package/esm2022/components/timeline/public-api.mjs +0 -3
- package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +0 -70
- package/esm2022/components/timeline/timeline.component.mjs +0 -107
- package/esm2022/components/toast/cmat-components-toast.mjs +0 -5
- package/esm2022/components/toast/models/global-config.model.mjs +0 -2
- package/esm2022/components/toast/models/toast.model.mjs +0 -2
- package/esm2022/components/toast/models/type.model.mjs +0 -2
- package/esm2022/components/toast/public-api.mjs +0 -7
- package/esm2022/components/toast/toast-modal.component.mjs +0 -53
- package/esm2022/components/toast/toast.component.mjs +0 -30
- package/esm2022/components/toast/toast.service.mjs +0 -122
- package/esm2022/components/transfer-picker/cmat-components-transfer-picker.mjs +0 -5
- package/esm2022/components/transfer-picker/filter/filter.component.mjs +0 -91
- package/esm2022/components/transfer-picker/interface.mjs +0 -17
- package/esm2022/components/transfer-picker/public-api.mjs +0 -8
- package/esm2022/components/transfer-picker/search/search.component.mjs +0 -38
- package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +0 -201
- package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +0 -32
- package/esm2022/components/transfer-picker/transfer-picker.component.mjs +0 -84
- package/esm2022/components/transfer-picker/transfer-picker.service.mjs +0 -137
- package/esm2022/components/upload/cmat-components-upload.mjs +0 -5
- package/esm2022/components/upload/files.type.mjs +0 -2
- package/esm2022/components/upload/files.util.service.mjs +0 -89
- package/esm2022/components/upload/public-api.mjs +0 -5
- package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +0 -155
- package/esm2022/components/upload/upload.component.mjs +0 -118
- package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +0 -126
- package/esm2022/directives/animate-on-scroll/cmat-directives-animate-on-scroll.mjs +0 -5
- package/esm2022/directives/animate-on-scroll/public-api.mjs +0 -2
- package/esm2022/directives/animate-on-scroll/scroll.service.mjs +0 -38
- package/esm2022/directives/autofocus/autofocus.directive.mjs +0 -20
- package/esm2022/directives/autofocus/cmat-directives-autofocus.mjs +0 -5
- package/esm2022/directives/autofocus/public-api.mjs +0 -2
- package/esm2022/directives/debounce/abstract-debounce.directive.mjs +0 -34
- package/esm2022/directives/debounce/cmat-directives-debounce.mjs +0 -5
- package/esm2022/directives/debounce/debounce-click.directive.mjs +0 -25
- package/esm2022/directives/debounce/debounce-keyup.directive.mjs +0 -25
- package/esm2022/directives/debounce/public-api.mjs +0 -3
- package/esm2022/directives/digit-only/cmat-directives-digit-only.mjs +0 -5
- package/esm2022/directives/digit-only/digit-only.directive.mjs +0 -298
- package/esm2022/directives/digit-only/mask.directive.mjs +0 -84
- package/esm2022/directives/digit-only/public-api.mjs +0 -3
- package/esm2022/directives/equal-validator/cmat-directives-equal-validator.mjs +0 -5
- package/esm2022/directives/equal-validator/equal-validator.directive.mjs +0 -54
- package/esm2022/directives/equal-validator/public-api.mjs +0 -2
- package/esm2022/lib/mock-api/cmat-lib-mock-api.mjs +0 -5
- package/esm2022/lib/mock-api/mock-api.constants.mjs +0 -3
- package/esm2022/lib/mock-api/mock-api.interceptor.mjs +0 -73
- package/esm2022/lib/mock-api/mock-api.request-handler.mjs +0 -48
- package/esm2022/lib/mock-api/mock-api.service.mjs +0 -93
- package/esm2022/lib/mock-api/mock-api.types.mjs +0 -2
- package/esm2022/lib/mock-api/mock-api.utils.mjs +0 -16
- package/esm2022/lib/mock-api/public-api.mjs +0 -6
- package/esm2022/pipes/bytes/bytes.pipe.mjs +0 -25
- package/esm2022/pipes/bytes/cmat-pipes-bytes.mjs +0 -5
- package/esm2022/pipes/bytes/public-api.mjs +0 -2
- package/esm2022/pipes/date-format/cmat-pipes-date-format.mjs +0 -5
- package/esm2022/pipes/date-format/date-format.pipe.mjs +0 -20
- package/esm2022/pipes/date-format/public-api.mjs +0 -2
- package/esm2022/pipes/find-by-key/cmat-pipes-find-by-key.mjs +0 -5
- package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +0 -23
- package/esm2022/pipes/find-by-key/public-api.mjs +0 -2
- package/esm2022/pipes/group-by/cmat-pipes-group-by.mjs +0 -5
- package/esm2022/pipes/group-by/group-by.pipe.mjs +0 -29
- package/esm2022/pipes/group-by/public-api.mjs +0 -2
- package/esm2022/pipes/keys/cmat-pipes-keys.mjs +0 -5
- package/esm2022/pipes/keys/keys.pipe.mjs +0 -26
- package/esm2022/pipes/keys/public-api.mjs +0 -2
- package/esm2022/pipes/secure/cmat-pipes-secure.mjs +0 -5
- package/esm2022/pipes/secure/public-api.mjs +0 -2
- package/esm2022/pipes/secure/secure-pipe.mjs +0 -46
- package/esm2022/pipes/uppercase/cmat-pipes-uppercase.mjs +0 -5
- package/esm2022/pipes/uppercase/public-api.mjs +0 -2
- package/esm2022/pipes/uppercase/uppercase.pipe.mjs +0 -17
- package/esm2022/public-api.mjs +0 -2
- package/esm2022/services/alert/alert.dialog.mjs +0 -12
- package/esm2022/services/alert/alert.message.mjs +0 -9
- package/esm2022/services/alert/alert.service.mjs +0 -166
- package/esm2022/services/alert/cmat-services-alert.mjs +0 -5
- package/esm2022/services/alert/enum.mjs +0 -15
- package/esm2022/services/alert/public-api.mjs +0 -5
- package/esm2022/services/config/cmat-services-config.mjs +0 -5
- package/esm2022/services/config/config.constants.mjs +0 -3
- package/esm2022/services/config/config.service.mjs +0 -35
- package/esm2022/services/config/public-api.mjs +0 -4
- package/esm2022/services/config/urlStateConfig.service.mjs +0 -30
- package/esm2022/services/confirmation/cmat-services-confirmation.mjs +0 -5
- package/esm2022/services/confirmation/confirmation.service.mjs +0 -51
- package/esm2022/services/confirmation/confirmation.types.mjs +0 -2
- package/esm2022/services/confirmation/dialog/dialog.component.mjs +0 -25
- package/esm2022/services/confirmation/public-api.mjs +0 -3
- package/esm2022/services/data/cmat-services-data.mjs +0 -5
- package/esm2022/services/data/data.service.mjs +0 -169
- package/esm2022/services/data/public-api.mjs +0 -2
- package/esm2022/services/loading/cmat-services-loading.mjs +0 -5
- package/esm2022/services/loading/loading.interceptor.mjs +0 -29
- package/esm2022/services/loading/loading.service.mjs +0 -72
- package/esm2022/services/loading/public-api.mjs +0 -3
- package/esm2022/services/local-storage/cmat-services-local-storage.mjs +0 -5
- package/esm2022/services/local-storage/local-storage.service.mjs +0 -22
- package/esm2022/services/local-storage/public-api.mjs +0 -2
- package/esm2022/services/media-watcher/cmat-services-media-watcher.mjs +0 -5
- package/esm2022/services/media-watcher/media-watcher.service.mjs +0 -55
- package/esm2022/services/media-watcher/public-api.mjs +0 -2
- package/esm2022/services/platform/cmat-services-platform.mjs +0 -5
- package/esm2022/services/platform/platform.service.mjs +0 -46
- package/esm2022/services/platform/public-api.mjs +0 -2
- package/esm2022/services/splash-screen/cmat-services-splash-screen.mjs +0 -5
- package/esm2022/services/splash-screen/public-api.mjs +0 -2
- package/esm2022/services/splash-screen/splash-screen.service.mjs +0 -42
- package/esm2022/services/title/cmat-services-title.mjs +0 -5
- package/esm2022/services/title/public-api.mjs +0 -2
- package/esm2022/services/title/title.service.mjs +0 -46
- package/esm2022/services/translation/cmat-services-translation.mjs +0 -5
- package/esm2022/services/translation/public-api.mjs +0 -2
- package/esm2022/services/translation/translation.service.mjs +0 -62
- package/esm2022/services/utils/cmat-services-utils.mjs +0 -5
- package/esm2022/services/utils/public-api.mjs +0 -2
- package/esm2022/services/utils/utils.service.mjs +0 -435
- package/esm2022/validators/cmat-validators.mjs +0 -5
- package/esm2022/validators/public-api.mjs +0 -2
- package/esm2022/validators/validators.mjs +0 -33
- package/esm2022/version/cmat-version.mjs +0 -5
- package/esm2022/version/public-api.mjs +0 -2
- package/esm2022/version/version.mjs +0 -11
|
@@ -1,333 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { GuardsCheckEnd } from '@angular/router';
|
|
3
|
-
import { isNull } from 'lodash-es';
|
|
4
|
-
import { BehaviorSubject, Subject } from 'rxjs';
|
|
5
|
-
import { filter, takeUntil } from 'rxjs/operators';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/router";
|
|
8
|
-
/* eslint-disable @typescript-eslint/naming-convention */
|
|
9
|
-
const PATH_PARAM = {
|
|
10
|
-
PREFIX: ':',
|
|
11
|
-
REGEX_IDENTIFIER: '/:[^/]+',
|
|
12
|
-
REGEX_REPLACER: '/[^/]+',
|
|
13
|
-
};
|
|
14
|
-
const ALIAS_PREFIX = '@';
|
|
15
|
-
const isNonEmpty = (obj) => obj && Object.keys(obj).length > 0;
|
|
16
|
-
export class CmatBreadcrumbService {
|
|
17
|
-
constructor(_activatedRoute, _router) {
|
|
18
|
-
this._activatedRoute = _activatedRoute;
|
|
19
|
-
this._router = _router;
|
|
20
|
-
this._baseHref = '/';
|
|
21
|
-
this._unsubscribeAll = new Subject();
|
|
22
|
-
/**
|
|
23
|
-
* dynamicBreadcrumbStore holds information about dynamically updated breadcrumbs.
|
|
24
|
-
* Breadcrumbs can be set from anywhere (component, service) in the app.
|
|
25
|
-
* On every breadcrumb update check this store and use the info if available.
|
|
26
|
-
*/
|
|
27
|
-
this._dynamicBreadcrumbStore = [];
|
|
28
|
-
/**
|
|
29
|
-
* breadcrumbList for the current route
|
|
30
|
-
* When breadcrumb info is changed dynamically, check if the currentBreadcrumbs is effected
|
|
31
|
-
* If effected, update the change and emit a new stream
|
|
32
|
-
*/
|
|
33
|
-
this._currentBreadcrumbs = [];
|
|
34
|
-
this._previousBreadcrumbs = [];
|
|
35
|
-
/**
|
|
36
|
-
* Breadcrumbs observable to be subscribed by BreadcrumbComponent
|
|
37
|
-
* Emits on every route change OR dynamic update of breadcrumb
|
|
38
|
-
*/
|
|
39
|
-
this._breadcrumbs = new BehaviorSubject([]);
|
|
40
|
-
this._detectRouteChanges();
|
|
41
|
-
}
|
|
42
|
-
get breadcrumbs$() {
|
|
43
|
-
return this._breadcrumbs.asObservable();
|
|
44
|
-
}
|
|
45
|
-
ngOnDestroy() {
|
|
46
|
-
this._unsubscribeAll.next(void 0);
|
|
47
|
-
this._unsubscribeAll.complete();
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Update breadcrumb dynamically
|
|
51
|
-
*
|
|
52
|
-
* key can be a path | alias
|
|
53
|
-
*
|
|
54
|
-
* 1) Using complete route path. route can be passed the same way you define angular routes
|
|
55
|
-
* - path can be passed as 'exact path(routeLink)' or 'path with params(routeRegex)'
|
|
56
|
-
* - update label Ex: set('/mentor', 'Mentor'), set('/mentor/:id', 'Mentor Details')
|
|
57
|
-
* - change visibility Ex: set('/mentor/:id/edit', { skip: true })
|
|
58
|
-
* ------------------------------------------ OR ------------------------------------------
|
|
59
|
-
* 2) Using route alias (prefixed with '@'). alias should be unique for a route
|
|
60
|
-
* - update label Ex: set('@mentor', 'Enabler')
|
|
61
|
-
* - change visibility Ex: set('@mentorEdit', { skip: true })
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* value can be string | BreadcrumbObject | BreadcrumbFunction
|
|
65
|
-
*/
|
|
66
|
-
set(key, breadcrumb) {
|
|
67
|
-
const breadcrumbObject = this._extractObject(breadcrumb);
|
|
68
|
-
let updateArgs;
|
|
69
|
-
if (key.startsWith(ALIAS_PREFIX)) {
|
|
70
|
-
updateArgs = ['alias', { ...breadcrumbObject, alias: key.slice(1) }];
|
|
71
|
-
}
|
|
72
|
-
else if (key.includes(PATH_PARAM.PREFIX)) {
|
|
73
|
-
updateArgs = [
|
|
74
|
-
'routeRegex',
|
|
75
|
-
{ ...breadcrumbObject, routeRegex: this._buildRegex(key) },
|
|
76
|
-
];
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
updateArgs = [
|
|
80
|
-
'routeLink',
|
|
81
|
-
{ ...breadcrumbObject, routeLink: this._ensureLeadingSlash(key) },
|
|
82
|
-
];
|
|
83
|
-
}
|
|
84
|
-
// For this route if previously a breadcrumb is not defined that sets isAutoGeneratedLabel: true
|
|
85
|
-
// change it to false since this is user supplied value
|
|
86
|
-
updateArgs[1].isAutoGeneratedLabel = false;
|
|
87
|
-
this._updateStore(...updateArgs);
|
|
88
|
-
this._updateCurrentBreadcrumbs(...updateArgs);
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Whenever route changes build breadcrumb list again
|
|
92
|
-
*/
|
|
93
|
-
_detectRouteChanges() {
|
|
94
|
-
// Special case where breadcrumb service & component instantiates after a route is navigated.
|
|
95
|
-
// Ex: put breadcrumbs within *ngIf and this.router.events would be empty
|
|
96
|
-
// This check is also required where { initialNavigation: 'enabledBlocking' } is applied to routes
|
|
97
|
-
this._setupBreadcrumbs(this._activatedRoute.snapshot);
|
|
98
|
-
this._router.events
|
|
99
|
-
.pipe(takeUntil(this._unsubscribeAll), filter((event) => event instanceof GuardsCheckEnd))
|
|
100
|
-
.subscribe((event) => {
|
|
101
|
-
// activatedRoute doesn't carry data when shouldReuseRoute returns false
|
|
102
|
-
// use the event data with GuardsCheckEnd as workaround
|
|
103
|
-
// Check for shouldActivate in case where the authGuard returns false the breadcrumbs shouldn't be changed
|
|
104
|
-
if (event.shouldActivate) {
|
|
105
|
-
this._setupBreadcrumbs(event.state.root);
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
_setupBreadcrumbs(activatedRouteSnapshot) {
|
|
110
|
-
this._previousBreadcrumbs = this._currentBreadcrumbs;
|
|
111
|
-
// breadcrumb label for base OR root path. Usually, this can be set as 'Home'
|
|
112
|
-
const rootBreadcrumb = this._getRootBreadcrumb();
|
|
113
|
-
this._currentBreadcrumbs = rootBreadcrumb ? [rootBreadcrumb] : [];
|
|
114
|
-
this._prepareBreadcrumbList(activatedRouteSnapshot, this._baseHref);
|
|
115
|
-
}
|
|
116
|
-
_getRootBreadcrumb() {
|
|
117
|
-
const rootConfig = this._router.config.find(config => config.path === '');
|
|
118
|
-
const rootBreadcrumb = this._extractObject(rootConfig?.data?.['breadcrumb']);
|
|
119
|
-
const storeItem = this._getFromStore('/', rootBreadcrumb.alias);
|
|
120
|
-
if (isNonEmpty(rootBreadcrumb) || isNonEmpty(storeItem)) {
|
|
121
|
-
return {
|
|
122
|
-
...storeItem,
|
|
123
|
-
...rootBreadcrumb,
|
|
124
|
-
routeLink: this._baseHref,
|
|
125
|
-
...this._getQueryParamsFromPreviousList('/'),
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
_prepareBreadcrumbItem(activatedRouteSnapshot, routeLinkPrefix) {
|
|
130
|
-
const { path, breadcrumb } = this._parseRouteData(activatedRouteSnapshot.routeConfig);
|
|
131
|
-
const resolvedSegment = this._resolvePathSegment(path, activatedRouteSnapshot);
|
|
132
|
-
const routeLink = `${routeLinkPrefix}${resolvedSegment}`;
|
|
133
|
-
const storeItem = this._getFromStore(routeLink, breadcrumb.alias);
|
|
134
|
-
const label = this._extractLabel(storeItem?.label ?? breadcrumb?.label, resolvedSegment);
|
|
135
|
-
let isAutoGeneratedLabel = false;
|
|
136
|
-
let autoGeneratedLabel = '';
|
|
137
|
-
if (!label) {
|
|
138
|
-
isAutoGeneratedLabel = true;
|
|
139
|
-
autoGeneratedLabel = resolvedSegment;
|
|
140
|
-
}
|
|
141
|
-
return {
|
|
142
|
-
...storeItem,
|
|
143
|
-
...breadcrumb,
|
|
144
|
-
label: isAutoGeneratedLabel ? autoGeneratedLabel : label,
|
|
145
|
-
routeLink,
|
|
146
|
-
isAutoGeneratedLabel,
|
|
147
|
-
...this._getQueryParamsFromPreviousList(routeLink),
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
_prepareBreadcrumbList(activatedRouteSnapshot, routeLinkPrefix) {
|
|
151
|
-
if (activatedRouteSnapshot.routeConfig?.path) {
|
|
152
|
-
const breadcrumbItem = this._prepareBreadcrumbItem(activatedRouteSnapshot, routeLinkPrefix);
|
|
153
|
-
this._currentBreadcrumbs.push(breadcrumbItem);
|
|
154
|
-
if (activatedRouteSnapshot.firstChild) {
|
|
155
|
-
return this._prepareBreadcrumbList(activatedRouteSnapshot.firstChild, breadcrumbItem.routeLink + '/');
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
else if (activatedRouteSnapshot.firstChild) {
|
|
159
|
-
return this._prepareBreadcrumbList(activatedRouteSnapshot.firstChild, routeLinkPrefix);
|
|
160
|
-
}
|
|
161
|
-
const lastCrumb = this._currentBreadcrumbs[this._currentBreadcrumbs.length - 1];
|
|
162
|
-
this._setQueryParamsForActiveBreadcrumb(lastCrumb, activatedRouteSnapshot);
|
|
163
|
-
// remove breadcrumb items that needs to be hidden
|
|
164
|
-
const breadcrumbsToShow = this._currentBreadcrumbs.filter(item => !item.skip);
|
|
165
|
-
this._breadcrumbs.next(breadcrumbsToShow);
|
|
166
|
-
return void 0;
|
|
167
|
-
}
|
|
168
|
-
_getFromStore(routeLink, alias) {
|
|
169
|
-
return this._dynamicBreadcrumbStore.find(item => (((alias && alias === item.alias) ?? false) || (routeLink && routeLink === item.routeLink) || this._matchRegex(routeLink, item.routeRegex)));
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* use exact match instead of regexp.test
|
|
173
|
-
* for /mentor/[^/]+ we should match '/mentor/12' but not '/mentor/12/abc'
|
|
174
|
-
*/
|
|
175
|
-
_matchRegex(routeLink, routeRegex) {
|
|
176
|
-
if (routeRegex && routeLink) {
|
|
177
|
-
const match = new RegExp(routeRegex).exec(routeLink);
|
|
178
|
-
return match && match[0] === routeLink;
|
|
179
|
-
}
|
|
180
|
-
return null;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* if the path segment has route params, read the param value from url
|
|
184
|
-
* for each segment of route this gets called
|
|
185
|
-
*
|
|
186
|
-
* for mentor/:id/view - it gets called with mentor, :id, view 3 times
|
|
187
|
-
*/
|
|
188
|
-
_resolvePathSegment(segment, activatedRouteSnapshot) {
|
|
189
|
-
//quirk -segment can be defined as view/:id in route config in which case you need to make it view/<resolved-param>
|
|
190
|
-
if (segment.includes(PATH_PARAM.PREFIX)) {
|
|
191
|
-
Object.entries(activatedRouteSnapshot.params).forEach(([key, value]) => {
|
|
192
|
-
segment = segment.replace(`:${key}`, `${value}`);
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
return segment;
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* queryParams & fragments for previous breadcrumb path are copied over to new list
|
|
199
|
-
*/
|
|
200
|
-
_getQueryParamsFromPreviousList(routeLink) {
|
|
201
|
-
const { queryParams, fragment } = this._previousBreadcrumbs.find(item => item.routeLink === routeLink) ??
|
|
202
|
-
{};
|
|
203
|
-
return { queryParams, fragment };
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* set current activated route query params to the last breadcrumb item
|
|
207
|
-
*/
|
|
208
|
-
_setQueryParamsForActiveBreadcrumb(lastItem, activatedRouteSnapshot) {
|
|
209
|
-
if (lastItem) {
|
|
210
|
-
const { queryParams, fragment } = activatedRouteSnapshot;
|
|
211
|
-
lastItem.queryParams = queryParams ? { ...queryParams } : undefined;
|
|
212
|
-
lastItem.fragment = fragment ?? void 0;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* For a specific route, breadcrumb can be defined either on parent OR it's child(which has empty path)
|
|
217
|
-
* When both are defined, child takes precedence
|
|
218
|
-
*
|
|
219
|
-
* Ex: Below we are setting breadcrumb on both parent and child.
|
|
220
|
-
* So, child takes precedence and "Defined On Child" is displayed for the route 'home'
|
|
221
|
-
* { path: 'home', loadChildren: './home/home.module#HomeModule' , data: {breadcrumb: "Defined On Module"}}
|
|
222
|
-
* AND
|
|
223
|
-
* children: [
|
|
224
|
-
* { path: '', component: ShowUserComponent, data: {breadcrumb: "Defined On Child" }
|
|
225
|
-
* ]
|
|
226
|
-
*/
|
|
227
|
-
_parseRouteData(routeConfig) {
|
|
228
|
-
if (isNull(routeConfig))
|
|
229
|
-
return void 0;
|
|
230
|
-
const { path, data } = routeConfig;
|
|
231
|
-
const breadcrumb = this._mergeWithBaseChildData(routeConfig, data?.['breadcrumb']);
|
|
232
|
-
return { path, breadcrumb };
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* get empty children of a module or Component. Empty child is the one with path: ''
|
|
236
|
-
* When parent and it's children (that has empty route path) define data merge them both with child taking precedence
|
|
237
|
-
*/
|
|
238
|
-
_mergeWithBaseChildData(routeConfig, config) {
|
|
239
|
-
if (!routeConfig) {
|
|
240
|
-
return this._extractObject(config);
|
|
241
|
-
}
|
|
242
|
-
let baseChild = void 0;
|
|
243
|
-
if (routeConfig.loadChildren) {
|
|
244
|
-
// To handle a module with empty child route
|
|
245
|
-
baseChild = routeConfig._loadedRoutes.find((route) => route.path === '');
|
|
246
|
-
}
|
|
247
|
-
else if (routeConfig.children) {
|
|
248
|
-
// To handle a component with empty child route
|
|
249
|
-
baseChild = routeConfig.children.find((route) => route.path === '');
|
|
250
|
-
}
|
|
251
|
-
const childConfig = baseChild?.data?.['breadcrumb'];
|
|
252
|
-
return childConfig
|
|
253
|
-
? this._mergeWithBaseChildData(baseChild, {
|
|
254
|
-
...this._extractObject(config),
|
|
255
|
-
...this._extractObject(childConfig),
|
|
256
|
-
})
|
|
257
|
-
: this._extractObject(config);
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Update the store to reuse for dynamic declarations
|
|
261
|
-
* If the store already has this route definition update it, else add
|
|
262
|
-
*/
|
|
263
|
-
_updateStore(key, breadcrumb) {
|
|
264
|
-
const storeItemIndex = this._dynamicBreadcrumbStore.findIndex(item => breadcrumb[key] === item[key]);
|
|
265
|
-
if (storeItemIndex > -1) {
|
|
266
|
-
this._dynamicBreadcrumbStore[storeItemIndex] = {
|
|
267
|
-
...this._dynamicBreadcrumbStore[storeItemIndex],
|
|
268
|
-
...breadcrumb,
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
272
|
-
this._dynamicBreadcrumbStore.push({ ...breadcrumb });
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* If breadcrumb is present in current breadcrumbs update it and emit new stream
|
|
277
|
-
*/
|
|
278
|
-
_updateCurrentBreadcrumbs(key, breadcrumb) {
|
|
279
|
-
const itemIndex = this._currentBreadcrumbs.findIndex(item => key === 'routeRegex'
|
|
280
|
-
? this._matchRegex(item.routeLink, breadcrumb[key])
|
|
281
|
-
: breadcrumb[key] === item[key]);
|
|
282
|
-
if (itemIndex > -1) {
|
|
283
|
-
this._currentBreadcrumbs[itemIndex] = {
|
|
284
|
-
...this._currentBreadcrumbs[itemIndex],
|
|
285
|
-
...breadcrumb,
|
|
286
|
-
};
|
|
287
|
-
const breadcrumbsToShow = this._currentBreadcrumbs.filter(item => !item.skip);
|
|
288
|
-
this._breadcrumbs.next([...breadcrumbsToShow]);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* For a route with path param, we create regex dynamically from angular route syntax
|
|
293
|
-
* '/mentor/:id' becomes '/mentor/[^/]',
|
|
294
|
-
* breadcrumbService.set('/mentor/:id', 'Uday') should update 'Uday' as label for '/mentor/2' OR 'mentor/ada'
|
|
295
|
-
*/
|
|
296
|
-
_buildRegex(path) {
|
|
297
|
-
return this._ensureLeadingSlash(path).replace(new RegExp(PATH_PARAM.REGEX_IDENTIFIER, 'g'), PATH_PARAM.REGEX_REPLACER);
|
|
298
|
-
}
|
|
299
|
-
_ensureLeadingSlash(path) {
|
|
300
|
-
return path.startsWith('/') ? path : `/${path}`;
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* In App's RouteConfig, breadcrumb can be defined as a string OR a function OR an object
|
|
304
|
-
*
|
|
305
|
-
* string: simple static breadcrumb label for a path
|
|
306
|
-
* function: callback that gets invoked with resolved path param
|
|
307
|
-
* object: additional data defined along with breadcrumb label that gets passed to *cmatBreadcrumbItem directive
|
|
308
|
-
*/
|
|
309
|
-
_extractLabel(config, resolvedParam) {
|
|
310
|
-
const label = typeof config === 'object' ? config.label : config;
|
|
311
|
-
if (typeof label === 'function') {
|
|
312
|
-
return label(resolvedParam);
|
|
313
|
-
}
|
|
314
|
-
return label;
|
|
315
|
-
}
|
|
316
|
-
_extractObject(config) {
|
|
317
|
-
// don't include {label} if config is undefined. This is important since we merge the configs
|
|
318
|
-
if (config &&
|
|
319
|
-
(typeof config === 'string' || typeof config === 'function')) {
|
|
320
|
-
return { label: config };
|
|
321
|
-
}
|
|
322
|
-
return config || {};
|
|
323
|
-
}
|
|
324
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatBreadcrumbService, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
325
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatBreadcrumbService, providedIn: 'root' }); }
|
|
326
|
-
}
|
|
327
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatBreadcrumbService, decorators: [{
|
|
328
|
-
type: Injectable,
|
|
329
|
-
args: [{
|
|
330
|
-
providedIn: 'root',
|
|
331
|
-
}]
|
|
332
|
-
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }] });
|
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUEwQyxjQUFjLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQWMsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFRbkQseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxHQUFHO0lBQ2YsTUFBTSxFQUFFLEdBQUc7SUFDWCxnQkFBZ0IsRUFBRSxTQUFTO0lBQzNCLGNBQWMsRUFBRSxRQUFRO0NBQzNCLENBQUM7QUFHRixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUM7QUFDekIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFRLEVBQVcsRUFBRSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFLN0UsTUFBTSxPQUFPLHFCQUFxQjtJQXlCOUIsWUFBb0IsZUFBK0IsRUFBVSxPQUFlO1FBQXhELG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVE7UUF4QnBFLGNBQVMsR0FBRyxHQUFHLENBQUM7UUFFaEIsb0JBQWUsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUM3RDs7OztXQUlHO1FBQ0ssNEJBQXVCLEdBQStCLEVBQUUsQ0FBQztRQUVqRTs7OztXQUlHO1FBQ0ssd0JBQW1CLEdBQStCLEVBQUUs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O1lBQzlCLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sY0FBYyxDQUFDLE1BQTRCO1FBQy9DLDZGQUE2RjtRQUM3RixJQUNJLE1BQU07WUFDTixDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsRUFDOUQsQ0FBQztZQUNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQVEsTUFBK0IsSUFBSSxFQUFFLENBQUM7SUFDbEQsQ0FBQzs4R0F2WVEscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs7MkZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgR3VhcmRzQ2hlY2tFbmQsIFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBpc051bGwgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENtYXRCcmVhZGNydW1iIH0gZnJvbSAnLi90eXBlcy9icmVhZGNydW1iJztcclxuaW1wb3J0IHsgQ21hdEJyZWFkY3J1bWJGdW5jdGlvbiwgQ21hdEJyZWFkY3J1bWJPYmplY3QsIH0gZnJvbSAnLi90eXBlcy9icmVhZGNydW1iLmNvbmZpZyc7XHJcblxyXG50eXBlIENtYXRCcmVhZGNydW1iQ29uZmlnID0gQ21hdEJyZWFkY3J1bWJPYmplY3QgfCBDbWF0QnJlYWRjcnVtYkZ1bmN0aW9uIHwgc3RyaW5nO1xyXG50eXBlIFN0b3JlTWF0Y2hlcktleSA9ICdyb3V0ZUxpbmsnIHwgJ3JvdXRlUmVnZXgnIHwgJ2FsaWFzJztcclxuZXhwb3J0IHR5cGUgQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uID0gQ21hdEJyZWFkY3J1bWIgJiBDbWF0QnJlYWRjcnVtYk9iamVjdDtcclxuXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xyXG5jb25zdCBQQVRIX1BBUkFNID0ge1xyXG4gICAgUFJFRklYOiAnOicsXHJcbiAgICBSRUdFWF9JREVOVElGSUVSOiAnLzpbXi9dKycsXHJcbiAgICBSRUdFWF9SRVBMQUNFUjogJy9bXi9dKycsXHJcbn07XHJcblxyXG5cclxuY29uc3QgQUxJQVNfUFJFRklYID0gJ0AnO1xyXG5jb25zdCBpc05vbkVtcHR5ID0gKG9iajogYW55KTogYm9vbGVhbiA9PiBvYmogJiYgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPiAwO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdEJyZWFkY3J1bWJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgX2Jhc2VIcmVmID0gJy8nO1xyXG5cclxuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIC8qKlxyXG4gICAgICogZHluYW1pY0JyZWFkY3J1bWJTdG9yZSBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBkeW5hbWljYWxseSB1cGRhdGVkIGJyZWFkY3J1bWJzLlxyXG4gICAgICogQnJlYWRjcnVtYnMgY2FuIGJlIHNldCBmcm9tIGFueXdoZXJlIChjb21wb25lbnQsIHNlcnZpY2UpIGluIHRoZSBhcHAuXHJcbiAgICAgKiBPbiBldmVyeSBicmVhZGNydW1iIHVwZGF0ZSBjaGVjayB0aGlzIHN0b3JlIGFuZCB1c2UgdGhlIGluZm8gaWYgYXZhaWxhYmxlLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9keW5hbWljQnJlYWRjcnVtYlN0b3JlOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogYnJlYWRjcnVtYkxpc3QgZm9yIHRoZSBjdXJyZW50IHJvdXRlXHJcbiAgICAgKiBXaGVuIGJyZWFkY3J1bWIgaW5mbyBpcyBjaGFuZ2VkIGR5bmFtaWNhbGx5LCBjaGVjayBpZiB0aGUgY3VycmVudEJyZWFkY3J1bWJzIGlzIGVmZmVjdGVkXHJcbiAgICAgKiBJZiBlZmZlY3RlZCwgdXBkYXRlIHRoZSBjaGFuZ2UgYW5kIGVtaXQgYSBuZXcgc3RyZWFtXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2N1cnJlbnRCcmVhZGNydW1iczogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10gPSBbXTtcclxuICAgIHByaXZhdGUgX3ByZXZpb3VzQnJlYWRjcnVtYnM6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbltdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCcmVhZGNydW1icyBvYnNlcnZhYmxlIHRvIGJlIHN1YnNjcmliZWQgYnkgQnJlYWRjcnVtYkNvbXBvbmVudFxyXG4gICAgICogRW1pdHMgb24gZXZlcnkgcm91dGUgY2hhbmdlIE9SIGR5bmFtaWMgdXBkYXRlIG9mIGJyZWFkY3J1bWJcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYnJlYWRjcnVtYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbltdPihbXSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgICAgIHRoaXMuX2RldGVjdFJvdXRlQ2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBicmVhZGNydW1icyQoKTogT2JzZXJ2YWJsZTxDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9icmVhZGNydW1icy5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUFsbC5uZXh0KHZvaWQgMCk7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSBicmVhZGNydW1iIGR5bmFtaWNhbGx5XHJcbiAgICAgKlxyXG4gICAgICoga2V5IGNhbiBiZSBhIHBhdGggfCBhbGlhc1xyXG4gICAgICpcclxuICAgICAqIDEpIFVzaW5nIGNvbXBsZXRlIHJvdXRlIHBhdGguIHJvdXRlIGNhbiBiZSBwYXNzZWQgdGhlIHNhbWUgd2F5IHlvdSBkZWZpbmUgYW5ndWxhciByb3V0ZXNcclxuICAgICAqIC0gcGF0aCBjYW4gYmUgcGFzc2VkIGFzICdleGFjdCBwYXRoKHJvdXRlTGluayknIG9yICdwYXRoIHdpdGggcGFyYW1zKHJvdXRlUmVnZXgpJ1xyXG4gICAgICogLSB1cGRhdGUgbGFiZWwgRXg6IHNldCgnL21lbnRvcicsICdNZW50b3InKSwgc2V0KCcvbWVudG9yLzppZCcsICdNZW50b3IgRGV0YWlscycpXHJcbiAgICAgKiAtIGNoYW5nZSB2aXNpYmlsaXR5IEV4OiBzZXQoJy9tZW50b3IvOmlkL2VkaXQnLCB7IHNraXA6IHRydWUgfSlcclxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPUiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAqIDIpIFVzaW5nIHJvdXRlIGFsaWFzIChwcmVmaXhlZCB3aXRoICdAJykuIGFsaWFzIHNob3VsZCBiZSB1bmlxdWUgZm9yIGEgcm91dGVcclxuICAgICAqIC0gdXBkYXRlIGxhYmVsIEV4OiBzZXQoJ0BtZW50b3InLCAnRW5hYmxlcicpXHJcbiAgICAgKiAtIGNoYW5nZSB2aXNpYmlsaXR5IEV4OiBzZXQoJ0BtZW50b3JFZGl0JywgeyBza2lwOiB0cnVlIH0pXHJcbiAgICAgKlxyXG4gICAgICpcclxuICAgICAqIHZhbHVlIGNhbiBiZSBzdHJpbmcgfCBCcmVhZGNydW1iT2JqZWN0IHwgQnJlYWRjcnVtYkZ1bmN0aW9uXHJcbiAgICAgKi9cclxuICAgIHNldChrZXk6IHN0cmluZywgYnJlYWRjcnVtYjogc3RyaW5nIHwgQ21hdEJyZWFkY3J1bWJPYmplY3QpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBicmVhZGNydW1iT2JqZWN0ID0gdGhpcy5fZXh0cmFjdE9iamVjdChicmVhZGNydW1iKTtcclxuICAgICAgICBsZXQgdXBkYXRlQXJnczogW1N0b3JlTWF0Y2hlcktleSwgQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uXTtcclxuXHJcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKEFMSUFTX1BSRUZJWCkpIHtcclxuICAgICAgICAgICAgdXBkYXRlQXJncyA9IFsnYWxpYXMnLCB7IC4uLmJyZWFkY3J1bWJPYmplY3QsIGFsaWFzOiBrZXkuc2xpY2UoMSkgfV07XHJcbiAgICAgICAgfSBlbHNlIGlmIChrZXkuaW5jbHVkZXMoUEFUSF9QQVJBTS5QUkVGSVgpKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUFyZ3MgPSBbXHJcbiAgICAgICAgICAgICAgICAncm91dGVSZWdleCcsXHJcbiAgICAgICAgICAgICAgICB7IC4uLmJyZWFkY3J1bWJPYmplY3QsIHJvdXRlUmVnZXg6IHRoaXMuX2J1aWxkUmVnZXgoa2V5KSB9LFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUFyZ3MgPSBbXHJcbiAgICAgICAgICAgICAgICAncm91dGVMaW5rJyxcclxuICAgICAgICAgICAgICAgIHsgLi4uYnJlYWRjcnVtYk9iamVjdCwgcm91dGVMaW5rOiB0aGlzLl9lbnN1cmVMZWFkaW5nU2xhc2goa2V5KSB9LFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRm9yIHRoaXMgcm91dGUgaWYgcHJldmlvdXNseSBhIGJyZWFkY3J1bWIgaXMgbm90IGRlZmluZWQgdGhhdCBzZXRzIGlzQXV0b0dlbmVyYXRlZExhYmVsOiB0cnVlXHJcbiAgICAgICAgLy8gY2hhbmdlIGl0IHRvIGZhbHNlIHNpbmNlIHRoaXMgaXMgdXNlciBzdXBwbGllZCB2YWx1ZVxyXG4gICAgICAgIHVwZGF0ZUFyZ3NbMV0uaXNBdXRvR2VuZXJhdGVkTGFiZWwgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5fdXBkYXRlU3RvcmUoLi4udXBkYXRlQXJncyk7XHJcbiAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEJyZWFkY3J1bWJzKC4uLnVwZGF0ZUFyZ3MpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGVuZXZlciByb3V0ZSBjaGFuZ2VzIGJ1aWxkIGJyZWFkY3J1bWIgbGlzdCBhZ2FpblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kZXRlY3RSb3V0ZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gU3BlY2lhbCBjYXNlIHdoZXJlIGJyZWFkY3J1bWIgc2VydmljZSAmIGNvbXBvbmVudCBpbnN0YW50aWF0ZXMgYWZ0ZXIgYSByb3V0ZSBpcyBuYXZpZ2F0ZWQuXHJcbiAgICAgICAgLy8gRXg6IHB1dCBicmVhZGNydW1icyB3aXRoaW4gKm5nSWYgYW5kIHRoaXMucm91dGVyLmV2ZW50cyB3b3VsZCBiZSBlbXB0eVxyXG4gICAgICAgIC8vIFRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGVyZSAgeyBpbml0aWFsTmF2aWdhdGlvbjogJ2VuYWJsZWRCbG9ja2luZycgfSBpcyBhcHBsaWVkIHRvIHJvdXRlc1xyXG4gICAgICAgIHRoaXMuX3NldHVwQnJlYWRjcnVtYnModGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QpO1xyXG5cclxuICAgICAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlQWxsKSxcclxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBHdWFyZHNDaGVja0VuZCA9PiBldmVudCBpbnN0YW5jZW9mIEd1YXJkc0NoZWNrRW5kKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGFjdGl2YXRlZFJvdXRlIGRvZXNuJ3QgY2FycnkgZGF0YSB3aGVuIHNob3VsZFJldXNlUm91dGUgcmV0dXJucyBmYWxzZVxyXG4gICAgICAgICAgICAgICAgLy8gdXNlIHRoZSBldmVudCBkYXRhIHdpdGggR3VhcmRzQ2hlY2tFbmQgYXMgd29ya2Fyb3VuZFxyXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHNob3VsZEFjdGl2YXRlIGluIGNhc2Ugd2hlcmUgdGhlIGF1dGhHdWFyZCByZXR1cm5zIGZhbHNlIHRoZSBicmVhZGNydW1icyBzaG91bGRuJ3QgYmUgY2hhbmdlZFxyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnNob3VsZEFjdGl2YXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBCcmVhZGNydW1icyhldmVudC5zdGF0ZS5yb290KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2V0dXBCcmVhZGNydW1icyhhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcHJldmlvdXNCcmVhZGNydW1icyA9IHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icztcclxuICAgICAgICAvLyBicmVhZGNydW1iIGxhYmVsIGZvciBiYXNlIE9SIHJvb3QgcGF0aC4gVXN1YWxseSwgdGhpcyBjYW4gYmUgc2V0IGFzICdIb21lJ1xyXG4gICAgICAgIGNvbnN0IHJvb3RCcmVhZGNydW1iID0gdGhpcy5fZ2V0Um9vdEJyZWFkY3J1bWIoKTtcclxuICAgICAgICB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnMgPSByb290QnJlYWRjcnVtYiA/IFtyb290QnJlYWRjcnVtYl0gOiBbXTtcclxuICAgICAgICB0aGlzLl9wcmVwYXJlQnJlYWRjcnVtYkxpc3QoYWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgdGhpcy5fYmFzZUhyZWYpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldFJvb3RCcmVhZGNydW1iKCk6IENtYXRCcmVhZGNydW1iIHwgdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgcm9vdENvbmZpZyA9IHRoaXMuX3JvdXRlci5jb25maWcuZmluZChjb25maWcgPT4gY29uZmlnLnBhdGggPT09ICcnKTtcclxuICAgICAgICBjb25zdCByb290QnJlYWRjcnVtYiA9IHRoaXMuX2V4dHJhY3RPYmplY3Qocm9vdENvbmZpZz8uZGF0YT8uWydicmVhZGNydW1iJ10pO1xyXG4gICAgICAgIGNvbnN0IHN0b3JlSXRlbSA9IHRoaXMuX2dldEZyb21TdG9yZSgnLycsIHJvb3RCcmVhZGNydW1iLmFsaWFzKTtcclxuXHJcbiAgICAgICAgaWYgKGlzTm9uRW1wdHkocm9vdEJyZWFkY3J1bWIpIHx8IGlzTm9uRW1wdHkoc3RvcmVJdGVtKSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RvcmVJdGVtLFxyXG4gICAgICAgICAgICAgICAgLi4ucm9vdEJyZWFkY3J1bWIsXHJcbiAgICAgICAgICAgICAgICByb3V0ZUxpbms6IHRoaXMuX2Jhc2VIcmVmLFxyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZ2V0UXVlcnlQYXJhbXNGcm9tUHJldmlvdXNMaXN0KCcvJyksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ByZXBhcmVCcmVhZGNydW1iSXRlbShcclxuICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgICAgIHJvdXRlTGlua1ByZWZpeDogc3RyaW5nXHJcbiAgICApOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb24ge1xyXG4gICAgICAgIGNvbnN0IHsgcGF0aCwgYnJlYWRjcnVtYiB9ID0gdGhpcy5fcGFyc2VSb3V0ZURhdGEoXHJcbiAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3Qucm91dGVDb25maWdcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBjb25zdCByZXNvbHZlZFNlZ21lbnQgPSB0aGlzLl9yZXNvbHZlUGF0aFNlZ21lbnQocGF0aCwgYWN0aXZhdGVkUm91dGVTbmFwc2hvdCk7XHJcbiAgICAgICAgY29uc3Qgcm91dGVMaW5rID0gYCR7cm91dGVMaW5rUHJlZml4fSR7cmVzb2x2ZWRTZWdtZW50fWA7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVJdGVtID0gdGhpcy5fZ2V0RnJvbVN0b3JlKHJvdXRlTGluaywgYnJlYWRjcnVtYi5hbGlhcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5fZXh0cmFjdExhYmVsKFxyXG4gICAgICAgICAgICBzdG9yZUl0ZW0/LmxhYmVsID8/IGJyZWFkY3J1bWI/LmxhYmVsLFxyXG4gICAgICAgICAgICByZXNvbHZlZFNlZ21lbnRcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBpc0F1dG9HZW5lcmF0ZWRMYWJlbCA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBhdXRvR2VuZXJhdGVkTGFiZWwgPSAnJztcclxuICAgICAgICBpZiAoIWxhYmVsKSB7XHJcbiAgICAgICAgICAgIGlzQXV0b0dlbmVyYXRlZExhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgICAgYXV0b0dlbmVyYXRlZExhYmVsID0gcmVzb2x2ZWRTZWdtZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uc3RvcmVJdGVtLFxyXG4gICAgICAgICAgICAuLi5icmVhZGNydW1iLFxyXG4gICAgICAgICAgICBsYWJlbDogaXNBdXRvR2VuZXJhdGVkTGFiZWwgPyBhdXRvR2VuZXJhdGVkTGFiZWwgOiBsYWJlbCxcclxuICAgICAgICAgICAgcm91dGVMaW5rLFxyXG4gICAgICAgICAgICBpc0F1dG9HZW5lcmF0ZWRMYWJlbCxcclxuICAgICAgICAgICAgLi4udGhpcy5fZ2V0UXVlcnlQYXJhbXNGcm9tUHJldmlvdXNMaXN0KHJvdXRlTGluayksXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlQnJlYWRjcnVtYkxpc3QoXHJcbiAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICByb3V0ZUxpbmtQcmVmaXg6IHN0cmluZ1xyXG4gICAgKTogQ21hdEJyZWFkY3J1bWJbXSB8IHZvaWQge1xyXG4gICAgICAgIGlmIChhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnJvdXRlQ29uZmlnPy5wYXRoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWJJdGVtID0gdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJJdGVtKFxyXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICAgICAgICAgIHJvdXRlTGlua1ByZWZpeFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iSXRlbSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJMaXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1iSXRlbS5yb3V0ZUxpbmsgKyAnLydcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJMaXN0KFxyXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkLFxyXG4gICAgICAgICAgICAgICAgcm91dGVMaW5rUHJlZml4XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGxhc3RDcnVtYiA9IHRoaXMuX2N1cnJlbnRCcmVhZGNydW1ic1tcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmxlbmd0aCAtIDFcclxuICAgICAgICBdO1xyXG4gICAgICAgIHRoaXMuX3NldFF1ZXJ5UGFyYW1zRm9yQWN0aXZlQnJlYWRjcnVtYihsYXN0Q3J1bWIsIGFjdGl2YXRlZFJvdXRlU25hcHNob3QpO1xyXG5cclxuICAgICAgICAvLyByZW1vdmUgYnJlYWRjcnVtYiBpdGVtcyB0aGF0IG5lZWRzIHRvIGJlIGhpZGRlblxyXG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzVG9TaG93ID0gdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmZpbHRlcihcclxuICAgICAgICAgICAgaXRlbSA9PiAhaXRlbS5za2lwXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9icmVhZGNydW1icy5uZXh0KGJyZWFkY3J1bWJzVG9TaG93KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRGcm9tU3RvcmUocm91dGVMaW5rOiBzdHJpbmcsIGFsaWFzPzogc3RyaW5nKTogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uIHwgdm9pZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmUuZmluZChpdGVtID0+IChcclxuICAgICAgICAgICAgKChhbGlhcyAmJiBhbGlhcyA9PT0gaXRlbS5hbGlhcykgPz8gZmFsc2UpIHx8IChyb3V0ZUxpbmsgJiYgcm91dGVMaW5rID09PSBpdGVtLnJvdXRlTGluaykgfHwgdGhpcy5fbWF0Y2hSZWdleChyb3V0ZUxpbmssIGl0ZW0ucm91dGVSZWdleClcclxuICAgICAgICApKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHVzZSBleGFjdCBtYXRjaCBpbnN0ZWFkIG9mIHJlZ2V4cC50ZXN0XHJcbiAgICAgKiBmb3IgL21lbnRvci9bXi9dKyB3ZSBzaG91bGQgbWF0Y2ggJy9tZW50b3IvMTInIGJ1dCBub3QgJy9tZW50b3IvMTIvYWJjJ1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9tYXRjaFJlZ2V4KHJvdXRlTGluaz86IHN0cmluZywgcm91dGVSZWdleD86IHN0cmluZyk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgICAgICBpZiAocm91dGVSZWdleCAmJiByb3V0ZUxpbmspIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBuZXcgUmVnRXhwKHJvdXRlUmVnZXgpLmV4ZWMocm91dGVMaW5rKTtcclxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzBdID09PSByb3V0ZUxpbms7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGlmIHRoZSBwYXRoIHNlZ21lbnQgaGFzIHJvdXRlIHBhcmFtcywgcmVhZCB0aGUgcGFyYW0gdmFsdWUgZnJvbSB1cmxcclxuICAgICAqIGZvciBlYWNoIHNlZ21lbnQgb2Ygcm91dGUgdGhpcyBnZXRzIGNhbGxlZFxyXG4gICAgICpcclxuICAgICAqIGZvciBtZW50b3IvOmlkL3ZpZXcgLSBpdCBnZXRzIGNhbGxlZCB3aXRoIG1lbnRvciwgOmlkLCB2aWV3IDMgdGltZXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcmVzb2x2ZVBhdGhTZWdtZW50KHNlZ21lbnQ6IHN0cmluZywgYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IHN0cmluZyB7XHJcbiAgICAgICAgLy9xdWlyayAtc2VnbWVudCBjYW4gYmUgZGVmaW5lZCBhcyB2aWV3LzppZCBpbiByb3V0ZSBjb25maWcgaW4gd2hpY2ggY2FzZSB5b3UgbmVlZCB0byBtYWtlIGl0IHZpZXcvPHJlc29sdmVkLXBhcmFtPlxyXG4gICAgICAgIGlmIChzZWdtZW50LmluY2x1ZGVzKFBBVEhfUEFSQU0uUFJFRklYKSkge1xyXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnBhcmFtcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzZWdtZW50ID0gc2VnbWVudC5yZXBsYWNlKGA6JHtrZXl9YCwgYCR7dmFsdWV9YCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2VnbWVudDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHF1ZXJ5UGFyYW1zICYgZnJhZ21lbnRzIGZvciBwcmV2aW91cyBicmVhZGNydW1iIHBhdGggYXJlIGNvcGllZCBvdmVyIHRvIG5ldyBsaXN0XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2dldFF1ZXJ5UGFyYW1zRnJvbVByZXZpb3VzTGlzdChyb3V0ZUxpbms6IHN0cmluZyk6IENtYXRCcmVhZGNydW1iIHtcclxuICAgICAgICBjb25zdCB7IHF1ZXJ5UGFyYW1zLCBmcmFnbWVudCB9ID1cclxuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNCcmVhZGNydW1icy5maW5kKGl0ZW0gPT4gaXRlbS5yb3V0ZUxpbmsgPT09IHJvdXRlTGluaykgPz9cclxuICAgICAgICAgICAge307XHJcbiAgICAgICAgcmV0dXJuIHsgcXVlcnlQYXJhbXMsIGZyYWdtZW50IH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXQgY3VycmVudCBhY3RpdmF0ZWQgcm91dGUgcXVlcnkgcGFyYW1zIHRvIHRoZSBsYXN0IGJyZWFkY3J1bWIgaXRlbVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zZXRRdWVyeVBhcmFtc0ZvckFjdGl2ZUJyZWFkY3J1bWIoXHJcbiAgICAgICAgbGFzdEl0ZW06IENtYXRCcmVhZGNydW1iLFxyXG4gICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3RcclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIGlmIChsYXN0SXRlbSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHF1ZXJ5UGFyYW1zLCBmcmFnbWVudCB9ID0gYWN0aXZhdGVkUm91dGVTbmFwc2hvdDtcclxuICAgICAgICAgICAgbGFzdEl0ZW0ucXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcyA/IHsgLi4ucXVlcnlQYXJhbXMgfSA6IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgbGFzdEl0ZW0uZnJhZ21lbnQgPSBmcmFnbWVudCA/PyB2b2lkIDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9yIGEgc3BlY2lmaWMgcm91dGUsIGJyZWFkY3J1bWIgY2FuIGJlIGRlZmluZWQgZWl0aGVyIG9uIHBhcmVudCBPUiBpdCdzIGNoaWxkKHdoaWNoIGhhcyBlbXB0eSBwYXRoKVxyXG4gICAgICogV2hlbiBib3RoIGFyZSBkZWZpbmVkLCBjaGlsZCB0YWtlcyBwcmVjZWRlbmNlXHJcbiAgICAgKlxyXG4gICAgICogRXg6IEJlbG93IHdlIGFyZSBzZXR0aW5nIGJyZWFkY3J1bWIgb24gYm90aCBwYXJlbnQgYW5kIGNoaWxkLlxyXG4gICAgICogU28sIGNoaWxkIHRha2VzIHByZWNlZGVuY2UgYW5kIFwiRGVmaW5lZCBPbiBDaGlsZFwiIGlzIGRpc3BsYXllZCBmb3IgdGhlIHJvdXRlICdob21lJ1xyXG4gICAgICogeyBwYXRoOiAnaG9tZScsIGxvYWRDaGlsZHJlbjogJy4vaG9tZS9ob21lLm1vZHVsZSNIb21lTW9kdWxlJyAsIGRhdGE6IHticmVhZGNydW1iOiBcIkRlZmluZWQgT24gTW9kdWxlXCJ9fVxyXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkRcclxuICAgICAqIGNoaWxkcmVuOiBbXHJcbiAgICAgKiAgIHsgcGF0aDogJycsIGNvbXBvbmVudDogU2hvd1VzZXJDb21wb25lbnQsIGRhdGE6IHticmVhZGNydW1iOiBcIkRlZmluZWQgT24gQ2hpbGRcIiB9XHJcbiAgICAgKiBdXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3BhcnNlUm91dGVEYXRhKHJvdXRlQ29uZmlnOiBSb3V0ZSB8IG51bGwpOiBhbnkge1xyXG4gICAgICAgIGlmIChpc051bGwocm91dGVDb25maWcpKVxyXG4gICAgICAgICAgICByZXR1cm4gdm9pZCAwO1xyXG5cclxuICAgICAgICBjb25zdCB7IHBhdGgsIGRhdGEgfSA9IHJvdXRlQ29uZmlnO1xyXG4gICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLl9tZXJnZVdpdGhCYXNlQ2hpbGREYXRhKFxyXG4gICAgICAgICAgICByb3V0ZUNvbmZpZyxcclxuICAgICAgICAgICAgZGF0YT8uWydicmVhZGNydW1iJ11cclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4geyBwYXRoLCBicmVhZGNydW1iIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBnZXQgZW1wdHkgY2hpbGRyZW4gb2YgYSBtb2R1bGUgb3IgQ29tcG9uZW50LiBFbXB0eSBjaGlsZCBpcyB0aGUgb25lIHdpdGggcGF0aDogJydcclxuICAgICAqIFdoZW4gcGFyZW50IGFuZCBpdCdzIGNoaWxkcmVuICh0aGF0IGhhcyBlbXB0eSByb3V0ZSBwYXRoKSBkZWZpbmUgZGF0YSBtZXJnZSB0aGVtIGJvdGggd2l0aCBjaGlsZCB0YWtpbmcgcHJlY2VkZW5jZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9tZXJnZVdpdGhCYXNlQ2hpbGREYXRhKFxyXG4gICAgICAgIHJvdXRlQ29uZmlnOiBhbnksXHJcbiAgICAgICAgY29uZmlnOiBDbWF0QnJlYWRjcnVtYkNvbmZpZ1xyXG4gICAgKTogQ21hdEJyZWFkY3J1bWJPYmplY3Qge1xyXG4gICAgICAgIGlmICghcm91dGVDb25maWcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2V4dHJhY3RPYmplY3QoY29uZmlnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBiYXNlQ2hpbGQ6IFJvdXRlIHwgdm9pZCA9IHZvaWQgMDtcclxuICAgICAgICBpZiAocm91dGVDb25maWcubG9hZENoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIC8vIFRvIGhhbmRsZSBhIG1vZHVsZSB3aXRoIGVtcHR5IGNoaWxkIHJvdXRlXHJcbiAgICAgICAgICAgIGJhc2VDaGlsZCA9IHJvdXRlQ29uZmlnLl9sb2FkZWRSb3V0ZXMuZmluZCgocm91dGU6IHsgcGF0aDogc3RyaW5nOyB9KSA9PiByb3V0ZS5wYXRoID09PSAnJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChyb3V0ZUNvbmZpZy5jaGlsZHJlbikge1xyXG4gICAgICAgICAgICAvLyBUbyBoYW5kbGUgYSBjb21wb25lbnQgd2l0aCBlbXB0eSBjaGlsZCByb3V0ZVxyXG4gICAgICAgICAgICBiYXNlQ2hpbGQgPSByb3V0ZUNvbmZpZy5jaGlsZHJlbi5maW5kKChyb3V0ZTogeyBwYXRoOiBzdHJpbmc7IH0pID0+IHJvdXRlLnBhdGggPT09ICcnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNoaWxkQ29uZmlnID0gYmFzZUNoaWxkPy5kYXRhPy5bJ2JyZWFkY3J1bWInXTtcclxuICAgICAgICByZXR1cm4gY2hpbGRDb25maWdcclxuICAgICAgICAgICAgPyB0aGlzLl9tZXJnZVdpdGhCYXNlQ2hpbGREYXRhKGJhc2VDaGlsZCwge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZXh0cmFjdE9iamVjdChjb25maWcpLFxyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZXh0cmFjdE9iamVjdChjaGlsZENvbmZpZyksXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIDogdGhpcy5fZXh0cmFjdE9iamVjdChjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlIHRoZSBzdG9yZSB0byByZXVzZSBmb3IgZHluYW1pYyBkZWNsYXJhdGlvbnNcclxuICAgICAqIElmIHRoZSBzdG9yZSBhbHJlYWR5IGhhcyB0aGlzIHJvdXRlIGRlZmluaXRpb24gdXBkYXRlIGl0LCBlbHNlIGFkZFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF91cGRhdGVTdG9yZShrZXk6IHN0cmluZywgYnJlYWRjcnVtYjogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVJdGVtSW5kZXggPSB0aGlzLl9keW5hbWljQnJlYWRjcnVtYlN0b3JlLmZpbmRJbmRleChpdGVtID0+IChicmVhZGNydW1iIGFzIGFueSlba2V5XSA9PT0gKGl0ZW0gYXMgYW55KVtrZXldKTtcclxuICAgICAgICBpZiAoc3RvcmVJdGVtSW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLl9keW5hbWljQnJlYWRjcnVtYlN0b3JlW3N0b3JlSXRlbUluZGV4XSA9IHtcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmVbc3RvcmVJdGVtSW5kZXhdLFxyXG4gICAgICAgICAgICAgICAgLi4uYnJlYWRjcnVtYixcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9keW5hbWljQnJlYWRjcnVtYlN0b3JlLnB1c2goeyAuLi5icmVhZGNydW1iIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIElmIGJyZWFkY3J1bWIgaXMgcHJlc2VudCBpbiBjdXJyZW50IGJyZWFkY3J1bWJzIHVwZGF0ZSBpdCBhbmQgZW1pdCBuZXcgc3RyZWFtXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3VwZGF0ZUN1cnJlbnRCcmVhZGNydW1icyhcclxuICAgICAgICBrZXk6IHN0cmluZyxcclxuICAgICAgICBicmVhZGNydW1iOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25cclxuICAgICk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icy5maW5kSW5kZXgoaXRlbSA9PiBrZXkgPT09ICdyb3V0ZVJlZ2V4J1xyXG4gICAgICAgICAgICA/IHRoaXMuX21hdGNoUmVnZXgoaXRlbS5yb3V0ZUxpbmssIGJyZWFkY3J1bWJba2V5XSlcclxuICAgICAgICAgICAgOiAoYnJlYWRjcnVtYiBhcyBhbnkpW2tleV0gPT09IChpdGVtIGFzIGFueSlba2V5XSk7XHJcbiAgICAgICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRCcmVhZGNydW1ic1tpdGVtSW5kZXhdID0ge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fY3VycmVudEJyZWFkY3J1bWJzW2l0ZW1JbmRleF0sXHJcbiAgICAgICAgICAgICAgICAuLi5icmVhZGNydW1iLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1ic1RvU2hvdyA9IHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICBpdGVtID0+ICFpdGVtLnNraXBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5fYnJlYWRjcnVtYnMubmV4dChbLi4uYnJlYWRjcnVtYnNUb1Nob3ddKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3IgYSByb3V0ZSB3aXRoIHBhdGggcGFyYW0sIHdlIGNyZWF0ZSByZWdleCBkeW5hbWljYWxseSBmcm9tIGFuZ3VsYXIgcm91dGUgc3ludGF4XHJcbiAgICAgKiAnL21lbnRvci86aWQnIGJlY29tZXMgJy9tZW50b3IvW14vXScsXHJcbiAgICAgKiBicmVhZGNydW1iU2VydmljZS5zZXQoJy9tZW50b3IvOmlkJywgJ1VkYXknKSBzaG91bGQgdXBkYXRlICdVZGF5JyBhcyBsYWJlbCBmb3IgJy9tZW50b3IvMicgT1IgJ21lbnRvci9hZGEnXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2J1aWxkUmVnZXgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZW5zdXJlTGVhZGluZ1NsYXNoKHBhdGgpLnJlcGxhY2UoXHJcbiAgICAgICAgICAgIG5ldyBSZWdFeHAoUEFUSF9QQVJBTS5SRUdFWF9JREVOVElGSUVSLCAnZycpLFxyXG4gICAgICAgICAgICBQQVRIX1BBUkFNLlJFR0VYX1JFUExBQ0VSXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9lbnN1cmVMZWFkaW5nU2xhc2gocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKCcvJykgPyBwYXRoIDogYC8ke3BhdGh9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluIEFwcCdzIFJvdXRlQ29uZmlnLCBicmVhZGNydW1iIGNhbiBiZSBkZWZpbmVkIGFzIGEgc3RyaW5nIE9SIGEgZnVuY3Rpb24gT1IgYW4gb2JqZWN0XHJcbiAgICAgKlxyXG4gICAgICogc3RyaW5nOiBzaW1wbGUgc3RhdGljIGJyZWFkY3J1bWIgbGFiZWwgZm9yIGEgcGF0aFxyXG4gICAgICogZnVuY3Rpb246IGNhbGxiYWNrIHRoYXQgZ2V0cyBpbnZva2VkIHdpdGggcmVzb2x2ZWQgcGF0aCBwYXJhbVxyXG4gICAgICogb2JqZWN0OiBhZGRpdGlvbmFsIGRhdGEgZGVmaW5lZCBhbG9uZyB3aXRoIGJyZWFkY3J1bWIgbGFiZWwgdGhhdCBnZXRzIHBhc3NlZCB0byAqY21hdEJyZWFkY3J1bWJJdGVtIGRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9leHRyYWN0TGFiZWwoY29uZmlnOiBDbWF0QnJlYWRjcnVtYkNvbmZpZywgcmVzb2x2ZWRQYXJhbT86IHN0cmluZyk6IHN0cmluZyB8IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgPyBjb25maWcubGFiZWwgOiBjb25maWc7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBsYWJlbCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbGFiZWwocmVzb2x2ZWRQYXJhbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9leHRyYWN0T2JqZWN0KGNvbmZpZzogQ21hdEJyZWFkY3J1bWJDb25maWcpOiBDbWF0QnJlYWRjcnVtYk9iamVjdCB7XHJcbiAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSB7bGFiZWx9IGlmIGNvbmZpZyBpcyB1bmRlZmluZWQuIFRoaXMgaXMgaW1wb3J0YW50IHNpbmNlIHdlIG1lcmdlIHRoZSBjb25maWdzXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBjb25maWcgJiZcclxuICAgICAgICAgICAgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBjb25maWcgPT09ICdmdW5jdGlvbicpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBjb25maWcgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIChjb25maWcgYXMgQ21hdEJyZWFkY3J1bWJPYmplY3QpIHx8IHt9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21hdC1jb21wb25lbnRzLWJyZWFkY3J1bWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvYnJlYWRjcnVtYi9jbWF0LWNvbXBvbmVudHMtYnJlYWRjcnVtYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from './breadcrumb-item.directive';
|
|
2
|
-
export * from './breadcrumb.component';
|
|
3
|
-
export * from './breadcrumb.service';
|
|
4
|
-
export * from './types/breadcrumb';
|
|
5
|
-
export * from './types/breadcrumb.config';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9icmVhZGNydW1iL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1iLWl0ZW0uZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1iLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9icmVhZGNydW1iJztcclxuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9icmVhZGNydW1iLmNvbmZpZyc7Il19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvYnJlYWRjcnVtYi90eXBlcy9icmVhZGNydW1iLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ21hdEJyZWFkY3J1bWIgfSBmcm9tICcuL2JyZWFkY3J1bWInO1xyXG5cclxuLyoqXHJcbiAqIEJyZWFkY3J1bWIgY29uZmlnIHByb3ZpZGVkIGFzIHBhcnQgb2YgQXBwIFJvdXRlIENvbmZpZ1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDbWF0QnJlYWRjcnVtYk9iamVjdCB7XHJcbiAgICAvKipcclxuICAgICAqIGJyZWFkY3J1bWIgbGFiZWwgZm9yIGEgcm91dGVcclxuICAgICAqL1xyXG4gICAgbGFiZWw/OiBzdHJpbmcgfCBDbWF0QnJlYWRjcnVtYkZ1bmN0aW9uO1xyXG4gICAgLyoqXHJcbiAgICAgKiB1bmlxdWUgYWxpYXMgbmFtZSBmb3IgYSByb3V0ZSBwYXRoIHRoYXQgY2FuIGJlIHVzZWQgdG8gZHluYW1pY2FsbHkgdXBkYXRlIGEgcm91dGUncyBicmVhZGNydW1iIGxhYmVsIHZpYSBicmVhZGNydW1iU2VydmljZS5zZXQoKVxyXG4gICAgICovXHJcbiAgICBhbGlhcz86IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogaGlkZSBvciBzaG93IHRoZSBicmVhZGNydW1iIGl0ZW1cclxuICAgICAqL1xyXG4gICAgc2tpcD86IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIGRpc2FibGUgYSBjZXJ0YWluIGJyZWFkY3J1bWIgaW4gdGhlIGxpc3QuIE5vdCBjbGlja2FibGUuXHJcbiAgICAgKiBJdCBtYXkgYmUgbmVlZGVkIHdoZW4gdGhlIHJvdXRpbmcgaGFzIHRoZSBwYXRoLCBidXQgbmF2aWdhdGluZyB0byB0aGF0IHBhdGggaXMgb2Ygbm8gdXNlXHJcbiAgICAgKi9cclxuICAgIGRpc2FibGU/OiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBjdXN0b20gZGF0YSBmb3IgZWFjaCBicmVhZGNydW1iIHRoYXQgaXMgcGFzc2VkIGJhY2sgdG8gbmctdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgaW5mbz86IHVua25vd247XHJcbiAgICAvKipcclxuICAgICAqIEludGVyY2VwdG9yIGZvciBicmVhZGNydW1iIGNsaWNrIGFjdGlvbiB0aGF0IHJldHVybnMgdGhlIGR5bmFtaWMgcGF0aFxyXG4gICAgICogQ29uc3VtZXJzIGNhbiBjaGFuZ2UgdGhlIGJyZWFkY3J1bWIgcm91dGluZyBkeW5hbWljYWxseSB3aXRoIHRoaXMgYXBwcm9hY2hcclxuICAgICAqL1xyXG4gICAgcm91dGVJbnRlcmNlcHRvcj86IChicmVhZGNydW1iOiBDbWF0QnJlYWRjcnVtYiwgcm91dGVMaW5rPzogc3RyaW5nKSA9PiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIHJlc29sdmVkIGxhYmVsIGZvciBhIHJvdXRlIGNhbiBmdXJ0aGVyIGJlIGVuaGFuY2VkIGJhc2VkIG9uIGEgZnVuY3Rpb25cclxuZXhwb3J0IHR5cGUgQ21hdEJyZWFkY3J1bWJGdW5jdGlvbiA9IChyZXNvbHZlZExhYmVsPzogc3RyaW5nKSA9PiBzdHJpbmc7XHJcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9icmVhZGNydW1iL3R5cGVzL2JyZWFkY3J1bWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ21hdEJyZWFkY3J1bWIge1xyXG4gICAgLyoqXHJcbiAgICAgKiBhY3R1YWwgcm91dGUgcGF0aCB3aXRoIHJlc29sdmVkIHBhcmFtLiBFeCAvbWVudG9yLzIsIGNvbm5lY3QvZWRpdFxyXG4gICAgICovXHJcbiAgICByb3V0ZUxpbms/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIHJvdXRlIHdpdGggcGF0aCBwYXJhbXMgY29udmVydGVkIHRvIGEgUmVnRXhwXHJcbiAgICAgKiBwYXRoICcvbWVudG9yLzppZCcgYmVjb21lcyByb3V0ZVJlZ2V4ICcvbWVudG9yL1teL10rJywgd2hpY2ggY2FuIGJlIG1hdGNoZWQgYWdhaW5zdCB3aGVuIG5lZWRlZFxyXG4gICAgICovXHJcbiAgICByb3V0ZVJlZ2V4Pzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGlzIGFkZGl0aW9uYWwgaW5mbyBvbiBlYWNoIGJyZWFkY3J1bWIgaXRlbSB3aGV0aGVyIGxhYmVsIGlzIGF1dG8gZ2VuZXJhdGVkIG9yIHVzZXIgc3BlY2lmaWVkXHJcbiAgICAgKiBpc0F1dG9HZW5lcmF0ZWRMYWJlbCBoYXMgdG8gYmUgcHJlc2VudCBhdCBjb21wb25lbnQgbGV2ZWwgYnV0IG5vdCBhdCB0aGUgc2VydmljZSxcclxuICAgICAqIHNpbmNlIHdlIG1heSBuZWVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgYnJlYWRjcnVtYiBjb21wb25lbnRzIGluIHNhbWUgYXBwXHJcbiAgICAgKi9cclxuICAgIGlzQXV0b0dlbmVyYXRlZExhYmVsPzogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogUXVlcnkgcGFyYW1zIGluIHN0cmluZyBmb3JtLlxyXG4gICAgICovXHJcbiAgICBxdWVyeVBhcmFtcz86IGFueTtcclxuICAgIGZyYWdtZW50Pzogc3RyaW5nO1xyXG4gICAgcm91dGVJbnRlcmNlcHRvcj86IChicmVhZGNydW1iOiBDbWF0QnJlYWRjcnVtYiwgcm91dGVMaW5rPzogc3RyaW5nKSA9PiBzdHJpbmc7XHJcbn1cclxuIl19
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';
|
|
3
|
-
import { cmatAnimations } from 'cmat/animations';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class CmatCardComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.expanded = false;
|
|
8
|
-
this.face = 'front';
|
|
9
|
-
this.flippable = false;
|
|
10
|
-
}
|
|
11
|
-
get classList() {
|
|
12
|
-
/* eslint-disable @typescript-eslint/naming-convention */
|
|
13
|
-
return {
|
|
14
|
-
'cmat-card-expanded': this.expanded,
|
|
15
|
-
'cmat-card-face-back': this.flippable && this.face === 'back',
|
|
16
|
-
'cmat-card-face-front': this.flippable && this.face === 'front',
|
|
17
|
-
'cmat-card-flippable': this.flippable
|
|
18
|
-
};
|
|
19
|
-
/* eslint-enable @typescript-eslint/naming-convention */
|
|
20
|
-
}
|
|
21
|
-
ngOnChanges(changes) {
|
|
22
|
-
// Expanded
|
|
23
|
-
if ('expanded' in changes) {
|
|
24
|
-
// Coerce the value to a boolean
|
|
25
|
-
this.expanded = coerceBooleanProperty(changes['expanded'].currentValue);
|
|
26
|
-
}
|
|
27
|
-
// Flippable
|
|
28
|
-
if ('flippable' in changes) {
|
|
29
|
-
// Coerce the value to a boolean
|
|
30
|
-
this.flippable = coerceBooleanProperty(changes['flippable'].currentValue);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CmatCardComponent, isStandalone: true, selector: "cmat-card", inputs: { expanded: "expanded", face: "face", flippable: "flippable" }, host: { properties: { "class": "this.classList" } }, exportAs: ["cmatCard"], usesOnChanges: true, ngImport: i0, template: "<!-- Flippable card -->\r\n@if (flippable) {\r\n <!-- Front -->\r\n <div class=\"cmat-card-front\">\r\n <ng-content select=\"[cmatCardFront]\"></ng-content>\r\n </div>\r\n <!-- Back -->\r\n <div class=\"cmat-card-back overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <ng-content select=\"[cmatCardBack]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<!-- Normal card -->\r\n@if (!flippable) {\r\n <!-- Content -->\r\n <ng-content></ng-content>\r\n <!-- Expansion -->\r\n @if (expanded) {\r\n <div class=\"cmat-card-expansion\" [@expandCollapse]>\r\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\r\n </div>\r\n }\r\n}", styles: ["cmat-card{position:relative;display:flex;overflow:hidden;border-radius:1rem}cmat-card.cmat-card-flippable{border-width:0!important;border-radius:1rem;overflow:visible;transform-style:preserve-3d;transition:transform 1s;perspective:600px;background:transparent}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-back{visibility:visible;opacity:1;transform:rotateY(360deg)}cmat-card.cmat-card-flippable .cmat-card-front,cmat-card.cmat-card-flippable .cmat-card-back{display:flex;flex-direction:column;flex:1 1 auto;z-index:10;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;backface-visibility:hidden;border-radius:1rem}cmat-card.cmat-card-flippable .cmat-card-front{position:relative;opacity:1;visibility:visible;transform:rotateY(0);overflow:hidden}cmat-card.cmat-card-flippable .cmat-card-back{position:absolute;inset:0;opacity:0;visibility:hidden;transform:rotateY(180deg)}\n"], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
35
|
-
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatCardComponent, decorators: [{
|
|
37
|
-
type: Component,
|
|
38
|
-
args: [{ selector: 'cmat-card', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: cmatAnimations, exportAs: 'cmatCard', standalone: true, imports: [], template: "<!-- Flippable card -->\r\n@if (flippable) {\r\n <!-- Front -->\r\n <div class=\"cmat-card-front\">\r\n <ng-content select=\"[cmatCardFront]\"></ng-content>\r\n </div>\r\n <!-- Back -->\r\n <div class=\"cmat-card-back overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <ng-content select=\"[cmatCardBack]\"></ng-content>\r\n </div>\r\n}\r\n\r\n<!-- Normal card -->\r\n@if (!flippable) {\r\n <!-- Content -->\r\n <ng-content></ng-content>\r\n <!-- Expansion -->\r\n @if (expanded) {\r\n <div class=\"cmat-card-expansion\" [@expandCollapse]>\r\n <ng-content select=\"[cmatCardExpansion]\"></ng-content>\r\n </div>\r\n }\r\n}", styles: ["cmat-card{position:relative;display:flex;overflow:hidden;border-radius:1rem}cmat-card.cmat-card-flippable{border-width:0!important;border-radius:1rem;overflow:visible;transform-style:preserve-3d;transition:transform 1s;perspective:600px;background:transparent}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}cmat-card.cmat-card-flippable.cmat-card-face-back .cmat-card-back{visibility:visible;opacity:1;transform:rotateY(360deg)}cmat-card.cmat-card-flippable .cmat-card-front,cmat-card.cmat-card-flippable .cmat-card-back{display:flex;flex-direction:column;flex:1 1 auto;z-index:10;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;backface-visibility:hidden;border-radius:1rem}cmat-card.cmat-card-flippable .cmat-card-front{position:relative;opacity:1;visibility:visible;transform:rotateY(0);overflow:hidden}cmat-card.cmat-card-flippable .cmat-card-back{position:absolute;inset:0;opacity:0;visibility:hidden;transform:rotateY(180deg)}\n"] }]
|
|
39
|
-
}], propDecorators: { expanded: [{
|
|
40
|
-
type: Input
|
|
41
|
-
}], face: [{
|
|
42
|
-
type: Input
|
|
43
|
-
}], flippable: [{
|
|
44
|
-
type: Input
|
|
45
|
-
}], classList: [{
|
|
46
|
-
type: HostBinding,
|
|
47
|
-
args: ['class']
|
|
48
|
-
}] } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvY2FyZC9jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9jYXJkL2NhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBNEIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWNqRCxNQUFNLE9BQU8saUJBQWlCO0lBWDlCO1FBaUJhLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsU0FBSSxHQUFpQixPQUFPLENBQUM7UUFDN0IsY0FBUyxHQUFZLEtBQUssQ0FBQztLQTBCdkM7SUF4QkcsSUFBMEIsU0FBUztRQUMvQix5REFBeUQ7UUFDekQsT0FBTztZQUNILG9CQUFvQixFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ25DLHFCQUFxQixFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNO1lBQzdELHNCQUFzQixFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPO1lBQy9ELHFCQUFxQixFQUFFLElBQUksQ0FBQyxTQUFTO1NBQ3hDLENBQUM7UUFDRix3REFBd0Q7SUFDNUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixXQUFXO1FBQ1gsSUFBSSxVQUFVLElBQUksT0FBTyxFQUFFLENBQUM7WUFDeEIsZ0NBQWdDO1lBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxZQUFZO1FBQ1osSUFBSSxXQUFXLElBQUksT0FBTyxFQUFFLENBQUM7WUFDekIsZ0NBQWdDO1lBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlFLENBQUM7SUFDTCxDQUFDOzhHQWpDUSxpQkFBaUI7a0dBQWpCLGlCQUFpQiwrT0NoQjlCLCtxQkFzQkMsa2pDRFhlLGNBQWM7OzJGQUtqQixpQkFBaUI7a0JBWDdCLFNBQVM7K0JBQ0ksV0FBVyxpQkFHTixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLGNBQWMsWUFDaEIsVUFBVSxjQUNSLElBQUksV0FDUCxFQUFFOzhCQVFGLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRW9CLFNBQVM7c0JBQWxDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNtYXRBbmltYXRpb25zIH0gZnJvbSAnY21hdC9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgQ21hdENhcmRGYWNlIH0gZnJvbSAnLi9jYXJkLnR5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LWNhcmQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FyZC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgYW5pbWF0aW9uczogY21hdEFuaW1hdGlvbnMsXHJcbiAgICBleHBvcnRBczogJ2NtYXRDYXJkJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21hdENhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxyXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2V4cGFuZGVkOiBCb29sZWFuSW5wdXQ7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXHJcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZmxpcHBhYmxlOiBCb29sZWFuSW5wdXQ7XHJcblxyXG4gICAgQElucHV0KCkgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGZhY2U6IENtYXRDYXJkRmFjZSA9ICdmcm9udCc7XHJcbiAgICBASW5wdXQoKSBmbGlwcGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzTGlzdCgpOiBhbnkge1xyXG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICdjbWF0LWNhcmQtZXhwYW5kZWQnOiB0aGlzLmV4cGFuZGVkLFxyXG4gICAgICAgICAgICAnY21hdC1jYXJkLWZhY2UtYmFjayc6IHRoaXMuZmxpcHBhYmxlICYmIHRoaXMuZmFjZSA9PT0gJ2JhY2snLFxyXG4gICAgICAgICAgICAnY21hdC1jYXJkLWZhY2UtZnJvbnQnOiB0aGlzLmZsaXBwYWJsZSAmJiB0aGlzLmZhY2UgPT09ICdmcm9udCcsXHJcbiAgICAgICAgICAgICdjbWF0LWNhcmQtZmxpcHBhYmxlJzogdGhpcy5mbGlwcGFibGVcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIC8vIEV4cGFuZGVkXHJcbiAgICAgICAgaWYgKCdleHBhbmRlZCcgaW4gY2hhbmdlcykge1xyXG4gICAgICAgICAgICAvLyBDb2VyY2UgdGhlIHZhbHVlIHRvIGEgYm9vbGVhblxyXG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXNbJ2V4cGFuZGVkJ10uY3VycmVudFZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEZsaXBwYWJsZVxyXG4gICAgICAgIGlmICgnZmxpcHBhYmxlJyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgdmFsdWUgdG8gYSBib29sZWFuXHJcbiAgICAgICAgICAgIHRoaXMuZmxpcHBhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXNbJ2ZsaXBwYWJsZSddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjwhLS0gRmxpcHBhYmxlIGNhcmQgLS0+XHJcbkBpZiAoZmxpcHBhYmxlKSB7XHJcbiAgPCEtLSBGcm9udCAtLT5cclxuICA8ZGl2IGNsYXNzPVwiY21hdC1jYXJkLWZyb250XCI+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY21hdENhcmRGcm9udF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSBCYWNrIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjbWF0LWNhcmQtYmFjayBvdmVyZmxvdy15LWF1dG8gbGc6b3ZlcmZsb3cteS1oaWRkZW4gbGc6aG92ZXI6b3ZlcmZsb3cteS1hdXRvIHNjcm9sbGJhci1jdXN0b21cIj5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjbWF0Q2FyZEJhY2tdXCI+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG59XHJcblxyXG48IS0tIE5vcm1hbCBjYXJkIC0tPlxyXG5AaWYgKCFmbGlwcGFibGUpIHtcclxuICA8IS0tIENvbnRlbnQgLS0+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwhLS0gRXhwYW5zaW9uIC0tPlxyXG4gIEBpZiAoZXhwYW5kZWQpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJjbWF0LWNhcmQtZXhwYW5zaW9uXCIgW0BleHBhbmRDb2xsYXBzZV0+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjbWF0Q2FyZEV4cGFuc2lvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbn0iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9jYXJkL2NhcmQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIENtYXRDYXJkRmFjZSA9XHJcbiAgICB8ICdmcm9udCdcclxuICAgIHwgJ2JhY2snO1xyXG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21hdC1jb21wb25lbnRzLWNhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvY2FyZC9jbWF0LWNvbXBvbmVudHMtY2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './card.component';
|
|
2
|
-
export * from './card.types';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9jYXJkL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2FyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NhcmQudHlwZXMnO1xyXG4iXX0=
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { FormControl } from '@angular/forms';
|
|
3
|
-
import { MAT_BOTTOM_SHEET_DATA } from '@angular/material/bottom-sheet';
|
|
4
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
-
import { MatListModule } from '@angular/material/list';
|
|
7
|
-
import { MatTabsModule } from '@angular/material/tabs';
|
|
8
|
-
import { isNull, isUndefined } from 'lodash-es';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/material/button";
|
|
11
|
-
import * as i2 from "@angular/material/tabs";
|
|
12
|
-
import * as i3 from "@angular/material/list";
|
|
13
|
-
import * as i4 from "@angular/material/icon";
|
|
14
|
-
import * as i5 from "../cascade-list/cascade-list.component";
|
|
15
|
-
export class CmatCascadeBottomSheetComponent {
|
|
16
|
-
constructor(root) {
|
|
17
|
-
this.root = root;
|
|
18
|
-
this.selected = new FormControl(0);
|
|
19
|
-
this.labels = [];
|
|
20
|
-
this.root.steps.forEach((items) => {
|
|
21
|
-
const steps = items.filter((item) => item.active);
|
|
22
|
-
if (steps[0] && !isUndefined(steps[0].label)) {
|
|
23
|
-
this.labels.push(steps[0].label);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
clickHandle(event) {
|
|
28
|
-
event.stopPropagation();
|
|
29
|
-
}
|
|
30
|
-
select(disabled, label) {
|
|
31
|
-
if (!disabled) {
|
|
32
|
-
if (!isNull(this.selected.value)) {
|
|
33
|
-
this.labels[this.selected.value] = label;
|
|
34
|
-
this.labels = this.labels.slice(0, this.selected.value + 1);
|
|
35
|
-
}
|
|
36
|
-
this.selected.setValue(this.root.steps.length - 1);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatCascadeBottomSheetComponent, deps: [{ token: MAT_BOTTOM_SHEET_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: CmatCascadeBottomSheetComponent, isStandalone: true, selector: "cmat-cascade-bottom-sheet", exportAs: ["cmatCascadeBottomSheet"], ngImport: i0, template: "<div role=\"presentation\" class=\"cmat-cascade-bottom-sheet\" (click)=\"clickHandle($event)\">\r\n <div class=\"sheet-header flex items-center\">\r\n <p class=\"sheet-title\">{{root.placeholder}}</p>\r\n <button type=\"button\" mat-icon-button (click)=\"root.bottomSheetRef.dismiss()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\r\n </button>\r\n </div>\r\n <mat-tab-group [selectedIndex]=\"selected.value\" (selectedIndexChange)=\"selected.setValue($event);\">\r\n @for (menuItem of root.steps; track step; let step = $index) {\r\n <mat-tab\r\n [label]=\"labels[step] || '\u9009\u62E9'\">\r\n <mat-list class=\"menu-list overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n @for (listItem of menuItem; track i; let i = $index) {\r\n <mat-list-item class=\"menu-item\"\r\n [class.active]=\"listItem.active\" [class.disabled]=\"listItem.disabled\"\r\n (click)=\"root.selectHandle($event, step, i); select(listItem.disabled,listItem.label);\">\r\n <div matLine>{{listItem.label}}</div>\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n </mat-tab>\r\n }\r\n </mat-tab-group>\r\n</div>", styles: [".cmat-cascade-bottom-sheet{padding:0;margin:-8px -16px}.cmat-cascade-bottom-sheet .sheet-header{display:flex;flex:1 1 0%;align-items:center;font-size:1rem;border-bottom-width:1px;padding:12px 16px}.cmat-cascade-bottom-sheet .sheet-header .sheet-title{margin:0;padding:0;letter-spacing:.05rem;text-align:center;flex-grow:1}.cmat-cascade-bottom-sheet .menu-list{vertical-align:top;box-sizing:border-box;margin:0;padding:0;width:100%;overflow:hidden;position:relative;height:204px}.cmat-cascade-bottom-sheet .menu-item{padding:0 16px;text-overflow:ellipsis;box-sizing:border-box;cursor:pointer!important;font-size:14px;line-height:3em}.cmat-cascade-bottom-sheet .menu-item.disabled{cursor:not-allowed!important;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
41
|
-
}
|
|
42
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CmatCascadeBottomSheetComponent, decorators: [{
|
|
43
|
-
type: Component,
|
|
44
|
-
args: [{ selector: 'cmat-cascade-bottom-sheet', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatCascadeBottomSheet', standalone: true, imports: [MatButtonModule, MatTabsModule, MatListModule, MatIconModule], template: "<div role=\"presentation\" class=\"cmat-cascade-bottom-sheet\" (click)=\"clickHandle($event)\">\r\n <div class=\"sheet-header flex items-center\">\r\n <p class=\"sheet-title\">{{root.placeholder}}</p>\r\n <button type=\"button\" mat-icon-button (click)=\"root.bottomSheetRef.dismiss()\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:x-mark'\"></mat-icon>\r\n </button>\r\n </div>\r\n <mat-tab-group [selectedIndex]=\"selected.value\" (selectedIndexChange)=\"selected.setValue($event);\">\r\n @for (menuItem of root.steps; track step; let step = $index) {\r\n <mat-tab\r\n [label]=\"labels[step] || '\u9009\u62E9'\">\r\n <mat-list class=\"menu-list overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n @for (listItem of menuItem; track i; let i = $index) {\r\n <mat-list-item class=\"menu-item\"\r\n [class.active]=\"listItem.active\" [class.disabled]=\"listItem.disabled\"\r\n (click)=\"root.selectHandle($event, step, i); select(listItem.disabled,listItem.label);\">\r\n <div matLine>{{listItem.label}}</div>\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n </mat-tab>\r\n }\r\n </mat-tab-group>\r\n</div>", styles: [".cmat-cascade-bottom-sheet{padding:0;margin:-8px -16px}.cmat-cascade-bottom-sheet .sheet-header{display:flex;flex:1 1 0%;align-items:center;font-size:1rem;border-bottom-width:1px;padding:12px 16px}.cmat-cascade-bottom-sheet .sheet-header .sheet-title{margin:0;padding:0;letter-spacing:.05rem;text-align:center;flex-grow:1}.cmat-cascade-bottom-sheet .menu-list{vertical-align:top;box-sizing:border-box;margin:0;padding:0;width:100%;overflow:hidden;position:relative;height:204px}.cmat-cascade-bottom-sheet .menu-item{padding:0 16px;text-overflow:ellipsis;box-sizing:border-box;cursor:pointer!important;font-size:14px;line-height:3em}.cmat-cascade-bottom-sheet .menu-item.disabled{cursor:not-allowed!important;pointer-events:none}\n"] }]
|
|
45
|
-
}], ctorParameters: () => [{ type: i5.CmatCascadeListComponent, decorators: [{
|
|
46
|
-
type: Inject,
|
|
47
|
-
args: [MAT_BOTTOM_SHEET_DATA]
|
|
48
|
-
}] }] });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZS1ib3R0b20tc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2Nhc2NhZGUvY2FzY2FkZS1ib3R0b20tc2hlZXQvY2FzY2FkZS1ib3R0b20tc2hlZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2Nhc2NhZGUvY2FzY2FkZS1ib3R0b20tc2hlZXQvY2FzY2FkZS1ib3R0b20tc2hlZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztBQWNoRCxNQUFNLE9BQU8sK0JBQStCO0lBSXhDLFlBQzBDLElBQThCO1FBQTlCLFNBQUksR0FBSixJQUFJLENBQTBCO1FBSnhFLGFBQVEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBS2xCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQW9DLEVBQUUsRUFBRTtZQUM3RCxNQUFNLEtBQUssR0FBa0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQWlDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5RyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZO1FBQ3BCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQWlCLEVBQUUsS0FBYTtRQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0wsQ0FBQzs4R0F6QlEsK0JBQStCLGtCQUs1QixxQkFBcUI7a0dBTHhCLCtCQUErQiwySEN0QjVDLHl2Q0F1Qk0sbXhCREhRLGVBQWUsMklBQUUsYUFBYSw0b0JBQUUsYUFBYSx1UkFBRSxhQUFhOzsyRkFFN0QsK0JBQStCO2tCQVYzQyxTQUFTOytCQUNJLDJCQUEyQixpQkFHdEIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQLENBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDOzswQkFPbEUsTUFBTTsyQkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0JPVFRPTV9TSEVFVF9EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XHJcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcclxuaW1wb3J0IHsgaXNOdWxsLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IENtYXRDYXNjYWRlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2Nhc2NhZGUtbGlzdC9jYXNjYWRlLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ21hdENhc2NhZGVPcHRpb25zSW50ZXJmYWNlIH0gZnJvbSAnLi4vb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtY2FzY2FkZS1ib3R0b20tc2hlZXQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nhc2NhZGUtYm90dG9tLXNoZWV0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Nhc2NhZGUtYm90dG9tLXNoZWV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBleHBvcnRBczogJ2NtYXRDYXNjYWRlQm90dG9tU2hlZXQnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtNYXRCdXR0b25Nb2R1bGUsIE1hdFRhYnNNb2R1bGUsIE1hdExpc3RNb2R1bGUsIE1hdEljb25Nb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0Q2FzY2FkZUJvdHRvbVNoZWV0Q29tcG9uZW50IHtcclxuICAgIHNlbGVjdGVkID0gbmV3IEZvcm1Db250cm9sKDApO1xyXG4gICAgbGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoTUFUX0JPVFRPTV9TSEVFVF9EQVRBKSBwdWJsaWMgcm9vdDogQ21hdENhc2NhZGVMaXN0Q29tcG9uZW50LFxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5yb290LnN0ZXBzLmZvckVhY2goKGl0ZW1zOiBDbWF0Q2FzY2FkZU9wdGlvbnNJbnRlcmZhY2VbXSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdGVwczogQ21hdENhc2NhZGVPcHRpb25zSW50ZXJmYWNlW10gPSBpdGVtcy5maWx0ZXIoKGl0ZW06IENtYXRDYXNjYWRlT3B0aW9uc0ludGVyZmFjZSkgPT4gaXRlbS5hY3RpdmUpO1xyXG4gICAgICAgICAgICBpZiAoc3RlcHNbMF0gJiYgIWlzVW5kZWZpbmVkKHN0ZXBzWzBdLmxhYmVsKSkgeyB0aGlzLmxhYmVscy5wdXNoKHN0ZXBzWzBdLmxhYmVsKTsgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrSGFuZGxlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdChkaXNhYmxlZDogYm9vbGVhbiwgbGFiZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgaWYgKCFpc051bGwodGhpcy5zZWxlY3RlZC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFiZWxzW3RoaXMuc2VsZWN0ZWQudmFsdWVdID0gbGFiZWw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVscyA9IHRoaXMubGFiZWxzLnNsaWNlKDAsIHRoaXMuc2VsZWN0ZWQudmFsdWUgKyAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLnNldFZhbHVlKHRoaXMucm9vdC5zdGVwcy5sZW5ndGggLSAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiByb2xlPVwicHJlc2VudGF0aW9uXCIgY2xhc3M9XCJjbWF0LWNhc2NhZGUtYm90dG9tLXNoZWV0XCIgKGNsaWNrKT1cImNsaWNrSGFuZGxlKCRldmVudClcIj5cclxuICA8ZGl2IGNsYXNzPVwic2hlZXQtaGVhZGVyIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICA8cCBjbGFzcz1cInNoZWV0LXRpdGxlXCI+e3tyb290LnBsYWNlaG9sZGVyfX08L3A+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJvb3QuYm90dG9tU2hlZXRSZWYuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCInaGVyb2ljb25zX291dGxpbmU6eC1tYXJrJ1wiPjwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8bWF0LXRhYi1ncm91cCBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZC52YWx1ZVwiIChzZWxlY3RlZEluZGV4Q2hhbmdlKT1cInNlbGVjdGVkLnNldFZhbHVlKCRldmVudCk7XCI+XHJcbiAgICBAZm9yIChtZW51SXRlbSBvZiByb290LnN0ZXBzOyB0cmFjayBzdGVwOyBsZXQgc3RlcCA9ICRpbmRleCkge1xyXG4gICAgICA8bWF0LXRhYlxyXG4gICAgICAgIFtsYWJlbF09XCJsYWJlbHNbc3RlcF0gfHwgJ+mAieaLqSdcIj5cclxuICAgICAgICA8bWF0LWxpc3QgY2xhc3M9XCJtZW51LWxpc3Qgb3ZlcmZsb3cteS1hdXRvIGxnOm92ZXJmbG93LXktaGlkZGVuIGxnOmhvdmVyOm92ZXJmbG93LXktYXV0byBzY3JvbGxiYXItY3VzdG9tXCI+XHJcbiAgICAgICAgICBAZm9yIChsaXN0SXRlbSBvZiBtZW51SXRlbTsgdHJhY2sgaTsgbGV0IGkgPSAkaW5kZXgpIHtcclxuICAgICAgICAgICAgPG1hdC1saXN0LWl0ZW0gY2xhc3M9XCJtZW51LWl0ZW1cIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwibGlzdEl0ZW0uYWN0aXZlXCIgW2NsYXNzLmRpc2FibGVkXT1cImxpc3RJdGVtLmRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicm9vdC5zZWxlY3RIYW5kbGUoJGV2ZW50LCBzdGVwLCBpKTsgc2VsZWN0KGxpc3RJdGVtLmRpc2FibGVkLGxpc3RJdGVtLmxhYmVsKTtcIj5cclxuICAgICAgICAgICAgICA8ZGl2IG1hdExpbmU+e3tsaXN0SXRlbS5sYWJlbH19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbWF0LWxpc3QtaXRlbT5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1saXN0PlxyXG4gICAgICA8L21hdC10YWI+XHJcbiAgICB9XHJcbiAgPC9tYXQtdGFiLWdyb3VwPlxyXG48L2Rpdj4iXX0=
|