@rivet-health/design-system 5.2.0 → 5.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/visualization/legend-item/legend-item.component.mjs +6 -3
- package/esm2020/lib/visualization/stacked-row/stacked-row.component.mjs +8 -5
- package/esm2020/lib/visualization/time-series/time-series.component.mjs +1 -1
- package/fesm2015/rivet-health-design-system.mjs +13 -7
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +13 -7
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/visualization/legend-item/legend-item.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rivet-health-design-system.mjs","sources":["../../../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/content-toggle/text-toggle/text-toggle.component.ts","../../../projects/riv/src/lib/content-toggle/text-toggle/text-toggle.component.html","../../../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/option-group.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/modal/callout/callout.helpers.ts","../../../projects/riv/src/lib/modal/callout/lock-scroll.directive.ts","../../../projects/riv/src/lib/modal/callout/callout.component.ts","../../../projects/riv/src/lib/modal/callout/callout.component.html","../../../projects/riv/src/lib/modal/tooltip/tooltip.component.ts","../../../projects/riv/src/lib/modal/tooltip/tooltip.component.html","../../../projects/riv/src/lib/modal/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/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/util/local-storage.ts","../../../projects/riv/src/lib/modal/help/help.component.ts","../../../projects/riv/src/lib/modal/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/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/load/loading-cover/loading-cover.component.ts","../../../projects/riv/src/lib/load/loading-cover/loading-cover.component.html","../../../projects/riv/src/lib/input/single-select/single-select.component.ts","../../../projects/riv/src/lib/input/single-select/single-select.component.html","../../../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/modal/callout/callout.service.ts","../../../projects/riv/src/lib/modal/callout/callout-outlet.component.ts","../../../projects/riv/src/lib/modal/callout/callout-outlet.component.html","../../../projects/riv/src/lib/modal/callout/callout.directive.ts","../../../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/zero-state/zero-state.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/legend-item/legend-item.component.ts","../../../projects/riv/src/lib/visualization/legend-item/legend-item.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/riv.module.ts","../../../projects/riv/src/rivet-health-design-system.ts"],"sourcesContent":["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 Activity = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-activity\">\\n <polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\"></polyline>\\n</svg>`;\nconst AlertCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-circle\">\\n <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>\\n</svg>`;\nconst AlertOctagon = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-octagon\">\\n <polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"></polygon><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\\n</svg>`;\nconst AlertTriangle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-triangle\">\\n <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>\\n</svg>`;\nconst AlignLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-align-left\">\\n <line x1=\"17\" y1=\"10\" x2=\"3\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"17\" y1=\"18\" x2=\"3\" y2=\"18\"></line>\\n</svg>`;\nconst Anchor = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-anchor\">\\n <circle cx=\"12\" cy=\"5\" r=\"3\"></circle><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"8\"></line><path d=\"M5 12H2a10 10 0 0 0 20 0h-3\"></path>\\n</svg>`;\nconst Archive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-archive\">\\n <polyline points=\"21 8 21 21 3 21 3 8\"></polyline><rect x=\"1\" y=\"3\" width=\"22\" height=\"5\"></rect><line x1=\"10\" y1=\"12\" x2=\"14\" y2=\"12\"></line>\\n</svg>`;\nconst ArrowDown = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-down\">\\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><polyline points=\"19 12 12 19 5 12\"></polyline>\\n</svg>`;\nconst ArrowDownLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-down-left\">\\n <line x1=\"17\" y1=\"7\" x2=\"7\" y2=\"17\"></line><polyline points=\"17 17 7 17 7 7\"></polyline>\\n</svg>`;\nconst ArrowLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-left\">\\n <line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\"></line><polyline points=\"12 19 5 12 12 5\"></polyline>\\n</svg>`;\nconst ArrowLeftCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-left-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 8 8 12 12 16\"></polyline><line x1=\"16\" y1=\"12\" x2=\"8\" y2=\"12\"></line>\\n</svg>`;\nconst ArrowRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-right\">\\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line><polyline points=\"12 5 19 12 12 19\"></polyline>\\n</svg>`;\nconst ArrowUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-up\">\\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\"></line><polyline points=\"5 12 12 5 19 12\"></polyline>\\n</svg>`;\nconst ArrowUpRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-up-right\">\\n <line x1=\"7\" y1=\"17\" x2=\"17\" y2=\"7\"></line><polyline points=\"7 7 17 7 17 17\"></polyline>\\n</svg>`;\nconst AtSign = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-at-sign\">\\n <circle cx=\"12\" cy=\"12\" r=\"4\"></circle><path d=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\"></path>\\n</svg>`;\nconst Award = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-award\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"8\" r=\"7\"/><path d=\"M8.21 13.89 7 23l5-3 5 3-1.21-9.12\"/></svg>`;\nconst BarChart2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-bar-chart-2\">\\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\"></line><line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"></line><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\"></line>\\n</svg>`;\nconst Bell = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-bell\">\\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"></path><path d=\"M13.73 21a2 2 0 0 1-3.46 0\"></path>\\n</svg>`;\nconst Book = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-book\">\\n <path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"></path><path d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"></path>\\n</svg>`;\nconst BookOpen = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-book-open\">\\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"></path><path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"></path>\\n</svg>`;\nconst Briefcase = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-briefcase\">\\n <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"></rect><path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"></path>\\n</svg>`;\nconst Calendar = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-calendar\">\\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\\n</svg>`;\nconst Check = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check\">\\n <polyline points=\"20 6 9 17 4 12\"></polyline>\\n</svg>`;\nconst CheckCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check-circle\">\\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"></path><polyline points=\"22 4 12 14.01 9 11.01\"></polyline>\\n</svg>`;\nconst CheckSquare = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check-square\">\\n <polyline points=\"9 11 12 14 22 4\"></polyline><path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\"></path>\\n</svg>`;\nconst ChevronDown = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-down\\\">\\n <polyline points=\\\"6 9 12 15 18 9\\\"></polyline>\\n</svg>`;\nconst ChevronLeft = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-left\\\">\\n <polyline points=\\\"15 18 9 12 15 6\\\"></polyline>\\n</svg>`;\nconst ChevronRight = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-right\\\">\\n <polyline points=\\\"9 18 15 12 9 6\\\"></polyline>\\n</svg>`;\nconst ChevronsLeft = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevrons-left\\\">\\n <polyline points=\\\"11 17 6 12 11 7\\\"></polyline><polyline points=\\\"18 17 13 12 18 7\\\"></polyline>\\n</svg>`;\nconst ChevronsRight = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevrons-right\\\">\\n <polyline points=\\\"13 17 18 12 13 7\\\"></polyline><polyline points=\\\"6 17 11 12 6 7\\\"></polyline>\\n</svg>`;\nconst ChevronUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-chevron-up\">\\n <polyline points=\"18 15 12 9 6 15\"></polyline>\\n</svg>`;\nconst Clipboard = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-clipboard\">\\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"></path><rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" ry=\"1\"></rect>\\n</svg>`;\nconst Clock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-clock\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline>\\n</svg>`;\nconst Coffee = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-coffee\">\\n <path d=\"M18 8h1a4 4 0 0 1 0 8h-1\"></path><path d=\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\"></path><line x1=\"6\" y1=\"1\" x2=\"6\" y2=\"4\"></line><line x1=\"10\" y1=\"1\" x2=\"10\" y2=\"4\"></line><line x1=\"14\" y1=\"1\" x2=\"14\" y2=\"4\"></line>\\n</svg>`;\nconst Copy = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-copy\">\\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\\n</svg>`;\nconst CornerLeftUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-corner-left-up\">\\n <polyline points=\"14 9 9 4 4 9\"></polyline><path d=\"M20 20h-7a4 4 0 0 1-4-4V4\"></path>\\n</svg>`;\nconst CreditCard = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-credit-card\">\\n <rect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\"></rect><line x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\"></line>\\n</svg>`;\nconst Documents = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" ><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.75 6c-.464 0-.91.169-1.237.469C7.184 6.769 7 7.176 7 7.6v12.8c0 .424.184.831.513 1.131.328.3.773.469 1.237.469h10.5c.464 0 .91-.169 1.237-.469.329-.3.513-.707.513-1.131V8a2 2 0 0 0-2-2H8.75z\" /> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7 18H4.75c-.464 0-.91-.169-1.237-.469A1.534 1.534 0 0 1 3 16.4V3.6c0-.424.184-.831.513-1.131C3.84 2.169 4.286 2 4.75 2H15a2 2 0 0 1 2 2v2M17 14h-6M17 18h-6M13 10h-2\"/></svg>`;\nconst DollarSign = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-dollar-sign\">\\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"23\"></line><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"></path>\\n</svg>`;\nconst Download = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-download\">\\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line>\\n</svg>`;\nconst DownloadCloud = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-download-cloud\">\\n <polyline points=\"8 17 12 21 16 17\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\"></path>\\n</svg>`;\nconst Edit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-edit\">\\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"></path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"></path>\\n</svg>`;\nconst Edit2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-edit-2\">\\n <path d=\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\"></path>\\n</svg>`;\nconst Exchange = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.5 4l4 4-4 4M9 20l-4-4 4-4M3 8h15M6 16h15\"/></svg>`;\nconst ExternalLink = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-external-link\">\\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line>\\n</svg>`;\nconst Eye = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-eye\">\\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle>\\n</svg>`;\nconst EyeOff = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-eye-off\">\\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>\\n</svg>`;\nconst File = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file\">\\n <path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"></path><polyline points=\"13 2 13 9 20 9\"></polyline>\\n</svg>`;\nconst FilePlus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file-plus\">\\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"12\"></line><line x1=\"9\" y1=\"15\" x2=\"15\" y2=\"15\"></line>\\n</svg>`;\nconst FileText = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file-text\">\\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line><polyline points=\"10 9 9 9 8 9\"></polyline>\\n</svg>`;\nconst Filter = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-filter\">\\n <polygon points=\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"></polygon>\\n</svg>`;\nconst Flag = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-flag\">\\n <path d=\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\"></path><line x1=\"4\" y1=\"22\" x2=\"4\" y2=\"15\"></line>\\n</svg>`;\nconst Folder = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-folder\">\\n <path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"></path>\\n</svg>`;\nconst Hash = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-hash\">\\n <line x1=\"4\" y1=\"9\" x2=\"20\" y2=\"9\"></line><line x1=\"4\" y1=\"15\" x2=\"20\" y2=\"15\"></line><line x1=\"10\" y1=\"3\" x2=\"8\" y2=\"21\"></line><line x1=\"16\" y1=\"3\" x2=\"14\" y2=\"21\"></line>\\n</svg>`;\nconst Heart = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-heart\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"></path></svg>`;\nconst HeartActive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-heart\"><path fill=\"currentColor\" d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"></path></svg>`;\nconst HelpCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-help-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"></path><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>\\n</svg>`;\nconst Home = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-home\">\\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\\n</svg>`;\nconst Inbox = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-inbox\">\\n <polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\"></polyline><path d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"></path>\\n</svg>`;\nconst Info = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-info\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"></line>\\n</svg>`;\nconst Key = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-key\">\\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\"></path>\\n</svg>`;\nconst Layers = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-layers\">\\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\"></polygon><polyline points=\"2 17 12 22 22 17\"></polyline><polyline points=\"2 12 12 17 22 12\"></polyline>\\n</svg>`;\nconst Link2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-link-2\">\\n <path d=\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\"></path><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst List = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-list\">\\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line><line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line><line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line><line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\\n</svg>`;\nconst Lock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-lock\">\\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>\\n</svg>`;\nconst Mail = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-mail\">\\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"></path><polyline points=\"22,6 12,13 2,6\"></polyline>\\n</svg>`;\nconst MapPin = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-map-pin\">\\n <path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"></path><circle cx=\"12\" cy=\"10\" r=\"3\"></circle>\\n</svg>`;\nconst Maximize = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-maximize\">\\n <path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"></path>\\n</svg>`;\nconst Maximize2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-maximize-2\">\\n <polyline points=\"15 3 21 3 21 9\"></polyline><polyline points=\"9 21 3 21 3 15\"></polyline><line x1=\"21\" y1=\"3\" x2=\"14\" y2=\"10\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>\\n</svg>`;\nconst Menu = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-menu\">\\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\\n</svg>`;\nconst MessageCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-message-circle\">\\n <path d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"></path>\\n</svg>`;\nconst MessageCircleActive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-message-circle\">\\n <path fill=\"currentColor\" d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"></path>\\n</svg>`;\nconst Minimize2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minimize-2\">\\n <polyline points=\"4 14 10 14 10 20\"></polyline><polyline points=\"20 10 14 10 14 4\"></polyline><line x1=\"14\" y1=\"10\" x2=\"21\" y2=\"3\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>\\n</svg>`;\nconst Minus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minus\">\\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\\n</svg>`;\nconst MinusCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minus-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst MoreHorizontal = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-more-horizontal\">\\n <circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"19\" cy=\"12\" r=\"1\"></circle><circle cx=\"5\" cy=\"12\" r=\"1\"></circle>\\n</svg>`;\nconst MoreVertical = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-more-vertical\">\\n <circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"12\" cy=\"5\" r=\"1\"></circle><circle cx=\"12\" cy=\"19\" r=\"1\"></circle>\\n</svg>`;\nconst Paperclip = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-paperclip\">\\n <path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\"></path>\\n</svg>`;\nconst Percent = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-percent\">\\n <line x1=\"19\" y1=\"5\" x2=\"5\" y2=\"19\"></line><circle cx=\"6.5\" cy=\"6.5\" r=\"2.5\"></circle><circle cx=\"17.5\" cy=\"17.5\" r=\"2.5\"></circle>\\n</svg>`;\nconst Phone = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-phone\">\\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>\\n</svg>`;\nconst PieChart = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-pie-chart\">\\n <path d=\"M21.21 15.89A10 10 0 1 1 8 2.83\"></path><path d=\"M22 12A10 10 0 0 0 12 2v10z\"></path>\\n</svg>`;\nconst PinActive = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15L12 23\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 1H18L15 4L16 12.5L20 15H4L8 12.5L9 4L6 1Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst PinInactive = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15L12 23\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 1H18L15 4L16 12.5L20 15H4L8 12.5L9 4L6 1Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst PlayCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-play-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polygon points=\"10 8 16 12 10 16 10 8\"></polygon>\\n</svg>`;\nconst Plus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-plus\">\\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\\n</svg>`;\nconst PlusCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-plus-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"></line><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst Power = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-power\">\\n <path d=\"M18.36 6.64a9 9 0 1 1-12.73 0\"></path><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"12\"></line>\\n</svg>`;\nconst Printer = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-printer\">\\n <polyline points=\"6 9 6 2 18 2 18 9\"></polyline><path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"></path><rect x=\"6\" y=\"14\" width=\"12\" height=\"8\"></rect>\\n</svg>`;\nconst RefreshCw = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-refresh-cw\">\\n <polyline points=\"23 4 23 10 17 10\"></polyline><polyline points=\"1 20 1 14 7 14\"></polyline><path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"></path>\\n</svg>`;\nconst Reminder = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18.375 12V5.25c0-.9665-.7835-1.75-1.75-1.75H4.375c-.9665 0-1.75.7835-1.75 1.75V17.5c0 .9665.7835 1.75 1.75 1.75H12M14 1.75v3.5M7 1.75v3.5M2.625 8.75h15.75\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17.5 22.9193c2.9915 0 5.4166-2.4252 5.4166-5.4167s-2.4251-5.4167-5.4166-5.4167c-2.9916 0-5.4167 2.4252-5.4167 5.4167s2.4251 5.4167 5.4167 5.4167Z\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17.5 14.25v3.25l2.1667 1.0833\"/></svg>`;\nconst Reorder = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M0,9 l24,0\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M0,15 l24,0\"/></svg>`;\nconst Reorder2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\"><path fill=\"currentColor\" d=\"M8 5h3v3H8zM8 11h3v3H8zM8 17h3v3H8zM13 5h3v3h-3zM13 11h3v3h-3zM13 17h3v3h-3z\"/></svg>`;\nconst Reply = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 17l-5-5 5-5\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20 17v-1a4 4 0 0 0-4-4H4\"/></svg>`;\nconst ReplyAll = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11 17l-5-5 5-5\"/> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7 17l-5-5 5-5\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M22 17v-1a4 4 0 0 0-4-4H6\"/></svg>`;\nconst RotateCw = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-rotate-cw\">\\n <polyline points=\"23 4 23 10 17 10\"></polyline><path d=\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"></path>\\n</svg>`;\nconst Save = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-save\">\\n <path d=\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\"></path><polyline points=\"17 21 17 13 7 13 7 21\"></polyline><polyline points=\"7 3 7 8 15 8\"></polyline>\\n</svg>`;\nconst Search = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-search\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\\n</svg>`;\nconst Send = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-send\">\\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line><polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\\n</svg>`;\nconst Settings = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-settings\">\\n <circle cx=\"12\" cy=\"12\" r=\"3\"></circle><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\"></path>\\n</svg>`;\nconst Share = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-share\">\\n <path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"></path><polyline points=\"16 6 12 2 8 6\"></polyline><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"15\"></line>\\n</svg>`;\nconst Shield = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-shield\">\\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"></path>\\n</svg>`;\nconst Sidebar = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-sidebar\">\\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\"></line>\\n</svg>`;\nconst Slash = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-slash\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\"></line>\\n</svg>`;\nconst Sliders = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-sliders\"><path d=\"M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6\"/></svg>`;\nconst Smile = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-smile\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M8 14s1.5 2 4 2 4-2 4-2\"></path><line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\"></line><line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\"></line>\\n</svg>`;\nconst Star = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-star\">\\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"></polygon>\\n</svg>`;\nconst Sun = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-sun\">\\n <circle cx=\"12\" cy=\"12\" r=\"5\"></circle><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"></line><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"></line><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"></line><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"></line><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"></line><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"></line><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"></line><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"></line>\\n</svg>`;\nconst SupportChat = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" d=\"M12 16v1\"/> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.562 20.63a9 9 0 1 1 3.666-2.133 5.014 5.014 0 0 0 2.272 2.834A4.977 4.977 0 0 1 18 22a4.983 4.983 0 0 1-3.438-1.37z\"/></svg>`;\nconst Tag = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-tag\">\\n <path d=\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\"></path><line x1=\"7\" y1=\"7\" x2=\"7.01\" y2=\"7\"></line>\\n</svg>`;\nconst Target = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-target\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"6\"></circle><circle cx=\"12\" cy=\"12\" r=\"2\"></circle>\\n</svg>`;\nconst Tool = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-tool\">\\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\"></path>\\n</svg>`;\nconst Trash2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trash-2\">\\n <polyline points=\"3 6 5 6 21 6\"></polyline><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path><line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\"></line><line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\"></line>\\n</svg>`;\nconst TrendingDown = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trending-down\">\\n <polyline points=\"23 18 13.5 8.5 8.5 13.5 1 6\"></polyline><polyline points=\"17 18 23 18 23 12\"></polyline>\\n</svg>`;\nconst TrendingUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trending-up\">\\n <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"></polyline><polyline points=\"17 6 23 6 23 12\"></polyline>\\n</svg>`;\nconst Unlock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-unlock\">\\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 9.9-1\"></path>\\n</svg>`;\nconst UploadCloud = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-upload-cloud\">\\n <polyline points=\"16 16 12 12 8 16\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"></path><polyline points=\"16 16 12 12 8 16\"></polyline>\\n</svg>`;\nconst User = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user\">\\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"></path><circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\\n</svg>`;\nconst UserCheck = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user-check\">\\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><polyline points=\"17 11 19 13 23 9\"></polyline>\\n</svg>`;\nconst UserPlus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user-plus\">\\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\"></line><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"></line>\\n</svg>`;\nconst Users = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-users\">\\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"9\" cy=\"7\" r=\"4\"></circle><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"></path><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"></path>\\n</svg>`;\nconst X = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x\">\\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\\n</svg>`;\nconst XCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>\\n</svg>`;\nconst XSquare = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x-square\">\\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line>\\n</svg>`;\nconst ZoomIn = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-zoom-in\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>\\n</svg>`;\nconst ZoomOut = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-zoom-out\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>\\n</svg>`;\n\nexport const icons = {\n Activity,\n AlertCircle,\n AlertOctagon,\n AlertTriangle,\n AlignLeft,\n Anchor,\n Archive,\n ArrowDown,\n ArrowDownLeft,\n ArrowLeft,\n ArrowLeftCircle,\n ArrowRight,\n ArrowUp,\n ArrowUpRight,\n AtSign,\n Award,\n BarChart2,\n Bell,\n Book,\n BookOpen,\n Briefcase,\n Calendar,\n Check,\n CheckCircle,\n CheckSquare,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n ChevronUp,\n Clipboard,\n Clock,\n Coffee,\n Copy,\n CornerLeftUp,\n CreditCard,\n Documents,\n DollarSign,\n Download,\n DownloadCloud,\n Edit,\n Edit2,\n Exchange,\n ExternalLink,\n Eye,\n EyeOff,\n File,\n FilePlus,\n FileText,\n Filter,\n Flag,\n Folder,\n Hash,\n Heart,\n HeartActive,\n HelpCircle,\n Home,\n Inbox,\n Info,\n Key,\n Layers,\n Link2,\n List,\n Lock,\n Mail,\n MapPin,\n Maximize,\n Maximize2,\n Menu,\n MessageCircle,\n MessageCircleActive,\n Minimize2,\n Minus,\n MinusCircle,\n MoreHorizontal,\n MoreVertical,\n Paperclip,\n Percent,\n Phone,\n PieChart,\n PinActive,\n PinInactive,\n PlayCircle,\n Plus,\n PlusCircle,\n Power,\n Printer,\n RefreshCw,\n Reminder,\n Reorder,\n Reorder2,\n Reply,\n ReplyAll,\n RotateCw,\n Save,\n Search,\n Send,\n Settings,\n Share,\n Shield,\n Sidebar,\n Slash,\n Sliders,\n Smile,\n Star,\n Sun,\n SupportChat,\n Tag,\n Target,\n Tool,\n Trash2,\n TrendingDown,\n TrendingUp,\n Unlock,\n UploadCloud,\n User,\n UserCheck,\n UserPlus,\n Users,\n X,\n XCircle,\n XSquare,\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, 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-text-toggle',\n templateUrl: './text-toggle.component.html',\n styleUrls: ['./text-toggle.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextToggleComponent {\n @Input()\n showLabel: string = '';\n\n @Input()\n hideLabel: string = '';\n\n @Input()\n open: boolean = false;\n}\n","<button class=\"toggle\" type=\"button\" (click)=\"open = !open\" type=\"button\">\n <riv-icon [class.open]=\"open\" [name]=\"'ChevronDown'\" [size]=\"24\"></riv-icon>\n <div>{{ open ? hideLabel : showLabel }}</div>\n</button>\n<div *ngIf=\"open\">\n <ng-content></ng-content>\n</div>\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 = 'shortDate',\n ) {\n return this.inner.transform(value, format) ?? NO_DATA_FALLBACK;\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 { Pipe, PipeTransform } from '@angular/core';\nimport { SingleSelectComponent } from '../../input/single-select/single-select.component';\n\n@Pipe({ name: 'rivOptionGroup' })\nexport class OptionGroupPipe<U extends SingleSelectComponent.Option>\n implements PipeTransform\n{\n transform(\n value?: U[],\n header?: string,\n ): SingleSelectComponent.OptionGroup<U>[] {\n return [\n {\n header: header,\n options: value ?? [],\n },\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 AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\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@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 {\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') content: ElementRef<HTMLDivElement> | null = null;\n\n @ViewChild('scrim', { static: false }) scrim: ElementRef<HTMLElement> | null =\n null;\n\n scrimClick(evt: MouseEvent) {\n if (evt.target === this.scrim?.nativeElement) {\n this.close.emit();\n }\n }\n\n left: number = 0;\n top: number = 0;\n resolvedPosition: CalloutComponent.AnchoredPosition = this.preferredPosition;\n\n ngAfterViewInit() {\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();\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)=\"$event.stopPropagation(); scrimClick($event)\"\n>\n <div\n class=\"callout\"\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 {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { CalloutComponent } from '../callout/callout.component';\n\nfunction isTemplate(\n v: string | TemplateRef<unknown>,\n): v is TemplateRef<unknown> {\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<unknown>;\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 [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<unknown>;\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 ApplicationRef,\n Directive,\n ElementRef,\n Input,\n OnInit,\n} from '@angular/core';\nimport { TooltipDirective } from '../../modal/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 OnInit\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 ngOnInit(): 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 let currentLength: number = this.text.length;\n\n element.textContent = this.text;\n // If the text can fit in the given width, no truncation needed.\n if (\n currentLength > 0 &&\n element.getSubStringLength(0, currentLength) <= this.width\n ) {\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 '../../modal/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","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 Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { LoadingComponent } from '../../load/loading/loading.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 ) {}\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 @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 })\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 case 'large':\n case 'xlarge':\n return 24;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['disabled'] && 'disabled' in this.el.nativeElement) {\n if (changes['disabled'].currentValue) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\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 { 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 { 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}\n","<riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"16\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\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 @Input()\n disabled: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @HostBinding('class')\n get classes() {\n return this.disabled || this.locked ? 'disabled' : '';\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 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();\n}\n","<label *ngIf=\"label\">\n <span class=\"title\">\n {{ label }}\n <span *ngIf=\"required\" class=\"required\">*</span>\n </span>\n <button\n *ngIf=\"labelActionText\"\n rivLink\n type=\"button\"\n (click)=\"labelAction.emit()\"\n type=\"button\"\n >\n {{ labelActionText }}\n </button>\n <riv-help *ngIf=\"help\" [help]=\"help\"></riv-help>\n</label>\n<div class=\"content\"><ng-content></ng-content></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 { 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 ElementRef,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport Fuse from 'fuse.js';\nimport {\n Observable,\n debounceTime,\n from,\n map,\n pairwise,\n startWith,\n switchMap,\n} from 'rxjs';\nimport { HighlightComponent } from '../../visualization/highlight/highlight.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\n\n@Component({\n selector: 'riv-single-select',\n templateUrl: './single-select.component.html',\n styleUrls: ['./single-select.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingleSelectComponent<\n T extends SingleSelectComponent.OptionGroup<U>,\n U extends SingleSelectComponent.Option,\n> extends InputLabelComponent {\n @Input()\n groups: T[] = [];\n\n @Input()\n selectedOption: U | null = null;\n\n @Input()\n filterabilityOptions: SingleSelectComponent.FilterabilityOptions = {\n enabled: false,\n };\n\n @Input()\n loading: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @Input()\n noOptionsMessage: string = 'No available options';\n\n @Input()\n nodeTemplate?: TemplateRef<unknown>;\n\n @Input()\n triggerTemplate?: TemplateRef<unknown>;\n\n @Input()\n placeholder: string = 'Select...';\n\n @Input()\n disabled: boolean = false;\n\n filterQuery: string = '';\n\n @Output()\n filterQueryChange = new EventEmitter<string>();\n\n @Output()\n selectedOptionChange = new EventEmitter<U>();\n\n @ViewChild('customTriggerButton') customTriggerButton?: ElementRef;\n @ViewChild('standardTriggerButton') standardTriggerButton?: ElementRef;\n\n getTrigger(): Element | null {\n return (\n this.customTriggerButton?.nativeElement ??\n this.standardTriggerButton?.nativeElement\n );\n }\n\n getFilterPlaceholder(): string {\n if (\n this.filterabilityOptions.enabled &&\n this.filterabilityOptions.placeholder\n ) {\n return this.filterabilityOptions.placeholder;\n }\n return 'Filter options...';\n }\n\n allowedOpen(): void {\n if (!this.disabled && !this.locked) {\n this.open = true;\n }\n }\n\n public close(): void {\n this.open = false;\n }\n\n trackByHeader(i: number, group: SingleSelectComponent.OptionGroup<U>) {\n return `${i}${group.header}`;\n }\n\n trackByOption(_: number, option: U) {\n return option.id;\n }\n\n open: boolean = false;\n}\n\nexport namespace SingleSelectComponent {\n export type Option = {\n id: string;\n title: string;\n subtitle?: string;\n count?: number;\n disabled?: boolean;\n titleHighlightIndices?: HighlightComponent.HighlightIndices[];\n subtitleHighlightIndices?: HighlightComponent.HighlightIndices[];\n };\n\n type Node<V extends Option> = V & {\n selected: boolean;\n };\n\n export type OptionGroup<O extends Option> = {\n header?: string;\n options: O[];\n };\n\n export type FilterabilityOptions =\n | {\n enabled: false;\n }\n | {\n enabled: true;\n placeholder?: string;\n };\n\n export function getFilterSync<T extends OptionGroup<U>, U extends Option>(\n groups: T[],\n exact: boolean = false,\n ): (query: string) => T[] {\n return function filter(query: string) {\n if (!query) return groups;\n\n const fuseOptions = {\n keys: ['title', 'subtitle'],\n includeMatches: true,\n shouldSort: true,\n threshold: exact ? 0.0 : 0.6,\n };\n\n return groups\n .map(group => {\n const fuse = new Fuse(group.options, fuseOptions);\n const matches = fuse.search(query);\n\n return {\n ...group,\n options: matches.map(match => ({\n ...match.item,\n titleHighlightIndices: [\n ...(match.matches?.find(result => result.key === 'title')\n ?.indices || []),\n ],\n subtitleHighlightIndices: [\n ...(match.matches?.find(result => result.key === 'subtitle')\n ?.indices || []),\n ],\n })),\n };\n })\n .filter(group => group.options.length > 0); // Remove empty groups\n };\n }\n\n export function getFilterAsync<T extends OptionGroup<U>, U extends Option>(\n query$: Observable<string>,\n fetcher: (query: string) => Promise<T[]>,\n debounceInput: number = 300,\n ): Observable<{\n loading: boolean;\n groups: T[];\n }> {\n return query$.pipe(\n debounceTime(debounceInput),\n switchMap(query =>\n from(fetcher(query)).pipe(\n map(groups => {\n if (!query) return { loading: false, groups };\n\n const fuseOptions = {\n keys: ['title', 'subtitle'],\n includeMatches: true,\n shouldSort: true,\n threshold: 0.6,\n };\n\n const filteredGroups = groups\n .map(group => {\n const fuse = new Fuse(group.options, fuseOptions);\n const matches = fuse.search(query);\n\n return {\n ...group,\n options: matches.map(match => ({\n ...match.item,\n titleHighlightIndices: [\n ...(match.matches?.find(result => result.key === 'title')\n ?.indices || []),\n ],\n subtitleHighlightIndices: [\n ...(match.matches?.find(\n result => result.key === 'subtitle',\n )?.indices || []),\n ],\n })),\n };\n })\n .filter(group => group.options.length > 0); // Remove empty groups\n\n return { loading: false, groups: filteredGroups };\n }),\n startWith({ loading: true, groups: [] }),\n ),\n ),\n pairwise(),\n map(([previous, next]) => ({\n loading: next.loading,\n groups: next.loading ? previous.groups : next.groups,\n })),\n startWith({ loading: false, groups: [] }),\n );\n }\n}\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]=\"{ selectedOption }\"\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 (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container *ngIf=\"selectedOption; else placeholderValue\">\n <span class=\"value\">{{ selectedOption.title }}</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 *ngIf=\"!locked\" [name]=\"'ChevronDown'\" [size]=\"16\"></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n</ng-template>\n\n<riv-callout\n *ngIf=\"open\"\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)=\"open = false\"\n>\n <input\n *ngIf=\"filterabilityOptions.enabled\"\n #filter\n class=\"filter\"\n [placeholder]=\"getFilterPlaceholder()\"\n [value]=\"filterQuery\"\n (input)=\"filterQuery = filter.value; filterQueryChange.emit(filterQuery)\"\n />\n <div class=\"options\">\n <riv-loading-cover [loading]=\"loading\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackByHeader\">\n <ng-container *ngIf=\"group.header\">\n <span class=\"group-header\">\n {{ group.header }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"group.options; let nodes\">\n <ng-container *ngIf=\"nodes.length > 0; else empty\">\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByOption\">\n <ng-container *ngIf=\"nodeTemplate; else standardTemplate\">\n <button\n class=\"custom-single-select-node\"\n [disabled]=\"node.disabled\"\n (click)=\"selectedOptionChange.emit(node); open = false\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate\"\n [ngTemplateOutletContext]=\"{ node }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTemplate>\n <button\n class=\"single-select-node\"\n [class.selected]=\"node?.id === selectedOption?.id\"\n [class.disabled]=\"node?.disabled\"\n [disabled]=\"node?.disabled\"\n (click)=\"selectedOptionChange.emit(node); open = false\"\n type=\"button\"\n >\n <riv-icon\n [name]=\"'Check'\"\n *ngIf=\"node?.id === selectedOption?.id\"\n [size]=\"16\"\n ></riv-icon>\n <span class=\"label\">\n <span class=\"label-title\">\n <riv-highlight\n [text]=\"node?.title || ''\"\n [indices]=\"node?.titleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n <span *ngIf=\"node?.subtitle\" class=\"label-subtitle\">\n <riv-highlight\n [text]=\"node?.subtitle || ''\"\n [indices]=\"node?.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n </span>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <div class=\"empty\">\n {{ noOptionsMessage }}\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n </riv-loading-cover>\n </div>\n <div class=\"footer\">\n <ng-content select=\"[footer]\"> </ng-content>\n </div>\n</riv-callout>\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';\nimport { SingleSelectComponent } from '../single-select/single-select.component';\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 = SingleSelectComponent.Option & { date: Date };\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@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).map(\n 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 ),\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.valueOf() < min.valueOf() || month.valueOf() > max.valueOf(),\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.valueOf() < min.valueOf()) 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.valueOf() > max.valueOf()) 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 @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 <ng-template #selectTrigger let-selectedOption=\"selectedOption\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ selectedOption.title || '...' }}\n </button>\n </ng-template>\n <riv-single-select\n placeholder=\"Month...\"\n [groups]=\"monthOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedMonthOption$ | async\"\n (selectedOptionChange)=\"activeYearMonthChange.emit($event.date)\"\n [triggerTemplate]=\"selectTrigger\"\n ></riv-single-select>\n <riv-single-select\n placeholder=\"Year...\"\n [groups]=\"yearOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedYearOption$ | async\"\n (selectedOptionChange)=\"activeYearMonthChange.emit($event.date)\"\n [triggerTemplate]=\"selectTrigger\"\n ></riv-single-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 startWith,\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';\nimport { SingleSelectComponent } from '../single-select/single-select.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@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 open$ = new BehaviorSubject(false);\n\n readonly userSelectedPreset$ = new Subject<DateRangeComponent.Preset>();\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(map(preset => preset.dates)),\n ).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\n readonly presetFilterQuery$ = new BehaviorSubject('');\n readonly filteredPresetOptions$ = this.presetFilterQuery$.pipe(\n map(query => DateRangeComponent.filterPresets(query)),\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 map(ids =>\n ids\n .map(id =>\n DateRangeComponent.Presets.find(preset => preset.id === id),\n )\n .filter((p): p is DateRangeComponent.Preset => p !== undefined),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly userLeftActiveYearMonth$ = new Subject<Date>();\n readonly userRightActiveYearMonth$ = new Subject<Date>();\n\n readonly leftActiveYearMonth$ = merge(\n this.userLeftActiveYearMonth$.pipe(startWith(timeMonth.floor(this.TODAY))),\n this.userSelectedPreset$.pipe(\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 ).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\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 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 ]).pipe(\n map(([left, userRight]) => {\n if (left.valueOf() >= userRight.valueOf())\n return timeMonth.floor(timeMonth.offset(left, 1));\n else return userRight;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\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\n readonly rightMin$ = this.leftActiveYearMonth$.pipe(\n map(left => timeMonth.floor(timeMonth.offset(left, 1))),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n readonly rightMax$ = this.max$.pipe(\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 @Output()\n readonly valueChange: Observable<[Date, Date] | undefined> =\n this.selectedValue$.pipe(\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 const Presets: (SingleSelectComponent.Option & {\n dates: [Date, Date];\n })[] = [\n {\n id: 'today',\n title: 'Today',\n subtitle: 'Today from midnight until the current time',\n dates: [timeDay(), timeDay()],\n },\n {\n id: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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 export type Preset = (typeof Presets)[number];\n\n export const filterPresets = SingleSelectComponent.getFilterSync([\n { options: Presets },\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 <riv-callout\n *ngIf=\"open$ | async\"\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 <ng-template #presetTpl 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-single-select\n [label]=\"'Date presets'\"\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Search...' }\"\n (filterQueryChange)=\"presetFilterQuery$.next($event)\"\n [groups]=\"(filteredPresetOptions$ | async) ?? []\"\n [selectedOption]=\"selectedPreset$ | async\"\n (selectedOptionChange)=\"userSelectedPreset$.next($event)\"\n [nodeTemplate]=\"presetTpl\"\n ></riv-single-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-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { timeMonth } from 'd3-time';\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 open = false;\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 = 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<riv-callout\n *ngIf=\"open\"\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 = false\"\n>\n <div class=\"content\">\n <riv-calendar\n [activeYearMonth]=\"activeYearMonth\"\n (activeYearMonthChange)=\"activeYearMonth = $event\"\n [displayMin]=\"min\"\n [displayMax]=\"max\"\n [selectedValue]=\"value\"\n (dateSelect)=\"valueChange.next($event); open = false\"\n ></riv-calendar>\n </div>\n</riv-callout>\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class CalloutService {\n public calloutStack$ = new BehaviorSubject<TemplateRef<unknown>[]>([]);\n\n public add(callout: TemplateRef<unknown>) {\n this.calloutStack$.next([...this.calloutStack$.getValue(), callout]);\n }\n\n public remove(callout: TemplateRef<unknown>) {\n this.calloutStack$.next(\n this.calloutStack$.getValue().filter(c => c !== callout),\n );\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalloutService } from './callout.service';\n\n@Component({\n selector: 'riv-callout-outlet',\n templateUrl: './callout-outlet.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalloutOutletComponent {\n constructor(readonly calloutService: CalloutService) {}\n}\n","<ng-container *ngFor=\"let callout of calloutService.calloutStack$ | async\">\n <ng-container *ngTemplateOutlet=\"callout\"></ng-container>\n</ng-container>\n","import {\n ChangeDetectorRef,\n Directive,\n OnDestroy,\n OnInit,\n TemplateRef,\n} from '@angular/core';\nimport { CalloutService } from './callout.service';\n\n@Directive({\n selector: '[riv-callout]',\n})\nexport class CalloutDirective implements OnInit, OnDestroy {\n constructor(\n private readonly template: TemplateRef<unknown>,\n private readonly calloutService: CalloutService,\n private readonly cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.calloutService.add(this.template);\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n this.calloutService.remove(this.template);\n this.cdr.detectChanges();\n }\n}\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';\n\n@Component({\n selector: 'riv-zero-state',\n template: `{{ message }}`,\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","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 { ChangeDetectionStrategy, Component, Input } 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 card: boolean = false;\n\n @Input()\n help?: string;\n\n @Input()\n align?: 'left' | 'right' = '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","<div *ngIf=\"card; else content\" class=\"card\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n<ng-template #content>\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</ng-template>\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 get backgroundColor(): string {\n return `var(${this.colorToken})`;\n }\n}\n","<i [style.background-color]=\"backgroundColor\"></i>\n<span *ngIf=\"label\">{{ label }}</span>\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 @Output()\n itemClick = new EventEmitter();\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() : 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 ></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 [class.low-contrast]=\"visibility === 'hidden' || visibility === 'locked'\"\n >\n {{ label }}\n </span>\n</button>\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) {\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\nexport function getColumnWidth(numColumns: number) {\n if (numColumns <= 6) return 72;\n if (numColumns <= 18) return 40;\n if (numColumns <= 40) return 16;\n return 8;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\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 { SingleSelectComponent } from '../../input/single-select/single-select.component';\nimport {\n Interval,\n getIntervalTitle,\n getMajorInterval,\n getMajorIntervalFormat,\n getMinorIntervalFormat,\n getTimeInterval,\n intervals,\n} from '../intervals';\nimport {\n getColumnWidth,\n getDateRange,\n pointReducer,\n} from './stacked-column.helpers';\n\nconst MAX_COLUMNS = 72;\nconst DEFAULT_INTERVAL: Interval = 'month';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\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 @Input()\n public set width(v: number) {\n this.width$.next(v);\n }\n public get width(): number {\n return this.width$.getValue();\n }\n\n private readonly height$ = new BehaviorSubject<number>(256);\n @Input()\n public set height(v: number) {\n this.height$.next(v);\n }\n public get height(): number {\n return this.height$.getValue();\n }\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 this.interval$.next(v);\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<any>;\n\n private readonly allowedIntervals$: Observable<Interval[]> = this.input$.pipe(\n map(input => {\n const numVisibleColumns = input.filter(\n stack => stack.filter(s => s.style === 'tooltipOnly').length === 0,\n ).length;\n\n const [minDate, maxDate] = getDateRange(input);\n\n return intervals.filter(interval => {\n const timeInterval = getTimeInterval(interval);\n const xStepsCount = timeInterval.range(\n timeInterval.floor(minDate),\n timeInterval.floor(timeInterval.offset(maxDate, 1)),\n ).length;\n return numVisibleColumns * xStepsCount <= MAX_COLUMNS;\n });\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly intervalOptions$ = this.allowedIntervals$.pipe(\n map(intervals =>\n intervals.map(\n (interval): SingleSelectComponent.Option => ({\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: SingleSelectComponent.Option) {\n this.interval = option.id as Interval;\n }\n\n readonly binnedData$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n ]).pipe(\n map(([input, interval]) =>\n input.map((stack): StackedColumnComponent.Stack => {\n const timeInterval = getTimeInterval(interval);\n\n return stack.map(series => {\n const binned = new Map<number, StackedColumnComponent.Value[]>();\n for (const point of series.data) {\n const bin = timeInterval.floor(point.date).valueOf();\n if (!binned.has(bin)) {\n binned.set(bin, []);\n }\n binned.get(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 }),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly LEFT_OFFSET = 48;\n\n readonly drawData$ = combineLatest([\n this.binnedData$,\n this.width$,\n this.height$,\n this.selectedInterval$,\n ]).pipe(\n map(([binnedData, width, height, interval]) => {\n const viewBox = `0 0 ${width} ${height}`;\n const padding = 16;\n\n const invisColumns = binnedData.filter(\n stack => stack.filter(s => s.style == 'tooltipOnly').length > 0,\n ).length;\n const visibleColumns = binnedData.length - invisColumns;\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 columnWidth = getColumnWidth(xSteps.length * visibleColumns);\n const columnPadding = 4;\n const outerPadding =\n (xOuterScale.bandwidth() -\n (columnPadding * (binnedData.length - 1 - invisColumns) +\n columnWidth * (binnedData.length - invisColumns))) /\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.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.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 if (_.series.style == 'tooltipOnly') {\n return;\n }\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([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 let invisColumnsSoFar = 0;\n // For each unique stack,\n renderInformation.forEach(({ stacked, indexedTable }, index) => {\n let invisColumnFound = false;\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 if (seriesPoint.series.style == 'tooltipOnly') {\n invisColumnFound = true;\n }\n const width =\n seriesPoint.series.style == 'tooltipOnly' ? 0 : columnWidth;\n const height = yScale(baseline) - yScale(topline);\n const x =\n (xOuterScale(fullFormatter(date)) ?? 0) +\n outerPadding +\n columnWidth * (index - invisColumnsSoFar) +\n columnPadding * (index - invisColumnsSoFar);\n const y = yScale(baseline) - height;\n let fill = '';\n if (seriesPoint.series.style != 'tooltipOnly') {\n fill = `var(${seriesPoint.series.colorToken})`;\n }\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 if (invisColumnFound) {\n invisColumnsSoFar++;\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 - invisColumns) * columnWidth +\n (renderInformation.length + 1 - invisColumns) * columnPadding;\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 => stack.every(series => series.data.length === 0)),\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$ = combineLatest([this.hoveredBand$, this.drawData$]).pipe(\n map(([hoveredBand, drawData]) => {\n if (!hoveredBand) 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 };\n const metrics: Metric[] = drawData.rects\n .filter(rect => rect.dateValue === hoveredBand.dateValue)\n .map(rect => ({\n label: rect.seriesPoint.series.label,\n value: this.valueFormatter(rect.seriesPoint.value),\n }));\n\n return { anchor, metrics };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace StackedColumnComponent {\n export type Value = { date: Date; value: number };\n\n export type Series = {\n label: string;\n data: Value[];\n } & (\n | {\n colorToken: string;\n style?: 'solid' | 'striped';\n }\n | {\n style: 'tooltipOnly';\n }\n );\n\n export type Stack = Series[];\n}\n","<div *ngIf=\"!(empty$ | async); else zeroState\" class=\"container\">\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 <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 ></rect>\n </svg>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-callout\n [anchor]=\"callout.anchor\"\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 <div class=\"callout-metric\" *ngFor=\"let metric of callout.metrics\">\n <div>{{ metric.label }}</div>\n <div class=\"callout-metric-value\">{{ metric.value }}</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-single-select\n [groups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-single-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};\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};\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): RowDisplayInfo {\n const elementsButStacked: StackedRowElement[] = [];\n let currentBaseline: number = 0;\n let currentTopline: number = 0;\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 };\n}\n","import { ChangeDetectionStrategy, Component, Input } 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 {\n RowDisplayInfo,\n RowLabel,\n RowRectangle,\n StackedRowDrawData,\n getKeyOrder,\n getLegendItems,\n getRowDisplayInfo,\n standardizeRowStacks,\n} from './stacked-row.helpers';\n\ntype CalloutMetric = {\n rowName: string;\n elementLabel: string;\n value: string;\n};\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\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>(960);\n @Input()\n public set width(v: number) {\n this.width$.next(v);\n }\n public get width(): number {\n return this.width$.getValue();\n }\n\n // Height helps determine the size of the viewbox this graph is displaying in.\n private readonly height$ = new BehaviorSubject<number | null>(null);\n @Input()\n public set height(v: number | null) {\n this.height$.next(v);\n }\n public get height(): number | null {\n return this.height$.getValue();\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 /*\n The layout we are shooting for is:\n\n | X Axis Labels |\n Row Name | Rectangles | Totals\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 SECTION_HEIGHTS = {\n // Space reserved for the x-axis labels\n X_AXIS_LABEL: 14,\n // Height of each row\n PER_ROW: (): number => {\n //Only use height if specified\n if (this.input.length && this.height) {\n let rowHeight =\n (this.height -\n this.SECTION_HEIGHTS.X_AXIS_LABEL -\n this.SECTION_PADDING.OUTER_TOP_BOTTOM -\n this.SECTION_PADDING.RECTANGLE_TO_ROW) /\n this.input.length; // calculate base row height\n // Clamping the row height between the min and max heights\n return Math.min(\n Math.max(rowHeight, this.RECTANGLE_HEIGHTS.MIN_HEIGHT),\n this.RECTANGLE_HEIGHTS.MAX_HEIGHT,\n );\n }\n return (\n this.RECTANGLE_HEIGHTS.MIN_HEIGHT + this.SECTION_PADDING.BETWEEN_ROW\n ); // Default if no input\n },\n // Max Height of each rectangle\n PER_RECTANGLE: (): number => {\n //Only use height if specified\n if (this.input.length && this.height) {\n let rectangleHeight =\n (this.height -\n this.SECTION_HEIGHTS.X_AXIS_LABEL -\n this.SECTION_PADDING.OUTER_TOP_BOTTOM -\n this.SECTION_PADDING.RECTANGLE_TO_ROW) /\n this.input.length -\n this.SECTION_PADDING.BETWEEN_ROW; // calculate base rectangle height\n // Clamping the rectangle height between the min and max heights\n return Math.min(\n Math.max(rectangleHeight, this.RECTANGLE_HEIGHTS.MIN_HEIGHT),\n this.RECTANGLE_HEIGHTS.MAX_HEIGHT,\n );\n }\n return this.RECTANGLE_HEIGHTS.MIN_HEIGHT; // Default if no input\n },\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) {\n const spaceAboveRows: number =\n this.SECTION_PADDING.OUTER_TOP_BOTTOM + this.SECTION_HEIGHTS.X_AXIS_LABEL;\n\n const aboveRows: number = rowIndex * this.SECTION_HEIGHTS.PER_ROW();\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 height: number,\n ) {\n if (rowStacks.length == 0) {\n return null;\n }\n const viewBox = `0 0 ${width} ${height}`;\n\n const keysInOrder: InternSet<string> = getKeyOrder(rowStacks);\n const standardizedRows: StackedRowComponent.RowStack[] =\n standardizeRowStacks(rowStacks, keysInOrder);\n const rowsForDisplay: RowDisplayInfo[] = standardizedRows.map(stackData => {\n return getRowDisplayInfo(stackData);\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 );\n\n const rowNamesToDraw: RowLabel[] = this.getRowNamesToDraw(rowsForDisplay);\n const rowTotalsToDraw: RowLabel[] = this.getRowTotalsToDraw(\n rowsForDisplay,\n width,\n );\n\n const legendItems = getLegendItems(rowsForDisplay, keysInOrder);\n\n return {\n legendItems: legendItems,\n rowHeight: this.SECTION_HEIGHTS.PER_RECTANGLE(),\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 ): RowRectangle[] {\n const rectangles: RowRectangle[] = [];\n displayRows.forEach((currentRow, rowIndex) => {\n currentRow.elementsButStacked.forEach((currentElement, _) => {\n const topOfRow: number = this.getTopOfRow(rowIndex);\n\n const rectangleWidth: number =\n xScale(currentElement.topline) - xScale(currentElement.baseline);\n const rectangleHeight: number = this.SECTION_HEIGHTS.PER_RECTANGLE();\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: rectangleWidth,\n height: rectangleHeight,\n fill: fill,\n striped: currentElement.style === 'striped',\n rowName: currentRow.rowName,\n stackedRowElement: currentElement,\n });\n });\n });\n return rectangles;\n }\n\n // Get data on the row names we are drawing\n getRowNamesToDraw(displayRows: RowDisplayInfo[]): 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) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.SECTION_HEIGHTS.PER_RECTANGLE() / 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(displayRows: RowDisplayInfo[], width: number): 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) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.SECTION_HEIGHTS.PER_RECTANGLE() / 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.height$,\n ]).pipe(\n map(([input, width, height]) => {\n return this.getDrawnData(\n input,\n width,\n height\n ? height\n : this.SECTION_HEIGHTS.X_AXIS_LABEL +\n this.SECTION_PADDING.OUTER_TOP_BOTTOM +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.SECTION_HEIGHTS.PER_ROW() * input.length,\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 };\n const metrics: Metric[] = drawData.rects\n .filter(rect => rect.rowName === hoveredBand.rowName)\n .map(rect => ({\n label: rect.stackedRowElement.label,\n value: this.valueFormatter(rect.stackedRowElement.value),\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?: 'solid' | 'striped';\n };\n // The input that determines one row.\n export type RowStack = {\n rowName: string;\n data: RowElement[];\n };\n}\n","<div *ngIf=\"!(empty$ | async); else zeroState\" class=\"container\">\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 >\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-callout\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 >\n <div class=\"callout-content\">\n <div class=\"callout-metric\" *ngFor=\"let metric of callout.metrics\">\n <div>{{ metric.label }}</div>\n <div class=\"callout-metric-value\">{{ metric.value }}</div>\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 Input,\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 { SingleSelectComponent } from '../../input/single-select/single-select.component';\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 MAX_POINTS = 90;\nconst DEFAULT_INTERVAL: Interval = 'day';\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@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>(960);\n @Input()\n public set width(v: number) {\n this.width$.next(v);\n }\n public get width(): number {\n return this.width$.getValue();\n }\n\n private readonly height$ = new BehaviorSubject<number>(256);\n @Input()\n public set height(v: number) {\n this.height$.next(v);\n }\n public get height(): number {\n return this.height$.getValue();\n }\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_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 X_MINOR_TICK_LIMIT = 15;\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 this.interval$.next(v);\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<any>;\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 allowedIntervals$: Observable<Interval[]> = this.input$.pipe(\n map(input => {\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 <= MAX_POINTS && 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): SingleSelectComponent.Option => ({\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: SingleSelectComponent.Option) {\n this.interval = option.id as Interval;\n }\n\n readonly toggleVisibility$ =\n new BehaviorSubject<TimeSeriesComponent.ToggleVisibility | null>(null);\n\n readonly binnedData$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n this.toggleVisibility$,\n ]).pipe(\n map(([input, interval, toggleVisibility]) =>\n 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 bin = getTimeInterval(interval).floor(point.date).valueOf();\n if (!binned.has(bin)) {\n binned.set(bin, []);\n }\n binned.get(bin)!.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 ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedDateRange$ = this.binnedData$.pipe(\n map(getDateRange),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly drawData$: Observable<DrawData> = combineLatest([\n this.binnedData$,\n this.binnedDateRange$,\n this.selectedInterval$,\n this.width$,\n this.height$,\n ]).pipe(\n map(([binnedData, binnedDateRange, interval, width, height]) => {\n const viewBox = `0 0 ${width} ${height}`;\n\n const xScale = scaleLinear()\n .domain(binnedDateRange)\n .range([\n this.LEFT_OFFSET + this.LEFT_RIGHT_PADDING,\n width - this.LEFT_RIGHT_PADDING * 2,\n ]);\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: date.valueOf(),\n label: minorFormatter(date),\n }))\n .filter((_, i, arr) =>\n arr.length > this.X_MINOR_TICK_LIMIT\n ? i % Math.round(arr.length / this.X_MINOR_TICK_LIMIT) === 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 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 } | null>(null);\n\n readonly callout$ = combineLatest([this.hoveredMarker$, this.drawData$]).pipe(\n map(([hoveredMarker, drawData]) => {\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 };\n const metrics: Metric[] = [];\n\n for (const series of drawData.y1.series) {\n if (series.visibility !== 'hidden') {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\n label: series.label,\n value: drawData.y1.valueFormatter(match.value),\n });\n }\n }\n }\n\n if (drawData.y2) {\n for (const series of drawData.y2.series) {\n if (series.visibility !== 'hidden') {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\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","<div *ngIf=\"!(empty$ | async); else zeroState\" class=\"container\">\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)\"\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]=\"d.y1.yScale(d.y1.yMin)\"\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]=\"d.y1.yScale(d.y1.yMin)\"\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]=\"d.x.xScale(d.x.xMax)\"\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\">\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 *ngFor=\"let marker of series.markers\">\n <circle\n *ngIf=\"series.visibility != 'hidden'\"\n class=\"data marker\"\n [class.focused]=\"(hoveredMarker$ | async)?.marker?.x === marker.x\"\n [class.blurred]=\"\n (hoveredMarker$ | async) !== null &&\n (hoveredMarker$ | async)?.marker?.x !== marker.x\n \"\n [attr.cx]=\"marker.x\"\n [attr.cy]=\"marker.y\"\n r=\"3.5\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n (mouseover)=\"hoveredMarker$.next({ event: $event, marker: marker })\"\n (mouseleave)=\"hoveredMarker$.next(null)\"\n ></circle>\n </ng-container>\n </ng-template>\n <g *ngFor=\"let series of d.y1.series\">\n <ng-container\n *ngTemplateOutlet=\"seriesTpl; context: { series: series }\"\n ></ng-container>\n </g>\n <g *ngFor=\"let series of d.y2?.series\">\n <ng-container\n *ngTemplateOutlet=\"seriesTpl; context: { series: series }\"\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-callout\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'top-center'\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-metric\" *ngFor=\"let metric of callout.metrics\">\n <div>{{ metric.label }}</div>\n <div class=\"callout-metric-value\">{{ metric.value }}</div>\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-single-select\n [groups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-single-select>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TextToggleComponent } from './content-toggle/text-toggle/text-toggle.component';\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 { OptionGroupPipe } from './format/pipes/option-group.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 { ButtonComponent } from './input/button/button.component';\nimport { CalendarComponent } from './input/calendar/calendar.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 { SingleSelectComponent } from './input/single-select/single-select.component';\nimport { LoadingCoverComponent } from './load/loading-cover/loading-cover.component';\nimport { LoadingComponent } from './load/loading/loading.component';\nimport { CalloutOutletComponent } from './modal/callout/callout-outlet.component';\nimport { CalloutComponent } from './modal/callout/callout.component';\nimport { CalloutDirective } from './modal/callout/callout.directive';\nimport { LockScrollDirective } from './modal/callout/lock-scroll.directive';\nimport { HelpComponent } from './modal/help/help.component';\nimport { TooltipComponent } from './modal/tooltip/tooltip.component';\nimport { TooltipDirective } from './modal/tooltip/tooltip.directive';\nimport { LinkComponent } from './navigation/link/link.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 { 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';\n\n@NgModule({\n declarations: [\n ButtonComponent,\n CalendarComponent,\n CalloutComponent,\n CalloutDirective,\n CalloutOutletComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DollarsPipe,\n DonutComponent,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n LockScrollDirective,\n MetricComponent,\n NumberPipe,\n OptionGroupPipe,\n PercentagePipe,\n SingleSelectComponent,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n TextToggleComponent,\n TimeSeriesComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ZeroStateComponent,\n ],\n exports: [\n ButtonComponent,\n CalloutComponent,\n CalloutDirective,\n CalloutOutletComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DollarsPipe,\n DonutComponent,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n MetricComponent,\n NumberPipe,\n OptionGroupPipe,\n PercentagePipe,\n SingleSelectComponent,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n TextToggleComponent,\n TimeSeriesComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ZeroStateComponent,\n ],\n imports: [CommonModule],\n})\nexport class RivModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.IconComponent","AngularDatePipe","i2.LockScrollDirective","i2.CalloutComponent","i1.TooltipDirective","i3.LoadingComponent","i1.IconComponent","i2.TooltipDirective","i2.HelpComponent","i3.LinkComponent","i2.LoadingComponent","i3.HighlightComponent","i4.IconComponent","i5.InputLabelComponent","i6.LoadingCoverComponent","i2.ButtonComponent","i3.SingleSelectComponent","i4.OptionGroupPipe","i3.CalendarComponent","i4.CalloutComponent","i5.HighlightComponent","i6.IconComponent","i7.InputLabelComponent","i8.SingleSelectComponent","i9.TooltipDirective","i2.CalendarComponent","i3.CalloutComponent","i6.DatePipe","i1.CalloutService","i2","i1.DataTableRowComponent","i3.ZeroStateComponent","i3.TooltipDirective","i2.MetricComponent","i3.TrendComponent","getDateRange","DEFAULT_INTERVAL","i3.CalloutDirective","i4.SingleSelectComponent","i5.ZeroStateComponent","i6.OptionGroupPipe","i4.LegendItemComponent","i5.SVGTextTruncateDirective","i6.ZeroStateComponent","i5.SingleSelectComponent","i7.OptionGroupPipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rivet-health-design-system.mjs","sources":["../../../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/content-toggle/text-toggle/text-toggle.component.ts","../../../projects/riv/src/lib/content-toggle/text-toggle/text-toggle.component.html","../../../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/option-group.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/modal/callout/callout.helpers.ts","../../../projects/riv/src/lib/modal/callout/lock-scroll.directive.ts","../../../projects/riv/src/lib/modal/callout/callout.component.ts","../../../projects/riv/src/lib/modal/callout/callout.component.html","../../../projects/riv/src/lib/modal/tooltip/tooltip.component.ts","../../../projects/riv/src/lib/modal/tooltip/tooltip.component.html","../../../projects/riv/src/lib/modal/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/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/util/local-storage.ts","../../../projects/riv/src/lib/modal/help/help.component.ts","../../../projects/riv/src/lib/modal/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/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/load/loading-cover/loading-cover.component.ts","../../../projects/riv/src/lib/load/loading-cover/loading-cover.component.html","../../../projects/riv/src/lib/input/single-select/single-select.component.ts","../../../projects/riv/src/lib/input/single-select/single-select.component.html","../../../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/modal/callout/callout.service.ts","../../../projects/riv/src/lib/modal/callout/callout-outlet.component.ts","../../../projects/riv/src/lib/modal/callout/callout-outlet.component.html","../../../projects/riv/src/lib/modal/callout/callout.directive.ts","../../../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/zero-state/zero-state.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/legend-item/legend-item.component.ts","../../../projects/riv/src/lib/visualization/legend-item/legend-item.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/riv.module.ts","../../../projects/riv/src/rivet-health-design-system.ts"],"sourcesContent":["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 Activity = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-activity\">\\n <polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\"></polyline>\\n</svg>`;\nconst AlertCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-circle\">\\n <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>\\n</svg>`;\nconst AlertOctagon = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-octagon\">\\n <polygon points=\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\"></polygon><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"></line>\\n</svg>`;\nconst AlertTriangle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-alert-triangle\">\\n <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>\\n</svg>`;\nconst AlignLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-align-left\">\\n <line x1=\"17\" y1=\"10\" x2=\"3\" y2=\"10\"></line><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\"></line><line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\"></line><line x1=\"17\" y1=\"18\" x2=\"3\" y2=\"18\"></line>\\n</svg>`;\nconst Anchor = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-anchor\">\\n <circle cx=\"12\" cy=\"5\" r=\"3\"></circle><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"8\"></line><path d=\"M5 12H2a10 10 0 0 0 20 0h-3\"></path>\\n</svg>`;\nconst Archive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-archive\">\\n <polyline points=\"21 8 21 21 3 21 3 8\"></polyline><rect x=\"1\" y=\"3\" width=\"22\" height=\"5\"></rect><line x1=\"10\" y1=\"12\" x2=\"14\" y2=\"12\"></line>\\n</svg>`;\nconst ArrowDown = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-down\">\\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><polyline points=\"19 12 12 19 5 12\"></polyline>\\n</svg>`;\nconst ArrowDownLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-down-left\">\\n <line x1=\"17\" y1=\"7\" x2=\"7\" y2=\"17\"></line><polyline points=\"17 17 7 17 7 7\"></polyline>\\n</svg>`;\nconst ArrowLeft = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-left\">\\n <line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\"></line><polyline points=\"12 19 5 12 12 5\"></polyline>\\n</svg>`;\nconst ArrowLeftCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-left-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 8 8 12 12 16\"></polyline><line x1=\"16\" y1=\"12\" x2=\"8\" y2=\"12\"></line>\\n</svg>`;\nconst ArrowRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-right\">\\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line><polyline points=\"12 5 19 12 12 19\"></polyline>\\n</svg>`;\nconst ArrowUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-up\">\\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\"></line><polyline points=\"5 12 12 5 19 12\"></polyline>\\n</svg>`;\nconst ArrowUpRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-arrow-up-right\">\\n <line x1=\"7\" y1=\"17\" x2=\"17\" y2=\"7\"></line><polyline points=\"7 7 17 7 17 17\"></polyline>\\n</svg>`;\nconst AtSign = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-at-sign\">\\n <circle cx=\"12\" cy=\"12\" r=\"4\"></circle><path d=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\"></path>\\n</svg>`;\nconst Award = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-award\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"8\" r=\"7\"/><path d=\"M8.21 13.89 7 23l5-3 5 3-1.21-9.12\"/></svg>`;\nconst BarChart2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-bar-chart-2\">\\n <line x1=\"18\" y1=\"20\" x2=\"18\" y2=\"10\"></line><line x1=\"12\" y1=\"20\" x2=\"12\" y2=\"4\"></line><line x1=\"6\" y1=\"20\" x2=\"6\" y2=\"14\"></line>\\n</svg>`;\nconst Bell = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-bell\">\\n <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"></path><path d=\"M13.73 21a2 2 0 0 1-3.46 0\"></path>\\n</svg>`;\nconst Book = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-book\">\\n <path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"></path><path d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"></path>\\n</svg>`;\nconst BookOpen = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-book-open\">\\n <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"></path><path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"></path>\\n</svg>`;\nconst Briefcase = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-briefcase\">\\n <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"></rect><path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"></path>\\n</svg>`;\nconst Calendar = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-calendar\">\\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\\n</svg>`;\nconst Check = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check\">\\n <polyline points=\"20 6 9 17 4 12\"></polyline>\\n</svg>`;\nconst CheckCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check-circle\">\\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"></path><polyline points=\"22 4 12 14.01 9 11.01\"></polyline>\\n</svg>`;\nconst CheckSquare = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-check-square\">\\n <polyline points=\"9 11 12 14 22 4\"></polyline><path d=\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\"></path>\\n</svg>`;\nconst ChevronDown = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-down\\\">\\n <polyline points=\\\"6 9 12 15 18 9\\\"></polyline>\\n</svg>`;\nconst ChevronLeft = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-left\\\">\\n <polyline points=\\\"15 18 9 12 15 6\\\"></polyline>\\n</svg>`;\nconst ChevronRight = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevron-right\\\">\\n <polyline points=\\\"9 18 15 12 9 6\\\"></polyline>\\n</svg>`;\nconst ChevronsLeft = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevrons-left\\\">\\n <polyline points=\\\"11 17 6 12 11 7\\\"></polyline><polyline points=\\\"18 17 13 12 18 7\\\"></polyline>\\n</svg>`;\nconst ChevronsRight = `<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 24 24\\\" class=\\\"feather feather-chevrons-right\\\">\\n <polyline points=\\\"13 17 18 12 13 7\\\"></polyline><polyline points=\\\"6 17 11 12 6 7\\\"></polyline>\\n</svg>`;\nconst ChevronUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-chevron-up\">\\n <polyline points=\"18 15 12 9 6 15\"></polyline>\\n</svg>`;\nconst Clipboard = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-clipboard\">\\n <path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"></path><rect x=\"8\" y=\"2\" width=\"8\" height=\"4\" rx=\"1\" ry=\"1\"></rect>\\n</svg>`;\nconst Clock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-clock\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polyline points=\"12 6 12 12 16 14\"></polyline>\\n</svg>`;\nconst Coffee = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-coffee\">\\n <path d=\"M18 8h1a4 4 0 0 1 0 8h-1\"></path><path d=\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\"></path><line x1=\"6\" y1=\"1\" x2=\"6\" y2=\"4\"></line><line x1=\"10\" y1=\"1\" x2=\"10\" y2=\"4\"></line><line x1=\"14\" y1=\"1\" x2=\"14\" y2=\"4\"></line>\\n</svg>`;\nconst Copy = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-copy\">\\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\\n</svg>`;\nconst CornerLeftUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-corner-left-up\">\\n <polyline points=\"14 9 9 4 4 9\"></polyline><path d=\"M20 20h-7a4 4 0 0 1-4-4V4\"></path>\\n</svg>`;\nconst CreditCard = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-credit-card\">\\n <rect x=\"1\" y=\"4\" width=\"22\" height=\"16\" rx=\"2\" ry=\"2\"></rect><line x1=\"1\" y1=\"10\" x2=\"23\" y2=\"10\"></line>\\n</svg>`;\nconst Documents = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" ><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.75 6c-.464 0-.91.169-1.237.469C7.184 6.769 7 7.176 7 7.6v12.8c0 .424.184.831.513 1.131.328.3.773.469 1.237.469h10.5c.464 0 .91-.169 1.237-.469.329-.3.513-.707.513-1.131V8a2 2 0 0 0-2-2H8.75z\" /> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7 18H4.75c-.464 0-.91-.169-1.237-.469A1.534 1.534 0 0 1 3 16.4V3.6c0-.424.184-.831.513-1.131C3.84 2.169 4.286 2 4.75 2H15a2 2 0 0 1 2 2v2M17 14h-6M17 18h-6M13 10h-2\"/></svg>`;\nconst DollarSign = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-dollar-sign\">\\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"23\"></line><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"></path>\\n</svg>`;\nconst Download = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-download\">\\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line>\\n</svg>`;\nconst DownloadCloud = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-download-cloud\">\\n <polyline points=\"8 17 12 21 16 17\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\"></path>\\n</svg>`;\nconst Edit = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-edit\">\\n <path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"></path><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"></path>\\n</svg>`;\nconst Edit2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-edit-2\">\\n <path d=\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\"></path>\\n</svg>`;\nconst Exchange = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.5 4l4 4-4 4M9 20l-4-4 4-4M3 8h15M6 16h15\"/></svg>`;\nconst ExternalLink = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-external-link\">\\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"></path><polyline points=\"15 3 21 3 21 9\"></polyline><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"></line>\\n</svg>`;\nconst Eye = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-eye\">\\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle>\\n</svg>`;\nconst EyeOff = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-eye-off\">\\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line>\\n</svg>`;\nconst File = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file\">\\n <path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"></path><polyline points=\"13 2 13 9 20 9\"></polyline>\\n</svg>`;\nconst FilePlus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file-plus\">\\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"12\"></line><line x1=\"9\" y1=\"15\" x2=\"15\" y2=\"15\"></line>\\n</svg>`;\nconst FileText = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-file-text\">\\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line><polyline points=\"10 9 9 9 8 9\"></polyline>\\n</svg>`;\nconst Filter = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-filter\">\\n <polygon points=\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"></polygon>\\n</svg>`;\nconst Flag = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-flag\">\\n <path d=\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\"></path><line x1=\"4\" y1=\"22\" x2=\"4\" y2=\"15\"></line>\\n</svg>`;\nconst Folder = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-folder\">\\n <path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\"></path>\\n</svg>`;\nconst Hash = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-hash\">\\n <line x1=\"4\" y1=\"9\" x2=\"20\" y2=\"9\"></line><line x1=\"4\" y1=\"15\" x2=\"20\" y2=\"15\"></line><line x1=\"10\" y1=\"3\" x2=\"8\" y2=\"21\"></line><line x1=\"16\" y1=\"3\" x2=\"14\" y2=\"21\"></line>\\n</svg>`;\nconst Heart = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-heart\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"></path></svg>`;\nconst HeartActive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-heart\"><path fill=\"currentColor\" d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"></path></svg>`;\nconst HelpCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-help-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"></path><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>\\n</svg>`;\nconst Home = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-home\">\\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"></path><polyline points=\"9 22 9 12 15 12 15 22\"></polyline>\\n</svg>`;\nconst Inbox = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-inbox\">\\n <polyline points=\"22 12 16 12 14 15 10 15 8 12 2 12\"></polyline><path d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"></path>\\n</svg>`;\nconst Info = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-info\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"></line><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"></line>\\n</svg>`;\nconst Key = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-key\">\\n <path d=\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\"></path>\\n</svg>`;\nconst Layers = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-layers\">\\n <polygon points=\"12 2 2 7 12 12 22 7 12 2\"></polygon><polyline points=\"2 17 12 22 22 17\"></polyline><polyline points=\"2 12 12 17 22 12\"></polyline>\\n</svg>`;\nconst Link2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-link-2\">\\n <path d=\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\"></path><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst List = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-list\">\\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line><line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line><line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line><line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line>\\n</svg>`;\nconst Lock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-lock\">\\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"></path>\\n</svg>`;\nconst Mail = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-mail\">\\n <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"></path><polyline points=\"22,6 12,13 2,6\"></polyline>\\n</svg>`;\nconst MapPin = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-map-pin\">\\n <path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"></path><circle cx=\"12\" cy=\"10\" r=\"3\"></circle>\\n</svg>`;\nconst Maximize = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-maximize\">\\n <path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"></path>\\n</svg>`;\nconst Maximize2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-maximize-2\">\\n <polyline points=\"15 3 21 3 21 9\"></polyline><polyline points=\"9 21 3 21 3 15\"></polyline><line x1=\"21\" y1=\"3\" x2=\"14\" y2=\"10\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>\\n</svg>`;\nconst Menu = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-menu\">\\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\\n</svg>`;\nconst MessageCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-message-circle\">\\n <path d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"></path>\\n</svg>`;\nconst MessageCircleActive = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-message-circle\">\\n <path fill=\"currentColor\" d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"></path>\\n</svg>`;\nconst Minimize2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minimize-2\">\\n <polyline points=\"4 14 10 14 10 20\"></polyline><polyline points=\"20 10 14 10 14 4\"></polyline><line x1=\"14\" y1=\"10\" x2=\"21\" y2=\"3\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line>\\n</svg>`;\nconst Minus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minus\">\\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\\n</svg>`;\nconst MinusCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-minus-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst MoreHorizontal = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-more-horizontal\">\\n <circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"19\" cy=\"12\" r=\"1\"></circle><circle cx=\"5\" cy=\"12\" r=\"1\"></circle>\\n</svg>`;\nconst MoreVertical = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-more-vertical\">\\n <circle cx=\"12\" cy=\"12\" r=\"1\"></circle><circle cx=\"12\" cy=\"5\" r=\"1\"></circle><circle cx=\"12\" cy=\"19\" r=\"1\"></circle>\\n</svg>`;\nconst Paperclip = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-paperclip\">\\n <path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\"></path>\\n</svg>`;\nconst Percent = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-percent\">\\n <line x1=\"19\" y1=\"5\" x2=\"5\" y2=\"19\"></line><circle cx=\"6.5\" cy=\"6.5\" r=\"2.5\"></circle><circle cx=\"17.5\" cy=\"17.5\" r=\"2.5\"></circle>\\n</svg>`;\nconst Phone = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-phone\">\\n <path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"></path>\\n</svg>`;\nconst PieChart = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-pie-chart\">\\n <path d=\"M21.21 15.89A10 10 0 1 1 8 2.83\"></path><path d=\"M22 12A10 10 0 0 0 12 2v10z\"></path>\\n</svg>`;\nconst PinActive = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15L12 23\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 1H18L15 4L16 12.5L20 15H4L8 12.5L9 4L6 1Z\" fill=\"currentColor\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst PinInactive = `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12 15L12 23\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M6 1H18L15 4L16 12.5L20 15H4L8 12.5L9 4L6 1Z\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`;\nconst PlayCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-play-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><polygon points=\"10 8 16 12 10 16 10 8\"></polygon>\\n</svg>`;\nconst Plus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-plus\">\\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"></line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\\n</svg>`;\nconst PlusCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-plus-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"></line><line x1=\"8\" y1=\"12\" x2=\"16\" y2=\"12\"></line>\\n</svg>`;\nconst Power = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-power\">\\n <path d=\"M18.36 6.64a9 9 0 1 1-12.73 0\"></path><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"12\"></line>\\n</svg>`;\nconst Printer = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-printer\">\\n <polyline points=\"6 9 6 2 18 2 18 9\"></polyline><path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"></path><rect x=\"6\" y=\"14\" width=\"12\" height=\"8\"></rect>\\n</svg>`;\nconst RefreshCw = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-refresh-cw\">\\n <polyline points=\"23 4 23 10 17 10\"></polyline><polyline points=\"1 20 1 14 7 14\"></polyline><path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"></path>\\n</svg>`;\nconst Reminder = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M18.375 12V5.25c0-.9665-.7835-1.75-1.75-1.75H4.375c-.9665 0-1.75.7835-1.75 1.75V17.5c0 .9665.7835 1.75 1.75 1.75H12M14 1.75v3.5M7 1.75v3.5M2.625 8.75h15.75\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17.5 22.9193c2.9915 0 5.4166-2.4252 5.4166-5.4167s-2.4251-5.4167-5.4166-5.4167c-2.9916 0-5.4167 2.4252-5.4167 5.4167s2.4251 5.4167 5.4167 5.4167Z\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M17.5 14.25v3.25l2.1667 1.0833\"/></svg>`;\nconst Reorder = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M0,9 l24,0\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M0,15 l24,0\"/></svg>`;\nconst Reorder2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\"><path fill=\"currentColor\" d=\"M8 5h3v3H8zM8 11h3v3H8zM8 17h3v3H8zM13 5h3v3h-3zM13 11h3v3h-3zM13 17h3v3h-3z\"/></svg>`;\nconst Reply = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 17l-5-5 5-5\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M20 17v-1a4 4 0 0 0-4-4H4\"/></svg>`;\nconst ReplyAll = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11 17l-5-5 5-5\"/> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M7 17l-5-5 5-5\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M22 17v-1a4 4 0 0 0-4-4H6\"/></svg>`;\nconst RotateCw = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-rotate-cw\">\\n <polyline points=\"23 4 23 10 17 10\"></polyline><path d=\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"></path>\\n</svg>`;\nconst Save = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-save\">\\n <path d=\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\"></path><polyline points=\"17 21 17 13 7 13 7 21\"></polyline><polyline points=\"7 3 7 8 15 8\"></polyline>\\n</svg>`;\nconst Search = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-search\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\\n</svg>`;\nconst Send = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-send\">\\n <line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"></line><polygon points=\"22 2 15 22 11 13 2 9 22 2\"></polygon>\\n</svg>`;\nconst Settings = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-settings\">\\n <circle cx=\"12\" cy=\"12\" r=\"3\"></circle><path d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\"></path>\\n</svg>`;\nconst Share = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-share\">\\n <path d=\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\"></path><polyline points=\"16 6 12 2 8 6\"></polyline><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"15\"></line>\\n</svg>`;\nconst Shield = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-shield\">\\n <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"></path>\\n</svg>`;\nconst Sidebar = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-sidebar\">\\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\"></line>\\n</svg>`;\nconst Slash = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-slash\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\"></line>\\n</svg>`;\nconst Sliders = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-sliders\"><path d=\"M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6\"/></svg>`;\nconst Smile = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-smile\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><path d=\"M8 14s1.5 2 4 2 4-2 4-2\"></path><line x1=\"9\" y1=\"9\" x2=\"9.01\" y2=\"9\"></line><line x1=\"15\" y1=\"9\" x2=\"15.01\" y2=\"9\"></line>\\n</svg>`;\nconst Star = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-star\">\\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\"></polygon>\\n</svg>`;\nconst Sun = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-sun\">\\n <circle cx=\"12\" cy=\"12\" r=\"5\"></circle><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"></line><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"></line><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"></line><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"></line><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"></line><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"></line><line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"></line><line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"></line>\\n</svg>`;\nconst SupportChat = `<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\"/><path stroke=\"currentColor\" stroke-linecap=\"round\" d=\"M12 16v1\"/> <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.562 20.63a9 9 0 1 1 3.666-2.133 5.014 5.014 0 0 0 2.272 2.834A4.977 4.977 0 0 1 18 22a4.983 4.983 0 0 1-3.438-1.37z\"/></svg>`;\nconst Tag = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-tag\">\\n <path d=\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\"></path><line x1=\"7\" y1=\"7\" x2=\"7.01\" y2=\"7\"></line>\\n</svg>`;\nconst Target = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-target\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><circle cx=\"12\" cy=\"12\" r=\"6\"></circle><circle cx=\"12\" cy=\"12\" r=\"2\"></circle>\\n</svg>`;\nconst Tool = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-tool\">\\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\"></path>\\n</svg>`;\nconst Trash2 = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trash-2\">\\n <polyline points=\"3 6 5 6 21 6\"></polyline><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path><line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\"></line><line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\"></line>\\n</svg>`;\nconst TrendingDown = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trending-down\">\\n <polyline points=\"23 18 13.5 8.5 8.5 13.5 1 6\"></polyline><polyline points=\"17 18 23 18 23 12\"></polyline>\\n</svg>`;\nconst TrendingUp = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-trending-up\">\\n <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"></polyline><polyline points=\"17 6 23 6 23 12\"></polyline>\\n</svg>`;\nconst Unlock = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-unlock\">\\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"></rect><path d=\"M7 11V7a5 5 0 0 1 9.9-1\"></path>\\n</svg>`;\nconst UploadCloud = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-upload-cloud\">\\n <polyline points=\"16 16 12 12 8 16\"></polyline><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"></line><path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"></path><polyline points=\"16 16 12 12 8 16\"></polyline>\\n</svg>`;\nconst User = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user\">\\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"></path><circle cx=\"12\" cy=\"7\" r=\"4\"></circle>\\n</svg>`;\nconst UserCheck = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user-check\">\\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><polyline points=\"17 11 19 13 23 9\"></polyline>\\n</svg>`;\nconst UserPlus = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-user-plus\">\\n <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"8.5\" cy=\"7\" r=\"4\"></circle><line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\"></line><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"></line>\\n</svg>`;\nconst Users = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-users\">\\n <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"></path><circle cx=\"9\" cy=\"7\" r=\"4\"></circle><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"></path><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"></path>\\n</svg>`;\nconst X = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x\">\\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\\n</svg>`;\nconst XCircle = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x-circle\">\\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>\\n</svg>`;\nconst XSquare = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-x-square\">\\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line>\\n</svg>`;\nconst ZoomIn = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-zoom-in\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>\\n</svg>`;\nconst ZoomOut = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"feather feather-zoom-out\">\\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>\\n</svg>`;\n\nexport const icons = {\n Activity,\n AlertCircle,\n AlertOctagon,\n AlertTriangle,\n AlignLeft,\n Anchor,\n Archive,\n ArrowDown,\n ArrowDownLeft,\n ArrowLeft,\n ArrowLeftCircle,\n ArrowRight,\n ArrowUp,\n ArrowUpRight,\n AtSign,\n Award,\n BarChart2,\n Bell,\n Book,\n BookOpen,\n Briefcase,\n Calendar,\n Check,\n CheckCircle,\n CheckSquare,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n ChevronUp,\n Clipboard,\n Clock,\n Coffee,\n Copy,\n CornerLeftUp,\n CreditCard,\n Documents,\n DollarSign,\n Download,\n DownloadCloud,\n Edit,\n Edit2,\n Exchange,\n ExternalLink,\n Eye,\n EyeOff,\n File,\n FilePlus,\n FileText,\n Filter,\n Flag,\n Folder,\n Hash,\n Heart,\n HeartActive,\n HelpCircle,\n Home,\n Inbox,\n Info,\n Key,\n Layers,\n Link2,\n List,\n Lock,\n Mail,\n MapPin,\n Maximize,\n Maximize2,\n Menu,\n MessageCircle,\n MessageCircleActive,\n Minimize2,\n Minus,\n MinusCircle,\n MoreHorizontal,\n MoreVertical,\n Paperclip,\n Percent,\n Phone,\n PieChart,\n PinActive,\n PinInactive,\n PlayCircle,\n Plus,\n PlusCircle,\n Power,\n Printer,\n RefreshCw,\n Reminder,\n Reorder,\n Reorder2,\n Reply,\n ReplyAll,\n RotateCw,\n Save,\n Search,\n Send,\n Settings,\n Share,\n Shield,\n Sidebar,\n Slash,\n Sliders,\n Smile,\n Star,\n Sun,\n SupportChat,\n Tag,\n Target,\n Tool,\n Trash2,\n TrendingDown,\n TrendingUp,\n Unlock,\n UploadCloud,\n User,\n UserCheck,\n UserPlus,\n Users,\n X,\n XCircle,\n XSquare,\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, 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-text-toggle',\n templateUrl: './text-toggle.component.html',\n styleUrls: ['./text-toggle.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextToggleComponent {\n @Input()\n showLabel: string = '';\n\n @Input()\n hideLabel: string = '';\n\n @Input()\n open: boolean = false;\n}\n","<button class=\"toggle\" type=\"button\" (click)=\"open = !open\" type=\"button\">\n <riv-icon [class.open]=\"open\" [name]=\"'ChevronDown'\" [size]=\"24\"></riv-icon>\n <div>{{ open ? hideLabel : showLabel }}</div>\n</button>\n<div *ngIf=\"open\">\n <ng-content></ng-content>\n</div>\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 = 'shortDate',\n ) {\n return this.inner.transform(value, format) ?? NO_DATA_FALLBACK;\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 { Pipe, PipeTransform } from '@angular/core';\nimport { SingleSelectComponent } from '../../input/single-select/single-select.component';\n\n@Pipe({ name: 'rivOptionGroup' })\nexport class OptionGroupPipe<U extends SingleSelectComponent.Option>\n implements PipeTransform\n{\n transform(\n value?: U[],\n header?: string,\n ): SingleSelectComponent.OptionGroup<U>[] {\n return [\n {\n header: header,\n options: value ?? [],\n },\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 AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\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@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 {\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') content: ElementRef<HTMLDivElement> | null = null;\n\n @ViewChild('scrim', { static: false }) scrim: ElementRef<HTMLElement> | null =\n null;\n\n scrimClick(evt: MouseEvent) {\n if (evt.target === this.scrim?.nativeElement) {\n this.close.emit();\n }\n }\n\n left: number = 0;\n top: number = 0;\n resolvedPosition: CalloutComponent.AnchoredPosition = this.preferredPosition;\n\n ngAfterViewInit() {\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();\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)=\"$event.stopPropagation(); scrimClick($event)\"\n>\n <div\n class=\"callout\"\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 {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostListener,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport { CalloutComponent } from '../callout/callout.component';\n\nfunction isTemplate(\n v: string | TemplateRef<unknown>,\n): v is TemplateRef<unknown> {\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<unknown>;\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 [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<unknown>;\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 ApplicationRef,\n Directive,\n ElementRef,\n Input,\n OnInit,\n} from '@angular/core';\nimport { TooltipDirective } from '../../modal/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 OnInit\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 ngOnInit(): 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 let currentLength: number = this.text.length;\n\n element.textContent = this.text;\n // If the text can fit in the given width, no truncation needed.\n if (\n currentLength > 0 &&\n element.getSubStringLength(0, currentLength) <= this.width\n ) {\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 '../../modal/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","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 Renderer2,\n SimpleChanges,\n} from '@angular/core';\nimport { IconComponent } from '../../icon/icon.component';\nimport { LoadingComponent } from '../../load/loading/loading.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 ) {}\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 @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 })\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 case 'large':\n case 'xlarge':\n return 24;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['disabled'] && 'disabled' in this.el.nativeElement) {\n if (changes['disabled'].currentValue) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'true');\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\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 { 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 { 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}\n","<riv-icon [rivTooltip]=\"help\" [name]=\"'Info'\" [size]=\"16\"></riv-icon>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\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 @Input()\n disabled: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @HostBinding('class')\n get classes() {\n return this.disabled || this.locked ? 'disabled' : '';\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 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();\n}\n","<label *ngIf=\"label\">\n <span class=\"title\">\n {{ label }}\n <span *ngIf=\"required\" class=\"required\">*</span>\n </span>\n <button\n *ngIf=\"labelActionText\"\n rivLink\n type=\"button\"\n (click)=\"labelAction.emit()\"\n type=\"button\"\n >\n {{ labelActionText }}\n </button>\n <riv-help *ngIf=\"help\" [help]=\"help\"></riv-help>\n</label>\n<div class=\"content\"><ng-content></ng-content></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 { 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 ElementRef,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport Fuse from 'fuse.js';\nimport {\n Observable,\n debounceTime,\n from,\n map,\n pairwise,\n startWith,\n switchMap,\n} from 'rxjs';\nimport { HighlightComponent } from '../../visualization/highlight/highlight.component';\nimport { InputLabelComponent } from '../input-label/input-label.component';\n\n@Component({\n selector: 'riv-single-select',\n templateUrl: './single-select.component.html',\n styleUrls: ['./single-select.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingleSelectComponent<\n T extends SingleSelectComponent.OptionGroup<U>,\n U extends SingleSelectComponent.Option,\n> extends InputLabelComponent {\n @Input()\n groups: T[] = [];\n\n @Input()\n selectedOption: U | null = null;\n\n @Input()\n filterabilityOptions: SingleSelectComponent.FilterabilityOptions = {\n enabled: false,\n };\n\n @Input()\n loading: boolean = false;\n\n @Input()\n locked: boolean = false;\n\n @Input()\n noOptionsMessage: string = 'No available options';\n\n @Input()\n nodeTemplate?: TemplateRef<unknown>;\n\n @Input()\n triggerTemplate?: TemplateRef<unknown>;\n\n @Input()\n placeholder: string = 'Select...';\n\n @Input()\n disabled: boolean = false;\n\n filterQuery: string = '';\n\n @Output()\n filterQueryChange = new EventEmitter<string>();\n\n @Output()\n selectedOptionChange = new EventEmitter<U>();\n\n @ViewChild('customTriggerButton') customTriggerButton?: ElementRef;\n @ViewChild('standardTriggerButton') standardTriggerButton?: ElementRef;\n\n getTrigger(): Element | null {\n return (\n this.customTriggerButton?.nativeElement ??\n this.standardTriggerButton?.nativeElement\n );\n }\n\n getFilterPlaceholder(): string {\n if (\n this.filterabilityOptions.enabled &&\n this.filterabilityOptions.placeholder\n ) {\n return this.filterabilityOptions.placeholder;\n }\n return 'Filter options...';\n }\n\n allowedOpen(): void {\n if (!this.disabled && !this.locked) {\n this.open = true;\n }\n }\n\n public close(): void {\n this.open = false;\n }\n\n trackByHeader(i: number, group: SingleSelectComponent.OptionGroup<U>) {\n return `${i}${group.header}`;\n }\n\n trackByOption(_: number, option: U) {\n return option.id;\n }\n\n open: boolean = false;\n}\n\nexport namespace SingleSelectComponent {\n export type Option = {\n id: string;\n title: string;\n subtitle?: string;\n count?: number;\n disabled?: boolean;\n titleHighlightIndices?: HighlightComponent.HighlightIndices[];\n subtitleHighlightIndices?: HighlightComponent.HighlightIndices[];\n };\n\n type Node<V extends Option> = V & {\n selected: boolean;\n };\n\n export type OptionGroup<O extends Option> = {\n header?: string;\n options: O[];\n };\n\n export type FilterabilityOptions =\n | {\n enabled: false;\n }\n | {\n enabled: true;\n placeholder?: string;\n };\n\n export function getFilterSync<T extends OptionGroup<U>, U extends Option>(\n groups: T[],\n exact: boolean = false,\n ): (query: string) => T[] {\n return function filter(query: string) {\n if (!query) return groups;\n\n const fuseOptions = {\n keys: ['title', 'subtitle'],\n includeMatches: true,\n shouldSort: true,\n threshold: exact ? 0.0 : 0.6,\n };\n\n return groups\n .map(group => {\n const fuse = new Fuse(group.options, fuseOptions);\n const matches = fuse.search(query);\n\n return {\n ...group,\n options: matches.map(match => ({\n ...match.item,\n titleHighlightIndices: [\n ...(match.matches?.find(result => result.key === 'title')\n ?.indices || []),\n ],\n subtitleHighlightIndices: [\n ...(match.matches?.find(result => result.key === 'subtitle')\n ?.indices || []),\n ],\n })),\n };\n })\n .filter(group => group.options.length > 0); // Remove empty groups\n };\n }\n\n export function getFilterAsync<T extends OptionGroup<U>, U extends Option>(\n query$: Observable<string>,\n fetcher: (query: string) => Promise<T[]>,\n debounceInput: number = 300,\n ): Observable<{\n loading: boolean;\n groups: T[];\n }> {\n return query$.pipe(\n debounceTime(debounceInput),\n switchMap(query =>\n from(fetcher(query)).pipe(\n map(groups => {\n if (!query) return { loading: false, groups };\n\n const fuseOptions = {\n keys: ['title', 'subtitle'],\n includeMatches: true,\n shouldSort: true,\n threshold: 0.6,\n };\n\n const filteredGroups = groups\n .map(group => {\n const fuse = new Fuse(group.options, fuseOptions);\n const matches = fuse.search(query);\n\n return {\n ...group,\n options: matches.map(match => ({\n ...match.item,\n titleHighlightIndices: [\n ...(match.matches?.find(result => result.key === 'title')\n ?.indices || []),\n ],\n subtitleHighlightIndices: [\n ...(match.matches?.find(\n result => result.key === 'subtitle',\n )?.indices || []),\n ],\n })),\n };\n })\n .filter(group => group.options.length > 0); // Remove empty groups\n\n return { loading: false, groups: filteredGroups };\n }),\n startWith({ loading: true, groups: [] }),\n ),\n ),\n pairwise(),\n map(([previous, next]) => ({\n loading: next.loading,\n groups: next.loading ? previous.groups : next.groups,\n })),\n startWith({ loading: false, groups: [] }),\n );\n }\n}\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]=\"{ selectedOption }\"\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 (click)=\"allowedOpen()\"\n [disabled]=\"disabled || locked\"\n type=\"button\"\n >\n <ng-container *ngIf=\"selectedOption; else placeholderValue\">\n <span class=\"value\">{{ selectedOption.title }}</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 *ngIf=\"!locked\" [name]=\"'ChevronDown'\" [size]=\"16\"></riv-icon>\n <riv-icon *ngIf=\"locked\" [name]=\"'Lock'\" [size]=\"16\"></riv-icon>\n </span>\n </button>\n </riv-input-label>\n</ng-template>\n\n<riv-callout\n *ngIf=\"open\"\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)=\"open = false\"\n>\n <input\n *ngIf=\"filterabilityOptions.enabled\"\n #filter\n class=\"filter\"\n [placeholder]=\"getFilterPlaceholder()\"\n [value]=\"filterQuery\"\n (input)=\"filterQuery = filter.value; filterQueryChange.emit(filterQuery)\"\n />\n <div class=\"options\">\n <riv-loading-cover [loading]=\"loading\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackByHeader\">\n <ng-container *ngIf=\"group.header\">\n <span class=\"group-header\">\n {{ group.header }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"group.options; let nodes\">\n <ng-container *ngIf=\"nodes.length > 0; else empty\">\n <ng-container *ngFor=\"let node of nodes; trackBy: trackByOption\">\n <ng-container *ngIf=\"nodeTemplate; else standardTemplate\">\n <button\n class=\"custom-single-select-node\"\n [disabled]=\"node.disabled\"\n (click)=\"selectedOptionChange.emit(node); open = false\"\n type=\"button\"\n >\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplate\"\n [ngTemplateOutletContext]=\"{ node }\"\n ></ng-container>\n </button>\n </ng-container>\n <ng-template #standardTemplate>\n <button\n class=\"single-select-node\"\n [class.selected]=\"node?.id === selectedOption?.id\"\n [class.disabled]=\"node?.disabled\"\n [disabled]=\"node?.disabled\"\n (click)=\"selectedOptionChange.emit(node); open = false\"\n type=\"button\"\n >\n <riv-icon\n [name]=\"'Check'\"\n *ngIf=\"node?.id === selectedOption?.id\"\n [size]=\"16\"\n ></riv-icon>\n <span class=\"label\">\n <span class=\"label-title\">\n <riv-highlight\n [text]=\"node?.title || ''\"\n [indices]=\"node?.titleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n <span *ngIf=\"node?.subtitle\" class=\"label-subtitle\">\n <riv-highlight\n [text]=\"node?.subtitle || ''\"\n [indices]=\"node?.subtitleHighlightIndices || []\"\n ></riv-highlight>\n </span>\n </span>\n </button>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-template #empty>\n <div class=\"empty\">\n {{ noOptionsMessage }}\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n </riv-loading-cover>\n </div>\n <div class=\"footer\">\n <ng-content select=\"[footer]\"> </ng-content>\n </div>\n</riv-callout>\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';\nimport { SingleSelectComponent } from '../single-select/single-select.component';\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 = SingleSelectComponent.Option & { date: Date };\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@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).map(\n 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 ),\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.valueOf() < min.valueOf() || month.valueOf() > max.valueOf(),\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.valueOf() < min.valueOf()) 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.valueOf() > max.valueOf()) 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 @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 <ng-template #selectTrigger let-selectedOption=\"selectedOption\">\n <button\n rivButton\n [size]=\"'small'\"\n [variant]=\"'ghost'\"\n [icon]=\"'ChevronDown'\"\n [iconPosition]=\"'last'\"\n type=\"button\"\n >\n {{ selectedOption.title || '...' }}\n </button>\n </ng-template>\n <riv-single-select\n placeholder=\"Month...\"\n [groups]=\"monthOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedMonthOption$ | async\"\n (selectedOptionChange)=\"activeYearMonthChange.emit($event.date)\"\n [triggerTemplate]=\"selectTrigger\"\n ></riv-single-select>\n <riv-single-select\n placeholder=\"Year...\"\n [groups]=\"yearOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedYearOption$ | async\"\n (selectedOptionChange)=\"activeYearMonthChange.emit($event.date)\"\n [triggerTemplate]=\"selectTrigger\"\n ></riv-single-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 startWith,\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';\nimport { SingleSelectComponent } from '../single-select/single-select.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@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 open$ = new BehaviorSubject(false);\n\n readonly userSelectedPreset$ = new Subject<DateRangeComponent.Preset>();\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(map(preset => preset.dates)),\n ).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\n readonly presetFilterQuery$ = new BehaviorSubject('');\n readonly filteredPresetOptions$ = this.presetFilterQuery$.pipe(\n map(query => DateRangeComponent.filterPresets(query)),\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 map(ids =>\n ids\n .map(id =>\n DateRangeComponent.Presets.find(preset => preset.id === id),\n )\n .filter((p): p is DateRangeComponent.Preset => p !== undefined),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly userLeftActiveYearMonth$ = new Subject<Date>();\n readonly userRightActiveYearMonth$ = new Subject<Date>();\n\n readonly leftActiveYearMonth$ = merge(\n this.userLeftActiveYearMonth$.pipe(startWith(timeMonth.floor(this.TODAY))),\n this.userSelectedPreset$.pipe(\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 ).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\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 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 ]).pipe(\n map(([left, userRight]) => {\n if (left.valueOf() >= userRight.valueOf())\n return timeMonth.floor(timeMonth.offset(left, 1));\n else return userRight;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\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\n readonly rightMin$ = this.leftActiveYearMonth$.pipe(\n map(left => timeMonth.floor(timeMonth.offset(left, 1))),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n readonly rightMax$ = this.max$.pipe(\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 @Output()\n readonly valueChange: Observable<[Date, Date] | undefined> =\n this.selectedValue$.pipe(\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 const Presets: (SingleSelectComponent.Option & {\n dates: [Date, Date];\n })[] = [\n {\n id: 'today',\n title: 'Today',\n subtitle: 'Today from midnight until the current time',\n dates: [timeDay(), timeDay()],\n },\n {\n id: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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: '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 export type Preset = (typeof Presets)[number];\n\n export const filterPresets = SingleSelectComponent.getFilterSync([\n { options: Presets },\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 <riv-callout\n *ngIf=\"open$ | async\"\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 <ng-template #presetTpl 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-single-select\n [label]=\"'Date presets'\"\n [filterabilityOptions]=\"{ enabled: true, placeholder: 'Search...' }\"\n (filterQueryChange)=\"presetFilterQuery$.next($event)\"\n [groups]=\"(filteredPresetOptions$ | async) ?? []\"\n [selectedOption]=\"selectedPreset$ | async\"\n (selectedOptionChange)=\"userSelectedPreset$.next($event)\"\n [nodeTemplate]=\"presetTpl\"\n ></riv-single-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-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { timeMonth } from 'd3-time';\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 open = false;\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 = 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<riv-callout\n *ngIf=\"open\"\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 = false\"\n>\n <div class=\"content\">\n <riv-calendar\n [activeYearMonth]=\"activeYearMonth\"\n (activeYearMonthChange)=\"activeYearMonth = $event\"\n [displayMin]=\"min\"\n [displayMax]=\"max\"\n [selectedValue]=\"value\"\n (dateSelect)=\"valueChange.next($event); open = false\"\n ></riv-calendar>\n </div>\n</riv-callout>\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class CalloutService {\n public calloutStack$ = new BehaviorSubject<TemplateRef<unknown>[]>([]);\n\n public add(callout: TemplateRef<unknown>) {\n this.calloutStack$.next([...this.calloutStack$.getValue(), callout]);\n }\n\n public remove(callout: TemplateRef<unknown>) {\n this.calloutStack$.next(\n this.calloutStack$.getValue().filter(c => c !== callout),\n );\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalloutService } from './callout.service';\n\n@Component({\n selector: 'riv-callout-outlet',\n templateUrl: './callout-outlet.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CalloutOutletComponent {\n constructor(readonly calloutService: CalloutService) {}\n}\n","<ng-container *ngFor=\"let callout of calloutService.calloutStack$ | async\">\n <ng-container *ngTemplateOutlet=\"callout\"></ng-container>\n</ng-container>\n","import {\n ChangeDetectorRef,\n Directive,\n OnDestroy,\n OnInit,\n TemplateRef,\n} from '@angular/core';\nimport { CalloutService } from './callout.service';\n\n@Directive({\n selector: '[riv-callout]',\n})\nexport class CalloutDirective implements OnInit, OnDestroy {\n constructor(\n private readonly template: TemplateRef<unknown>,\n private readonly calloutService: CalloutService,\n private readonly cdr: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.calloutService.add(this.template);\n this.cdr.detectChanges();\n }\n\n ngOnDestroy() {\n this.calloutService.remove(this.template);\n this.cdr.detectChanges();\n }\n}\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';\n\n@Component({\n selector: 'riv-zero-state',\n template: `{{ message }}`,\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","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 { ChangeDetectionStrategy, Component, Input } 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 card: boolean = false;\n\n @Input()\n help?: string;\n\n @Input()\n align?: 'left' | 'right' = '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","<div *ngIf=\"card; else content\" class=\"card\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</div>\n<ng-template #content>\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</ng-template>\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 get backgroundColor(): string {\n return `var(${this.colorToken})`;\n }\n}\n","<i [style.background-color]=\"backgroundColor\"></i>\n<span *ngIf=\"label\">{{ label }}</span>\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();\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() : 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 [class.low-contrast]=\"visibility === 'hidden' || visibility === 'locked'\"\n >\n {{ label }}\n </span>\n</button>\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) {\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\nexport function getColumnWidth(numColumns: number) {\n if (numColumns <= 6) return 72;\n if (numColumns <= 18) return 40;\n if (numColumns <= 40) return 16;\n return 8;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\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 { SingleSelectComponent } from '../../input/single-select/single-select.component';\nimport {\n Interval,\n getIntervalTitle,\n getMajorInterval,\n getMajorIntervalFormat,\n getMinorIntervalFormat,\n getTimeInterval,\n intervals,\n} from '../intervals';\nimport {\n getColumnWidth,\n getDateRange,\n pointReducer,\n} from './stacked-column.helpers';\n\nconst MAX_COLUMNS = 72;\nconst DEFAULT_INTERVAL: Interval = 'month';\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\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 @Input()\n public set width(v: number) {\n this.width$.next(v);\n }\n public get width(): number {\n return this.width$.getValue();\n }\n\n private readonly height$ = new BehaviorSubject<number>(256);\n @Input()\n public set height(v: number) {\n this.height$.next(v);\n }\n public get height(): number {\n return this.height$.getValue();\n }\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 this.interval$.next(v);\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<any>;\n\n private readonly allowedIntervals$: Observable<Interval[]> = this.input$.pipe(\n map(input => {\n const numVisibleColumns = input.filter(\n stack => stack.filter(s => s.style === 'tooltipOnly').length === 0,\n ).length;\n\n const [minDate, maxDate] = getDateRange(input);\n\n return intervals.filter(interval => {\n const timeInterval = getTimeInterval(interval);\n const xStepsCount = timeInterval.range(\n timeInterval.floor(minDate),\n timeInterval.floor(timeInterval.offset(maxDate, 1)),\n ).length;\n return numVisibleColumns * xStepsCount <= MAX_COLUMNS;\n });\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly intervalOptions$ = this.allowedIntervals$.pipe(\n map(intervals =>\n intervals.map(\n (interval): SingleSelectComponent.Option => ({\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: SingleSelectComponent.Option) {\n this.interval = option.id as Interval;\n }\n\n readonly binnedData$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n ]).pipe(\n map(([input, interval]) =>\n input.map((stack): StackedColumnComponent.Stack => {\n const timeInterval = getTimeInterval(interval);\n\n return stack.map(series => {\n const binned = new Map<number, StackedColumnComponent.Value[]>();\n for (const point of series.data) {\n const bin = timeInterval.floor(point.date).valueOf();\n if (!binned.has(bin)) {\n binned.set(bin, []);\n }\n binned.get(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 }),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly LEFT_OFFSET = 48;\n\n readonly drawData$ = combineLatest([\n this.binnedData$,\n this.width$,\n this.height$,\n this.selectedInterval$,\n ]).pipe(\n map(([binnedData, width, height, interval]) => {\n const viewBox = `0 0 ${width} ${height}`;\n const padding = 16;\n\n const invisColumns = binnedData.filter(\n stack => stack.filter(s => s.style == 'tooltipOnly').length > 0,\n ).length;\n const visibleColumns = binnedData.length - invisColumns;\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 columnWidth = getColumnWidth(xSteps.length * visibleColumns);\n const columnPadding = 4;\n const outerPadding =\n (xOuterScale.bandwidth() -\n (columnPadding * (binnedData.length - 1 - invisColumns) +\n columnWidth * (binnedData.length - invisColumns))) /\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.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.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 if (_.series.style == 'tooltipOnly') {\n return;\n }\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([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 let invisColumnsSoFar = 0;\n // For each unique stack,\n renderInformation.forEach(({ stacked, indexedTable }, index) => {\n let invisColumnFound = false;\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 if (seriesPoint.series.style == 'tooltipOnly') {\n invisColumnFound = true;\n }\n const width =\n seriesPoint.series.style == 'tooltipOnly' ? 0 : columnWidth;\n const height = yScale(baseline) - yScale(topline);\n const x =\n (xOuterScale(fullFormatter(date)) ?? 0) +\n outerPadding +\n columnWidth * (index - invisColumnsSoFar) +\n columnPadding * (index - invisColumnsSoFar);\n const y = yScale(baseline) - height;\n let fill = '';\n if (seriesPoint.series.style != 'tooltipOnly') {\n fill = `var(${seriesPoint.series.colorToken})`;\n }\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 if (invisColumnFound) {\n invisColumnsSoFar++;\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 - invisColumns) * columnWidth +\n (renderInformation.length + 1 - invisColumns) * columnPadding;\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 => stack.every(series => series.data.length === 0)),\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$ = combineLatest([this.hoveredBand$, this.drawData$]).pipe(\n map(([hoveredBand, drawData]) => {\n if (!hoveredBand) 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 };\n const metrics: Metric[] = drawData.rects\n .filter(rect => rect.dateValue === hoveredBand.dateValue)\n .map(rect => ({\n label: rect.seriesPoint.series.label,\n value: this.valueFormatter(rect.seriesPoint.value),\n }));\n\n return { anchor, metrics };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n}\n\nexport namespace StackedColumnComponent {\n export type Value = { date: Date; value: number };\n\n export type Series = {\n label: string;\n data: Value[];\n } & (\n | {\n colorToken: string;\n style?: 'solid' | 'striped';\n }\n | {\n style: 'tooltipOnly';\n }\n );\n\n export type Stack = Series[];\n}\n","<div *ngIf=\"!(empty$ | async); else zeroState\" class=\"container\">\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 <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 ></rect>\n </svg>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-callout\n [anchor]=\"callout.anchor\"\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 <div class=\"callout-metric\" *ngFor=\"let metric of callout.metrics\">\n <div>{{ metric.label }}</div>\n <div class=\"callout-metric-value\">{{ metric.value }}</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-single-select\n [groups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-single-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};\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};\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): RowDisplayInfo {\n const elementsButStacked: StackedRowElement[] = [];\n let currentBaseline: number = 0;\n let currentTopline: number = 0;\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 };\n}\n","import { ChangeDetectionStrategy, Component, Input } 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 {\n RowDisplayInfo,\n RowLabel,\n RowRectangle,\n StackedRowDrawData,\n getKeyOrder,\n getLegendItems,\n getRowDisplayInfo,\n standardizeRowStacks,\n} from './stacked-row.helpers';\n\ntype CalloutMetric = {\n rowName: string;\n elementLabel: string;\n value: string;\n};\n\n// TODO: once we upgrade to Angular 16, this component can be cleaned up with\n// signals instead of RxJS.\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>(960);\n @Input()\n public set width(v: number) {\n this.width$.next(v);\n }\n public get width(): number {\n return this.width$.getValue();\n }\n\n // Height helps determine the size of the viewbox this graph is displaying in.\n private readonly height$ = new BehaviorSubject<number | null>(null);\n @Input()\n public set height(v: number | null) {\n this.height$.next(v);\n }\n public get height(): number | null {\n return this.height$.getValue();\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 /*\n The layout we are shooting for is:\n\n | X Axis Labels |\n Row Name | Rectangles | Totals\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 SECTION_HEIGHTS = {\n // Space reserved for the x-axis labels\n X_AXIS_LABEL: 14,\n // Height of each row\n PER_ROW: (): number => {\n //Only use height if specified\n if (this.input.length && this.height) {\n let rowHeight =\n (this.height -\n this.SECTION_HEIGHTS.X_AXIS_LABEL -\n this.SECTION_PADDING.OUTER_TOP_BOTTOM -\n this.SECTION_PADDING.RECTANGLE_TO_ROW) /\n this.input.length -\n this.SECTION_PADDING.BETWEEN_ROW; // calculate base row height\n // Clamping the row height between the min and max heights\n return Math.min(\n Math.max(rowHeight, this.RECTANGLE_HEIGHTS.MIN_HEIGHT),\n this.RECTANGLE_HEIGHTS.MAX_HEIGHT,\n );\n }\n return this.RECTANGLE_HEIGHTS.MIN_HEIGHT; // Default if no input\n },\n // Max Height of each rectangle\n PER_RECTANGLE: (): number => {\n //Only use height if specified\n if (this.input.length && this.height) {\n let rectangleHeight =\n (this.height -\n this.SECTION_HEIGHTS.X_AXIS_LABEL -\n this.SECTION_PADDING.OUTER_TOP_BOTTOM -\n this.SECTION_PADDING.RECTANGLE_TO_ROW) /\n this.input.length -\n this.SECTION_PADDING.BETWEEN_ROW; // calculate base rectangle height\n // Clamping the rectangle height between the min and max heights\n return Math.min(\n Math.max(rectangleHeight, this.RECTANGLE_HEIGHTS.MIN_HEIGHT),\n this.RECTANGLE_HEIGHTS.MAX_HEIGHT,\n );\n }\n return this.RECTANGLE_HEIGHTS.MIN_HEIGHT; // Default if no input\n },\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) {\n const spaceAboveRows: number =\n this.SECTION_PADDING.OUTER_TOP_BOTTOM + this.SECTION_HEIGHTS.X_AXIS_LABEL;\n\n const aboveRows: number = rowIndex * this.SECTION_HEIGHTS.PER_ROW();\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 height: number,\n ) {\n if (rowStacks.length == 0) {\n return null;\n }\n const viewBox = `0 0 ${width} ${height}`;\n\n const keysInOrder: InternSet<string> = getKeyOrder(rowStacks);\n const standardizedRows: StackedRowComponent.RowStack[] =\n standardizeRowStacks(rowStacks, keysInOrder);\n const rowsForDisplay: RowDisplayInfo[] = standardizedRows.map(stackData => {\n return getRowDisplayInfo(stackData);\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 );\n\n const rowNamesToDraw: RowLabel[] = this.getRowNamesToDraw(rowsForDisplay);\n const rowTotalsToDraw: RowLabel[] = this.getRowTotalsToDraw(\n rowsForDisplay,\n width,\n );\n\n const legendItems = getLegendItems(rowsForDisplay, keysInOrder);\n\n return {\n legendItems: legendItems,\n rowHeight: this.SECTION_HEIGHTS.PER_RECTANGLE(),\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 ): RowRectangle[] {\n const rectangles: RowRectangle[] = [];\n displayRows.forEach((currentRow, rowIndex) => {\n currentRow.elementsButStacked.forEach((currentElement, _) => {\n const topOfRow: number = this.getTopOfRow(rowIndex);\n\n const rectangleWidth: number =\n xScale(currentElement.topline) - xScale(currentElement.baseline);\n const rectangleHeight: number = this.SECTION_HEIGHTS.PER_RECTANGLE();\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: rectangleWidth,\n height: rectangleHeight,\n fill: fill,\n striped: currentElement.style === 'striped',\n rowName: currentRow.rowName,\n stackedRowElement: currentElement,\n });\n });\n });\n return rectangles;\n }\n\n // Get data on the row names we are drawing\n getRowNamesToDraw(displayRows: RowDisplayInfo[]): 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) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.SECTION_HEIGHTS.PER_RECTANGLE() / 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(displayRows: RowDisplayInfo[], width: number): 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) +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n this.SECTION_HEIGHTS.PER_RECTANGLE() / 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.height$,\n ]).pipe(\n map(([input, width, height]) => {\n return this.getDrawnData(\n input,\n width,\n height\n ? height\n : this.SECTION_HEIGHTS.X_AXIS_LABEL +\n this.SECTION_PADDING.OUTER_TOP_BOTTOM +\n this.SECTION_PADDING.RECTANGLE_TO_ROW +\n (this.SECTION_HEIGHTS.PER_ROW() +\n this.SECTION_PADDING.BETWEEN_ROW) *\n input.length,\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 };\n const metrics: Metric[] = drawData.rects\n .filter(rect => rect.rowName === hoveredBand.rowName)\n .map(rect => ({\n label: rect.stackedRowElement.label,\n value: this.valueFormatter(rect.stackedRowElement.value),\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?: 'solid' | 'striped';\n };\n // The input that determines one row.\n export type RowStack = {\n rowName: string;\n data: RowElement[];\n };\n}\n","<div *ngIf=\"!(empty$ | async); else zeroState\" class=\"container\">\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 >\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-callout\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 >\n <div class=\"callout-content\">\n <div class=\"callout-metric\" *ngFor=\"let metric of callout.metrics\">\n <div>{{ metric.label }}</div>\n <div class=\"callout-metric-value\">{{ metric.value }}</div>\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 Input,\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 { SingleSelectComponent } from '../../input/single-select/single-select.component';\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 MAX_POINTS = 90;\nconst DEFAULT_INTERVAL: Interval = 'day';\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@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>(960);\n @Input()\n public set width(v: number) {\n this.width$.next(v);\n }\n public get width(): number {\n return this.width$.getValue();\n }\n\n private readonly height$ = new BehaviorSubject<number>(256);\n @Input()\n public set height(v: number) {\n this.height$.next(v);\n }\n public get height(): number {\n return this.height$.getValue();\n }\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_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 X_MINOR_TICK_LIMIT = 15;\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 this.interval$.next(v);\n }\n public get interval() {\n return this.interval$.getValue();\n }\n\n @ViewChild('controls')\n public readonly controls?: TemplateRef<any>;\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 allowedIntervals$: Observable<Interval[]> = this.input$.pipe(\n map(input => {\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 <= MAX_POINTS && 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): SingleSelectComponent.Option => ({\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: SingleSelectComponent.Option) {\n this.interval = option.id as Interval;\n }\n\n readonly toggleVisibility$ =\n new BehaviorSubject<TimeSeriesComponent.ToggleVisibility | null>(null);\n\n readonly binnedData$ = combineLatest([\n this.input$,\n this.selectedInterval$,\n this.toggleVisibility$,\n ]).pipe(\n map(([input, interval, toggleVisibility]) =>\n 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 bin = getTimeInterval(interval).floor(point.date).valueOf();\n if (!binned.has(bin)) {\n binned.set(bin, []);\n }\n binned.get(bin)!.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 ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly binnedDateRange$ = this.binnedData$.pipe(\n map(getDateRange),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n readonly drawData$: Observable<DrawData> = combineLatest([\n this.binnedData$,\n this.binnedDateRange$,\n this.selectedInterval$,\n this.width$,\n this.height$,\n ]).pipe(\n map(([binnedData, binnedDateRange, interval, width, height]) => {\n const viewBox = `0 0 ${width} ${height}`;\n\n const xScale = scaleLinear()\n .domain(binnedDateRange)\n .range([\n this.LEFT_OFFSET + this.LEFT_RIGHT_PADDING,\n width - this.LEFT_RIGHT_PADDING * 2,\n ]);\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: date.valueOf(),\n label: minorFormatter(date),\n }))\n .filter((_, i, arr) =>\n arr.length > this.X_MINOR_TICK_LIMIT\n ? i % Math.round(arr.length / this.X_MINOR_TICK_LIMIT) === 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 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 } | null>(null);\n\n readonly callout$ = combineLatest([this.hoveredMarker$, this.drawData$]).pipe(\n map(([hoveredMarker, drawData]) => {\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 };\n const metrics: Metric[] = [];\n\n for (const series of drawData.y1.series) {\n if (series.visibility !== 'hidden') {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\n label: series.label,\n value: drawData.y1.valueFormatter(match.value),\n });\n }\n }\n }\n\n if (drawData.y2) {\n for (const series of drawData.y2.series) {\n if (series.visibility !== 'hidden') {\n const match = series.markers.find(\n marker => marker.x === hoveredMarker.marker.x,\n );\n if (match) {\n metrics.push({\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","<div *ngIf=\"!(empty$ | async); else zeroState\" class=\"container\">\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)\"\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]=\"d.y1.yScale(d.y1.yMin)\"\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]=\"d.y1.yScale(d.y1.yMin)\"\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]=\"d.x.xScale(d.x.xMax)\"\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\">\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 *ngFor=\"let marker of series.markers\">\n <circle\n *ngIf=\"series.visibility != 'hidden'\"\n class=\"data marker\"\n [class.focused]=\"(hoveredMarker$ | async)?.marker?.x === marker.x\"\n [class.blurred]=\"\n (hoveredMarker$ | async) !== null &&\n (hoveredMarker$ | async)?.marker?.x !== marker.x\n \"\n [attr.cx]=\"marker.x\"\n [attr.cy]=\"marker.y\"\n r=\"3.5\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n (mouseover)=\"hoveredMarker$.next({ event: $event, marker: marker })\"\n (mouseleave)=\"hoveredMarker$.next(null)\"\n ></circle>\n </ng-container>\n </ng-template>\n <g *ngFor=\"let series of d.y1.series\">\n <ng-container\n *ngTemplateOutlet=\"seriesTpl; context: { series: series }\"\n ></ng-container>\n </g>\n <g *ngFor=\"let series of d.y2?.series\">\n <ng-container\n *ngTemplateOutlet=\"seriesTpl; context: { series: series }\"\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-callout\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'top-center'\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-metric\" *ngFor=\"let metric of callout.metrics\">\n <div>{{ metric.label }}</div>\n <div class=\"callout-metric-value\">{{ metric.value }}</div>\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-single-select\n [groups]=\"intervalOptions$ | async | rivOptionGroup\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-single-select>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TextToggleComponent } from './content-toggle/text-toggle/text-toggle.component';\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 { OptionGroupPipe } from './format/pipes/option-group.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 { ButtonComponent } from './input/button/button.component';\nimport { CalendarComponent } from './input/calendar/calendar.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 { SingleSelectComponent } from './input/single-select/single-select.component';\nimport { LoadingCoverComponent } from './load/loading-cover/loading-cover.component';\nimport { LoadingComponent } from './load/loading/loading.component';\nimport { CalloutOutletComponent } from './modal/callout/callout-outlet.component';\nimport { CalloutComponent } from './modal/callout/callout.component';\nimport { CalloutDirective } from './modal/callout/callout.directive';\nimport { LockScrollDirective } from './modal/callout/lock-scroll.directive';\nimport { HelpComponent } from './modal/help/help.component';\nimport { TooltipComponent } from './modal/tooltip/tooltip.component';\nimport { TooltipDirective } from './modal/tooltip/tooltip.directive';\nimport { LinkComponent } from './navigation/link/link.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 { 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';\n\n@NgModule({\n declarations: [\n ButtonComponent,\n CalendarComponent,\n CalloutComponent,\n CalloutDirective,\n CalloutOutletComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DollarsPipe,\n DonutComponent,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n LockScrollDirective,\n MetricComponent,\n NumberPipe,\n OptionGroupPipe,\n PercentagePipe,\n SingleSelectComponent,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n TextToggleComponent,\n TimeSeriesComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ZeroStateComponent,\n ],\n exports: [\n ButtonComponent,\n CalloutComponent,\n CalloutDirective,\n CalloutOutletComponent,\n DataTableCellComponent,\n DataTableComponent,\n DataTableHeaderCellComponent,\n DataTableRowComponent,\n DateComponent,\n DatePipe,\n DateRangeComponent,\n DaysPipe,\n DollarsPipe,\n DonutComponent,\n FunnelChartComponent,\n HelpComponent,\n HighlightComponent,\n IconComponent,\n InputLabelComponent,\n IssueComponent,\n LegendItemComponent,\n LinkComponent,\n LoadingComponent,\n LoadingCoverComponent,\n MetricComponent,\n NumberPipe,\n OptionGroupPipe,\n PercentagePipe,\n SingleSelectComponent,\n SmallCurrencyPipe,\n StackedColumnComponent,\n StackedRowComponent,\n SVGTextTruncateDirective,\n TextToggleComponent,\n TimeSeriesComponent,\n TooltipComponent,\n TooltipDirective,\n TrendComponent,\n TruncateComponent,\n ZeroStateComponent,\n ],\n imports: [CommonModule],\n})\nexport class RivModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.IconComponent","AngularDatePipe","i2.LockScrollDirective","i2.CalloutComponent","i1.TooltipDirective","i3.LoadingComponent","i1.IconComponent","i2.TooltipDirective","i2.HelpComponent","i3.LinkComponent","i2.LoadingComponent","i3.HighlightComponent","i4.IconComponent","i5.InputLabelComponent","i6.LoadingCoverComponent","i2.ButtonComponent","i3.SingleSelectComponent","i4.OptionGroupPipe","i3.CalendarComponent","i4.CalloutComponent","i5.HighlightComponent","i6.IconComponent","i7.InputLabelComponent","i8.SingleSelectComponent","i9.TooltipDirective","i2.CalendarComponent","i3.CalloutComponent","i6.DatePipe","i1.CalloutService","i2","i1.DataTableRowComponent","i3.ZeroStateComponent","i3.TooltipDirective","i2.MetricComponent","i3.TrendComponent","getDateRange","DEFAULT_INTERVAL","i3.CalloutDirective","i4.SingleSelectComponent","i5.ZeroStateComponent","i6.OptionGroupPipe","i4.LegendItemComponent","i5.SVGTextTruncateDirective","i6.ZeroStateComponent","i5.SingleSelectComponent","i7.OptionGroupPipe"],"mappings":"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"}
|