@rivet-health/design-system 40.44.4 → 41.0.0
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/fesm2022/rivet-health-design-system.mjs +23103 -18810
- package/fesm2022/rivet-health-design-system.mjs.map +1 -1
- package/package.json +8 -9
- package/types/rivet-health-design-system.d.ts +6566 -0
- package/esm2022/lib/accessibility/sr-only/sr-only.component.mjs +0 -18
- package/esm2022/lib/download/download.service.mjs +0 -47
- package/esm2022/lib/format/pipes/common.mjs +0 -24
- package/esm2022/lib/format/pipes/date.pipe.mjs +0 -20
- package/esm2022/lib/format/pipes/days.pipe.mjs +0 -20
- package/esm2022/lib/format/pipes/dollars.pipe.mjs +0 -19
- package/esm2022/lib/format/pipes/number.pipe.mjs +0 -19
- package/esm2022/lib/format/pipes/percentage.pipe.mjs +0 -19
- package/esm2022/lib/format/pipes/sentence-case.pipe.mjs +0 -61
- package/esm2022/lib/format/pipes/small-currency.pipe.mjs +0 -24
- package/esm2022/lib/format/pipes/small-number.pipe.mjs +0 -29
- package/esm2022/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +0 -62
- package/esm2022/lib/format/truncate/truncate.component.mjs +0 -51
- package/esm2022/lib/icon/dom-cache.mjs +0 -32
- package/esm2022/lib/icon/icon.component.mjs +0 -86
- package/esm2022/lib/icon/icons.mjs +0 -271
- package/esm2022/lib/input/alphabetic-field/alphabetic-field.component.mjs +0 -42
- package/esm2022/lib/input/auto-focus/auto-focus.directive.mjs +0 -48
- package/esm2022/lib/input/button/button.component.mjs +0 -139
- package/esm2022/lib/input/button-group/button-group.component.mjs +0 -39
- package/esm2022/lib/input/calendar/calendar.component.mjs +0 -318
- package/esm2022/lib/input/card-checkbox/card-checkbox.component.mjs +0 -13
- package/esm2022/lib/input/checkbox/checkbox.component.mjs +0 -84
- package/esm2022/lib/input/currency-field/currency-field.component.mjs +0 -26
- package/esm2022/lib/input/date/date.component.mjs +0 -279
- package/esm2022/lib/input/date-range/date-range.component.mjs +0 -478
- package/esm2022/lib/input/filter-chip/filter-chip.component.mjs +0 -47
- package/esm2022/lib/input/filter-dropdown/filter-dropdown.component.mjs +0 -89
- package/esm2022/lib/input/input-label/input-label.component.mjs +0 -38
- package/esm2022/lib/input/mentions-input/mentions-input.component.mjs +0 -745
- package/esm2022/lib/input/number-field/number-field.component.mjs +0 -125
- package/esm2022/lib/input/percentage-field/percentage-field.component.mjs +0 -20
- package/esm2022/lib/input/phone-field/phone-field.component.mjs +0 -74
- package/esm2022/lib/input/radio/radio.component.mjs +0 -58
- package/esm2022/lib/input/search/search.component.mjs +0 -26
- package/esm2022/lib/input/search-select/search-select.component.mjs +0 -189
- package/esm2022/lib/input/select/select/select.component.mjs +0 -179
- package/esm2022/lib/input/select/select-node/select-node.component.mjs +0 -60
- package/esm2022/lib/input/select/state.mjs +0 -882
- package/esm2022/lib/input/simple-select/option-group.pipe.mjs +0 -19
- package/esm2022/lib/input/simple-select/simple-select.component.mjs +0 -178
- package/esm2022/lib/input/switch-checkbox/switch-checkbox.component.mjs +0 -33
- package/esm2022/lib/input/text-field/text-field.component.mjs +0 -115
- package/esm2022/lib/input/textarea-field/textarea-field.component.mjs +0 -21
- package/esm2022/lib/input/validation-message/validation-message.component.mjs +0 -17
- package/esm2022/lib/layout/card/card-actions.component.mjs +0 -72
- package/esm2022/lib/layout/card/card-content.component.mjs +0 -64
- package/esm2022/lib/layout/card/card-header.component.mjs +0 -201
- package/esm2022/lib/layout/card/card-link.component.mjs +0 -115
- package/esm2022/lib/layout/card/card-media.component.mjs +0 -70
- package/esm2022/lib/layout/card/card.component.mjs +0 -306
- package/esm2022/lib/layout/setting-row/setting-row.component.mjs +0 -111
- package/esm2022/lib/load/loading/loading.component.mjs +0 -43
- package/esm2022/lib/load/loading-cover/loading-cover.component.mjs +0 -25
- package/esm2022/lib/navigation/editable-heading/editable-heading.component.mjs +0 -243
- package/esm2022/lib/navigation/link/link.component.mjs +0 -48
- package/esm2022/lib/navigation/page-header/page-header.component.mjs +0 -68
- package/esm2022/lib/navigation/simple-tabs/simple-tab/simple-tab.component.mjs +0 -43
- package/esm2022/lib/navigation/simple-tabs/simple-tabs/simple-tabs.component.mjs +0 -11
- package/esm2022/lib/navigation/tabs/tab/tab.component.mjs +0 -16
- package/esm2022/lib/navigation/tabs/tabs/tabs.component.mjs +0 -11
- package/esm2022/lib/navigation/views/all-views-modal/all-views-modal.component.mjs +0 -43
- package/esm2022/lib/navigation/views/edit-view/edit-view.component.mjs +0 -118
- package/esm2022/lib/navigation/views/permission-picker/permission-picker.component.mjs +0 -151
- package/esm2022/lib/navigation/views/state.mjs +0 -456
- package/esm2022/lib/navigation/views/view-menu/view-menu.component.mjs +0 -30
- package/esm2022/lib/navigation/views/views/views.component.mjs +0 -90
- package/esm2022/lib/notification/badge/badge.component.mjs +0 -45
- package/esm2022/lib/notification/banner/banner-action.component.mjs +0 -48
- package/esm2022/lib/notification/banner/banner.component.mjs +0 -61
- package/esm2022/lib/notification/map-indicator/map-indicator.component.mjs +0 -50
- package/esm2022/lib/notification/map-indicator/map-indicators.mjs +0 -15
- package/esm2022/lib/notification/notification-badge/notification-badge.component.mjs +0 -26
- package/esm2022/lib/overlay/callout/callout.component.mjs +0 -130
- package/esm2022/lib/overlay/callout/callout.helpers.mjs +0 -113
- package/esm2022/lib/overlay/callout/help/help.component.mjs +0 -23
- package/esm2022/lib/overlay/callout/lock-scroll.directive.mjs +0 -69
- package/esm2022/lib/overlay/callout/menu/menu-item/menu-item.component.mjs +0 -71
- package/esm2022/lib/overlay/callout/menu/menu.component.mjs +0 -39
- package/esm2022/lib/overlay/callout/select-callout-defaults.mjs +0 -13
- package/esm2022/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +0 -30
- package/esm2022/lib/overlay/callout/tooltip/tooltip.component.mjs +0 -57
- package/esm2022/lib/overlay/callout/tooltip/tooltip.directive.mjs +0 -138
- package/esm2022/lib/overlay/modal/dialog/dialog.component.mjs +0 -47
- package/esm2022/lib/overlay/modal/dialog-stack.service.mjs +0 -41
- package/esm2022/lib/overlay/modal/form-dialog/form-dialog.component.mjs +0 -146
- package/esm2022/lib/overlay/modal/modal.component.mjs +0 -31
- package/esm2022/lib/overlay/modal/side-sheet/side-sheet.component.mjs +0 -30
- package/esm2022/lib/overlay/overlay-outlet.component.mjs +0 -98
- package/esm2022/lib/overlay/overlay.directive.mjs +0 -25
- package/esm2022/lib/overlay/overlay.service.mjs +0 -35
- package/esm2022/lib/overlay/toast/toast-action.component.mjs +0 -11
- package/esm2022/lib/overlay/toast/toast.component.mjs +0 -41
- package/esm2022/lib/riv.module.mjs +0 -580
- package/esm2022/lib/size/size.directive.mjs +0 -33
- package/esm2022/lib/table/simple-table/coordinate-helper.mjs +0 -61
- package/esm2022/lib/table/simple-table/simple-table-cell.component.mjs +0 -36
- package/esm2022/lib/table/simple-table/simple-table-header-cell.component.mjs +0 -37
- package/esm2022/lib/table/simple-table/simple-table-row.component.mjs +0 -19
- package/esm2022/lib/table/simple-table/simple-table.component.mjs +0 -104
- package/esm2022/lib/table/table/clipboard.mjs +0 -182
- package/esm2022/lib/table/table/state-helpers/collapse-helpers.mjs +0 -116
- package/esm2022/lib/table/table/state-helpers/column-helpers.mjs +0 -383
- package/esm2022/lib/table/table/state-helpers/display-helpers.mjs +0 -50
- package/esm2022/lib/table/table/state-helpers/nesting-helpers.mjs +0 -123
- package/esm2022/lib/table/table/state-helpers/order-helpers.mjs +0 -164
- package/esm2022/lib/table/table/state-helpers/pagination-helpers.mjs +0 -139
- package/esm2022/lib/table/table/state-helpers/result-helpers.mjs +0 -70
- package/esm2022/lib/table/table/state-helpers/search-helpers.mjs +0 -72
- package/esm2022/lib/table/table/state-helpers/selection-helpers.mjs +0 -180
- package/esm2022/lib/table/table/state.mjs +0 -1035
- package/esm2022/lib/table/table/table/table.component.mjs +0 -367
- package/esm2022/lib/table/table/table-collapse-all/table-collapse-all.component.mjs +0 -25
- package/esm2022/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +0 -227
- package/esm2022/lib/table/table/table-column-settings/table-column-settings.component.mjs +0 -134
- package/esm2022/lib/table/table/table-csv-export/table-csv-export.component.mjs +0 -35
- package/esm2022/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.mjs +0 -28
- package/esm2022/lib/table/table/table-search/table-search.component.mjs +0 -71
- package/esm2022/lib/table/table/table-search-columns/table-search-columns.component.mjs +0 -57
- package/esm2022/lib/util/local-storage.mjs +0 -17
- package/esm2022/lib/visibility/visibility.directive.mjs +0 -34
- package/esm2022/lib/visualization/chart/chart-scaling.mjs +0 -380
- package/esm2022/lib/visualization/chart/chart.component.mjs +0 -626
- package/esm2022/lib/visualization/chart/chart.mjs +0 -3768
- package/esm2022/lib/visualization/data-table/data-table-cell.component.mjs +0 -22
- package/esm2022/lib/visualization/data-table/data-table-header-cell.component.mjs +0 -11
- package/esm2022/lib/visualization/data-table/data-table-row.component.mjs +0 -19
- package/esm2022/lib/visualization/data-table/data-table.component.mjs +0 -17
- package/esm2022/lib/visualization/donut/donut.component.mjs +0 -54
- package/esm2022/lib/visualization/funnel-chart/funnel-chart.component.mjs +0 -73
- package/esm2022/lib/visualization/funnel-chart/funnel-chart.helpers.mjs +0 -33
- package/esm2022/lib/visualization/highlight/highlight.component.mjs +0 -24
- package/esm2022/lib/visualization/highlight/highlight.helpers.mjs +0 -20
- package/esm2022/lib/visualization/intervals.mjs +0 -63
- package/esm2022/lib/visualization/issue/issue.component.mjs +0 -30
- package/esm2022/lib/visualization/legend-item/legend-item.component.mjs +0 -49
- package/esm2022/lib/visualization/metric/metric.component.mjs +0 -52
- package/esm2022/lib/visualization/mini-pie/mini-pie.component.mjs +0 -51
- package/esm2022/lib/visualization/progress/progress.component.mjs +0 -24
- package/esm2022/lib/visualization/stacked-column/stacked-column.component.mjs +0 -377
- package/esm2022/lib/visualization/stacked-column/stacked-column.helpers.mjs +0 -18
- package/esm2022/lib/visualization/stacked-row/stacked-row.component.mjs +0 -270
- package/esm2022/lib/visualization/stacked-row/stacked-row.helpers.mjs +0 -74
- package/esm2022/lib/visualization/time-series/time-series.component.mjs +0 -374
- package/esm2022/lib/visualization/time-series/time-series.helpers.mjs +0 -15
- package/esm2022/lib/visualization/trend/trend.component.mjs +0 -51
- package/esm2022/lib/visualization/zero-state/zero-state.component.mjs +0 -22
- package/esm2022/public-api.mjs +0 -118
- package/esm2022/rivet-health-design-system.mjs +0 -5
- package/index.d.ts +0 -5
- package/lib/accessibility/sr-only/sr-only.component.d.ts +0 -12
- package/lib/download/download.service.d.ts +0 -9
- package/lib/format/pipes/common.d.ts +0 -6
- package/lib/format/pipes/date.pipe.d.ts +0 -8
- package/lib/format/pipes/days.pipe.d.ts +0 -8
- package/lib/format/pipes/dollars.pipe.d.ts +0 -9
- package/lib/format/pipes/number.pipe.d.ts +0 -8
- package/lib/format/pipes/percentage.pipe.d.ts +0 -8
- package/lib/format/pipes/sentence-case.pipe.d.ts +0 -8
- package/lib/format/pipes/small-currency.pipe.d.ts +0 -8
- package/lib/format/pipes/small-number.pipe.d.ts +0 -8
- package/lib/format/svg-text-truncate/svg-text-truncate.directive.d.ts +0 -14
- package/lib/format/truncate/truncate.component.d.ts +0 -17
- package/lib/icon/dom-cache.d.ts +0 -13
- package/lib/icon/icon.component.d.ts +0 -27
- package/lib/icon/icons.d.ts +0 -137
- package/lib/input/alphabetic-field/alphabetic-field.component.d.ts +0 -14
- package/lib/input/auto-focus/auto-focus.directive.d.ts +0 -21
- package/lib/input/button/button.component.d.ts +0 -37
- package/lib/input/button-group/button-group.component.d.ts +0 -11
- package/lib/input/calendar/calendar.component.d.ts +0 -67
- package/lib/input/card-checkbox/card-checkbox.component.d.ts +0 -6
- package/lib/input/checkbox/checkbox.component.d.ts +0 -32
- package/lib/input/currency-field/currency-field.component.d.ts +0 -9
- package/lib/input/date/date.component.d.ts +0 -62
- package/lib/input/date-range/date-range.component.d.ts +0 -97
- package/lib/input/filter-chip/filter-chip.component.d.ts +0 -13
- package/lib/input/filter-dropdown/filter-dropdown.component.d.ts +0 -30
- package/lib/input/input-label/input-label.component.d.ts +0 -17
- package/lib/input/mentions-input/mentions-input.component.d.ts +0 -93
- package/lib/input/number-field/number-field.component.d.ts +0 -36
- package/lib/input/percentage-field/percentage-field.component.d.ts +0 -7
- package/lib/input/phone-field/phone-field.component.d.ts +0 -17
- package/lib/input/radio/radio.component.d.ts +0 -28
- package/lib/input/search/search.component.d.ts +0 -10
- package/lib/input/search-select/search-select.component.d.ts +0 -62
- package/lib/input/select/select/select.component.d.ts +0 -63
- package/lib/input/select/select-node/select-node.component.d.ts +0 -30
- package/lib/input/select/state.d.ts +0 -250
- package/lib/input/simple-select/option-group.pipe.d.ts +0 -8
- package/lib/input/simple-select/simple-select.component.d.ts +0 -63
- package/lib/input/switch-checkbox/switch-checkbox.component.d.ts +0 -18
- package/lib/input/text-field/text-field.component.d.ts +0 -38
- package/lib/input/textarea-field/textarea-field.component.d.ts +0 -8
- package/lib/input/validation-message/validation-message.component.d.ts +0 -6
- package/lib/layout/card/card-actions.component.d.ts +0 -38
- package/lib/layout/card/card-content.component.d.ts +0 -33
- package/lib/layout/card/card-header.component.d.ts +0 -132
- package/lib/layout/card/card-link.component.d.ts +0 -64
- package/lib/layout/card/card-media.component.d.ts +0 -43
- package/lib/layout/card/card.component.d.ts +0 -225
- package/lib/layout/setting-row/setting-row.component.d.ts +0 -72
- package/lib/load/loading/loading.component.d.ts +0 -17
- package/lib/load/loading-cover/loading-cover.component.d.ts +0 -10
- package/lib/navigation/editable-heading/editable-heading.component.d.ts +0 -118
- package/lib/navigation/link/link.component.d.ts +0 -19
- package/lib/navigation/page-header/page-header.component.d.ts +0 -50
- package/lib/navigation/simple-tabs/simple-tab/simple-tab.component.d.ts +0 -11
- package/lib/navigation/simple-tabs/simple-tabs/simple-tabs.component.d.ts +0 -5
- package/lib/navigation/tabs/tab/tab.component.d.ts +0 -6
- package/lib/navigation/tabs/tabs/tabs.component.d.ts +0 -5
- package/lib/navigation/views/all-views-modal/all-views-modal.component.d.ts +0 -14
- package/lib/navigation/views/edit-view/edit-view.component.d.ts +0 -31
- package/lib/navigation/views/permission-picker/permission-picker.component.d.ts +0 -37
- package/lib/navigation/views/state.d.ts +0 -175
- package/lib/navigation/views/view-menu/view-menu.component.d.ts +0 -13
- package/lib/navigation/views/views/views.component.d.ts +0 -25
- package/lib/notification/badge/badge.component.d.ts +0 -14
- package/lib/notification/banner/banner-action.component.d.ts +0 -15
- package/lib/notification/banner/banner.component.d.ts +0 -25
- package/lib/notification/map-indicator/map-indicator.component.d.ts +0 -24
- package/lib/notification/map-indicator/map-indicators.d.ts +0 -9
- package/lib/notification/notification-badge/notification-badge.component.d.ts +0 -11
- package/lib/overlay/callout/callout.component.d.ts +0 -36
- package/lib/overlay/callout/callout.helpers.d.ts +0 -16
- package/lib/overlay/callout/help/help.component.d.ts +0 -11
- package/lib/overlay/callout/lock-scroll.directive.d.ts +0 -22
- package/lib/overlay/callout/menu/menu-item/menu-item.component.d.ts +0 -27
- package/lib/overlay/callout/menu/menu.component.d.ts +0 -17
- package/lib/overlay/callout/select-callout-defaults.d.ts +0 -5
- package/lib/overlay/callout/tooltip/locked-tooltip.directive.d.ts +0 -14
- package/lib/overlay/callout/tooltip/tooltip.component.d.ts +0 -26
- package/lib/overlay/callout/tooltip/tooltip.directive.d.ts +0 -48
- package/lib/overlay/modal/dialog/dialog.component.d.ts +0 -19
- package/lib/overlay/modal/dialog-stack.service.d.ts +0 -23
- package/lib/overlay/modal/form-dialog/form-dialog.component.d.ts +0 -63
- package/lib/overlay/modal/modal.component.d.ts +0 -11
- package/lib/overlay/modal/side-sheet/side-sheet.component.d.ts +0 -13
- package/lib/overlay/overlay-outlet.component.d.ts +0 -19
- package/lib/overlay/overlay.directive.d.ts +0 -13
- package/lib/overlay/overlay.service.d.ts +0 -14
- package/lib/overlay/toast/toast-action.component.d.ts +0 -5
- package/lib/overlay/toast/toast.component.d.ts +0 -17
- package/lib/riv.module.d.ts +0 -122
- package/lib/size/size.directive.d.ts +0 -12
- package/lib/table/simple-table/coordinate-helper.d.ts +0 -13
- package/lib/table/simple-table/simple-table-cell.component.d.ts +0 -19
- package/lib/table/simple-table/simple-table-header-cell.component.d.ts +0 -20
- package/lib/table/simple-table/simple-table-row.component.d.ts +0 -6
- package/lib/table/simple-table/simple-table.component.d.ts +0 -11
- package/lib/table/table/clipboard.d.ts +0 -38
- package/lib/table/table/state-helpers/collapse-helpers.d.ts +0 -9
- package/lib/table/table/state-helpers/column-helpers.d.ts +0 -29
- package/lib/table/table/state-helpers/display-helpers.d.ts +0 -5
- package/lib/table/table/state-helpers/nesting-helpers.d.ts +0 -13
- package/lib/table/table/state-helpers/order-helpers.d.ts +0 -13
- package/lib/table/table/state-helpers/pagination-helpers.d.ts +0 -12
- package/lib/table/table/state-helpers/result-helpers.d.ts +0 -10
- package/lib/table/table/state-helpers/search-helpers.d.ts +0 -17
- package/lib/table/table/state-helpers/selection-helpers.d.ts +0 -13
- package/lib/table/table/state.d.ts +0 -512
- package/lib/table/table/table/table.component.d.ts +0 -88
- package/lib/table/table/table-collapse-all/table-collapse-all.component.d.ts +0 -10
- package/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.d.ts +0 -52
- package/lib/table/table/table-column-settings/table-column-settings.component.d.ts +0 -37
- package/lib/table/table/table-csv-export/table-csv-export.component.d.ts +0 -14
- package/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.d.ts +0 -11
- package/lib/table/table/table-search/table-search.component.d.ts +0 -21
- package/lib/table/table/table-search-columns/table-search-columns.component.d.ts +0 -23
- package/lib/util/local-storage.d.ts +0 -14
- package/lib/visibility/visibility.directive.d.ts +0 -12
- package/lib/visualization/chart/chart-scaling.d.ts +0 -100
- package/lib/visualization/chart/chart.component.d.ts +0 -116
- package/lib/visualization/chart/chart.d.ts +0 -354
- package/lib/visualization/data-table/data-table-cell.component.d.ts +0 -11
- package/lib/visualization/data-table/data-table-header-cell.component.d.ts +0 -5
- package/lib/visualization/data-table/data-table-row.component.d.ts +0 -6
- package/lib/visualization/data-table/data-table.component.d.ts +0 -6
- package/lib/visualization/donut/donut.component.d.ts +0 -22
- package/lib/visualization/funnel-chart/funnel-chart.component.d.ts +0 -30
- package/lib/visualization/funnel-chart/funnel-chart.helpers.d.ts +0 -4
- package/lib/visualization/highlight/highlight.component.d.ts +0 -15
- package/lib/visualization/highlight/highlight.helpers.d.ts +0 -2
- package/lib/visualization/intervals.d.ts +0 -8
- package/lib/visualization/issue/issue.component.d.ts +0 -10
- package/lib/visualization/legend-item/legend-item.component.d.ts +0 -22
- package/lib/visualization/metric/metric.component.d.ts +0 -20
- package/lib/visualization/mini-pie/mini-pie.component.d.ts +0 -17
- package/lib/visualization/progress/progress.component.d.ts +0 -8
- package/lib/visualization/stacked-column/stacked-column.component.d.ts +0 -129
- package/lib/visualization/stacked-column/stacked-column.helpers.d.ts +0 -3
- package/lib/visualization/stacked-row/stacked-row.component.d.ts +0 -109
- package/lib/visualization/stacked-row/stacked-row.helpers.d.ts +0 -53
- package/lib/visualization/time-series/time-series.component.d.ts +0 -126
- package/lib/visualization/time-series/time-series.helpers.d.ts +0 -34
- package/lib/visualization/trend/trend.component.d.ts +0 -13
- package/lib/visualization/zero-state/zero-state.component.d.ts +0 -9
- package/public-api.d.ts +0 -118
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, Output, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class SizeDirective {
|
|
4
|
-
constructor(elementRef, zone) {
|
|
5
|
-
this.elementRef = elementRef;
|
|
6
|
-
this.rivClientSize = new EventEmitter();
|
|
7
|
-
this.resizeObserver = new ResizeObserver(entries => {
|
|
8
|
-
zone.run(() => {
|
|
9
|
-
for (const entry of entries) {
|
|
10
|
-
this.rivClientSize.emit(entry.target.getBoundingClientRect());
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
ngOnInit() {
|
|
16
|
-
this.rivClientSize.emit(this.elementRef.nativeElement.getBoundingClientRect());
|
|
17
|
-
this.resizeObserver.observe(this.elementRef.nativeElement);
|
|
18
|
-
}
|
|
19
|
-
ngOnDestroy() {
|
|
20
|
-
this.resizeObserver.unobserve(this.elementRef.nativeElement);
|
|
21
|
-
}
|
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SizeDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
23
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: SizeDirective, selector: "[rivClientSize]", outputs: { rivClientSize: "rivClientSize" }, ngImport: i0 }); }
|
|
24
|
-
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SizeDirective, decorators: [{
|
|
26
|
-
type: Directive,
|
|
27
|
-
args: [{
|
|
28
|
-
selector: '[rivClientSize]',
|
|
29
|
-
}]
|
|
30
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { rivClientSize: [{
|
|
31
|
-
type: Output
|
|
32
|
-
}] } });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9zaXplL3NpemUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUlaLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7QUFLdkIsTUFBTSxPQUFPLGFBQWE7SUFNeEIsWUFDbUIsVUFBbUMsRUFDcEQsSUFBWTtRQURLLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBSHRELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQU0xQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNaLEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQ3RELENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvRCxDQUFDOytHQTVCVSxhQUFhO21HQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBSHpCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7b0dBS0MsYUFBYTtzQkFEWixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tyaXZDbGllbnRTaXplXScsXG59KVxuZXhwb3J0IGNsYXNzIFNpemVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIEBPdXRwdXQoKVxuICByaXZDbGllbnRTaXplID0gbmV3IEV2ZW50RW1pdHRlcjxET01SZWN0PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgem9uZTogTmdab25lLFxuICApIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICB0aGlzLnJpdkNsaWVudFNpemUuZW1pdChlbnRyeS50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucml2Q2xpZW50U2l6ZS5lbWl0KFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci51bm9ic2VydmUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
export function createCellCoordinateCalculator(cells, totalColumns) {
|
|
2
|
-
// Pre-calculate coordinates for all cells
|
|
3
|
-
const cellCoordinates = [];
|
|
4
|
-
const grid = [];
|
|
5
|
-
let currentRow = 0;
|
|
6
|
-
let currentCol = 0;
|
|
7
|
-
// Process each cell and store its coordinates
|
|
8
|
-
for (let i = 0; i < cells.length; i++) {
|
|
9
|
-
const { rowspan, colspan } = cells[i];
|
|
10
|
-
// Find the next available position
|
|
11
|
-
while (true) {
|
|
12
|
-
// Ensure we have enough rows in our grid
|
|
13
|
-
while (grid.length <= currentRow) {
|
|
14
|
-
grid.push(new Array(totalColumns).fill(false));
|
|
15
|
-
}
|
|
16
|
-
// Check if current position is available
|
|
17
|
-
if (!grid[currentRow][currentCol]) {
|
|
18
|
-
break;
|
|
19
|
-
}
|
|
20
|
-
// Move to next column
|
|
21
|
-
currentCol++;
|
|
22
|
-
if (currentCol >= totalColumns) {
|
|
23
|
-
currentCol = 0;
|
|
24
|
-
currentRow++;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
// Store coordinates for this cell
|
|
28
|
-
const startCoord = { row: currentRow, col: currentCol };
|
|
29
|
-
const endCoord = {
|
|
30
|
-
row: currentRow + rowspan - 1,
|
|
31
|
-
col: currentCol + colspan - 1,
|
|
32
|
-
};
|
|
33
|
-
cellCoordinates[i] = { start: startCoord, end: endCoord };
|
|
34
|
-
// Mark the positions this cell occupies as taken
|
|
35
|
-
for (let r = currentRow; r < currentRow + rowspan; r++) {
|
|
36
|
-
// Ensure we have enough rows
|
|
37
|
-
while (grid.length <= r) {
|
|
38
|
-
grid.push(new Array(totalColumns).fill(false));
|
|
39
|
-
}
|
|
40
|
-
for (let c = currentCol; c < currentCol + colspan; c++) {
|
|
41
|
-
if (c < totalColumns) {
|
|
42
|
-
grid[r][c] = true;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// Move to next position for the next cell
|
|
47
|
-
currentCol++;
|
|
48
|
-
if (currentCol >= totalColumns) {
|
|
49
|
-
currentCol = 0;
|
|
50
|
-
currentRow++;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// Return the lookup function
|
|
54
|
-
return function getCellCoordinates(cellIndex) {
|
|
55
|
-
if (cellIndex < 0 || cellIndex >= cells.length) {
|
|
56
|
-
throw new Error('Cell index out of bounds');
|
|
57
|
-
}
|
|
58
|
-
return cellCoordinates[cellIndex];
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vcmRpbmF0ZS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zaW1wbGUtdGFibGUvY29vcmRpbmF0ZS1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxLQUFhLEVBQ2IsWUFBb0I7SUFFcEIsMENBQTBDO0lBQzFDLE1BQU0sZUFBZSxHQUFhLEVBQUUsQ0FBQztJQUNyQyxNQUFNLElBQUksR0FBZ0IsRUFBRSxDQUFDO0lBQzdCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNuQixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFFbkIsOENBQThDO0lBQzlDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEMsbUNBQW1DO1FBQ25DLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWix5Q0FBeUM7WUFDekMsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFFRCx5Q0FBeUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxNQUFNO1lBQ1IsQ0FBQztZQUVELHNCQUFzQjtZQUN0QixVQUFVLEVBQUUsQ0FBQztZQUNiLElBQUksVUFBVSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUMvQixVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLFVBQVUsRUFBRSxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUM7UUFFRCxrQ0FBa0M7UUFDbEMsTUFBTSxVQUFVLEdBQWUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUNwRSxNQUFNLFFBQVEsR0FBZTtZQUMzQixHQUFHLEVBQUUsVUFBVSxHQUFHLE9BQU8sR0FBRyxDQUFDO1lBQzdCLEdBQUcsRUFBRSxVQUFVLEdBQUcsT0FBTyxHQUFHLENBQUM7U0FDOUIsQ0FBQztRQUVGLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBRTFELGlEQUFpRDtRQUNqRCxLQUFLLElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEdBQUcsVUFBVSxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELDZCQUE2QjtZQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakQsQ0FBQztZQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsR0FBRyxVQUFVLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRSxDQUFDO29CQUNyQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsVUFBVSxFQUFFLENBQUM7UUFDYixJQUFJLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUMvQixVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsVUFBVSxFQUFFLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixPQUFPLFNBQVMsa0JBQWtCLENBQUMsU0FBaUI7UUFDbEQsSUFBSSxTQUFTLEdBQUcsQ0FBQyxJQUFJLFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxPQUFPLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQ2VsbCA9IHtcbiAgcm93c3BhbjogbnVtYmVyO1xuICBjb2xzcGFuOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBDb29yZGluYXRlID0ge1xuICByb3c6IG51bWJlcjtcbiAgY29sOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBCb3VuZHMgPSB7XG4gIHN0YXJ0OiBDb29yZGluYXRlO1xuICBlbmQ6IENvb3JkaW5hdGU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2VsbENvb3JkaW5hdGVDYWxjdWxhdG9yKFxuICBjZWxsczogQ2VsbFtdLFxuICB0b3RhbENvbHVtbnM6IG51bWJlcixcbik6IChjZWxsSW5kZXg6IG51bWJlcikgPT4gQm91bmRzIHtcbiAgLy8gUHJlLWNhbGN1bGF0ZSBjb29yZGluYXRlcyBmb3IgYWxsIGNlbGxzXG4gIGNvbnN0IGNlbGxDb29yZGluYXRlczogQm91bmRzW10gPSBbXTtcbiAgY29uc3QgZ3JpZDogYm9vbGVhbltdW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRSb3cgPSAwO1xuICBsZXQgY3VycmVudENvbCA9IDA7XG5cbiAgLy8gUHJvY2VzcyBlYWNoIGNlbGwgYW5kIHN0b3JlIGl0cyBjb29yZGluYXRlc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGNlbGxzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgeyByb3dzcGFuLCBjb2xzcGFuIH0gPSBjZWxsc1tpXTtcblxuICAgIC8vIEZpbmQgdGhlIG5leHQgYXZhaWxhYmxlIHBvc2l0aW9uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGVub3VnaCByb3dzIGluIG91ciBncmlkXG4gICAgICB3aGlsZSAoZ3JpZC5sZW5ndGggPD0gY3VycmVudFJvdykge1xuICAgICAgICBncmlkLnB1c2gobmV3IEFycmF5KHRvdGFsQ29sdW1ucykuZmlsbChmYWxzZSkpO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBjdXJyZW50IHBvc2l0aW9uIGlzIGF2YWlsYWJsZVxuICAgICAgaWYgKCFncmlkW2N1cnJlbnRSb3ddW2N1cnJlbnRDb2xdKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBNb3ZlIHRvIG5leHQgY29sdW1uXG4gICAgICBjdXJyZW50Q29sKys7XG4gICAgICBpZiAoY3VycmVudENvbCA+PSB0b3RhbENvbHVtbnMpIHtcbiAgICAgICAgY3VycmVudENvbCA9IDA7XG4gICAgICAgIGN1cnJlbnRSb3crKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTdG9yZSBjb29yZGluYXRlcyBmb3IgdGhpcyBjZWxsXG4gICAgY29uc3Qgc3RhcnRDb29yZDogQ29vcmRpbmF0ZSA9IHsgcm93OiBjdXJyZW50Um93LCBjb2w6IGN1cnJlbnRDb2wgfTtcbiAgICBjb25zdCBlbmRDb29yZDogQ29vcmRpbmF0ZSA9IHtcbiAgICAgIHJvdzogY3VycmVudFJvdyArIHJvd3NwYW4gLSAxLFxuICAgICAgY29sOiBjdXJyZW50Q29sICsgY29sc3BhbiAtIDEsXG4gICAgfTtcblxuICAgIGNlbGxDb29yZGluYXRlc1tpXSA9IHsgc3RhcnQ6IHN0YXJ0Q29vcmQsIGVuZDogZW5kQ29vcmQgfTtcblxuICAgIC8vIE1hcmsgdGhlIHBvc2l0aW9ucyB0aGlzIGNlbGwgb2NjdXBpZXMgYXMgdGFrZW5cbiAgICBmb3IgKGxldCByID0gY3VycmVudFJvdzsgciA8IGN1cnJlbnRSb3cgKyByb3dzcGFuOyByKyspIHtcbiAgICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGVub3VnaCByb3dzXG4gICAgICB3aGlsZSAoZ3JpZC5sZW5ndGggPD0gcikge1xuICAgICAgICBncmlkLnB1c2gobmV3IEFycmF5KHRvdGFsQ29sdW1ucykuZmlsbChmYWxzZSkpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBjID0gY3VycmVudENvbDsgYyA8IGN1cnJlbnRDb2wgKyBjb2xzcGFuOyBjKyspIHtcbiAgICAgICAgaWYgKGMgPCB0b3RhbENvbHVtbnMpIHtcbiAgICAgICAgICBncmlkW3JdW2NdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1vdmUgdG8gbmV4dCBwb3NpdGlvbiBmb3IgdGhlIG5leHQgY2VsbFxuICAgIGN1cnJlbnRDb2wrKztcbiAgICBpZiAoY3VycmVudENvbCA+PSB0b3RhbENvbHVtbnMpIHtcbiAgICAgIGN1cnJlbnRDb2wgPSAwO1xuICAgICAgY3VycmVudFJvdysrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgbG9va3VwIGZ1bmN0aW9uXG4gIHJldHVybiBmdW5jdGlvbiBnZXRDZWxsQ29vcmRpbmF0ZXMoY2VsbEluZGV4OiBudW1iZXIpOiBCb3VuZHMge1xuICAgIGlmIChjZWxsSW5kZXggPCAwIHx8IGNlbGxJbmRleCA+PSBjZWxscy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2VsbCBpbmRleCBvdXQgb2YgYm91bmRzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNlbGxDb29yZGluYXRlc1tjZWxsSW5kZXhdO1xuICB9O1xufVxuIl19
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class SimpleTableCellComponent {
|
|
4
|
-
constructor(cdr, elementRef) {
|
|
5
|
-
this.cdr = cdr;
|
|
6
|
-
this.elementRef = elementRef;
|
|
7
|
-
}
|
|
8
|
-
get classes() {
|
|
9
|
-
return [
|
|
10
|
-
this.alignment,
|
|
11
|
-
this.pinned && 'pinned',
|
|
12
|
-
this.isLastRow && 'last-row',
|
|
13
|
-
]
|
|
14
|
-
.filter(Boolean)
|
|
15
|
-
.join(' ');
|
|
16
|
-
}
|
|
17
|
-
get leftPx() {
|
|
18
|
-
if (this.pinned && this.leftPinOffset != undefined) {
|
|
19
|
-
return this.leftPinOffset;
|
|
20
|
-
}
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimpleTableCellComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SimpleTableCellComponent, selector: "[riv-simple-table-cell]", host: { properties: { "class": "this.classes", "style.left.px": "this.leftPx" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{height:calc(var(--base-grid-size) * 8);padding:var(--size-xxsmall) var(--size-small);font:var(--body-small);vertical-align:middle;background-color:inherit}:host:not(.last-row){border-bottom:var(--border-width) solid var(--border-light)}:host.pinned{position:sticky;z-index:var(--above-scroll-z-index)}\n", ":host.left{text-align:left}:host.center{text-align:center}:host.right{text-align:right}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25
|
-
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimpleTableCellComponent, decorators: [{
|
|
27
|
-
type: Component,
|
|
28
|
-
args: [{ selector: '[riv-simple-table-cell]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{height:calc(var(--base-grid-size) * 8);padding:var(--size-xxsmall) var(--size-small);font:var(--body-small);vertical-align:middle;background-color:inherit}:host:not(.last-row){border-bottom:var(--border-width) solid var(--border-light)}:host.pinned{position:sticky;z-index:var(--above-scroll-z-index)}\n", ":host.left{text-align:left}:host.center{text-align:center}:host.right{text-align:right}\n"] }]
|
|
29
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { classes: [{
|
|
30
|
-
type: HostBinding,
|
|
31
|
-
args: ['class']
|
|
32
|
-
}], leftPx: [{
|
|
33
|
-
type: HostBinding,
|
|
34
|
-
args: ['style.left.px']
|
|
35
|
-
}] } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvc2ltcGxlLXRhYmxlL3NpbXBsZS10YWJsZS1jZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3NpbXBsZS10YWJsZS9zaW1wbGUtdGFibGUtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7O0FBU3ZCLE1BQU0sT0FBTyx3QkFBd0I7SUFTbkMsWUFDUyxHQUFzQixFQUN0QixVQUE0QztRQUQ1QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFrQztJQUNsRCxDQUFDO0lBRUosSUFDSSxPQUFPO1FBQ1QsT0FBTztZQUNMLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLElBQUksVUFBVTtTQUM3QjthQUNFLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZixDQUFDO0lBRUQsSUFDSSxNQUFNO1FBQ1IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxFQUFFLENBQUM7WUFDbkQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBL0JVLHdCQUF3QjttR0FBeEIsd0JBQXdCLGtKQ2ZyQyw2QkFDQTs7NEZEY2Esd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHlCQUF5QixtQkFHbEIsdUJBQXVCLENBQUMsTUFBTTsrR0FpQjNDLE9BQU87c0JBRFYsV0FBVzt1QkFBQyxPQUFPO2dCQVloQixNQUFNO3NCQURULFdBQVc7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3RhYmxlL3N0YXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3Jpdi1zaW1wbGUtdGFibGUtY2VsbF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2ltcGxlLXRhYmxlLWNlbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaW1wbGUtdGFibGUtY2VsbC5jb21wb25lbnQuY3NzJywgJy4vYWxpZ25tZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2ltcGxlVGFibGVDZWxsQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZXNlIGdldCBzZXQgYXV0b21hdGljYWxseSBieSB0aGUgcGFyZW50IFNpbXBsZVRhYmxlQ29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGFsaWdubWVudD86IFJpdlRhYmxlLkNvbHVtbkFsaWdubWVudDtcbiAgcHVibGljIHBpbm5lZD86IGJvb2xlYW47XG4gIHB1YmxpYyBpc0xhc3RSb3c/OiBib29sZWFuO1xuICBwdWJsaWMgbGVmdFBpbk9mZnNldD86IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MVGFibGVDZWxsRWxlbWVudD4sXG4gICkge31cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGNsYXNzZXMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuYWxpZ25tZW50LFxuICAgICAgdGhpcy5waW5uZWQgJiYgJ3Bpbm5lZCcsXG4gICAgICB0aGlzLmlzTGFzdFJvdyAmJiAnbGFzdC1yb3cnLFxuICAgIF1cbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKCcgJyk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmxlZnQucHgnKVxuICBnZXQgbGVmdFB4KCkge1xuICAgIGlmICh0aGlzLnBpbm5lZCAmJiB0aGlzLmxlZnRQaW5PZmZzZXQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5sZWZ0UGluT2Zmc2V0O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Input, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class SimpleTableHeaderCellComponent {
|
|
4
|
-
constructor(cdr, elementRef) {
|
|
5
|
-
this.cdr = cdr;
|
|
6
|
-
this.elementRef = elementRef;
|
|
7
|
-
}
|
|
8
|
-
get classes() {
|
|
9
|
-
return [this.alignment, this.pinned && 'pinned'].filter(Boolean).join(' ');
|
|
10
|
-
}
|
|
11
|
-
get leftPx() {
|
|
12
|
-
if (this.pinned && this.leftPinOffset != undefined) {
|
|
13
|
-
return this.leftPinOffset;
|
|
14
|
-
}
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
get width() {
|
|
18
|
-
return this.elementRef.nativeElement.offsetWidth;
|
|
19
|
-
}
|
|
20
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimpleTableHeaderCellComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SimpleTableHeaderCellComponent, selector: "[riv-simple-table-header-cell]", inputs: { dataType: "dataType", pinned: "pinned" }, host: { properties: { "class": "this.classes", "style.left.px": "this.leftPx" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{border-bottom:var(--border-width) solid var(--border-light);background-color:var(--surface-light-1);padding:var(--size-xxsmall) var(--size-small);position:sticky;top:0;font-size:var(--size-medium);font-weight:var(--font-weight-heavy);line-height:1;padding:var(--size-xsmall) var(--size-small);vertical-align:middle;height:calc(var(--base-grid-size) * 8);white-space:nowrap}:host.pinned{z-index:var(--above-scroll-z-index)}:host:not(:last-child){border-right:var(--border-width) solid var(--border-light)}\n", ":host.left{text-align:left}:host.center{text-align:center}:host.right{text-align:right}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
22
|
-
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimpleTableHeaderCellComponent, decorators: [{
|
|
24
|
-
type: Component,
|
|
25
|
-
args: [{ selector: '[riv-simple-table-header-cell]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{border-bottom:var(--border-width) solid var(--border-light);background-color:var(--surface-light-1);padding:var(--size-xxsmall) var(--size-small);position:sticky;top:0;font-size:var(--size-medium);font-weight:var(--font-weight-heavy);line-height:1;padding:var(--size-xsmall) var(--size-small);vertical-align:middle;height:calc(var(--base-grid-size) * 8);white-space:nowrap}:host.pinned{z-index:var(--above-scroll-z-index)}:host:not(:last-child){border-right:var(--border-width) solid var(--border-light)}\n", ":host.left{text-align:left}:host.center{text-align:center}:host.right{text-align:right}\n"] }]
|
|
26
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { dataType: [{
|
|
27
|
-
type: Input
|
|
28
|
-
}], pinned: [{
|
|
29
|
-
type: Input
|
|
30
|
-
}], classes: [{
|
|
31
|
-
type: HostBinding,
|
|
32
|
-
args: ['class']
|
|
33
|
-
}], leftPx: [{
|
|
34
|
-
type: HostBinding,
|
|
35
|
-
args: ['style.left.px']
|
|
36
|
-
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3NpbXBsZS10YWJsZS9zaW1wbGUtdGFibGUtaGVhZGVyLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvc2ltcGxlLXRhYmxlL3NpbXBsZS10YWJsZS1oZWFkZXItY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxXQUFXLEVBQ1gsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDOztBQVN2QixNQUFNLE9BQU8sOEJBQThCO0lBV3pDLFlBQ1MsR0FBc0IsRUFDdEIsVUFBNEM7UUFENUMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBa0M7SUFDbEQsQ0FBQztJQUVKLElBQ0ksT0FBTztRQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFDSSxNQUFNO1FBQ1IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksU0FBUyxFQUFFLENBQUM7WUFDbkQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUNuRCxDQUFDOytHQS9CVSw4QkFBOEI7bUdBQTlCLDhCQUE4Qiw2TUNoQjNDLDZCQUNBOzs0RkRlYSw4QkFBOEI7a0JBTjFDLFNBQVM7K0JBQ0UsZ0NBQWdDLG1CQUd6Qix1QkFBdUIsQ0FBQyxNQUFNOytHQUd0QyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFjRixPQUFPO3NCQURWLFdBQVc7dUJBQUMsT0FBTztnQkFNaEIsTUFBTTtzQkFEVCxXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJpdlRhYmxlIH0gZnJvbSAnLi4vdGFibGUvc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbcml2LXNpbXBsZS10YWJsZS1oZWFkZXItY2VsbF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2ltcGxlLXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2ltcGxlLXRhYmxlLWhlYWRlci1jZWxsLmNvbXBvbmVudC5jc3MnLCAnLi9hbGlnbm1lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTaW1wbGVUYWJsZUhlYWRlckNlbGxDb21wb25lbnQge1xuICBASW5wdXQoKSBkYXRhVHlwZT86IFJpdlRhYmxlLkNvbHVtbkRhdGFUeXBlO1xuXG4gIEBJbnB1dCgpIHBpbm5lZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgZ2V0cyBzZXQgYXV0b21hdGljYWxseSBieSB0aGUgcGFyZW50IFNpbXBsZVRhYmxlQ29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGFsaWdubWVudD86IFJpdlRhYmxlLkNvbHVtbkFsaWdubWVudDtcbiAgcHVibGljIGxlZnRQaW5PZmZzZXQ/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+LFxuICApIHt9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBjbGFzc2VzKCkge1xuICAgIHJldHVybiBbdGhpcy5hbGlnbm1lbnQsIHRoaXMucGlubmVkICYmICdwaW5uZWQnXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5sZWZ0LnB4JylcbiAgZ2V0IGxlZnRQeCgpIHtcbiAgICBpZiAodGhpcy5waW5uZWQgJiYgdGhpcy5sZWZ0UGluT2Zmc2V0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMubGVmdFBpbk9mZnNldDtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXQgd2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Input, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class SimpleTableRowComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.selected = false;
|
|
6
|
-
}
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimpleTableRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SimpleTableRowComponent, selector: "[riv-simple-table-row]", inputs: { selected: "selected" }, host: { properties: { "class.selected": "this.selected" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:table-row;text-decoration:none;color:inherit;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}:host(a),:host(button){cursor:pointer}:host(a):hover,:host(button):hover{background-color:var(--surface-light-2)}:host(a):active,:host(button):active{background-color:var(--surface-light-3)}:host.selected{background-color:var(--surface-light-selected)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9
|
-
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimpleTableRowComponent, decorators: [{
|
|
11
|
-
type: Component,
|
|
12
|
-
args: [{ selector: '[riv-simple-table-row]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{display:table-row;text-decoration:none;color:inherit;background-color:var(--surface-light-0);transition:background-color var(--short-transition)}:host(a),:host(button){cursor:pointer}:host(a):hover,:host(button):hover{background-color:var(--surface-light-2)}:host(a):active,:host(button):active{background-color:var(--surface-light-3)}:host.selected{background-color:var(--surface-light-selected)}\n"] }]
|
|
13
|
-
}], propDecorators: { selected: [{
|
|
14
|
-
type: Input
|
|
15
|
-
}, {
|
|
16
|
-
type: HostBinding,
|
|
17
|
-
args: ['class.selected']
|
|
18
|
-
}] } });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi90YWJsZS9zaW1wbGUtdGFibGUvc2ltcGxlLXRhYmxlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDOztBQVF2QixNQUFNLE9BQU8sdUJBQXVCO0lBTnBDO1FBU0UsYUFBUSxHQUFZLEtBQUssQ0FBQztLQUMzQjsrR0FKWSx1QkFBdUI7bUdBQXZCLHVCQUF1Qiw2SkNicEMsNkJBQ0E7OzRGRFlhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU07OEJBSy9DLFFBQVE7c0JBRlAsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbcml2LXNpbXBsZS10YWJsZS1yb3ddJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS10YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zaW1wbGUtdGFibGUtcm93LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNpbXBsZVRhYmxlUm93Q29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWxlY3RlZCcpXG4gIHNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, } from '@angular/core';
|
|
2
|
-
import { RivTable } from '../table/state';
|
|
3
|
-
import { createCellCoordinateCalculator } from './coordinate-helper';
|
|
4
|
-
import { SimpleTableCellComponent } from './simple-table-cell.component';
|
|
5
|
-
import { SimpleTableHeaderCellComponent } from './simple-table-header-cell.component';
|
|
6
|
-
import { TableColumnHelpers } from '../table/state-helpers/column-helpers';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common";
|
|
9
|
-
export class SimpleTableComponent {
|
|
10
|
-
ngAfterContentChecked() {
|
|
11
|
-
this.setCellProperties();
|
|
12
|
-
}
|
|
13
|
-
setCellProperties() {
|
|
14
|
-
const { headerCells, dataCells } = this;
|
|
15
|
-
if (!headerCells || !dataCells)
|
|
16
|
-
return;
|
|
17
|
-
let runningWidthTotal = 0;
|
|
18
|
-
headerCells.forEach((headerCell, i) => {
|
|
19
|
-
const { dataType } = headerCell;
|
|
20
|
-
if (!dataType) {
|
|
21
|
-
const allowedTypes = RivTable.ColumnDataTypes.join(', ');
|
|
22
|
-
throw new Error(`Each header cell must define an appropriate dataType, one of ${allowedTypes}`);
|
|
23
|
-
}
|
|
24
|
-
const newAlignment = TableColumnHelpers.getColumnAlignment(dataType, i === 0);
|
|
25
|
-
const newLeftPinOffset = runningWidthTotal;
|
|
26
|
-
runningWidthTotal += headerCell.width;
|
|
27
|
-
const changed = headerCell.alignment != newAlignment ||
|
|
28
|
-
headerCell.leftPinOffset != newLeftPinOffset;
|
|
29
|
-
headerCell.alignment = newAlignment;
|
|
30
|
-
headerCell.leftPinOffset = newLeftPinOffset;
|
|
31
|
-
// Only mark for check when changed to prevent infinite cycles
|
|
32
|
-
if (changed) {
|
|
33
|
-
queueMicrotask(() => {
|
|
34
|
-
headerCell.cdr.markForCheck();
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
const cellSpanData = dataCells.map(dataCell => {
|
|
39
|
-
const element = dataCell.elementRef.nativeElement;
|
|
40
|
-
return {
|
|
41
|
-
rowspan: parseInt(element.getAttribute('rowspan') || '1', 10),
|
|
42
|
-
colspan: parseInt(element.getAttribute('colspan') || '1', 10),
|
|
43
|
-
};
|
|
44
|
-
});
|
|
45
|
-
// When there are no header cells, calculate totalColumns from the first <tr>
|
|
46
|
-
let totalColumns = headerCells.length;
|
|
47
|
-
if (totalColumns === 0 && dataCells.length > 0) {
|
|
48
|
-
const firstRow = dataCells.first?.elementRef.nativeElement.parentElement;
|
|
49
|
-
if (firstRow) {
|
|
50
|
-
// Count td elements in the first row and sum their colspans
|
|
51
|
-
const cellsInFirstRow = Array.from(firstRow.querySelectorAll('td[riv-simple-table-cell]'));
|
|
52
|
-
totalColumns = cellsInFirstRow.reduce((sum, cell) => {
|
|
53
|
-
const colspan = parseInt(cell.getAttribute('colspan') || '1', 10);
|
|
54
|
-
return sum + colspan;
|
|
55
|
-
}, 0);
|
|
56
|
-
}
|
|
57
|
-
// Fallback to 1 if we couldn't determine
|
|
58
|
-
if (totalColumns === 0) {
|
|
59
|
-
totalColumns = 1;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
const getCellCoordinates = createCellCoordinateCalculator(cellSpanData, totalColumns);
|
|
63
|
-
const maxRow = Math.max(...dataCells.map((_, i) => getCellCoordinates(i).end.row));
|
|
64
|
-
dataCells.forEach((dataCell, cellIndex) => {
|
|
65
|
-
const bounds = getCellCoordinates(cellIndex);
|
|
66
|
-
const headerCell = headerCells.get(bounds.start.col);
|
|
67
|
-
let changed = false;
|
|
68
|
-
if (headerCell) {
|
|
69
|
-
changed =
|
|
70
|
-
dataCell.alignment != headerCell.alignment ||
|
|
71
|
-
dataCell.pinned != headerCell.pinned ||
|
|
72
|
-
dataCell.leftPinOffset != headerCell.leftPinOffset;
|
|
73
|
-
dataCell.alignment = headerCell.alignment;
|
|
74
|
-
dataCell.pinned = headerCell.pinned;
|
|
75
|
-
dataCell.leftPinOffset = headerCell.leftPinOffset;
|
|
76
|
-
}
|
|
77
|
-
const newIsLastRow = bounds.end.row === maxRow;
|
|
78
|
-
changed = changed || dataCell.isLastRow != newIsLastRow;
|
|
79
|
-
dataCell.isLastRow = newIsLastRow;
|
|
80
|
-
// Only mark for check when changed to prevent infinite cycles
|
|
81
|
-
if (changed) {
|
|
82
|
-
queueMicrotask(() => {
|
|
83
|
-
dataCell.cdr.markForCheck();
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimpleTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SimpleTableComponent, selector: "riv-simple-table", queries: [{ propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true }, { propertyName: "headerCells", predicate: SimpleTableHeaderCellComponent, descendants: true }, { propertyName: "dataCells", predicate: SimpleTableCellComponent, descendants: true }], ngImport: i0, template: "<div class=\"header\" *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n</div>\n<div class=\"container\" tabindex=\"0\">\n <table>\n <ng-content></ng-content>\n </table>\n</div>\n", styles: [":host{display:grid;width:100%;min-height:0}.header{border-width:var(--border-width) var(--border-width) 0 var(--border-width);border-style:solid;border-color:var(--border-light);border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium)}.header+.container{border-top-left-radius:0;border-top-right-radius:0}.container{border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-medium);overflow:auto}table{border-collapse:separate;width:100%;table-layout:fixed}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
90
|
-
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimpleTableComponent, decorators: [{
|
|
92
|
-
type: Component,
|
|
93
|
-
args: [{ selector: 'riv-simple-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"header\" *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n</div>\n<div class=\"container\" tabindex=\"0\">\n <table>\n <ng-content></ng-content>\n </table>\n</div>\n", styles: [":host{display:grid;width:100%;min-height:0}.header{border-width:var(--border-width) var(--border-width) 0 var(--border-width);border-style:solid;border-color:var(--border-light);border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium)}.header+.container{border-top-left-radius:0;border-top-right-radius:0}.container{border:var(--border-width) solid var(--border-light);border-radius:var(--border-radius-medium);overflow:auto}table{border-collapse:separate;width:100%;table-layout:fixed}\n"] }]
|
|
94
|
-
}], propDecorators: { headerTemplate: [{
|
|
95
|
-
type: ContentChild,
|
|
96
|
-
args: ['header']
|
|
97
|
-
}], headerCells: [{
|
|
98
|
-
type: ContentChildren,
|
|
99
|
-
args: [SimpleTableHeaderCellComponent, { descendants: true }]
|
|
100
|
-
}], dataCells: [{
|
|
101
|
-
type: ContentChildren,
|
|
102
|
-
args: [SimpleTableCellComponent, { descendants: true }]
|
|
103
|
-
}] } });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL3RhYmxlL3NpbXBsZS10YWJsZS9zaW1wbGUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvc2ltcGxlLXRhYmxlL3NpbXBsZS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxHQUdoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7OztBQVEzRSxNQUFNLE9BQU8sb0JBQW9CO0lBVS9CLHFCQUFxQjtRQUNuQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUV2QyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztRQUMxQixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDaEMsSUFB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d0IsZ0RDNUIzQyx5T0FRQTs7NEZEYWEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUkvQyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsUUFBUTtnQkFJZCxXQUFXO3NCQURsQixlQUFlO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJOUQsU0FBUztzQkFEaEIsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSaXZUYWJsZSB9IGZyb20gJy4uL3RhYmxlL3N0YXRlJztcbmltcG9ydCB7IGNyZWF0ZUNlbGxDb29yZGluYXRlQ2FsY3VsYXRvciB9IGZyb20gJy4vY29vcmRpbmF0ZS1oZWxwZXInO1xuaW1wb3J0IHsgU2ltcGxlVGFibGVDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9zaW1wbGUtdGFibGUtY2VsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2ltcGxlVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9zaW1wbGUtdGFibGUtaGVhZGVyLWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQ29sdW1uSGVscGVycyB9IGZyb20gJy4uL3RhYmxlL3N0YXRlLWhlbHBlcnMvY29sdW1uLWhlbHBlcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtc2ltcGxlLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpbXBsZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpbXBsZS10YWJsZS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTaW1wbGVUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQge1xuICBAQ29udGVudENoaWxkKCdoZWFkZXInKVxuICBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2ltcGxlVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHByaXZhdGUgaGVhZGVyQ2VsbHM/OiBRdWVyeUxpc3Q8U2ltcGxlVGFibGVIZWFkZXJDZWxsQ29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFNpbXBsZVRhYmxlQ2VsbENvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcml2YXRlIGRhdGFDZWxscz86IFF1ZXJ5TGlzdDxTaW1wbGVUYWJsZUNlbGxDb21wb25lbnQ+O1xuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICB0aGlzLnNldENlbGxQcm9wZXJ0aWVzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldENlbGxQcm9wZXJ0aWVzKCkge1xuICAgIGNvbnN0IHsgaGVhZGVyQ2VsbHMsIGRhdGFDZWxscyB9ID0gdGhpcztcbiAgICBpZiAoIWhlYWRlckNlbGxzIHx8ICFkYXRhQ2VsbHMpIHJldHVybjtcblxuICAgIGxldCBydW5uaW5nV2lkdGhUb3RhbCA9IDA7XG4gICAgaGVhZGVyQ2VsbHMuZm9yRWFjaCgoaGVhZGVyQ2VsbCwgaSkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhVHlwZSB9ID0gaGVhZGVyQ2VsbDtcbiAgICAgIGlmICghZGF0YVR5cGUpIHtcbiAgICAgICAgY29uc3QgYWxsb3dlZFR5cGVzID0gUml2VGFibGUuQ29sdW1uRGF0YVR5cGVzLmpvaW4oJywgJyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRWFjaCBoZWFkZXIgY2VsbCBtdXN0IGRlZmluZSBhbiBhcHByb3ByaWF0ZSBkYXRhVHlwZSwgb25lIG9mICR7YWxsb3dlZFR5cGVzfWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0FsaWdubWVudCA9IFRhYmxlQ29sdW1uSGVscGVycy5nZXRDb2x1bW5BbGlnbm1lbnQoXG4gICAgICAgIGRhdGFUeXBlLFxuICAgICAgICBpID09PSAwLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG5ld0xlZnRQaW5PZmZzZXQgPSBydW5uaW5nV2lkdGhUb3RhbDtcbiAgICAgIHJ1bm5pbmdXaWR0aFRvdGFsICs9IGhlYWRlckNlbGwud2lkdGg7XG5cbiAgICAgIGNvbnN0IGNoYW5nZWQgPVxuICAgICAgICBoZWFkZXJDZWxsLmFsaWdubWVudCAhPSBuZXdBbGlnbm1lbnQgfHxcbiAgICAgICAgaGVhZGVyQ2VsbC5sZWZ0UGluT2Zmc2V0ICE9IG5ld0xlZnRQaW5PZmZzZXQ7XG4gICAgICBoZWFkZXJDZWxsLmFsaWdubWVudCA9IG5ld0FsaWdubWVudDtcbiAgICAgIGhlYWRlckNlbGwubGVmdFBpbk9mZnNldCA9IG5ld0xlZnRQaW5PZmZzZXQ7XG5cbiAgICAgIC8vIE9ubHkgbWFyayBmb3IgY2hlY2sgd2hlbiBjaGFuZ2VkIHRvIHByZXZlbnQgaW5maW5pdGUgY3ljbGVzXG4gICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgICAgaGVhZGVyQ2VsbC5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgY2VsbFNwYW5EYXRhID0gZGF0YUNlbGxzLm1hcChkYXRhQ2VsbCA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gZGF0YUNlbGwuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm93c3BhbjogcGFyc2VJbnQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSB8fCAnMScsIDEwKSxcbiAgICAgICAgY29sc3BhbjogcGFyc2VJbnQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKSB8fCAnMScsIDEwKSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBXaGVuIHRoZXJlIGFyZSBubyBoZWFkZXIgY2VsbHMsIGNhbGN1bGF0ZSB0b3RhbENvbHVtbnMgZnJvbSB0aGUgZmlyc3QgPHRyPlxuICAgIGxldCB0b3RhbENvbHVtbnMgPSBoZWFkZXJDZWxscy5sZW5ndGg7XG4gICAgaWYgKHRvdGFsQ29sdW1ucyA9PT0gMCAmJiBkYXRhQ2VsbHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlyc3RSb3cgPSBkYXRhQ2VsbHMuZmlyc3Q/LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgaWYgKGZpcnN0Um93KSB7XG4gICAgICAgIC8vIENvdW50IHRkIGVsZW1lbnRzIGluIHRoZSBmaXJzdCByb3cgYW5kIHN1bSB0aGVpciBjb2xzcGFuc1xuICAgICAgICBjb25zdCBjZWxsc0luRmlyc3RSb3cgPSBBcnJheS5mcm9tKFxuICAgICAgICAgIGZpcnN0Um93LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkW3Jpdi1zaW1wbGUtdGFibGUtY2VsbF0nKSxcbiAgICAgICAgKTtcbiAgICAgICAgdG90YWxDb2x1bW5zID0gY2VsbHNJbkZpcnN0Um93LnJlZHVjZSgoc3VtLCBjZWxsKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29sc3BhbiA9IHBhcnNlSW50KGNlbGwuZ2V0QXR0cmlidXRlKCdjb2xzcGFuJykgfHwgJzEnLCAxMCk7XG4gICAgICAgICAgcmV0dXJuIHN1bSArIGNvbHNwYW47XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgICAgLy8gRmFsbGJhY2sgdG8gMSBpZiB3ZSBjb3VsZG4ndCBkZXRlcm1pbmVcbiAgICAgIGlmICh0b3RhbENvbHVtbnMgPT09IDApIHtcbiAgICAgICAgdG90YWxDb2x1bW5zID0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnZXRDZWxsQ29vcmRpbmF0ZXMgPSBjcmVhdGVDZWxsQ29vcmRpbmF0ZUNhbGN1bGF0b3IoXG4gICAgICBjZWxsU3BhbkRhdGEsXG4gICAgICB0b3RhbENvbHVtbnMsXG4gICAgKTtcblxuICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KFxuICAgICAgLi4uZGF0YUNlbGxzLm1hcCgoXywgaSkgPT4gZ2V0Q2VsbENvb3JkaW5hdGVzKGkpLmVuZC5yb3cpLFxuICAgICk7XG5cbiAgICBkYXRhQ2VsbHMuZm9yRWFjaCgoZGF0YUNlbGwsIGNlbGxJbmRleCkgPT4ge1xuICAgICAgY29uc3QgYm91bmRzID0gZ2V0Q2VsbENvb3JkaW5hdGVzKGNlbGxJbmRleCk7XG5cbiAgICAgIGNvbnN0IGhlYWRlckNlbGwgPSBoZWFkZXJDZWxscy5nZXQoYm91bmRzLnN0YXJ0LmNvbCk7XG4gICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgaWYgKGhlYWRlckNlbGwpIHtcbiAgICAgICAgY2hhbmdlZCA9XG4gICAgICAgICAgZGF0YUNlbGwuYWxpZ25tZW50ICE9IGhlYWRlckNlbGwuYWxpZ25tZW50IHx8XG4gICAgICAgICAgZGF0YUNlbGwucGlubmVkICE9IGhlYWRlckNlbGwucGlubmVkIHx8XG4gICAgICAgICAgZGF0YUNlbGwubGVmdFBpbk9mZnNldCAhPSBoZWFkZXJDZWxsLmxlZnRQaW5PZmZzZXQ7XG5cbiAgICAgICAgZGF0YUNlbGwuYWxpZ25tZW50ID0gaGVhZGVyQ2VsbC5hbGlnbm1lbnQ7XG4gICAgICAgIGRhdGFDZWxsLnBpbm5lZCA9IGhlYWRlckNlbGwucGlubmVkO1xuICAgICAgICBkYXRhQ2VsbC5sZWZ0UGluT2Zmc2V0ID0gaGVhZGVyQ2VsbC5sZWZ0UGluT2Zmc2V0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdJc0xhc3RSb3cgPSBib3VuZHMuZW5kLnJvdyA9PT0gbWF4Um93O1xuICAgICAgY2hhbmdlZCA9IGNoYW5nZWQgfHwgZGF0YUNlbGwuaXNMYXN0Um93ICE9IG5ld0lzTGFzdFJvdztcbiAgICAgIGRhdGFDZWxsLmlzTGFzdFJvdyA9IG5ld0lzTGFzdFJvdztcblxuICAgICAgLy8gT25seSBtYXJrIGZvciBjaGVjayB3aGVuIGNoYW5nZWQgdG8gcHJldmVudCBpbmZpbml0ZSBjeWNsZXNcbiAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgICAgICBkYXRhQ2VsbC5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgKm5nSWY9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIHRhYmluZGV4PVwiMFwiPlxuICA8dGFibGU+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { sumBy } from 'lodash';
|
|
2
|
-
/**
|
|
3
|
-
* Clipboard serialization for `riv-table`.
|
|
4
|
-
*
|
|
5
|
-
* Rows that have a link render as `<a class="row-link">` rather than `<tr>`, and
|
|
6
|
-
* the browser's clipboard serializer does not treat those as table rows — the
|
|
7
|
-
* copied content pastes into a spreadsheet as one lateral run instead of a grid.
|
|
8
|
-
* These helpers rebuild the rendered grid so that copied content pastes as rows
|
|
9
|
-
* and columns.
|
|
10
|
-
*/
|
|
11
|
-
export var RivTableClipboard;
|
|
12
|
-
(function (RivTableClipboard) {
|
|
13
|
-
/** Cells that hold controls rather than data. */
|
|
14
|
-
const controlCellSelector = 'th.selection-head, th.menu-head, td.selection-body, td.menu-body';
|
|
15
|
-
/** The column name within a header cell; the rest of the cell is controls. */
|
|
16
|
-
const headerLabelSelector = '.header-wrapper';
|
|
17
|
-
/** Elements whose text exists for assistive technology only. */
|
|
18
|
-
const assistiveTextSelector = 'riv-sr-only';
|
|
19
|
-
/** Rows that stand in for data rather than carrying it. */
|
|
20
|
-
const fillerRowSelector = 'riv-zero-state';
|
|
21
|
-
/** Elements that own their own clipboard behavior. */
|
|
22
|
-
const editableSelector = 'input, textarea, select, [contenteditable=""], [contenteditable="true"]';
|
|
23
|
-
/** Whether the copy came from a control that serializes its own value. */
|
|
24
|
-
function isEditable(target) {
|
|
25
|
-
return (target instanceof Element && target.closest(editableSelector) !== null);
|
|
26
|
-
}
|
|
27
|
-
RivTableClipboard.isEditable = isEditable;
|
|
28
|
-
/**
|
|
29
|
-
* Whether `host` is the first element of its kind that the selection touches.
|
|
30
|
-
* A selection can span several tables; deferring to the first keeps instances
|
|
31
|
-
* from overwriting each other's clipboard data.
|
|
32
|
-
*/
|
|
33
|
-
function ownsSelection(host, isSelected) {
|
|
34
|
-
return (Array.from(document.querySelectorAll(host.localName)).find(element => isSelected(element)) === host);
|
|
35
|
-
}
|
|
36
|
-
RivTableClipboard.ownsSelection = ownsSelection;
|
|
37
|
-
/**
|
|
38
|
-
* Serializes the selected region of `tables` (one per row group), or null when
|
|
39
|
-
* the selection covers at most one cell — those are left to the browser so
|
|
40
|
-
* that copying part of a cell's text keeps working.
|
|
41
|
-
*
|
|
42
|
-
* `endpoints` are where the selection starts and ends, which narrow the copied
|
|
43
|
-
* columns to that span. A selection is a linear range in reading order, so
|
|
44
|
-
* dragging down one column touches every column in between; the endpoints are
|
|
45
|
-
* what distinguish "this column" from "these rows".
|
|
46
|
-
*/
|
|
47
|
-
function extract(tables, isSelected, endpoints = []) {
|
|
48
|
-
const layouts = tables.map(layout);
|
|
49
|
-
const columns = selectedColumns(layouts, isSelected, endpoints);
|
|
50
|
-
const headers = layouts.flatMap(l => l.header);
|
|
51
|
-
const rows = layouts
|
|
52
|
-
.flatMap(l => l.body)
|
|
53
|
-
.filter(row => selectedCount(row, isSelected) > 0);
|
|
54
|
-
// Header cells own the pointer for column reordering, so a drag cannot
|
|
55
|
-
// reach them; the header comes along with any copied data instead.
|
|
56
|
-
const header = headers.find(row => selectedCount(row, isSelected) > 0) ??
|
|
57
|
-
(rows.length > 0 ? headers[0] : undefined);
|
|
58
|
-
if (columns.length === 0 ||
|
|
59
|
-
sumBy([...(header ? [header] : []), ...rows], row => selectedCount(row, isSelected)) < 2)
|
|
60
|
-
return null;
|
|
61
|
-
return {
|
|
62
|
-
text: toText(header, rows, columns),
|
|
63
|
-
html: toHtml(header, rows, columns),
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
RivTableClipboard.extract = extract;
|
|
67
|
-
function toText(header, rows, columns) {
|
|
68
|
-
return [
|
|
69
|
-
...(header ? [columns.map(column => headerText(header[column]))] : []),
|
|
70
|
-
...rows.map(row => columns.map(column => text(row[column]))),
|
|
71
|
-
]
|
|
72
|
-
.map(cells => cells.join('\t'))
|
|
73
|
-
.join('\n');
|
|
74
|
-
}
|
|
75
|
-
function toHtml(header, rows, columns) {
|
|
76
|
-
const cells = (values, tag) => values.map(value => `<${tag}>${escapeHtml(value)}</${tag}>`).join('');
|
|
77
|
-
return [
|
|
78
|
-
'<table>',
|
|
79
|
-
header
|
|
80
|
-
? `<thead><tr>${cells(columns.map(column => headerText(header[column])), 'th')}</tr></thead>`
|
|
81
|
-
: '',
|
|
82
|
-
`<tbody>${rows
|
|
83
|
-
.map(row => `<tr>${cells(columns.map(column => text(row[column])), 'td')}</tr>`)
|
|
84
|
-
.join('')}</tbody>`,
|
|
85
|
-
'</table>',
|
|
86
|
-
].join('');
|
|
87
|
-
}
|
|
88
|
-
function layout(table) {
|
|
89
|
-
return {
|
|
90
|
-
header: grid(Array.from(table.querySelectorAll(':scope > thead > tr')).filter(isDataRow)),
|
|
91
|
-
body: grid(Array.from(table.querySelectorAll(':scope > tbody > tr, :scope > tbody > a.row-link')).filter(isDataRow)),
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Maps rows onto a column grid. Cells covered by a rowspan repeat the spanning
|
|
96
|
-
* cell so that every line has one value per column, matching how CSV export
|
|
97
|
-
* flattens spans.
|
|
98
|
-
*/
|
|
99
|
-
function grid(rows) {
|
|
100
|
-
const cells = rows.map(() => []);
|
|
101
|
-
rows.forEach((row, rowIndex) => {
|
|
102
|
-
let column = 0;
|
|
103
|
-
for (const cell of dataCells(row)) {
|
|
104
|
-
while (cells[rowIndex][column] !== undefined)
|
|
105
|
-
column++;
|
|
106
|
-
const rowSpan = Math.max(1, cell.rowSpan);
|
|
107
|
-
const colSpan = Math.max(1, cell.colSpan);
|
|
108
|
-
for (let r = rowIndex; r <= Math.min(rows.length - 1, rowIndex + rowSpan - 1); r++)
|
|
109
|
-
for (let c = column; c < column + colSpan; c++)
|
|
110
|
-
cells[r][c] = cell;
|
|
111
|
-
column += colSpan;
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
return cells;
|
|
115
|
-
}
|
|
116
|
-
function dataCells(row) {
|
|
117
|
-
return Array.from(row.querySelectorAll(':scope > td, :scope > th')).filter(cell => !cell.matches(controlCellSelector));
|
|
118
|
-
}
|
|
119
|
-
/** Excludes the zero-state row, which spans every column. */
|
|
120
|
-
function isDataRow(row) {
|
|
121
|
-
return (row.querySelector(fillerRowSelector) === null &&
|
|
122
|
-
dataCells(row).every(cell => cell.colSpan <= 1));
|
|
123
|
-
}
|
|
124
|
-
function selectedColumns(layouts, isSelected, endpoints) {
|
|
125
|
-
const columns = new Set();
|
|
126
|
-
for (const { header, body } of layouts)
|
|
127
|
-
for (const row of [...header, ...body])
|
|
128
|
-
row.forEach((cell, column) => {
|
|
129
|
-
if (cell !== undefined && isSelected(cell))
|
|
130
|
-
columns.add(column);
|
|
131
|
-
});
|
|
132
|
-
const touched = [...columns].sort((a, b) => a - b);
|
|
133
|
-
// Both ends have to land in a cell to describe a span; anything else (a
|
|
134
|
-
// select-all, an endpoint on a row rather than a cell) keeps every column.
|
|
135
|
-
const span = endpoints
|
|
136
|
-
.map(node => (node ? columnOf(layouts, node) : undefined))
|
|
137
|
-
.filter((column) => column !== undefined);
|
|
138
|
-
return span.length === endpoints.length && span.length > 1
|
|
139
|
-
? touched.filter(column => column >= Math.min(...span) && column <= Math.max(...span))
|
|
140
|
-
: touched;
|
|
141
|
-
}
|
|
142
|
-
function columnOf(layouts, node) {
|
|
143
|
-
for (const { header, body } of layouts)
|
|
144
|
-
for (const row of [...header, ...body]) {
|
|
145
|
-
const column = row.findIndex(cell => cell?.contains(node) === true);
|
|
146
|
-
if (column >= 0)
|
|
147
|
-
return column;
|
|
148
|
-
}
|
|
149
|
-
return undefined;
|
|
150
|
-
}
|
|
151
|
-
function selectedCount(row, isSelected) {
|
|
152
|
-
return row.filter(cell => cell !== undefined && isSelected(cell)).length;
|
|
153
|
-
}
|
|
154
|
-
function headerText(cell) {
|
|
155
|
-
return text(cell?.querySelector(headerLabelSelector) ?? cell);
|
|
156
|
-
}
|
|
157
|
-
function text(cell) {
|
|
158
|
-
return cell ? visibleText(cell).replace(/\s+/g, ' ').trim() : '';
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Template indentation lands in the DOM as newlines and runs of spaces, which
|
|
162
|
-
* split a single row across several spreadsheet rows unless collapsed by the
|
|
163
|
-
* caller. Comment anchors and screen-reader-only content are dropped, and
|
|
164
|
-
* sibling nodes are separated so that adjacent elements do not run together.
|
|
165
|
-
*/
|
|
166
|
-
function visibleText(node) {
|
|
167
|
-
if (node instanceof Text)
|
|
168
|
-
return node.nodeValue ?? '';
|
|
169
|
-
if (node instanceof Element)
|
|
170
|
-
return node.matches(assistiveTextSelector)
|
|
171
|
-
? ''
|
|
172
|
-
: Array.from(node.childNodes).map(visibleText).join(' ');
|
|
173
|
-
return '';
|
|
174
|
-
}
|
|
175
|
-
function escapeHtml(value) {
|
|
176
|
-
return value
|
|
177
|
-
.replace(/&/g, '&')
|
|
178
|
-
.replace(/</g, '<')
|
|
179
|
-
.replace(/>/g, '>');
|
|
180
|
-
}
|
|
181
|
-
})(RivTableClipboard || (RivTableClipboard = {}));
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdGFibGUvdGFibGUvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFL0I7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLEtBQVcsaUJBQWlCLENBMlFqQztBQTNRRCxXQUFpQixpQkFBaUI7SUFDaEMsaURBQWlEO0lBQ2pELE1BQU0sbUJBQW1CLEdBQ3ZCLGtFQUFrRSxDQUFDO0lBRXJFLDhFQUE4RTtJQUM5RSxNQUFNLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDO0lBRTlDLGdFQUFnRTtJQUNoRSxNQUFNLHFCQUFxQixHQUFHLGFBQWEsQ0FBQztJQUU1QywyREFBMkQ7SUFDM0QsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztJQUUzQyxzREFBc0Q7SUFDdEQsTUFBTSxnQkFBZ0IsR0FDcEIseUVBQXlFLENBQUM7SUFvQjVFLDBFQUEwRTtJQUMxRSxTQUFnQixVQUFVLENBQUMsTUFBMEI7UUFDbkQsT0FBTyxDQUNMLE1BQU0sWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksQ0FDdkUsQ0FBQztJQUNKLENBQUM7SUFKZSw0QkFBVSxhQUl6QixDQUFBO0lBRUQ7Ozs7T0FJRztJQUNILFNBQWdCLGFBQWEsQ0FDM0IsSUFBYSxFQUNiLFVBQXlCO1FBRXpCLE9BQU8sQ0FDTCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FDbkUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUNwQixLQUFLLElBQUksQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQVRlLCtCQUFhLGdCQVM1QixDQUFBO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsU0FBZ0IsT0FBTyxDQUNyQixNQUFtQyxFQUNuQyxVQUF5QixFQUN6QixZQUFrRCxFQUFFO1FBRXBELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxPQUFPO2FBQ2pCLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyRCx1RUFBdUU7UUFDdkUsbUVBQW1FO1FBQ25FLE1BQU0sTUFBTSxHQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2RCxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdDLElBQ0UsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3BCLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDbEQsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FDL0IsR0FBRyxDQUFDO1lBRUwsT0FBTyxJQUFJLENBQUM7UUFFZCxPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztZQUNuQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO1NBQ3BDLENBQUM7SUFDSixDQUFDO0lBN0JlLHlCQUFPLFVBNkJ0QixDQUFBO0lBRUQsU0FBUyxNQUFNLENBQ2IsTUFBdUIsRUFDdkIsSUFBb0IsRUFDcEIsT0FBMEI7UUFFMUIsT0FBTztZQUNMLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN0RSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0Q7YUFDRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsU0FBUyxNQUFNLENBQ2IsTUFBdUIsRUFDdkIsSUFBb0IsRUFDcEIsT0FBMEI7UUFFMUIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUF5QixFQUFFLEdBQWdCLEVBQUUsRUFBRSxDQUM1RCxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLE9BQU87WUFDTCxTQUFTO1lBQ1QsTUFBTTtnQkFDSixDQUFDLENBQUMsY0FBYyxLQUFLLENBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDakQsSUFBSSxDQUNMLGVBQWU7Z0JBQ2xCLENBQUMsQ0FBQyxFQUFFO1lBQ04sVUFBVSxJQUFJO2lCQUNYLEdBQUcsQ0FDRixHQUFHLENBQUMsRUFBRSxDQUNKLE9BQU8sS0FBSyxDQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFDeEMsSUFBSSxDQUNMLE9BQU8sQ0FDWDtpQkFDQSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVU7WUFDckIsVUFBVTtTQUNYLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFNBQVMsTUFBTSxDQUFDLEtBQXVCO1FBQ3JDLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUNWLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQzlELFNBQVMsQ0FDVixDQUNGO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FDUixLQUFLLENBQUMsSUFBSSxDQUNSLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEIsa0RBQWtELENBQ25ELENBQ0YsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQ3BCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxJQUFJLENBQUMsSUFBd0I7UUFDcEMsTUFBTSxLQUFLLEdBQThCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUM3QixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDZixLQUFLLE1BQU0sSUFBSSxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxTQUFTO29CQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUN2RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUMsS0FDRSxJQUFJLENBQUMsR0FBRyxRQUFRLEVBQ2hCLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQ3RELENBQUMsRUFBRTtvQkFFSCxLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUU7d0JBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDckUsTUFBTSxJQUFJLE9BQU8sQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTLFNBQVMsQ0FBQyxHQUFZO1FBQzdCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDZixHQUFHLENBQUMsZ0JBQWdCLENBQXVCLDBCQUEwQixDQUFDLENBQ3ZFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELFNBQVMsU0FBUyxDQUFDLEdBQVk7UUFDN0IsT0FBTyxDQUNMLEdBQUcsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsS0FBSyxJQUFJO1lBQzdDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUNoRCxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsZUFBZSxDQUN0QixPQUEwQixFQUMxQixVQUF5QixFQUN6QixTQUErQztRQUUvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ2xDLEtBQUssTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxPQUFPO1lBQ3BDLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDcEMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRTtvQkFDM0IsSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUM7d0JBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEUsQ0FBQyxDQUFDLENBQUM7UUFDUCxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRW5ELHdFQUF3RTtRQUN4RSwyRUFBMkU7UUFDM0UsTUFBTSxJQUFJLEdBQUcsU0FBUzthQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDekQsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFvQixFQUFFLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQzlELE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUN4RCxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDWixNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FDckU7WUFDSCxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ2QsQ0FBQztJQUVELFNBQVMsUUFBUSxDQUNmLE9BQTBCLEVBQzFCLElBQVU7UUFFVixLQUFLLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksT0FBTztZQUNwQyxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxNQUFNLElBQUksQ0FBQztvQkFBRSxPQUFPLE1BQU0sQ0FBQztZQUNqQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELFNBQVMsYUFBYSxDQUFDLEdBQVEsRUFBRSxVQUF5QjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzRSxDQUFDO0lBRUQsU0FBUyxVQUFVLENBQUMsSUFBeUI7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxTQUFTLElBQUksQ0FBQyxJQUFnQztRQUM1QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTLFdBQVcsQ0FBQyxJQUFVO1FBQzdCLElBQUksSUFBSSxZQUFZLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ3RELElBQUksSUFBSSxZQUFZLE9BQU87WUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDO2dCQUN4QyxDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3RCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUFhO1FBQy9CLE9BQU8sS0FBSzthQUNULE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztBQUNILENBQUMsRUEzUWdCLGlCQUFpQixLQUFqQixpQkFBaUIsUUEyUWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3VtQnkgfSBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIENsaXBib2FyZCBzZXJpYWxpemF0aW9uIGZvciBgcml2LXRhYmxlYC5cbiAqXG4gKiBSb3dzIHRoYXQgaGF2ZSBhIGxpbmsgcmVuZGVyIGFzIGA8YSBjbGFzcz1cInJvdy1saW5rXCI+YCByYXRoZXIgdGhhbiBgPHRyPmAsIGFuZFxuICogdGhlIGJyb3dzZXIncyBjbGlwYm9hcmQgc2VyaWFsaXplciBkb2VzIG5vdCB0cmVhdCB0aG9zZSBhcyB0YWJsZSByb3dzIOKAlCB0aGVcbiAqIGNvcGllZCBjb250ZW50IHBhc3RlcyBpbnRvIGEgc3ByZWFkc2hlZXQgYXMgb25lIGxhdGVyYWwgcnVuIGluc3RlYWQgb2YgYSBncmlkLlxuICogVGhlc2UgaGVscGVycyByZWJ1aWxkIHRoZSByZW5kZXJlZCBncmlkIHNvIHRoYXQgY29waWVkIGNvbnRlbnQgcGFzdGVzIGFzIHJvd3NcbiAqIGFuZCBjb2x1bW5zLlxuICovXG5leHBvcnQgbmFtZXNwYWNlIFJpdlRhYmxlQ2xpcGJvYXJkIHtcbiAgLyoqIENlbGxzIHRoYXQgaG9sZCBjb250cm9scyByYXRoZXIgdGhhbiBkYXRhLiAqL1xuICBjb25zdCBjb250cm9sQ2VsbFNlbGVjdG9yID1cbiAgICAndGguc2VsZWN0aW9uLWhlYWQsIHRoLm1lbnUtaGVhZCwgdGQuc2VsZWN0aW9uLWJvZHksIHRkLm1lbnUtYm9keSc7XG5cbiAgLyoqIFRoZSBjb2x1bW4gbmFtZSB3aXRoaW4gYSBoZWFkZXIgY2VsbDsgdGhlIHJlc3Qgb2YgdGhlIGNlbGwgaXMgY29udHJvbHMuICovXG4gIGNvbnN0IGhlYWRlckxhYmVsU2VsZWN0b3IgPSAnLmhlYWRlci13cmFwcGVyJztcblxuICAvKiogRWxlbWVudHMgd2hvc2UgdGV4dCBleGlzdHMgZm9yIGFzc2lzdGl2ZSB0ZWNobm9sb2d5IG9ubHkuICovXG4gIGNvbnN0IGFzc2lzdGl2ZVRleHRTZWxlY3RvciA9ICdyaXYtc3Itb25seSc7XG5cbiAgLyoqIFJvd3MgdGhhdCBzdGFuZCBpbiBmb3IgZGF0YSByYXRoZXIgdGhhbiBjYXJyeWluZyBpdC4gKi9cbiAgY29uc3QgZmlsbGVyUm93U2VsZWN0b3IgPSAncml2LXplcm8tc3RhdGUnO1xuXG4gIC8qKiBFbGVtZW50cyB0aGF0IG93biB0aGVpciBvd24gY2xpcGJvYXJkIGJlaGF2aW9yLiAqL1xuICBjb25zdCBlZGl0YWJsZVNlbGVjdG9yID1cbiAgICAnaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtjb250ZW50ZWRpdGFibGU9XCJcIl0sIFtjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJztcblxuICBleHBvcnQgdHlwZSBQYXlsb2FkID0ge1xuICAgIC8qKiBUYWItZGVsaW1pdGVkIHJvd3MsIG9uZSBsaW5lIHBlciByb3cuICovXG4gICAgdGV4dDogc3RyaW5nO1xuICAgIC8qKiBFcXVpdmFsZW50IHRhYmxlIG1hcmt1cCwgZm9yIHRhcmdldHMgdGhhdCBwcmVmZXIgcmljaCBjb250ZW50LiAqL1xuICAgIGh0bWw6IHN0cmluZztcbiAgfTtcblxuICAvKiogUHJlZGljYXRlIGZvciB3aGV0aGVyIGEgbm9kZSBmYWxscyB3aXRoaW4gdGhlIHVzZXIncyBzZWxlY3Rpb24uICovXG4gIGV4cG9ydCB0eXBlIFNlbGVjdGlvblRlc3QgPSAobm9kZTogTm9kZSkgPT4gYm9vbGVhbjtcblxuICAvKiogQSByZW5kZXJlZCByb3csIGhvbGRpbmcgdGhlIGNlbGwgb2NjdXB5aW5nIGVhY2ggZGF0YSBjb2x1bW4uICovXG4gIHR5cGUgUm93ID0gcmVhZG9ubHkgKEVsZW1lbnQgfCB1bmRlZmluZWQpW107XG5cbiAgdHlwZSBMYXlvdXQgPSB7XG4gICAgaGVhZGVyOiByZWFkb25seSBSb3dbXTtcbiAgICBib2R5OiByZWFkb25seSBSb3dbXTtcbiAgfTtcblxuICAvKiogV2hldGhlciB0aGUgY29weSBjYW1lIGZyb20gYSBjb250cm9sIHRoYXQgc2VyaWFsaXplcyBpdHMgb3duIHZhbHVlLiAqL1xuICBleHBvcnQgZnVuY3Rpb24gaXNFZGl0YWJsZSh0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ICYmIHRhcmdldC5jbG9zZXN0KGVkaXRhYmxlU2VsZWN0b3IpICE9PSBudWxsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGBob3N0YCBpcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBpdHMga2luZCB0aGF0IHRoZSBzZWxlY3Rpb24gdG91Y2hlcy5cbiAgICogQSBzZWxlY3Rpb24gY2FuIHNwYW4gc2V2ZXJhbCB0YWJsZXM7IGRlZmVycmluZyB0byB0aGUgZmlyc3Qga2VlcHMgaW5zdGFuY2VzXG4gICAqIGZyb20gb3ZlcndyaXRpbmcgZWFjaCBvdGhlcidzIGNsaXBib2FyZCBkYXRhLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIG93bnNTZWxlY3Rpb24oXG4gICAgaG9zdDogRWxlbWVudCxcbiAgICBpc1NlbGVjdGVkOiBTZWxlY3Rpb25UZXN0LFxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGhvc3QubG9jYWxOYW1lKSkuZmluZChlbGVtZW50ID0+XG4gICAgICAgIGlzU2VsZWN0ZWQoZWxlbWVudCksXG4gICAgICApID09PSBob3N0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHRoZSBzZWxlY3RlZCByZWdpb24gb2YgYHRhYmxlc2AgKG9uZSBwZXIgcm93IGdyb3VwKSwgb3IgbnVsbCB3aGVuXG4gICAqIHRoZSBzZWxlY3Rpb24gY292ZXJzIGF0IG1vc3Qgb25lIGNlbGwg4oCUIHRob3NlIGFyZSBsZWZ0IHRvIHRoZSBicm93c2VyIHNvXG4gICAqIHRoYXQgY29weWluZyBwYXJ0IG9mIGEgY2VsbCdzIHRleHQga2VlcHMgd29ya2luZy5cbiAgICpcbiAgICogYGVuZHBvaW50c2AgYXJlIHdoZXJlIHRoZSBzZWxlY3Rpb24gc3RhcnRzIGFuZCBlbmRzLCB3aGljaCBuYXJyb3cgdGhlIGNvcGllZFxuICAgKiBjb2x1bW5zIHRvIHRoYXQgc3Bhbi4gQSBzZWxlY3Rpb24gaXMgYSBsaW5lYXIgcmFuZ2UgaW4gcmVhZGluZyBvcmRlciwgc29cbiAgICogZHJhZ2dpbmcgZG93biBvbmUgY29sdW1uIHRvdWNoZXMgZXZlcnkgY29sdW1uIGluIGJldHdlZW47IHRoZSBlbmRwb2ludHMgYXJlXG4gICAqIHdoYXQgZGlzdGluZ3Vpc2ggXCJ0aGlzIGNvbHVtblwiIGZyb20gXCJ0aGVzZSByb3dzXCIuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gZXh0cmFjdChcbiAgICB0YWJsZXM6IHJlYWRvbmx5IEhUTUxUYWJsZUVsZW1lbnRbXSxcbiAgICBpc1NlbGVjdGVkOiBTZWxlY3Rpb25UZXN0LFxuICAgIGVuZHBvaW50czogcmVhZG9ubHkgKE5vZGUgfCBudWxsIHwgdW5kZWZpbmVkKVtdID0gW10sXG4gICk6IFBheWxvYWQgfCBudWxsIHtcbiAgICBjb25zdCBsYXlvdXRzID0gdGFibGVzLm1hcChsYXlvdXQpO1xuICAgIGNvbnN0IGNvbHVtbnMgPSBzZWxlY3RlZENvbHVtbnMobGF5b3V0cywgaXNTZWxlY3RlZCwgZW5kcG9pbnRzKTtcbiAgICBjb25zdCBoZWFkZXJzID0gbGF5b3V0cy5mbGF0TWFwKGwgPT4gbC5oZWFkZXIpO1xuICAgIGNvbnN0IHJvd3MgPSBsYXlvdXRzXG4gICAgICAuZmxhdE1hcChsID0+IGwuYm9keSlcbiAgICAgIC5maWx0ZXIocm93ID0+IHNlbGVjdGVkQ291bnQocm93LCBpc1NlbGVjdGVkKSA+IDApO1xuICAgIC8vIEhlYWRlciBjZWxscyBvd24gdGhlIHBvaW50ZXIgZm9yIGNvbHVtbiByZW9yZGVyaW5nLCBzbyBhIGRyYWcgY2Fubm90XG4gICAgLy8gcmVhY2ggdGhlbTsgdGhlIGhlYWRlciBjb21lcyBhbG9uZyB3aXRoIGFueSBjb3BpZWQgZGF0YSBpbnN0ZWFkLlxuICAgIGNvbnN0IGhlYWRlciA9XG4gICAgICBoZWFkZXJzLmZpbmQocm93ID0+IHNlbGVjdGVkQ291bnQocm93LCBpc1NlbGVjdGVkKSA+IDApID8/XG4gICAgICAocm93cy5sZW5ndGggPiAwID8gaGVhZGVyc1swXSA6IHVuZGVmaW5lZCk7XG5cbiAgICBpZiAoXG4gICAgICBjb2x1bW5zLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgc3VtQnkoWy4uLihoZWFkZXIgPyBbaGVhZGVyXSA6IFtdKSwgLi4ucm93c10sIHJvdyA9PlxuICAgICAgICBzZWxlY3RlZENvdW50KHJvdywgaXNTZWxlY3RlZCksXG4gICAgICApIDwgMlxuICAgIClcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHQ6IHRvVGV4dChoZWFkZXIsIHJvd3MsIGNvbHVtbnMpLFxuICAgICAgaHRtbDogdG9IdG1sKGhlYWRlciwgcm93cywgY29sdW1ucyksXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRvVGV4dChcbiAgICBoZWFkZXI6IFJvdyB8IHVuZGVmaW5lZCxcbiAgICByb3dzOiByZWFkb25seSBSb3dbXSxcbiAgICBjb2x1bW5zOiByZWFkb25seSBudW1iZXJbXSxcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uKGhlYWRlciA/IFtjb2x1bW5zLm1hcChjb2x1bW4gPT4gaGVhZGVyVGV4dChoZWFkZXJbY29sdW1uXSkpXSA6IFtdKSxcbiAgICAgIC4uLnJvd3MubWFwKHJvdyA9PiBjb2x1bW5zLm1hcChjb2x1bW4gPT4gdGV4dChyb3dbY29sdW1uXSkpKSxcbiAgICBdXG4gICAgICAubWFwKGNlbGxzID0+IGNlbGxzLmpvaW4oJ1xcdCcpKVxuICAgICAgLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9IdG1sKFxuICAgIGhlYWRlcjogUm93IHwgdW5kZWZpbmVkLFxuICAgIHJvd3M6IHJlYWRvbmx5IFJvd1tdLFxuICAgIGNvbHVtbnM6IHJlYWRvbmx5IG51bWJlcltdLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGNlbGxzID0gKHZhbHVlczogcmVhZG9ubHkgc3RyaW5nW10sIHRhZzogJ3RoJyB8ICd0ZCcpID0+XG4gICAgICB2YWx1ZXMubWFwKHZhbHVlID0+IGA8JHt0YWd9PiR7ZXNjYXBlSHRtbCh2YWx1ZSl9PC8ke3RhZ30+YCkuam9pbignJyk7XG4gICAgcmV0dXJuIFtcbiAgICAgICc8dGFibGU+JyxcbiAgICAgIGhlYWRlclxuICAgICAgICA/IGA8dGhlYWQ+PHRyPiR7Y2VsbHMoXG4gICAgICAgICAgICBjb2x1bW5zLm1hcChjb2x1bW4gPT4gaGVhZGVyVGV4dChoZWFkZXJbY29sdW1uXSkpLFxuICAgICAgICAgICAgJ3RoJyxcbiAgICAgICAgICApfTwvdHI+PC90aGVhZD5gXG4gICAgICAgIDogJycsXG4gICAgICBgPHRib2R5PiR7cm93c1xuICAgICAgICAubWFwKFxuICAgICAgICAgIHJvdyA9PlxuICAgICAgICAgICAgYDx0cj4ke2NlbGxzKFxuICAgICAgICAgICAgICBjb2x1bW5zLm1hcChjb2x1bW4gPT4gdGV4dChyb3dbY29sdW1uXSkpLFxuICAgICAgICAgICAgICAndGQnLFxuICAgICAgICAgICAgKX08L3RyPmAsXG4gICAgICAgIClcbiAgICAgICAgLmpvaW4oJycpfTwvdGJvZHk+YCxcbiAgICAgICc8L3RhYmxlPicsXG4gICAgXS5qb2luKCcnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxheW91dCh0YWJsZTogSFRNTFRhYmxlRWxlbWVudCk6IExheW91dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhlYWRlcjogZ3JpZChcbiAgICAgICAgQXJyYXkuZnJvbSh0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKCc6c2NvcGUgPiB0aGVhZCA+IHRyJykpLmZpbHRlcihcbiAgICAgICAgICBpc0RhdGFSb3csXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgYm9keTogZ3JpZChcbiAgICAgICAgQXJyYXkuZnJvbShcbiAgICAgICAgICB0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgJzpzY29wZSA+IHRib2R5ID4gdHIsIDpzY29wZSA+IHRib2R5ID4gYS5yb3ctbGluaycsXG4gICAgICAgICAgKSxcbiAgICAgICAgKS5maWx0ZXIoaXNEYXRhUm93KSxcbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIHJvd3Mgb250byBhIGNvbHVtbiBncmlkLiBDZWxscyBjb3ZlcmVkIGJ5IGEgcm93c3BhbiByZXBlYXQgdGhlIHNwYW5uaW5nXG4gICAqIGNlbGwgc28gdGhhdCBldmVyeSBsaW5lIGhhcyBvbmUgdmFsdWUgcGVyIGNvbHVtbiwgbWF0Y2hpbmcgaG93IENTViBleHBvcnRcbiAgICogZmxhdHRlbnMgc3BhbnMuXG4gICAqL1xuICBmdW5jdGlvbiBncmlkKHJvd3M6IHJlYWRvbmx5IEVsZW1lbnRbXSk6IFJvd1tdIHtcbiAgICBjb25zdCBjZWxsczogKEVsZW1lbnQgfCB1bmRlZmluZWQpW11bXSA9IHJvd3MubWFwKCgpID0+IFtdKTtcbiAgICByb3dzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgIGxldCBjb2x1bW4gPSAwO1xuICAgICAgZm9yIChjb25zdCBjZWxsIG9mIGRhdGFDZWxscyhyb3cpKSB7XG4gICAgICAgIHdoaWxlIChjZWxsc1tyb3dJbmRleF1bY29sdW1uXSAhPT0gdW5kZWZpbmVkKSBjb2x1bW4rKztcbiAgICAgICAgY29uc3Qgcm93U3BhbiA9IE1hdGgubWF4KDEsIGNlbGwucm93U3Bhbik7XG4gICAgICAgIGNvbnN0IGNvbFNwYW4gPSBNYXRoLm1heCgxLCBjZWxsLmNvbFNwYW4pO1xuICAgICAgICBmb3IgKFxuICAgICAgICAgIGxldCByID0gcm93SW5kZXg7XG4gICAgICAgICAgciA8PSBNYXRoLm1pbihyb3dzLmxlbmd0aCAtIDEsIHJvd0luZGV4ICsgcm93U3BhbiAtIDEpO1xuICAgICAgICAgIHIrK1xuICAgICAgICApXG4gICAgICAgICAgZm9yIChsZXQgYyA9IGNvbHVtbjsgYyA8IGNvbHVtbiArIGNvbFNwYW47IGMrKykgY2VsbHNbcl1bY10gPSBjZWxsO1xuICAgICAgICBjb2x1bW4gKz0gY29sU3BhbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY2VsbHM7XG4gIH1cblxuICBmdW5jdGlvbiBkYXRhQ2VsbHMocm93OiBFbGVtZW50KTogSFRNTFRhYmxlQ2VsbEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICByb3cucXVlcnlTZWxlY3RvckFsbDxIVE1MVGFibGVDZWxsRWxlbWVudD4oJzpzY29wZSA+IHRkLCA6c2NvcGUgPiB0aCcpLFxuICAgICkuZmlsdGVyKGNlbGwgPT4gIWNlbGwubWF0Y2hlcyhjb250cm9sQ2VsbFNlbGVjdG9yKSk7XG4gIH1cblxuICAvKiogRXhjbHVkZXMgdGhlIHplcm8tc3RhdGUgcm93LCB3aGljaCBzcGFucyBldmVyeSBjb2x1bW4uICovXG4gIGZ1bmN0aW9uIGlzRGF0YVJvdyhyb3c6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgcm93LnF1ZXJ5U2VsZWN0b3IoZmlsbGVyUm93U2VsZWN0b3IpID09PSBudWxsICYmXG4gICAgICBkYXRhQ2VsbHMocm93KS5ldmVyeShjZWxsID0+IGNlbGwuY29sU3BhbiA8PSAxKVxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBzZWxlY3RlZENvbHVtbnMoXG4gICAgbGF5b3V0czogcmVhZG9ubHkgTGF5b3V0W10sXG4gICAgaXNTZWxlY3RlZDogU2VsZWN0aW9uVGVzdCxcbiAgICBlbmRwb2ludHM6IHJlYWRvbmx5IChOb2RlIHwgbnVsbCB8IHVuZGVmaW5lZClbXSxcbiAgKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgICBmb3IgKGNvbnN0IHsgaGVhZGVyLCBib2R5IH0gb2YgbGF5b3V0cylcbiAgICAgIGZvciAoY29uc3Qgcm93IG9mIFsuLi5oZWFkZXIsIC4uLmJvZHldKVxuICAgICAgICByb3cuZm9yRWFjaCgoY2VsbCwgY29sdW1uKSA9PiB7XG4gICAgICAgICAgaWYgKGNlbGwgIT09IHVuZGVmaW5lZCAmJiBpc1NlbGVjdGVkKGNlbGwpKSBjb2x1bW5zLmFkZChjb2x1bW4pO1xuICAgICAgICB9KTtcbiAgICBjb25zdCB0b3VjaGVkID0gWy4uLmNvbHVtbnNdLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcblxuICAgIC8vIEJvdGggZW5kcyBoYXZlIHRvIGxhbmQgaW4gYSBjZWxsIHRvIGRlc2NyaWJlIGEgc3BhbjsgYW55dGhpbmcgZWxzZSAoYVxuICAgIC8vIHNlbGVjdC1hbGwsIGFuIGVuZHBvaW50IG9uIGEgcm93IHJhdGhlciB0aGFuIGEgY2VsbCkga2VlcHMgZXZlcnkgY29sdW1uLlxuICAgIGNvbnN0IHNwYW4gPSBlbmRwb2ludHNcbiAgICAgIC5tYXAobm9kZSA9PiAobm9kZSA/IGNvbHVtbk9mKGxheW91dHMsIG5vZGUpIDogdW5kZWZpbmVkKSlcbiAgICAgIC5maWx0ZXIoKGNvbHVtbik6IGNvbHVtbiBpcyBudW1iZXIgPT4gY29sdW1uICE9PSB1bmRlZmluZWQpO1xuICAgIHJldHVybiBzcGFuLmxlbmd0aCA9PT0gZW5kcG9pbnRzLmxlbmd0aCAmJiBzcGFuLmxlbmd0aCA+IDFcbiAgICAgID8gdG91Y2hlZC5maWx0ZXIoXG4gICAgICAgICAgY29sdW1uID0+IGNvbHVtbiA+PSBNYXRoLm1pbiguLi5zcGFuKSAmJiBjb2x1bW4gPD0gTWF0aC5tYXgoLi4uc3BhbiksXG4gICAgICAgIClcbiAgICAgIDogdG91Y2hlZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbHVtbk9mKFxuICAgIGxheW91dHM6IHJlYWRvbmx5IExheW91dFtdLFxuICAgIG5vZGU6IE5vZGUsXG4gICk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgZm9yIChjb25zdCB7IGhlYWRlciwgYm9keSB9IG9mIGxheW91dHMpXG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiBbLi4uaGVhZGVyLCAuLi5ib2R5XSkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSByb3cuZmluZEluZGV4KGNlbGwgPT4gY2VsbD8uY29udGFpbnMobm9kZSkgPT09IHRydWUpO1xuICAgICAgICBpZiAoY29sdW1uID49IDApIHJldHVybiBjb2x1bW47XG4gICAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlbGVjdGVkQ291bnQocm93OiBSb3csIGlzU2VsZWN0ZWQ6IFNlbGVjdGlvblRlc3QpOiBudW1iZXIge1xuICAgIHJldHVybiByb3cuZmlsdGVyKGNlbGwgPT4gY2VsbCAhPT0gdW5kZWZpbmVkICYmIGlzU2VsZWN0ZWQoY2VsbCkpLmxlbmd0aDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhlYWRlclRleHQoY2VsbDogRWxlbWVudCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRleHQoY2VsbD8ucXVlcnlTZWxlY3RvcihoZWFkZXJMYWJlbFNlbGVjdG9yKSA/PyBjZWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRleHQoY2VsbDogRWxlbWVudCB8IHVuZGVmaW5lZCB8IG51bGwpOiBzdHJpbmcge1xuICAgIHJldHVybiBjZWxsID8gdmlzaWJsZVRleHQoY2VsbCkucmVwbGFjZSgvXFxzKy9nLCAnICcpLnRyaW0oKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIGluZGVudGF0aW9uIGxhbmRzIGluIHRoZSBET00gYXMgbmV3bGluZXMgYW5kIHJ1bnMgb2Ygc3BhY2VzLCB3aGljaFxuICAgKiBzcGxpdCBhIHNpbmdsZSByb3cgYWNyb3NzIHNldmVyYWwgc3ByZWFkc2hlZXQgcm93cyB1bmxlc3MgY29sbGFwc2VkIGJ5IHRoZVxuICAgKiBjYWxsZXIuIENvbW1lbnQgYW5jaG9ycyBhbmQgc2NyZWVuLXJlYWRlci1vbmx5IGNvbnRlbnQgYXJlIGRyb3BwZWQsIGFuZFxuICAgKiBzaWJsaW5nIG5vZGVzIGFyZSBzZXBhcmF0ZWQgc28gdGhhdCBhZGphY2VudCBlbGVtZW50cyBkbyBub3QgcnVuIHRvZ2V0aGVyLlxuICAgKi9cbiAgZnVuY3Rpb24gdmlzaWJsZVRleHQobm9kZTogTm9kZSk6IHN0cmluZyB7XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBUZXh0KSByZXR1cm4gbm9kZS5ub2RlVmFsdWUgPz8gJyc7XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KVxuICAgICAgcmV0dXJuIG5vZGUubWF0Y2hlcyhhc3Npc3RpdmVUZXh0U2VsZWN0b3IpXG4gICAgICAgID8gJydcbiAgICAgICAgOiBBcnJheS5mcm9tKG5vZGUuY2hpbGROb2RlcykubWFwKHZpc2libGVUZXh0KS5qb2luKCcgJyk7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZnVuY3Rpb24gZXNjYXBlSHRtbCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICB9XG59XG4iXX0=
|