@rivet-health/design-system 28.2.2 → 28.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/overlay/modal/dialog/dialog.component.mjs +2 -2
- package/fesm2015/rivet-health-design-system.mjs +2 -2
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +2 -2
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rivet-health-design-system.mjs","sources":["../../../projects/riv/src/lib/download/download.service.ts","../../../projects/riv/src/lib/format/pipes/common.ts","../../../projects/riv/src/lib/format/pipes/date.pipe.ts","../../../projects/riv/src/lib/format/pipes/days.pipe.ts","../../../projects/riv/src/lib/format/pipes/dollars.pipe.ts","../../../projects/riv/src/lib/format/pipes/number.pipe.ts","../../../projects/riv/src/lib/format/pipes/percentage.pipe.ts","../../../projects/riv/src/lib/format/pipes/small-currency.pipe.ts","../../../projects/riv/src/lib/overlay/callout/callout.helpers.ts","../../../projects/riv/src/lib/overlay/callout/lock-scroll.directive.ts","../../../projects/riv/src/lib/size/size.directive.ts","../../../projects/riv/src/lib/overlay/callout/callout.component.ts","../../../projects/riv/src/lib/overlay/callout/callout.component.html","../../../projects/riv/src/lib/overlay/overlay.service.ts","../../../projects/riv/src/lib/overlay/overlay.directive.ts","../../../projects/riv/src/lib/overlay/callout/tooltip/tooltip.component.ts","../../../projects/riv/src/lib/overlay/callout/tooltip/tooltip.component.html","../../../projects/riv/src/lib/overlay/callout/tooltip/tooltip.directive.ts","../../../projects/riv/src/lib/format/svg-text-truncate/svg-text-truncate.directive.ts","../../../projects/riv/src/lib/format/truncate/truncate.component.ts","../../../projects/riv/src/lib/format/truncate/truncate.component.html","../../../projects/riv/src/lib/icon/dom-cache.ts","../../../projects/riv/src/lib/icon/icons.ts","../../../projects/riv/src/lib/icon/icon.component.ts","../../../projects/riv/src/lib/icon/icon.component.html","../../../projects/riv/src/lib/overlay/callout/help/help.component.ts","../../../projects/riv/src/lib/overlay/callout/help/help.component.html","../../../projects/riv/src/lib/navigation/link/link.component.ts","../../../projects/riv/src/lib/navigation/link/link.component.html","../../../projects/riv/src/lib/input/input-label/input-label.component.ts","../../../projects/riv/src/lib/input/input-label/input-label.component.html","../../../projects/riv/src/lib/input/auto-focus/auto-focus.directive.ts","../../../projects/riv/src/lib/input/text-field/text-field.component.ts","../../../projects/riv/src/lib/input/text-field/text-field.component.html","../../../projects/riv/src/lib/input/alphabetic-field/alphabetic-field.component.ts","../../../projects/riv/src/lib/input/button-group/button-group.component.ts","../../../projects/riv/src/lib/input/button-group/button-group.component.html","../../../projects/riv/src/lib/load/loading/loading.component.ts","../../../projects/riv/src/lib/load/loading/loading.component.html","../../../projects/riv/src/lib/input/button/button.component.ts","../../../projects/riv/src/lib/input/button/button.component.html","../../../projects/riv/src/lib/input/checkbox/checkbox.component.ts","../../../projects/riv/src/lib/input/checkbox/checkbox.component.html","../../../projects/riv/src/lib/input/card-checkbox/card-checkbox.component.ts","../../../projects/riv/src/lib/input/card-checkbox/card-checkbox.component.html","../../../projects/riv/src/lib/input/number-field/number-field.component.ts","../../../projects/riv/src/lib/input/number-field/number-field.component.html","../../../projects/riv/src/lib/input/currency-field/currency-field.component.ts","../../../projects/riv/src/lib/input/currency-field/currency-field.component.html","../../../projects/riv/src/lib/util/local-storage.ts","../../../projects/riv/src/lib/input/select/state.ts","../../../projects/riv/src/lib/load/loading-cover/loading-cover.component.ts","../../../projects/riv/src/lib/load/loading-cover/loading-cover.component.html","../../../projects/riv/src/lib/input/search/search.component.ts","../../../projects/riv/src/lib/input/search/search.component.html","../../../projects/riv/src/lib/visualization/highlight/highlight.helpers.ts","../../../projects/riv/src/lib/visualization/highlight/highlight.component.ts","../../../projects/riv/src/lib/visualization/highlight/highlight.component.html","../../../projects/riv/src/lib/input/select/select-node/select-node.component.ts","../../../projects/riv/src/lib/input/select/select-node/select-node.component.html","../../../projects/riv/src/lib/visualization/zero-state/zero-state.component.ts","../../../projects/riv/src/lib/visualization/zero-state/zero-state.component.html","../../../projects/riv/src/lib/input/select/select/select.component.ts","../../../projects/riv/src/lib/input/select/select/select.component.html","../../../projects/riv/src/lib/input/simple-select/simple-select.component.ts","../../../projects/riv/src/lib/input/simple-select/simple-select.component.html","../../../projects/riv/src/lib/input/simple-select/option-group.pipe.ts","../../../projects/riv/src/lib/input/calendar/calendar.component.ts","../../../projects/riv/src/lib/input/calendar/calendar.component.html","../../../projects/riv/src/lib/input/date-range/date-range.component.ts","../../../projects/riv/src/lib/input/date-range/date-range.component.html","../../../projects/riv/src/lib/input/date/date.component.ts","../../../projects/riv/src/lib/input/date/date.component.html","../../../projects/riv/src/lib/input/percentage-field/percentage-field.component.ts","../../../projects/riv/src/lib/input/percentage-field/percentage-field.component.html","../../../projects/riv/src/lib/input/radio/radio.component.ts","../../../projects/riv/src/lib/input/radio/radio.component.html","../../../projects/riv/src/lib/input/switch-checkbox/switch-checkbox.component.ts","../../../projects/riv/src/lib/input/switch-checkbox/switch-checkbox.component.html","../../../projects/riv/src/lib/input/textarea-field/textarea-field.component.ts","../../../projects/riv/src/lib/input/textarea-field/textarea-field.component.html","../../../projects/riv/src/lib/navigation/tabs/tab/tab.component.ts","../../../projects/riv/src/lib/navigation/tabs/tab/tab.component.html","../../../projects/riv/src/lib/navigation/tabs/tabs/tabs.component.ts","../../../projects/riv/src/lib/navigation/tabs/tabs/tabs.component.html","../../../projects/riv/src/lib/navigation/views/state.ts","../../../projects/riv/src/lib/overlay/overlay-outlet.component.ts","../../../projects/riv/src/lib/overlay/overlay-outlet.component.html","../../../projects/riv/src/lib/overlay/modal/modal.component.ts","../../../projects/riv/src/lib/overlay/modal/modal.component.html","../../../projects/riv/src/lib/overlay/modal/side-sheet/side-sheet.component.ts","../../../projects/riv/src/lib/overlay/modal/side-sheet/side-sheet.component.html","../../../projects/riv/src/lib/overlay/modal/dialog/dialog.component.ts","../../../projects/riv/src/lib/overlay/modal/dialog/dialog.component.html","../../../projects/riv/src/lib/navigation/views/edit-view/edit-view.component.ts","../../../projects/riv/src/lib/navigation/views/edit-view/edit-view.component.html","../../../projects/riv/src/lib/overlay/callout/menu/menu.component.ts","../../../projects/riv/src/lib/overlay/callout/menu/menu.component.html","../../../projects/riv/src/lib/overlay/callout/menu/menu-divider/menu-divider.component.ts","../../../projects/riv/src/lib/overlay/callout/menu/menu-item/menu-item.component.ts","../../../projects/riv/src/lib/overlay/callout/menu/menu-item/menu-item.component.html","../../../projects/riv/src/lib/navigation/views/view-menu/view-menu.component.ts","../../../projects/riv/src/lib/navigation/views/view-menu/view-menu.component.html","../../../projects/riv/src/lib/navigation/views/all-views-modal/all-views-modal.component.ts","../../../projects/riv/src/lib/navigation/views/all-views-modal/all-views-modal.component.html","../../../projects/riv/src/lib/overlay/toast/toast.component.ts","../../../projects/riv/src/lib/overlay/toast/toast.component.html","../../../projects/riv/src/lib/navigation/views/views/views.component.ts","../../../projects/riv/src/lib/navigation/views/views/views.component.html","../../../projects/riv/src/lib/notification/badge/badge.component.ts","../../../projects/riv/src/lib/notification/badge/badge.component.html","../../../projects/riv/src/lib/notification/banner/banner-action.component.ts","../../../projects/riv/src/lib/notification/banner/banner-action.component.html","../../../projects/riv/src/lib/notification/banner/banner.component.ts","../../../projects/riv/src/lib/notification/banner/banner.component.html","../../../projects/riv/src/lib/notification/notification-badge/notification-badge.component.ts","../../../projects/riv/src/lib/overlay/callout/tooltip/locked-tooltip.directive.ts","../../../projects/riv/src/lib/overlay/toast/toast-action.component.ts","../../../projects/riv/src/lib/overlay/toast/toast-action.component.html","../../../projects/riv/src/lib/table/simple-table/simple-table-cell.component.ts","../../../projects/riv/src/lib/table/simple-table/simple-table-cell.component.html","../../../projects/riv/src/lib/table/simple-table/simple-table-header-cell.component.ts","../../../projects/riv/src/lib/table/simple-table/simple-table-header-cell.component.html","../../../projects/riv/src/lib/table/simple-table/simple-table-row.component.ts","../../../projects/riv/src/lib/table/simple-table/simple-table-row.component.html","../../../projects/riv/src/lib/table/table/state.ts","../../../projects/riv/src/lib/table/simple-table/coordinate-helper.ts","../../../projects/riv/src/lib/table/simple-table/simple-table.component.ts","../../../projects/riv/src/lib/table/simple-table/simple-table.component.html","../../../projects/riv/src/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.ts","../../../projects/riv/src/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.html","../../../projects/riv/src/lib/table/table/table-column-settings/table-column-settings.component.ts","../../../projects/riv/src/lib/table/table/table-column-settings/table-column-settings.component.html","../../../projects/riv/src/lib/table/table/table-csv-export/table-csv-export.component.ts","../../../projects/riv/src/lib/table/table/table-csv-export/table-csv-export.component.html","../../../projects/riv/src/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.ts","../../../projects/riv/src/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.html","../../../projects/riv/src/lib/table/table/table-search-columns/table-search-columns.component.ts","../../../projects/riv/src/lib/table/table/table-search-columns/table-search-columns.component.html","../../../projects/riv/src/lib/table/table/table-search/table-search.component.ts","../../../projects/riv/src/lib/table/table/table-search/table-search.component.html","../../../projects/riv/src/lib/table/table/table/table.component.ts","../../../projects/riv/src/lib/table/table/table/table.component.html","../../../projects/riv/src/lib/visualization/chart/chart.ts","../../../projects/riv/src/lib/visualization/legend-item/legend-item.component.ts","../../../projects/riv/src/lib/visualization/legend-item/legend-item.component.html","../../../projects/riv/src/lib/visualization/chart/chart.component.ts","../../../projects/riv/src/lib/visualization/chart/chart.component.html","../../../projects/riv/src/lib/visualization/data-table/data-table-row.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table-cell.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table-header-cell.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table.component.ts","../../../projects/riv/src/lib/visualization/donut/donut.component.ts","../../../projects/riv/src/lib/visualization/donut/donut.component.html","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.helpers.ts","../../../projects/riv/src/lib/visualization/metric/metric.component.ts","../../../projects/riv/src/lib/visualization/metric/metric.component.html","../../../projects/riv/src/lib/visualization/trend/trend.component.ts","../../../projects/riv/src/lib/visualization/trend/trend.component.html","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.component.ts","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.component.html","../../../projects/riv/src/lib/visualization/issue/issue.component.ts","../../../projects/riv/src/lib/visualization/issue/issue.component.html","../../../projects/riv/src/lib/visualization/progress/progress.component.ts","../../../projects/riv/src/lib/visualization/progress/progress.component.html","../../../projects/riv/src/lib/visualization/intervals.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.helpers.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.component.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.component.html","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.helpers.ts","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.component.ts","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.component.html","../../../projects/riv/src/lib/visualization/time-series/time-series.helpers.ts","../../../projects/riv/src/lib/visualization/time-series/time-series.component.ts","../../../projects/riv/src/lib/visualization/time-series/time-series.component.html","../../../projects/riv/src/lib/visibility/visibility.directive.ts","../../../projects/riv/src/lib/riv.module.ts","../../../projects/riv/src/rivet-health-design-system.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class DownloadService {\n constructor(@Inject(DOCUMENT) private readonly documentRef: Document) {}\n\n async downloadUrl(url: string, filename?: string, target?: string) {\n const a = this.documentRef.createElement('a');\n if (filename) {\n a.download = filename;\n }\n if (target) {\n a.target = target;\n }\n a.href = url;\n document.body.appendChild(a);\n a.click();\n await new Promise<void>(resolve =>\n setTimeout(() => {\n a.remove();\n URL.revokeObjectURL(a.href);\n resolve();\n }, 0),\n );\n }\n\n async downloadBlob(blob: Blob, filename: string) {\n const a = this.documentRef.createElement('a');\n a.download = filename;\n a.href = URL.createObjectURL(blob);\n document.body.appendChild(a);\n a.click();\n await new Promise<void>(resolve =>\n setTimeout(() => {\n a.remove();\n URL.revokeObjectURL(a.href);\n resolve();\n }, 0),\n );\n }\n}\n","export const NO_DATA_FALLBACK = '-';\n","import { DatePipe as AngularDatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDate' })\nexport class DatePipe implements PipeTransform {\n private readonly inner = new AngularDatePipe('en-US');\n transform(\n value?: string | number | Date | null,\n format?: string,\n timezone?: string,\n ) {\n return (\n this.inner.transform(value, format ?? 'shortDate', timezone) ??\n NO_DATA_FALLBACK\n );\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDays' })\nexport class DaysPipe implements PipeTransform {\n private readonly inner = new DecimalPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n const ret = this.inner.transform(value, digitsInfo ?? '1.0-2');\n return ret ? ret + (value === 1 ? ' day' : ' days') : NO_DATA_FALLBACK;\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDollars' })\nexport class DollarsPipe implements PipeTransform {\n readonly inner = new CurrencyPipe('en-us');\n public transform(value?: number | string | null, digitsInfo?: string) {\n return (\n this.inner.transform(\n value,\n undefined,\n undefined,\n digitsInfo ?? '1.2-2',\n ) ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivNumber' })\nexport class NumberPipe implements PipeTransform {\n private readonly inner = new DecimalPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n return (\n this.inner.transform(value, digitsInfo ?? '1.0-0') ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { PercentPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivPercentage' })\nexport class PercentagePipe implements PipeTransform {\n private readonly inner = new PercentPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n return (\n this.inner.transform(value, digitsInfo ?? '1.1-1') ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivSmallCurrency' })\nexport class SmallCurrencyPipe implements PipeTransform {\n private readonly inner = new CurrencyPipe('en-us');\n public transform(value?: number | string | null, digitsInfo?: string) {\n if (value === null || value === undefined) {\n return NO_DATA_FALLBACK;\n }\n\n const num: number =\n typeof value == 'string' ? Number.parseFloat(value) : value;\n const magnitude = Math.log10(Math.abs(num));\n\n if (num === 0) {\n return (\n this.inner.transform(\n num,\n undefined,\n undefined,\n digitsInfo ?? '1.0-0',\n ) ?? NO_DATA_FALLBACK\n );\n }\n if (magnitude >= 9) {\n return (\n (this.inner.transform(\n num / 1_000_000_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000_000_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'B'\n );\n }\n if (magnitude >= 6) {\n return (\n (this.inner.transform(\n num / 1_000_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'M'\n );\n }\n if (magnitude >= 3) {\n return (\n (this.inner.transform(\n num / 1_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'K'\n );\n }\n return (\n this.inner.transform(\n num,\n undefined,\n undefined,\n digitsInfo ?? num >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { CalloutComponent } from './callout.component';\n\ntype Dimensions = {\n width: number;\n height: number;\n};\n\ntype Point = {\n x: number;\n y: number;\n};\n\nexport type Box = Point & Dimensions;\n\nexport type Anchor = Point & { position: CalloutComponent.AnchoredPosition };\n\nexport function getOrigin(\n anchor: Box,\n client: Dimensions,\n viewportSize: Dimensions,\n preferredPosition: CalloutComponent.AnchoredPosition,\n allowedPositions: CalloutComponent.AnchoredPosition[] | null = null,\n fallbackDirection: CalloutComponent.Direction,\n additionalOffset: number,\n): Anchor {\n let position = preferredPosition;\n const allowed =\n !allowedPositions || allowedPositions.length === 0\n ? CalloutComponent.AnchoredPositions\n : allowedPositions;\n let index = allowed.indexOf(position);\n let leastClippedIndex = index;\n let origin = originAtPosition(anchor, client, position, additionalOffset);\n let currentClippedX;\n let currentClippedY;\n let leastClipped = Infinity;\n let foundUnclipped = false;\n // Iterate through allowed positions. The first one we find that doesn't clip out of view, we use.\n // If all of the positions clip, use the one which clipped the least.\n for (\n let checkCount = 0;\n checkCount <= allowed.length && !foundUnclipped;\n checkCount++,\n index =\n fallbackDirection === 'clockwise'\n ? (index + 1) % allowed.length\n : (index - 1 + allowed.length) % allowed.length\n ) {\n position = allowed[index];\n origin = originAtPosition(anchor, client, position, additionalOffset);\n currentClippedX =\n -1 *\n Math.min(origin.x, viewportSize.width - (origin.x + client.width), 0);\n currentClippedY =\n -1 *\n Math.min(origin.y, viewportSize.height - (origin.y + client.height), 0);\n if (currentClippedX > 0 || currentClippedY > 0) {\n const clippedArea =\n currentClippedX * currentClippedY +\n currentClippedX * (client.height - currentClippedY) +\n currentClippedY * (client.width - currentClippedX);\n if (leastClipped > clippedArea) {\n leastClipped = clippedArea;\n leastClippedIndex = index;\n }\n } else {\n foundUnclipped = true;\n }\n }\n if (!foundUnclipped) {\n position = allowed[leastClippedIndex];\n origin = originAtPosition(anchor, client, position, additionalOffset);\n origin.y = origin.y < 0 ? 4 : origin.y;\n }\n return { ...origin, position };\n}\n\nexport function originAtPosition(\n anchor: Box,\n client: Dimensions,\n position: CalloutComponent.AnchoredPosition,\n offset: number,\n): Point {\n switch (position) {\n case 'top-left':\n return {\n x: anchor.x + anchor.width - client.width,\n y: anchor.y - client.height - offset,\n };\n case 'top-center':\n return {\n x: anchor.x + anchor.width / 2 - client.width / 2,\n y: anchor.y - client.height - offset,\n };\n case 'top-right':\n return {\n x: anchor.x,\n y: anchor.y - client.height - offset,\n };\n case 'right-top':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y,\n };\n case 'center-right':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y + anchor.height / 2 - client.height / 2,\n };\n case 'right-bottom':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y + anchor.height - client.height,\n };\n case 'bottom-right':\n return {\n x: anchor.x,\n y: anchor.y + anchor.height + offset,\n };\n case 'bottom-center':\n return {\n x: anchor.x + anchor.width / 2 - client.width / 2,\n y: anchor.y + anchor.height + offset,\n };\n case 'bottom-left':\n return {\n x: anchor.x + anchor.width - client.width,\n y: anchor.y + anchor.height + offset,\n };\n case 'left-bottom':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y + anchor.height - client.height,\n };\n case 'center-left':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y + anchor.height / 2 - client.height / 2,\n };\n case 'left-top':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y,\n };\n }\n}\n","import { Directive, Injectable, Input, OnDestroy, OnInit } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class LockScrollContextService {\n private stack = 0;\n\n getContext() {\n return this.stack;\n }\n\n pushContext() {\n return ++this.stack;\n }\n\n popContext() {\n return --this.stack;\n }\n\n public scrollPosition: number = 0;\n}\n\n@Directive({ selector: '[rivLockScroll]' })\nexport class LockScrollDirective implements OnInit, OnDestroy {\n constructor(private readonly context: LockScrollContextService) {}\n\n @Input('rivLockScroll')\n lock: boolean = false;\n\n ngOnInit() {\n if (this.lock) {\n const oldContext = this.context.getContext();\n const newContext = this.context.pushContext();\n if (oldContext === 0 && newContext === 1) {\n this.lockScroll();\n }\n }\n }\n\n ngOnDestroy() {\n if (this.lock) {\n const oldContext = this.context.getContext();\n const newContext = this.context.popContext();\n if (oldContext === 1 && newContext === 0) {\n this.unlockScroll();\n }\n }\n }\n\n private lockScroll() {\n this.context.scrollPosition = document.documentElement.scrollTop;\n document.body.style.position = 'fixed';\n document.body.style.overflow = 'hidden';\n document.body.style.width = '100%';\n document.body.style.height = '100%';\n document.body.style.top = `${this.context.scrollPosition * -1}px`;\n }\n\n private unlockScroll() {\n document.body.removeAttribute('style');\n document.documentElement.scrollTop = this.context.scrollPosition;\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n\n@Directive({\n selector: '[rivClientSize]',\n})\nexport class SizeDirective implements OnInit, OnDestroy {\n private resizeObserver: ResizeObserver;\n\n @Output()\n rivClientSize = new EventEmitter<DOMRect>();\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n zone: NgZone,\n ) {\n this.resizeObserver = new ResizeObserver(entries => {\n zone.run(() => {\n for (const entry of entries) {\n this.rivClientSize.emit(entry.target.getBoundingClientRect());\n }\n });\n });\n }\n\n ngOnInit() {\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n this.resizeObserver.unobserve(this.elementRef.nativeElement);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { getOrigin } from './callout.helpers';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of lifecycle hooks.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-callout',\n templateUrl: './callout.component.html',\n styleUrls: ['./callout.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalloutComponent implements AfterViewInit, OnChanges {\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @Input()\n anchor: Element | DOMRect | null = null;\n\n @Input()\n isModal: boolean = true;\n\n @Input()\n preferredPosition: CalloutComponent.AnchoredPosition = 'bottom-right';\n\n @Input()\n allowedPositions: CalloutComponent.AnchoredPosition[] = [\n ...CalloutComponent.AnchoredPositions,\n ];\n\n @Input()\n fallbackDirection: CalloutComponent.Direction = 'counter-clockwise';\n\n @Input()\n showCaret: boolean = true;\n\n @Input()\n theme: CalloutComponent.Theme = 'dark';\n\n @ViewChild('content')\n content: ElementRef<HTMLDivElement> | null = null;\n\n @ViewChild('scrim', { static: false })\n scrim: ElementRef<HTMLElement> | null = null;\n\n private mouseDownInsideContent: boolean = false;\n\n scrimMouseDown(evt: MouseEvent) {\n this.mouseDownInsideContent =\n this.content?.nativeElement.contains(evt.target as Node) ?? false;\n }\n\n scrimClick(evt: MouseEvent) {\n // A click always starts with a mousedown. If a user mouse downs inside the\n // content and then drags to the scrim, this will trigger a click on the scrim.\n // This can happen if the user selects text and drags too far, leading to a\n // bad experience. To prevent that, we track if the mousedown started inside\n // the content. If it did, we ignore the click on the scrim. If it didn't,\n // we allow the click to close the callout.\n if (evt.target === evt.currentTarget && !this.mouseDownInsideContent) {\n this.close.emit();\n }\n // always reset the flag after a click\n this.mouseDownInsideContent = false;\n }\n\n left: number = 0;\n top: number = 0;\n resolvedPosition: CalloutComponent.AnchoredPosition = this.preferredPosition;\n\n ngAfterViewInit() {\n this.setPosition();\n }\n ngOnChanges() {\n this.setPosition();\n }\n onContentSizeChanges() {\n this.setPosition();\n }\n\n setPosition() {\n const windowSize = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n if (this.anchor === null || this.content === null || this.scrim === null)\n return;\n\n const scrimRect = this.scrim.nativeElement.getBoundingClientRect();\n\n const anchorRect =\n this.anchor instanceof Element\n ? this.anchor.getBoundingClientRect()\n : this.anchor;\n\n const anchorBounds = {\n x: anchorRect.left - scrimRect.left, // In most cases, the scrim will be positioned at (0,0), but if it's not, this will make sure the callout is positioned correctly regardless.\n y: anchorRect.top - scrimRect.top,\n width: anchorRect.right - anchorRect.left,\n height: anchorRect.bottom - anchorRect.top,\n };\n\n const calloutSize = {\n width: this.content.nativeElement.clientWidth,\n height: this.content.nativeElement.clientHeight,\n };\n\n const calloutOrigin = getOrigin(\n anchorBounds,\n calloutSize,\n windowSize,\n this.preferredPosition,\n this.allowedPositions,\n this.fallbackDirection,\n this.showCaret ? 8 : 0,\n );\n\n this.left = calloutOrigin.x;\n this.top = calloutOrigin.y;\n this.resolvedPosition = calloutOrigin.position;\n this.cdr.detectChanges();\n }\n\n @Output()\n readonly close = new EventEmitter<void>();\n}\n\nexport namespace CalloutComponent {\n export const Themes = ['light', 'dark'] as const;\n export type Theme = (typeof Themes)[number];\n\n export const AnchoredPositions = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'right-top',\n 'center-right',\n 'right-bottom',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left',\n 'left-bottom',\n 'center-left',\n 'left-top',\n ] as const;\n export type AnchoredPosition = (typeof AnchoredPositions)[number];\n\n export const Directions = ['clockwise', 'counter-clockwise'] as const;\n export type Direction = (typeof Directions)[number];\n}\n","<div\n #scrim\n class=\"scrim\"\n [class.full]=\"isModal\"\n (click)=\"scrimClick($event)\"\n (mousedown)=\"scrimMouseDown($event)\"\n>\n <div\n class=\"callout\"\n (rivClientSize)=\"onContentSizeChanges()\"\n [ngClass]=\"[theme, resolvedPosition]\"\n [class.caret]=\"showCaret\"\n [style.left.px]=\"left\"\n [style.top.px]=\"top\"\n [rivLockScroll]=\"isModal\"\n #content\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport type Overlays = Map<Symbol, TemplateRef<void>>;\n\n@Injectable({ providedIn: 'root' })\nexport class OverlayService {\n public overlays = new BehaviorSubject<Overlays>(new Map());\n\n // Note: these functions are async because Angular's change detection fails\n // to detect changes properly when the source of an event is from within a\n // template that is being removed as a result of that event. The Angular\n // template sees a cached version of the overlays Map (even though the\n // component TypeScript picks up on the changed Map), regardless of trying to\n // trigger change detection manually. Moving the change to the next tick with\n // this faux async fixes the issue. We may be able to remove them after an\n // Angular upgrade (TODO).\n // https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n public async add(overlay: TemplateRef<void>): Promise<Symbol> {\n const key = Symbol();\n const overlays = new Map(this.overlays.getValue());\n overlays.set(key, overlay);\n this.overlays.next(overlays);\n return key;\n }\n public async remove(key: Symbol) {\n const overlays = new Map(this.overlays.getValue());\n overlays.delete(key);\n this.overlays.next(overlays);\n }\n}\n","import { Directive, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { OverlayService } from './overlay.service';\n\n@Directive({\n selector: '[riv-overlay]',\n})\nexport class OverlayDirective implements OnInit, OnDestroy {\n constructor(\n private readonly template: TemplateRef<void>,\n private readonly overlayService: OverlayService,\n ) {}\n\n private key?: Promise<Symbol>;\n\n ngOnInit() {\n this.key = this.overlayService.add(this.template);\n }\n\n ngOnDestroy() {\n if (this.key) this.key.then(k => this.overlayService.remove(k));\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { CalloutComponent } from '../callout.component';\n\nfunction isTemplate(v: string | TemplateRef<void>): v is TemplateRef<void> {\n return typeof v !== 'string';\n}\n\n@Component({\n selector: 'riv-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent {\n @Input()\n anchor: Element | DOMRect | null = null;\n\n @Input()\n content?: string | TemplateRef<void>;\n\n @Input()\n theme: CalloutComponent.Theme = 'dark';\n\n @Input()\n maxWidth: string = 'calc(var(--base-grid-size) * 50)';\n\n @Input()\n preferredPosition: TooltipComponent.AnchoredPosition = 'top-center';\n\n @Output()\n onMouseEnter = new EventEmitter<MouseEvent>();\n\n @Output()\n onMouseLeave = new EventEmitter<MouseEvent>();\n\n @HostListener('mouseleave') _onMouseLeave(evt: MouseEvent) {\n this.onMouseLeave.emit(evt);\n }\n\n @HostListener('mouseenter') _onMouseEnter(evt: MouseEvent) {\n this.onMouseEnter.emit(evt);\n }\n\n readonly isTemplate = isTemplate;\n readonly allowedPositions = [...TooltipComponent.AnchoredPositions];\n}\n\nexport namespace TooltipComponent {\n export const AnchoredPositions = [\n 'top-center',\n 'center-right',\n 'bottom-center',\n 'center-left',\n ] as const;\n export type AnchoredPosition = Extract<\n (typeof AnchoredPositions)[number],\n CalloutComponent.AnchoredPosition\n >;\n}\n","<riv-callout\n *riv-overlay\n [anchor]=\"anchor\"\n [preferredPosition]=\"preferredPosition\"\n [allowedPositions]=\"allowedPositions\"\n [isModal]=\"false\"\n [theme]=\"theme\"\n>\n <ng-container *ngIf=\"content && isTemplate(content); else stringContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #stringContent>\n <div class=\"string-content\" [style.max-width]=\"maxWidth\">\n {{ content }}\n </div>\n </ng-template>\n</riv-callout>\n","import {\n ApplicationRef,\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { TooltipComponent } from './tooltip.component';\n\n@Directive({\n selector: '[rivTooltip]',\n})\nexport class TooltipDirective implements OnDestroy {\n constructor(\n protected readonly el: ElementRef,\n protected readonly applicationRef: ApplicationRef,\n ) {}\n\n @Input()\n rivTooltip?: string | TemplateRef<void>;\n\n @Input()\n rivTooltipTheme: 'dark' | 'light' = 'dark';\n\n @Input()\n rivTooltipMaxWidth = 'calc(var(--base-grid-size) * 50)';\n\n @Input()\n rivTooltipPreferredPosition: TooltipComponent.AnchoredPosition = 'top-center';\n\n @Input()\n rivTooltipCloseDelay: number = 100;\n\n private tooltipRef?: ComponentRef<TooltipComponent>;\n private closeTimeout?: number;\n\n @HostListener('mouseenter') onMouseEnter() {\n if (!this.rivTooltip) return;\n if (this.tooltipRef) {\n this.cancelClose();\n } else {\n const tooltip = this.applicationRef.components[0].injector\n .get(ViewContainerRef)\n .createComponent(TooltipComponent);\n tooltip.instance.anchor = this.el.nativeElement;\n tooltip.instance.content = this.rivTooltip;\n tooltip.instance.theme = this.rivTooltipTheme;\n tooltip.instance.maxWidth = this.rivTooltipMaxWidth;\n tooltip.instance.preferredPosition = this.rivTooltipPreferredPosition;\n tooltip.instance.onMouseEnter.subscribe(this.cancelClose.bind(this));\n tooltip.instance.onMouseLeave.subscribe(this.initiateClose.bind(this));\n this.tooltipRef = tooltip;\n }\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n this.initiateClose();\n }\n\n ngOnDestroy(): void {\n this.initiateClose();\n }\n\n private initiateClose() {\n this.closeTimeout = window.setTimeout(() => {\n this.tooltipRef?.destroy();\n this.tooltipRef = undefined;\n }, this.rivTooltipCloseDelay);\n }\n\n private cancelClose() {\n window.clearTimeout(this.closeTimeout);\n }\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n Directive,\n ElementRef,\n Input,\n} from '@angular/core';\nimport { TooltipDirective } from '../../overlay/callout/tooltip/tooltip.directive';\n\n// Credit to boneskull on Github, whose work I used as a reference\n@Directive({\n selector: 'svg text[rivSVGTextTruncate]',\n})\nexport class SVGTextTruncateDirective\n extends TooltipDirective\n implements AfterViewInit\n{\n @Input()\n text: string = '';\n\n @Input()\n width: number = 50;\n\n constructor(\n protected override readonly el: ElementRef,\n protected override readonly applicationRef: ApplicationRef,\n ) {\n super(el, applicationRef);\n }\n\n ngAfterViewInit(): void {\n this.svgTruncate(this.el.nativeElement);\n }\n\n // Truncate through setting strings as the text-content and testing their width\n svgTruncate(element: SVGTextContentElement) {\n element.textContent = this.text;\n let currentLength: number = element.textContent.length;\n\n // If the text can fit in the given width, no truncation needed.\n if (currentLength > 0 && element.getComputedTextLength() <= this.width) {\n element.textContent = this.text;\n this.rivTooltip = '';\n } else {\n /*\n Test the length of each \"substring + ...\" combo until we find one that fits.\n Start by making room for the elipses by subtracting 3 from the length.\n */\n currentLength = currentLength - 3;\n let currentTextFitsInWidth: boolean = false;\n while (currentLength > 0 && !currentTextFitsInWidth) {\n const currentTextToTry: string =\n this.text.slice(0, currentLength) + '...';\n\n element.textContent = currentTextToTry;\n\n if (\n element.getSubStringLength(0, currentTextToTry.length) <= this.width\n ) {\n currentTextFitsInWidth = true;\n } else {\n currentLength--;\n }\n }\n\n // If we end up not finding a width of text that works, display just the ellipses.\n if (!currentTextFitsInWidth) {\n element.textContent = '...';\n }\n this.rivTooltip = this.text;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n Self,\n} from '@angular/core';\nimport { TooltipDirective } from '../../overlay/callout/tooltip/tooltip.directive';\n\nfunction scrolled(element: HTMLElement): boolean {\n return element.offsetWidth < element.scrollWidth;\n}\n\n/**\n * Truncate the text to one line. When truncated, display the full text in a tooltip.\n */\n@Component({\n selector: '[rivTruncate]',\n styleUrls: ['./truncate.component.css'],\n templateUrl: './truncate.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [TooltipDirective],\n})\nexport class TruncateComponent {\n constructor(\n private readonly element: ElementRef,\n // For performance reasons, take more control\n @Self() private readonly tooltip: TooltipDirective,\n ) {}\n\n @Input()\n maxTooltipWidth: string = '200px';\n\n @HostListener('mouseenter')\n enter() {\n if (scrolled(this.element.nativeElement)) {\n this.tooltip.rivTooltip = this.element.nativeElement.textContent;\n this.tooltip.rivTooltipMaxWidth = this.maxTooltipWidth;\n this.tooltip.onMouseEnter();\n }\n }\n\n @HostListener('mouseleave')\n leave() {\n this.tooltip.onMouseLeave();\n }\n\n // For the auto-complete textbox.\n scrollIntoView() {\n this.element.nativeElement.scrollIntoView(false);\n }\n}\n","<ng-content></ng-content>\n","export interface CacheResult<V> {\n value: V;\n cleanup: () => void;\n}\n\n/**\n * DOM cache that clones existing elements if available.\n */\nexport class DomCache<T, V extends Node = Node> {\n private readonly nodes = new Map<T, Set<V>>();\n\n constructor(private readonly create: (key: T) => V) {}\n\n get(key: T): CacheResult<V> {\n let set = this.nodes.get(key);\n let result: V;\n if (set) {\n result = <V>set.values().next().value.cloneNode(true);\n } else {\n result = this.create(key);\n set = new Set();\n this.nodes.set(key, set);\n }\n\n set.add(result);\n\n return {\n value: result,\n cleanup: () => {\n set!.delete(result);\n if (!set!.size) {\n this.nodes.delete(key);\n }\n },\n };\n }\n}\n","const AlertCircle = `<svg data-icon=\"AlertCircle\" aria-label=\"alert circle icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line></svg>`;\nconst AlertTriangle = `<svg data-icon=\"AlertTriangle\" aria-label=\"alert triangle icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"></path><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"></line><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line></svg>`;\nconst AlignLeft = `<svg data-icon=\"AlignLeft\" aria-label=\"align left icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25H12\" /></svg>`;\nconst Archive = `<svg data-icon=\"Archive\" aria-label=\"archive icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m20.25 7.5-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z\" /></svg>`;\nconst ArrowDown = `<svg data-icon=\"ArrowDown\" aria-label=\"arrow down icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 13.5 12 21m0 0-7.5-7.5M12 21V3\" /></svg>`;\nconst ArrowDownLeft = `<svg data-icon=\"ArrowDownLeft\" aria-label=\"arrow down left icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m19.5 4.5-15 15m0 0h11.25m-11.25 0V8.25\" /></svg>`;\nconst ArrowLeft = `<svg data-icon=\"ArrowLeft\" aria-label=\"arrow left icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18\" /></svg>`;\nconst ArrowLeftCircle = `<svg data-icon=\"ArrowLeftCircle\" aria-label=\"arrow left circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m11.25 9-3 3m0 0 3 3m-3-3h7.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst ArrowRight = `<svg data-icon=\"ArrowRight\" aria-label=\"arrow right icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3\" /></svg>`;\nconst ArrowUp = `<svg data-icon=\"ArrowUp\" aria-label=\"arrow up icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18\" /></svg>`;\nconst ArrowUpRight = `<svg data-icon=\"ArrowUpRight\" aria-label=\"arrow up right icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 19.5 15-15m0 0H8.25m11.25 0v11.25\" /></svg>`;\nconst AtSign = `<svg data-icon=\"AtSign\" aria-label=\"at sign icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 12a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0Zm0 0c0 1.657 1.007 3 2.25 3S21 13.657 21 12a9 9 0 1 0-2.636 6.364M16.5 12V8.25\" /></svg>`;\nconst BarChart2 = `<svg data-icon=\"BarChart2\" aria-label=\"bar chart icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z\" /></svg>`;\nconst Bell = `<svg data-icon=\"Bell\" aria-label=\"bell icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0\" /></svg>`;\nconst BellAlert = `<svg data-icon=\"BellAlert\" aria-label=\"bell alert icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0M3.124 7.5A8.969 8.969 0 0 1 5.292 3m13.416 0a8.969 8.969 0 0 1 2.168 4.5\" /></svg>`;\nconst BookOpen = `<svg data-icon=\"BookOpen\" aria-label=\"book open icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25\" /></svg>`;\nconst Briefcase = `<svg data-icon=\"Briefcase\" aria-label=\"briefcase icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 14.15v4.25c0 1.094-.787 2.036-1.872 2.18-2.087.277-4.216.42-6.378.42s-4.291-.143-6.378-.42c-1.085-.144-1.872-1.086-1.872-2.18v-4.25m16.5 0a2.18 2.18 0 0 0 .75-1.661V8.706c0-1.081-.768-2.015-1.837-2.175a48.114 48.114 0 0 0-3.413-.387m4.5 8.006c-.194.165-.42.295-.673.38A23.978 23.978 0 0 1 12 15.75c-2.648 0-5.195-.429-7.577-1.22a2.016 2.016 0 0 1-.673-.38m0 0A2.18 2.18 0 0 1 3 12.489V8.706c0-1.081.768-2.015 1.837-2.175a48.111 48.111 0 0 1 3.413-.387m7.5 0V5.25A2.25 2.25 0 0 0 13.5 3h-3a2.25 2.25 0 0 0-2.25 2.25v.894m7.5 0a48.667 48.667 0 0 0-7.5 0M12 12.75h.008v.008H12v-.008Z\" /></svg>`;\nconst BuildingLibrary = `<svg data-icon=\"BuildingLibrary\" aria-label=\"building library icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 21v-8.25M15.75 21v-8.25M8.25 21v-8.25M3 9l9-6 9 6m-1.5 12V10.332A48.36 48.36 0 0 0 12 9.75c-2.551 0-5.056.2-7.5.582V21M3 21h18M12 6.75h.008v.008H12V6.75Z\" /></svg>`;\nconst Calendar = `<svg data-icon=\"Calendar\" aria-label=\"calendar icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" /></svg>`;\nconst Check = `<svg data-icon=\"Check\" aria-label=\"check icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 12.75 6 6 9-13.5\" /></svg>`;\nconst CheckCircle = `<svg data-icon=\"CheckCircle\" aria-label=\"check circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst ChevronDown = `<svg data-icon=\"ChevronDown\" aria-label=\"chevron down icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m19.5 8.25-7.5 7.5-7.5-7.5\" /></svg>`;\nconst ChevronLeft = `<svg data-icon=\"ChevronLeft\" aria-label=\"chevron left icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5 8.25 12l7.5-7.5\" /></svg>`;\nconst ChevronRight = `<svg data-icon=\"ChevronRight\" aria-label=\"chevron right icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\" /></svg>`;\nconst ChevronsLeft = `<svg data-icon=\"ChevronsLeft\" aria-label=\"chevrons left icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m18.75 4.5-7.5 7.5 7.5 7.5m-6-15L5.25 12l7.5 7.5\" /></svg>`;\nconst ChevronsRight = `<svg data-icon=\"ChevronsRight\" aria-label=\"chevrons right icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m5.25 4.5 7.5 7.5-7.5 7.5m6-15 7.5 7.5-7.5 7.5\" /></svg>`;\nconst ChevronUp = `<svg data-icon=\"ChevronUp\" aria-label=\"chevron up icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 15.75 7.5-7.5 7.5 7.5\" /></svg>`;\nconst Clipboard = `<svg data-icon=\"Clipboard\" aria-label=\"clipboard icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184\" /></svg>`;\nconst ClipboardList = `<svg data-icon=\"ClipboardList\" aria-label=\"clipboard list icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z\" /></svg>`;\nconst Clock = `<svg data-icon=\"Clock\" aria-label=\"clock icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst Copy = `<svg data-icon=\"Copy\" aria-label=\"copy icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v8.25A2.25 2.25 0 0 0 6 16.5h2.25m8.25-8.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-7.5A2.25 2.25 0 0 1 8.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 0 0-2.25 2.25v6\" /></svg>`;\nconst CornerLeftUp = `<svg data-icon=\"CornerLeftUp\" aria-label=\"corner left up icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11.99 7.5 8.24 3.75m0 0L4.49 7.5m3.75-3.75v16.499h11.25\" /></svg>`;\nconst CreditCard = `<svg data-icon=\"CreditCard\" aria-label=\"credit card icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Z\" /></svg>`;\nconst DocumentCurrencyDollar = `<svg data-icon=\"DocumentCurrencyDollar\" aria-label=\"document currency dollar icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m3.75 9v7.5m2.25-6.466a9.016 9.016 0 0 0-3.461-.203c-.536.072-.974.478-1.021 1.017a4.559 4.559 0 0 0-.018.402c0 .464.336.844.775.994l2.95 1.012c.44.15.775.53.775.994 0 .136-.006.27-.018.402-.047.539-.485.945-1.021 1.017a9.077 9.077 0 0 1-3.461-.203M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" /></svg>`;\nconst Documents = `<svg data-icon=\"Documents\" aria-label=\"documents icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75\" /></svg>`;\nconst DollarSign = `<svg data-icon=\"DollarSign\" aria-label=\"dollar sign icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m-3-2.818.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst Download = `<svg data-icon=\"Download\" aria-label=\"download icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3\" /></svg>`;\nconst DownloadCloud = `<svg data-icon=\"DownloadCloud\" aria-label=\"download cloud icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9.75v6.75m0 0-3-3m3 3 3-3m-8.25 6a4.5 4.5 0 0 1-1.41-8.775 5.25 5.25 0 0 1 10.233-2.33 3 3 0 0 1 3.758 3.848A3.752 3.752 0 0 1 18 19.5H6.75Z\" /></svg>`;\nconst Edit = `<svg data-icon=\"Edit\" aria-label=\"edit icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10\" /></svg>`;\nconst Edit2 = `<svg data-icon=\"Edit2\" aria-label=\"edit icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125\" /></svg>`;\nconst ExternalLink = `<svg data-icon=\"ExternalLink\" aria-label=\"external link icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\" /></svg>`;\nconst Eye = `<svg data-icon=\"Eye\" aria-label=\"eye icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\" /></svg>`;\nconst EyeOff = `<svg data-icon=\"EyeOff\" aria-label=\"eye off icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88\" /></svg>`;\nconst File = `<svg data-icon=\"File\" aria-label=\"file icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" /></svg>`;\nconst FilePlus = `<svg data-icon=\"FilePlus\" aria-label=\"file plus icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m3.75 9v6m3-3H9m1.5-12H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" /></svg>`;\nconst FileText = `<svg data-icon=\"FileText\" aria-label=\"file text icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" /></svg>`;\nconst Filter = `<svg data-icon=\"Filter\" aria-label=\"filter icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 0 1-.659 1.591l-5.432 5.432a2.25 2.25 0 0 0-.659 1.591v2.927a2.25 2.25 0 0 1-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 0 0-.659-1.591L3.659 7.409A2.25 2.25 0 0 1 3 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0 1 12 3Z\" /></svg>`;\nconst Filter2 = `<svg data-icon=\"Filter2\" aria-label=\"filter icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path d=\"M4 7C10.4437 7 14.0563 7 20.5 7M6.6875 12.25H17.8125M8.6875 17.5H15.8125\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst Folder = `<svg data-icon=\"Folder\" aria-label=\"folder icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 12.75V12A2.25 2.25 0 0 1 4.5 9.75h15A2.25 2.25 0 0 1 21.75 12v.75m-8.69-6.44-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z\" /></svg>`;\nconst HandThumbUp = `<svg data-icon=\"HandThumbUp\" aria-label=\"hand thumb up icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.633 10.25c.806 0 1.533-.446 2.031-1.08a9.041 9.041 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75a.75.75 0 0 1 .75-.75 2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282m0 0h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H13.48c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23H5.904m10.598-9.75H14.25M5.904 18.5c.083.205.173.405.27.602.197.4-.078.898-.523.898h-.908c-.889 0-1.713-.518-1.972-1.368a12 12 0 0 1-.521-3.507c0-1.553.295-3.036.831-4.398C3.387 9.953 4.167 9.5 5 9.5h1.053c.472 0 .745.556.5.96a8.958 8.958 0 0 0-1.302 4.665c0 1.194.232 2.333.654 3.375Z\" /></svg>`;\nconst HandThumbDown = `<svg data-icon=\"HandThumbDown\" aria-label=\"hand thumb down icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7.498 15.25H4.372c-1.026 0-1.945-.694-2.054-1.715a12.137 12.137 0 0 1-.068-1.285c0-2.848.992-5.464 2.649-7.521C5.287 4.247 5.886 4 6.504 4h4.016a4.5 4.5 0 0 1 1.423.23l3.114 1.04a4.5 4.5 0 0 0 1.423.23h1.294M7.498 15.25c.618 0 .991.724.725 1.282A7.471 7.471 0 0 0 7.5 19.75 2.25 2.25 0 0 0 9.75 22a.75.75 0 0 0 .75-.75v-.633c0-.573.11-1.14.322-1.672.304-.76.93-1.33 1.653-1.715a9.04 9.04 0 0 0 2.86-2.4c.498-.634 1.226-1.08 2.032-1.08h.384m-10.253 1.5H9.7m8.075-9.75c.01.05.027.1.05.148.593 1.2.925 2.55.925 3.977 0 1.487-.36 2.89-.999 4.125m.023-8.25c-.076-.365.183-.75.575-.75h.908c.889 0 1.713.518 1.972 1.368.339 1.11.521 2.287.521 3.507 0 1.553-.295 3.036-.831 4.398-.306.774-1.086 1.227-1.918 1.227h-1.053c-.472 0-.745-.556-.5-.96a8.95 8.95 0 0 0 .303-.54\" /></svg>`;\nconst Heart = `<svg data-icon=\"Heart\" aria-label=\"heart icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z\" /></svg>`;\nconst HeartActive = `<svg data-icon=\"HeartActive\" aria-label=\"heart active icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M21 8.25C21 5.765 18.901 3.75 16.312 3.75C14.377 3.75 12.715 4.876 12 6.483C11.285 4.876 9.623 3.75 7.687 3.75C5.1 3.75 3 5.765 3 8.25C3 15.47 12 20.25 12 20.25C12 20.25 21 15.47 21 8.25Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst HelpCircle = `<svg data-icon=\"HelpCircle\" aria-label=\"help circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z\" /></svg>`;\nconst Inbox = `<svg data-icon=\"Inbox\" aria-label=\"inbox icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 13.5h3.86a2.25 2.25 0 0 1 2.012 1.244l.256.512a2.25 2.25 0 0 0 2.013 1.244h3.218a2.25 2.25 0 0 0 2.013-1.244l.256-.512a2.25 2.25 0 0 1 2.013-1.244h3.859m-19.5.338V18a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 0 0-2.15-1.588H6.911a2.25 2.25 0 0 0-2.15 1.588L2.35 13.177a2.25 2.25 0 0 0-.1.661Z\" /></svg>`;\nconst Info = `<svg data-icon=\"Info\" aria-label=\"info icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\" /></svg>`;\nconst Key = `<svg data-icon=\"Key\" aria-label=\"key icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 5.25a3 3 0 0 1 3 3m3 0a6 6 0 0 1-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1 1 21.75 8.25Z\" /></svg>`;\nconst Layers = `<svg data-icon=\"Layers\" aria-label=\"layers icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.429 9.75 2.25 12l4.179 2.25m0-4.5 5.571 3 5.571-3m-11.142 0L2.25 7.5 12 2.25l9.75 5.25-4.179 2.25m0 0L21.75 12l-4.179 2.25m0 0 4.179 2.25L12 21.75 2.25 16.5l4.179-2.25m11.142 0-5.571 3-5.571-3\" /></svg>`;\nconst Link2 = `<svg data-icon=\"Link2\" aria-label=\"link icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244\" /></svg>`;\nconst List = `<svg data-icon=\"List\" aria-label=\"list icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z\" /></svg>`;\nconst Lock = `<svg data-icon=\"Lock\" aria-label=\"lock icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z\" /></svg>`;\nconst Mail = `<svg data-icon=\"Mail\" aria-label=\"mail icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75\" /></svg>`;\nconst MapPin = `<svg data-icon=\"MapPin\" aria-label=\"map pin icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1 1 15 0Z\" /></svg>`;\nconst Maximize2 = `<svg data-icon=\"Maximize2\" aria-label=\"maximize icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15\" /></svg>`;\nconst Menu = `<svg data-icon=\"Menu\" aria-label=\"menu icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\" /></svg>`;\nconst MessageCircle = `<svg data-icon=\"MessageCircle\" aria-label=\"message circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 0 1-.923 1.785A5.969 5.969 0 0 0 6 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337Z\" /></svg>`;\nconst MessageCircleActive = `<svg data-icon=\"MessageCircleActive\" aria-label=\"message circle active icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path fill=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 0 1-.923 1.785A5.969 5.969 0 0 0 6 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337Z\" /></svg>`;\nconst MessageCircleEllipsis = `<svg data-icon=\"MessageCircleEllipsis\" aria-label=\"message circle ellipsis icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.625 12a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H8.25m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H12m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0h-.375M21 12c0 4.556-4.03 8.25-9 8.25a9.764 9.764 0 0 1-2.555-.337A5.972 5.972 0 0 1 5.41 20.97a5.969 5.969 0 0 1-.474-.065 4.48 4.48 0 0 0 .978-2.025c.09-.457-.133-.901-.467-1.226C3.93 16.178 3 14.189 3 12c0-4.556 4.03-8.25 9-8.25s9 3.694 9 8.25Z\" /></svg>`;\nconst MessageCircleEllipsisActive = `<svg data-icon=\"MessageCircleEllipsisActive\" aria-label=\"message circle ellipsis active icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\"><path fill-rule=\"evenodd\" d=\"M4.804 21.644A6.707 6.707 0 0 0 6 21.75a6.721 6.721 0 0 0 3.583-1.029c.774.182 1.584.279 2.417.279 5.322 0 9.75-3.97 9.75-9 0-5.03-4.428-9-9.75-9s-9.75 3.97-9.75 9c0 2.409 1.025 4.587 2.674 6.192.232.226.277.428.254.543a3.73 3.73 0 0 1-.814 1.686.75.75 0 0 0 .44 1.223ZM8.25 10.875a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25ZM10.875 12a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0Zm4.875-1.125a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25Z\" clip-rule=\"evenodd\" /></svg>`;\nconst Minimize2 = `<svg data-icon=\"Minimize2\" aria-label=\"minimize icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 9V4.5M9 9H4.5M9 9 3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5 5.25 5.25\" /></svg>`;\nconst Minus = `<svg data-icon=\"Minus\" aria-label=\"minus icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 12h14\" /></svg>`;\nconst MinusCircle = `<svg data-icon=\"MinusCircle\" aria-label=\"minus circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst MoreHorizontal = `<svg data-icon=\"MoreHorizontal\" aria-label=\"more horizontal icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM12.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM18.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z\" /></svg>`;\nconst MoreVertical = `<svg data-icon=\"MoreVertical\" aria-label=\"more vertical icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 12.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 18.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Z\" /></svg>`;\nconst Paperclip = `<svg data-icon=\"Paperclip\" aria-label=\"paperclip icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m18.375 12.739-7.693 7.693a4.5 4.5 0 0 1-6.364-6.364l10.94-10.94A3 3 0 1 1 19.5 7.372L8.552 18.32m.009-.01-.01.01m5.699-9.941-7.81 7.81a1.5 1.5 0 0 0 2.112 2.13\" /></svg>`;\nconst Phone = `<svg data-icon=\"Phone\" aria-label=\"phone icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 0 0 2.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 0 1-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 0 0-1.091-.852H4.5A2.25 2.25 0 0 0 2.25 4.5v2.25Z\" /></svg>`;\nconst PieChart = `<svg data-icon=\"PieChart\" aria-label=\"pie chart icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M10.5 6a7.5 7.5 0 1 0 7.5 7.5h-7.5V6Z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 10.5H21A7.5 7.5 0 0 0 13.5 3v7.5Z\" /></svg>`;\nconst PinActive = `<svg data-icon=\"PinActive\" aria-label=\"pin active icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15V21\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 3H17C17 3 15 4.5 15 6.5C15 8.5 15 11 16 12.5C17 14 18.5 15 18.5 15H5.5C5.5 15 7 14 8 12.5C9 11 9 8.5 9 6.5C9 4.5 7 3 7 3Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst PinInactive = `<svg data-icon=\"PinInactive\" aria-label=\"pin inactive icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15V21\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 3H17C17 3 15 4.5 15 6.5C15 8.5 15 11 16 12.5C17 14 18.5 15 18.5 15H5.5C5.5 15 7 14 8 12.5C9 11 9 8.5 9 6.5C9 4.5 7 3 7 3Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst Plus = `<svg data-icon=\"Plus\" aria-label=\"plus icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\" /></svg>`;\nconst Printer = `<svg data-icon=\"Printer\" aria-label=\"printer icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0 1 10.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0 .229 2.523a1.125 1.125 0 0 1-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0 0 21 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 0 0-1.913-.247M6.34 18H5.25A2.25 2.25 0 0 1 3 15.75V9.456c0-1.081.768-2.015 1.837-2.175a48.041 48.041 0 0 1 1.913-.247m10.5 0a48.536 48.536 0 0 0-10.5 0m10.5 0V3.375c0-.621-.504-1.125-1.125-1.125h-8.25c-.621 0-1.125.504-1.125 1.125v3.659M18 10.5h.008v.008H18V10.5Zm-3 0h.008v.008H15V10.5Z\" /></svg>`;\nconst QueueList = `<svg data-icon=\"QueueList\" aria-label=\"queue list icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 0 1 0 3.75H5.625a1.875 1.875 0 0 1 0-3.75Z\" /></svg>`;\nconst RefreshCw = `<svg data-icon=\"RefreshCw\" aria-label=\"refresh cw icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99\" /></svg>`;\nconst Reorder = `<svg data-icon=\"Reorder\" aria-label=\"reorder icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M8 6.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-1ZM8 12.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-1ZM8 18.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-1ZM13 6.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1ZM13 12.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1ZM13 18.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1Z\"/></svg>`;\nconst Reply = `<svg data-icon=\"Reply\" aria-label=\"reply icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 15 3 9m0 0 6-6M3 9h12a6 6 0 0 1 0 12h-3\" /></svg>`;\nconst ReplyAll = `<svg data-icon=\"ReplyAll\" aria-label=\"reply all icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 15L3 9M3 9L9 3M3 9H7M12 21H15C16.5913 21 18.1174 20.3679 19.2426 19.2426C20.3679 18.1174 21 16.5913 21 15C21 13.4087 20.3679 11.8826 19.2426 10.7574C18.1174 9.63214 16.5913 9 15 9H7M13 3L7 9M7 9L13 15\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst RotateCw = `<svg data-icon=\"RotateCw\" aria-label=\"rotate cw icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m15 15 6-6m0 0-6-6m6 6H9a6 6 0 0 0 0 12h3\" /></svg>`;\nconst Search = `<svg data-icon=\"Search\" aria-label=\"search icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\" /></svg>`;\nconst Send = `<svg data-icon=\"Send\" aria-label=\"send icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 12 3.269 3.125A59.769 59.769 0 0 1 21.485 12 59.768 59.768 0 0 1 3.27 20.875L5.999 12Zm0 0h7.5\" /></svg>`;\nconst Settings = `<svg data-icon=\"Settings\" aria-label=\"settings icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 0 1 1.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.559.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.894.149c-.424.07-.764.383-.929.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 0 1-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.398.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 0 1-.12-1.45l.527-.737c.25-.35.272-.806.108-1.204-.165-.397-.506-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.108-1.204l-.526-.738a1.125 1.125 0 0 1 .12-1.45l.773-.773a1.125 1.125 0 0 1 1.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894Z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\" /></svg>`;\nconst Shield = `<svg data-icon=\"Shield\" aria-label=\"shield icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\" /></svg>`;\nconst Sidebar = `<svg data-icon=\"Sidebar\" aria-label=\"sidebar icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 19.591V4.40901M6 20.25H18C18.5967 20.25 19.169 20.0129 19.591 19.591C20.0129 19.169 20.25 18.5967 20.25 18V6C20.25 5.40326 20.0129 4.83097 19.591 4.40901C19.169 3.98705 18.5967 3.75 18 3.75H6C5.40326 3.75 4.83097 3.98705 4.40901 4.40901C3.98705 4.83097 3.75 5.40326 3.75 6V18C3.75 18.5967 3.98705 19.169 4.40901 19.591C4.83097 20.0129 5.40326 20.25 6 20.25Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst Slash = `<svg data-icon=\"Slash\" aria-label=\"slash icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18.364 18.364A9 9 0 0 0 5.636 5.636m12.728 12.728A9 9 0 0 1 5.636 5.636m12.728 12.728L5.636 5.636\" /></svg>`;\nconst Sliders = `<svg data-icon=\"Sliders\" aria-label=\"sliders icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 13.5V3.75m0 9.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 3.75V16.5m12-3V3.75m0 9.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 3.75V16.5m-6-9V3.75m0 3.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 9.75V10.5\" /></svg>`;\nconst Sparkles = `<svg data-icon=\"Sparkles\" aria-label=\"sparkles icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z\" /></svg>`;\nconst Star = `<svg data-icon=\"Star\" aria-label=\"star icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z\" /></svg>`;\nconst SupportChat = `<svg data-icon=\"SupportChat\" aria-label=\"support chat icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 0 1-.825-.242m9.345-8.334a2.126 2.126 0 0 0-.476-.095 48.64 48.64 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155\" /></svg>`;\nconst Tag = `<svg data-icon=\"Tag\" aria-label=\"tag icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.568 3H5.25A2.25 2.25 0 0 0 3 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 0 0 5.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 0 0 9.568 3Z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 6h.008v.008H6V6Z\" /></svg>`;\nconst Target = `<svg data-icon=\"Target\" aria-label=\"target icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" d=\"M21 12c0 4.9706-4.0294 9-9 9s-9-4.0294-9-9 4.0294-9 9-9 9 4.0294 9 9Z\"/><path stroke=\"currentColor\" d=\"M17.5 12c0 3.0376-2.4624 5.5-5.5 5.5S6.5 15.0376 6.5 12 8.9624 6.5 12 6.5s5.5 2.4624 5.5 5.5Z\"/><path stroke=\"currentColor\" d=\"M14 12c0 1.1046-.8954 2-2 2s-2-.8954-2-2 .8954-2 2-2 2 .8954 2 2Z\"/></svg>`;\nconst Trash2 = `<svg data-icon=\"Trash2\" aria-label=\"trash icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0\" /></svg>`;\nconst TrendingDown = `<svg data-icon=\"TrendingDown\" aria-label=\"trending down icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 6 9 12.75l4.286-4.286a11.948 11.948 0 0 1 4.306 6.43l.776 2.898m0 0 3.182-5.511m-3.182 5.51-5.511-3.181\" /></svg>`;\nconst TrendingUp = `<svg data-icon=\"TrendingUp\" aria-label=\"trending up icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 18 9 11.25l4.306 4.306a11.95 11.95 0 0 1 5.814-5.518l2.74-1.22m0 0-5.94-2.281m5.94 2.28-2.28 5.941\" /></svg>`;\nconst UploadCloud = `<svg data-icon=\"UploadCloud\" aria-label=\"upload cloud icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 16.5V9.75m0 0 3 3m-3-3-3 3M6.75 19.5a4.5 4.5 0 0 1-1.41-8.775 5.25 5.25 0 0 1 10.233-2.33 3 3 0 0 1 3.758 3.848A3.752 3.752 0 0 1 18 19.5H6.75Z\" /></svg>`;\nconst User = `<svg data-icon=\"User\" aria-label=\"user icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z\" /></svg>`;\nconst UserCheck = `<svg data-icon=\"UserCheck\" aria-label=\"user check icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13.75 6C13.75 6.99456 13.3549 7.94839 12.6516 8.65165C11.9484 9.35491 10.9946 9.75 10 9.75C9.00544 9.75 8.05161 9.35491 7.34835 8.65165C6.64509 7.94839 6.25 6.99456 6.25 6C6.25 5.00544 6.64509 4.05161 7.34835 3.34835C8.05161 2.64509 9.00544 2.25 10 2.25C10.9946 2.25 11.9484 2.64509 12.6516 3.34835C13.3549 4.05161 13.75 5.00544 13.75 6ZM2.501 20.118C2.53313 18.1504 3.33734 16.2742 4.74018 14.894C6.14302 13.5139 8.03209 12.7405 10 12.7405C11.9679 12.7405 13.857 13.5139 15.2598 14.894C16.6627 16.2742 17.4669 18.1504 17.499 20.118C15.1464 21.1968 12.5881 21.7535 10 21.75C7.324 21.75 4.784 21.166 2.501 20.118Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M15 10L17.25 12.25L21 7\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst Users = `<svg data-icon=\"Users\" aria-label=\"users icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z\" /></svg>`;\nconst X = `<svg data-icon=\"X\" aria-label=\"x icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\" /></svg>`;\nconst XCircle = `<svg data-icon=\"XCircle\" aria-label=\"x circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m9.75 9.75 4.5 4.5m0-4.5-4.5 4.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst Zap = `<svg data-icon=\"Zap\" aria-label=\"zap icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z\" /></svg>`;\nconst ZoomIn = `<svg data-icon=\"ZoomIn\" aria-label=\"zoom in icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607ZM10.5 7.5v6m3-3h-6\" /></svg>`;\nconst ZoomOut = `<svg data-icon=\"ZoomOut\" aria-label=\"zoom out icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607ZM13.5 10.5h-6\" /></svg>`;\n\nexport const icons = {\n AlertCircle,\n AlertTriangle,\n AlignLeft,\n Archive,\n ArrowDown,\n ArrowDownLeft,\n ArrowLeft,\n ArrowLeftCircle,\n ArrowRight,\n ArrowUp,\n ArrowUpRight,\n AtSign,\n BarChart2,\n Bell,\n BellAlert,\n BookOpen,\n Briefcase,\n BuildingLibrary,\n Calendar,\n Check,\n CheckCircle,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n ChevronUp,\n Clipboard,\n ClipboardList,\n Clock,\n Copy,\n CornerLeftUp,\n CreditCard,\n DocumentCurrencyDollar,\n Documents,\n DollarSign,\n Download,\n DownloadCloud,\n Edit,\n Edit2,\n ExternalLink,\n Eye,\n EyeOff,\n File,\n FilePlus,\n FileText,\n Filter,\n Filter2,\n Folder,\n HandThumbUp,\n HandThumbDown,\n Heart,\n HeartActive,\n HelpCircle,\n Inbox,\n Info,\n Key,\n Layers,\n Link2,\n List,\n Lock,\n Mail,\n MapPin,\n Maximize2,\n Menu,\n MessageCircle,\n MessageCircleActive,\n MessageCircleEllipsis,\n MessageCircleEllipsisActive,\n Minimize2,\n Minus,\n MinusCircle,\n MoreHorizontal,\n MoreVertical,\n Paperclip,\n Phone,\n PieChart,\n PinActive,\n PinInactive,\n Plus,\n Printer,\n QueueList,\n RefreshCw,\n Reorder,\n Reply,\n ReplyAll,\n RotateCw,\n Search,\n Send,\n Settings,\n Shield,\n Sidebar,\n Slash,\n Sliders,\n Sparkles,\n Star,\n SupportChat,\n Tag,\n Target,\n Trash2,\n TrendingDown,\n TrendingUp,\n UploadCloud,\n User,\n UserCheck,\n Users,\n X,\n XCircle,\n Zap,\n ZoomIn,\n ZoomOut,\n};\n\nexport const iconsMap: { [key: string]: string } = {};\nfor (const key in icons) {\n iconsMap[key] = icons[<keyof typeof icons>key];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { CacheResult, DomCache } from './dom-cache';\nimport { icons, iconsMap } from './icons';\n\nconst cache = new DomCache<IconComponent.Name, ChildNode>(value => {\n const svgText = iconsMap[value];\n const parser = new DOMParser();\n const svg = parser.parseFromString(svgText, 'text/xml');\n return svg.documentElement;\n});\n\n@Component({\n selector: 'riv-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnDestroy {\n private cached: CacheResult<ChildNode> | undefined;\n\n constructor(private readonly element: ElementRef<HTMLElement>) {}\n\n @Input()\n set name(value: IconComponent.Name | null) {\n if (this.cached) {\n this.cached.value.remove();\n this.cached.cleanup();\n this.cached = undefined;\n }\n\n if (value == null) {\n return;\n }\n\n this.cached = cache.get(value);\n this.element.nativeElement.append(this.cached.value);\n }\n\n @Input()\n size: IconComponent.Size = 24;\n\n @Input()\n customSize: number | undefined;\n\n @HostBinding('style.width.px')\n @HostBinding('style.height.px')\n get iconSize() {\n return this.customSize ? this.customSize : this.size;\n }\n\n @Input()\n strokeWidth: number | undefined;\n\n @HostBinding('style.stroke-width')\n get calculateStrokeWidth() {\n return this.strokeWidth ? this.strokeWidth : 24 / this.iconSize;\n }\n\n ngOnDestroy() {\n this.name = null;\n }\n}\n\nexport namespace IconComponent {\n export type Name = keyof typeof icons;\n\n export const Sizes = [8, 12, 16, 20, 24] as const;\n export type Size = (typeof Sizes)[number];\n}\n","","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-help',\n templateUrl: './help.component.html',\n styleUrls: ['./help.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HelpComponent {\n @Input() help?: string;\n @Input() size: HelpComponent.Size = 16;\n}\n\nexport namespace HelpComponent {\n export const Sizes = [12, 16] as const;\n export type Size = (typeof HelpComponent.Sizes)[number];\n}\n","<riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"size\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n Optional,\n} from '@angular/core';\nimport { CalloutComponent } from '../../overlay/callout/callout.component';\n\n@Component({\n selector: '[rivLink]',\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkComponent {\n constructor(@Optional() private readonly parentCallout?: CalloutComponent) {}\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @Input()\n theme: LinkComponent.Theme = 'light';\n\n @HostBinding('class')\n get classes() {\n return [\n this.disabled || this.locked ? 'disabled' : '',\n this.theme === 'dark' || this.parentCallout?.theme === 'dark'\n ? 'dark'\n : '',\n ].join(' ');\n }\n}\n\nexport namespace LinkComponent {\n export const Themes = ['light', 'dark'] as const;\n export type Theme = (typeof Themes)[number];\n}\n","<ng-content></ng-content>\n<riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-input-label',\n templateUrl: './input-label.component.html',\n styleUrls: ['./input-label.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputLabelComponent {\n @Input()\n label?: string;\n\n @Input()\n help?: string;\n\n @Input()\n required: boolean = false;\n\n @Input()\n labelActionText?: string;\n\n @Output()\n labelAction = new EventEmitter<MouseEvent>();\n}\n","<label *ngIf=\"label\">\n <span class=\"title\">\n {{ label }}\n <span *ngIf=\"required\">*</span>\n </span>\n <button\n *ngIf=\"labelActionText\"\n rivLink\n type=\"button\"\n (click)=\"labelAction.emit($event)\"\n type=\"button\"\n >\n {{ labelActionText }}\n </button>\n <riv-help *ngIf=\"help\" [help]=\"help\" [size]=\"12\"></riv-help>\n</label>\n<div class=\"content\"><ng-content></ng-content></div>\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n} from '@angular/core';\n\n@Directive({\n selector: '[riv-auto-focus]',\n})\nexport class AutoFocusDirective implements AfterViewInit, OnChanges {\n constructor(private readonly el: ElementRef) {}\n\n @Input('riv-auto-focus')\n autoActionActive: AutoFocusDirective.AutoAction = true;\n\n private deferActionUntilActive: boolean = false;\n\n ngAfterViewInit() {\n if (this.autoActionActive) {\n this.focus();\n } else {\n this.deferActionUntilActive = true;\n }\n }\n\n ngOnChanges() {\n if (this.deferActionUntilActive && this.autoActionActive) {\n this.deferActionUntilActive = false;\n this.focus();\n }\n }\n\n private focus() {\n if (this.el && this.el.nativeElement) {\n const element = this.el.nativeElement;\n if (!element.hasAttribute('tabindex')) {\n element.tabIndex = 0;\n }\n element.focus();\n\n if (\n this.autoActionActive === 'select' &&\n typeof element.select === 'function'\n ) {\n element.select();\n }\n }\n }\n}\n\nexport namespace AutoFocusDirective {\n /**\n * false: do nothing\n * true: focus the input only\n * 'select': focus the input and select all contents\n */\n export type AutoAction = boolean | 'select';\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { AutoFocusDirective } from '../auto-focus/auto-focus.directive';\nimport { InputLabelComponent } from '../input-label/input-label.component';\n\n@Component({\n selector: 'riv-text-field',\n templateUrl: './text-field.component.html',\n styleUrls: ['./text-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextFieldComponent\n extends InputLabelComponent\n implements OnChanges\n{\n @Input()\n disabled: boolean = false;\n\n @Input()\n readonly: boolean = false;\n\n @Input()\n placeholder: string = '';\n\n @Input()\n state: TextFieldComponent.State = 'valid';\n\n @Input()\n casing: TextFieldComponent.Casing = 'user';\n\n @Input()\n type: TextFieldComponent.Type = 'text';\n\n @Input()\n size: TextFieldComponent.Size = 'medium';\n\n @Input()\n autoFocus: AutoFocusDirective.AutoAction = false;\n\n @Input()\n name?: string;\n\n @Input()\n minLength?: number;\n\n @Input()\n maxLength?: number;\n\n protected _value: string = '';\n @Input()\n set value(v: string) {\n this._value = v;\n }\n\n protected setText() {\n if (\n TextFieldComponent.clean(this._value, this.casing) ===\n TextFieldComponent.clean(this._text, this.casing)\n )\n return;\n this._text = TextFieldComponent.format(this._value, this.casing);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] || changes['casing']) {\n this.setText();\n }\n }\n\n @Output()\n valueChange = new EventEmitter<string>();\n\n @Output()\n blur = new EventEmitter<string>();\n\n protected _text: string = '';\n\n set text(t: string) {\n // The user is setting the value. We'll keep the internal state exactly as\n // the user has typed it, but emit the clean value. Even if the cleaned\n // value is passed directly back to us, we won't override the user's work\n // (see comment in value setter above).\n this._text = t;\n this.valueChange.emit(TextFieldComponent.clean(t, this.casing));\n }\n get text(): string {\n return this._text;\n }\n\n inputBlur() {\n // Now that the user is done editing and has left the field, we can safely\n // update the internal state to match the cleaned/formatted version of\n // their input.\n this._text = TextFieldComponent.format(this._text, this.casing);\n this.blur.emit(TextFieldComponent.clean(this._text, this.casing));\n }\n}\n\nexport namespace TextFieldComponent {\n export const Casings = ['user', 'upper', 'lower'] as const;\n export type Casing = (typeof Casings)[number];\n\n export const Types = [\n 'text',\n 'email',\n 'password',\n 'search',\n 'tel',\n 'url',\n ] as const;\n export type Type = (typeof Types)[number];\n\n export const States = ['valid', 'warning', 'error'] as const;\n export type State = (typeof States)[number];\n\n export const Sizes = ['small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n\n export function clean(v: string, casing: Casing): string {\n switch (casing) {\n case 'lower':\n return v.toLowerCase();\n case 'upper':\n return v.toUpperCase();\n case 'user':\n return v;\n }\n }\n\n // For the basic text component, formatting is a simple pass-through to\n // clean(). More advanced inputs will implement more complicated formatting.\n export function format(v: string, casing: Casing): string {\n return clean(v, casing);\n }\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [riv-auto-focus]=\"autoFocus\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"inputBlur()\"\n />\n</riv-input-label>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { TextFieldComponent } from '../text-field/text-field.component';\n\n@Component({\n selector: 'riv-alphabetic-field',\n templateUrl: '../text-field/text-field.component.html',\n styleUrls: ['../text-field/text-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlphabeticFieldComponent extends TextFieldComponent {\n protected override setText() {\n if (\n AlphabeticFieldComponent.clean(this._value, this.casing) ===\n AlphabeticFieldComponent.clean(this._text, this.casing)\n )\n return;\n this._text = AlphabeticFieldComponent.format(this._value, this.casing);\n }\n\n override set text(t: string) {\n this._text = t;\n this.valueChange.emit(AlphabeticFieldComponent.clean(t, this.casing));\n }\n override get text(): string {\n return this._text;\n }\n\n override inputBlur() {\n this._text = AlphabeticFieldComponent.format(this._text, this.casing);\n this.blur.emit(AlphabeticFieldComponent.clean(this._text, this.casing));\n }\n}\n\nexport namespace AlphabeticFieldComponent {\n export function clean(v: string, casing: TextFieldComponent.Casing): string {\n const cleaned = v.replaceAll(/[^A-Za-z]/g, '');\n return TextFieldComponent.clean(cleaned, casing);\n }\n\n export function format(v: string, casing: TextFieldComponent.Casing): string {\n return clean(v, casing);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'riv-button-group',\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonGroupComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-loading',\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingComponent {\n static readonly STROKE_WIDTH = 1.5;\n static readonly ARC_START_RADIANS = (Math.PI * 22.5) / 180;\n\n @Input()\n size: LoadingComponent.Size = 40;\n\n @Input()\n variant: LoadingComponent.Variant = 'dark';\n\n getPathData() {\n const size = this.size;\n const halfSize = size / 2;\n\n const stroke = LoadingComponent.STROKE_WIDTH;\n const halfStroke = stroke / 2;\n\n const top = halfStroke;\n const right = size - stroke;\n const radius = (size - stroke * 2) / 2;\n\n const commands = [\n `M${halfSize},${top}`,\n `L${right},${top}`,\n `L${right},${halfSize}`,\n `A ${radius} ${radius},0,1,1,${halfSize} ${top}`,\n ];\n return commands.join(' ');\n }\n\n readonly strokeWidth = LoadingComponent.STROKE_WIDTH;\n}\n\nexport namespace LoadingComponent {\n export const Sizes = [16, 40, 80] as const;\n export type Size = (typeof LoadingComponent.Sizes)[number];\n\n export const Variants = ['light', 'dark'] as const;\n export type Variant = (typeof LoadingComponent.Variants)[number];\n}\n","<svg\n [ngClass]=\"{\n dark: variant === 'dark',\n light: variant === 'light',\n small: size === 16,\n medium: size === 40,\n large: size === 80\n }\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"size\"\n [attr.height]=\"size\"\n [attr.viewBox]=\"'0 0 ' + size + ' ' + size\"\n fill=\"none\"\n>\n <path [attr.stroke-width]=\"strokeWidth\" [attr.d]=\"getPathData()\"></path>\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n Optional,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { LoadingComponent } from '../../load/loading/loading.component';\nimport { ButtonGroupComponent } from '../button-group/button-group.component';\n\n@Component({\n selector: '[rivButton]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent implements OnChanges {\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n @Optional() private readonly group: ButtonGroupComponent,\n ) {}\n\n @Input()\n locked?: boolean;\n\n @Input()\n disabled?: boolean;\n\n @Input()\n loading?: boolean;\n\n @Input()\n full?: boolean;\n\n @Input()\n size: ButtonComponent.Size = 'medium';\n\n @Input()\n variant: ButtonComponent.Variant = 'basic';\n\n @Input()\n icon?: IconComponent.Name;\n\n @Input()\n iconPosition: ButtonComponent.IconPosition = 'first';\n\n @Input()\n active?: boolean = false;\n\n @HostBinding('class')\n get classes() {\n return Object.entries({\n disabled: this.disabled || this.locked,\n full: this.full,\n loading: this.loading,\n [this.variant]: true,\n [this.size]: true,\n stacked: this.iconPosition === 'stacked',\n grouped: !!this.group,\n active: this.active,\n })\n .filter(([_, v]) => v)\n .map(([k]) => k)\n .join(' ');\n }\n\n getLoadingVariant(): LoadingComponent.Variant {\n switch (this.variant) {\n case 'basic':\n case 'caution':\n case 'ghost':\n return 'dark';\n case 'danger':\n case 'primary':\n return 'light';\n }\n }\n\n getIconSize(): IconComponent.Size {\n switch (this.size) {\n case 'xsmall':\n case 'small':\n return 16;\n case 'medium':\n return 20;\n case 'large':\n case 'xlarge':\n return 24;\n }\n }\n\n private disableNativeElement: boolean = false;\n private lockNativeElement: boolean = false;\n\n ngOnChanges(changes: SimpleChanges) {\n const accessChange: boolean = !!changes['disabled'] || !!changes['locked'];\n if (accessChange) {\n if (changes['disabled']) {\n this.disableNativeElement = changes['disabled'].currentValue;\n }\n if (changes['locked']) {\n this.lockNativeElement = changes['locked'].currentValue;\n }\n if ('disabled' in this.el.nativeElement) {\n if (this.disableNativeElement || this.lockNativeElement) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n }\n }\n }\n}\n\nexport namespace ButtonComponent {\n export const Sizes = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n ] as const;\n export type Size = (typeof Sizes)[number];\n\n export const Variants = [\n 'basic',\n 'ghost',\n 'primary',\n 'danger',\n 'caution',\n ] as const;\n export type Variant = (typeof Variants)[number];\n\n export const IconPositions = ['first', 'last', 'stacked'] as const;\n export type IconPosition = (typeof IconPositions)[number];\n}\n","<riv-icon\n *ngIf=\"icon && (iconPosition === 'first' || iconPosition === 'stacked')\"\n [name]=\"locked ? 'Lock' : icon\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<span><ng-content></ng-content></span>\n<riv-icon\n *ngIf=\"locked && !icon\"\n [name]=\"'Lock'\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<riv-icon\n *ngIf=\"icon && iconPosition === 'last'\"\n [name]=\"locked ? 'Lock' : icon\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<riv-loading\n *ngIf=\"loading\"\n [size]=\"16\"\n [variant]=\"getLoadingVariant()\"\n></riv-loading>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent implements OnChanges {\n @Input()\n name?: string;\n\n @Input()\n identifier?: string;\n\n @Input()\n value: boolean = false;\n\n @Input()\n checkedColorToken: string = '--purp-60';\n\n @Input()\n indeterminateColorToken: string = '--purp-60';\n\n @Input()\n checkboxTooltip?: string;\n\n @Input()\n indeterminate: boolean = false;\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n required: boolean = false;\n\n @Output()\n valueChange = new EventEmitter<boolean>();\n\n emit(v: boolean) {\n this.valueChange.emit(v);\n this.ensureSynchronizedState(this.value);\n }\n\n @ViewChild('label', { static: true }) label?: ElementRef<HTMLLabelElement>;\n\n @ViewChild('input', { static: true }) input?: ElementRef<HTMLInputElement>;\n\n ensureSynchronizedState(v: boolean) {\n if (this.input) {\n this.input.nativeElement.checked = v;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('value' in changes)\n this.ensureSynchronizedState(changes['value'].currentValue);\n }\n\n isCheckboxOnly(): boolean {\n return !this.label || this.label.nativeElement.childNodes.length === 1;\n }\n\n getCheckedBackgroundColor(): string {\n return `var(${this.checkedColorToken})`;\n }\n\n getIndeterminateBackgroundColor(): string {\n return `var(${this.indeterminateColorToken})`;\n }\n}\n","<label\n #label\n [class.disabled]=\"disabled\"\n [class.has-content]=\"!isCheckboxOnly()\"\n>\n <input\n #input\n type=\"checkbox\"\n [id]=\"identifier\"\n [name]=\"name\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [checked]=\"value\"\n [indeterminate]=\"indeterminate\"\n (change)=\"emit(!!input.checked)\"\n [style.--checked-background-color]=\"getCheckedBackgroundColor()\"\n [style.--indeterminate-background-color]=\"getIndeterminateBackgroundColor()\"\n [rivTooltip]=\"checkboxTooltip\"\n />\n <ng-content></ng-content>\n</label>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'riv-card-checkbox',\n templateUrl: './card-checkbox.component.html',\n styleUrls: ['./card-checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardCheckboxComponent extends CheckboxComponent {}\n","<label [class.disabled]=\"disabled\">\n <div\n class=\"checkbox\"\n [class.checked]=\"value\"\n [class.indeterminate]=\"indeterminate\"\n >\n <riv-checkbox\n [name]=\"name\"\n [identifier]=\"identifier\"\n [value]=\"value\"\n [checkboxTooltip]=\"checkboxTooltip\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (valueChange)=\"valueChange.emit($event)\"\n ></riv-checkbox>\n </div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { AutoFocusDirective } from '../auto-focus/auto-focus.directive';\nimport { InputLabelComponent } from '../input-label/input-label.component';\nimport { TextFieldComponent } from '../text-field/text-field.component';\n\n@Component({\n selector: 'riv-number-field',\n templateUrl: './number-field.component.html',\n styleUrls: ['./number-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumberFieldComponent\n extends InputLabelComponent\n implements OnChanges\n{\n @Input()\n disabled: boolean = false;\n\n @Input()\n readonly: boolean = false;\n\n @Input()\n placeholder: string = '';\n\n @Input()\n state: TextFieldComponent.State = 'valid';\n\n @Input()\n maximumFractionDigits: number = 0;\n\n @Input()\n minimumFractionDigits: number = 0;\n\n @Input()\n min: number = -Infinity;\n\n @Input()\n max: number = Infinity;\n\n @Input()\n align: NumberFieldComponent.Alignment = 'left';\n\n @Input()\n size: TextFieldComponent.Size = 'medium';\n\n @Input()\n autoFocus: AutoFocusDirective.AutoAction = false;\n\n @Input()\n name?: string;\n\n private _value: number | null = null;\n @Input()\n set value(v: number | null) {\n this._value = v;\n }\n\n private setText() {\n const value =\n typeof this._value === 'number' ? this._value.toString() : null;\n if (\n NumberFieldComponent.clean(\n value,\n this.maximumFractionDigits,\n this.min,\n this.max,\n ) ===\n NumberFieldComponent.clean(\n this._text,\n this.maximumFractionDigits,\n this.min,\n this.max,\n )\n )\n return;\n this._text = NumberFieldComponent.format(\n value,\n this.minimumFractionDigits,\n this.maximumFractionDigits,\n this.min,\n this.max,\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes['value'] ||\n changes['maximumFractionDigits'] ||\n changes['minimumFractionDigits'] ||\n changes['min'] ||\n changes['max']\n ) {\n this.setText();\n }\n }\n\n @Output()\n valueChange = new EventEmitter<number | null>();\n\n @Output()\n blur = new EventEmitter<number | null>();\n\n protected _text: string = '';\n\n set text(t: string) {\n this._text = t;\n this.valueChange.emit(\n NumberFieldComponent.clean(\n t,\n this.maximumFractionDigits,\n this.min,\n this.max,\n ),\n );\n }\n get text(): string {\n return this._text;\n }\n\n inputBlur() {\n this._text = NumberFieldComponent.format(\n this._text,\n this.minimumFractionDigits,\n this.maximumFractionDigits,\n this.min,\n this.max,\n );\n this.blur.emit(\n NumberFieldComponent.clean(\n this._text,\n this.maximumFractionDigits,\n this.min,\n this.max,\n ),\n );\n }\n}\n\nexport namespace NumberFieldComponent {\n export const Alignments = ['left', 'center', 'right'] as const;\n export type Alignment = (typeof Alignments)[number];\n\n export function clean(\n v: string | null,\n maximumFractionDigits: number,\n min: number,\n max: number,\n ): number | null {\n function digitsOnly(str: string): string {\n return str.replace(/\\D/g, '');\n }\n\n if (!v) return null;\n const decimalPointIdx = v.indexOf('.');\n const signIdx = v.indexOf('-');\n const cleanedString: string =\n (signIdx > -1 ? '-' : '') +\n (decimalPointIdx > -1\n ? digitsOnly(v.substring(0, decimalPointIdx)) +\n '.' +\n digitsOnly(v.substring(decimalPointIdx + 1))\n : digitsOnly(v));\n if (\n cleanedString === '.' ||\n cleanedString === '-' ||\n cleanedString === '-.'\n ) {\n return null;\n }\n const cleaned = Number(\n Number(cleanedString).toFixed(maximumFractionDigits),\n );\n return Math.max(min, Math.min(max, cleaned));\n }\n\n export function format(\n v: string | null,\n minimumFractionDigits: number,\n maximumFractionDigits: number,\n min: number,\n max: number,\n ): string {\n const cleaned = clean(v, maximumFractionDigits, min, max);\n if (cleaned === null) return '';\n return new Intl.NumberFormat('en-US', {\n minimumFractionDigits,\n maximumFractionDigits,\n }).format(cleaned);\n }\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [style.textAlign]=\"align\"\n [riv-auto-focus]=\"autoFocus\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"inputBlur()\"\n />\n</riv-input-label>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NumberFieldComponent } from '../number-field/number-field.component';\n\n@Component({\n selector: 'riv-currency-field',\n templateUrl: './currency-field.component.html',\n styleUrls: ['./currency-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CurrencyFieldComponent extends NumberFieldComponent {\n @Input()\n override placeholder: string = '0.00';\n\n @Input()\n override minimumFractionDigits: number = 2;\n\n @Input()\n override maximumFractionDigits: number = 2;\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <span class=\"prefix\" [class.large]=\"size === 'large'\">$</span>\n <input\n #input\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [class.large]=\"size === 'large'\"\n [style.textAlign]=\"align\"\n [riv-auto-focus]=\"autoFocus\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"inputBlur()\"\n />\n</riv-input-label>\n","import { BehaviorSubject } from 'rxjs';\n\n/**\n * A BehaviorSubject backed by localStorage.\n */\nexport class LocalStorage<\n T extends LocalStorage.Serializable,\n> extends BehaviorSubject<T> {\n constructor(private readonly key: string, defaultValue: T) {\n const rawValue = localStorage.getItem(key);\n const value = rawValue ? JSON.parse(rawValue) : undefined;\n super(value ?? defaultValue);\n }\n\n override next(value: T) {\n localStorage.setItem(this.key, JSON.stringify(value));\n super.next(value);\n }\n}\n\nexport namespace LocalStorage {\n export type Serializable =\n | string\n | number\n | boolean\n | null\n | { [property: string]: Serializable }\n | Serializable[];\n}\n","import Fuse, {\n FuseResult,\n FuseResultMatch,\n IFuseOptions,\n RangeTuple,\n} from 'fuse.js';\nimport { defaultsDeep, flattenDeep, sortBy } from 'lodash';\nimport {\n connectable,\n Connectable,\n map,\n merge,\n Observable,\n ReplaySubject,\n scan,\n startWith,\n Subject,\n} from 'rxjs';\nimport { DeepPartial } from 'utility-types';\nimport { NumberPipe } from '../../format/pipes/number.pipe';\nimport { HighlightComponent } from '../../visualization/highlight/highlight.component';\n\nexport namespace RivSelect {\n /////////////\n // Options //\n /////////////\n\n /**\n * ┌─────────────────────-------------------───┐\n * │ BaseOption │\n * │ │\n * │ The core data required for each option │\n * │ (such as id and title). │\n * ├──────────────────────-------------------──┤\n * │ Option (BaseOption + children) │\n * │ │\n * │ Provides recursive type safety to the │\n * │ type safety to the BaseOption. │\n * └─------------------┬-------────────────────┘\n * |\n * ┌───────────────────▼───────────────────────┐\n * │ SourceOption (Option + search highlights) │\n * │ │\n * │ Adds search highlights to the Option and │\n * │ is the return type for the option Source │\n * │ (data fetcher) function. │\n * └───────────────────┬───────────────────────┘\n * |\n * ┌───────────────────▼───────────────────────┐\n * │ FullOption (SourceOption + UI state) │\n * │ │\n * │ Augments the SourceOption with all of the │\n * │ UI information from other parts of the │\n * │ state, such as selection status, whether │\n * │ or not the node is expanded, etc. │\n * └───────────────────────────────────────────┘\n *\n * Note that the usages of Omit<...> in this section are not required, but\n * do help in-editor type hints to be more clear and direct.\n */\n\n export type BaseOption = {\n id: string | number;\n title: string;\n subtitle?: string;\n help?: string;\n count?: number;\n disabled?: boolean;\n };\n export type Option<O extends BaseOption = BaseOption> = O & {\n children?: Option<O>[];\n };\n\n export type SourceOption<O extends BaseOption> = Omit<\n Option<O>,\n 'children'\n > & {\n titleHighlightIndices?: HighlightComponent.HighlightIndices[];\n subtitleHighlightIndices?: HighlightComponent.HighlightIndices[];\n children?: SourceOption<O>[];\n };\n\n export type MultiSelectionState = boolean | 'indeterminate';\n\n export type FullOption<O extends BaseOption> = Omit<\n SourceOption<O>,\n 'children'\n > & {\n selected: MultiSelectionState;\n expanded: boolean;\n selectable: boolean;\n expandable: boolean;\n children?: FullOption<O>[];\n };\n\n ///////////////////\n // Option groups //\n ///////////////////\n\n /**\n * The relationships between OptionGroup, SourceOptionGroup, and\n * FullOptionGroup is analogous to the option types above.\n *\n * As with before, the use of Omit<...> is not required but helpful.\n */\n\n export type OptionGroup<O extends BaseOption> = {\n header?: string;\n options: Option<O>[];\n };\n\n export type SourceOptionGroup<O extends BaseOption> = Omit<\n OptionGroup<O>,\n 'options'\n > & {\n options: SourceOption<O>[];\n };\n\n export type FullOptionGroup<O extends BaseOption> = Omit<\n SourceOptionGroup<O>,\n 'options'\n > & {\n options: FullOption<O>[];\n };\n\n /**\n * The OptionSet class provides Set-like functionality, but uniqueness is\n * determined by the option's ID rather than the object reference.\n */\n export class OptionSet<O extends BaseOption> extends Set<SourceOption<O>> {\n override has(option: SourceOption<O>) {\n return !![...this].find(o => o.id === option.id);\n }\n\n override add(option: SourceOption<O>) {\n if (this.has(option)) {\n // The Set already has some version of this option, but we'll make sure\n // it has the most recent object reference (while keeping insertion\n // order consistent).\n const newOptions = [...this].map(o =>\n o.id === option.id ? option : o,\n );\n this.clear();\n newOptions.forEach(o => {\n super.add(o);\n });\n } else {\n super.add(option);\n }\n return this;\n }\n\n override delete(option: SourceOption<O>) {\n const existing = [...this].find(o => o.id === option.id);\n if (existing) {\n super.delete(existing);\n return true;\n } else {\n return false;\n }\n }\n }\n\n ///////////\n // State //\n ///////////\n\n /**\n * The CoreState provides all of the foundational pieces of state required\n * for a working component. FullState is a pure derivation of CoreState plus\n * the configuration options, and provides conveniences for rendering the\n * components. Actions and the core state are passed to the reducer to\n * produce new CoreStates (which are then used to calculate new FullStates).\n *\n * ┌──────┐\n * │ UI ◄────────┐\n * └──┬───┘ │\n * │ │\n * ┌──▼────────┐ │\n * │ Actions │ │\n * └──┬────────┘ │\n * │ │\n * ┌──▼────────────┴─┐\n * │ State reducer │\n * └─────────────────┘\n */\n\n export type CoreState<O extends BaseOption> = {\n query: {\n search: string;\n };\n load: {\n loading: boolean;\n error: unknown | null;\n };\n sourceOptionGroups: SourceOptionGroup<O>[];\n selection: {\n selected: OptionSet<O>;\n };\n display: {\n placeholder: string;\n open: boolean;\n expandedOptions: Set<O['id']>;\n };\n };\n\n export type FullState<O extends BaseOption> = CoreState<O> & {\n query: {\n showSearch: boolean;\n searchPlaceholder: string;\n };\n fullOptionGroups: FullOptionGroup<O>[];\n selection: {\n allowMultiSelect: boolean;\n allowSelectAll: boolean;\n visibleSelectionState: MultiSelectionState;\n };\n display: {\n selected: string;\n zeroStateMessage: string | null;\n dividers: boolean;\n inline: boolean;\n maxHeight: string | null;\n maxWidth: string | null;\n minHeight: string | null;\n minWidth: string | null;\n displayLimitMessage: string | null;\n showSingleSelected: boolean;\n };\n };\n\n /////////////\n // Actions //\n /////////////\n\n export type Action<O extends BaseOption> =\n | { type: 'load' }\n | { type: 'openChange'; open: boolean }\n | { type: 'searchChange'; payload: string }\n | {\n type: 'selectionChange';\n payload: CoreState<O>['selection'];\n }\n | {\n type: 'toggleOptionSelected';\n id: O['id'];\n }\n | {\n type: 'setSelectedOption';\n id: O['id'];\n }\n | {\n type: 'visibleSelectedChange';\n }\n | {\n type: 'toggleOptionExpanded';\n id: O['id'];\n };\n\n type InternalAction<O extends BaseOption> =\n | { type: 'loadComplete'; data: SourceOptionGroup<O>[] }\n | { type: 'loadError'; error: unknown };\n\n ////////////\n // Source //\n ////////////\n\n /**\n * The Source's job is to fetch options (based on the current state) which\n * then blend with the other pieces of state to produce the FullState.\n */\n\n export type Source<O extends BaseOption> = (\n query: CoreState<O>['query'],\n mostRecentAction: Action<O>,\n ) => Promise<SourceOptionGroup<O>[]>;\n\n /////////////\n // Manager //\n /////////////\n\n export type Manager<O extends BaseOption> = {\n actions: Subject<Action<O>>;\n state: Connectable<FullState<O>>;\n };\n\n export type ManagerOptions<O extends BaseOption> = {\n initialState?: DeepPartial<CoreState<O>>;\n allowMultiSelect?: boolean;\n allowSearch?: boolean;\n allowSelectAll?: boolean;\n searchPlaceholder?: string;\n dividers?: boolean;\n inline?: boolean;\n maxHeight?: string | null;\n maxWidth?: string | null;\n minHeight?: string | null;\n minWidth?: string | null;\n displayLimit?: number;\n showSingleSelected?: boolean;\n };\n\n export function createManager<O extends BaseOption>(\n source: Source<O>,\n options?: ManagerOptions<O>,\n ): Manager<O> {\n const defaultState: CoreState<O> = {\n query: {\n search: '',\n },\n load: {\n loading: false,\n error: null,\n },\n sourceOptionGroups: [],\n selection: {\n selected: new OptionSet(),\n },\n display: {\n placeholder: 'Select...',\n open: false,\n expandedOptions: new Set(),\n },\n };\n const defaultedInitialState: CoreState<O> = defaultsDeep(\n {},\n options?.initialState,\n defaultState,\n );\n\n const actions: Subject<Action<O>> = new Subject();\n const internalActions: Subject<InternalAction<O>> = new Subject();\n const coreState: Observable<CoreState<O>> = merge(\n actions,\n internalActions,\n ).pipe(\n scan(\n (state, action) =>\n sideEffects(reduce(state, action), action, source, internalActions),\n defaultedInitialState,\n ),\n startWith(defaultedInitialState),\n );\n\n const state: Connectable<FullState<O>> = connectable(\n coreState.pipe(\n map(s => {\n const allOptionGroups: FullOptionGroup<O>[] =\n s.sourceOptionGroups.map(optionGroup => {\n return {\n ...optionGroup,\n options: optionGroup.options.map(option =>\n augmentOptionToFullOption(s, option),\n ),\n };\n });\n\n const topLevelOptions = getTopLevelOptions(allOptionGroups);\n\n const fullOptionGroups = applyDisplayLimit(\n allOptionGroups,\n options?.displayLimit,\n );\n\n return {\n ...s,\n query: {\n ...s.query,\n showSearch:\n !!options?.allowSearch &&\n (!!s.query.search || countAllOptions(allOptionGroups) > 5),\n searchPlaceholder: options?.searchPlaceholder ?? 'Search',\n },\n fullOptionGroups,\n selection: {\n ...s.selection,\n allowMultiSelect: !!options?.allowMultiSelect,\n allowSelectAll: !!options?.allowSelectAll,\n visibleSelectionState:\n getParentMultiSelectionState(topLevelOptions),\n },\n display: {\n ...s.display,\n selected: getSelectedDisplay(s),\n zeroStateMessage: getZeroStateMessage(s),\n dividers: !!options?.dividers,\n inline: !!options?.inline,\n maxHeight: options?.maxHeight ?? null,\n maxWidth: options?.maxWidth ?? null,\n minHeight: options?.minHeight ?? null,\n minWidth: options?.minWidth ?? null,\n displayLimitMessage: getDisplayLimitMessage(\n countVisibleOptions(fullOptionGroups, !!s.query.search),\n countVisibleOptions(allOptionGroups, !!s.query.search),\n s.query,\n ),\n showSingleSelected: !!options?.showSingleSelected,\n },\n };\n }),\n ),\n {\n connector: () => new ReplaySubject(1),\n resetOnDisconnect: false,\n },\n );\n state.connect();\n\n // Load the options immediately for selects that are displayed inline.\n if (options?.inline) actions.next({ type: 'load' });\n\n return { actions, state };\n }\n\n export type InMemoryManagerOptions<O extends BaseOption> =\n ManagerOptions<O> & {\n fuseOptions?: IFuseOptions<O>;\n };\n\n export function createInMemoryManager<O extends BaseOption>(\n fetchDataset: () => Promise<OptionGroup<O>[]> | OptionGroup<O>[],\n options?: InMemoryManagerOptions<O>,\n ): Manager<O> {\n let data: OptionGroup<O>[];\n let fuse: Fuse<O>;\n let exactMatch: boolean = false;\n let parents: Map<O['id'], O['id']>;\n let children: Map<O['id'], O['id'][]>;\n\n const source: Source<O> = async (query, mostRecentAction) => {\n /*\n Re-fetch the options on the load action, and rebuild the state\n derived from the option data.\n */\n if (\n mostRecentAction.type === 'load' ||\n mostRecentAction.type === 'openChange'\n ) {\n data = await fetchDataset();\n const topLevelOptions = getTopLevelOptions(data);\n\n fuse = new Fuse(flattenOptions(topLevelOptions, false), {\n threshold: 0.2,\n keys: ['title'],\n includeScore: true,\n includeMatches: true,\n ...options?.fuseOptions,\n });\n\n exactMatch = options?.fuseOptions?.threshold == 0;\n [parents, children] = getRelationshipMaps(topLevelOptions);\n }\n\n /*\n If the user is not searching options, return the full set of options\n as-is.\n */\n if (!query.search) return data;\n\n /*\n Execute the search with fuse. Once we have the search match data,\n rebuild just as much of the tree as is needed to render the search\n results. Specifically, any match will need all of its ancestors (so\n that matched leaf nodes are shown nested under their ancestors) and all\n of its children (because a matching parent means that all of its\n descendants match too, per the design specification), whether they\n themselves matched or not.\n */\n const matchedOptions: FuseResult<O>[] = fuse.search(query.search);\n const matchedIds: Set<O['id']> = new Set(\n matchedOptions.map(result => result.item.id),\n );\n\n const matchAncestors: Set<O['id']> = new Set();\n function collectAncestors(ids: O['id'][]) {\n for (const id of ids) {\n const parentId = parents.get(id);\n if (parentId) {\n matchAncestors.add(parentId);\n collectAncestors([parentId]);\n }\n }\n }\n collectAncestors([...matchedIds]);\n\n const matchDescendants: Set<O['id']> = new Set();\n function collectDescendants(ids: O['id'][]) {\n for (const id of ids) {\n const childrenIds = children.get(id);\n if (childrenIds) {\n for (const child of childrenIds) {\n matchDescendants.add(child);\n }\n collectDescendants(childrenIds);\n }\n }\n }\n collectDescendants([...matchedIds]);\n\n /*\n Next, we'll combine all the matched IDs with their direct ancestors and\n descandants, and filter the original data set down to just these\n options.\n */\n const filteredIds: Set<O['id']> = new Set([\n ...matchedIds,\n ...matchAncestors,\n ...matchDescendants,\n ]);\n\n function filterOptions(options: Option<O>[]): Option<O>[] {\n const filteredOptions: Option<O>[] = [];\n for (const option of options) {\n if (filteredIds.has(option.id)) {\n filteredOptions.push({\n ...option,\n children: option.children?.length\n ? filterOptions(option.children)\n : undefined,\n });\n }\n }\n return filteredOptions;\n }\n const filteredOptions = filterOptions(getTopLevelOptions(data));\n\n /*\n At this point, we have an array of distinct trees (top-level options),\n filtered down to only the options matching the search query. Note that\n we don't care about section headers when searching since results should\n be ordered by relevance. To calculate the order of these trees, we'll\n take the total match scores for options found in the tree, divided by\n the count of matches in the tree (the best average match score).\n */\n\n const scoreMap: Map<O['id'], number> = new Map(\n matchedOptions.map(result => [result.item.id, result.score ?? 0]),\n );\n const ordered = sortBy(filteredOptions, (option: Option<O>): number => {\n function calculateScore(option: Option<O>): number {\n return (\n (scoreMap.get(option.id) ?? 0) +\n (option.children ?? []).reduce(\n (score, child) => score + calculateScore(child),\n 0,\n )\n );\n }\n function calculateCount(option: Option<O>): number {\n return (\n 1 +\n (option.children ?? []).reduce(\n (count, child) => count + calculateCount(child),\n 0,\n )\n );\n }\n const totalScore = calculateScore(option);\n const totalCount = calculateCount(option);\n return totalScore / totalCount;\n });\n\n /*\n Finally, we'll add highlight indices to the matches so that they can be\n displayed to the user.\n */\n\n type Highlights = {\n titleHighlightIndices?: HighlightComponent.HighlightIndices[];\n subtitleHighlightIndices?: HighlightComponent.HighlightIndices[];\n };\n const highlightMap: Map<O['id'], Highlights> = new Map(\n matchedOptions.map(result => {\n const highlights: Highlights = {};\n for (const match of result.matches ?? []) {\n // filter out inexact matches\n if (exactMatch && match.value != null) {\n match.indices = match.indices.filter(\n isFuseMatchExact(match, query.search),\n );\n }\n if (match.key === 'title') {\n highlights.titleHighlightIndices = [...match.indices];\n }\n if (match.key === 'subtitle') {\n highlights.subtitleHighlightIndices = [...match.indices];\n }\n }\n return [result.item.id, highlights];\n }),\n );\n function addHighlightsToOption(options: Option<O>[]): SourceOption<O>[] {\n return options.map(option => ({\n ...option,\n ...highlightMap.get(option.id),\n ...(option.children?.length\n ? { children: addHighlightsToOption(option.children) }\n : null),\n }));\n }\n\n return [{ options: addHighlightsToOption(ordered) }];\n };\n\n return createManager(source, options);\n }\n\n export function isFuseMatchExact(\n match: FuseResultMatch,\n search: string,\n ): (\n value: RangeTuple,\n index: number,\n array: readonly RangeTuple[],\n ) => boolean {\n return matchedIndices => {\n const matchedValue = match\n .value!.slice(matchedIndices[0], matchedIndices[1] + 1)\n .toLowerCase();\n // fuse is weird with it's matches. For a text of \"planning\" and a search string of \"plan\"\n // the matched value will be \"plann\" with the extra 'n' because of its fuzzy matching.\n // so just make sure the matched value at least starts with the search string.\n // it's extra weird because for a text of \"analytics\" and a search string of \"nalytics\",\n // the matched value will be \"analytics\". So we just need to make sure the the matched value\n // includes the search string because there might be extra stuff on the front or the end.\n return matchedValue.includes(search.toLowerCase());\n };\n }\n\n //////////////////////////////////\n // State reducer (with helpers) //\n //////////////////////////////////\n\n function getDisplayLimitMessage<O extends BaseOption>(\n displayedOptionCount: number,\n totalOptionCount: number,\n query: CoreState<O>['query'],\n ): string | null {\n if (displayedOptionCount === totalOptionCount) return null;\n const rivNumber = new NumberPipe();\n const displayed = rivNumber.transform(displayedOptionCount);\n const total = rivNumber.transform(totalOptionCount);\n const start = `Showing ${displayed} of ${total} options`;\n return query.search ? `${start} matching \"${query.search}\"` : start;\n }\n\n function countVisibleOptions<O extends BaseOption>(\n optionGroups: FullOptionGroup<O>[],\n leafOnly: boolean,\n ): number {\n function count(options: FullOption<O>[]): number {\n return options.reduce((acc, option) => {\n if (option.expanded && option.children?.length) {\n return acc + (leafOnly ? 0 : 1) + count(option.children);\n }\n return acc + 1;\n }, 0);\n }\n\n return optionGroups.reduce(\n (total, group) => total + count(group.options),\n 0,\n );\n }\n\n function countAllOptions<O extends BaseOption>(\n optionGroups: FullOptionGroup<O>[],\n ): number {\n function count(options: FullOption<O>[]): number {\n return options.reduce((acc, option) => {\n if (option.children?.length) {\n return acc + 1 + count(option.children);\n }\n return acc + 1;\n }, 0);\n }\n\n return optionGroups.reduce(\n (total, group) => total + count(group.options),\n 0,\n );\n }\n\n function applyDisplayLimit<O extends BaseOption>(\n optionGroups: FullOptionGroup<O>[],\n displayLimit?: number,\n ): FullOptionGroup<O>[] {\n if (displayLimit === undefined) return optionGroups;\n\n type DisplayLimitOptions = [FullOption<O>[], number];\n function filterWithLimit(\n options: FullOption<O>[],\n remaining: number,\n ): DisplayLimitOptions {\n let left = remaining;\n const visibleOptions: FullOption<O>[] = [];\n for (const option of options) {\n if (left <= 0) break;\n\n if (option.expanded && option.children?.length) {\n const [childOptions, childRemaining] = filterWithLimit(\n option.children,\n left - 1,\n );\n visibleOptions.push({\n ...option,\n children: childOptions,\n });\n left = childRemaining;\n } else {\n visibleOptions.push(option);\n left--;\n }\n }\n return [visibleOptions, left];\n }\n\n type DisplayLimitGroups = [FullOptionGroup<O>[], number];\n const startingValue: DisplayLimitGroups = [[], displayLimit];\n const [resolvedGroups] = optionGroups.reduce<DisplayLimitGroups>(\n ([groups, remaining], group) => {\n const [options, leftAfter] = filterWithLimit(group.options, remaining);\n if (options.length) {\n return [[...groups, { ...group, options }], leftAfter];\n } else {\n return [groups, remaining];\n }\n },\n startingValue,\n );\n\n return resolvedGroups;\n }\n\n function getRelationshipMaps<O extends BaseOption>(\n options: Option<O>[],\n ): [Map<O['id'], O['id']>, Map<O['id'], O['id'][]>] {\n const parents = new Map();\n function buildParentsMap(options: Option<O>[], parent?: Option<O>): void {\n for (const option of options) {\n if (parent) {\n parents.set(option.id, parent.id);\n }\n if (option.children?.length) {\n buildParentsMap(option.children, option);\n }\n }\n }\n buildParentsMap(options);\n\n const children = new Map();\n function buildChildrenMap(options: Option<O>[]): void {\n for (const option of options) {\n if (option.children?.length) {\n children.set(\n option.id,\n option.children.map(({ id }) => id),\n );\n buildChildrenMap(option.children);\n }\n }\n }\n buildChildrenMap(options);\n\n return [parents, children];\n }\n\n function getTopLevelOptions<O extends BaseOption>(\n optionGroups: FullOptionGroup<O>[],\n ): FullOption<O>[];\n function getTopLevelOptions<O extends BaseOption>(\n optionGroups: SourceOptionGroup<O>[],\n ): SourceOption<O>[];\n function getTopLevelOptions<O extends BaseOption>(\n optionGroups: OptionGroup<O>[],\n ): Option<O>[];\n function getTopLevelOptions<\n O extends BaseOption,\n G extends { options: readonly T[] },\n T = G extends FullOptionGroup<O>\n ? FullOption<O>\n : G extends SourceOptionGroup<O>\n ? SourceOption<O>\n : Option<O>,\n >(optionGroups: G[]): T[] {\n return optionGroups.reduce<T[]>(\n (options, group) => [...options, ...group.options],\n [],\n );\n }\n\n function getParentMultiSelectionState<O extends BaseOption>(\n children: FullOption<O>[],\n ): MultiSelectionState {\n if (children.every(child => child.selected === true)) return true;\n if (children.every(child => child.selected === false)) return false;\n return 'indeterminate';\n }\n\n function augmentOptionToFullOption<O extends BaseOption>(\n state: CoreState<O>,\n option: SourceOption<O>,\n ): FullOption<O> {\n if (option.children?.length) {\n const augmentedChildren = option.children.map(child =>\n augmentOptionToFullOption(state, child),\n );\n return {\n ...option,\n children: augmentedChildren,\n selected: getParentMultiSelectionState(augmentedChildren),\n expanded: state.query.search\n ? true\n : state.display.expandedOptions.has(option.id),\n selectable: !state.query.search,\n expandable: !state.query.search,\n };\n }\n return {\n ...option,\n children: undefined,\n selected: state.selection.selected.has(option),\n expanded: false,\n selectable: true,\n expandable: false,\n };\n }\n\n function getSelectedDisplay<O extends BaseOption>(\n state: CoreState<O>,\n ): string {\n return [...state.selection.selected].map(({ title }) => title).join(', ');\n }\n\n function getZeroStateMessage<O extends BaseOption>(\n state: CoreState<O>,\n ): string | null {\n if (state.sourceOptionGroups.every(group => group.options.length === 0)) {\n if (state.query.search) return 'No results found.';\n return 'No options.';\n }\n return null;\n }\n\n function findOption<O extends BaseOption>(\n options: SourceOption<O>[],\n id: O['id'],\n ): SourceOption<O> | null {\n for (const option of options) {\n if (option.id === id) return option;\n if (option.children?.length) {\n const child = findOption(option.children, id);\n if (child) return child;\n }\n }\n return null;\n }\n\n function flattenOptions<O extends BaseOption>(\n options: Option<O>[],\n leafOnly: boolean,\n ): O[] {\n return flattenDeep(\n options.map(option => {\n if (option.children?.length) {\n const descendants = option.children.map(child =>\n flattenOptions([child], leafOnly),\n );\n return leafOnly ? descendants : [option, ...descendants];\n } else {\n return [option];\n }\n }),\n );\n }\n\n function toggleSelected<O extends BaseOption>(\n state: CoreState<O>,\n id: O['id'],\n ): CoreState<O> {\n const topLevelOptions = getTopLevelOptions(state.sourceOptionGroups);\n const option = findOption(topLevelOptions, id);\n if (!option) return state;\n\n const newSelection = new OptionSet(state.selection.selected);\n\n const newValue = !(\n augmentOptionToFullOption(state, option).selected === true\n );\n const leaves = flattenOptions([option], true);\n for (const leaf of leaves) {\n if (newValue) {\n newSelection.add(leaf);\n } else {\n newSelection.delete(leaf);\n }\n }\n\n return {\n ...state,\n selection: {\n selected: newSelection,\n },\n };\n }\n\n function setSelectedOption<O extends BaseOption>(\n state: CoreState<O>,\n id: O['id'],\n ): CoreState<O> {\n const topLevelOptions = getTopLevelOptions(state.sourceOptionGroups);\n const option = findOption(topLevelOptions, id);\n if (!option) return state;\n\n const newSelection = new OptionSet<O>();\n newSelection.add(option);\n\n return {\n ...state,\n selection: {\n selected: newSelection,\n },\n };\n }\n\n function toggleVisibleSelected<O extends BaseOption>(\n state: CoreState<O>,\n ): CoreState<O> {\n const leaves = flattenOptions(\n getTopLevelOptions(state.sourceOptionGroups),\n true,\n );\n const isAllSelected = leaves.every(leaf =>\n [...state.selection.selected].map(({ id }) => id).includes(leaf.id),\n );\n const newSelection = new OptionSet(state.selection.selected);\n\n for (const leaf of leaves) {\n if (isAllSelected) newSelection.delete(leaf);\n else newSelection.add(leaf);\n }\n\n return {\n ...state,\n selection: {\n ...state.selection,\n selected: newSelection,\n },\n };\n }\n\n function toggleOptionExpanded<O extends BaseOption>(\n state: CoreState<O>,\n id: O['id'],\n ): CoreState<O> {\n const newValue = !state.display.expandedOptions.has(id);\n const newExpandedOptions = new Set(state.display.expandedOptions);\n if (newValue) newExpandedOptions.add(id);\n else newExpandedOptions.delete(id);\n return {\n ...state,\n display: {\n ...state.display,\n expandedOptions: newExpandedOptions,\n },\n };\n }\n\n function sideEffects<O extends BaseOption>(\n state: CoreState<O>,\n action: Action<O> | InternalAction<O>,\n source: Source<O>,\n internalActions: Subject<InternalAction<O>>,\n ): CoreState<O> {\n if (\n action.type === 'load' ||\n action.type === 'searchChange' ||\n (action.type === 'openChange' && action.open)\n ) {\n source(state.query, action)\n .then(data => {\n internalActions.next({ type: 'loadComplete', data });\n })\n .catch(error => {\n console.error(error);\n internalActions.next({ type: 'loadError', error });\n });\n return {\n ...state,\n load: {\n loading: true,\n error: null,\n },\n };\n }\n return state;\n }\n\n function reduce<O extends BaseOption>(\n state: CoreState<O>,\n action: Action<O> | InternalAction<O>,\n ): CoreState<O> {\n switch (action.type) {\n case 'load':\n return state;\n case 'loadComplete':\n return {\n ...state,\n load: {\n loading: false,\n error: null,\n },\n sourceOptionGroups: action.data,\n };\n case 'loadError':\n return {\n ...state,\n load: {\n loading: false,\n error: action.error,\n },\n };\n case 'openChange':\n return {\n ...state,\n query: {\n search: '',\n },\n display: {\n ...state.display,\n open: action.open,\n },\n };\n case 'searchChange':\n return {\n ...state,\n query: {\n search: action.payload,\n },\n };\n case 'selectionChange':\n return {\n ...state,\n selection: action.payload,\n };\n case 'toggleOptionSelected':\n return toggleSelected(state, action.id);\n case 'setSelectedOption':\n return setSelectedOption(state, action.id);\n case 'visibleSelectedChange':\n return toggleVisibleSelected(state);\n case 'toggleOptionExpanded':\n return toggleOptionExpanded(state, action.id);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LoadingComponent } from '../loading/loading.component';\n\n@Component({\n selector: 'riv-loading-cover',\n templateUrl: './loading-cover.component.html',\n styleUrls: ['./loading-cover.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingCoverComponent {\n @Input()\n loading: boolean = false;\n\n @Input()\n loadingSize: LoadingComponent.Size = 40;\n\n @Input()\n errorMessage?: string;\n}\n","<ng-content></ng-content>\n<div *ngIf=\"loading\" class=\"cover\">\n <riv-loading [size]=\"loadingSize\"></riv-loading>\n</div>\n<div *ngIf=\"errorMessage\" class=\"cover\">\n <span class=\"error-icon\">🙁</span>\n <span>{{ errorMessage }}</span>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport { TextFieldComponent } from '../text-field/text-field.component';\n\n@Component({\n selector: 'riv-search',\n templateUrl: './search.component.html',\n styleUrls: [\n '../text-field/text-field.component.css',\n './search.component.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchComponent extends TextFieldComponent {\n @Input()\n override placeholder: string = 'Search';\n\n @Input()\n override name: string = 'search';\n\n @Input()\n labelTemplate?: TemplateRef<void>;\n}\n","<input\n #input\n [id]=\"name\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.large]=\"size === 'large'\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [riv-auto-focus]=\"autoFocus\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"inputBlur()\"\n/>\n<div class=\"label\">\n <label [for]=\"name\" [class.close]=\"!!text\" (click)=\"text = ''\">\n <riv-icon\n *ngIf=\"!labelTemplate\"\n [class.clickable]=\"!!text\"\n [name]=\"!!text ? 'X' : 'Search'\"\n [size]=\"20\"\n ></riv-icon>\n <riv-icon\n *ngIf=\"labelTemplate && !!text\"\n class=\"clickable\"\n [name]=\"'X'\"\n [size]=\"20\"\n ></riv-icon>\n </label>\n <ng-container *ngIf=\"labelTemplate\" class=\"search-columns\"\n ><ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template\n ></ng-container>\n</div>\n","import { HighlightComponent } from './highlight.component';\n\nexport function chunks(\n text: string,\n indices: HighlightComponent.HighlightIndices[],\n): HighlightComponent.Chunk[] {\n let lastEnd = 0;\n const chunks = [];\n for (const [start, end] of indices) {\n chunks.push(\n {\n highlight: false,\n text: text.substring(lastEnd, start),\n },\n {\n highlight: true,\n text: text.substring(start, end + 1),\n },\n );\n lastEnd = end + 1;\n }\n chunks.push({\n highlight: false,\n text: text?.substring(lastEnd, text.length),\n });\n return chunks.filter(chunk => chunk.text);\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { chunks } from './highlight.helpers';\n\n@Component({\n selector: 'riv-highlight',\n templateUrl: './highlight.component.html',\n styleUrls: ['./highlight.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HighlightComponent {\n @Input()\n text: string = '';\n\n @Input()\n indices: HighlightComponent.HighlightIndices[] = [];\n\n getChunks(): HighlightComponent.Chunk[] {\n return chunks(this.text, this.indices);\n }\n}\n\nexport namespace HighlightComponent {\n export type HighlightIndices = [number, number];\n\n export type Chunk = {\n highlight: boolean;\n text: string;\n };\n}\n","<span *ngFor=\"let chunk of getChunks()\" [class.highlight]=\"chunk.highlight\">{{\n chunk.text\n}}</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { RivSelect } from '../state';\n\n@Component({\n selector: 'riv-select-node',\n templateUrl: './select-node.component.html',\n styleUrls: ['./select-node.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectNodeComponent<O extends RivSelect.BaseOption> {\n @Input()\n mode?: SelectNodeComponent.Mode;\n\n @Input()\n node?: RivSelect.FullOption<O>;\n\n @Input()\n showSingleSelected?: boolean;\n\n @Output()\n selectChange = new EventEmitter<O['id']>();\n\n @Output()\n expandChange = new EventEmitter<O['id']>();\n\n includeCount(): boolean {\n return typeof this.node?.count === 'number';\n }\n\n // TODO: these two functions can probably go away once we upgrade Angular and\n // get better type safety in template code. (Angular changes the type of\n // this.node from FullOption<O> to FullOption<any>.)\n // https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n getId(node: RivSelect.FullOption<O>): O['id'] {\n return node.id;\n }\n getDisabled(node: RivSelect.FullOption<O>): boolean {\n return !!node.disabled;\n }\n getHelp(node: RivSelect.FullOption<O>): O['help'] {\n return node.help;\n }\n getCount(node: RivSelect.FullOption<O>): O['count'] {\n return node.count;\n }\n}\n\nexport namespace SelectNodeComponent {\n export const modes = ['single', 'multi'] as const;\n export type Mode = (typeof modes)[number];\n}\n","<ng-template #title let-n=\"node\">\n <riv-highlight\n class=\"title\"\n [text]=\"n.title\"\n [indices]=\"n.titleHighlightIndices ?? []\"\n ></riv-highlight>\n <span *ngIf=\"n.subtitle\"> </span>\n <riv-highlight\n *ngIf=\"n.subtitle\"\n class=\"subtitle\"\n [text]=\"n.subtitle\"\n [indices]=\"n.subtitleHighlightIndices ?? []\"\n ></riv-highlight>\n</ng-template>\n\n<ng-container *ngIf=\"node; let n\">\n <ng-container *ngIf=\"mode === 'multi'\">\n <div class=\"row\">\n <label rivTruncate [class.disabled]=\"getDisabled(n)\">\n <riv-checkbox\n *ngIf=\"n.selectable\"\n [value]=\"n.selected === true\"\n [indeterminate]=\"n.selected === 'indeterminate'\"\n [disabled]=\"getDisabled(n)\"\n (valueChange)=\"selectChange.emit(getId(n))\"\n >\n </riv-checkbox>\n <span rivTruncate class=\"name\">\n <ng-container\n *ngTemplateOutlet=\"title; context: { node: n }\"\n ></ng-container>\n </span>\n <riv-help\n *ngIf=\"getHelp(n); let help\"\n [help]=\"help\"\n [size]=\"12\"\n ></riv-help>\n <span *ngIf=\"includeCount()\" class=\"count\">\n {{ getCount(n) | rivNumber }}\n </span>\n </label>\n <button\n *ngIf=\"n.children?.length\"\n class=\"expand\"\n [disabled]=\"!n.expandable\"\n (click)=\"expandChange.emit(getId(n))\"\n >\n <riv-icon\n [size]=\"20\"\n [name]=\"n.expanded ? 'ChevronUp' : 'ChevronDown'\"\n ></riv-icon>\n </button>\n </div>\n <div *ngIf=\"n.expanded\" class=\"children\">\n <riv-select-node\n *ngFor=\"let child of n.children\"\n [mode]=\"mode\"\n [node]=\"child\"\n [showSingleSelected]=\"showSingleSelected\"\n (selectChange)=\"selectChange.emit($event)\"\n (expandChange)=\"expandChange.emit($event)\"\n ></riv-select-node>\n </div>\n </ng-container>\n <ng-container *ngIf=\"mode === 'single'\">\n <div class=\"row\">\n <button\n class=\"single\"\n [disabled]=\"getDisabled(n)\"\n (click)=\"selectChange.emit(getId(n))\"\n >\n <span class=\"label\" rivTruncate>\n <ng-container\n *ngTemplateOutlet=\"title; context: { node: n }\"\n ></ng-container>\n </span>\n <riv-help\n *ngIf=\"getHelp(n); let help\"\n [help]=\"help\"\n [size]=\"12\"\n ></riv-help>\n <riv-icon\n *ngIf=\"showSingleSelected && n.selected\"\n [name]=\"'Check'\"\n [size]=\"16\"\n ></riv-icon>\n <span *ngIf=\"includeCount()\" class=\"count\">\n {{ getCount(n) | rivNumber }}\n </span>\n </button>\n </div>\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\n\n@Component({\n selector: 'riv-zero-state',\n templateUrl: './zero-state.component.html',\n styleUrls: ['./zero-state.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ZeroStateComponent {\n @Input()\n message: string = 'No data to display.';\n\n @Input()\n title?: string;\n\n @Input()\n icon?: IconComponent.Name;\n}\n","<riv-icon *ngIf=\"icon; let i\" [name]=\"i\" [customSize]=\"40\"></riv-icon>\n<span *ngIf=\"title; let t\" class=\"title\">{{ t }}</span>\n<span class=\"message\">{{ message }}</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n Input,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { debounce } from 'lodash';\nimport { InputLabelComponent } from '../../input-label/input-label.component';\nimport { RivSelect } from '../state';\n\n@Component({\n selector: 'riv-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectComponent<\n O extends RivSelect.BaseOption,\n> extends InputLabelComponent {\n @Input()\n manager?: RivSelect.Manager<O>;\n\n @Input()\n size: SelectComponent.Size = 'medium';\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @ContentChild('trigger')\n triggerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n @ContentChild('option')\n optionTemplate?: TemplateRef<{ node: RivSelect.FullOption<O> }>;\n\n @ContentChild('header')\n headerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n @ContentChild('footer')\n footerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n @ViewChild('customTriggerButton')\n customTriggerButton?: ElementRef;\n\n @ViewChild('standardTriggerButton')\n standardTriggerButton?: ElementRef;\n\n getTrigger(): Element | null {\n return (\n this.customTriggerButton?.nativeElement ??\n this.standardTriggerButton?.nativeElement\n );\n }\n\n allowedOpen(): void {\n if (!this.disabled && !this.locked) {\n this.manager?.actions.next({\n type: 'openChange',\n open: true,\n });\n }\n }\n\n selectChange(multi: boolean, id: O['id']) {\n if (multi) {\n this.manager?.actions.next({\n type: 'toggleOptionSelected',\n id,\n });\n } else {\n this.manager?.actions.next({\n type: 'setSelectedOption',\n id,\n });\n this.manager?.actions.next({\n type: 'openChange',\n open: false,\n });\n }\n }\n\n searchChange = debounce((query: string) => {\n this.manager?.actions?.next({ type: 'searchChange', payload: query });\n }, 500);\n}\n\nexport namespace SelectComponent {\n export const Sizes = ['small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-template #content>\n <riv-loading-cover [loading]=\"s.load.loading\">\n <div\n class=\"content-body\"\n [class.inline]=\"s.display.inline\"\n [ngStyle]=\"{\n 'max-height': s.display.maxHeight,\n 'max-width': s.display.maxWidth,\n 'min-height': s.display.minHeight,\n 'min-width': s.display.minWidth\n }\"\n >\n <header *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { state: s }\"\n ></ng-container>\n </header>\n <riv-search\n *ngIf=\"s.query.showSearch\"\n [value]=\"s.query.search\"\n [placeholder]=\"s.query.searchPlaceholder\"\n [autoFocus]=\"true\"\n (valueChange)=\"searchChange($event)\"\n ></riv-search>\n <div class=\"options\">\n <riv-select-node\n *ngIf=\"\n s.selection.allowMultiSelect &&\n s.selection.allowSelectAll &&\n !s.display.zeroStateMessage\n \"\n [mode]=\"'multi'\"\n [node]=\"{\n id: '__NOOP__',\n title: s.query.search ? 'Select all matching' : 'Select all',\n selected: s.selection.visibleSelectionState,\n selectable: true,\n expandable: false,\n expanded: false\n }\"\n (selectChange)=\"\n manager?.actions?.next({ type: 'visibleSelectedChange' })\n \"\n ></riv-select-node>\n <div\n *ngFor=\"let group of s.fullOptionGroups\"\n class=\"group\"\n [class.divider]=\"s.display.dividers\"\n >\n <span *ngIf=\"group.header; let header\" class=\"header\">\n {{ header }}\n </span>\n <ng-container *ngFor=\"let option of group.options\">\n <ng-container *ngIf=\"optionTemplate; else standardTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ node: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #standardTemplate>\n <riv-select-node\n [mode]=\"s.selection.allowMultiSelect ? 'multi' : 'single'\"\n [node]=\"option\"\n [showSingleSelected]=\"s.display.showSingleSelected\"\n (selectChange)=\"\n selectChange(s.selection.allowMultiSelect, $event)\n \"\n (expandChange)=\"\n manager?.actions?.next({\n type: 'toggleOptionExpanded',\n id: $event\n })\n \"\n ></riv-select-node>\n </ng-template>\n </ng-container>\n </div>\n <span\n *ngIf=\"s.display.displayLimitMessage; let message\"\n class=\"display-limit\"\n >\n {{ message }}\n </span>\n <riv-zero-state\n *ngIf=\"s.display.zeroStateMessage; let message\"\n [message]=\"message\"\n ></riv-zero-state>\n </div>\n <footer *ngIf=\"footerTemplate\" class=\"custom-footer\">\n <ng-container\n *ngTemplateOutlet=\"footerTemplate; context: { state: s }\"\n ></ng-container>\n </footer>\n </div>\n </riv-loading-cover>\n </ng-template>\n\n <ng-container *ngIf=\"!s.display.inline; else content\">\n <ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ state: s }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container\n *ngIf=\"s.selection.selected.size; else placeholderValue\"\n >\n <span *ngIf=\"s.selection.selected.size > 1\" class=\"selected-count\">\n {{ s.selection.selected.size | rivNumber }}\n </span>\n <span class=\"value\">{{ s.display.selected }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ s.display.placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon\n *ngIf=\"!locked\"\n [name]=\"'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"20\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n </ng-template>\n\n <ng-container *ngIf=\"s.display.open\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n (close)=\"manager?.actions?.next({ type: 'openChange', open: false })\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </riv-callout>\n </ng-container>\n </ng-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { IFuseOptions } from 'fuse.js';\nimport { isEqual } from 'lodash';\nimport { distinctUntilChanged, filter, map, Subscription } from 'rxjs';\nimport { InputLabelComponent } from '../input-label/input-label.component';\nimport { SelectComponent } from '../select/select/select.component';\nimport { RivSelect } from '../select/state';\n\n@Component({\n selector: 'riv-simple-select',\n templateUrl: './simple-select.component.html',\n styleUrls: ['./simple-select.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimpleSelectComponent<O extends RivSelect.BaseOption>\n extends InputLabelComponent\n implements OnInit, OnChanges, OnDestroy\n{\n @Input()\n optionGroups: RivSelect.OptionGroup<O>[] = [];\n\n @Input()\n selectedOption: O | null = null;\n\n @Input()\n size: SelectComponent.Size = 'medium';\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @Input()\n filterabilityOptions: SimpleSelectComponent.FilterabilityOptions<O> = {\n enabled: false,\n };\n\n @Input()\n placeholder?: string;\n\n @Input()\n maxHeight?: string;\n\n @Input()\n maxWidth?: string;\n\n @Input()\n minHeight?: string;\n\n @Input()\n minWidth?: string;\n\n @ContentChild('trigger')\n triggerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n @ContentChild('option')\n optionTemplate?: TemplateRef<{ node: RivSelect.FullOption<O> }>;\n\n @ContentChild('header')\n headerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n @ContentChild('footer')\n footerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n manager?: RivSelect.Manager<O>;\n selectedOptionSubscription?: Subscription;\n ngOnInit(): void {\n this.manager = RivSelect.createInMemoryManager(() => this.optionGroups, {\n allowMultiSelect: false,\n allowSearch: this.filterabilityOptions.enabled,\n allowSelectAll: false,\n displayLimit: 100,\n dividers: false,\n fuseOptions: this.filterabilityOptions.enabled\n ? this.filterabilityOptions.fuseOptions\n : undefined,\n initialState: {\n selection: {\n selected: new RivSelect.OptionSet(\n this.selectedOption ? [this.selectedOption] : [],\n ),\n },\n ...(this.placeholder\n ? { display: { placeholder: this.placeholder } }\n : null),\n },\n inline: false,\n maxHeight: this.maxHeight,\n maxWidth: this.maxWidth,\n minHeight: this.minHeight,\n minWidth: this.minWidth,\n searchPlaceholder: this.filterabilityOptions.enabled\n ? this.filterabilityOptions.placeholder\n : undefined,\n showSingleSelected: true,\n });\n\n this.selectedOptionSubscription = this.manager?.state\n .pipe(\n map(s => [...s.selection.selected][0] ?? null),\n filter(selection => selection?.id !== this.selectedOption?.id),\n distinctUntilChanged(isEqual),\n )\n .subscribe(selection => {\n this.selectedOptionChange.next(selection);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes['optionGroups'] &&\n !isEqual(\n changes['optionGroups'].previousValue,\n changes['optionGroups'].currentValue,\n )\n ) {\n this.manager?.actions.next({ type: 'load' });\n }\n\n if (\n changes['selectedOption'] &&\n !isEqual(\n changes['selectedOption'].previousValue,\n changes['selectedOption'].currentValue,\n )\n ) {\n this.manager?.actions.next({\n type: 'selectionChange',\n payload: {\n selected: new RivSelect.OptionSet(\n this.selectedOption ? [this.selectedOption] : [],\n ),\n },\n });\n }\n\n if (\n changes['filterabilityOptions'] &&\n !changes['filterabilityOptions'].firstChange &&\n !isEqual(\n changes['filterabilityOptions'].previousValue,\n changes['filterabilityOptions'].currentValue,\n )\n ) {\n console.warn(\n 'Heads up: changing filterabilityOptions on <riv-simple-select> after initialization has no effect',\n 'Was:',\n changes['filterabilityOptions'].previousValue,\n 'Changed to:',\n changes['filterabilityOptions'].currentValue,\n );\n }\n }\n\n ngOnDestroy(): void {\n this.selectedOptionSubscription?.unsubscribe();\n }\n\n public issueAction(action: RivSelect.Action<O>): void {\n this.manager?.actions.next(action);\n }\n\n @Output()\n selectedOptionChange = new EventEmitter<O | null>();\n}\n\nexport namespace SimpleSelectComponent {\n export type FilterabilityOptions<O extends RivSelect.BaseOption> =\n | {\n enabled: false;\n }\n | {\n enabled: true;\n placeholder?: string;\n fuseOptions?: IFuseOptions<O>;\n };\n}\n","<riv-select\n [manager]=\"manager\"\n [size]=\"size\"\n [disabled]=\"disabled\"\n [locked]=\"locked\"\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <ng-container *ngIf=\"triggerTemplate; let triggerTpl\">\n <ng-template #trigger let-state=\"state\">\n <ng-container\n [ngTemplateOutlet]=\"triggerTpl\"\n [ngTemplateOutletContext]=\"{ state }\"\n ></ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"optionTemplate; let optionTpl\">\n <ng-template #option let-node=\"node\">\n <button\n class=\"custom-node\"\n [disabled]=\"node.disabled\"\n (click)=\"\n manager?.actions?.next({\n type: 'setSelectedOption',\n id: node.id\n });\n manager?.actions?.next({\n type: 'openChange',\n open: false\n })\n \"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"optionTpl\"\n [ngTemplateOutletContext]=\"{ node }\"\n ></ng-container>\n </button>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"headerTemplate; let headerTpl\">\n <ng-template #header let-state=\"state\">\n <ng-container\n [ngTemplateOutlet]=\"headerTpl\"\n [ngTemplateOutletContext]=\"{ state }\"\n ></ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"footerTemplate; let footerTpl\">\n <ng-template #footer let-state=\"state\">\n <ng-container\n [ngTemplateOutlet]=\"footerTpl\"\n [ngTemplateOutletContext]=\"{ state }\"\n ></ng-container>\n </ng-template>\n </ng-container>\n</riv-select>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { RivSelect } from '../select/state';\n\n@Pipe({ name: 'rivOptionGroup' })\nexport class OptionGroupPipe<O extends RivSelect.BaseOption>\n implements PipeTransform\n{\n transform(value?: O[], header?: string): RivSelect.OptionGroup<O>[] {\n return [\n {\n header: header,\n options: value ?? [],\n },\n ];\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport {\n timeDay,\n timeDays,\n timeMonth,\n timeMonths,\n timeSunday,\n timeYear,\n timeYears,\n} from 'd3-time';\nimport { timeFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\n\nconst monthFormatter = timeFormat('%B');\nconst yearFormatter = timeFormat('%Y');\nconst dayFormatter = timeFormat('%e');\nconst weekdayNumberFormatter = timeFormat('%w');\n\nfunction getWeekdayNumber(date: Date): number {\n return parseInt(weekdayNumberFormatter(date));\n}\n\ntype DateOption = {\n id: string;\n title: string;\n disabled: boolean;\n date: Date;\n};\n\ntype CalendarDate = {\n date: Date;\n display: string;\n fadeIn: boolean;\n fadeOut: boolean;\n hidden: boolean;\n inCurrentMonth: boolean;\n inRange: boolean;\n roundedNe: boolean;\n roundedNw: boolean;\n roundedSe: boolean;\n roundedSw: boolean;\n selected: boolean;\n today: boolean;\n};\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarComponent {\n private readonly activeYearMonth$ = new BehaviorSubject<Date>(new Date());\n @Input()\n public set activeYearMonth(v: Date) {\n this.activeYearMonth$.next(v);\n }\n public get activeYearMonth(): Date {\n return this.activeYearMonth$.getValue();\n }\n\n private readonly displayMin$ = new BehaviorSubject<Date>(\n CalendarComponent.defaultMin,\n );\n @Input()\n public set displayMin(v: Date) {\n this.displayMin$.next(v);\n }\n public get displayMin(): Date {\n return this.displayMin$.getValue();\n }\n\n private readonly displayMax$ = new BehaviorSubject<Date>(\n CalendarComponent.defaultMax,\n );\n @Input()\n public set displayMax(v: Date) {\n this.displayMax$.next(v);\n }\n public get displayMax(): Date {\n return this.displayMax$.getValue();\n }\n\n private readonly selectableMin$ = new BehaviorSubject<Date | undefined>(\n undefined,\n );\n @Input()\n public set selectableMin(v: Date | undefined) {\n this.selectableMin$.next(v);\n }\n public get selectableMin(): Date | undefined {\n return this.selectableMin$.getValue();\n }\n\n private readonly selectableMax$ = new BehaviorSubject<Date | undefined>(\n undefined,\n );\n @Input()\n public set selectableMax(v: Date | undefined) {\n this.selectableMax$.next(v);\n }\n public get selectableMax(): Date | undefined {\n return this.selectableMax$.getValue();\n }\n\n private readonly omitRange$ = new BehaviorSubject<[Date, Date] | undefined>(\n undefined,\n );\n @Input()\n public set omitRange(v: [Date, Date] | undefined) {\n this.omitRange$.next(v);\n }\n public get omitRange(): [Date, Date] | undefined {\n return this.omitRange$.getValue();\n }\n\n private readonly selectedValue$ = new BehaviorSubject<\n Date | [Date, Date] | undefined\n >(undefined);\n @Input()\n public set selectedValue(v: Date | [Date, Date] | undefined) {\n this.selectedValue$.next(v);\n }\n public get selectedValue(): Date | [Date, Date] | undefined {\n return this.selectedValue$.getValue();\n }\n\n readonly yearOptions$: Observable<DateOption[]> = combineLatest([\n this.displayMin$,\n this.displayMax$,\n this.selectableMin$,\n this.selectableMax$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([\n displayMin,\n displayMax,\n selectableMin,\n selectableMax,\n activeYearMonth,\n ]) => {\n const min: Date = selectableMin ?? displayMin;\n const max: Date = selectableMax ?? displayMax;\n return timeYears(timeYear.floor(displayMin), displayMax)\n .reverse()\n .map(flooredYear => {\n const year = new Date(\n flooredYear.getFullYear(),\n activeYearMonth.getMonth(),\n );\n return {\n id: year.getFullYear().toString(),\n title: yearFormatter(year),\n disabled:\n year.getFullYear() < min.getFullYear() ||\n year.getFullYear() > max.getFullYear(),\n date: year,\n };\n });\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedYearOption$ = combineLatest([\n this.yearOptions$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([yearOptions, activeYearMonth]) =>\n yearOptions.find(\n y => y.id === activeYearMonth.getFullYear().toString(),\n ) || null,\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly monthOptions$: Observable<DateOption[]> = combineLatest([\n this.activeYearMonth$,\n this.displayMin$,\n this.displayMax$,\n this.selectableMin$,\n this.selectableMax$,\n ]).pipe(\n map(\n ([\n activeYearMonth,\n displayMin,\n displayMax,\n selectableMin,\n selectableMax,\n ]) => {\n const min = selectableMin ?? displayMin;\n const max = selectableMax ?? displayMax;\n return timeMonths(\n timeYear.floor(activeYearMonth),\n timeYear.floor(timeYear.offset(activeYearMonth, 1)),\n ).map(month => ({\n id: month.getMonth().toString(),\n title: monthFormatter(month),\n disabled:\n month.getMonth() < min.getMonth() ||\n month.getMonth() > max.getMonth(),\n date: month,\n }));\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedMonthOption$ = combineLatest([\n this.monthOptions$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([monthOptions, activeYearMonth]) =>\n monthOptions.find(\n m => m.id === activeYearMonth.getMonth().toString(),\n ) || null,\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly previousMonth$ = combineLatest([\n this.activeYearMonth$,\n this.displayMin$,\n this.selectableMin$,\n ]).pipe(\n map(([yearMonth, displayMin, selectableMin]) => {\n const min: Date = selectableMin ?? displayMin;\n const previous = timeMonth.floor(timeMonth.offset(yearMonth, -1));\n if (previous.getMonth() < min.getMonth()) return null;\n return previous;\n }),\n );\n\n readonly nextMonth$ = combineLatest([\n this.activeYearMonth$,\n this.displayMax$,\n this.selectableMax$,\n ]).pipe(\n map(([yearMonth, displayMax, selectableMax]) => {\n const max: Date = selectableMax ?? displayMax;\n const next = timeMonth.floor(timeMonth.offset(yearMonth, 1));\n if (next.getMonth() > max.getMonth()) return null;\n return next;\n }),\n );\n\n private readonly datesInSelectedRange$: Observable<Date[]> =\n this.selectedValue$.pipe(\n map(selectedValue => {\n if (!selectedValue) return [];\n if (selectedValue instanceof Date) return [selectedValue];\n return timeDays(\n timeDay.floor(selectedValue[0]),\n timeDay.floor(timeDay.offset(selectedValue[1], 1)),\n );\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly dates$: Observable<CalendarDate[]> = combineLatest([\n this.activeYearMonth$,\n this.selectedValue$,\n this.datesInSelectedRange$,\n this.selectableMin$,\n this.selectableMax$,\n this.omitRange$,\n ]).pipe(\n map(\n ([\n activeYearMonth,\n selectedValue,\n datesInSelectedRange,\n selectableMin,\n selectableMax,\n omitRange,\n ]) => {\n const calendarDates = timeDays(\n timeSunday.floor(activeYearMonth),\n timeSunday.ceil(timeMonth.offset(activeYearMonth, 1)),\n );\n const minCalendarDate = calendarDates[0];\n const maxCalendarDate = calendarDates[calendarDates.length - 1];\n const selectedDateCoordinates = new Map<number, [number, number]>();\n const visibleDatesInSelectedRange = datesInSelectedRange.filter(\n selected =>\n selected.valueOf() >= minCalendarDate.valueOf() &&\n selected.valueOf() <= maxCalendarDate.valueOf() &&\n (selectableMin\n ? selected.valueOf() >= selectableMin.valueOf()\n : true) &&\n (selectableMax\n ? selected.valueOf() <= selectableMax.valueOf()\n : true) &&\n (omitRange\n ? selected.valueOf() < omitRange[0].valueOf() ||\n selected.valueOf() > omitRange[1].valueOf()\n : true),\n );\n if (visibleDatesInSelectedRange.length > 0) {\n const firstVisibleSelectedDateOffset = getWeekdayNumber(\n visibleDatesInSelectedRange[0],\n );\n visibleDatesInSelectedRange.forEach((selected, i) => {\n const x = getWeekdayNumber(selected);\n const y = Math.floor((i + firstVisibleSelectedDateOffset) / 7);\n selectedDateCoordinates.set(selected.valueOf(), [x, y]);\n });\n }\n function serializeCoordinates(coordinates: [number, number]): string {\n return coordinates.join(':');\n }\n\n const visibleDatesInSelectedRangeCoordinates = new Set(\n [...selectedDateCoordinates.values()].map(serializeCoordinates),\n );\n\n function getRoundedCorners(date: Date): {\n nw: boolean;\n ne: boolean;\n se: boolean;\n sw: boolean;\n } {\n const coordinates = selectedDateCoordinates.get(date.valueOf());\n if (!coordinates)\n return { nw: false, ne: false, se: false, sw: false };\n const [x, y] = coordinates;\n const top = serializeCoordinates([x, y - 1]),\n right = serializeCoordinates([x + 1, y]),\n bottom = serializeCoordinates([x, y + 1]),\n left = serializeCoordinates([x - 1, y]);\n return {\n nw:\n !visibleDatesInSelectedRangeCoordinates.has(top) &&\n !visibleDatesInSelectedRangeCoordinates.has(left),\n ne:\n !visibleDatesInSelectedRangeCoordinates.has(top) &&\n !visibleDatesInSelectedRangeCoordinates.has(right),\n se:\n !visibleDatesInSelectedRangeCoordinates.has(right) &&\n !visibleDatesInSelectedRangeCoordinates.has(bottom),\n sw:\n !visibleDatesInSelectedRangeCoordinates.has(left) &&\n !visibleDatesInSelectedRangeCoordinates.has(bottom),\n };\n }\n\n const visibleDatesInSelectedRangeValues = new Set(\n visibleDatesInSelectedRange.map(selected => selected.valueOf()),\n );\n\n const today = timeDay.floor(new Date());\n\n return calendarDates.map(date => {\n const { nw, ne, se, sw } = getRoundedCorners(date);\n const dateValue = date.valueOf();\n const inRange = visibleDatesInSelectedRangeValues.has(dateValue);\n const selected = selectedValue\n ? selectedValue instanceof Date\n ? dateValue === selectedValue.valueOf()\n : dateValue === selectedValue[0].valueOf() ||\n dateValue === selectedValue[1].valueOf()\n : false;\n return {\n date,\n display: dayFormatter(date),\n fadeIn:\n inRange &&\n (dateValue ===\n Math.max(\n minCalendarDate.valueOf(),\n selectableMin?.valueOf() ?? -Infinity,\n ) ||\n dateValue ===\n (omitRange\n ? timeDay.offset(omitRange[1], 1).valueOf()\n : -Infinity)),\n fadeOut:\n inRange &&\n (dateValue ===\n Math.min(\n maxCalendarDate.valueOf(),\n selectableMax?.valueOf() ?? Infinity,\n ) ||\n dateValue ===\n (omitRange\n ? timeDay.offset(omitRange[0], -1).valueOf()\n : Infinity)),\n hidden:\n dateValue < (selectableMin?.valueOf() ?? -Infinity) ||\n dateValue > (selectableMax?.valueOf() ?? Infinity) ||\n (omitRange\n ? omitRange[0].valueOf() <= dateValue &&\n dateValue <= omitRange[1].valueOf()\n : false),\n inCurrentMonth:\n dateValue >= activeYearMonth.valueOf() &&\n dateValue < timeMonth.offset(activeYearMonth, 1).valueOf(),\n inRange,\n roundedNe: ne,\n roundedNw: nw,\n roundedSe: se,\n roundedSw: sw,\n selected,\n today: dateValue === today.valueOf(),\n };\n });\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n selectDay(day: CalendarDate) {\n if (!day.inCurrentMonth) {\n this.activeYearMonthChange.emit(timeMonth.floor(day.date));\n }\n this.dateSelect.emit(day.date);\n }\n\n @Output()\n activeYearMonthChange = new EventEmitter<Date>();\n\n emitActiveYearMonth(yearMonth: Date | null) {\n if (yearMonth) this.activeYearMonthChange.emit(yearMonth);\n }\n\n @Output()\n dateSelect = new EventEmitter<Date>();\n}\n\nexport namespace CalendarComponent {\n export const defaultMin = timeYear.floor(timeYear.offset(new Date(), -7));\n export const defaultMax = timeDay.offset(\n timeYear.floor(timeYear.offset(new Date(), 5)),\n -1,\n );\n}\n","<div class=\"controls\">\n <div>\n <riv-simple-select\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Month...' }\"\n [optionGroups]=\"monthOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedMonthOption$ | async\"\n (selectedOptionChange)=\"emitActiveYearMonth($event?.date ?? null)\"\n >\n <ng-template #trigger let-state=\"state\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ state.display.selected || '...' }}\n </button>\n </ng-template>\n </riv-simple-select>\n <riv-simple-select\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Year...' }\"\n [optionGroups]=\"yearOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedYearOption$ | async\"\n (selectedOptionChange)=\"emitActiveYearMonth($event?.date ?? null)\"\n >\n <ng-template #trigger let-state=\"state\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ state.display.selected || '...' }}\n </button>\n </ng-template>\n </riv-simple-select>\n </div>\n <div\n *ngIf=\"{ prev: previousMonth$ | async, next: nextMonth$ | async }; let vm\"\n >\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowLeft'\"\n [disabled]=\"!vm.prev\"\n (click)=\"vm.prev ? activeYearMonthChange.emit(vm.prev) : null\"\n type=\"button\"\n ></button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowRight'\"\n [disabled]=\"!vm.next\"\n (click)=\"vm.next ? activeYearMonthChange.emit(vm.next) : null\"\n type=\"button\"\n ></button>\n </div>\n</div>\n<div class=\"calendar\">\n <span class=\"label\">Su</span>\n <span class=\"label\">Mo</span>\n <span class=\"label\">Tu</span>\n <span class=\"label\">We</span>\n <span class=\"label\">Th</span>\n <span class=\"label\">Fr</span>\n <span class=\"label\">Sa</span>\n <button\n *ngFor=\"let day of dates$ | async\"\n class=\"day\"\n [disabled]=\"day.hidden\"\n [class.bleed]=\"!day.inCurrentMonth\"\n [class.fade-in]=\"day.fadeIn\"\n [class.fade-out]=\"day.fadeOut\"\n [class.in-range]=\"day.inRange\"\n [class.rounded-ne]=\"day.roundedNe\"\n [class.rounded-nw]=\"day.roundedNw\"\n [class.rounded-se]=\"day.roundedSe\"\n [class.rounded-sw]=\"day.roundedSw\"\n (click)=\"selectDay(day)\"\n type=\"button\"\n >\n <span\n class=\"day-wrapper\"\n [class.selected]=\"day.selected\"\n [class.today]=\"day.today\"\n [class.hidden]=\"day.hidden\"\n >\n {{ day.display }}\n </span>\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n Output,\n} from '@angular/core';\nimport { timeDay, timeMonth, timeSunday, timeWeek, timeYear } from 'd3-time';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n merge,\n scan,\n shareReplay,\n skipUntil,\n startWith,\n withLatestFrom,\n} from 'rxjs';\nimport { DatePipe } from '../../format/pipes/date.pipe';\nimport { LocalStorage } from '../../util/local-storage';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\nconst timeQuarter = timeMonth.every(3)!;\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateRangeComponent extends InputLabelComponent {\n readonly TODAY = new Date();\n readonly STORAGE_KEY = 'date-range.default';\n\n private readonly showPresets$ = new BehaviorSubject<boolean>(true);\n @Input()\n set showPresets(v: boolean) {\n this.showPresets$.next(v);\n }\n get showPresets(): boolean {\n return this.showPresets$.getValue();\n }\n\n readonly min$ = new BehaviorSubject<Date>(CalendarComponent.defaultMin);\n @Input()\n set min(v: Date) {\n this.min$.next(v);\n }\n get min(): Date {\n return this.min$.getValue();\n }\n\n readonly max$ = new BehaviorSubject<Date>(CalendarComponent.defaultMax);\n @Input()\n set max(v: Date) {\n this.max$.next(v);\n }\n get max(): Date {\n return this.max$.getValue();\n }\n\n readonly value$ = new BehaviorSubject<[Date, Date] | undefined>(undefined);\n @Input()\n set value(v: [Date, Date] | undefined) {\n this.value$.next(v);\n }\n get value(): [Date, Date] | undefined {\n return this.value$.getValue();\n }\n\n readonly placeholder$ = new BehaviorSubject<string>('Select date range...');\n @Input()\n set placeholder(v: string) {\n this.placeholder$.next(v);\n }\n get placeholder(): string {\n return this.placeholder$.getValue();\n }\n\n readonly disabled$ = new BehaviorSubject(false);\n @Input()\n set disabled(v: boolean) {\n this.disabled$.next(v);\n }\n get disabled(): boolean {\n return this.disabled$.getValue();\n }\n\n readonly alternativePresetList$ = new BehaviorSubject<\n DateRangeComponent.PresetType[]\n >([]);\n @Input()\n set alternativePresetList(v: DateRangeComponent.PresetType[]) {\n this.alternativePresetList$.next(v);\n }\n get alternativePresetList(): DateRangeComponent.PresetType[] {\n return this.alternativePresetList$.getValue();\n }\n\n readonly open$ = new BehaviorSubject(false);\n\n readonly userSelectedPreset$ =\n new Subject<DateRangeComponent.Preset | null>();\n\n readonly userSelectedDate$ = new Subject<Date | undefined>();\n readonly selectedValue$: Observable<Date | [Date, Date] | undefined> = merge(\n this.value$,\n this.userSelectedDate$.pipe(\n scan(\n (previous: Date | [Date, Date] | undefined, date: Date | undefined) => {\n if (previous instanceof Date && date instanceof Date) {\n if (date.valueOf() >= previous.valueOf()) {\n const pair: [Date, Date] = [previous, date];\n return pair;\n }\n }\n return date;\n },\n ),\n ),\n this.userSelectedPreset$.pipe(\n filter((preset): preset is DateRangeComponent.Preset => preset !== null),\n map(preset => preset.dates),\n ),\n ).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\n readonly filteredPresetOptions$ = combineLatest([\n this.min$,\n this.max$,\n this.alternativePresetList$,\n ]).pipe(\n map(([min, max, alternativePresetList]) => {\n const optionsFilteredOnMinMax = DateRangeComponent.Presets.filter(\n p =>\n p.dates[0].valueOf() >= min.valueOf() &&\n p.dates[1].valueOf() <= max.valueOf(),\n );\n if (alternativePresetList.length == 0) {\n return optionsFilteredOnMinMax;\n } else {\n const optionsFilteredOnAlternativePresetList =\n optionsFilteredOnMinMax.filter(p =>\n alternativePresetList.includes(p.id),\n );\n return optionsFilteredOnAlternativePresetList;\n }\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedPreset$: Observable<DateRangeComponent.Preset | null> =\n combineLatest([\n this.selectedValue$,\n this.userSelectedPreset$.pipe(startWith(null)),\n ]).pipe(\n map(([selectedValue, userSelectedPreset]) => {\n if (selectedValue instanceof Array) {\n const options = DateRangeComponent.Presets.filter(\n preset =>\n preset.dates[0].valueOf() === selectedValue[0].valueOf() &&\n preset.dates[1].valueOf() === selectedValue[1].valueOf(),\n );\n if (options.length) {\n // Some date ranges match multiple presets, e.g. on Jan 19th, a\n // selected date range of Jan 1-19 would correspond to \"this month\n // so far,\" \"this quarter so far,\" and \"this year so far.\" We'll\n // use the user's most recent manual selection as a tie breaker\n // where possible.\n const mostRecent = options.find(\n option => option.id === userSelectedPreset?.id,\n );\n if (mostRecent) return mostRecent;\n return options[0];\n }\n }\n return null;\n }),\n );\n\n readonly favoritePresetIds$ = new LocalStorage<string[]>(\n this.STORAGE_KEY,\n [],\n );\n\n setFavorite(preset: DateRangeComponent.Preset, favorite: boolean) {\n const ids = new Set(this.favoritePresetIds$.getValue());\n if (favorite) {\n ids.add(preset.id);\n } else {\n ids.delete(preset.id);\n }\n this.favoritePresetIds$.next([...ids]);\n }\n\n readonly favoritePresets$: Observable<DateRangeComponent.Preset[]> =\n this.favoritePresetIds$.pipe(\n withLatestFrom(this.alternativePresetList$),\n map(([ids, alternativePresetList]) => {\n const favoritePresets = ids\n .map(id =>\n DateRangeComponent.Presets.find(preset => preset.id === id),\n )\n .filter((p): p is DateRangeComponent.Preset => p !== undefined);\n\n if (alternativePresetList.length == 0) {\n return favoritePresets;\n } else {\n const favoritesFilteredOnAlternativePresetList =\n favoritePresets.filter(p =>\n alternativePresetList.includes(\n <DateRangeComponent.PresetType>p.id,\n ),\n );\n return favoritesFilteredOnAlternativePresetList;\n }\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly userLeftActiveYearMonth$ = new Subject<Date>();\n readonly userRightActiveYearMonth$ = new Subject<Date>();\n\n readonly leftMin$ = this.min$.pipe(\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n readonly leftMax$ = this.max$.pipe(\n map(max => timeDay.offset(timeMonth.floor(max), -1)),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n readonly rightMax$ = this.max$.pipe(\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly leftActiveYearMonth$ = combineLatest([\n this.leftMax$,\n merge(\n this.userLeftActiveYearMonth$.pipe(\n startWith(timeMonth.floor(this.TODAY)),\n ),\n this.userSelectedPreset$.pipe(\n filter(\n (preset): preset is DateRangeComponent.Preset => preset !== null,\n ),\n map(preset => timeMonth.floor(preset.dates[0])),\n ),\n this.value$.pipe(\n filter((v): v is [Date, Date] => v !== undefined),\n map(v => timeMonth.floor(v[0])),\n ),\n ),\n ]).pipe(\n map(([leftMax, left]) => {\n if (left.valueOf() >= leftMax.valueOf()) return timeMonth.floor(leftMax);\n else return left;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly rightActiveYearMonth$ = combineLatest([\n this.leftActiveYearMonth$,\n merge(\n this.userRightActiveYearMonth$.pipe(\n startWith(timeMonth.ceil(this.TODAY)),\n ),\n this.userSelectedPreset$.pipe(\n filter(\n (preset): preset is DateRangeComponent.Preset => preset !== null,\n ),\n map(preset => timeMonth.floor(preset.dates[1])),\n ),\n this.value$.pipe(\n filter((v): v is [Date, Date] => v !== undefined),\n map(v => timeMonth.floor(v[1])),\n ),\n ),\n this.rightMax$,\n ]).pipe(\n map(([left, userRight, rightMax$]) => {\n if (left.valueOf() >= userRight.valueOf())\n return timeMonth.floor(timeMonth.offset(left, 1));\n else if (userRight.valueOf() >= rightMax$.valueOf())\n return timeMonth.floor(rightMax$);\n else return userRight;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly rightMin$ = this.leftActiveYearMonth$.pipe(\n map(left => timeMonth.floor(timeMonth.offset(left, 1))),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly leftOmitRange$: Observable<[Date, Date]> =\n this.rightActiveYearMonth$.pipe(\n map<Date, [Date, Date]>(rightActiveYearMonth => {\n const first = timeMonth.floor(rightActiveYearMonth);\n const last = timeDay.offset(\n timeMonth.floor(timeMonth.offset(rightActiveYearMonth, 1)),\n -1,\n );\n return [first, last];\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly userInteracted$ = merge(\n this.userSelectedDate$,\n this.userSelectedPreset$,\n );\n\n @Output()\n readonly valueChange: Observable<[Date, Date] | undefined> =\n this.selectedValue$.pipe(\n skipUntil(\n merge(\n this.userInteracted$,\n this.selectedValue$.pipe(filter(v => v !== undefined)),\n ),\n ),\n filter((v): v is [Date, Date] | undefined => !(v instanceof Date)),\n distinctUntilChanged(\n (previous, current) =>\n previous?.[0].valueOf() === current?.[0].valueOf() &&\n previous?.[1].valueOf() === current?.[1].valueOf(),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly displayValue$: Observable<string | undefined> =\n this.valueChange.pipe(\n map(v => {\n if (v) {\n return v.map(date => new DatePipe().transform(date)).join(' — ');\n }\n return undefined;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace DateRangeComponent {\n const today = new Date();\n\n export enum PresetType {\n TODAY = 'today',\n YESTERDAY = 'yesterday',\n TOMORROW = 'tomorrow',\n THIS_WEEK = 'this_week',\n THIS_WEEK_SO_FAR = 'this_week_so_far',\n LAST_WEEK = 'last_week',\n NEXT_WEEK = 'next_week',\n THIS_MONTH = 'this_month',\n THIS_MONTH_SO_FAR = 'this_month_so_far',\n LAST_MONTH = 'last_month',\n NEXT_MONTH = 'next_month',\n THIS_QUARTER = 'this_quarter',\n THIS_QUARTER_SO_FAR = 'this_quarter_so_far',\n LAST_QUARTER = 'last_quarter',\n NEXT_QUARTER = 'next_quarter',\n THIS_YEAR = 'this_year',\n THIS_YEAR_SO_FAR = 'this_year_so_far',\n LAST_YEAR = 'last_year',\n NEXT_YEAR = 'next_year',\n LAST_7_DAYS = 'last_7_days',\n LAST_14_DAYS = 'last_14_days',\n LAST_30_DAYS = 'last_30_days',\n LAST_60_DAYS = 'last_60_days',\n LAST_90_DAYS = 'last_90_days',\n LAST_180_DAYS = 'last_180_days',\n LAST_365_DAYS = 'last_365_days',\n }\n\n export type Preset = {\n id: PresetType;\n title: string;\n subtitle: string;\n dates: [Date, Date];\n };\n\n export const Presets: Preset[] = [\n {\n id: PresetType.TODAY,\n title: 'Today',\n subtitle: 'Today from midnight until the current time',\n dates: [timeDay(), timeDay()],\n },\n {\n id: PresetType.YESTERDAY,\n title: 'Yesterday',\n subtitle: 'The previous 24 hour day',\n dates: [timeDay.offset(timeDay(), -1), timeDay.offset(timeDay(), -1)],\n },\n {\n id: PresetType.TOMORROW,\n title: 'Tomorrow',\n subtitle: 'The next 24 hour day',\n dates: [timeDay.offset(timeDay(), 1), timeDay.offset(timeDay(), 1)],\n },\n {\n id: PresetType.THIS_WEEK,\n title: 'This week',\n subtitle: 'The current calendar week',\n dates: [\n timeSunday.floor(today),\n timeDay.offset(timeSunday.ceil(today), -1),\n ],\n },\n {\n id: PresetType.THIS_WEEK_SO_FAR,\n title: 'This week so far',\n subtitle: 'The current calendar week up to now',\n dates: [timeSunday.floor(today), timeDay.floor(today)],\n },\n {\n id: PresetType.LAST_WEEK,\n title: 'Last week',\n subtitle: 'The previous calendar week',\n dates: [\n timeSunday.offset(timeWeek.floor(today), -1),\n timeDay.offset(timeSunday.offset(timeWeek.ceil(today), -1), -1),\n ],\n },\n {\n id: PresetType.NEXT_WEEK,\n title: 'Next week',\n subtitle: 'The next calendar week',\n dates: [\n timeSunday.offset(timeWeek.floor(today), 1),\n timeDay.offset(timeSunday.offset(timeWeek.ceil(today), 1), -1),\n ],\n },\n {\n id: PresetType.THIS_MONTH,\n title: 'This month',\n subtitle: 'The current calendar month',\n dates: [\n timeMonth.floor(today),\n timeDay.offset(timeMonth.ceil(today), -1),\n ],\n },\n {\n id: PresetType.THIS_MONTH_SO_FAR,\n title: 'This month so far',\n subtitle: 'The current calendar month up to now',\n dates: [timeMonth.floor(today), timeDay.floor(today)],\n },\n {\n id: PresetType.LAST_MONTH,\n title: 'Last month',\n subtitle: 'The previous calendar month',\n dates: [\n timeMonth.offset(timeMonth.floor(today), -1),\n timeDay.offset(timeMonth.offset(timeMonth.ceil(today), -1), -1),\n ],\n },\n {\n id: PresetType.NEXT_MONTH,\n title: 'Next month',\n subtitle: 'The next calendar month',\n dates: [\n timeMonth.offset(timeMonth.floor(today), 1),\n timeDay.offset(timeMonth.offset(timeMonth.ceil(today), 1), -1),\n ],\n },\n {\n id: PresetType.THIS_QUARTER,\n title: 'This quarter',\n subtitle: 'The current quarter',\n dates: [\n timeQuarter.floor(today),\n timeDay.offset(timeQuarter.ceil(today), -1),\n ],\n },\n {\n id: PresetType.THIS_QUARTER_SO_FAR,\n title: 'This quarter so far',\n subtitle: 'The current quarter up to now',\n dates: [timeQuarter.floor(today), timeDay.floor(today)],\n },\n {\n id: PresetType.LAST_QUARTER,\n title: 'Last quarter',\n subtitle: 'The previous full quarter',\n dates: [\n timeQuarter.offset(timeQuarter.floor(today), -1),\n timeDay.offset(timeQuarter.offset(timeQuarter.ceil(today), -1), -1),\n ],\n },\n {\n id: PresetType.NEXT_QUARTER,\n title: 'Next quarter',\n subtitle: 'The next full quarter',\n dates: [\n timeQuarter.offset(timeQuarter.floor(today), 1),\n timeDay.offset(timeQuarter.offset(timeQuarter.ceil(today), 1), -1),\n ],\n },\n {\n id: PresetType.THIS_YEAR,\n title: 'This year',\n subtitle: 'The current calendar year',\n dates: [timeYear.floor(today), timeDay.offset(timeYear.ceil(today), -1)],\n },\n {\n id: PresetType.THIS_YEAR_SO_FAR,\n title: 'This year so far',\n subtitle: 'The current calendar year up to now',\n dates: [timeYear.floor(today), timeDay.floor(today)],\n },\n {\n id: PresetType.LAST_YEAR,\n title: 'Last year',\n subtitle: 'The previous calendar year',\n dates: [\n timeYear.offset(timeYear.floor(today), -1),\n timeDay.offset(timeYear.offset(timeYear.ceil(today), -1), -1),\n ],\n },\n {\n id: PresetType.NEXT_YEAR,\n title: 'Next year',\n subtitle: 'The next calendar year',\n dates: [\n timeYear.offset(timeYear.floor(today), 1),\n timeDay.offset(timeYear.offset(timeYear.ceil(today), 1), -1),\n ],\n },\n {\n id: PresetType.LAST_7_DAYS,\n title: 'Last 7 days',\n subtitle: 'The previous 7 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -8)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_14_DAYS,\n title: 'Last 14 days',\n subtitle: 'The previous 14 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -15)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_30_DAYS,\n title: 'Last 30 days',\n subtitle: 'The previous 30 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -31)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_60_DAYS,\n title: 'Last 60 days',\n subtitle: 'The previous 60 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -61)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_90_DAYS,\n title: 'Last 90 days',\n subtitle: 'The previous 90 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -91)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_180_DAYS,\n title: 'Last 180 days',\n subtitle: 'The previous 180 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -181)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_365_DAYS,\n title: 'Last 365 days',\n subtitle: 'The previous 365 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -366)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n ];\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled$ | async\"\n type=\"button\"\n >\n <ng-container\n *ngIf=\"displayValue$ | async; else placeholderValue; let display\"\n >\n <span class=\"value\">{{ display }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder$ | async }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n\n<ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-inputValue\n [ngTemplateOutletContext]=\"{ $implicit: (value$ | async) }\"\n>\n <ng-container *ngIf=\"open$ | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false); userSelectedDate$.next(inputValue)\"\n >\n <div class=\"content\">\n <div *ngIf=\"showPresets\" class=\"presets\">\n <riv-simple-select\n [label]=\"'Date presets'\"\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Search...' }\"\n [optionGroups]=\"\n (filteredPresetOptions$ | async) ?? [] | rivOptionGroup\n \"\n [selectedOption]=\"selectedPreset$ | async\"\n (selectedOptionChange)=\"userSelectedPreset$.next($event)\"\n >\n <ng-template #option let-node=\"node\">\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-isFavorite\n [ngTemplateOutletContext]=\"{\n $implicit: (favoritePresetIds$ | async)?.includes(node.id)\n }\"\n >\n <div class=\"preset\" [class.favorite]=\"isFavorite\">\n <div class=\"description\">\n <riv-highlight\n class=\"title\"\n [text]=\"node.title\"\n [indices]=\"node.titleHighlightIndices || []\"\n ></riv-highlight>\n <riv-highlight\n class=\"subtitle\"\n [text]=\"node.subtitle\"\n [indices]=\"node.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </div>\n <button\n (click)=\"\n setFavorite(node, !isFavorite); $event.stopPropagation()\n \"\n type=\"button\"\n >\n <riv-icon\n [name]=\"isFavorite ? 'HeartActive' : 'Heart'\"\n [size]=\"16\"\n [rivTooltip]=\"'Mark as favorite'\"\n ></riv-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n </riv-simple-select>\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-favorites\n [ngTemplateOutletContext]=\"{ $implicit: favoritePresets$ | async }\"\n >\n <riv-input-label *ngIf=\"favorites.length\" [label]=\"'Favorites'\">\n <div class=\"shortcuts\">\n <button\n *ngFor=\"let favorite of favorites\"\n class=\"shortcut\"\n [class.active]=\"(selectedPreset$ | async)?.id === favorite.id\"\n (click)=\"userSelectedPreset$.next(favorite)\"\n type=\"button\"\n >\n <span class=\"title\">{{ favorite.title }}</span>\n <button\n (click)=\"setFavorite(favorite, false)\"\n [rivTooltip]=\"'Remove favorite'\"\n type=\"button\"\n >\n <riv-icon [name]=\"'HeartActive'\" [size]=\"16\"></riv-icon>\n </button>\n </button>\n </div>\n </riv-input-label>\n </ng-template>\n </div>\n\n <div class=\"calendars\">\n <riv-calendar\n class=\"left\"\n [activeYearMonth]=\"(leftActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userLeftActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(leftMin$ | async) || TODAY\"\n [selectableMax]=\"(leftMax$ | async) || TODAY\"\n [omitRange]=\"(leftOmitRange$ | async) || [TODAY, TODAY]\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n <riv-calendar\n class=\"right\"\n [activeYearMonth]=\"(rightActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userRightActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(rightMin$ | async) || TODAY\"\n [selectableMax]=\"(rightMax$ | async) || TODAY\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n </div>\n\n <footer class=\"buttons\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n (click)=\"userSelectedDate$.next(undefined)\"\n type=\"button\"\n >\n Clear\n </button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'primary'\"\n (click)=\"open$.next(false)\"\n type=\"button\"\n >\n Done\n </button>\n </footer>\n </div>\n </riv-callout>\n </ng-container>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { timeMonth } from 'd3-time';\nimport { BehaviorSubject } from 'rxjs';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\n\n@Component({\n selector: 'riv-date',\n templateUrl: './date.component.html',\n styleUrls: ['./date.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateComponent extends InputLabelComponent {\n @Input()\n min: Date = CalendarComponent.defaultMin;\n\n @Input()\n max: Date = CalendarComponent.defaultMax;\n\n @Input()\n value?: Date;\n\n @Input()\n placeholder: string = 'Select date...';\n\n @Input()\n disabled: boolean = false;\n\n activeYearMonth = timeMonth.floor(new Date());\n\n readonly open$ = new BehaviorSubject<boolean>(false);\n @Input()\n set open(v: boolean) {\n this.open$.next(v);\n }\n get open(): boolean {\n return this.open$.getValue();\n }\n\n @Output()\n valueChange = new EventEmitter<Date>();\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled\"\n type=\"button\"\n >\n <ng-container *ngIf=\"value; else placeholderValue\">\n <span class=\"value\">{{ value | rivDate }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n<ng-container *ngIf=\"open$ | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false)\"\n >\n <div class=\"content\">\n <riv-calendar\n [activeYearMonth]=\"activeYearMonth\"\n (activeYearMonthChange)=\"activeYearMonth = $event\"\n [displayMin]=\"min\"\n [displayMax]=\"max\"\n [selectableMin]=\"min\"\n [selectableMax]=\"max\"\n [selectedValue]=\"value\"\n (dateSelect)=\"valueChange.next($event); open$.next(false)\"\n ></riv-calendar>\n </div>\n </riv-callout>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NumberFieldComponent } from '../number-field/number-field.component';\n\n@Component({\n selector: 'riv-percentage-field',\n templateUrl: './percentage-field.component.html',\n styleUrls: ['./percentage-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PercentageFieldComponent extends NumberFieldComponent {\n @Input()\n override align: NumberFieldComponent.Alignment = 'right';\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [class.large]=\"size === 'large'\"\n [style.textAlign]=\"align\"\n [riv-auto-focus]=\"autoFocus\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"inputBlur()\"\n />\n <span class=\"suffix\" [class.large]=\"size === 'large'\">%</span>\n</riv-input-label>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioComponent {\n @Input()\n name?: string;\n\n @Input()\n identifier?: string;\n\n @Input()\n value?: string;\n\n @Input()\n checked?: boolean = false;\n\n @Input()\n size?: RadioComponent.Size = 'medium';\n\n @Input()\n title?: string;\n\n @Input()\n subtitle?: string;\n\n @ContentChild('label')\n labelTemplate?: TemplateRef<{ checked: boolean }>;\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n required: boolean = false;\n\n @Output()\n checkedChange = new EventEmitter<boolean>();\n\n @ViewChild('label', { static: true })\n label?: ElementRef<HTMLLabelElement>;\n\n isRadioOnly(): boolean {\n return !this.title && !this.labelTemplate;\n }\n}\n\nexport namespace RadioComponent {\n export const Sizes = ['medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<label\n #label\n class=\"wrapper\"\n [ngClass]=\"size\"\n [class.disabled]=\"disabled\"\n [class.has-content]=\"!isRadioOnly()\"\n>\n <input\n #input\n type=\"radio\"\n [id]=\"identifier\"\n [name]=\"name\"\n [value]=\"value\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"checkedChange.emit(!!input.checked)\"\n />\n <ng-container *ngIf=\"labelTemplate; else defaultLabel\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: { checked }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultLabel>\n <div *ngIf=\"title\" class=\"label\">\n <span class=\"title\">{{ title }}</span>\n <span *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</span>\n </div>\n </ng-template>\n</label>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'riv-switch-checkbox',\n templateUrl: './switch-checkbox.component.html',\n styleUrls: ['./switch-checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SwitchCheckboxComponent extends CheckboxComponent {\n @Input()\n size: SwitchCheckboxComponent.Size = 'medium';\n}\n\nexport namespace SwitchCheckboxComponent {\n export const Sizes = ['small', 'medium'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<label [ngClass]=\"size\" [class.checked]=\"value\" [class.disabled]=\"disabled\">\n <input\n #input\n type=\"checkbox\"\n [name]=\"name\"\n [id]=\"identifier\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (change)=\"valueChange.emit(!!input.checked)\"\n />\n <ng-content></ng-content>\n</label>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { TextFieldComponent } from '../text-field/text-field.component';\n\n@Component({\n selector: 'riv-textarea-field',\n templateUrl: './textarea-field.component.html',\n styleUrls: ['./textarea-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextareaFieldComponent extends TextFieldComponent {\n @Input()\n rows: number = 4;\n\n override type: TextFieldComponent.Type = 'text';\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <textarea\n #input\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [rows]=\"rows\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.large]=\"size === 'large'\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [riv-auto-focus]=\"autoFocus\"\n (blur)=\"inputBlur()\"\n ></textarea>\n</riv-input-label>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: '[riv-tab]',\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabComponent {\n @Input()\n @HostBinding('class.current')\n current?: boolean;\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'riv-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabsComponent {}\n","<div class=\"container\">\n <ng-content></ng-content>\n</div>\n","import Fuse, { FuseResult, IFuseOptions } from 'fuse.js';\nimport { debounce, defaultsDeep, sortBy } from 'lodash';\nimport {\n connectable,\n Connectable,\n from,\n map,\n mergeScan,\n Observable,\n ReplaySubject,\n startWith,\n Subject,\n} from 'rxjs';\nimport { DeepPartial } from 'utility-types';\nimport { RivSelect } from '../../input/select/state';\nimport { HighlightComponent } from '../../visualization/highlight/highlight.component';\n\nexport namespace RivViews {\n export const ViewPermissions = ['private', 'public', 'shared'] as const;\n export type ViewPermission = (typeof ViewPermissions)[number];\n\n export const MenuContexts = ['tab', 'all-views', 'overflow'] as const;\n export type MenuContext = (typeof MenuContexts)[number];\n\n export type User = RivSelect.BaseOption;\n\n export type View<U extends User> = {\n id: string | number;\n title: string;\n enabled: boolean;\n } & (\n | {\n permission: 'private' | 'public';\n }\n | {\n permission: 'shared';\n sharedUsers: U[];\n }\n );\n\n export type FullView<U extends User, V extends View<U>> = V & {\n active: boolean;\n system: boolean;\n titleHighlightIndices?: HighlightComponent.HighlightIndices[];\n };\n\n ///////////\n // State //\n ///////////\n\n export type CoreState<U extends User, V extends View<U>> = {\n views: V[];\n activeViewId: V['id'] | null;\n containerWidth: number;\n editingViewContext: {\n id: V['id'];\n autoRename: boolean;\n menuContext: MenuContext;\n } | null;\n deletingViewContext: { id: V['id']; menuContext: MenuContext } | null;\n overflow: {\n search: string;\n pickerOpen: boolean;\n };\n all: {\n search: string;\n privateOpen: boolean;\n sharedOpen: boolean;\n publicOpen: boolean;\n };\n userSource: UserSource<U>;\n };\n\n export type FullState<U extends User, V extends View<U>> = CoreState<U, V> & {\n allViews: FullView<U, V>[];\n displayedViews: FullView<U, V>[];\n enabledViews: FullView<U, V>[];\n allEnabledViews: FullView<U, V>[];\n all: {\n privateViews: FullView<U, V>[];\n sharedViews: FullView<U, V>[];\n publicViews: FullView<U, V>[];\n };\n };\n\n /////////////\n // Actions //\n /////////////\n\n export type Action<U extends User, V extends View<U>> =\n | { type: 'load' }\n | { type: 'setActiveView'; id: V['id'] }\n | { type: 'setEnabled'; id: V['id']; enabled: boolean }\n | { type: 'setContainerWidth'; width: number }\n | { type: 'setOverflowPickerOpen'; open: boolean }\n | { type: 'setOverflowSearchQuery'; query: string }\n | { type: 'setAllViewsSearchQuery'; query: string }\n | { type: 'updateView'; view: V }\n | { type: 'deleteView'; view: V }\n | { type: 'duplicateView'; view: V; menuContext: MenuContext }\n | { type: 'copyLinkToView'; view: V }\n | { type: 'setEditingView'; context: CoreState<U, V>['editingViewContext'] }\n | {\n type: 'setDeletingView';\n context: CoreState<U, V>['deletingViewContext'];\n }\n | {\n type: 'viewOrderChange';\n previousEnabledIndex: number;\n newEnabledIndex: number;\n }\n | { type: 'setAllViewsToggle'; permission: ViewPermission; open: boolean };\n\n ////////////\n // Source //\n ////////////\n\n export type Source<U extends User, V extends View<U>> = () =>\n | V[]\n | Promise<V[]>;\n export type Save<U extends User, V extends View<U>> = (\n views: V[],\n ) => void | Promise<void>;\n export type Duplicate<U extends User, V extends View<U>> = (\n viewToDuplicate: V,\n ) => V | Promise<V>;\n export type UserSource<U extends User> = () => U[] | Promise<U[]>;\n export type CopyLink<U extends User, V extends View<U>> = (\n view: V,\n ) => void | Promise<void>;\n export type SetActiveViewId<U extends User, V extends View<U>> = (\n id: V['id'],\n ) => void | Promise<void>;\n\n /////////////\n // Manager //\n /////////////\n\n export type Manager<U extends User, V extends View<U>> = {\n actions: Subject<Action<U, V>>;\n state: Connectable<FullState<U, V>>;\n };\n\n export type ManagerOptions<U extends User, V extends View<U>> = {\n initialState?: DeepPartial<CoreState<U, V>>;\n fuseOptions?: IFuseOptions<V>;\n };\n\n export type CreateManagerInput<U extends User, V extends View<U>> = {\n source: Source<U, V>;\n save: Save<U, V>;\n duplicate: Duplicate<U, V>;\n userSource: UserSource<U>;\n copyLink: CopyLink<U, V>;\n setActiveViewId: SetActiveViewId<U, V>;\n options?: ManagerOptions<U, V>;\n };\n\n export function createManager<U extends User, V extends View<U>>({\n source,\n save,\n duplicate,\n userSource,\n copyLink,\n options,\n setActiveViewId,\n }: CreateManagerInput<U, V>): Manager<U, V> {\n const defaultState: CoreState<U, V> = {\n views: [],\n activeViewId: null,\n containerWidth: 0,\n editingViewContext: null,\n deletingViewContext: null,\n overflow: {\n search: '',\n pickerOpen: false,\n },\n all: {\n search: '',\n privateOpen: true,\n sharedOpen: true,\n publicOpen: true,\n },\n userSource,\n };\n\n const defaultedInitialState: CoreState<U, V> = defaultsDeep(\n {},\n options?.initialState,\n defaultState,\n );\n\n const actions: Subject<Action<U, V>> = new Subject();\n const coreState: Observable<CoreState<U, V>> = actions.pipe(\n mergeScan(\n (state, action) =>\n from(\n reduce(\n state,\n action,\n source,\n debounce(save, 200),\n duplicate,\n copyLink,\n setActiveViewId,\n ),\n ),\n defaultedInitialState,\n 1,\n ),\n startWith(defaultedInitialState),\n );\n\n const state: Connectable<FullState<U, V>> = connectable(\n coreState.pipe(\n map(s => {\n // If for some reason the active view is not currently enabled, we'll\n // default to making the first view active instead.\n const activeView: V | undefined = s.views.find(\n view => view.enabled && view.id === s.activeViewId,\n );\n\n const allViews: FullView<U, V>[] = s.views.map((view, i) => ({\n ...view,\n enabled: view.enabled || i === 0,\n active: activeView ? activeView.id === view.id : i === 0,\n system: i === 0,\n }));\n\n const allEnabledViews = getEnabledViews(allViews);\n\n const displayedViews = calculateDisplayedViews(\n allEnabledViews,\n calculateOverflowViewIndex(s),\n s.activeViewId,\n );\n\n const enabledViews = s.overflow.search\n ? searchViews(\n allEnabledViews,\n s.overflow.search,\n options?.fuseOptions,\n )\n : allEnabledViews;\n\n const allViewsFiltered = s.all.search\n ? searchViews(allViews, s.all.search, options?.fuseOptions)\n : allViews;\n\n const searchingAllViews = !!s.all.search;\n\n return {\n ...s,\n allViews,\n displayedViews,\n enabledViews,\n allEnabledViews,\n all: {\n ...s.all,\n privateOpen: searchingAllViews || s.all.privateOpen,\n privateViews: viewsByPermission(allViewsFiltered, 'private'),\n sharedOpen: searchingAllViews || s.all.sharedOpen,\n sharedViews: viewsByPermission(allViewsFiltered, 'shared'),\n publicOpen: searchingAllViews || s.all.publicOpen,\n publicViews: viewsByPermission(allViewsFiltered, 'public'),\n },\n };\n }),\n ),\n {\n connector: () => new ReplaySubject(1),\n resetOnDisconnect: false,\n },\n );\n state.connect();\n\n // Load the views immediately\n actions.next({ type: 'load' });\n\n return { actions, state };\n }\n\n //////////////////////////////////\n // State reducer (with helpers) //\n //////////////////////////////////\n\n function getEnabledViews<U extends User, V extends View<U>>(views: V[]): V[];\n function getEnabledViews<U extends User, V extends View<U>>(\n views: FullView<U, V>[],\n ): FullView<U, V>[] {\n return views.filter((v, i) => v.enabled || i === 0);\n }\n\n /**\n * Translates an index in the enabled views list to the corresponding index\n * in the full views list. This is used to resolve UI indices (which only\n * show enabled views) to state.views indices (which includes all views).\n */\n function mapEnabledIndexToViewIndex<U extends User, V extends View<U>>(\n views: V[],\n enabledIndex: number,\n ): number {\n const enabledViews = getEnabledViews(views);\n\n const targetView = enabledViews[enabledIndex];\n if (!targetView) return enabledIndex;\n\n const viewIndex = views.findIndex(view => view.id === targetView.id);\n return viewIndex === -1 ? enabledIndex : viewIndex;\n }\n\n function calculateOverflowViewIndex<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n ): number {\n const enabledViews = getEnabledViews(state.views);\n\n // Tabs have a minimum width of 92px.\n const possibleSlotCount = Math.floor(state.containerWidth / 92);\n\n // The \"all views\" sidebar trigger takes up one slot.\n const availableSlotCount = possibleSlotCount - 1;\n\n // If there are too many tabs, the \"N more\" trigger takes up one slot as well.\n // But we want to avoid the \"1 more\" case, so we only use a slot for \"N more\" if N != 1.\n if (availableSlotCount >= enabledViews.length) return enabledViews.length;\n else return availableSlotCount - 1; // the \"N more\" uses up a slot.\n }\n\n function calculateDisplayedViews<U extends User, V extends View<U>>(\n fullViews: FullView<U, V>[],\n overflowViewIndex: number,\n activeViewId: CoreState<U, V>['activeViewId'],\n ): FullView<U, V>[] {\n const displayedViews = fullViews.slice(0, overflowViewIndex);\n\n const activeViewInDisplay = displayedViews.some(\n view => view.id === activeViewId,\n );\n\n if (!activeViewInDisplay && activeViewId !== null) {\n const activeView = fullViews.find(view => view.id === activeViewId);\n if (activeView && displayedViews.length > 0) {\n return [...displayedViews.slice(0, -1), activeView];\n }\n }\n\n return displayedViews;\n }\n\n function viewsByPermission<U extends User, V extends View<U>>(\n views: FullView<U, V>[],\n permission: ViewPermission,\n ): FullView<U, V>[] {\n return sortBy(\n views.filter(view => view.permission === permission),\n [v => !v.system, 'title'],\n );\n }\n\n function searchViews<U extends User, V extends View<U>>(\n views: FullView<U, V>[],\n query: string,\n options?: IFuseOptions<V>,\n ): FullView<U, V>[] {\n const fuse = new Fuse(views, {\n threshold: 0.2,\n keys: ['title'],\n includeMatches: true,\n ...options,\n });\n\n const matchedOptions: FuseResult<FullView<U, V>>[] = fuse.search(query);\n\n return matchedOptions.map(result => ({\n ...result.item,\n titleHighlightIndices: [\n ...(result.matches?.find(match => match.key === 'title')?.indices ??\n []),\n ],\n }));\n }\n\n function getNextBestActiveView<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n ): V['id'] {\n const enabledViews = getEnabledViews(state.views);\n const currentActiveViewIndex = enabledViews.findIndex(\n view => view.id === state.activeViewId,\n );\n\n if (currentActiveViewIndex === -1) return enabledViews[0].id;\n return (\n enabledViews[currentActiveViewIndex + 1]?.id ??\n enabledViews[currentActiveViewIndex - 1]?.id ??\n enabledViews[0].id\n );\n }\n\n function deleteView<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n id: V['id'],\n ): CoreState<U, V> {\n const activeViewId =\n state.activeViewId === id\n ? getNextBestActiveView(state)\n : state.activeViewId;\n const views = state.views.filter(view => view.id !== id);\n return {\n ...state,\n views,\n activeViewId,\n deletingViewContext: null,\n };\n }\n\n function setEnabled<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n id: V['id'],\n enabled: boolean,\n ): CoreState<U, V> {\n return {\n ...state,\n views: state.views.map(view =>\n view.id === id ? { ...view, enabled } : view,\n ),\n activeViewId:\n !enabled && state.activeViewId === id\n ? getNextBestActiveView(state)\n : state.activeViewId,\n };\n }\n\n function withDuplicateView<U extends User, V extends View<U>>(\n views: V[],\n duplicatedView: V,\n newView: V,\n ): V[] {\n const sourceIndex = views.findIndex(view => view.id === duplicatedView.id);\n if (sourceIndex === -1) {\n return [newView, ...views];\n } else {\n return [\n ...views.slice(0, sourceIndex + 1),\n newView,\n ...views.slice(sourceIndex + 1),\n ];\n }\n }\n\n function viewOrderChange<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n previousEnabledIndex: number,\n newEnabledIndex: number,\n ): { state: CoreState<U, V>; shouldSave: boolean } {\n if (previousEnabledIndex === 0 || newEnabledIndex === 0) {\n return { state, shouldSave: false }; // Keep system view (index 0) in place\n }\n\n const actualPreviousIndex = mapEnabledIndexToViewIndex(\n state.views,\n previousEnabledIndex,\n );\n const actualNewIndex = mapEnabledIndexToViewIndex(\n state.views,\n newEnabledIndex,\n );\n\n const item = state.views[actualPreviousIndex];\n const withoutItem = state.views.filter((_, i) => i !== actualPreviousIndex);\n\n return {\n state: {\n ...state,\n views: [\n ...withoutItem.slice(0, actualNewIndex),\n item,\n ...withoutItem.slice(actualNewIndex),\n ],\n },\n shouldSave: true,\n };\n }\n\n async function reduce<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n action: Action<U, V>,\n source: Source<U, V>,\n save: Save<U, V>,\n duplicate: Duplicate<U, V>,\n copyLink: CopyLink<U, V>,\n setActiveViewId: SetActiveViewId<U, V>,\n ): Promise<CoreState<U, V>> {\n switch (action.type) {\n case 'load':\n const views = await source();\n return {\n ...state,\n views,\n };\n\n case 'setActiveView': {\n const activeView = state.views.find(v => v.id === action.id);\n const views =\n activeView && !activeView.enabled\n ? state.views.map(view =>\n view.id === action.id ? { ...view, enabled: true } : view,\n )\n : state.views;\n // If enabling the view changed the views, we need to save.\n if (views !== state.views) {\n save(views);\n }\n // notify the caller that the active view has changed\n setActiveViewId(action.id);\n return {\n ...state,\n activeViewId: action.id,\n views,\n all: {\n ...state.all,\n search: '',\n },\n overflow: {\n ...state.overflow,\n search: '',\n },\n };\n }\n\n case 'setEnabled': {\n const newState = setEnabled(state, action.id, action.enabled);\n save(newState.views);\n return newState;\n }\n\n case 'setContainerWidth':\n return {\n ...state,\n containerWidth: action.width,\n };\n\n case 'setOverflowPickerOpen':\n return {\n ...state,\n overflow: {\n ...state.overflow,\n pickerOpen: action.open,\n },\n };\n\n case 'setOverflowSearchQuery':\n return {\n ...state,\n overflow: {\n ...state.overflow,\n search: action.query,\n },\n };\n\n case 'setAllViewsSearchQuery':\n return {\n ...state,\n all: {\n ...state.all,\n search: action.query,\n },\n };\n\n case 'updateView': {\n const views = state.views.map(view =>\n view.id === action.view.id ? action.view : view,\n );\n save(views);\n return {\n ...state,\n views: views,\n };\n }\n\n case 'deleteView': {\n const newState = deleteView(state, action.view.id);\n save(newState.views);\n return newState;\n }\n\n case 'duplicateView': {\n const newView = await duplicate({ ...action.view });\n return {\n ...state,\n views: withDuplicateView(state.views, action.view, newView),\n editingViewContext: {\n id: newView.id,\n autoRename: true,\n menuContext: action.menuContext,\n },\n activeViewId: newView.id,\n };\n }\n\n case 'copyLinkToView':\n await copyLink(action.view);\n return state;\n\n case 'viewOrderChange': {\n const { state: newState, shouldSave } = viewOrderChange(\n state,\n action.previousEnabledIndex,\n action.newEnabledIndex,\n );\n if (shouldSave) {\n save(newState.views);\n }\n return newState;\n }\n\n case 'setAllViewsToggle':\n return {\n ...state,\n all: {\n ...state.all,\n privateOpen:\n action.permission === 'private'\n ? action.open\n : state.all.privateOpen,\n sharedOpen:\n action.permission === 'shared'\n ? action.open\n : state.all.sharedOpen,\n publicOpen:\n action.permission === 'public'\n ? action.open\n : state.all.publicOpen,\n },\n };\n\n case 'setEditingView':\n return {\n ...state,\n editingViewContext: action.context,\n };\n\n case 'setDeletingView':\n return {\n ...state,\n deletingViewContext: action.context,\n };\n }\n }\n\n ///////////////\n // Utilities //\n ///////////////\n\n export function getPermissionTitle(permission: ViewPermission): string {\n switch (permission) {\n case 'private':\n return 'Private';\n case 'shared':\n return 'Shared';\n case 'public':\n return 'Public';\n }\n }\n\n export function getPermissionDescription(permission: ViewPermission): string {\n switch (permission) {\n case 'private':\n return 'Only visible to you';\n case 'shared':\n return 'Only visible to those with access';\n case 'public':\n return 'Visible to everyone';\n }\n }\n\n export function isSharedView<U extends User, V extends View<U>>(\n view?: FullView<U, V>,\n ): view is FullView<U, V> & { permission: 'shared'; sharedUsers: U[] } {\n return view?.permission === 'shared';\n }\n}\n","import {\n animate,\n group,\n query,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { KeyValue } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n TrackByFunction,\n} from '@angular/core';\nimport { OverlayService } from './overlay.service';\n\ntype AnimationConfig = {\n HOOK: string;\n HIDDEN: Parameters<typeof style>[0];\n VISIBLE: Parameters<typeof style>[0];\n};\n\nexport const ANIMATION_CONSTANTS: Record<\n 'SIDE_SHEET' | 'TOAST' | 'DIALOG' | 'MODAL',\n AnimationConfig\n> = {\n SIDE_SHEET: {\n HOOK: 'side-sheet',\n HIDDEN: { transform: 'translateX(100%)' },\n VISIBLE: { transform: 'translateX(0%)' },\n },\n TOAST: {\n HOOK: 'toast',\n HIDDEN: {\n opacity: 0,\n transform: 'translateY(calc(var(--size-xsmall) * -1))',\n filter: 'blur(var(--size-xsmall))',\n },\n VISIBLE: { opacity: 1, transform: 'translateY(0px)', filter: 'none' },\n },\n MODAL: {\n HOOK: 'modal',\n HIDDEN: { opacity: 0 },\n VISIBLE: { opacity: 1 },\n },\n DIALOG: {\n HOOK: 'dialog',\n HIDDEN: {\n transform: 'translateY(var(--size-large))',\n filter: 'blur(var(--size-xsmall))',\n },\n VISIBLE: { transform: 'translateY(0px)', filter: 'none' },\n },\n};\n\nfunction createComponentAnimation(config: AnimationConfig) {\n return {\n enter: query(\n `[data-animation-hook=\"${config.HOOK}\"]`,\n [\n style(config.HIDDEN),\n animate('200ms ease-in-out', style(config.VISIBLE)),\n ],\n { optional: true },\n ),\n leave: query(\n `[data-animation-hook=\"${config.HOOK}\"]`,\n [animate('150ms linear', style(config.HIDDEN))],\n { optional: true },\n ),\n };\n}\n\nconst sideSheetAnimation = createComponentAnimation(\n ANIMATION_CONSTANTS.SIDE_SHEET,\n);\nconst toastAnimation = createComponentAnimation(ANIMATION_CONSTANTS.TOAST);\nconst modalAnimation = createComponentAnimation(ANIMATION_CONSTANTS.MODAL);\nconst dialogAnimation = createComponentAnimation(ANIMATION_CONSTANTS.DIALOG);\n\n@Component({\n animations: [\n trigger('animate', [\n transition(':enter', [\n group([\n sideSheetAnimation.enter,\n toastAnimation.enter,\n modalAnimation.enter,\n dialogAnimation.enter,\n ]),\n ]),\n transition(':leave', [\n group([\n sideSheetAnimation.leave,\n toastAnimation.leave,\n modalAnimation.leave,\n dialogAnimation.leave,\n ]),\n ]),\n ]),\n ],\n selector: 'riv-overlay-outlet',\n templateUrl: './overlay-outlet.component.html',\n styleUrls: ['./overlay-outlet.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OverlayOutletComponent {\n constructor(readonly overlayService: OverlayService) {}\n\n readonly trackOverlay: TrackByFunction<KeyValue<Symbol, TemplateRef<void>>> =\n (_, { key }: { key: Symbol }) => key;\n}\n","<ng-container\n *ngFor=\"\n let overlay of overlayService.overlays | async | keyvalue;\n trackBy: trackOverlay\n \"\n>\n <div class=\"overlay-container\" @animate>\n <ng-container *ngTemplateOutlet=\"overlay.value\"></ng-container>\n </div>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ANIMATION_CONSTANTS } from '../overlay-outlet.component';\n\n@Component({\n selector: 'riv-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalComponent {\n @Input()\n obscure: boolean = false;\n\n @Output()\n readonly close = new EventEmitter<void>();\n\n scrimClick(evt: MouseEvent) {\n if (evt.target === evt.currentTarget) {\n this.close.emit();\n }\n }\n\n readonly hook = ANIMATION_CONSTANTS.MODAL.HOOK;\n}\n","<div\n #scrim\n *riv-overlay\n [attr.data-animation-hook]=\"hook\"\n [rivLockScroll]=\"true\"\n class=\"scrim\"\n [class.obscure]=\"obscure\"\n (click)=\"scrimClick($event)\"\n>\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ANIMATION_CONSTANTS } from '../../overlay-outlet.component';\n\n@Component({\n selector: 'riv-side-sheet',\n templateUrl: './side-sheet.component.html',\n styleUrls: ['./side-sheet.component.css'],\n\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SideSheetComponent {\n @Input()\n topOffset: number = 0;\n\n @Input()\n width: string = 'calc(var(--base-grid-size) * 105)';\n\n @Input()\n obscure: boolean = false;\n\n @Output()\n close = new EventEmitter<void>();\n\n readonly hook = ANIMATION_CONSTANTS.SIDE_SHEET.HOOK;\n}\n","<riv-modal (close)=\"close.emit()\" [obscure]=\"obscure\">\n <div\n [attr.data-animation-hook]=\"hook\"\n class=\"side-sheet\"\n [style.top.px]=\"topOffset\"\n [style.width]=\"width\"\n >\n <ng-content></ng-content>\n </div>\n</riv-modal>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ANIMATION_CONSTANTS } from '../../overlay-outlet.component';\n\n@Component({\n selector: 'riv-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogComponent {\n @Input()\n title?: string;\n\n @Output()\n close = new EventEmitter<void>();\n\n readonly hook = ANIMATION_CONSTANTS.DIALOG.HOOK;\n}\n","<riv-modal (close)=\"close.emit()\" [obscure]=\"true\">\n <div [attr.data-animation-hook]=\"hook\" class=\"wrapper\">\n <div class=\"dialog\">\n <header>\n <span class=\"title\">\n {{ title }}\n </span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n <div class=\"body\">\n <ng-content></ng-content>\n </div>\n <div class=\"footer\">\n <ng-content select=\"footer\"></ng-content>\n </div>\n </div>\n </div>\n</riv-modal>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { Subscription } from 'rxjs';\nimport { RivSelect } from '../../../input/select/state';\nimport { RivViews } from '../state';\n\nconst titles: Record<RivViews.ViewPermission, string> = {\n private: 'Private',\n public: 'Public',\n shared: 'Shared',\n};\n\nconst subtitles: Record<RivViews.ViewPermission, string> = {\n private: 'Only visible to you',\n public: 'Visible to everyone',\n shared: 'Only visible to those with access',\n};\n\n@Component({\n selector: 'riv-edit-view',\n templateUrl: './edit-view.component.html',\n styleUrls: ['./edit-view.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditViewComponent<\n U extends RivViews.User,\n V extends RivViews.View<U>,\n> implements OnInit, OnChanges, OnDestroy\n{\n @Input()\n anchor?: Element | DOMRect | null;\n\n @Input()\n autoSelectName: boolean = false;\n\n @Input()\n view?: RivViews.FullView<U, V>;\n\n editedView?: RivViews.FullView<U, V>;\n\n @Input()\n userSource?: RivViews.UserSource<U>;\n\n @Input()\n mode: 'edit' | 'create' = 'edit';\n\n @Output()\n save = new EventEmitter<RivViews.FullView<U, V>>();\n\n @Output()\n delete = new EventEmitter<RivViews.FullView<U, V>>();\n\n @Output()\n close = new EventEmitter<void>();\n\n readonly permissionOptions = RivViews.ViewPermissions.map(permission => ({\n value: permission,\n title: titles[permission],\n subtitle: subtitles[permission],\n }));\n\n private resetView() {\n this.editedView = cloneDeep(this.view);\n this.setUpUserSelectManager();\n }\n\n ngOnInit(): void {\n this.resetView();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['view']) {\n this.resetView();\n }\n }\n\n ngOnDestroy(): void {\n this.tearDownUserSelectManager();\n }\n\n canEdit(): boolean {\n return this.mode === 'edit';\n }\n\n isClean() {\n return isEqual(this.editedView, this.view);\n }\n\n titleChange(value: string): void {\n if (this.editedView) this.editedView.title = value;\n }\n\n permissionChange(value: RivViews.ViewPermission): void {\n if (this.editedView) this.editedView.permission = value;\n }\n\n private getSharedUsers(view?: RivViews.FullView<U, V>): U[] {\n if (RivViews.isSharedView(view)) {\n return view.sharedUsers;\n }\n return [];\n }\n\n userSelectManager?: RivSelect.Manager<U>;\n private userSelectSubscription?: Subscription;\n\n private tearDownUserSelectManager(): void {\n this.userSelectSubscription?.unsubscribe();\n }\n\n private setUpUserSelectManager(): void {\n this.tearDownUserSelectManager();\n this.userSelectManager = RivSelect.createInMemoryManager(\n async () => [{ options: await (this.userSource || (() => []))() }],\n {\n allowSearch: true,\n allowSelectAll: true,\n allowMultiSelect: true,\n displayLimit: 500,\n initialState: {\n selection: {\n selected: new RivSelect.OptionSet(\n this.getSharedUsers(this.editedView),\n ),\n },\n },\n },\n );\n this.userSelectSubscription = this.userSelectManager.state.subscribe(\n state => {\n if (RivViews.isSharedView(this.editedView)) {\n this.editedView.sharedUsers = [...state.selection.selected] as U[];\n }\n },\n );\n this.userSelectManager.actions.next({ type: 'load' });\n }\n}\n","<ng-container *ngIf=\"editedView; let ev\">\n <riv-callout\n *riv-overlay\n [anchor]=\"anchor ?? null\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-right'\"\n [fallbackDirection]=\"'clockwise'\"\n (close)=\"close.emit()\"\n >\n <div class=\"edit-view\">\n <div class=\"name-input\">\n <span class=\"name-label\">Name * </span>\n <riv-text-field\n [autoFocus]=\"autoSelectName ? 'select' : false\"\n [value]=\"ev.title ?? ''\"\n (valueChange)=\"titleChange($event)\"\n ></riv-text-field>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"permissions\">\n <div class=\"permission-label\">View permissions</div>\n\n <div class=\"permission-options\">\n <button\n *ngFor=\"let option of permissionOptions\"\n class=\"permission-option\"\n [class.current]=\"ev.permission === option.value\"\n type=\"button\"\n [attr.aria-checked]=\"ev.permission === option.value\"\n [attr.aria-label]=\"option.title + ' permission'\"\n (click)=\"permissionChange(option.value)\"\n >\n <div class=\"option-content\">\n <div class=\"option-title\">\n <span>{{ option.title }}</span>\n <span class=\"option-description\">{{ option.subtitle }}</span>\n </div>\n <riv-icon\n *ngIf=\"ev.permission === option.value\"\n class=\"permission-indicator\"\n [name]=\"'Check'\"\n [size]=\"16\"\n ></riv-icon>\n </div>\n <riv-select\n *ngIf=\"\n ev.permission === 'shared' &&\n option.value === 'shared' &&\n userSelectManager\n \"\n [label]=\"'Users with access'\"\n [manager]=\"userSelectManager\"\n ></riv-select>\n </button>\n </div>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"actions\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'Trash2'\"\n (click)=\"delete.emit(ev); close.emit()\"\n *ngIf=\"canEdit()\"\n >\n Delete\n </button>\n\n <div class=\"actions-spacer\"></div>\n\n <div class=\"primary-actions\">\n <button rivButton [variant]=\"'ghost'\" (click)=\"close.emit()\">\n Cancel\n </button>\n <button\n rivButton\n [variant]=\"'primary'\"\n [disabled]=\"canEdit() && isClean()\"\n (click)=\"save.emit(ev); close.emit()\"\n >\n Save\n </button>\n </div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n Input,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { CalloutComponent } from '../callout.component';\n\n@Component({\n selector: 'riv-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuComponent {\n public readonly open = new BehaviorSubject<boolean>(false);\n\n @Input()\n preferredPosition: CalloutComponent.AnchoredPosition = 'bottom-left';\n\n @ContentChild('trigger')\n triggerTemplate?: TemplateRef<{ open: boolean }>;\n\n @ViewChild('customTriggerButton', { read: ElementRef })\n customTriggerButton?: ElementRef;\n\n @ViewChild('standardTriggerButton', { read: ElementRef })\n standardTriggerButton?: ElementRef;\n\n getTrigger(): Element | null {\n return (\n this.customTriggerButton?.nativeElement ??\n this.standardTriggerButton?.nativeElement\n );\n }\n}\n","<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button #customTriggerButton class=\"custom-trigger\" (click)=\"open.next(true)\">\n <ng-container\n *ngTemplateOutlet=\"triggerTemplate; context: { open: open | async }\"\n ></ng-container>\n </button>\n</ng-container>\n\n<ng-template #standardTrigger>\n <button\n #standardTriggerButton\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'xsmall'\"\n [icon]=\"'MoreVertical'\"\n (click)=\"open.next(true)\"\n ></button>\n</ng-template>\n\n<ng-container *ngIf=\"open | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [showCaret]=\"false\"\n [preferredPosition]=\"preferredPosition\"\n [theme]=\"'light'\"\n (close)=\"open.next(false)\"\n >\n <div class=\"options\">\n <ng-content></ng-content>\n </div>\n </riv-callout>\n</ng-container>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'riv-menu-divider',\n template: '',\n styleUrls: ['./menu-divider.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuDividerComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { MenuComponent } from '../menu.component';\n\n@Component({\n selector: '[riv-menu-item]',\n templateUrl: './menu-item.component.html',\n styleUrls: ['./menu-item.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuItemComponent implements OnChanges {\n constructor(\n public readonly menu: MenuComponent,\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n ) {}\n\n @Input()\n locked?: boolean;\n\n @Input()\n disabled?: boolean;\n\n @Input()\n variant: MenuItemComponent.Variant = 'basic';\n\n @HostBinding('class')\n get classes() {\n return {\n [this.variant]: true,\n locked: this.locked,\n disabled: this.disabled,\n };\n }\n\n private disableNativeElement: boolean = false;\n private lockNativeElement: boolean = false;\n\n ngOnChanges(changes: SimpleChanges) {\n const accessChange: boolean = !!changes['disabled'] || !!changes['locked'];\n if (accessChange) {\n if (changes['disabled']) {\n this.disableNativeElement = changes['disabled'].currentValue;\n }\n if (changes['locked']) {\n this.lockNativeElement = changes['locked'].currentValue;\n }\n if ('disabled' in this.el.nativeElement) {\n if (this.disableNativeElement || this.lockNativeElement) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n }\n }\n }\n\n @HostListener('click', ['$event'])\n click(event: MouseEvent) {\n if (!this.disabled && !this.locked) {\n this.menu.open.next(false);\n } else {\n event.preventDefault();\n }\n }\n}\n\nexport namespace MenuItemComponent {\n export const Variants = ['basic', 'danger'] as const;\n export type Variant = (typeof Variants)[number];\n}\n","<ng-content></ng-content>\n<riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport { RivViews } from '../state';\n\n@Component({\n selector: 'riv-view-menu',\n templateUrl: './view-menu.component.html',\n styleUrls: ['./view-menu.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViewMenuComponent<\n U extends RivViews.User,\n V extends RivViews.View<U>,\n> {\n constructor(readonly el: ElementRef) {}\n\n @Input()\n manager?: RivViews.Manager<U, V>;\n\n @Input()\n view?: RivViews.FullView<U, V>;\n\n @Input()\n menuContext: RivViews.MenuContext = 'tab';\n\n @ContentChild('menuTrigger')\n triggerTemplate?: TemplateRef<void>;\n}\n","<ng-container *ngIf=\"view\">\n <riv-menu\n #menu\n [preferredPosition]=\"'bottom-right'\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-container *ngIf=\"triggerTemplate\">\n <ng-template #trigger>\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n {{ view.enabled ? 'Hide tab' : 'Show tab' }}\n </button>\n <riv-menu-divider></riv-menu-divider>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEditingView',\n context: { id: view.id, autoRename: false, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n >\n Edit view\n </button>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEditingView',\n context: { id: view.id, autoRename: true, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n >\n Rename view\n </button>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({ type: 'duplicateView', view, menuContext })\n \"\n >\n Duplicate view\n </button>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setDeletingView',\n context: { id: view.id, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n >\n Delete view\n </button>\n <riv-menu-divider></riv-menu-divider>\n <button\n riv-menu-item\n (click)=\"manager?.actions?.next({ type: 'copyLinkToView', view })\"\n >\n Copy link to view\n </button>\n </riv-menu>\n\n <ng-container *ngIf=\"manager?.state | async; let state\">\n <ng-container *ngIf=\"state.editingViewContext; let editingViewContext\">\n <riv-edit-view\n *ngIf=\"\n editingViewContext.id === view.id &&\n editingViewContext.menuContext === menuContext\n \"\n [view]=\"view\"\n [userSource]=\"state.userSource\"\n [autoSelectName]=\"editingViewContext.autoRename\"\n [anchor]=\"el.nativeElement\"\n (save)=\"manager?.actions?.next({ type: 'updateView', view: $event })\"\n (delete)=\"manager?.actions?.next({ type: 'deleteView', view: $event })\"\n (close)=\"\n manager?.actions?.next({ type: 'setEditingView', context: null })\n \"\n ></riv-edit-view>\n </ng-container>\n\n <ng-container *ngIf=\"state.deletingViewContext; let deletingViewContext\">\n <riv-dialog\n *ngIf=\"\n deletingViewContext.id === view.id &&\n deletingViewContext.menuContext === menuContext\n \"\n [title]=\"'Delete view'\"\n (close)=\"\n manager?.actions?.next({ type: 'setDeletingView', context: null })\n \"\n >\n <div class=\"delete-dialog\">\n <div class=\"delete-title\">\n Are you sure you want to delete the following view?\n </div>\n <p>{{ view.title }}</p>\n </div>\n <footer class=\"delete-footer\">\n <button\n rivButton\n (click)=\"\n manager?.actions?.next({ type: 'setDeletingView', context: null })\n \"\n >\n Cancel\n </button>\n <button\n rivButton\n [variant]=\"'danger'\"\n (click)=\"\n manager?.actions?.next({\n type: 'deleteView',\n view\n })\n \"\n >\n Delete view\n </button>\n </footer>\n </riv-dialog>\n </ng-container>\n </ng-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { RivViews } from '../state';\n\n@Component({\n selector: 'riv-all-views-modal',\n templateUrl: './all-views-modal.component.html',\n styleUrls: ['./all-views-modal.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AllViewsModalComponent<\n U extends RivViews.User,\n V extends RivViews.View<U>,\n> {\n @Input()\n manager?: RivViews.Manager<U, V>;\n\n @Input()\n topOffset: number = 0;\n\n @Output()\n close = new EventEmitter<void>();\n\n getOpenChange(permission: RivViews.ViewPermission): (open: boolean) => void {\n return (open: boolean) =>\n this.manager?.actions?.next({\n type: 'setAllViewsToggle',\n permission,\n open,\n });\n }\n\n getPermissionTitle = RivViews.getPermissionTitle;\n getPermissionDescription = RivViews.getPermissionDescription;\n\n trackById(_: number, view: RivViews.FullView<U, V>): V['id'] {\n return view.id;\n }\n}\n","<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n *ngIf=\"s.all.privateViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.sharedViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.publicViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public')\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n >\n <div class=\"permission-section\">\n <button\n class=\"permission-header\"\n (click)=\"openChange(!open)\"\n [disabled]=\"!!s.all.search\"\n >\n <div class=\"permission-header-content\">\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n <riv-icon\n [name]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n\n <div class=\"permission-content\" *ngIf=\"open\">\n <div class=\"views-list\" *ngIf=\"views.length > 0\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <div class=\"view-title\" rivTruncate>\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'all-views'\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n <riv-icon\n [name]=\"\n view.system ? 'Lock' : view.enabled ? 'Eye' : 'EyeOff'\n \"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { ANIMATION_CONSTANTS } from '../overlay-outlet.component';\n\n@Component({\n selector: 'riv-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastComponent implements OnInit {\n @Input()\n variant: ToastComponent.Variant = 'basic';\n\n @Input()\n icon?: IconComponent.Name;\n\n ngOnInit(): void {\n setTimeout(() => {\n this.close.emit();\n }, 3000);\n }\n\n @Output()\n close = new EventEmitter<void>();\n\n readonly hook = ANIMATION_CONSTANTS.TOAST.HOOK;\n}\n\nexport namespace ToastComponent {\n export const Variants = [\n 'basic',\n 'danger',\n 'safety',\n 'safety-dark',\n 'safety-inverse',\n ] as const;\n export type Variant = (typeof Variants)[number];\n}\n","<div *riv-overlay class=\"wrapper\" [attr.data-animation-hook]=\"hook\">\n <div class=\"toast\" [ngClass]=\"variant\">\n <riv-icon *ngIf=\"icon\" [name]=\"icon\" [size]=\"16\"></riv-icon>\n <div class=\"content\"><ng-content></ng-content></div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n TrackByFunction,\n ViewChild,\n} from '@angular/core';\nimport { filter, map, merge, Observable, Subject } from 'rxjs';\nimport { RivViews } from '../state';\n\n@Component({\n selector: 'riv-views',\n templateUrl: './views.component.html',\n styleUrls: ['./views.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViewsComponent<U extends RivViews.User, V extends RivViews.View<U>>\n implements OnInit\n{\n @Input()\n manager?: RivViews.Manager<U, V>;\n\n @Input()\n sideSheetTopOffset: number = 0;\n\n @ViewChild('overflowTrigger', { read: ElementRef })\n overflowTrigger?: ElementRef;\n\n @ViewChild('activeTab', { read: ElementRef })\n activeTab?: ElementRef;\n\n public showAllViews: boolean = false;\n\n draggedTabIndex: number | null = null;\n draggedOverTabIndex: number | null = null;\n\n dragStart(index: number): void {\n if (index > 0) this.draggedTabIndex = index;\n }\n\n dragOver(index: number): void {\n if (index > 0) this.draggedOverTabIndex = index;\n else this.draggedOverTabIndex = null;\n }\n\n drop(index: number): void {\n if (this.draggedTabIndex !== null) {\n this.manager?.actions.next({\n type: 'viewOrderChange',\n previousEnabledIndex: this.draggedTabIndex,\n newEnabledIndex: index,\n });\n }\n\n this.draggedTabIndex = null;\n this.draggedOverTabIndex = null;\n }\n\n toastClosed = new Subject<void>();\n showLinkCopiedToast?: Observable<boolean>;\n ngOnInit() {\n this.showLinkCopiedToast = merge(\n this.manager!.actions.pipe(\n filter(({ type }) => type === 'copyLinkToView'),\n map(() => true),\n ),\n this.toastClosed.pipe(map(() => false)),\n );\n }\n\n trackById: TrackByFunction<RivViews.FullView<U, V>> = (\n _: number,\n v: RivViews.FullView<U, V>,\n ) => v.id;\n}\n","<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <div\n #activeTab\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"i === 0\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"menu-wrapper\" rivTruncate>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <button class=\"menu-trigger\" rivTruncate>\n {{ view.title }}\n </button>\n </ng-template>\n </riv-view-menu>\n </div>\n </div>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"i === 0\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.allEnabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"i > 0\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent {\n @Input()\n variant: BadgeComponent.Variant = 'brand';\n\n @Input()\n size: BadgeComponent.Size = 'medium';\n\n @HostBinding('class')\n get classes() {\n return `${this.size} ${this.variant}`;\n }\n}\n\nexport namespace BadgeComponent {\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n\n export const Variants = [\n 'brand',\n 'disabled',\n\n 'qualitative-safety',\n 'qualitative-caution',\n 'qualitative-warning',\n 'qualitative-danger',\n 'qualitative-danger-inverse',\n\n 'categorical-2',\n 'categorical-3',\n 'categorical-4',\n 'categorical-6',\n 'categorical-7',\n 'categorical-8',\n 'categorical-9',\n 'categorical-10',\n ] as const;\n export type Variant = (typeof Variants)[number];\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\n\n@Component({\n selector: '[riv-banner-action]',\n templateUrl: './banner-action.component.html',\n styleUrls: ['./banner-action.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BannerActionComponent implements OnChanges {\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n ) {}\n\n @Input()\n locked?: boolean;\n\n @Input()\n disabled?: boolean;\n\n @HostBinding('class.disabled')\n get isDisabled() {\n return this.disabled || this.locked;\n }\n\n private disableNativeElement: boolean = false;\n private lockNativeElement: boolean = false;\n\n ngOnChanges(changes: SimpleChanges) {\n const accessChange: boolean = !!changes['disabled'] || !!changes['locked'];\n if (accessChange) {\n if (changes['disabled']) {\n this.disableNativeElement = changes['disabled'].currentValue;\n }\n if (changes['locked']) {\n this.lockNativeElement = changes['locked'].currentValue;\n }\n if ('disabled' in this.el.nativeElement) {\n if (this.disableNativeElement || this.lockNativeElement) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n }\n }\n }\n}\n","<ng-content></ng-content>\n<riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\n\n@Component({\n selector: 'riv-banner',\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BannerComponent {\n @Input()\n @HostBinding('class')\n variant: BannerComponent.Variant = 'info';\n\n @Input()\n icon: boolean | IconComponent.Name = true;\n\n @Input()\n dismissable: boolean = false;\n\n getResolvedIcon(): IconComponent.Name | null {\n if (this.icon === false) return null;\n if (this.icon === true) {\n switch (this.variant) {\n case 'info':\n return 'Info';\n case 'warning':\n return 'AlertTriangle';\n case 'danger':\n return 'AlertCircle';\n case 'safety':\n return 'CheckCircle';\n }\n }\n return this.icon;\n }\n\n @Output()\n dismiss = new EventEmitter<void>();\n}\n\nexport namespace BannerComponent {\n export const Variants = ['warning', 'safety', 'danger', 'info'] as const;\n export type Variant = (typeof Variants)[number];\n}\n","<riv-icon\n *ngIf=\"getResolvedIcon(); let icon\"\n [name]=\"icon\"\n class=\"icon\"\n></riv-icon>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<button *ngIf=\"dismissable\" class=\"dismiss\" (click)=\"dismiss.emit()\">\n <riv-icon [name]=\"'X'\" [size]=\"16\"></riv-icon>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-notification-badge',\n template: '{{ count === null ? null : (count | rivNumber) }}',\n styleUrls: ['./notification-badge.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NotificationBadgeComponent {\n @Input()\n count: number | null = null;\n\n @Input()\n @HostBinding('class')\n variant: NotificationBadgeComponent.Variant = 'basic';\n}\n\nexport namespace NotificationBadgeComponent {\n export const Variants = ['basic', 'brand'] as const;\n export type Variant = (typeof Variants)[number];\n}\n","import { Directive, Input, OnChanges, TemplateRef } from '@angular/core';\nimport { TooltipDirective } from './tooltip.directive';\n\n/**\n * A convenience wrapper around rivTooltip that allows for conditionally\n * adding a tooltip when the `locked` input is true.\n */\n@Directive({\n selector: '[rivLockedTooltip]',\n})\nexport class LockedTooltipDirective\n extends TooltipDirective\n implements OnChanges\n{\n @Input()\n rivLockedTooltip?: string | TemplateRef<void>;\n\n @Input()\n locked?: boolean;\n\n ngOnChanges() {\n if (this.locked) {\n this.rivTooltip = this.rivLockedTooltip;\n } else {\n this.rivTooltip = undefined;\n }\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: '[riv-toast-action]',\n templateUrl: './toast-action.component.html',\n styleUrls: ['./toast-action.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastActionComponent {}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n} from '@angular/core';\nimport { RivTable } from '../table/state';\n\n@Component({\n selector: '[riv-simple-table-cell]',\n templateUrl: './simple-table-cell.component.html',\n styleUrls: ['./simple-table-cell.component.css', './alignment.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimpleTableCellComponent {\n /**\n * These get set automatically by the parent SimpleTableComponent.\n */\n public alignment?: RivTable.ColumnAlignment;\n public pinned?: boolean;\n public isLastRow?: boolean;\n\n constructor(\n public cdr: ChangeDetectorRef,\n public elementRef: ElementRef<HTMLTableCellElement>,\n ) {}\n\n @HostBinding('class')\n get classes() {\n return [\n this.alignment,\n this.pinned && 'pinned',\n this.isLastRow && 'last-row',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { RivTable } from '../table/state';\n\n@Component({\n selector: '[riv-simple-table-header-cell]',\n templateUrl: './simple-table-header-cell.component.html',\n styleUrls: ['./simple-table-header-cell.component.css', './alignment.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimpleTableHeaderCellComponent {\n @Input() dataType?: RivTable.ColumnDataType;\n\n @Input() pinned?: boolean;\n\n /**\n * This gets set automatically by the parent SimpleTableComponent.\n */\n public alignment?: RivTable.ColumnAlignment;\n\n constructor(public cdr: ChangeDetectorRef) {}\n\n @HostBinding('class')\n get classes() {\n return [this.alignment, this.pinned && 'pinned'].filter(Boolean).join(' ');\n }\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: '[riv-simple-table-row]',\n templateUrl: './simple-table-row.component.html',\n styleUrls: ['./simple-table-row.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimpleTableRowComponent {\n @Input()\n @HostBinding('class.selected')\n selected: boolean = false;\n}\n","<ng-content></ng-content>\n","import type { Params, QueryParamsHandling } from '@angular/router';\nimport Fuse, { IFuseOptions } from 'fuse.js';\nimport {\n defaultsDeep,\n difference,\n isEqual,\n orderBy,\n range,\n union,\n} from 'lodash';\nimport {\n Connectable,\n connectable,\n from,\n map,\n mergeScan,\n Observable,\n ReplaySubject,\n scan,\n Subject,\n} from 'rxjs';\nimport { DeepPartial } from 'utility-types';\n\nexport namespace RivTable {\n export type Row = { id: string | number };\n export type Column = string;\n export type Filters = any;\n export type Group = { key: string | number };\n\n /**\n * RivTable's state and user actions are divided into the following chunks:\n *\n * - Query (for things like filters, pagination, search, etc.)\n * - Loading (for whether or not the table is loading row data)\n * - Result (for the row data itself)\n * - Display (for things like column configuration)\n * - Selection (for tracking the user's row selections)\n *\n * Note that the data flow is unidirectional: the UI issues actions, which\n * affect the state, and the state gets passed back to the UI for display.\n *\n * ┌──────┐\n * │ UI ◄────────┐\n * └──┬───┘ │\n * │ │\n * ┌──▼────────┐ │\n * │ Actions │ │\n * └──┬────────┘ │\n * │ │\n * ┌──▼────────────┴─┐\n * │ State reducer │\n * └─────────────────┘\n *\n * From the core state, calculated state is derived and added to the core\n * state (e.g., from the raw selection state we can determine whether or not\n * all the rows on the currently displayed page are selected, etc.).\n */\n\n ///////////\n // Query //\n ///////////\n\n // Query state //\n\n export type OrderDirection = 'asc' | 'desc';\n export const pageSizes = [25, 50, 100, 250] as const;\n export type Query<C extends Column, F extends Filters> = {\n order: {\n direction: OrderDirection;\n column: C;\n } | null;\n search: string;\n searchColumns: Map<C, boolean>;\n filters: F | null;\n pagination: {\n page: number;\n pageSize: number;\n };\n grouping: {\n viewMoreKey: string | null;\n groupsPerPage: number;\n countPerGroup: number;\n };\n };\n\n // Query actions //\n\n export type QueryAction<C extends Column, F extends Filters> =\n | { type: 'load' }\n | { type: 'orderChange'; payload: Query<C, F>['order'] }\n | { type: 'orderColumnToggle'; column: C }\n | { type: 'searchChange'; payload: Query<C, F>['search'] }\n | { type: 'searchColumnsChange'; payload: Query<C, F>['searchColumns'] }\n | { type: 'filtersChange'; payload: Query<C, F>['filters'] }\n | { type: 'filterAdd'; columnKey: string }\n | { type: 'paginationChange'; payload: Query<C, F>['pagination'] }\n | { type: 'groupingChange'; payload: Query<C, F>['grouping'] }\n | { type: 'nextPageNavigate' }\n | { type: 'previousPageNavigate' }\n | { type: 'pageChange'; page: number }\n | { type: 'pageSizeChange'; size: number }\n | { type: 'groupsPerPageChange'; groupsPerPage: number }\n | { type: 'countPerGroupChange'; countPerGroup: number }\n | { type: 'viewMoreKeyChange'; viewMoreKey: string }\n | { type: 'toggleAllSearchColumns' };\n\n //////////\n // Load //\n //////////\n\n export type Load = {\n loading: boolean;\n error: unknown | null;\n };\n\n ////////////\n // Result //\n ////////////\n\n export type Result<R extends Row> = {\n /**\n * The full row data for the current page, after filters, search query, and\n * row ordering are applied.\n */\n currentPageData: R[];\n /**\n * The total number of rows (regardless of pagination) that match the\n * filters and search query.\n */\n totalMatchingRowCount: number;\n };\n\n export type SubGroupResult<R extends Row, G extends Group> = Result<R> & {\n /**\n * Any other relevant group data, used for the subheader\n */\n groupData: G;\n };\n\n export type GroupResult<R extends Row, G extends Group> = {\n /**\n * The full row data for the current page, after filters, search query, and\n * row ordering are applied, split into groups\n */\n groupResults: SubGroupResult<R, G>[];\n /**\n * The total number of groups (regardless of pagination) that match the\n * filters and search query.\n */\n totalGroupCount: number;\n /**\n * The total number of rows (regardless of pagination) that match the\n * filters and search query.\n */\n totalMatchingRowCount: number;\n };\n export type Source<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = (\n query: Query<C, F>,\n mostRecentAction: Action<R, C, F, G>,\n ) => Promise<Result<R> | GroupResult<R, G>>;\n\n /////////////\n // Display //\n /////////////\n\n // Display state //\n\n export type ColumnSettings<C extends Column> = {\n name: C;\n enabled: boolean;\n preferredWidth: number | 'auto';\n pinned: boolean;\n };\n export type Display<C extends Column> = {\n columnSettings: ColumnSettings<C>[];\n };\n\n // Display actions //\n\n export type DisplayAction<C extends Column> =\n | { type: 'columnSettingsChange'; payload: Display<C>['columnSettings'] }\n | {\n type: 'columnPinChange';\n column: C;\n pinned: boolean;\n }\n | {\n type: 'columnsFreezeUpToChange';\n index: number;\n freeze: boolean;\n }\n | {\n type: 'columnOrderChange';\n previousIndex: number;\n newIndex: number;\n }\n | {\n type: 'columnMoveToChange';\n column: C;\n position: 'start' | 'end';\n }\n | {\n type: 'columnEnabledChange';\n column: C;\n enabled: boolean;\n }\n | {\n type: 'enableAllColumnsChange';\n enabled: boolean;\n }\n | {\n type: 'columnWidthChange';\n column: C;\n preferredWidth: number | 'auto';\n }\n | {\n type: 'resetToDefaultColumns';\n };\n\n ///////////////\n // Selection //\n ///////////////\n\n // Selection state //\n\n export type Selection<R extends Row> = {\n mostRecentlySelected: R['id'] | null;\n } & (\n | {\n mode: 'include';\n included: Set<R['id']>;\n }\n | {\n mode: 'exclude';\n excluded: Set<R['id']>;\n }\n );\n\n // Selection actions //\n\n export type SelectionAction<R extends Row, G extends Group = { key: '' }> =\n | {\n type: 'selectionChange';\n payload: Selection<R>;\n }\n | {\n type: 'groupSelectionChange';\n payload: RowGroup<R, G>;\n }\n | {\n type: 'rowSelectedChange';\n id: R['id'];\n selected: boolean;\n contiguous: boolean;\n }\n | {\n type: 'pageSelectedChange';\n }\n | {\n type: 'allSelectedChange';\n }\n | {\n type: 'selectionClear';\n };\n\n /////////////////////////////\n // Putting it all together //\n /////////////////////////////\n\n // Combined state //\n\n export type CoreState<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = {\n query: Query<C, F>;\n load: Load;\n result: Result<R> | GroupResult<R, G>;\n display: Display<C>;\n selection: Selection<R>;\n };\n\n // Combined actions //\n\n export type Action<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = QueryAction<C, F> | DisplayAction<C> | SelectionAction<R, G>;\n\n // Full state (core state plus pure derivations) //\n\n export const ColumnDataTypes = [\n 'advanced',\n 'currency',\n 'date',\n 'icon',\n 'longText',\n 'number',\n 'shortText',\n ] as const;\n export type ColumnDataType = (typeof ColumnDataTypes)[number];\n export type ColumnAlignment = 'left' | 'center' | 'right';\n export type ColumnMetadata = {\n orderable: boolean;\n filterable?: boolean;\n searchable?: boolean;\n minWidth: number;\n dataType: ColumnDataType;\n description?: string;\n defaultPinned?: boolean;\n clickPreventDefault?: boolean;\n clickStopPropagation?: boolean;\n displayName?: string;\n };\n export type ExternalRowLink = {\n type: 'external';\n href: string;\n };\n export type InternalRowLink = {\n type: 'internal';\n routerLink: string | string[];\n queryParams?: Params;\n queryParamsHandling?: QueryParamsHandling;\n };\n export type RowLink = ExternalRowLink | InternalRowLink;\n export type FullRow<R extends Row> = R & {\n rowLink: RowLink | null;\n selected: boolean;\n };\n\n export type RowGroup<R extends Row, G extends Group> = {\n rows: FullRow<R>[];\n selected: MultiSelectionState;\n totalMatchingRowCount: number;\n groupData: G;\n };\n export type FullColumn<C extends Column> = ColumnSettings<C> &\n ColumnMetadata & {\n width: number;\n left: number | null;\n alignment: ColumnAlignment;\n };\n export type MultiSelectionState = boolean | 'indeterminate';\n export type SelectionConfiguration = boolean | 'individual';\n\n export type CsvCellFormatter<R extends Row, C extends Column> = (\n row: R,\n column: FullColumn<C>,\n ) => string | Promise<string>;\n export type CsvGroupCellFormatter<R extends Row, G extends Group> = (\n row: R,\n group: G,\n ) => string | Promise<string>;\n export type CsvRow = string[];\n export type Csv = CsvRow[];\n export type CsvMode = 'full' | 'selection';\n export type CsvOutput =\n | { loading: true; data: null }\n | { loading: false; data: Csv };\n\n export type ColumnNameMap<C extends Column> = Map<C, C | string>;\n\n export type SearchableColumnMap<C extends Column> = Map<C, boolean>;\n\n export type FullState<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = CoreState<R, C, F, G> & {\n query: {\n pagination: {\n previous: number | null;\n pages: number[];\n next: number | null;\n pageCount: number;\n showControls: boolean;\n pageRowStart: number;\n pageRowEnd: number;\n };\n noSearchColumnsSelected: boolean;\n };\n result:\n | {\n rows: FullRow<R>[];\n rowsAsGroup: RowGroup<R, G>;\n isGrouped: false;\n csvData: (mode?: CsvMode) => AsyncGenerator<CsvOutput>;\n csvFilename: string;\n }\n | {\n rows: FullRow<R>[];\n rowGroups: RowGroup<R, G>[];\n isGrouped: true;\n csvData: (mode?: CsvMode) => AsyncGenerator<CsvOutput>;\n csvFilename: string;\n };\n display: {\n columns: FullColumn<C>[];\n allColumns: ColumnSettings<C>[];\n searchableColumnMap: SearchableColumnMap<C>;\n columnNameMap: ColumnNameMap<C>;\n zeroStateMessage: string | null;\n columnsAreFreezable: boolean;\n columnsAreHideable: boolean;\n rowsAreGrayed: boolean;\n };\n selection: {\n allowSelection: SelectionConfiguration;\n isAllSelected: MultiSelectionState;\n isCurrentPageSelected: MultiSelectionState;\n selectedCount: number;\n };\n };\n\n /**\n * The manager is what sets up the initial state and translates user actions\n * (like pagination or filter changes, etc.) into new row data by calling the\n * reducer function. It also augments the core state with additional derived\n * state.\n */\n\n export type Manager<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = {\n actions: Subject<Action<R, C, F, G>>;\n state: Connectable<FullState<R, C, F, G>>;\n };\n\n export type ManagerOptions<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = {\n initialState?: DeepPartial<CoreState<R, C, F, G>>;\n rowLink?: (row: R, group?: G) => RowLink;\n csvCellFormatter?: CsvCellFormatter<R, C>;\n csvGroupCellFormatter?: CsvGroupCellFormatter<R, G>;\n csvFileBasename?: string;\n allowSelection?: SelectionConfiguration;\n columnsAreFreezable?: boolean;\n columnsAreHideable?: boolean;\n defaultColumnState?: ColumnSettings<C>[];\n rowsAreGrayed?: boolean;\n };\n\n export function createManager<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n >(\n source: Source<R, C, F, G>,\n columns: Map<C, ColumnMetadata>,\n pluralEntityName: string,\n options?: ManagerOptions<R, C, F, G>,\n ): Manager<R, C, F, G> {\n // Set up the initial table state.\n\n const searchableColumnMap: SearchableColumnMap<C> = new Map<C, boolean>(\n Array.from(columns.entries()).map(([key, metadata]) => [\n key,\n metadata.searchable ?? true,\n ]),\n );\n const defaultState: CoreState<R, C, F, G> = {\n query: {\n order: null,\n search: '',\n searchColumns: new Map(\n Array.from(columns.keys())\n .filter(key => searchableColumnMap.get(key))\n .map(key => [key, true]),\n ),\n pagination: {\n page: 0,\n pageSize: 25,\n },\n grouping: {\n viewMoreKey: null,\n groupsPerPage: 5,\n countPerGroup: 10,\n },\n filters: null,\n },\n load: { loading: false, error: null },\n result: {\n currentPageData: [],\n totalMatchingRowCount: 0,\n },\n display: {\n columnSettings: [],\n },\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n };\n const defaultedInitialState: CoreState<R, C, F, G> = defaultsDeep(\n {},\n options?.initialState,\n defaultState,\n );\n\n const columnNameMap: ColumnNameMap<C> = new Map<C, C | string>(\n Array.from(columns.entries()).map(([key, metadata]) => [\n key,\n metadata.displayName ?? key,\n ]),\n );\n\n const defaultColumnState =\n options?.defaultColumnState ??\n defaultedInitialState.display.columnSettings;\n\n // Wire up reduced state from actions and initial state.\n const actions: Subject<Action<R, C, F, G>> = new Subject();\n const coreState: Observable<CoreState<R, C, F, G>> = actions.pipe(\n mergeScan(\n (state, action) =>\n from(\n reduce(\n state,\n action,\n columns,\n source,\n columnNameMap,\n defaultColumnState,\n ),\n ),\n defaultedInitialState,\n 1,\n ),\n );\n\n // Augment state with derived state, and subscribe.\n const state: Connectable<FullState<R, C, F, G>> = connectable(\n coreState.pipe(\n map((s: CoreState<R, C, F, G>): FullState<R, C, F, G> => {\n const stateWithoutResult: Omit<\n FullState<R, C, F, G>,\n 'result' | 'isGrouped'\n > = {\n ...s,\n query: {\n ...s.query,\n pagination: {\n ...s.query.pagination,\n previous: getPreviousPage(s),\n pages: getPages(s),\n next: getNextPage(s),\n pageCount: getPageCount(s),\n showControls: getShowPaginationControls(s),\n pageRowStart: getPageRowStart(s),\n pageRowEnd: getPageRowEnd(s),\n },\n noSearchColumnsSelected: getSearchColumnsSelectedState(s, 'none'),\n },\n display: {\n ...s.display,\n columns: resolveColumns(\n s,\n columns,\n columnNameMap,\n !!options?.allowSelection,\n ),\n allColumns: getAllColumns(s, columns, columnNameMap),\n columnNameMap: columnNameMap,\n searchableColumnMap: searchableColumnMap,\n zeroStateMessage: getZeroStateMessage(s, pluralEntityName),\n columnsAreFreezable: !!options?.columnsAreFreezable,\n columnsAreHideable: !!options?.columnsAreHideable,\n rowsAreGrayed: !!options?.rowsAreGrayed,\n },\n selection: {\n ...s.selection,\n allowSelection: options?.allowSelection ?? false,\n isAllSelected: isAllSelected(s),\n isCurrentPageSelected: isCurrentPageSelected(s),\n selectedCount: selectedCount(s),\n },\n };\n const commonResultData: {\n csvData: (mode?: CsvMode) => AsyncGenerator<CsvOutput>;\n csvFilename: string;\n } = {\n csvData: async function* (mode = 'full') {\n const cellFormatter = options?.csvCellFormatter;\n const groupCellFormatter = options?.csvGroupCellFormatter;\n if (!cellFormatter)\n throw new Error(\n 'options.csvCellFormatter is required for CSV export',\n );\n yield { loading: true, data: null };\n const dataSet = await source(\n {\n ...s.query,\n pagination: {\n page: 0,\n pageSize: s.result.totalMatchingRowCount,\n },\n },\n { type: 'load' },\n );\n const fullColumns = resolveColumns(\n s,\n columns,\n columnNameMap,\n !!options.allowSelection,\n );\n const data: Csv = [];\n data.push(\n fullColumns.map(({ name }) => columnNameMap.get(name) ?? name),\n );\n\n if (isGroupResult(s.result) && groupCellFormatter) {\n data[0].push('');\n }\n for (const rowItem of getAllRowsFromResultForCsv(dataSet)) {\n const record = rowItem.row;\n if (mode === 'selection' && !isRowSelected(s, record.id))\n continue;\n const row: CsvRow = [];\n for (const column of fullColumns) {\n row.push(await cellFormatter(record, column));\n }\n //Only include group cell when formatter is provided\n if (groupCellFormatter && rowItem.group) {\n row.push(await groupCellFormatter(record, rowItem.group));\n }\n data.push(row);\n }\n yield { loading: false, data };\n },\n csvFilename:\n (options?.csvFileBasename?.slice(0, 200) ?? pluralEntityName) +\n '.csv',\n };\n\n if (isGroupResult(s.result)) {\n const rowGroups = s.result.groupResults.map(group => ({\n rows: group.currentPageData.map(row => ({\n ...row,\n rowLink: options?.rowLink\n ? options.rowLink(row, group.groupData)\n : null,\n selected: isRowSelected(s, row.id),\n })),\n selected: isGroupSelected(s, group),\n totalMatchingRowCount: group.totalMatchingRowCount,\n groupData: group.groupData,\n }));\n return {\n ...stateWithoutResult,\n result: {\n ...s.result,\n ...commonResultData,\n isGrouped: true,\n rowGroups,\n rows: rowGroups.flatMap(group => group.rows),\n },\n };\n } else {\n const rows = s.result.currentPageData.map(row => ({\n ...row,\n rowLink: options?.rowLink ? options.rowLink(row) : null,\n selected: isRowSelected(s, row.id),\n }));\n return {\n ...stateWithoutResult,\n result: {\n ...s.result,\n ...commonResultData,\n isGrouped: false,\n rows,\n rowsAsGroup: {\n rows,\n selected: false,\n totalMatchingRowCount: rows.length,\n groupData: { key: '' } as G,\n },\n },\n };\n }\n }),\n scan((stable, newState) => stableState(stable, newState)),\n ),\n {\n connector: () => new ReplaySubject(1),\n resetOnDisconnect: false,\n },\n );\n state.connect();\n\n // Load initial table row data.\n actions.next({ type: 'load' });\n\n return { actions, state };\n }\n\n /**\n * Most tables use remote backends to fetch data asynchronously, but an\n * in-memory source is useful for small datasets, when RivTable features like\n * ordering and pagination are desired.\n */\n\n export type InMemoryColumnMetadata<R extends Row> = Omit<\n ColumnMetadata,\n 'orderable'\n > & { orderKey?: keyof R };\n\n export type InMemoryManagerOptions<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = ManagerOptions<R, C, F, G> & {\n fuseOptions?: IFuseOptions<R>;\n filter?: (filters: F | null, row: R) => boolean;\n };\n\n export function createInMemoryManager<\n R extends Row,\n C extends Column,\n F extends Filters,\n >(\n fetchDataset: () => Promise<R[]> | R[],\n columns: Map<C, InMemoryColumnMetadata<R>>,\n pluralEntityName: string,\n options?: InMemoryManagerOptions<R, C, F>,\n ): Manager<R, C, F> {\n let data: R[];\n let fuse: Fuse<R>;\n\n const source: Source<R, C, F> = async (query, mostRecentAction) => {\n //For inMemoryManagers that do not utilize searchColumns,\n //we do not want to overwrite their fuseOptions\n if (mostRecentAction.type === 'load') {\n //Prevent searching on columns that are in fuse options but not supported by search.\n const nonSearchableColumnsKeys = options?.fuseOptions?.keys\n ? Array.from(columns.entries())\n .filter(([key, column]) => {\n return column.searchable == false;\n })\n .map(([key, column]) => {\n return column.orderKey?.toString() || key.toString();\n })\n : undefined;\n const fuseOptions =\n options?.fuseOptions && nonSearchableColumnsKeys\n ? {\n ...options?.fuseOptions,\n keys: options?.fuseOptions?.keys?.filter(\n k => !nonSearchableColumnsKeys.includes(k.toString()),\n ),\n }\n : options?.fuseOptions;\n data = await fetchDataset();\n fuse = new Fuse(data, fuseOptions);\n }\n if (\n mostRecentAction.type === 'searchColumnsChange' ||\n mostRecentAction.type === 'toggleAllSearchColumns'\n ) {\n data = await fetchDataset();\n fuse = new Fuse(data, {\n ...options?.fuseOptions,\n keys: Array.from(query.searchColumns.entries())\n .filter(([_, value]) => !!value)\n .map(([key, _]) => {\n const columnKey = columns.get(key);\n return (columnKey?.orderKey as C) || key;\n }),\n });\n }\n const orderColumn: keyof R | undefined = query.order\n ? columns.get(query.order.column)?.orderKey\n : undefined;\n const ordered = query.search\n ? fuse.search(query.search).map(result => result.item)\n : query.order && orderColumn\n ? orderBy(data, orderColumn, query.order.direction)\n : data;\n const filter = options?.filter;\n const filtered = filter\n ? ordered.filter(row => filter(query.filters, row))\n : ordered;\n const startIdx = query.pagination.pageSize * query.pagination.page;\n const endIdx = startIdx + query.pagination.pageSize;\n const paginated = filtered.slice(startIdx, endIdx);\n return {\n currentPageData: paginated,\n totalMatchingRowCount: filtered.length,\n };\n };\n const columnMetadata: Map<C, ColumnMetadata> = new Map(\n [...columns.entries()].map(([name, metadata]) => [\n name,\n {\n orderable: !!metadata.orderKey,\n filterable: metadata.filterable,\n searchable: metadata.searchable,\n description: metadata.description,\n minWidth: metadata.minWidth,\n dataType: metadata.dataType,\n defaultPinned: metadata.defaultPinned,\n clickPreventDefault: metadata.clickPreventDefault,\n clickStopPropagation: metadata.clickStopPropagation,\n displayName: metadata.displayName,\n },\n ]),\n );\n return createManager(source, columnMetadata, pluralEntityName, options);\n }\n\n ///////////////\n // Utilities //\n ///////////////\n\n export function getColumnAlignment(\n dataType: ColumnDataType,\n isFirst: boolean,\n ): ColumnAlignment {\n if (isFirst) return 'left';\n switch (dataType) {\n case 'date':\n case 'longText':\n return 'left';\n case 'advanced':\n case 'icon':\n case 'shortText':\n return 'center';\n case 'currency':\n case 'number':\n return 'right';\n }\n }\n}\n\n/**\n * This function keeps the state object references as stable as possible, which\n * helps Angular reduce unnecessary re-renders. For now, simple isEqual()\n * checks at the state's top-level keys are sufficient to dramatically speed up\n * rendering, but if other performance issues arise, we could implement more\n * granular checks/surgical updates as needed (the state.result being the most\n * likely candidate, since many types of state updates affect parts of the\n * result rows).\n */\nfunction stableState<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n target: RivTable.FullState<R, C, F, G>,\n source: RivTable.FullState<R, C, F, G>,\n): RivTable.FullState<R, C, F, G> {\n if (!isEqual(target.query, source.query)) {\n target.query = source.query;\n }\n if (!isEqual(target.load, source.load)) {\n target.load = source.load;\n }\n\n if (!isEqual(target.result.csvData, source.result.csvData)) {\n target.result.csvData = source.result.csvData;\n }\n if (!isEqual(target.result.csvFilename, source.result.csvFilename)) {\n target.result.csvFilename = source.result.csvFilename;\n }\n if (\n !isEqual(\n target.result.totalMatchingRowCount,\n source.result.totalMatchingRowCount,\n )\n ) {\n target.result.totalMatchingRowCount = source.result.totalMatchingRowCount;\n }\n if (!isEqual(target.result, source.result)) {\n target.result = source.result;\n }\n if (!isEqual(target.display, source.display)) {\n target.display = source.display;\n }\n if (!isEqual(target.selection, source.selection)) {\n target.selection = source.selection;\n }\n return target;\n}\n\nfunction getPageCount<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number {\n if (isGroupResult(state.result)) {\n return Math.max(\n Math.ceil(\n state.result.totalGroupCount / state.query.grouping.groupsPerPage,\n ),\n 1,\n );\n }\n return Math.max(\n Math.ceil(\n state.result.totalMatchingRowCount / state.query.pagination.pageSize,\n ),\n 1,\n );\n}\n\nfunction getPreviousPage<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number | null {\n return state.query.pagination.page === 0\n ? null\n : state.query.pagination.page - 1;\n}\n\nfunction getPages<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number[] {\n const padding = 4;\n const min = 0;\n const max = getPageCount(state) - 1;\n const desiredStart = state.query.pagination.page - padding;\n const clampedStart = Math.max(min, desiredStart);\n const desiredEnd = state.query.pagination.page + padding;\n const clampedEnd = Math.min(max, desiredEnd);\n const start = Math.max(min, clampedStart - (desiredEnd - clampedEnd));\n const end = Math.min(max, clampedEnd + (clampedStart - desiredStart));\n return range(start, end + 1);\n}\n\nfunction getNextPage<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number | null {\n const max = getPageCount(state) - 1;\n const next = state.query.pagination.page + 1;\n return next <= max ? next : null;\n}\n\n// We don't want to show the pagination controls when they are unnecessary.\nfunction getShowPaginationControls<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): boolean {\n if (isGroupResult(state.result)) {\n return state.result.totalGroupCount > state.query.grouping.groupsPerPage;\n }\n return (\n state.result.totalMatchingRowCount > Math.min(...[...RivTable.pageSizes])\n );\n}\n\nfunction getPageRowStart<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number {\n return state.query.pagination.page * state.query.pagination.pageSize + 1;\n}\n\nfunction getPageRowEnd<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number {\n return Math.min(\n (state.query.pagination.page + 1) * state.query.pagination.pageSize,\n state.result.totalMatchingRowCount,\n );\n}\n\nfunction getAllColumns<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n supportedColumns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n): RivTable.ColumnSettings<C>[] {\n // If the table offers more columns than the user has configuration settings\n // for (or if the user has no configuration settings yet), we'll append them\n // to the end (unless they should be pinned by default, in which case we'll\n // append them after the other pinned columns). This ensures that new columns\n // we add to existing tables over time (1) get displayed even though they\n // don't appear in the user's configuration settings yet, and (2) don't\n // interrupt their existing setup.\n const columnNamesWithoutUserSettings = difference(\n [...supportedColumns.keys()],\n state.display.columnSettings.map(({ name }) => name),\n );\n\n // Throw out settings for columns no longer offered by the table.\n const columnsWithUserSettings: RivTable.ColumnSettings<C>[] =\n state.display.columnSettings.filter(({ name }) =>\n supportedColumns.has(name),\n );\n\n const columnsWithoutUserSettings: RivTable.ColumnSettings<C>[] = [\n ...columnNamesWithoutUserSettings,\n ].map((name: C) => ({\n name,\n enabled: true,\n preferredWidth: 'auto',\n pinned: !!supportedColumns.get(name)?.defaultPinned,\n }));\n\n return orderIntentionally(\n [...columnsWithUserSettings, ...columnsWithoutUserSettings],\n columnNameMap,\n );\n}\n\nfunction orderIntentionally<C extends RivTable.Column>(\n columns: RivTable.ColumnSettings<C>[],\n columnNameMap: RivTable.ColumnNameMap<C>,\n): RivTable.ColumnSettings<C>[] {\n return [\n ...columns.filter(v => v.pinned),\n ...columns.filter(v => v.enabled && !v.pinned),\n ...columns\n .filter(v => !v.enabled && !v.pinned)\n .sort((a, b) => {\n const aName = columnNameMap.get(a.name) ?? a.name;\n const bName = columnNameMap.get(b.name) ?? b.name;\n return aName.localeCompare(bName);\n }),\n ];\n}\n\nfunction getAlignment(\n metadata: RivTable.ColumnMetadata,\n index: number,\n allowSelection?: boolean,\n): RivTable.ColumnAlignment {\n return RivTable.getColumnAlignment(\n metadata.dataType,\n index === 0 && !allowSelection,\n );\n}\n\nfunction resolveColumns<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n supportedColumns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n allowSelection: boolean | undefined,\n): RivTable.FullColumn<C>[] {\n const allColumns = getAllColumns(state, supportedColumns, columnNameMap);\n return allColumns\n .filter(({ enabled }) => enabled)\n .reduce(\n (\n fullColumns: RivTable.FullColumn<C>[],\n settings: RivTable.ColumnSettings<C>,\n i: number,\n ): RivTable.FullColumn<C>[] => {\n const metadata = supportedColumns.get(settings.name)!;\n const resolvedWidth =\n settings.preferredWidth === 'auto'\n ? metadata.minWidth\n : Math.max(metadata.minWidth, settings.preferredWidth);\n const previousColumn: RivTable.FullColumn<C> | undefined =\n fullColumns[i - 1];\n return [\n ...fullColumns,\n {\n ...settings,\n ...metadata,\n width: resolvedWidth,\n left: settings.pinned\n ? previousColumn\n ? (previousColumn.left || 0) + previousColumn.width\n : !!allowSelection\n ? 40\n : 0\n : null,\n alignment: getAlignment(metadata, i, !!allowSelection),\n },\n ];\n },\n [],\n );\n}\n\nfunction getZeroStateMessage<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>, entity: string): string | null {\n if (\n (isGroupResult(state.result) && state.result.totalGroupCount > 0) ||\n (!isGroupResult(state.result) && state.result.totalMatchingRowCount > 0)\n )\n return null;\n const allSearchColumnsSelected = getSearchColumnsSelectedState(state, 'all');\n if (state.query.search && allSearchColumnsSelected)\n return `No ${entity} match your current search keyword.`;\n if (state.query.search && !allSearchColumnsSelected)\n return `No ${entity} match your current search keyword in the selected search columns.`;\n if (state.query.filters) return `No ${entity} match your current filters.`;\n return `No ${entity}.`;\n}\n\nfunction changeColumnPin<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n column: C,\n pinned: boolean,\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: orderIntentionally(\n allColumns.map(c => ({\n ...c,\n pinned: c.name === column ? pinned : c.pinned,\n // Check/enable if being pinned\n enabled: c.name === column && pinned ? true : c.enabled,\n })),\n columnNameMap,\n ),\n },\n };\n}\n\nfunction changeColumnsFreezeState<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n index: number,\n freeze: boolean,\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: allColumns.map((c, i) => {\n return { ...c, pinned: freeze && i <= index };\n }),\n },\n };\n}\n\nfunction moveColumnTo<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n column: C,\n position: 'start' | 'end',\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n const previousIndex = allColumns.findIndex(c => c.name === column);\n const lastIndex =\n position == 'end' ? allColumns.findIndex(c => !c.enabled) : 0;\n const newIndex =\n position == 'start'\n ? 0\n : lastIndex == -1\n ? allColumns.length - 1\n : lastIndex;\n\n const movedState = changeColumnOrder(\n state,\n columns,\n columnNameMap,\n previousIndex,\n newIndex,\n );\n //Make sure the column is enabled\n return changeColumnEnabled(movedState, columns, columnNameMap, column, true);\n}\n\nfunction changeColumnOrder<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n previousIndex: number,\n newIndex: number,\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n\n // First, put the columns in the desired order.\n const item = allColumns[previousIndex];\n const withoutItem = allColumns.filter((_, i) => i !== previousIndex);\n const reordered = [\n ...withoutItem.slice(0, newIndex),\n item,\n ...withoutItem.slice(newIndex),\n ];\n\n // Then, we may need to fix the pins (all pinned columns appear at the\n // beginning of the columns array) since the user is allowed to drag\n // and drop columns to and from the pinned area. If the user drags a\n // column across that threshold, update its pinned status.\n const updated = reordered.map((settings, i, arr) => {\n if (newIndex === i) {\n return {\n ...settings,\n pinned: settings.pinned\n ? arr[i - 1]?.pinned ?? true\n : arr[i + 1]?.pinned ?? false,\n enabled: settings.enabled\n ? arr[i - 1]?.enabled ?? true\n : arr[i + 1]?.enabled ?? false,\n };\n } else return settings;\n });\n\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: orderIntentionally(updated, columnNameMap),\n },\n };\n}\n\nfunction changeColumnEnabled<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n column: C,\n enabled: boolean,\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: orderIntentionally(\n allColumns.map(c => ({\n ...c,\n enabled: c.name === column ? enabled : c.enabled,\n // Unpin if being unchecked\n pinned: c.name === column && !enabled ? false : c.pinned,\n })),\n columnNameMap,\n ),\n },\n };\n}\nfunction enableAllColumns<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n enabled: boolean,\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: orderIntentionally(\n allColumns.map(c => ({\n ...c,\n enabled: enabled,\n // Unpin if being unchecked\n pinned: !enabled ? false : c.pinned,\n })),\n columnNameMap,\n ),\n },\n };\n}\n\nfunction changeColumnWidth<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n column: C,\n preferredWidth: RivTable.ColumnSettings<C>['preferredWidth'],\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: allColumns.map(c => ({\n ...c,\n preferredWidth: c.name === column ? preferredWidth : c.preferredWidth,\n })),\n },\n };\n}\nfunction resetToDefaultColumns<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n defaultColumnState: RivTable.ColumnSettings<C>[],\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: orderIntentionally(defaultColumnState, columnNameMap),\n },\n };\n}\n\nfunction isRowSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>, id: R['id']): boolean {\n switch (state.selection.mode) {\n case 'include':\n return state.selection.included.has(id);\n case 'exclude':\n return !state.selection.excluded.has(id);\n }\n}\n\nfunction isGroupSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n group: RivTable.SubGroupResult<R, G>,\n): RivTable.MultiSelectionState {\n switch (state.selection.mode) {\n case 'include': {\n let allFound = true;\n let anyFound = false;\n for (const row of group.currentPageData) {\n if (!state.selection.included.has(row.id)) {\n allFound = false;\n } else {\n anyFound = true;\n }\n }\n return allFound ? true : anyFound ? 'indeterminate' : false;\n }\n case 'exclude': {\n let allFound = true;\n let anyFound = false;\n for (const row of group.currentPageData) {\n if (state.selection.excluded.has(row.id)) {\n allFound = false;\n } else {\n anyFound = true;\n }\n }\n return allFound ? true : anyFound ? 'indeterminate' : false;\n }\n }\n}\n\nfunction isAllSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.MultiSelectionState {\n // If there are no rows, \"all selected\" should be false\n if (state.result.totalMatchingRowCount === 0) {\n return false;\n }\n\n if (\n (state.selection.mode === 'exclude' &&\n state.selection.excluded.size === 0) ||\n (state.selection.mode === 'include' &&\n state.selection.included.size === state.result.totalMatchingRowCount)\n )\n return true;\n if (\n (state.selection.mode === 'exclude' &&\n state.selection.excluded.size === state.result.totalMatchingRowCount) ||\n (state.selection.mode === 'include' && state.selection.included.size === 0)\n )\n return false;\n return 'indeterminate';\n}\n\nfunction isCurrentPageSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.MultiSelectionState {\n const selectedStates = getAllRowsFromResult(state.result).map(({ id }) =>\n isRowSelected(state, id),\n );\n if (selectedStates.length > 0) {\n if (selectedStates.every(v => v)) return true;\n if (selectedStates.some(v => v)) return 'indeterminate';\n }\n return false;\n}\n\nfunction selectedCount<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number {\n switch (state.selection.mode) {\n case 'include':\n return state.selection.included.size;\n case 'exclude':\n return state.result.totalMatchingRowCount - state.selection.excluded.size;\n }\n}\n\nasync function* refreshResultWith<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n source: RivTable.Source<R, C, F, G>,\n mostRecentAction: RivTable.Action<R, C, F, G>,\n): AsyncGenerator<RivTable.CoreState<R, C, F, G>> {\n yield {\n ...state,\n load: {\n loading: true,\n error: null,\n },\n };\n try {\n const result = await source(state.query, mostRecentAction);\n yield {\n ...state,\n load: {\n loading: false,\n error: null,\n },\n result,\n };\n } catch (error) {\n console.error(error);\n yield {\n ...state,\n load: {\n loading: false,\n error,\n },\n };\n }\n}\n\nfunction setRowSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n id: R['id'],\n selected: boolean,\n contiguous: boolean,\n): RivTable.CoreState<R, C, F, G> {\n if (selected) {\n const newSelection = new Set<R['id']>([id]);\n if (contiguous && state.selection.mostRecentlySelected) {\n const startIdx = getAllRowsFromResult(state.result).findIndex(\n row => row.id === state.selection.mostRecentlySelected,\n );\n const endIdx = getAllRowsFromResult(state.result).findIndex(\n row => row.id === id,\n );\n if (typeof startIdx === 'number' && typeof endIdx === 'number') {\n for (\n let i = Math.min(startIdx, endIdx);\n i <= Math.max(startIdx, endIdx);\n i++\n ) {\n newSelection.add(getAllRowsFromResult(state.result)[i].id);\n }\n }\n }\n return {\n ...state,\n selection: {\n mostRecentlySelected: id,\n ...(state.selection.mode === 'include'\n ? {\n mode: 'include',\n included: new Set(\n union([...state.selection.included], [...newSelection]),\n ),\n }\n : {\n mode: 'exclude',\n excluded: new Set(\n difference([...state.selection.excluded], [...newSelection]),\n ),\n }),\n },\n };\n } else {\n return {\n ...state,\n selection: {\n mostRecentlySelected: null,\n ...(state.selection.mode === 'include'\n ? {\n mode: 'include',\n included: new Set(\n difference([...state.selection.included], [id]),\n ),\n }\n : {\n mode: 'exclude',\n excluded: new Set(union([...state.selection.excluded], [id])),\n }),\n },\n };\n }\n}\n\nfunction toggleGroupSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n group: RivTable.RowGroup<R, G>,\n): RivTable.CoreState<R, C, F, G> {\n const isGroupFullySelected =\n isGroupSelected(state, { ...group, currentPageData: group.rows }) === true;\n return group.rows.reduce((accumulatedState, row) => {\n return setRowSelected(\n accumulatedState,\n row.id,\n !isGroupFullySelected,\n false,\n );\n }, state);\n}\n\nfunction togglePageSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.CoreState<R, C, F, G> {\n const isPageFullySelected = getAllRowsFromResult(state.result).every(\n ({ id }) => isRowSelected(state, id),\n );\n return getAllRowsFromResult(state.result).reduce((accumulatedState, row) => {\n return setRowSelected(\n accumulatedState,\n row.id,\n !isPageFullySelected,\n false,\n );\n }, state);\n}\n\nfunction toggleAllSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.CoreState<R, C, F, G> {\n if (isAllSelected(state) === true) {\n return {\n ...state,\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n };\n } else {\n return {\n ...state,\n selection: {\n mostRecentlySelected: null,\n mode: 'exclude',\n excluded: new Set(),\n },\n };\n }\n}\n\nfunction clearSelection<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.CoreState<R, C, F, G> {\n return {\n ...state,\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n };\n}\n\nfunction toggleColumnOrder<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n column: C,\n): RivTable.CoreState<R, C, F, G> {\n if (state.query.order?.column === column) {\n return {\n ...state,\n query: {\n ...state.query,\n order:\n state.query.order.direction === 'asc'\n ? {\n column,\n direction: 'desc',\n }\n : null,\n },\n };\n }\n return {\n ...state,\n query: {\n ...state.query,\n order: {\n column,\n direction: 'asc',\n },\n },\n };\n}\n\nfunction getSearchColumnsSelectedState<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n expectedValue: 'all' | 'none',\n): boolean {\n switch (expectedValue) {\n case 'all':\n return Array.from(state.query.searchColumns.values()).every(\n value => value,\n );\n\n case 'none':\n return Array.from(state.query.searchColumns.values()).every(\n value => !value,\n );\n }\n}\n\nfunction toggleAllSearchColumns<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.CoreState<R, C, F, G> {\n const noneSelected = getSearchColumnsSelectedState(state, 'none');\n const payload = new Map(\n Array.from(state.query.searchColumns.keys()).map(key => [\n key,\n noneSelected,\n ]),\n );\n return {\n ...state,\n query: {\n ...state.query,\n searchColumns: payload,\n },\n };\n}\n\nasync function* reduce<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n action: RivTable.Action<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n source: RivTable.Source<R, C, F, G>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n defaultColumnState: RivTable.ColumnSettings<C>[],\n): AsyncGenerator<RivTable.CoreState<R, C, F, G>> {\n switch (action.type) {\n case 'load':\n yield* refreshResultWith(state, source, action);\n break;\n case 'orderChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n order: action.payload,\n },\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n },\n source,\n action,\n );\n break;\n case 'orderColumnToggle':\n yield* refreshResultWith(\n toggleColumnOrder(state, action.column),\n source,\n action,\n );\n break;\n case 'searchChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n search: action.payload,\n pagination: {\n ...state.query.pagination,\n page: 0,\n },\n },\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n },\n source,\n action,\n );\n break;\n case 'searchColumnsChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n searchColumns: new Map([\n ...state.query.searchColumns,\n ...action.payload,\n ]),\n pagination: {\n ...state.query.pagination,\n page: 0,\n },\n },\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n },\n source,\n action,\n );\n break;\n case 'paginationChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n pagination: action.payload,\n },\n },\n source,\n action,\n );\n break;\n case 'groupingChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n grouping: action.payload,\n },\n },\n source,\n action,\n );\n break;\n case 'previousPageNavigate':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n pagination: {\n ...state.query.pagination,\n page: getPreviousPage(state) ?? 0,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'nextPageNavigate':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n pagination: {\n ...state.query.pagination,\n page: getNextPage(state) ?? getPageCount(state) - 1,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'pageChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n pagination: {\n ...state.query.pagination,\n page: action.page,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'pageSizeChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n pagination: {\n ...state.query.pagination,\n pageSize: action.size,\n page: 0,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'filtersChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n filters: action.payload,\n pagination: {\n ...state.query.pagination,\n page: 0,\n },\n },\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n },\n source,\n action,\n );\n break;\n case 'filterAdd':\n // Parent component is responsible for subscribing and adding the filter\n yield { ...state };\n break;\n case 'columnSettingsChange':\n yield {\n ...state,\n display: {\n ...state.display,\n columnSettings: action.payload,\n },\n };\n break;\n case 'columnPinChange':\n yield changeColumnPin(\n state,\n columns,\n columnNameMap,\n action.column,\n action.pinned,\n );\n break;\n case 'columnsFreezeUpToChange':\n yield changeColumnsFreezeState(\n state,\n columns,\n columnNameMap,\n action.index,\n action.freeze,\n );\n break;\n case 'columnOrderChange':\n yield changeColumnOrder(\n state,\n columns,\n columnNameMap,\n action.previousIndex,\n action.newIndex,\n );\n break;\n case 'columnMoveToChange':\n yield moveColumnTo(\n state,\n columns,\n columnNameMap,\n action.column,\n action.position,\n );\n break;\n case 'columnEnabledChange':\n yield changeColumnEnabled(\n state,\n columns,\n columnNameMap,\n action.column,\n action.enabled,\n );\n break;\n case 'enableAllColumnsChange':\n yield enableAllColumns(state, columns, columnNameMap, action.enabled);\n break;\n case 'columnWidthChange':\n yield changeColumnWidth(\n state,\n columns,\n columnNameMap,\n action.column,\n action.preferredWidth,\n );\n break;\n case 'resetToDefaultColumns':\n yield resetToDefaultColumns(\n state,\n columns,\n columnNameMap,\n defaultColumnState,\n );\n break;\n case 'selectionChange':\n yield {\n ...state,\n selection: action.payload,\n };\n break;\n case 'rowSelectedChange':\n yield setRowSelected(\n state,\n action.id,\n action.selected,\n action.contiguous,\n );\n break;\n case 'pageSelectedChange':\n yield togglePageSelected(state);\n break;\n case 'allSelectedChange':\n yield toggleAllSelected(state);\n break;\n case 'selectionClear':\n yield clearSelection(state);\n break;\n case 'groupSelectionChange':\n yield toggleGroupSelected(state, action.payload);\n break;\n case 'groupsPerPageChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n grouping: {\n ...state.query.grouping,\n groupsPerPage: action.groupsPerPage,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'countPerGroupChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n grouping: {\n ...state.query.grouping,\n countPerGroup: action.countPerGroup,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'viewMoreKeyChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n grouping: {\n ...state.query.grouping,\n viewMoreKey: action.viewMoreKey,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'toggleAllSearchColumns':\n yield* refreshResultWith(toggleAllSearchColumns(state), source, action);\n break;\n }\n}\n\nfunction isGroupResult(\n result: RivTable.Result<any> | RivTable.GroupResult<any, any>,\n): result is RivTable.GroupResult<any, any> {\n if ('totalGroupCount' in result) {\n return true;\n }\n return false;\n}\n\nfunction getAllRowsFromResult(\n result: RivTable.Result<any> | RivTable.GroupResult<any, any>,\n) {\n if (isGroupResult(result)) {\n return result.groupResults.flatMap(groups => groups.currentPageData);\n } else {\n return result.currentPageData;\n }\n}\n\nfunction getAllRowsFromResultForCsv(\n result: RivTable.Result<any> | RivTable.GroupResult<any, any>,\n) {\n if (isGroupResult(result)) {\n return result.groupResults.flatMap(groups =>\n groups.currentPageData.map(row => ({\n row: row,\n group: groups.groupData,\n })),\n );\n } else {\n return result.currentPageData.map(row => ({\n row: row,\n group: null,\n }));\n }\n}\n","export type Cell = {\n rowspan: number;\n colspan: number;\n};\n\nexport type Coordinate = {\n row: number;\n col: number;\n};\n\nexport type Bounds = {\n start: Coordinate;\n end: Coordinate;\n};\n\nexport function createCellCoordinateCalculator(\n cells: Cell[],\n totalColumns: number,\n): (cellIndex: number) => Bounds {\n // Pre-calculate coordinates for all cells\n const cellCoordinates: Bounds[] = [];\n const grid: boolean[][] = [];\n let currentRow = 0;\n let currentCol = 0;\n\n // Process each cell and store its coordinates\n for (let i = 0; i < cells.length; i++) {\n const { rowspan, colspan } = cells[i];\n\n // Find the next available position\n while (true) {\n // Ensure we have enough rows in our grid\n while (grid.length <= currentRow) {\n grid.push(new Array(totalColumns).fill(false));\n }\n\n // Check if current position is available\n if (!grid[currentRow][currentCol]) {\n break;\n }\n\n // Move to next column\n currentCol++;\n if (currentCol >= totalColumns) {\n currentCol = 0;\n currentRow++;\n }\n }\n\n // Store coordinates for this cell\n const startCoord: Coordinate = { row: currentRow, col: currentCol };\n const endCoord: Coordinate = {\n row: currentRow + rowspan - 1,\n col: currentCol + colspan - 1,\n };\n\n cellCoordinates[i] = { start: startCoord, end: endCoord };\n\n // Mark the positions this cell occupies as taken\n for (let r = currentRow; r < currentRow + rowspan; r++) {\n // Ensure we have enough rows\n while (grid.length <= r) {\n grid.push(new Array(totalColumns).fill(false));\n }\n\n for (let c = currentCol; c < currentCol + colspan; c++) {\n if (c < totalColumns) {\n grid[r][c] = true;\n }\n }\n }\n\n // Move to next position for the next cell\n currentCol++;\n if (currentCol >= totalColumns) {\n currentCol = 0;\n currentRow++;\n }\n }\n\n // Return the lookup function\n return function getCellCoordinates(cellIndex: number): Bounds {\n if (cellIndex < 0 || cellIndex >= cells.length) {\n throw new Error('Cell index out of bounds');\n }\n\n return cellCoordinates[cellIndex];\n };\n}\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n QueryList,\n TemplateRef,\n} from '@angular/core';\nimport { RivTable } from '../table/state';\nimport { createCellCoordinateCalculator } from './coordinate-helper';\nimport { SimpleTableCellComponent } from './simple-table-cell.component';\nimport { SimpleTableHeaderCellComponent } from './simple-table-header-cell.component';\n\n@Component({\n selector: 'riv-simple-table',\n templateUrl: './simple-table.component.html',\n styleUrls: ['./simple-table.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimpleTableComponent implements AfterContentChecked {\n @ContentChild('header')\n headerTemplate?: TemplateRef<void>;\n\n @ContentChildren(SimpleTableHeaderCellComponent, { descendants: true })\n private headerCells?: QueryList<SimpleTableHeaderCellComponent>;\n\n @ContentChildren(SimpleTableCellComponent, { descendants: true })\n private dataCells?: QueryList<SimpleTableCellComponent>;\n\n ngAfterContentChecked() {\n this.setCellProperties();\n }\n\n private setCellProperties() {\n const { headerCells, dataCells } = this;\n if (!headerCells || !dataCells) return;\n\n headerCells.forEach((headerCell, i) => {\n const { dataType } = headerCell;\n if (!dataType) {\n const allowedTypes = RivTable.ColumnDataTypes.join(', ');\n throw new Error(\n `Each header cell must define an appropriate dataType, one of ${allowedTypes}`,\n );\n }\n\n headerCell.alignment = RivTable.getColumnAlignment(dataType, i === 0);\n headerCell.cdr.markForCheck();\n });\n\n const getCellCoordinates = createCellCoordinateCalculator(\n dataCells.map(dataCell => {\n const element = dataCell.elementRef.nativeElement;\n return {\n rowspan: parseInt(element.getAttribute('rowspan') || '1', 10),\n colspan: parseInt(element.getAttribute('colspan') || '1', 10),\n };\n }),\n headerCells.length,\n );\n\n const maxRow = Math.max(\n ...dataCells.map((_, i) => getCellCoordinates(i).end.row),\n );\n\n dataCells.forEach((dataCell, cellIndex) => {\n const bounds = getCellCoordinates(cellIndex);\n\n const headerCell = headerCells.get(bounds.start.col);\n if (headerCell) {\n dataCell.alignment = headerCell.alignment;\n dataCell.pinned = headerCell.pinned;\n }\n\n dataCell.isLastRow = bounds.end.row === maxRow;\n\n dataCell.cdr.markForCheck();\n });\n }\n}\n","<header *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n</header>\n<div class=\"container\">\n <table>\n <ng-content></ng-content>\n </table>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport Fuse from 'fuse.js';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { HighlightComponent } from '../../../visualization/highlight/highlight.component';\nimport { RivTable } from '../state';\nimport { RivSelect } from '../../../input/select/state';\n\ntype ColumnList<C extends RivTable.Column> = (RivTable.ColumnSettings<C> & {\n resolvedName: C | string;\n highlightIndices: HighlightComponent.HighlightIndices[];\n stateIndex: number;\n isLastPinnedColumn: boolean;\n})[];\n\ntype ColumnGroups<C extends RivTable.Column> = {\n enabledColumns: ColumnList<C>;\n disabledColumns: ColumnList<C>;\n};\n\n@Component({\n selector: 'riv-table-column-settings-side-sheet',\n templateUrl: './table-column-settings-side-sheet.component.html',\n styleUrls: ['./table-column-settings-side-sheet.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableColumnSettingsSideSheetComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n> implements OnInit\n{\n @Input()\n manager?: RivTable.Manager<R, C, F>;\n\n @ViewChild('trigger', { read: ElementRef })\n anchor?: ElementRef;\n\n readonly open = new BehaviorSubject(false);\n\n readonly filterQuery = new BehaviorSubject('');\n\n readonly searching = this.filterQuery.pipe(map(query => !!query));\n\n columnList?: Observable<ColumnGroups<C>>;\n\n ngOnInit() {\n this.columnList = combineLatest([\n this.manager!.state.pipe(\n map(s => {\n const columnsLength = s.display.allColumns.length;\n const allColumns = s.display.allColumns.map((column, i) => {\n const nextColumnPinned =\n i + 2 <= columnsLength\n ? s.display.allColumns[i + 1].pinned\n : false;\n\n return {\n ...column,\n resolvedName:\n s.display.columnNameMap.get(column.name) ?? column.name,\n stateIndex: i,\n isLastPinnedColumn: column.pinned && !nextColumnPinned,\n };\n });\n const fuse = new Fuse(allColumns, {\n keys: ['resolvedName'],\n ignoreLocation: true,\n threshold: 0,\n includeMatches: true,\n });\n return { fuse, allColumns };\n }),\n ),\n this.filterQuery,\n ]).pipe(\n map(([{ fuse, allColumns }, filterQuery]) => {\n if (filterQuery) {\n const matches = fuse.search(filterQuery).map(match => {\n const firstmatch = match.matches?.find(\n result => result.key === 'resolvedName',\n );\n return {\n ...match.item,\n highlightIndices: [\n ...(firstmatch?.indices || []).filter(\n RivSelect.isFuseMatchExact(firstmatch!, filterQuery),\n ),\n ],\n };\n });\n const enabledColumns = matches.filter(column => column.enabled);\n const disabledColumns = matches.filter(column => !column.enabled);\n\n return {\n enabledColumns,\n disabledColumns,\n };\n }\n\n const allVisableColumns = allColumns.map(column => ({\n ...column,\n highlightIndices: [],\n }));\n\n const enabledColumns = allVisableColumns.filter(\n column => column.enabled,\n );\n const disabledColumns = allVisableColumns.filter(\n column => !column.enabled,\n );\n\n return {\n enabledColumns: enabledColumns,\n disabledColumns: disabledColumns,\n };\n }),\n );\n }\n\n columnEnabledChange(column: RivTable.ColumnSettings<C>, enabled: boolean) {\n this.manager?.actions.next({\n type: 'columnEnabledChange',\n column: column.name,\n enabled,\n });\n }\n\n columnPinChange(column: RivTable.ColumnSettings<C>, pinned: boolean) {\n this.manager?.actions.next({\n type: 'columnPinChange',\n column: column.name,\n pinned,\n });\n }\n resetToDefault() {\n this.manager?.actions.next({\n type: 'resetToDefaultColumns',\n });\n }\n\n columnMoveTo(column: RivTable.ColumnSettings<C>, position: 'start' | 'end') {\n this.manager?.actions.next({\n type: 'columnMoveToChange',\n position,\n column: column.name,\n });\n }\n\n columnFreezeUpTo(freeze: boolean, index: number) {\n this.manager?.actions.next({\n type: 'columnsFreezeUpToChange',\n freeze,\n index,\n });\n }\n\n allColumnsDisabled(columns: ColumnGroups<C>): boolean {\n return (\n columns.disabledColumns.length == 0 && columns.enabledColumns.length > 0\n );\n }\n\n allColumnsEnabled(columns: ColumnGroups<C>): boolean {\n return (\n columns.enabledColumns.length == 0 && columns.disabledColumns.length > 0\n );\n }\n\n enableAllColumns(enabled: boolean) {\n this.manager?.actions.next({\n type: 'enableAllColumnsChange',\n enabled,\n });\n }\n\n draggedColumnIdx: number | null = null;\n draggedColumnName: C | null = null;\n draggedOverColumnIdx: number | null = null;\n\n dragStart(idx: number, name: C) {\n this.draggedColumnIdx = idx;\n this.draggedColumnName = name;\n }\n\n dragOver(ontoIdx: number) {\n this.draggedOverColumnIdx = ontoIdx;\n }\n\n drop(ontoIdx: number, stateIndex: number) {\n if (this.draggedColumnIdx !== null) {\n this.manager?.actions.next({\n type: 'columnOrderChange',\n previousIndex: this.draggedColumnIdx,\n newIndex: stateIndex,\n });\n this.draggedOverColumnIdx = null;\n this.draggedColumnName = null;\n }\n }\n\n dropEnabledState(enabled: boolean) {\n if (this.draggedColumnName !== null) {\n this.manager?.actions.next({\n type: 'columnEnabledChange',\n column: this.draggedColumnName,\n enabled: enabled,\n });\n\n this.draggedOverColumnIdx = null;\n this.draggedColumnName = null;\n }\n }\n\n disabledColumnsWithOffset(index: number) {\n return index;\n }\n}\n","<button #trigger rivButton (click)=\"open.next(true)\">Columns</button>\n\n<ng-container *ngIf=\"columnList | async; let columns\">\n <ng-container *ngIf=\"open | async\">\n <riv-side-sheet (close)=\"open.next(false); filterQuery.next('')\">\n <div class=\"content\">\n <div class=\"title\">\n <span>Columns</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"open.next(false); filterQuery.next('')\"\n ></button>\n </div>\n <riv-search\n [name]=\"'column-search'\"\n [value]=\"(filterQuery | async) || ''\"\n (valueChange)=\"filterQuery.next($event)\"\n ></riv-search>\n <div class=\"columns\">\n <div *ngIf=\"columns.enabledColumns.length > 0\">\n <div\n class=\"column-header\"\n (drop)=\"dropEnabledState(true)\"\n (dragover)=\"$event.preventDefault(); dragOver(-1)\"\n >\n <span class=\"column-header-label\">Shown in table</span>\n <button\n *ngIf=\"!(searching | async)\"\n rivButton\n [variant]=\"'ghost'\"\n [disabled]=\"allColumnsEnabled(columns)\"\n (click)=\"enableAllColumns(false)\"\n >\n Hide all\n </button>\n </div>\n\n <div class=\"options\">\n <ng-container\n *ngFor=\"let column of columns.enabledColumns; let i = index\"\n >\n <div\n class=\"option\"\n [attr.draggable]=\"!(searching | async)\"\n [attr.droppable]=\"!(searching | async)\"\n (dragstart)=\"dragStart(column.stateIndex, column.name)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i, column.stateIndex)\"\n [class.dragged-over-top]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx < i\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"columnTemplate; context: { column }\"\n ></ng-container>\n <div\n *ngIf=\"column.isLastPinnedColumn && !(searching | async)\"\n class=\"column scroll-padding\"\n >\n <div class=\"frozen\">\n <span class=\"pinned\">\n <riv-icon [name]=\"'PinInactive'\" [size]=\"20\"></riv-icon>\n </span>\n <span>Frozen through here</span>\n </div>\n\n <button\n class=\"hidden\"\n rivButton\n [rivTooltip]=\"'Un-freeze columns'\"\n [class.disabled]=\"!column.enabled\"\n [variant]=\"'ghost'\"\n [size]=\"'small'\"\n [icon]=\"'X'\"\n (click)=\"columnFreezeUpTo(false, column.stateIndex)\"\n ></button>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n <div\n *ngIf=\"columns.enabledColumns.length == 0 && !(searching | async)\"\n class=\"column-header\"\n (drop)=\"dropEnabledState(true)\"\n (dragover)=\"$event.preventDefault(); dragOver(-1)\"\n >\n <span>No columns shown</span>\n <button rivButton [variant]=\"'ghost'\" (click)=\"resetToDefault()\">\n Reset to default\n </button>\n </div>\n <div\n class=\"divider\"\n *ngIf=\"\n columns.disabledColumns.length > 0 &&\n (!(searching | async) ||\n ((searching | async) && columns.enabledColumns.length > 0))\n \"\n ></div>\n <div\n *ngIf=\"columns.disabledColumns.length > 0\"\n (drop)=\"dropEnabledState(false)\"\n (dragover)=\"$event.preventDefault(); dragOver(-1)\"\n >\n <div class=\"column-header\">\n <span class=\"column-header-label\">Hidden from table</span>\n\n <button\n *ngIf=\"!(searching | async)\"\n rivButton\n [variant]=\"'ghost'\"\n [disabled]=\"allColumnsDisabled(columns)\"\n (click)=\"enableAllColumns(true)\"\n >\n Show all\n </button>\n </div>\n\n <div class=\"options\">\n <div\n *ngFor=\"let column of columns.disabledColumns; let i = index\"\n [attr.draggable]=\"!(searching | async)\"\n [attr.droppable]=\"!(searching | async)\"\n (dragstart)=\"dragStart(column.stateIndex, column.name)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"\n $event.preventDefault();\n dragOver(i + columns.enabledColumns.length)\n \"\n (drop)=\"\n drop(i + columns.enabledColumns.length, column.stateIndex)\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"columnTemplate; context: { column }\"\n ></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </riv-side-sheet>\n </ng-container>\n</ng-container>\n\n<ng-template #columnTemplate let-column=\"column\">\n <div class=\"column scroll-padding\">\n <div class=\"column\">\n <span class=\"reorder\" *ngIf=\"!(searching | async)\">\n <riv-icon [name]=\"'Reorder'\" [size]=\"20\"></riv-icon>\n </span>\n <riv-highlight\n [text]=\"column.resolvedName\"\n [indices]=\"column.highlightIndices\"\n ></riv-highlight>\n </div>\n <div>\n <riv-menu class=\"hidden\">\n <button\n *ngIf=\"column.enabled && !column.pinned\"\n riv-menu-item\n (click)=\"columnFreezeUpTo(true, column.stateIndex)\"\n >\n Freeze up to column\n </button>\n <button\n *ngIf=\"column.enabled && column.pinned\"\n riv-menu-item\n (click)=\"columnFreezeUpTo(false, 0)\"\n >\n Un-freeze columns\n </button>\n <button riv-menu-item (click)=\"columnMoveTo(column, 'start')\">\n Move to start\n </button>\n <button riv-menu-item (click)=\"columnMoveTo(column, 'end')\">\n Move to end\n </button>\n <button\n riv-menu-item\n (click)=\"columnEnabledChange(column, !column.enabled)\"\n >\n {{ column.enabled ? 'Hide column' : 'Show column' }}\n </button>\n </riv-menu>\n <button\n rivButton\n [rivTooltip]=\"column.enabled ? 'Hide column' : 'Show column'\"\n [class.disabled]=\"!column.enabled\"\n [variant]=\"'ghost'\"\n [size]=\"'small'\"\n [icon]=\"column.enabled ? 'Eye' : 'EyeOff'\"\n (click)=\"columnEnabledChange(column, !column.enabled)\"\n ></button>\n </div>\n </div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport Fuse from 'fuse.js';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { HighlightComponent } from '../../../visualization/highlight/highlight.component';\nimport { RivTable } from '../state';\n\ntype ColumnList<C extends RivTable.Column> = (RivTable.ColumnSettings<C> & {\n resolvedName: C | string;\n highlightIndices: HighlightComponent.HighlightIndices[];\n})[];\n\n@Component({\n selector: 'riv-table-column-settings',\n templateUrl: './table-column-settings.component.html',\n styleUrls: ['./table-column-settings.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableColumnSettingsComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n> implements OnInit\n{\n @Input()\n manager?: RivTable.Manager<R, C, F>;\n\n @ViewChild('trigger', { read: ElementRef })\n anchor?: ElementRef;\n\n readonly open = new BehaviorSubject(false);\n\n readonly filterQuery = new BehaviorSubject('');\n\n readonly searching = this.filterQuery.pipe(map(query => !!query));\n\n columnList?: Observable<ColumnList<C>>;\n\n ngOnInit() {\n this.columnList = combineLatest([\n this.manager!.state.pipe(\n map(s => {\n const allColumns = s.display.allColumns.map(column => ({\n ...column,\n resolvedName:\n s.display.columnNameMap.get(column.name) ?? column.name,\n }));\n const fuse = new Fuse(allColumns, {\n keys: ['resolvedName'],\n includeMatches: true,\n threshold: 0.4,\n });\n return { fuse, allColumns };\n }),\n ),\n this.filterQuery,\n ]).pipe(\n map(([{ fuse, allColumns }, filterQuery]) => {\n if (filterQuery) {\n const matches = fuse.search(filterQuery);\n return matches.map(match => ({\n ...match.item,\n highlightIndices: [\n ...(match.matches?.find(result => result.key === 'resolvedName')\n ?.indices || []),\n ],\n }));\n }\n return allColumns.map(column => ({\n ...column,\n highlightIndices: [],\n }));\n }),\n );\n }\n\n columnEnabledChange(column: RivTable.ColumnSettings<C>, enabled: boolean) {\n this.manager?.actions.next({\n type: 'columnEnabledChange',\n column: column.name,\n enabled,\n });\n }\n\n columnPinChange(column: RivTable.ColumnSettings<C>, pinned: boolean) {\n this.manager?.actions.next({\n type: 'columnPinChange',\n column: column.name,\n pinned,\n });\n }\n\n allColumnsDisabled(columns: ColumnList<C>): boolean {\n return columns.every(c => !c.enabled);\n }\n\n disableAllColumns(columns: ColumnList<C>) {\n for (const column of columns) {\n this.manager?.actions.next({\n type: 'columnEnabledChange',\n column: column.name,\n enabled: false,\n });\n }\n }\n\n allColumnsEnabled(columns: ColumnList<C>): boolean {\n return columns.every(c => c.enabled);\n }\n\n enableAllColumns(columns: ColumnList<C>) {\n for (const column of columns) {\n this.manager?.actions.next({\n type: 'columnEnabledChange',\n column: column.name,\n enabled: true,\n });\n }\n }\n\n draggedColumnIdx: number | null = null;\n draggedOverColumnIdx: number | null = null;\n\n dragStart(idx: number) {\n this.draggedColumnIdx = idx;\n }\n\n dragOver(ontoIdx: number) {\n this.draggedOverColumnIdx = ontoIdx;\n }\n\n drop(ontoIdx: number) {\n if (this.draggedColumnIdx !== null) {\n this.manager?.actions.next({\n type: 'columnOrderChange',\n previousIndex: this.draggedColumnIdx,\n newIndex: ontoIdx,\n });\n this.draggedOverColumnIdx = null;\n }\n }\n}\n","<button\n #trigger\n rivButton\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n (click)=\"open.next(true)\"\n>\n Columns\n</button>\n\n<ng-container *ngIf=\"columnList | async; let columns\">\n <ng-container *ngIf=\"open | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"anchor?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-right'\"\n [allowedPositions]=\"[\n 'bottom-right',\n 'bottom-left',\n 'top-left',\n 'top-right'\n ]\"\n (close)=\"open.next(false)\"\n >\n <input\n #filter\n class=\"filter\"\n [placeholder]=\"'Search columns...'\"\n [value]=\"filterQuery | async\"\n (input)=\"filterQuery.next(filter.value)\"\n [riv-auto-focus]=\"true\"\n />\n <div class=\"column-list\">\n <div\n class=\"column\"\n *ngFor=\"let column of columns; let i = index\"\n [attr.draggable]=\"!(searching | async)\"\n [attr.droppable]=\"!(searching | async)\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n [class.dragged-over-top]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx < i\n \"\n >\n <riv-checkbox\n [value]=\"column.enabled\"\n (valueChange)=\"columnEnabledChange(column, $event)\"\n >\n <riv-highlight\n [text]=\"column.resolvedName\"\n [indices]=\"column.highlightIndices\"\n ></riv-highlight>\n </riv-checkbox>\n <span class=\"reorder\" *ngIf=\"!(searching | async)\">\n <riv-icon [name]=\"'Reorder'\" [size]=\"12\"></riv-icon>\n </span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'xsmall'\"\n [icon]=\"column.pinned ? 'PinActive' : 'PinInactive'\"\n (click)=\"columnPinChange(column, !column.pinned)\"\n ></button>\n </div>\n </div>\n <footer *ngIf=\"!(searching | async)\">\n <button\n rivButton\n [size]=\"'xsmall'\"\n [variant]=\"'ghost'\"\n [disabled]=\"allColumnsDisabled(columns)\"\n (click)=\"disableAllColumns(columns)\"\n >\n Clear\n </button>\n <button\n rivButton\n [size]=\"'xsmall'\"\n [variant]=\"'ghost'\"\n [disabled]=\"allColumnsEnabled(columns)\"\n (click)=\"enableAllColumns(columns)\"\n >\n Select all\n </button>\n </footer>\n </riv-callout>\n </ng-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\nimport * as p from 'papaparse';\nimport { DownloadService } from '../../../download/download.service';\nimport { RivTable } from '../state';\n\n@Component({\n selector: 'riv-table-csv-export',\n templateUrl: './table-csv-export.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableCsvExportComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n> {\n @Input()\n manager?: RivTable.Manager<R, C, F>;\n\n constructor(\n private readonly downloadService: DownloadService,\n private readonly cdr: ChangeDetectorRef,\n ) {}\n\n loading = false;\n\n async downloadCsv(state: RivTable.FullState<R, C, F>) {\n for await (const output of state.result.csvData()) {\n if (!output.data) {\n this.loading = true;\n } else {\n await this.downloadService.downloadBlob(\n new Blob([p.unparse(output.data)], { type: 'text/csv' }),\n state.result.csvFilename,\n );\n this.loading = false;\n }\n this.cdr.markForCheck();\n }\n }\n}\n","<ng-container *ngIf=\"manager?.state | async; let s\">\n <button\n type=\"button\"\n rivButton\n [rivTooltip]=\"'Export CSV'\"\n [icon]=\"'DownloadCloud'\"\n [loading]=\"loading\"\n (click)=\"downloadCsv(s)\"\n ></button>\n</ng-container>\n","import { DOCUMENT } from '@angular/common';\nimport { Component, ElementRef, Inject, Output } from '@angular/core';\nimport {\n concatWith,\n distinctUntilChanged,\n fromEvent,\n map,\n Observable,\n of,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\n@Component({\n selector: 'table-header-resize-handle',\n templateUrl: './table-header-resize-handle.component.html',\n styleUrls: ['./table-header-resize-handle.component.css'],\n})\nexport class TableHeaderResizeHandleComponent {\n constructor(\n private readonly elementRef: ElementRef,\n @Inject(DOCUMENT) private readonly documentRef: Document,\n ) {}\n\n @Output()\n readonly dragResize: Observable<number | null> = fromEvent<MouseEvent>(\n this.elementRef.nativeElement,\n 'mousedown',\n ).pipe(\n tap(evt => evt.preventDefault()),\n switchMap(() => {\n const { width, right } = this.elementRef.nativeElement\n .closest('th')!\n .getBoundingClientRect();\n\n return fromEvent<MouseEvent>(this.documentRef, 'mousemove').pipe(\n map(({ clientX }) => width + clientX - right),\n distinctUntilChanged(),\n takeUntil(fromEvent(this.documentRef, 'mouseup')),\n concatWith(of(null)), // signal that the user is done working\n );\n }),\n );\n}\n","","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { RivSelect } from '../../../input/select/state';\nimport { RivTable } from '../state';\n\ntype SearchableColumn = RivSelect.BaseOption & {\n searchEnabled: boolean;\n};\n\n@Component({\n selector: 'riv-table-search-columns',\n templateUrl: './table-search-columns.component.html',\n styleUrls: ['./table-search-columns.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableSearchColumnsComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n> implements OnInit\n{\n public readonly open = new BehaviorSubject<boolean>(false);\n\n @Input()\n manager?: RivTable.Manager<R, C, F>;\n\n @Input()\n disabled: boolean = false;\n\n columnList?: Observable<{\n activeSearchColumns: SearchableColumn[];\n hiddenSearchColumns: SearchableColumn[];\n searchEnabledCount: number;\n }>;\n\n ngOnInit() {\n this.columnList = this.manager!.state.pipe(\n map(s => {\n const makeNode = (column: RivTable.ColumnSettings<C>) => ({\n id: column.name,\n title: s.display.columnNameMap.get(column.name) ?? column.name,\n searchEnabled: !!s.query.searchColumns.get(column.name),\n });\n const activeColumns = s.display.allColumns\n .filter(c => s.display.searchableColumnMap.get(c.name) && c.enabled)\n .map(makeNode);\n const hiddenColumns = s.display.allColumns\n .filter(c => s.display.searchableColumnMap.get(c.name) && !c.enabled)\n .map(makeNode);\n\n const searchEnabledCount =\n activeColumns.filter(c => c.searchEnabled).length +\n hiddenColumns.filter(c => c.searchEnabled).length;\n\n return {\n activeSearchColumns: activeColumns,\n hiddenSearchColumns: hiddenColumns,\n searchEnabledCount: searchEnabledCount,\n };\n }),\n );\n }\n\n updateColumns(column: string, active: boolean) {\n const payload = new Map();\n payload.set(column, active);\n this.manager?.actions.next({\n type: 'searchColumnsChange',\n payload,\n });\n }\n}\n","<ng-container *ngIf=\"columnList | async; let s\">\n <button #trigger class=\"trigger-button\" (click)=\"open.next(true)\">\n <riv-icon [name]=\"'MoreVertical'\" [size]=\"16\"></riv-icon>\n </button>\n <ng-container *ngIf=\"open | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'bottom-left'\"\n [theme]=\"'light'\"\n (close)=\"open.next(false)\"\n >\n <div class=\"content-body\">\n <div class=\"header-container\">\n <riv-help\n [size]=\"12\"\n [help]=\"'Toggle which columns are included in table search results'\"\n ></riv-help\n ><span class=\"header-text\">Search in</span>\n </div>\n\n <ng-container\n [ngTemplateOutlet]=\"optionList\"\n [ngTemplateOutletContext]=\"{ columns: s.activeSearchColumns }\"\n ></ng-container>\n\n <div *ngIf=\"s.hiddenSearchColumns.length > 0\" class=\"column-header\">\n Hidden columns\n </div>\n\n <ng-container\n *ngIf=\"s.hiddenSearchColumns.length > 0\"\n [ngTemplateOutlet]=\"optionList\"\n [ngTemplateOutletContext]=\"{ columns: s.hiddenSearchColumns }\"\n ></ng-container>\n\n <ng-template #optionList let-columns=\"columns\">\n <ng-container *ngFor=\"let column of columns\">\n <ng-container\n [ngTemplateOutlet]=\"option\"\n [ngTemplateOutletContext]=\"{ node: column }\"\n ></ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #option let-node=\"node\">\n <div class=\"node-container\">\n <span class=\"node-text\">{{ node.title }}</span>\n <riv-switch-checkbox\n [size]=\"'small'\"\n [value]=\"node.searchEnabled\"\n [disabled]=\"s.searchEnabledCount === 1 && node.searchEnabled\"\n [rivTooltip]=\"\n s.searchEnabledCount === 1 && node.searchEnabled\n ? 'At least one search field is required'\n : undefined\n \"\n (valueChange)=\"updateColumns(node.id, $event)\"\n ></riv-switch-checkbox>\n </div>\n </ng-template>\n </div>\n </riv-callout>\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { debounce } from 'lodash';\nimport { RivTable } from '../state';\n\n@Component({\n selector: 'riv-table-search',\n templateUrl: './table-search.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableSearchComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n> {\n @Input()\n manager?: RivTable.Manager<R, C, F>;\n\n @Input()\n name: string = 'table-search';\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n searchColumns: boolean = false;\n\n search = debounce((query: string) => {\n this.manager?.actions.next({ type: 'searchChange', payload: query });\n }, 300);\n}\n","<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-search\n [name]=\"name\"\n [disabled]=\"disabled\"\n [value]=\"s.query.search\"\n (valueChange)=\"search($event)\"\n [labelTemplate]=\"searchColumns ? labelTemplate : undefined\"\n ></riv-search>\n</ng-container>\n<ng-template #labelTemplate\n ><riv-table-search-columns [manager]=\"manager\"></riv-table-search-columns\n></ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n HostListener,\n Input,\n TemplateRef,\n TrackByFunction,\n} from '@angular/core';\nimport { map, Observable, Subject } from 'rxjs';\nimport { RivSelect } from '../../../input/select/state';\nimport { RivTable } from '../state';\n\ntype PageSizeOption = {\n id: string;\n title: string;\n value: number;\n};\n\n@Component({\n selector: 'riv-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group = { key: '' },\n> {\n @Input()\n manager?: RivTable.Manager<R, C, F, G>;\n\n @ContentChild('cell')\n cellTemplate?: TemplateRef<{\n row: RivTable.FullRow<R>;\n column: RivTable.FullColumn<C>;\n }>;\n\n @ContentChild('menu')\n menuTemplate?: TemplateRef<{ row: RivTable.FullRow<R> }>;\n\n @ContentChild('selection')\n selectionTemplate?: TemplateRef<{ state: RivTable.FullState<R, C, F, G> }>;\n\n @ContentChild('header')\n headerTemplate?: TemplateRef<{ state: RivTable.FullState<R, C, F, G> }>;\n\n @ContentChild('subheader')\n subheaderTemplate?: TemplateRef<{\n state: RivTable.FullState<R, C, F, G>;\n group: RivTable.RowGroup<R, G>;\n }>;\n\n readonly containerSize = new Subject<DOMRect>();\n readonly selectionCalloutPosition: Observable<DOMRect> =\n this.containerSize.pipe(\n map(rect => new DOMRect(rect.x + 44, rect.y - 12, 0, 0)),\n );\n\n readonly pageSizeOptions: RivSelect.OptionGroup<PageSizeOption>[] = [\n {\n options: RivTable.pageSizes.map(pageSize => ({\n id: pageSize.toString(),\n title: pageSize.toString(),\n value: pageSize,\n })),\n },\n ];\n\n readonly trackByRow: TrackByFunction<RivTable.FullRow<R>> = (_, row) =>\n row.id;\n\n private readonly temporaryWidths: Map<C, number> = new Map();\n setWidth(column: C, width: number | null): void {\n if (width === null) {\n const temporaryWidth = this.temporaryWidths.get(column);\n if (temporaryWidth) {\n this.manager?.actions.next({\n type: 'columnWidthChange',\n column,\n preferredWidth: temporaryWidth,\n });\n }\n this.temporaryWidths.delete(column);\n } else {\n this.temporaryWidths.set(column, width);\n }\n }\n getWidth(column: RivTable.FullColumn<C>): number {\n if (this.temporaryWidths.has(column.name)) {\n return Math.max(this.temporaryWidths.get(column.name)!, column.minWidth);\n } else {\n return column.width;\n }\n }\n\n draggedColumnIdx: number | null = null;\n draggedOverColumnIdx: number | null = null;\n\n dragStart(idx: number) {\n this.draggedColumnIdx = idx;\n }\n\n dragOver(ontoIdx: number) {\n this.draggedOverColumnIdx = ontoIdx;\n }\n\n drop(ontoIdx: number) {\n if (this.draggedColumnIdx !== null) {\n this.manager?.actions.next({\n type: 'columnOrderChange',\n previousIndex: this.draggedColumnIdx,\n newIndex: ontoIdx,\n });\n this.draggedOverColumnIdx = null;\n }\n }\n\n getErrorMessage(e: unknown): string {\n if (e instanceof Error) return e.message;\n if (typeof e === 'string') return e;\n if (typeof e === 'object' && e !== null) return e.toString();\n else return 'An error occurred.';\n }\n\n private shift: boolean = false;\n\n @HostListener('document:keydown', ['$event'])\n keyDown(event: KeyboardEvent) {\n this.shift = event.shiftKey;\n }\n\n @HostListener('document:keyup', ['$event'])\n keyUp(event: KeyboardEvent) {\n this.shift = event.shiftKey;\n }\n\n selectionChange(rowId: R['id'], selected: boolean) {\n this.manager?.actions.next({\n type: 'rowSelectedChange',\n id: rowId,\n selected,\n contiguous: this.shift,\n });\n }\n\n handleClick(event: MouseEvent, column: RivTable.FullColumn<C>) {\n if (column.clickPreventDefault) event.preventDefault();\n if (column.clickStopPropagation) event.stopPropagation();\n }\n\n isExternalRowLink(\n rowLink: RivTable.RowLink,\n ): rowLink is RivTable.ExternalRowLink {\n return rowLink.type === 'external';\n }\n\n isInternalRowLink(\n rowLink: RivTable.RowLink,\n ): rowLink is RivTable.InternalRowLink {\n return rowLink.type === 'internal';\n }\n}\n","<ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container *ngIf=\"selectionCalloutPosition | async; let position\">\n <ng-container *ngIf=\"s.selection.selectedCount > 0 && selectionTemplate\">\n <riv-callout\n *riv-overlay\n [anchor]=\"position\"\n [isModal]=\"false\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'top-right'\"\n >\n <ng-container\n *ngTemplateOutlet=\"selectionTemplate; context: { state: s }\"\n ></ng-container>\n </riv-callout>\n </ng-container>\n </ng-container>\n <riv-loading-cover\n [loading]=\"s.load.loading\"\n [errorMessage]=\"s.load.error ? getErrorMessage(s.load.error) : undefined\"\n >\n <header *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { state: s }\"\n ></ng-container>\n </header>\n <div\n class=\"container\"\n [ngClass]=\"{\n 'container-ungrouped': !s.result.isGrouped,\n 'has-header': !s.result.isGrouped && headerTemplate\n }\"\n (rivClientSize)=\"containerSize.next($event)\"\n >\n <ng-container\n *ngFor=\"\n let group of s.result.isGrouped\n ? s.result.rowGroups\n : [s.result.rowsAsGroup];\n let last = last\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n subheaderTemplate || null;\n context: { state: s, group }\n \"\n ></ng-container>\n <div [ngClass]=\"{ 'subcontainer-grouped': s.result.isGrouped }\">\n <table>\n <thead>\n <tr>\n <th *ngIf=\"!!s.selection.allowSelection\" class=\"selection-head\">\n <div\n *ngIf=\"\n s.selection.allowSelection !== 'individual' &&\n s.selection.allowSelection === true\n \"\n class=\"checkbox-wrapper\"\n >\n <riv-checkbox\n *ngIf=\"!s.result.isGrouped\"\n [value]=\"s.selection.isAllSelected === true\"\n [indeterminate]=\"\n s.selection.isAllSelected === 'indeterminate'\n \"\n (valueChange)=\"\n manager?.actions?.next({ type: 'allSelectedChange' })\n \"\n ></riv-checkbox>\n <riv-checkbox\n *ngIf=\"s.result.isGrouped\"\n [value]=\"group.selected === true\"\n [indeterminate]=\"group.selected === 'indeterminate'\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'groupSelectionChange',\n payload: group\n })\n \"\n ></riv-checkbox>\n </div>\n </th>\n <th\n *ngFor=\"let column of s.display.columns; let i = index\"\n [class.pinned]=\"column.pinned\"\n [style.left.px]=\"column.left\"\n [style.width.px]=\"getWidth(column)\"\n draggable=\"true\"\n droppable=\"true\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n [class.dragged-over-left]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx > i\n \"\n [class.dragged-over-right]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx < i\n \"\n >\n <div\n *ngIf=\"\n !column.orderable &&\n !column.filterable &&\n !s.display.columnsAreFreezable &&\n !s.display.columnsAreHideable\n \"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n >\n {{ s.display.columnNameMap.get(column.name) }}\n </div>\n <riv-menu\n *ngIf=\"\n column.orderable ||\n column.filterable ||\n s.display.columnsAreFreezable ||\n s.display.columnsAreHideable\n \"\n >\n <ng-template #trigger>\n <button\n type=\"button\"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n [class.active]=\"s.query.order?.column === column.name\"\n >\n {{ s.display.columnNameMap.get(column.name) }}\n <span class=\"icon-container\">\n <riv-icon\n [size]=\"12\"\n [name]=\"\n s.query.order?.direction === 'desc'\n ? 'ArrowDown'\n : 'ArrowUp'\n \"\n ></riv-icon>\n </span>\n </button>\n <table-header-resize-handle\n (dragResize)=\"setWidth(column.name, $event)\"\n ></table-header-resize-handle>\n </ng-template>\n <ng-container *ngIf=\"column.orderable\">\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.name &&\n s.query.order?.direction === 'asc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'asc',\n column: column.name\n }\n })\n \"\n >\n Sort ascending\n </button>\n <button\n *ngIf=\"s.query.order?.column === column.name\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: null\n })\n \"\n >\n Remove sort\n </button>\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.name &&\n s.query.order?.direction === 'desc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'desc',\n column: column.name\n }\n })\n \"\n >\n Sort descending\n </button>\n </ng-container>\n <riv-menu-divider\n *ngIf=\"column.orderable && column.filterable\"\n ></riv-menu-divider>\n <button\n *ngIf=\"column.filterable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'filterAdd',\n columnKey: column.name\n })\n \"\n >\n Add a filter\n </button>\n <riv-menu-divider\n *ngIf=\"\n (column.orderable || column.filterable) &&\n (s.display.columnsAreFreezable ||\n s.display.columnsAreHideable)\n \"\n ></riv-menu-divider>\n <ng-container *ngIf=\"s.display.columnsAreFreezable\">\n <button\n *ngIf=\"!column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: true,\n index: i\n })\n \"\n >\n Freeze up to column\n </button>\n <button\n *ngIf=\"column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: false,\n index: 0\n })\n \"\n >\n Un-freeze columns\n </button>\n </ng-container>\n <button\n *ngIf=\"s.display.columnsAreHideable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnEnabledChange',\n column: column.name,\n enabled: false\n })\n \"\n >\n Hide column\n </button>\n </riv-menu>\n </th>\n <th *ngIf=\"menuTemplate\" class=\"menu-head\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngIf=\"s.result.totalMatchingRowCount > 0; else empty\"\n >\n <ng-container *ngFor=\"let row of group.rows\">\n <ng-template #rowBody>\n <td\n *ngIf=\"\n s.selection.allowSelection === true ||\n s.selection.allowSelection === 'individual'\n \"\n class=\"selection-body\"\n (click)=\"$event.preventDefault()\"\n >\n <label\n class=\"checkbox-wrapper\"\n (click)=\"$event.stopPropagation()\"\n >\n <riv-checkbox\n [identifier]=\"'riv-table-selection-' + row.id\"\n [value]=\"row.selected\"\n (valueChange)=\"selectionChange(row.id, $event)\"\n ></riv-checkbox>\n </label>\n </td>\n <td\n *ngFor=\"let column of s.display.columns\"\n [class.pinned]=\"column.pinned\"\n [class.advanced]=\"column.dataType === 'advanced'\"\n [style.left.px]=\"column.left\"\n [style.text-align]=\"column.alignment\"\n (click)=\"handleClick($event, column)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n cellTemplate || null;\n context: { row: row, column: column }\n \"\n ></ng-container>\n </td>\n <td\n *ngIf=\"menuTemplate\"\n class=\"menu-body\"\n (click)=\"\n $event.stopPropagation(); $event.preventDefault()\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n menuTemplate || null;\n context: { row: row }\n \"\n ></ng-container>\n </td>\n </ng-template>\n <ng-container *ngIf=\"row.rowLink; let rl\">\n <a\n *ngIf=\"isExternalRowLink(rl)\"\n [href]=\"rl.href\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n <a\n *ngIf=\"isInternalRowLink(rl)\"\n [routerLink]=\"rl.routerLink\"\n [queryParams]=\"rl.queryParams\"\n [queryParamsHandling]=\"rl.queryParamsHandling\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n </ng-container>\n <tr\n *ngIf=\"!row.rowLink\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </tr>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <tr>\n <td [attr.colspan]=\"s.display.columns.length\">\n <riv-zero-state\n *ngIf=\"s.display.zeroStateMessage; let message\"\n [message]=\"message\"\n ></riv-zero-state>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n </div>\n <div\n class=\"footer\"\n *ngIf=\"\n s.result.isGrouped &&\n group.totalMatchingRowCount > s.query.grouping.countPerGroup &&\n group.rows.length == s.query.grouping.countPerGroup\n \"\n >\n <span\n rivLink\n class=\"footer-link\"\n (click)=\"\n manager?.actions?.next({\n type: 'viewMoreKeyChange',\n viewMoreKey: group.groupData.key.toString()\n })\n \"\n >View all {{ group.totalMatchingRowCount }}</span\n >\n </div>\n <br *ngIf=\"!last\" />\n </ng-container>\n </div>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination\">\n <div class=\"page-size-controls\">\n <ng-container *ngIf=\"!s.result.isGrouped\">\n <span> Results per page: </span>\n <riv-simple-select\n [selectedOption]=\"{\n id: s.query.pagination.pageSize.toString(),\n title: s.query.pagination.pageSize.toString(),\n value: s.query.pagination.pageSize\n }\"\n (selectedOptionChange)=\"\n manager?.actions?.next({\n type: 'pageSizeChange',\n size: $event?.value || 25\n })\n \"\n [optionGroups]=\"pageSizeOptions\"\n [size]=\"'small'\"\n ></riv-simple-select>\n </ng-container>\n </div>\n <span\n *ngIf=\"s.result.totalMatchingRowCount > 0 && !s.result.isGrouped\"\n class=\"page-data-indicator\"\n >\n {{ s.query.pagination.pageRowStart | rivNumber }}-{{\n s.query.pagination.pageRowEnd | rivNumber\n }}\n of\n {{ s.result.totalMatchingRowCount | rivNumber }}\n </span>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination-controls\">\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowLeft'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.previous === null\"\n (click)=\"manager?.actions?.next({ type: 'previousPageNavigate' })\"\n ></button>\n <span\n *ngIf=\"s.query.pagination.pages[0] > 0\"\n class=\"truncated-pages left\"\n >\n …\n </span>\n <button\n *ngFor=\"let page of s.query.pagination.pages\"\n class=\"page\"\n type=\"button\"\n [disabled]=\"page === s.query.pagination.page\"\n (click)=\"manager?.actions?.next({ type: 'pageChange', page })\"\n >\n {{ page + 1 }}\n </button>\n <span\n *ngIf=\"\n s.query.pagination.pages[s.query.pagination.pages.length - 1] <\n s.query.pagination.pageCount - 1\n \"\n class=\"truncated-pages right\"\n >\n …\n </span>\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowRight'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.next === null\"\n (click)=\"manager?.actions?.next({ type: 'nextPageNavigate' })\"\n ></button>\n </div>\n </div>\n </riv-loading-cover>\n</ng-container>\n","import { CurrencyPipe } from '@angular/common';\nimport { scaleLinear, scaleUtc } from 'd3-scale';\nimport { area, line } from 'd3-shape';\nimport { utcFormat } from 'd3-time-format';\nimport { DaysPipe } from '../../format/pipes/days.pipe';\nimport { NumberPipe } from '../../format/pipes/number.pipe';\nimport { PercentagePipe } from '../../format/pipes/percentage.pipe';\nimport { SmallCurrencyPipe } from '../../format/pipes/small-currency.pipe';\n\nexport namespace Chart {\n export const defaultColorPalette = [\n //Base colors\n '--baja-blast-50',\n '--teal-diamond-50',\n '--fyre-50',\n '--tang-50',\n '--purp-60',\n '--rosi-70',\n //Shift lighter from base by -20\n '--baja-blast-30',\n '--teal-diamond-30',\n '--fyre-30',\n '--tang-30',\n '--purp-40',\n '--rosi-50',\n //Shift darker from base by +20\n '--baja-blast-70',\n '--teal-diamond-70',\n '--fyre-70',\n '--tang-70',\n '--purp-80',\n '--rosi-90',\n ];\n\n export function chart(config: Config, data: Data, dimensions: Dimensions) {\n return config.type == 'line'\n ? lines(config, data, dimensions)\n : config.type == 'area'\n ? areas(config, data, dimensions)\n : bars(config, data, dimensions);\n }\n export function lines(\n config: Config,\n allData: Data,\n dimensions: Dimensions,\n ): RenderedChart {\n const { data, visibleIndices } = hide(allData);\n const xScale = scaleUtc(timeseriesDomain(data), xRange(dimensions));\n const format = (date: Date) =>\n formatedDate(config.dateFormat || 'day', date);\n\n //Dont use auto magic when dealing with 1,2,3,4 data points\n const xTickDates =\n data.x.length < 5\n ? data.x.map(x => new Date(x))\n : xScale.ticks(Math.min(5, data.x.length));\n\n const xTicks = xTickDates.map(tick => ({\n x: xScale(tick),\n label: format(tick),\n }));\n\n const { pipe, fullPipe } = getPipes(config.valueType);\n const yScale = scaleLinear(yDomain(data), yRange(dimensions));\n const yTicks = yScale.ticks(5).map(tick => ({\n y: yScale(tick),\n label: pipe.transform(tick),\n }));\n\n const colors = visibleIndices.map(\n i => config.colors[i % config.colors.length],\n );\n const indices = data.x.map((_, i) => i);\n const lines =\n data.x.length > 1\n ? data.ys.map(y =>\n line<number>(\n i => xScale(data.x[i]),\n i => yScale(y.values[i]),\n )(indices),\n )\n : [];\n const circles =\n data.x.length === 1\n ? data.ys.map(ySeries => ({\n cx: xScale(data.x[0]),\n cy: yScale(ySeries.values[0]),\n }))\n : [];\n\n function hover(pos: { rect: DOMRect; x: number; y: number }) {\n const xIndex = findNearestIndex(data.x, xScale.invert(pos.x).getTime());\n const x = xScale(data.x[xIndex]);\n const visibleYIndex = findNearestIndex(\n data.ys.map(y => y.values[xIndex]),\n yScale.invert(pos.y),\n );\n const yIndex = visibleIndices[visibleYIndex];\n const ys = data.ys.map(y => yScale(y.values[xIndex]));\n\n const format = (date: Date) =>\n formatedDate(config.dateFormat || 'day', date);\n\n const anchor = new DOMRect(\n pos.rect.x + x,\n pos.rect.y + ys[visibleYIndex],\n 8,\n 0,\n );\n return {\n x,\n xIndex,\n ys,\n yIndex,\n visibleYIndex,\n tooltip: {\n anchor,\n date: format(new Date(data.x[xIndex])),\n metrics: data.ys\n .map((y, index) => ({\n color: colors[index % colors.length],\n label: y.label,\n value: fullPipe.transform(y.values[xIndex]) ?? '-',\n }))\n .filter((_, i) => config.groupedTooltip || i == visibleYIndex),\n },\n };\n }\n\n return {\n xTicks,\n yTicks,\n colors,\n lines,\n circles,\n hover,\n bars: [],\n areas: [],\n };\n }\n\n export function areas(\n config: Config,\n allData: Data,\n dimensions: Dimensions,\n ): RenderedChart {\n const { data: unstackedData, visibleIndices } = hide(allData);\n const data = stack(unstackedData);\n const xScale = scaleUtc(timeseriesDomain(data), xRange(dimensions));\n const format = (date: Date) =>\n formatedDate(config.dateFormat || 'day', date);\n const xTicks = xScale.ticks(Math.min(5, data.x.length)).map(tick => ({\n x: xScale(tick),\n label: format(tick),\n }));\n\n const { pipe, fullPipe } = getPipes(config.valueType);\n const yScale = scaleLinear(yDomain(data), yRange(dimensions));\n const yTicks = yScale.ticks(5).map(tick => ({\n y: yScale(tick),\n label: pipe.transform(tick),\n }));\n\n const indices = data.x.map((_, i) => i);\n const colors = visibleIndices.map(\n i => config.colors[i % config.colors.length],\n );\n const areas = data.ys.map((y, yIndex) =>\n area<number>(\n i => xScale(data.x[i]),\n i => yScale(yIndex == 0 ? 0 : data.ys[yIndex - 1].values[i]),\n i => yScale(y.values[i]),\n )(indices),\n );\n\n function hover(pos: { rect: DOMRect; x: number; y: number }) {\n const xIndex = findNearestIndex(data.x, xScale.invert(pos.x).getTime());\n const x = xScale(data.x[xIndex]);\n const yValue = yScale.invert(pos.y);\n let visibleYIndex = data.ys\n .map(y => y.values[xIndex])\n .findIndex(y => y > yValue);\n if (visibleYIndex == -1) {\n visibleYIndex = data.ys.length - 1;\n }\n const yIndex = visibleIndices[visibleYIndex];\n const ys = data.ys.map(y => yScale(y.values[xIndex]));\n const padding = 8;\n const anchor = new DOMRect(\n pos.rect.x + x,\n pos.rect.y + ys[visibleYIndex],\n padding,\n 0,\n );\n return {\n x,\n xIndex,\n ys,\n yIndex,\n visibleYIndex,\n tooltip: {\n anchor,\n date: utcFormat('%B %d, %Y')(new Date(unstackedData.x[xIndex])),\n metrics: unstackedData.ys\n .map((y, index) => ({\n color: colors[index % colors.length],\n label: y.label,\n value: fullPipe.transform(y.values[xIndex]) ?? '-',\n }))\n .filter((_, i) => config.groupedTooltip || i == visibleYIndex),\n },\n };\n }\n\n return {\n xTicks,\n yTicks,\n colors,\n areas,\n lines: [],\n circles: [],\n hover,\n bars: [],\n };\n }\n\n export function bars(\n config: Config,\n allData: Data,\n dimensions: Dimensions,\n ): RenderedChart {\n const { data: unstackedData, visibleIndices } = hide(allData);\n const data = stack(unstackedData);\n const { range: xRange, binSize } = barXRange(dimensions, data);\n const halfBinSize = binSize / 2;\n const xScale = scaleUtc(timeseriesDomain(data), xRange);\n const format = (date: Date) =>\n formatedDate(config.dateFormat || 'day', date);\n const xTicks = xScale.ticks(Math.min(5, data.x.length)).map(tick => ({\n x: xScale(tick),\n label: format(tick),\n }));\n\n const { pipe, fullPipe } = getPipes(config.valueType);\n const yScale = scaleLinear(yDomain(data), yRange(dimensions));\n const yTicks = yScale.ticks(5).map(tick => ({\n y: yScale(tick),\n label: pipe.transform(tick),\n }));\n const colors = visibleIndices.map(\n i => config.colors[i % config.colors.length],\n );\n const bars = data.ys.map((y, yIndex) =>\n y.values.map((value, index) => {\n const yValue = yScale(value);\n return {\n x: xScale(data.x[index]) - halfBinSize,\n y: yValue,\n width: binSize,\n height:\n (yIndex == 0\n ? yScale(0)\n : yScale(data.ys[yIndex - 1].values[index])) - yValue,\n };\n }),\n );\n\n function hover(pos: { rect: DOMRect; x: number; y: number }) {\n const xIndex = findNearestIndex(data.x, xScale.invert(pos.x).getTime());\n const x = xScale(data.x[xIndex]);\n const yValue = yScale.invert(pos.y);\n let visibleYIndex = data.ys\n .map(y => y.values[xIndex])\n .findIndex(y => y > yValue);\n if (visibleYIndex == -1) {\n visibleYIndex = data.ys.length - 1;\n }\n const yIndex = visibleIndices[visibleYIndex];\n const ys = data.ys.map(y => yScale(y.values[xIndex]));\n const padding = 8;\n const anchor = new DOMRect(\n pos.rect.x + bars[visibleYIndex][xIndex].x - padding,\n pos.rect.y + ys[visibleYIndex],\n bars[visibleYIndex][xIndex].width + padding * 2,\n (visibleYIndex == 0 ? yScale(0) : ys[visibleYIndex - 1]) -\n ys[visibleYIndex],\n );\n return {\n x,\n xIndex,\n ys,\n yIndex,\n visibleYIndex,\n tooltip: {\n anchor,\n date: utcFormat('%B %d, %Y')(new Date(unstackedData.x[xIndex])),\n metrics: unstackedData.ys\n .map((y, index) => ({\n color: colors[index % colors.length],\n label: y.label,\n value: fullPipe.transform(y.values[xIndex]) ?? '-',\n }))\n .filter((_, i) => config.groupedTooltip || i == visibleYIndex),\n },\n };\n }\n\n return {\n xTicks,\n yTicks,\n colors,\n bars,\n lines: [],\n circles: [],\n areas: [],\n hover,\n };\n }\n\n const LEFT_PADDING = 48;\n const RIGHT_PADDING = 24;\n const TOP_PADDING = 16;\n const BOTTOM_PADDING = 24;\n\n export type Data = {\n ys: {\n label: string;\n hidden?: boolean;\n values: number[];\n }[];\n x: number[];\n };\n\n export type Dimensions = {\n width: number;\n height: number;\n };\n\n export type Config = {\n type: 'line' | 'area' | 'bar';\n groupedTooltip: boolean;\n colors: string[];\n allowLegendToggle: boolean;\n zeroStateMessage: string;\n valueType: ValueType;\n truncateLegend: boolean;\n dateFormat?: Interval;\n };\n\n export const defaultConfig: Config = {\n type: 'line',\n groupedTooltip: true,\n colors: defaultColorPalette,\n allowLegendToggle: false,\n zeroStateMessage: 'No data to display.',\n valueType: 'currency',\n truncateLegend: true,\n dateFormat: 'day',\n };\n\n export type Area = {\n path: string | null;\n fill: string;\n };\n\n export type XTick = {\n x: number;\n label: string;\n };\n\n export type YTick = {\n y: number;\n label: string;\n };\n\n type Rect = {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n\n export type BarSeries = {\n fill: string;\n rects: Rect[];\n };\n\n type Circle = {\n cx: number;\n cy: number;\n };\n\n // Hover is a function that takes a viewport x and y and returns a rich\n // set of information about what values are being hovered and what the tooltip\n // should look like\n export type Hover = (pos: { rect: DOMRect; x: number; y: number }) => {\n // the indices into the data of the closest point\n xIndex: number;\n // we want to know which visible y index is hovered\n // and which actual y index is hovered\n yIndex: number;\n visibleYIndex: number;\n\n // the viewport x and ys of the hovered items\n x: number;\n ys: number[];\n\n tooltip: {\n anchor: DOMRect;\n date: string;\n metrics: {\n color: string;\n label: string;\n value: string;\n }[];\n };\n };\n\n // RenderedChart represents all of the parts of a chart\n // that end up on screen. Every chart has x and y ticks\n // and hover functionality, even though they might be\n // different from chart to chart.\n type RenderedChart = {\n xTicks: XTick[];\n yTicks: YTick[];\n hover: Hover;\n colors: string[];\n lines: (string | null)[];\n circles: Circle[]; //Line fallback for a single point\n areas: (string | null)[];\n bars: Rect[][];\n };\n\n function timeseriesDomain(data: Data) {\n return [Math.min(...data.x), Math.max(...data.x)];\n }\n\n function yDomain(data: Data) {\n const max = Math.max(...data.ys.map(y => Math.max(...y.values)));\n return [0, max == 0 ? 1 : max];\n }\n\n function xRange(dimensions: Dimensions) {\n return [LEFT_PADDING, dimensions.width - RIGHT_PADDING];\n }\n\n function barXRange(dimensions: Dimensions, data: Data) {\n const left = LEFT_PADDING;\n const right = dimensions.width - RIGHT_PADDING;\n const width = right - left;\n const binSize = width / (data.x.length || 1);\n const halfBinSize = binSize / 2;\n const range = [left + halfBinSize, right - halfBinSize];\n return { binSize: Math.min(binSize * 0.7, 80), range };\n }\n\n function yRange(dimensions: Dimensions) {\n return [dimensions.height - BOTTOM_PADDING, TOP_PADDING];\n }\n\n function findNearestIndex(values: number[], input: number) {\n return values.reduce((nearestIndex, value, index) => {\n return Math.abs(value - input) < Math.abs(values[nearestIndex] - input)\n ? index\n : nearestIndex;\n }, 0);\n }\n\n // stack returns a new data where each set of yValues is stacked\n // on top of the previous.\n function stack(data: Data): Data {\n const stacked: Data = {\n ...data,\n ys: data.ys.map(y => ({ label: y.label, values: [] })),\n };\n for (let i = 0; i < data.x.length; i++) {\n let from = 0;\n for (let j = 0; j < data.ys.length; j++) {\n const to = from + data.ys[j].values[i];\n stacked.ys[j].values.push(to);\n from = to;\n }\n }\n return stacked;\n }\n\n // hide strips out hidden y values while retaining the original indices\n // for the remaining visible values\n function hide(data: Data): { data: Data; visibleIndices: number[] } {\n const visibleIndices = data.ys\n .map((y, i) => ({ y, i }))\n .filter(({ y }) => !y.hidden)\n .map(({ i }) => i);\n return {\n data: { ...data, ys: visibleIndices.map(i => data.ys[i]) },\n visibleIndices,\n };\n }\n\n type ValueType = 'count' | 'currency' | 'percentage' | 'days';\n\n export function getPipes(valueType: ValueType) {\n switch (valueType) {\n case 'count': {\n const pipe = new NumberPipe();\n return { pipe, fullPipe: pipe };\n }\n case 'currency':\n return {\n pipe: new SmallCurrencyPipe(),\n fullPipe: new CurrencyPipe('en-us'),\n };\n case 'percentage': {\n const pipe = new PercentagePipe();\n return { pipe, fullPipe: pipe };\n }\n case 'days': {\n const pipe = new DaysPipe();\n return { pipe, fullPipe: pipe };\n }\n }\n }\n\n export const intervals = ['year', 'quarter', 'month', 'week', 'day'] as const;\n export type Interval = (typeof intervals)[number];\n\n export function formatedDate(dateFormat: Interval, date: Date) {\n if (dateFormat == 'quarter') {\n const quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n const year = utcFormat(getTimeIntervalFormat('year'))(date);\n return `Q${quarter} ${year}`;\n }\n const format = getTimeIntervalFormat(dateFormat);\n return utcFormat(format)(date);\n }\n\n export function getTimeIntervalFormat(interval: Interval): string {\n switch (interval) {\n case 'day':\n case 'week':\n return '%m/%d/%Y';\n case 'month':\n case 'quarter':\n return '%b %Y';\n case 'year':\n return '%Y';\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-legend-item',\n templateUrl: './legend-item.component.html',\n styleUrls: ['./legend-item.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LegendItemComponent {\n @Input()\n label: string = '';\n\n @Input()\n colorToken: string = '';\n\n @Input()\n style: LegendItemComponent.Style = 'solid';\n\n @Input()\n visibility: LegendItemComponent.Visibility = 'visible';\n\n @Input()\n iconTooltip?: string;\n\n get backgroundColor(): string {\n return `var(${this.colorToken})`;\n }\n\n @Input()\n clickable: boolean = false;\n\n @Input()\n showCheckWhenClickable: boolean = true;\n\n @Output()\n itemClick = new EventEmitter<MouseEvent>();\n\n isLegendItemClickable(): boolean {\n return this.clickable && this.visibility !== 'locked';\n }\n}\n\nexport namespace LegendItemComponent {\n export const Styles = ['solid', 'striped'] as const;\n export type Style = (typeof Styles)[number];\n\n export const Visibilities = ['visible', 'hidden', 'locked'] as const;\n export type Visibility = (typeof Visibilities)[number];\n}\n","<button\n (click)=\"isLegendItemClickable() ? itemClick.emit($event) : null\"\n [rivTooltip]=\"iconTooltip\"\n type=\"button\"\n [disabled]=\"visibility === 'locked'\"\n [class.clickable]=\"clickable\"\n>\n <i\n *ngIf=\"visibility === 'visible'\"\n [class.striped]=\"style === 'striped'\"\n [style.background-color]=\"backgroundColor\"\n class=\"opacity-hover\"\n >\n <riv-icon\n *ngIf=\"clickable && showCheckWhenClickable\"\n name=\"Check\"\n [size]=\"16\"\n [strokeWidth]=\"3\"\n style=\"color: var(--white-100)\"\n ></riv-icon>\n </i>\n <i\n *ngIf=\"visibility === 'hidden'\"\n class=\"hidden-legend-item opacity-hover\"\n [class.striped]=\"style === 'striped'\"\n [style.border-color]=\"backgroundColor\"\n [style.--background-color-hover]=\"backgroundColor\"\n ></i>\n <riv-icon *ngIf=\"visibility === 'locked'\" name=\"Lock\" [size]=\"16\"></riv-icon>\n\n <span\n *ngIf=\"label\"\n [class.low-contrast]=\"visibility === 'hidden' || visibility === 'locked'\"\n >\n {{ label }}\n </span>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { isEqual } from 'lodash';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n map,\n scan,\n startWith,\n Subject,\n} from 'rxjs';\nimport { Chart } from './chart';\n\n@Component({\n selector: 'riv-chart',\n templateUrl: './chart.component.html',\n styleUrls: ['./chart.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartComponent {\n @ViewChild('container') container?: ElementRef;\n @ViewChild('moreTextContainer') moreTextContainer?: ElementRef;\n\n HEIGHT = 300;\n\n width$ = new BehaviorSubject(0);\n set width(w: number) {\n this.width$.next(w);\n }\n get width() {\n return this.width$.value;\n }\n\n config$ = new BehaviorSubject<Chart.Config>(Chart.defaultConfig);\n @Input()\n set config(c: Chart.Config) {\n this.config$.next(c);\n }\n get config() {\n return this.config$.value;\n }\n\n data$ = new BehaviorSubject<Chart.Data>({\n x: [],\n ys: [],\n });\n @Input()\n set data(d: Chart.Data) {\n this.data$.next(d);\n }\n get data() {\n return this.data$.value;\n }\n\n toggleLegend(label: string) {\n this.toggleLegend$.next(label);\n }\n\n toggleLegend$ = new Subject<string>();\n\n // toggledLegend$ is just a set of boolean\n // values for which legends have been toggled.\n // We don't know if those legends where already\n // hidden or not, we just know whether they have\n // been toggled.\n toggledLegends$ = this.toggleLegend$.pipe(\n scan<string, Record<string, boolean>>(\n (acc, value) => ({ ...acc, [value]: !acc[value] }),\n {},\n ),\n startWith<Record<string, boolean>>({}),\n );\n\n drawData$ = combineLatest([\n this.width$,\n this.config$,\n this.data$,\n this.toggledLegends$,\n ]).pipe(\n distinctUntilChanged((prev, current) => isEqual(prev, current)),\n map(([width, config, data, toggledLegends]) => {\n if (width == 0) {\n return null;\n }\n const hiddenData = {\n ...data,\n ys: data.ys.map(y => ({\n ...y,\n // if toggled, flip the hidden boolean\n hidden: toggledLegends[y.label] ? !y.hidden : y.hidden,\n })),\n };\n const viewBox = `0 0 ${width} ${this.HEIGHT}`;\n return {\n viewBox,\n data: hiddenData,\n ...Chart.chart(config, hiddenData, {\n width: width,\n height: this.HEIGHT,\n }),\n };\n }),\n );\n\n empty$ = this.data$.pipe(map(d => d.x.length == 0 || d.ys.length == 0));\n\n hover: ReturnType<Chart.Hover> | null = null;\n\n mousemove($event: MouseEvent, hover: Chart.Hover) {\n const containerEl = this.container?.nativeElement as HTMLElement;\n if (containerEl == null) {\n return;\n }\n const rect = containerEl.getBoundingClientRect();\n this.hover = hover({\n rect,\n x: $event.clientX - rect.left,\n y: $event.clientY - rect.top,\n });\n }\n\n mouseleave($event: MouseEvent) {\n this.hover = null;\n }\n\n @Output()\n chartClicked = new EventEmitter<{\n xIndex: number;\n yIndex: number;\n }>();\n\n click() {\n if (this.hover) {\n this.chartClicked.emit({\n xIndex: this.hover.xIndex,\n yIndex: this.hover.yIndex,\n });\n this.hover = null;\n }\n }\n\n varColor(colors: string[], index: number) {\n return `var(${colors[index % colors.length]})`;\n }\n\n showMoreTooltip = false;\n lockShowMoreTooltip = false;\n\n moreTextWidth = 50;\n baseLegendItemWidth = 40;\n widthPerLetter = 6.5;\n\n firstHiddenLegendItemIndex$ = combineLatest([\n this.width$,\n this.config$,\n this.data$,\n ]).pipe(\n distinctUntilChanged((prev, current) => isEqual(prev, current)),\n map(([width, config, data]) => {\n if (!config.truncateLegend) {\n return data.ys.length;\n }\n let widthRunningTotal = 0;\n for (let i = 0; i < data.ys.length; i++) {\n const indItemWidth =\n this.baseLegendItemWidth +\n data.ys[i].label.length * this.widthPerLetter;\n if (widthRunningTotal + indItemWidth >= width - this.moreTextWidth) {\n return i;\n }\n widthRunningTotal += indItemWidth;\n }\n return data.ys.length;\n }),\n );\n\n moreClick() {\n this.lockShowMoreTooltip = !this.lockShowMoreTooltip;\n }\n\n mouseoverLegend() {\n this.showMoreTooltip = true;\n }\n\n mouseleaveLegend() {\n this.showMoreTooltip = false;\n }\n}\n","<div\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n *ngIf=\"(empty$ | async) === false; else zeroState\"\n>\n <ng-container *ngIf=\"drawData$ | async; let d\">\n <div\n (mousemove)=\"mousemove($event, d.hover)\"\n (mouseleave)=\"mouseleave($event)\"\n (click)=\"click()\"\n #container\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" [attr.viewBox]=\"d.viewBox\">\n <g *ngFor=\"let tick of d.xTicks\" text-anchor=\"middle\">\n <line\n class=\"tick-line\"\n [attr.x1]=\"tick.x\"\n [attr.x2]=\"tick.x\"\n y1=\"0\"\n [attr.y2]=\"HEIGHT - 16\"\n ></line>\n <text class=\"tick-label\" [attr.x]=\"tick.x\" [attr.y]=\"HEIGHT - 4\">\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.yTicks\">\n <line\n class=\"tick-line\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n x1=\"0\"\n [attr.x2]=\"width\"\n ></line>\n <text class=\"tick-label\" [attr.y]=\"tick.y - 4\" [attr.x]=\"0\">\n {{ tick.label }}\n </text>\n </g>\n <g *ngIf=\"!!hover\">\n <line\n class=\"tick-line\"\n [attr.x1]=\"hover.x\"\n [attr.x2]=\"hover.x\"\n y1=\"0\"\n [attr.y2]=\"HEIGHT - 16\"\n stroke-width=\"2\"\n stroke-dasharray=\"4\"\n />\n </g>\n <g *ngFor=\"let bar of d.bars; let i = index\">\n <rect\n *ngFor=\"let rect of bar\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"varColor(d.colors, i)\"\n ></rect>\n </g>\n <g *ngFor=\"let line of d.lines; let i = index\">\n <path\n [attr.d]=\"line\"\n [attr.stroke]=\"varColor(d.colors, i)\"\n fill=\"none\"\n stroke-width=\"2\"\n ></path>\n </g>\n <g *ngFor=\"let lineSinglePointFallback of d.circles; let i = index\">\n <circle\n class=\"marker\"\n [attr.cx]=\"lineSinglePointFallback.cx\"\n [attr.cy]=\"lineSinglePointFallback.cy\"\n r=\"3.5\"\n stroke-width=\"2\"\n [attr.stroke]=\"varColor(d.colors, i)\"\n ></circle>\n </g>\n <g *ngFor=\"let line of d.lines; let i = index\">\n <circle\n class=\"marker\"\n *ngIf=\"\n !!hover && (config.groupedTooltip || i === hover.visibleYIndex)\n \"\n [attr.cx]=\"hover.x\"\n [attr.cy]=\"hover.ys[i]\"\n r=\"3.5\"\n stroke-width=\"2\"\n [attr.stroke]=\"varColor(d.colors, i)\"\n ></circle>\n </g>\n <g *ngFor=\"let area of d.areas; let i = index\">\n <path [attr.d]=\"area\" [attr.fill]=\"varColor(d.colors, i)\"></path>\n </g>\n <g *ngFor=\"let area of d.areas; let i = index\">\n <circle\n class=\"marker\"\n *ngIf=\"\n !!hover && (config.groupedTooltip || i === hover.visibleYIndex)\n \"\n [attr.cx]=\"hover.x\"\n [attr.cy]=\"hover.ys[i]\"\n r=\"3.5\"\n stroke-width=\"2\"\n [attr.stroke]=\"varColor(d.colors, i)\"\n ></circle>\n </g>\n </svg>\n <ng-container *ngIf=\"!!hover\">\n <riv-callout\n *riv-overlay\n [anchor]=\"hover.tooltip.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-row\">\n {{ hover.tooltip.date }}\n </div>\n <div\n class=\"callout-row\"\n *ngFor=\"let metric of hover.tooltip.metrics\"\n >\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.color\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n </div>\n <legend>\n <ng-container *ngIf=\"firstHiddenLegendItemIndex$ | async; let fi\">\n <ng-container *ngFor=\"let item of d.data.ys; let i = index\">\n <riv-legend-item\n *ngIf=\"i < fi\"\n [label]=\"item.label\"\n [visibility]=\"item.hidden ? 'hidden' : 'visible'\"\n [clickable]=\"config.allowLegendToggle\"\n [colorToken]=\"config.colors[i % config.colors.length]\"\n (itemClick)=\"toggleLegend(item.label)\"\n ></riv-legend-item>\n </ng-container>\n <div\n #moreTextContainer\n class=\"more-text-container\"\n (mouseover)=\"mouseoverLegend()\"\n (mouseleave)=\"mouseleaveLegend()\"\n (click)=\"moreClick()\"\n *ngIf=\"fi < d.data.ys.length\"\n >\n <span rivLink class=\"more-text\">\n +\n {{ d.data.ys.length - fi }} more\n </span>\n </div>\n <ng-container *ngIf=\"showMoreTooltip || lockShowMoreTooltip\">\n <riv-callout\n *riv-overlay\n [anchor]=\"moreTextContainer?.nativeElement\"\n [isModal]=\"lockShowMoreTooltip\"\n (close)=\"lockShowMoreTooltip = false\"\n [preferredPosition]=\"'bottom-right'\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n >\n <div class=\"legend-tooltip\">\n <ng-container *ngFor=\"let item of d.data.ys; let i = index\">\n <riv-legend-item\n *ngIf=\"i >= fi\"\n [label]=\"item.label\"\n [visibility]=\"item.hidden ? 'hidden' : 'visible'\"\n [clickable]=\"config.allowLegendToggle\"\n [colorToken]=\"config.colors[i % config.colors.length]\"\n (itemClick)=\"toggleLegend(item.label)\"\n ></riv-legend-item>\n </ng-container>\n </div>\n </riv-callout>\n </ng-container>\n </ng-container>\n </legend>\n </ng-container>\n</div>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"config.zeroStateMessage\"></riv-zero-state>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-row]',\n styleUrls: ['./data-table-row.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableRowComponent {\n @Input()\n @HostBinding('class.sub-row')\n public subRow: boolean = false;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n OnInit,\n} from '@angular/core';\nimport { DataTableRowComponent } from './data-table-row.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-cell]',\n styleUrls: ['./data-table-cell.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableCellComponent implements OnInit {\n constructor(private readonly row: DataTableRowComponent) {}\n\n @HostBinding('class.sub-cell')\n public subCell: boolean = false;\n\n ngOnInit(): void {\n this.subCell = this.row.subRow;\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-header-cell]',\n styleUrls: ['./data-table-header-cell.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableHeaderCellComponent {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'riv-data-table',\n styleUrls: ['./data-table.component.css'],\n template: '<table><ng-content></ng-content></table>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableComponent {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { arc, pie } from 'd3-shape';\n\n@Component({\n selector: 'riv-donut',\n templateUrl: './donut.component.html',\n styleUrls: ['./donut.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DonutComponent {\n @Input()\n displayLabel: string = '';\n\n @Input()\n displayValue: string = '';\n\n @Input()\n data: DonutComponent.DataPoint[] = [];\n\n @Input()\n displayTooltip?: string;\n\n @Input()\n size: DonutComponent.Size = 'medium';\n\n readonly HEIGHT = 256;\n\n get arcPaths() {\n const outer = (this.HEIGHT / 2) * 0.9;\n const inner = outer - 12;\n const pieArcs = pie<DonutComponent.DataPoint>()\n .sortValues(null)\n .value(d => d.value)(this.data);\n return pieArcs.map(pieArc =>\n arc<DonutComponent.DataPoint>()\n .innerRadius(inner)\n .outerRadius(outer)\n .padAngle(0.013)\n .startAngle(pieArc.startAngle)\n .endAngle(pieArc.endAngle)(pieArc.data),\n );\n }\n\n getFillStyle(idx: number): string {\n return `var(${this.data[idx].colorToken})`;\n }\n\n get empty(): boolean {\n return (\n this.data.length === 0 || this.data.every(point => point.value === 0)\n );\n }\n}\n\nexport namespace DonutComponent {\n export type DataPoint = {\n value: number;\n colorToken: string;\n };\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<div *ngIf=\"!empty; else zeroState\" class=\"container\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100%\"\n [attr.height]=\"HEIGHT\"\n viewBox=\"-128 -128 256 256\"\n >\n <path\n *ngFor=\"let path of arcPaths; let i = index\"\n [attr.d]=\"path\"\n [attr.fill]=\"getFillStyle(i)\"\n ></path>\n </svg>\n <div class=\"display\">\n <div class=\"value\" [ngClass]=\"size\" [rivTooltip]=\"displayTooltip\">\n {{ displayValue }}\n </div>\n <div class=\"label\">{{ displayLabel }}</div>\n </div>\n</div>\n\n<ng-template #zeroState>\n <riv-zero-state></riv-zero-state>\n</ng-template>\n","export function aggregateValues(values: number[]): number[] {\n return values.map(\n (v, ix) => v + values.slice(ix + 1).reduce((acc, n) => acc + n, 0),\n );\n}\n\nexport function calcPercentageSteps(values: number[]): number[] {\n return values.flatMap((v, ix) => {\n const next = values[ix + 1];\n return next !== undefined\n ? v === 0\n ? 0\n : [Math.round(100 * (next / v))]\n : [];\n });\n}\n\nexport function calcTrends(\n values: number[],\n previousValues: number[],\n): number[] {\n if (values.length !== previousValues.length) {\n return [];\n }\n return values.map((v, ix) => v - previousValues[ix]);\n}\n\nexport function calcPoints(\n values: number[],\n sectionWidth: number,\n height: number,\n gap: number,\n): [number, number][] {\n const divisor = Math.max(...values) / height;\n const normalizedValues = values.map(\n v => height - (divisor === 0 ? 0 : Math.round(v / divisor)),\n );\n\n // plot the points along the top edge of the graph\n return normalizedValues.slice(1).flatMap((v, ix) => [\n // top left point of current section\n [gap * (ix + 1) + sectionWidth * ix, normalizedValues[ix]],\n // bottom right point of current section\n [gap * (ix + 1) + sectionWidth * (ix + 1), v],\n // top left point of next section, required for small sections under vertical lines\n [gap * (ix + 2) + sectionWidth * (ix + 1), v],\n ]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-metric',\n templateUrl: './metric.component.html',\n styleUrls: ['./metric.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MetricComponent {\n @Input()\n label: string = '';\n\n @Input()\n value: string = '';\n\n @Input()\n size: MetricComponent.Size = 'medium';\n\n @Input()\n @HostBinding('class.compact')\n compact: boolean = false;\n\n @Input()\n @HostBinding('class.card')\n card: boolean = false;\n\n @Input()\n help?: string;\n\n @Input()\n align?: MetricComponent.Alignment = 'left';\n\n @Input()\n valueColorToken?: string = '--type-light-high-contrast';\n\n get valueColor(): string {\n return `var(${this.valueColorToken})`;\n }\n}\n\nexport namespace MetricComponent {\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n\n export const Alignments = ['left', 'center', 'right'] as const;\n export type Alignment = (typeof Alignments)[number];\n}\n","<div class=\"label\" [ngClass]=\"align\">\n {{ label }}\n <span *ngIf=\"help\"\n ><riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"12\"></riv-icon>\n </span>\n</div>\n<div class=\"content\" [ngClass]=\"align\">\n <div class=\"value\" [ngClass]=\"size\" [style.color]=\"valueColor\">\n {{ value }}\n </div>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-trend',\n templateUrl: './trend.component.html',\n styleUrls: ['./trend.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TrendComponent {\n @Input()\n label: string = '';\n\n @Input()\n value: number = 0;\n\n @Input()\n successCondition: 'positive' | 'negative' = 'positive';\n\n getClasses() {\n const conditionalClass =\n this.value === 0\n ? ''\n : this.successCondition === 'positive'\n ? this.value > 0\n ? 'success'\n : 'danger'\n : this.value < 0\n ? 'success'\n : 'danger';\n\n return 'trend ' + conditionalClass;\n }\n}\n\nexport namespace TrendComponent {\n export function calculateTrend(\n currentValue: number | null | undefined,\n previousValue: number | null | undefined,\n ): number {\n if (currentValue == null || previousValue == null || previousValue === 0) {\n return 0;\n }\n return currentValue / previousValue - 1;\n }\n\n export function calculatePercentageTrend(\n currentValue: number | null | undefined,\n previousValue: number | null | undefined,\n ): number {\n if (currentValue == null || previousValue == null) {\n return 0;\n }\n return currentValue - previousValue;\n }\n}\n","<span [class]=\"getClasses()\">\n <riv-icon\n class=\"icon\"\n [name]=\"\n value === 0 ? 'ArrowRight' : value > 0 ? 'TrendingUp' : 'TrendingDown'\n \"\n [size]=\"16\"\n ></riv-icon>\n <span>{{ label }}</span>\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\nimport { area } from 'd3-shape';\nimport {\n aggregateValues,\n calcPercentageSteps,\n calcPoints,\n calcTrends,\n} from './funnel-chart.helpers';\n\n@Component({\n selector: 'riv-funnel',\n templateUrl: './funnel-chart.component.html',\n styleUrls: ['./funnel-chart.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FunnelChartComponent implements OnChanges {\n @Input()\n data: FunnelChartComponent.Data[] = [];\n\n @Input()\n isPreAggregated: boolean = false;\n\n @Input()\n graphHeight: number = 200;\n\n @Input()\n graphWidth: number = 1200;\n\n @Input()\n showConverted: boolean = true;\n\n aggregatedValues: number[] = [];\n percentageSteps: number[] = [];\n trends: number[] = [];\n path: string | null = null;\n gapWidth: number = 0;\n sectionWidth: number = 0;\n allZeroes: boolean = true;\n\n ngOnChanges() {\n this.calcValues();\n this.calcTrends();\n this.calcSpace();\n this.createPath();\n }\n\n calcValues() {\n this.aggregatedValues = this.isPreAggregated\n ? this.data.map(d => d.value)\n : aggregateValues(this.data.map(d => d.value));\n\n this.allZeroes = Math.max(...this.aggregatedValues) === 0;\n\n this.percentageSteps = calcPercentageSteps(this.aggregatedValues);\n }\n\n calcTrends() {\n const previousValues = this.data.flatMap(d =>\n d.previousValue !== null ? [d.previousValue] : [],\n );\n\n const aggregatedValues = this.isPreAggregated\n ? previousValues\n : aggregateValues(previousValues);\n\n const previousPercentageSteps = calcPercentageSteps(aggregatedValues);\n\n this.trends = calcTrends(this.percentageSteps, previousPercentageSteps);\n }\n\n calcSpace() {\n this.gapWidth = document.querySelector('.vertical-line')?.clientWidth ?? 2;\n const totalGapSpace = this.percentageSteps.length * this.gapWidth;\n\n this.sectionWidth = Math.round(\n (this.graphWidth - totalGapSpace) / (this.percentageSteps.length || 1),\n );\n }\n\n createPath() {\n const points = calcPoints(\n this.aggregatedValues,\n this.sectionWidth,\n this.graphHeight,\n this.gapWidth,\n );\n\n this.path = area()\n .x(([x, _]) => x)\n .y1(([_, y]) => y)\n .y0(this.graphHeight)(points);\n }\n}\n\nexport namespace FunnelChartComponent {\n export type Data = {\n label: string;\n value: number;\n previousValue: number | null;\n };\n}\n","<div class=\"funnel-chart\">\n <div class=\"header\">\n <!-- allocate space for the header -->\n <riv-metric\n class=\"metric-placeholder\"\n label=\"placeholder\"\n value=\"0\"\n ></riv-metric>\n <!-- center each metric over vertical lines -->\n <riv-metric\n *ngFor=\"let value of aggregatedValues; let ix = index\"\n class=\"metric\"\n [label]=\"data[ix]?.label ?? ''\"\n [value]=\"value.toString()\"\n [style.left.px]=\"ix * sectionWidth + ix * gapWidth\"\n ></riv-metric>\n </div>\n\n <div class=\"chart\">\n <ng-container *ngFor=\"let step of percentageSteps; let ix = index\">\n <div class=\"vertical-line\"></div>\n\n <div>\n <div *ngIf=\"showConverted && !allZeroes\" class=\"step-info\">\n {{ step }}% converted\n <riv-trend\n *ngIf=\"trends[ix] != null\"\n [label]=\"trends[ix]! + '%'\"\n [value]=\"trends[ix]!\"\n ></riv-trend>\n </div>\n\n <!-- allocate space for the graph -->\n <div\n class=\"graph-placeholder\"\n [style.width.px]=\"sectionWidth\"\n [style.height.px]=\"graphHeight\"\n ></div>\n </div>\n </ng-container>\n\n <div class=\"vertical-line\"></div>\n\n <svg\n *ngIf=\"path\"\n class=\"graph\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"graphWidth\"\n [attr.height]=\"graphHeight\"\n >\n <linearGradient id=\"gradient\">\n <stop stop-color=\"var(--purp-30)\" offset=\"0%\" />\n <stop stop-color=\"var(--brand)\" offset=\"100%\" />\n </linearGradient>\n <path [attr.d]=\"path\" fill=\"url(#gradient)\"></path>\n </svg>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-issue',\n templateUrl: './issue.component.html',\n styleUrls: ['./issue.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IssueComponent {\n @Input()\n label?: string;\n\n @Input()\n colorToken: string = '';\n\n @Input()\n textColorOverride?: string;\n\n get backgroundColor(): string {\n return `var(${this.colorToken})`;\n }\n\n get textColor(): string {\n return `var(${\n this.textColorOverride\n ? this.textColorOverride\n : '--type-light-high-contrast'\n })`;\n }\n}\n","<i [style.background-color]=\"backgroundColor\"></i>\n<span *ngIf=\"label\" [style.color]=\"textColor\">{{ label }}</span>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-progress',\n templateUrl: './progress.component.html',\n styleUrls: ['./progress.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressComponent {\n @Input()\n value: number = 0;\n\n @Input()\n max: number = 0;\n\n getWidth(): string {\n if (this.max === 0) return '0%';\n return 100 * Math.min(this.value / this.max, 1) + '%';\n }\n}\n","<div class=\"track\">\n <span class=\"value\" [style.width]=\"getWidth()\"></span>\n</div>\n","import { TimeInterval, utcDay, utcMonth, utcWeek, utcYear } from 'd3-time';\n\nexport const intervals = ['year', 'quarter', 'month', 'week', 'day'] as const;\nexport type Interval = (typeof intervals)[number];\n\nexport function getTimeInterval(interval: Interval): TimeInterval {\n switch (interval) {\n case 'day':\n return utcDay;\n case 'week':\n return utcWeek;\n case 'month':\n return utcMonth;\n case 'quarter':\n return utcMonth.every(3)!;\n case 'year':\n return utcYear;\n }\n}\n\nexport function getMinorIntervalFormat(interval: Interval) {\n switch (interval) {\n case 'day':\n case 'week':\n return '%-d';\n case 'month':\n return '%b';\n case 'quarter':\n return 'Q%q';\n case 'year':\n return '%Y';\n }\n}\n\nexport function getMajorInterval(interval: Interval) {\n switch (interval) {\n case 'day':\n case 'week':\n return 'month';\n case 'month':\n case 'quarter':\n case 'year':\n return 'year';\n }\n}\n\nexport function getMajorIntervalFormat(\n interval: ReturnType<typeof getMajorInterval>,\n hasMultipleYears: boolean,\n) {\n switch (interval) {\n case 'year':\n return hasMultipleYears ? '%Y' : '';\n case 'month':\n return hasMultipleYears ? '%b %Y' : '%b';\n }\n}\n\nexport function getIntervalTitle(interval: Interval) {\n switch (interval) {\n case 'year':\n return 'Years';\n case 'quarter':\n return 'Quarters';\n case 'month':\n return 'Months';\n case 'week':\n return 'Weeks';\n case 'day':\n return 'Days';\n }\n}\n","import { StackedColumnComponent } from './stacked-column.component';\n\nexport function getDateRange(\n stacks: StackedColumnComponent.Stack[],\n): [Date, Date] {\n let min = Infinity;\n let max = -Infinity;\n for (const stack of stacks) {\n for (const series of stack.series) {\n for (const { date } of series.data) {\n const value = date.valueOf();\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n }\n return [new Date(min), new Date(max)];\n}\n\nexport function pointReducer(points: StackedColumnComponent.Value[]) {\n return points.reduce((total, { value }) => total + value, 0);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { index } from 'd3-array';\nimport { scaleBand, scaleLinear } from 'd3-scale';\nimport { stack } from 'd3-shape';\nimport { utcFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport {\n Interval,\n getIntervalTitle,\n getMajorInterval,\n getMajorIntervalFormat,\n getMinorIntervalFormat,\n getTimeInterval,\n intervals,\n} from '../intervals';\nimport { LegendItemComponent } from '../legend-item/legend-item.component';\nimport { getDateRange, pointReducer } from './stacked-column.helpers';\n\nconst DEFAULT_INTERVAL: Interval = 'month';\n\ntype IntervalOption = {\n id: Interval;\n title: string;\n};\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-stacked-column',\n templateUrl: './stacked-column.component.html',\n styleUrls: ['./stacked-column.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackedColumnComponent {\n private readonly input$ = new BehaviorSubject<StackedColumnComponent.Stack[]>(\n [],\n );\n @Input()\n public set input(v: StackedColumnComponent.Stack[]) {\n this.input$.next(v);\n }\n public get input(): StackedColumnComponent.Stack[] {\n return this.input$.getValue();\n }\n\n private readonly width$ = new BehaviorSubject<number>(960);\n protected set width(v: number) {\n this.width$.next(v);\n }\n\n @ContentChild(TemplateRef)\n calloutHeaderTemplate!: TemplateRef<{\n $implicit: StackedColumnComponent.CalloutContext;\n }>;\n\n private readonly HEIGHT = 300;\n\n @Input()\n public valueFormatter: (v: number) => string = v => v.toString();\n\n private readonly interval$ = new BehaviorSubject<Interval>(DEFAULT_INTERVAL);\n @Input()\n public set interval(v: Interval) {\n if (v !== this.interval$.getValue()) {\n this.interval$.next(v);\n this.intervalChanged.emit(v);\n }\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @Output()\n intervalChanged = new EventEmitter<Interval>();\n\n @Output()\n stackClicked = new EventEmitter<StackedColumnComponent.StackClicked>();\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<void>;\n\n private readonly COLUMN_WIDTHS = [8, 16, 40, 72] as const;\n private readonly MIN_COLUMN_WIDTH = this.COLUMN_WIDTHS[0];\n\n private readonly maxColumns$ = this.width$.pipe(\n map(width => {\n const innerWidth = width - this.LEFT_OFFSET;\n const columnWidthWithPadding =\n this.MIN_COLUMN_WIDTH + this.COLUMN_PADDING * 2;\n return Math.floor(innerWidth / columnWidthWithPadding);\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n getXStepsInRange(interval: Interval, minDate: Date, maxDate: Date) {\n const timeInterval = getTimeInterval(interval);\n return timeInterval.range(\n timeInterval.floor(minDate),\n timeInterval.floor(timeInterval.offset(maxDate, 1)),\n ).length;\n }\n\n private readonly allowedIntervals$: Observable<Interval[]> = combineLatest([\n this.input$,\n this.maxColumns$,\n ]).pipe(\n map(([input, maxColumns]) => {\n const [minDate, maxDate] = getDateRange(input);\n\n return intervals.filter(interval => {\n const xStepsCount = this.getXStepsInRange(interval, minDate, maxDate);\n return input.length * xStepsCount <= maxColumns;\n });\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly intervalOptions$ = this.allowedIntervals$.pipe(\n map(intervals =>\n intervals.map(\n (interval): IntervalOption => ({\n id: interval,\n title: getIntervalTitle(interval),\n }),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedIntervalOption$ = combineLatest([\n this.interval$,\n this.intervalOptions$,\n ]).pipe(\n map(([interval, options]) => {\n const allowedIntervals = options.map(({ id }) => id as Interval);\n if (!allowedIntervals.includes(interval)) {\n const firstAllowed = allowedIntervals.at(0);\n const lastAllowed = allowedIntervals.at(-1);\n if (!firstAllowed || !lastAllowed) return null;\n\n if (intervals.indexOf(interval) < intervals.indexOf(firstAllowed))\n interval = firstAllowed;\n if (intervals.indexOf(interval) > intervals.indexOf(lastAllowed))\n interval = lastAllowed;\n }\n return options.find(o => o.id === interval) ?? null;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedInterval$ = this.selectedIntervalOption$.pipe(\n map(option => (option ? (option.id as Interval) : DEFAULT_INTERVAL)),\n );\n\n setIntervalOption(option: IntervalOption | null) {\n if (option) this.interval = option.id;\n }\n\n private columnWidth$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n this.width$,\n ]).pipe(\n map(([input, selectedInterval, width]) => {\n const [minDate, maxDate] = getDateRange(input);\n const xStepCount = this.getXStepsInRange(\n selectedInterval,\n minDate,\n maxDate,\n );\n\n const innerWidth = width - this.LEFT_OFFSET;\n const allowedColumnWidths = this.COLUMN_WIDTHS.filter(columnWidth => {\n const columnWidthWithPadding = columnWidth + this.COLUMN_PADDING * 2;\n return (\n innerWidth - input.length * xStepCount * columnWidthWithPadding >= 0\n );\n });\n const columnWidth = allowedColumnWidths.at(-1);\n if (!columnWidth) return 0;\n\n return columnWidth;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedDataWithRanges$: Observable<{\n stacks: StackedColumnComponent.Stack[];\n getRange: (date: number) => { minDate: Date; maxDate: Date };\n }> = combineLatest([this.input$, this.selectedInterval$]).pipe(\n map(([input, interval]) => {\n const rangeMap = new Map<number, Date>();\n const stacks = input.map((stack): StackedColumnComponent.Stack => {\n const timeInterval = getTimeInterval(interval);\n\n const series = stack.series.map(series => {\n const binned = new Map<number, StackedColumnComponent.Value[]>();\n for (const point of series.data) {\n const binKey = timeInterval.floor(point.date).valueOf();\n const maxDate = rangeMap.get(binKey);\n\n if (!maxDate || maxDate < point.date) {\n rangeMap.set(binKey, point.date);\n }\n\n if (!binned.has(binKey)) {\n binned.set(binKey, []);\n }\n const bin = binned.get(binKey)!;\n bin.push(point);\n }\n return {\n ...series,\n data: [...binned.entries()].map(([dateValue, points]) => ({\n date: new Date(dateValue),\n value: pointReducer(points),\n })),\n };\n });\n return {\n ...stack,\n series: series,\n };\n });\n return {\n stacks,\n getRange: (date: number) => {\n return {\n minDate: new Date(date),\n maxDate: rangeMap.get(date)!,\n };\n },\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedData$ = this.binnedDataWithRanges$.pipe(\n map(binnedData => binnedData.stacks),\n );\n\n readonly getRange$ = this.binnedDataWithRanges$.pipe(\n map(binnedData => binnedData.getRange),\n );\n\n readonly LEFT_OFFSET = 48;\n readonly COLUMN_PADDING = 4;\n\n readonly drawData$ = combineLatest([\n this.binnedData$,\n this.width$,\n this.selectedInterval$,\n this.columnWidth$,\n ]).pipe(\n map(([binnedData, width, interval, columnWidth]) => {\n const viewBox = `0 0 ${width} ${this.HEIGHT}`;\n const padding = 16;\n\n const [minDate, maxDate] = getDateRange(binnedData);\n const hasMultipleYears = minDate.getFullYear() < maxDate.getFullYear();\n const xMinorIntervalFormat = getMinorIntervalFormat(interval);\n const minorFormatter = utcFormat(xMinorIntervalFormat);\n const minorTimeInterval = getTimeInterval(interval);\n const xSteps = minorTimeInterval.range(\n minorTimeInterval.floor(minDate),\n minorTimeInterval.floor(minorTimeInterval.offset(maxDate, 1)),\n );\n const xMajorInterval = getMajorInterval(interval);\n const xMajorIntervalFormat = getMajorIntervalFormat(\n xMajorInterval,\n hasMultipleYears,\n );\n const majorFormatter = utcFormat(xMajorIntervalFormat);\n const fullFormatter = utcFormat(\n `${xMinorIntervalFormat} ${xMajorIntervalFormat}`,\n );\n\n const xOuterScale = scaleBand()\n .domain(xSteps.map(date => fullFormatter(date)))\n .range([this.LEFT_OFFSET, width]);\n\n const outerPadding =\n (xOuterScale.bandwidth() -\n (this.COLUMN_PADDING * (binnedData.length - 1) +\n columnWidth * binnedData.length)) /\n 2;\n\n type SeriesPoint = StackedColumnComponent.Value & {\n series: StackedColumnComponent.Series;\n };\n\n const renderInformation = binnedData.map(stackData => {\n /*\n Create an array with every data point + their associated series.\n i.e. Make an backlink for each element to its series.\n */\n const stackedTable = stackData.series.reduce<SeriesPoint[]>(\n (table, s) => [\n ...table,\n ...s.data.map(point => ({\n ...point,\n series: s,\n })),\n ],\n [],\n );\n\n /*\n Maps each of the SeriesPoints based on label.\n Then map each of those maps to a date.\n\n Example:\n If we were indexing the following data:\n * Estimates Complete -> 5 in January, 7 in February\n * Estimates Incomplete -> 3 in January, 3 in February\n We would get an indexed table like the following, (note this is pseudocode):\n 'January': { 'Estimates Complete': 5, 'Estimates Incomplete': 3 }\n 'February': { 'Estimates Complete': 7, 'Estimates Incomplete': 3 }\n */\n const indexedTable: Map<Date, Map<string, SeriesPoint>> = index(\n stackedTable,\n d => d.date,\n d => d.series.label,\n );\n\n /*\n The output of \"stack()\" is an array of arrays of tuples.\n The tuples unnest as [baseline, topline].\n Each \"key\" involved in the stack has an array of tuples relating to it.\n i.e. [ Date 1 Tuple, Date 2 Tuple ]\n All \"key\" arrays are contained in the outer array.\n i.e. [ Key 1 Tuples, Key 2 Tuples]\n\n We select the keys using \".keys()\".\n For our purposes, the keys are the legend elements.\n i.e. If you have two blocks of the same color, they have the same key.\n\n We select the heights of the blocks using \".value()\".\n\n We are going to stack the blocks on top of each other.\n The baseline of the first key tuples are 0.\n The baseline of the second key tuples are the topline of the associated first key tuple.\n\n Example:\n If we were stacking the following data:\n * Estimates Complete -> 5 in January, 7 in February\n * Estimates Incomplete -> 3 in January, 3 in February\n We would get a stack of:\n [ [ [0,5],[0,7] ], [ [5,8],[7,10] ] ]\n */\n const stacked = stack<\n typeof indexedTable extends Map<infer K, infer V> ? [K, V] : never\n >()\n .keys(stackData.series.map(v => v.label))\n .value(([_, group], key) => {\n return group.get(key)!.value;\n })(indexedTable);\n\n return { indexedTable, stacked };\n });\n\n // The domain should be based on the highest value in any stack, on any date.\n let domainMax = 0;\n // For each unique stack,\n renderInformation.forEach(({ stacked, indexedTable }) => {\n // For each date,\n [...indexedTable.values()].forEach((pointMap, i) => {\n // For each series,\n [...pointMap.values()].forEach((_, j) => {\n domainMax = Math.max(domainMax, ...stacked[j][i]);\n });\n });\n });\n if (domainMax === 0) domainMax = 1;\n const yScale = scaleLinear()\n .domain([0, domainMax])\n .range([this.HEIGHT - padding * 2, padding]);\n\n const rects: {\n dateValue: number;\n x: number;\n y: number;\n width: number;\n height: number;\n fill: string;\n striped: boolean;\n seriesPoint: SeriesPoint;\n }[] = [];\n // For each unique stack,\n renderInformation.forEach(({ stacked, indexedTable }, index) => {\n // For each date,\n [...indexedTable.entries()].forEach(([date, pointMap], i) => {\n // For each series,\n [...pointMap.entries()].forEach(([_, seriesPoint], j) => {\n // Get the size of the box we are about to draw.\n const [baseline, topline] = stacked[j][i];\n\n const width = columnWidth;\n const height = yScale(baseline) - yScale(topline);\n const x =\n (xOuterScale(fullFormatter(date)) ?? 0) +\n outerPadding +\n columnWidth * index +\n this.COLUMN_PADDING * index;\n const y = yScale(baseline) - height;\n const fill = `var(${seriesPoint.series.colorToken})`;\n\n rects.push({\n dateValue: date.valueOf(),\n x,\n y,\n width,\n height,\n fill,\n striped: seriesPoint.series.style === 'striped',\n seriesPoint,\n });\n });\n });\n });\n\n const xMinorTicks = xSteps.map(date => ({\n dateValue: date.valueOf(),\n label: minorFormatter(date),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) + xOuterScale.bandwidth() / 2,\n }));\n const xMajorTicks =\n interval !== 'year'\n ? xSteps\n .map(date => ({\n dateValue: date.valueOf(),\n label: majorFormatter(date),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) +\n xOuterScale.bandwidth() / 2,\n }))\n .filter(\n (tick, i, ticks) =>\n i === 0 || tick.label !== ticks[i - 1].label,\n )\n : [];\n\n const yTicks = yScale.ticks(5);\n\n const hoverBandWidth =\n renderInformation.length * columnWidth +\n (renderInformation.length + 1) * this.COLUMN_PADDING;\n const hoverBands = xSteps.map(date => ({\n dateValue: date.valueOf(),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) +\n (xOuterScale.bandwidth() - hoverBandWidth) / 2,\n y: yScale(domainMax),\n width: hoverBandWidth,\n height: yScale(0) - yScale(domainMax),\n }));\n\n return {\n columnWidth,\n hoverBands,\n rects,\n viewBox,\n xMinorTicks,\n xMajorTicks,\n yScale,\n yTicks,\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly empty$ = this.input$.pipe(\n map(input =>\n input.every(stack =>\n stack.series.every(series => series.data.length === 0),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly hoveredBand$ = new BehaviorSubject<{\n dateValue: number;\n event: MouseEvent;\n } | null>(null);\n\n readonly callout$: Observable<StackedColumnComponent.CalloutContext | null> =\n combineLatest([this.hoveredBand$, this.binnedData$]).pipe(\n map(([hoveredBand, binnedData]) => {\n if (!hoveredBand) return null;\n\n const { target } = hoveredBand.event;\n if (!target) return null;\n const anchor = (<SVGRectElement>target).getBoundingClientRect();\n\n return {\n anchor,\n content: binnedData.map(stack => {\n const seriesPoints = stack.series.map(series => ({\n label: series.label,\n colorToken: series.colorToken,\n style: series.style,\n value:\n series.data.find(\n ({ date }) => date.valueOf() === hoveredBand.dateValue,\n )?.value ?? 0,\n }));\n return {\n title: stack.title,\n total: this.valueFormatter(\n seriesPoints.reduce((acc, point) => point.value + acc, 0),\n ),\n series: seriesPoints.map(point => ({\n ...point,\n formattedValue: this.valueFormatter(point.value),\n })),\n };\n }),\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace StackedColumnComponent {\n export type Value = {\n date: Date;\n value: number;\n };\n\n export type Series = {\n label: string;\n data: Value[];\n colorToken: string;\n style: LegendItemComponent.Style;\n };\n\n export type Stack = {\n title?: string;\n series: Series[];\n };\n\n export type StackClicked = {\n minDate: Date;\n maxDate: Date;\n };\n\n export type CalloutContext = {\n anchor: DOMRect;\n content: {\n title?: string;\n total: string;\n series: {\n label: string;\n colorToken: string;\n style: LegendItemComponent.Style;\n value: number;\n formattedValue: string;\n }[];\n }[];\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let d\"\n [attr.viewBox]=\"d.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"d.columnWidth\"\n [attr.height]=\"d.columnWidth\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n x1=\"0\"\n [attr.y1]=\"d.columnWidth\"\n [attr.x2]=\"d.columnWidth\"\n y2=\"0\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let tick of d.xMinorTicks\">\n <rect\n class=\"tick-background\"\n [class.focused]=\"(hoveredBand$ | async)?.dateValue === tick.dateValue\"\n [attr.x]=\"tick.x - 20\"\n [attr.y]=\"d.yScale(0) + 3\"\n width=\"40\"\n height=\"12\"\n rx=\"2\"\n ></rect>\n <text\n class=\"tick-label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"d.yScale(0) + 12\"\n text-anchor=\"middle\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.xMajorTicks\">\n <text\n class=\"tick-label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"d.yScale(0) + 24\"\n text-anchor=\"middle\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.yTicks\">\n <rect\n class=\"tick\"\n x=\"0\"\n [attr.y]=\"d.yScale(tick)\"\n width=\"100%\"\n height=\"1\"\n ></rect>\n <text class=\"tick-label\" x=\"0\" [attr.y]=\"d.yScale(tick)\" dy=\"-4\">\n {{ valueFormatter(tick) }}\n </text>\n </g>\n <g *ngFor=\"let rect of d.rects\">\n <rect\n class=\"column\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"rect.fill\"\n [class.blurred]=\"\n (hoveredBand$ | async) !== null &&\n (hoveredBand$ | async)?.dateValue !== rect.dateValue\n \"\n ></rect>\n <rect\n *ngIf=\"rect.striped\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"url(#stripes)\"\n ></rect>\n </g>\n <ng-container *ngIf=\"getRange$ | async; let getRange\">\n <rect\n *ngFor=\"let rect of d.hoverBands\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"transparent\"\n (mouseenter)=\"\n hoveredBand$.next({ dateValue: rect.dateValue, event: $event })\n \"\n (mouseleave)=\"hoveredBand$.next(null)\"\n (click)=\"\n stackClicked.emit(getRange(rect.dateValue)); hoveredBand$.next(null)\n \"\n ></rect>\n </ng-container>\n </svg>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-overlay\n [anchor]=\"callout.anchor\"\n [theme]=\"'light'\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [allowedPositions]=\"[\n 'center-right',\n 'center-left',\n 'top-center',\n 'bottom-center'\n ]\"\n >\n <div class=\"callout-content\">\n <ng-container\n [ngTemplateOutlet]=\"calloutHeaderTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: callout }\"\n ></ng-container>\n <div class=\"callout-stack\" *ngFor=\"let stack of callout.content\">\n <div *ngIf=\"stack.title; let title\" class=\"callout-row\">\n <span class=\"series-label\">{{ title }}</span>\n <span>{{ stack.total }}</span>\n </div>\n <div *ngFor=\"let series of stack.series\" class=\"callout-row\">\n <span class=\"series-label\">\n <riv-legend-item\n [colorToken]=\"series.colorToken\"\n [style]=\"series.style\"\n ></riv-legend-item>\n <span>{{ series.label }}</span>\n </span>\n <span>{{ series.formattedValue }}</span>\n </div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state></riv-zero-state>\n</ng-template>\n\n<ng-template #controls>\n <riv-simple-select\n [optionGroups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-simple-select>\n</ng-template>\n","import { InternSet, union } from 'd3-array';\nimport { ScaleLinear } from 'd3-scale';\nimport { LegendItemComponent } from '../legend-item/legend-item.component';\nimport { StackedRowComponent } from './stacked-row.component';\n\n// A row element with a baseline, topline, and a reference to the stack it belongs to\ntype StackedRowElement = StackedRowComponent.RowElement & {\n baseline: number;\n topline: number;\n};\n\n// The data about a rectangle we display on screen\nexport type RowRectangle = {\n x: number;\n y: number;\n width: number;\n height: number;\n fill: string;\n striped: boolean;\n rowName: string;\n stackedRowElement: StackedRowElement;\n stackIndex: number;\n};\n\n// The data about a row label we display on screen\nexport type RowLabel = {\n x: number;\n y: number;\n label: string;\n};\n\n// The data we are displaying in this component\nexport type StackedRowDrawData = {\n legendItems: {\n label: string;\n colorToken: string;\n style?: LegendItemComponent.Style;\n }[];\n rowHeight: number;\n rects: RowRectangle[];\n rowNames: RowLabel[];\n rowTotals: RowLabel[];\n viewBox: string;\n xScale: ScaleLinear<number, number, never>;\n xTicks: number[];\n};\n\n// Everything that describes a row we will display\nexport type RowDisplayInfo = {\n rowName: string;\n elementsButStacked: StackedRowElement[];\n rowTotal: number;\n stackIndex: number;\n};\n\n// Get a ordered+unique list of keys from the row elements\nexport function getKeyOrder(\n rowStacks: StackedRowComponent.RowStack[],\n): InternSet<string> {\n const allRowElements: StackedRowComponent.RowElement[] = [];\n for (const rowStack of rowStacks) {\n allRowElements.push(...rowStack.data);\n }\n const orderedKeys: InternSet<string> = union([\n ...allRowElements.map(rowElement => rowElement.label),\n ]);\n return orderedKeys;\n}\n\n// Get a list of the legend items we should show\nexport function getLegendItems(\n rowsForDisplay: RowDisplayInfo[],\n keysInOrder: InternSet<string>,\n): {\n label: string;\n colorToken: string;\n style?: LegendItemComponent.Style;\n}[] {\n const legendItemArray: ReturnType<typeof getLegendItems> = [];\n for (const rowForDisplay of rowsForDisplay) {\n for (const key of keysInOrder) {\n const elementMatchingKey: StackedRowElement | undefined =\n rowForDisplay.elementsButStacked.find(element => element.label == key);\n if (\n elementMatchingKey &&\n elementMatchingKey.value > 0 &&\n !legendItemArray.find(item => item.label == key)\n ) {\n legendItemArray.push({\n label: elementMatchingKey.label,\n colorToken: elementMatchingKey.colorToken,\n style: elementMatchingKey.style,\n });\n }\n }\n }\n return legendItemArray;\n}\n\n// Make sure we have input in a standard format.\nexport function standardizeRowStacks(\n rowStacks: StackedRowComponent.RowStack[],\n keysInOrder: InternSet<string>,\n): StackedRowComponent.RowStack[] {\n const standardizedRows: StackedRowComponent.RowStack[] = [];\n for (const rowStack of rowStacks) {\n const standardizedData: StackedRowComponent.RowElement[] = [];\n for (const key of keysInOrder) {\n const elementMatchingKey: StackedRowComponent.RowElement | undefined =\n rowStack.data.find(element => element.label == key);\n if (elementMatchingKey) {\n standardizedData.push({\n ...elementMatchingKey,\n value: Math.abs(elementMatchingKey.value),\n });\n }\n }\n standardizedRows.push({\n rowName: rowStack.rowName,\n data: standardizedData,\n });\n }\n return standardizedRows;\n}\n\n// Stacks the elements and creates the baselines and toplines\nexport function getRowDisplayInfo(\n rowStack: StackedRowComponent.RowStack,\n index: number,\n): RowDisplayInfo {\n const elementsButStacked: StackedRowElement[] = [];\n let currentBaseline: number = 0;\n let currentTopline: number = 0;\n\n for (const currentElement of rowStack.data) {\n currentTopline += currentElement.value ?? 0;\n\n elementsButStacked.push({\n ...currentElement,\n baseline: currentBaseline,\n topline: currentTopline,\n });\n\n currentBaseline = currentTopline;\n }\n\n return {\n rowName: rowStack.rowName,\n elementsButStacked: elementsButStacked,\n rowTotal: currentTopline,\n stackIndex: index,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { InternSet } from 'd3-array';\nimport { ScaleLinear, scaleLinear } from 'd3-scale';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport { LegendItemComponent } from '../legend-item/legend-item.component';\nimport {\n RowDisplayInfo,\n RowLabel,\n RowRectangle,\n StackedRowDrawData,\n getKeyOrder,\n getLegendItems,\n getRowDisplayInfo,\n standardizeRowStacks,\n} from './stacked-row.helpers';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-stacked-row',\n templateUrl: './stacked-row.component.html',\n styleUrls: ['./stacked-row.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackedRowComponent {\n // This is the list of rows we will display, in the order we will display them.\n private readonly input$ = new BehaviorSubject<StackedRowComponent.RowStack[]>(\n [],\n );\n @Input()\n public set input(v: StackedRowComponent.RowStack[]) {\n this.input$.next(v);\n }\n public get input(): StackedRowComponent.RowStack[] {\n return this.input$.getValue();\n }\n\n // Width helps determine the size of the viewbox this graph is displaying in.\n private readonly width$ = new BehaviorSubject<number>(0);\n protected set width(v: number) {\n this.width$.next(v);\n }\n\n // ValueFormatter determines how we style the values in a metric and the x-axis\n @Input()\n public valueFormatter: (v: number) => string = v => v.toString();\n\n private readonly zeroStateMessage$ = new BehaviorSubject<string>(\n 'No data to display.',\n );\n @Input()\n public set zeroStateMessage(v: string) {\n this.zeroStateMessage$.next(v);\n }\n public get zeroStateMessage(): string {\n return this.zeroStateMessage$.getValue();\n }\n\n @ContentChild(TemplateRef)\n calloutHeaderTemplate!: TemplateRef<{\n $implicit: StackedRowComponent.CalloutContext;\n }>;\n\n @Output()\n stackClicked = new EventEmitter<StackedRowComponent.StackClicked>();\n\n private readonly chartAndRowHeights$ = this.input$.pipe(\n map(input => {\n const heightWithoutRows =\n input.length * this.SECTION_PADDING.BETWEEN_ROW +\n this.SECTION_PADDING.OUTER_TOP_BOTTOM * 2 +\n this.SECTION_HEIGHTS.X_AXIS_LABEL;\n\n // The combined height of all rows at their min/max\n const minHeight =\n input.length * this.RECTANGLE_HEIGHTS.MIN_HEIGHT + heightWithoutRows;\n const maxHeight =\n input.length * this.RECTANGLE_HEIGHTS.MAX_HEIGHT + heightWithoutRows;\n\n // If the max-sized rows don't need the target size, shrink the chart\n if (maxHeight < this.TARGET_HEIGHT)\n return {\n chartHeight: maxHeight,\n rowHeight: this.RECTANGLE_HEIGHTS.MAX_HEIGHT,\n };\n // If the min-sized rows need more than the target size, grow the chart\n if (minHeight > this.TARGET_HEIGHT)\n return {\n chartHeight: minHeight,\n rowHeight: this.RECTANGLE_HEIGHTS.MIN_HEIGHT,\n };\n // Otherwise shrink the rows to fit the target size\n return {\n chartHeight: this.TARGET_HEIGHT,\n rowHeight: (this.TARGET_HEIGHT - heightWithoutRows) / input.length,\n };\n }),\n );\n\n /*\n The layout we are shooting for is:\n\n | X Axis Labels |\n Row Name | Rectangles | Totals\n */\n readonly TARGET_HEIGHT = 300;\n\n readonly RECTANGLE_HEIGHTS = {\n MIN_HEIGHT: 12, // Sets the smallest size a row can shrink to\n MAX_HEIGHT: 42, // Sets the largest size a row can expand to\n };\n\n readonly LABEL_HEIGHT = 8;\n\n readonly SECTION_HEIGHTS = {\n // Space reserved for the x-axis labels\n X_AXIS_LABEL: 14,\n };\n\n readonly SECTION_WIDTHS = {\n // Space reserved for the name at the start of the row\n ROW_NAME: 100,\n // Space reserved for the totals at the end of the row\n ROW_TOTAL_LABEL: 72,\n };\n\n readonly SECTION_PADDING = {\n // Padding between each edge of the viewbox and the content\n OUTER_TOP_BOTTOM: 4,\n OUTER_LEFT_RIGHT: 4,\n // Padding between the bottom of one row and the top of the next row\n BETWEEN_ROW: 4,\n // Space between the row and the top of a rectangle in that row\n RECTANGLE_TO_ROW: 6,\n };\n\n // The number of X-axis segments to create, with labels at the start of each segment.\n readonly X_TICK_COUNT_MAX = 8;\n readonly X_TICK_COUNT_MIN = 3;\n readonly X_TICK_MAX_WIDTH = 900;\n readonly X_TICK_MIN_WIDTH = 400;\n\n // Zero on the X axis is after the left padding and the row name.\n locationOfXAxisZero() {\n return this.SECTION_PADDING.OUTER_LEFT_RIGHT + this.SECTION_WIDTHS.ROW_NAME;\n }\n // The end of the X axis is right before the row total and the right padding.\n locationOfXAxisEnd(width: number) {\n const spaceOnRight: number =\n this.SECTION_WIDTHS.ROW_TOTAL_LABEL +\n this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n return width - spaceOnRight;\n }\n // The y-index of the x-axis ticks\n locationOfXAxisTick() {\n return (\n this.SECTION_PADDING.OUTER_TOP_BOTTOM + this.SECTION_HEIGHTS.X_AXIS_LABEL\n );\n }\n // The y-index of the top of the current row\n getTopOfRow(rowIndex: number, rowHeight: number) {\n const spaceAboveRows: number =\n this.SECTION_PADDING.OUTER_TOP_BOTTOM + this.SECTION_HEIGHTS.X_AXIS_LABEL;\n\n const aboveRows: number = rowIndex * rowHeight;\n const aboveRowPaddings: number =\n rowIndex * this.SECTION_PADDING.BETWEEN_ROW;\n const allAboveRows: number = aboveRows + aboveRowPaddings;\n\n return spaceAboveRows + allAboveRows;\n }\n\n // Calculate all the values we need for displaying the graph on screen.\n getDrawnData(\n rowStacks: StackedRowComponent.RowStack[],\n width: number,\n chartHeight: number,\n rowHeight: number,\n ) {\n if (rowStacks.length == 0) {\n return null;\n }\n const viewBox = `0 0 ${width} ${chartHeight}`;\n\n const keysInOrder: InternSet<string> = getKeyOrder(rowStacks);\n const standardizedRows: StackedRowComponent.RowStack[] =\n standardizeRowStacks(rowStacks, keysInOrder);\n const rowsForDisplay: RowDisplayInfo[] = standardizedRows.map(\n (stackData, i) => {\n return getRowDisplayInfo(stackData, i);\n },\n );\n\n // The maximum value of the domain should be the highest total value from the rows.\n const domainMax = Math.max(0, ...rowsForDisplay.map(row => row.rowTotal));\n const xScale: ScaleLinear<number, number, never> = scaleLinear()\n .domain([0, domainMax])\n .range([this.locationOfXAxisZero(), this.locationOfXAxisEnd(width)]);\n\n // Setup a linear scale for tick count based on width\n const tickScale = scaleLinear()\n .domain([this.X_TICK_MIN_WIDTH, this.X_TICK_MAX_WIDTH])\n .range([this.X_TICK_COUNT_MIN, this.X_TICK_COUNT_MAX])\n .clamp(true); // Ensures the scale does not go beyond the defined range\n\n const xtickCountAdjusted = Math.round(tickScale(width));\n const xTicks = xScale.ticks(xtickCountAdjusted);\n\n const rects: RowRectangle[] = this.createRectanglesFromRows(\n rowsForDisplay,\n xScale,\n rowHeight,\n );\n\n const rowNamesToDraw: RowLabel[] = this.getRowNamesToDraw(\n rowsForDisplay,\n rowHeight,\n );\n const rowTotalsToDraw: RowLabel[] = this.getRowTotalsToDraw(\n rowsForDisplay,\n width,\n rowHeight,\n );\n\n const legendItems = getLegendItems(rowsForDisplay, keysInOrder);\n\n return {\n legendItems: legendItems,\n rowHeight: rowHeight,\n rects: rects,\n rowNames: rowNamesToDraw,\n rowTotals: rowTotalsToDraw,\n viewBox: viewBox,\n xScale: xScale,\n xTicks: xTicks,\n };\n }\n\n // Get data for all the rectangles for all the rows\n createRectanglesFromRows(\n displayRows: RowDisplayInfo[],\n xScale: ScaleLinear<number, number, never>,\n rowHeight: number,\n ): RowRectangle[] {\n const rectangles: RowRectangle[] = [];\n displayRows.forEach((currentRow, rowIndex) => {\n currentRow.elementsButStacked.forEach((currentElement, _) => {\n const topOfRow: number = this.getTopOfRow(rowIndex, rowHeight);\n\n const rectangleWidth: number =\n xScale(currentElement.topline) - xScale(currentElement.baseline);\n const rectangleHeight: number = rowHeight;\n\n const rectangleX: number = xScale(currentElement.baseline);\n const rectangleY: number =\n topOfRow + this.SECTION_PADDING.RECTANGLE_TO_ROW;\n\n const fill = `var(${currentElement.colorToken})`;\n\n rectangles.push({\n x: rectangleX,\n y: rectangleY,\n width: Math.max(rectangleWidth, 0),\n height: rectangleHeight,\n fill: fill,\n striped: currentElement.style === 'striped',\n rowName: currentRow.rowName,\n stackedRowElement: currentElement,\n stackIndex: currentRow.stackIndex,\n });\n });\n });\n return rectangles;\n }\n\n // Get data on the row names we are drawing\n getRowNamesToDraw(\n displayRows: RowDisplayInfo[],\n rowHeight: number,\n ): RowLabel[] {\n return displayRows.map((row, rowIndex) => {\n const rowLabelX = this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n // The row name looks right if its base is at the base of the associated rectangle\n const rowLabelY =\n this.getTopOfRow(rowIndex, rowHeight) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.LABEL_HEIGHT / 2 +\n rowHeight / 2;\n\n return {\n label: row.rowName,\n x: rowLabelX,\n y: rowLabelY,\n };\n });\n }\n\n // Get data on the row totals we are drawing\n getRowTotalsToDraw(\n displayRows: RowDisplayInfo[],\n width: number,\n rowHeight: number,\n ): RowLabel[] {\n return displayRows.map((row, rowIndex) => {\n const rowLabelX = width - this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n // The row totals looks right if its base is at the base of the associated rectangle\n const rowLabelY =\n this.getTopOfRow(rowIndex, rowHeight) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.LABEL_HEIGHT / 2 +\n rowHeight / 2;\n\n return {\n label: this.valueFormatter(row.rowTotal),\n x: rowLabelX,\n y: rowLabelY,\n };\n });\n }\n\n readonly drawData$: Observable<StackedRowDrawData | null> = combineLatest([\n this.input$,\n this.width$,\n this.chartAndRowHeights$,\n ]).pipe(\n map(([input, width, height]) => {\n return this.getDrawnData(\n input,\n width,\n height.chartHeight,\n height.rowHeight,\n );\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n // Lets us know whether to display the zero data state\n readonly empty$ = this.input$.pipe(\n map(input => input.every(stack => stack.data.length === 0)),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n // What rectangle we are currently hovering over\n readonly hoveredRectangle$ = new BehaviorSubject<{\n rectangle: RowRectangle;\n event: MouseEvent;\n } | null>(null);\n\n // What band we are currently hovering over\n readonly hoveredBand$ = new BehaviorSubject<{\n rowName: string;\n event: MouseEvent;\n } | null>(null);\n\n // Create the metric to display based on the currently hovered rectangle\n readonly callout$ = combineLatest([this.hoveredBand$, this.drawData$]).pipe(\n map(([hoveredBand, drawData]) => {\n if (!hoveredBand || !drawData) return null;\n\n const { target } = hoveredBand.event;\n if (!target) return null;\n const anchor = (<SVGRectElement>target).getBoundingClientRect();\n\n type Metric = { label: string; value: string; colorToken: string };\n const metrics: Metric[] = drawData.rects\n .filter(rect => rect.rowName === hoveredBand.rowName)\n .map(rect => ({\n rect,\n label: rect.stackedRowElement.label,\n value: this.valueFormatter(rect.stackedRowElement.value),\n colorToken: rect.stackedRowElement.colorToken,\n }));\n\n return { anchor, metrics };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace StackedRowComponent {\n // A specifically colored section of one row.\n export type RowElement = {\n label: string; // Legend element name\n value: number;\n colorToken: string;\n style?: LegendItemComponent.Style;\n };\n // The input that determines one row.\n export type RowStack = {\n rowName: string;\n data: RowElement[];\n };\n\n export type StackClicked = {\n stackIndex: number;\n };\n\n export type CalloutContext = {\n anchor: DOMRect;\n metrics: { label: string; value: string; colorToken: string }[];\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let draw\"\n [attr.viewBox]=\"draw.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"draw.rowHeight\"\n [attr.height]=\"draw.rowHeight\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"draw.rowHeight\"\n [attr.y2]=\"draw.rowHeight\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let rowNameToDraw of draw.rowNames\">\n <text\n rivSVGTextTruncate\n [text]=\"rowNameToDraw.label\"\n [width]=\"SECTION_WIDTHS.ROW_NAME\"\n class=\"row-title\"\n [attr.x]=\"rowNameToDraw.x\"\n [attr.y]=\"rowNameToDraw.y\"\n ></text>\n </g>\n <g *ngFor=\"let tick of draw.xTicks\">\n <rect\n class=\"tick\"\n [attr.x]=\"draw.xScale(tick)\"\n y=\"0\"\n width=\"1\"\n height=\"100%\"\n ></rect>\n <text\n class=\"tick-label\"\n [attr.x]=\"draw.xScale(tick)\"\n [attr.y]=\"locationOfXAxisTick()\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ valueFormatter(tick) }}\n </text>\n </g>\n <g\n *ngFor=\"let rect of draw.rects\"\n (mouseenter)=\"hoveredBand$.next({ rowName: rect.rowName, event: $event })\"\n (mouseleave)=\"hoveredBand$.next(null)\"\n (click)=\"\n stackClicked.emit({ stackIndex: rect.stackIndex });\n hoveredBand$.next(null)\n \"\n >\n <rect\n class=\"row\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"rect.fill\"\n [class.blurred]=\"\n (hoveredBand$ | async) !== null &&\n (hoveredBand$ | async)?.rowName !== rect.rowName\n \"\n ></rect>\n <rect\n *ngIf=\"rect.striped\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"url(#stripes)\"\n ></rect>\n </g>\n <g *ngFor=\"let rowTotalToDraw of draw.rowTotals\">\n <text\n class=\"row-total\"\n [attr.x]=\"rowTotalToDraw.x\"\n [attr.y]=\"rowTotalToDraw.y\"\n text-anchor=\"end\"\n >\n {{ rowTotalToDraw.label }}\n </text>\n </g>\n </svg>\n <legend *ngIf=\"drawData$ | async; let draw\">\n <riv-legend-item\n *ngFor=\"let item of draw.legendItems\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [style]=\"item.style ? item.style : 'solid'\"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-overlay\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'bottom-center'\"\n [allowedPositions]=\"[\n 'center-right',\n 'center-left',\n 'top-center',\n 'bottom-center'\n ]\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <ng-container\n [ngTemplateOutlet]=\"calloutHeaderTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: callout }\"\n ></ng-container>\n <div *ngFor=\"let metric of callout.metrics\" class=\"callout-row\">\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.colorToken\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n","import { ScaleLinear } from 'd3-scale';\nimport { TimeSeriesComponent } from './time-series.component';\n\ntype XTick = { value: number; label: string };\n\nexport type Marker = TimeSeriesComponent.DataPoint & { x: number; y: number };\n\ntype YDrawData = TimeSeriesComponent.YConfig & {\n series: (TimeSeriesComponent.Series & {\n path: string | null;\n stroke: string;\n markers: Marker[];\n })[];\n yMax: number;\n yMin: number;\n yScale: ScaleLinear<number, number, never>;\n yTicks: number[];\n};\n\nexport type DrawData = {\n viewBox: string;\n x: {\n xScale: ScaleLinear<number, number, never>;\n xMinorTicks: XTick[];\n xMajorTicks: XTick[];\n xMax: Date;\n };\n y1: YDrawData;\n y2?: YDrawData;\n};\n\nexport function getDateRange(\n configs: TimeSeriesComponent.YConfig[],\n): [Date, Date] {\n let min = Infinity;\n let max = -Infinity;\n for (const config of configs) {\n for (const series of config.series) {\n for (const { date } of series.data) {\n const value = date.valueOf();\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n }\n return [new Date(min), new Date(max)];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { scaleLinear } from 'd3-scale';\nimport { line } from 'd3-shape';\nimport { utcDay } from 'd3-time';\nimport { utcFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport { NumberPipe } from '../../format/pipes/number.pipe';\nimport {\n Interval,\n getIntervalTitle,\n getMajorInterval,\n getMajorIntervalFormat,\n getMinorIntervalFormat,\n getTimeInterval,\n intervals,\n} from '../intervals';\nimport { DrawData, Marker, getDateRange } from './time-series.helpers';\n\nconst DEFAULT_INTERVAL: Interval = 'day';\n\ntype IntervalOption = {\n id: string;\n title: string;\n};\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS. See commit e238c2d.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-time-series',\n templateUrl: './time-series.component.html',\n styleUrls: ['./time-series.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimeSeriesComponent {\n private readonly input$ =\n new BehaviorSubject<TimeSeriesComponent.TimeSeriesInput>([\n {\n pointReducer: points =>\n points.reduce((total, { value }) => total + value, 0),\n valueFormatter: v => new NumberPipe().transform(v) ?? '',\n series: [],\n },\n ]);\n @Input()\n public set input(v: TimeSeriesComponent.TimeSeriesInput) {\n this.input$.next(v);\n }\n public get input(): TimeSeriesComponent.TimeSeriesInput {\n return this.input$.getValue();\n }\n\n private readonly width$ = new BehaviorSubject<number>(0);\n protected set width(v: number) {\n this.width$.next(v);\n }\n protected get width() {\n return this.width$.getValue();\n }\n\n readonly HEIGHT = 300;\n\n private readonly zeroStateMessage$ = new BehaviorSubject<string>(\n 'No data to display.',\n );\n @Input()\n public set zeroStateMessage(v: string) {\n this.zeroStateMessage$.next(v);\n }\n public get zeroStateMessage(): string {\n return this.zeroStateMessage$.getValue();\n }\n\n readonly BOTTOM_OFFSET = 24;\n readonly LEFT_RIGHT_OFFSET = 48;\n readonly TOP_PADDING = 16;\n readonly LEFT_RIGHT_PADDING = 8;\n readonly BOTTOM_PADDING = 8;\n readonly Y_TICK_COUNT = 5;\n readonly POINT_RADIUS = 3.5;\n\n readonly dateRange$ = this.input$.pipe(\n map(getDateRange),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n private readonly interval$ = new BehaviorSubject<Interval>(DEFAULT_INTERVAL);\n @Input()\n public set interval(v: Interval) {\n if (v !== this.interval$.getValue()) {\n this.interval$.next(v);\n this.intervalChanged.emit(v);\n }\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @Output()\n intervalChanged = new EventEmitter<Interval>();\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<void>;\n\n private readonly allowLegendToggle$ = new BehaviorSubject<boolean>(false);\n @Input()\n public set allowLegendToggle(v: boolean) {\n this.allowLegendToggle$.next(v);\n }\n public get allowLegendToggle(): boolean {\n return this.allowLegendToggle$.getValue();\n }\n\n private readonly groupedTooltips$ = new BehaviorSubject<boolean>(true);\n @Input()\n public set groupedTooltips(v: boolean) {\n this.groupedTooltips$.next(v);\n }\n public get groupedTooltips(): boolean {\n return this.groupedTooltips$.getValue();\n }\n\n @Output()\n markerClicked = new EventEmitter<TimeSeriesComponent.MarkerClicked>();\n\n private readonly maxPoints$ = combineLatest([this.width$, this.input$]).pipe(\n map(([width, input]) => {\n const innerWidth = width - this.LEFT_RIGHT_OFFSET * input.length;\n const pointWithPadding = (this.POINT_RADIUS + 4) * 2;\n return Math.floor(innerWidth / pointWithPadding);\n }),\n );\n private readonly xMinorTickLimit$ = combineLatest([\n this.width$,\n this.input$,\n ]).pipe(\n map(([width, input]) => {\n const innerWidth = width - this.LEFT_RIGHT_OFFSET * input.length;\n const minSizePerTick = 40;\n return Math.round(innerWidth / minSizePerTick);\n }),\n );\n\n private readonly allowedIntervals$: Observable<Interval[]> = combineLatest([\n this.input$,\n this.maxPoints$,\n ]).pipe(\n map(([input, maxPoints]) => {\n const [minDateValue, maxDateValue] = getDateRange(input);\n\n return intervals.filter(interval => {\n const timeInterval = getTimeInterval(interval);\n const numSteps = timeInterval.range(\n timeInterval.floor(minDateValue),\n timeInterval.ceil(utcDay.offset(maxDateValue, 1)),\n ).length;\n\n return numSteps <= maxPoints && numSteps > 1;\n });\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly intervalOptions$ = this.allowedIntervals$.pipe(\n map(intervals =>\n intervals.map(\n (interval): IntervalOption => ({\n id: interval,\n title: getIntervalTitle(interval),\n }),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedIntervalOption$ = combineLatest([\n this.interval$,\n this.intervalOptions$,\n ]).pipe(\n map(([interval, options]) => {\n const allowedIntervals = options.map(({ id }) => id as Interval);\n if (!allowedIntervals.includes(interval)) {\n const firstAllowed = allowedIntervals.at(0);\n const lastAllowed = allowedIntervals.at(-1);\n if (!firstAllowed || !lastAllowed) return null;\n\n if (intervals.indexOf(interval) < intervals.indexOf(firstAllowed))\n interval = firstAllowed;\n if (intervals.indexOf(interval) > intervals.indexOf(lastAllowed))\n interval = lastAllowed;\n }\n return options.find(o => o.id === interval) ?? null;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedInterval$ = this.selectedIntervalOption$.pipe(\n map(option => (option ? (option.id as Interval) : DEFAULT_INTERVAL)),\n );\n\n setIntervalOption(option: IntervalOption | null) {\n if (option) this.interval = option.id as Interval;\n }\n\n readonly toggleVisibility$ =\n new BehaviorSubject<TimeSeriesComponent.ToggleVisibility | null>(null);\n\n readonly binnedDataWithRanges$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n this.toggleVisibility$,\n ]).pipe(\n map(([input, interval, toggleVisibility]) => {\n const rangeMap = new Map<number, Date>();\n const series = input.map((config): TimeSeriesComponent.YConfig => {\n return {\n ...config,\n series: config.series.map((series, i) => {\n const binned = new Map<number, TimeSeriesComponent.DataPoint[]>();\n for (const point of series.data) {\n const binKey = getTimeInterval(interval)\n .floor(point.date)\n .valueOf();\n const maxDate = rangeMap.get(binKey);\n\n if (!maxDate || maxDate < point.date) {\n rangeMap.set(binKey, point.date);\n }\n\n if (!binned.has(binKey)) {\n binned.set(binKey, []);\n }\n binned.get(binKey)!.push(point);\n }\n if (\n this.allowLegendToggle &&\n toggleVisibility &&\n series.label === toggleVisibility.label\n ) {\n series.visibility = toggleVisibility.visibility;\n }\n return {\n ...series,\n data: [...binned.entries()].map(([dateValue, points]) => ({\n date: new Date(dateValue),\n value: config.pointReducer(points, i),\n })),\n };\n }),\n };\n });\n return {\n series,\n getRange: (date: Date) => {\n return {\n minDate: date,\n maxDate: rangeMap.get(date.valueOf())!,\n };\n },\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedData$ = this.binnedDataWithRanges$.pipe(\n map(binnedData => binnedData.series),\n );\n\n readonly getRange$ = this.binnedDataWithRanges$.pipe(\n map(binnedData => binnedData.getRange),\n );\n\n readonly binnedDateRange$ = this.binnedData$.pipe(\n map(getDateRange),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n getMarkerClicked(\n range: { minDate: Date; maxDate: Date },\n seriesIndex: number,\n y: 'y1' | 'y2',\n ) {\n return {\n ...range,\n seriesIndex,\n y,\n };\n }\n\n readonly drawData$: Observable<DrawData> = combineLatest([\n this.binnedData$,\n this.binnedDateRange$,\n this.selectedInterval$,\n this.width$,\n this.xMinorTickLimit$,\n ]).pipe(\n map(([binnedData, binnedDateRange, interval, width, xMinorTickLimit]) => {\n const viewBox = `0 0 ${width} ${this.HEIGHT}`;\n\n const xScaleRangeStart = this.LEFT_RIGHT_PADDING + this.LEFT_RIGHT_OFFSET;\n const xScaleRangeEnd =\n width -\n this.LEFT_RIGHT_PADDING * 2 -\n (binnedData.length > 1 ? this.LEFT_RIGHT_OFFSET : 0);\n const xScale = scaleLinear()\n .domain(binnedDateRange)\n .range([xScaleRangeStart, xScaleRangeEnd]);\n const [minDateValue, maxDateValue] = binnedDateRange;\n const hasMultipleYears =\n minDateValue.getFullYear() < maxDateValue.getFullYear();\n const xMinorIntervalFormat = getMinorIntervalFormat(interval);\n const minorFormatter = utcFormat(xMinorIntervalFormat);\n const xMinorTicks = getTimeInterval(interval)\n .range(minDateValue, utcDay.offset(maxDateValue, 1))\n .map(date => ({\n value: utcDay.offset(date, 0).valueOf(),\n label: minorFormatter(date),\n }))\n .filter((_, i, arr) =>\n arr.length > xMinorTickLimit\n ? i % Math.ceil(arr.length / xMinorTickLimit) === 0\n : true,\n );\n const xMajorInterval = getMajorInterval(interval);\n const xMajorIntervalFormat = getMajorIntervalFormat(\n xMajorInterval,\n hasMultipleYears,\n );\n const timeInterval = getTimeInterval(xMajorInterval);\n const tickFloor = timeInterval.floor(minDateValue);\n const tickCeiling = timeInterval.ceil(utcDay.offset(maxDateValue, 1));\n const majorFormatter = utcFormat(xMajorIntervalFormat);\n const xMajorTicks = timeInterval\n .range(tickFloor, tickCeiling)\n .map(tickDate => ({\n label: xMajorInterval === interval ? '' : majorFormatter(tickDate),\n value: tickDate.valueOf(),\n }));\n const x = { xMax: maxDateValue, xScale, xMinorTicks, xMajorTicks };\n\n const [y1, y2] = binnedData.map(config => {\n const visibleSeries = config.series.filter(\n s => s.visibility !== 'hidden',\n );\n const flattenedValues = visibleSeries.reduce<number[]>(\n (values, series) => [\n ...values,\n ...series.data.map(({ value }) => value),\n ],\n [],\n );\n let yMax = config.max ?? Math.max(...flattenedValues, 0);\n const yMin = config.min ?? Math.min(...flattenedValues, 0);\n // RIVET-14605 - if range is [0,0], make it [0,1] instead\n if (yMax == 0 && yMin == 0) {\n yMax = 1;\n }\n const yScale = scaleLinear()\n .domain([yMin, yMax])\n .range([\n this.HEIGHT -\n this.BOTTOM_OFFSET -\n (this.BOTTOM_PADDING + this.TOP_PADDING),\n this.TOP_PADDING,\n ]);\n const yTicks = yScale.ticks(this.Y_TICK_COUNT);\n const series = config.series.map(series => ({\n ...series,\n path: line<TimeSeriesComponent.DataPoint>()\n .x(d => xScale(d.date))\n .y(d => yScale(d.value))(series.data),\n stroke: `var(${series.colorToken})`,\n markers: series.data.map(point => ({\n ...point,\n x: xScale(point.date),\n y: yScale(point.value),\n })),\n }));\n return {\n ...config,\n series,\n yMax,\n yMin,\n yScale,\n yTicks,\n };\n });\n\n // If we have a y2, coerce y1's ticks to be visually equivalent to y2's ticks.\n if (y2?.yTicks) {\n const tickConversionScale = scaleLinear()\n .range(y1.yScale.domain())\n .domain(y2.yScale.domain());\n y1.yTicks = y2.yTicks.map(tickConversionScale);\n }\n\n return { viewBox, x, y1, y2 };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly legend$ = this.binnedData$.pipe(\n map(binnedData =>\n binnedData.reduce<\n {\n label: string;\n colorToken: string;\n visibility: 'visible' | 'hidden';\n }[]\n >(\n (items, config) => [\n ...items,\n ...config.series.map(series => ({\n label: series.label,\n colorToken: series.colorToken,\n visibility: series.visibility ?? 'visible',\n })),\n ],\n [],\n ),\n ),\n );\n\n readonly empty$ = this.binnedData$.pipe(\n map(binnedData =>\n binnedData.every(config =>\n config.series.every(series => series.data.length === 0),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly hoveredMarker$ = new BehaviorSubject<{\n event: MouseEvent;\n marker: Marker;\n seriesIndex: number;\n y: 'y1' | 'y2';\n } | null>(null);\n\n readonly callout$ = combineLatest([\n this.hoveredMarker$,\n this.drawData$,\n this.groupedTooltips$,\n ]).pipe(\n map(([hoveredMarker, drawData, groupedTooltips]) => {\n if (!hoveredMarker) return null;\n\n const { target } = hoveredMarker.event;\n if (!target) return null;\n const markerRect = (<SVGCircleElement>target).getBoundingClientRect();\n const padding = 8;\n const anchor = new DOMRect(\n markerRect.left - padding,\n markerRect.top - padding,\n markerRect.width + padding * 2,\n markerRect.height + padding * 2,\n );\n\n type Metric = { label: string; value: string; colorToken: string };\n const metrics: Metric[] = [];\n\n for (let index = 0; index < drawData.y1.series.length; index++) {\n const series = drawData.y1.series[index];\n const allowed = !groupedTooltips\n ? hoveredMarker.y == 'y1' && hoveredMarker.seriesIndex == index\n : true;\n if (series.visibility !== 'hidden' && allowed) {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\n colorToken: series.colorToken,\n label: series.label,\n value: drawData.y1.valueFormatter(match.value),\n });\n }\n }\n }\n\n if (drawData.y2) {\n for (let index = 0; index < drawData.y2.series.length; index++) {\n const series = drawData.y2.series[index];\n const allowed = !groupedTooltips\n ? hoveredMarker.y == 'y2' && hoveredMarker.seriesIndex == index\n : true;\n if (series.visibility !== 'hidden' && allowed) {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\n colorToken: series.colorToken,\n label: series.label,\n value: drawData.y2.valueFormatter(match.value),\n });\n }\n }\n }\n }\n\n return { anchor, metrics };\n }),\n );\n}\n\nexport namespace TimeSeriesComponent {\n export type Series = {\n label: string;\n colorToken: string;\n data: TimeSeriesComponent.DataPoint[];\n style?: 'solid' | 'dashed';\n visibility?: 'visible' | 'hidden';\n };\n\n export type DataPoint = {\n value: number;\n date: Date;\n };\n\n export type YConfig = {\n pointReducer: (points: DataPoint[], seriesIndex: number) => number;\n valueFormatter: (reducedValue: number) => string;\n series: Series[];\n min?: number;\n max?: number;\n };\n\n export type TimeSeriesInput = [YConfig] | [YConfig, YConfig];\n\n export type ToggleVisibility = {\n label: string;\n visibility: 'hidden' | 'visible';\n };\n\n export type MarkerClicked = {\n minDate: Date;\n maxDate: Date;\n seriesIndex: number;\n y: 'y1' | 'y2';\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let d\"\n [attr.viewBox]=\"d.viewBox\"\n >\n <g *ngFor=\"let tick of d.x.xMajorTicks\">\n <rect\n class=\"tick\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n y=\"0\"\n width=\"1\"\n [attr.height]=\"d.y1.yScale(d.y1.yMin) + BOTTOM_OFFSET\"\n ></rect>\n <text\n *ngIf=\"d.x.xScale(tick.value) >= 0\"\n class=\"x-major-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.x.xMinorTicks\">\n <text\n class=\"x-minor-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n text-anchor=\"middle\"\n dominant-baseline=\"hanging\"\n dy=\"8\"\n >\n {{ tick.label }}\n <title>{{ tick.value | date }}</title>\n </text>\n </g>\n <g *ngFor=\"let tick of d.y1.yTicks\">\n <rect\n class=\"tick\"\n x=\"0\"\n [attr.y]=\"d.y1.yScale(tick)\"\n width=\"100%\"\n height=\"1\"\n ></rect>\n <text class=\"y-tick-label\" x=\"0\" [attr.y]=\"d.y1.yScale(tick)\" dy=\"-4\">\n {{ d.y1.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngFor=\"let tick of d.y2?.yTicks\">\n <text\n class=\"y-tick-label\"\n [attr.x]=\"width\"\n [attr.y]=\"d.y2?.yScale(tick)\"\n text-anchor=\"end\"\n dy=\"-4\"\n >\n {{ d.y2?.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngIf=\"hoveredMarker$ | async; let hoveredMarker\">\n <line\n class=\"hover-rule\"\n [attr.x1]=\"hoveredMarker.marker.x\"\n [attr.y1]=\"d.y1.yScale(d.y1.yMin)\"\n [attr.x2]=\"hoveredMarker.marker.x\"\n [attr.y2]=\"d.y1.yScale(d.y1.yMax)\"\n stroke-width=\"2\"\n stroke-dasharray=\"4\"\n />\n </g>\n\n <ng-template #seriesTpl let-series=\"series\" let-index=\"index\" let-y=\"y\">\n <path\n *ngIf=\"series.visibility !== 'hidden'\"\n class=\"data path\"\n [class.marker-hovered]=\"!!(hoveredMarker$ | async)\"\n [attr.d]=\"series.path\"\n fill=\"none\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n [attr.stroke-dasharray]=\"series.style === 'dashed' ? '4' : null\"\n ></path>\n <ng-container *ngIf=\"getRange$ | async; let getRange\">\n <ng-container *ngFor=\"let marker of series.markers\">\n <circle\n *ngIf=\"series.visibility !== 'hidden'\"\n class=\"data marker\"\n [class.focused]=\"\n (hoveredMarker$ | async)?.marker?.x === marker.x &&\n (groupedTooltips ||\n ((hoveredMarker$ | async)?.seriesIndex == index &&\n (hoveredMarker$ | async)?.y == y))\n \"\n [class.blurred]=\"\n (hoveredMarker$ | async) !== null &&\n ((hoveredMarker$ | async)?.marker?.x !== marker.x ||\n ((hoveredMarker$ | async)?.marker?.x === marker.x &&\n !groupedTooltips &&\n ((hoveredMarker$ | async)?.seriesIndex != index ||\n (hoveredMarker$ | async)?.y != y)))\n \"\n [attr.cx]=\"marker.x\"\n [attr.cy]=\"marker.y\"\n [attr.r]=\"POINT_RADIUS\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n (mouseover)=\"\n hoveredMarker$.next({\n event: $event,\n marker: marker,\n seriesIndex: index,\n y: y\n })\n \"\n (mouseleave)=\"hoveredMarker$.next(null)\"\n (click)=\"\n markerClicked.emit(\n getMarkerClicked(getRange(marker.date), index, y)\n );\n hoveredMarker$.next(null)\n \"\n ></circle>\n </ng-container>\n </ng-container>\n </ng-template>\n <g *ngFor=\"let series of d.y1.series; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n seriesTpl;\n context: { series: series, index: i, y: 'y1' }\n \"\n ></ng-container>\n </g>\n <g *ngFor=\"let series of d.y2?.series; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n seriesTpl;\n context: { series: series, index: i, y: 'y2' }\n \"\n ></ng-container>\n </g>\n </svg>\n <legend>\n <riv-legend-item\n *ngFor=\"let item of legend$ | async\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [visibility]=\"item.visibility\"\n [clickable]=\"allowLegendToggle\"\n (itemClick)=\"\n allowLegendToggle\n ? toggleVisibility$.next({\n label: item.label,\n visibility: item.visibility == 'hidden' ? 'visible' : 'hidden'\n })\n : null\n \"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-overlay\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-row\" *ngFor=\"let metric of callout.metrics\">\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.colorToken\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n\n<ng-template #controls>\n <riv-simple-select\n [optionGroups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-simple-select>\n</ng-template>\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n\n@Directive({\n selector: '[rivVisibility]',\n})\nexport class VisibilityDirective implements OnInit, OnDestroy {\n private intersectionObserver: IntersectionObserver;\n\n @Output()\n rivVisibility = new EventEmitter<boolean>();\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n zone: NgZone,\n ) {\n this.intersectionObserver = new IntersectionObserver(\n entries => {\n zone.run(() => {\n for (const entry of entries) {\n this.rivVisibility.emit(entry.isIntersecting);\n }\n });\n },\n {\n threshold: 0.1,\n },\n );\n }\n\n ngOnInit() {\n this.intersectionObserver.observe(this.elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n this.intersectionObserver.unobserve(this.elementRef.nativeElement);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DatePipe } from './format/pipes/date.pipe';\nimport { DaysPipe } from './format/pipes/days.pipe';\nimport { DollarsPipe } from './format/pipes/dollars.pipe';\nimport { NumberPipe } from './format/pipes/number.pipe';\nimport { PercentagePipe } from './format/pipes/percentage.pipe';\nimport { SmallCurrencyPipe } from './format/pipes/small-currency.pipe';\nimport { SVGTextTruncateDirective } from './format/svg-text-truncate/svg-text-truncate.directive';\nimport { TruncateComponent } from './format/truncate/truncate.component';\nimport { IconComponent } from './icon/icon.component';\nimport { AlphabeticFieldComponent } from './input/alphabetic-field/alphabetic-field.component';\nimport { AutoFocusDirective } from './input/auto-focus/auto-focus.directive';\nimport { ButtonGroupComponent } from './input/button-group/button-group.component';\nimport { ButtonComponent } from './input/button/button.component';\nimport { CalendarComponent } from './input/calendar/calendar.component';\nimport { CardCheckboxComponent } from './input/card-checkbox/card-checkbox.component';\nimport { CheckboxComponent } from './input/checkbox/checkbox.component';\nimport { CurrencyFieldComponent } from './input/currency-field/currency-field.component';\nimport { DateRangeComponent } from './input/date-range/date-range.component';\nimport { DateComponent } from './input/date/date.component';\nimport { InputLabelComponent } from './input/input-label/input-label.component';\nimport { NumberFieldComponent } from './input/number-field/number-field.component';\nimport { PercentageFieldComponent } from './input/percentage-field/percentage-field.component';\nimport { RadioComponent } from './input/radio/radio.component';\nimport { SearchComponent } from './input/search/search.component';\nimport { SelectNodeComponent } from './input/select/select-node/select-node.component';\nimport { SelectComponent } from './input/select/select/select.component';\nimport { OptionGroupPipe } from './input/simple-select/option-group.pipe';\nimport { SimpleSelectComponent } from './input/simple-select/simple-select.component';\nimport { SwitchCheckboxComponent } from './input/switch-checkbox/switch-checkbox.component';\nimport { TextFieldComponent } from './input/text-field/text-field.component';\nimport { TextareaFieldComponent } from './input/textarea-field/textarea-field.component';\nimport { LoadingCoverComponent } from './load/loading-cover/loading-cover.component';\nimport { LoadingComponent } from './load/loading/loading.component';\nimport { LinkComponent } from './navigation/link/link.component';\nimport { TabComponent } from './navigation/tabs/tab/tab.component';\nimport { TabsComponent } from './navigation/tabs/tabs/tabs.component';\nimport { AllViewsModalComponent } from './navigation/views/all-views-modal/all-views-modal.component';\nimport { EditViewComponent } from './navigation/views/edit-view/edit-view.component';\nimport { ViewMenuComponent } from './navigation/views/view-menu/view-menu.component';\nimport { ViewsComponent } from './navigation/views/views/views.component';\nimport { BadgeComponent } from './notification/badge/badge.component';\nimport { BannerActionComponent } from './notification/banner/banner-action.component';\nimport { BannerComponent } from './notification/banner/banner.component';\nimport { NotificationBadgeComponent } from './notification/notification-badge/notification-badge.component';\nimport { CalloutComponent } from './overlay/callout/callout.component';\nimport { HelpComponent } from './overlay/callout/help/help.component';\nimport { LockScrollDirective } from './overlay/callout/lock-scroll.directive';\nimport { MenuDividerComponent } from './overlay/callout/menu/menu-divider/menu-divider.component';\nimport { MenuItemComponent } from './overlay/callout/menu/menu-item/menu-item.component';\nimport { MenuComponent } from './overlay/callout/menu/menu.component';\nimport { LockedTooltipDirective } from './overlay/callout/tooltip/locked-tooltip.directive';\nimport { TooltipComponent } from './overlay/callout/tooltip/tooltip.component';\nimport { TooltipDirective } from './overlay/callout/tooltip/tooltip.directive';\nimport { DialogComponent } from './overlay/modal/dialog/dialog.component';\nimport { ModalComponent } from './overlay/modal/modal.component';\nimport { SideSheetComponent } from './overlay/modal/side-sheet/side-sheet.component';\nimport { OverlayOutletComponent } from './overlay/overlay-outlet.component';\nimport { OverlayDirective } from './overlay/overlay.directive';\nimport { ToastActionComponent } from './overlay/toast/toast-action.component';\nimport { ToastComponent } from './overlay/toast/toast.component';\nimport { SizeDirective } from './size/size.directive';\nimport { SimpleTableCellComponent } from './table/simple-table/simple-table-cell.component';\nimport { SimpleTableHeaderCellComponent } from './table/simple-table/simple-table-header-cell.component';\nimport { SimpleTableRowComponent } from './table/simple-table/simple-table-row.component';\nimport { SimpleTableComponent } from './table/simple-table/simple-table.component';\nimport { TableColumnSettingsSideSheetComponent } from './table/table/table-column-settings/table-column-settings-side-sheet.component';\nimport { TableColumnSettingsComponent } from './table/table/table-column-settings/table-column-settings.component';\nimport { TableCsvExportComponent } from './table/table/table-csv-export/table-csv-export.component';\nimport { TableHeaderResizeHandleComponent } from './table/table/table-header-resize-handle/table-header-resize-handle.component';\nimport { TableSearchComponent } from './table/table/table-search/table-search.component';\nimport { TableComponent } from './table/table/table/table.component';\n\nimport { TableSearchColumnsComponent } from './table/table/table-search-columns/table-search-columns.component';\nimport { ChartComponent } from './visualization/chart/chart.component';\nimport { DataTableCellComponent } from './visualization/data-table/data-table-cell.component';\nimport { DataTableHeaderCellComponent } from './visualization/data-table/data-table-header-cell.component';\nimport { DataTableRowComponent } from './visualization/data-table/data-table-row.component';\nimport { DataTableComponent } from './visualization/data-table/data-table.component';\nimport { DonutComponent } from './visualization/donut/donut.component';\nimport { FunnelChartComponent } from './visualization/funnel-chart/funnel-chart.component';\nimport { HighlightComponent } from './visualization/highlight/highlight.component';\nimport { IssueComponent } from './visualization/issue/issue.component';\nimport { LegendItemComponent } from './visualization/legend-item/legend-item.component';\nimport { MetricComponent } from './visualization/metric/metric.component';\nimport { ProgressComponent } from './visualization/progress/progress.component';\nimport { StackedColumnComponent } from './visualization/stacked-column/stacked-column.component';\nimport { StackedRowComponent } from './visualization/stacked-row/stacked-row.component';\nimport { TimeSeriesComponent } from './visualization/time-series/time-series.component';\nimport { TrendComponent } from './visualization/trend/trend.component';\nimport { ZeroStateComponent } from './visualization/zero-state/zero-state.component';\nimport { VisibilityDirective } from './visibility/visibility.directive';\n\n@NgModule({\n declarations: [\n AllViewsModalComponent,\n AlphabeticFieldComponent,\n AutoFocusDirective,\n BadgeComponent,\n BannerActionComponent,\n BannerComponent,\n ButtonComponent,\n ButtonGroupComponent,\n CalendarComponent,\n CalloutComponent,\n CardCheckboxComponent,\n ChartComponent,\n CheckboxComponent,\n CurrencyFieldComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DialogComponent,\n DollarsPipe,\n DonutComponent,\n EditViewComponent,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n LockedTooltipDirective,\n LockScrollDirective,\n MenuComponent,\n MenuDividerComponent,\n MenuItemComponent,\n MetricComponent,\n ModalComponent,\n NotificationBadgeComponent,\n NumberFieldComponent,\n NumberPipe,\n OptionGroupPipe,\n OverlayDirective,\n OverlayOutletComponent,\n PercentageFieldComponent,\n PercentagePipe,\n ProgressComponent,\n RadioComponent,\n SearchComponent,\n SelectComponent,\n SelectNodeComponent,\n SideSheetComponent,\n SimpleSelectComponent,\n SimpleTableCellComponent,\n SimpleTableComponent,\n SimpleTableHeaderCellComponent,\n SimpleTableRowComponent,\n SizeDirective,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n SwitchCheckboxComponent,\n TabComponent,\n TableColumnSettingsComponent,\n TableColumnSettingsSideSheetComponent,\n TableComponent,\n TableCsvExportComponent,\n TableHeaderResizeHandleComponent,\n TableSearchColumnsComponent,\n TableSearchComponent,\n TabsComponent,\n TextareaFieldComponent,\n TextFieldComponent,\n TimeSeriesComponent,\n ToastActionComponent,\n ToastComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ViewMenuComponent,\n ViewsComponent,\n VisibilityDirective,\n ZeroStateComponent,\n ],\n exports: [\n AllViewsModalComponent,\n AlphabeticFieldComponent,\n AutoFocusDirective,\n BadgeComponent,\n BannerActionComponent,\n BannerComponent,\n ButtonComponent,\n ButtonGroupComponent,\n CalloutComponent,\n CardCheckboxComponent,\n ChartComponent,\n CheckboxComponent,\n CurrencyFieldComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DialogComponent,\n DollarsPipe,\n DonutComponent,\n EditViewComponent,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n LockedTooltipDirective,\n MenuComponent,\n MenuDividerComponent,\n MenuItemComponent,\n MetricComponent,\n ModalComponent,\n NotificationBadgeComponent,\n NumberFieldComponent,\n NumberPipe,\n OptionGroupPipe,\n OverlayDirective,\n OverlayOutletComponent,\n PercentageFieldComponent,\n PercentagePipe,\n ProgressComponent,\n RadioComponent,\n SearchComponent,\n SelectComponent,\n SideSheetComponent,\n SimpleSelectComponent,\n SimpleTableCellComponent,\n SimpleTableComponent,\n SimpleTableHeaderCellComponent,\n SimpleTableRowComponent,\n SizeDirective,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n SwitchCheckboxComponent,\n TabComponent,\n TableColumnSettingsComponent,\n TableColumnSettingsSideSheetComponent,\n TableComponent,\n TableCsvExportComponent,\n TableSearchColumnsComponent,\n TableSearchComponent,\n TabsComponent,\n TextareaFieldComponent,\n TextFieldComponent,\n TimeSeriesComponent,\n ToastActionComponent,\n ToastComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ViewMenuComponent,\n ViewsComponent,\n VisibilityDirective,\n ZeroStateComponent,\n ],\n imports: [CommonModule, RouterModule],\n})\nexport class RivModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["AngularDatePipe","i2.LockScrollDirective","i3.SizeDirective","i1.OverlayService","i2.CalloutComponent","i3.OverlayDirective","i1.TooltipDirective","i1.IconComponent","i2.TooltipDirective","i1.CalloutComponent","i2","i3.IconComponent","i2.HelpComponent","i3.LinkComponent","i1.AutoFocusDirective","i2.InputLabelComponent","i1.ButtonGroupComponent","i4.LoadingComponent","i1.CheckboxComponent","i2.LoadingComponent","i2.AutoFocusDirective","i2.CheckboxComponent","i3.HelpComponent","i4.HighlightComponent","i5.IconComponent","i6.TruncateComponent","i7.NumberPipe","i2.IconComponent","i4.InputLabelComponent","i5.LoadingCoverComponent","i6.OverlayDirective","i7.SearchComponent","i8.SelectNodeComponent","i9.ZeroStateComponent","i10.NumberPipe","i2.SelectComponent","i2.ButtonComponent","i3.SimpleSelectComponent","i4.OptionGroupPipe","i3.CalendarComponent","i4.CalloutComponent","i5.HighlightComponent","i6.IconComponent","i7.InputLabelComponent","i8.OverlayDirective","i9.SimpleSelectComponent","i10.TooltipDirective","i11.OptionGroupPipe","i2.CalendarComponent","i3.CalloutComponent","i4.IconComponent","i5.InputLabelComponent","i7.DatePipe","i1.LockScrollDirective","i2.OverlayDirective","i1.ModalComponent","i1.ButtonComponent","i2.ModalComponent","i5.OverlayDirective","i6.SelectComponent","i7.TextFieldComponent","i4.OverlayDirective","i1.MenuComponent","i3.DialogComponent","i4.EditViewComponent","i5.MenuComponent","i6.MenuDividerComponent","i7.MenuItemComponent","i3.HighlightComponent","i5.SearchComponent","i6.SideSheetComponent","i7.TruncateComponent","i8.ViewMenuComponent","i2.AllViewsModalComponent","i3.ButtonComponent","i7.OverlayDirective","i8.SearchComponent","i9.SizeDirective","i10.ToastComponent","i11.TruncateComponent","i12.ViewMenuComponent","i13.ZeroStateComponent","i14.NumberPipe","i1.NumberPipe","i6.MenuItemComponent","i8.SideSheetComponent","i9.TooltipDirective","i5.CheckboxComponent","i6.HighlightComponent","i7.IconComponent","i1.DownloadService","i4.TooltipDirective","i6.SwitchCheckboxComponent","i7.TooltipDirective","i2.SearchComponent","i3.TableSearchColumnsComponent","i7.LinkComponent","i8.LoadingCoverComponent","i9.MenuComponent","i10.MenuDividerComponent","i11.MenuItemComponent","i12.OverlayDirective","i13.SimpleSelectComponent","i14.SizeDirective","i15.TableHeaderResizeHandleComponent","i16.ZeroStateComponent","i17.NumberPipe","i3.TooltipDirective","i3.LegendItemComponent","i4.LinkComponent","i6.SizeDirective","i7.ZeroStateComponent","i1.DataTableRowComponent","i3.ZeroStateComponent","i2.MetricComponent","i3.TrendComponent","getDateRange","DEFAULT_INTERVAL","i5.SimpleSelectComponent","i8.OptionGroupPipe","union","i5.SizeDirective","i6.SVGTextTruncateDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rivet-health-design-system.mjs","sources":["../../../projects/riv/src/lib/download/download.service.ts","../../../projects/riv/src/lib/format/pipes/common.ts","../../../projects/riv/src/lib/format/pipes/date.pipe.ts","../../../projects/riv/src/lib/format/pipes/days.pipe.ts","../../../projects/riv/src/lib/format/pipes/dollars.pipe.ts","../../../projects/riv/src/lib/format/pipes/number.pipe.ts","../../../projects/riv/src/lib/format/pipes/percentage.pipe.ts","../../../projects/riv/src/lib/format/pipes/small-currency.pipe.ts","../../../projects/riv/src/lib/overlay/callout/callout.helpers.ts","../../../projects/riv/src/lib/overlay/callout/lock-scroll.directive.ts","../../../projects/riv/src/lib/size/size.directive.ts","../../../projects/riv/src/lib/overlay/callout/callout.component.ts","../../../projects/riv/src/lib/overlay/callout/callout.component.html","../../../projects/riv/src/lib/overlay/overlay.service.ts","../../../projects/riv/src/lib/overlay/overlay.directive.ts","../../../projects/riv/src/lib/overlay/callout/tooltip/tooltip.component.ts","../../../projects/riv/src/lib/overlay/callout/tooltip/tooltip.component.html","../../../projects/riv/src/lib/overlay/callout/tooltip/tooltip.directive.ts","../../../projects/riv/src/lib/format/svg-text-truncate/svg-text-truncate.directive.ts","../../../projects/riv/src/lib/format/truncate/truncate.component.ts","../../../projects/riv/src/lib/format/truncate/truncate.component.html","../../../projects/riv/src/lib/icon/dom-cache.ts","../../../projects/riv/src/lib/icon/icons.ts","../../../projects/riv/src/lib/icon/icon.component.ts","../../../projects/riv/src/lib/icon/icon.component.html","../../../projects/riv/src/lib/overlay/callout/help/help.component.ts","../../../projects/riv/src/lib/overlay/callout/help/help.component.html","../../../projects/riv/src/lib/navigation/link/link.component.ts","../../../projects/riv/src/lib/navigation/link/link.component.html","../../../projects/riv/src/lib/input/input-label/input-label.component.ts","../../../projects/riv/src/lib/input/input-label/input-label.component.html","../../../projects/riv/src/lib/input/auto-focus/auto-focus.directive.ts","../../../projects/riv/src/lib/input/text-field/text-field.component.ts","../../../projects/riv/src/lib/input/text-field/text-field.component.html","../../../projects/riv/src/lib/input/alphabetic-field/alphabetic-field.component.ts","../../../projects/riv/src/lib/input/button-group/button-group.component.ts","../../../projects/riv/src/lib/input/button-group/button-group.component.html","../../../projects/riv/src/lib/load/loading/loading.component.ts","../../../projects/riv/src/lib/load/loading/loading.component.html","../../../projects/riv/src/lib/input/button/button.component.ts","../../../projects/riv/src/lib/input/button/button.component.html","../../../projects/riv/src/lib/input/checkbox/checkbox.component.ts","../../../projects/riv/src/lib/input/checkbox/checkbox.component.html","../../../projects/riv/src/lib/input/card-checkbox/card-checkbox.component.ts","../../../projects/riv/src/lib/input/card-checkbox/card-checkbox.component.html","../../../projects/riv/src/lib/input/number-field/number-field.component.ts","../../../projects/riv/src/lib/input/number-field/number-field.component.html","../../../projects/riv/src/lib/input/currency-field/currency-field.component.ts","../../../projects/riv/src/lib/input/currency-field/currency-field.component.html","../../../projects/riv/src/lib/util/local-storage.ts","../../../projects/riv/src/lib/input/select/state.ts","../../../projects/riv/src/lib/load/loading-cover/loading-cover.component.ts","../../../projects/riv/src/lib/load/loading-cover/loading-cover.component.html","../../../projects/riv/src/lib/input/search/search.component.ts","../../../projects/riv/src/lib/input/search/search.component.html","../../../projects/riv/src/lib/visualization/highlight/highlight.helpers.ts","../../../projects/riv/src/lib/visualization/highlight/highlight.component.ts","../../../projects/riv/src/lib/visualization/highlight/highlight.component.html","../../../projects/riv/src/lib/input/select/select-node/select-node.component.ts","../../../projects/riv/src/lib/input/select/select-node/select-node.component.html","../../../projects/riv/src/lib/visualization/zero-state/zero-state.component.ts","../../../projects/riv/src/lib/visualization/zero-state/zero-state.component.html","../../../projects/riv/src/lib/input/select/select/select.component.ts","../../../projects/riv/src/lib/input/select/select/select.component.html","../../../projects/riv/src/lib/input/simple-select/simple-select.component.ts","../../../projects/riv/src/lib/input/simple-select/simple-select.component.html","../../../projects/riv/src/lib/input/simple-select/option-group.pipe.ts","../../../projects/riv/src/lib/input/calendar/calendar.component.ts","../../../projects/riv/src/lib/input/calendar/calendar.component.html","../../../projects/riv/src/lib/input/date-range/date-range.component.ts","../../../projects/riv/src/lib/input/date-range/date-range.component.html","../../../projects/riv/src/lib/input/date/date.component.ts","../../../projects/riv/src/lib/input/date/date.component.html","../../../projects/riv/src/lib/input/percentage-field/percentage-field.component.ts","../../../projects/riv/src/lib/input/percentage-field/percentage-field.component.html","../../../projects/riv/src/lib/input/radio/radio.component.ts","../../../projects/riv/src/lib/input/radio/radio.component.html","../../../projects/riv/src/lib/input/switch-checkbox/switch-checkbox.component.ts","../../../projects/riv/src/lib/input/switch-checkbox/switch-checkbox.component.html","../../../projects/riv/src/lib/input/textarea-field/textarea-field.component.ts","../../../projects/riv/src/lib/input/textarea-field/textarea-field.component.html","../../../projects/riv/src/lib/navigation/tabs/tab/tab.component.ts","../../../projects/riv/src/lib/navigation/tabs/tab/tab.component.html","../../../projects/riv/src/lib/navigation/tabs/tabs/tabs.component.ts","../../../projects/riv/src/lib/navigation/tabs/tabs/tabs.component.html","../../../projects/riv/src/lib/navigation/views/state.ts","../../../projects/riv/src/lib/overlay/overlay-outlet.component.ts","../../../projects/riv/src/lib/overlay/overlay-outlet.component.html","../../../projects/riv/src/lib/overlay/modal/modal.component.ts","../../../projects/riv/src/lib/overlay/modal/modal.component.html","../../../projects/riv/src/lib/overlay/modal/side-sheet/side-sheet.component.ts","../../../projects/riv/src/lib/overlay/modal/side-sheet/side-sheet.component.html","../../../projects/riv/src/lib/overlay/modal/dialog/dialog.component.ts","../../../projects/riv/src/lib/overlay/modal/dialog/dialog.component.html","../../../projects/riv/src/lib/navigation/views/edit-view/edit-view.component.ts","../../../projects/riv/src/lib/navigation/views/edit-view/edit-view.component.html","../../../projects/riv/src/lib/overlay/callout/menu/menu.component.ts","../../../projects/riv/src/lib/overlay/callout/menu/menu.component.html","../../../projects/riv/src/lib/overlay/callout/menu/menu-divider/menu-divider.component.ts","../../../projects/riv/src/lib/overlay/callout/menu/menu-item/menu-item.component.ts","../../../projects/riv/src/lib/overlay/callout/menu/menu-item/menu-item.component.html","../../../projects/riv/src/lib/navigation/views/view-menu/view-menu.component.ts","../../../projects/riv/src/lib/navigation/views/view-menu/view-menu.component.html","../../../projects/riv/src/lib/navigation/views/all-views-modal/all-views-modal.component.ts","../../../projects/riv/src/lib/navigation/views/all-views-modal/all-views-modal.component.html","../../../projects/riv/src/lib/overlay/toast/toast.component.ts","../../../projects/riv/src/lib/overlay/toast/toast.component.html","../../../projects/riv/src/lib/navigation/views/views/views.component.ts","../../../projects/riv/src/lib/navigation/views/views/views.component.html","../../../projects/riv/src/lib/notification/badge/badge.component.ts","../../../projects/riv/src/lib/notification/badge/badge.component.html","../../../projects/riv/src/lib/notification/banner/banner-action.component.ts","../../../projects/riv/src/lib/notification/banner/banner-action.component.html","../../../projects/riv/src/lib/notification/banner/banner.component.ts","../../../projects/riv/src/lib/notification/banner/banner.component.html","../../../projects/riv/src/lib/notification/notification-badge/notification-badge.component.ts","../../../projects/riv/src/lib/overlay/callout/tooltip/locked-tooltip.directive.ts","../../../projects/riv/src/lib/overlay/toast/toast-action.component.ts","../../../projects/riv/src/lib/overlay/toast/toast-action.component.html","../../../projects/riv/src/lib/table/simple-table/simple-table-cell.component.ts","../../../projects/riv/src/lib/table/simple-table/simple-table-cell.component.html","../../../projects/riv/src/lib/table/simple-table/simple-table-header-cell.component.ts","../../../projects/riv/src/lib/table/simple-table/simple-table-header-cell.component.html","../../../projects/riv/src/lib/table/simple-table/simple-table-row.component.ts","../../../projects/riv/src/lib/table/simple-table/simple-table-row.component.html","../../../projects/riv/src/lib/table/table/state.ts","../../../projects/riv/src/lib/table/simple-table/coordinate-helper.ts","../../../projects/riv/src/lib/table/simple-table/simple-table.component.ts","../../../projects/riv/src/lib/table/simple-table/simple-table.component.html","../../../projects/riv/src/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.ts","../../../projects/riv/src/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.html","../../../projects/riv/src/lib/table/table/table-column-settings/table-column-settings.component.ts","../../../projects/riv/src/lib/table/table/table-column-settings/table-column-settings.component.html","../../../projects/riv/src/lib/table/table/table-csv-export/table-csv-export.component.ts","../../../projects/riv/src/lib/table/table/table-csv-export/table-csv-export.component.html","../../../projects/riv/src/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.ts","../../../projects/riv/src/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.html","../../../projects/riv/src/lib/table/table/table-search-columns/table-search-columns.component.ts","../../../projects/riv/src/lib/table/table/table-search-columns/table-search-columns.component.html","../../../projects/riv/src/lib/table/table/table-search/table-search.component.ts","../../../projects/riv/src/lib/table/table/table-search/table-search.component.html","../../../projects/riv/src/lib/table/table/table/table.component.ts","../../../projects/riv/src/lib/table/table/table/table.component.html","../../../projects/riv/src/lib/visualization/chart/chart.ts","../../../projects/riv/src/lib/visualization/legend-item/legend-item.component.ts","../../../projects/riv/src/lib/visualization/legend-item/legend-item.component.html","../../../projects/riv/src/lib/visualization/chart/chart.component.ts","../../../projects/riv/src/lib/visualization/chart/chart.component.html","../../../projects/riv/src/lib/visualization/data-table/data-table-row.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table-cell.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table-header-cell.component.ts","../../../projects/riv/src/lib/visualization/data-table/data-table.component.ts","../../../projects/riv/src/lib/visualization/donut/donut.component.ts","../../../projects/riv/src/lib/visualization/donut/donut.component.html","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.helpers.ts","../../../projects/riv/src/lib/visualization/metric/metric.component.ts","../../../projects/riv/src/lib/visualization/metric/metric.component.html","../../../projects/riv/src/lib/visualization/trend/trend.component.ts","../../../projects/riv/src/lib/visualization/trend/trend.component.html","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.component.ts","../../../projects/riv/src/lib/visualization/funnel-chart/funnel-chart.component.html","../../../projects/riv/src/lib/visualization/issue/issue.component.ts","../../../projects/riv/src/lib/visualization/issue/issue.component.html","../../../projects/riv/src/lib/visualization/progress/progress.component.ts","../../../projects/riv/src/lib/visualization/progress/progress.component.html","../../../projects/riv/src/lib/visualization/intervals.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.helpers.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.component.ts","../../../projects/riv/src/lib/visualization/stacked-column/stacked-column.component.html","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.helpers.ts","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.component.ts","../../../projects/riv/src/lib/visualization/stacked-row/stacked-row.component.html","../../../projects/riv/src/lib/visualization/time-series/time-series.helpers.ts","../../../projects/riv/src/lib/visualization/time-series/time-series.component.ts","../../../projects/riv/src/lib/visualization/time-series/time-series.component.html","../../../projects/riv/src/lib/visibility/visibility.directive.ts","../../../projects/riv/src/lib/riv.module.ts","../../../projects/riv/src/rivet-health-design-system.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class DownloadService {\n constructor(@Inject(DOCUMENT) private readonly documentRef: Document) {}\n\n async downloadUrl(url: string, filename?: string, target?: string) {\n const a = this.documentRef.createElement('a');\n if (filename) {\n a.download = filename;\n }\n if (target) {\n a.target = target;\n }\n a.href = url;\n document.body.appendChild(a);\n a.click();\n await new Promise<void>(resolve =>\n setTimeout(() => {\n a.remove();\n URL.revokeObjectURL(a.href);\n resolve();\n }, 0),\n );\n }\n\n async downloadBlob(blob: Blob, filename: string) {\n const a = this.documentRef.createElement('a');\n a.download = filename;\n a.href = URL.createObjectURL(blob);\n document.body.appendChild(a);\n a.click();\n await new Promise<void>(resolve =>\n setTimeout(() => {\n a.remove();\n URL.revokeObjectURL(a.href);\n resolve();\n }, 0),\n );\n }\n}\n","export const NO_DATA_FALLBACK = '-';\n","import { DatePipe as AngularDatePipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDate' })\nexport class DatePipe implements PipeTransform {\n private readonly inner = new AngularDatePipe('en-US');\n transform(\n value?: string | number | Date | null,\n format?: string,\n timezone?: string,\n ) {\n return (\n this.inner.transform(value, format ?? 'shortDate', timezone) ??\n NO_DATA_FALLBACK\n );\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDays' })\nexport class DaysPipe implements PipeTransform {\n private readonly inner = new DecimalPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n const ret = this.inner.transform(value, digitsInfo ?? '1.0-2');\n return ret ? ret + (value === 1 ? ' day' : ' days') : NO_DATA_FALLBACK;\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivDollars' })\nexport class DollarsPipe implements PipeTransform {\n readonly inner = new CurrencyPipe('en-us');\n public transform(value?: number | string | null, digitsInfo?: string) {\n return (\n this.inner.transform(\n value,\n undefined,\n undefined,\n digitsInfo ?? '1.2-2',\n ) ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivNumber' })\nexport class NumberPipe implements PipeTransform {\n private readonly inner = new DecimalPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n return (\n this.inner.transform(value, digitsInfo ?? '1.0-0') ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { PercentPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivPercentage' })\nexport class PercentagePipe implements PipeTransform {\n private readonly inner = new PercentPipe('en-us');\n transform(value?: string | number | null, digitsInfo?: string) {\n return (\n this.inner.transform(value, digitsInfo ?? '1.1-1') ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { NO_DATA_FALLBACK } from './common';\n\n@Pipe({ name: 'rivSmallCurrency' })\nexport class SmallCurrencyPipe implements PipeTransform {\n private readonly inner = new CurrencyPipe('en-us');\n public transform(value?: number | string | null, digitsInfo?: string) {\n if (value === null || value === undefined) {\n return NO_DATA_FALLBACK;\n }\n\n const num: number =\n typeof value == 'string' ? Number.parseFloat(value) : value;\n const magnitude = Math.log10(Math.abs(num));\n\n if (num === 0) {\n return (\n this.inner.transform(\n num,\n undefined,\n undefined,\n digitsInfo ?? '1.0-0',\n ) ?? NO_DATA_FALLBACK\n );\n }\n if (magnitude >= 9) {\n return (\n (this.inner.transform(\n num / 1_000_000_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000_000_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'B'\n );\n }\n if (magnitude >= 6) {\n return (\n (this.inner.transform(\n num / 1_000_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'M'\n );\n }\n if (magnitude >= 3) {\n return (\n (this.inner.transform(\n num / 1_000,\n undefined,\n undefined,\n digitsInfo ?? num / 1_000 >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK) + 'K'\n );\n }\n return (\n this.inner.transform(\n num,\n undefined,\n undefined,\n digitsInfo ?? num >= 100 ? '1.0-0' : '1.0-2',\n ) ?? NO_DATA_FALLBACK\n );\n }\n}\n","import { CalloutComponent } from './callout.component';\n\ntype Dimensions = {\n width: number;\n height: number;\n};\n\ntype Point = {\n x: number;\n y: number;\n};\n\nexport type Box = Point & Dimensions;\n\nexport type Anchor = Point & { position: CalloutComponent.AnchoredPosition };\n\nexport function getOrigin(\n anchor: Box,\n client: Dimensions,\n viewportSize: Dimensions,\n preferredPosition: CalloutComponent.AnchoredPosition,\n allowedPositions: CalloutComponent.AnchoredPosition[] | null = null,\n fallbackDirection: CalloutComponent.Direction,\n additionalOffset: number,\n): Anchor {\n let position = preferredPosition;\n const allowed =\n !allowedPositions || allowedPositions.length === 0\n ? CalloutComponent.AnchoredPositions\n : allowedPositions;\n let index = allowed.indexOf(position);\n let leastClippedIndex = index;\n let origin = originAtPosition(anchor, client, position, additionalOffset);\n let currentClippedX;\n let currentClippedY;\n let leastClipped = Infinity;\n let foundUnclipped = false;\n // Iterate through allowed positions. The first one we find that doesn't clip out of view, we use.\n // If all of the positions clip, use the one which clipped the least.\n for (\n let checkCount = 0;\n checkCount <= allowed.length && !foundUnclipped;\n checkCount++,\n index =\n fallbackDirection === 'clockwise'\n ? (index + 1) % allowed.length\n : (index - 1 + allowed.length) % allowed.length\n ) {\n position = allowed[index];\n origin = originAtPosition(anchor, client, position, additionalOffset);\n currentClippedX =\n -1 *\n Math.min(origin.x, viewportSize.width - (origin.x + client.width), 0);\n currentClippedY =\n -1 *\n Math.min(origin.y, viewportSize.height - (origin.y + client.height), 0);\n if (currentClippedX > 0 || currentClippedY > 0) {\n const clippedArea =\n currentClippedX * currentClippedY +\n currentClippedX * (client.height - currentClippedY) +\n currentClippedY * (client.width - currentClippedX);\n if (leastClipped > clippedArea) {\n leastClipped = clippedArea;\n leastClippedIndex = index;\n }\n } else {\n foundUnclipped = true;\n }\n }\n if (!foundUnclipped) {\n position = allowed[leastClippedIndex];\n origin = originAtPosition(anchor, client, position, additionalOffset);\n origin.y = origin.y < 0 ? 4 : origin.y;\n }\n return { ...origin, position };\n}\n\nexport function originAtPosition(\n anchor: Box,\n client: Dimensions,\n position: CalloutComponent.AnchoredPosition,\n offset: number,\n): Point {\n switch (position) {\n case 'top-left':\n return {\n x: anchor.x + anchor.width - client.width,\n y: anchor.y - client.height - offset,\n };\n case 'top-center':\n return {\n x: anchor.x + anchor.width / 2 - client.width / 2,\n y: anchor.y - client.height - offset,\n };\n case 'top-right':\n return {\n x: anchor.x,\n y: anchor.y - client.height - offset,\n };\n case 'right-top':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y,\n };\n case 'center-right':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y + anchor.height / 2 - client.height / 2,\n };\n case 'right-bottom':\n return {\n x: anchor.x + anchor.width + offset,\n y: anchor.y + anchor.height - client.height,\n };\n case 'bottom-right':\n return {\n x: anchor.x,\n y: anchor.y + anchor.height + offset,\n };\n case 'bottom-center':\n return {\n x: anchor.x + anchor.width / 2 - client.width / 2,\n y: anchor.y + anchor.height + offset,\n };\n case 'bottom-left':\n return {\n x: anchor.x + anchor.width - client.width,\n y: anchor.y + anchor.height + offset,\n };\n case 'left-bottom':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y + anchor.height - client.height,\n };\n case 'center-left':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y + anchor.height / 2 - client.height / 2,\n };\n case 'left-top':\n return {\n x: anchor.x - client.width - offset,\n y: anchor.y,\n };\n }\n}\n","import { Directive, Injectable, Input, OnDestroy, OnInit } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class LockScrollContextService {\n private stack = 0;\n\n getContext() {\n return this.stack;\n }\n\n pushContext() {\n return ++this.stack;\n }\n\n popContext() {\n return --this.stack;\n }\n\n public scrollPosition: number = 0;\n}\n\n@Directive({ selector: '[rivLockScroll]' })\nexport class LockScrollDirective implements OnInit, OnDestroy {\n constructor(private readonly context: LockScrollContextService) {}\n\n @Input('rivLockScroll')\n lock: boolean = false;\n\n ngOnInit() {\n if (this.lock) {\n const oldContext = this.context.getContext();\n const newContext = this.context.pushContext();\n if (oldContext === 0 && newContext === 1) {\n this.lockScroll();\n }\n }\n }\n\n ngOnDestroy() {\n if (this.lock) {\n const oldContext = this.context.getContext();\n const newContext = this.context.popContext();\n if (oldContext === 1 && newContext === 0) {\n this.unlockScroll();\n }\n }\n }\n\n private lockScroll() {\n this.context.scrollPosition = document.documentElement.scrollTop;\n document.body.style.position = 'fixed';\n document.body.style.overflow = 'hidden';\n document.body.style.width = '100%';\n document.body.style.height = '100%';\n document.body.style.top = `${this.context.scrollPosition * -1}px`;\n }\n\n private unlockScroll() {\n document.body.removeAttribute('style');\n document.documentElement.scrollTop = this.context.scrollPosition;\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n\n@Directive({\n selector: '[rivClientSize]',\n})\nexport class SizeDirective implements OnInit, OnDestroy {\n private resizeObserver: ResizeObserver;\n\n @Output()\n rivClientSize = new EventEmitter<DOMRect>();\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n zone: NgZone,\n ) {\n this.resizeObserver = new ResizeObserver(entries => {\n zone.run(() => {\n for (const entry of entries) {\n this.rivClientSize.emit(entry.target.getBoundingClientRect());\n }\n });\n });\n }\n\n ngOnInit() {\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n this.resizeObserver.unobserve(this.elementRef.nativeElement);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { getOrigin } from './callout.helpers';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of lifecycle hooks.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-callout',\n templateUrl: './callout.component.html',\n styleUrls: ['./callout.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalloutComponent implements AfterViewInit, OnChanges {\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @Input()\n anchor: Element | DOMRect | null = null;\n\n @Input()\n isModal: boolean = true;\n\n @Input()\n preferredPosition: CalloutComponent.AnchoredPosition = 'bottom-right';\n\n @Input()\n allowedPositions: CalloutComponent.AnchoredPosition[] = [\n ...CalloutComponent.AnchoredPositions,\n ];\n\n @Input()\n fallbackDirection: CalloutComponent.Direction = 'counter-clockwise';\n\n @Input()\n showCaret: boolean = true;\n\n @Input()\n theme: CalloutComponent.Theme = 'dark';\n\n @ViewChild('content')\n content: ElementRef<HTMLDivElement> | null = null;\n\n @ViewChild('scrim', { static: false })\n scrim: ElementRef<HTMLElement> | null = null;\n\n private mouseDownInsideContent: boolean = false;\n\n scrimMouseDown(evt: MouseEvent) {\n this.mouseDownInsideContent =\n this.content?.nativeElement.contains(evt.target as Node) ?? false;\n }\n\n scrimClick(evt: MouseEvent) {\n // A click always starts with a mousedown. If a user mouse downs inside the\n // content and then drags to the scrim, this will trigger a click on the scrim.\n // This can happen if the user selects text and drags too far, leading to a\n // bad experience. To prevent that, we track if the mousedown started inside\n // the content. If it did, we ignore the click on the scrim. If it didn't,\n // we allow the click to close the callout.\n if (evt.target === evt.currentTarget && !this.mouseDownInsideContent) {\n this.close.emit();\n }\n // always reset the flag after a click\n this.mouseDownInsideContent = false;\n }\n\n left: number = 0;\n top: number = 0;\n resolvedPosition: CalloutComponent.AnchoredPosition = this.preferredPosition;\n\n ngAfterViewInit() {\n this.setPosition();\n }\n ngOnChanges() {\n this.setPosition();\n }\n onContentSizeChanges() {\n this.setPosition();\n }\n\n setPosition() {\n const windowSize = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n if (this.anchor === null || this.content === null || this.scrim === null)\n return;\n\n const scrimRect = this.scrim.nativeElement.getBoundingClientRect();\n\n const anchorRect =\n this.anchor instanceof Element\n ? this.anchor.getBoundingClientRect()\n : this.anchor;\n\n const anchorBounds = {\n x: anchorRect.left - scrimRect.left, // In most cases, the scrim will be positioned at (0,0), but if it's not, this will make sure the callout is positioned correctly regardless.\n y: anchorRect.top - scrimRect.top,\n width: anchorRect.right - anchorRect.left,\n height: anchorRect.bottom - anchorRect.top,\n };\n\n const calloutSize = {\n width: this.content.nativeElement.clientWidth,\n height: this.content.nativeElement.clientHeight,\n };\n\n const calloutOrigin = getOrigin(\n anchorBounds,\n calloutSize,\n windowSize,\n this.preferredPosition,\n this.allowedPositions,\n this.fallbackDirection,\n this.showCaret ? 8 : 0,\n );\n\n this.left = calloutOrigin.x;\n this.top = calloutOrigin.y;\n this.resolvedPosition = calloutOrigin.position;\n this.cdr.detectChanges();\n }\n\n @Output()\n readonly close = new EventEmitter<void>();\n}\n\nexport namespace CalloutComponent {\n export const Themes = ['light', 'dark'] as const;\n export type Theme = (typeof Themes)[number];\n\n export const AnchoredPositions = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'right-top',\n 'center-right',\n 'right-bottom',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left',\n 'left-bottom',\n 'center-left',\n 'left-top',\n ] as const;\n export type AnchoredPosition = (typeof AnchoredPositions)[number];\n\n export const Directions = ['clockwise', 'counter-clockwise'] as const;\n export type Direction = (typeof Directions)[number];\n}\n","<div\n #scrim\n class=\"scrim\"\n [class.full]=\"isModal\"\n (click)=\"scrimClick($event)\"\n (mousedown)=\"scrimMouseDown($event)\"\n>\n <div\n class=\"callout\"\n (rivClientSize)=\"onContentSizeChanges()\"\n [ngClass]=\"[theme, resolvedPosition]\"\n [class.caret]=\"showCaret\"\n [style.left.px]=\"left\"\n [style.top.px]=\"top\"\n [rivLockScroll]=\"isModal\"\n #content\n >\n <ng-content></ng-content>\n </div>\n</div>\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nexport type Overlays = Map<Symbol, TemplateRef<void>>;\n\n@Injectable({ providedIn: 'root' })\nexport class OverlayService {\n public overlays = new BehaviorSubject<Overlays>(new Map());\n\n // Note: these functions are async because Angular's change detection fails\n // to detect changes properly when the source of an event is from within a\n // template that is being removed as a result of that event. The Angular\n // template sees a cached version of the overlays Map (even though the\n // component TypeScript picks up on the changed Map), regardless of trying to\n // trigger change detection manually. Moving the change to the next tick with\n // this faux async fixes the issue. We may be able to remove them after an\n // Angular upgrade (TODO).\n // https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n public async add(overlay: TemplateRef<void>): Promise<Symbol> {\n const key = Symbol();\n const overlays = new Map(this.overlays.getValue());\n overlays.set(key, overlay);\n this.overlays.next(overlays);\n return key;\n }\n public async remove(key: Symbol) {\n const overlays = new Map(this.overlays.getValue());\n overlays.delete(key);\n this.overlays.next(overlays);\n }\n}\n","import { Directive, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { OverlayService } from './overlay.service';\n\n@Directive({\n selector: '[riv-overlay]',\n})\nexport class OverlayDirective implements OnInit, OnDestroy {\n constructor(\n private readonly template: TemplateRef<void>,\n private readonly overlayService: OverlayService,\n ) {}\n\n private key?: Promise<Symbol>;\n\n ngOnInit() {\n this.key = this.overlayService.add(this.template);\n }\n\n ngOnDestroy() {\n if (this.key) this.key.then(k => this.overlayService.remove(k));\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { CalloutComponent } from '../callout.component';\n\nfunction isTemplate(v: string | TemplateRef<void>): v is TemplateRef<void> {\n return typeof v !== 'string';\n}\n\n@Component({\n selector: 'riv-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent {\n @Input()\n anchor: Element | DOMRect | null = null;\n\n @Input()\n content?: string | TemplateRef<void>;\n\n @Input()\n theme: CalloutComponent.Theme = 'dark';\n\n @Input()\n maxWidth: string = 'calc(var(--base-grid-size) * 50)';\n\n @Input()\n preferredPosition: TooltipComponent.AnchoredPosition = 'top-center';\n\n @Output()\n onMouseEnter = new EventEmitter<MouseEvent>();\n\n @Output()\n onMouseLeave = new EventEmitter<MouseEvent>();\n\n @HostListener('mouseleave') _onMouseLeave(evt: MouseEvent) {\n this.onMouseLeave.emit(evt);\n }\n\n @HostListener('mouseenter') _onMouseEnter(evt: MouseEvent) {\n this.onMouseEnter.emit(evt);\n }\n\n readonly isTemplate = isTemplate;\n readonly allowedPositions = [...TooltipComponent.AnchoredPositions];\n}\n\nexport namespace TooltipComponent {\n export const AnchoredPositions = [\n 'top-center',\n 'center-right',\n 'bottom-center',\n 'center-left',\n ] as const;\n export type AnchoredPosition = Extract<\n (typeof AnchoredPositions)[number],\n CalloutComponent.AnchoredPosition\n >;\n}\n","<riv-callout\n *riv-overlay\n [anchor]=\"anchor\"\n [preferredPosition]=\"preferredPosition\"\n [allowedPositions]=\"allowedPositions\"\n [isModal]=\"false\"\n [theme]=\"theme\"\n>\n <ng-container *ngIf=\"content && isTemplate(content); else stringContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #stringContent>\n <div class=\"string-content\" [style.max-width]=\"maxWidth\">\n {{ content }}\n </div>\n </ng-template>\n</riv-callout>\n","import {\n ApplicationRef,\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { TooltipComponent } from './tooltip.component';\n\n@Directive({\n selector: '[rivTooltip]',\n})\nexport class TooltipDirective implements OnDestroy {\n constructor(\n protected readonly el: ElementRef,\n protected readonly applicationRef: ApplicationRef,\n ) {}\n\n @Input()\n rivTooltip?: string | TemplateRef<void>;\n\n @Input()\n rivTooltipTheme: 'dark' | 'light' = 'dark';\n\n @Input()\n rivTooltipMaxWidth = 'calc(var(--base-grid-size) * 50)';\n\n @Input()\n rivTooltipPreferredPosition: TooltipComponent.AnchoredPosition = 'top-center';\n\n @Input()\n rivTooltipCloseDelay: number = 100;\n\n private tooltipRef?: ComponentRef<TooltipComponent>;\n private closeTimeout?: number;\n\n @HostListener('mouseenter') onMouseEnter() {\n if (!this.rivTooltip) return;\n if (this.tooltipRef) {\n this.cancelClose();\n } else {\n const tooltip = this.applicationRef.components[0].injector\n .get(ViewContainerRef)\n .createComponent(TooltipComponent);\n tooltip.instance.anchor = this.el.nativeElement;\n tooltip.instance.content = this.rivTooltip;\n tooltip.instance.theme = this.rivTooltipTheme;\n tooltip.instance.maxWidth = this.rivTooltipMaxWidth;\n tooltip.instance.preferredPosition = this.rivTooltipPreferredPosition;\n tooltip.instance.onMouseEnter.subscribe(this.cancelClose.bind(this));\n tooltip.instance.onMouseLeave.subscribe(this.initiateClose.bind(this));\n this.tooltipRef = tooltip;\n }\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n this.initiateClose();\n }\n\n ngOnDestroy(): void {\n this.initiateClose();\n }\n\n private initiateClose() {\n this.closeTimeout = window.setTimeout(() => {\n this.tooltipRef?.destroy();\n this.tooltipRef = undefined;\n }, this.rivTooltipCloseDelay);\n }\n\n private cancelClose() {\n window.clearTimeout(this.closeTimeout);\n }\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n Directive,\n ElementRef,\n Input,\n} from '@angular/core';\nimport { TooltipDirective } from '../../overlay/callout/tooltip/tooltip.directive';\n\n// Credit to boneskull on Github, whose work I used as a reference\n@Directive({\n selector: 'svg text[rivSVGTextTruncate]',\n})\nexport class SVGTextTruncateDirective\n extends TooltipDirective\n implements AfterViewInit\n{\n @Input()\n text: string = '';\n\n @Input()\n width: number = 50;\n\n constructor(\n protected override readonly el: ElementRef,\n protected override readonly applicationRef: ApplicationRef,\n ) {\n super(el, applicationRef);\n }\n\n ngAfterViewInit(): void {\n this.svgTruncate(this.el.nativeElement);\n }\n\n // Truncate through setting strings as the text-content and testing their width\n svgTruncate(element: SVGTextContentElement) {\n element.textContent = this.text;\n let currentLength: number = element.textContent.length;\n\n // If the text can fit in the given width, no truncation needed.\n if (currentLength > 0 && element.getComputedTextLength() <= this.width) {\n element.textContent = this.text;\n this.rivTooltip = '';\n } else {\n /*\n Test the length of each \"substring + ...\" combo until we find one that fits.\n Start by making room for the elipses by subtracting 3 from the length.\n */\n currentLength = currentLength - 3;\n let currentTextFitsInWidth: boolean = false;\n while (currentLength > 0 && !currentTextFitsInWidth) {\n const currentTextToTry: string =\n this.text.slice(0, currentLength) + '...';\n\n element.textContent = currentTextToTry;\n\n if (\n element.getSubStringLength(0, currentTextToTry.length) <= this.width\n ) {\n currentTextFitsInWidth = true;\n } else {\n currentLength--;\n }\n }\n\n // If we end up not finding a width of text that works, display just the ellipses.\n if (!currentTextFitsInWidth) {\n element.textContent = '...';\n }\n this.rivTooltip = this.text;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n Self,\n} from '@angular/core';\nimport { TooltipDirective } from '../../overlay/callout/tooltip/tooltip.directive';\n\nfunction scrolled(element: HTMLElement): boolean {\n return element.offsetWidth < element.scrollWidth;\n}\n\n/**\n * Truncate the text to one line. When truncated, display the full text in a tooltip.\n */\n@Component({\n selector: '[rivTruncate]',\n styleUrls: ['./truncate.component.css'],\n templateUrl: './truncate.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [TooltipDirective],\n})\nexport class TruncateComponent {\n constructor(\n private readonly element: ElementRef,\n // For performance reasons, take more control\n @Self() private readonly tooltip: TooltipDirective,\n ) {}\n\n @Input()\n maxTooltipWidth: string = '200px';\n\n @HostListener('mouseenter')\n enter() {\n if (scrolled(this.element.nativeElement)) {\n this.tooltip.rivTooltip = this.element.nativeElement.textContent;\n this.tooltip.rivTooltipMaxWidth = this.maxTooltipWidth;\n this.tooltip.onMouseEnter();\n }\n }\n\n @HostListener('mouseleave')\n leave() {\n this.tooltip.onMouseLeave();\n }\n\n // For the auto-complete textbox.\n scrollIntoView() {\n this.element.nativeElement.scrollIntoView(false);\n }\n}\n","<ng-content></ng-content>\n","export interface CacheResult<V> {\n value: V;\n cleanup: () => void;\n}\n\n/**\n * DOM cache that clones existing elements if available.\n */\nexport class DomCache<T, V extends Node = Node> {\n private readonly nodes = new Map<T, Set<V>>();\n\n constructor(private readonly create: (key: T) => V) {}\n\n get(key: T): CacheResult<V> {\n let set = this.nodes.get(key);\n let result: V;\n if (set) {\n result = <V>set.values().next().value.cloneNode(true);\n } else {\n result = this.create(key);\n set = new Set();\n this.nodes.set(key, set);\n }\n\n set.add(result);\n\n return {\n value: result,\n cleanup: () => {\n set!.delete(result);\n if (!set!.size) {\n this.nodes.delete(key);\n }\n },\n };\n }\n}\n","const AlertCircle = `<svg data-icon=\"AlertCircle\" aria-label=\"alert circle icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line></svg>`;\nconst AlertTriangle = `<svg data-icon=\"AlertTriangle\" aria-label=\"alert triangle icon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"></path><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"></line><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line></svg>`;\nconst AlignLeft = `<svg data-icon=\"AlignLeft\" aria-label=\"align left icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25H12\" /></svg>`;\nconst Archive = `<svg data-icon=\"Archive\" aria-label=\"archive icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m20.25 7.5-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z\" /></svg>`;\nconst ArrowDown = `<svg data-icon=\"ArrowDown\" aria-label=\"arrow down icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 13.5 12 21m0 0-7.5-7.5M12 21V3\" /></svg>`;\nconst ArrowDownLeft = `<svg data-icon=\"ArrowDownLeft\" aria-label=\"arrow down left icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m19.5 4.5-15 15m0 0h11.25m-11.25 0V8.25\" /></svg>`;\nconst ArrowLeft = `<svg data-icon=\"ArrowLeft\" aria-label=\"arrow left icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18\" /></svg>`;\nconst ArrowLeftCircle = `<svg data-icon=\"ArrowLeftCircle\" aria-label=\"arrow left circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m11.25 9-3 3m0 0 3 3m-3-3h7.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst ArrowRight = `<svg data-icon=\"ArrowRight\" aria-label=\"arrow right icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3\" /></svg>`;\nconst ArrowUp = `<svg data-icon=\"ArrowUp\" aria-label=\"arrow up icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18\" /></svg>`;\nconst ArrowUpRight = `<svg data-icon=\"ArrowUpRight\" aria-label=\"arrow up right icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 19.5 15-15m0 0H8.25m11.25 0v11.25\" /></svg>`;\nconst AtSign = `<svg data-icon=\"AtSign\" aria-label=\"at sign icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 12a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0Zm0 0c0 1.657 1.007 3 2.25 3S21 13.657 21 12a9 9 0 1 0-2.636 6.364M16.5 12V8.25\" /></svg>`;\nconst BarChart2 = `<svg data-icon=\"BarChart2\" aria-label=\"bar chart icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z\" /></svg>`;\nconst Bell = `<svg data-icon=\"Bell\" aria-label=\"bell icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0\" /></svg>`;\nconst BellAlert = `<svg data-icon=\"BellAlert\" aria-label=\"bell alert icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0M3.124 7.5A8.969 8.969 0 0 1 5.292 3m13.416 0a8.969 8.969 0 0 1 2.168 4.5\" /></svg>`;\nconst BookOpen = `<svg data-icon=\"BookOpen\" aria-label=\"book open icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25\" /></svg>`;\nconst Briefcase = `<svg data-icon=\"Briefcase\" aria-label=\"briefcase icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 14.15v4.25c0 1.094-.787 2.036-1.872 2.18-2.087.277-4.216.42-6.378.42s-4.291-.143-6.378-.42c-1.085-.144-1.872-1.086-1.872-2.18v-4.25m16.5 0a2.18 2.18 0 0 0 .75-1.661V8.706c0-1.081-.768-2.015-1.837-2.175a48.114 48.114 0 0 0-3.413-.387m4.5 8.006c-.194.165-.42.295-.673.38A23.978 23.978 0 0 1 12 15.75c-2.648 0-5.195-.429-7.577-1.22a2.016 2.016 0 0 1-.673-.38m0 0A2.18 2.18 0 0 1 3 12.489V8.706c0-1.081.768-2.015 1.837-2.175a48.111 48.111 0 0 1 3.413-.387m7.5 0V5.25A2.25 2.25 0 0 0 13.5 3h-3a2.25 2.25 0 0 0-2.25 2.25v.894m7.5 0a48.667 48.667 0 0 0-7.5 0M12 12.75h.008v.008H12v-.008Z\" /></svg>`;\nconst BuildingLibrary = `<svg data-icon=\"BuildingLibrary\" aria-label=\"building library icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 21v-8.25M15.75 21v-8.25M8.25 21v-8.25M3 9l9-6 9 6m-1.5 12V10.332A48.36 48.36 0 0 0 12 9.75c-2.551 0-5.056.2-7.5.582V21M3 21h18M12 6.75h.008v.008H12V6.75Z\" /></svg>`;\nconst Calendar = `<svg data-icon=\"Calendar\" aria-label=\"calendar icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5\" /></svg>`;\nconst Check = `<svg data-icon=\"Check\" aria-label=\"check icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 12.75 6 6 9-13.5\" /></svg>`;\nconst CheckCircle = `<svg data-icon=\"CheckCircle\" aria-label=\"check circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst ChevronDown = `<svg data-icon=\"ChevronDown\" aria-label=\"chevron down icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m19.5 8.25-7.5 7.5-7.5-7.5\" /></svg>`;\nconst ChevronLeft = `<svg data-icon=\"ChevronLeft\" aria-label=\"chevron left icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5 8.25 12l7.5-7.5\" /></svg>`;\nconst ChevronRight = `<svg data-icon=\"ChevronRight\" aria-label=\"chevron right icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\" /></svg>`;\nconst ChevronsLeft = `<svg data-icon=\"ChevronsLeft\" aria-label=\"chevrons left icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m18.75 4.5-7.5 7.5 7.5 7.5m-6-15L5.25 12l7.5 7.5\" /></svg>`;\nconst ChevronsRight = `<svg data-icon=\"ChevronsRight\" aria-label=\"chevrons right icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m5.25 4.5 7.5 7.5-7.5 7.5m6-15 7.5 7.5-7.5 7.5\" /></svg>`;\nconst ChevronUp = `<svg data-icon=\"ChevronUp\" aria-label=\"chevron up icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m4.5 15.75 7.5-7.5 7.5 7.5\" /></svg>`;\nconst Clipboard = `<svg data-icon=\"Clipboard\" aria-label=\"clipboard icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184\" /></svg>`;\nconst ClipboardList = `<svg data-icon=\"ClipboardList\" aria-label=\"clipboard list icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z\" /></svg>`;\nconst Clock = `<svg data-icon=\"Clock\" aria-label=\"clock icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst Copy = `<svg data-icon=\"Copy\" aria-label=\"copy icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v8.25A2.25 2.25 0 0 0 6 16.5h2.25m8.25-8.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-7.5A2.25 2.25 0 0 1 8.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 0 0-2.25 2.25v6\" /></svg>`;\nconst CornerLeftUp = `<svg data-icon=\"CornerLeftUp\" aria-label=\"corner left up icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11.99 7.5 8.24 3.75m0 0L4.49 7.5m3.75-3.75v16.499h11.25\" /></svg>`;\nconst CreditCard = `<svg data-icon=\"CreditCard\" aria-label=\"credit card icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Z\" /></svg>`;\nconst DocumentCurrencyDollar = `<svg data-icon=\"DocumentCurrencyDollar\" aria-label=\"document currency dollar icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m3.75 9v7.5m2.25-6.466a9.016 9.016 0 0 0-3.461-.203c-.536.072-.974.478-1.021 1.017a4.559 4.559 0 0 0-.018.402c0 .464.336.844.775.994l2.95 1.012c.44.15.775.53.775.994 0 .136-.006.27-.018.402-.047.539-.485.945-1.021 1.017a9.077 9.077 0 0 1-3.461-.203M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" /></svg>`;\nconst Documents = `<svg data-icon=\"Documents\" aria-label=\"documents icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75\" /></svg>`;\nconst DollarSign = `<svg data-icon=\"DollarSign\" aria-label=\"dollar sign icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6v12m-3-2.818.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst Download = `<svg data-icon=\"Download\" aria-label=\"download icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3\" /></svg>`;\nconst DownloadCloud = `<svg data-icon=\"DownloadCloud\" aria-label=\"download cloud icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9.75v6.75m0 0-3-3m3 3 3-3m-8.25 6a4.5 4.5 0 0 1-1.41-8.775 5.25 5.25 0 0 1 10.233-2.33 3 3 0 0 1 3.758 3.848A3.752 3.752 0 0 1 18 19.5H6.75Z\" /></svg>`;\nconst Edit = `<svg data-icon=\"Edit\" aria-label=\"edit icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10\" /></svg>`;\nconst Edit2 = `<svg data-icon=\"Edit2\" aria-label=\"edit icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125\" /></svg>`;\nconst ExternalLink = `<svg data-icon=\"ExternalLink\" aria-label=\"external link icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\" /></svg>`;\nconst Eye = `<svg data-icon=\"Eye\" aria-label=\"eye icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\" /></svg>`;\nconst EyeOff = `<svg data-icon=\"EyeOff\" aria-label=\"eye off icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88\" /></svg>`;\nconst File = `<svg data-icon=\"File\" aria-label=\"file icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" /></svg>`;\nconst FilePlus = `<svg data-icon=\"FilePlus\" aria-label=\"file plus icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m3.75 9v6m3-3H9m1.5-12H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" /></svg>`;\nconst FileText = `<svg data-icon=\"FileText\" aria-label=\"file text icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" /></svg>`;\nconst Filter = `<svg data-icon=\"Filter\" aria-label=\"filter icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 0 1-.659 1.591l-5.432 5.432a2.25 2.25 0 0 0-.659 1.591v2.927a2.25 2.25 0 0 1-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 0 0-.659-1.591L3.659 7.409A2.25 2.25 0 0 1 3 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0 1 12 3Z\" /></svg>`;\nconst Filter2 = `<svg data-icon=\"Filter2\" aria-label=\"filter icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path d=\"M4 7C10.4437 7 14.0563 7 20.5 7M6.6875 12.25H17.8125M8.6875 17.5H15.8125\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst Folder = `<svg data-icon=\"Folder\" aria-label=\"folder icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 12.75V12A2.25 2.25 0 0 1 4.5 9.75h15A2.25 2.25 0 0 1 21.75 12v.75m-8.69-6.44-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z\" /></svg>`;\nconst HandThumbUp = `<svg data-icon=\"HandThumbUp\" aria-label=\"hand thumb up icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.633 10.25c.806 0 1.533-.446 2.031-1.08a9.041 9.041 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75a.75.75 0 0 1 .75-.75 2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282m0 0h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H13.48c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23H5.904m10.598-9.75H14.25M5.904 18.5c.083.205.173.405.27.602.197.4-.078.898-.523.898h-.908c-.889 0-1.713-.518-1.972-1.368a12 12 0 0 1-.521-3.507c0-1.553.295-3.036.831-4.398C3.387 9.953 4.167 9.5 5 9.5h1.053c.472 0 .745.556.5.96a8.958 8.958 0 0 0-1.302 4.665c0 1.194.232 2.333.654 3.375Z\" /></svg>`;\nconst HandThumbDown = `<svg data-icon=\"HandThumbDown\" aria-label=\"hand thumb down icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7.498 15.25H4.372c-1.026 0-1.945-.694-2.054-1.715a12.137 12.137 0 0 1-.068-1.285c0-2.848.992-5.464 2.649-7.521C5.287 4.247 5.886 4 6.504 4h4.016a4.5 4.5 0 0 1 1.423.23l3.114 1.04a4.5 4.5 0 0 0 1.423.23h1.294M7.498 15.25c.618 0 .991.724.725 1.282A7.471 7.471 0 0 0 7.5 19.75 2.25 2.25 0 0 0 9.75 22a.75.75 0 0 0 .75-.75v-.633c0-.573.11-1.14.322-1.672.304-.76.93-1.33 1.653-1.715a9.04 9.04 0 0 0 2.86-2.4c.498-.634 1.226-1.08 2.032-1.08h.384m-10.253 1.5H9.7m8.075-9.75c.01.05.027.1.05.148.593 1.2.925 2.55.925 3.977 0 1.487-.36 2.89-.999 4.125m.023-8.25c-.076-.365.183-.75.575-.75h.908c.889 0 1.713.518 1.972 1.368.339 1.11.521 2.287.521 3.507 0 1.553-.295 3.036-.831 4.398-.306.774-1.086 1.227-1.918 1.227h-1.053c-.472 0-.745-.556-.5-.96a8.95 8.95 0 0 0 .303-.54\" /></svg>`;\nconst Heart = `<svg data-icon=\"Heart\" aria-label=\"heart icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z\" /></svg>`;\nconst HeartActive = `<svg data-icon=\"HeartActive\" aria-label=\"heart active icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M21 8.25C21 5.765 18.901 3.75 16.312 3.75C14.377 3.75 12.715 4.876 12 6.483C11.285 4.876 9.623 3.75 7.687 3.75C5.1 3.75 3 5.765 3 8.25C3 15.47 12 20.25 12 20.25C12 20.25 21 15.47 21 8.25Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst HelpCircle = `<svg data-icon=\"HelpCircle\" aria-label=\"help circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z\" /></svg>`;\nconst Inbox = `<svg data-icon=\"Inbox\" aria-label=\"inbox icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 13.5h3.86a2.25 2.25 0 0 1 2.012 1.244l.256.512a2.25 2.25 0 0 0 2.013 1.244h3.218a2.25 2.25 0 0 0 2.013-1.244l.256-.512a2.25 2.25 0 0 1 2.013-1.244h3.859m-19.5.338V18a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 0 0-2.15-1.588H6.911a2.25 2.25 0 0 0-2.15 1.588L2.35 13.177a2.25 2.25 0 0 0-.1.661Z\" /></svg>`;\nconst Info = `<svg data-icon=\"Info\" aria-label=\"info icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\" /></svg>`;\nconst Key = `<svg data-icon=\"Key\" aria-label=\"key icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 5.25a3 3 0 0 1 3 3m3 0a6 6 0 0 1-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1 1 21.75 8.25Z\" /></svg>`;\nconst Layers = `<svg data-icon=\"Layers\" aria-label=\"layers icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.429 9.75 2.25 12l4.179 2.25m0-4.5 5.571 3 5.571-3m-11.142 0L2.25 7.5 12 2.25l9.75 5.25-4.179 2.25m0 0L21.75 12l-4.179 2.25m0 0 4.179 2.25L12 21.75 2.25 16.5l4.179-2.25m11.142 0-5.571 3-5.571-3\" /></svg>`;\nconst Link2 = `<svg data-icon=\"Link2\" aria-label=\"link icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244\" /></svg>`;\nconst List = `<svg data-icon=\"List\" aria-label=\"list icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z\" /></svg>`;\nconst Lock = `<svg data-icon=\"Lock\" aria-label=\"lock icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z\" /></svg>`;\nconst Mail = `<svg data-icon=\"Mail\" aria-label=\"mail icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75\" /></svg>`;\nconst MapPin = `<svg data-icon=\"MapPin\" aria-label=\"map pin icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1 1 15 0Z\" /></svg>`;\nconst Maximize2 = `<svg data-icon=\"Maximize2\" aria-label=\"maximize icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15\" /></svg>`;\nconst Menu = `<svg data-icon=\"Menu\" aria-label=\"menu icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\" /></svg>`;\nconst MessageCircle = `<svg data-icon=\"MessageCircle\" aria-label=\"message circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 0 1-.923 1.785A5.969 5.969 0 0 0 6 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337Z\" /></svg>`;\nconst MessageCircleActive = `<svg data-icon=\"MessageCircleActive\" aria-label=\"message circle active icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path fill=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 0 1-.923 1.785A5.969 5.969 0 0 0 6 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337Z\" /></svg>`;\nconst MessageCircleEllipsis = `<svg data-icon=\"MessageCircleEllipsis\" aria-label=\"message circle ellipsis icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.625 12a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H8.25m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H12m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0h-.375M21 12c0 4.556-4.03 8.25-9 8.25a9.764 9.764 0 0 1-2.555-.337A5.972 5.972 0 0 1 5.41 20.97a5.969 5.969 0 0 1-.474-.065 4.48 4.48 0 0 0 .978-2.025c.09-.457-.133-.901-.467-1.226C3.93 16.178 3 14.189 3 12c0-4.556 4.03-8.25 9-8.25s9 3.694 9 8.25Z\" /></svg>`;\nconst MessageCircleEllipsisActive = `<svg data-icon=\"MessageCircleEllipsisActive\" aria-label=\"message circle ellipsis active icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 24 24\"><path fill-rule=\"evenodd\" d=\"M4.804 21.644A6.707 6.707 0 0 0 6 21.75a6.721 6.721 0 0 0 3.583-1.029c.774.182 1.584.279 2.417.279 5.322 0 9.75-3.97 9.75-9 0-5.03-4.428-9-9.75-9s-9.75 3.97-9.75 9c0 2.409 1.025 4.587 2.674 6.192.232.226.277.428.254.543a3.73 3.73 0 0 1-.814 1.686.75.75 0 0 0 .44 1.223ZM8.25 10.875a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25ZM10.875 12a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0Zm4.875-1.125a1.125 1.125 0 1 0 0 2.25 1.125 1.125 0 0 0 0-2.25Z\" clip-rule=\"evenodd\" /></svg>`;\nconst Minimize2 = `<svg data-icon=\"Minimize2\" aria-label=\"minimize icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 9V4.5M9 9H4.5M9 9 3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5 5.25 5.25\" /></svg>`;\nconst Minus = `<svg data-icon=\"Minus\" aria-label=\"minus icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 12h14\" /></svg>`;\nconst MinusCircle = `<svg data-icon=\"MinusCircle\" aria-label=\"minus circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst MoreHorizontal = `<svg data-icon=\"MoreHorizontal\" aria-label=\"more horizontal icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM12.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM18.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z\" /></svg>`;\nconst MoreVertical = `<svg data-icon=\"MoreVertical\" aria-label=\"more vertical icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 6.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 12.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 18.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Z\" /></svg>`;\nconst Paperclip = `<svg data-icon=\"Paperclip\" aria-label=\"paperclip icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m18.375 12.739-7.693 7.693a4.5 4.5 0 0 1-6.364-6.364l10.94-10.94A3 3 0 1 1 19.5 7.372L8.552 18.32m.009-.01-.01.01m5.699-9.941-7.81 7.81a1.5 1.5 0 0 0 2.112 2.13\" /></svg>`;\nconst Phone = `<svg data-icon=\"Phone\" aria-label=\"phone icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 0 0 2.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 0 1-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 0 0-1.091-.852H4.5A2.25 2.25 0 0 0 2.25 4.5v2.25Z\" /></svg>`;\nconst PieChart = `<svg data-icon=\"PieChart\" aria-label=\"pie chart icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M10.5 6a7.5 7.5 0 1 0 7.5 7.5h-7.5V6Z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 10.5H21A7.5 7.5 0 0 0 13.5 3v7.5Z\" /></svg>`;\nconst PinActive = `<svg data-icon=\"PinActive\" aria-label=\"pin active icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15V21\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 3H17C17 3 15 4.5 15 6.5C15 8.5 15 11 16 12.5C17 14 18.5 15 18.5 15H5.5C5.5 15 7 14 8 12.5C9 11 9 8.5 9 6.5C9 4.5 7 3 7 3Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst PinInactive = `<svg data-icon=\"PinInactive\" aria-label=\"pin inactive icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15V21\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7 3H17C17 3 15 4.5 15 6.5C15 8.5 15 11 16 12.5C17 14 18.5 15 18.5 15H5.5C5.5 15 7 14 8 12.5C9 11 9 8.5 9 6.5C9 4.5 7 3 7 3Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst Plus = `<svg data-icon=\"Plus\" aria-label=\"plus icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\" /></svg>`;\nconst Printer = `<svg data-icon=\"Printer\" aria-label=\"printer icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0 1 10.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0 .229 2.523a1.125 1.125 0 0 1-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0 0 21 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 0 0-1.913-.247M6.34 18H5.25A2.25 2.25 0 0 1 3 15.75V9.456c0-1.081.768-2.015 1.837-2.175a48.041 48.041 0 0 1 1.913-.247m10.5 0a48.536 48.536 0 0 0-10.5 0m10.5 0V3.375c0-.621-.504-1.125-1.125-1.125h-8.25c-.621 0-1.125.504-1.125 1.125v3.659M18 10.5h.008v.008H18V10.5Zm-3 0h.008v.008H15V10.5Z\" /></svg>`;\nconst QueueList = `<svg data-icon=\"QueueList\" aria-label=\"queue list icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 0 1 0 3.75H5.625a1.875 1.875 0 0 1 0-3.75Z\" /></svg>`;\nconst RefreshCw = `<svg data-icon=\"RefreshCw\" aria-label=\"refresh cw icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99\" /></svg>`;\nconst Reorder = `<svg data-icon=\"Reorder\" aria-label=\"reorder icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M8 6.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-1ZM8 12.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-1ZM8 18.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-1ZM13 6.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1ZM13 12.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1ZM13 18.5a1 1 0 0 1 1-1h1a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-1Z\"/></svg>`;\nconst Reply = `<svg data-icon=\"Reply\" aria-label=\"reply icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 15 3 9m0 0 6-6M3 9h12a6 6 0 0 1 0 12h-3\" /></svg>`;\nconst ReplyAll = `<svg data-icon=\"ReplyAll\" aria-label=\"reply all icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 15L3 9M3 9L9 3M3 9H7M12 21H15C16.5913 21 18.1174 20.3679 19.2426 19.2426C20.3679 18.1174 21 16.5913 21 15C21 13.4087 20.3679 11.8826 19.2426 10.7574C18.1174 9.63214 16.5913 9 15 9H7M13 3L7 9M7 9L13 15\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst RotateCw = `<svg data-icon=\"RotateCw\" aria-label=\"rotate cw icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m15 15 6-6m0 0-6-6m6 6H9a6 6 0 0 0 0 12h3\" /></svg>`;\nconst Search = `<svg data-icon=\"Search\" aria-label=\"search icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z\" /></svg>`;\nconst Send = `<svg data-icon=\"Send\" aria-label=\"send icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 12 3.269 3.125A59.769 59.769 0 0 1 21.485 12 59.768 59.768 0 0 1 3.27 20.875L5.999 12Zm0 0h7.5\" /></svg>`;\nconst Settings = `<svg data-icon=\"Settings\" aria-label=\"settings icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 0 1 1.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.559.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.894.149c-.424.07-.764.383-.929.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 0 1-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.398.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 0 1-.12-1.45l.527-.737c.25-.35.272-.806.108-1.204-.165-.397-.506-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.108-1.204l-.526-.738a1.125 1.125 0 0 1 .12-1.45l.773-.773a1.125 1.125 0 0 1 1.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894Z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\" /></svg>`;\nconst Shield = `<svg data-icon=\"Shield\" aria-label=\"shield icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z\" /></svg>`;\nconst Sidebar = `<svg data-icon=\"Sidebar\" aria-label=\"sidebar icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9 19.591V4.40901M6 20.25H18C18.5967 20.25 19.169 20.0129 19.591 19.591C20.0129 19.169 20.25 18.5967 20.25 18V6C20.25 5.40326 20.0129 4.83097 19.591 4.40901C19.169 3.98705 18.5967 3.75 18 3.75H6C5.40326 3.75 4.83097 3.98705 4.40901 4.40901C3.98705 4.83097 3.75 5.40326 3.75 6V18C3.75 18.5967 3.98705 19.169 4.40901 19.591C4.83097 20.0129 5.40326 20.25 6 20.25Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst Slash = `<svg data-icon=\"Slash\" aria-label=\"slash icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18.364 18.364A9 9 0 0 0 5.636 5.636m12.728 12.728A9 9 0 0 1 5.636 5.636m12.728 12.728L5.636 5.636\" /></svg>`;\nconst Sliders = `<svg data-icon=\"Sliders\" aria-label=\"sliders icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 13.5V3.75m0 9.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 3.75V16.5m12-3V3.75m0 9.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 3.75V16.5m-6-9V3.75m0 3.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 9.75V10.5\" /></svg>`;\nconst Sparkles = `<svg data-icon=\"Sparkles\" aria-label=\"sparkles icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z\" /></svg>`;\nconst Star = `<svg data-icon=\"Star\" aria-label=\"star icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z\" /></svg>`;\nconst SupportChat = `<svg data-icon=\"SupportChat\" aria-label=\"support chat icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 0 1-.825-.242m9.345-8.334a2.126 2.126 0 0 0-.476-.095 48.64 48.64 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155\" /></svg>`;\nconst Tag = `<svg data-icon=\"Tag\" aria-label=\"tag icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.568 3H5.25A2.25 2.25 0 0 0 3 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 0 0 5.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 0 0 9.568 3Z\" /><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 6h.008v.008H6V6Z\" /></svg>`;\nconst Target = `<svg data-icon=\"Target\" aria-label=\"target icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" d=\"M21 12c0 4.9706-4.0294 9-9 9s-9-4.0294-9-9 4.0294-9 9-9 9 4.0294 9 9Z\"/><path stroke=\"currentColor\" d=\"M17.5 12c0 3.0376-2.4624 5.5-5.5 5.5S6.5 15.0376 6.5 12 8.9624 6.5 12 6.5s5.5 2.4624 5.5 5.5Z\"/><path stroke=\"currentColor\" d=\"M14 12c0 1.1046-.8954 2-2 2s-2-.8954-2-2 .8954-2 2-2 2 .8954 2 2Z\"/></svg>`;\nconst Trash2 = `<svg data-icon=\"Trash2\" aria-label=\"trash icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0\" /></svg>`;\nconst TrendingDown = `<svg data-icon=\"TrendingDown\" aria-label=\"trending down icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 6 9 12.75l4.286-4.286a11.948 11.948 0 0 1 4.306 6.43l.776 2.898m0 0 3.182-5.511m-3.182 5.51-5.511-3.181\" /></svg>`;\nconst TrendingUp = `<svg data-icon=\"TrendingUp\" aria-label=\"trending up icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 18 9 11.25l4.306 4.306a11.95 11.95 0 0 1 5.814-5.518l2.74-1.22m0 0-5.94-2.281m5.94 2.28-2.28 5.941\" /></svg>`;\nconst UploadCloud = `<svg data-icon=\"UploadCloud\" aria-label=\"upload cloud icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 16.5V9.75m0 0 3 3m-3-3-3 3M6.75 19.5a4.5 4.5 0 0 1-1.41-8.775 5.25 5.25 0 0 1 10.233-2.33 3 3 0 0 1 3.758 3.848A3.752 3.752 0 0 1 18 19.5H6.75Z\" /></svg>`;\nconst User = `<svg data-icon=\"User\" aria-label=\"user icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z\" /></svg>`;\nconst UserCheck = `<svg data-icon=\"UserCheck\" aria-label=\"user check icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13.75 6C13.75 6.99456 13.3549 7.94839 12.6516 8.65165C11.9484 9.35491 10.9946 9.75 10 9.75C9.00544 9.75 8.05161 9.35491 7.34835 8.65165C6.64509 7.94839 6.25 6.99456 6.25 6C6.25 5.00544 6.64509 4.05161 7.34835 3.34835C8.05161 2.64509 9.00544 2.25 10 2.25C10.9946 2.25 11.9484 2.64509 12.6516 3.34835C13.3549 4.05161 13.75 5.00544 13.75 6ZM2.501 20.118C2.53313 18.1504 3.33734 16.2742 4.74018 14.894C6.14302 13.5139 8.03209 12.7405 10 12.7405C11.9679 12.7405 13.857 13.5139 15.2598 14.894C16.6627 16.2742 17.4669 18.1504 17.499 20.118C15.1464 21.1968 12.5881 21.7535 10 21.75C7.324 21.75 4.784 21.166 2.501 20.118Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M15 10L17.25 12.25L21 7\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst Users = `<svg data-icon=\"Users\" aria-label=\"users icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z\" /></svg>`;\nconst X = `<svg data-icon=\"X\" aria-label=\"x icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\" /></svg>`;\nconst XCircle = `<svg data-icon=\"XCircle\" aria-label=\"x circle icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m9.75 9.75 4.5 4.5m0-4.5-4.5 4.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" /></svg>`;\nconst Zap = `<svg data-icon=\"Zap\" aria-label=\"zap icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z\" /></svg>`;\nconst ZoomIn = `<svg data-icon=\"ZoomIn\" aria-label=\"zoom in icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607ZM10.5 7.5v6m3-3h-6\" /></svg>`;\nconst ZoomOut = `<svg data-icon=\"ZoomOut\" aria-label=\"zoom out icon\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607ZM13.5 10.5h-6\" /></svg>`;\n\nexport const icons = {\n AlertCircle,\n AlertTriangle,\n AlignLeft,\n Archive,\n ArrowDown,\n ArrowDownLeft,\n ArrowLeft,\n ArrowLeftCircle,\n ArrowRight,\n ArrowUp,\n ArrowUpRight,\n AtSign,\n BarChart2,\n Bell,\n BellAlert,\n BookOpen,\n Briefcase,\n BuildingLibrary,\n Calendar,\n Check,\n CheckCircle,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n ChevronUp,\n Clipboard,\n ClipboardList,\n Clock,\n Copy,\n CornerLeftUp,\n CreditCard,\n DocumentCurrencyDollar,\n Documents,\n DollarSign,\n Download,\n DownloadCloud,\n Edit,\n Edit2,\n ExternalLink,\n Eye,\n EyeOff,\n File,\n FilePlus,\n FileText,\n Filter,\n Filter2,\n Folder,\n HandThumbUp,\n HandThumbDown,\n Heart,\n HeartActive,\n HelpCircle,\n Inbox,\n Info,\n Key,\n Layers,\n Link2,\n List,\n Lock,\n Mail,\n MapPin,\n Maximize2,\n Menu,\n MessageCircle,\n MessageCircleActive,\n MessageCircleEllipsis,\n MessageCircleEllipsisActive,\n Minimize2,\n Minus,\n MinusCircle,\n MoreHorizontal,\n MoreVertical,\n Paperclip,\n Phone,\n PieChart,\n PinActive,\n PinInactive,\n Plus,\n Printer,\n QueueList,\n RefreshCw,\n Reorder,\n Reply,\n ReplyAll,\n RotateCw,\n Search,\n Send,\n Settings,\n Shield,\n Sidebar,\n Slash,\n Sliders,\n Sparkles,\n Star,\n SupportChat,\n Tag,\n Target,\n Trash2,\n TrendingDown,\n TrendingUp,\n UploadCloud,\n User,\n UserCheck,\n Users,\n X,\n XCircle,\n Zap,\n ZoomIn,\n ZoomOut,\n};\n\nexport const iconsMap: { [key: string]: string } = {};\nfor (const key in icons) {\n iconsMap[key] = icons[<keyof typeof icons>key];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { CacheResult, DomCache } from './dom-cache';\nimport { icons, iconsMap } from './icons';\n\nconst cache = new DomCache<IconComponent.Name, ChildNode>(value => {\n const svgText = iconsMap[value];\n const parser = new DOMParser();\n const svg = parser.parseFromString(svgText, 'text/xml');\n return svg.documentElement;\n});\n\n@Component({\n selector: 'riv-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconComponent implements OnDestroy {\n private cached: CacheResult<ChildNode> | undefined;\n\n constructor(private readonly element: ElementRef<HTMLElement>) {}\n\n @Input()\n set name(value: IconComponent.Name | null) {\n if (this.cached) {\n this.cached.value.remove();\n this.cached.cleanup();\n this.cached = undefined;\n }\n\n if (value == null) {\n return;\n }\n\n this.cached = cache.get(value);\n this.element.nativeElement.append(this.cached.value);\n }\n\n @Input()\n size: IconComponent.Size = 24;\n\n @Input()\n customSize: number | undefined;\n\n @HostBinding('style.width.px')\n @HostBinding('style.height.px')\n get iconSize() {\n return this.customSize ? this.customSize : this.size;\n }\n\n @Input()\n strokeWidth: number | undefined;\n\n @HostBinding('style.stroke-width')\n get calculateStrokeWidth() {\n return this.strokeWidth ? this.strokeWidth : 24 / this.iconSize;\n }\n\n ngOnDestroy() {\n this.name = null;\n }\n}\n\nexport namespace IconComponent {\n export type Name = keyof typeof icons;\n\n export const Sizes = [8, 12, 16, 20, 24] as const;\n export type Size = (typeof Sizes)[number];\n}\n","","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-help',\n templateUrl: './help.component.html',\n styleUrls: ['./help.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HelpComponent {\n @Input() help?: string;\n @Input() size: HelpComponent.Size = 16;\n}\n\nexport namespace HelpComponent {\n export const Sizes = [12, 16] as const;\n export type Size = (typeof HelpComponent.Sizes)[number];\n}\n","<riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"size\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n Optional,\n} from '@angular/core';\nimport { CalloutComponent } from '../../overlay/callout/callout.component';\n\n@Component({\n selector: '[rivLink]',\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkComponent {\n constructor(@Optional() private readonly parentCallout?: CalloutComponent) {}\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @Input()\n theme: LinkComponent.Theme = 'light';\n\n @HostBinding('class')\n get classes() {\n return [\n this.disabled || this.locked ? 'disabled' : '',\n this.theme === 'dark' || this.parentCallout?.theme === 'dark'\n ? 'dark'\n : '',\n ].join(' ');\n }\n}\n\nexport namespace LinkComponent {\n export const Themes = ['light', 'dark'] as const;\n export type Theme = (typeof Themes)[number];\n}\n","<ng-content></ng-content>\n<riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-input-label',\n templateUrl: './input-label.component.html',\n styleUrls: ['./input-label.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputLabelComponent {\n @Input()\n label?: string;\n\n @Input()\n help?: string;\n\n @Input()\n required: boolean = false;\n\n @Input()\n labelActionText?: string;\n\n @Output()\n labelAction = new EventEmitter<MouseEvent>();\n}\n","<label *ngIf=\"label\">\n <span class=\"title\">\n {{ label }}\n <span *ngIf=\"required\">*</span>\n </span>\n <button\n *ngIf=\"labelActionText\"\n rivLink\n type=\"button\"\n (click)=\"labelAction.emit($event)\"\n type=\"button\"\n >\n {{ labelActionText }}\n </button>\n <riv-help *ngIf=\"help\" [help]=\"help\" [size]=\"12\"></riv-help>\n</label>\n<div class=\"content\"><ng-content></ng-content></div>\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Input,\n OnChanges,\n} from '@angular/core';\n\n@Directive({\n selector: '[riv-auto-focus]',\n})\nexport class AutoFocusDirective implements AfterViewInit, OnChanges {\n constructor(private readonly el: ElementRef) {}\n\n @Input('riv-auto-focus')\n autoActionActive: AutoFocusDirective.AutoAction = true;\n\n private deferActionUntilActive: boolean = false;\n\n ngAfterViewInit() {\n if (this.autoActionActive) {\n this.focus();\n } else {\n this.deferActionUntilActive = true;\n }\n }\n\n ngOnChanges() {\n if (this.deferActionUntilActive && this.autoActionActive) {\n this.deferActionUntilActive = false;\n this.focus();\n }\n }\n\n private focus() {\n if (this.el && this.el.nativeElement) {\n const element = this.el.nativeElement;\n if (!element.hasAttribute('tabindex')) {\n element.tabIndex = 0;\n }\n element.focus();\n\n if (\n this.autoActionActive === 'select' &&\n typeof element.select === 'function'\n ) {\n element.select();\n }\n }\n }\n}\n\nexport namespace AutoFocusDirective {\n /**\n * false: do nothing\n * true: focus the input only\n * 'select': focus the input and select all contents\n */\n export type AutoAction = boolean | 'select';\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { AutoFocusDirective } from '../auto-focus/auto-focus.directive';\nimport { InputLabelComponent } from '../input-label/input-label.component';\n\n@Component({\n selector: 'riv-text-field',\n templateUrl: './text-field.component.html',\n styleUrls: ['./text-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextFieldComponent\n extends InputLabelComponent\n implements OnChanges\n{\n @Input()\n disabled: boolean = false;\n\n @Input()\n readonly: boolean = false;\n\n @Input()\n placeholder: string = '';\n\n @Input()\n state: TextFieldComponent.State = 'valid';\n\n @Input()\n casing: TextFieldComponent.Casing = 'user';\n\n @Input()\n type: TextFieldComponent.Type = 'text';\n\n @Input()\n size: TextFieldComponent.Size = 'medium';\n\n @Input()\n autoFocus: AutoFocusDirective.AutoAction = false;\n\n @Input()\n name?: string;\n\n @Input()\n minLength?: number;\n\n @Input()\n maxLength?: number;\n\n protected _value: string = '';\n @Input()\n set value(v: string) {\n this._value = v;\n }\n\n protected setText() {\n if (\n TextFieldComponent.clean(this._value, this.casing) ===\n TextFieldComponent.clean(this._text, this.casing)\n )\n return;\n this._text = TextFieldComponent.format(this._value, this.casing);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] || changes['casing']) {\n this.setText();\n }\n }\n\n @Output()\n valueChange = new EventEmitter<string>();\n\n @Output()\n blur = new EventEmitter<string>();\n\n protected _text: string = '';\n\n set text(t: string) {\n // The user is setting the value. We'll keep the internal state exactly as\n // the user has typed it, but emit the clean value. Even if the cleaned\n // value is passed directly back to us, we won't override the user's work\n // (see comment in value setter above).\n this._text = t;\n this.valueChange.emit(TextFieldComponent.clean(t, this.casing));\n }\n get text(): string {\n return this._text;\n }\n\n inputBlur() {\n // Now that the user is done editing and has left the field, we can safely\n // update the internal state to match the cleaned/formatted version of\n // their input.\n this._text = TextFieldComponent.format(this._text, this.casing);\n this.blur.emit(TextFieldComponent.clean(this._text, this.casing));\n }\n}\n\nexport namespace TextFieldComponent {\n export const Casings = ['user', 'upper', 'lower'] as const;\n export type Casing = (typeof Casings)[number];\n\n export const Types = [\n 'text',\n 'email',\n 'password',\n 'search',\n 'tel',\n 'url',\n ] as const;\n export type Type = (typeof Types)[number];\n\n export const States = ['valid', 'warning', 'error'] as const;\n export type State = (typeof States)[number];\n\n export const Sizes = ['small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n\n export function clean(v: string, casing: Casing): string {\n switch (casing) {\n case 'lower':\n return v.toLowerCase();\n case 'upper':\n return v.toUpperCase();\n case 'user':\n return v;\n }\n }\n\n // For the basic text component, formatting is a simple pass-through to\n // clean(). More advanced inputs will implement more complicated formatting.\n export function format(v: string, casing: Casing): string {\n return clean(v, casing);\n }\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [riv-auto-focus]=\"autoFocus\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"inputBlur()\"\n />\n</riv-input-label>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { TextFieldComponent } from '../text-field/text-field.component';\n\n@Component({\n selector: 'riv-alphabetic-field',\n templateUrl: '../text-field/text-field.component.html',\n styleUrls: ['../text-field/text-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AlphabeticFieldComponent extends TextFieldComponent {\n protected override setText() {\n if (\n AlphabeticFieldComponent.clean(this._value, this.casing) ===\n AlphabeticFieldComponent.clean(this._text, this.casing)\n )\n return;\n this._text = AlphabeticFieldComponent.format(this._value, this.casing);\n }\n\n override set text(t: string) {\n this._text = t;\n this.valueChange.emit(AlphabeticFieldComponent.clean(t, this.casing));\n }\n override get text(): string {\n return this._text;\n }\n\n override inputBlur() {\n this._text = AlphabeticFieldComponent.format(this._text, this.casing);\n this.blur.emit(AlphabeticFieldComponent.clean(this._text, this.casing));\n }\n}\n\nexport namespace AlphabeticFieldComponent {\n export function clean(v: string, casing: TextFieldComponent.Casing): string {\n const cleaned = v.replaceAll(/[^A-Za-z]/g, '');\n return TextFieldComponent.clean(cleaned, casing);\n }\n\n export function format(v: string, casing: TextFieldComponent.Casing): string {\n return clean(v, casing);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'riv-button-group',\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonGroupComponent {}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-loading',\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingComponent {\n static readonly STROKE_WIDTH = 1.5;\n static readonly ARC_START_RADIANS = (Math.PI * 22.5) / 180;\n\n @Input()\n size: LoadingComponent.Size = 40;\n\n @Input()\n variant: LoadingComponent.Variant = 'dark';\n\n getPathData() {\n const size = this.size;\n const halfSize = size / 2;\n\n const stroke = LoadingComponent.STROKE_WIDTH;\n const halfStroke = stroke / 2;\n\n const top = halfStroke;\n const right = size - stroke;\n const radius = (size - stroke * 2) / 2;\n\n const commands = [\n `M${halfSize},${top}`,\n `L${right},${top}`,\n `L${right},${halfSize}`,\n `A ${radius} ${radius},0,1,1,${halfSize} ${top}`,\n ];\n return commands.join(' ');\n }\n\n readonly strokeWidth = LoadingComponent.STROKE_WIDTH;\n}\n\nexport namespace LoadingComponent {\n export const Sizes = [16, 40, 80] as const;\n export type Size = (typeof LoadingComponent.Sizes)[number];\n\n export const Variants = ['light', 'dark'] as const;\n export type Variant = (typeof LoadingComponent.Variants)[number];\n}\n","<svg\n [ngClass]=\"{\n dark: variant === 'dark',\n light: variant === 'light',\n small: size === 16,\n medium: size === 40,\n large: size === 80\n }\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"size\"\n [attr.height]=\"size\"\n [attr.viewBox]=\"'0 0 ' + size + ' ' + size\"\n fill=\"none\"\n>\n <path [attr.stroke-width]=\"strokeWidth\" [attr.d]=\"getPathData()\"></path>\n</svg>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n Optional,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { LoadingComponent } from '../../load/loading/loading.component';\nimport { ButtonGroupComponent } from '../button-group/button-group.component';\n\n@Component({\n selector: '[rivButton]',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent implements OnChanges {\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n @Optional() private readonly group: ButtonGroupComponent,\n ) {}\n\n @Input()\n locked?: boolean;\n\n @Input()\n disabled?: boolean;\n\n @Input()\n loading?: boolean;\n\n @Input()\n full?: boolean;\n\n @Input()\n size: ButtonComponent.Size = 'medium';\n\n @Input()\n variant: ButtonComponent.Variant = 'basic';\n\n @Input()\n icon?: IconComponent.Name;\n\n @Input()\n iconPosition: ButtonComponent.IconPosition = 'first';\n\n @Input()\n active?: boolean = false;\n\n @HostBinding('class')\n get classes() {\n return Object.entries({\n disabled: this.disabled || this.locked,\n full: this.full,\n loading: this.loading,\n [this.variant]: true,\n [this.size]: true,\n stacked: this.iconPosition === 'stacked',\n grouped: !!this.group,\n active: this.active,\n })\n .filter(([_, v]) => v)\n .map(([k]) => k)\n .join(' ');\n }\n\n getLoadingVariant(): LoadingComponent.Variant {\n switch (this.variant) {\n case 'basic':\n case 'caution':\n case 'ghost':\n return 'dark';\n case 'danger':\n case 'primary':\n return 'light';\n }\n }\n\n getIconSize(): IconComponent.Size {\n switch (this.size) {\n case 'xsmall':\n case 'small':\n return 16;\n case 'medium':\n return 20;\n case 'large':\n case 'xlarge':\n return 24;\n }\n }\n\n private disableNativeElement: boolean = false;\n private lockNativeElement: boolean = false;\n\n ngOnChanges(changes: SimpleChanges) {\n const accessChange: boolean = !!changes['disabled'] || !!changes['locked'];\n if (accessChange) {\n if (changes['disabled']) {\n this.disableNativeElement = changes['disabled'].currentValue;\n }\n if (changes['locked']) {\n this.lockNativeElement = changes['locked'].currentValue;\n }\n if ('disabled' in this.el.nativeElement) {\n if (this.disableNativeElement || this.lockNativeElement) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n }\n }\n }\n}\n\nexport namespace ButtonComponent {\n export const Sizes = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n ] as const;\n export type Size = (typeof Sizes)[number];\n\n export const Variants = [\n 'basic',\n 'ghost',\n 'primary',\n 'danger',\n 'caution',\n ] as const;\n export type Variant = (typeof Variants)[number];\n\n export const IconPositions = ['first', 'last', 'stacked'] as const;\n export type IconPosition = (typeof IconPositions)[number];\n}\n","<riv-icon\n *ngIf=\"icon && (iconPosition === 'first' || iconPosition === 'stacked')\"\n [name]=\"locked ? 'Lock' : icon\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<span><ng-content></ng-content></span>\n<riv-icon\n *ngIf=\"locked && !icon\"\n [name]=\"'Lock'\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<riv-icon\n *ngIf=\"icon && iconPosition === 'last'\"\n [name]=\"locked ? 'Lock' : icon\"\n [size]=\"getIconSize()\"\n></riv-icon>\n<riv-loading\n *ngIf=\"loading\"\n [size]=\"16\"\n [variant]=\"getLoadingVariant()\"\n></riv-loading>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent implements OnChanges {\n @Input()\n name?: string;\n\n @Input()\n identifier?: string;\n\n @Input()\n value: boolean = false;\n\n @Input()\n checkedColorToken: string = '--purp-60';\n\n @Input()\n indeterminateColorToken: string = '--purp-60';\n\n @Input()\n checkboxTooltip?: string;\n\n @Input()\n indeterminate: boolean = false;\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n required: boolean = false;\n\n @Output()\n valueChange = new EventEmitter<boolean>();\n\n emit(v: boolean) {\n this.valueChange.emit(v);\n this.ensureSynchronizedState(this.value);\n }\n\n @ViewChild('label', { static: true }) label?: ElementRef<HTMLLabelElement>;\n\n @ViewChild('input', { static: true }) input?: ElementRef<HTMLInputElement>;\n\n ensureSynchronizedState(v: boolean) {\n if (this.input) {\n this.input.nativeElement.checked = v;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('value' in changes)\n this.ensureSynchronizedState(changes['value'].currentValue);\n }\n\n isCheckboxOnly(): boolean {\n return !this.label || this.label.nativeElement.childNodes.length === 1;\n }\n\n getCheckedBackgroundColor(): string {\n return `var(${this.checkedColorToken})`;\n }\n\n getIndeterminateBackgroundColor(): string {\n return `var(${this.indeterminateColorToken})`;\n }\n}\n","<label\n #label\n [class.disabled]=\"disabled\"\n [class.has-content]=\"!isCheckboxOnly()\"\n>\n <input\n #input\n type=\"checkbox\"\n [id]=\"identifier\"\n [name]=\"name\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [checked]=\"value\"\n [indeterminate]=\"indeterminate\"\n (change)=\"emit(!!input.checked)\"\n [style.--checked-background-color]=\"getCheckedBackgroundColor()\"\n [style.--indeterminate-background-color]=\"getIndeterminateBackgroundColor()\"\n [rivTooltip]=\"checkboxTooltip\"\n />\n <ng-content></ng-content>\n</label>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'riv-card-checkbox',\n templateUrl: './card-checkbox.component.html',\n styleUrls: ['./card-checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardCheckboxComponent extends CheckboxComponent {}\n","<label [class.disabled]=\"disabled\">\n <div\n class=\"checkbox\"\n [class.checked]=\"value\"\n [class.indeterminate]=\"indeterminate\"\n >\n <riv-checkbox\n [name]=\"name\"\n [identifier]=\"identifier\"\n [value]=\"value\"\n [checkboxTooltip]=\"checkboxTooltip\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (valueChange)=\"valueChange.emit($event)\"\n ></riv-checkbox>\n </div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</label>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { AutoFocusDirective } from '../auto-focus/auto-focus.directive';\nimport { InputLabelComponent } from '../input-label/input-label.component';\nimport { TextFieldComponent } from '../text-field/text-field.component';\n\n@Component({\n selector: 'riv-number-field',\n templateUrl: './number-field.component.html',\n styleUrls: ['./number-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumberFieldComponent\n extends InputLabelComponent\n implements OnChanges\n{\n @Input()\n disabled: boolean = false;\n\n @Input()\n readonly: boolean = false;\n\n @Input()\n placeholder: string = '';\n\n @Input()\n state: TextFieldComponent.State = 'valid';\n\n @Input()\n maximumFractionDigits: number = 0;\n\n @Input()\n minimumFractionDigits: number = 0;\n\n @Input()\n min: number = -Infinity;\n\n @Input()\n max: number = Infinity;\n\n @Input()\n align: NumberFieldComponent.Alignment = 'left';\n\n @Input()\n size: TextFieldComponent.Size = 'medium';\n\n @Input()\n autoFocus: AutoFocusDirective.AutoAction = false;\n\n @Input()\n name?: string;\n\n private _value: number | null = null;\n @Input()\n set value(v: number | null) {\n this._value = v;\n }\n\n private setText() {\n const value =\n typeof this._value === 'number' ? this._value.toString() : null;\n if (\n NumberFieldComponent.clean(\n value,\n this.maximumFractionDigits,\n this.min,\n this.max,\n ) ===\n NumberFieldComponent.clean(\n this._text,\n this.maximumFractionDigits,\n this.min,\n this.max,\n )\n )\n return;\n this._text = NumberFieldComponent.format(\n value,\n this.minimumFractionDigits,\n this.maximumFractionDigits,\n this.min,\n this.max,\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes['value'] ||\n changes['maximumFractionDigits'] ||\n changes['minimumFractionDigits'] ||\n changes['min'] ||\n changes['max']\n ) {\n this.setText();\n }\n }\n\n @Output()\n valueChange = new EventEmitter<number | null>();\n\n @Output()\n blur = new EventEmitter<number | null>();\n\n protected _text: string = '';\n\n set text(t: string) {\n this._text = t;\n this.valueChange.emit(\n NumberFieldComponent.clean(\n t,\n this.maximumFractionDigits,\n this.min,\n this.max,\n ),\n );\n }\n get text(): string {\n return this._text;\n }\n\n inputBlur() {\n this._text = NumberFieldComponent.format(\n this._text,\n this.minimumFractionDigits,\n this.maximumFractionDigits,\n this.min,\n this.max,\n );\n this.blur.emit(\n NumberFieldComponent.clean(\n this._text,\n this.maximumFractionDigits,\n this.min,\n this.max,\n ),\n );\n }\n}\n\nexport namespace NumberFieldComponent {\n export const Alignments = ['left', 'center', 'right'] as const;\n export type Alignment = (typeof Alignments)[number];\n\n export function clean(\n v: string | null,\n maximumFractionDigits: number,\n min: number,\n max: number,\n ): number | null {\n function digitsOnly(str: string): string {\n return str.replace(/\\D/g, '');\n }\n\n if (!v) return null;\n const decimalPointIdx = v.indexOf('.');\n const signIdx = v.indexOf('-');\n const cleanedString: string =\n (signIdx > -1 ? '-' : '') +\n (decimalPointIdx > -1\n ? digitsOnly(v.substring(0, decimalPointIdx)) +\n '.' +\n digitsOnly(v.substring(decimalPointIdx + 1))\n : digitsOnly(v));\n if (\n cleanedString === '.' ||\n cleanedString === '-' ||\n cleanedString === '-.'\n ) {\n return null;\n }\n const cleaned = Number(\n Number(cleanedString).toFixed(maximumFractionDigits),\n );\n return Math.max(min, Math.min(max, cleaned));\n }\n\n export function format(\n v: string | null,\n minimumFractionDigits: number,\n maximumFractionDigits: number,\n min: number,\n max: number,\n ): string {\n const cleaned = clean(v, maximumFractionDigits, min, max);\n if (cleaned === null) return '';\n return new Intl.NumberFormat('en-US', {\n minimumFractionDigits,\n maximumFractionDigits,\n }).format(cleaned);\n }\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n [style.textAlign]=\"align\"\n [riv-auto-focus]=\"autoFocus\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"inputBlur()\"\n />\n</riv-input-label>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NumberFieldComponent } from '../number-field/number-field.component';\n\n@Component({\n selector: 'riv-currency-field',\n templateUrl: './currency-field.component.html',\n styleUrls: ['./currency-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CurrencyFieldComponent extends NumberFieldComponent {\n @Input()\n override placeholder: string = '0.00';\n\n @Input()\n override minimumFractionDigits: number = 2;\n\n @Input()\n override maximumFractionDigits: number = 2;\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <span class=\"prefix\" [class.large]=\"size === 'large'\">$</span>\n <input\n #input\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [class.large]=\"size === 'large'\"\n [style.textAlign]=\"align\"\n [riv-auto-focus]=\"autoFocus\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"inputBlur()\"\n />\n</riv-input-label>\n","import { BehaviorSubject } from 'rxjs';\n\n/**\n * A BehaviorSubject backed by localStorage.\n */\nexport class LocalStorage<\n T extends LocalStorage.Serializable,\n> extends BehaviorSubject<T> {\n constructor(private readonly key: string, defaultValue: T) {\n const rawValue = localStorage.getItem(key);\n const value = rawValue ? JSON.parse(rawValue) : undefined;\n super(value ?? defaultValue);\n }\n\n override next(value: T) {\n localStorage.setItem(this.key, JSON.stringify(value));\n super.next(value);\n }\n}\n\nexport namespace LocalStorage {\n export type Serializable =\n | string\n | number\n | boolean\n | null\n | { [property: string]: Serializable }\n | Serializable[];\n}\n","import Fuse, {\n FuseResult,\n FuseResultMatch,\n IFuseOptions,\n RangeTuple,\n} from 'fuse.js';\nimport { defaultsDeep, flattenDeep, sortBy } from 'lodash';\nimport {\n connectable,\n Connectable,\n map,\n merge,\n Observable,\n ReplaySubject,\n scan,\n startWith,\n Subject,\n} from 'rxjs';\nimport { DeepPartial } from 'utility-types';\nimport { NumberPipe } from '../../format/pipes/number.pipe';\nimport { HighlightComponent } from '../../visualization/highlight/highlight.component';\n\nexport namespace RivSelect {\n /////////////\n // Options //\n /////////////\n\n /**\n * ┌─────────────────────-------------------───┐\n * │ BaseOption │\n * │ │\n * │ The core data required for each option │\n * │ (such as id and title). │\n * ├──────────────────────-------------------──┤\n * │ Option (BaseOption + children) │\n * │ │\n * │ Provides recursive type safety to the │\n * │ type safety to the BaseOption. │\n * └─------------------┬-------────────────────┘\n * |\n * ┌───────────────────▼───────────────────────┐\n * │ SourceOption (Option + search highlights) │\n * │ │\n * │ Adds search highlights to the Option and │\n * │ is the return type for the option Source │\n * │ (data fetcher) function. │\n * └───────────────────┬───────────────────────┘\n * |\n * ┌───────────────────▼───────────────────────┐\n * │ FullOption (SourceOption + UI state) │\n * │ │\n * │ Augments the SourceOption with all of the │\n * │ UI information from other parts of the │\n * │ state, such as selection status, whether │\n * │ or not the node is expanded, etc. │\n * └───────────────────────────────────────────┘\n *\n * Note that the usages of Omit<...> in this section are not required, but\n * do help in-editor type hints to be more clear and direct.\n */\n\n export type BaseOption = {\n id: string | number;\n title: string;\n subtitle?: string;\n help?: string;\n count?: number;\n disabled?: boolean;\n };\n export type Option<O extends BaseOption = BaseOption> = O & {\n children?: Option<O>[];\n };\n\n export type SourceOption<O extends BaseOption> = Omit<\n Option<O>,\n 'children'\n > & {\n titleHighlightIndices?: HighlightComponent.HighlightIndices[];\n subtitleHighlightIndices?: HighlightComponent.HighlightIndices[];\n children?: SourceOption<O>[];\n };\n\n export type MultiSelectionState = boolean | 'indeterminate';\n\n export type FullOption<O extends BaseOption> = Omit<\n SourceOption<O>,\n 'children'\n > & {\n selected: MultiSelectionState;\n expanded: boolean;\n selectable: boolean;\n expandable: boolean;\n children?: FullOption<O>[];\n };\n\n ///////////////////\n // Option groups //\n ///////////////////\n\n /**\n * The relationships between OptionGroup, SourceOptionGroup, and\n * FullOptionGroup is analogous to the option types above.\n *\n * As with before, the use of Omit<...> is not required but helpful.\n */\n\n export type OptionGroup<O extends BaseOption> = {\n header?: string;\n options: Option<O>[];\n };\n\n export type SourceOptionGroup<O extends BaseOption> = Omit<\n OptionGroup<O>,\n 'options'\n > & {\n options: SourceOption<O>[];\n };\n\n export type FullOptionGroup<O extends BaseOption> = Omit<\n SourceOptionGroup<O>,\n 'options'\n > & {\n options: FullOption<O>[];\n };\n\n /**\n * The OptionSet class provides Set-like functionality, but uniqueness is\n * determined by the option's ID rather than the object reference.\n */\n export class OptionSet<O extends BaseOption> extends Set<SourceOption<O>> {\n override has(option: SourceOption<O>) {\n return !![...this].find(o => o.id === option.id);\n }\n\n override add(option: SourceOption<O>) {\n if (this.has(option)) {\n // The Set already has some version of this option, but we'll make sure\n // it has the most recent object reference (while keeping insertion\n // order consistent).\n const newOptions = [...this].map(o =>\n o.id === option.id ? option : o,\n );\n this.clear();\n newOptions.forEach(o => {\n super.add(o);\n });\n } else {\n super.add(option);\n }\n return this;\n }\n\n override delete(option: SourceOption<O>) {\n const existing = [...this].find(o => o.id === option.id);\n if (existing) {\n super.delete(existing);\n return true;\n } else {\n return false;\n }\n }\n }\n\n ///////////\n // State //\n ///////////\n\n /**\n * The CoreState provides all of the foundational pieces of state required\n * for a working component. FullState is a pure derivation of CoreState plus\n * the configuration options, and provides conveniences for rendering the\n * components. Actions and the core state are passed to the reducer to\n * produce new CoreStates (which are then used to calculate new FullStates).\n *\n * ┌──────┐\n * │ UI ◄────────┐\n * └──┬───┘ │\n * │ │\n * ┌──▼────────┐ │\n * │ Actions │ │\n * └──┬────────┘ │\n * │ │\n * ┌──▼────────────┴─┐\n * │ State reducer │\n * └─────────────────┘\n */\n\n export type CoreState<O extends BaseOption> = {\n query: {\n search: string;\n };\n load: {\n loading: boolean;\n error: unknown | null;\n };\n sourceOptionGroups: SourceOptionGroup<O>[];\n selection: {\n selected: OptionSet<O>;\n };\n display: {\n placeholder: string;\n open: boolean;\n expandedOptions: Set<O['id']>;\n };\n };\n\n export type FullState<O extends BaseOption> = CoreState<O> & {\n query: {\n showSearch: boolean;\n searchPlaceholder: string;\n };\n fullOptionGroups: FullOptionGroup<O>[];\n selection: {\n allowMultiSelect: boolean;\n allowSelectAll: boolean;\n visibleSelectionState: MultiSelectionState;\n };\n display: {\n selected: string;\n zeroStateMessage: string | null;\n dividers: boolean;\n inline: boolean;\n maxHeight: string | null;\n maxWidth: string | null;\n minHeight: string | null;\n minWidth: string | null;\n displayLimitMessage: string | null;\n showSingleSelected: boolean;\n };\n };\n\n /////////////\n // Actions //\n /////////////\n\n export type Action<O extends BaseOption> =\n | { type: 'load' }\n | { type: 'openChange'; open: boolean }\n | { type: 'searchChange'; payload: string }\n | {\n type: 'selectionChange';\n payload: CoreState<O>['selection'];\n }\n | {\n type: 'toggleOptionSelected';\n id: O['id'];\n }\n | {\n type: 'setSelectedOption';\n id: O['id'];\n }\n | {\n type: 'visibleSelectedChange';\n }\n | {\n type: 'toggleOptionExpanded';\n id: O['id'];\n };\n\n type InternalAction<O extends BaseOption> =\n | { type: 'loadComplete'; data: SourceOptionGroup<O>[] }\n | { type: 'loadError'; error: unknown };\n\n ////////////\n // Source //\n ////////////\n\n /**\n * The Source's job is to fetch options (based on the current state) which\n * then blend with the other pieces of state to produce the FullState.\n */\n\n export type Source<O extends BaseOption> = (\n query: CoreState<O>['query'],\n mostRecentAction: Action<O>,\n ) => Promise<SourceOptionGroup<O>[]>;\n\n /////////////\n // Manager //\n /////////////\n\n export type Manager<O extends BaseOption> = {\n actions: Subject<Action<O>>;\n state: Connectable<FullState<O>>;\n };\n\n export type ManagerOptions<O extends BaseOption> = {\n initialState?: DeepPartial<CoreState<O>>;\n allowMultiSelect?: boolean;\n allowSearch?: boolean;\n allowSelectAll?: boolean;\n searchPlaceholder?: string;\n dividers?: boolean;\n inline?: boolean;\n maxHeight?: string | null;\n maxWidth?: string | null;\n minHeight?: string | null;\n minWidth?: string | null;\n displayLimit?: number;\n showSingleSelected?: boolean;\n };\n\n export function createManager<O extends BaseOption>(\n source: Source<O>,\n options?: ManagerOptions<O>,\n ): Manager<O> {\n const defaultState: CoreState<O> = {\n query: {\n search: '',\n },\n load: {\n loading: false,\n error: null,\n },\n sourceOptionGroups: [],\n selection: {\n selected: new OptionSet(),\n },\n display: {\n placeholder: 'Select...',\n open: false,\n expandedOptions: new Set(),\n },\n };\n const defaultedInitialState: CoreState<O> = defaultsDeep(\n {},\n options?.initialState,\n defaultState,\n );\n\n const actions: Subject<Action<O>> = new Subject();\n const internalActions: Subject<InternalAction<O>> = new Subject();\n const coreState: Observable<CoreState<O>> = merge(\n actions,\n internalActions,\n ).pipe(\n scan(\n (state, action) =>\n sideEffects(reduce(state, action), action, source, internalActions),\n defaultedInitialState,\n ),\n startWith(defaultedInitialState),\n );\n\n const state: Connectable<FullState<O>> = connectable(\n coreState.pipe(\n map(s => {\n const allOptionGroups: FullOptionGroup<O>[] =\n s.sourceOptionGroups.map(optionGroup => {\n return {\n ...optionGroup,\n options: optionGroup.options.map(option =>\n augmentOptionToFullOption(s, option),\n ),\n };\n });\n\n const topLevelOptions = getTopLevelOptions(allOptionGroups);\n\n const fullOptionGroups = applyDisplayLimit(\n allOptionGroups,\n options?.displayLimit,\n );\n\n return {\n ...s,\n query: {\n ...s.query,\n showSearch:\n !!options?.allowSearch &&\n (!!s.query.search || countAllOptions(allOptionGroups) > 5),\n searchPlaceholder: options?.searchPlaceholder ?? 'Search',\n },\n fullOptionGroups,\n selection: {\n ...s.selection,\n allowMultiSelect: !!options?.allowMultiSelect,\n allowSelectAll: !!options?.allowSelectAll,\n visibleSelectionState:\n getParentMultiSelectionState(topLevelOptions),\n },\n display: {\n ...s.display,\n selected: getSelectedDisplay(s),\n zeroStateMessage: getZeroStateMessage(s),\n dividers: !!options?.dividers,\n inline: !!options?.inline,\n maxHeight: options?.maxHeight ?? null,\n maxWidth: options?.maxWidth ?? null,\n minHeight: options?.minHeight ?? null,\n minWidth: options?.minWidth ?? null,\n displayLimitMessage: getDisplayLimitMessage(\n countVisibleOptions(fullOptionGroups, !!s.query.search),\n countVisibleOptions(allOptionGroups, !!s.query.search),\n s.query,\n ),\n showSingleSelected: !!options?.showSingleSelected,\n },\n };\n }),\n ),\n {\n connector: () => new ReplaySubject(1),\n resetOnDisconnect: false,\n },\n );\n state.connect();\n\n // Load the options immediately for selects that are displayed inline.\n if (options?.inline) actions.next({ type: 'load' });\n\n return { actions, state };\n }\n\n export type InMemoryManagerOptions<O extends BaseOption> =\n ManagerOptions<O> & {\n fuseOptions?: IFuseOptions<O>;\n };\n\n export function createInMemoryManager<O extends BaseOption>(\n fetchDataset: () => Promise<OptionGroup<O>[]> | OptionGroup<O>[],\n options?: InMemoryManagerOptions<O>,\n ): Manager<O> {\n let data: OptionGroup<O>[];\n let fuse: Fuse<O>;\n let exactMatch: boolean = false;\n let parents: Map<O['id'], O['id']>;\n let children: Map<O['id'], O['id'][]>;\n\n const source: Source<O> = async (query, mostRecentAction) => {\n /*\n Re-fetch the options on the load action, and rebuild the state\n derived from the option data.\n */\n if (\n mostRecentAction.type === 'load' ||\n mostRecentAction.type === 'openChange'\n ) {\n data = await fetchDataset();\n const topLevelOptions = getTopLevelOptions(data);\n\n fuse = new Fuse(flattenOptions(topLevelOptions, false), {\n threshold: 0.2,\n keys: ['title'],\n includeScore: true,\n includeMatches: true,\n ...options?.fuseOptions,\n });\n\n exactMatch = options?.fuseOptions?.threshold == 0;\n [parents, children] = getRelationshipMaps(topLevelOptions);\n }\n\n /*\n If the user is not searching options, return the full set of options\n as-is.\n */\n if (!query.search) return data;\n\n /*\n Execute the search with fuse. Once we have the search match data,\n rebuild just as much of the tree as is needed to render the search\n results. Specifically, any match will need all of its ancestors (so\n that matched leaf nodes are shown nested under their ancestors) and all\n of its children (because a matching parent means that all of its\n descendants match too, per the design specification), whether they\n themselves matched or not.\n */\n const matchedOptions: FuseResult<O>[] = fuse.search(query.search);\n const matchedIds: Set<O['id']> = new Set(\n matchedOptions.map(result => result.item.id),\n );\n\n const matchAncestors: Set<O['id']> = new Set();\n function collectAncestors(ids: O['id'][]) {\n for (const id of ids) {\n const parentId = parents.get(id);\n if (parentId) {\n matchAncestors.add(parentId);\n collectAncestors([parentId]);\n }\n }\n }\n collectAncestors([...matchedIds]);\n\n const matchDescendants: Set<O['id']> = new Set();\n function collectDescendants(ids: O['id'][]) {\n for (const id of ids) {\n const childrenIds = children.get(id);\n if (childrenIds) {\n for (const child of childrenIds) {\n matchDescendants.add(child);\n }\n collectDescendants(childrenIds);\n }\n }\n }\n collectDescendants([...matchedIds]);\n\n /*\n Next, we'll combine all the matched IDs with their direct ancestors and\n descandants, and filter the original data set down to just these\n options.\n */\n const filteredIds: Set<O['id']> = new Set([\n ...matchedIds,\n ...matchAncestors,\n ...matchDescendants,\n ]);\n\n function filterOptions(options: Option<O>[]): Option<O>[] {\n const filteredOptions: Option<O>[] = [];\n for (const option of options) {\n if (filteredIds.has(option.id)) {\n filteredOptions.push({\n ...option,\n children: option.children?.length\n ? filterOptions(option.children)\n : undefined,\n });\n }\n }\n return filteredOptions;\n }\n const filteredOptions = filterOptions(getTopLevelOptions(data));\n\n /*\n At this point, we have an array of distinct trees (top-level options),\n filtered down to only the options matching the search query. Note that\n we don't care about section headers when searching since results should\n be ordered by relevance. To calculate the order of these trees, we'll\n take the total match scores for options found in the tree, divided by\n the count of matches in the tree (the best average match score).\n */\n\n const scoreMap: Map<O['id'], number> = new Map(\n matchedOptions.map(result => [result.item.id, result.score ?? 0]),\n );\n const ordered = sortBy(filteredOptions, (option: Option<O>): number => {\n function calculateScore(option: Option<O>): number {\n return (\n (scoreMap.get(option.id) ?? 0) +\n (option.children ?? []).reduce(\n (score, child) => score + calculateScore(child),\n 0,\n )\n );\n }\n function calculateCount(option: Option<O>): number {\n return (\n 1 +\n (option.children ?? []).reduce(\n (count, child) => count + calculateCount(child),\n 0,\n )\n );\n }\n const totalScore = calculateScore(option);\n const totalCount = calculateCount(option);\n return totalScore / totalCount;\n });\n\n /*\n Finally, we'll add highlight indices to the matches so that they can be\n displayed to the user.\n */\n\n type Highlights = {\n titleHighlightIndices?: HighlightComponent.HighlightIndices[];\n subtitleHighlightIndices?: HighlightComponent.HighlightIndices[];\n };\n const highlightMap: Map<O['id'], Highlights> = new Map(\n matchedOptions.map(result => {\n const highlights: Highlights = {};\n for (const match of result.matches ?? []) {\n // filter out inexact matches\n if (exactMatch && match.value != null) {\n match.indices = match.indices.filter(\n isFuseMatchExact(match, query.search),\n );\n }\n if (match.key === 'title') {\n highlights.titleHighlightIndices = [...match.indices];\n }\n if (match.key === 'subtitle') {\n highlights.subtitleHighlightIndices = [...match.indices];\n }\n }\n return [result.item.id, highlights];\n }),\n );\n function addHighlightsToOption(options: Option<O>[]): SourceOption<O>[] {\n return options.map(option => ({\n ...option,\n ...highlightMap.get(option.id),\n ...(option.children?.length\n ? { children: addHighlightsToOption(option.children) }\n : null),\n }));\n }\n\n return [{ options: addHighlightsToOption(ordered) }];\n };\n\n return createManager(source, options);\n }\n\n export function isFuseMatchExact(\n match: FuseResultMatch,\n search: string,\n ): (\n value: RangeTuple,\n index: number,\n array: readonly RangeTuple[],\n ) => boolean {\n return matchedIndices => {\n const matchedValue = match\n .value!.slice(matchedIndices[0], matchedIndices[1] + 1)\n .toLowerCase();\n // fuse is weird with it's matches. For a text of \"planning\" and a search string of \"plan\"\n // the matched value will be \"plann\" with the extra 'n' because of its fuzzy matching.\n // so just make sure the matched value at least starts with the search string.\n // it's extra weird because for a text of \"analytics\" and a search string of \"nalytics\",\n // the matched value will be \"analytics\". So we just need to make sure the the matched value\n // includes the search string because there might be extra stuff on the front or the end.\n return matchedValue.includes(search.toLowerCase());\n };\n }\n\n //////////////////////////////////\n // State reducer (with helpers) //\n //////////////////////////////////\n\n function getDisplayLimitMessage<O extends BaseOption>(\n displayedOptionCount: number,\n totalOptionCount: number,\n query: CoreState<O>['query'],\n ): string | null {\n if (displayedOptionCount === totalOptionCount) return null;\n const rivNumber = new NumberPipe();\n const displayed = rivNumber.transform(displayedOptionCount);\n const total = rivNumber.transform(totalOptionCount);\n const start = `Showing ${displayed} of ${total} options`;\n return query.search ? `${start} matching \"${query.search}\"` : start;\n }\n\n function countVisibleOptions<O extends BaseOption>(\n optionGroups: FullOptionGroup<O>[],\n leafOnly: boolean,\n ): number {\n function count(options: FullOption<O>[]): number {\n return options.reduce((acc, option) => {\n if (option.expanded && option.children?.length) {\n return acc + (leafOnly ? 0 : 1) + count(option.children);\n }\n return acc + 1;\n }, 0);\n }\n\n return optionGroups.reduce(\n (total, group) => total + count(group.options),\n 0,\n );\n }\n\n function countAllOptions<O extends BaseOption>(\n optionGroups: FullOptionGroup<O>[],\n ): number {\n function count(options: FullOption<O>[]): number {\n return options.reduce((acc, option) => {\n if (option.children?.length) {\n return acc + 1 + count(option.children);\n }\n return acc + 1;\n }, 0);\n }\n\n return optionGroups.reduce(\n (total, group) => total + count(group.options),\n 0,\n );\n }\n\n function applyDisplayLimit<O extends BaseOption>(\n optionGroups: FullOptionGroup<O>[],\n displayLimit?: number,\n ): FullOptionGroup<O>[] {\n if (displayLimit === undefined) return optionGroups;\n\n type DisplayLimitOptions = [FullOption<O>[], number];\n function filterWithLimit(\n options: FullOption<O>[],\n remaining: number,\n ): DisplayLimitOptions {\n let left = remaining;\n const visibleOptions: FullOption<O>[] = [];\n for (const option of options) {\n if (left <= 0) break;\n\n if (option.expanded && option.children?.length) {\n const [childOptions, childRemaining] = filterWithLimit(\n option.children,\n left - 1,\n );\n visibleOptions.push({\n ...option,\n children: childOptions,\n });\n left = childRemaining;\n } else {\n visibleOptions.push(option);\n left--;\n }\n }\n return [visibleOptions, left];\n }\n\n type DisplayLimitGroups = [FullOptionGroup<O>[], number];\n const startingValue: DisplayLimitGroups = [[], displayLimit];\n const [resolvedGroups] = optionGroups.reduce<DisplayLimitGroups>(\n ([groups, remaining], group) => {\n const [options, leftAfter] = filterWithLimit(group.options, remaining);\n if (options.length) {\n return [[...groups, { ...group, options }], leftAfter];\n } else {\n return [groups, remaining];\n }\n },\n startingValue,\n );\n\n return resolvedGroups;\n }\n\n function getRelationshipMaps<O extends BaseOption>(\n options: Option<O>[],\n ): [Map<O['id'], O['id']>, Map<O['id'], O['id'][]>] {\n const parents = new Map();\n function buildParentsMap(options: Option<O>[], parent?: Option<O>): void {\n for (const option of options) {\n if (parent) {\n parents.set(option.id, parent.id);\n }\n if (option.children?.length) {\n buildParentsMap(option.children, option);\n }\n }\n }\n buildParentsMap(options);\n\n const children = new Map();\n function buildChildrenMap(options: Option<O>[]): void {\n for (const option of options) {\n if (option.children?.length) {\n children.set(\n option.id,\n option.children.map(({ id }) => id),\n );\n buildChildrenMap(option.children);\n }\n }\n }\n buildChildrenMap(options);\n\n return [parents, children];\n }\n\n function getTopLevelOptions<O extends BaseOption>(\n optionGroups: FullOptionGroup<O>[],\n ): FullOption<O>[];\n function getTopLevelOptions<O extends BaseOption>(\n optionGroups: SourceOptionGroup<O>[],\n ): SourceOption<O>[];\n function getTopLevelOptions<O extends BaseOption>(\n optionGroups: OptionGroup<O>[],\n ): Option<O>[];\n function getTopLevelOptions<\n O extends BaseOption,\n G extends { options: readonly T[] },\n T = G extends FullOptionGroup<O>\n ? FullOption<O>\n : G extends SourceOptionGroup<O>\n ? SourceOption<O>\n : Option<O>,\n >(optionGroups: G[]): T[] {\n return optionGroups.reduce<T[]>(\n (options, group) => [...options, ...group.options],\n [],\n );\n }\n\n function getParentMultiSelectionState<O extends BaseOption>(\n children: FullOption<O>[],\n ): MultiSelectionState {\n if (children.every(child => child.selected === true)) return true;\n if (children.every(child => child.selected === false)) return false;\n return 'indeterminate';\n }\n\n function augmentOptionToFullOption<O extends BaseOption>(\n state: CoreState<O>,\n option: SourceOption<O>,\n ): FullOption<O> {\n if (option.children?.length) {\n const augmentedChildren = option.children.map(child =>\n augmentOptionToFullOption(state, child),\n );\n return {\n ...option,\n children: augmentedChildren,\n selected: getParentMultiSelectionState(augmentedChildren),\n expanded: state.query.search\n ? true\n : state.display.expandedOptions.has(option.id),\n selectable: !state.query.search,\n expandable: !state.query.search,\n };\n }\n return {\n ...option,\n children: undefined,\n selected: state.selection.selected.has(option),\n expanded: false,\n selectable: true,\n expandable: false,\n };\n }\n\n function getSelectedDisplay<O extends BaseOption>(\n state: CoreState<O>,\n ): string {\n return [...state.selection.selected].map(({ title }) => title).join(', ');\n }\n\n function getZeroStateMessage<O extends BaseOption>(\n state: CoreState<O>,\n ): string | null {\n if (state.sourceOptionGroups.every(group => group.options.length === 0)) {\n if (state.query.search) return 'No results found.';\n return 'No options.';\n }\n return null;\n }\n\n function findOption<O extends BaseOption>(\n options: SourceOption<O>[],\n id: O['id'],\n ): SourceOption<O> | null {\n for (const option of options) {\n if (option.id === id) return option;\n if (option.children?.length) {\n const child = findOption(option.children, id);\n if (child) return child;\n }\n }\n return null;\n }\n\n function flattenOptions<O extends BaseOption>(\n options: Option<O>[],\n leafOnly: boolean,\n ): O[] {\n return flattenDeep(\n options.map(option => {\n if (option.children?.length) {\n const descendants = option.children.map(child =>\n flattenOptions([child], leafOnly),\n );\n return leafOnly ? descendants : [option, ...descendants];\n } else {\n return [option];\n }\n }),\n );\n }\n\n function toggleSelected<O extends BaseOption>(\n state: CoreState<O>,\n id: O['id'],\n ): CoreState<O> {\n const topLevelOptions = getTopLevelOptions(state.sourceOptionGroups);\n const option = findOption(topLevelOptions, id);\n if (!option) return state;\n\n const newSelection = new OptionSet(state.selection.selected);\n\n const newValue = !(\n augmentOptionToFullOption(state, option).selected === true\n );\n const leaves = flattenOptions([option], true);\n for (const leaf of leaves) {\n if (newValue) {\n newSelection.add(leaf);\n } else {\n newSelection.delete(leaf);\n }\n }\n\n return {\n ...state,\n selection: {\n selected: newSelection,\n },\n };\n }\n\n function setSelectedOption<O extends BaseOption>(\n state: CoreState<O>,\n id: O['id'],\n ): CoreState<O> {\n const topLevelOptions = getTopLevelOptions(state.sourceOptionGroups);\n const option = findOption(topLevelOptions, id);\n if (!option) return state;\n\n const newSelection = new OptionSet<O>();\n newSelection.add(option);\n\n return {\n ...state,\n selection: {\n selected: newSelection,\n },\n };\n }\n\n function toggleVisibleSelected<O extends BaseOption>(\n state: CoreState<O>,\n ): CoreState<O> {\n const leaves = flattenOptions(\n getTopLevelOptions(state.sourceOptionGroups),\n true,\n );\n const isAllSelected = leaves.every(leaf =>\n [...state.selection.selected].map(({ id }) => id).includes(leaf.id),\n );\n const newSelection = new OptionSet(state.selection.selected);\n\n for (const leaf of leaves) {\n if (isAllSelected) newSelection.delete(leaf);\n else newSelection.add(leaf);\n }\n\n return {\n ...state,\n selection: {\n ...state.selection,\n selected: newSelection,\n },\n };\n }\n\n function toggleOptionExpanded<O extends BaseOption>(\n state: CoreState<O>,\n id: O['id'],\n ): CoreState<O> {\n const newValue = !state.display.expandedOptions.has(id);\n const newExpandedOptions = new Set(state.display.expandedOptions);\n if (newValue) newExpandedOptions.add(id);\n else newExpandedOptions.delete(id);\n return {\n ...state,\n display: {\n ...state.display,\n expandedOptions: newExpandedOptions,\n },\n };\n }\n\n function sideEffects<O extends BaseOption>(\n state: CoreState<O>,\n action: Action<O> | InternalAction<O>,\n source: Source<O>,\n internalActions: Subject<InternalAction<O>>,\n ): CoreState<O> {\n if (\n action.type === 'load' ||\n action.type === 'searchChange' ||\n (action.type === 'openChange' && action.open)\n ) {\n source(state.query, action)\n .then(data => {\n internalActions.next({ type: 'loadComplete', data });\n })\n .catch(error => {\n console.error(error);\n internalActions.next({ type: 'loadError', error });\n });\n return {\n ...state,\n load: {\n loading: true,\n error: null,\n },\n };\n }\n return state;\n }\n\n function reduce<O extends BaseOption>(\n state: CoreState<O>,\n action: Action<O> | InternalAction<O>,\n ): CoreState<O> {\n switch (action.type) {\n case 'load':\n return state;\n case 'loadComplete':\n return {\n ...state,\n load: {\n loading: false,\n error: null,\n },\n sourceOptionGroups: action.data,\n };\n case 'loadError':\n return {\n ...state,\n load: {\n loading: false,\n error: action.error,\n },\n };\n case 'openChange':\n return {\n ...state,\n query: {\n search: '',\n },\n display: {\n ...state.display,\n open: action.open,\n },\n };\n case 'searchChange':\n return {\n ...state,\n query: {\n search: action.payload,\n },\n };\n case 'selectionChange':\n return {\n ...state,\n selection: action.payload,\n };\n case 'toggleOptionSelected':\n return toggleSelected(state, action.id);\n case 'setSelectedOption':\n return setSelectedOption(state, action.id);\n case 'visibleSelectedChange':\n return toggleVisibleSelected(state);\n case 'toggleOptionExpanded':\n return toggleOptionExpanded(state, action.id);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LoadingComponent } from '../loading/loading.component';\n\n@Component({\n selector: 'riv-loading-cover',\n templateUrl: './loading-cover.component.html',\n styleUrls: ['./loading-cover.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingCoverComponent {\n @Input()\n loading: boolean = false;\n\n @Input()\n loadingSize: LoadingComponent.Size = 40;\n\n @Input()\n errorMessage?: string;\n}\n","<ng-content></ng-content>\n<div *ngIf=\"loading\" class=\"cover\">\n <riv-loading [size]=\"loadingSize\"></riv-loading>\n</div>\n<div *ngIf=\"errorMessage\" class=\"cover\">\n <span class=\"error-icon\">🙁</span>\n <span>{{ errorMessage }}</span>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport { TextFieldComponent } from '../text-field/text-field.component';\n\n@Component({\n selector: 'riv-search',\n templateUrl: './search.component.html',\n styleUrls: [\n '../text-field/text-field.component.css',\n './search.component.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SearchComponent extends TextFieldComponent {\n @Input()\n override placeholder: string = 'Search';\n\n @Input()\n override name: string = 'search';\n\n @Input()\n labelTemplate?: TemplateRef<void>;\n}\n","<input\n #input\n [id]=\"name\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [type]=\"type\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.large]=\"size === 'large'\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [riv-auto-focus]=\"autoFocus\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"inputBlur()\"\n/>\n<div class=\"label\">\n <label [for]=\"name\" [class.close]=\"!!text\" (click)=\"text = ''\">\n <riv-icon\n *ngIf=\"!labelTemplate\"\n [class.clickable]=\"!!text\"\n [name]=\"!!text ? 'X' : 'Search'\"\n [size]=\"20\"\n ></riv-icon>\n <riv-icon\n *ngIf=\"labelTemplate && !!text\"\n class=\"clickable\"\n [name]=\"'X'\"\n [size]=\"20\"\n ></riv-icon>\n </label>\n <ng-container *ngIf=\"labelTemplate\" class=\"search-columns\"\n ><ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template\n ></ng-container>\n</div>\n","import { HighlightComponent } from './highlight.component';\n\nexport function chunks(\n text: string,\n indices: HighlightComponent.HighlightIndices[],\n): HighlightComponent.Chunk[] {\n let lastEnd = 0;\n const chunks = [];\n for (const [start, end] of indices) {\n chunks.push(\n {\n highlight: false,\n text: text.substring(lastEnd, start),\n },\n {\n highlight: true,\n text: text.substring(start, end + 1),\n },\n );\n lastEnd = end + 1;\n }\n chunks.push({\n highlight: false,\n text: text?.substring(lastEnd, text.length),\n });\n return chunks.filter(chunk => chunk.text);\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { chunks } from './highlight.helpers';\n\n@Component({\n selector: 'riv-highlight',\n templateUrl: './highlight.component.html',\n styleUrls: ['./highlight.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class HighlightComponent {\n @Input()\n text: string = '';\n\n @Input()\n indices: HighlightComponent.HighlightIndices[] = [];\n\n getChunks(): HighlightComponent.Chunk[] {\n return chunks(this.text, this.indices);\n }\n}\n\nexport namespace HighlightComponent {\n export type HighlightIndices = [number, number];\n\n export type Chunk = {\n highlight: boolean;\n text: string;\n };\n}\n","<span *ngFor=\"let chunk of getChunks()\" [class.highlight]=\"chunk.highlight\">{{\n chunk.text\n}}</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { RivSelect } from '../state';\n\n@Component({\n selector: 'riv-select-node',\n templateUrl: './select-node.component.html',\n styleUrls: ['./select-node.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectNodeComponent<O extends RivSelect.BaseOption> {\n @Input()\n mode?: SelectNodeComponent.Mode;\n\n @Input()\n node?: RivSelect.FullOption<O>;\n\n @Input()\n showSingleSelected?: boolean;\n\n @Output()\n selectChange = new EventEmitter<O['id']>();\n\n @Output()\n expandChange = new EventEmitter<O['id']>();\n\n includeCount(): boolean {\n return typeof this.node?.count === 'number';\n }\n\n // TODO: these two functions can probably go away once we upgrade Angular and\n // get better type safety in template code. (Angular changes the type of\n // this.node from FullOption<O> to FullOption<any>.)\n // https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n getId(node: RivSelect.FullOption<O>): O['id'] {\n return node.id;\n }\n getDisabled(node: RivSelect.FullOption<O>): boolean {\n return !!node.disabled;\n }\n getHelp(node: RivSelect.FullOption<O>): O['help'] {\n return node.help;\n }\n getCount(node: RivSelect.FullOption<O>): O['count'] {\n return node.count;\n }\n}\n\nexport namespace SelectNodeComponent {\n export const modes = ['single', 'multi'] as const;\n export type Mode = (typeof modes)[number];\n}\n","<ng-template #title let-n=\"node\">\n <riv-highlight\n class=\"title\"\n [text]=\"n.title\"\n [indices]=\"n.titleHighlightIndices ?? []\"\n ></riv-highlight>\n <span *ngIf=\"n.subtitle\"> </span>\n <riv-highlight\n *ngIf=\"n.subtitle\"\n class=\"subtitle\"\n [text]=\"n.subtitle\"\n [indices]=\"n.subtitleHighlightIndices ?? []\"\n ></riv-highlight>\n</ng-template>\n\n<ng-container *ngIf=\"node; let n\">\n <ng-container *ngIf=\"mode === 'multi'\">\n <div class=\"row\">\n <label rivTruncate [class.disabled]=\"getDisabled(n)\">\n <riv-checkbox\n *ngIf=\"n.selectable\"\n [value]=\"n.selected === true\"\n [indeterminate]=\"n.selected === 'indeterminate'\"\n [disabled]=\"getDisabled(n)\"\n (valueChange)=\"selectChange.emit(getId(n))\"\n >\n </riv-checkbox>\n <span rivTruncate class=\"name\">\n <ng-container\n *ngTemplateOutlet=\"title; context: { node: n }\"\n ></ng-container>\n </span>\n <riv-help\n *ngIf=\"getHelp(n); let help\"\n [help]=\"help\"\n [size]=\"12\"\n ></riv-help>\n <span *ngIf=\"includeCount()\" class=\"count\">\n {{ getCount(n) | rivNumber }}\n </span>\n </label>\n <button\n *ngIf=\"n.children?.length\"\n class=\"expand\"\n [disabled]=\"!n.expandable\"\n (click)=\"expandChange.emit(getId(n))\"\n >\n <riv-icon\n [size]=\"20\"\n [name]=\"n.expanded ? 'ChevronUp' : 'ChevronDown'\"\n ></riv-icon>\n </button>\n </div>\n <div *ngIf=\"n.expanded\" class=\"children\">\n <riv-select-node\n *ngFor=\"let child of n.children\"\n [mode]=\"mode\"\n [node]=\"child\"\n [showSingleSelected]=\"showSingleSelected\"\n (selectChange)=\"selectChange.emit($event)\"\n (expandChange)=\"expandChange.emit($event)\"\n ></riv-select-node>\n </div>\n </ng-container>\n <ng-container *ngIf=\"mode === 'single'\">\n <div class=\"row\">\n <button\n class=\"single\"\n [disabled]=\"getDisabled(n)\"\n (click)=\"selectChange.emit(getId(n))\"\n >\n <span class=\"label\" rivTruncate>\n <ng-container\n *ngTemplateOutlet=\"title; context: { node: n }\"\n ></ng-container>\n </span>\n <riv-help\n *ngIf=\"getHelp(n); let help\"\n [help]=\"help\"\n [size]=\"12\"\n ></riv-help>\n <riv-icon\n *ngIf=\"showSingleSelected && n.selected\"\n [name]=\"'Check'\"\n [size]=\"16\"\n ></riv-icon>\n <span *ngIf=\"includeCount()\" class=\"count\">\n {{ getCount(n) | rivNumber }}\n </span>\n </button>\n </div>\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\n\n@Component({\n selector: 'riv-zero-state',\n templateUrl: './zero-state.component.html',\n styleUrls: ['./zero-state.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ZeroStateComponent {\n @Input()\n message: string = 'No data to display.';\n\n @Input()\n title?: string;\n\n @Input()\n icon?: IconComponent.Name;\n}\n","<riv-icon *ngIf=\"icon; let i\" [name]=\"i\" [customSize]=\"40\"></riv-icon>\n<span *ngIf=\"title; let t\" class=\"title\">{{ t }}</span>\n<span class=\"message\">{{ message }}</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n Input,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { debounce } from 'lodash';\nimport { InputLabelComponent } from '../../input-label/input-label.component';\nimport { RivSelect } from '../state';\n\n@Component({\n selector: 'riv-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectComponent<\n O extends RivSelect.BaseOption,\n> extends InputLabelComponent {\n @Input()\n manager?: RivSelect.Manager<O>;\n\n @Input()\n size: SelectComponent.Size = 'medium';\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @ContentChild('trigger')\n triggerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n @ContentChild('option')\n optionTemplate?: TemplateRef<{ node: RivSelect.FullOption<O> }>;\n\n @ContentChild('header')\n headerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n @ContentChild('footer')\n footerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n @ViewChild('customTriggerButton')\n customTriggerButton?: ElementRef;\n\n @ViewChild('standardTriggerButton')\n standardTriggerButton?: ElementRef;\n\n getTrigger(): Element | null {\n return (\n this.customTriggerButton?.nativeElement ??\n this.standardTriggerButton?.nativeElement\n );\n }\n\n allowedOpen(): void {\n if (!this.disabled && !this.locked) {\n this.manager?.actions.next({\n type: 'openChange',\n open: true,\n });\n }\n }\n\n selectChange(multi: boolean, id: O['id']) {\n if (multi) {\n this.manager?.actions.next({\n type: 'toggleOptionSelected',\n id,\n });\n } else {\n this.manager?.actions.next({\n type: 'setSelectedOption',\n id,\n });\n this.manager?.actions.next({\n type: 'openChange',\n open: false,\n });\n }\n }\n\n searchChange = debounce((query: string) => {\n this.manager?.actions?.next({ type: 'searchChange', payload: query });\n }, 500);\n}\n\nexport namespace SelectComponent {\n export const Sizes = ['small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-template #content>\n <riv-loading-cover [loading]=\"s.load.loading\">\n <div\n class=\"content-body\"\n [class.inline]=\"s.display.inline\"\n [ngStyle]=\"{\n 'max-height': s.display.maxHeight,\n 'max-width': s.display.maxWidth,\n 'min-height': s.display.minHeight,\n 'min-width': s.display.minWidth\n }\"\n >\n <header *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { state: s }\"\n ></ng-container>\n </header>\n <riv-search\n *ngIf=\"s.query.showSearch\"\n [value]=\"s.query.search\"\n [placeholder]=\"s.query.searchPlaceholder\"\n [autoFocus]=\"true\"\n (valueChange)=\"searchChange($event)\"\n ></riv-search>\n <div class=\"options\">\n <riv-select-node\n *ngIf=\"\n s.selection.allowMultiSelect &&\n s.selection.allowSelectAll &&\n !s.display.zeroStateMessage\n \"\n [mode]=\"'multi'\"\n [node]=\"{\n id: '__NOOP__',\n title: s.query.search ? 'Select all matching' : 'Select all',\n selected: s.selection.visibleSelectionState,\n selectable: true,\n expandable: false,\n expanded: false\n }\"\n (selectChange)=\"\n manager?.actions?.next({ type: 'visibleSelectedChange' })\n \"\n ></riv-select-node>\n <div\n *ngFor=\"let group of s.fullOptionGroups\"\n class=\"group\"\n [class.divider]=\"s.display.dividers\"\n >\n <span *ngIf=\"group.header; let header\" class=\"header\">\n {{ header }}\n </span>\n <ng-container *ngFor=\"let option of group.options\">\n <ng-container *ngIf=\"optionTemplate; else standardTemplate\">\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ node: option }\"\n ></ng-container>\n </ng-container>\n <ng-template #standardTemplate>\n <riv-select-node\n [mode]=\"s.selection.allowMultiSelect ? 'multi' : 'single'\"\n [node]=\"option\"\n [showSingleSelected]=\"s.display.showSingleSelected\"\n (selectChange)=\"\n selectChange(s.selection.allowMultiSelect, $event)\n \"\n (expandChange)=\"\n manager?.actions?.next({\n type: 'toggleOptionExpanded',\n id: $event\n })\n \"\n ></riv-select-node>\n </ng-template>\n </ng-container>\n </div>\n <span\n *ngIf=\"s.display.displayLimitMessage; let message\"\n class=\"display-limit\"\n >\n {{ message }}\n </span>\n <riv-zero-state\n *ngIf=\"s.display.zeroStateMessage; let message\"\n [message]=\"message\"\n ></riv-zero-state>\n </div>\n <footer *ngIf=\"footerTemplate\" class=\"custom-footer\">\n <ng-container\n *ngTemplateOutlet=\"footerTemplate; context: { state: s }\"\n ></ng-container>\n </footer>\n </div>\n </riv-loading-cover>\n </ng-template>\n\n <ng-container *ngIf=\"!s.display.inline; else content\">\n <ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button\n #customTriggerButton\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"triggerTemplate\"\n [ngTemplateOutletContext]=\"{ state: s }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTrigger>\n <riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n >\n <button\n #standardTriggerButton\n class=\"trigger\"\n [class.small]=\"size === 'small'\"\n [class.large]=\"size === 'large'\"\n (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container\n *ngIf=\"s.selection.selected.size; else placeholderValue\"\n >\n <span *ngIf=\"s.selection.selected.size > 1\" class=\"selected-count\">\n {{ s.selection.selected.size | rivNumber }}\n </span>\n <span class=\"value\">{{ s.display.selected }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ s.display.placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon\n *ngIf=\"!locked\"\n [name]=\"'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"20\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n </ng-template>\n\n <ng-container *ngIf=\"s.display.open\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n (close)=\"manager?.actions?.next({ type: 'openChange', open: false })\"\n >\n <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n </riv-callout>\n </ng-container>\n </ng-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { IFuseOptions } from 'fuse.js';\nimport { isEqual } from 'lodash';\nimport { distinctUntilChanged, filter, map, Subscription } from 'rxjs';\nimport { InputLabelComponent } from '../input-label/input-label.component';\nimport { SelectComponent } from '../select/select/select.component';\nimport { RivSelect } from '../select/state';\n\n@Component({\n selector: 'riv-simple-select',\n templateUrl: './simple-select.component.html',\n styleUrls: ['./simple-select.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimpleSelectComponent<O extends RivSelect.BaseOption>\n extends InputLabelComponent\n implements OnInit, OnChanges, OnDestroy\n{\n @Input()\n optionGroups: RivSelect.OptionGroup<O>[] = [];\n\n @Input()\n selectedOption: O | null = null;\n\n @Input()\n size: SelectComponent.Size = 'medium';\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @Input()\n filterabilityOptions: SimpleSelectComponent.FilterabilityOptions<O> = {\n enabled: false,\n };\n\n @Input()\n placeholder?: string;\n\n @Input()\n maxHeight?: string;\n\n @Input()\n maxWidth?: string;\n\n @Input()\n minHeight?: string;\n\n @Input()\n minWidth?: string;\n\n @ContentChild('trigger')\n triggerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n @ContentChild('option')\n optionTemplate?: TemplateRef<{ node: RivSelect.FullOption<O> }>;\n\n @ContentChild('header')\n headerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n @ContentChild('footer')\n footerTemplate?: TemplateRef<{ state: RivSelect.FullState<O> }>;\n\n manager?: RivSelect.Manager<O>;\n selectedOptionSubscription?: Subscription;\n ngOnInit(): void {\n this.manager = RivSelect.createInMemoryManager(() => this.optionGroups, {\n allowMultiSelect: false,\n allowSearch: this.filterabilityOptions.enabled,\n allowSelectAll: false,\n displayLimit: 100,\n dividers: false,\n fuseOptions: this.filterabilityOptions.enabled\n ? this.filterabilityOptions.fuseOptions\n : undefined,\n initialState: {\n selection: {\n selected: new RivSelect.OptionSet(\n this.selectedOption ? [this.selectedOption] : [],\n ),\n },\n ...(this.placeholder\n ? { display: { placeholder: this.placeholder } }\n : null),\n },\n inline: false,\n maxHeight: this.maxHeight,\n maxWidth: this.maxWidth,\n minHeight: this.minHeight,\n minWidth: this.minWidth,\n searchPlaceholder: this.filterabilityOptions.enabled\n ? this.filterabilityOptions.placeholder\n : undefined,\n showSingleSelected: true,\n });\n\n this.selectedOptionSubscription = this.manager?.state\n .pipe(\n map(s => [...s.selection.selected][0] ?? null),\n filter(selection => selection?.id !== this.selectedOption?.id),\n distinctUntilChanged(isEqual),\n )\n .subscribe(selection => {\n this.selectedOptionChange.next(selection);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes['optionGroups'] &&\n !isEqual(\n changes['optionGroups'].previousValue,\n changes['optionGroups'].currentValue,\n )\n ) {\n this.manager?.actions.next({ type: 'load' });\n }\n\n if (\n changes['selectedOption'] &&\n !isEqual(\n changes['selectedOption'].previousValue,\n changes['selectedOption'].currentValue,\n )\n ) {\n this.manager?.actions.next({\n type: 'selectionChange',\n payload: {\n selected: new RivSelect.OptionSet(\n this.selectedOption ? [this.selectedOption] : [],\n ),\n },\n });\n }\n\n if (\n changes['filterabilityOptions'] &&\n !changes['filterabilityOptions'].firstChange &&\n !isEqual(\n changes['filterabilityOptions'].previousValue,\n changes['filterabilityOptions'].currentValue,\n )\n ) {\n console.warn(\n 'Heads up: changing filterabilityOptions on <riv-simple-select> after initialization has no effect',\n 'Was:',\n changes['filterabilityOptions'].previousValue,\n 'Changed to:',\n changes['filterabilityOptions'].currentValue,\n );\n }\n }\n\n ngOnDestroy(): void {\n this.selectedOptionSubscription?.unsubscribe();\n }\n\n public issueAction(action: RivSelect.Action<O>): void {\n this.manager?.actions.next(action);\n }\n\n @Output()\n selectedOptionChange = new EventEmitter<O | null>();\n}\n\nexport namespace SimpleSelectComponent {\n export type FilterabilityOptions<O extends RivSelect.BaseOption> =\n | {\n enabled: false;\n }\n | {\n enabled: true;\n placeholder?: string;\n fuseOptions?: IFuseOptions<O>;\n };\n}\n","<riv-select\n [manager]=\"manager\"\n [size]=\"size\"\n [disabled]=\"disabled\"\n [locked]=\"locked\"\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <ng-container *ngIf=\"triggerTemplate; let triggerTpl\">\n <ng-template #trigger let-state=\"state\">\n <ng-container\n [ngTemplateOutlet]=\"triggerTpl\"\n [ngTemplateOutletContext]=\"{ state }\"\n ></ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"optionTemplate; let optionTpl\">\n <ng-template #option let-node=\"node\">\n <button\n class=\"custom-node\"\n [disabled]=\"node.disabled\"\n (click)=\"\n manager?.actions?.next({\n type: 'setSelectedOption',\n id: node.id\n });\n manager?.actions?.next({\n type: 'openChange',\n open: false\n })\n \"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"optionTpl\"\n [ngTemplateOutletContext]=\"{ node }\"\n ></ng-container>\n </button>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"headerTemplate; let headerTpl\">\n <ng-template #header let-state=\"state\">\n <ng-container\n [ngTemplateOutlet]=\"headerTpl\"\n [ngTemplateOutletContext]=\"{ state }\"\n ></ng-container>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"footerTemplate; let footerTpl\">\n <ng-template #footer let-state=\"state\">\n <ng-container\n [ngTemplateOutlet]=\"footerTpl\"\n [ngTemplateOutletContext]=\"{ state }\"\n ></ng-container>\n </ng-template>\n </ng-container>\n</riv-select>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { RivSelect } from '../select/state';\n\n@Pipe({ name: 'rivOptionGroup' })\nexport class OptionGroupPipe<O extends RivSelect.BaseOption>\n implements PipeTransform\n{\n transform(value?: O[], header?: string): RivSelect.OptionGroup<O>[] {\n return [\n {\n header: header,\n options: value ?? [],\n },\n ];\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport {\n timeDay,\n timeDays,\n timeMonth,\n timeMonths,\n timeSunday,\n timeYear,\n timeYears,\n} from 'd3-time';\nimport { timeFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\n\nconst monthFormatter = timeFormat('%B');\nconst yearFormatter = timeFormat('%Y');\nconst dayFormatter = timeFormat('%e');\nconst weekdayNumberFormatter = timeFormat('%w');\n\nfunction getWeekdayNumber(date: Date): number {\n return parseInt(weekdayNumberFormatter(date));\n}\n\ntype DateOption = {\n id: string;\n title: string;\n disabled: boolean;\n date: Date;\n};\n\ntype CalendarDate = {\n date: Date;\n display: string;\n fadeIn: boolean;\n fadeOut: boolean;\n hidden: boolean;\n inCurrentMonth: boolean;\n inRange: boolean;\n roundedNe: boolean;\n roundedNw: boolean;\n roundedSe: boolean;\n roundedSw: boolean;\n selected: boolean;\n today: boolean;\n};\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalendarComponent {\n private readonly activeYearMonth$ = new BehaviorSubject<Date>(new Date());\n @Input()\n public set activeYearMonth(v: Date) {\n this.activeYearMonth$.next(v);\n }\n public get activeYearMonth(): Date {\n return this.activeYearMonth$.getValue();\n }\n\n private readonly displayMin$ = new BehaviorSubject<Date>(\n CalendarComponent.defaultMin,\n );\n @Input()\n public set displayMin(v: Date) {\n this.displayMin$.next(v);\n }\n public get displayMin(): Date {\n return this.displayMin$.getValue();\n }\n\n private readonly displayMax$ = new BehaviorSubject<Date>(\n CalendarComponent.defaultMax,\n );\n @Input()\n public set displayMax(v: Date) {\n this.displayMax$.next(v);\n }\n public get displayMax(): Date {\n return this.displayMax$.getValue();\n }\n\n private readonly selectableMin$ = new BehaviorSubject<Date | undefined>(\n undefined,\n );\n @Input()\n public set selectableMin(v: Date | undefined) {\n this.selectableMin$.next(v);\n }\n public get selectableMin(): Date | undefined {\n return this.selectableMin$.getValue();\n }\n\n private readonly selectableMax$ = new BehaviorSubject<Date | undefined>(\n undefined,\n );\n @Input()\n public set selectableMax(v: Date | undefined) {\n this.selectableMax$.next(v);\n }\n public get selectableMax(): Date | undefined {\n return this.selectableMax$.getValue();\n }\n\n private readonly omitRange$ = new BehaviorSubject<[Date, Date] | undefined>(\n undefined,\n );\n @Input()\n public set omitRange(v: [Date, Date] | undefined) {\n this.omitRange$.next(v);\n }\n public get omitRange(): [Date, Date] | undefined {\n return this.omitRange$.getValue();\n }\n\n private readonly selectedValue$ = new BehaviorSubject<\n Date | [Date, Date] | undefined\n >(undefined);\n @Input()\n public set selectedValue(v: Date | [Date, Date] | undefined) {\n this.selectedValue$.next(v);\n }\n public get selectedValue(): Date | [Date, Date] | undefined {\n return this.selectedValue$.getValue();\n }\n\n readonly yearOptions$: Observable<DateOption[]> = combineLatest([\n this.displayMin$,\n this.displayMax$,\n this.selectableMin$,\n this.selectableMax$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([\n displayMin,\n displayMax,\n selectableMin,\n selectableMax,\n activeYearMonth,\n ]) => {\n const min: Date = selectableMin ?? displayMin;\n const max: Date = selectableMax ?? displayMax;\n return timeYears(timeYear.floor(displayMin), displayMax)\n .reverse()\n .map(flooredYear => {\n const year = new Date(\n flooredYear.getFullYear(),\n activeYearMonth.getMonth(),\n );\n return {\n id: year.getFullYear().toString(),\n title: yearFormatter(year),\n disabled:\n year.getFullYear() < min.getFullYear() ||\n year.getFullYear() > max.getFullYear(),\n date: year,\n };\n });\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedYearOption$ = combineLatest([\n this.yearOptions$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([yearOptions, activeYearMonth]) =>\n yearOptions.find(\n y => y.id === activeYearMonth.getFullYear().toString(),\n ) || null,\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly monthOptions$: Observable<DateOption[]> = combineLatest([\n this.activeYearMonth$,\n this.displayMin$,\n this.displayMax$,\n this.selectableMin$,\n this.selectableMax$,\n ]).pipe(\n map(\n ([\n activeYearMonth,\n displayMin,\n displayMax,\n selectableMin,\n selectableMax,\n ]) => {\n const min = selectableMin ?? displayMin;\n const max = selectableMax ?? displayMax;\n return timeMonths(\n timeYear.floor(activeYearMonth),\n timeYear.floor(timeYear.offset(activeYearMonth, 1)),\n ).map(month => ({\n id: month.getMonth().toString(),\n title: monthFormatter(month),\n disabled:\n month.getMonth() < min.getMonth() ||\n month.getMonth() > max.getMonth(),\n date: month,\n }));\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedMonthOption$ = combineLatest([\n this.monthOptions$,\n this.activeYearMonth$,\n ]).pipe(\n map(\n ([monthOptions, activeYearMonth]) =>\n monthOptions.find(\n m => m.id === activeYearMonth.getMonth().toString(),\n ) || null,\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly previousMonth$ = combineLatest([\n this.activeYearMonth$,\n this.displayMin$,\n this.selectableMin$,\n ]).pipe(\n map(([yearMonth, displayMin, selectableMin]) => {\n const min: Date = selectableMin ?? displayMin;\n const previous = timeMonth.floor(timeMonth.offset(yearMonth, -1));\n if (previous.getMonth() < min.getMonth()) return null;\n return previous;\n }),\n );\n\n readonly nextMonth$ = combineLatest([\n this.activeYearMonth$,\n this.displayMax$,\n this.selectableMax$,\n ]).pipe(\n map(([yearMonth, displayMax, selectableMax]) => {\n const max: Date = selectableMax ?? displayMax;\n const next = timeMonth.floor(timeMonth.offset(yearMonth, 1));\n if (next.getMonth() > max.getMonth()) return null;\n return next;\n }),\n );\n\n private readonly datesInSelectedRange$: Observable<Date[]> =\n this.selectedValue$.pipe(\n map(selectedValue => {\n if (!selectedValue) return [];\n if (selectedValue instanceof Date) return [selectedValue];\n return timeDays(\n timeDay.floor(selectedValue[0]),\n timeDay.floor(timeDay.offset(selectedValue[1], 1)),\n );\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly dates$: Observable<CalendarDate[]> = combineLatest([\n this.activeYearMonth$,\n this.selectedValue$,\n this.datesInSelectedRange$,\n this.selectableMin$,\n this.selectableMax$,\n this.omitRange$,\n ]).pipe(\n map(\n ([\n activeYearMonth,\n selectedValue,\n datesInSelectedRange,\n selectableMin,\n selectableMax,\n omitRange,\n ]) => {\n const calendarDates = timeDays(\n timeSunday.floor(activeYearMonth),\n timeSunday.ceil(timeMonth.offset(activeYearMonth, 1)),\n );\n const minCalendarDate = calendarDates[0];\n const maxCalendarDate = calendarDates[calendarDates.length - 1];\n const selectedDateCoordinates = new Map<number, [number, number]>();\n const visibleDatesInSelectedRange = datesInSelectedRange.filter(\n selected =>\n selected.valueOf() >= minCalendarDate.valueOf() &&\n selected.valueOf() <= maxCalendarDate.valueOf() &&\n (selectableMin\n ? selected.valueOf() >= selectableMin.valueOf()\n : true) &&\n (selectableMax\n ? selected.valueOf() <= selectableMax.valueOf()\n : true) &&\n (omitRange\n ? selected.valueOf() < omitRange[0].valueOf() ||\n selected.valueOf() > omitRange[1].valueOf()\n : true),\n );\n if (visibleDatesInSelectedRange.length > 0) {\n const firstVisibleSelectedDateOffset = getWeekdayNumber(\n visibleDatesInSelectedRange[0],\n );\n visibleDatesInSelectedRange.forEach((selected, i) => {\n const x = getWeekdayNumber(selected);\n const y = Math.floor((i + firstVisibleSelectedDateOffset) / 7);\n selectedDateCoordinates.set(selected.valueOf(), [x, y]);\n });\n }\n function serializeCoordinates(coordinates: [number, number]): string {\n return coordinates.join(':');\n }\n\n const visibleDatesInSelectedRangeCoordinates = new Set(\n [...selectedDateCoordinates.values()].map(serializeCoordinates),\n );\n\n function getRoundedCorners(date: Date): {\n nw: boolean;\n ne: boolean;\n se: boolean;\n sw: boolean;\n } {\n const coordinates = selectedDateCoordinates.get(date.valueOf());\n if (!coordinates)\n return { nw: false, ne: false, se: false, sw: false };\n const [x, y] = coordinates;\n const top = serializeCoordinates([x, y - 1]),\n right = serializeCoordinates([x + 1, y]),\n bottom = serializeCoordinates([x, y + 1]),\n left = serializeCoordinates([x - 1, y]);\n return {\n nw:\n !visibleDatesInSelectedRangeCoordinates.has(top) &&\n !visibleDatesInSelectedRangeCoordinates.has(left),\n ne:\n !visibleDatesInSelectedRangeCoordinates.has(top) &&\n !visibleDatesInSelectedRangeCoordinates.has(right),\n se:\n !visibleDatesInSelectedRangeCoordinates.has(right) &&\n !visibleDatesInSelectedRangeCoordinates.has(bottom),\n sw:\n !visibleDatesInSelectedRangeCoordinates.has(left) &&\n !visibleDatesInSelectedRangeCoordinates.has(bottom),\n };\n }\n\n const visibleDatesInSelectedRangeValues = new Set(\n visibleDatesInSelectedRange.map(selected => selected.valueOf()),\n );\n\n const today = timeDay.floor(new Date());\n\n return calendarDates.map(date => {\n const { nw, ne, se, sw } = getRoundedCorners(date);\n const dateValue = date.valueOf();\n const inRange = visibleDatesInSelectedRangeValues.has(dateValue);\n const selected = selectedValue\n ? selectedValue instanceof Date\n ? dateValue === selectedValue.valueOf()\n : dateValue === selectedValue[0].valueOf() ||\n dateValue === selectedValue[1].valueOf()\n : false;\n return {\n date,\n display: dayFormatter(date),\n fadeIn:\n inRange &&\n (dateValue ===\n Math.max(\n minCalendarDate.valueOf(),\n selectableMin?.valueOf() ?? -Infinity,\n ) ||\n dateValue ===\n (omitRange\n ? timeDay.offset(omitRange[1], 1).valueOf()\n : -Infinity)),\n fadeOut:\n inRange &&\n (dateValue ===\n Math.min(\n maxCalendarDate.valueOf(),\n selectableMax?.valueOf() ?? Infinity,\n ) ||\n dateValue ===\n (omitRange\n ? timeDay.offset(omitRange[0], -1).valueOf()\n : Infinity)),\n hidden:\n dateValue < (selectableMin?.valueOf() ?? -Infinity) ||\n dateValue > (selectableMax?.valueOf() ?? Infinity) ||\n (omitRange\n ? omitRange[0].valueOf() <= dateValue &&\n dateValue <= omitRange[1].valueOf()\n : false),\n inCurrentMonth:\n dateValue >= activeYearMonth.valueOf() &&\n dateValue < timeMonth.offset(activeYearMonth, 1).valueOf(),\n inRange,\n roundedNe: ne,\n roundedNw: nw,\n roundedSe: se,\n roundedSw: sw,\n selected,\n today: dateValue === today.valueOf(),\n };\n });\n },\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n selectDay(day: CalendarDate) {\n if (!day.inCurrentMonth) {\n this.activeYearMonthChange.emit(timeMonth.floor(day.date));\n }\n this.dateSelect.emit(day.date);\n }\n\n @Output()\n activeYearMonthChange = new EventEmitter<Date>();\n\n emitActiveYearMonth(yearMonth: Date | null) {\n if (yearMonth) this.activeYearMonthChange.emit(yearMonth);\n }\n\n @Output()\n dateSelect = new EventEmitter<Date>();\n}\n\nexport namespace CalendarComponent {\n export const defaultMin = timeYear.floor(timeYear.offset(new Date(), -7));\n export const defaultMax = timeDay.offset(\n timeYear.floor(timeYear.offset(new Date(), 5)),\n -1,\n );\n}\n","<div class=\"controls\">\n <div>\n <riv-simple-select\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Month...' }\"\n [optionGroups]=\"monthOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedMonthOption$ | async\"\n (selectedOptionChange)=\"emitActiveYearMonth($event?.date ?? null)\"\n >\n <ng-template #trigger let-state=\"state\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ state.display.selected || '...' }}\n </button>\n </ng-template>\n </riv-simple-select>\n <riv-simple-select\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Year...' }\"\n [optionGroups]=\"yearOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedYearOption$ | async\"\n (selectedOptionChange)=\"emitActiveYearMonth($event?.date ?? null)\"\n >\n <ng-template #trigger let-state=\"state\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ state.display.selected || '...' }}\n </button>\n </ng-template>\n </riv-simple-select>\n </div>\n <div\n *ngIf=\"{ prev: previousMonth$ | async, next: nextMonth$ | async }; let vm\"\n >\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowLeft'\"\n [disabled]=\"!vm.prev\"\n (click)=\"vm.prev ? activeYearMonthChange.emit(vm.prev) : null\"\n type=\"button\"\n ></button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ArrowRight'\"\n [disabled]=\"!vm.next\"\n (click)=\"vm.next ? activeYearMonthChange.emit(vm.next) : null\"\n type=\"button\"\n ></button>\n </div>\n</div>\n<div class=\"calendar\">\n <span class=\"label\">Su</span>\n <span class=\"label\">Mo</span>\n <span class=\"label\">Tu</span>\n <span class=\"label\">We</span>\n <span class=\"label\">Th</span>\n <span class=\"label\">Fr</span>\n <span class=\"label\">Sa</span>\n <button\n *ngFor=\"let day of dates$ | async\"\n class=\"day\"\n [disabled]=\"day.hidden\"\n [class.bleed]=\"!day.inCurrentMonth\"\n [class.fade-in]=\"day.fadeIn\"\n [class.fade-out]=\"day.fadeOut\"\n [class.in-range]=\"day.inRange\"\n [class.rounded-ne]=\"day.roundedNe\"\n [class.rounded-nw]=\"day.roundedNw\"\n [class.rounded-se]=\"day.roundedSe\"\n [class.rounded-sw]=\"day.roundedSw\"\n (click)=\"selectDay(day)\"\n type=\"button\"\n >\n <span\n class=\"day-wrapper\"\n [class.selected]=\"day.selected\"\n [class.today]=\"day.today\"\n [class.hidden]=\"day.hidden\"\n >\n {{ day.display }}\n </span>\n </button>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n Output,\n} from '@angular/core';\nimport { timeDay, timeMonth, timeSunday, timeWeek, timeYear } from 'd3-time';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n merge,\n scan,\n shareReplay,\n skipUntil,\n startWith,\n withLatestFrom,\n} from 'rxjs';\nimport { DatePipe } from '../../format/pipes/date.pipe';\nimport { LocalStorage } from '../../util/local-storage';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\nconst timeQuarter = timeMonth.every(3)!;\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateRangeComponent extends InputLabelComponent {\n readonly TODAY = new Date();\n readonly STORAGE_KEY = 'date-range.default';\n\n private readonly showPresets$ = new BehaviorSubject<boolean>(true);\n @Input()\n set showPresets(v: boolean) {\n this.showPresets$.next(v);\n }\n get showPresets(): boolean {\n return this.showPresets$.getValue();\n }\n\n readonly min$ = new BehaviorSubject<Date>(CalendarComponent.defaultMin);\n @Input()\n set min(v: Date) {\n this.min$.next(v);\n }\n get min(): Date {\n return this.min$.getValue();\n }\n\n readonly max$ = new BehaviorSubject<Date>(CalendarComponent.defaultMax);\n @Input()\n set max(v: Date) {\n this.max$.next(v);\n }\n get max(): Date {\n return this.max$.getValue();\n }\n\n readonly value$ = new BehaviorSubject<[Date, Date] | undefined>(undefined);\n @Input()\n set value(v: [Date, Date] | undefined) {\n this.value$.next(v);\n }\n get value(): [Date, Date] | undefined {\n return this.value$.getValue();\n }\n\n readonly placeholder$ = new BehaviorSubject<string>('Select date range...');\n @Input()\n set placeholder(v: string) {\n this.placeholder$.next(v);\n }\n get placeholder(): string {\n return this.placeholder$.getValue();\n }\n\n readonly disabled$ = new BehaviorSubject(false);\n @Input()\n set disabled(v: boolean) {\n this.disabled$.next(v);\n }\n get disabled(): boolean {\n return this.disabled$.getValue();\n }\n\n readonly alternativePresetList$ = new BehaviorSubject<\n DateRangeComponent.PresetType[]\n >([]);\n @Input()\n set alternativePresetList(v: DateRangeComponent.PresetType[]) {\n this.alternativePresetList$.next(v);\n }\n get alternativePresetList(): DateRangeComponent.PresetType[] {\n return this.alternativePresetList$.getValue();\n }\n\n readonly open$ = new BehaviorSubject(false);\n\n readonly userSelectedPreset$ =\n new Subject<DateRangeComponent.Preset | null>();\n\n readonly userSelectedDate$ = new Subject<Date | undefined>();\n readonly selectedValue$: Observable<Date | [Date, Date] | undefined> = merge(\n this.value$,\n this.userSelectedDate$.pipe(\n scan(\n (previous: Date | [Date, Date] | undefined, date: Date | undefined) => {\n if (previous instanceof Date && date instanceof Date) {\n if (date.valueOf() >= previous.valueOf()) {\n const pair: [Date, Date] = [previous, date];\n return pair;\n }\n }\n return date;\n },\n ),\n ),\n this.userSelectedPreset$.pipe(\n filter((preset): preset is DateRangeComponent.Preset => preset !== null),\n map(preset => preset.dates),\n ),\n ).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\n readonly filteredPresetOptions$ = combineLatest([\n this.min$,\n this.max$,\n this.alternativePresetList$,\n ]).pipe(\n map(([min, max, alternativePresetList]) => {\n const optionsFilteredOnMinMax = DateRangeComponent.Presets.filter(\n p =>\n p.dates[0].valueOf() >= min.valueOf() &&\n p.dates[1].valueOf() <= max.valueOf(),\n );\n if (alternativePresetList.length == 0) {\n return optionsFilteredOnMinMax;\n } else {\n const optionsFilteredOnAlternativePresetList =\n optionsFilteredOnMinMax.filter(p =>\n alternativePresetList.includes(p.id),\n );\n return optionsFilteredOnAlternativePresetList;\n }\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedPreset$: Observable<DateRangeComponent.Preset | null> =\n combineLatest([\n this.selectedValue$,\n this.userSelectedPreset$.pipe(startWith(null)),\n ]).pipe(\n map(([selectedValue, userSelectedPreset]) => {\n if (selectedValue instanceof Array) {\n const options = DateRangeComponent.Presets.filter(\n preset =>\n preset.dates[0].valueOf() === selectedValue[0].valueOf() &&\n preset.dates[1].valueOf() === selectedValue[1].valueOf(),\n );\n if (options.length) {\n // Some date ranges match multiple presets, e.g. on Jan 19th, a\n // selected date range of Jan 1-19 would correspond to \"this month\n // so far,\" \"this quarter so far,\" and \"this year so far.\" We'll\n // use the user's most recent manual selection as a tie breaker\n // where possible.\n const mostRecent = options.find(\n option => option.id === userSelectedPreset?.id,\n );\n if (mostRecent) return mostRecent;\n return options[0];\n }\n }\n return null;\n }),\n );\n\n readonly favoritePresetIds$ = new LocalStorage<string[]>(\n this.STORAGE_KEY,\n [],\n );\n\n setFavorite(preset: DateRangeComponent.Preset, favorite: boolean) {\n const ids = new Set(this.favoritePresetIds$.getValue());\n if (favorite) {\n ids.add(preset.id);\n } else {\n ids.delete(preset.id);\n }\n this.favoritePresetIds$.next([...ids]);\n }\n\n readonly favoritePresets$: Observable<DateRangeComponent.Preset[]> =\n this.favoritePresetIds$.pipe(\n withLatestFrom(this.alternativePresetList$),\n map(([ids, alternativePresetList]) => {\n const favoritePresets = ids\n .map(id =>\n DateRangeComponent.Presets.find(preset => preset.id === id),\n )\n .filter((p): p is DateRangeComponent.Preset => p !== undefined);\n\n if (alternativePresetList.length == 0) {\n return favoritePresets;\n } else {\n const favoritesFilteredOnAlternativePresetList =\n favoritePresets.filter(p =>\n alternativePresetList.includes(\n <DateRangeComponent.PresetType>p.id,\n ),\n );\n return favoritesFilteredOnAlternativePresetList;\n }\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly userLeftActiveYearMonth$ = new Subject<Date>();\n readonly userRightActiveYearMonth$ = new Subject<Date>();\n\n readonly leftMin$ = this.min$.pipe(\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n readonly leftMax$ = this.max$.pipe(\n map(max => timeDay.offset(timeMonth.floor(max), -1)),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n readonly rightMax$ = this.max$.pipe(\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly leftActiveYearMonth$ = combineLatest([\n this.leftMax$,\n merge(\n this.userLeftActiveYearMonth$.pipe(\n startWith(timeMonth.floor(this.TODAY)),\n ),\n this.userSelectedPreset$.pipe(\n filter(\n (preset): preset is DateRangeComponent.Preset => preset !== null,\n ),\n map(preset => timeMonth.floor(preset.dates[0])),\n ),\n this.value$.pipe(\n filter((v): v is [Date, Date] => v !== undefined),\n map(v => timeMonth.floor(v[0])),\n ),\n ),\n ]).pipe(\n map(([leftMax, left]) => {\n if (left.valueOf() >= leftMax.valueOf()) return timeMonth.floor(leftMax);\n else return left;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly rightActiveYearMonth$ = combineLatest([\n this.leftActiveYearMonth$,\n merge(\n this.userRightActiveYearMonth$.pipe(\n startWith(timeMonth.ceil(this.TODAY)),\n ),\n this.userSelectedPreset$.pipe(\n filter(\n (preset): preset is DateRangeComponent.Preset => preset !== null,\n ),\n map(preset => timeMonth.floor(preset.dates[1])),\n ),\n this.value$.pipe(\n filter((v): v is [Date, Date] => v !== undefined),\n map(v => timeMonth.floor(v[1])),\n ),\n ),\n this.rightMax$,\n ]).pipe(\n map(([left, userRight, rightMax$]) => {\n if (left.valueOf() >= userRight.valueOf())\n return timeMonth.floor(timeMonth.offset(left, 1));\n else if (userRight.valueOf() >= rightMax$.valueOf())\n return timeMonth.floor(rightMax$);\n else return userRight;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly rightMin$ = this.leftActiveYearMonth$.pipe(\n map(left => timeMonth.floor(timeMonth.offset(left, 1))),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly leftOmitRange$: Observable<[Date, Date]> =\n this.rightActiveYearMonth$.pipe(\n map<Date, [Date, Date]>(rightActiveYearMonth => {\n const first = timeMonth.floor(rightActiveYearMonth);\n const last = timeDay.offset(\n timeMonth.floor(timeMonth.offset(rightActiveYearMonth, 1)),\n -1,\n );\n return [first, last];\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly userInteracted$ = merge(\n this.userSelectedDate$,\n this.userSelectedPreset$,\n );\n\n @Output()\n readonly valueChange: Observable<[Date, Date] | undefined> =\n this.selectedValue$.pipe(\n skipUntil(\n merge(\n this.userInteracted$,\n this.selectedValue$.pipe(filter(v => v !== undefined)),\n ),\n ),\n filter((v): v is [Date, Date] | undefined => !(v instanceof Date)),\n distinctUntilChanged(\n (previous, current) =>\n previous?.[0].valueOf() === current?.[0].valueOf() &&\n previous?.[1].valueOf() === current?.[1].valueOf(),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly displayValue$: Observable<string | undefined> =\n this.valueChange.pipe(\n map(v => {\n if (v) {\n return v.map(date => new DatePipe().transform(date)).join(' — ');\n }\n return undefined;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace DateRangeComponent {\n const today = new Date();\n\n export enum PresetType {\n TODAY = 'today',\n YESTERDAY = 'yesterday',\n TOMORROW = 'tomorrow',\n THIS_WEEK = 'this_week',\n THIS_WEEK_SO_FAR = 'this_week_so_far',\n LAST_WEEK = 'last_week',\n NEXT_WEEK = 'next_week',\n THIS_MONTH = 'this_month',\n THIS_MONTH_SO_FAR = 'this_month_so_far',\n LAST_MONTH = 'last_month',\n NEXT_MONTH = 'next_month',\n THIS_QUARTER = 'this_quarter',\n THIS_QUARTER_SO_FAR = 'this_quarter_so_far',\n LAST_QUARTER = 'last_quarter',\n NEXT_QUARTER = 'next_quarter',\n THIS_YEAR = 'this_year',\n THIS_YEAR_SO_FAR = 'this_year_so_far',\n LAST_YEAR = 'last_year',\n NEXT_YEAR = 'next_year',\n LAST_7_DAYS = 'last_7_days',\n LAST_14_DAYS = 'last_14_days',\n LAST_30_DAYS = 'last_30_days',\n LAST_60_DAYS = 'last_60_days',\n LAST_90_DAYS = 'last_90_days',\n LAST_180_DAYS = 'last_180_days',\n LAST_365_DAYS = 'last_365_days',\n }\n\n export type Preset = {\n id: PresetType;\n title: string;\n subtitle: string;\n dates: [Date, Date];\n };\n\n export const Presets: Preset[] = [\n {\n id: PresetType.TODAY,\n title: 'Today',\n subtitle: 'Today from midnight until the current time',\n dates: [timeDay(), timeDay()],\n },\n {\n id: PresetType.YESTERDAY,\n title: 'Yesterday',\n subtitle: 'The previous 24 hour day',\n dates: [timeDay.offset(timeDay(), -1), timeDay.offset(timeDay(), -1)],\n },\n {\n id: PresetType.TOMORROW,\n title: 'Tomorrow',\n subtitle: 'The next 24 hour day',\n dates: [timeDay.offset(timeDay(), 1), timeDay.offset(timeDay(), 1)],\n },\n {\n id: PresetType.THIS_WEEK,\n title: 'This week',\n subtitle: 'The current calendar week',\n dates: [\n timeSunday.floor(today),\n timeDay.offset(timeSunday.ceil(today), -1),\n ],\n },\n {\n id: PresetType.THIS_WEEK_SO_FAR,\n title: 'This week so far',\n subtitle: 'The current calendar week up to now',\n dates: [timeSunday.floor(today), timeDay.floor(today)],\n },\n {\n id: PresetType.LAST_WEEK,\n title: 'Last week',\n subtitle: 'The previous calendar week',\n dates: [\n timeSunday.offset(timeWeek.floor(today), -1),\n timeDay.offset(timeSunday.offset(timeWeek.ceil(today), -1), -1),\n ],\n },\n {\n id: PresetType.NEXT_WEEK,\n title: 'Next week',\n subtitle: 'The next calendar week',\n dates: [\n timeSunday.offset(timeWeek.floor(today), 1),\n timeDay.offset(timeSunday.offset(timeWeek.ceil(today), 1), -1),\n ],\n },\n {\n id: PresetType.THIS_MONTH,\n title: 'This month',\n subtitle: 'The current calendar month',\n dates: [\n timeMonth.floor(today),\n timeDay.offset(timeMonth.ceil(today), -1),\n ],\n },\n {\n id: PresetType.THIS_MONTH_SO_FAR,\n title: 'This month so far',\n subtitle: 'The current calendar month up to now',\n dates: [timeMonth.floor(today), timeDay.floor(today)],\n },\n {\n id: PresetType.LAST_MONTH,\n title: 'Last month',\n subtitle: 'The previous calendar month',\n dates: [\n timeMonth.offset(timeMonth.floor(today), -1),\n timeDay.offset(timeMonth.offset(timeMonth.ceil(today), -1), -1),\n ],\n },\n {\n id: PresetType.NEXT_MONTH,\n title: 'Next month',\n subtitle: 'The next calendar month',\n dates: [\n timeMonth.offset(timeMonth.floor(today), 1),\n timeDay.offset(timeMonth.offset(timeMonth.ceil(today), 1), -1),\n ],\n },\n {\n id: PresetType.THIS_QUARTER,\n title: 'This quarter',\n subtitle: 'The current quarter',\n dates: [\n timeQuarter.floor(today),\n timeDay.offset(timeQuarter.ceil(today), -1),\n ],\n },\n {\n id: PresetType.THIS_QUARTER_SO_FAR,\n title: 'This quarter so far',\n subtitle: 'The current quarter up to now',\n dates: [timeQuarter.floor(today), timeDay.floor(today)],\n },\n {\n id: PresetType.LAST_QUARTER,\n title: 'Last quarter',\n subtitle: 'The previous full quarter',\n dates: [\n timeQuarter.offset(timeQuarter.floor(today), -1),\n timeDay.offset(timeQuarter.offset(timeQuarter.ceil(today), -1), -1),\n ],\n },\n {\n id: PresetType.NEXT_QUARTER,\n title: 'Next quarter',\n subtitle: 'The next full quarter',\n dates: [\n timeQuarter.offset(timeQuarter.floor(today), 1),\n timeDay.offset(timeQuarter.offset(timeQuarter.ceil(today), 1), -1),\n ],\n },\n {\n id: PresetType.THIS_YEAR,\n title: 'This year',\n subtitle: 'The current calendar year',\n dates: [timeYear.floor(today), timeDay.offset(timeYear.ceil(today), -1)],\n },\n {\n id: PresetType.THIS_YEAR_SO_FAR,\n title: 'This year so far',\n subtitle: 'The current calendar year up to now',\n dates: [timeYear.floor(today), timeDay.floor(today)],\n },\n {\n id: PresetType.LAST_YEAR,\n title: 'Last year',\n subtitle: 'The previous calendar year',\n dates: [\n timeYear.offset(timeYear.floor(today), -1),\n timeDay.offset(timeYear.offset(timeYear.ceil(today), -1), -1),\n ],\n },\n {\n id: PresetType.NEXT_YEAR,\n title: 'Next year',\n subtitle: 'The next calendar year',\n dates: [\n timeYear.offset(timeYear.floor(today), 1),\n timeDay.offset(timeYear.offset(timeYear.ceil(today), 1), -1),\n ],\n },\n {\n id: PresetType.LAST_7_DAYS,\n title: 'Last 7 days',\n subtitle: 'The previous 7 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -8)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_14_DAYS,\n title: 'Last 14 days',\n subtitle: 'The previous 14 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -15)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_30_DAYS,\n title: 'Last 30 days',\n subtitle: 'The previous 30 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -31)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_60_DAYS,\n title: 'Last 60 days',\n subtitle: 'The previous 60 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -61)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_90_DAYS,\n title: 'Last 90 days',\n subtitle: 'The previous 90 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -91)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_180_DAYS,\n title: 'Last 180 days',\n subtitle: 'The previous 180 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -181)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n {\n id: PresetType.LAST_365_DAYS,\n title: 'Last 365 days',\n subtitle: 'The previous 365 days before today',\n dates: [\n timeDay.floor(timeDay.offset(today, -366)),\n timeDay.floor(timeDay.offset(today, -1)),\n ],\n },\n ];\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled$ | async\"\n type=\"button\"\n >\n <ng-container\n *ngIf=\"displayValue$ | async; else placeholderValue; let display\"\n >\n <span class=\"value\">{{ display }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder$ | async }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n\n<ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-inputValue\n [ngTemplateOutletContext]=\"{ $implicit: (value$ | async) }\"\n>\n <ng-container *ngIf=\"open$ | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false); userSelectedDate$.next(inputValue)\"\n >\n <div class=\"content\">\n <div *ngIf=\"showPresets\" class=\"presets\">\n <riv-simple-select\n [label]=\"'Date presets'\"\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Search...' }\"\n [optionGroups]=\"\n (filteredPresetOptions$ | async) ?? [] | rivOptionGroup\n \"\n [selectedOption]=\"selectedPreset$ | async\"\n (selectedOptionChange)=\"userSelectedPreset$.next($event)\"\n >\n <ng-template #option let-node=\"node\">\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-isFavorite\n [ngTemplateOutletContext]=\"{\n $implicit: (favoritePresetIds$ | async)?.includes(node.id)\n }\"\n >\n <div class=\"preset\" [class.favorite]=\"isFavorite\">\n <div class=\"description\">\n <riv-highlight\n class=\"title\"\n [text]=\"node.title\"\n [indices]=\"node.titleHighlightIndices || []\"\n ></riv-highlight>\n <riv-highlight\n class=\"subtitle\"\n [text]=\"node.subtitle\"\n [indices]=\"node.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </div>\n <button\n (click)=\"\n setFavorite(node, !isFavorite); $event.stopPropagation()\n \"\n type=\"button\"\n >\n <riv-icon\n [name]=\"isFavorite ? 'HeartActive' : 'Heart'\"\n [size]=\"16\"\n [rivTooltip]=\"'Mark as favorite'\"\n ></riv-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n </riv-simple-select>\n <ng-template\n #self\n [ngTemplateOutlet]=\"self\"\n let-favorites\n [ngTemplateOutletContext]=\"{ $implicit: favoritePresets$ | async }\"\n >\n <riv-input-label *ngIf=\"favorites.length\" [label]=\"'Favorites'\">\n <div class=\"shortcuts\">\n <button\n *ngFor=\"let favorite of favorites\"\n class=\"shortcut\"\n [class.active]=\"(selectedPreset$ | async)?.id === favorite.id\"\n (click)=\"userSelectedPreset$.next(favorite)\"\n type=\"button\"\n >\n <span class=\"title\">{{ favorite.title }}</span>\n <button\n (click)=\"setFavorite(favorite, false)\"\n [rivTooltip]=\"'Remove favorite'\"\n type=\"button\"\n >\n <riv-icon [name]=\"'HeartActive'\" [size]=\"16\"></riv-icon>\n </button>\n </button>\n </div>\n </riv-input-label>\n </ng-template>\n </div>\n\n <div class=\"calendars\">\n <riv-calendar\n class=\"left\"\n [activeYearMonth]=\"(leftActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userLeftActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(leftMin$ | async) || TODAY\"\n [selectableMax]=\"(leftMax$ | async) || TODAY\"\n [omitRange]=\"(leftOmitRange$ | async) || [TODAY, TODAY]\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n <riv-calendar\n class=\"right\"\n [activeYearMonth]=\"(rightActiveYearMonth$ | async) || TODAY\"\n (activeYearMonthChange)=\"userRightActiveYearMonth$.next($event)\"\n [displayMin]=\"(min$ | async) || TODAY\"\n [displayMax]=\"(max$ | async) || TODAY\"\n [selectableMin]=\"(rightMin$ | async) || TODAY\"\n [selectableMax]=\"(rightMax$ | async) || TODAY\"\n [selectedValue]=\"(selectedValue$ | async) || TODAY\"\n (dateSelect)=\"userSelectedDate$.next($event)\"\n ></riv-calendar>\n </div>\n\n <footer class=\"buttons\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n (click)=\"userSelectedDate$.next(undefined)\"\n type=\"button\"\n >\n Clear\n </button>\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'primary'\"\n (click)=\"open$.next(false)\"\n type=\"button\"\n >\n Done\n </button>\n </footer>\n </div>\n </riv-callout>\n </ng-container>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { timeMonth } from 'd3-time';\nimport { BehaviorSubject } from 'rxjs';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\n\n@Component({\n selector: 'riv-date',\n templateUrl: './date.component.html',\n styleUrls: ['./date.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateComponent extends InputLabelComponent {\n @Input()\n min: Date = CalendarComponent.defaultMin;\n\n @Input()\n max: Date = CalendarComponent.defaultMax;\n\n @Input()\n value?: Date;\n\n @Input()\n placeholder: string = 'Select date...';\n\n @Input()\n disabled: boolean = false;\n\n activeYearMonth = timeMonth.floor(new Date());\n\n readonly open$ = new BehaviorSubject<boolean>(false);\n @Input()\n set open(v: boolean) {\n this.open$.next(v);\n }\n get open(): boolean {\n return this.open$.getValue();\n }\n\n @Output()\n valueChange = new EventEmitter<Date>();\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <button\n #trigger\n class=\"trigger\"\n (click)=\"open$.next(true)\"\n [disabled]=\"disabled\"\n type=\"button\"\n >\n <ng-container *ngIf=\"value; else placeholderValue\">\n <span class=\"value\">{{ value | rivDate }}</span>\n </ng-container>\n <ng-template #placeholderValue>\n <span class=\"value placeholder\">{{ placeholder }}</span>\n </ng-template>\n <span class=\"chevron\">\n <riv-icon [name]=\"'Calendar'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n</riv-input-label>\n<ng-container *ngIf=\"open$ | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [allowedPositions]=\"[\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-right',\n 'bottom-center',\n 'bottom-left'\n ]\"\n [preferredPosition]=\"'bottom-right'\"\n (close)=\"open$.next(false)\"\n >\n <div class=\"content\">\n <riv-calendar\n [activeYearMonth]=\"activeYearMonth\"\n (activeYearMonthChange)=\"activeYearMonth = $event\"\n [displayMin]=\"min\"\n [displayMax]=\"max\"\n [selectableMin]=\"min\"\n [selectableMax]=\"max\"\n [selectedValue]=\"value\"\n (dateSelect)=\"valueChange.next($event); open$.next(false)\"\n ></riv-calendar>\n </div>\n </riv-callout>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NumberFieldComponent } from '../number-field/number-field.component';\n\n@Component({\n selector: 'riv-percentage-field',\n templateUrl: './percentage-field.component.html',\n styleUrls: ['./percentage-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PercentageFieldComponent extends NumberFieldComponent {\n @Input()\n override align: NumberFieldComponent.Alignment = 'right';\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <input\n #input\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n type=\"text\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [class.large]=\"size === 'large'\"\n [style.textAlign]=\"align\"\n [riv-auto-focus]=\"autoFocus\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n (blur)=\"inputBlur()\"\n />\n <span class=\"suffix\" [class.large]=\"size === 'large'\">%</span>\n</riv-input-label>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RadioComponent {\n @Input()\n name?: string;\n\n @Input()\n identifier?: string;\n\n @Input()\n value?: string;\n\n @Input()\n checked?: boolean = false;\n\n @Input()\n size?: RadioComponent.Size = 'medium';\n\n @Input()\n title?: string;\n\n @Input()\n subtitle?: string;\n\n @ContentChild('label')\n labelTemplate?: TemplateRef<{ checked: boolean }>;\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n required: boolean = false;\n\n @Output()\n checkedChange = new EventEmitter<boolean>();\n\n @ViewChild('label', { static: true })\n label?: ElementRef<HTMLLabelElement>;\n\n isRadioOnly(): boolean {\n return !this.title && !this.labelTemplate;\n }\n}\n\nexport namespace RadioComponent {\n export const Sizes = ['medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<label\n #label\n class=\"wrapper\"\n [ngClass]=\"size\"\n [class.disabled]=\"disabled\"\n [class.has-content]=\"!isRadioOnly()\"\n>\n <input\n #input\n type=\"radio\"\n [id]=\"identifier\"\n [name]=\"name\"\n [value]=\"value\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [checked]=\"checked\"\n (change)=\"checkedChange.emit(!!input.checked)\"\n />\n <ng-container *ngIf=\"labelTemplate; else defaultLabel\">\n <ng-container\n *ngTemplateOutlet=\"labelTemplate; context: { checked }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultLabel>\n <div *ngIf=\"title\" class=\"label\">\n <span class=\"title\">{{ title }}</span>\n <span *ngIf=\"subtitle\" class=\"subtitle\">{{ subtitle }}</span>\n </div>\n </ng-template>\n</label>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\n\n@Component({\n selector: 'riv-switch-checkbox',\n templateUrl: './switch-checkbox.component.html',\n styleUrls: ['./switch-checkbox.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SwitchCheckboxComponent extends CheckboxComponent {\n @Input()\n size: SwitchCheckboxComponent.Size = 'medium';\n}\n\nexport namespace SwitchCheckboxComponent {\n export const Sizes = ['small', 'medium'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<label [ngClass]=\"size\" [class.checked]=\"value\" [class.disabled]=\"disabled\">\n <input\n #input\n type=\"checkbox\"\n [name]=\"name\"\n [id]=\"identifier\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (change)=\"valueChange.emit(!!input.checked)\"\n />\n <ng-content></ng-content>\n</label>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { TextFieldComponent } from '../text-field/text-field.component';\n\n@Component({\n selector: 'riv-textarea-field',\n templateUrl: './textarea-field.component.html',\n styleUrls: ['./textarea-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextareaFieldComponent extends TextFieldComponent {\n @Input()\n rows: number = 4;\n\n override type: TextFieldComponent.Type = 'text';\n}\n","<riv-input-label\n [label]=\"label\"\n [help]=\"help\"\n [required]=\"required\"\n [labelActionText]=\"labelActionText\"\n (labelAction)=\"labelAction.emit($event)\"\n>\n <textarea\n #input\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [rows]=\"rows\"\n [value]=\"text\"\n (input)=\"text = input.value\"\n [class.large]=\"size === 'large'\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [class.warning]=\"state === 'warning'\"\n [class.error]=\"state === 'error'\"\n [riv-auto-focus]=\"autoFocus\"\n (blur)=\"inputBlur()\"\n ></textarea>\n</riv-input-label>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: '[riv-tab]',\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabComponent {\n @Input()\n @HostBinding('class.current')\n current?: boolean;\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'riv-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TabsComponent {}\n","<div class=\"container\">\n <ng-content></ng-content>\n</div>\n","import Fuse, { FuseResult, IFuseOptions } from 'fuse.js';\nimport { debounce, defaultsDeep, sortBy } from 'lodash';\nimport {\n connectable,\n Connectable,\n from,\n map,\n mergeScan,\n Observable,\n ReplaySubject,\n startWith,\n Subject,\n} from 'rxjs';\nimport { DeepPartial } from 'utility-types';\nimport { RivSelect } from '../../input/select/state';\nimport { HighlightComponent } from '../../visualization/highlight/highlight.component';\n\nexport namespace RivViews {\n export const ViewPermissions = ['private', 'public', 'shared'] as const;\n export type ViewPermission = (typeof ViewPermissions)[number];\n\n export const MenuContexts = ['tab', 'all-views', 'overflow'] as const;\n export type MenuContext = (typeof MenuContexts)[number];\n\n export type User = RivSelect.BaseOption;\n\n export type View<U extends User> = {\n id: string | number;\n title: string;\n enabled: boolean;\n } & (\n | {\n permission: 'private' | 'public';\n }\n | {\n permission: 'shared';\n sharedUsers: U[];\n }\n );\n\n export type FullView<U extends User, V extends View<U>> = V & {\n active: boolean;\n system: boolean;\n titleHighlightIndices?: HighlightComponent.HighlightIndices[];\n };\n\n ///////////\n // State //\n ///////////\n\n export type CoreState<U extends User, V extends View<U>> = {\n views: V[];\n activeViewId: V['id'] | null;\n containerWidth: number;\n editingViewContext: {\n id: V['id'];\n autoRename: boolean;\n menuContext: MenuContext;\n } | null;\n deletingViewContext: { id: V['id']; menuContext: MenuContext } | null;\n overflow: {\n search: string;\n pickerOpen: boolean;\n };\n all: {\n search: string;\n privateOpen: boolean;\n sharedOpen: boolean;\n publicOpen: boolean;\n };\n userSource: UserSource<U>;\n };\n\n export type FullState<U extends User, V extends View<U>> = CoreState<U, V> & {\n allViews: FullView<U, V>[];\n displayedViews: FullView<U, V>[];\n enabledViews: FullView<U, V>[];\n allEnabledViews: FullView<U, V>[];\n all: {\n privateViews: FullView<U, V>[];\n sharedViews: FullView<U, V>[];\n publicViews: FullView<U, V>[];\n };\n };\n\n /////////////\n // Actions //\n /////////////\n\n export type Action<U extends User, V extends View<U>> =\n | { type: 'load' }\n | { type: 'setActiveView'; id: V['id'] }\n | { type: 'setEnabled'; id: V['id']; enabled: boolean }\n | { type: 'setContainerWidth'; width: number }\n | { type: 'setOverflowPickerOpen'; open: boolean }\n | { type: 'setOverflowSearchQuery'; query: string }\n | { type: 'setAllViewsSearchQuery'; query: string }\n | { type: 'updateView'; view: V }\n | { type: 'deleteView'; view: V }\n | { type: 'duplicateView'; view: V; menuContext: MenuContext }\n | { type: 'copyLinkToView'; view: V }\n | { type: 'setEditingView'; context: CoreState<U, V>['editingViewContext'] }\n | {\n type: 'setDeletingView';\n context: CoreState<U, V>['deletingViewContext'];\n }\n | {\n type: 'viewOrderChange';\n previousEnabledIndex: number;\n newEnabledIndex: number;\n }\n | { type: 'setAllViewsToggle'; permission: ViewPermission; open: boolean };\n\n ////////////\n // Source //\n ////////////\n\n export type Source<U extends User, V extends View<U>> = () =>\n | V[]\n | Promise<V[]>;\n export type Save<U extends User, V extends View<U>> = (\n views: V[],\n ) => void | Promise<void>;\n export type Duplicate<U extends User, V extends View<U>> = (\n viewToDuplicate: V,\n ) => V | Promise<V>;\n export type UserSource<U extends User> = () => U[] | Promise<U[]>;\n export type CopyLink<U extends User, V extends View<U>> = (\n view: V,\n ) => void | Promise<void>;\n export type SetActiveViewId<U extends User, V extends View<U>> = (\n id: V['id'],\n ) => void | Promise<void>;\n\n /////////////\n // Manager //\n /////////////\n\n export type Manager<U extends User, V extends View<U>> = {\n actions: Subject<Action<U, V>>;\n state: Connectable<FullState<U, V>>;\n };\n\n export type ManagerOptions<U extends User, V extends View<U>> = {\n initialState?: DeepPartial<CoreState<U, V>>;\n fuseOptions?: IFuseOptions<V>;\n };\n\n export type CreateManagerInput<U extends User, V extends View<U>> = {\n source: Source<U, V>;\n save: Save<U, V>;\n duplicate: Duplicate<U, V>;\n userSource: UserSource<U>;\n copyLink: CopyLink<U, V>;\n setActiveViewId: SetActiveViewId<U, V>;\n options?: ManagerOptions<U, V>;\n };\n\n export function createManager<U extends User, V extends View<U>>({\n source,\n save,\n duplicate,\n userSource,\n copyLink,\n options,\n setActiveViewId,\n }: CreateManagerInput<U, V>): Manager<U, V> {\n const defaultState: CoreState<U, V> = {\n views: [],\n activeViewId: null,\n containerWidth: 0,\n editingViewContext: null,\n deletingViewContext: null,\n overflow: {\n search: '',\n pickerOpen: false,\n },\n all: {\n search: '',\n privateOpen: true,\n sharedOpen: true,\n publicOpen: true,\n },\n userSource,\n };\n\n const defaultedInitialState: CoreState<U, V> = defaultsDeep(\n {},\n options?.initialState,\n defaultState,\n );\n\n const actions: Subject<Action<U, V>> = new Subject();\n const coreState: Observable<CoreState<U, V>> = actions.pipe(\n mergeScan(\n (state, action) =>\n from(\n reduce(\n state,\n action,\n source,\n debounce(save, 200),\n duplicate,\n copyLink,\n setActiveViewId,\n ),\n ),\n defaultedInitialState,\n 1,\n ),\n startWith(defaultedInitialState),\n );\n\n const state: Connectable<FullState<U, V>> = connectable(\n coreState.pipe(\n map(s => {\n // If for some reason the active view is not currently enabled, we'll\n // default to making the first view active instead.\n const activeView: V | undefined = s.views.find(\n view => view.enabled && view.id === s.activeViewId,\n );\n\n const allViews: FullView<U, V>[] = s.views.map((view, i) => ({\n ...view,\n enabled: view.enabled || i === 0,\n active: activeView ? activeView.id === view.id : i === 0,\n system: i === 0,\n }));\n\n const allEnabledViews = getEnabledViews(allViews);\n\n const displayedViews = calculateDisplayedViews(\n allEnabledViews,\n calculateOverflowViewIndex(s),\n s.activeViewId,\n );\n\n const enabledViews = s.overflow.search\n ? searchViews(\n allEnabledViews,\n s.overflow.search,\n options?.fuseOptions,\n )\n : allEnabledViews;\n\n const allViewsFiltered = s.all.search\n ? searchViews(allViews, s.all.search, options?.fuseOptions)\n : allViews;\n\n const searchingAllViews = !!s.all.search;\n\n return {\n ...s,\n allViews,\n displayedViews,\n enabledViews,\n allEnabledViews,\n all: {\n ...s.all,\n privateOpen: searchingAllViews || s.all.privateOpen,\n privateViews: viewsByPermission(allViewsFiltered, 'private'),\n sharedOpen: searchingAllViews || s.all.sharedOpen,\n sharedViews: viewsByPermission(allViewsFiltered, 'shared'),\n publicOpen: searchingAllViews || s.all.publicOpen,\n publicViews: viewsByPermission(allViewsFiltered, 'public'),\n },\n };\n }),\n ),\n {\n connector: () => new ReplaySubject(1),\n resetOnDisconnect: false,\n },\n );\n state.connect();\n\n // Load the views immediately\n actions.next({ type: 'load' });\n\n return { actions, state };\n }\n\n //////////////////////////////////\n // State reducer (with helpers) //\n //////////////////////////////////\n\n function getEnabledViews<U extends User, V extends View<U>>(views: V[]): V[];\n function getEnabledViews<U extends User, V extends View<U>>(\n views: FullView<U, V>[],\n ): FullView<U, V>[] {\n return views.filter((v, i) => v.enabled || i === 0);\n }\n\n /**\n * Translates an index in the enabled views list to the corresponding index\n * in the full views list. This is used to resolve UI indices (which only\n * show enabled views) to state.views indices (which includes all views).\n */\n function mapEnabledIndexToViewIndex<U extends User, V extends View<U>>(\n views: V[],\n enabledIndex: number,\n ): number {\n const enabledViews = getEnabledViews(views);\n\n const targetView = enabledViews[enabledIndex];\n if (!targetView) return enabledIndex;\n\n const viewIndex = views.findIndex(view => view.id === targetView.id);\n return viewIndex === -1 ? enabledIndex : viewIndex;\n }\n\n function calculateOverflowViewIndex<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n ): number {\n const enabledViews = getEnabledViews(state.views);\n\n // Tabs have a minimum width of 92px.\n const possibleSlotCount = Math.floor(state.containerWidth / 92);\n\n // The \"all views\" sidebar trigger takes up one slot.\n const availableSlotCount = possibleSlotCount - 1;\n\n // If there are too many tabs, the \"N more\" trigger takes up one slot as well.\n // But we want to avoid the \"1 more\" case, so we only use a slot for \"N more\" if N != 1.\n if (availableSlotCount >= enabledViews.length) return enabledViews.length;\n else return availableSlotCount - 1; // the \"N more\" uses up a slot.\n }\n\n function calculateDisplayedViews<U extends User, V extends View<U>>(\n fullViews: FullView<U, V>[],\n overflowViewIndex: number,\n activeViewId: CoreState<U, V>['activeViewId'],\n ): FullView<U, V>[] {\n const displayedViews = fullViews.slice(0, overflowViewIndex);\n\n const activeViewInDisplay = displayedViews.some(\n view => view.id === activeViewId,\n );\n\n if (!activeViewInDisplay && activeViewId !== null) {\n const activeView = fullViews.find(view => view.id === activeViewId);\n if (activeView && displayedViews.length > 0) {\n return [...displayedViews.slice(0, -1), activeView];\n }\n }\n\n return displayedViews;\n }\n\n function viewsByPermission<U extends User, V extends View<U>>(\n views: FullView<U, V>[],\n permission: ViewPermission,\n ): FullView<U, V>[] {\n return sortBy(\n views.filter(view => view.permission === permission),\n [v => !v.system, 'title'],\n );\n }\n\n function searchViews<U extends User, V extends View<U>>(\n views: FullView<U, V>[],\n query: string,\n options?: IFuseOptions<V>,\n ): FullView<U, V>[] {\n const fuse = new Fuse(views, {\n threshold: 0.2,\n keys: ['title'],\n includeMatches: true,\n ...options,\n });\n\n const matchedOptions: FuseResult<FullView<U, V>>[] = fuse.search(query);\n\n return matchedOptions.map(result => ({\n ...result.item,\n titleHighlightIndices: [\n ...(result.matches?.find(match => match.key === 'title')?.indices ??\n []),\n ],\n }));\n }\n\n function getNextBestActiveView<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n ): V['id'] {\n const enabledViews = getEnabledViews(state.views);\n const currentActiveViewIndex = enabledViews.findIndex(\n view => view.id === state.activeViewId,\n );\n\n if (currentActiveViewIndex === -1) return enabledViews[0].id;\n return (\n enabledViews[currentActiveViewIndex + 1]?.id ??\n enabledViews[currentActiveViewIndex - 1]?.id ??\n enabledViews[0].id\n );\n }\n\n function deleteView<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n id: V['id'],\n ): CoreState<U, V> {\n const activeViewId =\n state.activeViewId === id\n ? getNextBestActiveView(state)\n : state.activeViewId;\n const views = state.views.filter(view => view.id !== id);\n return {\n ...state,\n views,\n activeViewId,\n deletingViewContext: null,\n };\n }\n\n function setEnabled<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n id: V['id'],\n enabled: boolean,\n ): CoreState<U, V> {\n return {\n ...state,\n views: state.views.map(view =>\n view.id === id ? { ...view, enabled } : view,\n ),\n activeViewId:\n !enabled && state.activeViewId === id\n ? getNextBestActiveView(state)\n : state.activeViewId,\n };\n }\n\n function withDuplicateView<U extends User, V extends View<U>>(\n views: V[],\n duplicatedView: V,\n newView: V,\n ): V[] {\n const sourceIndex = views.findIndex(view => view.id === duplicatedView.id);\n if (sourceIndex === -1) {\n return [newView, ...views];\n } else {\n return [\n ...views.slice(0, sourceIndex + 1),\n newView,\n ...views.slice(sourceIndex + 1),\n ];\n }\n }\n\n function viewOrderChange<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n previousEnabledIndex: number,\n newEnabledIndex: number,\n ): { state: CoreState<U, V>; shouldSave: boolean } {\n if (previousEnabledIndex === 0 || newEnabledIndex === 0) {\n return { state, shouldSave: false }; // Keep system view (index 0) in place\n }\n\n const actualPreviousIndex = mapEnabledIndexToViewIndex(\n state.views,\n previousEnabledIndex,\n );\n const actualNewIndex = mapEnabledIndexToViewIndex(\n state.views,\n newEnabledIndex,\n );\n\n const item = state.views[actualPreviousIndex];\n const withoutItem = state.views.filter((_, i) => i !== actualPreviousIndex);\n\n return {\n state: {\n ...state,\n views: [\n ...withoutItem.slice(0, actualNewIndex),\n item,\n ...withoutItem.slice(actualNewIndex),\n ],\n },\n shouldSave: true,\n };\n }\n\n async function reduce<U extends User, V extends View<U>>(\n state: CoreState<U, V>,\n action: Action<U, V>,\n source: Source<U, V>,\n save: Save<U, V>,\n duplicate: Duplicate<U, V>,\n copyLink: CopyLink<U, V>,\n setActiveViewId: SetActiveViewId<U, V>,\n ): Promise<CoreState<U, V>> {\n switch (action.type) {\n case 'load':\n const views = await source();\n return {\n ...state,\n views,\n };\n\n case 'setActiveView': {\n const activeView = state.views.find(v => v.id === action.id);\n const views =\n activeView && !activeView.enabled\n ? state.views.map(view =>\n view.id === action.id ? { ...view, enabled: true } : view,\n )\n : state.views;\n // If enabling the view changed the views, we need to save.\n if (views !== state.views) {\n save(views);\n }\n // notify the caller that the active view has changed\n setActiveViewId(action.id);\n return {\n ...state,\n activeViewId: action.id,\n views,\n all: {\n ...state.all,\n search: '',\n },\n overflow: {\n ...state.overflow,\n search: '',\n },\n };\n }\n\n case 'setEnabled': {\n const newState = setEnabled(state, action.id, action.enabled);\n save(newState.views);\n return newState;\n }\n\n case 'setContainerWidth':\n return {\n ...state,\n containerWidth: action.width,\n };\n\n case 'setOverflowPickerOpen':\n return {\n ...state,\n overflow: {\n ...state.overflow,\n pickerOpen: action.open,\n },\n };\n\n case 'setOverflowSearchQuery':\n return {\n ...state,\n overflow: {\n ...state.overflow,\n search: action.query,\n },\n };\n\n case 'setAllViewsSearchQuery':\n return {\n ...state,\n all: {\n ...state.all,\n search: action.query,\n },\n };\n\n case 'updateView': {\n const views = state.views.map(view =>\n view.id === action.view.id ? action.view : view,\n );\n save(views);\n return {\n ...state,\n views: views,\n };\n }\n\n case 'deleteView': {\n const newState = deleteView(state, action.view.id);\n save(newState.views);\n return newState;\n }\n\n case 'duplicateView': {\n const newView = await duplicate({ ...action.view });\n return {\n ...state,\n views: withDuplicateView(state.views, action.view, newView),\n editingViewContext: {\n id: newView.id,\n autoRename: true,\n menuContext: action.menuContext,\n },\n activeViewId: newView.id,\n };\n }\n\n case 'copyLinkToView':\n await copyLink(action.view);\n return state;\n\n case 'viewOrderChange': {\n const { state: newState, shouldSave } = viewOrderChange(\n state,\n action.previousEnabledIndex,\n action.newEnabledIndex,\n );\n if (shouldSave) {\n save(newState.views);\n }\n return newState;\n }\n\n case 'setAllViewsToggle':\n return {\n ...state,\n all: {\n ...state.all,\n privateOpen:\n action.permission === 'private'\n ? action.open\n : state.all.privateOpen,\n sharedOpen:\n action.permission === 'shared'\n ? action.open\n : state.all.sharedOpen,\n publicOpen:\n action.permission === 'public'\n ? action.open\n : state.all.publicOpen,\n },\n };\n\n case 'setEditingView':\n return {\n ...state,\n editingViewContext: action.context,\n };\n\n case 'setDeletingView':\n return {\n ...state,\n deletingViewContext: action.context,\n };\n }\n }\n\n ///////////////\n // Utilities //\n ///////////////\n\n export function getPermissionTitle(permission: ViewPermission): string {\n switch (permission) {\n case 'private':\n return 'Private';\n case 'shared':\n return 'Shared';\n case 'public':\n return 'Public';\n }\n }\n\n export function getPermissionDescription(permission: ViewPermission): string {\n switch (permission) {\n case 'private':\n return 'Only visible to you';\n case 'shared':\n return 'Only visible to those with access';\n case 'public':\n return 'Visible to everyone';\n }\n }\n\n export function isSharedView<U extends User, V extends View<U>>(\n view?: FullView<U, V>,\n ): view is FullView<U, V> & { permission: 'shared'; sharedUsers: U[] } {\n return view?.permission === 'shared';\n }\n}\n","import {\n animate,\n group,\n query,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { KeyValue } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n TemplateRef,\n TrackByFunction,\n} from '@angular/core';\nimport { OverlayService } from './overlay.service';\n\ntype AnimationConfig = {\n HOOK: string;\n HIDDEN: Parameters<typeof style>[0];\n VISIBLE: Parameters<typeof style>[0];\n};\n\nexport const ANIMATION_CONSTANTS: Record<\n 'SIDE_SHEET' | 'TOAST' | 'DIALOG' | 'MODAL',\n AnimationConfig\n> = {\n SIDE_SHEET: {\n HOOK: 'side-sheet',\n HIDDEN: { transform: 'translateX(100%)' },\n VISIBLE: { transform: 'translateX(0%)' },\n },\n TOAST: {\n HOOK: 'toast',\n HIDDEN: {\n opacity: 0,\n transform: 'translateY(calc(var(--size-xsmall) * -1))',\n filter: 'blur(var(--size-xsmall))',\n },\n VISIBLE: { opacity: 1, transform: 'translateY(0px)', filter: 'none' },\n },\n MODAL: {\n HOOK: 'modal',\n HIDDEN: { opacity: 0 },\n VISIBLE: { opacity: 1 },\n },\n DIALOG: {\n HOOK: 'dialog',\n HIDDEN: {\n transform: 'translateY(var(--size-large))',\n filter: 'blur(var(--size-xsmall))',\n },\n VISIBLE: { transform: 'translateY(0px)', filter: 'none' },\n },\n};\n\nfunction createComponentAnimation(config: AnimationConfig) {\n return {\n enter: query(\n `[data-animation-hook=\"${config.HOOK}\"]`,\n [\n style(config.HIDDEN),\n animate('200ms ease-in-out', style(config.VISIBLE)),\n ],\n { optional: true },\n ),\n leave: query(\n `[data-animation-hook=\"${config.HOOK}\"]`,\n [animate('150ms linear', style(config.HIDDEN))],\n { optional: true },\n ),\n };\n}\n\nconst sideSheetAnimation = createComponentAnimation(\n ANIMATION_CONSTANTS.SIDE_SHEET,\n);\nconst toastAnimation = createComponentAnimation(ANIMATION_CONSTANTS.TOAST);\nconst modalAnimation = createComponentAnimation(ANIMATION_CONSTANTS.MODAL);\nconst dialogAnimation = createComponentAnimation(ANIMATION_CONSTANTS.DIALOG);\n\n@Component({\n animations: [\n trigger('animate', [\n transition(':enter', [\n group([\n sideSheetAnimation.enter,\n toastAnimation.enter,\n modalAnimation.enter,\n dialogAnimation.enter,\n ]),\n ]),\n transition(':leave', [\n group([\n sideSheetAnimation.leave,\n toastAnimation.leave,\n modalAnimation.leave,\n dialogAnimation.leave,\n ]),\n ]),\n ]),\n ],\n selector: 'riv-overlay-outlet',\n templateUrl: './overlay-outlet.component.html',\n styleUrls: ['./overlay-outlet.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OverlayOutletComponent {\n constructor(readonly overlayService: OverlayService) {}\n\n readonly trackOverlay: TrackByFunction<KeyValue<Symbol, TemplateRef<void>>> =\n (_, { key }: { key: Symbol }) => key;\n}\n","<ng-container\n *ngFor=\"\n let overlay of overlayService.overlays | async | keyvalue;\n trackBy: trackOverlay\n \"\n>\n <div class=\"overlay-container\" @animate>\n <ng-container *ngTemplateOutlet=\"overlay.value\"></ng-container>\n </div>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ANIMATION_CONSTANTS } from '../overlay-outlet.component';\n\n@Component({\n selector: 'riv-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModalComponent {\n @Input()\n obscure: boolean = false;\n\n @Output()\n readonly close = new EventEmitter<void>();\n\n scrimClick(evt: MouseEvent) {\n if (evt.target === evt.currentTarget) {\n this.close.emit();\n }\n }\n\n readonly hook = ANIMATION_CONSTANTS.MODAL.HOOK;\n}\n","<div\n #scrim\n *riv-overlay\n [attr.data-animation-hook]=\"hook\"\n [rivLockScroll]=\"true\"\n class=\"scrim\"\n [class.obscure]=\"obscure\"\n (click)=\"scrimClick($event)\"\n>\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ANIMATION_CONSTANTS } from '../../overlay-outlet.component';\n\n@Component({\n selector: 'riv-side-sheet',\n templateUrl: './side-sheet.component.html',\n styleUrls: ['./side-sheet.component.css'],\n\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SideSheetComponent {\n @Input()\n topOffset: number = 0;\n\n @Input()\n width: string = 'calc(var(--base-grid-size) * 105)';\n\n @Input()\n obscure: boolean = false;\n\n @Output()\n close = new EventEmitter<void>();\n\n readonly hook = ANIMATION_CONSTANTS.SIDE_SHEET.HOOK;\n}\n","<riv-modal (close)=\"close.emit()\" [obscure]=\"obscure\">\n <div\n [attr.data-animation-hook]=\"hook\"\n class=\"side-sheet\"\n [style.top.px]=\"topOffset\"\n [style.width]=\"width\"\n >\n <ng-content></ng-content>\n </div>\n</riv-modal>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ANIMATION_CONSTANTS } from '../../overlay-outlet.component';\n\n@Component({\n selector: 'riv-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogComponent {\n @Input()\n title?: string;\n\n @Output()\n close = new EventEmitter<void>();\n\n readonly hook = ANIMATION_CONSTANTS.DIALOG.HOOK;\n}\n","<riv-modal (close)=\"close.emit()\" [obscure]=\"true\">\n <div [attr.data-animation-hook]=\"hook\" class=\"wrapper\">\n <div class=\"dialog\">\n <header>\n <span class=\"title\">\n {{ title }}\n </span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n <div class=\"body\">\n <ng-content></ng-content>\n </div>\n <div class=\"footer\">\n <ng-content select=\"footer\"></ng-content>\n </div>\n </div>\n </div>\n</riv-modal>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { Subscription } from 'rxjs';\nimport { RivSelect } from '../../../input/select/state';\nimport { RivViews } from '../state';\n\nconst titles: Record<RivViews.ViewPermission, string> = {\n private: 'Private',\n public: 'Public',\n shared: 'Shared',\n};\n\nconst subtitles: Record<RivViews.ViewPermission, string> = {\n private: 'Only visible to you',\n public: 'Visible to everyone',\n shared: 'Only visible to those with access',\n};\n\n@Component({\n selector: 'riv-edit-view',\n templateUrl: './edit-view.component.html',\n styleUrls: ['./edit-view.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditViewComponent<\n U extends RivViews.User,\n V extends RivViews.View<U>,\n> implements OnInit, OnChanges, OnDestroy\n{\n @Input()\n anchor?: Element | DOMRect | null;\n\n @Input()\n autoSelectName: boolean = false;\n\n @Input()\n view?: RivViews.FullView<U, V>;\n\n editedView?: RivViews.FullView<U, V>;\n\n @Input()\n userSource?: RivViews.UserSource<U>;\n\n @Input()\n mode: 'edit' | 'create' = 'edit';\n\n @Output()\n save = new EventEmitter<RivViews.FullView<U, V>>();\n\n @Output()\n delete = new EventEmitter<RivViews.FullView<U, V>>();\n\n @Output()\n close = new EventEmitter<void>();\n\n readonly permissionOptions = RivViews.ViewPermissions.map(permission => ({\n value: permission,\n title: titles[permission],\n subtitle: subtitles[permission],\n }));\n\n private resetView() {\n this.editedView = cloneDeep(this.view);\n this.setUpUserSelectManager();\n }\n\n ngOnInit(): void {\n this.resetView();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['view']) {\n this.resetView();\n }\n }\n\n ngOnDestroy(): void {\n this.tearDownUserSelectManager();\n }\n\n canEdit(): boolean {\n return this.mode === 'edit';\n }\n\n isClean() {\n return isEqual(this.editedView, this.view);\n }\n\n titleChange(value: string): void {\n if (this.editedView) this.editedView.title = value;\n }\n\n permissionChange(value: RivViews.ViewPermission): void {\n if (this.editedView) this.editedView.permission = value;\n }\n\n private getSharedUsers(view?: RivViews.FullView<U, V>): U[] {\n if (RivViews.isSharedView(view)) {\n return view.sharedUsers;\n }\n return [];\n }\n\n userSelectManager?: RivSelect.Manager<U>;\n private userSelectSubscription?: Subscription;\n\n private tearDownUserSelectManager(): void {\n this.userSelectSubscription?.unsubscribe();\n }\n\n private setUpUserSelectManager(): void {\n this.tearDownUserSelectManager();\n this.userSelectManager = RivSelect.createInMemoryManager(\n async () => [{ options: await (this.userSource || (() => []))() }],\n {\n allowSearch: true,\n allowSelectAll: true,\n allowMultiSelect: true,\n displayLimit: 500,\n initialState: {\n selection: {\n selected: new RivSelect.OptionSet(\n this.getSharedUsers(this.editedView),\n ),\n },\n },\n },\n );\n this.userSelectSubscription = this.userSelectManager.state.subscribe(\n state => {\n if (RivViews.isSharedView(this.editedView)) {\n this.editedView.sharedUsers = [...state.selection.selected] as U[];\n }\n },\n );\n this.userSelectManager.actions.next({ type: 'load' });\n }\n}\n","<ng-container *ngIf=\"editedView; let ev\">\n <riv-callout\n *riv-overlay\n [anchor]=\"anchor ?? null\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-right'\"\n [fallbackDirection]=\"'clockwise'\"\n (close)=\"close.emit()\"\n >\n <div class=\"edit-view\">\n <div class=\"name-input\">\n <span class=\"name-label\">Name * </span>\n <riv-text-field\n [autoFocus]=\"autoSelectName ? 'select' : false\"\n [value]=\"ev.title ?? ''\"\n (valueChange)=\"titleChange($event)\"\n ></riv-text-field>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"permissions\">\n <div class=\"permission-label\">View permissions</div>\n\n <div class=\"permission-options\">\n <button\n *ngFor=\"let option of permissionOptions\"\n class=\"permission-option\"\n [class.current]=\"ev.permission === option.value\"\n type=\"button\"\n [attr.aria-checked]=\"ev.permission === option.value\"\n [attr.aria-label]=\"option.title + ' permission'\"\n (click)=\"permissionChange(option.value)\"\n >\n <div class=\"option-content\">\n <div class=\"option-title\">\n <span>{{ option.title }}</span>\n <span class=\"option-description\">{{ option.subtitle }}</span>\n </div>\n <riv-icon\n *ngIf=\"ev.permission === option.value\"\n class=\"permission-indicator\"\n [name]=\"'Check'\"\n [size]=\"16\"\n ></riv-icon>\n </div>\n <riv-select\n *ngIf=\"\n ev.permission === 'shared' &&\n option.value === 'shared' &&\n userSelectManager\n \"\n [label]=\"'Users with access'\"\n [manager]=\"userSelectManager\"\n ></riv-select>\n </button>\n </div>\n </div>\n\n <hr class=\"divider\" />\n\n <div class=\"actions\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'Trash2'\"\n (click)=\"delete.emit(ev); close.emit()\"\n *ngIf=\"canEdit()\"\n >\n Delete\n </button>\n\n <div class=\"actions-spacer\"></div>\n\n <div class=\"primary-actions\">\n <button rivButton [variant]=\"'ghost'\" (click)=\"close.emit()\">\n Cancel\n </button>\n <button\n rivButton\n [variant]=\"'primary'\"\n [disabled]=\"canEdit() && isClean()\"\n (click)=\"save.emit(ev); close.emit()\"\n >\n Save\n </button>\n </div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n Input,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { CalloutComponent } from '../callout.component';\n\n@Component({\n selector: 'riv-menu',\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuComponent {\n public readonly open = new BehaviorSubject<boolean>(false);\n\n @Input()\n preferredPosition: CalloutComponent.AnchoredPosition = 'bottom-left';\n\n @ContentChild('trigger')\n triggerTemplate?: TemplateRef<{ open: boolean }>;\n\n @ViewChild('customTriggerButton', { read: ElementRef })\n customTriggerButton?: ElementRef;\n\n @ViewChild('standardTriggerButton', { read: ElementRef })\n standardTriggerButton?: ElementRef;\n\n getTrigger(): Element | null {\n return (\n this.customTriggerButton?.nativeElement ??\n this.standardTriggerButton?.nativeElement\n );\n }\n}\n","<ng-container *ngIf=\"triggerTemplate; else standardTrigger\">\n <button #customTriggerButton class=\"custom-trigger\" (click)=\"open.next(true)\">\n <ng-container\n *ngTemplateOutlet=\"triggerTemplate; context: { open: open | async }\"\n ></ng-container>\n </button>\n</ng-container>\n\n<ng-template #standardTrigger>\n <button\n #standardTriggerButton\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'xsmall'\"\n [icon]=\"'MoreVertical'\"\n (click)=\"open.next(true)\"\n ></button>\n</ng-template>\n\n<ng-container *ngIf=\"open | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"getTrigger()\"\n [showCaret]=\"false\"\n [preferredPosition]=\"preferredPosition\"\n [theme]=\"'light'\"\n (close)=\"open.next(false)\"\n >\n <div class=\"options\">\n <ng-content></ng-content>\n </div>\n </riv-callout>\n</ng-container>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'riv-menu-divider',\n template: '',\n styleUrls: ['./menu-divider.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuDividerComponent {}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { MenuComponent } from '../menu.component';\n\n@Component({\n selector: '[riv-menu-item]',\n templateUrl: './menu-item.component.html',\n styleUrls: ['./menu-item.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MenuItemComponent implements OnChanges {\n constructor(\n public readonly menu: MenuComponent,\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n ) {}\n\n @Input()\n locked?: boolean;\n\n @Input()\n disabled?: boolean;\n\n @Input()\n variant: MenuItemComponent.Variant = 'basic';\n\n @HostBinding('class')\n get classes() {\n return {\n [this.variant]: true,\n locked: this.locked,\n disabled: this.disabled,\n };\n }\n\n private disableNativeElement: boolean = false;\n private lockNativeElement: boolean = false;\n\n ngOnChanges(changes: SimpleChanges) {\n const accessChange: boolean = !!changes['disabled'] || !!changes['locked'];\n if (accessChange) {\n if (changes['disabled']) {\n this.disableNativeElement = changes['disabled'].currentValue;\n }\n if (changes['locked']) {\n this.lockNativeElement = changes['locked'].currentValue;\n }\n if ('disabled' in this.el.nativeElement) {\n if (this.disableNativeElement || this.lockNativeElement) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n }\n }\n }\n\n @HostListener('click', ['$event'])\n click(event: MouseEvent) {\n if (!this.disabled && !this.locked) {\n this.menu.open.next(false);\n } else {\n event.preventDefault();\n }\n }\n}\n\nexport namespace MenuItemComponent {\n export const Variants = ['basic', 'danger'] as const;\n export type Variant = (typeof Variants)[number];\n}\n","<ng-content></ng-content>\n<riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport { RivViews } from '../state';\n\n@Component({\n selector: 'riv-view-menu',\n templateUrl: './view-menu.component.html',\n styleUrls: ['./view-menu.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViewMenuComponent<\n U extends RivViews.User,\n V extends RivViews.View<U>,\n> {\n constructor(readonly el: ElementRef) {}\n\n @Input()\n manager?: RivViews.Manager<U, V>;\n\n @Input()\n view?: RivViews.FullView<U, V>;\n\n @Input()\n menuContext: RivViews.MenuContext = 'tab';\n\n @ContentChild('menuTrigger')\n triggerTemplate?: TemplateRef<void>;\n}\n","<ng-container *ngIf=\"view\">\n <riv-menu\n #menu\n [preferredPosition]=\"'bottom-right'\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-container *ngIf=\"triggerTemplate\">\n <ng-template #trigger>\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n {{ view.enabled ? 'Hide tab' : 'Show tab' }}\n </button>\n <riv-menu-divider></riv-menu-divider>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEditingView',\n context: { id: view.id, autoRename: false, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n >\n Edit view\n </button>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEditingView',\n context: { id: view.id, autoRename: true, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n >\n Rename view\n </button>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({ type: 'duplicateView', view, menuContext })\n \"\n >\n Duplicate view\n </button>\n <button\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setDeletingView',\n context: { id: view.id, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n >\n Delete view\n </button>\n <riv-menu-divider></riv-menu-divider>\n <button\n riv-menu-item\n (click)=\"manager?.actions?.next({ type: 'copyLinkToView', view })\"\n >\n Copy link to view\n </button>\n </riv-menu>\n\n <ng-container *ngIf=\"manager?.state | async; let state\">\n <ng-container *ngIf=\"state.editingViewContext; let editingViewContext\">\n <riv-edit-view\n *ngIf=\"\n editingViewContext.id === view.id &&\n editingViewContext.menuContext === menuContext\n \"\n [view]=\"view\"\n [userSource]=\"state.userSource\"\n [autoSelectName]=\"editingViewContext.autoRename\"\n [anchor]=\"el.nativeElement\"\n (save)=\"manager?.actions?.next({ type: 'updateView', view: $event })\"\n (delete)=\"manager?.actions?.next({ type: 'deleteView', view: $event })\"\n (close)=\"\n manager?.actions?.next({ type: 'setEditingView', context: null })\n \"\n ></riv-edit-view>\n </ng-container>\n\n <ng-container *ngIf=\"state.deletingViewContext; let deletingViewContext\">\n <riv-dialog\n *ngIf=\"\n deletingViewContext.id === view.id &&\n deletingViewContext.menuContext === menuContext\n \"\n [title]=\"'Delete view'\"\n (close)=\"\n manager?.actions?.next({ type: 'setDeletingView', context: null })\n \"\n >\n <div class=\"delete-dialog\">\n <div class=\"delete-title\">\n Are you sure you want to delete the following view?\n </div>\n <p>{{ view.title }}</p>\n </div>\n <footer class=\"delete-footer\">\n <button\n rivButton\n (click)=\"\n manager?.actions?.next({ type: 'setDeletingView', context: null })\n \"\n >\n Cancel\n </button>\n <button\n rivButton\n [variant]=\"'danger'\"\n (click)=\"\n manager?.actions?.next({\n type: 'deleteView',\n view\n })\n \"\n >\n Delete view\n </button>\n </footer>\n </riv-dialog>\n </ng-container>\n </ng-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { RivViews } from '../state';\n\n@Component({\n selector: 'riv-all-views-modal',\n templateUrl: './all-views-modal.component.html',\n styleUrls: ['./all-views-modal.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AllViewsModalComponent<\n U extends RivViews.User,\n V extends RivViews.View<U>,\n> {\n @Input()\n manager?: RivViews.Manager<U, V>;\n\n @Input()\n topOffset: number = 0;\n\n @Output()\n close = new EventEmitter<void>();\n\n getOpenChange(permission: RivViews.ViewPermission): (open: boolean) => void {\n return (open: boolean) =>\n this.manager?.actions?.next({\n type: 'setAllViewsToggle',\n permission,\n open,\n });\n }\n\n getPermissionTitle = RivViews.getPermissionTitle;\n getPermissionDescription = RivViews.getPermissionDescription;\n\n trackById(_: number, view: RivViews.FullView<U, V>): V['id'] {\n return view.id;\n }\n}\n","<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-side-sheet [topOffset]=\"topOffset\" (close)=\"close.emit()\">\n <div class=\"content\">\n <header>\n <span class=\"title\">All views</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"close.emit()\"\n ></button>\n </header>\n\n <riv-search\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setAllViewsSearchQuery',\n query: $event\n })\n \"\n [value]=\"s.all.search\"\n placeholder=\"Search\"\n ></riv-search>\n\n <div class=\"views\">\n <!-- View sections by permission type -->\n <ng-container\n *ngIf=\"s.all.privateViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'private',\n open: s.all.privateOpen,\n openChange: getOpenChange('private'),\n views: s.all.privateViews,\n title: getPermissionTitle('private'),\n description: getPermissionDescription('private')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.sharedViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'shared',\n open: s.all.sharedOpen,\n openChange: getOpenChange('shared'),\n views: s.all.sharedViews,\n title: getPermissionTitle('shared'),\n description: getPermissionDescription('shared')\n }\"\n ></ng-container>\n <ng-container\n *ngIf=\"s.all.publicViews.length > 0\"\n [ngTemplateOutlet]=\"permissionSection\"\n [ngTemplateOutletContext]=\"{\n permission: 'public',\n open: s.all.publicOpen,\n openChange: getOpenChange('public'),\n views: s.all.publicViews,\n title: getPermissionTitle('public'),\n description: getPermissionDescription('public')\n }\"\n ></ng-container>\n\n <!-- Permission section -->\n <ng-template\n #permissionSection\n let-permission=\"permission\"\n let-open=\"open\"\n let-openChange=\"openChange\"\n let-views=\"views\"\n let-title=\"title\"\n let-description=\"description\"\n >\n <div class=\"permission-section\">\n <button\n class=\"permission-header\"\n (click)=\"openChange(!open)\"\n [disabled]=\"!!s.all.search\"\n >\n <div class=\"permission-header-content\">\n <h3 class=\"permission-title\">{{ title }}</h3>\n <span class=\"permission-description\">{{ description }}</span>\n </div>\n <riv-icon\n [name]=\"open ? 'ChevronUp' : 'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n </button>\n\n <div class=\"permission-content\" *ngIf=\"open\">\n <div class=\"views-list\" *ngIf=\"views.length > 0\">\n <button\n *ngFor=\"let view of views; trackBy: trackById\"\n class=\"view-item\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id\n });\n close.emit()\n \"\n >\n <div class=\"view-title\" rivTruncate>\n <riv-highlight\n [text]=\"view.title\"\n [indices]=\"view.titleHighlightIndices ?? []\"\n >\n </riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'all-views'\"\n ></riv-view-menu>\n <button\n class=\"enable-view\"\n [class.enabled]=\"view.enabled\"\n (click)=\"\n $event.stopPropagation();\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled\n })\n \"\n [disabled]=\"view.system\"\n >\n <riv-icon\n [name]=\"\n view.system ? 'Lock' : view.enabled ? 'Eye' : 'EyeOff'\n \"\n [size]=\"20\"\n ></riv-icon>\n </button>\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </riv-side-sheet>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { ANIMATION_CONSTANTS } from '../overlay-outlet.component';\n\n@Component({\n selector: 'riv-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastComponent implements OnInit {\n @Input()\n variant: ToastComponent.Variant = 'basic';\n\n @Input()\n icon?: IconComponent.Name;\n\n ngOnInit(): void {\n setTimeout(() => {\n this.close.emit();\n }, 3000);\n }\n\n @Output()\n close = new EventEmitter<void>();\n\n readonly hook = ANIMATION_CONSTANTS.TOAST.HOOK;\n}\n\nexport namespace ToastComponent {\n export const Variants = [\n 'basic',\n 'danger',\n 'safety',\n 'safety-dark',\n 'safety-inverse',\n ] as const;\n export type Variant = (typeof Variants)[number];\n}\n","<div *riv-overlay class=\"wrapper\" [attr.data-animation-hook]=\"hook\">\n <div class=\"toast\" [ngClass]=\"variant\">\n <riv-icon *ngIf=\"icon\" [name]=\"icon\" [size]=\"16\"></riv-icon>\n <div class=\"content\"><ng-content></ng-content></div>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n TrackByFunction,\n ViewChild,\n} from '@angular/core';\nimport { filter, map, merge, Observable, Subject } from 'rxjs';\nimport { RivViews } from '../state';\n\n@Component({\n selector: 'riv-views',\n templateUrl: './views.component.html',\n styleUrls: ['./views.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ViewsComponent<U extends RivViews.User, V extends RivViews.View<U>>\n implements OnInit\n{\n @Input()\n manager?: RivViews.Manager<U, V>;\n\n @Input()\n sideSheetTopOffset: number = 0;\n\n @ViewChild('overflowTrigger', { read: ElementRef })\n overflowTrigger?: ElementRef;\n\n @ViewChild('activeTab', { read: ElementRef })\n activeTab?: ElementRef;\n\n public showAllViews: boolean = false;\n\n draggedTabIndex: number | null = null;\n draggedOverTabIndex: number | null = null;\n\n dragStart(index: number): void {\n if (index > 0) this.draggedTabIndex = index;\n }\n\n dragOver(index: number): void {\n if (index > 0) this.draggedOverTabIndex = index;\n else this.draggedOverTabIndex = null;\n }\n\n drop(index: number): void {\n if (this.draggedTabIndex !== null) {\n this.manager?.actions.next({\n type: 'viewOrderChange',\n previousEnabledIndex: this.draggedTabIndex,\n newEnabledIndex: index,\n });\n }\n\n this.draggedTabIndex = null;\n this.draggedOverTabIndex = null;\n }\n\n toastClosed = new Subject<void>();\n showLinkCopiedToast?: Observable<boolean>;\n ngOnInit() {\n this.showLinkCopiedToast = merge(\n this.manager!.actions.pipe(\n filter(({ type }) => type === 'copyLinkToView'),\n map(() => true),\n ),\n this.toastClosed.pipe(map(() => false)),\n );\n }\n\n trackById: TrackByFunction<RivViews.FullView<U, V>> = (\n _: number,\n v: RivViews.FullView<U, V>,\n ) => v.id;\n}\n","<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <div\n #activeTab\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"i === 0\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"menu-wrapper\" rivTruncate>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <button class=\"menu-trigger\" rivTruncate>\n {{ view.title }}\n </button>\n </ng-template>\n </riv-view-menu>\n </div>\n </div>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"i === 0\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n *ngIf=\"s.allEnabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"i > 0\"\n [attr.droppable]=\"i > 0\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n (click)=\"\n manager?.actions?.next({ type: 'setActiveView', id: view.id });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"i > 0\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-badge',\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BadgeComponent {\n @Input()\n variant: BadgeComponent.Variant = 'brand';\n\n @Input()\n size: BadgeComponent.Size = 'medium';\n\n @HostBinding('class')\n get classes() {\n return `${this.size} ${this.variant}`;\n }\n}\n\nexport namespace BadgeComponent {\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n\n export const Variants = [\n 'brand',\n 'disabled',\n\n 'qualitative-safety',\n 'qualitative-caution',\n 'qualitative-warning',\n 'qualitative-danger',\n 'qualitative-danger-inverse',\n\n 'categorical-2',\n 'categorical-3',\n 'categorical-4',\n 'categorical-6',\n 'categorical-7',\n 'categorical-8',\n 'categorical-9',\n 'categorical-10',\n ] as const;\n export type Variant = (typeof Variants)[number];\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n} from '@angular/core';\n\n@Component({\n selector: '[riv-banner-action]',\n templateUrl: './banner-action.component.html',\n styleUrls: ['./banner-action.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BannerActionComponent implements OnChanges {\n constructor(\n private readonly el: ElementRef,\n private readonly renderer: Renderer2,\n ) {}\n\n @Input()\n locked?: boolean;\n\n @Input()\n disabled?: boolean;\n\n @HostBinding('class.disabled')\n get isDisabled() {\n return this.disabled || this.locked;\n }\n\n private disableNativeElement: boolean = false;\n private lockNativeElement: boolean = false;\n\n ngOnChanges(changes: SimpleChanges) {\n const accessChange: boolean = !!changes['disabled'] || !!changes['locked'];\n if (accessChange) {\n if (changes['disabled']) {\n this.disableNativeElement = changes['disabled'].currentValue;\n }\n if (changes['locked']) {\n this.lockNativeElement = changes['locked'].currentValue;\n }\n if ('disabled' in this.el.nativeElement) {\n if (this.disableNativeElement || this.lockNativeElement) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n }\n }\n }\n}\n","<ng-content></ng-content>\n<riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\n\n@Component({\n selector: 'riv-banner',\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BannerComponent {\n @Input()\n @HostBinding('class')\n variant: BannerComponent.Variant = 'info';\n\n @Input()\n icon: boolean | IconComponent.Name = true;\n\n @Input()\n dismissable: boolean = false;\n\n getResolvedIcon(): IconComponent.Name | null {\n if (this.icon === false) return null;\n if (this.icon === true) {\n switch (this.variant) {\n case 'info':\n return 'Info';\n case 'warning':\n return 'AlertTriangle';\n case 'danger':\n return 'AlertCircle';\n case 'safety':\n return 'CheckCircle';\n }\n }\n return this.icon;\n }\n\n @Output()\n dismiss = new EventEmitter<void>();\n}\n\nexport namespace BannerComponent {\n export const Variants = ['warning', 'safety', 'danger', 'info'] as const;\n export type Variant = (typeof Variants)[number];\n}\n","<riv-icon\n *ngIf=\"getResolvedIcon(); let icon\"\n [name]=\"icon\"\n class=\"icon\"\n></riv-icon>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<button *ngIf=\"dismissable\" class=\"dismiss\" (click)=\"dismiss.emit()\">\n <riv-icon [name]=\"'X'\" [size]=\"16\"></riv-icon>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-notification-badge',\n template: '{{ count === null ? null : (count | rivNumber) }}',\n styleUrls: ['./notification-badge.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NotificationBadgeComponent {\n @Input()\n count: number | null = null;\n\n @Input()\n @HostBinding('class')\n variant: NotificationBadgeComponent.Variant = 'basic';\n}\n\nexport namespace NotificationBadgeComponent {\n export const Variants = ['basic', 'brand'] as const;\n export type Variant = (typeof Variants)[number];\n}\n","import { Directive, Input, OnChanges, TemplateRef } from '@angular/core';\nimport { TooltipDirective } from './tooltip.directive';\n\n/**\n * A convenience wrapper around rivTooltip that allows for conditionally\n * adding a tooltip when the `locked` input is true.\n */\n@Directive({\n selector: '[rivLockedTooltip]',\n})\nexport class LockedTooltipDirective\n extends TooltipDirective\n implements OnChanges\n{\n @Input()\n rivLockedTooltip?: string | TemplateRef<void>;\n\n @Input()\n locked?: boolean;\n\n ngOnChanges() {\n if (this.locked) {\n this.rivTooltip = this.rivLockedTooltip;\n } else {\n this.rivTooltip = undefined;\n }\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: '[riv-toast-action]',\n templateUrl: './toast-action.component.html',\n styleUrls: ['./toast-action.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastActionComponent {}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n} from '@angular/core';\nimport { RivTable } from '../table/state';\n\n@Component({\n selector: '[riv-simple-table-cell]',\n templateUrl: './simple-table-cell.component.html',\n styleUrls: ['./simple-table-cell.component.css', './alignment.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimpleTableCellComponent {\n /**\n * These get set automatically by the parent SimpleTableComponent.\n */\n public alignment?: RivTable.ColumnAlignment;\n public pinned?: boolean;\n public isLastRow?: boolean;\n\n constructor(\n public cdr: ChangeDetectorRef,\n public elementRef: ElementRef<HTMLTableCellElement>,\n ) {}\n\n @HostBinding('class')\n get classes() {\n return [\n this.alignment,\n this.pinned && 'pinned',\n this.isLastRow && 'last-row',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { RivTable } from '../table/state';\n\n@Component({\n selector: '[riv-simple-table-header-cell]',\n templateUrl: './simple-table-header-cell.component.html',\n styleUrls: ['./simple-table-header-cell.component.css', './alignment.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimpleTableHeaderCellComponent {\n @Input() dataType?: RivTable.ColumnDataType;\n\n @Input() pinned?: boolean;\n\n /**\n * This gets set automatically by the parent SimpleTableComponent.\n */\n public alignment?: RivTable.ColumnAlignment;\n\n constructor(public cdr: ChangeDetectorRef) {}\n\n @HostBinding('class')\n get classes() {\n return [this.alignment, this.pinned && 'pinned'].filter(Boolean).join(' ');\n }\n}\n","<ng-content></ng-content>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: '[riv-simple-table-row]',\n templateUrl: './simple-table-row.component.html',\n styleUrls: ['./simple-table-row.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimpleTableRowComponent {\n @Input()\n @HostBinding('class.selected')\n selected: boolean = false;\n}\n","<ng-content></ng-content>\n","import type { Params, QueryParamsHandling } from '@angular/router';\nimport Fuse, { IFuseOptions } from 'fuse.js';\nimport {\n defaultsDeep,\n difference,\n isEqual,\n orderBy,\n range,\n union,\n} from 'lodash';\nimport {\n Connectable,\n connectable,\n from,\n map,\n mergeScan,\n Observable,\n ReplaySubject,\n scan,\n Subject,\n} from 'rxjs';\nimport { DeepPartial } from 'utility-types';\n\nexport namespace RivTable {\n export type Row = { id: string | number };\n export type Column = string;\n export type Filters = any;\n export type Group = { key: string | number };\n\n /**\n * RivTable's state and user actions are divided into the following chunks:\n *\n * - Query (for things like filters, pagination, search, etc.)\n * - Loading (for whether or not the table is loading row data)\n * - Result (for the row data itself)\n * - Display (for things like column configuration)\n * - Selection (for tracking the user's row selections)\n *\n * Note that the data flow is unidirectional: the UI issues actions, which\n * affect the state, and the state gets passed back to the UI for display.\n *\n * ┌──────┐\n * │ UI ◄────────┐\n * └──┬───┘ │\n * │ │\n * ┌──▼────────┐ │\n * │ Actions │ │\n * └──┬────────┘ │\n * │ │\n * ┌──▼────────────┴─┐\n * │ State reducer │\n * └─────────────────┘\n *\n * From the core state, calculated state is derived and added to the core\n * state (e.g., from the raw selection state we can determine whether or not\n * all the rows on the currently displayed page are selected, etc.).\n */\n\n ///////////\n // Query //\n ///////////\n\n // Query state //\n\n export type OrderDirection = 'asc' | 'desc';\n export const pageSizes = [25, 50, 100, 250] as const;\n export type Query<C extends Column, F extends Filters> = {\n order: {\n direction: OrderDirection;\n column: C;\n } | null;\n search: string;\n searchColumns: Map<C, boolean>;\n filters: F | null;\n pagination: {\n page: number;\n pageSize: number;\n };\n grouping: {\n viewMoreKey: string | null;\n groupsPerPage: number;\n countPerGroup: number;\n };\n };\n\n // Query actions //\n\n export type QueryAction<C extends Column, F extends Filters> =\n | { type: 'load' }\n | { type: 'orderChange'; payload: Query<C, F>['order'] }\n | { type: 'orderColumnToggle'; column: C }\n | { type: 'searchChange'; payload: Query<C, F>['search'] }\n | { type: 'searchColumnsChange'; payload: Query<C, F>['searchColumns'] }\n | { type: 'filtersChange'; payload: Query<C, F>['filters'] }\n | { type: 'filterAdd'; columnKey: string }\n | { type: 'paginationChange'; payload: Query<C, F>['pagination'] }\n | { type: 'groupingChange'; payload: Query<C, F>['grouping'] }\n | { type: 'nextPageNavigate' }\n | { type: 'previousPageNavigate' }\n | { type: 'pageChange'; page: number }\n | { type: 'pageSizeChange'; size: number }\n | { type: 'groupsPerPageChange'; groupsPerPage: number }\n | { type: 'countPerGroupChange'; countPerGroup: number }\n | { type: 'viewMoreKeyChange'; viewMoreKey: string }\n | { type: 'toggleAllSearchColumns' };\n\n //////////\n // Load //\n //////////\n\n export type Load = {\n loading: boolean;\n error: unknown | null;\n };\n\n ////////////\n // Result //\n ////////////\n\n export type Result<R extends Row> = {\n /**\n * The full row data for the current page, after filters, search query, and\n * row ordering are applied.\n */\n currentPageData: R[];\n /**\n * The total number of rows (regardless of pagination) that match the\n * filters and search query.\n */\n totalMatchingRowCount: number;\n };\n\n export type SubGroupResult<R extends Row, G extends Group> = Result<R> & {\n /**\n * Any other relevant group data, used for the subheader\n */\n groupData: G;\n };\n\n export type GroupResult<R extends Row, G extends Group> = {\n /**\n * The full row data for the current page, after filters, search query, and\n * row ordering are applied, split into groups\n */\n groupResults: SubGroupResult<R, G>[];\n /**\n * The total number of groups (regardless of pagination) that match the\n * filters and search query.\n */\n totalGroupCount: number;\n /**\n * The total number of rows (regardless of pagination) that match the\n * filters and search query.\n */\n totalMatchingRowCount: number;\n };\n export type Source<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = (\n query: Query<C, F>,\n mostRecentAction: Action<R, C, F, G>,\n ) => Promise<Result<R> | GroupResult<R, G>>;\n\n /////////////\n // Display //\n /////////////\n\n // Display state //\n\n export type ColumnSettings<C extends Column> = {\n name: C;\n enabled: boolean;\n preferredWidth: number | 'auto';\n pinned: boolean;\n };\n export type Display<C extends Column> = {\n columnSettings: ColumnSettings<C>[];\n };\n\n // Display actions //\n\n export type DisplayAction<C extends Column> =\n | { type: 'columnSettingsChange'; payload: Display<C>['columnSettings'] }\n | {\n type: 'columnPinChange';\n column: C;\n pinned: boolean;\n }\n | {\n type: 'columnsFreezeUpToChange';\n index: number;\n freeze: boolean;\n }\n | {\n type: 'columnOrderChange';\n previousIndex: number;\n newIndex: number;\n }\n | {\n type: 'columnMoveToChange';\n column: C;\n position: 'start' | 'end';\n }\n | {\n type: 'columnEnabledChange';\n column: C;\n enabled: boolean;\n }\n | {\n type: 'enableAllColumnsChange';\n enabled: boolean;\n }\n | {\n type: 'columnWidthChange';\n column: C;\n preferredWidth: number | 'auto';\n }\n | {\n type: 'resetToDefaultColumns';\n };\n\n ///////////////\n // Selection //\n ///////////////\n\n // Selection state //\n\n export type Selection<R extends Row> = {\n mostRecentlySelected: R['id'] | null;\n } & (\n | {\n mode: 'include';\n included: Set<R['id']>;\n }\n | {\n mode: 'exclude';\n excluded: Set<R['id']>;\n }\n );\n\n // Selection actions //\n\n export type SelectionAction<R extends Row, G extends Group = { key: '' }> =\n | {\n type: 'selectionChange';\n payload: Selection<R>;\n }\n | {\n type: 'groupSelectionChange';\n payload: RowGroup<R, G>;\n }\n | {\n type: 'rowSelectedChange';\n id: R['id'];\n selected: boolean;\n contiguous: boolean;\n }\n | {\n type: 'pageSelectedChange';\n }\n | {\n type: 'allSelectedChange';\n }\n | {\n type: 'selectionClear';\n };\n\n /////////////////////////////\n // Putting it all together //\n /////////////////////////////\n\n // Combined state //\n\n export type CoreState<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = {\n query: Query<C, F>;\n load: Load;\n result: Result<R> | GroupResult<R, G>;\n display: Display<C>;\n selection: Selection<R>;\n };\n\n // Combined actions //\n\n export type Action<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = QueryAction<C, F> | DisplayAction<C> | SelectionAction<R, G>;\n\n // Full state (core state plus pure derivations) //\n\n export const ColumnDataTypes = [\n 'advanced',\n 'currency',\n 'date',\n 'icon',\n 'longText',\n 'number',\n 'shortText',\n ] as const;\n export type ColumnDataType = (typeof ColumnDataTypes)[number];\n export type ColumnAlignment = 'left' | 'center' | 'right';\n export type ColumnMetadata = {\n orderable: boolean;\n filterable?: boolean;\n searchable?: boolean;\n minWidth: number;\n dataType: ColumnDataType;\n description?: string;\n defaultPinned?: boolean;\n clickPreventDefault?: boolean;\n clickStopPropagation?: boolean;\n displayName?: string;\n };\n export type ExternalRowLink = {\n type: 'external';\n href: string;\n };\n export type InternalRowLink = {\n type: 'internal';\n routerLink: string | string[];\n queryParams?: Params;\n queryParamsHandling?: QueryParamsHandling;\n };\n export type RowLink = ExternalRowLink | InternalRowLink;\n export type FullRow<R extends Row> = R & {\n rowLink: RowLink | null;\n selected: boolean;\n };\n\n export type RowGroup<R extends Row, G extends Group> = {\n rows: FullRow<R>[];\n selected: MultiSelectionState;\n totalMatchingRowCount: number;\n groupData: G;\n };\n export type FullColumn<C extends Column> = ColumnSettings<C> &\n ColumnMetadata & {\n width: number;\n left: number | null;\n alignment: ColumnAlignment;\n };\n export type MultiSelectionState = boolean | 'indeterminate';\n export type SelectionConfiguration = boolean | 'individual';\n\n export type CsvCellFormatter<R extends Row, C extends Column> = (\n row: R,\n column: FullColumn<C>,\n ) => string | Promise<string>;\n export type CsvGroupCellFormatter<R extends Row, G extends Group> = (\n row: R,\n group: G,\n ) => string | Promise<string>;\n export type CsvRow = string[];\n export type Csv = CsvRow[];\n export type CsvMode = 'full' | 'selection';\n export type CsvOutput =\n | { loading: true; data: null }\n | { loading: false; data: Csv };\n\n export type ColumnNameMap<C extends Column> = Map<C, C | string>;\n\n export type SearchableColumnMap<C extends Column> = Map<C, boolean>;\n\n export type FullState<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = CoreState<R, C, F, G> & {\n query: {\n pagination: {\n previous: number | null;\n pages: number[];\n next: number | null;\n pageCount: number;\n showControls: boolean;\n pageRowStart: number;\n pageRowEnd: number;\n };\n noSearchColumnsSelected: boolean;\n };\n result:\n | {\n rows: FullRow<R>[];\n rowsAsGroup: RowGroup<R, G>;\n isGrouped: false;\n csvData: (mode?: CsvMode) => AsyncGenerator<CsvOutput>;\n csvFilename: string;\n }\n | {\n rows: FullRow<R>[];\n rowGroups: RowGroup<R, G>[];\n isGrouped: true;\n csvData: (mode?: CsvMode) => AsyncGenerator<CsvOutput>;\n csvFilename: string;\n };\n display: {\n columns: FullColumn<C>[];\n allColumns: ColumnSettings<C>[];\n searchableColumnMap: SearchableColumnMap<C>;\n columnNameMap: ColumnNameMap<C>;\n zeroStateMessage: string | null;\n columnsAreFreezable: boolean;\n columnsAreHideable: boolean;\n rowsAreGrayed: boolean;\n };\n selection: {\n allowSelection: SelectionConfiguration;\n isAllSelected: MultiSelectionState;\n isCurrentPageSelected: MultiSelectionState;\n selectedCount: number;\n };\n };\n\n /**\n * The manager is what sets up the initial state and translates user actions\n * (like pagination or filter changes, etc.) into new row data by calling the\n * reducer function. It also augments the core state with additional derived\n * state.\n */\n\n export type Manager<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = {\n actions: Subject<Action<R, C, F, G>>;\n state: Connectable<FullState<R, C, F, G>>;\n };\n\n export type ManagerOptions<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = {\n initialState?: DeepPartial<CoreState<R, C, F, G>>;\n rowLink?: (row: R, group?: G) => RowLink;\n csvCellFormatter?: CsvCellFormatter<R, C>;\n csvGroupCellFormatter?: CsvGroupCellFormatter<R, G>;\n csvFileBasename?: string;\n allowSelection?: SelectionConfiguration;\n columnsAreFreezable?: boolean;\n columnsAreHideable?: boolean;\n defaultColumnState?: ColumnSettings<C>[];\n rowsAreGrayed?: boolean;\n };\n\n export function createManager<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n >(\n source: Source<R, C, F, G>,\n columns: Map<C, ColumnMetadata>,\n pluralEntityName: string,\n options?: ManagerOptions<R, C, F, G>,\n ): Manager<R, C, F, G> {\n // Set up the initial table state.\n\n const searchableColumnMap: SearchableColumnMap<C> = new Map<C, boolean>(\n Array.from(columns.entries()).map(([key, metadata]) => [\n key,\n metadata.searchable ?? true,\n ]),\n );\n const defaultState: CoreState<R, C, F, G> = {\n query: {\n order: null,\n search: '',\n searchColumns: new Map(\n Array.from(columns.keys())\n .filter(key => searchableColumnMap.get(key))\n .map(key => [key, true]),\n ),\n pagination: {\n page: 0,\n pageSize: 25,\n },\n grouping: {\n viewMoreKey: null,\n groupsPerPage: 5,\n countPerGroup: 10,\n },\n filters: null,\n },\n load: { loading: false, error: null },\n result: {\n currentPageData: [],\n totalMatchingRowCount: 0,\n },\n display: {\n columnSettings: [],\n },\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n };\n const defaultedInitialState: CoreState<R, C, F, G> = defaultsDeep(\n {},\n options?.initialState,\n defaultState,\n );\n\n const columnNameMap: ColumnNameMap<C> = new Map<C, C | string>(\n Array.from(columns.entries()).map(([key, metadata]) => [\n key,\n metadata.displayName ?? key,\n ]),\n );\n\n const defaultColumnState =\n options?.defaultColumnState ??\n defaultedInitialState.display.columnSettings;\n\n // Wire up reduced state from actions and initial state.\n const actions: Subject<Action<R, C, F, G>> = new Subject();\n const coreState: Observable<CoreState<R, C, F, G>> = actions.pipe(\n mergeScan(\n (state, action) =>\n from(\n reduce(\n state,\n action,\n columns,\n source,\n columnNameMap,\n defaultColumnState,\n ),\n ),\n defaultedInitialState,\n 1,\n ),\n );\n\n // Augment state with derived state, and subscribe.\n const state: Connectable<FullState<R, C, F, G>> = connectable(\n coreState.pipe(\n map((s: CoreState<R, C, F, G>): FullState<R, C, F, G> => {\n const stateWithoutResult: Omit<\n FullState<R, C, F, G>,\n 'result' | 'isGrouped'\n > = {\n ...s,\n query: {\n ...s.query,\n pagination: {\n ...s.query.pagination,\n previous: getPreviousPage(s),\n pages: getPages(s),\n next: getNextPage(s),\n pageCount: getPageCount(s),\n showControls: getShowPaginationControls(s),\n pageRowStart: getPageRowStart(s),\n pageRowEnd: getPageRowEnd(s),\n },\n noSearchColumnsSelected: getSearchColumnsSelectedState(s, 'none'),\n },\n display: {\n ...s.display,\n columns: resolveColumns(\n s,\n columns,\n columnNameMap,\n !!options?.allowSelection,\n ),\n allColumns: getAllColumns(s, columns, columnNameMap),\n columnNameMap: columnNameMap,\n searchableColumnMap: searchableColumnMap,\n zeroStateMessage: getZeroStateMessage(s, pluralEntityName),\n columnsAreFreezable: !!options?.columnsAreFreezable,\n columnsAreHideable: !!options?.columnsAreHideable,\n rowsAreGrayed: !!options?.rowsAreGrayed,\n },\n selection: {\n ...s.selection,\n allowSelection: options?.allowSelection ?? false,\n isAllSelected: isAllSelected(s),\n isCurrentPageSelected: isCurrentPageSelected(s),\n selectedCount: selectedCount(s),\n },\n };\n const commonResultData: {\n csvData: (mode?: CsvMode) => AsyncGenerator<CsvOutput>;\n csvFilename: string;\n } = {\n csvData: async function* (mode = 'full') {\n const cellFormatter = options?.csvCellFormatter;\n const groupCellFormatter = options?.csvGroupCellFormatter;\n if (!cellFormatter)\n throw new Error(\n 'options.csvCellFormatter is required for CSV export',\n );\n yield { loading: true, data: null };\n const dataSet = await source(\n {\n ...s.query,\n pagination: {\n page: 0,\n pageSize: s.result.totalMatchingRowCount,\n },\n },\n { type: 'load' },\n );\n const fullColumns = resolveColumns(\n s,\n columns,\n columnNameMap,\n !!options.allowSelection,\n );\n const data: Csv = [];\n data.push(\n fullColumns.map(({ name }) => columnNameMap.get(name) ?? name),\n );\n\n if (isGroupResult(s.result) && groupCellFormatter) {\n data[0].push('');\n }\n for (const rowItem of getAllRowsFromResultForCsv(dataSet)) {\n const record = rowItem.row;\n if (mode === 'selection' && !isRowSelected(s, record.id))\n continue;\n const row: CsvRow = [];\n for (const column of fullColumns) {\n row.push(await cellFormatter(record, column));\n }\n //Only include group cell when formatter is provided\n if (groupCellFormatter && rowItem.group) {\n row.push(await groupCellFormatter(record, rowItem.group));\n }\n data.push(row);\n }\n yield { loading: false, data };\n },\n csvFilename:\n (options?.csvFileBasename?.slice(0, 200) ?? pluralEntityName) +\n '.csv',\n };\n\n if (isGroupResult(s.result)) {\n const rowGroups = s.result.groupResults.map(group => ({\n rows: group.currentPageData.map(row => ({\n ...row,\n rowLink: options?.rowLink\n ? options.rowLink(row, group.groupData)\n : null,\n selected: isRowSelected(s, row.id),\n })),\n selected: isGroupSelected(s, group),\n totalMatchingRowCount: group.totalMatchingRowCount,\n groupData: group.groupData,\n }));\n return {\n ...stateWithoutResult,\n result: {\n ...s.result,\n ...commonResultData,\n isGrouped: true,\n rowGroups,\n rows: rowGroups.flatMap(group => group.rows),\n },\n };\n } else {\n const rows = s.result.currentPageData.map(row => ({\n ...row,\n rowLink: options?.rowLink ? options.rowLink(row) : null,\n selected: isRowSelected(s, row.id),\n }));\n return {\n ...stateWithoutResult,\n result: {\n ...s.result,\n ...commonResultData,\n isGrouped: false,\n rows,\n rowsAsGroup: {\n rows,\n selected: false,\n totalMatchingRowCount: rows.length,\n groupData: { key: '' } as G,\n },\n },\n };\n }\n }),\n scan((stable, newState) => stableState(stable, newState)),\n ),\n {\n connector: () => new ReplaySubject(1),\n resetOnDisconnect: false,\n },\n );\n state.connect();\n\n // Load initial table row data.\n actions.next({ type: 'load' });\n\n return { actions, state };\n }\n\n /**\n * Most tables use remote backends to fetch data asynchronously, but an\n * in-memory source is useful for small datasets, when RivTable features like\n * ordering and pagination are desired.\n */\n\n export type InMemoryColumnMetadata<R extends Row> = Omit<\n ColumnMetadata,\n 'orderable'\n > & { orderKey?: keyof R };\n\n export type InMemoryManagerOptions<\n R extends Row,\n C extends Column,\n F extends Filters,\n G extends Group = { key: '' },\n > = ManagerOptions<R, C, F, G> & {\n fuseOptions?: IFuseOptions<R>;\n filter?: (filters: F | null, row: R) => boolean;\n };\n\n export function createInMemoryManager<\n R extends Row,\n C extends Column,\n F extends Filters,\n >(\n fetchDataset: () => Promise<R[]> | R[],\n columns: Map<C, InMemoryColumnMetadata<R>>,\n pluralEntityName: string,\n options?: InMemoryManagerOptions<R, C, F>,\n ): Manager<R, C, F> {\n let data: R[];\n let fuse: Fuse<R>;\n\n const source: Source<R, C, F> = async (query, mostRecentAction) => {\n //For inMemoryManagers that do not utilize searchColumns,\n //we do not want to overwrite their fuseOptions\n if (mostRecentAction.type === 'load') {\n //Prevent searching on columns that are in fuse options but not supported by search.\n const nonSearchableColumnsKeys = options?.fuseOptions?.keys\n ? Array.from(columns.entries())\n .filter(([key, column]) => {\n return column.searchable == false;\n })\n .map(([key, column]) => {\n return column.orderKey?.toString() || key.toString();\n })\n : undefined;\n const fuseOptions =\n options?.fuseOptions && nonSearchableColumnsKeys\n ? {\n ...options?.fuseOptions,\n keys: options?.fuseOptions?.keys?.filter(\n k => !nonSearchableColumnsKeys.includes(k.toString()),\n ),\n }\n : options?.fuseOptions;\n data = await fetchDataset();\n fuse = new Fuse(data, fuseOptions);\n }\n if (\n mostRecentAction.type === 'searchColumnsChange' ||\n mostRecentAction.type === 'toggleAllSearchColumns'\n ) {\n data = await fetchDataset();\n fuse = new Fuse(data, {\n ...options?.fuseOptions,\n keys: Array.from(query.searchColumns.entries())\n .filter(([_, value]) => !!value)\n .map(([key, _]) => {\n const columnKey = columns.get(key);\n return (columnKey?.orderKey as C) || key;\n }),\n });\n }\n const orderColumn: keyof R | undefined = query.order\n ? columns.get(query.order.column)?.orderKey\n : undefined;\n const ordered = query.search\n ? fuse.search(query.search).map(result => result.item)\n : query.order && orderColumn\n ? orderBy(data, orderColumn, query.order.direction)\n : data;\n const filter = options?.filter;\n const filtered = filter\n ? ordered.filter(row => filter(query.filters, row))\n : ordered;\n const startIdx = query.pagination.pageSize * query.pagination.page;\n const endIdx = startIdx + query.pagination.pageSize;\n const paginated = filtered.slice(startIdx, endIdx);\n return {\n currentPageData: paginated,\n totalMatchingRowCount: filtered.length,\n };\n };\n const columnMetadata: Map<C, ColumnMetadata> = new Map(\n [...columns.entries()].map(([name, metadata]) => [\n name,\n {\n orderable: !!metadata.orderKey,\n filterable: metadata.filterable,\n searchable: metadata.searchable,\n description: metadata.description,\n minWidth: metadata.minWidth,\n dataType: metadata.dataType,\n defaultPinned: metadata.defaultPinned,\n clickPreventDefault: metadata.clickPreventDefault,\n clickStopPropagation: metadata.clickStopPropagation,\n displayName: metadata.displayName,\n },\n ]),\n );\n return createManager(source, columnMetadata, pluralEntityName, options);\n }\n\n ///////////////\n // Utilities //\n ///////////////\n\n export function getColumnAlignment(\n dataType: ColumnDataType,\n isFirst: boolean,\n ): ColumnAlignment {\n if (isFirst) return 'left';\n switch (dataType) {\n case 'date':\n case 'longText':\n return 'left';\n case 'advanced':\n case 'icon':\n case 'shortText':\n return 'center';\n case 'currency':\n case 'number':\n return 'right';\n }\n }\n}\n\n/**\n * This function keeps the state object references as stable as possible, which\n * helps Angular reduce unnecessary re-renders. For now, simple isEqual()\n * checks at the state's top-level keys are sufficient to dramatically speed up\n * rendering, but if other performance issues arise, we could implement more\n * granular checks/surgical updates as needed (the state.result being the most\n * likely candidate, since many types of state updates affect parts of the\n * result rows).\n */\nfunction stableState<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n target: RivTable.FullState<R, C, F, G>,\n source: RivTable.FullState<R, C, F, G>,\n): RivTable.FullState<R, C, F, G> {\n if (!isEqual(target.query, source.query)) {\n target.query = source.query;\n }\n if (!isEqual(target.load, source.load)) {\n target.load = source.load;\n }\n\n if (!isEqual(target.result.csvData, source.result.csvData)) {\n target.result.csvData = source.result.csvData;\n }\n if (!isEqual(target.result.csvFilename, source.result.csvFilename)) {\n target.result.csvFilename = source.result.csvFilename;\n }\n if (\n !isEqual(\n target.result.totalMatchingRowCount,\n source.result.totalMatchingRowCount,\n )\n ) {\n target.result.totalMatchingRowCount = source.result.totalMatchingRowCount;\n }\n if (!isEqual(target.result, source.result)) {\n target.result = source.result;\n }\n if (!isEqual(target.display, source.display)) {\n target.display = source.display;\n }\n if (!isEqual(target.selection, source.selection)) {\n target.selection = source.selection;\n }\n return target;\n}\n\nfunction getPageCount<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number {\n if (isGroupResult(state.result)) {\n return Math.max(\n Math.ceil(\n state.result.totalGroupCount / state.query.grouping.groupsPerPage,\n ),\n 1,\n );\n }\n return Math.max(\n Math.ceil(\n state.result.totalMatchingRowCount / state.query.pagination.pageSize,\n ),\n 1,\n );\n}\n\nfunction getPreviousPage<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number | null {\n return state.query.pagination.page === 0\n ? null\n : state.query.pagination.page - 1;\n}\n\nfunction getPages<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number[] {\n const padding = 4;\n const min = 0;\n const max = getPageCount(state) - 1;\n const desiredStart = state.query.pagination.page - padding;\n const clampedStart = Math.max(min, desiredStart);\n const desiredEnd = state.query.pagination.page + padding;\n const clampedEnd = Math.min(max, desiredEnd);\n const start = Math.max(min, clampedStart - (desiredEnd - clampedEnd));\n const end = Math.min(max, clampedEnd + (clampedStart - desiredStart));\n return range(start, end + 1);\n}\n\nfunction getNextPage<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number | null {\n const max = getPageCount(state) - 1;\n const next = state.query.pagination.page + 1;\n return next <= max ? next : null;\n}\n\n// We don't want to show the pagination controls when they are unnecessary.\nfunction getShowPaginationControls<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): boolean {\n if (isGroupResult(state.result)) {\n return state.result.totalGroupCount > state.query.grouping.groupsPerPage;\n }\n return (\n state.result.totalMatchingRowCount > Math.min(...[...RivTable.pageSizes])\n );\n}\n\nfunction getPageRowStart<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number {\n return state.query.pagination.page * state.query.pagination.pageSize + 1;\n}\n\nfunction getPageRowEnd<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number {\n return Math.min(\n (state.query.pagination.page + 1) * state.query.pagination.pageSize,\n state.result.totalMatchingRowCount,\n );\n}\n\nfunction getAllColumns<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n supportedColumns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n): RivTable.ColumnSettings<C>[] {\n // If the table offers more columns than the user has configuration settings\n // for (or if the user has no configuration settings yet), we'll append them\n // to the end (unless they should be pinned by default, in which case we'll\n // append them after the other pinned columns). This ensures that new columns\n // we add to existing tables over time (1) get displayed even though they\n // don't appear in the user's configuration settings yet, and (2) don't\n // interrupt their existing setup.\n const columnNamesWithoutUserSettings = difference(\n [...supportedColumns.keys()],\n state.display.columnSettings.map(({ name }) => name),\n );\n\n // Throw out settings for columns no longer offered by the table.\n const columnsWithUserSettings: RivTable.ColumnSettings<C>[] =\n state.display.columnSettings.filter(({ name }) =>\n supportedColumns.has(name),\n );\n\n const columnsWithoutUserSettings: RivTable.ColumnSettings<C>[] = [\n ...columnNamesWithoutUserSettings,\n ].map((name: C) => ({\n name,\n enabled: true,\n preferredWidth: 'auto',\n pinned: !!supportedColumns.get(name)?.defaultPinned,\n }));\n\n return orderIntentionally(\n [...columnsWithUserSettings, ...columnsWithoutUserSettings],\n columnNameMap,\n );\n}\n\nfunction orderIntentionally<C extends RivTable.Column>(\n columns: RivTable.ColumnSettings<C>[],\n columnNameMap: RivTable.ColumnNameMap<C>,\n): RivTable.ColumnSettings<C>[] {\n return [\n ...columns.filter(v => v.pinned),\n ...columns.filter(v => v.enabled && !v.pinned),\n ...columns\n .filter(v => !v.enabled && !v.pinned)\n .sort((a, b) => {\n const aName = columnNameMap.get(a.name) ?? a.name;\n const bName = columnNameMap.get(b.name) ?? b.name;\n return aName.localeCompare(bName);\n }),\n ];\n}\n\nfunction getAlignment(\n metadata: RivTable.ColumnMetadata,\n index: number,\n allowSelection?: boolean,\n): RivTable.ColumnAlignment {\n return RivTable.getColumnAlignment(\n metadata.dataType,\n index === 0 && !allowSelection,\n );\n}\n\nfunction resolveColumns<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n supportedColumns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n allowSelection: boolean | undefined,\n): RivTable.FullColumn<C>[] {\n const allColumns = getAllColumns(state, supportedColumns, columnNameMap);\n return allColumns\n .filter(({ enabled }) => enabled)\n .reduce(\n (\n fullColumns: RivTable.FullColumn<C>[],\n settings: RivTable.ColumnSettings<C>,\n i: number,\n ): RivTable.FullColumn<C>[] => {\n const metadata = supportedColumns.get(settings.name)!;\n const resolvedWidth =\n settings.preferredWidth === 'auto'\n ? metadata.minWidth\n : Math.max(metadata.minWidth, settings.preferredWidth);\n const previousColumn: RivTable.FullColumn<C> | undefined =\n fullColumns[i - 1];\n return [\n ...fullColumns,\n {\n ...settings,\n ...metadata,\n width: resolvedWidth,\n left: settings.pinned\n ? previousColumn\n ? (previousColumn.left || 0) + previousColumn.width\n : !!allowSelection\n ? 40\n : 0\n : null,\n alignment: getAlignment(metadata, i, !!allowSelection),\n },\n ];\n },\n [],\n );\n}\n\nfunction getZeroStateMessage<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>, entity: string): string | null {\n if (\n (isGroupResult(state.result) && state.result.totalGroupCount > 0) ||\n (!isGroupResult(state.result) && state.result.totalMatchingRowCount > 0)\n )\n return null;\n const allSearchColumnsSelected = getSearchColumnsSelectedState(state, 'all');\n if (state.query.search && allSearchColumnsSelected)\n return `No ${entity} match your current search keyword.`;\n if (state.query.search && !allSearchColumnsSelected)\n return `No ${entity} match your current search keyword in the selected search columns.`;\n if (state.query.filters) return `No ${entity} match your current filters.`;\n return `No ${entity}.`;\n}\n\nfunction changeColumnPin<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n column: C,\n pinned: boolean,\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: orderIntentionally(\n allColumns.map(c => ({\n ...c,\n pinned: c.name === column ? pinned : c.pinned,\n // Check/enable if being pinned\n enabled: c.name === column && pinned ? true : c.enabled,\n })),\n columnNameMap,\n ),\n },\n };\n}\n\nfunction changeColumnsFreezeState<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n index: number,\n freeze: boolean,\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: allColumns.map((c, i) => {\n return { ...c, pinned: freeze && i <= index };\n }),\n },\n };\n}\n\nfunction moveColumnTo<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n column: C,\n position: 'start' | 'end',\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n const previousIndex = allColumns.findIndex(c => c.name === column);\n const lastIndex =\n position == 'end' ? allColumns.findIndex(c => !c.enabled) : 0;\n const newIndex =\n position == 'start'\n ? 0\n : lastIndex == -1\n ? allColumns.length - 1\n : lastIndex;\n\n const movedState = changeColumnOrder(\n state,\n columns,\n columnNameMap,\n previousIndex,\n newIndex,\n );\n //Make sure the column is enabled\n return changeColumnEnabled(movedState, columns, columnNameMap, column, true);\n}\n\nfunction changeColumnOrder<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n previousIndex: number,\n newIndex: number,\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n\n // First, put the columns in the desired order.\n const item = allColumns[previousIndex];\n const withoutItem = allColumns.filter((_, i) => i !== previousIndex);\n const reordered = [\n ...withoutItem.slice(0, newIndex),\n item,\n ...withoutItem.slice(newIndex),\n ];\n\n // Then, we may need to fix the pins (all pinned columns appear at the\n // beginning of the columns array) since the user is allowed to drag\n // and drop columns to and from the pinned area. If the user drags a\n // column across that threshold, update its pinned status.\n const updated = reordered.map((settings, i, arr) => {\n if (newIndex === i) {\n return {\n ...settings,\n pinned: settings.pinned\n ? arr[i - 1]?.pinned ?? true\n : arr[i + 1]?.pinned ?? false,\n enabled: settings.enabled\n ? arr[i - 1]?.enabled ?? true\n : arr[i + 1]?.enabled ?? false,\n };\n } else return settings;\n });\n\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: orderIntentionally(updated, columnNameMap),\n },\n };\n}\n\nfunction changeColumnEnabled<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n column: C,\n enabled: boolean,\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: orderIntentionally(\n allColumns.map(c => ({\n ...c,\n enabled: c.name === column ? enabled : c.enabled,\n // Unpin if being unchecked\n pinned: c.name === column && !enabled ? false : c.pinned,\n })),\n columnNameMap,\n ),\n },\n };\n}\nfunction enableAllColumns<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n enabled: boolean,\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: orderIntentionally(\n allColumns.map(c => ({\n ...c,\n enabled: enabled,\n // Unpin if being unchecked\n pinned: !enabled ? false : c.pinned,\n })),\n columnNameMap,\n ),\n },\n };\n}\n\nfunction changeColumnWidth<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n column: C,\n preferredWidth: RivTable.ColumnSettings<C>['preferredWidth'],\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: allColumns.map(c => ({\n ...c,\n preferredWidth: c.name === column ? preferredWidth : c.preferredWidth,\n })),\n },\n };\n}\nfunction resetToDefaultColumns<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n defaultColumnState: RivTable.ColumnSettings<C>[],\n): RivTable.CoreState<R, C, F, G> {\n const allColumns = getAllColumns(state, columns, columnNameMap);\n return {\n ...state,\n display: {\n ...state.display,\n columnSettings: orderIntentionally(defaultColumnState, columnNameMap),\n },\n };\n}\n\nfunction isRowSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>, id: R['id']): boolean {\n switch (state.selection.mode) {\n case 'include':\n return state.selection.included.has(id);\n case 'exclude':\n return !state.selection.excluded.has(id);\n }\n}\n\nfunction isGroupSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n group: RivTable.SubGroupResult<R, G>,\n): RivTable.MultiSelectionState {\n switch (state.selection.mode) {\n case 'include': {\n let allFound = true;\n let anyFound = false;\n for (const row of group.currentPageData) {\n if (!state.selection.included.has(row.id)) {\n allFound = false;\n } else {\n anyFound = true;\n }\n }\n return allFound ? true : anyFound ? 'indeterminate' : false;\n }\n case 'exclude': {\n let allFound = true;\n let anyFound = false;\n for (const row of group.currentPageData) {\n if (state.selection.excluded.has(row.id)) {\n allFound = false;\n } else {\n anyFound = true;\n }\n }\n return allFound ? true : anyFound ? 'indeterminate' : false;\n }\n }\n}\n\nfunction isAllSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.MultiSelectionState {\n // If there are no rows, \"all selected\" should be false\n if (state.result.totalMatchingRowCount === 0) {\n return false;\n }\n\n if (\n (state.selection.mode === 'exclude' &&\n state.selection.excluded.size === 0) ||\n (state.selection.mode === 'include' &&\n state.selection.included.size === state.result.totalMatchingRowCount)\n )\n return true;\n if (\n (state.selection.mode === 'exclude' &&\n state.selection.excluded.size === state.result.totalMatchingRowCount) ||\n (state.selection.mode === 'include' && state.selection.included.size === 0)\n )\n return false;\n return 'indeterminate';\n}\n\nfunction isCurrentPageSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.MultiSelectionState {\n const selectedStates = getAllRowsFromResult(state.result).map(({ id }) =>\n isRowSelected(state, id),\n );\n if (selectedStates.length > 0) {\n if (selectedStates.every(v => v)) return true;\n if (selectedStates.some(v => v)) return 'indeterminate';\n }\n return false;\n}\n\nfunction selectedCount<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): number {\n switch (state.selection.mode) {\n case 'include':\n return state.selection.included.size;\n case 'exclude':\n return state.result.totalMatchingRowCount - state.selection.excluded.size;\n }\n}\n\nasync function* refreshResultWith<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n source: RivTable.Source<R, C, F, G>,\n mostRecentAction: RivTable.Action<R, C, F, G>,\n): AsyncGenerator<RivTable.CoreState<R, C, F, G>> {\n yield {\n ...state,\n load: {\n loading: true,\n error: null,\n },\n };\n try {\n const result = await source(state.query, mostRecentAction);\n yield {\n ...state,\n load: {\n loading: false,\n error: null,\n },\n result,\n };\n } catch (error) {\n console.error(error);\n yield {\n ...state,\n load: {\n loading: false,\n error,\n },\n };\n }\n}\n\nfunction setRowSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n id: R['id'],\n selected: boolean,\n contiguous: boolean,\n): RivTable.CoreState<R, C, F, G> {\n if (selected) {\n const newSelection = new Set<R['id']>([id]);\n if (contiguous && state.selection.mostRecentlySelected) {\n const startIdx = getAllRowsFromResult(state.result).findIndex(\n row => row.id === state.selection.mostRecentlySelected,\n );\n const endIdx = getAllRowsFromResult(state.result).findIndex(\n row => row.id === id,\n );\n if (typeof startIdx === 'number' && typeof endIdx === 'number') {\n for (\n let i = Math.min(startIdx, endIdx);\n i <= Math.max(startIdx, endIdx);\n i++\n ) {\n newSelection.add(getAllRowsFromResult(state.result)[i].id);\n }\n }\n }\n return {\n ...state,\n selection: {\n mostRecentlySelected: id,\n ...(state.selection.mode === 'include'\n ? {\n mode: 'include',\n included: new Set(\n union([...state.selection.included], [...newSelection]),\n ),\n }\n : {\n mode: 'exclude',\n excluded: new Set(\n difference([...state.selection.excluded], [...newSelection]),\n ),\n }),\n },\n };\n } else {\n return {\n ...state,\n selection: {\n mostRecentlySelected: null,\n ...(state.selection.mode === 'include'\n ? {\n mode: 'include',\n included: new Set(\n difference([...state.selection.included], [id]),\n ),\n }\n : {\n mode: 'exclude',\n excluded: new Set(union([...state.selection.excluded], [id])),\n }),\n },\n };\n }\n}\n\nfunction toggleGroupSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n group: RivTable.RowGroup<R, G>,\n): RivTable.CoreState<R, C, F, G> {\n const isGroupFullySelected =\n isGroupSelected(state, { ...group, currentPageData: group.rows }) === true;\n return group.rows.reduce((accumulatedState, row) => {\n return setRowSelected(\n accumulatedState,\n row.id,\n !isGroupFullySelected,\n false,\n );\n }, state);\n}\n\nfunction togglePageSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.CoreState<R, C, F, G> {\n const isPageFullySelected = getAllRowsFromResult(state.result).every(\n ({ id }) => isRowSelected(state, id),\n );\n return getAllRowsFromResult(state.result).reduce((accumulatedState, row) => {\n return setRowSelected(\n accumulatedState,\n row.id,\n !isPageFullySelected,\n false,\n );\n }, state);\n}\n\nfunction toggleAllSelected<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.CoreState<R, C, F, G> {\n if (isAllSelected(state) === true) {\n return {\n ...state,\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n };\n } else {\n return {\n ...state,\n selection: {\n mostRecentlySelected: null,\n mode: 'exclude',\n excluded: new Set(),\n },\n };\n }\n}\n\nfunction clearSelection<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.CoreState<R, C, F, G> {\n return {\n ...state,\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n };\n}\n\nfunction toggleColumnOrder<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n column: C,\n): RivTable.CoreState<R, C, F, G> {\n if (state.query.order?.column === column) {\n return {\n ...state,\n query: {\n ...state.query,\n order:\n state.query.order.direction === 'asc'\n ? {\n column,\n direction: 'desc',\n }\n : null,\n },\n };\n }\n return {\n ...state,\n query: {\n ...state.query,\n order: {\n column,\n direction: 'asc',\n },\n },\n };\n}\n\nfunction getSearchColumnsSelectedState<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n expectedValue: 'all' | 'none',\n): boolean {\n switch (expectedValue) {\n case 'all':\n return Array.from(state.query.searchColumns.values()).every(\n value => value,\n );\n\n case 'none':\n return Array.from(state.query.searchColumns.values()).every(\n value => !value,\n );\n }\n}\n\nfunction toggleAllSearchColumns<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(state: RivTable.CoreState<R, C, F, G>): RivTable.CoreState<R, C, F, G> {\n const noneSelected = getSearchColumnsSelectedState(state, 'none');\n const payload = new Map(\n Array.from(state.query.searchColumns.keys()).map(key => [\n key,\n noneSelected,\n ]),\n );\n return {\n ...state,\n query: {\n ...state.query,\n searchColumns: payload,\n },\n };\n}\n\nasync function* reduce<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group,\n>(\n state: RivTable.CoreState<R, C, F, G>,\n action: RivTable.Action<R, C, F, G>,\n columns: Map<C, RivTable.ColumnMetadata>,\n source: RivTable.Source<R, C, F, G>,\n columnNameMap: RivTable.ColumnNameMap<C>,\n defaultColumnState: RivTable.ColumnSettings<C>[],\n): AsyncGenerator<RivTable.CoreState<R, C, F, G>> {\n switch (action.type) {\n case 'load':\n yield* refreshResultWith(state, source, action);\n break;\n case 'orderChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n order: action.payload,\n },\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n },\n source,\n action,\n );\n break;\n case 'orderColumnToggle':\n yield* refreshResultWith(\n toggleColumnOrder(state, action.column),\n source,\n action,\n );\n break;\n case 'searchChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n search: action.payload,\n pagination: {\n ...state.query.pagination,\n page: 0,\n },\n },\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n },\n source,\n action,\n );\n break;\n case 'searchColumnsChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n searchColumns: new Map([\n ...state.query.searchColumns,\n ...action.payload,\n ]),\n pagination: {\n ...state.query.pagination,\n page: 0,\n },\n },\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n },\n source,\n action,\n );\n break;\n case 'paginationChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n pagination: action.payload,\n },\n },\n source,\n action,\n );\n break;\n case 'groupingChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n grouping: action.payload,\n },\n },\n source,\n action,\n );\n break;\n case 'previousPageNavigate':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n pagination: {\n ...state.query.pagination,\n page: getPreviousPage(state) ?? 0,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'nextPageNavigate':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n pagination: {\n ...state.query.pagination,\n page: getNextPage(state) ?? getPageCount(state) - 1,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'pageChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n pagination: {\n ...state.query.pagination,\n page: action.page,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'pageSizeChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n pagination: {\n ...state.query.pagination,\n pageSize: action.size,\n page: 0,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'filtersChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n filters: action.payload,\n pagination: {\n ...state.query.pagination,\n page: 0,\n },\n },\n selection: {\n mostRecentlySelected: null,\n mode: 'include',\n included: new Set(),\n },\n },\n source,\n action,\n );\n break;\n case 'filterAdd':\n // Parent component is responsible for subscribing and adding the filter\n yield { ...state };\n break;\n case 'columnSettingsChange':\n yield {\n ...state,\n display: {\n ...state.display,\n columnSettings: action.payload,\n },\n };\n break;\n case 'columnPinChange':\n yield changeColumnPin(\n state,\n columns,\n columnNameMap,\n action.column,\n action.pinned,\n );\n break;\n case 'columnsFreezeUpToChange':\n yield changeColumnsFreezeState(\n state,\n columns,\n columnNameMap,\n action.index,\n action.freeze,\n );\n break;\n case 'columnOrderChange':\n yield changeColumnOrder(\n state,\n columns,\n columnNameMap,\n action.previousIndex,\n action.newIndex,\n );\n break;\n case 'columnMoveToChange':\n yield moveColumnTo(\n state,\n columns,\n columnNameMap,\n action.column,\n action.position,\n );\n break;\n case 'columnEnabledChange':\n yield changeColumnEnabled(\n state,\n columns,\n columnNameMap,\n action.column,\n action.enabled,\n );\n break;\n case 'enableAllColumnsChange':\n yield enableAllColumns(state, columns, columnNameMap, action.enabled);\n break;\n case 'columnWidthChange':\n yield changeColumnWidth(\n state,\n columns,\n columnNameMap,\n action.column,\n action.preferredWidth,\n );\n break;\n case 'resetToDefaultColumns':\n yield resetToDefaultColumns(\n state,\n columns,\n columnNameMap,\n defaultColumnState,\n );\n break;\n case 'selectionChange':\n yield {\n ...state,\n selection: action.payload,\n };\n break;\n case 'rowSelectedChange':\n yield setRowSelected(\n state,\n action.id,\n action.selected,\n action.contiguous,\n );\n break;\n case 'pageSelectedChange':\n yield togglePageSelected(state);\n break;\n case 'allSelectedChange':\n yield toggleAllSelected(state);\n break;\n case 'selectionClear':\n yield clearSelection(state);\n break;\n case 'groupSelectionChange':\n yield toggleGroupSelected(state, action.payload);\n break;\n case 'groupsPerPageChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n grouping: {\n ...state.query.grouping,\n groupsPerPage: action.groupsPerPage,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'countPerGroupChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n grouping: {\n ...state.query.grouping,\n countPerGroup: action.countPerGroup,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'viewMoreKeyChange':\n yield* refreshResultWith(\n {\n ...state,\n query: {\n ...state.query,\n grouping: {\n ...state.query.grouping,\n viewMoreKey: action.viewMoreKey,\n },\n },\n },\n source,\n action,\n );\n break;\n case 'toggleAllSearchColumns':\n yield* refreshResultWith(toggleAllSearchColumns(state), source, action);\n break;\n }\n}\n\nfunction isGroupResult(\n result: RivTable.Result<any> | RivTable.GroupResult<any, any>,\n): result is RivTable.GroupResult<any, any> {\n if ('totalGroupCount' in result) {\n return true;\n }\n return false;\n}\n\nfunction getAllRowsFromResult(\n result: RivTable.Result<any> | RivTable.GroupResult<any, any>,\n) {\n if (isGroupResult(result)) {\n return result.groupResults.flatMap(groups => groups.currentPageData);\n } else {\n return result.currentPageData;\n }\n}\n\nfunction getAllRowsFromResultForCsv(\n result: RivTable.Result<any> | RivTable.GroupResult<any, any>,\n) {\n if (isGroupResult(result)) {\n return result.groupResults.flatMap(groups =>\n groups.currentPageData.map(row => ({\n row: row,\n group: groups.groupData,\n })),\n );\n } else {\n return result.currentPageData.map(row => ({\n row: row,\n group: null,\n }));\n }\n}\n","export type Cell = {\n rowspan: number;\n colspan: number;\n};\n\nexport type Coordinate = {\n row: number;\n col: number;\n};\n\nexport type Bounds = {\n start: Coordinate;\n end: Coordinate;\n};\n\nexport function createCellCoordinateCalculator(\n cells: Cell[],\n totalColumns: number,\n): (cellIndex: number) => Bounds {\n // Pre-calculate coordinates for all cells\n const cellCoordinates: Bounds[] = [];\n const grid: boolean[][] = [];\n let currentRow = 0;\n let currentCol = 0;\n\n // Process each cell and store its coordinates\n for (let i = 0; i < cells.length; i++) {\n const { rowspan, colspan } = cells[i];\n\n // Find the next available position\n while (true) {\n // Ensure we have enough rows in our grid\n while (grid.length <= currentRow) {\n grid.push(new Array(totalColumns).fill(false));\n }\n\n // Check if current position is available\n if (!grid[currentRow][currentCol]) {\n break;\n }\n\n // Move to next column\n currentCol++;\n if (currentCol >= totalColumns) {\n currentCol = 0;\n currentRow++;\n }\n }\n\n // Store coordinates for this cell\n const startCoord: Coordinate = { row: currentRow, col: currentCol };\n const endCoord: Coordinate = {\n row: currentRow + rowspan - 1,\n col: currentCol + colspan - 1,\n };\n\n cellCoordinates[i] = { start: startCoord, end: endCoord };\n\n // Mark the positions this cell occupies as taken\n for (let r = currentRow; r < currentRow + rowspan; r++) {\n // Ensure we have enough rows\n while (grid.length <= r) {\n grid.push(new Array(totalColumns).fill(false));\n }\n\n for (let c = currentCol; c < currentCol + colspan; c++) {\n if (c < totalColumns) {\n grid[r][c] = true;\n }\n }\n }\n\n // Move to next position for the next cell\n currentCol++;\n if (currentCol >= totalColumns) {\n currentCol = 0;\n currentRow++;\n }\n }\n\n // Return the lookup function\n return function getCellCoordinates(cellIndex: number): Bounds {\n if (cellIndex < 0 || cellIndex >= cells.length) {\n throw new Error('Cell index out of bounds');\n }\n\n return cellCoordinates[cellIndex];\n };\n}\n","import {\n AfterContentChecked,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n QueryList,\n TemplateRef,\n} from '@angular/core';\nimport { RivTable } from '../table/state';\nimport { createCellCoordinateCalculator } from './coordinate-helper';\nimport { SimpleTableCellComponent } from './simple-table-cell.component';\nimport { SimpleTableHeaderCellComponent } from './simple-table-header-cell.component';\n\n@Component({\n selector: 'riv-simple-table',\n templateUrl: './simple-table.component.html',\n styleUrls: ['./simple-table.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimpleTableComponent implements AfterContentChecked {\n @ContentChild('header')\n headerTemplate?: TemplateRef<void>;\n\n @ContentChildren(SimpleTableHeaderCellComponent, { descendants: true })\n private headerCells?: QueryList<SimpleTableHeaderCellComponent>;\n\n @ContentChildren(SimpleTableCellComponent, { descendants: true })\n private dataCells?: QueryList<SimpleTableCellComponent>;\n\n ngAfterContentChecked() {\n this.setCellProperties();\n }\n\n private setCellProperties() {\n const { headerCells, dataCells } = this;\n if (!headerCells || !dataCells) return;\n\n headerCells.forEach((headerCell, i) => {\n const { dataType } = headerCell;\n if (!dataType) {\n const allowedTypes = RivTable.ColumnDataTypes.join(', ');\n throw new Error(\n `Each header cell must define an appropriate dataType, one of ${allowedTypes}`,\n );\n }\n\n headerCell.alignment = RivTable.getColumnAlignment(dataType, i === 0);\n headerCell.cdr.markForCheck();\n });\n\n const getCellCoordinates = createCellCoordinateCalculator(\n dataCells.map(dataCell => {\n const element = dataCell.elementRef.nativeElement;\n return {\n rowspan: parseInt(element.getAttribute('rowspan') || '1', 10),\n colspan: parseInt(element.getAttribute('colspan') || '1', 10),\n };\n }),\n headerCells.length,\n );\n\n const maxRow = Math.max(\n ...dataCells.map((_, i) => getCellCoordinates(i).end.row),\n );\n\n dataCells.forEach((dataCell, cellIndex) => {\n const bounds = getCellCoordinates(cellIndex);\n\n const headerCell = headerCells.get(bounds.start.col);\n if (headerCell) {\n dataCell.alignment = headerCell.alignment;\n dataCell.pinned = headerCell.pinned;\n }\n\n dataCell.isLastRow = bounds.end.row === maxRow;\n\n dataCell.cdr.markForCheck();\n });\n }\n}\n","<header *ngIf=\"headerTemplate\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n</header>\n<div class=\"container\">\n <table>\n <ng-content></ng-content>\n </table>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport Fuse from 'fuse.js';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { HighlightComponent } from '../../../visualization/highlight/highlight.component';\nimport { RivTable } from '../state';\nimport { RivSelect } from '../../../input/select/state';\n\ntype ColumnList<C extends RivTable.Column> = (RivTable.ColumnSettings<C> & {\n resolvedName: C | string;\n highlightIndices: HighlightComponent.HighlightIndices[];\n stateIndex: number;\n isLastPinnedColumn: boolean;\n})[];\n\ntype ColumnGroups<C extends RivTable.Column> = {\n enabledColumns: ColumnList<C>;\n disabledColumns: ColumnList<C>;\n};\n\n@Component({\n selector: 'riv-table-column-settings-side-sheet',\n templateUrl: './table-column-settings-side-sheet.component.html',\n styleUrls: ['./table-column-settings-side-sheet.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableColumnSettingsSideSheetComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n> implements OnInit\n{\n @Input()\n manager?: RivTable.Manager<R, C, F>;\n\n @ViewChild('trigger', { read: ElementRef })\n anchor?: ElementRef;\n\n readonly open = new BehaviorSubject(false);\n\n readonly filterQuery = new BehaviorSubject('');\n\n readonly searching = this.filterQuery.pipe(map(query => !!query));\n\n columnList?: Observable<ColumnGroups<C>>;\n\n ngOnInit() {\n this.columnList = combineLatest([\n this.manager!.state.pipe(\n map(s => {\n const columnsLength = s.display.allColumns.length;\n const allColumns = s.display.allColumns.map((column, i) => {\n const nextColumnPinned =\n i + 2 <= columnsLength\n ? s.display.allColumns[i + 1].pinned\n : false;\n\n return {\n ...column,\n resolvedName:\n s.display.columnNameMap.get(column.name) ?? column.name,\n stateIndex: i,\n isLastPinnedColumn: column.pinned && !nextColumnPinned,\n };\n });\n const fuse = new Fuse(allColumns, {\n keys: ['resolvedName'],\n ignoreLocation: true,\n threshold: 0,\n includeMatches: true,\n });\n return { fuse, allColumns };\n }),\n ),\n this.filterQuery,\n ]).pipe(\n map(([{ fuse, allColumns }, filterQuery]) => {\n if (filterQuery) {\n const matches = fuse.search(filterQuery).map(match => {\n const firstmatch = match.matches?.find(\n result => result.key === 'resolvedName',\n );\n return {\n ...match.item,\n highlightIndices: [\n ...(firstmatch?.indices || []).filter(\n RivSelect.isFuseMatchExact(firstmatch!, filterQuery),\n ),\n ],\n };\n });\n const enabledColumns = matches.filter(column => column.enabled);\n const disabledColumns = matches.filter(column => !column.enabled);\n\n return {\n enabledColumns,\n disabledColumns,\n };\n }\n\n const allVisableColumns = allColumns.map(column => ({\n ...column,\n highlightIndices: [],\n }));\n\n const enabledColumns = allVisableColumns.filter(\n column => column.enabled,\n );\n const disabledColumns = allVisableColumns.filter(\n column => !column.enabled,\n );\n\n return {\n enabledColumns: enabledColumns,\n disabledColumns: disabledColumns,\n };\n }),\n );\n }\n\n columnEnabledChange(column: RivTable.ColumnSettings<C>, enabled: boolean) {\n this.manager?.actions.next({\n type: 'columnEnabledChange',\n column: column.name,\n enabled,\n });\n }\n\n columnPinChange(column: RivTable.ColumnSettings<C>, pinned: boolean) {\n this.manager?.actions.next({\n type: 'columnPinChange',\n column: column.name,\n pinned,\n });\n }\n resetToDefault() {\n this.manager?.actions.next({\n type: 'resetToDefaultColumns',\n });\n }\n\n columnMoveTo(column: RivTable.ColumnSettings<C>, position: 'start' | 'end') {\n this.manager?.actions.next({\n type: 'columnMoveToChange',\n position,\n column: column.name,\n });\n }\n\n columnFreezeUpTo(freeze: boolean, index: number) {\n this.manager?.actions.next({\n type: 'columnsFreezeUpToChange',\n freeze,\n index,\n });\n }\n\n allColumnsDisabled(columns: ColumnGroups<C>): boolean {\n return (\n columns.disabledColumns.length == 0 && columns.enabledColumns.length > 0\n );\n }\n\n allColumnsEnabled(columns: ColumnGroups<C>): boolean {\n return (\n columns.enabledColumns.length == 0 && columns.disabledColumns.length > 0\n );\n }\n\n enableAllColumns(enabled: boolean) {\n this.manager?.actions.next({\n type: 'enableAllColumnsChange',\n enabled,\n });\n }\n\n draggedColumnIdx: number | null = null;\n draggedColumnName: C | null = null;\n draggedOverColumnIdx: number | null = null;\n\n dragStart(idx: number, name: C) {\n this.draggedColumnIdx = idx;\n this.draggedColumnName = name;\n }\n\n dragOver(ontoIdx: number) {\n this.draggedOverColumnIdx = ontoIdx;\n }\n\n drop(ontoIdx: number, stateIndex: number) {\n if (this.draggedColumnIdx !== null) {\n this.manager?.actions.next({\n type: 'columnOrderChange',\n previousIndex: this.draggedColumnIdx,\n newIndex: stateIndex,\n });\n this.draggedOverColumnIdx = null;\n this.draggedColumnName = null;\n }\n }\n\n dropEnabledState(enabled: boolean) {\n if (this.draggedColumnName !== null) {\n this.manager?.actions.next({\n type: 'columnEnabledChange',\n column: this.draggedColumnName,\n enabled: enabled,\n });\n\n this.draggedOverColumnIdx = null;\n this.draggedColumnName = null;\n }\n }\n\n disabledColumnsWithOffset(index: number) {\n return index;\n }\n}\n","<button #trigger rivButton (click)=\"open.next(true)\">Columns</button>\n\n<ng-container *ngIf=\"columnList | async; let columns\">\n <ng-container *ngIf=\"open | async\">\n <riv-side-sheet (close)=\"open.next(false); filterQuery.next('')\">\n <div class=\"content\">\n <div class=\"title\">\n <span>Columns</span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [icon]=\"'X'\"\n (click)=\"open.next(false); filterQuery.next('')\"\n ></button>\n </div>\n <riv-search\n [name]=\"'column-search'\"\n [value]=\"(filterQuery | async) || ''\"\n (valueChange)=\"filterQuery.next($event)\"\n ></riv-search>\n <div class=\"columns\">\n <div *ngIf=\"columns.enabledColumns.length > 0\">\n <div\n class=\"column-header\"\n (drop)=\"dropEnabledState(true)\"\n (dragover)=\"$event.preventDefault(); dragOver(-1)\"\n >\n <span class=\"column-header-label\">Shown in table</span>\n <button\n *ngIf=\"!(searching | async)\"\n rivButton\n [variant]=\"'ghost'\"\n [disabled]=\"allColumnsEnabled(columns)\"\n (click)=\"enableAllColumns(false)\"\n >\n Hide all\n </button>\n </div>\n\n <div class=\"options\">\n <ng-container\n *ngFor=\"let column of columns.enabledColumns; let i = index\"\n >\n <div\n class=\"option\"\n [attr.draggable]=\"!(searching | async)\"\n [attr.droppable]=\"!(searching | async)\"\n (dragstart)=\"dragStart(column.stateIndex, column.name)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i, column.stateIndex)\"\n [class.dragged-over-top]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx < i\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"columnTemplate; context: { column }\"\n ></ng-container>\n <div\n *ngIf=\"column.isLastPinnedColumn && !(searching | async)\"\n class=\"column scroll-padding\"\n >\n <div class=\"frozen\">\n <span class=\"pinned\">\n <riv-icon [name]=\"'PinInactive'\" [size]=\"20\"></riv-icon>\n </span>\n <span>Frozen through here</span>\n </div>\n\n <button\n class=\"hidden\"\n rivButton\n [rivTooltip]=\"'Un-freeze columns'\"\n [class.disabled]=\"!column.enabled\"\n [variant]=\"'ghost'\"\n [size]=\"'small'\"\n [icon]=\"'X'\"\n (click)=\"columnFreezeUpTo(false, column.stateIndex)\"\n ></button>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n <div\n *ngIf=\"columns.enabledColumns.length == 0 && !(searching | async)\"\n class=\"column-header\"\n (drop)=\"dropEnabledState(true)\"\n (dragover)=\"$event.preventDefault(); dragOver(-1)\"\n >\n <span>No columns shown</span>\n <button rivButton [variant]=\"'ghost'\" (click)=\"resetToDefault()\">\n Reset to default\n </button>\n </div>\n <div\n class=\"divider\"\n *ngIf=\"\n columns.disabledColumns.length > 0 &&\n (!(searching | async) ||\n ((searching | async) && columns.enabledColumns.length > 0))\n \"\n ></div>\n <div\n *ngIf=\"columns.disabledColumns.length > 0\"\n (drop)=\"dropEnabledState(false)\"\n (dragover)=\"$event.preventDefault(); dragOver(-1)\"\n >\n <div class=\"column-header\">\n <span class=\"column-header-label\">Hidden from table</span>\n\n <button\n *ngIf=\"!(searching | async)\"\n rivButton\n [variant]=\"'ghost'\"\n [disabled]=\"allColumnsDisabled(columns)\"\n (click)=\"enableAllColumns(true)\"\n >\n Show all\n </button>\n </div>\n\n <div class=\"options\">\n <div\n *ngFor=\"let column of columns.disabledColumns; let i = index\"\n [attr.draggable]=\"!(searching | async)\"\n [attr.droppable]=\"!(searching | async)\"\n (dragstart)=\"dragStart(column.stateIndex, column.name)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"\n $event.preventDefault();\n dragOver(i + columns.enabledColumns.length)\n \"\n (drop)=\"\n drop(i + columns.enabledColumns.length, column.stateIndex)\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"columnTemplate; context: { column }\"\n ></ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </riv-side-sheet>\n </ng-container>\n</ng-container>\n\n<ng-template #columnTemplate let-column=\"column\">\n <div class=\"column scroll-padding\">\n <div class=\"column\">\n <span class=\"reorder\" *ngIf=\"!(searching | async)\">\n <riv-icon [name]=\"'Reorder'\" [size]=\"20\"></riv-icon>\n </span>\n <riv-highlight\n [text]=\"column.resolvedName\"\n [indices]=\"column.highlightIndices\"\n ></riv-highlight>\n </div>\n <div>\n <riv-menu class=\"hidden\">\n <button\n *ngIf=\"column.enabled && !column.pinned\"\n riv-menu-item\n (click)=\"columnFreezeUpTo(true, column.stateIndex)\"\n >\n Freeze up to column\n </button>\n <button\n *ngIf=\"column.enabled && column.pinned\"\n riv-menu-item\n (click)=\"columnFreezeUpTo(false, 0)\"\n >\n Un-freeze columns\n </button>\n <button riv-menu-item (click)=\"columnMoveTo(column, 'start')\">\n Move to start\n </button>\n <button riv-menu-item (click)=\"columnMoveTo(column, 'end')\">\n Move to end\n </button>\n <button\n riv-menu-item\n (click)=\"columnEnabledChange(column, !column.enabled)\"\n >\n {{ column.enabled ? 'Hide column' : 'Show column' }}\n </button>\n </riv-menu>\n <button\n rivButton\n [rivTooltip]=\"column.enabled ? 'Hide column' : 'Show column'\"\n [class.disabled]=\"!column.enabled\"\n [variant]=\"'ghost'\"\n [size]=\"'small'\"\n [icon]=\"column.enabled ? 'Eye' : 'EyeOff'\"\n (click)=\"columnEnabledChange(column, !column.enabled)\"\n ></button>\n </div>\n </div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport Fuse from 'fuse.js';\nimport { BehaviorSubject, combineLatest, map, Observable } from 'rxjs';\nimport { HighlightComponent } from '../../../visualization/highlight/highlight.component';\nimport { RivTable } from '../state';\n\ntype ColumnList<C extends RivTable.Column> = (RivTable.ColumnSettings<C> & {\n resolvedName: C | string;\n highlightIndices: HighlightComponent.HighlightIndices[];\n})[];\n\n@Component({\n selector: 'riv-table-column-settings',\n templateUrl: './table-column-settings.component.html',\n styleUrls: ['./table-column-settings.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableColumnSettingsComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n> implements OnInit\n{\n @Input()\n manager?: RivTable.Manager<R, C, F>;\n\n @ViewChild('trigger', { read: ElementRef })\n anchor?: ElementRef;\n\n readonly open = new BehaviorSubject(false);\n\n readonly filterQuery = new BehaviorSubject('');\n\n readonly searching = this.filterQuery.pipe(map(query => !!query));\n\n columnList?: Observable<ColumnList<C>>;\n\n ngOnInit() {\n this.columnList = combineLatest([\n this.manager!.state.pipe(\n map(s => {\n const allColumns = s.display.allColumns.map(column => ({\n ...column,\n resolvedName:\n s.display.columnNameMap.get(column.name) ?? column.name,\n }));\n const fuse = new Fuse(allColumns, {\n keys: ['resolvedName'],\n includeMatches: true,\n threshold: 0.4,\n });\n return { fuse, allColumns };\n }),\n ),\n this.filterQuery,\n ]).pipe(\n map(([{ fuse, allColumns }, filterQuery]) => {\n if (filterQuery) {\n const matches = fuse.search(filterQuery);\n return matches.map(match => ({\n ...match.item,\n highlightIndices: [\n ...(match.matches?.find(result => result.key === 'resolvedName')\n ?.indices || []),\n ],\n }));\n }\n return allColumns.map(column => ({\n ...column,\n highlightIndices: [],\n }));\n }),\n );\n }\n\n columnEnabledChange(column: RivTable.ColumnSettings<C>, enabled: boolean) {\n this.manager?.actions.next({\n type: 'columnEnabledChange',\n column: column.name,\n enabled,\n });\n }\n\n columnPinChange(column: RivTable.ColumnSettings<C>, pinned: boolean) {\n this.manager?.actions.next({\n type: 'columnPinChange',\n column: column.name,\n pinned,\n });\n }\n\n allColumnsDisabled(columns: ColumnList<C>): boolean {\n return columns.every(c => !c.enabled);\n }\n\n disableAllColumns(columns: ColumnList<C>) {\n for (const column of columns) {\n this.manager?.actions.next({\n type: 'columnEnabledChange',\n column: column.name,\n enabled: false,\n });\n }\n }\n\n allColumnsEnabled(columns: ColumnList<C>): boolean {\n return columns.every(c => c.enabled);\n }\n\n enableAllColumns(columns: ColumnList<C>) {\n for (const column of columns) {\n this.manager?.actions.next({\n type: 'columnEnabledChange',\n column: column.name,\n enabled: true,\n });\n }\n }\n\n draggedColumnIdx: number | null = null;\n draggedOverColumnIdx: number | null = null;\n\n dragStart(idx: number) {\n this.draggedColumnIdx = idx;\n }\n\n dragOver(ontoIdx: number) {\n this.draggedOverColumnIdx = ontoIdx;\n }\n\n drop(ontoIdx: number) {\n if (this.draggedColumnIdx !== null) {\n this.manager?.actions.next({\n type: 'columnOrderChange',\n previousIndex: this.draggedColumnIdx,\n newIndex: ontoIdx,\n });\n this.draggedOverColumnIdx = null;\n }\n }\n}\n","<button\n #trigger\n rivButton\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n (click)=\"open.next(true)\"\n>\n Columns\n</button>\n\n<ng-container *ngIf=\"columnList | async; let columns\">\n <ng-container *ngIf=\"open | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"anchor?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-right'\"\n [allowedPositions]=\"[\n 'bottom-right',\n 'bottom-left',\n 'top-left',\n 'top-right'\n ]\"\n (close)=\"open.next(false)\"\n >\n <input\n #filter\n class=\"filter\"\n [placeholder]=\"'Search columns...'\"\n [value]=\"filterQuery | async\"\n (input)=\"filterQuery.next(filter.value)\"\n [riv-auto-focus]=\"true\"\n />\n <div class=\"column-list\">\n <div\n class=\"column\"\n *ngFor=\"let column of columns; let i = index\"\n [attr.draggable]=\"!(searching | async)\"\n [attr.droppable]=\"!(searching | async)\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n [class.dragged-over-top]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx < i\n \"\n >\n <riv-checkbox\n [value]=\"column.enabled\"\n (valueChange)=\"columnEnabledChange(column, $event)\"\n >\n <riv-highlight\n [text]=\"column.resolvedName\"\n [indices]=\"column.highlightIndices\"\n ></riv-highlight>\n </riv-checkbox>\n <span class=\"reorder\" *ngIf=\"!(searching | async)\">\n <riv-icon [name]=\"'Reorder'\" [size]=\"12\"></riv-icon>\n </span>\n <button\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'xsmall'\"\n [icon]=\"column.pinned ? 'PinActive' : 'PinInactive'\"\n (click)=\"columnPinChange(column, !column.pinned)\"\n ></button>\n </div>\n </div>\n <footer *ngIf=\"!(searching | async)\">\n <button\n rivButton\n [size]=\"'xsmall'\"\n [variant]=\"'ghost'\"\n [disabled]=\"allColumnsDisabled(columns)\"\n (click)=\"disableAllColumns(columns)\"\n >\n Clear\n </button>\n <button\n rivButton\n [size]=\"'xsmall'\"\n [variant]=\"'ghost'\"\n [disabled]=\"allColumnsEnabled(columns)\"\n (click)=\"enableAllColumns(columns)\"\n >\n Select all\n </button>\n </footer>\n </riv-callout>\n </ng-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\nimport * as p from 'papaparse';\nimport { DownloadService } from '../../../download/download.service';\nimport { RivTable } from '../state';\n\n@Component({\n selector: 'riv-table-csv-export',\n templateUrl: './table-csv-export.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableCsvExportComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n> {\n @Input()\n manager?: RivTable.Manager<R, C, F>;\n\n constructor(\n private readonly downloadService: DownloadService,\n private readonly cdr: ChangeDetectorRef,\n ) {}\n\n loading = false;\n\n async downloadCsv(state: RivTable.FullState<R, C, F>) {\n for await (const output of state.result.csvData()) {\n if (!output.data) {\n this.loading = true;\n } else {\n await this.downloadService.downloadBlob(\n new Blob([p.unparse(output.data)], { type: 'text/csv' }),\n state.result.csvFilename,\n );\n this.loading = false;\n }\n this.cdr.markForCheck();\n }\n }\n}\n","<ng-container *ngIf=\"manager?.state | async; let s\">\n <button\n type=\"button\"\n rivButton\n [rivTooltip]=\"'Export CSV'\"\n [icon]=\"'DownloadCloud'\"\n [loading]=\"loading\"\n (click)=\"downloadCsv(s)\"\n ></button>\n</ng-container>\n","import { DOCUMENT } from '@angular/common';\nimport { Component, ElementRef, Inject, Output } from '@angular/core';\nimport {\n concatWith,\n distinctUntilChanged,\n fromEvent,\n map,\n Observable,\n of,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\n\n@Component({\n selector: 'table-header-resize-handle',\n templateUrl: './table-header-resize-handle.component.html',\n styleUrls: ['./table-header-resize-handle.component.css'],\n})\nexport class TableHeaderResizeHandleComponent {\n constructor(\n private readonly elementRef: ElementRef,\n @Inject(DOCUMENT) private readonly documentRef: Document,\n ) {}\n\n @Output()\n readonly dragResize: Observable<number | null> = fromEvent<MouseEvent>(\n this.elementRef.nativeElement,\n 'mousedown',\n ).pipe(\n tap(evt => evt.preventDefault()),\n switchMap(() => {\n const { width, right } = this.elementRef.nativeElement\n .closest('th')!\n .getBoundingClientRect();\n\n return fromEvent<MouseEvent>(this.documentRef, 'mousemove').pipe(\n map(({ clientX }) => width + clientX - right),\n distinctUntilChanged(),\n takeUntil(fromEvent(this.documentRef, 'mouseup')),\n concatWith(of(null)), // signal that the user is done working\n );\n }),\n );\n}\n","","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\nimport { RivSelect } from '../../../input/select/state';\nimport { RivTable } from '../state';\n\ntype SearchableColumn = RivSelect.BaseOption & {\n searchEnabled: boolean;\n};\n\n@Component({\n selector: 'riv-table-search-columns',\n templateUrl: './table-search-columns.component.html',\n styleUrls: ['./table-search-columns.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableSearchColumnsComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n> implements OnInit\n{\n public readonly open = new BehaviorSubject<boolean>(false);\n\n @Input()\n manager?: RivTable.Manager<R, C, F>;\n\n @Input()\n disabled: boolean = false;\n\n columnList?: Observable<{\n activeSearchColumns: SearchableColumn[];\n hiddenSearchColumns: SearchableColumn[];\n searchEnabledCount: number;\n }>;\n\n ngOnInit() {\n this.columnList = this.manager!.state.pipe(\n map(s => {\n const makeNode = (column: RivTable.ColumnSettings<C>) => ({\n id: column.name,\n title: s.display.columnNameMap.get(column.name) ?? column.name,\n searchEnabled: !!s.query.searchColumns.get(column.name),\n });\n const activeColumns = s.display.allColumns\n .filter(c => s.display.searchableColumnMap.get(c.name) && c.enabled)\n .map(makeNode);\n const hiddenColumns = s.display.allColumns\n .filter(c => s.display.searchableColumnMap.get(c.name) && !c.enabled)\n .map(makeNode);\n\n const searchEnabledCount =\n activeColumns.filter(c => c.searchEnabled).length +\n hiddenColumns.filter(c => c.searchEnabled).length;\n\n return {\n activeSearchColumns: activeColumns,\n hiddenSearchColumns: hiddenColumns,\n searchEnabledCount: searchEnabledCount,\n };\n }),\n );\n }\n\n updateColumns(column: string, active: boolean) {\n const payload = new Map();\n payload.set(column, active);\n this.manager?.actions.next({\n type: 'searchColumnsChange',\n payload,\n });\n }\n}\n","<ng-container *ngIf=\"columnList | async; let s\">\n <button #trigger class=\"trigger-button\" (click)=\"open.next(true)\">\n <riv-icon [name]=\"'MoreVertical'\" [size]=\"16\"></riv-icon>\n </button>\n <ng-container *ngIf=\"open | async\">\n <riv-callout\n *riv-overlay\n [anchor]=\"trigger\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'bottom-left'\"\n [theme]=\"'light'\"\n (close)=\"open.next(false)\"\n >\n <div class=\"content-body\">\n <div class=\"header-container\">\n <riv-help\n [size]=\"12\"\n [help]=\"'Toggle which columns are included in table search results'\"\n ></riv-help\n ><span class=\"header-text\">Search in</span>\n </div>\n\n <ng-container\n [ngTemplateOutlet]=\"optionList\"\n [ngTemplateOutletContext]=\"{ columns: s.activeSearchColumns }\"\n ></ng-container>\n\n <div *ngIf=\"s.hiddenSearchColumns.length > 0\" class=\"column-header\">\n Hidden columns\n </div>\n\n <ng-container\n *ngIf=\"s.hiddenSearchColumns.length > 0\"\n [ngTemplateOutlet]=\"optionList\"\n [ngTemplateOutletContext]=\"{ columns: s.hiddenSearchColumns }\"\n ></ng-container>\n\n <ng-template #optionList let-columns=\"columns\">\n <ng-container *ngFor=\"let column of columns\">\n <ng-container\n [ngTemplateOutlet]=\"option\"\n [ngTemplateOutletContext]=\"{ node: column }\"\n ></ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #option let-node=\"node\">\n <div class=\"node-container\">\n <span class=\"node-text\">{{ node.title }}</span>\n <riv-switch-checkbox\n [size]=\"'small'\"\n [value]=\"node.searchEnabled\"\n [disabled]=\"s.searchEnabledCount === 1 && node.searchEnabled\"\n [rivTooltip]=\"\n s.searchEnabledCount === 1 && node.searchEnabled\n ? 'At least one search field is required'\n : undefined\n \"\n (valueChange)=\"updateColumns(node.id, $event)\"\n ></riv-switch-checkbox>\n </div>\n </ng-template>\n </div>\n </riv-callout>\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { debounce } from 'lodash';\nimport { RivTable } from '../state';\n\n@Component({\n selector: 'riv-table-search',\n templateUrl: './table-search.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableSearchComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n> {\n @Input()\n manager?: RivTable.Manager<R, C, F>;\n\n @Input()\n name: string = 'table-search';\n\n @Input()\n disabled: boolean = false;\n\n @Input()\n searchColumns: boolean = false;\n\n search = debounce((query: string) => {\n this.manager?.actions.next({ type: 'searchChange', payload: query });\n }, 300);\n}\n","<ng-container *ngIf=\"manager?.state | async; let s\">\n <riv-search\n [name]=\"name\"\n [disabled]=\"disabled\"\n [value]=\"s.query.search\"\n (valueChange)=\"search($event)\"\n [labelTemplate]=\"searchColumns ? labelTemplate : undefined\"\n ></riv-search>\n</ng-container>\n<ng-template #labelTemplate\n ><riv-table-search-columns [manager]=\"manager\"></riv-table-search-columns\n></ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n HostListener,\n Input,\n TemplateRef,\n TrackByFunction,\n} from '@angular/core';\nimport { map, Observable, Subject } from 'rxjs';\nimport { RivSelect } from '../../../input/select/state';\nimport { RivTable } from '../state';\n\ntype PageSizeOption = {\n id: string;\n title: string;\n value: number;\n};\n\n@Component({\n selector: 'riv-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableComponent<\n R extends RivTable.Row,\n C extends RivTable.Column,\n F extends RivTable.Filters,\n G extends RivTable.Group = { key: '' },\n> {\n @Input()\n manager?: RivTable.Manager<R, C, F, G>;\n\n @ContentChild('cell')\n cellTemplate?: TemplateRef<{\n row: RivTable.FullRow<R>;\n column: RivTable.FullColumn<C>;\n }>;\n\n @ContentChild('menu')\n menuTemplate?: TemplateRef<{ row: RivTable.FullRow<R> }>;\n\n @ContentChild('selection')\n selectionTemplate?: TemplateRef<{ state: RivTable.FullState<R, C, F, G> }>;\n\n @ContentChild('header')\n headerTemplate?: TemplateRef<{ state: RivTable.FullState<R, C, F, G> }>;\n\n @ContentChild('subheader')\n subheaderTemplate?: TemplateRef<{\n state: RivTable.FullState<R, C, F, G>;\n group: RivTable.RowGroup<R, G>;\n }>;\n\n readonly containerSize = new Subject<DOMRect>();\n readonly selectionCalloutPosition: Observable<DOMRect> =\n this.containerSize.pipe(\n map(rect => new DOMRect(rect.x + 44, rect.y - 12, 0, 0)),\n );\n\n readonly pageSizeOptions: RivSelect.OptionGroup<PageSizeOption>[] = [\n {\n options: RivTable.pageSizes.map(pageSize => ({\n id: pageSize.toString(),\n title: pageSize.toString(),\n value: pageSize,\n })),\n },\n ];\n\n readonly trackByRow: TrackByFunction<RivTable.FullRow<R>> = (_, row) =>\n row.id;\n\n private readonly temporaryWidths: Map<C, number> = new Map();\n setWidth(column: C, width: number | null): void {\n if (width === null) {\n const temporaryWidth = this.temporaryWidths.get(column);\n if (temporaryWidth) {\n this.manager?.actions.next({\n type: 'columnWidthChange',\n column,\n preferredWidth: temporaryWidth,\n });\n }\n this.temporaryWidths.delete(column);\n } else {\n this.temporaryWidths.set(column, width);\n }\n }\n getWidth(column: RivTable.FullColumn<C>): number {\n if (this.temporaryWidths.has(column.name)) {\n return Math.max(this.temporaryWidths.get(column.name)!, column.minWidth);\n } else {\n return column.width;\n }\n }\n\n draggedColumnIdx: number | null = null;\n draggedOverColumnIdx: number | null = null;\n\n dragStart(idx: number) {\n this.draggedColumnIdx = idx;\n }\n\n dragOver(ontoIdx: number) {\n this.draggedOverColumnIdx = ontoIdx;\n }\n\n drop(ontoIdx: number) {\n if (this.draggedColumnIdx !== null) {\n this.manager?.actions.next({\n type: 'columnOrderChange',\n previousIndex: this.draggedColumnIdx,\n newIndex: ontoIdx,\n });\n this.draggedOverColumnIdx = null;\n }\n }\n\n getErrorMessage(e: unknown): string {\n if (e instanceof Error) return e.message;\n if (typeof e === 'string') return e;\n if (typeof e === 'object' && e !== null) return e.toString();\n else return 'An error occurred.';\n }\n\n private shift: boolean = false;\n\n @HostListener('document:keydown', ['$event'])\n keyDown(event: KeyboardEvent) {\n this.shift = event.shiftKey;\n }\n\n @HostListener('document:keyup', ['$event'])\n keyUp(event: KeyboardEvent) {\n this.shift = event.shiftKey;\n }\n\n selectionChange(rowId: R['id'], selected: boolean) {\n this.manager?.actions.next({\n type: 'rowSelectedChange',\n id: rowId,\n selected,\n contiguous: this.shift,\n });\n }\n\n handleClick(event: MouseEvent, column: RivTable.FullColumn<C>) {\n if (column.clickPreventDefault) event.preventDefault();\n if (column.clickStopPropagation) event.stopPropagation();\n }\n\n isExternalRowLink(\n rowLink: RivTable.RowLink,\n ): rowLink is RivTable.ExternalRowLink {\n return rowLink.type === 'external';\n }\n\n isInternalRowLink(\n rowLink: RivTable.RowLink,\n ): rowLink is RivTable.InternalRowLink {\n return rowLink.type === 'internal';\n }\n}\n","<ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container *ngIf=\"selectionCalloutPosition | async; let position\">\n <ng-container *ngIf=\"s.selection.selectedCount > 0 && selectionTemplate\">\n <riv-callout\n *riv-overlay\n [anchor]=\"position\"\n [isModal]=\"false\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n [preferredPosition]=\"'top-right'\"\n >\n <ng-container\n *ngTemplateOutlet=\"selectionTemplate; context: { state: s }\"\n ></ng-container>\n </riv-callout>\n </ng-container>\n </ng-container>\n <riv-loading-cover\n [loading]=\"s.load.loading\"\n [errorMessage]=\"s.load.error ? getErrorMessage(s.load.error) : undefined\"\n >\n <header *ngIf=\"headerTemplate\">\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { state: s }\"\n ></ng-container>\n </header>\n <div\n class=\"container\"\n [ngClass]=\"{\n 'container-ungrouped': !s.result.isGrouped,\n 'has-header': !s.result.isGrouped && headerTemplate\n }\"\n (rivClientSize)=\"containerSize.next($event)\"\n >\n <ng-container\n *ngFor=\"\n let group of s.result.isGrouped\n ? s.result.rowGroups\n : [s.result.rowsAsGroup];\n let last = last\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n subheaderTemplate || null;\n context: { state: s, group }\n \"\n ></ng-container>\n <div [ngClass]=\"{ 'subcontainer-grouped': s.result.isGrouped }\">\n <table>\n <thead>\n <tr>\n <th *ngIf=\"!!s.selection.allowSelection\" class=\"selection-head\">\n <div\n *ngIf=\"\n s.selection.allowSelection !== 'individual' &&\n s.selection.allowSelection === true\n \"\n class=\"checkbox-wrapper\"\n >\n <riv-checkbox\n *ngIf=\"!s.result.isGrouped\"\n [value]=\"s.selection.isAllSelected === true\"\n [indeterminate]=\"\n s.selection.isAllSelected === 'indeterminate'\n \"\n (valueChange)=\"\n manager?.actions?.next({ type: 'allSelectedChange' })\n \"\n ></riv-checkbox>\n <riv-checkbox\n *ngIf=\"s.result.isGrouped\"\n [value]=\"group.selected === true\"\n [indeterminate]=\"group.selected === 'indeterminate'\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'groupSelectionChange',\n payload: group\n })\n \"\n ></riv-checkbox>\n </div>\n </th>\n <th\n *ngFor=\"let column of s.display.columns; let i = index\"\n [class.pinned]=\"column.pinned\"\n [style.left.px]=\"column.left\"\n [style.width.px]=\"getWidth(column)\"\n draggable=\"true\"\n droppable=\"true\"\n (dragstart)=\"dragStart(i)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i)\"\n (drop)=\"drop(i)\"\n [class.dragged-over-left]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx > i\n \"\n [class.dragged-over-right]=\"\n draggedOverColumnIdx === i &&\n draggedColumnIdx !== null &&\n draggedColumnIdx < i\n \"\n >\n <div\n *ngIf=\"\n !column.orderable &&\n !column.filterable &&\n !s.display.columnsAreFreezable &&\n !s.display.columnsAreHideable\n \"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n >\n {{ s.display.columnNameMap.get(column.name) }}\n </div>\n <riv-menu\n *ngIf=\"\n column.orderable ||\n column.filterable ||\n s.display.columnsAreFreezable ||\n s.display.columnsAreHideable\n \"\n >\n <ng-template #trigger>\n <button\n type=\"button\"\n class=\"header-wrapper\"\n [class.left]=\"column.alignment === 'left'\"\n [class.right]=\"column.alignment === 'right'\"\n [class.active]=\"s.query.order?.column === column.name\"\n >\n {{ s.display.columnNameMap.get(column.name) }}\n <span class=\"icon-container\">\n <riv-icon\n [size]=\"12\"\n [name]=\"\n s.query.order?.direction === 'desc'\n ? 'ArrowDown'\n : 'ArrowUp'\n \"\n ></riv-icon>\n </span>\n </button>\n <table-header-resize-handle\n (dragResize)=\"setWidth(column.name, $event)\"\n ></table-header-resize-handle>\n </ng-template>\n <ng-container *ngIf=\"column.orderable\">\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.name &&\n s.query.order?.direction === 'asc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'asc',\n column: column.name\n }\n })\n \"\n >\n Sort ascending\n </button>\n <button\n *ngIf=\"s.query.order?.column === column.name\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: null\n })\n \"\n >\n Remove sort\n </button>\n <button\n *ngIf=\"\n !(\n s.query.order?.column === column.name &&\n s.query.order?.direction === 'desc'\n )\n \"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'orderChange',\n payload: {\n direction: 'desc',\n column: column.name\n }\n })\n \"\n >\n Sort descending\n </button>\n </ng-container>\n <riv-menu-divider\n *ngIf=\"column.orderable && column.filterable\"\n ></riv-menu-divider>\n <button\n *ngIf=\"column.filterable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'filterAdd',\n columnKey: column.name\n })\n \"\n >\n Add a filter\n </button>\n <riv-menu-divider\n *ngIf=\"\n (column.orderable || column.filterable) &&\n (s.display.columnsAreFreezable ||\n s.display.columnsAreHideable)\n \"\n ></riv-menu-divider>\n <ng-container *ngIf=\"s.display.columnsAreFreezable\">\n <button\n *ngIf=\"!column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: true,\n index: i\n })\n \"\n >\n Freeze up to column\n </button>\n <button\n *ngIf=\"column.pinned\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnsFreezeUpToChange',\n freeze: false,\n index: 0\n })\n \"\n >\n Un-freeze columns\n </button>\n </ng-container>\n <button\n *ngIf=\"s.display.columnsAreHideable\"\n riv-menu-item\n (click)=\"\n this.manager?.actions?.next({\n type: 'columnEnabledChange',\n column: column.name,\n enabled: false\n })\n \"\n >\n Hide column\n </button>\n </riv-menu>\n </th>\n <th *ngIf=\"menuTemplate\" class=\"menu-head\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngIf=\"s.result.totalMatchingRowCount > 0; else empty\"\n >\n <ng-container *ngFor=\"let row of group.rows\">\n <ng-template #rowBody>\n <td\n *ngIf=\"\n s.selection.allowSelection === true ||\n s.selection.allowSelection === 'individual'\n \"\n class=\"selection-body\"\n (click)=\"$event.preventDefault()\"\n >\n <label\n class=\"checkbox-wrapper\"\n (click)=\"$event.stopPropagation()\"\n >\n <riv-checkbox\n [identifier]=\"'riv-table-selection-' + row.id\"\n [value]=\"row.selected\"\n (valueChange)=\"selectionChange(row.id, $event)\"\n ></riv-checkbox>\n </label>\n </td>\n <td\n *ngFor=\"let column of s.display.columns\"\n [class.pinned]=\"column.pinned\"\n [class.advanced]=\"column.dataType === 'advanced'\"\n [style.left.px]=\"column.left\"\n [style.text-align]=\"column.alignment\"\n (click)=\"handleClick($event, column)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n cellTemplate || null;\n context: { row: row, column: column }\n \"\n ></ng-container>\n </td>\n <td\n *ngIf=\"menuTemplate\"\n class=\"menu-body\"\n (click)=\"\n $event.stopPropagation(); $event.preventDefault()\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n menuTemplate || null;\n context: { row: row }\n \"\n ></ng-container>\n </td>\n </ng-template>\n <ng-container *ngIf=\"row.rowLink; let rl\">\n <a\n *ngIf=\"isExternalRowLink(rl)\"\n [href]=\"rl.href\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n <a\n *ngIf=\"isInternalRowLink(rl)\"\n [routerLink]=\"rl.routerLink\"\n [queryParams]=\"rl.queryParams\"\n [queryParamsHandling]=\"rl.queryParamsHandling\"\n class=\"row-link\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </a>\n </ng-container>\n <tr\n *ngIf=\"!row.rowLink\"\n [class.grayed]=\"s.display.rowsAreGrayed\"\n >\n <ng-container *ngTemplateOutlet=\"rowBody\"></ng-container>\n </tr>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <tr>\n <td [attr.colspan]=\"s.display.columns.length\">\n <riv-zero-state\n *ngIf=\"s.display.zeroStateMessage; let message\"\n [message]=\"message\"\n ></riv-zero-state>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n </div>\n <div\n class=\"footer\"\n *ngIf=\"\n s.result.isGrouped &&\n group.totalMatchingRowCount > s.query.grouping.countPerGroup &&\n group.rows.length == s.query.grouping.countPerGroup\n \"\n >\n <span\n rivLink\n class=\"footer-link\"\n (click)=\"\n manager?.actions?.next({\n type: 'viewMoreKeyChange',\n viewMoreKey: group.groupData.key.toString()\n })\n \"\n >View all {{ group.totalMatchingRowCount }}</span\n >\n </div>\n <br *ngIf=\"!last\" />\n </ng-container>\n </div>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination\">\n <div class=\"page-size-controls\">\n <ng-container *ngIf=\"!s.result.isGrouped\">\n <span> Results per page: </span>\n <riv-simple-select\n [selectedOption]=\"{\n id: s.query.pagination.pageSize.toString(),\n title: s.query.pagination.pageSize.toString(),\n value: s.query.pagination.pageSize\n }\"\n (selectedOptionChange)=\"\n manager?.actions?.next({\n type: 'pageSizeChange',\n size: $event?.value || 25\n })\n \"\n [optionGroups]=\"pageSizeOptions\"\n [size]=\"'small'\"\n ></riv-simple-select>\n </ng-container>\n </div>\n <span\n *ngIf=\"s.result.totalMatchingRowCount > 0 && !s.result.isGrouped\"\n class=\"page-data-indicator\"\n >\n {{ s.query.pagination.pageRowStart | rivNumber }}-{{\n s.query.pagination.pageRowEnd | rivNumber\n }}\n of\n {{ s.result.totalMatchingRowCount | rivNumber }}\n </span>\n <div *ngIf=\"s.query.pagination.showControls\" class=\"pagination-controls\">\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowLeft'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.previous === null\"\n (click)=\"manager?.actions?.next({ type: 'previousPageNavigate' })\"\n ></button>\n <span\n *ngIf=\"s.query.pagination.pages[0] > 0\"\n class=\"truncated-pages left\"\n >\n …\n </span>\n <button\n *ngFor=\"let page of s.query.pagination.pages\"\n class=\"page\"\n type=\"button\"\n [disabled]=\"page === s.query.pagination.page\"\n (click)=\"manager?.actions?.next({ type: 'pageChange', page })\"\n >\n {{ page + 1 }}\n </button>\n <span\n *ngIf=\"\n s.query.pagination.pages[s.query.pagination.pages.length - 1] <\n s.query.pagination.pageCount - 1\n \"\n class=\"truncated-pages right\"\n >\n …\n </span>\n <button\n rivButton\n [variant]=\"'basic'\"\n [size]=\"'small'\"\n [icon]=\"'ArrowRight'\"\n type=\"button\"\n [disabled]=\"s.query.pagination.next === null\"\n (click)=\"manager?.actions?.next({ type: 'nextPageNavigate' })\"\n ></button>\n </div>\n </div>\n </riv-loading-cover>\n</ng-container>\n","import { CurrencyPipe } from '@angular/common';\nimport { scaleLinear, scaleUtc } from 'd3-scale';\nimport { area, line } from 'd3-shape';\nimport { utcFormat } from 'd3-time-format';\nimport { DaysPipe } from '../../format/pipes/days.pipe';\nimport { NumberPipe } from '../../format/pipes/number.pipe';\nimport { PercentagePipe } from '../../format/pipes/percentage.pipe';\nimport { SmallCurrencyPipe } from '../../format/pipes/small-currency.pipe';\n\nexport namespace Chart {\n export const defaultColorPalette = [\n //Base colors\n '--baja-blast-50',\n '--teal-diamond-50',\n '--fyre-50',\n '--tang-50',\n '--purp-60',\n '--rosi-70',\n //Shift lighter from base by -20\n '--baja-blast-30',\n '--teal-diamond-30',\n '--fyre-30',\n '--tang-30',\n '--purp-40',\n '--rosi-50',\n //Shift darker from base by +20\n '--baja-blast-70',\n '--teal-diamond-70',\n '--fyre-70',\n '--tang-70',\n '--purp-80',\n '--rosi-90',\n ];\n\n export function chart(config: Config, data: Data, dimensions: Dimensions) {\n return config.type == 'line'\n ? lines(config, data, dimensions)\n : config.type == 'area'\n ? areas(config, data, dimensions)\n : bars(config, data, dimensions);\n }\n export function lines(\n config: Config,\n allData: Data,\n dimensions: Dimensions,\n ): RenderedChart {\n const { data, visibleIndices } = hide(allData);\n const xScale = scaleUtc(timeseriesDomain(data), xRange(dimensions));\n const format = (date: Date) =>\n formatedDate(config.dateFormat || 'day', date);\n\n //Dont use auto magic when dealing with 1,2,3,4 data points\n const xTickDates =\n data.x.length < 5\n ? data.x.map(x => new Date(x))\n : xScale.ticks(Math.min(5, data.x.length));\n\n const xTicks = xTickDates.map(tick => ({\n x: xScale(tick),\n label: format(tick),\n }));\n\n const { pipe, fullPipe } = getPipes(config.valueType);\n const yScale = scaleLinear(yDomain(data), yRange(dimensions));\n const yTicks = yScale.ticks(5).map(tick => ({\n y: yScale(tick),\n label: pipe.transform(tick),\n }));\n\n const colors = visibleIndices.map(\n i => config.colors[i % config.colors.length],\n );\n const indices = data.x.map((_, i) => i);\n const lines =\n data.x.length > 1\n ? data.ys.map(y =>\n line<number>(\n i => xScale(data.x[i]),\n i => yScale(y.values[i]),\n )(indices),\n )\n : [];\n const circles =\n data.x.length === 1\n ? data.ys.map(ySeries => ({\n cx: xScale(data.x[0]),\n cy: yScale(ySeries.values[0]),\n }))\n : [];\n\n function hover(pos: { rect: DOMRect; x: number; y: number }) {\n const xIndex = findNearestIndex(data.x, xScale.invert(pos.x).getTime());\n const x = xScale(data.x[xIndex]);\n const visibleYIndex = findNearestIndex(\n data.ys.map(y => y.values[xIndex]),\n yScale.invert(pos.y),\n );\n const yIndex = visibleIndices[visibleYIndex];\n const ys = data.ys.map(y => yScale(y.values[xIndex]));\n\n const format = (date: Date) =>\n formatedDate(config.dateFormat || 'day', date);\n\n const anchor = new DOMRect(\n pos.rect.x + x,\n pos.rect.y + ys[visibleYIndex],\n 8,\n 0,\n );\n return {\n x,\n xIndex,\n ys,\n yIndex,\n visibleYIndex,\n tooltip: {\n anchor,\n date: format(new Date(data.x[xIndex])),\n metrics: data.ys\n .map((y, index) => ({\n color: colors[index % colors.length],\n label: y.label,\n value: fullPipe.transform(y.values[xIndex]) ?? '-',\n }))\n .filter((_, i) => config.groupedTooltip || i == visibleYIndex),\n },\n };\n }\n\n return {\n xTicks,\n yTicks,\n colors,\n lines,\n circles,\n hover,\n bars: [],\n areas: [],\n };\n }\n\n export function areas(\n config: Config,\n allData: Data,\n dimensions: Dimensions,\n ): RenderedChart {\n const { data: unstackedData, visibleIndices } = hide(allData);\n const data = stack(unstackedData);\n const xScale = scaleUtc(timeseriesDomain(data), xRange(dimensions));\n const format = (date: Date) =>\n formatedDate(config.dateFormat || 'day', date);\n const xTicks = xScale.ticks(Math.min(5, data.x.length)).map(tick => ({\n x: xScale(tick),\n label: format(tick),\n }));\n\n const { pipe, fullPipe } = getPipes(config.valueType);\n const yScale = scaleLinear(yDomain(data), yRange(dimensions));\n const yTicks = yScale.ticks(5).map(tick => ({\n y: yScale(tick),\n label: pipe.transform(tick),\n }));\n\n const indices = data.x.map((_, i) => i);\n const colors = visibleIndices.map(\n i => config.colors[i % config.colors.length],\n );\n const areas = data.ys.map((y, yIndex) =>\n area<number>(\n i => xScale(data.x[i]),\n i => yScale(yIndex == 0 ? 0 : data.ys[yIndex - 1].values[i]),\n i => yScale(y.values[i]),\n )(indices),\n );\n\n function hover(pos: { rect: DOMRect; x: number; y: number }) {\n const xIndex = findNearestIndex(data.x, xScale.invert(pos.x).getTime());\n const x = xScale(data.x[xIndex]);\n const yValue = yScale.invert(pos.y);\n let visibleYIndex = data.ys\n .map(y => y.values[xIndex])\n .findIndex(y => y > yValue);\n if (visibleYIndex == -1) {\n visibleYIndex = data.ys.length - 1;\n }\n const yIndex = visibleIndices[visibleYIndex];\n const ys = data.ys.map(y => yScale(y.values[xIndex]));\n const padding = 8;\n const anchor = new DOMRect(\n pos.rect.x + x,\n pos.rect.y + ys[visibleYIndex],\n padding,\n 0,\n );\n return {\n x,\n xIndex,\n ys,\n yIndex,\n visibleYIndex,\n tooltip: {\n anchor,\n date: utcFormat('%B %d, %Y')(new Date(unstackedData.x[xIndex])),\n metrics: unstackedData.ys\n .map((y, index) => ({\n color: colors[index % colors.length],\n label: y.label,\n value: fullPipe.transform(y.values[xIndex]) ?? '-',\n }))\n .filter((_, i) => config.groupedTooltip || i == visibleYIndex),\n },\n };\n }\n\n return {\n xTicks,\n yTicks,\n colors,\n areas,\n lines: [],\n circles: [],\n hover,\n bars: [],\n };\n }\n\n export function bars(\n config: Config,\n allData: Data,\n dimensions: Dimensions,\n ): RenderedChart {\n const { data: unstackedData, visibleIndices } = hide(allData);\n const data = stack(unstackedData);\n const { range: xRange, binSize } = barXRange(dimensions, data);\n const halfBinSize = binSize / 2;\n const xScale = scaleUtc(timeseriesDomain(data), xRange);\n const format = (date: Date) =>\n formatedDate(config.dateFormat || 'day', date);\n const xTicks = xScale.ticks(Math.min(5, data.x.length)).map(tick => ({\n x: xScale(tick),\n label: format(tick),\n }));\n\n const { pipe, fullPipe } = getPipes(config.valueType);\n const yScale = scaleLinear(yDomain(data), yRange(dimensions));\n const yTicks = yScale.ticks(5).map(tick => ({\n y: yScale(tick),\n label: pipe.transform(tick),\n }));\n const colors = visibleIndices.map(\n i => config.colors[i % config.colors.length],\n );\n const bars = data.ys.map((y, yIndex) =>\n y.values.map((value, index) => {\n const yValue = yScale(value);\n return {\n x: xScale(data.x[index]) - halfBinSize,\n y: yValue,\n width: binSize,\n height:\n (yIndex == 0\n ? yScale(0)\n : yScale(data.ys[yIndex - 1].values[index])) - yValue,\n };\n }),\n );\n\n function hover(pos: { rect: DOMRect; x: number; y: number }) {\n const xIndex = findNearestIndex(data.x, xScale.invert(pos.x).getTime());\n const x = xScale(data.x[xIndex]);\n const yValue = yScale.invert(pos.y);\n let visibleYIndex = data.ys\n .map(y => y.values[xIndex])\n .findIndex(y => y > yValue);\n if (visibleYIndex == -1) {\n visibleYIndex = data.ys.length - 1;\n }\n const yIndex = visibleIndices[visibleYIndex];\n const ys = data.ys.map(y => yScale(y.values[xIndex]));\n const padding = 8;\n const anchor = new DOMRect(\n pos.rect.x + bars[visibleYIndex][xIndex].x - padding,\n pos.rect.y + ys[visibleYIndex],\n bars[visibleYIndex][xIndex].width + padding * 2,\n (visibleYIndex == 0 ? yScale(0) : ys[visibleYIndex - 1]) -\n ys[visibleYIndex],\n );\n return {\n x,\n xIndex,\n ys,\n yIndex,\n visibleYIndex,\n tooltip: {\n anchor,\n date: utcFormat('%B %d, %Y')(new Date(unstackedData.x[xIndex])),\n metrics: unstackedData.ys\n .map((y, index) => ({\n color: colors[index % colors.length],\n label: y.label,\n value: fullPipe.transform(y.values[xIndex]) ?? '-',\n }))\n .filter((_, i) => config.groupedTooltip || i == visibleYIndex),\n },\n };\n }\n\n return {\n xTicks,\n yTicks,\n colors,\n bars,\n lines: [],\n circles: [],\n areas: [],\n hover,\n };\n }\n\n const LEFT_PADDING = 48;\n const RIGHT_PADDING = 24;\n const TOP_PADDING = 16;\n const BOTTOM_PADDING = 24;\n\n export type Data = {\n ys: {\n label: string;\n hidden?: boolean;\n values: number[];\n }[];\n x: number[];\n };\n\n export type Dimensions = {\n width: number;\n height: number;\n };\n\n export type Config = {\n type: 'line' | 'area' | 'bar';\n groupedTooltip: boolean;\n colors: string[];\n allowLegendToggle: boolean;\n zeroStateMessage: string;\n valueType: ValueType;\n truncateLegend: boolean;\n dateFormat?: Interval;\n };\n\n export const defaultConfig: Config = {\n type: 'line',\n groupedTooltip: true,\n colors: defaultColorPalette,\n allowLegendToggle: false,\n zeroStateMessage: 'No data to display.',\n valueType: 'currency',\n truncateLegend: true,\n dateFormat: 'day',\n };\n\n export type Area = {\n path: string | null;\n fill: string;\n };\n\n export type XTick = {\n x: number;\n label: string;\n };\n\n export type YTick = {\n y: number;\n label: string;\n };\n\n type Rect = {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n\n export type BarSeries = {\n fill: string;\n rects: Rect[];\n };\n\n type Circle = {\n cx: number;\n cy: number;\n };\n\n // Hover is a function that takes a viewport x and y and returns a rich\n // set of information about what values are being hovered and what the tooltip\n // should look like\n export type Hover = (pos: { rect: DOMRect; x: number; y: number }) => {\n // the indices into the data of the closest point\n xIndex: number;\n // we want to know which visible y index is hovered\n // and which actual y index is hovered\n yIndex: number;\n visibleYIndex: number;\n\n // the viewport x and ys of the hovered items\n x: number;\n ys: number[];\n\n tooltip: {\n anchor: DOMRect;\n date: string;\n metrics: {\n color: string;\n label: string;\n value: string;\n }[];\n };\n };\n\n // RenderedChart represents all of the parts of a chart\n // that end up on screen. Every chart has x and y ticks\n // and hover functionality, even though they might be\n // different from chart to chart.\n type RenderedChart = {\n xTicks: XTick[];\n yTicks: YTick[];\n hover: Hover;\n colors: string[];\n lines: (string | null)[];\n circles: Circle[]; //Line fallback for a single point\n areas: (string | null)[];\n bars: Rect[][];\n };\n\n function timeseriesDomain(data: Data) {\n return [Math.min(...data.x), Math.max(...data.x)];\n }\n\n function yDomain(data: Data) {\n const max = Math.max(...data.ys.map(y => Math.max(...y.values)));\n return [0, max == 0 ? 1 : max];\n }\n\n function xRange(dimensions: Dimensions) {\n return [LEFT_PADDING, dimensions.width - RIGHT_PADDING];\n }\n\n function barXRange(dimensions: Dimensions, data: Data) {\n const left = LEFT_PADDING;\n const right = dimensions.width - RIGHT_PADDING;\n const width = right - left;\n const binSize = width / (data.x.length || 1);\n const halfBinSize = binSize / 2;\n const range = [left + halfBinSize, right - halfBinSize];\n return { binSize: Math.min(binSize * 0.7, 80), range };\n }\n\n function yRange(dimensions: Dimensions) {\n return [dimensions.height - BOTTOM_PADDING, TOP_PADDING];\n }\n\n function findNearestIndex(values: number[], input: number) {\n return values.reduce((nearestIndex, value, index) => {\n return Math.abs(value - input) < Math.abs(values[nearestIndex] - input)\n ? index\n : nearestIndex;\n }, 0);\n }\n\n // stack returns a new data where each set of yValues is stacked\n // on top of the previous.\n function stack(data: Data): Data {\n const stacked: Data = {\n ...data,\n ys: data.ys.map(y => ({ label: y.label, values: [] })),\n };\n for (let i = 0; i < data.x.length; i++) {\n let from = 0;\n for (let j = 0; j < data.ys.length; j++) {\n const to = from + data.ys[j].values[i];\n stacked.ys[j].values.push(to);\n from = to;\n }\n }\n return stacked;\n }\n\n // hide strips out hidden y values while retaining the original indices\n // for the remaining visible values\n function hide(data: Data): { data: Data; visibleIndices: number[] } {\n const visibleIndices = data.ys\n .map((y, i) => ({ y, i }))\n .filter(({ y }) => !y.hidden)\n .map(({ i }) => i);\n return {\n data: { ...data, ys: visibleIndices.map(i => data.ys[i]) },\n visibleIndices,\n };\n }\n\n type ValueType = 'count' | 'currency' | 'percentage' | 'days';\n\n export function getPipes(valueType: ValueType) {\n switch (valueType) {\n case 'count': {\n const pipe = new NumberPipe();\n return { pipe, fullPipe: pipe };\n }\n case 'currency':\n return {\n pipe: new SmallCurrencyPipe(),\n fullPipe: new CurrencyPipe('en-us'),\n };\n case 'percentage': {\n const pipe = new PercentagePipe();\n return { pipe, fullPipe: pipe };\n }\n case 'days': {\n const pipe = new DaysPipe();\n return { pipe, fullPipe: pipe };\n }\n }\n }\n\n export const intervals = ['year', 'quarter', 'month', 'week', 'day'] as const;\n export type Interval = (typeof intervals)[number];\n\n export function formatedDate(dateFormat: Interval, date: Date) {\n if (dateFormat == 'quarter') {\n const quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n const year = utcFormat(getTimeIntervalFormat('year'))(date);\n return `Q${quarter} ${year}`;\n }\n const format = getTimeIntervalFormat(dateFormat);\n return utcFormat(format)(date);\n }\n\n export function getTimeIntervalFormat(interval: Interval): string {\n switch (interval) {\n case 'day':\n case 'week':\n return '%m/%d/%Y';\n case 'month':\n case 'quarter':\n return '%b %Y';\n case 'year':\n return '%Y';\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-legend-item',\n templateUrl: './legend-item.component.html',\n styleUrls: ['./legend-item.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LegendItemComponent {\n @Input()\n label: string = '';\n\n @Input()\n colorToken: string = '';\n\n @Input()\n style: LegendItemComponent.Style = 'solid';\n\n @Input()\n visibility: LegendItemComponent.Visibility = 'visible';\n\n @Input()\n iconTooltip?: string;\n\n get backgroundColor(): string {\n return `var(${this.colorToken})`;\n }\n\n @Input()\n clickable: boolean = false;\n\n @Input()\n showCheckWhenClickable: boolean = true;\n\n @Output()\n itemClick = new EventEmitter<MouseEvent>();\n\n isLegendItemClickable(): boolean {\n return this.clickable && this.visibility !== 'locked';\n }\n}\n\nexport namespace LegendItemComponent {\n export const Styles = ['solid', 'striped'] as const;\n export type Style = (typeof Styles)[number];\n\n export const Visibilities = ['visible', 'hidden', 'locked'] as const;\n export type Visibility = (typeof Visibilities)[number];\n}\n","<button\n (click)=\"isLegendItemClickable() ? itemClick.emit($event) : null\"\n [rivTooltip]=\"iconTooltip\"\n type=\"button\"\n [disabled]=\"visibility === 'locked'\"\n [class.clickable]=\"clickable\"\n>\n <i\n *ngIf=\"visibility === 'visible'\"\n [class.striped]=\"style === 'striped'\"\n [style.background-color]=\"backgroundColor\"\n class=\"opacity-hover\"\n >\n <riv-icon\n *ngIf=\"clickable && showCheckWhenClickable\"\n name=\"Check\"\n [size]=\"16\"\n [strokeWidth]=\"3\"\n style=\"color: var(--white-100)\"\n ></riv-icon>\n </i>\n <i\n *ngIf=\"visibility === 'hidden'\"\n class=\"hidden-legend-item opacity-hover\"\n [class.striped]=\"style === 'striped'\"\n [style.border-color]=\"backgroundColor\"\n [style.--background-color-hover]=\"backgroundColor\"\n ></i>\n <riv-icon *ngIf=\"visibility === 'locked'\" name=\"Lock\" [size]=\"16\"></riv-icon>\n\n <span\n *ngIf=\"label\"\n [class.low-contrast]=\"visibility === 'hidden' || visibility === 'locked'\"\n >\n {{ label }}\n </span>\n</button>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { isEqual } from 'lodash';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n map,\n scan,\n startWith,\n Subject,\n} from 'rxjs';\nimport { Chart } from './chart';\n\n@Component({\n selector: 'riv-chart',\n templateUrl: './chart.component.html',\n styleUrls: ['./chart.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartComponent {\n @ViewChild('container') container?: ElementRef;\n @ViewChild('moreTextContainer') moreTextContainer?: ElementRef;\n\n HEIGHT = 300;\n\n width$ = new BehaviorSubject(0);\n set width(w: number) {\n this.width$.next(w);\n }\n get width() {\n return this.width$.value;\n }\n\n config$ = new BehaviorSubject<Chart.Config>(Chart.defaultConfig);\n @Input()\n set config(c: Chart.Config) {\n this.config$.next(c);\n }\n get config() {\n return this.config$.value;\n }\n\n data$ = new BehaviorSubject<Chart.Data>({\n x: [],\n ys: [],\n });\n @Input()\n set data(d: Chart.Data) {\n this.data$.next(d);\n }\n get data() {\n return this.data$.value;\n }\n\n toggleLegend(label: string) {\n this.toggleLegend$.next(label);\n }\n\n toggleLegend$ = new Subject<string>();\n\n // toggledLegend$ is just a set of boolean\n // values for which legends have been toggled.\n // We don't know if those legends where already\n // hidden or not, we just know whether they have\n // been toggled.\n toggledLegends$ = this.toggleLegend$.pipe(\n scan<string, Record<string, boolean>>(\n (acc, value) => ({ ...acc, [value]: !acc[value] }),\n {},\n ),\n startWith<Record<string, boolean>>({}),\n );\n\n drawData$ = combineLatest([\n this.width$,\n this.config$,\n this.data$,\n this.toggledLegends$,\n ]).pipe(\n distinctUntilChanged((prev, current) => isEqual(prev, current)),\n map(([width, config, data, toggledLegends]) => {\n if (width == 0) {\n return null;\n }\n const hiddenData = {\n ...data,\n ys: data.ys.map(y => ({\n ...y,\n // if toggled, flip the hidden boolean\n hidden: toggledLegends[y.label] ? !y.hidden : y.hidden,\n })),\n };\n const viewBox = `0 0 ${width} ${this.HEIGHT}`;\n return {\n viewBox,\n data: hiddenData,\n ...Chart.chart(config, hiddenData, {\n width: width,\n height: this.HEIGHT,\n }),\n };\n }),\n );\n\n empty$ = this.data$.pipe(map(d => d.x.length == 0 || d.ys.length == 0));\n\n hover: ReturnType<Chart.Hover> | null = null;\n\n mousemove($event: MouseEvent, hover: Chart.Hover) {\n const containerEl = this.container?.nativeElement as HTMLElement;\n if (containerEl == null) {\n return;\n }\n const rect = containerEl.getBoundingClientRect();\n this.hover = hover({\n rect,\n x: $event.clientX - rect.left,\n y: $event.clientY - rect.top,\n });\n }\n\n mouseleave($event: MouseEvent) {\n this.hover = null;\n }\n\n @Output()\n chartClicked = new EventEmitter<{\n xIndex: number;\n yIndex: number;\n }>();\n\n click() {\n if (this.hover) {\n this.chartClicked.emit({\n xIndex: this.hover.xIndex,\n yIndex: this.hover.yIndex,\n });\n this.hover = null;\n }\n }\n\n varColor(colors: string[], index: number) {\n return `var(${colors[index % colors.length]})`;\n }\n\n showMoreTooltip = false;\n lockShowMoreTooltip = false;\n\n moreTextWidth = 50;\n baseLegendItemWidth = 40;\n widthPerLetter = 6.5;\n\n firstHiddenLegendItemIndex$ = combineLatest([\n this.width$,\n this.config$,\n this.data$,\n ]).pipe(\n distinctUntilChanged((prev, current) => isEqual(prev, current)),\n map(([width, config, data]) => {\n if (!config.truncateLegend) {\n return data.ys.length;\n }\n let widthRunningTotal = 0;\n for (let i = 0; i < data.ys.length; i++) {\n const indItemWidth =\n this.baseLegendItemWidth +\n data.ys[i].label.length * this.widthPerLetter;\n if (widthRunningTotal + indItemWidth >= width - this.moreTextWidth) {\n return i;\n }\n widthRunningTotal += indItemWidth;\n }\n return data.ys.length;\n }),\n );\n\n moreClick() {\n this.lockShowMoreTooltip = !this.lockShowMoreTooltip;\n }\n\n mouseoverLegend() {\n this.showMoreTooltip = true;\n }\n\n mouseleaveLegend() {\n this.showMoreTooltip = false;\n }\n}\n","<div\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n *ngIf=\"(empty$ | async) === false; else zeroState\"\n>\n <ng-container *ngIf=\"drawData$ | async; let d\">\n <div\n (mousemove)=\"mousemove($event, d.hover)\"\n (mouseleave)=\"mouseleave($event)\"\n (click)=\"click()\"\n #container\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" [attr.viewBox]=\"d.viewBox\">\n <g *ngFor=\"let tick of d.xTicks\" text-anchor=\"middle\">\n <line\n class=\"tick-line\"\n [attr.x1]=\"tick.x\"\n [attr.x2]=\"tick.x\"\n y1=\"0\"\n [attr.y2]=\"HEIGHT - 16\"\n ></line>\n <text class=\"tick-label\" [attr.x]=\"tick.x\" [attr.y]=\"HEIGHT - 4\">\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.yTicks\">\n <line\n class=\"tick-line\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n x1=\"0\"\n [attr.x2]=\"width\"\n ></line>\n <text class=\"tick-label\" [attr.y]=\"tick.y - 4\" [attr.x]=\"0\">\n {{ tick.label }}\n </text>\n </g>\n <g *ngIf=\"!!hover\">\n <line\n class=\"tick-line\"\n [attr.x1]=\"hover.x\"\n [attr.x2]=\"hover.x\"\n y1=\"0\"\n [attr.y2]=\"HEIGHT - 16\"\n stroke-width=\"2\"\n stroke-dasharray=\"4\"\n />\n </g>\n <g *ngFor=\"let bar of d.bars; let i = index\">\n <rect\n *ngFor=\"let rect of bar\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"varColor(d.colors, i)\"\n ></rect>\n </g>\n <g *ngFor=\"let line of d.lines; let i = index\">\n <path\n [attr.d]=\"line\"\n [attr.stroke]=\"varColor(d.colors, i)\"\n fill=\"none\"\n stroke-width=\"2\"\n ></path>\n </g>\n <g *ngFor=\"let lineSinglePointFallback of d.circles; let i = index\">\n <circle\n class=\"marker\"\n [attr.cx]=\"lineSinglePointFallback.cx\"\n [attr.cy]=\"lineSinglePointFallback.cy\"\n r=\"3.5\"\n stroke-width=\"2\"\n [attr.stroke]=\"varColor(d.colors, i)\"\n ></circle>\n </g>\n <g *ngFor=\"let line of d.lines; let i = index\">\n <circle\n class=\"marker\"\n *ngIf=\"\n !!hover && (config.groupedTooltip || i === hover.visibleYIndex)\n \"\n [attr.cx]=\"hover.x\"\n [attr.cy]=\"hover.ys[i]\"\n r=\"3.5\"\n stroke-width=\"2\"\n [attr.stroke]=\"varColor(d.colors, i)\"\n ></circle>\n </g>\n <g *ngFor=\"let area of d.areas; let i = index\">\n <path [attr.d]=\"area\" [attr.fill]=\"varColor(d.colors, i)\"></path>\n </g>\n <g *ngFor=\"let area of d.areas; let i = index\">\n <circle\n class=\"marker\"\n *ngIf=\"\n !!hover && (config.groupedTooltip || i === hover.visibleYIndex)\n \"\n [attr.cx]=\"hover.x\"\n [attr.cy]=\"hover.ys[i]\"\n r=\"3.5\"\n stroke-width=\"2\"\n [attr.stroke]=\"varColor(d.colors, i)\"\n ></circle>\n </g>\n </svg>\n <ng-container *ngIf=\"!!hover\">\n <riv-callout\n *riv-overlay\n [anchor]=\"hover.tooltip.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-row\">\n {{ hover.tooltip.date }}\n </div>\n <div\n class=\"callout-row\"\n *ngFor=\"let metric of hover.tooltip.metrics\"\n >\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.color\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n </div>\n <legend>\n <ng-container *ngIf=\"firstHiddenLegendItemIndex$ | async; let fi\">\n <ng-container *ngFor=\"let item of d.data.ys; let i = index\">\n <riv-legend-item\n *ngIf=\"i < fi\"\n [label]=\"item.label\"\n [visibility]=\"item.hidden ? 'hidden' : 'visible'\"\n [clickable]=\"config.allowLegendToggle\"\n [colorToken]=\"config.colors[i % config.colors.length]\"\n (itemClick)=\"toggleLegend(item.label)\"\n ></riv-legend-item>\n </ng-container>\n <div\n #moreTextContainer\n class=\"more-text-container\"\n (mouseover)=\"mouseoverLegend()\"\n (mouseleave)=\"mouseleaveLegend()\"\n (click)=\"moreClick()\"\n *ngIf=\"fi < d.data.ys.length\"\n >\n <span rivLink class=\"more-text\">\n +\n {{ d.data.ys.length - fi }} more\n </span>\n </div>\n <ng-container *ngIf=\"showMoreTooltip || lockShowMoreTooltip\">\n <riv-callout\n *riv-overlay\n [anchor]=\"moreTextContainer?.nativeElement\"\n [isModal]=\"lockShowMoreTooltip\"\n (close)=\"lockShowMoreTooltip = false\"\n [preferredPosition]=\"'bottom-right'\"\n [theme]=\"'light'\"\n [showCaret]=\"false\"\n >\n <div class=\"legend-tooltip\">\n <ng-container *ngFor=\"let item of d.data.ys; let i = index\">\n <riv-legend-item\n *ngIf=\"i >= fi\"\n [label]=\"item.label\"\n [visibility]=\"item.hidden ? 'hidden' : 'visible'\"\n [clickable]=\"config.allowLegendToggle\"\n [colorToken]=\"config.colors[i % config.colors.length]\"\n (itemClick)=\"toggleLegend(item.label)\"\n ></riv-legend-item>\n </ng-container>\n </div>\n </riv-callout>\n </ng-container>\n </ng-container>\n </legend>\n </ng-container>\n</div>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"config.zeroStateMessage\"></riv-zero-state>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-row]',\n styleUrls: ['./data-table-row.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableRowComponent {\n @Input()\n @HostBinding('class.sub-row')\n public subRow: boolean = false;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n OnInit,\n} from '@angular/core';\nimport { DataTableRowComponent } from './data-table-row.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-cell]',\n styleUrls: ['./data-table-cell.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableCellComponent implements OnInit {\n constructor(private readonly row: DataTableRowComponent) {}\n\n @HostBinding('class.sub-cell')\n public subCell: boolean = false;\n\n ngOnInit(): void {\n this.subCell = this.row.subRow;\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: '[riv-data-table-header-cell]',\n styleUrls: ['./data-table-header-cell.component.css'],\n template: '<ng-content></ng-content>',\n})\nexport class DataTableHeaderCellComponent {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'riv-data-table',\n styleUrls: ['./data-table.component.css'],\n template: '<table><ng-content></ng-content></table>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableComponent {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { arc, pie } from 'd3-shape';\n\n@Component({\n selector: 'riv-donut',\n templateUrl: './donut.component.html',\n styleUrls: ['./donut.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DonutComponent {\n @Input()\n displayLabel: string = '';\n\n @Input()\n displayValue: string = '';\n\n @Input()\n data: DonutComponent.DataPoint[] = [];\n\n @Input()\n displayTooltip?: string;\n\n @Input()\n size: DonutComponent.Size = 'medium';\n\n readonly HEIGHT = 256;\n\n get arcPaths() {\n const outer = (this.HEIGHT / 2) * 0.9;\n const inner = outer - 12;\n const pieArcs = pie<DonutComponent.DataPoint>()\n .sortValues(null)\n .value(d => d.value)(this.data);\n return pieArcs.map(pieArc =>\n arc<DonutComponent.DataPoint>()\n .innerRadius(inner)\n .outerRadius(outer)\n .padAngle(0.013)\n .startAngle(pieArc.startAngle)\n .endAngle(pieArc.endAngle)(pieArc.data),\n );\n }\n\n getFillStyle(idx: number): string {\n return `var(${this.data[idx].colorToken})`;\n }\n\n get empty(): boolean {\n return (\n this.data.length === 0 || this.data.every(point => point.value === 0)\n );\n }\n}\n\nexport namespace DonutComponent {\n export type DataPoint = {\n value: number;\n colorToken: string;\n };\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n}\n","<div *ngIf=\"!empty; else zeroState\" class=\"container\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100%\"\n [attr.height]=\"HEIGHT\"\n viewBox=\"-128 -128 256 256\"\n >\n <path\n *ngFor=\"let path of arcPaths; let i = index\"\n [attr.d]=\"path\"\n [attr.fill]=\"getFillStyle(i)\"\n ></path>\n </svg>\n <div class=\"display\">\n <div class=\"value\" [ngClass]=\"size\" [rivTooltip]=\"displayTooltip\">\n {{ displayValue }}\n </div>\n <div class=\"label\">{{ displayLabel }}</div>\n </div>\n</div>\n\n<ng-template #zeroState>\n <riv-zero-state></riv-zero-state>\n</ng-template>\n","export function aggregateValues(values: number[]): number[] {\n return values.map(\n (v, ix) => v + values.slice(ix + 1).reduce((acc, n) => acc + n, 0),\n );\n}\n\nexport function calcPercentageSteps(values: number[]): number[] {\n return values.flatMap((v, ix) => {\n const next = values[ix + 1];\n return next !== undefined\n ? v === 0\n ? 0\n : [Math.round(100 * (next / v))]\n : [];\n });\n}\n\nexport function calcTrends(\n values: number[],\n previousValues: number[],\n): number[] {\n if (values.length !== previousValues.length) {\n return [];\n }\n return values.map((v, ix) => v - previousValues[ix]);\n}\n\nexport function calcPoints(\n values: number[],\n sectionWidth: number,\n height: number,\n gap: number,\n): [number, number][] {\n const divisor = Math.max(...values) / height;\n const normalizedValues = values.map(\n v => height - (divisor === 0 ? 0 : Math.round(v / divisor)),\n );\n\n // plot the points along the top edge of the graph\n return normalizedValues.slice(1).flatMap((v, ix) => [\n // top left point of current section\n [gap * (ix + 1) + sectionWidth * ix, normalizedValues[ix]],\n // bottom right point of current section\n [gap * (ix + 1) + sectionWidth * (ix + 1), v],\n // top left point of next section, required for small sections under vertical lines\n [gap * (ix + 2) + sectionWidth * (ix + 1), v],\n ]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\n\n@Component({\n selector: 'riv-metric',\n templateUrl: './metric.component.html',\n styleUrls: ['./metric.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MetricComponent {\n @Input()\n label: string = '';\n\n @Input()\n value: string = '';\n\n @Input()\n size: MetricComponent.Size = 'medium';\n\n @Input()\n @HostBinding('class.compact')\n compact: boolean = false;\n\n @Input()\n @HostBinding('class.card')\n card: boolean = false;\n\n @Input()\n help?: string;\n\n @Input()\n align?: MetricComponent.Alignment = 'left';\n\n @Input()\n valueColorToken?: string = '--type-light-high-contrast';\n\n get valueColor(): string {\n return `var(${this.valueColorToken})`;\n }\n}\n\nexport namespace MetricComponent {\n export const Sizes = ['xsmall', 'small', 'medium', 'large'] as const;\n export type Size = (typeof Sizes)[number];\n\n export const Alignments = ['left', 'center', 'right'] as const;\n export type Alignment = (typeof Alignments)[number];\n}\n","<div class=\"label\" [ngClass]=\"align\">\n {{ label }}\n <span *ngIf=\"help\"\n ><riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"12\"></riv-icon>\n </span>\n</div>\n<div class=\"content\" [ngClass]=\"align\">\n <div class=\"value\" [ngClass]=\"size\" [style.color]=\"valueColor\">\n {{ value }}\n </div>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-trend',\n templateUrl: './trend.component.html',\n styleUrls: ['./trend.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TrendComponent {\n @Input()\n label: string = '';\n\n @Input()\n value: number = 0;\n\n @Input()\n successCondition: 'positive' | 'negative' = 'positive';\n\n getClasses() {\n const conditionalClass =\n this.value === 0\n ? ''\n : this.successCondition === 'positive'\n ? this.value > 0\n ? 'success'\n : 'danger'\n : this.value < 0\n ? 'success'\n : 'danger';\n\n return 'trend ' + conditionalClass;\n }\n}\n\nexport namespace TrendComponent {\n export function calculateTrend(\n currentValue: number | null | undefined,\n previousValue: number | null | undefined,\n ): number {\n if (currentValue == null || previousValue == null || previousValue === 0) {\n return 0;\n }\n return currentValue / previousValue - 1;\n }\n\n export function calculatePercentageTrend(\n currentValue: number | null | undefined,\n previousValue: number | null | undefined,\n ): number {\n if (currentValue == null || previousValue == null) {\n return 0;\n }\n return currentValue - previousValue;\n }\n}\n","<span [class]=\"getClasses()\">\n <riv-icon\n class=\"icon\"\n [name]=\"\n value === 0 ? 'ArrowRight' : value > 0 ? 'TrendingUp' : 'TrendingDown'\n \"\n [size]=\"16\"\n ></riv-icon>\n <span>{{ label }}</span>\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\nimport { area } from 'd3-shape';\nimport {\n aggregateValues,\n calcPercentageSteps,\n calcPoints,\n calcTrends,\n} from './funnel-chart.helpers';\n\n@Component({\n selector: 'riv-funnel',\n templateUrl: './funnel-chart.component.html',\n styleUrls: ['./funnel-chart.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FunnelChartComponent implements OnChanges {\n @Input()\n data: FunnelChartComponent.Data[] = [];\n\n @Input()\n isPreAggregated: boolean = false;\n\n @Input()\n graphHeight: number = 200;\n\n @Input()\n graphWidth: number = 1200;\n\n @Input()\n showConverted: boolean = true;\n\n aggregatedValues: number[] = [];\n percentageSteps: number[] = [];\n trends: number[] = [];\n path: string | null = null;\n gapWidth: number = 0;\n sectionWidth: number = 0;\n allZeroes: boolean = true;\n\n ngOnChanges() {\n this.calcValues();\n this.calcTrends();\n this.calcSpace();\n this.createPath();\n }\n\n calcValues() {\n this.aggregatedValues = this.isPreAggregated\n ? this.data.map(d => d.value)\n : aggregateValues(this.data.map(d => d.value));\n\n this.allZeroes = Math.max(...this.aggregatedValues) === 0;\n\n this.percentageSteps = calcPercentageSteps(this.aggregatedValues);\n }\n\n calcTrends() {\n const previousValues = this.data.flatMap(d =>\n d.previousValue !== null ? [d.previousValue] : [],\n );\n\n const aggregatedValues = this.isPreAggregated\n ? previousValues\n : aggregateValues(previousValues);\n\n const previousPercentageSteps = calcPercentageSteps(aggregatedValues);\n\n this.trends = calcTrends(this.percentageSteps, previousPercentageSteps);\n }\n\n calcSpace() {\n this.gapWidth = document.querySelector('.vertical-line')?.clientWidth ?? 2;\n const totalGapSpace = this.percentageSteps.length * this.gapWidth;\n\n this.sectionWidth = Math.round(\n (this.graphWidth - totalGapSpace) / (this.percentageSteps.length || 1),\n );\n }\n\n createPath() {\n const points = calcPoints(\n this.aggregatedValues,\n this.sectionWidth,\n this.graphHeight,\n this.gapWidth,\n );\n\n this.path = area()\n .x(([x, _]) => x)\n .y1(([_, y]) => y)\n .y0(this.graphHeight)(points);\n }\n}\n\nexport namespace FunnelChartComponent {\n export type Data = {\n label: string;\n value: number;\n previousValue: number | null;\n };\n}\n","<div class=\"funnel-chart\">\n <div class=\"header\">\n <!-- allocate space for the header -->\n <riv-metric\n class=\"metric-placeholder\"\n label=\"placeholder\"\n value=\"0\"\n ></riv-metric>\n <!-- center each metric over vertical lines -->\n <riv-metric\n *ngFor=\"let value of aggregatedValues; let ix = index\"\n class=\"metric\"\n [label]=\"data[ix]?.label ?? ''\"\n [value]=\"value.toString()\"\n [style.left.px]=\"ix * sectionWidth + ix * gapWidth\"\n ></riv-metric>\n </div>\n\n <div class=\"chart\">\n <ng-container *ngFor=\"let step of percentageSteps; let ix = index\">\n <div class=\"vertical-line\"></div>\n\n <div>\n <div *ngIf=\"showConverted && !allZeroes\" class=\"step-info\">\n {{ step }}% converted\n <riv-trend\n *ngIf=\"trends[ix] != null\"\n [label]=\"trends[ix]! + '%'\"\n [value]=\"trends[ix]!\"\n ></riv-trend>\n </div>\n\n <!-- allocate space for the graph -->\n <div\n class=\"graph-placeholder\"\n [style.width.px]=\"sectionWidth\"\n [style.height.px]=\"graphHeight\"\n ></div>\n </div>\n </ng-container>\n\n <div class=\"vertical-line\"></div>\n\n <svg\n *ngIf=\"path\"\n class=\"graph\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.width]=\"graphWidth\"\n [attr.height]=\"graphHeight\"\n >\n <linearGradient id=\"gradient\">\n <stop stop-color=\"var(--purp-30)\" offset=\"0%\" />\n <stop stop-color=\"var(--brand)\" offset=\"100%\" />\n </linearGradient>\n <path [attr.d]=\"path\" fill=\"url(#gradient)\"></path>\n </svg>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-issue',\n templateUrl: './issue.component.html',\n styleUrls: ['./issue.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IssueComponent {\n @Input()\n label?: string;\n\n @Input()\n colorToken: string = '';\n\n @Input()\n textColorOverride?: string;\n\n get backgroundColor(): string {\n return `var(${this.colorToken})`;\n }\n\n get textColor(): string {\n return `var(${\n this.textColorOverride\n ? this.textColorOverride\n : '--type-light-high-contrast'\n })`;\n }\n}\n","<i [style.background-color]=\"backgroundColor\"></i>\n<span *ngIf=\"label\" [style.color]=\"textColor\">{{ label }}</span>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'riv-progress',\n templateUrl: './progress.component.html',\n styleUrls: ['./progress.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressComponent {\n @Input()\n value: number = 0;\n\n @Input()\n max: number = 0;\n\n getWidth(): string {\n if (this.max === 0) return '0%';\n return 100 * Math.min(this.value / this.max, 1) + '%';\n }\n}\n","<div class=\"track\">\n <span class=\"value\" [style.width]=\"getWidth()\"></span>\n</div>\n","import { TimeInterval, utcDay, utcMonth, utcWeek, utcYear } from 'd3-time';\n\nexport const intervals = ['year', 'quarter', 'month', 'week', 'day'] as const;\nexport type Interval = (typeof intervals)[number];\n\nexport function getTimeInterval(interval: Interval): TimeInterval {\n switch (interval) {\n case 'day':\n return utcDay;\n case 'week':\n return utcWeek;\n case 'month':\n return utcMonth;\n case 'quarter':\n return utcMonth.every(3)!;\n case 'year':\n return utcYear;\n }\n}\n\nexport function getMinorIntervalFormat(interval: Interval) {\n switch (interval) {\n case 'day':\n case 'week':\n return '%-d';\n case 'month':\n return '%b';\n case 'quarter':\n return 'Q%q';\n case 'year':\n return '%Y';\n }\n}\n\nexport function getMajorInterval(interval: Interval) {\n switch (interval) {\n case 'day':\n case 'week':\n return 'month';\n case 'month':\n case 'quarter':\n case 'year':\n return 'year';\n }\n}\n\nexport function getMajorIntervalFormat(\n interval: ReturnType<typeof getMajorInterval>,\n hasMultipleYears: boolean,\n) {\n switch (interval) {\n case 'year':\n return hasMultipleYears ? '%Y' : '';\n case 'month':\n return hasMultipleYears ? '%b %Y' : '%b';\n }\n}\n\nexport function getIntervalTitle(interval: Interval) {\n switch (interval) {\n case 'year':\n return 'Years';\n case 'quarter':\n return 'Quarters';\n case 'month':\n return 'Months';\n case 'week':\n return 'Weeks';\n case 'day':\n return 'Days';\n }\n}\n","import { StackedColumnComponent } from './stacked-column.component';\n\nexport function getDateRange(\n stacks: StackedColumnComponent.Stack[],\n): [Date, Date] {\n let min = Infinity;\n let max = -Infinity;\n for (const stack of stacks) {\n for (const series of stack.series) {\n for (const { date } of series.data) {\n const value = date.valueOf();\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n }\n return [new Date(min), new Date(max)];\n}\n\nexport function pointReducer(points: StackedColumnComponent.Value[]) {\n return points.reduce((total, { value }) => total + value, 0);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { index } from 'd3-array';\nimport { scaleBand, scaleLinear } from 'd3-scale';\nimport { stack } from 'd3-shape';\nimport { utcFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport {\n Interval,\n getIntervalTitle,\n getMajorInterval,\n getMajorIntervalFormat,\n getMinorIntervalFormat,\n getTimeInterval,\n intervals,\n} from '../intervals';\nimport { LegendItemComponent } from '../legend-item/legend-item.component';\nimport { getDateRange, pointReducer } from './stacked-column.helpers';\n\nconst DEFAULT_INTERVAL: Interval = 'month';\n\ntype IntervalOption = {\n id: Interval;\n title: string;\n};\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-stacked-column',\n templateUrl: './stacked-column.component.html',\n styleUrls: ['./stacked-column.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackedColumnComponent {\n private readonly input$ = new BehaviorSubject<StackedColumnComponent.Stack[]>(\n [],\n );\n @Input()\n public set input(v: StackedColumnComponent.Stack[]) {\n this.input$.next(v);\n }\n public get input(): StackedColumnComponent.Stack[] {\n return this.input$.getValue();\n }\n\n private readonly width$ = new BehaviorSubject<number>(960);\n protected set width(v: number) {\n this.width$.next(v);\n }\n\n @ContentChild(TemplateRef)\n calloutHeaderTemplate!: TemplateRef<{\n $implicit: StackedColumnComponent.CalloutContext;\n }>;\n\n private readonly HEIGHT = 300;\n\n @Input()\n public valueFormatter: (v: number) => string = v => v.toString();\n\n private readonly interval$ = new BehaviorSubject<Interval>(DEFAULT_INTERVAL);\n @Input()\n public set interval(v: Interval) {\n if (v !== this.interval$.getValue()) {\n this.interval$.next(v);\n this.intervalChanged.emit(v);\n }\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @Output()\n intervalChanged = new EventEmitter<Interval>();\n\n @Output()\n stackClicked = new EventEmitter<StackedColumnComponent.StackClicked>();\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<void>;\n\n private readonly COLUMN_WIDTHS = [8, 16, 40, 72] as const;\n private readonly MIN_COLUMN_WIDTH = this.COLUMN_WIDTHS[0];\n\n private readonly maxColumns$ = this.width$.pipe(\n map(width => {\n const innerWidth = width - this.LEFT_OFFSET;\n const columnWidthWithPadding =\n this.MIN_COLUMN_WIDTH + this.COLUMN_PADDING * 2;\n return Math.floor(innerWidth / columnWidthWithPadding);\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n getXStepsInRange(interval: Interval, minDate: Date, maxDate: Date) {\n const timeInterval = getTimeInterval(interval);\n return timeInterval.range(\n timeInterval.floor(minDate),\n timeInterval.floor(timeInterval.offset(maxDate, 1)),\n ).length;\n }\n\n private readonly allowedIntervals$: Observable<Interval[]> = combineLatest([\n this.input$,\n this.maxColumns$,\n ]).pipe(\n map(([input, maxColumns]) => {\n const [minDate, maxDate] = getDateRange(input);\n\n return intervals.filter(interval => {\n const xStepsCount = this.getXStepsInRange(interval, minDate, maxDate);\n return input.length * xStepsCount <= maxColumns;\n });\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly intervalOptions$ = this.allowedIntervals$.pipe(\n map(intervals =>\n intervals.map(\n (interval): IntervalOption => ({\n id: interval,\n title: getIntervalTitle(interval),\n }),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedIntervalOption$ = combineLatest([\n this.interval$,\n this.intervalOptions$,\n ]).pipe(\n map(([interval, options]) => {\n const allowedIntervals = options.map(({ id }) => id as Interval);\n if (!allowedIntervals.includes(interval)) {\n const firstAllowed = allowedIntervals.at(0);\n const lastAllowed = allowedIntervals.at(-1);\n if (!firstAllowed || !lastAllowed) return null;\n\n if (intervals.indexOf(interval) < intervals.indexOf(firstAllowed))\n interval = firstAllowed;\n if (intervals.indexOf(interval) > intervals.indexOf(lastAllowed))\n interval = lastAllowed;\n }\n return options.find(o => o.id === interval) ?? null;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedInterval$ = this.selectedIntervalOption$.pipe(\n map(option => (option ? (option.id as Interval) : DEFAULT_INTERVAL)),\n );\n\n setIntervalOption(option: IntervalOption | null) {\n if (option) this.interval = option.id;\n }\n\n private columnWidth$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n this.width$,\n ]).pipe(\n map(([input, selectedInterval, width]) => {\n const [minDate, maxDate] = getDateRange(input);\n const xStepCount = this.getXStepsInRange(\n selectedInterval,\n minDate,\n maxDate,\n );\n\n const innerWidth = width - this.LEFT_OFFSET;\n const allowedColumnWidths = this.COLUMN_WIDTHS.filter(columnWidth => {\n const columnWidthWithPadding = columnWidth + this.COLUMN_PADDING * 2;\n return (\n innerWidth - input.length * xStepCount * columnWidthWithPadding >= 0\n );\n });\n const columnWidth = allowedColumnWidths.at(-1);\n if (!columnWidth) return 0;\n\n return columnWidth;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedDataWithRanges$: Observable<{\n stacks: StackedColumnComponent.Stack[];\n getRange: (date: number) => { minDate: Date; maxDate: Date };\n }> = combineLatest([this.input$, this.selectedInterval$]).pipe(\n map(([input, interval]) => {\n const rangeMap = new Map<number, Date>();\n const stacks = input.map((stack): StackedColumnComponent.Stack => {\n const timeInterval = getTimeInterval(interval);\n\n const series = stack.series.map(series => {\n const binned = new Map<number, StackedColumnComponent.Value[]>();\n for (const point of series.data) {\n const binKey = timeInterval.floor(point.date).valueOf();\n const maxDate = rangeMap.get(binKey);\n\n if (!maxDate || maxDate < point.date) {\n rangeMap.set(binKey, point.date);\n }\n\n if (!binned.has(binKey)) {\n binned.set(binKey, []);\n }\n const bin = binned.get(binKey)!;\n bin.push(point);\n }\n return {\n ...series,\n data: [...binned.entries()].map(([dateValue, points]) => ({\n date: new Date(dateValue),\n value: pointReducer(points),\n })),\n };\n });\n return {\n ...stack,\n series: series,\n };\n });\n return {\n stacks,\n getRange: (date: number) => {\n return {\n minDate: new Date(date),\n maxDate: rangeMap.get(date)!,\n };\n },\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedData$ = this.binnedDataWithRanges$.pipe(\n map(binnedData => binnedData.stacks),\n );\n\n readonly getRange$ = this.binnedDataWithRanges$.pipe(\n map(binnedData => binnedData.getRange),\n );\n\n readonly LEFT_OFFSET = 48;\n readonly COLUMN_PADDING = 4;\n\n readonly drawData$ = combineLatest([\n this.binnedData$,\n this.width$,\n this.selectedInterval$,\n this.columnWidth$,\n ]).pipe(\n map(([binnedData, width, interval, columnWidth]) => {\n const viewBox = `0 0 ${width} ${this.HEIGHT}`;\n const padding = 16;\n\n const [minDate, maxDate] = getDateRange(binnedData);\n const hasMultipleYears = minDate.getFullYear() < maxDate.getFullYear();\n const xMinorIntervalFormat = getMinorIntervalFormat(interval);\n const minorFormatter = utcFormat(xMinorIntervalFormat);\n const minorTimeInterval = getTimeInterval(interval);\n const xSteps = minorTimeInterval.range(\n minorTimeInterval.floor(minDate),\n minorTimeInterval.floor(minorTimeInterval.offset(maxDate, 1)),\n );\n const xMajorInterval = getMajorInterval(interval);\n const xMajorIntervalFormat = getMajorIntervalFormat(\n xMajorInterval,\n hasMultipleYears,\n );\n const majorFormatter = utcFormat(xMajorIntervalFormat);\n const fullFormatter = utcFormat(\n `${xMinorIntervalFormat} ${xMajorIntervalFormat}`,\n );\n\n const xOuterScale = scaleBand()\n .domain(xSteps.map(date => fullFormatter(date)))\n .range([this.LEFT_OFFSET, width]);\n\n const outerPadding =\n (xOuterScale.bandwidth() -\n (this.COLUMN_PADDING * (binnedData.length - 1) +\n columnWidth * binnedData.length)) /\n 2;\n\n type SeriesPoint = StackedColumnComponent.Value & {\n series: StackedColumnComponent.Series;\n };\n\n const renderInformation = binnedData.map(stackData => {\n /*\n Create an array with every data point + their associated series.\n i.e. Make an backlink for each element to its series.\n */\n const stackedTable = stackData.series.reduce<SeriesPoint[]>(\n (table, s) => [\n ...table,\n ...s.data.map(point => ({\n ...point,\n series: s,\n })),\n ],\n [],\n );\n\n /*\n Maps each of the SeriesPoints based on label.\n Then map each of those maps to a date.\n\n Example:\n If we were indexing the following data:\n * Estimates Complete -> 5 in January, 7 in February\n * Estimates Incomplete -> 3 in January, 3 in February\n We would get an indexed table like the following, (note this is pseudocode):\n 'January': { 'Estimates Complete': 5, 'Estimates Incomplete': 3 }\n 'February': { 'Estimates Complete': 7, 'Estimates Incomplete': 3 }\n */\n const indexedTable: Map<Date, Map<string, SeriesPoint>> = index(\n stackedTable,\n d => d.date,\n d => d.series.label,\n );\n\n /*\n The output of \"stack()\" is an array of arrays of tuples.\n The tuples unnest as [baseline, topline].\n Each \"key\" involved in the stack has an array of tuples relating to it.\n i.e. [ Date 1 Tuple, Date 2 Tuple ]\n All \"key\" arrays are contained in the outer array.\n i.e. [ Key 1 Tuples, Key 2 Tuples]\n\n We select the keys using \".keys()\".\n For our purposes, the keys are the legend elements.\n i.e. If you have two blocks of the same color, they have the same key.\n\n We select the heights of the blocks using \".value()\".\n\n We are going to stack the blocks on top of each other.\n The baseline of the first key tuples are 0.\n The baseline of the second key tuples are the topline of the associated first key tuple.\n\n Example:\n If we were stacking the following data:\n * Estimates Complete -> 5 in January, 7 in February\n * Estimates Incomplete -> 3 in January, 3 in February\n We would get a stack of:\n [ [ [0,5],[0,7] ], [ [5,8],[7,10] ] ]\n */\n const stacked = stack<\n typeof indexedTable extends Map<infer K, infer V> ? [K, V] : never\n >()\n .keys(stackData.series.map(v => v.label))\n .value(([_, group], key) => {\n return group.get(key)!.value;\n })(indexedTable);\n\n return { indexedTable, stacked };\n });\n\n // The domain should be based on the highest value in any stack, on any date.\n let domainMax = 0;\n // For each unique stack,\n renderInformation.forEach(({ stacked, indexedTable }) => {\n // For each date,\n [...indexedTable.values()].forEach((pointMap, i) => {\n // For each series,\n [...pointMap.values()].forEach((_, j) => {\n domainMax = Math.max(domainMax, ...stacked[j][i]);\n });\n });\n });\n if (domainMax === 0) domainMax = 1;\n const yScale = scaleLinear()\n .domain([0, domainMax])\n .range([this.HEIGHT - padding * 2, padding]);\n\n const rects: {\n dateValue: number;\n x: number;\n y: number;\n width: number;\n height: number;\n fill: string;\n striped: boolean;\n seriesPoint: SeriesPoint;\n }[] = [];\n // For each unique stack,\n renderInformation.forEach(({ stacked, indexedTable }, index) => {\n // For each date,\n [...indexedTable.entries()].forEach(([date, pointMap], i) => {\n // For each series,\n [...pointMap.entries()].forEach(([_, seriesPoint], j) => {\n // Get the size of the box we are about to draw.\n const [baseline, topline] = stacked[j][i];\n\n const width = columnWidth;\n const height = yScale(baseline) - yScale(topline);\n const x =\n (xOuterScale(fullFormatter(date)) ?? 0) +\n outerPadding +\n columnWidth * index +\n this.COLUMN_PADDING * index;\n const y = yScale(baseline) - height;\n const fill = `var(${seriesPoint.series.colorToken})`;\n\n rects.push({\n dateValue: date.valueOf(),\n x,\n y,\n width,\n height,\n fill,\n striped: seriesPoint.series.style === 'striped',\n seriesPoint,\n });\n });\n });\n });\n\n const xMinorTicks = xSteps.map(date => ({\n dateValue: date.valueOf(),\n label: minorFormatter(date),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) + xOuterScale.bandwidth() / 2,\n }));\n const xMajorTicks =\n interval !== 'year'\n ? xSteps\n .map(date => ({\n dateValue: date.valueOf(),\n label: majorFormatter(date),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) +\n xOuterScale.bandwidth() / 2,\n }))\n .filter(\n (tick, i, ticks) =>\n i === 0 || tick.label !== ticks[i - 1].label,\n )\n : [];\n\n const yTicks = yScale.ticks(5);\n\n const hoverBandWidth =\n renderInformation.length * columnWidth +\n (renderInformation.length + 1) * this.COLUMN_PADDING;\n const hoverBands = xSteps.map(date => ({\n dateValue: date.valueOf(),\n x:\n (xOuterScale(fullFormatter(date)) ?? 0) +\n (xOuterScale.bandwidth() - hoverBandWidth) / 2,\n y: yScale(domainMax),\n width: hoverBandWidth,\n height: yScale(0) - yScale(domainMax),\n }));\n\n return {\n columnWidth,\n hoverBands,\n rects,\n viewBox,\n xMinorTicks,\n xMajorTicks,\n yScale,\n yTicks,\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly empty$ = this.input$.pipe(\n map(input =>\n input.every(stack =>\n stack.series.every(series => series.data.length === 0),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly hoveredBand$ = new BehaviorSubject<{\n dateValue: number;\n event: MouseEvent;\n } | null>(null);\n\n readonly callout$: Observable<StackedColumnComponent.CalloutContext | null> =\n combineLatest([this.hoveredBand$, this.binnedData$]).pipe(\n map(([hoveredBand, binnedData]) => {\n if (!hoveredBand) return null;\n\n const { target } = hoveredBand.event;\n if (!target) return null;\n const anchor = (<SVGRectElement>target).getBoundingClientRect();\n\n return {\n anchor,\n content: binnedData.map(stack => {\n const seriesPoints = stack.series.map(series => ({\n label: series.label,\n colorToken: series.colorToken,\n style: series.style,\n value:\n series.data.find(\n ({ date }) => date.valueOf() === hoveredBand.dateValue,\n )?.value ?? 0,\n }));\n return {\n title: stack.title,\n total: this.valueFormatter(\n seriesPoints.reduce((acc, point) => point.value + acc, 0),\n ),\n series: seriesPoints.map(point => ({\n ...point,\n formattedValue: this.valueFormatter(point.value),\n })),\n };\n }),\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace StackedColumnComponent {\n export type Value = {\n date: Date;\n value: number;\n };\n\n export type Series = {\n label: string;\n data: Value[];\n colorToken: string;\n style: LegendItemComponent.Style;\n };\n\n export type Stack = {\n title?: string;\n series: Series[];\n };\n\n export type StackClicked = {\n minDate: Date;\n maxDate: Date;\n };\n\n export type CalloutContext = {\n anchor: DOMRect;\n content: {\n title?: string;\n total: string;\n series: {\n label: string;\n colorToken: string;\n style: LegendItemComponent.Style;\n value: number;\n formattedValue: string;\n }[];\n }[];\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let d\"\n [attr.viewBox]=\"d.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"d.columnWidth\"\n [attr.height]=\"d.columnWidth\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n x1=\"0\"\n [attr.y1]=\"d.columnWidth\"\n [attr.x2]=\"d.columnWidth\"\n y2=\"0\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let tick of d.xMinorTicks\">\n <rect\n class=\"tick-background\"\n [class.focused]=\"(hoveredBand$ | async)?.dateValue === tick.dateValue\"\n [attr.x]=\"tick.x - 20\"\n [attr.y]=\"d.yScale(0) + 3\"\n width=\"40\"\n height=\"12\"\n rx=\"2\"\n ></rect>\n <text\n class=\"tick-label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"d.yScale(0) + 12\"\n text-anchor=\"middle\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.xMajorTicks\">\n <text\n class=\"tick-label\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"d.yScale(0) + 24\"\n text-anchor=\"middle\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.yTicks\">\n <rect\n class=\"tick\"\n x=\"0\"\n [attr.y]=\"d.yScale(tick)\"\n width=\"100%\"\n height=\"1\"\n ></rect>\n <text class=\"tick-label\" x=\"0\" [attr.y]=\"d.yScale(tick)\" dy=\"-4\">\n {{ valueFormatter(tick) }}\n </text>\n </g>\n <g *ngFor=\"let rect of d.rects\">\n <rect\n class=\"column\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"rect.fill\"\n [class.blurred]=\"\n (hoveredBand$ | async) !== null &&\n (hoveredBand$ | async)?.dateValue !== rect.dateValue\n \"\n ></rect>\n <rect\n *ngIf=\"rect.striped\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"url(#stripes)\"\n ></rect>\n </g>\n <ng-container *ngIf=\"getRange$ | async; let getRange\">\n <rect\n *ngFor=\"let rect of d.hoverBands\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"transparent\"\n (mouseenter)=\"\n hoveredBand$.next({ dateValue: rect.dateValue, event: $event })\n \"\n (mouseleave)=\"hoveredBand$.next(null)\"\n (click)=\"\n stackClicked.emit(getRange(rect.dateValue)); hoveredBand$.next(null)\n \"\n ></rect>\n </ng-container>\n </svg>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-overlay\n [anchor]=\"callout.anchor\"\n [theme]=\"'light'\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [allowedPositions]=\"[\n 'center-right',\n 'center-left',\n 'top-center',\n 'bottom-center'\n ]\"\n >\n <div class=\"callout-content\">\n <ng-container\n [ngTemplateOutlet]=\"calloutHeaderTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: callout }\"\n ></ng-container>\n <div class=\"callout-stack\" *ngFor=\"let stack of callout.content\">\n <div *ngIf=\"stack.title; let title\" class=\"callout-row\">\n <span class=\"series-label\">{{ title }}</span>\n <span>{{ stack.total }}</span>\n </div>\n <div *ngFor=\"let series of stack.series\" class=\"callout-row\">\n <span class=\"series-label\">\n <riv-legend-item\n [colorToken]=\"series.colorToken\"\n [style]=\"series.style\"\n ></riv-legend-item>\n <span>{{ series.label }}</span>\n </span>\n <span>{{ series.formattedValue }}</span>\n </div>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state></riv-zero-state>\n</ng-template>\n\n<ng-template #controls>\n <riv-simple-select\n [optionGroups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-simple-select>\n</ng-template>\n","import { InternSet, union } from 'd3-array';\nimport { ScaleLinear } from 'd3-scale';\nimport { LegendItemComponent } from '../legend-item/legend-item.component';\nimport { StackedRowComponent } from './stacked-row.component';\n\n// A row element with a baseline, topline, and a reference to the stack it belongs to\ntype StackedRowElement = StackedRowComponent.RowElement & {\n baseline: number;\n topline: number;\n};\n\n// The data about a rectangle we display on screen\nexport type RowRectangle = {\n x: number;\n y: number;\n width: number;\n height: number;\n fill: string;\n striped: boolean;\n rowName: string;\n stackedRowElement: StackedRowElement;\n stackIndex: number;\n};\n\n// The data about a row label we display on screen\nexport type RowLabel = {\n x: number;\n y: number;\n label: string;\n};\n\n// The data we are displaying in this component\nexport type StackedRowDrawData = {\n legendItems: {\n label: string;\n colorToken: string;\n style?: LegendItemComponent.Style;\n }[];\n rowHeight: number;\n rects: RowRectangle[];\n rowNames: RowLabel[];\n rowTotals: RowLabel[];\n viewBox: string;\n xScale: ScaleLinear<number, number, never>;\n xTicks: number[];\n};\n\n// Everything that describes a row we will display\nexport type RowDisplayInfo = {\n rowName: string;\n elementsButStacked: StackedRowElement[];\n rowTotal: number;\n stackIndex: number;\n};\n\n// Get a ordered+unique list of keys from the row elements\nexport function getKeyOrder(\n rowStacks: StackedRowComponent.RowStack[],\n): InternSet<string> {\n const allRowElements: StackedRowComponent.RowElement[] = [];\n for (const rowStack of rowStacks) {\n allRowElements.push(...rowStack.data);\n }\n const orderedKeys: InternSet<string> = union([\n ...allRowElements.map(rowElement => rowElement.label),\n ]);\n return orderedKeys;\n}\n\n// Get a list of the legend items we should show\nexport function getLegendItems(\n rowsForDisplay: RowDisplayInfo[],\n keysInOrder: InternSet<string>,\n): {\n label: string;\n colorToken: string;\n style?: LegendItemComponent.Style;\n}[] {\n const legendItemArray: ReturnType<typeof getLegendItems> = [];\n for (const rowForDisplay of rowsForDisplay) {\n for (const key of keysInOrder) {\n const elementMatchingKey: StackedRowElement | undefined =\n rowForDisplay.elementsButStacked.find(element => element.label == key);\n if (\n elementMatchingKey &&\n elementMatchingKey.value > 0 &&\n !legendItemArray.find(item => item.label == key)\n ) {\n legendItemArray.push({\n label: elementMatchingKey.label,\n colorToken: elementMatchingKey.colorToken,\n style: elementMatchingKey.style,\n });\n }\n }\n }\n return legendItemArray;\n}\n\n// Make sure we have input in a standard format.\nexport function standardizeRowStacks(\n rowStacks: StackedRowComponent.RowStack[],\n keysInOrder: InternSet<string>,\n): StackedRowComponent.RowStack[] {\n const standardizedRows: StackedRowComponent.RowStack[] = [];\n for (const rowStack of rowStacks) {\n const standardizedData: StackedRowComponent.RowElement[] = [];\n for (const key of keysInOrder) {\n const elementMatchingKey: StackedRowComponent.RowElement | undefined =\n rowStack.data.find(element => element.label == key);\n if (elementMatchingKey) {\n standardizedData.push({\n ...elementMatchingKey,\n value: Math.abs(elementMatchingKey.value),\n });\n }\n }\n standardizedRows.push({\n rowName: rowStack.rowName,\n data: standardizedData,\n });\n }\n return standardizedRows;\n}\n\n// Stacks the elements and creates the baselines and toplines\nexport function getRowDisplayInfo(\n rowStack: StackedRowComponent.RowStack,\n index: number,\n): RowDisplayInfo {\n const elementsButStacked: StackedRowElement[] = [];\n let currentBaseline: number = 0;\n let currentTopline: number = 0;\n\n for (const currentElement of rowStack.data) {\n currentTopline += currentElement.value ?? 0;\n\n elementsButStacked.push({\n ...currentElement,\n baseline: currentBaseline,\n topline: currentTopline,\n });\n\n currentBaseline = currentTopline;\n }\n\n return {\n rowName: rowStack.rowName,\n elementsButStacked: elementsButStacked,\n rowTotal: currentTopline,\n stackIndex: index,\n };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { InternSet } from 'd3-array';\nimport { ScaleLinear, scaleLinear } from 'd3-scale';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport { LegendItemComponent } from '../legend-item/legend-item.component';\nimport {\n RowDisplayInfo,\n RowLabel,\n RowRectangle,\n StackedRowDrawData,\n getKeyOrder,\n getLegendItems,\n getRowDisplayInfo,\n standardizeRowStacks,\n} from './stacked-row.helpers';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-stacked-row',\n templateUrl: './stacked-row.component.html',\n styleUrls: ['./stacked-row.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StackedRowComponent {\n // This is the list of rows we will display, in the order we will display them.\n private readonly input$ = new BehaviorSubject<StackedRowComponent.RowStack[]>(\n [],\n );\n @Input()\n public set input(v: StackedRowComponent.RowStack[]) {\n this.input$.next(v);\n }\n public get input(): StackedRowComponent.RowStack[] {\n return this.input$.getValue();\n }\n\n // Width helps determine the size of the viewbox this graph is displaying in.\n private readonly width$ = new BehaviorSubject<number>(0);\n protected set width(v: number) {\n this.width$.next(v);\n }\n\n // ValueFormatter determines how we style the values in a metric and the x-axis\n @Input()\n public valueFormatter: (v: number) => string = v => v.toString();\n\n private readonly zeroStateMessage$ = new BehaviorSubject<string>(\n 'No data to display.',\n );\n @Input()\n public set zeroStateMessage(v: string) {\n this.zeroStateMessage$.next(v);\n }\n public get zeroStateMessage(): string {\n return this.zeroStateMessage$.getValue();\n }\n\n @ContentChild(TemplateRef)\n calloutHeaderTemplate!: TemplateRef<{\n $implicit: StackedRowComponent.CalloutContext;\n }>;\n\n @Output()\n stackClicked = new EventEmitter<StackedRowComponent.StackClicked>();\n\n private readonly chartAndRowHeights$ = this.input$.pipe(\n map(input => {\n const heightWithoutRows =\n input.length * this.SECTION_PADDING.BETWEEN_ROW +\n this.SECTION_PADDING.OUTER_TOP_BOTTOM * 2 +\n this.SECTION_HEIGHTS.X_AXIS_LABEL;\n\n // The combined height of all rows at their min/max\n const minHeight =\n input.length * this.RECTANGLE_HEIGHTS.MIN_HEIGHT + heightWithoutRows;\n const maxHeight =\n input.length * this.RECTANGLE_HEIGHTS.MAX_HEIGHT + heightWithoutRows;\n\n // If the max-sized rows don't need the target size, shrink the chart\n if (maxHeight < this.TARGET_HEIGHT)\n return {\n chartHeight: maxHeight,\n rowHeight: this.RECTANGLE_HEIGHTS.MAX_HEIGHT,\n };\n // If the min-sized rows need more than the target size, grow the chart\n if (minHeight > this.TARGET_HEIGHT)\n return {\n chartHeight: minHeight,\n rowHeight: this.RECTANGLE_HEIGHTS.MIN_HEIGHT,\n };\n // Otherwise shrink the rows to fit the target size\n return {\n chartHeight: this.TARGET_HEIGHT,\n rowHeight: (this.TARGET_HEIGHT - heightWithoutRows) / input.length,\n };\n }),\n );\n\n /*\n The layout we are shooting for is:\n\n | X Axis Labels |\n Row Name | Rectangles | Totals\n */\n readonly TARGET_HEIGHT = 300;\n\n readonly RECTANGLE_HEIGHTS = {\n MIN_HEIGHT: 12, // Sets the smallest size a row can shrink to\n MAX_HEIGHT: 42, // Sets the largest size a row can expand to\n };\n\n readonly LABEL_HEIGHT = 8;\n\n readonly SECTION_HEIGHTS = {\n // Space reserved for the x-axis labels\n X_AXIS_LABEL: 14,\n };\n\n readonly SECTION_WIDTHS = {\n // Space reserved for the name at the start of the row\n ROW_NAME: 100,\n // Space reserved for the totals at the end of the row\n ROW_TOTAL_LABEL: 72,\n };\n\n readonly SECTION_PADDING = {\n // Padding between each edge of the viewbox and the content\n OUTER_TOP_BOTTOM: 4,\n OUTER_LEFT_RIGHT: 4,\n // Padding between the bottom of one row and the top of the next row\n BETWEEN_ROW: 4,\n // Space between the row and the top of a rectangle in that row\n RECTANGLE_TO_ROW: 6,\n };\n\n // The number of X-axis segments to create, with labels at the start of each segment.\n readonly X_TICK_COUNT_MAX = 8;\n readonly X_TICK_COUNT_MIN = 3;\n readonly X_TICK_MAX_WIDTH = 900;\n readonly X_TICK_MIN_WIDTH = 400;\n\n // Zero on the X axis is after the left padding and the row name.\n locationOfXAxisZero() {\n return this.SECTION_PADDING.OUTER_LEFT_RIGHT + this.SECTION_WIDTHS.ROW_NAME;\n }\n // The end of the X axis is right before the row total and the right padding.\n locationOfXAxisEnd(width: number) {\n const spaceOnRight: number =\n this.SECTION_WIDTHS.ROW_TOTAL_LABEL +\n this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n return width - spaceOnRight;\n }\n // The y-index of the x-axis ticks\n locationOfXAxisTick() {\n return (\n this.SECTION_PADDING.OUTER_TOP_BOTTOM + this.SECTION_HEIGHTS.X_AXIS_LABEL\n );\n }\n // The y-index of the top of the current row\n getTopOfRow(rowIndex: number, rowHeight: number) {\n const spaceAboveRows: number =\n this.SECTION_PADDING.OUTER_TOP_BOTTOM + this.SECTION_HEIGHTS.X_AXIS_LABEL;\n\n const aboveRows: number = rowIndex * rowHeight;\n const aboveRowPaddings: number =\n rowIndex * this.SECTION_PADDING.BETWEEN_ROW;\n const allAboveRows: number = aboveRows + aboveRowPaddings;\n\n return spaceAboveRows + allAboveRows;\n }\n\n // Calculate all the values we need for displaying the graph on screen.\n getDrawnData(\n rowStacks: StackedRowComponent.RowStack[],\n width: number,\n chartHeight: number,\n rowHeight: number,\n ) {\n if (rowStacks.length == 0) {\n return null;\n }\n const viewBox = `0 0 ${width} ${chartHeight}`;\n\n const keysInOrder: InternSet<string> = getKeyOrder(rowStacks);\n const standardizedRows: StackedRowComponent.RowStack[] =\n standardizeRowStacks(rowStacks, keysInOrder);\n const rowsForDisplay: RowDisplayInfo[] = standardizedRows.map(\n (stackData, i) => {\n return getRowDisplayInfo(stackData, i);\n },\n );\n\n // The maximum value of the domain should be the highest total value from the rows.\n const domainMax = Math.max(0, ...rowsForDisplay.map(row => row.rowTotal));\n const xScale: ScaleLinear<number, number, never> = scaleLinear()\n .domain([0, domainMax])\n .range([this.locationOfXAxisZero(), this.locationOfXAxisEnd(width)]);\n\n // Setup a linear scale for tick count based on width\n const tickScale = scaleLinear()\n .domain([this.X_TICK_MIN_WIDTH, this.X_TICK_MAX_WIDTH])\n .range([this.X_TICK_COUNT_MIN, this.X_TICK_COUNT_MAX])\n .clamp(true); // Ensures the scale does not go beyond the defined range\n\n const xtickCountAdjusted = Math.round(tickScale(width));\n const xTicks = xScale.ticks(xtickCountAdjusted);\n\n const rects: RowRectangle[] = this.createRectanglesFromRows(\n rowsForDisplay,\n xScale,\n rowHeight,\n );\n\n const rowNamesToDraw: RowLabel[] = this.getRowNamesToDraw(\n rowsForDisplay,\n rowHeight,\n );\n const rowTotalsToDraw: RowLabel[] = this.getRowTotalsToDraw(\n rowsForDisplay,\n width,\n rowHeight,\n );\n\n const legendItems = getLegendItems(rowsForDisplay, keysInOrder);\n\n return {\n legendItems: legendItems,\n rowHeight: rowHeight,\n rects: rects,\n rowNames: rowNamesToDraw,\n rowTotals: rowTotalsToDraw,\n viewBox: viewBox,\n xScale: xScale,\n xTicks: xTicks,\n };\n }\n\n // Get data for all the rectangles for all the rows\n createRectanglesFromRows(\n displayRows: RowDisplayInfo[],\n xScale: ScaleLinear<number, number, never>,\n rowHeight: number,\n ): RowRectangle[] {\n const rectangles: RowRectangle[] = [];\n displayRows.forEach((currentRow, rowIndex) => {\n currentRow.elementsButStacked.forEach((currentElement, _) => {\n const topOfRow: number = this.getTopOfRow(rowIndex, rowHeight);\n\n const rectangleWidth: number =\n xScale(currentElement.topline) - xScale(currentElement.baseline);\n const rectangleHeight: number = rowHeight;\n\n const rectangleX: number = xScale(currentElement.baseline);\n const rectangleY: number =\n topOfRow + this.SECTION_PADDING.RECTANGLE_TO_ROW;\n\n const fill = `var(${currentElement.colorToken})`;\n\n rectangles.push({\n x: rectangleX,\n y: rectangleY,\n width: Math.max(rectangleWidth, 0),\n height: rectangleHeight,\n fill: fill,\n striped: currentElement.style === 'striped',\n rowName: currentRow.rowName,\n stackedRowElement: currentElement,\n stackIndex: currentRow.stackIndex,\n });\n });\n });\n return rectangles;\n }\n\n // Get data on the row names we are drawing\n getRowNamesToDraw(\n displayRows: RowDisplayInfo[],\n rowHeight: number,\n ): RowLabel[] {\n return displayRows.map((row, rowIndex) => {\n const rowLabelX = this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n // The row name looks right if its base is at the base of the associated rectangle\n const rowLabelY =\n this.getTopOfRow(rowIndex, rowHeight) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.LABEL_HEIGHT / 2 +\n rowHeight / 2;\n\n return {\n label: row.rowName,\n x: rowLabelX,\n y: rowLabelY,\n };\n });\n }\n\n // Get data on the row totals we are drawing\n getRowTotalsToDraw(\n displayRows: RowDisplayInfo[],\n width: number,\n rowHeight: number,\n ): RowLabel[] {\n return displayRows.map((row, rowIndex) => {\n const rowLabelX = width - this.SECTION_PADDING.OUTER_LEFT_RIGHT;\n // The row totals looks right if its base is at the base of the associated rectangle\n const rowLabelY =\n this.getTopOfRow(rowIndex, rowHeight) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.LABEL_HEIGHT / 2 +\n rowHeight / 2;\n\n return {\n label: this.valueFormatter(row.rowTotal),\n x: rowLabelX,\n y: rowLabelY,\n };\n });\n }\n\n readonly drawData$: Observable<StackedRowDrawData | null> = combineLatest([\n this.input$,\n this.width$,\n this.chartAndRowHeights$,\n ]).pipe(\n map(([input, width, height]) => {\n return this.getDrawnData(\n input,\n width,\n height.chartHeight,\n height.rowHeight,\n );\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n // Lets us know whether to display the zero data state\n readonly empty$ = this.input$.pipe(\n map(input => input.every(stack => stack.data.length === 0)),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n // What rectangle we are currently hovering over\n readonly hoveredRectangle$ = new BehaviorSubject<{\n rectangle: RowRectangle;\n event: MouseEvent;\n } | null>(null);\n\n // What band we are currently hovering over\n readonly hoveredBand$ = new BehaviorSubject<{\n rowName: string;\n event: MouseEvent;\n } | null>(null);\n\n // Create the metric to display based on the currently hovered rectangle\n readonly callout$ = combineLatest([this.hoveredBand$, this.drawData$]).pipe(\n map(([hoveredBand, drawData]) => {\n if (!hoveredBand || !drawData) return null;\n\n const { target } = hoveredBand.event;\n if (!target) return null;\n const anchor = (<SVGRectElement>target).getBoundingClientRect();\n\n type Metric = { label: string; value: string; colorToken: string };\n const metrics: Metric[] = drawData.rects\n .filter(rect => rect.rowName === hoveredBand.rowName)\n .map(rect => ({\n rect,\n label: rect.stackedRowElement.label,\n value: this.valueFormatter(rect.stackedRowElement.value),\n colorToken: rect.stackedRowElement.colorToken,\n }));\n\n return { anchor, metrics };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace StackedRowComponent {\n // A specifically colored section of one row.\n export type RowElement = {\n label: string; // Legend element name\n value: number;\n colorToken: string;\n style?: LegendItemComponent.Style;\n };\n // The input that determines one row.\n export type RowStack = {\n rowName: string;\n data: RowElement[];\n };\n\n export type StackClicked = {\n stackIndex: number;\n };\n\n export type CalloutContext = {\n anchor: DOMRect;\n metrics: { label: string; value: string; colorToken: string }[];\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let draw\"\n [attr.viewBox]=\"draw.viewBox\"\n >\n <defs>\n <pattern\n id=\"stripes\"\n x=\"0\"\n y=\"0\"\n [attr.width]=\"draw.rowHeight\"\n [attr.height]=\"draw.rowHeight\"\n patternUnits=\"userSpaceOnUse\"\n >\n <line\n [attr.x1]=\"0\"\n [attr.y1]=\"0\"\n [attr.x2]=\"draw.rowHeight\"\n [attr.y2]=\"draw.rowHeight\"\n stroke=\"var(--white-100)\"\n stroke-width=\"1\"\n ></line>\n </pattern>\n </defs>\n <g *ngFor=\"let rowNameToDraw of draw.rowNames\">\n <text\n rivSVGTextTruncate\n [text]=\"rowNameToDraw.label\"\n [width]=\"SECTION_WIDTHS.ROW_NAME\"\n class=\"row-title\"\n [attr.x]=\"rowNameToDraw.x\"\n [attr.y]=\"rowNameToDraw.y\"\n ></text>\n </g>\n <g *ngFor=\"let tick of draw.xTicks\">\n <rect\n class=\"tick\"\n [attr.x]=\"draw.xScale(tick)\"\n y=\"0\"\n width=\"1\"\n height=\"100%\"\n ></rect>\n <text\n class=\"tick-label\"\n [attr.x]=\"draw.xScale(tick)\"\n [attr.y]=\"locationOfXAxisTick()\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ valueFormatter(tick) }}\n </text>\n </g>\n <g\n *ngFor=\"let rect of draw.rects\"\n (mouseenter)=\"hoveredBand$.next({ rowName: rect.rowName, event: $event })\"\n (mouseleave)=\"hoveredBand$.next(null)\"\n (click)=\"\n stackClicked.emit({ stackIndex: rect.stackIndex });\n hoveredBand$.next(null)\n \"\n >\n <rect\n class=\"row\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n [attr.fill]=\"rect.fill\"\n [class.blurred]=\"\n (hoveredBand$ | async) !== null &&\n (hoveredBand$ | async)?.rowName !== rect.rowName\n \"\n ></rect>\n <rect\n *ngIf=\"rect.striped\"\n [attr.x]=\"rect.x\"\n [attr.y]=\"rect.y\"\n [attr.width]=\"rect.width\"\n [attr.height]=\"rect.height\"\n fill=\"url(#stripes)\"\n ></rect>\n </g>\n <g *ngFor=\"let rowTotalToDraw of draw.rowTotals\">\n <text\n class=\"row-total\"\n [attr.x]=\"rowTotalToDraw.x\"\n [attr.y]=\"rowTotalToDraw.y\"\n text-anchor=\"end\"\n >\n {{ rowTotalToDraw.label }}\n </text>\n </g>\n </svg>\n <legend *ngIf=\"drawData$ | async; let draw\">\n <riv-legend-item\n *ngFor=\"let item of draw.legendItems\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [style]=\"item.style ? item.style : 'solid'\"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-overlay\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'bottom-center'\"\n [allowedPositions]=\"[\n 'center-right',\n 'center-left',\n 'top-center',\n 'bottom-center'\n ]\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <ng-container\n [ngTemplateOutlet]=\"calloutHeaderTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: callout }\"\n ></ng-container>\n <div *ngFor=\"let metric of callout.metrics\" class=\"callout-row\">\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.colorToken\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n","import { ScaleLinear } from 'd3-scale';\nimport { TimeSeriesComponent } from './time-series.component';\n\ntype XTick = { value: number; label: string };\n\nexport type Marker = TimeSeriesComponent.DataPoint & { x: number; y: number };\n\ntype YDrawData = TimeSeriesComponent.YConfig & {\n series: (TimeSeriesComponent.Series & {\n path: string | null;\n stroke: string;\n markers: Marker[];\n })[];\n yMax: number;\n yMin: number;\n yScale: ScaleLinear<number, number, never>;\n yTicks: number[];\n};\n\nexport type DrawData = {\n viewBox: string;\n x: {\n xScale: ScaleLinear<number, number, never>;\n xMinorTicks: XTick[];\n xMajorTicks: XTick[];\n xMax: Date;\n };\n y1: YDrawData;\n y2?: YDrawData;\n};\n\nexport function getDateRange(\n configs: TimeSeriesComponent.YConfig[],\n): [Date, Date] {\n let min = Infinity;\n let max = -Infinity;\n for (const config of configs) {\n for (const series of config.series) {\n for (const { date } of series.data) {\n const value = date.valueOf();\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n }\n return [new Date(min), new Date(max)];\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { scaleLinear } from 'd3-scale';\nimport { line } from 'd3-shape';\nimport { utcDay } from 'd3-time';\nimport { utcFormat } from 'd3-time-format';\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from 'rxjs';\nimport { NumberPipe } from '../../format/pipes/number.pipe';\nimport {\n Interval,\n getIntervalTitle,\n getMajorInterval,\n getMajorIntervalFormat,\n getMinorIntervalFormat,\n getTimeInterval,\n intervals,\n} from '../intervals';\nimport { DrawData, Marker, getDateRange } from './time-series.helpers';\n\nconst DEFAULT_INTERVAL: Interval = 'day';\n\ntype IntervalOption = {\n id: string;\n title: string;\n};\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS. See commit e238c2d.\n// https://www.notion.so/rivet/Resolve-TODOs-after-Angular-upgrade-1f2667eb2a3180b79f6ad92a7e576f08\n@Component({\n selector: 'riv-time-series',\n templateUrl: './time-series.component.html',\n styleUrls: ['./time-series.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TimeSeriesComponent {\n private readonly input$ =\n new BehaviorSubject<TimeSeriesComponent.TimeSeriesInput>([\n {\n pointReducer: points =>\n points.reduce((total, { value }) => total + value, 0),\n valueFormatter: v => new NumberPipe().transform(v) ?? '',\n series: [],\n },\n ]);\n @Input()\n public set input(v: TimeSeriesComponent.TimeSeriesInput) {\n this.input$.next(v);\n }\n public get input(): TimeSeriesComponent.TimeSeriesInput {\n return this.input$.getValue();\n }\n\n private readonly width$ = new BehaviorSubject<number>(0);\n protected set width(v: number) {\n this.width$.next(v);\n }\n protected get width() {\n return this.width$.getValue();\n }\n\n readonly HEIGHT = 300;\n\n private readonly zeroStateMessage$ = new BehaviorSubject<string>(\n 'No data to display.',\n );\n @Input()\n public set zeroStateMessage(v: string) {\n this.zeroStateMessage$.next(v);\n }\n public get zeroStateMessage(): string {\n return this.zeroStateMessage$.getValue();\n }\n\n readonly BOTTOM_OFFSET = 24;\n readonly LEFT_RIGHT_OFFSET = 48;\n readonly TOP_PADDING = 16;\n readonly LEFT_RIGHT_PADDING = 8;\n readonly BOTTOM_PADDING = 8;\n readonly Y_TICK_COUNT = 5;\n readonly POINT_RADIUS = 3.5;\n\n readonly dateRange$ = this.input$.pipe(\n map(getDateRange),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n private readonly interval$ = new BehaviorSubject<Interval>(DEFAULT_INTERVAL);\n @Input()\n public set interval(v: Interval) {\n if (v !== this.interval$.getValue()) {\n this.interval$.next(v);\n this.intervalChanged.emit(v);\n }\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @Output()\n intervalChanged = new EventEmitter<Interval>();\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<void>;\n\n private readonly allowLegendToggle$ = new BehaviorSubject<boolean>(false);\n @Input()\n public set allowLegendToggle(v: boolean) {\n this.allowLegendToggle$.next(v);\n }\n public get allowLegendToggle(): boolean {\n return this.allowLegendToggle$.getValue();\n }\n\n private readonly groupedTooltips$ = new BehaviorSubject<boolean>(true);\n @Input()\n public set groupedTooltips(v: boolean) {\n this.groupedTooltips$.next(v);\n }\n public get groupedTooltips(): boolean {\n return this.groupedTooltips$.getValue();\n }\n\n @Output()\n markerClicked = new EventEmitter<TimeSeriesComponent.MarkerClicked>();\n\n private readonly maxPoints$ = combineLatest([this.width$, this.input$]).pipe(\n map(([width, input]) => {\n const innerWidth = width - this.LEFT_RIGHT_OFFSET * input.length;\n const pointWithPadding = (this.POINT_RADIUS + 4) * 2;\n return Math.floor(innerWidth / pointWithPadding);\n }),\n );\n private readonly xMinorTickLimit$ = combineLatest([\n this.width$,\n this.input$,\n ]).pipe(\n map(([width, input]) => {\n const innerWidth = width - this.LEFT_RIGHT_OFFSET * input.length;\n const minSizePerTick = 40;\n return Math.round(innerWidth / minSizePerTick);\n }),\n );\n\n private readonly allowedIntervals$: Observable<Interval[]> = combineLatest([\n this.input$,\n this.maxPoints$,\n ]).pipe(\n map(([input, maxPoints]) => {\n const [minDateValue, maxDateValue] = getDateRange(input);\n\n return intervals.filter(interval => {\n const timeInterval = getTimeInterval(interval);\n const numSteps = timeInterval.range(\n timeInterval.floor(minDateValue),\n timeInterval.ceil(utcDay.offset(maxDateValue, 1)),\n ).length;\n\n return numSteps <= maxPoints && numSteps > 1;\n });\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly intervalOptions$ = this.allowedIntervals$.pipe(\n map(intervals =>\n intervals.map(\n (interval): IntervalOption => ({\n id: interval,\n title: getIntervalTitle(interval),\n }),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedIntervalOption$ = combineLatest([\n this.interval$,\n this.intervalOptions$,\n ]).pipe(\n map(([interval, options]) => {\n const allowedIntervals = options.map(({ id }) => id as Interval);\n if (!allowedIntervals.includes(interval)) {\n const firstAllowed = allowedIntervals.at(0);\n const lastAllowed = allowedIntervals.at(-1);\n if (!firstAllowed || !lastAllowed) return null;\n\n if (intervals.indexOf(interval) < intervals.indexOf(firstAllowed))\n interval = firstAllowed;\n if (intervals.indexOf(interval) > intervals.indexOf(lastAllowed))\n interval = lastAllowed;\n }\n return options.find(o => o.id === interval) ?? null;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly selectedInterval$ = this.selectedIntervalOption$.pipe(\n map(option => (option ? (option.id as Interval) : DEFAULT_INTERVAL)),\n );\n\n setIntervalOption(option: IntervalOption | null) {\n if (option) this.interval = option.id as Interval;\n }\n\n readonly toggleVisibility$ =\n new BehaviorSubject<TimeSeriesComponent.ToggleVisibility | null>(null);\n\n readonly binnedDataWithRanges$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n this.toggleVisibility$,\n ]).pipe(\n map(([input, interval, toggleVisibility]) => {\n const rangeMap = new Map<number, Date>();\n const series = input.map((config): TimeSeriesComponent.YConfig => {\n return {\n ...config,\n series: config.series.map((series, i) => {\n const binned = new Map<number, TimeSeriesComponent.DataPoint[]>();\n for (const point of series.data) {\n const binKey = getTimeInterval(interval)\n .floor(point.date)\n .valueOf();\n const maxDate = rangeMap.get(binKey);\n\n if (!maxDate || maxDate < point.date) {\n rangeMap.set(binKey, point.date);\n }\n\n if (!binned.has(binKey)) {\n binned.set(binKey, []);\n }\n binned.get(binKey)!.push(point);\n }\n if (\n this.allowLegendToggle &&\n toggleVisibility &&\n series.label === toggleVisibility.label\n ) {\n series.visibility = toggleVisibility.visibility;\n }\n return {\n ...series,\n data: [...binned.entries()].map(([dateValue, points]) => ({\n date: new Date(dateValue),\n value: config.pointReducer(points, i),\n })),\n };\n }),\n };\n });\n return {\n series,\n getRange: (date: Date) => {\n return {\n minDate: date,\n maxDate: rangeMap.get(date.valueOf())!,\n };\n },\n };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedData$ = this.binnedDataWithRanges$.pipe(\n map(binnedData => binnedData.series),\n );\n\n readonly getRange$ = this.binnedDataWithRanges$.pipe(\n map(binnedData => binnedData.getRange),\n );\n\n readonly binnedDateRange$ = this.binnedData$.pipe(\n map(getDateRange),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n getMarkerClicked(\n range: { minDate: Date; maxDate: Date },\n seriesIndex: number,\n y: 'y1' | 'y2',\n ) {\n return {\n ...range,\n seriesIndex,\n y,\n };\n }\n\n readonly drawData$: Observable<DrawData> = combineLatest([\n this.binnedData$,\n this.binnedDateRange$,\n this.selectedInterval$,\n this.width$,\n this.xMinorTickLimit$,\n ]).pipe(\n map(([binnedData, binnedDateRange, interval, width, xMinorTickLimit]) => {\n const viewBox = `0 0 ${width} ${this.HEIGHT}`;\n\n const xScaleRangeStart = this.LEFT_RIGHT_PADDING + this.LEFT_RIGHT_OFFSET;\n const xScaleRangeEnd =\n width -\n this.LEFT_RIGHT_PADDING * 2 -\n (binnedData.length > 1 ? this.LEFT_RIGHT_OFFSET : 0);\n const xScale = scaleLinear()\n .domain(binnedDateRange)\n .range([xScaleRangeStart, xScaleRangeEnd]);\n const [minDateValue, maxDateValue] = binnedDateRange;\n const hasMultipleYears =\n minDateValue.getFullYear() < maxDateValue.getFullYear();\n const xMinorIntervalFormat = getMinorIntervalFormat(interval);\n const minorFormatter = utcFormat(xMinorIntervalFormat);\n const xMinorTicks = getTimeInterval(interval)\n .range(minDateValue, utcDay.offset(maxDateValue, 1))\n .map(date => ({\n value: utcDay.offset(date, 0).valueOf(),\n label: minorFormatter(date),\n }))\n .filter((_, i, arr) =>\n arr.length > xMinorTickLimit\n ? i % Math.ceil(arr.length / xMinorTickLimit) === 0\n : true,\n );\n const xMajorInterval = getMajorInterval(interval);\n const xMajorIntervalFormat = getMajorIntervalFormat(\n xMajorInterval,\n hasMultipleYears,\n );\n const timeInterval = getTimeInterval(xMajorInterval);\n const tickFloor = timeInterval.floor(minDateValue);\n const tickCeiling = timeInterval.ceil(utcDay.offset(maxDateValue, 1));\n const majorFormatter = utcFormat(xMajorIntervalFormat);\n const xMajorTicks = timeInterval\n .range(tickFloor, tickCeiling)\n .map(tickDate => ({\n label: xMajorInterval === interval ? '' : majorFormatter(tickDate),\n value: tickDate.valueOf(),\n }));\n const x = { xMax: maxDateValue, xScale, xMinorTicks, xMajorTicks };\n\n const [y1, y2] = binnedData.map(config => {\n const visibleSeries = config.series.filter(\n s => s.visibility !== 'hidden',\n );\n const flattenedValues = visibleSeries.reduce<number[]>(\n (values, series) => [\n ...values,\n ...series.data.map(({ value }) => value),\n ],\n [],\n );\n let yMax = config.max ?? Math.max(...flattenedValues, 0);\n const yMin = config.min ?? Math.min(...flattenedValues, 0);\n // RIVET-14605 - if range is [0,0], make it [0,1] instead\n if (yMax == 0 && yMin == 0) {\n yMax = 1;\n }\n const yScale = scaleLinear()\n .domain([yMin, yMax])\n .range([\n this.HEIGHT -\n this.BOTTOM_OFFSET -\n (this.BOTTOM_PADDING + this.TOP_PADDING),\n this.TOP_PADDING,\n ]);\n const yTicks = yScale.ticks(this.Y_TICK_COUNT);\n const series = config.series.map(series => ({\n ...series,\n path: line<TimeSeriesComponent.DataPoint>()\n .x(d => xScale(d.date))\n .y(d => yScale(d.value))(series.data),\n stroke: `var(${series.colorToken})`,\n markers: series.data.map(point => ({\n ...point,\n x: xScale(point.date),\n y: yScale(point.value),\n })),\n }));\n return {\n ...config,\n series,\n yMax,\n yMin,\n yScale,\n yTicks,\n };\n });\n\n // If we have a y2, coerce y1's ticks to be visually equivalent to y2's ticks.\n if (y2?.yTicks) {\n const tickConversionScale = scaleLinear()\n .range(y1.yScale.domain())\n .domain(y2.yScale.domain());\n y1.yTicks = y2.yTicks.map(tickConversionScale);\n }\n\n return { viewBox, x, y1, y2 };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly legend$ = this.binnedData$.pipe(\n map(binnedData =>\n binnedData.reduce<\n {\n label: string;\n colorToken: string;\n visibility: 'visible' | 'hidden';\n }[]\n >(\n (items, config) => [\n ...items,\n ...config.series.map(series => ({\n label: series.label,\n colorToken: series.colorToken,\n visibility: series.visibility ?? 'visible',\n })),\n ],\n [],\n ),\n ),\n );\n\n readonly empty$ = this.binnedData$.pipe(\n map(binnedData =>\n binnedData.every(config =>\n config.series.every(series => series.data.length === 0),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly hoveredMarker$ = new BehaviorSubject<{\n event: MouseEvent;\n marker: Marker;\n seriesIndex: number;\n y: 'y1' | 'y2';\n } | null>(null);\n\n readonly callout$ = combineLatest([\n this.hoveredMarker$,\n this.drawData$,\n this.groupedTooltips$,\n ]).pipe(\n map(([hoveredMarker, drawData, groupedTooltips]) => {\n if (!hoveredMarker) return null;\n\n const { target } = hoveredMarker.event;\n if (!target) return null;\n const markerRect = (<SVGCircleElement>target).getBoundingClientRect();\n const padding = 8;\n const anchor = new DOMRect(\n markerRect.left - padding,\n markerRect.top - padding,\n markerRect.width + padding * 2,\n markerRect.height + padding * 2,\n );\n\n type Metric = { label: string; value: string; colorToken: string };\n const metrics: Metric[] = [];\n\n for (let index = 0; index < drawData.y1.series.length; index++) {\n const series = drawData.y1.series[index];\n const allowed = !groupedTooltips\n ? hoveredMarker.y == 'y1' && hoveredMarker.seriesIndex == index\n : true;\n if (series.visibility !== 'hidden' && allowed) {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\n colorToken: series.colorToken,\n label: series.label,\n value: drawData.y1.valueFormatter(match.value),\n });\n }\n }\n }\n\n if (drawData.y2) {\n for (let index = 0; index < drawData.y2.series.length; index++) {\n const series = drawData.y2.series[index];\n const allowed = !groupedTooltips\n ? hoveredMarker.y == 'y2' && hoveredMarker.seriesIndex == index\n : true;\n if (series.visibility !== 'hidden' && allowed) {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\n colorToken: series.colorToken,\n label: series.label,\n value: drawData.y2.valueFormatter(match.value),\n });\n }\n }\n }\n }\n\n return { anchor, metrics };\n }),\n );\n}\n\nexport namespace TimeSeriesComponent {\n export type Series = {\n label: string;\n colorToken: string;\n data: TimeSeriesComponent.DataPoint[];\n style?: 'solid' | 'dashed';\n visibility?: 'visible' | 'hidden';\n };\n\n export type DataPoint = {\n value: number;\n date: Date;\n };\n\n export type YConfig = {\n pointReducer: (points: DataPoint[], seriesIndex: number) => number;\n valueFormatter: (reducedValue: number) => string;\n series: Series[];\n min?: number;\n max?: number;\n };\n\n export type TimeSeriesInput = [YConfig] | [YConfig, YConfig];\n\n export type ToggleVisibility = {\n label: string;\n visibility: 'hidden' | 'visible';\n };\n\n export type MarkerClicked = {\n minDate: Date;\n maxDate: Date;\n seriesIndex: number;\n y: 'y1' | 'y2';\n };\n}\n","<div\n *ngIf=\"!(empty$ | async); else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let d\"\n [attr.viewBox]=\"d.viewBox\"\n >\n <g *ngFor=\"let tick of d.x.xMajorTicks\">\n <rect\n class=\"tick\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n y=\"0\"\n width=\"1\"\n [attr.height]=\"d.y1.yScale(d.y1.yMin) + BOTTOM_OFFSET\"\n ></rect>\n <text\n *ngIf=\"d.x.xScale(tick.value) >= 0\"\n class=\"x-major-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.x.xMinorTicks\">\n <text\n class=\"x-minor-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n text-anchor=\"middle\"\n dominant-baseline=\"hanging\"\n dy=\"8\"\n >\n {{ tick.label }}\n <title>{{ tick.value | date }}</title>\n </text>\n </g>\n <g *ngFor=\"let tick of d.y1.yTicks\">\n <rect\n class=\"tick\"\n x=\"0\"\n [attr.y]=\"d.y1.yScale(tick)\"\n width=\"100%\"\n height=\"1\"\n ></rect>\n <text class=\"y-tick-label\" x=\"0\" [attr.y]=\"d.y1.yScale(tick)\" dy=\"-4\">\n {{ d.y1.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngFor=\"let tick of d.y2?.yTicks\">\n <text\n class=\"y-tick-label\"\n [attr.x]=\"width\"\n [attr.y]=\"d.y2?.yScale(tick)\"\n text-anchor=\"end\"\n dy=\"-4\"\n >\n {{ d.y2?.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngIf=\"hoveredMarker$ | async; let hoveredMarker\">\n <line\n class=\"hover-rule\"\n [attr.x1]=\"hoveredMarker.marker.x\"\n [attr.y1]=\"d.y1.yScale(d.y1.yMin)\"\n [attr.x2]=\"hoveredMarker.marker.x\"\n [attr.y2]=\"d.y1.yScale(d.y1.yMax)\"\n stroke-width=\"2\"\n stroke-dasharray=\"4\"\n />\n </g>\n\n <ng-template #seriesTpl let-series=\"series\" let-index=\"index\" let-y=\"y\">\n <path\n *ngIf=\"series.visibility !== 'hidden'\"\n class=\"data path\"\n [class.marker-hovered]=\"!!(hoveredMarker$ | async)\"\n [attr.d]=\"series.path\"\n fill=\"none\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n [attr.stroke-dasharray]=\"series.style === 'dashed' ? '4' : null\"\n ></path>\n <ng-container *ngIf=\"getRange$ | async; let getRange\">\n <ng-container *ngFor=\"let marker of series.markers\">\n <circle\n *ngIf=\"series.visibility !== 'hidden'\"\n class=\"data marker\"\n [class.focused]=\"\n (hoveredMarker$ | async)?.marker?.x === marker.x &&\n (groupedTooltips ||\n ((hoveredMarker$ | async)?.seriesIndex == index &&\n (hoveredMarker$ | async)?.y == y))\n \"\n [class.blurred]=\"\n (hoveredMarker$ | async) !== null &&\n ((hoveredMarker$ | async)?.marker?.x !== marker.x ||\n ((hoveredMarker$ | async)?.marker?.x === marker.x &&\n !groupedTooltips &&\n ((hoveredMarker$ | async)?.seriesIndex != index ||\n (hoveredMarker$ | async)?.y != y)))\n \"\n [attr.cx]=\"marker.x\"\n [attr.cy]=\"marker.y\"\n [attr.r]=\"POINT_RADIUS\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n (mouseover)=\"\n hoveredMarker$.next({\n event: $event,\n marker: marker,\n seriesIndex: index,\n y: y\n })\n \"\n (mouseleave)=\"hoveredMarker$.next(null)\"\n (click)=\"\n markerClicked.emit(\n getMarkerClicked(getRange(marker.date), index, y)\n );\n hoveredMarker$.next(null)\n \"\n ></circle>\n </ng-container>\n </ng-container>\n </ng-template>\n <g *ngFor=\"let series of d.y1.series; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n seriesTpl;\n context: { series: series, index: i, y: 'y1' }\n \"\n ></ng-container>\n </g>\n <g *ngFor=\"let series of d.y2?.series; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n seriesTpl;\n context: { series: series, index: i, y: 'y2' }\n \"\n ></ng-container>\n </g>\n </svg>\n <legend>\n <riv-legend-item\n *ngFor=\"let item of legend$ | async\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [visibility]=\"item.visibility\"\n [clickable]=\"allowLegendToggle\"\n (itemClick)=\"\n allowLegendToggle\n ? toggleVisibility$.next({\n label: item.label,\n visibility: item.visibility == 'hidden' ? 'visible' : 'hidden'\n })\n : null\n \"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-overlay\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-row\" *ngFor=\"let metric of callout.metrics\">\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.colorToken\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n\n<ng-template #controls>\n <riv-simple-select\n [optionGroups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-simple-select>\n</ng-template>\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\n\n@Directive({\n selector: '[rivVisibility]',\n})\nexport class VisibilityDirective implements OnInit, OnDestroy {\n private intersectionObserver: IntersectionObserver;\n\n @Output()\n rivVisibility = new EventEmitter<boolean>();\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n zone: NgZone,\n ) {\n this.intersectionObserver = new IntersectionObserver(\n entries => {\n zone.run(() => {\n for (const entry of entries) {\n this.rivVisibility.emit(entry.isIntersecting);\n }\n });\n },\n {\n threshold: 0.1,\n },\n );\n }\n\n ngOnInit() {\n this.intersectionObserver.observe(this.elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n this.intersectionObserver.unobserve(this.elementRef.nativeElement);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DatePipe } from './format/pipes/date.pipe';\nimport { DaysPipe } from './format/pipes/days.pipe';\nimport { DollarsPipe } from './format/pipes/dollars.pipe';\nimport { NumberPipe } from './format/pipes/number.pipe';\nimport { PercentagePipe } from './format/pipes/percentage.pipe';\nimport { SmallCurrencyPipe } from './format/pipes/small-currency.pipe';\nimport { SVGTextTruncateDirective } from './format/svg-text-truncate/svg-text-truncate.directive';\nimport { TruncateComponent } from './format/truncate/truncate.component';\nimport { IconComponent } from './icon/icon.component';\nimport { AlphabeticFieldComponent } from './input/alphabetic-field/alphabetic-field.component';\nimport { AutoFocusDirective } from './input/auto-focus/auto-focus.directive';\nimport { ButtonGroupComponent } from './input/button-group/button-group.component';\nimport { ButtonComponent } from './input/button/button.component';\nimport { CalendarComponent } from './input/calendar/calendar.component';\nimport { CardCheckboxComponent } from './input/card-checkbox/card-checkbox.component';\nimport { CheckboxComponent } from './input/checkbox/checkbox.component';\nimport { CurrencyFieldComponent } from './input/currency-field/currency-field.component';\nimport { DateRangeComponent } from './input/date-range/date-range.component';\nimport { DateComponent } from './input/date/date.component';\nimport { InputLabelComponent } from './input/input-label/input-label.component';\nimport { NumberFieldComponent } from './input/number-field/number-field.component';\nimport { PercentageFieldComponent } from './input/percentage-field/percentage-field.component';\nimport { RadioComponent } from './input/radio/radio.component';\nimport { SearchComponent } from './input/search/search.component';\nimport { SelectNodeComponent } from './input/select/select-node/select-node.component';\nimport { SelectComponent } from './input/select/select/select.component';\nimport { OptionGroupPipe } from './input/simple-select/option-group.pipe';\nimport { SimpleSelectComponent } from './input/simple-select/simple-select.component';\nimport { SwitchCheckboxComponent } from './input/switch-checkbox/switch-checkbox.component';\nimport { TextFieldComponent } from './input/text-field/text-field.component';\nimport { TextareaFieldComponent } from './input/textarea-field/textarea-field.component';\nimport { LoadingCoverComponent } from './load/loading-cover/loading-cover.component';\nimport { LoadingComponent } from './load/loading/loading.component';\nimport { LinkComponent } from './navigation/link/link.component';\nimport { TabComponent } from './navigation/tabs/tab/tab.component';\nimport { TabsComponent } from './navigation/tabs/tabs/tabs.component';\nimport { AllViewsModalComponent } from './navigation/views/all-views-modal/all-views-modal.component';\nimport { EditViewComponent } from './navigation/views/edit-view/edit-view.component';\nimport { ViewMenuComponent } from './navigation/views/view-menu/view-menu.component';\nimport { ViewsComponent } from './navigation/views/views/views.component';\nimport { BadgeComponent } from './notification/badge/badge.component';\nimport { BannerActionComponent } from './notification/banner/banner-action.component';\nimport { BannerComponent } from './notification/banner/banner.component';\nimport { NotificationBadgeComponent } from './notification/notification-badge/notification-badge.component';\nimport { CalloutComponent } from './overlay/callout/callout.component';\nimport { HelpComponent } from './overlay/callout/help/help.component';\nimport { LockScrollDirective } from './overlay/callout/lock-scroll.directive';\nimport { MenuDividerComponent } from './overlay/callout/menu/menu-divider/menu-divider.component';\nimport { MenuItemComponent } from './overlay/callout/menu/menu-item/menu-item.component';\nimport { MenuComponent } from './overlay/callout/menu/menu.component';\nimport { LockedTooltipDirective } from './overlay/callout/tooltip/locked-tooltip.directive';\nimport { TooltipComponent } from './overlay/callout/tooltip/tooltip.component';\nimport { TooltipDirective } from './overlay/callout/tooltip/tooltip.directive';\nimport { DialogComponent } from './overlay/modal/dialog/dialog.component';\nimport { ModalComponent } from './overlay/modal/modal.component';\nimport { SideSheetComponent } from './overlay/modal/side-sheet/side-sheet.component';\nimport { OverlayOutletComponent } from './overlay/overlay-outlet.component';\nimport { OverlayDirective } from './overlay/overlay.directive';\nimport { ToastActionComponent } from './overlay/toast/toast-action.component';\nimport { ToastComponent } from './overlay/toast/toast.component';\nimport { SizeDirective } from './size/size.directive';\nimport { SimpleTableCellComponent } from './table/simple-table/simple-table-cell.component';\nimport { SimpleTableHeaderCellComponent } from './table/simple-table/simple-table-header-cell.component';\nimport { SimpleTableRowComponent } from './table/simple-table/simple-table-row.component';\nimport { SimpleTableComponent } from './table/simple-table/simple-table.component';\nimport { TableColumnSettingsSideSheetComponent } from './table/table/table-column-settings/table-column-settings-side-sheet.component';\nimport { TableColumnSettingsComponent } from './table/table/table-column-settings/table-column-settings.component';\nimport { TableCsvExportComponent } from './table/table/table-csv-export/table-csv-export.component';\nimport { TableHeaderResizeHandleComponent } from './table/table/table-header-resize-handle/table-header-resize-handle.component';\nimport { TableSearchComponent } from './table/table/table-search/table-search.component';\nimport { TableComponent } from './table/table/table/table.component';\n\nimport { TableSearchColumnsComponent } from './table/table/table-search-columns/table-search-columns.component';\nimport { ChartComponent } from './visualization/chart/chart.component';\nimport { DataTableCellComponent } from './visualization/data-table/data-table-cell.component';\nimport { DataTableHeaderCellComponent } from './visualization/data-table/data-table-header-cell.component';\nimport { DataTableRowComponent } from './visualization/data-table/data-table-row.component';\nimport { DataTableComponent } from './visualization/data-table/data-table.component';\nimport { DonutComponent } from './visualization/donut/donut.component';\nimport { FunnelChartComponent } from './visualization/funnel-chart/funnel-chart.component';\nimport { HighlightComponent } from './visualization/highlight/highlight.component';\nimport { IssueComponent } from './visualization/issue/issue.component';\nimport { LegendItemComponent } from './visualization/legend-item/legend-item.component';\nimport { MetricComponent } from './visualization/metric/metric.component';\nimport { ProgressComponent } from './visualization/progress/progress.component';\nimport { StackedColumnComponent } from './visualization/stacked-column/stacked-column.component';\nimport { StackedRowComponent } from './visualization/stacked-row/stacked-row.component';\nimport { TimeSeriesComponent } from './visualization/time-series/time-series.component';\nimport { TrendComponent } from './visualization/trend/trend.component';\nimport { ZeroStateComponent } from './visualization/zero-state/zero-state.component';\nimport { VisibilityDirective } from './visibility/visibility.directive';\n\n@NgModule({\n declarations: [\n AllViewsModalComponent,\n AlphabeticFieldComponent,\n AutoFocusDirective,\n BadgeComponent,\n BannerActionComponent,\n BannerComponent,\n ButtonComponent,\n ButtonGroupComponent,\n CalendarComponent,\n CalloutComponent,\n CardCheckboxComponent,\n ChartComponent,\n CheckboxComponent,\n CurrencyFieldComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DialogComponent,\n DollarsPipe,\n DonutComponent,\n EditViewComponent,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n LockedTooltipDirective,\n LockScrollDirective,\n MenuComponent,\n MenuDividerComponent,\n MenuItemComponent,\n MetricComponent,\n ModalComponent,\n NotificationBadgeComponent,\n NumberFieldComponent,\n NumberPipe,\n OptionGroupPipe,\n OverlayDirective,\n OverlayOutletComponent,\n PercentageFieldComponent,\n PercentagePipe,\n ProgressComponent,\n RadioComponent,\n SearchComponent,\n SelectComponent,\n SelectNodeComponent,\n SideSheetComponent,\n SimpleSelectComponent,\n SimpleTableCellComponent,\n SimpleTableComponent,\n SimpleTableHeaderCellComponent,\n SimpleTableRowComponent,\n SizeDirective,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n SwitchCheckboxComponent,\n TabComponent,\n TableColumnSettingsComponent,\n TableColumnSettingsSideSheetComponent,\n TableComponent,\n TableCsvExportComponent,\n TableHeaderResizeHandleComponent,\n TableSearchColumnsComponent,\n TableSearchComponent,\n TabsComponent,\n TextareaFieldComponent,\n TextFieldComponent,\n TimeSeriesComponent,\n ToastActionComponent,\n ToastComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ViewMenuComponent,\n ViewsComponent,\n VisibilityDirective,\n ZeroStateComponent,\n ],\n exports: [\n AllViewsModalComponent,\n AlphabeticFieldComponent,\n AutoFocusDirective,\n BadgeComponent,\n BannerActionComponent,\n BannerComponent,\n ButtonComponent,\n ButtonGroupComponent,\n CalloutComponent,\n CardCheckboxComponent,\n ChartComponent,\n CheckboxComponent,\n CurrencyFieldComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DialogComponent,\n DollarsPipe,\n DonutComponent,\n EditViewComponent,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n LockedTooltipDirective,\n MenuComponent,\n MenuDividerComponent,\n MenuItemComponent,\n MetricComponent,\n ModalComponent,\n NotificationBadgeComponent,\n NumberFieldComponent,\n NumberPipe,\n OptionGroupPipe,\n OverlayDirective,\n OverlayOutletComponent,\n PercentageFieldComponent,\n PercentagePipe,\n ProgressComponent,\n RadioComponent,\n SearchComponent,\n SelectComponent,\n SideSheetComponent,\n SimpleSelectComponent,\n SimpleTableCellComponent,\n SimpleTableComponent,\n SimpleTableHeaderCellComponent,\n SimpleTableRowComponent,\n SizeDirective,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n SwitchCheckboxComponent,\n TabComponent,\n TableColumnSettingsComponent,\n TableColumnSettingsSideSheetComponent,\n TableComponent,\n TableCsvExportComponent,\n TableSearchColumnsComponent,\n TableSearchComponent,\n TabsComponent,\n TextareaFieldComponent,\n TextFieldComponent,\n TimeSeriesComponent,\n ToastActionComponent,\n ToastComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ViewMenuComponent,\n ViewsComponent,\n VisibilityDirective,\n ZeroStateComponent,\n ],\n imports: [CommonModule, RouterModule],\n})\nexport class RivModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["AngularDatePipe","i2.LockScrollDirective","i3.SizeDirective","i1.OverlayService","i2.CalloutComponent","i3.OverlayDirective","i1.TooltipDirective","i1.IconComponent","i2.TooltipDirective","i1.CalloutComponent","i2","i3.IconComponent","i2.HelpComponent","i3.LinkComponent","i1.AutoFocusDirective","i2.InputLabelComponent","i1.ButtonGroupComponent","i4.LoadingComponent","i1.CheckboxComponent","i2.LoadingComponent","i2.AutoFocusDirective","i2.CheckboxComponent","i3.HelpComponent","i4.HighlightComponent","i5.IconComponent","i6.TruncateComponent","i7.NumberPipe","i2.IconComponent","i4.InputLabelComponent","i5.LoadingCoverComponent","i6.OverlayDirective","i7.SearchComponent","i8.SelectNodeComponent","i9.ZeroStateComponent","i10.NumberPipe","i2.SelectComponent","i2.ButtonComponent","i3.SimpleSelectComponent","i4.OptionGroupPipe","i3.CalendarComponent","i4.CalloutComponent","i5.HighlightComponent","i6.IconComponent","i7.InputLabelComponent","i8.OverlayDirective","i9.SimpleSelectComponent","i10.TooltipDirective","i11.OptionGroupPipe","i2.CalendarComponent","i3.CalloutComponent","i4.IconComponent","i5.InputLabelComponent","i7.DatePipe","i1.LockScrollDirective","i2.OverlayDirective","i1.ModalComponent","i1.ButtonComponent","i2.ModalComponent","i5.OverlayDirective","i6.SelectComponent","i7.TextFieldComponent","i4.OverlayDirective","i1.MenuComponent","i3.DialogComponent","i4.EditViewComponent","i5.MenuComponent","i6.MenuDividerComponent","i7.MenuItemComponent","i3.HighlightComponent","i5.SearchComponent","i6.SideSheetComponent","i7.TruncateComponent","i8.ViewMenuComponent","i2.AllViewsModalComponent","i3.ButtonComponent","i7.OverlayDirective","i8.SearchComponent","i9.SizeDirective","i10.ToastComponent","i11.TruncateComponent","i12.ViewMenuComponent","i13.ZeroStateComponent","i14.NumberPipe","i1.NumberPipe","i6.MenuItemComponent","i8.SideSheetComponent","i9.TooltipDirective","i5.CheckboxComponent","i6.HighlightComponent","i7.IconComponent","i1.DownloadService","i4.TooltipDirective","i6.SwitchCheckboxComponent","i7.TooltipDirective","i2.SearchComponent","i3.TableSearchColumnsComponent","i7.LinkComponent","i8.LoadingCoverComponent","i9.MenuComponent","i10.MenuDividerComponent","i11.MenuItemComponent","i12.OverlayDirective","i13.SimpleSelectComponent","i14.SizeDirective","i15.TableHeaderResizeHandleComponent","i16.ZeroStateComponent","i17.NumberPipe","i3.TooltipDirective","i3.LegendItemComponent","i4.LinkComponent","i6.SizeDirective","i7.ZeroStateComponent","i1.DataTableRowComponent","i3.ZeroStateComponent","i2.MetricComponent","i3.TrendComponent","getDateRange","DEFAULT_INTERVAL","i5.SimpleSelectComponent","i8.OptionGroupPipe","union","i5.SizeDirective","i6.SVGTextTruncateDirective"],"mappings":"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"}
|