@rivet-health/design-system 40.44.0 → 40.44.2
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/{esm2020 → esm2022}/lib/accessibility/sr-only/sr-only.component.mjs +4 -4
- package/esm2022/lib/download/download.service.mjs +47 -0
- package/{esm2020 → esm2022}/lib/format/pipes/common.mjs +5 -5
- package/{esm2020 → esm2022}/lib/format/pipes/date.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/format/pipes/days.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/format/pipes/dollars.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/format/pipes/number.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/format/pipes/percentage.pipe.mjs +4 -4
- package/esm2022/lib/format/pipes/sentence-case.pipe.mjs +61 -0
- package/esm2022/lib/format/pipes/small-currency.pipe.mjs +24 -0
- package/esm2022/lib/format/pipes/small-number.pipe.mjs +29 -0
- package/esm2022/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +62 -0
- package/esm2022/lib/format/truncate/truncate.component.mjs +51 -0
- package/esm2022/lib/icon/dom-cache.mjs +32 -0
- package/esm2022/lib/icon/icon.component.mjs +86 -0
- package/{esm2020 → esm2022}/lib/icon/icons.mjs +1 -1
- package/{esm2020 → esm2022}/lib/input/alphabetic-field/alphabetic-field.component.mjs +4 -4
- package/esm2022/lib/input/auto-focus/auto-focus.directive.mjs +48 -0
- package/esm2022/lib/input/button/button.component.mjs +139 -0
- package/esm2022/lib/input/button-group/button-group.component.mjs +39 -0
- package/{esm2020 → esm2022}/lib/input/calendar/calendar.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/input/card-checkbox/card-checkbox.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/input/checkbox/checkbox.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/input/currency-field/currency-field.component.mjs +4 -4
- package/esm2022/lib/input/date/date.component.mjs +279 -0
- package/esm2022/lib/input/date-range/date-range.component.mjs +477 -0
- package/esm2022/lib/input/filter-chip/filter-chip.component.mjs +47 -0
- package/{esm2020 → esm2022}/lib/input/filter-dropdown/filter-dropdown.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/input/input-label/input-label.component.mjs +4 -4
- package/esm2022/lib/input/mentions-input/mentions-input.component.mjs +745 -0
- package/esm2022/lib/input/number-field/number-field.component.mjs +125 -0
- package/{esm2020 → esm2022}/lib/input/percentage-field/percentage-field.component.mjs +4 -4
- package/esm2022/lib/input/phone-field/phone-field.component.mjs +74 -0
- package/{esm2020 → esm2022}/lib/input/radio/radio.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/input/search/search.component.mjs +4 -4
- package/esm2022/lib/input/search-select/search-select.component.mjs +189 -0
- package/esm2022/lib/input/select/select/select.component.mjs +178 -0
- package/{esm2020 → esm2022}/lib/input/select/select-node/select-node.component.mjs +4 -4
- package/esm2022/lib/input/select/state.mjs +882 -0
- package/{esm2020 → esm2022}/lib/input/simple-select/option-group.pipe.mjs +4 -4
- package/esm2022/lib/input/simple-select/simple-select.component.mjs +178 -0
- package/esm2022/lib/input/switch-checkbox/switch-checkbox.component.mjs +33 -0
- package/esm2022/lib/input/text-field/text-field.component.mjs +115 -0
- package/{esm2020 → esm2022}/lib/input/textarea-field/textarea-field.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/input/validation-message/validation-message.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/layout/card/card-actions.component.mjs +4 -4
- package/esm2022/lib/layout/card/card-content.component.mjs +64 -0
- package/esm2022/lib/layout/card/card-header.component.mjs +201 -0
- package/{esm2020 → esm2022}/lib/layout/card/card-link.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/layout/card/card-media.component.mjs +4 -4
- package/esm2022/lib/layout/card/card.component.mjs +291 -0
- package/{esm2020 → esm2022}/lib/layout/setting-row/setting-row.component.mjs +4 -4
- package/esm2022/lib/load/loading/loading.component.mjs +43 -0
- package/{esm2020 → esm2022}/lib/load/loading-cover/loading-cover.component.mjs +4 -4
- package/esm2022/lib/navigation/editable-heading/editable-heading.component.mjs +243 -0
- package/{esm2020 → esm2022}/lib/navigation/link/link.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/navigation/page-header/page-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/simple-tabs/simple-tab/simple-tab.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/simple-tabs/simple-tabs/simple-tabs.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/tabs/tab/tab.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/tabs/tabs/tabs.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/views/all-views-modal/all-views-modal.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/navigation/views/edit-view/edit-view.component.mjs +9 -9
- package/esm2022/lib/navigation/views/permission-picker/permission-picker.component.mjs +151 -0
- package/esm2022/lib/navigation/views/state.mjs +456 -0
- package/{esm2020 → esm2022}/lib/navigation/views/view-menu/view-menu.component.mjs +5 -5
- package/esm2022/lib/navigation/views/views/views.component.mjs +90 -0
- package/{esm2020 → esm2022}/lib/notification/badge/badge.component.mjs +4 -4
- package/esm2022/lib/notification/banner/banner-action.component.mjs +48 -0
- package/esm2022/lib/notification/banner/banner.component.mjs +61 -0
- package/esm2022/lib/notification/map-indicator/map-indicator.component.mjs +50 -0
- package/esm2022/lib/notification/map-indicator/map-indicators.mjs +15 -0
- package/{esm2020 → esm2022}/lib/notification/notification-badge/notification-badge.component.mjs +4 -4
- package/esm2022/lib/overlay/callout/callout.component.mjs +130 -0
- package/esm2022/lib/overlay/callout/callout.helpers.mjs +113 -0
- package/{esm2020 → esm2022}/lib/overlay/callout/help/help.component.mjs +4 -4
- package/esm2022/lib/overlay/callout/lock-scroll.directive.mjs +69 -0
- package/{esm2020 → esm2022}/lib/overlay/callout/menu/menu-item/menu-item.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/overlay/callout/menu/menu.component.mjs +4 -4
- package/esm2022/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +30 -0
- package/{esm2020 → esm2022}/lib/overlay/callout/tooltip/tooltip.component.mjs +4 -4
- package/esm2022/lib/overlay/callout/tooltip/tooltip.directive.mjs +138 -0
- package/esm2022/lib/overlay/modal/dialog/dialog.component.mjs +47 -0
- package/{esm2020 → esm2022}/lib/overlay/modal/dialog-stack.service.mjs +4 -4
- package/esm2022/lib/overlay/modal/form-dialog/form-dialog.component.mjs +146 -0
- package/esm2022/lib/overlay/modal/modal.component.mjs +31 -0
- package/{esm2020 → esm2022}/lib/overlay/modal/side-sheet/side-sheet.component.mjs +4 -4
- package/esm2022/lib/overlay/overlay-outlet.component.mjs +98 -0
- package/{esm2020 → esm2022}/lib/overlay/overlay.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/overlay/overlay.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/overlay/toast/toast-action.component.mjs +4 -4
- package/esm2022/lib/overlay/toast/toast.component.mjs +41 -0
- package/{esm2020 → esm2022}/lib/riv.module.mjs +227 -227
- package/esm2022/lib/size/size.directive.mjs +33 -0
- package/esm2022/lib/table/simple-table/coordinate-helper.mjs +61 -0
- package/esm2022/lib/table/simple-table/simple-table-cell.component.mjs +36 -0
- package/esm2022/lib/table/simple-table/simple-table-header-cell.component.mjs +37 -0
- package/{esm2020 → esm2022}/lib/table/simple-table/simple-table-row.component.mjs +4 -4
- package/esm2022/lib/table/simple-table/simple-table.component.mjs +104 -0
- package/esm2022/lib/table/table/clipboard.mjs +182 -0
- package/esm2022/lib/table/table/state-helpers/collapse-helpers.mjs +116 -0
- package/esm2022/lib/table/table/state-helpers/column-helpers.mjs +383 -0
- package/{esm2020 → esm2022}/lib/table/table/state-helpers/display-helpers.mjs +1 -1
- package/esm2022/lib/table/table/state-helpers/nesting-helpers.mjs +123 -0
- package/esm2022/lib/table/table/state-helpers/order-helpers.mjs +164 -0
- package/esm2022/lib/table/table/state-helpers/pagination-helpers.mjs +139 -0
- package/esm2022/lib/table/table/state-helpers/result-helpers.mjs +70 -0
- package/esm2022/lib/table/table/state-helpers/search-helpers.mjs +72 -0
- package/esm2022/lib/table/table/state-helpers/selection-helpers.mjs +180 -0
- package/esm2022/lib/table/table/state.mjs +1035 -0
- package/esm2022/lib/table/table/table/table.component.mjs +367 -0
- package/{esm2020 → esm2022}/lib/table/table/table-collapse-all/table-collapse-all.component.mjs +5 -5
- package/esm2022/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +227 -0
- package/esm2022/lib/table/table/table-column-settings/table-column-settings.component.mjs +134 -0
- package/esm2022/lib/table/table/table-csv-export/table-csv-export.component.mjs +35 -0
- package/{esm2020 → esm2022}/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.mjs +6 -6
- package/esm2022/lib/table/table/table-search/table-search.component.mjs +71 -0
- package/{esm2020 → esm2022}/lib/table/table/table-search-columns/table-search-columns.component.mjs +4 -4
- package/esm2022/lib/visibility/visibility.directive.mjs +34 -0
- package/esm2022/lib/visualization/chart/chart-scaling.mjs +380 -0
- package/esm2022/lib/visualization/chart/chart.component.mjs +626 -0
- package/esm2022/lib/visualization/chart/chart.mjs +3768 -0
- package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-cell.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-header-cell.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-row.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/data-table/data-table.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/donut/donut.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/funnel-chart/funnel-chart.component.mjs +5 -5
- package/esm2022/lib/visualization/funnel-chart/funnel-chart.helpers.mjs +33 -0
- package/{esm2020 → esm2022}/lib/visualization/highlight/highlight.component.mjs +4 -4
- package/esm2022/lib/visualization/highlight/highlight.helpers.mjs +20 -0
- package/esm2022/lib/visualization/intervals.mjs +63 -0
- package/{esm2020 → esm2022}/lib/visualization/issue/issue.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/legend-item/legend-item.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/metric/metric.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/mini-pie/mini-pie.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/visualization/progress/progress.component.mjs +5 -5
- package/esm2022/lib/visualization/stacked-column/stacked-column.component.mjs +377 -0
- package/esm2022/lib/visualization/stacked-column/stacked-column.helpers.mjs +18 -0
- package/esm2022/lib/visualization/stacked-row/stacked-row.component.mjs +270 -0
- package/esm2022/lib/visualization/stacked-row/stacked-row.helpers.mjs +74 -0
- package/esm2022/lib/visualization/time-series/time-series.component.mjs +374 -0
- package/esm2022/lib/visualization/time-series/time-series.helpers.mjs +15 -0
- package/esm2022/lib/visualization/trend/trend.component.mjs +51 -0
- package/{esm2020 → esm2022}/lib/visualization/zero-state/zero-state.component.mjs +4 -4
- package/{fesm2020 → fesm2022}/rivet-health-design-system.mjs +670 -670
- package/{fesm2020 → fesm2022}/rivet-health-design-system.mjs.map +1 -1
- package/lib/format/svg-text-truncate/svg-text-truncate.directive.d.ts +1 -1
- package/lib/format/truncate/truncate.component.d.ts +1 -1
- package/lib/icon/icon.component.d.ts +1 -1
- package/lib/input/auto-focus/auto-focus.directive.d.ts +1 -1
- package/lib/input/button/button.component.d.ts +1 -1
- package/lib/input/calendar/calendar.component.d.ts +1 -1
- package/lib/input/checkbox/checkbox.component.d.ts +1 -1
- package/lib/input/currency-field/currency-field.component.d.ts +1 -1
- package/lib/input/date/date.component.d.ts +1 -1
- package/lib/input/date-range/date-range.component.d.ts +1 -1
- package/lib/input/filter-chip/filter-chip.component.d.ts +1 -1
- package/lib/input/filter-dropdown/filter-dropdown.component.d.ts +1 -1
- package/lib/input/input-label/input-label.component.d.ts +1 -1
- package/lib/input/mentions-input/mentions-input.component.d.ts +1 -1
- package/lib/input/number-field/number-field.component.d.ts +1 -1
- package/lib/input/percentage-field/percentage-field.component.d.ts +1 -1
- package/lib/input/phone-field/phone-field.component.d.ts +1 -1
- package/lib/input/radio/radio.component.d.ts +1 -1
- package/lib/input/search/search.component.d.ts +1 -1
- package/lib/input/search-select/search-select.component.d.ts +1 -1
- package/lib/input/select/select/select.component.d.ts +1 -1
- package/lib/input/select/select-node/select-node.component.d.ts +1 -1
- package/lib/input/simple-select/simple-select.component.d.ts +1 -1
- package/lib/input/switch-checkbox/switch-checkbox.component.d.ts +1 -1
- package/lib/input/text-field/text-field.component.d.ts +1 -1
- package/lib/input/textarea-field/textarea-field.component.d.ts +1 -1
- package/lib/input/validation-message/validation-message.component.d.ts +1 -1
- package/lib/layout/card/card-actions.component.d.ts +1 -1
- package/lib/layout/card/card-content.component.d.ts +1 -1
- package/lib/layout/card/card-header.component.d.ts +1 -1
- package/lib/layout/card/card-link.component.d.ts +1 -1
- package/lib/layout/card/card-media.component.d.ts +1 -1
- package/lib/layout/card/card.component.d.ts +1 -1
- package/lib/layout/setting-row/setting-row.component.d.ts +1 -1
- package/lib/load/loading/loading.component.d.ts +1 -1
- package/lib/load/loading-cover/loading-cover.component.d.ts +1 -1
- package/lib/navigation/editable-heading/editable-heading.component.d.ts +1 -1
- package/lib/navigation/link/link.component.d.ts +1 -1
- package/lib/navigation/page-header/page-header.component.d.ts +1 -1
- package/lib/navigation/simple-tabs/simple-tab/simple-tab.component.d.ts +1 -1
- package/lib/navigation/tabs/tab/tab.component.d.ts +1 -1
- package/lib/navigation/views/all-views-modal/all-views-modal.component.d.ts +1 -1
- package/lib/navigation/views/edit-view/edit-view.component.d.ts +1 -1
- package/lib/navigation/views/permission-picker/permission-picker.component.d.ts +3 -3
- package/lib/navigation/views/view-menu/view-menu.component.d.ts +1 -1
- package/lib/navigation/views/views/views.component.d.ts +1 -1
- package/lib/notification/badge/badge.component.d.ts +1 -1
- package/lib/notification/banner/banner-action.component.d.ts +1 -1
- package/lib/notification/banner/banner.component.d.ts +1 -1
- package/lib/notification/map-indicator/map-indicator.component.d.ts +1 -1
- package/lib/notification/notification-badge/notification-badge.component.d.ts +1 -1
- package/lib/overlay/callout/callout.component.d.ts +1 -1
- package/lib/overlay/callout/help/help.component.d.ts +1 -1
- package/lib/overlay/callout/lock-scroll.directive.d.ts +1 -1
- package/lib/overlay/callout/menu/menu-item/menu-item.component.d.ts +1 -1
- package/lib/overlay/callout/menu/menu.component.d.ts +1 -1
- package/lib/overlay/callout/tooltip/locked-tooltip.directive.d.ts +1 -1
- package/lib/overlay/callout/tooltip/tooltip.component.d.ts +1 -1
- package/lib/overlay/callout/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/overlay/modal/dialog/dialog.component.d.ts +1 -1
- package/lib/overlay/modal/form-dialog/form-dialog.component.d.ts +1 -1
- package/lib/overlay/modal/modal.component.d.ts +1 -1
- package/lib/overlay/modal/side-sheet/side-sheet.component.d.ts +1 -1
- package/lib/overlay/toast/toast.component.d.ts +1 -1
- package/lib/table/simple-table/simple-table-header-cell.component.d.ts +1 -1
- package/lib/table/simple-table/simple-table-row.component.d.ts +1 -1
- package/lib/table/table/table/table.component.d.ts +1 -1
- package/lib/table/table/table-collapse-all/table-collapse-all.component.d.ts +1 -1
- package/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.d.ts +1 -1
- package/lib/table/table/table-column-settings/table-column-settings.component.d.ts +1 -1
- package/lib/table/table/table-csv-export/table-csv-export.component.d.ts +1 -1
- package/lib/table/table/table-search/table-search.component.d.ts +1 -1
- package/lib/table/table/table-search-columns/table-search-columns.component.d.ts +1 -1
- package/lib/visualization/chart/chart.component.d.ts +1 -1
- package/lib/visualization/data-table/data-table-row.component.d.ts +1 -1
- package/lib/visualization/donut/donut.component.d.ts +1 -1
- package/lib/visualization/funnel-chart/funnel-chart.component.d.ts +1 -1
- package/lib/visualization/highlight/highlight.component.d.ts +1 -1
- package/lib/visualization/issue/issue.component.d.ts +1 -1
- package/lib/visualization/legend-item/legend-item.component.d.ts +1 -1
- package/lib/visualization/metric/metric.component.d.ts +1 -1
- package/lib/visualization/mini-pie/mini-pie.component.d.ts +1 -1
- package/lib/visualization/progress/progress.component.d.ts +1 -1
- package/lib/visualization/stacked-column/stacked-column.component.d.ts +3 -3
- package/lib/visualization/stacked-row/stacked-row.component.d.ts +1 -1
- package/lib/visualization/time-series/time-series.component.d.ts +3 -3
- package/lib/visualization/trend/trend.component.d.ts +1 -1
- package/lib/visualization/zero-state/zero-state.component.d.ts +1 -1
- package/package.json +5 -11
- package/esm2020/lib/download/download.service.mjs +0 -47
- package/esm2020/lib/format/pipes/sentence-case.pipe.mjs +0 -61
- package/esm2020/lib/format/pipes/small-currency.pipe.mjs +0 -24
- package/esm2020/lib/format/pipes/small-number.pipe.mjs +0 -29
- package/esm2020/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +0 -62
- package/esm2020/lib/format/truncate/truncate.component.mjs +0 -51
- package/esm2020/lib/icon/dom-cache.mjs +0 -32
- package/esm2020/lib/icon/icon.component.mjs +0 -86
- package/esm2020/lib/input/auto-focus/auto-focus.directive.mjs +0 -48
- package/esm2020/lib/input/button/button.component.mjs +0 -139
- package/esm2020/lib/input/button-group/button-group.component.mjs +0 -39
- package/esm2020/lib/input/date/date.component.mjs +0 -279
- package/esm2020/lib/input/date-range/date-range.component.mjs +0 -477
- package/esm2020/lib/input/filter-chip/filter-chip.component.mjs +0 -47
- package/esm2020/lib/input/mentions-input/mentions-input.component.mjs +0 -745
- package/esm2020/lib/input/number-field/number-field.component.mjs +0 -125
- package/esm2020/lib/input/phone-field/phone-field.component.mjs +0 -74
- package/esm2020/lib/input/search-select/search-select.component.mjs +0 -189
- package/esm2020/lib/input/select/select/select.component.mjs +0 -178
- package/esm2020/lib/input/select/state.mjs +0 -882
- package/esm2020/lib/input/simple-select/simple-select.component.mjs +0 -178
- package/esm2020/lib/input/switch-checkbox/switch-checkbox.component.mjs +0 -33
- package/esm2020/lib/input/text-field/text-field.component.mjs +0 -115
- package/esm2020/lib/layout/card/card-content.component.mjs +0 -64
- package/esm2020/lib/layout/card/card-header.component.mjs +0 -201
- package/esm2020/lib/layout/card/card.component.mjs +0 -291
- package/esm2020/lib/load/loading/loading.component.mjs +0 -43
- package/esm2020/lib/navigation/editable-heading/editable-heading.component.mjs +0 -243
- package/esm2020/lib/navigation/views/permission-picker/permission-picker.component.mjs +0 -151
- package/esm2020/lib/navigation/views/state.mjs +0 -456
- package/esm2020/lib/navigation/views/views/views.component.mjs +0 -90
- package/esm2020/lib/notification/banner/banner-action.component.mjs +0 -48
- package/esm2020/lib/notification/banner/banner.component.mjs +0 -61
- package/esm2020/lib/notification/map-indicator/map-indicator.component.mjs +0 -50
- package/esm2020/lib/notification/map-indicator/map-indicators.mjs +0 -15
- package/esm2020/lib/overlay/callout/callout.component.mjs +0 -130
- package/esm2020/lib/overlay/callout/callout.helpers.mjs +0 -113
- package/esm2020/lib/overlay/callout/lock-scroll.directive.mjs +0 -69
- package/esm2020/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +0 -30
- package/esm2020/lib/overlay/callout/tooltip/tooltip.directive.mjs +0 -138
- package/esm2020/lib/overlay/modal/dialog/dialog.component.mjs +0 -47
- package/esm2020/lib/overlay/modal/form-dialog/form-dialog.component.mjs +0 -146
- package/esm2020/lib/overlay/modal/modal.component.mjs +0 -31
- package/esm2020/lib/overlay/overlay-outlet.component.mjs +0 -98
- package/esm2020/lib/overlay/toast/toast.component.mjs +0 -41
- package/esm2020/lib/size/size.directive.mjs +0 -33
- package/esm2020/lib/table/simple-table/coordinate-helper.mjs +0 -61
- package/esm2020/lib/table/simple-table/simple-table-cell.component.mjs +0 -36
- package/esm2020/lib/table/simple-table/simple-table-header-cell.component.mjs +0 -37
- package/esm2020/lib/table/simple-table/simple-table.component.mjs +0 -104
- package/esm2020/lib/table/table/clipboard.mjs +0 -182
- package/esm2020/lib/table/table/state-helpers/collapse-helpers.mjs +0 -116
- package/esm2020/lib/table/table/state-helpers/column-helpers.mjs +0 -383
- package/esm2020/lib/table/table/state-helpers/nesting-helpers.mjs +0 -123
- package/esm2020/lib/table/table/state-helpers/order-helpers.mjs +0 -164
- package/esm2020/lib/table/table/state-helpers/pagination-helpers.mjs +0 -139
- package/esm2020/lib/table/table/state-helpers/result-helpers.mjs +0 -70
- package/esm2020/lib/table/table/state-helpers/search-helpers.mjs +0 -72
- package/esm2020/lib/table/table/state-helpers/selection-helpers.mjs +0 -180
- package/esm2020/lib/table/table/state.mjs +0 -1035
- package/esm2020/lib/table/table/table/table.component.mjs +0 -367
- package/esm2020/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +0 -227
- package/esm2020/lib/table/table/table-column-settings/table-column-settings.component.mjs +0 -134
- package/esm2020/lib/table/table/table-csv-export/table-csv-export.component.mjs +0 -35
- package/esm2020/lib/table/table/table-search/table-search.component.mjs +0 -71
- package/esm2020/lib/visibility/visibility.directive.mjs +0 -34
- package/esm2020/lib/visualization/chart/chart-scaling.mjs +0 -380
- package/esm2020/lib/visualization/chart/chart.component.mjs +0 -626
- package/esm2020/lib/visualization/chart/chart.mjs +0 -3768
- package/esm2020/lib/visualization/funnel-chart/funnel-chart.helpers.mjs +0 -33
- package/esm2020/lib/visualization/highlight/highlight.helpers.mjs +0 -20
- package/esm2020/lib/visualization/intervals.mjs +0 -63
- package/esm2020/lib/visualization/stacked-column/stacked-column.component.mjs +0 -377
- package/esm2020/lib/visualization/stacked-column/stacked-column.helpers.mjs +0 -18
- package/esm2020/lib/visualization/stacked-row/stacked-row.component.mjs +0 -270
- package/esm2020/lib/visualization/stacked-row/stacked-row.helpers.mjs +0 -74
- package/esm2020/lib/visualization/time-series/time-series.component.mjs +0 -374
- package/esm2020/lib/visualization/time-series/time-series.helpers.mjs +0 -15
- package/esm2020/lib/visualization/trend/trend.component.mjs +0 -51
- package/fesm2015/rivet-health-design-system.mjs +0 -18370
- package/fesm2015/rivet-health-design-system.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/overlay/callout/select-callout-defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/util/local-storage.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/rivet-health-design-system.mjs +0 -0
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Optional, Output, } from '@angular/core';
|
|
2
|
-
import { uniqueId } from 'lodash';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./card.component";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "../../icon/icon.component";
|
|
7
|
-
/**
|
|
8
|
-
* Top row of a `riv-card`: heading text plus optional adornments.
|
|
9
|
-
*
|
|
10
|
-
* Three projection slots, all optional:
|
|
11
|
-
* - `[leading]` — icon, avatar, or status dot shown before the heading
|
|
12
|
-
* - default — laid out on the heading's baseline, so status badges sit beside
|
|
13
|
-
* the title and wrap below it when space runs out. Also takes a whole custom
|
|
14
|
-
* title (an inline rename field, say) when `heading` is left unset;
|
|
15
|
-
* `subheading` still renders below either way.
|
|
16
|
-
* - `[actions]` — trailing controls such as `riv-menu`
|
|
17
|
-
*
|
|
18
|
-
* ```html
|
|
19
|
-
* <riv-card-header [heading]="'Commercial 2025'" [subheading]="'Aetna'">
|
|
20
|
-
* <riv-icon leading [name]="'FileText'"></riv-icon>
|
|
21
|
-
* <riv-badge [size]="'small'" [variant]="'categorical-8'">Draft</riv-badge>
|
|
22
|
-
* <riv-menu actions>...</riv-menu>
|
|
23
|
-
* </riv-card-header>
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* `headingLevel` renders a real `h1`–`h6` so the card fits the page's heading
|
|
27
|
-
* outline; pick the level that follows the surrounding content rather than the
|
|
28
|
-
* one that looks right, since size comes from the design tokens either way.
|
|
29
|
-
*
|
|
30
|
-
* The heading font and colour can be overridden per-instance with the
|
|
31
|
-
* `--card-heading-font` and `--card-heading-color` custom properties.
|
|
32
|
-
*
|
|
33
|
-
* ## Expanding and collapsing
|
|
34
|
-
*
|
|
35
|
-
* `expandable` turns the header into the toggle for the card's body: it renders
|
|
36
|
-
* a chevron and covers the row with a real `<button>` carrying `aria-expanded`
|
|
37
|
-
* and `aria-controls`, so the pattern is keyboard operable and announces its
|
|
38
|
-
* state. Controls in `[actions]` sit above that button and stay independently
|
|
39
|
-
* clickable, so a menu beside the toggle needs no `stopPropagation`.
|
|
40
|
-
*
|
|
41
|
-
* The header holds no state of its own — bind `expanded` and act on
|
|
42
|
-
* `expandedChange`, or use `[(expanded)]`:
|
|
43
|
-
*
|
|
44
|
-
* ```html
|
|
45
|
-
* <riv-card>
|
|
46
|
-
* <riv-card-header
|
|
47
|
-
* [heading]="'Patient info'"
|
|
48
|
-
* [expandable]="true"
|
|
49
|
-
* [(expanded)]="open"
|
|
50
|
-
* ></riv-card-header>
|
|
51
|
-
* <riv-card-content *ngIf="open">...</riv-card-content>
|
|
52
|
-
* </riv-card>
|
|
53
|
-
* ```
|
|
54
|
-
*
|
|
55
|
-
* The toggle is named by the header's title, so an expandable header needs a
|
|
56
|
-
* `heading` or a projected title.
|
|
57
|
-
*/
|
|
58
|
-
export class CardHeaderComponent {
|
|
59
|
-
constructor(card) {
|
|
60
|
-
this.card = card;
|
|
61
|
-
/**
|
|
62
|
-
* Identifies the title for a clickable `riv-card`, which names its click
|
|
63
|
-
* target from the title rather than from the card's whole text.
|
|
64
|
-
*/
|
|
65
|
-
this.titleId = uniqueId('riv-card-title-');
|
|
66
|
-
/**
|
|
67
|
-
* Names the body the toggle controls. Handed to the enclosing card, which
|
|
68
|
-
* relays it to the projected `riv-card-content`.
|
|
69
|
-
*/
|
|
70
|
-
this.regionId = uniqueId('riv-card-region-');
|
|
71
|
-
/** Heading element rendered for `heading`, for document outline purposes. */
|
|
72
|
-
this.headingLevel = 3;
|
|
73
|
-
/** `filled` gives the header its own background, separating it from the body. */
|
|
74
|
-
this.variant = 'plain';
|
|
75
|
-
this.padding = 'medium';
|
|
76
|
-
/** Draws a separator below the header. Implied by the `filled` variant. */
|
|
77
|
-
this.divider = false;
|
|
78
|
-
/** Cross-axis alignment of the leading slot, heading block, and actions. */
|
|
79
|
-
this.align = 'start';
|
|
80
|
-
/** Turns the header row into the toggle for the card's body. */
|
|
81
|
-
this.expandable = false;
|
|
82
|
-
/** Whether the body is currently open. The consumer owns this state. */
|
|
83
|
-
this.expanded = false;
|
|
84
|
-
/** Side of the header the chevron sits on. */
|
|
85
|
-
this.togglePosition = 'trailing';
|
|
86
|
-
/**
|
|
87
|
-
* Blocks the toggle, for a section that is not yet available to open. Set it
|
|
88
|
-
* alongside a disabled `riv-card`, whose own `disabled` mutes the surface but
|
|
89
|
-
* does not reach the header's controls.
|
|
90
|
-
*/
|
|
91
|
-
this.disabled = false;
|
|
92
|
-
/** Emitted with the state the consumer is being asked to move to. */
|
|
93
|
-
this.expandedChange = new EventEmitter();
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Offers the heading to an enclosing card as the name for its click target,
|
|
97
|
-
* and the toggle's region so a projected `riv-card-content` can wear it. Only
|
|
98
|
-
* a text heading is offered: projected titles can be anything, so those cards
|
|
99
|
-
* fall back to naming against their whole content.
|
|
100
|
-
*/
|
|
101
|
-
ngOnChanges(changes) {
|
|
102
|
-
if (changes['heading']) {
|
|
103
|
-
if (this.heading?.trim()) {
|
|
104
|
-
this.card?.setTitleId(this.titleId);
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
this.card?.clearTitleId(this.titleId);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (changes['expandable']) {
|
|
111
|
-
if (this.expandable) {
|
|
112
|
-
this.card?.setRegionId(this.regionId);
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
this.card?.clearRegionId(this.regionId);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
/** Withdraws the offer, so the card stops naming itself against this header. */
|
|
120
|
-
ngOnDestroy() {
|
|
121
|
-
this.card?.clearTitleId(this.titleId);
|
|
122
|
-
this.card?.clearRegionId(this.regionId);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Asks for the opposite state rather than taking it, which keeps the header
|
|
126
|
-
* free of state that could drift from the consumer's.
|
|
127
|
-
*/
|
|
128
|
-
toggle() {
|
|
129
|
-
this.expandedChange.emit(!this.expanded);
|
|
130
|
-
}
|
|
131
|
-
get classes() {
|
|
132
|
-
return Object.entries({
|
|
133
|
-
[this.variant]: true,
|
|
134
|
-
[`padding-${this.padding}`]: true,
|
|
135
|
-
[`align-${this.align}`]: true,
|
|
136
|
-
divider: this.divider,
|
|
137
|
-
expandable: this.expandable,
|
|
138
|
-
})
|
|
139
|
-
.filter(([_, v]) => v)
|
|
140
|
-
.map(([k]) => k)
|
|
141
|
-
.join(' ');
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Line clamping is applied inline so the line count stays a plain input
|
|
145
|
-
* rather than a fixed set of CSS classes.
|
|
146
|
-
*/
|
|
147
|
-
get clampStyle() {
|
|
148
|
-
return this.clamp == null
|
|
149
|
-
? {}
|
|
150
|
-
: {
|
|
151
|
-
display: '-webkit-box',
|
|
152
|
-
'-webkit-box-orient': 'vertical',
|
|
153
|
-
'-webkit-line-clamp': `${this.clamp}`,
|
|
154
|
-
overflow: 'hidden',
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
CardHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CardHeaderComponent, deps: [{ token: i1.CardComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
159
|
-
CardHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CardHeaderComponent, selector: "riv-card-header", inputs: { heading: "heading", subheading: "subheading", headingLevel: "headingLevel", variant: "variant", padding: "padding", divider: "divider", align: "align", clamp: "clamp", expandable: "expandable", expanded: "expanded", togglePosition: "togglePosition", disabled: "disabled" }, outputs: { expandedChange: "expandedChange" }, host: { properties: { "class": "this.classes" } }, usesOnChanges: true, ngImport: i0, template: "<button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"expand-toggle\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"regionId\"\n [attr.aria-labelledby]=\"titleId\"\n (click)=\"toggle()\"\n></button>\n<ng-container\n *ngIf=\"expandable && togglePosition === 'leading'\"\n [ngTemplateOutlet]=\"chevron\"\n></ng-container>\n<div class=\"leading\"><ng-content select=\"[leading]\"></ng-content></div>\n<div class=\"main\">\n <div class=\"title-row\" [id]=\"titleId\">\n <div *ngIf=\"heading?.trim()\" class=\"heading\" [ngStyle]=\"clampStyle\">\n <ng-container [ngSwitch]=\"headingLevel\">\n <h1 *ngSwitchCase=\"1\">{{ heading }}</h1>\n <h2 *ngSwitchCase=\"2\">{{ heading }}</h2>\n <h3 *ngSwitchCase=\"3\">{{ heading }}</h3>\n <h4 *ngSwitchCase=\"4\">{{ heading }}</h4>\n <h5 *ngSwitchCase=\"5\">{{ heading }}</h5>\n <h6 *ngSwitchCase=\"6\">{{ heading }}</h6>\n </ng-container>\n </div>\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"subheading?.trim()\" class=\"subheading\">{{ subheading }}</div>\n</div>\n<ng-container\n *ngIf=\"expandable && togglePosition === 'trailing'\"\n [ngTemplateOutlet]=\"chevron\"\n></ng-container>\n<div class=\"actions\"><ng-content select=\"[actions]\"></ng-content></div>\n\n<ng-template #chevron>\n <riv-icon\n class=\"expand-chevron\"\n [class.expanded]=\"expanded\"\n [name]=\"'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n</ng-template>\n", styles: [":host{display:flex;gap:var(--size-medium);min-width:0}:host.expandable{position:relative}:host.align-start{align-items:flex-start}:host.align-center{align-items:center}:host.padding-small{padding:var(--size-small)}:host.padding-medium{padding:var(--size-medium)}:host.padding-large{padding:var(--size-large)}:host.padding-xlarge{padding:var(--size-xlarge)}:host.padding-xxlarge{padding:var(--size-xxlarge)}:host.filled{background-color:var(--surface-light-1)}:host.filled,:host.divider{border-bottom:var(--border-width) solid var(--border-light)}.main{flex-grow:1;min-width:0}.title-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--size-xsmall);min-width:0;font:var(--card-heading-font, var(--title-04));color:var(--card-heading-color, var(--type-light-high-contrast))}:host.filled .title-row{font:var(--card-heading-font, var(--title-02))}.leading{flex-shrink:0}.actions{position:relative;z-index:var(--card-raised-z-index);display:flex;flex-shrink:0;align-items:center;gap:var(--size-small)}.expand-toggle{position:absolute;inset:0;z-index:var(--card-click-target-z-index);padding:0;border:none;background:none;cursor:pointer;transition:background-color var(--short-transition)}.expand-toggle:not(:disabled):hover{background-color:var(--black-20)}.expand-toggle:disabled{cursor:default}.expand-toggle:focus-visible{outline:var(--border-width-large) solid var(--type-light-link);outline-offset:calc(-1 * var(--border-width-large))}.expand-chevron{flex-shrink:0;transition:transform var(--medium-transition)}.expand-chevron.expanded{transform:rotate(-180deg)}.leading:not(:has(*)),.actions:not(:has(*)){display:none}.heading{min-width:0}.heading>*{display:inline;margin:0;font:inherit;color:inherit}.subheading{font:var(--body-small);color:var(--type-light-low-contrast)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CardHeaderComponent, decorators: [{
|
|
161
|
-
type: Component,
|
|
162
|
-
args: [{ selector: 'riv-card-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"expand-toggle\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"regionId\"\n [attr.aria-labelledby]=\"titleId\"\n (click)=\"toggle()\"\n></button>\n<ng-container\n *ngIf=\"expandable && togglePosition === 'leading'\"\n [ngTemplateOutlet]=\"chevron\"\n></ng-container>\n<div class=\"leading\"><ng-content select=\"[leading]\"></ng-content></div>\n<div class=\"main\">\n <div class=\"title-row\" [id]=\"titleId\">\n <div *ngIf=\"heading?.trim()\" class=\"heading\" [ngStyle]=\"clampStyle\">\n <ng-container [ngSwitch]=\"headingLevel\">\n <h1 *ngSwitchCase=\"1\">{{ heading }}</h1>\n <h2 *ngSwitchCase=\"2\">{{ heading }}</h2>\n <h3 *ngSwitchCase=\"3\">{{ heading }}</h3>\n <h4 *ngSwitchCase=\"4\">{{ heading }}</h4>\n <h5 *ngSwitchCase=\"5\">{{ heading }}</h5>\n <h6 *ngSwitchCase=\"6\">{{ heading }}</h6>\n </ng-container>\n </div>\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"subheading?.trim()\" class=\"subheading\">{{ subheading }}</div>\n</div>\n<ng-container\n *ngIf=\"expandable && togglePosition === 'trailing'\"\n [ngTemplateOutlet]=\"chevron\"\n></ng-container>\n<div class=\"actions\"><ng-content select=\"[actions]\"></ng-content></div>\n\n<ng-template #chevron>\n <riv-icon\n class=\"expand-chevron\"\n [class.expanded]=\"expanded\"\n [name]=\"'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n</ng-template>\n", styles: [":host{display:flex;gap:var(--size-medium);min-width:0}:host.expandable{position:relative}:host.align-start{align-items:flex-start}:host.align-center{align-items:center}:host.padding-small{padding:var(--size-small)}:host.padding-medium{padding:var(--size-medium)}:host.padding-large{padding:var(--size-large)}:host.padding-xlarge{padding:var(--size-xlarge)}:host.padding-xxlarge{padding:var(--size-xxlarge)}:host.filled{background-color:var(--surface-light-1)}:host.filled,:host.divider{border-bottom:var(--border-width) solid var(--border-light)}.main{flex-grow:1;min-width:0}.title-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--size-xsmall);min-width:0;font:var(--card-heading-font, var(--title-04));color:var(--card-heading-color, var(--type-light-high-contrast))}:host.filled .title-row{font:var(--card-heading-font, var(--title-02))}.leading{flex-shrink:0}.actions{position:relative;z-index:var(--card-raised-z-index);display:flex;flex-shrink:0;align-items:center;gap:var(--size-small)}.expand-toggle{position:absolute;inset:0;z-index:var(--card-click-target-z-index);padding:0;border:none;background:none;cursor:pointer;transition:background-color var(--short-transition)}.expand-toggle:not(:disabled):hover{background-color:var(--black-20)}.expand-toggle:disabled{cursor:default}.expand-toggle:focus-visible{outline:var(--border-width-large) solid var(--type-light-link);outline-offset:calc(-1 * var(--border-width-large))}.expand-chevron{flex-shrink:0;transition:transform var(--medium-transition)}.expand-chevron.expanded{transform:rotate(-180deg)}.leading:not(:has(*)),.actions:not(:has(*)){display:none}.heading{min-width:0}.heading>*{display:inline;margin:0;font:inherit;color:inherit}.subheading{font:var(--body-small);color:var(--type-light-low-contrast)}\n"] }]
|
|
163
|
-
}], ctorParameters: function () { return [{ type: i1.CardComponent, decorators: [{
|
|
164
|
-
type: Optional
|
|
165
|
-
}] }]; }, propDecorators: { heading: [{
|
|
166
|
-
type: Input
|
|
167
|
-
}], subheading: [{
|
|
168
|
-
type: Input
|
|
169
|
-
}], headingLevel: [{
|
|
170
|
-
type: Input
|
|
171
|
-
}], variant: [{
|
|
172
|
-
type: Input
|
|
173
|
-
}], padding: [{
|
|
174
|
-
type: Input
|
|
175
|
-
}], divider: [{
|
|
176
|
-
type: Input
|
|
177
|
-
}], align: [{
|
|
178
|
-
type: Input
|
|
179
|
-
}], clamp: [{
|
|
180
|
-
type: Input
|
|
181
|
-
}], expandable: [{
|
|
182
|
-
type: Input
|
|
183
|
-
}], expanded: [{
|
|
184
|
-
type: Input
|
|
185
|
-
}], togglePosition: [{
|
|
186
|
-
type: Input
|
|
187
|
-
}], disabled: [{
|
|
188
|
-
type: Input
|
|
189
|
-
}], expandedChange: [{
|
|
190
|
-
type: Output
|
|
191
|
-
}], classes: [{
|
|
192
|
-
type: HostBinding,
|
|
193
|
-
args: ['class']
|
|
194
|
-
}] } });
|
|
195
|
-
(function (CardHeaderComponent) {
|
|
196
|
-
CardHeaderComponent.Variants = ['plain', 'filled'];
|
|
197
|
-
CardHeaderComponent.HeadingLevels = [1, 2, 3, 4, 5, 6];
|
|
198
|
-
CardHeaderComponent.Aligns = ['start', 'center'];
|
|
199
|
-
CardHeaderComponent.TogglePositions = ['leading', 'trailing'];
|
|
200
|
-
})(CardHeaderComponent || (CardHeaderComponent = {}));
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbGF5b3V0L2NhcmQvY2FyZC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbGF5b3V0L2NhcmQvY2FyZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7OztBQUdsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrREc7QUFPSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQXlDLElBQTBCO1FBQTFCLFNBQUksR0FBSixJQUFJLENBQXNCO1FBRW5FOzs7V0FHRztRQUNNLFlBQU8sR0FBVyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV2RDs7O1dBR0c7UUFDTSxhQUFRLEdBQVcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFVekQsNkVBQTZFO1FBRTdFLGlCQUFZLEdBQXFDLENBQUMsQ0FBQztRQUVuRCxpRkFBaUY7UUFFakYsWUFBTyxHQUFnQyxPQUFPLENBQUM7UUFHL0MsWUFBTyxHQUEwQixRQUFRLENBQUM7UUFFMUMsMkVBQTJFO1FBRTNFLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFekIsNEVBQTRFO1FBRTVFLFVBQUssR0FBOEIsT0FBTyxDQUFDO1FBUzNDLGdFQUFnRTtRQUVoRSxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCLHdFQUF3RTtRQUV4RSxhQUFRLEdBQVksS0FB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S0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBUU4sS0FBSztzQkFESixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQVNOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixjQUFjO3NCQURiLE1BQU07Z0JBeUNILE9BQU87c0JBRFYsV0FBVzt1QkFBQyxPQUFPOztBQThCdEIsV0FBaUIsbUJBQW1CO0lBQ3JCLDRCQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFVLENBQUM7SUFHeEMsaUNBQWEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFVLENBQUM7SUFHNUMsMEJBQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQVUsQ0FBQztJQUd0QyxtQ0FBZSxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRWxFLENBQUMsRUFaZ0IsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVluQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkLmNvbXBvbmVudCc7XG5cbi8qKlxuICogVG9wIHJvdyBvZiBhIGByaXYtY2FyZGA6IGhlYWRpbmcgdGV4dCBwbHVzIG9wdGlvbmFsIGFkb3JubWVudHMuXG4gKlxuICogVGhyZWUgcHJvamVjdGlvbiBzbG90cywgYWxsIG9wdGlvbmFsOlxuICogLSBgW2xlYWRpbmddYCDigJQgaWNvbiwgYXZhdGFyLCBvciBzdGF0dXMgZG90IHNob3duIGJlZm9yZSB0aGUgaGVhZGluZ1xuICogLSBkZWZhdWx0IOKAlCBsYWlkIG91dCBvbiB0aGUgaGVhZGluZydzIGJhc2VsaW5lLCBzbyBzdGF0dXMgYmFkZ2VzIHNpdCBiZXNpZGVcbiAqICAgdGhlIHRpdGxlIGFuZCB3cmFwIGJlbG93IGl0IHdoZW4gc3BhY2UgcnVucyBvdXQuIEFsc28gdGFrZXMgYSB3aG9sZSBjdXN0b21cbiAqICAgdGl0bGUgKGFuIGlubGluZSByZW5hbWUgZmllbGQsIHNheSkgd2hlbiBgaGVhZGluZ2AgaXMgbGVmdCB1bnNldDtcbiAqICAgYHN1YmhlYWRpbmdgIHN0aWxsIHJlbmRlcnMgYmVsb3cgZWl0aGVyIHdheS5cbiAqIC0gYFthY3Rpb25zXWAg4oCUIHRyYWlsaW5nIGNvbnRyb2xzIHN1Y2ggYXMgYHJpdi1tZW51YFxuICpcbiAqIGBgYGh0bWxcbiAqIDxyaXYtY2FyZC1oZWFkZXIgW2hlYWRpbmddPVwiJ0NvbW1lcmNpYWwgMjAyNSdcIiBbc3ViaGVhZGluZ109XCInQWV0bmEnXCI+XG4gKiAgIDxyaXYtaWNvbiBsZWFkaW5nIFtuYW1lXT1cIidGaWxlVGV4dCdcIj48L3Jpdi1pY29uPlxuICogICA8cml2LWJhZGdlIFtzaXplXT1cIidzbWFsbCdcIiBbdmFyaWFudF09XCInY2F0ZWdvcmljYWwtOCdcIj5EcmFmdDwvcml2LWJhZGdlPlxuICogICA8cml2LW1lbnUgYWN0aW9ucz4uLi48L3Jpdi1tZW51PlxuICogPC9yaXYtY2FyZC1oZWFkZXI+XG4gKiBgYGBcbiAqXG4gKiBgaGVhZGluZ0xldmVsYCByZW5kZXJzIGEgcmVhbCBgaDFg4oCTYGg2YCBzbyB0aGUgY2FyZCBmaXRzIHRoZSBwYWdlJ3MgaGVhZGluZ1xuICogb3V0bGluZTsgcGljayB0aGUgbGV2ZWwgdGhhdCBmb2xsb3dzIHRoZSBzdXJyb3VuZGluZyBjb250ZW50IHJhdGhlciB0aGFuIHRoZVxuICogb25lIHRoYXQgbG9va3MgcmlnaHQsIHNpbmNlIHNpemUgY29tZXMgZnJvbSB0aGUgZGVzaWduIHRva2VucyBlaXRoZXIgd2F5LlxuICpcbiAqIFRoZSBoZWFkaW5nIGZvbnQgYW5kIGNvbG91ciBjYW4gYmUgb3ZlcnJpZGRlbiBwZXItaW5zdGFuY2Ugd2l0aCB0aGVcbiAqIGAtLWNhcmQtaGVhZGluZy1mb250YCBhbmQgYC0tY2FyZC1oZWFkaW5nLWNvbG9yYCBjdXN0b20gcHJvcGVydGllcy5cbiAqXG4gKiAjIyBFeHBhbmRpbmcgYW5kIGNvbGxhcHNpbmdcbiAqXG4gKiBgZXhwYW5kYWJsZWAgdHVybnMgdGhlIGhlYWRlciBpbnRvIHRoZSB0b2dnbGUgZm9yIHRoZSBjYXJkJ3MgYm9keTogaXQgcmVuZGVyc1xuICogYSBjaGV2cm9uIGFuZCBjb3ZlcnMgdGhlIHJvdyB3aXRoIGEgcmVhbCBgPGJ1dHRvbj5gIGNhcnJ5aW5nIGBhcmlhLWV4cGFuZGVkYFxuICogYW5kIGBhcmlhLWNvbnRyb2xzYCwgc28gdGhlIHBhdHRlcm4gaXMga2V5Ym9hcmQgb3BlcmFibGUgYW5kIGFubm91bmNlcyBpdHNcbiAqIHN0YXRlLiBDb250cm9scyBpbiBgW2FjdGlvbnNdYCBzaXQgYWJvdmUgdGhhdCBidXR0b24gYW5kIHN0YXkgaW5kZXBlbmRlbnRseVxuICogY2xpY2thYmxlLCBzbyBhIG1lbnUgYmVzaWRlIHRoZSB0b2dnbGUgbmVlZHMgbm8gYHN0b3BQcm9wYWdhdGlvbmAuXG4gKlxuICogVGhlIGhlYWRlciBob2xkcyBubyBzdGF0ZSBvZiBpdHMgb3duIOKAlCBiaW5kIGBleHBhbmRlZGAgYW5kIGFjdCBvblxuICogYGV4cGFuZGVkQ2hhbmdlYCwgb3IgdXNlIGBbKGV4cGFuZGVkKV1gOlxuICpcbiAqIGBgYGh0bWxcbiAqIDxyaXYtY2FyZD5cbiAqICAgPHJpdi1jYXJkLWhlYWRlclxuICogICAgIFtoZWFkaW5nXT1cIidQYXRpZW50IGluZm8nXCJcbiAqICAgICBbZXhwYW5kYWJsZV09XCJ0cnVlXCJcbiAqICAgICBbKGV4cGFuZGVkKV09XCJvcGVuXCJcbiAqICAgPjwvcml2LWNhcmQtaGVhZGVyPlxuICogICA8cml2LWNhcmQtY29udGVudCAqbmdJZj1cIm9wZW5cIj4uLi48L3Jpdi1jYXJkLWNvbnRlbnQ+XG4gKiA8L3Jpdi1jYXJkPlxuICogYGBgXG4gKlxuICogVGhlIHRvZ2dsZSBpcyBuYW1lZCBieSB0aGUgaGVhZGVyJ3MgdGl0bGUsIHNvIGFuIGV4cGFuZGFibGUgaGVhZGVyIG5lZWRzIGFcbiAqIGBoZWFkaW5nYCBvciBhIHByb2plY3RlZCB0aXRsZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LWNhcmQtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcmQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC1oZWFkZXIuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBjYXJkOiBDYXJkQ29tcG9uZW50IHwgbnVsbCkge31cblxuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgdGl0bGUgZm9yIGEgY2xpY2thYmxlIGByaXYtY2FyZGAsIHdoaWNoIG5hbWVzIGl0cyBjbGlja1xuICAgKiB0YXJnZXQgZnJvbSB0aGUgdGl0bGUgcmF0aGVyIHRoYW4gZnJvbSB0aGUgY2FyZCdzIHdob2xlIHRleHQuXG4gICAqL1xuICByZWFkb25seSB0aXRsZUlkOiBzdHJpbmcgPSB1bmlxdWVJZCgncml2LWNhcmQtdGl0bGUtJyk7XG5cbiAgLyoqXG4gICAqIE5hbWVzIHRoZSBib2R5IHRoZSB0b2dnbGUgY29udHJvbHMuIEhhbmRlZCB0byB0aGUgZW5jbG9zaW5nIGNhcmQsIHdoaWNoXG4gICAqIHJlbGF5cyBpdCB0byB0aGUgcHJvamVjdGVkIGByaXYtY2FyZC1jb250ZW50YC5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbklkOiBzdHJpbmcgPSB1bmlxdWVJZCgncml2LWNhcmQtcmVnaW9uLScpO1xuXG4gIC8qKiBIZWFkaW5nIHRleHQuIE9taXQgd2hlbiBwcm9qZWN0aW5nIGN1c3RvbSBoZWFkaW5nIG1hcmt1cCBpbnN0ZWFkLiAqL1xuICBASW5wdXQoKVxuICBoZWFkaW5nPzogc3RyaW5nO1xuXG4gIC8qKiBTdXBwb3J0aW5nIHRleHQgcmVuZGVyZWQgYmVsb3cgdGhlIGhlYWRpbmcuICovXG4gIEBJbnB1dCgpXG4gIHN1YmhlYWRpbmc/OiBzdHJpbmc7XG5cbiAgLyoqIEhlYWRpbmcgZWxlbWVudCByZW5kZXJlZCBmb3IgYGhlYWRpbmdgLCBmb3IgZG9jdW1lbnQgb3V0bGluZSBwdXJwb3Nlcy4gKi9cbiAgQElucHV0KClcbiAgaGVhZGluZ0xldmVsOiBDYXJkSGVhZGVyQ29tcG9uZW50LkhlYWRpbmdMZXZlbCA9IDM7XG5cbiAgLyoqIGBmaWxsZWRgIGdpdmVzIHRoZSBoZWFkZXIgaXRzIG93biBiYWNrZ3JvdW5kLCBzZXBhcmF0aW5nIGl0IGZyb20gdGhlIGJvZHkuICovXG4gIEBJbnB1dCgpXG4gIHZhcmlhbnQ6IENhcmRIZWFkZXJDb21wb25lbnQuVmFyaWFudCA9ICdwbGFpbic7XG5cbiAgQElucHV0KClcbiAgcGFkZGluZzogQ2FyZENvbXBvbmVudC5QYWRkaW5nID0gJ21lZGl1bSc7XG5cbiAgLyoqIERyYXdzIGEgc2VwYXJhdG9yIGJlbG93IHRoZSBoZWFkZXIuIEltcGxpZWQgYnkgdGhlIGBmaWxsZWRgIHZhcmlhbnQuICovXG4gIEBJbnB1dCgpXG4gIGRpdmlkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQ3Jvc3MtYXhpcyBhbGlnbm1lbnQgb2YgdGhlIGxlYWRpbmcgc2xvdCwgaGVhZGluZyBibG9jaywgYW5kIGFjdGlvbnMuICovXG4gIEBJbnB1dCgpXG4gIGFsaWduOiBDYXJkSGVhZGVyQ29tcG9uZW50LkFsaWduID0gJ3N0YXJ0JztcblxuICAvKipcbiAgICogVHJ1bmNhdGVzIHRoZSBoZWFkaW5nIHRvIHRoaXMgbWFueSBsaW5lcyB3aXRoIGFuIGVsbGlwc2lzLiBMZWF2ZSB1bnNldCB0b1xuICAgKiBsZXQgdGhlIGhlYWRpbmcgd3JhcCBmcmVlbHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBjbGFtcD86IG51bWJlcjtcblxuICAvKiogVHVybnMgdGhlIGhlYWRlciByb3cgaW50byB0aGUgdG9nZ2xlIGZvciB0aGUgY2FyZCdzIGJvZHkuICovXG4gIEBJbnB1dCgpXG4gIGV4cGFuZGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgYm9keSBpcyBjdXJyZW50bHkgb3Blbi4gVGhlIGNvbnN1bWVyIG93bnMgdGhpcyBzdGF0ZS4gKi9cbiAgQElucHV0KClcbiAgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogU2lkZSBvZiB0aGUgaGVhZGVyIHRoZSBjaGV2cm9uIHNpdHMgb24uICovXG4gIEBJbnB1dCgpXG4gIHRvZ2dsZVBvc2l0aW9uOiBDYXJkSGVhZGVyQ29tcG9uZW50LlRvZ2dsZVBvc2l0aW9uID0gJ3RyYWlsaW5nJztcblxuICAvKipcbiAgICogQmxvY2tzIHRoZSB0b2dnbGUsIGZvciBhIHNlY3Rpb24gdGhhdCBpcyBub3QgeWV0IGF2YWlsYWJsZSB0byBvcGVuLiBTZXQgaXRcbiAgICogYWxvbmdzaWRlIGEgZGlzYWJsZWQgYHJpdi1jYXJkYCwgd2hvc2Ugb3duIGBkaXNhYmxlZGAgbXV0ZXMgdGhlIHN1cmZhY2UgYnV0XG4gICAqIGRvZXMgbm90IHJlYWNoIHRoZSBoZWFkZXIncyBjb250cm9scy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEVtaXR0ZWQgd2l0aCB0aGUgc3RhdGUgdGhlIGNvbnN1bWVyIGlzIGJlaW5nIGFza2VkIHRvIG1vdmUgdG8uICovXG4gIEBPdXRwdXQoKVxuICBleHBhbmRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogT2ZmZXJzIHRoZSBoZWFkaW5nIHRvIGFuIGVuY2xvc2luZyBjYXJkIGFzIHRoZSBuYW1lIGZvciBpdHMgY2xpY2sgdGFyZ2V0LFxuICAgKiBhbmQgdGhlIHRvZ2dsZSdzIHJlZ2lvbiBzbyBhIHByb2plY3RlZCBgcml2LWNhcmQtY29udGVudGAgY2FuIHdlYXIgaXQuIE9ubHlcbiAgICogYSB0ZXh0IGhlYWRpbmcgaXMgb2ZmZXJlZDogcHJvamVjdGVkIHRpdGxlcyBjYW4gYmUgYW55dGhpbmcsIHNvIHRob3NlIGNhcmRzXG4gICAqIGZhbGwgYmFjayB0byBuYW1pbmcgYWdhaW5zdCB0aGVpciB3aG9sZSBjb250ZW50LlxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydoZWFkaW5nJ10pIHtcbiAgICAgIGlmICh0aGlzLmhlYWRpbmc/LnRyaW0oKSkge1xuICAgICAgICB0aGlzLmNhcmQ/LnNldFRpdGxlSWQodGhpcy50aXRsZUlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FyZD8uY2xlYXJUaXRsZUlkKHRoaXMudGl0bGVJZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydleHBhbmRhYmxlJ10pIHtcbiAgICAgIGlmICh0aGlzLmV4cGFuZGFibGUpIHtcbiAgICAgICAgdGhpcy5jYXJkPy5zZXRSZWdpb25JZCh0aGlzLnJlZ2lvbklkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FyZD8uY2xlYXJSZWdpb25JZCh0aGlzLnJlZ2lvbklkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogV2l0aGRyYXdzIHRoZSBvZmZlciwgc28gdGhlIGNhcmQgc3RvcHMgbmFtaW5nIGl0c2VsZiBhZ2FpbnN0IHRoaXMgaGVhZGVyLiAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNhcmQ/LmNsZWFyVGl0bGVJZCh0aGlzLnRpdGxlSWQpO1xuICAgIHRoaXMuY2FyZD8uY2xlYXJSZWdpb25JZCh0aGlzLnJlZ2lvbklkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc2tzIGZvciB0aGUgb3Bwb3NpdGUgc3RhdGUgcmF0aGVyIHRoYW4gdGFraW5nIGl0LCB3aGljaCBrZWVwcyB0aGUgaGVhZGVyXG4gICAqIGZyZWUgb2Ygc3RhdGUgdGhhdCBjb3VsZCBkcmlmdCBmcm9tIHRoZSBjb25zdW1lcidzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRvZ2dsZSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQoIXRoaXMuZXhwYW5kZWQpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBjbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHtcbiAgICAgIFt0aGlzLnZhcmlhbnRdOiB0cnVlLFxuICAgICAgW2BwYWRkaW5nLSR7dGhpcy5wYWRkaW5nfWBdOiB0cnVlLFxuICAgICAgW2BhbGlnbi0ke3RoaXMuYWxpZ259YF06IHRydWUsXG4gICAgICBkaXZpZGVyOiB0aGlzLmRpdmlkZXIsXG4gICAgICBleHBhbmRhYmxlOiB0aGlzLmV4cGFuZGFibGUsXG4gICAgfSlcbiAgICAgIC5maWx0ZXIoKFtfLCB2XSkgPT4gdilcbiAgICAgIC5tYXAoKFtrXSkgPT4gaylcbiAgICAgIC5qb2luKCcgJyk7XG4gIH1cblxuICAvKipcbiAgICogTGluZSBjbGFtcGluZyBpcyBhcHBsaWVkIGlubGluZSBzbyB0aGUgbGluZSBjb3VudCBzdGF5cyBhIHBsYWluIGlucHV0XG4gICAqIHJhdGhlciB0aGFuIGEgZml4ZWQgc2V0IG9mIENTUyBjbGFzc2VzLlxuICAgKi9cbiAgZ2V0IGNsYW1wU3R5bGUoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY2xhbXAgPT0gbnVsbFxuICAgICAgPyB7fVxuICAgICAgOiB7XG4gICAgICAgICAgZGlzcGxheTogJy13ZWJraXQtYm94JyxcbiAgICAgICAgICAnLXdlYmtpdC1ib3gtb3JpZW50JzogJ3ZlcnRpY2FsJyxcbiAgICAgICAgICAnLXdlYmtpdC1saW5lLWNsYW1wJzogYCR7dGhpcy5jbGFtcH1gLFxuICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgfTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIENhcmRIZWFkZXJDb21wb25lbnQge1xuICBleHBvcnQgY29uc3QgVmFyaWFudHMgPSBbJ3BsYWluJywgJ2ZpbGxlZCddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBWYXJpYW50ID0gKHR5cGVvZiBWYXJpYW50cylbbnVtYmVyXTtcblxuICBleHBvcnQgY29uc3QgSGVhZGluZ0xldmVscyA9IFsxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgSGVhZGluZ0xldmVsID0gKHR5cGVvZiBIZWFkaW5nTGV2ZWxzKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBBbGlnbnMgPSBbJ3N0YXJ0JywgJ2NlbnRlciddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBBbGlnbiA9ICh0eXBlb2YgQWxpZ25zKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBUb2dnbGVQb3NpdGlvbnMgPSBbJ2xlYWRpbmcnLCAndHJhaWxpbmcnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgVG9nZ2xlUG9zaXRpb24gPSAodHlwZW9mIFRvZ2dsZVBvc2l0aW9ucylbbnVtYmVyXTtcbn1cbiIsIjxidXR0b25cbiAgKm5nSWY9XCJleHBhbmRhYmxlXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4gIGNsYXNzPVwiZXhwYW5kLXRvZ2dsZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAndHJ1ZScgOiBudWxsXCJcbiAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJleHBhbmRlZFwiXG4gIFthdHRyLmFyaWEtY29udHJvbHNdPVwicmVnaW9uSWRcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGl0bGVJZFwiXG4gIChjbGljayk9XCJ0b2dnbGUoKVwiXG4+PC9idXR0b24+XG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwiZXhwYW5kYWJsZSAmJiB0b2dnbGVQb3NpdGlvbiA9PT0gJ2xlYWRpbmcnXCJcbiAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hldnJvblwiXG4+PC9uZy1jb250YWluZXI+XG48ZGl2IGNsYXNzPVwibGVhZGluZ1wiPjxuZy1jb250ZW50IHNlbGVjdD1cIltsZWFkaW5nXVwiPjwvbmctY29udGVudD48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtYWluXCI+XG4gIDxkaXYgY2xhc3M9XCJ0aXRsZS1yb3dcIiBbaWRdPVwidGl0bGVJZFwiPlxuICAgIDxkaXYgKm5nSWY9XCJoZWFkaW5nPy50cmltKClcIiBjbGFzcz1cImhlYWRpbmdcIiBbbmdTdHlsZV09XCJjbGFtcFN0eWxlXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJoZWFkaW5nTGV2ZWxcIj5cbiAgICAgICAgPGgxICpuZ1N3aXRjaENhc2U9XCIxXCI+e3sgaGVhZGluZyB9fTwvaDE+XG4gICAgICAgIDxoMiAqbmdTd2l0Y2hDYXNlPVwiMlwiPnt7IGhlYWRpbmcgfX08L2gyPlxuICAgICAgICA8aDMgKm5nU3dpdGNoQ2FzZT1cIjNcIj57eyBoZWFkaW5nIH19PC9oMz5cbiAgICAgICAgPGg0ICpuZ1N3aXRjaENhc2U9XCI0XCI+e3sgaGVhZGluZyB9fTwvaDQ+XG4gICAgICAgIDxoNSAqbmdTd2l0Y2hDYXNlPVwiNVwiPnt7IGhlYWRpbmcgfX08L2g1PlxuICAgICAgICA8aDYgKm5nU3dpdGNoQ2FzZT1cIjZcIj57eyBoZWFkaW5nIH19PC9oNj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJzdWJoZWFkaW5nPy50cmltKClcIiBjbGFzcz1cInN1YmhlYWRpbmdcIj57eyBzdWJoZWFkaW5nIH19PC9kaXY+XG48L2Rpdj5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJleHBhbmRhYmxlICYmIHRvZ2dsZVBvc2l0aW9uID09PSAndHJhaWxpbmcnXCJcbiAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hldnJvblwiXG4+PC9uZy1jb250YWluZXI+XG48ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPjxuZy1jb250ZW50IHNlbGVjdD1cIlthY3Rpb25zXVwiPjwvbmctY29udGVudD48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjaGV2cm9uPlxuICA8cml2LWljb25cbiAgICBjbGFzcz1cImV4cGFuZC1jaGV2cm9uXCJcbiAgICBbY2xhc3MuZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgIFtuYW1lXT1cIidDaGV2cm9uRG93bidcIlxuICAgIFtzaXplXT1cIjIwXCJcbiAgPjwvcml2LWljb24+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, } from '@angular/core';
|
|
2
|
-
import { uniqueId } from 'lodash';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
/**
|
|
6
|
-
* Surface container that groups related content into a single scannable unit.
|
|
7
|
-
*
|
|
8
|
-
* A card is composed, not configured: project the parts you need, in the order
|
|
9
|
-
* you need them. Every part is optional, so a bare `riv-card` is a valid
|
|
10
|
-
* surface on its own.
|
|
11
|
-
*
|
|
12
|
-
* - `riv-card-media` — leading image or video
|
|
13
|
-
* - `riv-card-header` — heading, subheading, leading adornment, actions
|
|
14
|
-
* - `riv-card-content` — body
|
|
15
|
-
* - `riv-card-actions` — trailing control row
|
|
16
|
-
*
|
|
17
|
-
* ```html
|
|
18
|
-
* <riv-card>
|
|
19
|
-
* <riv-card-header [heading]="workbook.name" [subheading]="payerName">
|
|
20
|
-
* <riv-menu actions>...</riv-menu>
|
|
21
|
-
* </riv-card-header>
|
|
22
|
-
* <riv-card-content>
|
|
23
|
-
* Last edit: {{ workbook.modified | rivDate }}
|
|
24
|
-
* </riv-card-content>
|
|
25
|
-
* </riv-card>
|
|
26
|
-
* ```
|
|
27
|
-
*
|
|
28
|
-
* ## Making the card activate
|
|
29
|
-
*
|
|
30
|
-
* Set `clickable` and handle `cardClick` to make the whole surface act on a
|
|
31
|
-
* click:
|
|
32
|
-
*
|
|
33
|
-
* ```html
|
|
34
|
-
* <riv-card [clickable]="true" (cardClick)="goToWorkbook()">
|
|
35
|
-
* ```
|
|
36
|
-
*
|
|
37
|
-
* The card renders its own full-surface button for this, so activation works
|
|
38
|
-
* with a pointer, with Enter, and with Space, and the focus ring traces the
|
|
39
|
-
* whole card. Controls in `riv-card-header`'s `[actions]` slot and in
|
|
40
|
-
* `riv-card-actions` sit above it and stay independently clickable — a menu
|
|
41
|
-
* inside a clickable card needs no `stopPropagation`. Other interactive content
|
|
42
|
-
* projected into the card must raise itself with `position: relative` and
|
|
43
|
-
* `z-index: var(--card-raised-z-index)`.
|
|
44
|
-
*
|
|
45
|
-
* When the card's action is really a navigation, prefer `[riv-card-link]` on an
|
|
46
|
-
* `<a>` instead: that keeps the URL, middle-click, and "open in new tab".
|
|
47
|
-
*
|
|
48
|
-
* ## Selection
|
|
49
|
-
*
|
|
50
|
-
* Set `selected` to mark the card the user is currently looking at. It gives
|
|
51
|
-
* the surface a distinct border and shadow, and announces through
|
|
52
|
-
* `aria-current` so the state is not conveyed by colour alone.
|
|
53
|
-
*
|
|
54
|
-
* ```html
|
|
55
|
-
* <riv-card [selected]="workbook.id === activeId">
|
|
56
|
-
* ```
|
|
57
|
-
*
|
|
58
|
-
* Selection is separate from `tone`, so it composes with any tint — a selected
|
|
59
|
-
* `danger` card keeps its danger background.
|
|
60
|
-
*
|
|
61
|
-
* ## Making the card expand and collapse
|
|
62
|
-
*
|
|
63
|
-
* Set `expandable` on `riv-card-header` and render the body only while it is
|
|
64
|
-
* open. The header owns the toggle affordance and its accessibility; the
|
|
65
|
-
* consumer owns the state:
|
|
66
|
-
*
|
|
67
|
-
* ```html
|
|
68
|
-
* <riv-card>
|
|
69
|
-
* <riv-card-header
|
|
70
|
-
* [heading]="'Patient info'"
|
|
71
|
-
* [expandable]="true"
|
|
72
|
-
* [(expanded)]="open"
|
|
73
|
-
* ></riv-card-header>
|
|
74
|
-
* <riv-card-content *ngIf="open">...</riv-card-content>
|
|
75
|
-
* </riv-card>
|
|
76
|
-
* ```
|
|
77
|
-
*
|
|
78
|
-
* The card relays the region id from the header to the content, so the toggle's
|
|
79
|
-
* `aria-controls` names the body with no ids wired by hand.
|
|
80
|
-
*
|
|
81
|
-
* Do not combine `expandable` with `clickable`: both claim the same click, and
|
|
82
|
-
* a card that opens as well as expands leaves the user no way to tell which one
|
|
83
|
-
* they are about to get.
|
|
84
|
-
*
|
|
85
|
-
* ## Notes
|
|
86
|
-
*
|
|
87
|
-
* When projecting raw content with no sub-components, set `padding` so the
|
|
88
|
-
* content is not flush against the border.
|
|
89
|
-
*
|
|
90
|
-
* The card clips its own content so media and filled header/action rows follow
|
|
91
|
-
* its corners. Popups (`riv-menu`, `rivTooltip`) render through the overlay
|
|
92
|
-
* outlet, so they are not affected by that clipping.
|
|
93
|
-
*
|
|
94
|
-
* Set the corner radius with `radius`. The `--card-border-radius` custom
|
|
95
|
-
* property still overrides it, for radii off the token scale.
|
|
96
|
-
*/
|
|
97
|
-
export class CardComponent {
|
|
98
|
-
constructor(el, renderer, cdr) {
|
|
99
|
-
this.el = el;
|
|
100
|
-
this.renderer = renderer;
|
|
101
|
-
this.cdr = cdr;
|
|
102
|
-
/** Border and shadow treatment of the surface. */
|
|
103
|
-
this.variant = 'outlined';
|
|
104
|
-
/** Neutral background elevation, matching the `--surface-light-*` tokens. */
|
|
105
|
-
this.surface = '0';
|
|
106
|
-
/** Semantic background tint. Overrides `surface` when not `neutral`. */
|
|
107
|
-
this.tone = 'neutral';
|
|
108
|
-
/** Stacking direction of the projected parts. */
|
|
109
|
-
this.orientation = 'vertical';
|
|
110
|
-
/**
|
|
111
|
-
* Padding applied to the card itself. Leave as `none` when composing with
|
|
112
|
-
* `riv-card-header` / `riv-card-content` / `riv-card-actions`, which own
|
|
113
|
-
* their own padding.
|
|
114
|
-
*/
|
|
115
|
-
this.padding = 'none';
|
|
116
|
-
/** Corner radius, matching the `--border-radius-*` tokens. */
|
|
117
|
-
this.radius = 'medium';
|
|
118
|
-
/**
|
|
119
|
-
* Makes the whole surface activate, emitting `cardClick`. Adds the hover
|
|
120
|
-
* affordance and keyboard support.
|
|
121
|
-
*/
|
|
122
|
-
this.clickable = false;
|
|
123
|
-
/**
|
|
124
|
-
* Marks the card as the current selection, giving it a distinct border and
|
|
125
|
-
* shadow. Composes with any `tone`, so a selected danger card keeps its
|
|
126
|
-
* tint. Announced to assistive technology through `aria-current`.
|
|
127
|
-
*/
|
|
128
|
-
this.selected = false;
|
|
129
|
-
/**
|
|
130
|
-
* Mutes the surface, suppresses hover feedback, and disables the click
|
|
131
|
-
* target. Presentational for everything else — disable the card's own
|
|
132
|
-
* controls too.
|
|
133
|
-
*/
|
|
134
|
-
this.disabled = false;
|
|
135
|
-
/** Emitted when a clickable card is activated by pointer or keyboard. */
|
|
136
|
-
this.cardClick = new EventEmitter();
|
|
137
|
-
/**
|
|
138
|
-
* Names the click target from the card's content. Generated only when the
|
|
139
|
-
* consumer has not set their own id.
|
|
140
|
-
*/
|
|
141
|
-
this.cardId = '';
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Id an expandable header's toggle points `aria-controls` at, worn by a
|
|
145
|
-
* projected `riv-card-content`.
|
|
146
|
-
*/
|
|
147
|
-
get regionId() {
|
|
148
|
-
return this.expandRegionId;
|
|
149
|
-
}
|
|
150
|
-
ngOnInit() {
|
|
151
|
-
this.cardId = this.el.nativeElement.id || uniqueId('riv-card-');
|
|
152
|
-
if (!this.el.nativeElement.id) {
|
|
153
|
-
this.renderer.setAttribute(this.el.nativeElement, 'id', this.cardId);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Registers the header's title as the click target's accessible name, which
|
|
158
|
-
* keeps the announcement to the card's subject instead of every word on the
|
|
159
|
-
* surface. Called by `riv-card-header`; not part of the public API.
|
|
160
|
-
*/
|
|
161
|
-
setTitleId(id) {
|
|
162
|
-
this.titleId = id;
|
|
163
|
-
this.cdr.markForCheck();
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Gives up a title registered by `setTitleId`, so a header that is removed
|
|
167
|
-
* does not leave the click target naming itself against a detached element.
|
|
168
|
-
* Ignores ids that are no longer the one in use.
|
|
169
|
-
*/
|
|
170
|
-
clearTitleId(id) {
|
|
171
|
-
if (this.titleId === id) {
|
|
172
|
-
this.setTitleId(undefined);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Relays the region an expandable header controls to the projected
|
|
177
|
-
* `riv-card-content`, so neither side needs the consumer to wire an id.
|
|
178
|
-
* Called by `riv-card-header`; not part of the public API.
|
|
179
|
-
*/
|
|
180
|
-
setRegionId(id) {
|
|
181
|
-
this.expandRegionId = id;
|
|
182
|
-
this.cdr.markForCheck();
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Gives up a region registered by `setRegionId`. Ignores ids that are no
|
|
186
|
-
* longer the one in use.
|
|
187
|
-
*/
|
|
188
|
-
clearRegionId(id) {
|
|
189
|
-
if (this.expandRegionId === id) {
|
|
190
|
-
this.setRegionId(undefined);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Element whose text names the click target, unless `clickLabel` is set. The
|
|
195
|
-
* host id is read from the DOM rather than cached, so a bound `[id]` that
|
|
196
|
-
* changes is picked up on the card's next change detection.
|
|
197
|
-
*/
|
|
198
|
-
get labelledBy() {
|
|
199
|
-
if (this.clickLabel)
|
|
200
|
-
return null;
|
|
201
|
-
return this.titleId ?? (this.el.nativeElement.id || this.cardId);
|
|
202
|
-
}
|
|
203
|
-
/** Announces the current selection to assistive technology. */
|
|
204
|
-
get ariaCurrent() {
|
|
205
|
-
return this.selected ? 'true' : null;
|
|
206
|
-
}
|
|
207
|
-
get classes() {
|
|
208
|
-
return Object.entries({
|
|
209
|
-
[this.variant]: true,
|
|
210
|
-
[`surface-${this.surface}`]: true,
|
|
211
|
-
[`tone-${this.tone}`]: true,
|
|
212
|
-
[this.orientation]: true,
|
|
213
|
-
[`padding-${this.padding}`]: true,
|
|
214
|
-
[`radius-${this.radius}`]: true,
|
|
215
|
-
[`hover-depth-${this.hoverDepth ?? CardComponent.defaultHoverDepth(this)}`]: true,
|
|
216
|
-
clickable: this.clickable,
|
|
217
|
-
selected: this.selected,
|
|
218
|
-
disabled: this.disabled,
|
|
219
|
-
})
|
|
220
|
-
.filter(([_, v]) => v)
|
|
221
|
-
.map(([k]) => k)
|
|
222
|
-
.join(' ');
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
CardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CardComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
226
|
-
CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CardComponent, selector: "riv-card", inputs: { variant: "variant", surface: "surface", tone: "tone", orientation: "orientation", padding: "padding", radius: "radius", hoverDepth: "hoverDepth", clickable: "clickable", clickLabel: "clickLabel", selected: "selected", disabled: "disabled" }, outputs: { cardClick: "cardClick" }, host: { properties: { "attr.aria-current": "this.ariaCurrent", "class": "this.classes" } }, ngImport: i0, template: "<button\n *ngIf=\"clickable\"\n type=\"button\"\n class=\"click-target\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-label]=\"clickLabel\"\n [attr.aria-labelledby]=\"labelledBy\"\n (click)=\"cardClick.emit($event)\"\n></button>\n<ng-content></ng-content>\n", styles: [":host{position:relative;display:flex;min-width:0;overflow:hidden;color:var(--type-light-high-contrast);font:var(--body-medium)}:host.vertical{flex-direction:column}:host.horizontal{flex-direction:row}:host.outlined{border:var(--border-width) solid var(--border-light)}:host.dashed{border:var(--border-width) dashed var(--border-light)}:host.elevated{box-shadow:var(--depth-1)}:host.surface-0{background-color:var(--surface-light-0)}:host.surface-1{background-color:var(--surface-light-1)}:host.surface-2{background-color:var(--surface-light-2)}:host.tone-danger{background-color:var(--surface-light-danger)}:host.tone-caution{background-color:var(--surface-light-caution)}:host.tone-warning{background-color:var(--surface-light-warning)}:host.tone-safety{background-color:var(--surface-light-safety)}:host.tone-selected{background-color:var(--surface-light-selected)}:host.padding-small{padding:var(--size-small)}:host.padding-medium{padding:var(--size-medium)}:host.padding-large{padding:var(--size-large)}:host.padding-xxlarge{padding:var(--size-xxlarge)}:host.radius-small{border-radius:var(--card-border-radius, var(--border-radius-small))}:host.radius-medium{border-radius:var(--card-border-radius, var(--border-radius-medium))}:host.radius-large{border-radius:var(--card-border-radius, var(--border-radius-large))}:host.radius-xlarge{border-radius:var(--card-border-radius, var(--border-radius-xlarge))}:host:not(.hover-depth-none){transition:box-shadow var(--short-transition)}:host.padding-xlarge{padding:var(--size-xlarge)}:host.clickable{transition:box-shadow var(--short-transition)}:host.hover-depth-1:not(.disabled):hover{box-shadow:var(--depth-1)}:host.hover-depth-2:not(.disabled):hover{box-shadow:var(--depth-2)}:host.hover-depth-3:not(.disabled):hover{box-shadow:var(--depth-3)}:host.hover-depth-4:not(.disabled):hover{box-shadow:var(--depth-4)}.click-target{position:absolute;inset:0;z-index:var(--card-click-target-z-index);padding:0;border:none;background:none;cursor:pointer;transition:background-color var(--short-transition)}.click-target:not(:disabled):hover{background-color:var(--black-20)}.click-target:disabled{cursor:default}.click-target:focus-visible{outline:var(--border-width-large) solid var(--type-light-link);outline-offset:calc(-1 * var(--border-width-large))}:host.selected{border:var(--border-width) solid var(--baloo-50);box-shadow:var(--depth-2)}:host.disabled{background-color:var(--surface-light-1)}:host.outlined.disabled,:host.dashed.disabled{border-color:var(--border-light)}@media print{:host{break-inside:avoid}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
227
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CardComponent, decorators: [{
|
|
228
|
-
type: Component,
|
|
229
|
-
args: [{ selector: 'riv-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"clickable\"\n type=\"button\"\n class=\"click-target\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-label]=\"clickLabel\"\n [attr.aria-labelledby]=\"labelledBy\"\n (click)=\"cardClick.emit($event)\"\n></button>\n<ng-content></ng-content>\n", styles: [":host{position:relative;display:flex;min-width:0;overflow:hidden;color:var(--type-light-high-contrast);font:var(--body-medium)}:host.vertical{flex-direction:column}:host.horizontal{flex-direction:row}:host.outlined{border:var(--border-width) solid var(--border-light)}:host.dashed{border:var(--border-width) dashed var(--border-light)}:host.elevated{box-shadow:var(--depth-1)}:host.surface-0{background-color:var(--surface-light-0)}:host.surface-1{background-color:var(--surface-light-1)}:host.surface-2{background-color:var(--surface-light-2)}:host.tone-danger{background-color:var(--surface-light-danger)}:host.tone-caution{background-color:var(--surface-light-caution)}:host.tone-warning{background-color:var(--surface-light-warning)}:host.tone-safety{background-color:var(--surface-light-safety)}:host.tone-selected{background-color:var(--surface-light-selected)}:host.padding-small{padding:var(--size-small)}:host.padding-medium{padding:var(--size-medium)}:host.padding-large{padding:var(--size-large)}:host.padding-xxlarge{padding:var(--size-xxlarge)}:host.radius-small{border-radius:var(--card-border-radius, var(--border-radius-small))}:host.radius-medium{border-radius:var(--card-border-radius, var(--border-radius-medium))}:host.radius-large{border-radius:var(--card-border-radius, var(--border-radius-large))}:host.radius-xlarge{border-radius:var(--card-border-radius, var(--border-radius-xlarge))}:host:not(.hover-depth-none){transition:box-shadow var(--short-transition)}:host.padding-xlarge{padding:var(--size-xlarge)}:host.clickable{transition:box-shadow var(--short-transition)}:host.hover-depth-1:not(.disabled):hover{box-shadow:var(--depth-1)}:host.hover-depth-2:not(.disabled):hover{box-shadow:var(--depth-2)}:host.hover-depth-3:not(.disabled):hover{box-shadow:var(--depth-3)}:host.hover-depth-4:not(.disabled):hover{box-shadow:var(--depth-4)}.click-target{position:absolute;inset:0;z-index:var(--card-click-target-z-index);padding:0;border:none;background:none;cursor:pointer;transition:background-color var(--short-transition)}.click-target:not(:disabled):hover{background-color:var(--black-20)}.click-target:disabled{cursor:default}.click-target:focus-visible{outline:var(--border-width-large) solid var(--type-light-link);outline-offset:calc(-1 * var(--border-width-large))}:host.selected{border:var(--border-width) solid var(--baloo-50);box-shadow:var(--depth-2)}:host.disabled{background-color:var(--surface-light-1)}:host.outlined.disabled,:host.dashed.disabled{border-color:var(--border-light)}@media print{:host{break-inside:avoid}}\n"] }]
|
|
230
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { variant: [{
|
|
231
|
-
type: Input
|
|
232
|
-
}], surface: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], tone: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], orientation: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], padding: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], radius: [{
|
|
241
|
-
type: Input
|
|
242
|
-
}], hoverDepth: [{
|
|
243
|
-
type: Input
|
|
244
|
-
}], clickable: [{
|
|
245
|
-
type: Input
|
|
246
|
-
}], clickLabel: [{
|
|
247
|
-
type: Input
|
|
248
|
-
}], selected: [{
|
|
249
|
-
type: Input
|
|
250
|
-
}], disabled: [{
|
|
251
|
-
type: Input
|
|
252
|
-
}], cardClick: [{
|
|
253
|
-
type: Output
|
|
254
|
-
}], ariaCurrent: [{
|
|
255
|
-
type: HostBinding,
|
|
256
|
-
args: ['attr.aria-current']
|
|
257
|
-
}], classes: [{
|
|
258
|
-
type: HostBinding,
|
|
259
|
-
args: ['class']
|
|
260
|
-
}] } });
|
|
261
|
-
(function (CardComponent) {
|
|
262
|
-
CardComponent.Variants = ['outlined', 'elevated', 'flat', 'dashed'];
|
|
263
|
-
CardComponent.Surfaces = ['0', '1', '2'];
|
|
264
|
-
CardComponent.Tones = [
|
|
265
|
-
'neutral',
|
|
266
|
-
'danger',
|
|
267
|
-
'caution',
|
|
268
|
-
'warning',
|
|
269
|
-
'safety',
|
|
270
|
-
'selected',
|
|
271
|
-
];
|
|
272
|
-
CardComponent.Orientations = ['vertical', 'horizontal'];
|
|
273
|
-
/** Shared padding scale for the card and its sub-components. */
|
|
274
|
-
CardComponent.Paddings = [
|
|
275
|
-
'none',
|
|
276
|
-
'small',
|
|
277
|
-
'medium',
|
|
278
|
-
'large',
|
|
279
|
-
'xlarge',
|
|
280
|
-
'xxlarge',
|
|
281
|
-
];
|
|
282
|
-
CardComponent.Radii = ['small', 'medium', 'large', 'xlarge'];
|
|
283
|
-
CardComponent.Depths = ['none', '1', '2', '3', '4'];
|
|
284
|
-
function defaultHoverDepth({ clickable, variant, }) {
|
|
285
|
-
if (!clickable)
|
|
286
|
-
return 'none';
|
|
287
|
-
return variant === 'elevated' ? '2' : '1';
|
|
288
|
-
}
|
|
289
|
-
CardComponent.defaultHoverDepth = defaultHoverDepth;
|
|
290
|
-
})(CardComponent || (CardComponent = {}));
|
|
291
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9sYXlvdXQvY2FyZC9jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL2xheW91dC9jYXJkL2NhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7OztBQUVsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJGRztBQU9ILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ21CLEVBQTJCLEVBQzNCLFFBQW1CLEVBQ25CLEdBQXNCO1FBRnRCLE9BQUUsR0FBRixFQUFFLENBQXlCO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFHekMsa0RBQWtEO1FBRWxELFlBQU8sR0FBMEIsVUFBVSxDQUFDO1FBRTVDLDZFQUE2RTtRQUU3RSxZQUFPLEdBQTBCLEdBQUcsQ0FBQztRQUVyQyx3RUFBd0U7UUFFeEUsU0FBSSxHQUF1QixTQUFTLENBQUM7UUFFckMsaURBQWlEO1FBRWpELGdCQUFXLEdBQThCLFVBQVUsQ0FBQztRQUVwRDs7OztXQUlHO1FBRUgsWUFBTyxHQUEwQixNQUFNLENBQUM7UUFFeEMsOERBQThEO1FBRTlELFdBQU0sR0FBeUIsUUFBUSxDQUFDO1FBV3hDOzs7V0FHRztRQUVILGNBQVMsR0FBWSxLQUFLLENBQUM7UUFVM0I7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QUFZLENBQVUsQ0FBQztJQUdoRSxnRUFBZ0U7SUFDbkQsc0JBQVEsR0FBRztRQUN0QixNQUFNO1FBQ04sT0FBTztRQUNQLFFBQVE7UUFDUixPQUFPO1FBQ1AsUUFBUTtRQUNSLFNBQVM7S0FDRCxDQUFDO0lBR0UsbUJBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBVSxDQUFDO0lBR3hELG9CQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFVLENBQUM7SUFHNUQsU0FBZ0IsaUJBQWlCLENBQUMsRUFDaEMsU0FBUyxFQUNULE9BQU8sR0FDc0M7UUFDN0MsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUM5QixPQUFPLE9BQU8sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzVDLENBQUM7SUFOZSwrQkFBaUIsb0JBTWhDLENBQUE7QUFDSCxDQUFDLEVBNUNnQixhQUFhLEtBQWIsYUFBYSxRQTRDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIFN1cmZhY2UgY29udGFpbmVyIHRoYXQgZ3JvdXBzIHJlbGF0ZWQgY29udGVudCBpbnRvIGEgc2luZ2xlIHNjYW5uYWJsZSB1bml0LlxuICpcbiAqIEEgY2FyZCBpcyBjb21wb3NlZCwgbm90IGNvbmZpZ3VyZWQ6IHByb2plY3QgdGhlIHBhcnRzIHlvdSBuZWVkLCBpbiB0aGUgb3JkZXJcbiAqIHlvdSBuZWVkIHRoZW0uIEV2ZXJ5IHBhcnQgaXMgb3B0aW9uYWwsIHNvIGEgYmFyZSBgcml2LWNhcmRgIGlzIGEgdmFsaWRcbiAqIHN1cmZhY2Ugb24gaXRzIG93bi5cbiAqXG4gKiAtIGByaXYtY2FyZC1tZWRpYWAg4oCUIGxlYWRpbmcgaW1hZ2Ugb3IgdmlkZW9cbiAqIC0gYHJpdi1jYXJkLWhlYWRlcmAg4oCUIGhlYWRpbmcsIHN1YmhlYWRpbmcsIGxlYWRpbmcgYWRvcm5tZW50LCBhY3Rpb25zXG4gKiAtIGByaXYtY2FyZC1jb250ZW50YCDigJQgYm9keVxuICogLSBgcml2LWNhcmQtYWN0aW9uc2Ag4oCUIHRyYWlsaW5nIGNvbnRyb2wgcm93XG4gKlxuICogYGBgaHRtbFxuICogPHJpdi1jYXJkPlxuICogICA8cml2LWNhcmQtaGVhZGVyIFtoZWFkaW5nXT1cIndvcmtib29rLm5hbWVcIiBbc3ViaGVhZGluZ109XCJwYXllck5hbWVcIj5cbiAqICAgICA8cml2LW1lbnUgYWN0aW9ucz4uLi48L3Jpdi1tZW51PlxuICogICA8L3Jpdi1jYXJkLWhlYWRlcj5cbiAqICAgPHJpdi1jYXJkLWNvbnRlbnQ+XG4gKiAgICAgTGFzdCBlZGl0OiB7eyB3b3JrYm9vay5tb2RpZmllZCB8IHJpdkRhdGUgfX1cbiAqICAgPC9yaXYtY2FyZC1jb250ZW50PlxuICogPC9yaXYtY2FyZD5cbiAqIGBgYFxuICpcbiAqICMjIE1ha2luZyB0aGUgY2FyZCBhY3RpdmF0ZVxuICpcbiAqIFNldCBgY2xpY2thYmxlYCBhbmQgaGFuZGxlIGBjYXJkQ2xpY2tgIHRvIG1ha2UgdGhlIHdob2xlIHN1cmZhY2UgYWN0IG9uIGFcbiAqIGNsaWNrOlxuICpcbiAqIGBgYGh0bWxcbiAqIDxyaXYtY2FyZCBbY2xpY2thYmxlXT1cInRydWVcIiAoY2FyZENsaWNrKT1cImdvVG9Xb3JrYm9vaygpXCI+XG4gKiBgYGBcbiAqXG4gKiBUaGUgY2FyZCByZW5kZXJzIGl0cyBvd24gZnVsbC1zdXJmYWNlIGJ1dHRvbiBmb3IgdGhpcywgc28gYWN0aXZhdGlvbiB3b3Jrc1xuICogd2l0aCBhIHBvaW50ZXIsIHdpdGggRW50ZXIsIGFuZCB3aXRoIFNwYWNlLCBhbmQgdGhlIGZvY3VzIHJpbmcgdHJhY2VzIHRoZVxuICogd2hvbGUgY2FyZC4gQ29udHJvbHMgaW4gYHJpdi1jYXJkLWhlYWRlcmAncyBgW2FjdGlvbnNdYCBzbG90IGFuZCBpblxuICogYHJpdi1jYXJkLWFjdGlvbnNgIHNpdCBhYm92ZSBpdCBhbmQgc3RheSBpbmRlcGVuZGVudGx5IGNsaWNrYWJsZSDigJQgYSBtZW51XG4gKiBpbnNpZGUgYSBjbGlja2FibGUgY2FyZCBuZWVkcyBubyBgc3RvcFByb3BhZ2F0aW9uYC4gT3RoZXIgaW50ZXJhY3RpdmUgY29udGVudFxuICogcHJvamVjdGVkIGludG8gdGhlIGNhcmQgbXVzdCByYWlzZSBpdHNlbGYgd2l0aCBgcG9zaXRpb246IHJlbGF0aXZlYCBhbmRcbiAqIGB6LWluZGV4OiB2YXIoLS1jYXJkLXJhaXNlZC16LWluZGV4KWAuXG4gKlxuICogV2hlbiB0aGUgY2FyZCdzIGFjdGlvbiBpcyByZWFsbHkgYSBuYXZpZ2F0aW9uLCBwcmVmZXIgYFtyaXYtY2FyZC1saW5rXWAgb24gYW5cbiAqIGA8YT5gIGluc3RlYWQ6IHRoYXQga2VlcHMgdGhlIFVSTCwgbWlkZGxlLWNsaWNrLCBhbmQgXCJvcGVuIGluIG5ldyB0YWJcIi5cbiAqXG4gKiAjIyBTZWxlY3Rpb25cbiAqXG4gKiBTZXQgYHNlbGVjdGVkYCB0byBtYXJrIHRoZSBjYXJkIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBsb29raW5nIGF0LiBJdCBnaXZlc1xuICogdGhlIHN1cmZhY2UgYSBkaXN0aW5jdCBib3JkZXIgYW5kIHNoYWRvdywgYW5kIGFubm91bmNlcyB0aHJvdWdoXG4gKiBgYXJpYS1jdXJyZW50YCBzbyB0aGUgc3RhdGUgaXMgbm90IGNvbnZleWVkIGJ5IGNvbG91ciBhbG9uZS5cbiAqXG4gKiBgYGBodG1sXG4gKiA8cml2LWNhcmQgW3NlbGVjdGVkXT1cIndvcmtib29rLmlkID09PSBhY3RpdmVJZFwiPlxuICogYGBgXG4gKlxuICogU2VsZWN0aW9uIGlzIHNlcGFyYXRlIGZyb20gYHRvbmVgLCBzbyBpdCBjb21wb3NlcyB3aXRoIGFueSB0aW50IOKAlCBhIHNlbGVjdGVkXG4gKiBgZGFuZ2VyYCBjYXJkIGtlZXBzIGl0cyBkYW5nZXIgYmFja2dyb3VuZC5cbiAqXG4gKiAjIyBNYWtpbmcgdGhlIGNhcmQgZXhwYW5kIGFuZCBjb2xsYXBzZVxuICpcbiAqIFNldCBgZXhwYW5kYWJsZWAgb24gYHJpdi1jYXJkLWhlYWRlcmAgYW5kIHJlbmRlciB0aGUgYm9keSBvbmx5IHdoaWxlIGl0IGlzXG4gKiBvcGVuLiBUaGUgaGVhZGVyIG93bnMgdGhlIHRvZ2dsZSBhZmZvcmRhbmNlIGFuZCBpdHMgYWNjZXNzaWJpbGl0eTsgdGhlXG4gKiBjb25zdW1lciBvd25zIHRoZSBzdGF0ZTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8cml2LWNhcmQ+XG4gKiAgIDxyaXYtY2FyZC1oZWFkZXJcbiAqICAgICBbaGVhZGluZ109XCInUGF0aWVudCBpbmZvJ1wiXG4gKiAgICAgW2V4cGFuZGFibGVdPVwidHJ1ZVwiXG4gKiAgICAgWyhleHBhbmRlZCldPVwib3BlblwiXG4gKiAgID48L3Jpdi1jYXJkLWhlYWRlcj5cbiAqICAgPHJpdi1jYXJkLWNvbnRlbnQgKm5nSWY9XCJvcGVuXCI+Li4uPC9yaXYtY2FyZC1jb250ZW50PlxuICogPC9yaXYtY2FyZD5cbiAqIGBgYFxuICpcbiAqIFRoZSBjYXJkIHJlbGF5cyB0aGUgcmVnaW9uIGlkIGZyb20gdGhlIGhlYWRlciB0byB0aGUgY29udGVudCwgc28gdGhlIHRvZ2dsZSdzXG4gKiBgYXJpYS1jb250cm9sc2AgbmFtZXMgdGhlIGJvZHkgd2l0aCBubyBpZHMgd2lyZWQgYnkgaGFuZC5cbiAqXG4gKiBEbyBub3QgY29tYmluZSBgZXhwYW5kYWJsZWAgd2l0aCBgY2xpY2thYmxlYDogYm90aCBjbGFpbSB0aGUgc2FtZSBjbGljaywgYW5kXG4gKiBhIGNhcmQgdGhhdCBvcGVucyBhcyB3ZWxsIGFzIGV4cGFuZHMgbGVhdmVzIHRoZSB1c2VyIG5vIHdheSB0byB0ZWxsIHdoaWNoIG9uZVxuICogdGhleSBhcmUgYWJvdXQgdG8gZ2V0LlxuICpcbiAqICMjIE5vdGVzXG4gKlxuICogV2hlbiBwcm9qZWN0aW5nIHJhdyBjb250ZW50IHdpdGggbm8gc3ViLWNvbXBvbmVudHMsIHNldCBgcGFkZGluZ2Agc28gdGhlXG4gKiBjb250ZW50IGlzIG5vdCBmbHVzaCBhZ2FpbnN0IHRoZSBib3JkZXIuXG4gKlxuICogVGhlIGNhcmQgY2xpcHMgaXRzIG93biBjb250ZW50IHNvIG1lZGlhIGFuZCBmaWxsZWQgaGVhZGVyL2FjdGlvbiByb3dzIGZvbGxvd1xuICogaXRzIGNvcm5lcnMuIFBvcHVwcyAoYHJpdi1tZW51YCwgYHJpdlRvb2x0aXBgKSByZW5kZXIgdGhyb3VnaCB0aGUgb3ZlcmxheVxuICogb3V0bGV0LCBzbyB0aGV5IGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhhdCBjbGlwcGluZy5cbiAqXG4gKiBTZXQgdGhlIGNvcm5lciByYWRpdXMgd2l0aCBgcmFkaXVzYC4gVGhlIGAtLWNhcmQtYm9yZGVyLXJhZGl1c2AgY3VzdG9tXG4gKiBwcm9wZXJ0eSBzdGlsbCBvdmVycmlkZXMgaXQsIGZvciByYWRpaSBvZmYgdGhlIHRva2VuIHNjYWxlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIC8qKiBCb3JkZXIgYW5kIHNoYWRvdyB0cmVhdG1lbnQgb2YgdGhlIHN1cmZhY2UuICovXG4gIEBJbnB1dCgpXG4gIHZhcmlhbnQ6IENhcmRDb21wb25lbnQuVmFyaWFudCA9ICdvdXRsaW5lZCc7XG5cbiAgLyoqIE5ldXRyYWwgYmFja2dyb3VuZCBlbGV2YXRpb24sIG1hdGNoaW5nIHRoZSBgLS1zdXJmYWNlLWxpZ2h0LSpgIHRva2Vucy4gKi9cbiAgQElucHV0KClcbiAgc3VyZmFjZTogQ2FyZENvbXBvbmVudC5TdXJmYWNlID0gJzAnO1xuXG4gIC8qKiBTZW1hbnRpYyBiYWNrZ3JvdW5kIHRpbnQuIE92ZXJyaWRlcyBgc3VyZmFjZWAgd2hlbiBub3QgYG5ldXRyYWxgLiAqL1xuICBASW5wdXQoKVxuICB0b25lOiBDYXJkQ29tcG9uZW50LlRvbmUgPSAnbmV1dHJhbCc7XG5cbiAgLyoqIFN0YWNraW5nIGRpcmVjdGlvbiBvZiB0aGUgcHJvamVjdGVkIHBhcnRzLiAqL1xuICBASW5wdXQoKVxuICBvcmllbnRhdGlvbjogQ2FyZENvbXBvbmVudC5PcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCc7XG5cbiAgLyoqXG4gICAqIFBhZGRpbmcgYXBwbGllZCB0byB0aGUgY2FyZCBpdHNlbGYuIExlYXZlIGFzIGBub25lYCB3aGVuIGNvbXBvc2luZyB3aXRoXG4gICAqIGByaXYtY2FyZC1oZWFkZXJgIC8gYHJpdi1jYXJkLWNvbnRlbnRgIC8gYHJpdi1jYXJkLWFjdGlvbnNgLCB3aGljaCBvd25cbiAgICogdGhlaXIgb3duIHBhZGRpbmcuXG4gICAqL1xuICBASW5wdXQoKVxuICBwYWRkaW5nOiBDYXJkQ29tcG9uZW50LlBhZGRpbmcgPSAnbm9uZSc7XG5cbiAgLyoqIENvcm5lciByYWRpdXMsIG1hdGNoaW5nIHRoZSBgLS1ib3JkZXItcmFkaXVzLSpgIHRva2Vucy4gKi9cbiAgQElucHV0KClcbiAgcmFkaXVzOiBDYXJkQ29tcG9uZW50LlJhZGl1cyA9ICdtZWRpdW0nO1xuXG4gIC8qKlxuICAgKiBTaGFkb3cgcmFpc2VkIG9uIGhvdmVyLCBtYXRjaGluZyB0aGUgYC0tZGVwdGgtKmAgdG9rZW5zLiBEZWZhdWx0cyB0byBgMWBcbiAgICogZm9yIGEgY2xpY2thYmxlIGNhcmQsIGAyYCBmb3IgYSBjbGlja2FibGUgZWxldmF0ZWQgY2FyZCwgYW5kIGBub25lYFxuICAgKiBvdGhlcndpc2UuIEEgaG92ZXIgc2hhZG93IHJlYWRzIGFzIGNsaWNrYWJsZSwgc28gc2V0IGl0IG9uIGEgY2FyZCB0aGF0XG4gICAqIGlzIG5vdCBgY2xpY2thYmxlYCBvbmx5IHdoZW4gdGhlIGNhcmQncyBvd24gY29udHJvbHMgbWFrZSBpdCBpbnRlcmFjdGl2ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGhvdmVyRGVwdGg/OiBDYXJkQ29tcG9uZW50LkRlcHRoO1xuXG4gIC8qKlxuICAgKiBNYWtlcyB0aGUgd2hvbGUgc3VyZmFjZSBhY3RpdmF0ZSwgZW1pdHRpbmcgYGNhcmRDbGlja2AuIEFkZHMgdGhlIGhvdmVyXG4gICAqIGFmZm9yZGFuY2UgYW5kIGtleWJvYXJkIHN1cHBvcnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBjbGlja2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQWNjZXNzaWJsZSBuYW1lIGZvciB0aGUgY2FyZCdzIGFjdGlvbi4gRGVmYXVsdHMgdG8gdGhlIGByaXYtY2FyZC1oZWFkZXJgXG4gICAqIHRpdGxlLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGNhcmQncyB3aG9sZSB0ZXh0IGNvbnRlbnQgd2hlbiB0aGVyZSBpcyBub1xuICAgKiBoZWFkZXIuIFNldCB0aGlzIHdoZW4gbmVpdGhlciByZWFkcyB3ZWxsIG9uIGl0cyBvd24uXG4gICAqL1xuICBASW5wdXQoKVxuICBjbGlja0xhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXJrcyB0aGUgY2FyZCBhcyB0aGUgY3VycmVudCBzZWxlY3Rpb24sIGdpdmluZyBpdCBhIGRpc3RpbmN0IGJvcmRlciBhbmRcbiAgICogc2hhZG93LiBDb21wb3NlcyB3aXRoIGFueSBgdG9uZWAsIHNvIGEgc2VsZWN0ZWQgZGFuZ2VyIGNhcmQga2VlcHMgaXRzXG4gICAqIHRpbnQuIEFubm91bmNlZCB0byBhc3Npc3RpdmUgdGVjaG5vbG9neSB0aHJvdWdoIGBhcmlhLWN1cnJlbnRgLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogTXV0ZXMgdGhlIHN1cmZhY2UsIHN1cHByZXNzZXMgaG92ZXIgZmVlZGJhY2ssIGFuZCBkaXNhYmxlcyB0aGUgY2xpY2tcbiAgICogdGFyZ2V0LiBQcmVzZW50YXRpb25hbCBmb3IgZXZlcnl0aGluZyBlbHNlIOKAlCBkaXNhYmxlIHRoZSBjYXJkJ3Mgb3duXG4gICAqIGNvbnRyb2xzIHRvby5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBhIGNsaWNrYWJsZSBjYXJkIGlzIGFjdGl2YXRlZCBieSBwb2ludGVyIG9yIGtleWJvYXJkLiAqL1xuICBAT3V0cHV0KClcbiAgY2FyZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBOYW1lcyB0aGUgY2xpY2sgdGFyZ2V0IGZyb20gdGhlIGNhcmQncyBjb250ZW50LiBHZW5lcmF0ZWQgb25seSB3aGVuIHRoZVxuICAgKiBjb25zdW1lciBoYXMgbm90IHNldCB0aGVpciBvd24gaWQuXG4gICAqL1xuICBwcml2YXRlIGNhcmRJZDogc3RyaW5nID0gJyc7XG5cbiAgLyoqIFNldCBieSBhIHByb2plY3RlZCBgcml2LWNhcmQtaGVhZGVyYCB0aGF0IGhhcyBhIHRpdGxlIHRvIG5hbWUgYWdhaW5zdC4gKi9cbiAgcHJpdmF0ZSB0aXRsZUlkPzogc3RyaW5nO1xuXG4gIC8qKiBTZXQgYnkgYSBwcm9qZWN0ZWQgYHJpdi1jYXJkLWhlYWRlcmAgdGhhdCBpcyBleHBhbmRhYmxlLiAqL1xuICBwcml2YXRlIGV4cGFuZFJlZ2lvbklkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZCBhbiBleHBhbmRhYmxlIGhlYWRlcidzIHRvZ2dsZSBwb2ludHMgYGFyaWEtY29udHJvbHNgIGF0LCB3b3JuIGJ5IGFcbiAgICogcHJvamVjdGVkIGByaXYtY2FyZC1jb250ZW50YC5cbiAgICovXG4gIGdldCByZWdpb25JZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZFJlZ2lvbklkO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jYXJkSWQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaWQgfHwgdW5pcXVlSWQoJ3Jpdi1jYXJkLScpO1xuICAgIGlmICghdGhpcy5lbC5uYXRpdmVFbGVtZW50LmlkKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdpZCcsIHRoaXMuY2FyZElkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBoZWFkZXIncyB0aXRsZSBhcyB0aGUgY2xpY2sgdGFyZ2V0J3MgYWNjZXNzaWJsZSBuYW1lLCB3aGljaFxuICAgKiBrZWVwcyB0aGUgYW5ub3VuY2VtZW50IHRvIHRoZSBjYXJkJ3Mgc3ViamVjdCBpbnN0ZWFkIG9mIGV2ZXJ5IHdvcmQgb24gdGhlXG4gICAqIHN1cmZhY2UuIENhbGxlZCBieSBgcml2LWNhcmQtaGVhZGVyYDsgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuXG4gICAqL1xuICBzZXRUaXRsZUlkKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnRpdGxlSWQgPSBpZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlcyB1cCBhIHRpdGxlIHJlZ2lzdGVyZWQgYnkgYHNldFRpdGxlSWRgLCBzbyBhIGhlYWRlciB0aGF0IGlzIHJlbW92ZWRcbiAgICogZG9lcyBub3QgbGVhdmUgdGhlIGNsaWNrIHRhcmdldCBuYW1pbmcgaXRzZWxmIGFnYWluc3QgYSBkZXRhY2hlZCBlbGVtZW50LlxuICAgKiBJZ25vcmVzIGlkcyB0aGF0IGFyZSBubyBsb25nZXIgdGhlIG9uZSBpbiB1c2UuXG4gICAqL1xuICBjbGVhclRpdGxlSWQoaWQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnRpdGxlSWQgPT09IGlkKSB7XG4gICAgICB0aGlzLnNldFRpdGxlSWQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVsYXlzIHRoZSByZWdpb24gYW4gZXhwYW5kYWJsZSBoZWFkZXIgY29udHJvbHMgdG8gdGhlIHByb2plY3RlZFxuICAgKiBgcml2LWNhcmQtY29udGVudGAsIHNvIG5laXRoZXIgc2lkZSBuZWVkcyB0aGUgY29uc3VtZXIgdG8gd2lyZSBhbiBpZC5cbiAgICogQ2FsbGVkIGJ5IGByaXYtY2FyZC1oZWFkZXJgOyBub3QgcGFydCBvZiB0aGUgcHVibGljIEFQSS5cbiAgICovXG4gIHNldFJlZ2lvbklkKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmV4cGFuZFJlZ2lvbklkID0gaWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZXMgdXAgYSByZWdpb24gcmVnaXN0ZXJlZCBieSBgc2V0UmVnaW9uSWRgLiBJZ25vcmVzIGlkcyB0aGF0IGFyZSBub1xuICAgKiBsb25nZXIgdGhlIG9uZSBpbiB1c2UuXG4gICAqL1xuICBjbGVhclJlZ2lvbklkKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5leHBhbmRSZWdpb25JZCA9PT0gaWQpIHtcbiAgICAgIHRoaXMuc2V0UmVnaW9uSWQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRWxlbWVudCB3aG9zZSB0ZXh0IG5hbWVzIHRoZSBjbGljayB0YXJnZXQsIHVubGVzcyBgY2xpY2tMYWJlbGAgaXMgc2V0LiBUaGVcbiAgICogaG9zdCBpZCBpcyByZWFkIGZyb20gdGhlIERPTSByYXRoZXIgdGhhbiBjYWNoZWQsIHNvIGEgYm91bmQgYFtpZF1gIHRoYXRcbiAgICogY2hhbmdlcyBpcyBwaWNrZWQgdXAgb24gdGhlIGNhcmQncyBuZXh0IGNoYW5nZSBkZXRlY3Rpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGxhYmVsbGVkQnkoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuY2xpY2tMYWJlbCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMudGl0bGVJZCA/PyAodGhpcy5lbC5uYXRpdmVFbGVtZW50LmlkIHx8IHRoaXMuY2FyZElkKTtcbiAgfVxuXG4gIC8qKiBBbm5vdW5jZXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHRvIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LiAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1jdXJyZW50JylcbiAgZ2V0IGFyaWFDdXJyZW50KCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkID8gJ3RydWUnIDogbnVsbDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgY2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh7XG4gICAgICBbdGhpcy52YXJpYW50XTogdHJ1ZSxcbiAgICAgIFtgc3VyZmFjZS0ke3RoaXMuc3VyZmFjZX1gXTogdHJ1ZSxcbiAgICAgIFtgdG9uZS0ke3RoaXMudG9uZX1gXTogdHJ1ZSxcbiAgICAgIFt0aGlzLm9yaWVudGF0aW9uXTogdHJ1ZSxcbiAgICAgIFtgcGFkZGluZy0ke3RoaXMucGFkZGluZ31gXTogdHJ1ZSxcbiAgICAgIFtgcmFkaXVzLSR7dGhpcy5yYWRpdXN9YF06IHRydWUsXG4gICAgICBbYGhvdmVyLWRlcHRoLSR7XG4gICAgICAgIHRoaXMuaG92ZXJEZXB0aCA/PyBDYXJkQ29tcG9uZW50LmRlZmF1bHRIb3ZlckRlcHRoKHRoaXMpXG4gICAgICB9YF06IHRydWUsXG4gICAgICBjbGlja2FibGU6IHRoaXMuY2xpY2thYmxlLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICB9KVxuICAgICAgLmZpbHRlcigoW18sIHZdKSA9PiB2KVxuICAgICAgLm1hcCgoW2tdKSA9PiBrKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIENhcmRDb21wb25lbnQge1xuICBleHBvcnQgY29uc3QgVmFyaWFudHMgPSBbJ291dGxpbmVkJywgJ2VsZXZhdGVkJywgJ2ZsYXQnLCAnZGFzaGVkJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFZhcmlhbnQgPSAodHlwZW9mIFZhcmlhbnRzKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBTdXJmYWNlcyA9IFsnMCcsICcxJywgJzInXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgU3VyZmFjZSA9ICh0eXBlb2YgU3VyZmFjZXMpW251bWJlcl07XG5cbiAgZXhwb3J0IGNvbnN0IFRvbmVzID0gW1xuICAgICduZXV0cmFsJyxcbiAgICAnZGFuZ2VyJyxcbiAgICAnY2F1dGlvbicsXG4gICAgJ3dhcm5pbmcnLFxuICAgICdzYWZldHknLFxuICAgICdzZWxlY3RlZCcsXG4gIF0gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFRvbmUgPSAodHlwZW9mIFRvbmVzKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBPcmllbnRhdGlvbnMgPSBbJ3ZlcnRpY2FsJywgJ2hvcml6b250YWwnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgT3JpZW50YXRpb24gPSAodHlwZW9mIE9yaWVudGF0aW9ucylbbnVtYmVyXTtcblxuICAvKiogU2hhcmVkIHBhZGRpbmcgc2NhbGUgZm9yIHRoZSBjYXJkIGFuZCBpdHMgc3ViLWNvbXBvbmVudHMuICovXG4gIGV4cG9ydCBjb25zdCBQYWRkaW5ncyA9IFtcbiAgICAnbm9uZScsXG4gICAgJ3NtYWxsJyxcbiAgICAnbWVkaXVtJyxcbiAgICAnbGFyZ2UnLFxuICAgICd4bGFyZ2UnLFxuICAgICd4eGxhcmdlJyxcbiAgXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgUGFkZGluZyA9ICh0eXBlb2YgUGFkZGluZ3MpW251bWJlcl07XG5cbiAgZXhwb3J0IGNvbnN0IFJhZGlpID0gWydzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnLCAneGxhcmdlJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFJhZGl1cyA9ICh0eXBlb2YgUmFkaWkpW251bWJlcl07XG5cbiAgZXhwb3J0IGNvbnN0IERlcHRocyA9IFsnbm9uZScsICcxJywgJzInLCAnMycsICc0J10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIERlcHRoID0gKHR5cGVvZiBEZXB0aHMpW251bWJlcl07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRIb3ZlckRlcHRoKHtcbiAgICBjbGlja2FibGUsXG4gICAgdmFyaWFudCxcbiAgfTogUGljazxDYXJkQ29tcG9uZW50LCAnY2xpY2thYmxlJyB8ICd2YXJpYW50Jz4pOiBEZXB0aCB7XG4gICAgaWYgKCFjbGlja2FibGUpIHJldHVybiAnbm9uZSc7XG4gICAgcmV0dXJuIHZhcmlhbnQgPT09ICdlbGV2YXRlZCcgPyAnMicgOiAnMSc7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgKm5nSWY9XCJjbGlja2FibGVcIlxuICB0eXBlPVwiYnV0dG9uXCJcbiAgY2xhc3M9XCJjbGljay10YXJnZXRcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkID8gJ3RydWUnIDogbnVsbFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiY2xpY2tMYWJlbFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJsYWJlbGxlZEJ5XCJcbiAgKGNsaWNrKT1cImNhcmRDbGljay5lbWl0KCRldmVudClcIlxuPjwvYnV0dG9uPlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
|