cmat 0.0.3
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/README.md +3 -0
- package/animations/defaults.d.ts +11 -0
- package/animations/drop.d.ts +2 -0
- package/animations/expand-collapse.d.ts +2 -0
- package/animations/fade.d.ts +11 -0
- package/animations/index.d.ts +5 -0
- package/animations/public-api.d.ts +1 -0
- package/animations/shake.d.ts +2 -0
- package/animations/slide.d.ts +9 -0
- package/animations/transform.d.ts +2 -0
- package/animations/zoom.d.ts +3 -0
- package/components/adapter/datetime-adapter.d.ts +45 -0
- package/components/adapter/datetime-formats.d.ts +22 -0
- package/components/adapter/dayjs-date-adapter.d.ts +63 -0
- package/components/adapter/dayjs-date-formats.d.ts +2 -0
- package/components/adapter/dayjs-datetime-adapter.d.ts +22 -0
- package/components/adapter/dayjs-datetime-formats.d.ts +2 -0
- package/components/adapter/index.d.ts +5 -0
- package/components/adapter/native-datetime-adapter.d.ts +31 -0
- package/components/adapter/native-datetime-formats.d.ts +2 -0
- package/components/adapter/public-api.d.ts +8 -0
- package/components/breadcrumb/breadcrumb-item.directive.d.ts +10 -0
- package/components/breadcrumb/breadcrumb.component.d.ts +57 -0
- package/components/breadcrumb/breadcrumb.component.scss +18 -0
- package/components/breadcrumb/breadcrumb.service.d.ts +126 -0
- package/components/breadcrumb/index.d.ts +5 -0
- package/components/breadcrumb/public-api.d.ts +3 -0
- package/components/breadcrumb/types/breadcrumb.config.d.ts +33 -0
- package/components/breadcrumb/types/breadcrumb.d.ts +23 -0
- package/components/card/card.component.d.ts +20 -0
- package/components/card/card.component.scss +63 -0
- package/components/card/card.types.d.ts +1 -0
- package/components/card/index.d.ts +5 -0
- package/components/card/public-api.d.ts +1 -0
- package/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.d.ts +14 -0
- package/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.scss +43 -0
- package/components/cascade/cascade-list/cascade-list.component.d.ts +52 -0
- package/components/cascade/cascade-list/cascade-list.component.scss +22 -0
- package/components/cascade/cascade-menu/cascade-menu.component.d.ts +10 -0
- package/components/cascade/cascade-menu/cascade-menu.component.scss +48 -0
- package/components/cascade/index.d.ts +5 -0
- package/components/cascade/options.interface.d.ts +8 -0
- package/components/cascade/public-api.d.ts +2 -0
- package/components/date-range/date-range.component.d.ts +134 -0
- package/components/date-range/date-range.component.scss +232 -0
- package/components/date-range/index.d.ts +5 -0
- package/components/date-range/public-api.d.ts +1 -0
- package/components/drawer/drawer.component.d.ts +75 -0
- package/components/drawer/drawer.component.scss +133 -0
- package/components/drawer/drawer.service.d.ts +26 -0
- package/components/drawer/drawer.types.d.ts +2 -0
- package/components/drawer/index.d.ts +5 -0
- package/components/drawer/public-api.d.ts +3 -0
- package/components/fullscreen/fullscreen.component.d.ts +18 -0
- package/components/fullscreen/fullscreen.types.d.ts +13 -0
- package/components/fullscreen/index.d.ts +5 -0
- package/components/fullscreen/public-api.d.ts +2 -0
- package/components/highlight/highlight.component.d.ts +21 -0
- package/components/highlight/highlight.component.scss +3 -0
- package/components/highlight/highlight.service.d.ts +7 -0
- package/components/highlight/index.d.ts +5 -0
- package/components/highlight/public-api.d.ts +2 -0
- package/components/masonry/index.d.ts +5 -0
- package/components/masonry/masonry.component.d.ts +13 -0
- package/components/masonry/public-api.d.ts +1 -0
- package/components/material-color-picker/base-color.d.ts +1 -0
- package/components/material-color-picker/index.d.ts +5 -0
- package/components/material-color-picker/material-color-picker.component.d.ts +35 -0
- package/components/material-color-picker/material-color-picker.component.scss +5 -0
- package/components/material-color-picker/public-api.d.ts +2 -0
- package/components/material-color-picker/selected-color.d.ts +5 -0
- package/components/material-datetimepicker/calendar-body.d.ts +43 -0
- package/components/material-datetimepicker/calendar-body.scss +58 -0
- package/components/material-datetimepicker/calendar.d.ts +146 -0
- package/components/material-datetimepicker/calendar.scss +194 -0
- package/components/material-datetimepicker/clock.d.ts +74 -0
- package/components/material-datetimepicker/clock.scss +90 -0
- package/components/material-datetimepicker/datetimepicker-animations.d.ts +4 -0
- package/components/material-datetimepicker/datetimepicker-content.scss +151 -0
- package/components/material-datetimepicker/datetimepicker-errors.d.ts +1 -0
- package/components/material-datetimepicker/datetimepicker-filtertype.d.ts +5 -0
- package/components/material-datetimepicker/datetimepicker-input.d.ts +106 -0
- package/components/material-datetimepicker/datetimepicker-intl.d.ts +51 -0
- package/components/material-datetimepicker/datetimepicker-toggle.d.ts +40 -0
- package/components/material-datetimepicker/datetimepicker-types.d.ts +13 -0
- package/components/material-datetimepicker/datetimepicker.d.ts +195 -0
- package/components/material-datetimepicker/datetimepicker.scss +145 -0
- package/components/material-datetimepicker/index.d.ts +5 -0
- package/components/material-datetimepicker/month-view.d.ts +64 -0
- package/components/material-datetimepicker/multi-year-view.d.ts +74 -0
- package/components/material-datetimepicker/public-api.d.ts +9 -0
- package/components/material-datetimepicker/time.d.ts +129 -0
- package/components/material-datetimepicker/time.scss +82 -0
- package/components/material-datetimepicker/year-view.d.ts +56 -0
- package/components/navigation/horizontal/components/basic/basic.component.d.ts +27 -0
- package/components/navigation/horizontal/components/branch/branch.component.d.ts +39 -0
- package/components/navigation/horizontal/components/divider/divider.component.d.ts +23 -0
- package/components/navigation/horizontal/components/spacer/spacer.component.d.ts +23 -0
- package/components/navigation/horizontal/horizontal.component.d.ts +43 -0
- package/components/navigation/horizontal/horizontal.component.scss +167 -0
- package/components/navigation/index.d.ts +5 -0
- package/components/navigation/navigation.service.d.ts +71 -0
- package/components/navigation/navigation.types.d.ts +34 -0
- package/components/navigation/public-api.d.ts +4 -0
- package/components/navigation/vertical/components/aside/aside.component.d.ts +63 -0
- package/components/navigation/vertical/components/basic/basic.component.d.ts +30 -0
- package/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +74 -0
- package/components/navigation/vertical/components/divider/divider.component.d.ts +26 -0
- package/components/navigation/vertical/components/group/group.component.d.ts +36 -0
- package/components/navigation/vertical/components/spacer/spacer.component.d.ts +26 -0
- package/components/navigation/vertical/styles/appearances/compact.scss +103 -0
- package/components/navigation/vertical/styles/appearances/default.scss +550 -0
- package/components/navigation/vertical/styles/appearances/dense.scss +171 -0
- package/components/navigation/vertical/styles/appearances/thin.scss +91 -0
- package/components/navigation/vertical/vertical.component.d.ts +176 -0
- package/components/navigation/vertical/vertical.component.scss +4 -0
- package/components/pagination/index.d.ts +5 -0
- package/components/pagination/pagination.component.d.ts +24 -0
- package/components/pagination/pagination.directive.d.ts +40 -0
- package/components/pagination/pagination.instance.d.ts +11 -0
- package/components/pagination/pagination.pipe.d.ts +29 -0
- package/components/pagination/pagination.service.d.ts +20 -0
- package/components/pagination/public-api.d.ts +4 -0
- package/components/password-strength/animations/index.d.ts +4 -0
- package/components/password-strength/enum.d.ts +13 -0
- package/components/password-strength/index.d.ts +5 -0
- package/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.d.ts +11 -0
- package/components/password-strength/mat-password-strength/mat-password-strength.component.d.ts +52 -0
- package/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.d.ts +16 -0
- package/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.scss +19 -0
- package/components/password-strength/mat-password-strength-validator.d.ts +6 -0
- package/components/password-strength/public-api.d.ts +3 -0
- package/components/password-strength/regexp.class.d.ts +6 -0
- package/components/popover/index.d.ts +5 -0
- package/components/popover/popover.component.d.ts +139 -0
- package/components/popover/popover.component.scss +174 -0
- package/components/popover/popover.errors.d.ts +14 -0
- package/components/popover/popover.interfaces.d.ts +44 -0
- package/components/popover/popover.type.d.ts +5 -0
- package/components/popover/public-api.d.ts +1 -0
- package/components/progress-bar/index.d.ts +5 -0
- package/components/progress-bar/progress-bar.component.d.ts +17 -0
- package/components/progress-bar/progress-bar.component.scss +7 -0
- package/components/progress-bar/public-api.d.ts +1 -0
- package/components/rating/index.d.ts +5 -0
- package/components/rating/public-api.d.ts +1 -0
- package/components/rating/rating.component.d.ts +28 -0
- package/components/rating/rating.component.scss +33 -0
- package/components/select-search/default-options.d.ts +8 -0
- package/components/select-search/index.d.ts +5 -0
- package/components/select-search/public-api.d.ts +2 -0
- package/components/select-search/select-no-entries-found.directive.d.ts +5 -0
- package/components/select-search/select-search-clear.directive.d.ts +5 -0
- package/components/select-search/select-search.component.d.ts +91 -0
- package/components/select-search/select-search.component.scss +126 -0
- package/components/select-tree/index.d.ts +5 -0
- package/components/select-tree/public-api.d.ts +1 -0
- package/components/select-tree/select-tree.component.d.ts +85 -0
- package/components/select-tree/select-tree.component.scss +54 -0
- package/components/select-tree/select-tree.flatnode.d.ts +6 -0
- package/components/select-tree/select-tree.node.d.ts +5 -0
- package/components/timeline/index.d.ts +5 -0
- package/components/timeline/public-api.d.ts +2 -0
- package/components/timeline/timeline-item/timeline-item.component.d.ts +25 -0
- package/components/timeline/timeline-item/timeline-item.component.scss +329 -0
- package/components/timeline/timeline.component.d.ts +32 -0
- package/components/timeline/timeline.component.scss +42 -0
- package/components/toast/index.d.ts +5 -0
- package/components/toast/models/global-config.model.d.ts +12 -0
- package/components/toast/models/toast.model.d.ts +6 -0
- package/components/toast/models/type.model.d.ts +12 -0
- package/components/toast/public-api.d.ts +2 -0
- package/components/toast/toast-modal.component.d.ts +18 -0
- package/components/toast/toast-modal.component.scss +119 -0
- package/components/toast/toast.component.d.ts +17 -0
- package/components/toast/toast.component.scss +62 -0
- package/components/toast/toast.service.d.ts +26 -0
- package/components/transfer-picker/filter/filter.component.d.ts +24 -0
- package/components/transfer-picker/filter/filter.component.scss +40 -0
- package/components/transfer-picker/index.d.ts +5 -0
- package/components/transfer-picker/interface.d.ts +42 -0
- package/components/transfer-picker/public-api.d.ts +7 -0
- package/components/transfer-picker/search/search.component.d.ts +14 -0
- package/components/transfer-picker/search/search.component.scss +7 -0
- package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.d.ts +49 -0
- package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.scss +25 -0
- package/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.d.ts +12 -0
- package/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.scss +27 -0
- package/components/transfer-picker/transfer-picker.component.d.ts +28 -0
- package/components/transfer-picker/transfer-picker.component.scss +8 -0
- package/components/transfer-picker/transfer-picker.service.d.ts +31 -0
- package/directives/animate-on-scroll/animate-on-scroll.directive.d.ts +29 -0
- package/directives/animate-on-scroll/index.d.ts +5 -0
- package/directives/animate-on-scroll/public-api.d.ts +1 -0
- package/directives/animate-on-scroll/scroll.service.d.ts +15 -0
- package/directives/autofocus/autofocus.directive.d.ts +10 -0
- package/directives/autofocus/index.d.ts +5 -0
- package/directives/autofocus/public-api.d.ts +1 -0
- package/directives/debounce/abstract-debounce.directive.d.ts +15 -0
- package/directives/debounce/debounce-click.directive.d.ts +8 -0
- package/directives/debounce/debounce-keyup.directive.d.ts +8 -0
- package/directives/debounce/index.d.ts +5 -0
- package/directives/debounce/public-api.d.ts +2 -0
- package/directives/digit-only/digit-only.directive.d.ts +34 -0
- package/directives/digit-only/index.d.ts +5 -0
- package/directives/digit-only/mask.directive.d.ts +14 -0
- package/directives/digit-only/public-api.d.ts +2 -0
- package/directives/equal-validator/equal-validator.directive.d.ts +14 -0
- package/directives/equal-validator/index.d.ts +5 -0
- package/directives/equal-validator/public-api.d.ts +1 -0
- package/esm2022/animations/cmat-animations.mjs +5 -0
- package/esm2022/animations/defaults.mjs +12 -0
- package/esm2022/animations/drop.mjs +26 -0
- package/esm2022/animations/expand-collapse.mjs +17 -0
- package/esm2022/animations/fade.mjs +170 -0
- package/esm2022/animations/public-api.mjs +19 -0
- package/esm2022/animations/shake.mjs +59 -0
- package/esm2022/animations/slide.mjs +124 -0
- package/esm2022/animations/transform.mjs +16 -0
- package/esm2022/animations/zoom.mjs +38 -0
- package/esm2022/cmat.mjs +5 -0
- package/esm2022/components/adapter/cmat-components-adapter.mjs +5 -0
- package/esm2022/components/adapter/datetime-adapter.mjs +127 -0
- package/esm2022/components/adapter/datetime-formats.mjs +3 -0
- package/esm2022/components/adapter/dayjs-date-adapter.mjs +198 -0
- package/esm2022/components/adapter/dayjs-date-formats.mjs +12 -0
- package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +100 -0
- package/esm2022/components/adapter/dayjs-datetime-formats.mjs +21 -0
- package/esm2022/components/adapter/native-datetime-adapter.mjs +130 -0
- package/esm2022/components/adapter/native-datetime-formats.mjs +15 -0
- package/esm2022/components/adapter/public-api.mjs +9 -0
- package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +19 -0
- package/esm2022/components/breadcrumb/breadcrumb.component.mjs +95 -0
- package/esm2022/components/breadcrumb/breadcrumb.service.mjs +336 -0
- package/esm2022/components/breadcrumb/cmat-components-breadcrumb.mjs +5 -0
- package/esm2022/components/breadcrumb/public-api.mjs +4 -0
- package/esm2022/components/breadcrumb/types/breadcrumb.config.mjs +2 -0
- package/esm2022/components/breadcrumb/types/breadcrumb.mjs +2 -0
- package/esm2022/components/card/card.component.mjs +58 -0
- package/esm2022/components/card/card.types.mjs +2 -0
- package/esm2022/components/card/cmat-components-card.mjs +5 -0
- package/esm2022/components/card/public-api.mjs +2 -0
- package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +53 -0
- package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +263 -0
- package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +29 -0
- package/esm2022/components/cascade/cmat-components-cascade.mjs +5 -0
- package/esm2022/components/cascade/options.interface.mjs +2 -0
- package/esm2022/components/cascade/public-api.mjs +3 -0
- package/esm2022/components/date-range/cmat-components-date-range.mjs +5 -0
- package/esm2022/components/date-range/date-range.component.mjs +540 -0
- package/esm2022/components/date-range/public-api.mjs +2 -0
- package/esm2022/components/drawer/cmat-components-drawer.mjs +5 -0
- package/esm2022/components/drawer/drawer.component.mjs +301 -0
- package/esm2022/components/drawer/drawer.service.mjs +41 -0
- package/esm2022/components/drawer/drawer.types.mjs +2 -0
- package/esm2022/components/drawer/public-api.mjs +4 -0
- package/esm2022/components/fullscreen/cmat-components-fullscreen.mjs +5 -0
- package/esm2022/components/fullscreen/fullscreen.component.mjs +101 -0
- package/esm2022/components/fullscreen/fullscreen.types.mjs +2 -0
- package/esm2022/components/fullscreen/public-api.mjs +3 -0
- package/esm2022/components/highlight/cmat-components-highlight.mjs +5 -0
- package/esm2022/components/highlight/highlight.component.mjs +80 -0
- package/esm2022/components/highlight/highlight.service.mjs +47 -0
- package/esm2022/components/highlight/public-api.mjs +3 -0
- package/esm2022/components/masonry/cmat-components-masonry.mjs +5 -0
- package/esm2022/components/masonry/masonry.component.mjs +54 -0
- package/esm2022/components/masonry/public-api.mjs +2 -0
- package/esm2022/components/material-color-picker/base-color.mjs +13 -0
- package/esm2022/components/material-color-picker/cmat-components-material-color-picker.mjs +5 -0
- package/esm2022/components/material-color-picker/material-color-picker.component.mjs +138 -0
- package/esm2022/components/material-color-picker/public-api.mjs +3 -0
- package/esm2022/components/material-color-picker/selected-color.mjs +3 -0
- package/esm2022/components/material-datetimepicker/calendar-body.mjs +80 -0
- package/esm2022/components/material-datetimepicker/calendar.mjs +678 -0
- package/esm2022/components/material-datetimepicker/clock.mjs +293 -0
- package/esm2022/components/material-datetimepicker/cmat-components-material-datetimepicker.mjs +5 -0
- package/esm2022/components/material-datetimepicker/datetimepicker-animations.mjs +34 -0
- package/esm2022/components/material-datetimepicker/datetimepicker-errors.mjs +6 -0
- package/esm2022/components/material-datetimepicker/datetimepicker-filtertype.mjs +8 -0
- package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +340 -0
- package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +63 -0
- package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +88 -0
- package/esm2022/components/material-datetimepicker/datetimepicker-types.mjs +2 -0
- package/esm2022/components/material-datetimepicker/datetimepicker.mjs +534 -0
- package/esm2022/components/material-datetimepicker/month-view.mjs +146 -0
- package/esm2022/components/material-datetimepicker/multi-year-view.mjs +198 -0
- package/esm2022/components/material-datetimepicker/public-api.mjs +10 -0
- package/esm2022/components/material-datetimepicker/time.mjs +456 -0
- package/esm2022/components/material-datetimepicker/year-view.mjs +125 -0
- package/esm2022/components/navigation/cmat-components-navigation.mjs +5 -0
- package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +70 -0
- package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +83 -0
- package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +47 -0
- package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +47 -0
- package/esm2022/components/navigation/horizontal/horizontal.component.mjs +88 -0
- package/esm2022/components/navigation/navigation.service.mjs +140 -0
- package/esm2022/components/navigation/navigation.types.mjs +3 -0
- package/esm2022/components/navigation/public-api.mjs +5 -0
- package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +162 -0
- package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +76 -0
- package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +279 -0
- package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +56 -0
- package/esm2022/components/navigation/vertical/components/group/group.component.mjs +79 -0
- package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +56 -0
- package/esm2022/components/navigation/vertical/vertical.component.mjs +586 -0
- package/esm2022/components/pagination/cmat-components-pagination.mjs +5 -0
- package/esm2022/components/pagination/pagination.component.mjs +71 -0
- package/esm2022/components/pagination/pagination.directive.mjs +197 -0
- package/esm2022/components/pagination/pagination.instance.mjs +2 -0
- package/esm2022/components/pagination/pagination.pipe.mjs +100 -0
- package/esm2022/components/pagination/pagination.service.mjs +90 -0
- package/esm2022/components/pagination/public-api.mjs +5 -0
- package/esm2022/components/password-strength/animations/index.mjs +48 -0
- package/esm2022/components/password-strength/cmat-components-password-strength.mjs +5 -0
- package/esm2022/components/password-strength/enum.mjs +17 -0
- package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +27 -0
- package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +206 -0
- package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +151 -0
- package/esm2022/components/password-strength/mat-password-strength-validator.mjs +36 -0
- package/esm2022/components/password-strength/public-api.mjs +4 -0
- package/esm2022/components/password-strength/regexp.class.mjs +8 -0
- package/esm2022/components/popover/cmat-components-popover.mjs +5 -0
- package/esm2022/components/popover/popover.component.mjs +350 -0
- package/esm2022/components/popover/popover.errors.mjs +27 -0
- package/esm2022/components/popover/popover.interfaces.mjs +2 -0
- package/esm2022/components/popover/popover.type.mjs +2 -0
- package/esm2022/components/popover/public-api.mjs +2 -0
- package/esm2022/components/progress-bar/cmat-components-progress-bar.mjs +5 -0
- package/esm2022/components/progress-bar/progress-bar.component.mjs +55 -0
- package/esm2022/components/progress-bar/public-api.mjs +2 -0
- package/esm2022/components/rating/cmat-components-rating.mjs +5 -0
- package/esm2022/components/rating/public-api.mjs +2 -0
- package/esm2022/components/rating/rating.component.mjs +91 -0
- package/esm2022/components/select-search/cmat-components-select-search.mjs +5 -0
- package/esm2022/components/select-search/default-options.mjs +16 -0
- package/esm2022/components/select-search/public-api.mjs +3 -0
- package/esm2022/components/select-search/select-no-entries-found.directive.mjs +14 -0
- package/esm2022/components/select-search/select-search-clear.directive.mjs +14 -0
- package/esm2022/components/select-search/select-search.component.mjs +488 -0
- package/esm2022/components/select-tree/cmat-components-select-tree.mjs +5 -0
- package/esm2022/components/select-tree/public-api.mjs +2 -0
- package/esm2022/components/select-tree/select-tree.component.mjs +458 -0
- package/esm2022/components/select-tree/select-tree.flatnode.mjs +3 -0
- package/esm2022/components/select-tree/select-tree.node.mjs +3 -0
- package/esm2022/components/timeline/cmat-components-timeline.mjs +5 -0
- package/esm2022/components/timeline/public-api.mjs +3 -0
- package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +68 -0
- package/esm2022/components/timeline/timeline.component.mjs +114 -0
- package/esm2022/components/toast/cmat-components-toast.mjs +5 -0
- package/esm2022/components/toast/models/global-config.model.mjs +2 -0
- package/esm2022/components/toast/models/toast.model.mjs +2 -0
- package/esm2022/components/toast/models/type.model.mjs +2 -0
- package/esm2022/components/toast/public-api.mjs +3 -0
- package/esm2022/components/toast/toast-modal.component.mjs +53 -0
- package/esm2022/components/toast/toast.component.mjs +30 -0
- package/esm2022/components/toast/toast.service.mjs +122 -0
- package/esm2022/components/transfer-picker/cmat-components-transfer-picker.mjs +5 -0
- package/esm2022/components/transfer-picker/filter/filter.component.mjs +85 -0
- package/esm2022/components/transfer-picker/interface.mjs +17 -0
- package/esm2022/components/transfer-picker/public-api.mjs +8 -0
- package/esm2022/components/transfer-picker/search/search.component.mjs +34 -0
- package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +178 -0
- package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +34 -0
- package/esm2022/components/transfer-picker/transfer-picker.component.mjs +82 -0
- package/esm2022/components/transfer-picker/transfer-picker.service.mjs +134 -0
- package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +126 -0
- package/esm2022/directives/animate-on-scroll/cmat-directives-animate-on-scroll.mjs +5 -0
- package/esm2022/directives/animate-on-scroll/public-api.mjs +2 -0
- package/esm2022/directives/animate-on-scroll/scroll.service.mjs +38 -0
- package/esm2022/directives/autofocus/autofocus.directive.mjs +20 -0
- package/esm2022/directives/autofocus/cmat-directives-autofocus.mjs +5 -0
- package/esm2022/directives/autofocus/public-api.mjs +2 -0
- package/esm2022/directives/debounce/abstract-debounce.directive.mjs +34 -0
- package/esm2022/directives/debounce/cmat-directives-debounce.mjs +5 -0
- package/esm2022/directives/debounce/debounce-click.directive.mjs +25 -0
- package/esm2022/directives/debounce/debounce-keyup.directive.mjs +25 -0
- package/esm2022/directives/debounce/public-api.mjs +3 -0
- package/esm2022/directives/digit-only/cmat-directives-digit-only.mjs +5 -0
- package/esm2022/directives/digit-only/digit-only.directive.mjs +282 -0
- package/esm2022/directives/digit-only/mask.directive.mjs +69 -0
- package/esm2022/directives/digit-only/public-api.mjs +3 -0
- package/esm2022/directives/equal-validator/cmat-directives-equal-validator.mjs +5 -0
- package/esm2022/directives/equal-validator/equal-validator.directive.mjs +54 -0
- package/esm2022/directives/equal-validator/public-api.mjs +2 -0
- package/esm2022/lib/mock-api/cmat-lib-mock-api.mjs +5 -0
- package/esm2022/lib/mock-api/mock-api.constants.mjs +3 -0
- package/esm2022/lib/mock-api/mock-api.interceptor.mjs +73 -0
- package/esm2022/lib/mock-api/mock-api.request-handler.mjs +48 -0
- package/esm2022/lib/mock-api/mock-api.service.mjs +93 -0
- package/esm2022/lib/mock-api/mock-api.types.mjs +2 -0
- package/esm2022/lib/mock-api/mock-api.utils.mjs +17 -0
- package/esm2022/lib/mock-api/public-api.mjs +6 -0
- package/esm2022/pipes/bytes/bytes.pipe.mjs +25 -0
- package/esm2022/pipes/bytes/cmat-pipes-bytes.mjs +5 -0
- package/esm2022/pipes/bytes/public-api.mjs +2 -0
- package/esm2022/pipes/date-format/cmat-pipes-date-format.mjs +5 -0
- package/esm2022/pipes/date-format/date-format.pipe.mjs +18 -0
- package/esm2022/pipes/date-format/public-api.mjs +2 -0
- package/esm2022/pipes/find-by-key/cmat-pipes-find-by-key.mjs +5 -0
- package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +23 -0
- package/esm2022/pipes/find-by-key/public-api.mjs +2 -0
- package/esm2022/pipes/group-by/cmat-pipes-group-by.mjs +5 -0
- package/esm2022/pipes/group-by/group-by.pipe.mjs +29 -0
- package/esm2022/pipes/group-by/public-api.mjs +2 -0
- package/esm2022/pipes/keys/cmat-pipes-keys.mjs +5 -0
- package/esm2022/pipes/keys/keys.pipe.mjs +26 -0
- package/esm2022/pipes/keys/public-api.mjs +2 -0
- package/esm2022/pipes/secure/cmat-pipes-secure.mjs +5 -0
- package/esm2022/pipes/secure/public-api.mjs +2 -0
- package/esm2022/pipes/secure/secure-pipe.mjs +43 -0
- package/esm2022/pipes/uppercase/cmat-pipes-uppercase.mjs +5 -0
- package/esm2022/pipes/uppercase/public-api.mjs +2 -0
- package/esm2022/pipes/uppercase/uppercase.pipe.mjs +17 -0
- package/esm2022/public-api.mjs +2 -0
- package/esm2022/services/alert/alert.dialog.mjs +12 -0
- package/esm2022/services/alert/alert.message.mjs +9 -0
- package/esm2022/services/alert/alert.service.mjs +165 -0
- package/esm2022/services/alert/cmat-services-alert.mjs +5 -0
- package/esm2022/services/alert/enum.mjs +15 -0
- package/esm2022/services/alert/public-api.mjs +5 -0
- package/esm2022/services/config/cmat-services-config.mjs +5 -0
- package/esm2022/services/config/config.constants.mjs +3 -0
- package/esm2022/services/config/config.service.mjs +35 -0
- package/esm2022/services/config/public-api.mjs +4 -0
- package/esm2022/services/config/urlStateConfig.service.mjs +30 -0
- package/esm2022/services/confirmation/cmat-services-confirmation.mjs +5 -0
- package/esm2022/services/confirmation/confirmation.service.mjs +51 -0
- package/esm2022/services/confirmation/confirmation.types.mjs +2 -0
- package/esm2022/services/confirmation/dialog/dialog.component.mjs +25 -0
- package/esm2022/services/confirmation/public-api.mjs +3 -0
- package/esm2022/services/data/cmat-services-data.mjs +5 -0
- package/esm2022/services/data/data.service.mjs +169 -0
- package/esm2022/services/data/public-api.mjs +2 -0
- package/esm2022/services/loading/cmat-services-loading.mjs +5 -0
- package/esm2022/services/loading/loading.interceptor.mjs +29 -0
- package/esm2022/services/loading/loading.service.mjs +72 -0
- package/esm2022/services/loading/public-api.mjs +3 -0
- package/esm2022/services/local-storage/cmat-services-local-storage.mjs +5 -0
- package/esm2022/services/local-storage/local-storage.service.mjs +22 -0
- package/esm2022/services/local-storage/public-api.mjs +2 -0
- package/esm2022/services/media-watcher/cmat-services-media-watcher.mjs +5 -0
- package/esm2022/services/media-watcher/media-watcher.service.mjs +55 -0
- package/esm2022/services/media-watcher/public-api.mjs +2 -0
- package/esm2022/services/platform/cmat-services-platform.mjs +5 -0
- package/esm2022/services/platform/platform.service.mjs +46 -0
- package/esm2022/services/platform/public-api.mjs +2 -0
- package/esm2022/services/splash-screen/cmat-services-splash-screen.mjs +5 -0
- package/esm2022/services/splash-screen/public-api.mjs +2 -0
- package/esm2022/services/splash-screen/splash-screen.service.mjs +42 -0
- package/esm2022/services/title/cmat-services-title.mjs +5 -0
- package/esm2022/services/title/public-api.mjs +2 -0
- package/esm2022/services/title/title.service.mjs +46 -0
- package/esm2022/services/translation/cmat-services-translation.mjs +5 -0
- package/esm2022/services/translation/public-api.mjs +2 -0
- package/esm2022/services/translation/translation.service.mjs +62 -0
- package/esm2022/services/utils/cmat-services-utils.mjs +5 -0
- package/esm2022/services/utils/public-api.mjs +2 -0
- package/esm2022/services/utils/utils.service.mjs +391 -0
- package/esm2022/validators/cmat-validators.mjs +5 -0
- package/esm2022/validators/public-api.mjs +2 -0
- package/esm2022/validators/validators.mjs +33 -0
- package/esm2022/version/cmat-version.mjs +5 -0
- package/esm2022/version/public-api.mjs +2 -0
- package/esm2022/version/version.mjs +11 -0
- package/fesm2022/cmat-animations.mjs +466 -0
- package/fesm2022/cmat-animations.mjs.map +1 -0
- package/fesm2022/cmat-components-adapter.mjs +600 -0
- package/fesm2022/cmat-components-adapter.mjs.map +1 -0
- package/fesm2022/cmat-components-breadcrumb.mjs +449 -0
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -0
- package/fesm2022/cmat-components-card.mjs +65 -0
- package/fesm2022/cmat-components-card.mjs.map +1 -0
- package/fesm2022/cmat-components-cascade.mjs +334 -0
- package/fesm2022/cmat-components-cascade.mjs.map +1 -0
- package/fesm2022/cmat-components-date-range.mjs +547 -0
- package/fesm2022/cmat-components-date-range.mjs.map +1 -0
- package/fesm2022/cmat-components-drawer.mjs +346 -0
- package/fesm2022/cmat-components-drawer.mjs.map +1 -0
- package/fesm2022/cmat-components-fullscreen.mjs +108 -0
- package/fesm2022/cmat-components-fullscreen.mjs.map +1 -0
- package/fesm2022/cmat-components-highlight.mjs +131 -0
- package/fesm2022/cmat-components-highlight.mjs.map +1 -0
- package/fesm2022/cmat-components-masonry.mjs +61 -0
- package/fesm2022/cmat-components-masonry.mjs.map +1 -0
- package/fesm2022/cmat-components-material-color-picker.mjs +160 -0
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -0
- package/fesm2022/cmat-components-material-datetimepicker.mjs +2976 -0
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -0
- package/fesm2022/cmat-components-navigation.mjs +1656 -0
- package/fesm2022/cmat-components-navigation.mjs.map +1 -0
- package/fesm2022/cmat-components-pagination.mjs +455 -0
- package/fesm2022/cmat-components-pagination.mjs.map +1 -0
- package/fesm2022/cmat-components-password-strength.mjs +489 -0
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -0
- package/fesm2022/cmat-components-popover.mjs +383 -0
- package/fesm2022/cmat-components-popover.mjs.map +1 -0
- package/fesm2022/cmat-components-progress-bar.mjs +62 -0
- package/fesm2022/cmat-components-progress-bar.mjs.map +1 -0
- package/fesm2022/cmat-components-rating.mjs +98 -0
- package/fesm2022/cmat-components-rating.mjs.map +1 -0
- package/fesm2022/cmat-components-select-search.mjs +531 -0
- package/fesm2022/cmat-components-select-search.mjs.map +1 -0
- package/fesm2022/cmat-components-select-tree.mjs +467 -0
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -0
- package/fesm2022/cmat-components-timeline.mjs +186 -0
- package/fesm2022/cmat-components-timeline.mjs.map +1 -0
- package/fesm2022/cmat-components-toast.mjs +205 -0
- package/fesm2022/cmat-components-toast.mjs.map +1 -0
- package/fesm2022/cmat-components-transfer-picker.mjs +536 -0
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -0
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +166 -0
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -0
- package/fesm2022/cmat-directives-autofocus.mjs +27 -0
- package/fesm2022/cmat-directives-autofocus.mjs.map +1 -0
- package/fesm2022/cmat-directives-debounce.mjs +85 -0
- package/fesm2022/cmat-directives-debounce.mjs.map +1 -0
- package/fesm2022/cmat-directives-digit-only.mjs +356 -0
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -0
- package/fesm2022/cmat-directives-equal-validator.mjs +61 -0
- package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -0
- package/fesm2022/cmat-lib-mock-api.mjs +232 -0
- package/fesm2022/cmat-lib-mock-api.mjs.map +1 -0
- package/fesm2022/cmat-pipes-bytes.mjs +32 -0
- package/fesm2022/cmat-pipes-bytes.mjs.map +1 -0
- package/fesm2022/cmat-pipes-date-format.mjs +25 -0
- package/fesm2022/cmat-pipes-date-format.mjs.map +1 -0
- package/fesm2022/cmat-pipes-find-by-key.mjs +30 -0
- package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -0
- package/fesm2022/cmat-pipes-group-by.mjs +36 -0
- package/fesm2022/cmat-pipes-group-by.mjs.map +1 -0
- package/fesm2022/cmat-pipes-keys.mjs +33 -0
- package/fesm2022/cmat-pipes-keys.mjs.map +1 -0
- package/fesm2022/cmat-pipes-secure.mjs +50 -0
- package/fesm2022/cmat-pipes-secure.mjs.map +1 -0
- package/fesm2022/cmat-pipes-uppercase.mjs +24 -0
- package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -0
- package/fesm2022/cmat-services-alert.mjs +207 -0
- package/fesm2022/cmat-services-alert.mjs.map +1 -0
- package/fesm2022/cmat-services-config.mjs +69 -0
- package/fesm2022/cmat-services-config.mjs.map +1 -0
- package/fesm2022/cmat-services-confirmation.mjs +79 -0
- package/fesm2022/cmat-services-confirmation.mjs.map +1 -0
- package/fesm2022/cmat-services-data.mjs +176 -0
- package/fesm2022/cmat-services-data.mjs.map +1 -0
- package/fesm2022/cmat-services-loading.mjs +104 -0
- package/fesm2022/cmat-services-loading.mjs.map +1 -0
- package/fesm2022/cmat-services-local-storage.mjs +29 -0
- package/fesm2022/cmat-services-local-storage.mjs.map +1 -0
- package/fesm2022/cmat-services-media-watcher.mjs +62 -0
- package/fesm2022/cmat-services-media-watcher.mjs.map +1 -0
- package/fesm2022/cmat-services-platform.mjs +53 -0
- package/fesm2022/cmat-services-platform.mjs.map +1 -0
- package/fesm2022/cmat-services-splash-screen.mjs +49 -0
- package/fesm2022/cmat-services-splash-screen.mjs.map +1 -0
- package/fesm2022/cmat-services-title.mjs +53 -0
- package/fesm2022/cmat-services-title.mjs.map +1 -0
- package/fesm2022/cmat-services-translation.mjs +69 -0
- package/fesm2022/cmat-services-translation.mjs.map +1 -0
- package/fesm2022/cmat-services-utils.mjs +398 -0
- package/fesm2022/cmat-services-utils.mjs.map +1 -0
- package/fesm2022/cmat-validators.mjs +39 -0
- package/fesm2022/cmat-validators.mjs.map +1 -0
- package/fesm2022/cmat-version.mjs +17 -0
- package/fesm2022/cmat-version.mjs.map +1 -0
- package/fesm2022/cmat.mjs +4 -0
- package/fesm2022/cmat.mjs.map +1 -0
- package/icons/CSV.svg +3 -0
- package/icons/EXCEL.svg +3 -0
- package/icons/FILE.svg +3 -0
- package/icons/GIF.svg +3 -0
- package/icons/JPG.svg +3 -0
- package/icons/PDF.svg +3 -0
- package/icons/PNG.svg +3 -0
- package/icons/PPT.svg +3 -0
- package/icons/TEXT.svg +3 -0
- package/icons/VIDEO.svg +3 -0
- package/icons/WORD.svg +3 -0
- package/icons/ZIP.svg +3 -0
- package/icons/arrow-cursor.svg +3 -0
- package/icons/material-icons/heroicons-outline.svg +893 -0
- package/icons/material-icons/heroicons-solid.svg +958 -0
- package/icons/material-icons/material-outline.svg +3586 -0
- package/icons/material-icons/material-solid.svg +3586 -0
- package/index.d.ts +5 -0
- package/lib/mock-api/index.d.ts +5 -0
- package/lib/mock-api/mock-api.constants.d.ts +2 -0
- package/lib/mock-api/mock-api.interceptor.d.ts +12 -0
- package/lib/mock-api/mock-api.request-handler.d.ts +18 -0
- package/lib/mock-api/mock-api.service.d.ts +22 -0
- package/lib/mock-api/mock-api.types.d.ts +9 -0
- package/lib/mock-api/mock-api.utils.d.ts +3 -0
- package/lib/mock-api/public-api.d.ts +5 -0
- package/package.json +344 -0
- package/pipes/bytes/bytes.pipe.d.ts +7 -0
- package/pipes/bytes/index.d.ts +5 -0
- package/pipes/bytes/public-api.d.ts +1 -0
- package/pipes/date-format/date-format.pipe.d.ts +7 -0
- package/pipes/date-format/index.d.ts +5 -0
- package/pipes/date-format/public-api.d.ts +1 -0
- package/pipes/find-by-key/find-by-key.pipe.d.ts +7 -0
- package/pipes/find-by-key/index.d.ts +5 -0
- package/pipes/find-by-key/public-api.d.ts +1 -0
- package/pipes/group-by/group-by.pipe.d.ts +7 -0
- package/pipes/group-by/index.d.ts +5 -0
- package/pipes/group-by/public-api.d.ts +1 -0
- package/pipes/keys/index.d.ts +5 -0
- package/pipes/keys/keys.pipe.d.ts +7 -0
- package/pipes/keys/public-api.d.ts +1 -0
- package/pipes/secure/index.d.ts +5 -0
- package/pipes/secure/public-api.d.ts +1 -0
- package/pipes/secure/secure-pipe.d.ts +18 -0
- package/pipes/uppercase/index.d.ts +5 -0
- package/pipes/uppercase/public-api.d.ts +1 -0
- package/pipes/uppercase/uppercase.pipe.d.ts +7 -0
- package/public-api.d.ts +1 -0
- package/services/alert/alert.dialog.d.ts +11 -0
- package/services/alert/alert.message.d.ts +8 -0
- package/services/alert/alert.service.d.ts +37 -0
- package/services/alert/enum.d.ts +12 -0
- package/services/alert/index.d.ts +5 -0
- package/services/alert/public-api.d.ts +4 -0
- package/services/config/config.constants.d.ts +6 -0
- package/services/config/config.service.d.ts +11 -0
- package/services/config/index.d.ts +5 -0
- package/services/config/public-api.d.ts +3 -0
- package/services/config/urlStateConfig.service.d.ts +10 -0
- package/services/confirmation/confirmation.service.d.ts +12 -0
- package/services/confirmation/confirmation.types.d.ts +21 -0
- package/services/confirmation/dialog/dialog.component.d.ts +10 -0
- package/services/confirmation/index.d.ts +5 -0
- package/services/confirmation/public-api.d.ts +2 -0
- package/services/data/data.service.d.ts +20 -0
- package/services/data/index.d.ts +5 -0
- package/services/data/public-api.d.ts +1 -0
- package/services/loading/index.d.ts +5 -0
- package/services/loading/loading.interceptor.d.ts +12 -0
- package/services/loading/loading.service.d.ts +24 -0
- package/services/loading/public-api.d.ts +2 -0
- package/services/local-storage/index.d.ts +5 -0
- package/services/local-storage/local-storage.service.d.ts +8 -0
- package/services/local-storage/public-api.d.ts +1 -0
- package/services/media-watcher/index.d.ts +5 -0
- package/services/media-watcher/media-watcher.service.d.ts +20 -0
- package/services/media-watcher/public-api.d.ts +1 -0
- package/services/platform/index.d.ts +5 -0
- package/services/platform/platform.service.d.ts +9 -0
- package/services/platform/public-api.d.ts +1 -0
- package/services/splash-screen/index.d.ts +5 -0
- package/services/splash-screen/public-api.d.ts +1 -0
- package/services/splash-screen/splash-screen.service.d.ts +14 -0
- package/services/title/index.d.ts +5 -0
- package/services/title/public-api.d.ts +1 -0
- package/services/title/title.service.d.ts +13 -0
- package/services/translation/index.d.ts +5 -0
- package/services/translation/public-api.d.ts +1 -0
- package/services/translation/translation.service.d.ts +20 -0
- package/services/utils/index.d.ts +5 -0
- package/services/utils/public-api.d.ts +1 -0
- package/services/utils/utils.service.d.ts +57 -0
- package/styles/components/input.scss +42 -0
- package/styles/main.scss +9 -0
- package/styles/overrides/angular-material.scss +1403 -0
- package/styles/overrides/fullcalendar.scss +550 -0
- package/styles/overrides/highlightjs.scss +81 -0
- package/styles/styles.scss +3 -0
- package/styles/tailwind.scss +86 -0
- package/styles/themes.scss +164 -0
- package/styles/user-themes.scss +1 -0
- package/tailwind/plugins/icon-size.js +49 -0
- package/tailwind/plugins/theming.js +256 -0
- package/tailwind/plugins/utilities.js +66 -0
- package/tailwind/utils/generate-contrasts.js +29 -0
- package/tailwind/utils/generate-palette.js +100 -0
- package/tailwind/utils/json-to-sass-map.js +67 -0
- package/validators/index.d.ts +5 -0
- package/validators/public-api.d.ts +1 -0
- package/validators/validators.d.ts +5 -0
- package/version/index.d.ts +5 -0
- package/version/public-api.d.ts +1 -0
- package/version/version.d.ts +9 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { map } from 'rxjs/operators';
|
|
3
|
+
import { CmatBreadcrumbItemDirective } from './breadcrumb-item.directive';
|
|
4
|
+
import { AsyncPipe, NgClass, NgFor, NgIf } from '@angular/common';
|
|
5
|
+
import { RouterLink } from '@angular/router';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./breadcrumb.service";
|
|
8
|
+
export class CmatBreadcrumbComponent {
|
|
9
|
+
constructor(_breadcrumbService) {
|
|
10
|
+
this._breadcrumbService = _breadcrumbService;
|
|
11
|
+
/**
|
|
12
|
+
* If true, breadcrumb is auto generated even without any mapping label
|
|
13
|
+
* Default label is same as route segment
|
|
14
|
+
*/
|
|
15
|
+
this.autoGenerate = true;
|
|
16
|
+
/**
|
|
17
|
+
* By default query params will be preserved with breadcrumbs
|
|
18
|
+
*/
|
|
19
|
+
this.preserveQueryParams = true;
|
|
20
|
+
/**
|
|
21
|
+
* By default query fragments will be preserved with breadcrumbs
|
|
22
|
+
*/
|
|
23
|
+
this.preserveFragment = true;
|
|
24
|
+
/**
|
|
25
|
+
* custom class provided by consumer to increase specificity
|
|
26
|
+
* This will benefit to override styles that are conflicting
|
|
27
|
+
*/
|
|
28
|
+
this.class = '';
|
|
29
|
+
this._separator = '/';
|
|
30
|
+
}
|
|
31
|
+
get separator() {
|
|
32
|
+
return this._separator;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* separator between breadcrumbs, defaults to '/'.
|
|
36
|
+
* User can customize separator either by passing a String or Template
|
|
37
|
+
*
|
|
38
|
+
* String --> Ex: <cmat-breadcrumb separator="-"> </cmat-breadcrumb>
|
|
39
|
+
*
|
|
40
|
+
* Template --> Ex: <cmat-breadcrumb [separator]="separatorTemplate"> </cmat-breadcrumb>
|
|
41
|
+
* <ng-template #separatorTemplate><mat-icon>arrow_right</mat-icon></ng-template>
|
|
42
|
+
*/
|
|
43
|
+
set separator(value) {
|
|
44
|
+
if (value instanceof TemplateRef) {
|
|
45
|
+
this.separatorTemplate = value;
|
|
46
|
+
this._separator = undefined;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.separatorTemplate = undefined;
|
|
50
|
+
this._separator = value || '/';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
ngOnInit() {
|
|
54
|
+
this.breadcrumbs$ = this._breadcrumbService.breadcrumbs$.pipe(map((breadcrumbs) => breadcrumbs
|
|
55
|
+
.filter((breadcrumb) => {
|
|
56
|
+
// Usually, breadcrumb list can contain a combination of auto generated and user specified labels
|
|
57
|
+
// this filters autogenerated labels in case of "[autoGenerate]: false"
|
|
58
|
+
if (this.autoGenerate) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
return !breadcrumb.isAutoGeneratedLabel;
|
|
62
|
+
})
|
|
63
|
+
.map((breadcrumb) => {
|
|
64
|
+
// Do not mutate breadcrumb as its source of truth.
|
|
65
|
+
// There can be scenarios where we can have multiple cmat-breadcrumb instances in page
|
|
66
|
+
const { routeInterceptor, routeLink } = breadcrumb;
|
|
67
|
+
return {
|
|
68
|
+
...breadcrumb,
|
|
69
|
+
routeLink: routeInterceptor?.(breadcrumb, routeLink) || routeLink,
|
|
70
|
+
};
|
|
71
|
+
})));
|
|
72
|
+
}
|
|
73
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatBreadcrumbComponent, deps: [{ token: i1.CmatBreadcrumbService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
74
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: CmatBreadcrumbComponent, isStandalone: true, selector: "cmat-breadcrumb", inputs: { autoGenerate: "autoGenerate", preserveQueryParams: "preserveQueryParams", preserveFragment: "preserveFragment", class: "class", anchorTarget: "anchorTarget", separator: "separator" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: CmatBreadcrumbItemDirective, descendants: true, read: TemplateRef }], exportAs: ["cmatBreadcrumb"], ngImport: i0, template: "<nav aria-label=\"breadcrumb\" class=\"cmat-breadcrumb-root m-0\" [ngClass]=\"class\">\r\n <ol class=\"flex items-center flex-wrap m-0 p-0\">\r\n <ng-container *ngFor=\"\r\n let breadcrumb of breadcrumbs$ | async;\r\n last as isLast;\r\n first as isFirst;\r\n index as index;\r\n count as count\r\n \">\r\n <li class=\"list-none\">\r\n <a *ngIf=\"!isLast\" class=\"cmat-breadcrumb-link\"\r\n [ngClass]=\"{ 'pointer-events-none cursor-not-allowed': breadcrumb.disable }\"\r\n [attr.aria-disabled]=\"breadcrumb.disable\" [attr.tabIndex]=\"breadcrumb.disable ? -1 : 0\"\r\n rel=\"noopener noreferrer\" [routerLink]=\"\r\n breadcrumb.routeInterceptor\r\n ? breadcrumb.routeInterceptor( breadcrumb,breadcrumb.routeLink)\r\n : breadcrumb.routeLink\" [queryParams]=\"preserveQueryParams ? breadcrumb.queryParams : undefined\"\r\n [fragment]=\"preserveFragment ? breadcrumb.fragment : undefined\"\r\n [target]=\"anchorTarget ? anchorTarget : '_self'\">\r\n <ng-container *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count\r\n }\r\n \"></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </a>\r\n\r\n <span *ngIf=\"isLast\" class=\"cmat-breadcrumb-trail flex items-center\">\r\n <ng-container *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count\r\n }\r\n \"></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </span>\r\n </li>\r\n\r\n <li *ngIf=\"!isLast\" class=\"flex select-none mx-4\" aria-hidden=\"true\" role=\"separator\">\r\n <ng-container *ngTemplateOutlet=\"separatorTemplate\"></ng-container>\r\n <ng-container *ngIf=\"!separatorTemplate\">{{ separator }}</ng-container>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n</nav>", styles: ["cmat-breadcrumb .cmat-breadcrumb-root{color:#0009}cmat-breadcrumb .cmat-breadcrumb-trail{color:#000000e6}cmat-breadcrumb .cmat-breadcrumb-link{@apply flex items-center text-primary whitespace-nowrap no-underline cursor-pointer;transition:text-decoration .3s}cmat-breadcrumb .cmat-breadcrumb-link:hover{@apply underline;}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
75
|
+
}
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatBreadcrumbComponent, decorators: [{
|
|
77
|
+
type: Component,
|
|
78
|
+
args: [{ selector: 'cmat-breadcrumb', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatBreadcrumb', standalone: true, imports: [NgIf, NgFor, NgClass, AsyncPipe, RouterLink], template: "<nav aria-label=\"breadcrumb\" class=\"cmat-breadcrumb-root m-0\" [ngClass]=\"class\">\r\n <ol class=\"flex items-center flex-wrap m-0 p-0\">\r\n <ng-container *ngFor=\"\r\n let breadcrumb of breadcrumbs$ | async;\r\n last as isLast;\r\n first as isFirst;\r\n index as index;\r\n count as count\r\n \">\r\n <li class=\"list-none\">\r\n <a *ngIf=\"!isLast\" class=\"cmat-breadcrumb-link\"\r\n [ngClass]=\"{ 'pointer-events-none cursor-not-allowed': breadcrumb.disable }\"\r\n [attr.aria-disabled]=\"breadcrumb.disable\" [attr.tabIndex]=\"breadcrumb.disable ? -1 : 0\"\r\n rel=\"noopener noreferrer\" [routerLink]=\"\r\n breadcrumb.routeInterceptor\r\n ? breadcrumb.routeInterceptor( breadcrumb,breadcrumb.routeLink)\r\n : breadcrumb.routeLink\" [queryParams]=\"preserveQueryParams ? breadcrumb.queryParams : undefined\"\r\n [fragment]=\"preserveFragment ? breadcrumb.fragment : undefined\"\r\n [target]=\"anchorTarget ? anchorTarget : '_self'\">\r\n <ng-container *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count\r\n }\r\n \"></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </a>\r\n\r\n <span *ngIf=\"isLast\" class=\"cmat-breadcrumb-trail flex items-center\">\r\n <ng-container *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count\r\n }\r\n \"></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </span>\r\n </li>\r\n\r\n <li *ngIf=\"!isLast\" class=\"flex select-none mx-4\" aria-hidden=\"true\" role=\"separator\">\r\n <ng-container *ngTemplateOutlet=\"separatorTemplate\"></ng-container>\r\n <ng-container *ngIf=\"!separatorTemplate\">{{ separator }}</ng-container>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n</nav>", styles: ["cmat-breadcrumb .cmat-breadcrumb-root{color:#0009}cmat-breadcrumb .cmat-breadcrumb-trail{color:#000000e6}cmat-breadcrumb .cmat-breadcrumb-link{@apply flex items-center text-primary whitespace-nowrap no-underline cursor-pointer;transition:text-decoration .3s}cmat-breadcrumb .cmat-breadcrumb-link:hover{@apply underline;}\n"] }]
|
|
79
|
+
}], ctorParameters: () => [{ type: i1.CmatBreadcrumbService }], propDecorators: { itemTemplate: [{
|
|
80
|
+
type: ContentChild,
|
|
81
|
+
args: [CmatBreadcrumbItemDirective, { static: false, read: TemplateRef }]
|
|
82
|
+
}], autoGenerate: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], preserveQueryParams: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], preserveFragment: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], class: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}], anchorTarget: [{
|
|
91
|
+
type: Input
|
|
92
|
+
}], separator: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}] } });
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxpQkFBaUIsR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUVqSSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBWTdDLE1BQU0sT0FBTyx1QkFBdUI7SUE2Q2hDLFlBQ1ksa0JBQXlDO1FBQXpDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7UUFsQ3JEOzs7V0FHRztRQUNNLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRTdCOztXQUVHO1FBQ00sd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRXBDOztXQUVHO1FBQ00scUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRWpDOzs7V0FHRztRQUNNLFVBQUssR0FBRyxFQUFFLENBQUM7UUFXWixlQUFVLEdBQWtCLEdBQUcsQ0FBQztJQUdpQixDQUFDO0lBRTFELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBQ0Q7Ozs7Ozs7O09BUUc7SUFDSCxJQUNJLFNBQVMsQ0FBQyxLQUFpQztRQUMzQyxJQUFJLEtBQUssWUFBWSxXQUFXLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztTQUMvQjthQUFNO1lBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztZQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxHQUFHLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxDQUFDLFdBQXVDLEVBQUUsRUFBRSxDQUFDLFdBQVc7YUFDdkQsTUFBTSxDQUFDLENBQUMsVUFBb0MsRUFBRSxFQUFFO1lBQzdDLGlHQUFpRztZQUNqRyx1RUFBdUU7WUFDdkUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNuQixPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztRQUM1QyxDQUFDLENBQUM7YUFDRCxHQUFHLENBQUMsQ0FBQyxVQUFvQyxFQUFFLEVBQUU7WUFDMUMsbURBQW1EO1lBQ25ELHNGQUFzRjtZQUN0RixNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLEdBQUcsVUFBVSxDQUFDO1lBQ25ELE9BQU87Z0JBQ0gsR0FBRyxVQUFVO2dCQUNiLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsSUFBSSxTQUFTO2FBQ25FLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQyxDQUNWLENBQUM7SUFDTixDQUFDOzhHQTVGUSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix1VEFTbEIsMkJBQTJCLDJCQUF5QixXQUFXLDJEQzNCakYsZ2dGQTJETSw0WEQzQ1EsSUFBSSw2RkFBRSxLQUFLLG1IQUFFLE9BQU8sK0VBQUUsU0FBUyw4Q0FBRSxVQUFVOzsyRkFFNUMsdUJBQXVCO2tCQVZuQyxTQUFTOytCQUNJLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUM7MEZBWXRELFlBQVk7c0JBRFgsWUFBWTt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFPdEUsWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBS0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQXdCRixTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ21hdEJyZWFkY3J1bWJJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9icmVhZGNydW1iLWl0ZW0uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uLCBDbWF0QnJlYWRjcnVtYlNlcnZpY2UgfSBmcm9tICcuL2JyZWFkY3J1bWIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjbWF0LWJyZWFkY3J1bWInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYnJlYWRjcnVtYi5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgZXhwb3J0QXM6ICdjbWF0QnJlYWRjcnVtYicsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW05nSWYsIE5nRm9yLCBOZ0NsYXNzLCBBc3luY1BpcGUsIFJvdXRlckxpbmtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0QnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIEJyZWFkY3J1bWIgaXRlbSBjYW4gYmUgY3VzdG9taXplZCB3aXRoIHRoaXMgdGVtcGxhdGVcclxuICAgICAqIFRlbXBsYXRlIGNvbnRleHQgaXMgcHJvdmlkZWQgbGFiZWwsIGFkZGl0aW9uYWwgaW5mbywgZmlyc3QgYW5kIGxhc3QgaW5kZXhlc1xyXG4gICAgICogVXNlIGNhc2VzOlxyXG4gICAgICogMSkgQWRkIGFuIGljb24gYWxvbmcgd2l0aCBsYWJlbFxyXG4gICAgICogMikgaTE4bi4ge3ticmVhZGNydW1iIHwgdHJhbnNsYXRlfX0gb3Ige3ticmVhZGNydW1iIHwgdHJhbnNsb2NvfX1cclxuICAgICAqIDMpIENoYW5nZSB0ZXh0IGNhc2Uge3ticmVhZGNydW1iIHwgdGl0bGVjYXNlfX1cclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChDbWF0QnJlYWRjcnVtYkl0ZW1EaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcclxuICAgIGl0ZW1UZW1wbGF0ZTogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgdHJ1ZSwgYnJlYWRjcnVtYiBpcyBhdXRvIGdlbmVyYXRlZCBldmVuIHdpdGhvdXQgYW55IG1hcHBpbmcgbGFiZWxcclxuICAgICAqIERlZmF1bHQgbGFiZWwgaXMgc2FtZSBhcyByb3V0ZSBzZWdtZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGF1dG9HZW5lcmF0ZSA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCeSBkZWZhdWx0IHF1ZXJ5IHBhcmFtcyB3aWxsIGJlIHByZXNlcnZlZCB3aXRoIGJyZWFkY3J1bWJzXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHByZXNlcnZlUXVlcnlQYXJhbXMgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnkgZGVmYXVsdCBxdWVyeSBmcmFnbWVudHMgd2lsbCBiZSBwcmVzZXJ2ZWQgd2l0aCBicmVhZGNydW1ic1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwcmVzZXJ2ZUZyYWdtZW50ID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGN1c3RvbSBjbGFzcyBwcm92aWRlZCBieSBjb25zdW1lciB0byBpbmNyZWFzZSBzcGVjaWZpY2l0eVxyXG4gICAgICogVGhpcyB3aWxsIGJlbmVmaXQgdG8gb3ZlcnJpZGUgc3R5bGVzIHRoYXQgYXJlIGNvbmZsaWN0aW5nXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGNsYXNzID0gJyc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhbmNob3JUYXJnZXQgPSBcIl9ibGFua1wiIG1ha2VzIHRoZSBicmVhZGNydW1iIGxpbmsgb3BlbiBpbiBhIG5ldyB0YWJcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgYW5jaG9yVGFyZ2V0OiAnX2JsYW5rJyB8IHZvaWQ7XHJcblxyXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgICBicmVhZGNydW1icyQ6IE9ic2VydmFibGU8Q21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10+O1xyXG4gICAgc2VwYXJhdG9yVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHZvaWQ+IHwgdm9pZDtcclxuXHJcbiAgICBwcml2YXRlIF9zZXBhcmF0b3I6IHN0cmluZyB8IHZvaWQgPSAnLyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBfYnJlYWRjcnVtYlNlcnZpY2U6IENtYXRCcmVhZGNydW1iU2VydmljZSkgeyB9XHJcblxyXG4gICAgZ2V0IHNlcGFyYXRvcigpOiBzdHJpbmcgfCB2b2lkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VwYXJhdG9yO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXBhcmF0b3IgYmV0d2VlbiBicmVhZGNydW1icywgZGVmYXVsdHMgdG8gJy8nLlxyXG4gICAgICogVXNlciBjYW4gY3VzdG9taXplIHNlcGFyYXRvciBlaXRoZXIgYnkgcGFzc2luZyBhIFN0cmluZyBvciBUZW1wbGF0ZVxyXG4gICAgICpcclxuICAgICAqIFN0cmluZyAtLT4gRXg6IDxjbWF0LWJyZWFkY3J1bWIgc2VwYXJhdG9yPVwiLVwiPiA8L2NtYXQtYnJlYWRjcnVtYj5cclxuICAgICAqXHJcbiAgICAgKiBUZW1wbGF0ZSAtLT4gRXg6IDxjbWF0LWJyZWFkY3J1bWIgW3NlcGFyYXRvcl09XCJzZXBhcmF0b3JUZW1wbGF0ZVwiPiA8L2NtYXQtYnJlYWRjcnVtYj5cclxuICAgICAqIDxuZy10ZW1wbGF0ZSAjc2VwYXJhdG9yVGVtcGxhdGU+PG1hdC1pY29uPmFycm93X3JpZ2h0PC9tYXQtaWNvbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IHNlcGFyYXRvcih2YWx1ZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD4pIHtcclxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLnNlcGFyYXRvclRlbXBsYXRlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3NlcGFyYXRvciA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlcGFyYXRvclRlbXBsYXRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB0aGlzLl9zZXBhcmF0b3IgPSB2YWx1ZSB8fCAnLyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYnJlYWRjcnVtYnMkID0gdGhpcy5fYnJlYWRjcnVtYlNlcnZpY2UuYnJlYWRjcnVtYnMkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoYnJlYWRjcnVtYnM6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbltdKSA9PiBicmVhZGNydW1ic1xyXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoYnJlYWRjcnVtYjogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVXN1YWxseSwgYnJlYWRjcnVtYiBsaXN0IGNhbiBjb250YWluIGEgY29tYmluYXRpb24gb2YgYXV0byBnZW5lcmF0ZWQgYW5kIHVzZXIgc3BlY2lmaWVkIGxhYmVsc1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgZmlsdGVycyBhdXRvZ2VuZXJhdGVkIGxhYmVscyBpbiBjYXNlIG9mIFwiW2F1dG9HZW5lcmF0ZV06IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvR2VuZXJhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhYnJlYWRjcnVtYi5pc0F1dG9HZW5lcmF0ZWRMYWJlbDtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAubWFwKChicmVhZGNydW1iOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgbXV0YXRlIGJyZWFkY3J1bWIgYXMgaXRzIHNvdXJjZSBvZiB0cnV0aC5cclxuICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSBjYW4gYmUgc2NlbmFyaW9zIHdoZXJlIHdlIGNhbiBoYXZlIG11bHRpcGxlIGNtYXQtYnJlYWRjcnVtYiBpbnN0YW5jZXMgaW4gcGFnZVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcm91dGVJbnRlcmNlcHRvciwgcm91dGVMaW5rIH0gPSBicmVhZGNydW1iO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJyZWFkY3J1bWIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlTGluazogcm91dGVJbnRlcmNlcHRvcj8uKGJyZWFkY3J1bWIscm91dGVMaW5rKSB8fCByb3V0ZUxpbmssXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5hdiBhcmlhLWxhYmVsPVwiYnJlYWRjcnVtYlwiIGNsYXNzPVwiY21hdC1icmVhZGNydW1iLXJvb3QgbS0wXCIgW25nQ2xhc3NdPVwiY2xhc3NcIj5cclxuICA8b2wgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBmbGV4LXdyYXAgbS0wIHAtMFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJcclxuICAgICAgICBsZXQgYnJlYWRjcnVtYiBvZiBicmVhZGNydW1icyQgfCBhc3luYztcclxuICAgICAgICBsYXN0IGFzIGlzTGFzdDtcclxuICAgICAgICBmaXJzdCBhcyBpc0ZpcnN0O1xyXG4gICAgICAgIGluZGV4IGFzIGluZGV4O1xyXG4gICAgICAgIGNvdW50IGFzIGNvdW50XHJcbiAgICAgIFwiPlxyXG4gICAgICA8bGkgY2xhc3M9XCJsaXN0LW5vbmVcIj5cclxuICAgICAgICA8YSAqbmdJZj1cIiFpc0xhc3RcIiBjbGFzcz1cImNtYXQtYnJlYWRjcnVtYi1saW5rXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3BvaW50ZXItZXZlbnRzLW5vbmUgY3Vyc29yLW5vdC1hbGxvd2VkJzogYnJlYWRjcnVtYi5kaXNhYmxlIH1cIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJicmVhZGNydW1iLmRpc2FibGVcIiBbYXR0ci50YWJJbmRleF09XCJicmVhZGNydW1iLmRpc2FibGUgPyAtMSA6IDBcIlxyXG4gICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIFtyb3V0ZXJMaW5rXT1cIlxyXG4gICAgICAgICAgICBicmVhZGNydW1iLnJvdXRlSW50ZXJjZXB0b3JcclxuICAgICAgICAgICAgICA/IGJyZWFkY3J1bWIucm91dGVJbnRlcmNlcHRvciggYnJlYWRjcnVtYixicmVhZGNydW1iLnJvdXRlTGluaylcclxuICAgICAgICAgICAgICA6IGJyZWFkY3J1bWIucm91dGVMaW5rXCIgW3F1ZXJ5UGFyYW1zXT1cInByZXNlcnZlUXVlcnlQYXJhbXMgPyBicmVhZGNydW1iLnF1ZXJ5UGFyYW1zIDogdW5kZWZpbmVkXCJcclxuICAgICAgICAgIFtmcmFnbWVudF09XCJwcmVzZXJ2ZUZyYWdtZW50ID8gYnJlYWRjcnVtYi5mcmFnbWVudCA6IHVuZGVmaW5lZFwiXHJcbiAgICAgICAgICBbdGFyZ2V0XT1cImFuY2hvclRhcmdldCA/IGFuY2hvclRhcmdldCA6ICdfc2VsZidcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgJGltcGxpY2l0OiBicmVhZGNydW1iLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgaW5mbzogYnJlYWRjcnVtYi5pbmZvLFxyXG4gICAgICAgICAgICAgICAgbGFzdDogaXNMYXN0LFxyXG4gICAgICAgICAgICAgICAgZmlyc3Q6IGlzRmlyc3QsXHJcbiAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXHJcbiAgICAgICAgICAgICAgICBjb3VudDogY291bnRcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtVGVtcGxhdGVcIj57e1xyXG4gICAgICAgICAgICBicmVhZGNydW1iLmxhYmVsXHJcbiAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImlzTGFzdFwiIGNsYXNzPVwiY21hdC1icmVhZGNydW1iLXRyYWlsIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICRpbXBsaWNpdDogYnJlYWRjcnVtYi5sYWJlbCxcclxuICAgICAgICAgICAgICAgIGluZm86IGJyZWFkY3J1bWIuaW5mbyxcclxuICAgICAgICAgICAgICAgIGxhc3Q6IGlzTGFzdCxcclxuICAgICAgICAgICAgICAgIGZpcnN0OiBpc0ZpcnN0LFxyXG4gICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxyXG4gICAgICAgICAgICAgICAgY291bnQ6IGNvdW50XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbVRlbXBsYXRlXCI+e3tcclxuICAgICAgICAgICAgYnJlYWRjcnVtYi5sYWJlbFxyXG4gICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9saT5cclxuXHJcbiAgICAgIDxsaSAqbmdJZj1cIiFpc0xhc3RcIiBjbGFzcz1cImZsZXggc2VsZWN0LW5vbmUgbXgtNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHJvbGU9XCJzZXBhcmF0b3JcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VwYXJhdG9yVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlcGFyYXRvclRlbXBsYXRlXCI+e3sgc2VwYXJhdG9yIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbGk+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L29sPlxyXG48L25hdj4iXX0=
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { GuardsCheckEnd } from '@angular/router';
|
|
3
|
+
import { BehaviorSubject, Subject } from 'rxjs';
|
|
4
|
+
import { filter, takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { isNull } from 'lodash-es';
|
|
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
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
15
|
+
const ALIAS_PREFIX = '@';
|
|
16
|
+
const isNonEmpty = (obj) => obj && Object.keys(obj).length > 0;
|
|
17
|
+
export class CmatBreadcrumbService {
|
|
18
|
+
constructor(_activatedRoute, _router) {
|
|
19
|
+
this._activatedRoute = _activatedRoute;
|
|
20
|
+
this._router = _router;
|
|
21
|
+
this._baseHref = '/';
|
|
22
|
+
this._unsubscribeAll = new Subject();
|
|
23
|
+
/**
|
|
24
|
+
* dynamicBreadcrumbStore holds information about dynamically updated breadcrumbs.
|
|
25
|
+
* Breadcrumbs can be set from anywhere (component, service) in the app.
|
|
26
|
+
* On every breadcrumb update check this store and use the info if available.
|
|
27
|
+
*/
|
|
28
|
+
this._dynamicBreadcrumbStore = [];
|
|
29
|
+
/**
|
|
30
|
+
* breadcrumbList for the current route
|
|
31
|
+
* When breadcrumb info is changed dynamically, check if the currentBreadcrumbs is effected
|
|
32
|
+
* If effected, update the change and emit a new stream
|
|
33
|
+
*/
|
|
34
|
+
this._currentBreadcrumbs = [];
|
|
35
|
+
this._previousBreadcrumbs = [];
|
|
36
|
+
/**
|
|
37
|
+
* Breadcrumbs observable to be subscribed by BreadcrumbComponent
|
|
38
|
+
* Emits on every route change OR dynamic update of breadcrumb
|
|
39
|
+
*/
|
|
40
|
+
this._breadcrumbs = new BehaviorSubject([]);
|
|
41
|
+
this._detectRouteChanges();
|
|
42
|
+
}
|
|
43
|
+
get breadcrumbs$() {
|
|
44
|
+
return this._breadcrumbs.asObservable();
|
|
45
|
+
}
|
|
46
|
+
ngOnDestroy() {
|
|
47
|
+
this._unsubscribeAll.next(void 0);
|
|
48
|
+
this._unsubscribeAll.complete();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Update breadcrumb dynamically
|
|
52
|
+
*
|
|
53
|
+
* key can be a path | alias
|
|
54
|
+
*
|
|
55
|
+
* 1) Using complete route path. route can be passed the same way you define angular routes
|
|
56
|
+
* - path can be passed as 'exact path(routeLink)' or 'path with params(routeRegex)'
|
|
57
|
+
* - update label Ex: set('/mentor', 'Mentor'), set('/mentor/:id', 'Mentor Details')
|
|
58
|
+
* - change visibility Ex: set('/mentor/:id/edit', { skip: true })
|
|
59
|
+
* ------------------------------------------ OR ------------------------------------------
|
|
60
|
+
* 2) Using route alias (prefixed with '@'). alias should be unique for a route
|
|
61
|
+
* - update label Ex: set('@mentor', 'Enabler')
|
|
62
|
+
* - change visibility Ex: set('@mentorEdit', { skip: true })
|
|
63
|
+
*
|
|
64
|
+
*
|
|
65
|
+
* value can be string | BreadcrumbObject | BreadcrumbFunction
|
|
66
|
+
*/
|
|
67
|
+
set(key, breadcrumb) {
|
|
68
|
+
const breadcrumbObject = this._extractObject(breadcrumb);
|
|
69
|
+
let updateArgs;
|
|
70
|
+
if (key.startsWith(ALIAS_PREFIX)) {
|
|
71
|
+
updateArgs = ['alias', { ...breadcrumbObject, alias: key.slice(1) }];
|
|
72
|
+
}
|
|
73
|
+
else if (key.includes(PATH_PARAM.PREFIX)) {
|
|
74
|
+
updateArgs = [
|
|
75
|
+
'routeRegex',
|
|
76
|
+
{ ...breadcrumbObject, routeRegex: this._buildRegex(key) },
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
updateArgs = [
|
|
81
|
+
'routeLink',
|
|
82
|
+
{ ...breadcrumbObject, routeLink: this._ensureLeadingSlash(key) },
|
|
83
|
+
];
|
|
84
|
+
}
|
|
85
|
+
// For this route if previously a breadcrumb is not defined that sets isAutoGeneratedLabel: true
|
|
86
|
+
// change it to false since this is user supplied value
|
|
87
|
+
updateArgs[1].isAutoGeneratedLabel = false;
|
|
88
|
+
this._updateStore(...updateArgs);
|
|
89
|
+
this._updateCurrentBreadcrumbs(...updateArgs);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Whenever route changes build breadcrumb list again
|
|
93
|
+
*/
|
|
94
|
+
_detectRouteChanges() {
|
|
95
|
+
// Special case where breadcrumb service & component instantiates after a route is navigated.
|
|
96
|
+
// Ex: put breadcrumbs within *ngIf and this.router.events would be empty
|
|
97
|
+
// This check is also required where { initialNavigation: 'enabledBlocking' } is applied to routes
|
|
98
|
+
this._setupBreadcrumbs(this._activatedRoute.snapshot);
|
|
99
|
+
this._router.events
|
|
100
|
+
.pipe(takeUntil(this._unsubscribeAll), filter((event) => event instanceof GuardsCheckEnd))
|
|
101
|
+
.subscribe((event) => {
|
|
102
|
+
// activatedRoute doesn't carry data when shouldReuseRoute returns false
|
|
103
|
+
// use the event data with GuardsCheckEnd as workaround
|
|
104
|
+
// Check for shouldActivate in case where the authGuard returns false the breadcrumbs shouldn't be changed
|
|
105
|
+
if (event.shouldActivate) {
|
|
106
|
+
this._setupBreadcrumbs(event.state.root);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
_setupBreadcrumbs(activatedRouteSnapshot) {
|
|
111
|
+
this._previousBreadcrumbs = this._currentBreadcrumbs;
|
|
112
|
+
// breadcrumb label for base OR root path. Usually, this can be set as 'Home'
|
|
113
|
+
const rootBreadcrumb = this._getRootBreadcrumb();
|
|
114
|
+
this._currentBreadcrumbs = rootBreadcrumb ? [rootBreadcrumb] : [];
|
|
115
|
+
this._prepareBreadcrumbList(activatedRouteSnapshot, this._baseHref);
|
|
116
|
+
}
|
|
117
|
+
_getRootBreadcrumb() {
|
|
118
|
+
const rootConfig = this._router.config.find(config => config.path === '');
|
|
119
|
+
const rootBreadcrumb = this._extractObject(rootConfig?.data?.['breadcrumb']);
|
|
120
|
+
const storeItem = this._getFromStore('/', rootBreadcrumb.alias);
|
|
121
|
+
if (isNonEmpty(rootBreadcrumb) || isNonEmpty(storeItem)) {
|
|
122
|
+
return {
|
|
123
|
+
...storeItem,
|
|
124
|
+
...rootBreadcrumb,
|
|
125
|
+
routeLink: this._baseHref,
|
|
126
|
+
...this._getQueryParamsFromPreviousList('/'),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
_prepareBreadcrumbItem(activatedRouteSnapshot, routeLinkPrefix) {
|
|
131
|
+
const { path, breadcrumb } = this._parseRouteData(activatedRouteSnapshot.routeConfig);
|
|
132
|
+
const resolvedSegment = this._resolvePathSegment(path, activatedRouteSnapshot);
|
|
133
|
+
const routeLink = `${routeLinkPrefix}${resolvedSegment}`;
|
|
134
|
+
const storeItem = this._getFromStore(routeLink, breadcrumb.alias);
|
|
135
|
+
const label = this._extractLabel(storeItem?.label || breadcrumb?.label, resolvedSegment);
|
|
136
|
+
let isAutoGeneratedLabel = false;
|
|
137
|
+
let autoGeneratedLabel = '';
|
|
138
|
+
if (!label) {
|
|
139
|
+
isAutoGeneratedLabel = true;
|
|
140
|
+
autoGeneratedLabel = resolvedSegment;
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
...storeItem,
|
|
144
|
+
...breadcrumb,
|
|
145
|
+
label: isAutoGeneratedLabel ? autoGeneratedLabel : label,
|
|
146
|
+
routeLink,
|
|
147
|
+
isAutoGeneratedLabel,
|
|
148
|
+
...this._getQueryParamsFromPreviousList(routeLink),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
_prepareBreadcrumbList(activatedRouteSnapshot, routeLinkPrefix) {
|
|
152
|
+
if (activatedRouteSnapshot.routeConfig && activatedRouteSnapshot.routeConfig.path) {
|
|
153
|
+
const breadcrumbItem = this._prepareBreadcrumbItem(activatedRouteSnapshot, routeLinkPrefix);
|
|
154
|
+
this._currentBreadcrumbs.push(breadcrumbItem);
|
|
155
|
+
if (activatedRouteSnapshot.firstChild) {
|
|
156
|
+
return this._prepareBreadcrumbList(activatedRouteSnapshot.firstChild, breadcrumbItem.routeLink + '/');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else if (activatedRouteSnapshot.firstChild) {
|
|
160
|
+
return this._prepareBreadcrumbList(activatedRouteSnapshot.firstChild, routeLinkPrefix);
|
|
161
|
+
}
|
|
162
|
+
const lastCrumb = this._currentBreadcrumbs[this._currentBreadcrumbs.length - 1];
|
|
163
|
+
this._setQueryParamsForActiveBreadcrumb(lastCrumb, activatedRouteSnapshot);
|
|
164
|
+
// remove breadcrumb items that needs to be hidden
|
|
165
|
+
const breadcrumbsToShow = this._currentBreadcrumbs.filter(item => !item.skip);
|
|
166
|
+
this._breadcrumbs.next(breadcrumbsToShow);
|
|
167
|
+
return void 0;
|
|
168
|
+
}
|
|
169
|
+
_getFromStore(routeLink, alias) {
|
|
170
|
+
return this._dynamicBreadcrumbStore.find(item => ((alias && alias === item.alias) ||
|
|
171
|
+
(routeLink && routeLink === item.routeLink) ||
|
|
172
|
+
this._matchRegex(routeLink, item.routeRegex)));
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* use exact match instead of regexp.test
|
|
176
|
+
* for /mentor/[^/]+ we should match '/mentor/12' but not '/mentor/12/abc'
|
|
177
|
+
*/
|
|
178
|
+
_matchRegex(routeLink, routeRegex) {
|
|
179
|
+
if (routeRegex && routeLink) {
|
|
180
|
+
const match = routeLink.match(new RegExp(routeRegex));
|
|
181
|
+
return match && match[0] === routeLink;
|
|
182
|
+
}
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* if the path segment has route params, read the param value from url
|
|
187
|
+
* for each segment of route this gets called
|
|
188
|
+
*
|
|
189
|
+
* for mentor/:id/view - it gets called with mentor, :id, view 3 times
|
|
190
|
+
*/
|
|
191
|
+
_resolvePathSegment(segment, activatedRouteSnapshot) {
|
|
192
|
+
//quirk -segment can be defined as view/:id in route config in which case you need to make it view/<resolved-param>
|
|
193
|
+
if (segment.includes(PATH_PARAM.PREFIX)) {
|
|
194
|
+
Object.entries(activatedRouteSnapshot.params).forEach(([key, value]) => {
|
|
195
|
+
segment = segment.replace(`:${key}`, `${value}`);
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
return segment;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* queryParams & fragments for previous breadcrumb path are copied over to new list
|
|
202
|
+
*/
|
|
203
|
+
_getQueryParamsFromPreviousList(routeLink) {
|
|
204
|
+
const { queryParams, fragment } = this._previousBreadcrumbs.find(item => item.routeLink === routeLink) ||
|
|
205
|
+
{};
|
|
206
|
+
return { queryParams, fragment };
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* set current activated route query params to the last breadcrumb item
|
|
210
|
+
*/
|
|
211
|
+
_setQueryParamsForActiveBreadcrumb(lastItem, activatedRouteSnapshot) {
|
|
212
|
+
if (lastItem) {
|
|
213
|
+
const { queryParams, fragment } = activatedRouteSnapshot;
|
|
214
|
+
lastItem.queryParams = queryParams ? { ...queryParams } : undefined;
|
|
215
|
+
lastItem.fragment = fragment === null ? void 0 : fragment;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* For a specific route, breadcrumb can be defined either on parent OR it's child(which has empty path)
|
|
220
|
+
* When both are defined, child takes precedence
|
|
221
|
+
*
|
|
222
|
+
* Ex: Below we are setting breadcrumb on both parent and child.
|
|
223
|
+
* So, child takes precedence and "Defined On Child" is displayed for the route 'home'
|
|
224
|
+
* { path: 'home', loadChildren: './home/home.module#HomeModule' , data: {breadcrumb: "Defined On Module"}}
|
|
225
|
+
* AND
|
|
226
|
+
* children: [
|
|
227
|
+
* { path: '', component: ShowUserComponent, data: {breadcrumb: "Defined On Child" }
|
|
228
|
+
* ]
|
|
229
|
+
*/
|
|
230
|
+
_parseRouteData(routeConfig) {
|
|
231
|
+
if (isNull(routeConfig))
|
|
232
|
+
return void 0;
|
|
233
|
+
const { path, data } = routeConfig;
|
|
234
|
+
const breadcrumb = this._mergeWithBaseChildData(routeConfig, data?.['breadcrumb']);
|
|
235
|
+
return { path, breadcrumb };
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* get empty children of a module or Component. Empty child is the one with path: ''
|
|
239
|
+
* When parent and it's children (that has empty route path) define data merge them both with child taking precedence
|
|
240
|
+
*/
|
|
241
|
+
_mergeWithBaseChildData(routeConfig, config) {
|
|
242
|
+
if (!routeConfig) {
|
|
243
|
+
return this._extractObject(config);
|
|
244
|
+
}
|
|
245
|
+
let baseChild = void 0;
|
|
246
|
+
if (routeConfig.loadChildren) {
|
|
247
|
+
// To handle a module with empty child route
|
|
248
|
+
baseChild = routeConfig._loadedRoutes.find((route) => route.path === '');
|
|
249
|
+
}
|
|
250
|
+
else if (routeConfig.children) {
|
|
251
|
+
// To handle a component with empty child route
|
|
252
|
+
baseChild = routeConfig.children.find((route) => route.path === '');
|
|
253
|
+
}
|
|
254
|
+
const childConfig = baseChild?.data?.['breadcrumb'];
|
|
255
|
+
return childConfig
|
|
256
|
+
? this._mergeWithBaseChildData(baseChild, {
|
|
257
|
+
...this._extractObject(config),
|
|
258
|
+
...this._extractObject(childConfig),
|
|
259
|
+
})
|
|
260
|
+
: this._extractObject(config);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Update the store to reuse for dynamic declarations
|
|
264
|
+
* If the store already has this route definition update it, else add
|
|
265
|
+
*/
|
|
266
|
+
_updateStore(key, breadcrumb) {
|
|
267
|
+
const storeItemIndex = this._dynamicBreadcrumbStore.findIndex(item => breadcrumb[key] === item[key]);
|
|
268
|
+
if (storeItemIndex > -1) {
|
|
269
|
+
this._dynamicBreadcrumbStore[storeItemIndex] = {
|
|
270
|
+
...this._dynamicBreadcrumbStore[storeItemIndex],
|
|
271
|
+
...breadcrumb,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
this._dynamicBreadcrumbStore.push({ ...breadcrumb });
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* If breadcrumb is present in current breadcrumbs update it and emit new stream
|
|
280
|
+
*/
|
|
281
|
+
_updateCurrentBreadcrumbs(key, breadcrumb) {
|
|
282
|
+
const itemIndex = this._currentBreadcrumbs.findIndex(item => key === 'routeRegex'
|
|
283
|
+
? this._matchRegex(item.routeLink, breadcrumb[key])
|
|
284
|
+
: breadcrumb[key] === item[key]);
|
|
285
|
+
if (itemIndex > -1) {
|
|
286
|
+
this._currentBreadcrumbs[itemIndex] = {
|
|
287
|
+
...this._currentBreadcrumbs[itemIndex],
|
|
288
|
+
...breadcrumb,
|
|
289
|
+
};
|
|
290
|
+
const breadcrumbsToShow = this._currentBreadcrumbs.filter(item => !item.skip);
|
|
291
|
+
this._breadcrumbs.next([...breadcrumbsToShow]);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* For a route with path param, we create regex dynamically from angular route syntax
|
|
296
|
+
* '/mentor/:id' becomes '/mentor/[^/]',
|
|
297
|
+
* breadcrumbService.set('/mentor/:id', 'Uday') should update 'Uday' as label for '/mentor/2' OR 'mentor/ada'
|
|
298
|
+
*/
|
|
299
|
+
_buildRegex(path) {
|
|
300
|
+
return this._ensureLeadingSlash(path).replace(new RegExp(PATH_PARAM.REGEX_IDENTIFIER, 'g'), PATH_PARAM.REGEX_REPLACER);
|
|
301
|
+
}
|
|
302
|
+
_ensureLeadingSlash(path) {
|
|
303
|
+
return path.startsWith('/') ? path : `/${path}`;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* In App's RouteConfig, breadcrumb can be defined as a string OR a function OR an object
|
|
307
|
+
*
|
|
308
|
+
* string: simple static breadcrumb label for a path
|
|
309
|
+
* function: callback that gets invoked with resolved path param
|
|
310
|
+
* object: additional data defined along with breadcrumb label that gets passed to *cmatBreadcrumbItem directive
|
|
311
|
+
*/
|
|
312
|
+
_extractLabel(config, resolvedParam) {
|
|
313
|
+
const label = typeof config === 'object' ? config.label : config;
|
|
314
|
+
if (typeof label === 'function') {
|
|
315
|
+
return label(resolvedParam);
|
|
316
|
+
}
|
|
317
|
+
return label;
|
|
318
|
+
}
|
|
319
|
+
_extractObject(config) {
|
|
320
|
+
// don't include {label} if config is undefined. This is important since we merge the configs
|
|
321
|
+
if (config &&
|
|
322
|
+
(typeof config === 'string' || typeof config === 'function')) {
|
|
323
|
+
return { label: config };
|
|
324
|
+
}
|
|
325
|
+
return config || {};
|
|
326
|
+
}
|
|
327
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatBreadcrumbService, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
328
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatBreadcrumbService, providedIn: 'root' }); }
|
|
329
|
+
}
|
|
330
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatBreadcrumbService, decorators: [{
|
|
331
|
+
type: Injectable,
|
|
332
|
+
args: [{
|
|
333
|
+
providedIn: 'root',
|
|
334
|
+
}]
|
|
335
|
+
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }] });
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUEwQyxjQUFjLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFNbkMseURBQXlEO0FBQ3pELE1BQU0sVUFBVSxHQUFHO0lBQ2YsTUFBTSxFQUFFLEdBQUc7SUFDWCxnQkFBZ0IsRUFBRSxTQUFTO0lBQzNCLGNBQWMsRUFBRSxRQUFRO0NBQzNCLENBQUM7QUFDRix5REFBeUQ7QUFFekQsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBUSxFQUFXLEVBQUUsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBSzdFLE1BQU0sT0FBTyxxQkFBcUI7SUF5QjlCLFlBQW9CLGVBQStCLEVBQVUsT0FBZTtRQUF4RCxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBeEJwRSxjQUFTLEdBQUcsR0FBRyxDQUFDO1FBRWhCLG9CQUFlLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFDN0Q7Ozs7V0FJRztRQUNLLDRCQUF1QixHQUErQixFQUFFLENBQUM7UUFFakU7Ozs7V0FJRztRQUNLLHdCQUFt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LENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUM5RDtZQUNFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDNUI7UUFDRCxPQUFRLE1BQStCLElBQUksRUFBRSxDQUFDO0lBQ2xELENBQUM7OEdBellRLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRmxCLE1BQU07OzJGQUVULHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgR3VhcmRzQ2hlY2tFbmQsIFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENtYXRCcmVhZGNydW1iIH0gZnJvbSAnLi90eXBlcy9icmVhZGNydW1iJztcclxuaW1wb3J0IHsgQ21hdEJyZWFkY3J1bWJGdW5jdGlvbiwgQ21hdEJyZWFkY3J1bWJPYmplY3QsIH0gZnJvbSAnLi90eXBlcy9icmVhZGNydW1iLmNvbmZpZyc7XHJcbmltcG9ydCB7IGlzTnVsbCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcblxyXG50eXBlIENtYXRCcmVhZGNydW1iQ29uZmlnID0gQ21hdEJyZWFkY3J1bWJPYmplY3QgfCBDbWF0QnJlYWRjcnVtYkZ1bmN0aW9uIHwgc3RyaW5nO1xyXG50eXBlIFN0b3JlTWF0Y2hlcktleSA9ICdyb3V0ZUxpbmsnIHwgJ3JvdXRlUmVnZXgnIHwgJ2FsaWFzJztcclxuZXhwb3J0IHR5cGUgQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uID0gQ21hdEJyZWFkY3J1bWIgJiBDbWF0QnJlYWRjcnVtYk9iamVjdDtcclxuXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xyXG5jb25zdCBQQVRIX1BBUkFNID0geyAgICBcclxuICAgIFBSRUZJWDogJzonLFxyXG4gICAgUkVHRVhfSURFTlRJRklFUjogJy86W14vXSsnLFxyXG4gICAgUkVHRVhfUkVQTEFDRVI6ICcvW14vXSsnLFxyXG59O1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cclxuXHJcbmNvbnN0IEFMSUFTX1BSRUZJWCA9ICdAJztcclxuY29uc3QgaXNOb25FbXB0eSA9IChvYmo6IGFueSk6IGJvb2xlYW4gPT4gb2JqICYmIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID4gMDtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENtYXRCcmVhZGNydW1iU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICBwcml2YXRlIF9iYXNlSHJlZiA9ICcvJztcclxuXHJcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZUFsbDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAvKipcclxuICAgICAqIGR5bmFtaWNCcmVhZGNydW1iU3RvcmUgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgZHluYW1pY2FsbHkgdXBkYXRlZCBicmVhZGNydW1icy5cclxuICAgICAqIEJyZWFkY3J1bWJzIGNhbiBiZSBzZXQgZnJvbSBhbnl3aGVyZSAoY29tcG9uZW50LCBzZXJ2aWNlKSBpbiB0aGUgYXBwLlxyXG4gICAgICogT24gZXZlcnkgYnJlYWRjcnVtYiB1cGRhdGUgY2hlY2sgdGhpcyBzdG9yZSBhbmQgdXNlIHRoZSBpbmZvIGlmIGF2YWlsYWJsZS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZHluYW1pY0JyZWFkY3J1bWJTdG9yZTogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGJyZWFkY3J1bWJMaXN0IGZvciB0aGUgY3VycmVudCByb3V0ZVxyXG4gICAgICogV2hlbiBicmVhZGNydW1iIGluZm8gaXMgY2hhbmdlZCBkeW5hbWljYWxseSwgY2hlY2sgaWYgdGhlIGN1cnJlbnRCcmVhZGNydW1icyBpcyBlZmZlY3RlZFxyXG4gICAgICogSWYgZWZmZWN0ZWQsIHVwZGF0ZSB0aGUgY2hhbmdlIGFuZCBlbWl0IGEgbmV3IHN0cmVhbVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9jdXJyZW50QnJlYWRjcnVtYnM6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbltdID0gW107XHJcbiAgICBwcml2YXRlIF9wcmV2aW91c0JyZWFkY3J1bWJzOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQnJlYWRjcnVtYnMgb2JzZXJ2YWJsZSB0byBiZSBzdWJzY3JpYmVkIGJ5IEJyZWFkY3J1bWJDb21wb25lbnRcclxuICAgICAqIEVtaXRzIG9uIGV2ZXJ5IHJvdXRlIGNoYW5nZSBPUiBkeW5hbWljIHVwZGF0ZSBvZiBicmVhZGNydW1iXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2JyZWFkY3J1bWJzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDbWF0QnJlYWRjcnVtYkRlZmluaXRpb25bXT4oW10pO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgICAgICB0aGlzLl9kZXRlY3RSb3V0ZUNoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYnJlYWRjcnVtYnMkKCk6IE9ic2VydmFibGU8Q21hdEJyZWFkY3J1bWJEZWZpbml0aW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYnMuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwubmV4dCh2b2lkIDApO1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgYnJlYWRjcnVtYiBkeW5hbWljYWxseVxyXG4gICAgICpcclxuICAgICAqIGtleSBjYW4gYmUgYSBwYXRoIHwgYWxpYXNcclxuICAgICAqXHJcbiAgICAgKiAxKSBVc2luZyBjb21wbGV0ZSByb3V0ZSBwYXRoLiByb3V0ZSBjYW4gYmUgcGFzc2VkIHRoZSBzYW1lIHdheSB5b3UgZGVmaW5lIGFuZ3VsYXIgcm91dGVzXHJcbiAgICAgKiAtIHBhdGggY2FuIGJlIHBhc3NlZCBhcyAnZXhhY3QgcGF0aChyb3V0ZUxpbmspJyBvciAncGF0aCB3aXRoIHBhcmFtcyhyb3V0ZVJlZ2V4KSdcclxuICAgICAqIC0gdXBkYXRlIGxhYmVsIEV4OiBzZXQoJy9tZW50b3InLCAnTWVudG9yJyksIHNldCgnL21lbnRvci86aWQnLCAnTWVudG9yIERldGFpbHMnKVxyXG4gICAgICogLSBjaGFuZ2UgdmlzaWJpbGl0eSBFeDogc2V0KCcvbWVudG9yLzppZC9lZGl0JywgeyBza2lwOiB0cnVlIH0pXHJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gT1IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgKiAyKSBVc2luZyByb3V0ZSBhbGlhcyAocHJlZml4ZWQgd2l0aCAnQCcpLiBhbGlhcyBzaG91bGQgYmUgdW5pcXVlIGZvciBhIHJvdXRlXHJcbiAgICAgKiAtIHVwZGF0ZSBsYWJlbCBFeDogc2V0KCdAbWVudG9yJywgJ0VuYWJsZXInKVxyXG4gICAgICogLSBjaGFuZ2UgdmlzaWJpbGl0eSBFeDogc2V0KCdAbWVudG9yRWRpdCcsIHsgc2tpcDogdHJ1ZSB9KVxyXG4gICAgICpcclxuICAgICAqXHJcbiAgICAgKiB2YWx1ZSBjYW4gYmUgc3RyaW5nIHwgQnJlYWRjcnVtYk9iamVjdCB8IEJyZWFkY3J1bWJGdW5jdGlvblxyXG4gICAgICovXHJcbiAgICBzZXQoa2V5OiBzdHJpbmcsIGJyZWFkY3J1bWI6IHN0cmluZyB8IENtYXRCcmVhZGNydW1iT2JqZWN0KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYk9iamVjdCA9IHRoaXMuX2V4dHJhY3RPYmplY3QoYnJlYWRjcnVtYik7XHJcbiAgICAgICAgbGV0IHVwZGF0ZUFyZ3M6IFtTdG9yZU1hdGNoZXJLZXksIENtYXRCcmVhZGNydW1iRGVmaW5pdGlvbl07XHJcblxyXG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChBTElBU19QUkVGSVgpKSB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUFyZ3MgPSBbJ2FsaWFzJywgeyAuLi5icmVhZGNydW1iT2JqZWN0LCBhbGlhczoga2V5LnNsaWNlKDEpIH1dO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoa2V5LmluY2x1ZGVzKFBBVEhfUEFSQU0uUFJFRklYKSkge1xyXG4gICAgICAgICAgICB1cGRhdGVBcmdzID0gW1xyXG4gICAgICAgICAgICAgICAgJ3JvdXRlUmVnZXgnLFxyXG4gICAgICAgICAgICAgICAgeyAuLi5icmVhZGNydW1iT2JqZWN0LCByb3V0ZVJlZ2V4OiB0aGlzLl9idWlsZFJlZ2V4KGtleSkgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB1cGRhdGVBcmdzID0gW1xyXG4gICAgICAgICAgICAgICAgJ3JvdXRlTGluaycsXHJcbiAgICAgICAgICAgICAgICB7IC4uLmJyZWFkY3J1bWJPYmplY3QsIHJvdXRlTGluazogdGhpcy5fZW5zdXJlTGVhZGluZ1NsYXNoKGtleSkgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIEZvciB0aGlzIHJvdXRlIGlmIHByZXZpb3VzbHkgYSBicmVhZGNydW1iIGlzIG5vdCBkZWZpbmVkIHRoYXQgc2V0cyBpc0F1dG9HZW5lcmF0ZWRMYWJlbDogdHJ1ZVxyXG4gICAgICAgIC8vIGNoYW5nZSBpdCB0byBmYWxzZSBzaW5jZSB0aGlzIGlzIHVzZXIgc3VwcGxpZWQgdmFsdWVcclxuICAgICAgICB1cGRhdGVBcmdzWzFdLmlzQXV0b0dlbmVyYXRlZExhYmVsID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZVN0b3JlKC4uLnVwZGF0ZUFyZ3MpO1xyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRCcmVhZGNydW1icyguLi51cGRhdGVBcmdzKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hlbmV2ZXIgcm91dGUgY2hhbmdlcyBidWlsZCBicmVhZGNydW1iIGxpc3QgYWdhaW5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZGV0ZWN0Um91dGVDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgICAgIC8vIFNwZWNpYWwgY2FzZSB3aGVyZSBicmVhZGNydW1iIHNlcnZpY2UgJiBjb21wb25lbnQgaW5zdGFudGlhdGVzIGFmdGVyIGEgcm91dGUgaXMgbmF2aWdhdGVkLlxyXG4gICAgICAgIC8vIEV4OiBwdXQgYnJlYWRjcnVtYnMgd2l0aGluICpuZ0lmIGFuZCB0aGlzLnJvdXRlci5ldmVudHMgd291bGQgYmUgZW1wdHlcclxuICAgICAgICAvLyBUaGlzIGNoZWNrIGlzIGFsc28gcmVxdWlyZWQgd2hlcmUgIHsgaW5pdGlhbE5hdmlnYXRpb246ICdlbmFibGVkQmxvY2tpbmcnIH0gaXMgYXBwbGllZCB0byByb3V0ZXNcclxuICAgICAgICB0aGlzLl9zZXR1cEJyZWFkY3J1bWJzKHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90KTtcclxuXHJcbiAgICAgICAgdGhpcy5fcm91dGVyLmV2ZW50c1xyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZUFsbCksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgR3VhcmRzQ2hlY2tFbmQgPT4gZXZlbnQgaW5zdGFuY2VvZiBHdWFyZHNDaGVja0VuZCkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBhY3RpdmF0ZWRSb3V0ZSBkb2Vzbid0IGNhcnJ5IGRhdGEgd2hlbiBzaG91bGRSZXVzZVJvdXRlIHJldHVybnMgZmFsc2VcclxuICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgZXZlbnQgZGF0YSB3aXRoIEd1YXJkc0NoZWNrRW5kIGFzIHdvcmthcm91bmRcclxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBzaG91bGRBY3RpdmF0ZSBpbiBjYXNlIHdoZXJlIHRoZSBhdXRoR3VhcmQgcmV0dXJucyBmYWxzZSB0aGUgYnJlYWRjcnVtYnMgc2hvdWxkbid0IGJlIGNoYW5nZWRcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC5zaG91bGRBY3RpdmF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldHVwQnJlYWRjcnVtYnMoZXZlbnQuc3RhdGUucm9vdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3NldHVwQnJlYWRjcnVtYnMoYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3ByZXZpb3VzQnJlYWRjcnVtYnMgPSB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnM7XHJcbiAgICAgICAgLy8gYnJlYWRjcnVtYiBsYWJlbCBmb3IgYmFzZSBPUiByb290IHBhdGguIFVzdWFsbHksIHRoaXMgY2FuIGJlIHNldCBhcyAnSG9tZSdcclxuICAgICAgICBjb25zdCByb290QnJlYWRjcnVtYiA9IHRoaXMuX2dldFJvb3RCcmVhZGNydW1iKCk7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzID0gcm9vdEJyZWFkY3J1bWIgPyBbcm9vdEJyZWFkY3J1bWJdIDogW107XHJcbiAgICAgICAgdGhpcy5fcHJlcGFyZUJyZWFkY3J1bWJMaXN0KGFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHRoaXMuX2Jhc2VIcmVmKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRSb290QnJlYWRjcnVtYigpOiBDbWF0QnJlYWRjcnVtYiB8IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHJvb3RDb25maWcgPSB0aGlzLl9yb3V0ZXIuY29uZmlnLmZpbmQoY29uZmlnID0+IGNvbmZpZy5wYXRoID09PSAnJyk7XHJcbiAgICAgICAgY29uc3Qgcm9vdEJyZWFkY3J1bWIgPSB0aGlzLl9leHRyYWN0T2JqZWN0KHJvb3RDb25maWc/LmRhdGE/LlsnYnJlYWRjcnVtYiddKTtcclxuICAgICAgICBjb25zdCBzdG9yZUl0ZW0gPSB0aGlzLl9nZXRGcm9tU3RvcmUoJy8nLCByb290QnJlYWRjcnVtYi5hbGlhcyk7XHJcblxyXG4gICAgICAgIGlmIChpc05vbkVtcHR5KHJvb3RCcmVhZGNydW1iKSB8fCBpc05vbkVtcHR5KHN0b3JlSXRlbSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0b3JlSXRlbSxcclxuICAgICAgICAgICAgICAgIC4uLnJvb3RCcmVhZGNydW1iLFxyXG4gICAgICAgICAgICAgICAgcm91dGVMaW5rOiB0aGlzLl9iYXNlSHJlZixcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2dldFF1ZXJ5UGFyYW1zRnJvbVByZXZpb3VzTGlzdCgnLycpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlQnJlYWRjcnVtYkl0ZW0oXHJcbiAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICByb3V0ZUxpbmtQcmVmaXg6IHN0cmluZ1xyXG4gICAgKTogQ21hdEJyZWFkY3J1bWJEZWZpbml0aW9uIHtcclxuICAgICAgICBjb25zdCB7IHBhdGgsIGJyZWFkY3J1bWIgfSA9IHRoaXMuX3BhcnNlUm91dGVEYXRhKFxyXG4gICAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnJvdXRlQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCByZXNvbHZlZFNlZ21lbnQgPSB0aGlzLl9yZXNvbHZlUGF0aFNlZ21lbnQocGF0aCwgYWN0aXZhdGVkUm91dGVTbmFwc2hvdCk7XHJcbiAgICAgICAgY29uc3Qgcm91dGVMaW5rID0gYCR7cm91dGVMaW5rUHJlZml4fSR7cmVzb2x2ZWRTZWdtZW50fWA7XHJcbiAgICAgICAgY29uc3Qgc3RvcmVJdGVtID0gdGhpcy5fZ2V0RnJvbVN0b3JlKHJvdXRlTGluaywgYnJlYWRjcnVtYi5hbGlhcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5fZXh0cmFjdExhYmVsKFxyXG4gICAgICAgICAgICBzdG9yZUl0ZW0/LmxhYmVsIHx8IGJyZWFkY3J1bWI/LmxhYmVsLFxyXG4gICAgICAgICAgICByZXNvbHZlZFNlZ21lbnRcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBpc0F1dG9HZW5lcmF0ZWRMYWJlbCA9IGZhbHNlO1xyXG4gICAgICAgIGxldCBhdXRvR2VuZXJhdGVkTGFiZWwgPSAnJztcclxuICAgICAgICBpZiAoIWxhYmVsKSB7XHJcbiAgICAgICAgICAgIGlzQXV0b0dlbmVyYXRlZExhYmVsID0gdHJ1ZTtcclxuICAgICAgICAgICAgYXV0b0dlbmVyYXRlZExhYmVsID0gcmVzb2x2ZWRTZWdtZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uc3RvcmVJdGVtLFxyXG4gICAgICAgICAgICAuLi5icmVhZGNydW1iLFxyXG4gICAgICAgICAgICBsYWJlbDogaXNBdXRvR2VuZXJhdGVkTGFiZWwgPyBhdXRvR2VuZXJhdGVkTGFiZWwgOiBsYWJlbCxcclxuICAgICAgICAgICAgcm91dGVMaW5rLFxyXG4gICAgICAgICAgICBpc0F1dG9HZW5lcmF0ZWRMYWJlbCxcclxuICAgICAgICAgICAgLi4udGhpcy5fZ2V0UXVlcnlQYXJhbXNGcm9tUHJldmlvdXNMaXN0KHJvdXRlTGluayksXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9wcmVwYXJlQnJlYWRjcnVtYkxpc3QoXHJcbiAgICAgICAgYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgICAgICByb3V0ZUxpbmtQcmVmaXg6IHN0cmluZ1xyXG4gICAgKTogQ21hdEJyZWFkY3J1bWJbXSB8IHZvaWQge1xyXG4gICAgICAgIGlmIChhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnJvdXRlQ29uZmlnICYmIGFjdGl2YXRlZFJvdXRlU25hcHNob3Qucm91dGVDb25maWcucGF0aCkge1xyXG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1iSXRlbSA9IHRoaXMuX3ByZXBhcmVCcmVhZGNydW1iSXRlbShcclxuICAgICAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICAgICAgICAgICAgICByb3V0ZUxpbmtQcmVmaXhcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYkl0ZW0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXBhcmVCcmVhZGNydW1iTGlzdChcclxuICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmZpcnN0Q2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWRjcnVtYkl0ZW0ucm91dGVMaW5rICsgJy8nXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmZpcnN0Q2hpbGQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXBhcmVCcmVhZGNydW1iTGlzdChcclxuICAgICAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCxcclxuICAgICAgICAgICAgICAgIHJvdXRlTGlua1ByZWZpeFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsYXN0Q3J1bWIgPSB0aGlzLl9jdXJyZW50QnJlYWRjcnVtYnNbXHJcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icy5sZW5ndGggLSAxXHJcbiAgICAgICAgXTtcclxuICAgICAgICB0aGlzLl9zZXRRdWVyeVBhcmFtc0ZvckFjdGl2ZUJyZWFkY3J1bWIobGFzdENydW1iLCBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTtcclxuXHJcbiAgICAgICAgLy8gcmVtb3ZlIGJyZWFkY3J1bWIgaXRlbXMgdGhhdCBuZWVkcyB0byBiZSBoaWRkZW5cclxuICAgICAgICBjb25zdCBicmVhZGNydW1ic1RvU2hvdyA9IHRoaXMuX2N1cnJlbnRCcmVhZGNydW1icy5maWx0ZXIoXHJcbiAgICAgICAgICAgIGl0ZW0gPT4gIWl0ZW0uc2tpcFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuX2JyZWFkY3J1bWJzLm5leHQoYnJlYWRjcnVtYnNUb1Nob3cpO1xyXG5cclxuICAgICAgICByZXR1cm4gdm9pZCAwO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2dldEZyb21TdG9yZShyb3V0ZUxpbms6IHN0cmluZywgYWxpYXM/OiBzdHJpbmcpOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb24gfCB2b2lkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZHluYW1pY0JyZWFkY3J1bWJTdG9yZS5maW5kKGl0ZW0gPT4gKFxyXG4gICAgICAgICAgICAoYWxpYXMgJiYgYWxpYXMgPT09IGl0ZW0uYWxpYXMpIHx8XHJcbiAgICAgICAgICAgIChyb3V0ZUxpbmsgJiYgcm91dGVMaW5rID09PSBpdGVtLnJvdXRlTGluaykgfHxcclxuICAgICAgICAgICAgdGhpcy5fbWF0Y2hSZWdleChyb3V0ZUxpbmssIGl0ZW0ucm91dGVSZWdleClcclxuICAgICAgICApKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHVzZSBleGFjdCBtYXRjaCBpbnN0ZWFkIG9mIHJlZ2V4cC50ZXN0XHJcbiAgICAgKiBmb3IgL21lbnRvci9bXi9dKyB3ZSBzaG91bGQgbWF0Y2ggJy9tZW50b3IvMTInIGJ1dCBub3QgJy9tZW50b3IvMTIvYWJjJ1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9tYXRjaFJlZ2V4KHJvdXRlTGluaz86IHN0cmluZywgcm91dGVSZWdleD86IHN0cmluZyk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgICAgICBpZiAocm91dGVSZWdleCAmJiByb3V0ZUxpbmspIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSByb3V0ZUxpbmsubWF0Y2gobmV3IFJlZ0V4cChyb3V0ZVJlZ2V4KSk7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaCAmJiBtYXRjaFswXSA9PT0gcm91dGVMaW5rO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpZiB0aGUgcGF0aCBzZWdtZW50IGhhcyByb3V0ZSBwYXJhbXMsIHJlYWQgdGhlIHBhcmFtIHZhbHVlIGZyb20gdXJsXHJcbiAgICAgKiBmb3IgZWFjaCBzZWdtZW50IG9mIHJvdXRlIHRoaXMgZ2V0cyBjYWxsZWRcclxuICAgICAqXHJcbiAgICAgKiBmb3IgbWVudG9yLzppZC92aWV3IC0gaXQgZ2V0cyBjYWxsZWQgd2l0aCBtZW50b3IsIDppZCwgdmlldyAzIHRpbWVzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Jlc29sdmVQYXRoU2VnbWVudChzZWdtZW50OiBzdHJpbmcsIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xyXG4gICAgICAgIC8vcXVpcmsgLXNlZ21lbnQgY2FuIGJlIGRlZmluZWQgYXMgdmlldy86aWQgaW4gcm91dGUgY29uZmlnIGluIHdoaWNoIGNhc2UgeW91IG5lZWQgdG8gbWFrZSBpdCB2aWV3LzxyZXNvbHZlZC1wYXJhbT5cclxuICAgICAgICBpZiAoc2VnbWVudC5pbmNsdWRlcyhQQVRIX1BBUkFNLlBSRUZJWCkpIHtcclxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5wYXJhbXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc2VnbWVudCA9IHNlZ21lbnQucmVwbGFjZShgOiR7a2V5fWAsIGAke3ZhbHVlfWApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlZ21lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBxdWVyeVBhcmFtcyAmIGZyYWdtZW50cyBmb3IgcHJldmlvdXMgYnJlYWRjcnVtYiBwYXRoIGFyZSBjb3BpZWQgb3ZlciB0byBuZXcgbGlzdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9nZXRRdWVyeVBhcmFtc0Zyb21QcmV2aW91c0xpc3Qocm91dGVMaW5rOiBzdHJpbmcpOiBDbWF0QnJlYWRjcnVtYiB7XHJcbiAgICAgICAgY29uc3QgeyBxdWVyeVBhcmFtcywgZnJhZ21lbnQgfSA9XHJcbiAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzQnJlYWRjcnVtYnMuZmluZChpdGVtID0+IGl0ZW0ucm91dGVMaW5rID09PSByb3V0ZUxpbmspIHx8XHJcbiAgICAgICAgICAgIHt9O1xyXG4gICAgICAgIHJldHVybiB7IHF1ZXJ5UGFyYW1zLCBmcmFnbWVudCB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IGN1cnJlbnQgYWN0aXZhdGVkIHJvdXRlIHF1ZXJ5IHBhcmFtcyB0byB0aGUgbGFzdCBicmVhZGNydW1iIGl0ZW1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfc2V0UXVlcnlQYXJhbXNGb3JBY3RpdmVCcmVhZGNydW1iKFxyXG4gICAgICAgIGxhc3RJdGVtOiBDbWF0QnJlYWRjcnVtYixcclxuICAgICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XHJcbiAgICApOiB2b2lkIHtcclxuICAgICAgICBpZiAobGFzdEl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc3QgeyBxdWVyeVBhcmFtcywgZnJhZ21lbnQgfSA9IGFjdGl2YXRlZFJvdXRlU25hcHNob3Q7XHJcbiAgICAgICAgICAgIGxhc3RJdGVtLnF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgPyB7IC4uLnF1ZXJ5UGFyYW1zIH0gOiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGxhc3RJdGVtLmZyYWdtZW50ID0gZnJhZ21lbnQgPT09IG51bGwgPyB2b2lkIDAgOiBmcmFnbWVudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3IgYSBzcGVjaWZpYyByb3V0ZSwgYnJlYWRjcnVtYiBjYW4gYmUgZGVmaW5lZCBlaXRoZXIgb24gcGFyZW50IE9SIGl0J3MgY2hpbGQod2hpY2ggaGFzIGVtcHR5IHBhdGgpXHJcbiAgICAgKiBXaGVuIGJvdGggYXJlIGRlZmluZWQsIGNoaWxkIHRha2VzIHByZWNlZGVuY2VcclxuICAgICAqXHJcbiAgICAgKiBFeDogQmVsb3cgd2UgYXJlIHNldHRpbmcgYnJlYWRjcnVtYiBvbiBib3RoIHBhcmVudCBhbmQgY2hpbGQuXHJcbiAgICAgKiBTbywgY2hpbGQgdGFrZXMgcHJlY2VkZW5jZSBhbmQgXCJEZWZpbmVkIE9uIENoaWxkXCIgaXMgZGlzcGxheWVkIGZvciB0aGUgcm91dGUgJ2hvbWUnXHJcbiAgICAgKiB7IHBhdGg6ICdob21lJywgbG9hZENoaWxkcmVuOiAnLi9ob21lL2hvbWUubW9kdWxlI0hvbWVNb2R1bGUnICwgZGF0YToge2JyZWFkY3J1bWI6IFwiRGVmaW5lZCBPbiBNb2R1bGVcIn19XHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFORFxyXG4gICAgICogY2hpbGRyZW46IFtcclxuICAgICAqICAgeyBwYXRoOiAnJywgY29tcG9uZW50OiBTaG93VXNlckNvbXBvbmVudCwgZGF0YToge2JyZWFkY3J1bWI6IFwiRGVmaW5lZCBPbiBDaGlsZFwiIH1cclxuICAgICAqIF1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcGFyc2VSb3V0ZURhdGEocm91dGVDb25maWc6IFJvdXRlIHwgbnVsbCk6IGFueSB7XHJcbiAgICAgICAgaWYgKGlzTnVsbChyb3V0ZUNvbmZpZykpXHJcbiAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgcGF0aCwgZGF0YSB9ID0gcm91dGVDb25maWc7XHJcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYiA9IHRoaXMuX21lcmdlV2l0aEJhc2VDaGlsZERhdGEoXHJcbiAgICAgICAgICAgIHJvdXRlQ29uZmlnLFxyXG4gICAgICAgICAgICBkYXRhPy5bJ2JyZWFkY3J1bWInXVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiB7IHBhdGgsIGJyZWFkY3J1bWIgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGdldCBlbXB0eSBjaGlsZHJlbiBvZiBhIG1vZHVsZSBvciBDb21wb25lbnQuIEVtcHR5IGNoaWxkIGlzIHRoZSBvbmUgd2l0aCBwYXRoOiAnJ1xyXG4gICAgICogV2hlbiBwYXJlbnQgYW5kIGl0J3MgY2hpbGRyZW4gKHRoYXQgaGFzIGVtcHR5IHJvdXRlIHBhdGgpIGRlZmluZSBkYXRhIG1lcmdlIHRoZW0gYm90aCB3aXRoIGNoaWxkIHRha2luZyBwcmVjZWRlbmNlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX21lcmdlV2l0aEJhc2VDaGlsZERhdGEoXHJcbiAgICAgICAgcm91dGVDb25maWc6IGFueSxcclxuICAgICAgICBjb25maWc6IENtYXRCcmVhZGNydW1iQ29uZmlnXHJcbiAgICApOiBDbWF0QnJlYWRjcnVtYk9iamVjdCB7XHJcbiAgICAgICAgaWYgKCFyb3V0ZUNvbmZpZykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZXh0cmFjdE9iamVjdChjb25maWcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGJhc2VDaGlsZDogUm91dGUgfCB2b2lkID0gdm9pZCAwO1xyXG4gICAgICAgIGlmIChyb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgLy8gVG8gaGFuZGxlIGEgbW9kdWxlIHdpdGggZW1wdHkgY2hpbGQgcm91dGVcclxuICAgICAgICAgICAgYmFzZUNoaWxkID0gcm91dGVDb25maWcuX2xvYWRlZFJvdXRlcy5maW5kKChyb3V0ZTogeyBwYXRoOiBzdHJpbmc7IH0pID0+IHJvdXRlLnBhdGggPT09ICcnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJvdXRlQ29uZmlnLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIC8vIFRvIGhhbmRsZSBhIGNvbXBvbmVudCB3aXRoIGVtcHR5IGNoaWxkIHJvdXRlXHJcbiAgICAgICAgICAgIGJhc2VDaGlsZCA9IHJvdXRlQ29uZmlnLmNoaWxkcmVuLmZpbmQoKHJvdXRlOiB7IHBhdGg6IHN0cmluZzsgfSkgPT4gcm91dGUucGF0aCA9PT0gJycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2hpbGRDb25maWcgPSBiYXNlQ2hpbGQ/LmRhdGE/LlsnYnJlYWRjcnVtYiddO1xyXG4gICAgICAgIHJldHVybiBjaGlsZENvbmZpZ1xyXG4gICAgICAgICAgICA/IHRoaXMuX21lcmdlV2l0aEJhc2VDaGlsZERhdGEoYmFzZUNoaWxkLCB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9leHRyYWN0T2JqZWN0KGNvbmZpZyksXHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9leHRyYWN0T2JqZWN0KGNoaWxkQ29uZmlnKSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgOiB0aGlzLl9leHRyYWN0T2JqZWN0KGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhlIHN0b3JlIHRvIHJldXNlIGZvciBkeW5hbWljIGRlY2xhcmF0aW9uc1xyXG4gICAgICogSWYgdGhlIHN0b3JlIGFscmVhZHkgaGFzIHRoaXMgcm91dGUgZGVmaW5pdGlvbiB1cGRhdGUgaXQsIGVsc2UgYWRkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3VwZGF0ZVN0b3JlKGtleTogc3RyaW5nLCBicmVhZGNydW1iOiBDbWF0QnJlYWRjcnVtYkRlZmluaXRpb24pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzdG9yZUl0ZW1JbmRleCA9IHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmUuZmluZEluZGV4KGl0ZW0gPT4gKGJyZWFkY3J1bWIgYXMgYW55KVtrZXldID09PSAoaXRlbSBhcyBhbnkpW2tleV0pO1xyXG4gICAgICAgIGlmIChzdG9yZUl0ZW1JbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmVbc3RvcmVJdGVtSW5kZXhdID0ge1xyXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZHluYW1pY0JyZWFkY3J1bWJTdG9yZVtzdG9yZUl0ZW1JbmRleF0sXHJcbiAgICAgICAgICAgICAgICAuLi5icmVhZGNydW1iLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNCcmVhZGNydW1iU3RvcmUucHVzaCh7IC4uLmJyZWFkY3J1bWIgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgYnJlYWRjcnVtYiBpcyBwcmVzZW50IGluIGN1cnJlbnQgYnJlYWRjcnVtYnMgdXBkYXRlIGl0IGFuZCBlbWl0IG5ldyBzdHJlYW1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfdXBkYXRlQ3VycmVudEJyZWFkY3J1bWJzKFxyXG4gICAgICAgIGtleTogc3RyaW5nLFxyXG4gICAgICAgIGJyZWFkY3J1bWI6IENtYXRCcmVhZGNydW1iRGVmaW5pdGlvblxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmZpbmRJbmRleChpdGVtID0+IGtleSA9PT0gJ3JvdXRlUmVnZXgnXHJcbiAgICAgICAgICAgID8gdGhpcy5fbWF0Y2hSZWdleChpdGVtLnJvdXRlTGluaywgYnJlYWRjcnVtYltrZXldKVxyXG4gICAgICAgICAgICA6IChicmVhZGNydW1iIGFzIGFueSlba2V5XSA9PT0gKGl0ZW0gYXMgYW55KVtrZXldKTtcclxuICAgICAgICBpZiAoaXRlbUluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzW2l0ZW1JbmRleF0gPSB7XHJcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9jdXJyZW50QnJlYWRjcnVtYnNbaXRlbUluZGV4XSxcclxuICAgICAgICAgICAgICAgIC4uLmJyZWFkY3J1bWIsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWJzVG9TaG93ID0gdGhpcy5fY3VycmVudEJyZWFkY3J1bWJzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIGl0ZW0gPT4gIWl0ZW0uc2tpcFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLl9icmVhZGNydW1icy5uZXh0KFsuLi5icmVhZGNydW1ic1RvU2hvd10pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvciBhIHJvdXRlIHdpdGggcGF0aCBwYXJhbSwgd2UgY3JlYXRlIHJlZ2V4IGR5bmFtaWNhbGx5IGZyb20gYW5ndWxhciByb3V0ZSBzeW50YXhcclxuICAgICAqICcvbWVudG9yLzppZCcgYmVjb21lcyAnL21lbnRvci9bXi9dJyxcclxuICAgICAqIGJyZWFkY3J1bWJTZXJ2aWNlLnNldCgnL21lbnRvci86aWQnLCAnVWRheScpIHNob3VsZCB1cGRhdGUgJ1VkYXknIGFzIGxhYmVsIGZvciAnL21lbnRvci8yJyBPUiAnbWVudG9yL2FkYSdcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYnVpbGRSZWdleChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbnN1cmVMZWFkaW5nU2xhc2gocGF0aCkucmVwbGFjZShcclxuICAgICAgICAgICAgbmV3IFJlZ0V4cChQQVRIX1BBUkFNLlJFR0VYX0lERU5USUZJRVIsICdnJyksXHJcbiAgICAgICAgICAgIFBBVEhfUEFSQU0uUkVHRVhfUkVQTEFDRVJcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2Vuc3VyZUxlYWRpbmdTbGFzaChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBwYXRoLnN0YXJ0c1dpdGgoJy8nKSA/IHBhdGggOiBgLyR7cGF0aH1gO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW4gQXBwJ3MgUm91dGVDb25maWcsIGJyZWFkY3J1bWIgY2FuIGJlIGRlZmluZWQgYXMgYSBzdHJpbmcgT1IgYSBmdW5jdGlvbiBPUiBhbiBvYmplY3RcclxuICAgICAqXHJcbiAgICAgKiBzdHJpbmc6IHNpbXBsZSBzdGF0aWMgYnJlYWRjcnVtYiBsYWJlbCBmb3IgYSBwYXRoXHJcbiAgICAgKiBmdW5jdGlvbjogY2FsbGJhY2sgdGhhdCBnZXRzIGludm9rZWQgd2l0aCByZXNvbHZlZCBwYXRoIHBhcmFtXHJcbiAgICAgKiBvYmplY3Q6IGFkZGl0aW9uYWwgZGF0YSBkZWZpbmVkIGFsb25nIHdpdGggYnJlYWRjcnVtYiBsYWJlbCB0aGF0IGdldHMgcGFzc2VkIHRvICpjbWF0QnJlYWRjcnVtYkl0ZW0gZGlyZWN0aXZlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2V4dHJhY3RMYWJlbChjb25maWc6IENtYXRCcmVhZGNydW1iQ29uZmlnLCByZXNvbHZlZFBhcmFtPzogc3RyaW5nKTogc3RyaW5nIHwgdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyA/IGNvbmZpZy5sYWJlbCA6IGNvbmZpZztcclxuICAgICAgICBpZiAodHlwZW9mIGxhYmVsID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsYWJlbChyZXNvbHZlZFBhcmFtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxhYmVsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2V4dHJhY3RPYmplY3QoY29uZmlnOiBDbWF0QnJlYWRjcnVtYkNvbmZpZyk6IENtYXRCcmVhZGNydW1iT2JqZWN0IHtcclxuICAgICAgICAvLyBkb24ndCBpbmNsdWRlIHtsYWJlbH0gaWYgY29uZmlnIGlzIHVuZGVmaW5lZC4gVGhpcyBpcyBpbXBvcnRhbnQgc2luY2Ugd2UgbWVyZ2UgdGhlIGNvbmZpZ3NcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGNvbmZpZyAmJlxyXG4gICAgICAgICAgICAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGNvbmZpZyA9PT0gJ2Z1bmN0aW9uJylcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IGNvbmZpZyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKGNvbmZpZyBhcyBDbWF0QnJlYWRjcnVtYk9iamVjdCkgfHwge307XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21hdC1jb21wb25lbnRzLWJyZWFkY3J1bWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvYnJlYWRjcnVtYi9jbWF0LWNvbXBvbmVudHMtYnJlYWRjcnVtYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './breadcrumb-item.directive';
|
|
2
|
+
export * from './breadcrumb.component';
|
|
3
|
+
export * from './breadcrumb.service';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9icmVhZGNydW1iL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWItaXRlbS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1iLnNlcnZpY2UnO1xyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvYnJlYWRjcnVtYi90eXBlcy9icmVhZGNydW1iLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ21hdEJyZWFkY3J1bWIgfSBmcm9tICcuL2JyZWFkY3J1bWInO1xyXG5cclxuLyoqXHJcbiAqIEJyZWFkY3J1bWIgY29uZmlnIHByb3ZpZGVkIGFzIHBhcnQgb2YgQXBwIFJvdXRlIENvbmZpZ1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDbWF0QnJlYWRjcnVtYk9iamVjdCB7XHJcbiAgICAvKipcclxuICAgICAqIGJyZWFkY3J1bWIgbGFiZWwgZm9yIGEgcm91dGVcclxuICAgICAqL1xyXG4gICAgbGFiZWw/OiBzdHJpbmcgfCBDbWF0QnJlYWRjcnVtYkZ1bmN0aW9uO1xyXG4gICAgLyoqXHJcbiAgICAgKiB1bmlxdWUgYWxpYXMgbmFtZSBmb3IgYSByb3V0ZSBwYXRoIHRoYXQgY2FuIGJlIHVzZWQgdG8gZHluYW1pY2FsbHkgdXBkYXRlIGEgcm91dGUncyBicmVhZGNydW1iIGxhYmVsIHZpYSBicmVhZGNydW1iU2VydmljZS5zZXQoKVxyXG4gICAgICovXHJcbiAgICBhbGlhcz86IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogaGlkZSBvciBzaG93IHRoZSBicmVhZGNydW1iIGl0ZW1cclxuICAgICAqL1xyXG4gICAgc2tpcD86IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIGRpc2FibGUgYSBjZXJ0YWluIGJyZWFkY3J1bWIgaW4gdGhlIGxpc3QuIE5vdCBjbGlja2FibGUuXHJcbiAgICAgKiBJdCBtYXkgYmUgbmVlZGVkIHdoZW4gdGhlIHJvdXRpbmcgaGFzIHRoZSBwYXRoLCBidXQgbmF2aWdhdGluZyB0byB0aGF0IHBhdGggaXMgb2Ygbm8gdXNlXHJcbiAgICAgKi9cclxuICAgIGRpc2FibGU/OiBib29sZWFuO1xyXG4gICAgLyoqXHJcbiAgICAgKiBjdXN0b20gZGF0YSBmb3IgZWFjaCBicmVhZGNydW1iIHRoYXQgaXMgcGFzc2VkIGJhY2sgdG8gbmctdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgaW5mbz86IHVua25vd247XHJcbiAgICAvKipcclxuICAgICAqIEludGVyY2VwdG9yIGZvciBicmVhZGNydW1iIGNsaWNrIGFjdGlvbiB0aGF0IHJldHVybnMgdGhlIGR5bmFtaWMgcGF0aFxyXG4gICAgICogQ29uc3VtZXJzIGNhbiBjaGFuZ2UgdGhlIGJyZWFkY3J1bWIgcm91dGluZyBkeW5hbWljYWxseSB3aXRoIHRoaXMgYXBwcm9hY2hcclxuICAgICAqL1xyXG4gICAgcm91dGVJbnRlcmNlcHRvcj86IChicmVhZGNydW1iOiBDbWF0QnJlYWRjcnVtYiwgcm91dGVMaW5rPzogc3RyaW5nKSA9PiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIHJlc29sdmVkIGxhYmVsIGZvciBhIHJvdXRlIGNhbiBmdXJ0aGVyIGJlIGVuaGFuY2VkIGJhc2VkIG9uIGEgZnVuY3Rpb25cclxuZXhwb3J0IHR5cGUgQ21hdEJyZWFkY3J1bWJGdW5jdGlvbiA9IChyZXNvbHZlZExhYmVsPzogc3RyaW5nKSA9PiBzdHJpbmc7XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9icmVhZGNydW1iL3R5cGVzL2JyZWFkY3J1bWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ21hdEJyZWFkY3J1bWIge1xyXG4gICAgLyoqXHJcbiAgICAgKiBhY3R1YWwgcm91dGUgcGF0aCB3aXRoIHJlc29sdmVkIHBhcmFtLiBFeCAvbWVudG9yLzIsIGNvbm5lY3QvZWRpdFxyXG4gICAgICovXHJcbiAgICByb3V0ZUxpbms/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIHJvdXRlIHdpdGggcGF0aCBwYXJhbXMgY29udmVydGVkIHRvIGEgUmVnRXhwXHJcbiAgICAgKiBwYXRoICcvbWVudG9yLzppZCcgYmVjb21lcyByb3V0ZVJlZ2V4ICcvbWVudG9yL1teL10rJywgd2hpY2ggY2FuIGJlIG1hdGNoZWQgYWdhaW5zdCB3aGVuIG5lZWRlZFxyXG4gICAgICovXHJcbiAgICByb3V0ZVJlZ2V4Pzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGlzIGFkZGl0aW9uYWwgaW5mbyBvbiBlYWNoIGJyZWFkY3J1bWIgaXRlbSB3aGV0aGVyIGxhYmVsIGlzIGF1dG8gZ2VuZXJhdGVkIG9yIHVzZXIgc3BlY2lmaWVkXHJcbiAgICAgKiBpc0F1dG9HZW5lcmF0ZWRMYWJlbCBoYXMgdG8gYmUgcHJlc2VudCBhdCBjb21wb25lbnQgbGV2ZWwgYnV0IG5vdCBhdCB0aGUgc2VydmljZSxcclxuICAgICAqIHNpbmNlIHdlIG1heSBuZWVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgYnJlYWRjcnVtYiBjb21wb25lbnRzIGluIHNhbWUgYXBwXHJcbiAgICAgKi9cclxuICAgIGlzQXV0b0dlbmVyYXRlZExhYmVsPzogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogUXVlcnkgcGFyYW1zIGluIHN0cmluZyBmb3JtLlxyXG4gICAgICovXHJcbiAgICBxdWVyeVBhcmFtcz86IGFueTtcclxuICAgIGZyYWdtZW50Pzogc3RyaW5nO1xyXG4gICAgcm91dGVJbnRlcmNlcHRvcj86IChicmVhZGNydW1iOiBDbWF0QnJlYWRjcnVtYiwgcm91dGVMaW5rPzogc3RyaW5nKSA9PiBzdHJpbmc7XHJcbn1cclxuIl19
|