@gen3/frontend 0.10.97 → 0.10.98

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.
Files changed (162) hide show
  1. package/dist/cjs/index.js +8894 -8123
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/dts/components/Login/LoginPanel.js +0 -1
  4. package/dist/dts/components/Login/LoginPanel.js.map +1 -1
  5. package/dist/dts/components/SegmentedControl.d.ts +8 -0
  6. package/dist/dts/components/SegmentedControl.d.ts.map +1 -0
  7. package/dist/dts/components/SegmentedControl.js +23 -0
  8. package/dist/dts/components/SegmentedControl.js.map +1 -0
  9. package/dist/dts/components/charts/CollapsableCharts.d.ts +9 -0
  10. package/dist/dts/components/charts/CollapsableCharts.d.ts.map +1 -0
  11. package/dist/dts/components/charts/CollapsableCharts.js +24 -0
  12. package/dist/dts/components/charts/CollapsableCharts.js.map +1 -0
  13. package/dist/dts/components/facets/EnumFacet.js +2 -2
  14. package/dist/dts/components/facets/EnumFacet.js.map +1 -1
  15. package/dist/dts/components/facets/ExactValueFacet.d.ts.map +1 -1
  16. package/dist/dts/components/facets/ExactValueFacet.js +3 -3
  17. package/dist/dts/components/facets/ExactValueFacet.js.map +1 -1
  18. package/dist/dts/components/facets/FacetSelectionModal.d.ts +22 -0
  19. package/dist/dts/components/facets/FacetSelectionModal.d.ts.map +1 -0
  20. package/dist/dts/components/facets/FacetSelectionModal.js +77 -0
  21. package/dist/dts/components/facets/FacetSelectionModal.js.map +1 -0
  22. package/dist/dts/components/facets/FacetTabs.d.ts +38 -0
  23. package/dist/dts/components/facets/FacetTabs.d.ts.map +1 -0
  24. package/dist/dts/components/facets/FacetTabs.js +166 -0
  25. package/dist/dts/components/facets/FacetTabs.js.map +1 -0
  26. package/dist/dts/components/facets/MultiSelectValueFacet.d.ts.map +1 -1
  27. package/dist/dts/components/facets/MultiSelectValueFacet.js +3 -3
  28. package/dist/dts/components/facets/MultiSelectValueFacet.js.map +1 -1
  29. package/dist/dts/components/facets/NumericRangeFacet/DaysOrYears.d.ts +5 -0
  30. package/dist/dts/components/facets/NumericRangeFacet/DaysOrYears.d.ts.map +1 -0
  31. package/dist/dts/components/facets/NumericRangeFacet/DaysOrYears.js +29 -0
  32. package/dist/dts/components/facets/NumericRangeFacet/DaysOrYears.js.map +1 -0
  33. package/dist/dts/components/facets/NumericRangeFacet/FromTo.d.ts +32 -0
  34. package/dist/dts/components/facets/NumericRangeFacet/FromTo.d.ts.map +1 -0
  35. package/dist/dts/components/facets/NumericRangeFacet/FromTo.js +168 -0
  36. package/dist/dts/components/facets/NumericRangeFacet/FromTo.js.map +1 -0
  37. package/dist/dts/components/facets/NumericRangeFacet/NumericRangePanel.d.ts +5 -0
  38. package/dist/dts/components/facets/NumericRangeFacet/NumericRangePanel.d.ts.map +1 -0
  39. package/dist/dts/components/facets/NumericRangeFacet/NumericRangePanel.js +30 -0
  40. package/dist/dts/components/facets/NumericRangeFacet/NumericRangePanel.js.map +1 -0
  41. package/dist/dts/components/facets/NumericRangeFacet/PercentRange.d.ts +5 -0
  42. package/dist/dts/components/facets/NumericRangeFacet/PercentRange.d.ts.map +1 -0
  43. package/dist/dts/components/facets/NumericRangeFacet/PercentRange.js +11 -0
  44. package/dist/dts/components/facets/NumericRangeFacet/PercentRange.js.map +1 -0
  45. package/dist/dts/components/facets/NumericRangeFacet/RangeInputWithPrefixedRanges.d.ts +12 -0
  46. package/dist/dts/components/facets/NumericRangeFacet/RangeInputWithPrefixedRanges.d.ts.map +1 -0
  47. package/dist/dts/components/facets/NumericRangeFacet/RangeInputWithPrefixedRanges.js +113 -0
  48. package/dist/dts/components/facets/NumericRangeFacet/RangeInputWithPrefixedRanges.js.map +1 -0
  49. package/dist/dts/components/facets/NumericRangeFacet/RangeValueSelector.d.ts +26 -0
  50. package/dist/dts/components/facets/NumericRangeFacet/RangeValueSelector.d.ts.map +1 -0
  51. package/dist/dts/components/facets/NumericRangeFacet/RangeValueSelector.js +63 -0
  52. package/dist/dts/components/facets/NumericRangeFacet/RangeValueSelector.js.map +1 -0
  53. package/dist/dts/components/facets/NumericRangeFacet/Year.d.ts +5 -0
  54. package/dist/dts/components/facets/NumericRangeFacet/Year.d.ts.map +1 -0
  55. package/dist/dts/components/facets/NumericRangeFacet/Year.js +23 -0
  56. package/dist/dts/components/facets/NumericRangeFacet/Year.js.map +1 -0
  57. package/dist/dts/components/facets/NumericRangeFacet/Years.d.ts +5 -0
  58. package/dist/dts/components/facets/NumericRangeFacet/Years.d.ts.map +1 -0
  59. package/dist/dts/components/facets/NumericRangeFacet/Years.js +24 -0
  60. package/dist/dts/components/facets/NumericRangeFacet/Years.js.map +1 -0
  61. package/dist/dts/components/facets/NumericRangeFacet/index.d.ts +19 -0
  62. package/dist/dts/components/facets/NumericRangeFacet/index.d.ts.map +1 -0
  63. package/dist/dts/components/facets/NumericRangeFacet/index.js +65 -0
  64. package/dist/dts/components/facets/NumericRangeFacet/index.js.map +1 -0
  65. package/dist/dts/components/facets/NumericRangeFacet/types.d.ts +27 -0
  66. package/dist/dts/components/facets/NumericRangeFacet/types.d.ts.map +1 -0
  67. package/dist/dts/components/facets/NumericRangeFacet/types.js +2 -0
  68. package/dist/dts/components/facets/NumericRangeFacet/types.js.map +1 -0
  69. package/dist/dts/components/facets/NumericRangeFacet/utils.d.ts +52 -0
  70. package/dist/dts/components/facets/NumericRangeFacet/utils.d.ts.map +1 -0
  71. package/dist/dts/components/facets/NumericRangeFacet/utils.js +288 -0
  72. package/dist/dts/components/facets/NumericRangeFacet/utils.js.map +1 -0
  73. package/dist/dts/components/facets/RangeFacet.d.ts +1 -6
  74. package/dist/dts/components/facets/RangeFacet.d.ts.map +1 -1
  75. package/dist/dts/components/facets/RangeFacet.js +3 -3
  76. package/dist/dts/components/facets/RangeFacet.js.map +1 -1
  77. package/dist/dts/components/facets/constants.d.ts +1 -0
  78. package/dist/dts/components/facets/constants.d.ts.map +1 -1
  79. package/dist/dts/components/facets/constants.js +1 -0
  80. package/dist/dts/components/facets/constants.js.map +1 -1
  81. package/dist/dts/components/facets/createFacetCard.d.ts +16 -2
  82. package/dist/dts/components/facets/createFacetCard.d.ts.map +1 -1
  83. package/dist/dts/components/facets/createFacetCard.js +13 -10
  84. package/dist/dts/components/facets/createFacetCard.js.map +1 -1
  85. package/dist/dts/components/facets/createFacetCards.d.ts +10 -0
  86. package/dist/dts/components/facets/createFacetCards.d.ts.map +1 -0
  87. package/dist/dts/components/facets/createFacetCards.js +19 -0
  88. package/dist/dts/components/facets/createFacetCards.js.map +1 -0
  89. package/dist/dts/components/facets/hooks.d.ts +1 -0
  90. package/dist/dts/components/facets/hooks.d.ts.map +1 -1
  91. package/dist/dts/components/facets/hooks.js +10 -1
  92. package/dist/dts/components/facets/hooks.js.map +1 -1
  93. package/dist/dts/components/facets/index.d.ts +11 -1
  94. package/dist/dts/components/facets/index.d.ts.map +1 -1
  95. package/dist/dts/components/facets/index.js +11 -1
  96. package/dist/dts/components/facets/index.js.map +1 -1
  97. package/dist/dts/components/facets/types.d.ts +97 -3
  98. package/dist/dts/components/facets/types.d.ts.map +1 -1
  99. package/dist/dts/components/facets/types.js.map +1 -1
  100. package/dist/dts/features/Analysis/AnalysisCardCompact.stories.d.ts +6 -6
  101. package/dist/dts/features/CohortBuilder/CohortPanel.d.ts.map +1 -1
  102. package/dist/dts/features/CohortBuilder/CohortPanel.js +6 -2
  103. package/dist/dts/features/CohortBuilder/CohortPanel.js.map +1 -1
  104. package/dist/dts/features/CohortBuilder/ExplorerTable/ArrayCellRenderer.d.ts.map +1 -1
  105. package/dist/dts/features/CohortBuilder/ExplorerTable/ArrayCellRenderer.js +0 -4
  106. package/dist/dts/features/CohortBuilder/ExplorerTable/ArrayCellRenderer.js.map +1 -1
  107. package/dist/dts/features/CohortBuilder/FiltersPanel.d.ts.map +1 -1
  108. package/dist/dts/features/CohortBuilder/FiltersPanel.js +9 -1
  109. package/dist/dts/features/CohortBuilder/FiltersPanel.js.map +1 -1
  110. package/dist/dts/features/CohortBuilder/TabbedCohortBuilder.d.ts +16 -0
  111. package/dist/dts/features/CohortBuilder/TabbedCohortBuilder.d.ts.map +1 -0
  112. package/dist/dts/features/CohortBuilder/TabbedCohortBuilder.js +185 -0
  113. package/dist/dts/features/CohortBuilder/TabbedCohortBuilder.js.map +1 -0
  114. package/dist/dts/features/CohortBuilder/index.d.ts +3 -2
  115. package/dist/dts/features/CohortBuilder/index.d.ts.map +1 -1
  116. package/dist/dts/features/CohortBuilder/index.js +3 -2
  117. package/dist/dts/features/CohortBuilder/index.js.map +1 -1
  118. package/dist/dts/features/CohortDiscovery/ChartsAndFacetsPanel.d.ts.map +1 -1
  119. package/dist/dts/features/CohortDiscovery/ChartsAndFacetsPanel.js +5 -1
  120. package/dist/dts/features/CohortDiscovery/ChartsAndFacetsPanel.js.map +1 -1
  121. package/dist/dts/features/CohortDiscovery/IndexPanel.d.ts.map +1 -1
  122. package/dist/dts/features/CohortDiscovery/IndexPanel.js +5 -4
  123. package/dist/dts/features/CohortDiscovery/IndexPanel.js.map +1 -1
  124. package/dist/dts/features/Discovery/Charts/CollapsableChartsPanel.d.ts +9 -0
  125. package/dist/dts/features/Discovery/Charts/CollapsableChartsPanel.d.ts.map +1 -0
  126. package/dist/dts/features/Discovery/Charts/CollapsableChartsPanel.js +24 -0
  127. package/dist/dts/features/Discovery/Charts/CollapsableChartsPanel.js.map +1 -0
  128. package/dist/dts/features/Navigation/Header.js +1 -1
  129. package/dist/dts/features/Navigation/Header.js.map +1 -1
  130. package/dist/dts/index.d.ts +6 -3
  131. package/dist/dts/index.d.ts.map +1 -1
  132. package/dist/dts/index.js +5 -2
  133. package/dist/dts/index.js.map +1 -1
  134. package/dist/dts/pages/TabbedCohortBuilder/TabbedCohortBuilderPage.d.ts +4 -0
  135. package/dist/dts/pages/TabbedCohortBuilder/TabbedCohortBuilderPage.d.ts.map +1 -0
  136. package/dist/dts/pages/TabbedCohortBuilder/TabbedCohortBuilderPage.js +24 -0
  137. package/dist/dts/pages/TabbedCohortBuilder/TabbedCohortBuilderPage.js.map +1 -0
  138. package/dist/dts/pages/TabbedCohortBuilder/data.d.ts +4 -0
  139. package/dist/dts/pages/TabbedCohortBuilder/data.d.ts.map +1 -0
  140. package/dist/dts/pages/TabbedCohortBuilder/data.js +81 -0
  141. package/dist/dts/pages/TabbedCohortBuilder/data.js.map +1 -0
  142. package/dist/dts/pages/TabbedCohortBuilder/index.d.ts +3 -0
  143. package/dist/dts/pages/TabbedCohortBuilder/index.d.ts.map +1 -0
  144. package/dist/dts/pages/TabbedCohortBuilder/index.js +3 -0
  145. package/dist/dts/pages/TabbedCohortBuilder/index.js.map +1 -0
  146. package/dist/dts/pages/TabbedCohortBuilder/types.d.ts +6 -0
  147. package/dist/dts/pages/TabbedCohortBuilder/types.d.ts.map +1 -0
  148. package/dist/dts/pages/TabbedCohortBuilder/types.js +2 -0
  149. package/dist/dts/pages/TabbedCohortBuilder/types.js.map +1 -0
  150. package/dist/dts/types/icons.d.ts +4 -2
  151. package/dist/dts/types/icons.d.ts.map +1 -1
  152. package/dist/dts/types/icons.js +4 -2
  153. package/dist/dts/types/icons.js.map +1 -1
  154. package/dist/dts/utils/useScrollToHash.d.ts +8 -0
  155. package/dist/dts/utils/useScrollToHash.d.ts.map +1 -0
  156. package/dist/dts/utils/useScrollToHash.js +25 -0
  157. package/dist/dts/utils/useScrollToHash.js.map +1 -0
  158. package/dist/esm/index.js +8831 -8099
  159. package/dist/esm/index.js.map +1 -1
  160. package/dist/index.d.ts +684 -232
  161. package/dist/tsconfig.tsbuildinfo +1 -1
  162. package/package.json +3 -3
@@ -0,0 +1,63 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Radio } from '@mantine/core';
4
+ import FacetSortPanel from '../FacetSortPanel';
5
+ import { buildRangeOperator } from './utils';
6
+ /**
7
+ * Create a list of radio buttons where each line
8
+ * represents bucket for a range \> "from" \<= "to"
9
+ * @param field - facet managed by this component
10
+ * @param valueLabel - string representing the datatype of values (e.g. "Cases")
11
+ * @param selected - which range, if any, is selected
12
+ * @param setSelected - function to handle selected range
13
+ * @param rangeLabelsAndValues - list of range keys, labels and values
14
+ * @param itemsToShow - number of ranges to render
15
+ * @param useUpdateFacetFilters - hook to update facet filters with new values
16
+ */
17
+ var RangeValueSelector = function (_a) {
18
+ var field = _a.field, valueLabel = _a.valueLabel, selected = _a.selected, setSelected = _a.setSelected, rangeLabelsAndValues = _a.rangeLabelsAndValues, itemsToShow = _a.itemsToShow, useUpdateFacetFilters = _a.useUpdateFacetFilters;
19
+ var updateFilters = useUpdateFacetFilters();
20
+ // toggle to handle sorting by value vs. label
21
+ var _b = useState({
22
+ type: 'alpha',
23
+ direction: 'dsc',
24
+ }), sortType = _b[0], setSortType = _b[1];
25
+ // process when range is selected
26
+ var handleSelection = function (rangeKey) {
27
+ var data = {
28
+ from: rangeLabelsAndValues[rangeKey].from,
29
+ to: rangeLabelsAndValues[rangeKey].to,
30
+ fromOp: '>=',
31
+ toOp: '<',
32
+ };
33
+ var rangeFilters = buildRangeOperator(field, data);
34
+ if (rangeFilters) {
35
+ updateFilters(field, rangeFilters);
36
+ }
37
+ setSelected(rangeKey);
38
+ };
39
+ if (rangeLabelsAndValues === undefined)
40
+ return null;
41
+ return (_jsxs("div", { className: "flex flex-col px-1", children: [Object.keys(rangeLabelsAndValues).length > 1 ? (_jsx(_Fragment, { children: valueLabel && (_jsx(FacetSortPanel, { sortType: sortType, valueLabel: valueLabel, setSort: setSortType, field: field })) })) : null, _jsxs("fieldset", { className: "mt-1", children: [_jsx("legend", { className: "sr-only", children: "Numeric range filters" }), Object.keys(rangeLabelsAndValues)
42
+ .slice(0, itemsToShow)
43
+ .sort(sortType.type === 'value'
44
+ ? function (a, b) {
45
+ return sortType.direction === 'dsc'
46
+ ? (rangeLabelsAndValues[b].value || 0) -
47
+ (rangeLabelsAndValues[a].value || 0)
48
+ : (rangeLabelsAndValues[a].value || 0) -
49
+ (rangeLabelsAndValues[b].value || 0);
50
+ }
51
+ : function (a, b) {
52
+ return sortType.direction === 'dsc'
53
+ ? rangeLabelsAndValues[b].from -
54
+ rangeLabelsAndValues[a].from
55
+ : rangeLabelsAndValues[a].from -
56
+ rangeLabelsAndValues[b].from;
57
+ })
58
+ .map(function (rangeKey, i) {
59
+ return (_jsxs("div", { className: "flex justify-start items-center gap-2 form-check mb-1 font-content text-sm", children: [_jsx(Radio, { id: "".concat(field, "_").concat(rangeKey, "_").concat(i), name: "".concat(field, "_range_selection"), "aria-label": rangeLabelsAndValues[rangeKey].valueLabel, value: rangeKey, checked: rangeKey === selected, color: "accent", onChange: function () { return handleSelection(rangeKey); }, "data-testid": "checkbox-".concat(rangeLabelsAndValues[rangeKey].label) }), _jsx("span", { children: rangeLabelsAndValues[rangeKey].label }), _jsx("span", { "data-testid": "text-".concat(rangeLabelsAndValues[rangeKey].label), className: "ml-auto", children: rangeLabelsAndValues[rangeKey].valueLabel })] }, "".concat(field, "_").concat(rangeKey)));
60
+ })] })] }));
61
+ };
62
+ export default RangeValueSelector;
63
+ //# sourceMappingURL=RangeValueSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangeValueSelector.js","sourceRoot":"","sources":["../../../../../src/components/facets/NumericRangeFacet/RangeValueSelector.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import React from "react";
2
+ import { NumericFacetProps } from "./types";
3
+ declare const Year: React.FC<NumericFacetProps>;
4
+ export default Year;
5
+ //# sourceMappingURL=Year.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Year.d.ts","sourceRoot":"","sources":["../../../../../src/components/facets/NumericRangeFacet/Year.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAG5C,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAgCrC,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,23 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import RangeInputWithPrefixedRanges from "./RangeInputWithPrefixedRanges";
14
+ // Calendar Year
15
+ var Year = function (_a) {
16
+ var field = _a.field, hooks = _a.hooks, valueLabel = _a.valueLabel, clearValues = _a.clearValues, _b = _a.minimum, minimum = _b === void 0 ? undefined : _b, _c = _a.maximum, maximum = _c === void 0 ? undefined : _c, isFacetView = _a.isFacetView, queryOptions = _a.queryOptions, Chart = _a.Chart;
17
+ var adjMinimum = minimum != undefined ? minimum : 1900;
18
+ var adjMaximum = maximum != undefined ? maximum : 2050;
19
+ var numBuckets = Math.round((adjMaximum - adjMinimum) / 10);
20
+ return (_jsx("div", { className: "flex flex-col w-100 space-y-2 px-2 mt-1 ", children: _jsx(RangeInputWithPrefixedRanges, { hooks: __assign({}, hooks), units: "year", valueLabel: valueLabel, minimum: adjMinimum, maximum: adjMaximum, numBuckets: numBuckets, field: field, clearValues: clearValues, isFacetView: isFacetView, queryOptions: queryOptions, Chart: Chart }) }));
21
+ };
22
+ export default Year;
23
+ //# sourceMappingURL=Year.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Year.js","sourceRoot":"","sources":["../../../../../src/components/facets/NumericRangeFacet/Year.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAG1E,gBAAgB;AAChB,IAAM,IAAI,GAAgC,UAAC,EAU1C;QATC,KAAK,WAAA,EACL,KAAK,WAAA,EACL,UAAU,gBAAA,EACV,WAAW,iBAAA,EACX,eAAmB,EAAnB,OAAO,mBAAG,SAAS,KAAA,EACnB,eAAmB,EAAnB,OAAO,mBAAG,SAAS,KAAA,EACnB,WAAW,iBAAA,EACX,YAAY,kBAAA,EACZ,KAAK,WAAA;IAEL,IAAM,UAAU,GAAG,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,IAAM,UAAU,GAAG,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAE9D,OAAO,CACL,cAAK,SAAS,EAAC,0CAA0C,YACvD,KAAC,4BAA4B,IAC3B,KAAK,eAAO,KAAK,GACjB,KAAK,EAAC,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,GACZ,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { NumericFacetProps } from './types';
3
+ declare const Years: React.FC<NumericFacetProps>;
4
+ export default Years;
5
+ //# sourceMappingURL=Years.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Years.d.ts","sourceRoot":"","sources":["../../../../../src/components/facets/NumericRangeFacet/Years.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,QAAA,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAmCtC,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,24 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { getLowerAgeYears } from './utils';
14
+ import RangeInputWithPrefixedRanges from './RangeInputWithPrefixedRanges';
15
+ var Years = function (_a) {
16
+ var field = _a.field, valueLabel = _a.valueLabel, rangeDatatype = _a.rangeDatatype, hooks = _a.hooks, clearValues = _a.clearValues, _b = _a.minimum, minimum = _b === void 0 ? undefined : _b, _c = _a.maximum, maximum = _c === void 0 ? undefined : _c, isFacetView = _a.isFacetView, queryOptions = _a.queryOptions, Chart = _a.Chart;
17
+ // minimum and maximum values if not undefined are in days so need to convert it to years
18
+ var adjMinimum = minimum != undefined ? getLowerAgeYears(minimum) : 0;
19
+ var adjMaximum = maximum != undefined ? getLowerAgeYears(maximum) : 89;
20
+ var numBuckets = Math.round((adjMaximum - adjMinimum) / 10);
21
+ return (_jsx("div", { className: "flex flex-col w-100 space-y-2 px-1 mt-1 ", children: _jsx(RangeInputWithPrefixedRanges, { valueLabel: valueLabel, hooks: __assign({}, hooks), rangeDatatype: rangeDatatype, units: "years", minimum: adjMinimum, maximum: adjMaximum, numBuckets: numBuckets, field: field, clearValues: clearValues, isFacetView: isFacetView, queryOptions: queryOptions, Chart: Chart }) }));
22
+ };
23
+ export default Years;
24
+ //# sourceMappingURL=Years.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Years.js","sourceRoot":"","sources":["../../../../../src/components/facets/NumericRangeFacet/Years.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAG1E,IAAM,KAAK,GAAgC,UAAC,EAWxB;QAVlB,KAAK,WAAA,EACL,UAAU,gBAAA,EACV,aAAa,mBAAA,EACb,KAAK,WAAA,EACL,WAAW,iBAAA,EACX,eAAmB,EAAnB,OAAO,mBAAG,SAAS,KAAA,EACnB,eAAmB,EAAnB,OAAO,mBAAG,SAAS,KAAA,EACnB,WAAW,iBAAA,EACX,YAAY,kBAAA,EACZ,KAAK,WAAA;IAEL,yFAAyF;IACzF,IAAM,UAAU,GAAG,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,IAAM,UAAU,GAAG,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAE9D,OAAO,CACL,cAAK,SAAS,EAAC,2CAA2C,YACxD,KAAC,4BAA4B,IAC3B,UAAU,EAAE,UAAU,EACtB,KAAK,eAAO,KAAK,GACjB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAC,OAAO,EACb,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,GACZ,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { NumericFacetCardProps } from '../types';
3
+ /**
4
+ * A component which manages a numeric range facet
5
+ * @param field - field for this facet
6
+ * @param hooks - hooks to manage facet
7
+ * @param rangeDatatype - the datatype of the range
8
+ * @param description - description of the facet
9
+ * @param valueLabel - string representing the datatype of values (e.g. "Cases")
10
+ * @param minimum - minimum value for the range
11
+ * @param maximum - maximum value for the range
12
+ * @param facetName - name of the facet
13
+ * @param dismissCallback - function to call when facet is dismissed
14
+ * @param queryOptions - info to pass back to data fetching hooks about this facet
15
+ * @param Chart - Component for rendering a Chart view of the data
16
+ */
17
+ declare const NumericRangeFacet: React.FC<NumericFacetCardProps>;
18
+ export default NumericRangeFacet;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/facets/NumericRangeFacet/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAIjD;;;;;;;;;;;;;GAaG;AAEH,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA4JtD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,65 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { useEffect, useState } from 'react';
14
+ import DaysOrYears from './DaysOrYears';
15
+ import Year from './Year';
16
+ import Years from './Years';
17
+ import PercentRange from './PercentRange';
18
+ import NumericRangePanel from './NumericRangePanel';
19
+ import FacetControlsHeader from '../FacetControlsHeader';
20
+ var cardScrollMargin = '10px'; // TODO add support from GDC
21
+ /**
22
+ * A component which manages a numeric range facet
23
+ * @param field - field for this facet
24
+ * @param hooks - hooks to manage facet
25
+ * @param rangeDatatype - the datatype of the range
26
+ * @param description - description of the facet
27
+ * @param valueLabel - string representing the datatype of values (e.g. "Cases")
28
+ * @param minimum - minimum value for the range
29
+ * @param maximum - maximum value for the range
30
+ * @param facetName - name of the facet
31
+ * @param dismissCallback - function to call when facet is dismissed
32
+ * @param queryOptions - info to pass back to data fetching hooks about this facet
33
+ * @param Chart - Component for rendering a Chart view of the data
34
+ */
35
+ var NumericRangeFacet = function (_a) {
36
+ var _b, _c;
37
+ var field = _a.field, hooks = _a.hooks, rangeDatatype = _a.rangeDatatype, description = _a.description, valueLabel = _a.valueLabel, _d = _a.minimum, minimum = _d === void 0 ? undefined : _d, _e = _a.maximum, maximum = _e === void 0 ? undefined : _e, facetName = _a.facetName, _f = _a.dismissCallback, dismissCallback = _f === void 0 ? undefined : _f, queryOptions = _a.queryOptions, Chart = _a.Chart;
38
+ var _g = useState(true), isFacetView = _g[0], setIsFacetView = _g[1];
39
+ var isFilterExpanded = (hooks === null || hooks === void 0 ? void 0 : hooks.useFilterExpanded) && hooks.useFilterExpanded(field);
40
+ var showFilters = isFilterExpanded === undefined || isFilterExpanded;
41
+ var hash = (_c = (_b = window === null || window === void 0 ? void 0 : window.location) === null || _b === void 0 ? void 0 : _b.hash.split('#')) === null || _c === void 0 ? void 0 : _c[1];
42
+ var cardSelected = hash !== undefined && hash === field;
43
+ var toggleFlip = function () {
44
+ setIsFacetView(!isFacetView);
45
+ };
46
+ var _h = useState(false), clearValues = _h[0], setClearValues = _h[1];
47
+ useEffect(function () {
48
+ if (clearValues) {
49
+ setClearValues(false);
50
+ }
51
+ }, [clearValues]);
52
+ return (_jsxs("div", { className: "flex flex-col mx-0 bg-base-max relative border-base-lighter border-1 rounded-md text-xs transition ".concat(cardSelected ? 'animate-border-highlight ' : ''), id: field, style: {
53
+ scrollMarginTop: cardScrollMargin,
54
+ }, children: [_jsx(FacetControlsHeader, { field: field, description: description, hooks: hooks, facetName: facetName, dismissCallback: dismissCallback, isFacetView: isFacetView, toggleFlip: toggleFlip, showFlip: rangeDatatype !== 'range' && Chart !== undefined }), _jsx("div", { className: showFilters ? 'h-full' : 'h-0 invisible', "aria-hidden": !showFilters, children: {
55
+ age: (_jsx(DaysOrYears, { valueLabel: valueLabel, field: field, rangeDatatype: rangeDatatype, hooks: __assign({}, hooks), minimum: minimum, maximum: maximum, clearValues: clearValues, isFacetView: isFacetView, queryOptions: queryOptions, Chart: Chart })),
56
+ age_in_years: (_jsx(Years, { valueLabel: valueLabel, field: field, rangeDatatype: rangeDatatype, hooks: __assign({}, hooks), minimum: minimum, maximum: maximum, clearValues: clearValues, isFacetView: isFacetView, queryOptions: queryOptions, Chart: Chart })),
57
+ year: (_jsx(Year, { valueLabel: valueLabel, field: field, hooks: __assign({}, hooks), minimum: minimum, maximum: maximum, clearValues: clearValues, isFacetView: isFacetView, queryOptions: queryOptions, Chart: Chart })),
58
+ years: (_jsx(Years, { valueLabel: valueLabel, field: field, hooks: __assign({}, hooks), minimum: minimum, maximum: maximum, clearValues: clearValues, isFacetView: isFacetView, queryOptions: queryOptions, Chart: Chart })),
59
+ days: (_jsx(DaysOrYears, { valueLabel: valueLabel, field: field, rangeDatatype: rangeDatatype, hooks: __assign({}, hooks), minimum: minimum, maximum: maximum, clearValues: clearValues, isFacetView: isFacetView, queryOptions: queryOptions, Chart: Chart })),
60
+ percent: (_jsx(PercentRange, { valueLabel: valueLabel, field: field, hooks: __assign({}, hooks), minimum: minimum, maximum: maximum, clearValues: clearValues, isFacetView: isFacetView, queryOptions: queryOptions, Chart: Chart })),
61
+ range: (_jsx(NumericRangePanel, { valueLabel: valueLabel, field: field, hooks: __assign({}, hooks), minimum: minimum, maximum: maximum, clearValues: clearValues, isFacetView: isFacetView, queryOptions: queryOptions })),
62
+ }[rangeDatatype] })] }));
63
+ };
64
+ export default NumericRangeFacet;
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/facets/NumericRangeFacet/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { NumericFacetCardProps, QueryOptions } from '../types';
2
+ export type NumericFacetProps = Omit<NumericFacetCardProps, 'facetName'> & {
3
+ readonly rangeDatatype?: string;
4
+ readonly minimum: number | undefined;
5
+ readonly maximum: number | undefined;
6
+ readonly clearValues?: boolean;
7
+ readonly isFacetView: boolean;
8
+ };
9
+ /**
10
+ * Represent a range. Used to configure a row
11
+ * of a range list.
12
+ */
13
+ export interface RangeBucketElement {
14
+ readonly from: number;
15
+ readonly to: number;
16
+ readonly key: string;
17
+ readonly label: string;
18
+ readonly valueLabel?: string;
19
+ readonly value?: number;
20
+ }
21
+ export type NumericUnits = 'days' | 'years' | 'percent' | 'year';
22
+ export interface NumericFromTo {
23
+ readonly from: number;
24
+ readonly to: number;
25
+ }
26
+ export type GetNumericRangeFacetDataFunction = (field: string, ranges: ReadonlyArray<NumericFromTo>, queryOptions?: QueryOptions) => number;
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/facets/NumericRangeFacet/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,WAAW,CAAC,GAAG;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,gCAAgC,GAAG,CAC7C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,EACpC,YAAY,CAAC,EAAE,YAAY,KACxB,MAAM,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/components/facets/NumericRangeFacet/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import { FromToRange, UpdateFacetFilterFunction, ClearFacetFunction, EnumOperandValue } from '../types';
2
+ import { Operation } from '@gen3/core';
3
+ import { RangeBucketElement, NumericUnits, NumericFromTo } from './types';
4
+ export declare const DEFAULT_VISIBLE_ITEMS = 6;
5
+ export declare const symmetricalRound: (x: number) => number;
6
+ export declare const getLowerAgeYears: (days: number) => number;
7
+ export declare const getLowerAgeFromYears: (years: number) => number;
8
+ export declare const buildRangeOperator: <T extends string | number>(field: string, rangeData: FromToRange<T>) => Operation | undefined;
9
+ /**
10
+ * Given an operation, determine if range is open or closed and extract
11
+ * the range values and operands as a NumericRange
12
+ * @param filter - operation to test
13
+ */
14
+ export declare const extractRangeValues: <T extends string | number>(filter?: Operation) => FromToRange<T> | undefined;
15
+ export declare const updateFacetEnum: (fieldName: string, values: EnumOperandValue, updateFacetFilters: UpdateFacetFilterFunction, clearFilters: ClearFacetFunction) => void;
16
+ /**
17
+ * Builds a Dictionary like object contain the range and label for each "bucket" in the range
18
+ * @param numBuckets - number of buckets to create
19
+ * @param units - units such as days or percent
20
+ * @param minimum - start value of range
21
+ * @param conversion - if this is a conversion of a year value to days
22
+ */
23
+ export declare const buildRangeBuckets: (numBuckets: number, units: NumericUnits, minimum: number, queryInYears: boolean) => [Record<string, RangeBucketElement>, ReadonlyArray<NumericFromTo>];
24
+ export declare const adjustYearsToDaysIfUnitsAreYears: (value: number, units: string, queryInYears: boolean) => number | undefined;
25
+ export declare const adjustDaysToYearsIfUnitsAreYears: (value: number, units: string, queryInYears: boolean) => number | undefined;
26
+ export declare const leapThenPair: (years: number, days: number) => number[];
27
+ export declare const ageInYearsAndDaysFromDays: (ageInDays: number) => number[];
28
+ /**
29
+ * Returns a formatted timestamp string based on the provided date or the current date.
30
+ *
31
+ * @param options - An object containing the following optional parameters:
32
+ * @param date - A Date object to format. If not provided, uses the current date.
33
+ * @param includeTimes - Boolean to include time in the output. Defaults to false.
34
+ * @returns A timestamp in the format 'YYYY-MM-DD' if includeTimes is false, or 'YYYY-MM-DD.HHMMSS' if true.
35
+ * If date is null it returns undefined
36
+ *
37
+ * Uses the Swedish ("sv-SE") locale for consistent formatting (YYYY-MM-DD HH:MM:SS).
38
+ * Explicitly sets the time zone to the system's local time zone.
39
+ */
40
+ export declare function getFormattedTimestamp(options?: {
41
+ date?: Date | null;
42
+ includeTimes?: boolean;
43
+ }): string | undefined;
44
+ /**
45
+ * Given a range compute the key if possibly matches a predefined range
46
+ * otherwise classify as "custom"
47
+ * @param range - Range to classify
48
+ * @param precision - number of values after .
49
+ */
50
+ export declare const classifyRangeType: (range?: FromToRange<number>, precision?: number) => string;
51
+ export declare const buildRangeLabelsAndValues: (bucketRanges: Record<string, any>, rangeData?: Record<string, string | number>, showZero?: boolean) => Record<string, RangeBucketElement>;
52
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/components/facets/NumericRangeFacet/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,SAAS,EAKV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG1E,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAGvC,eAAO,MAAM,gBAAgB,GAAI,GAAG,MAAM,KAAG,MACS,CAAC;AAEvD,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,MACT,CAAC;AACxC,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,KAAG,MACb,CAAC;AAEzC,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,EAC1D,OAAO,MAAM,EACb,WAAW,WAAW,CAAC,CAAC,CAAC,KACxB,SAAS,GAAG,SA2Bd,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,EAC1D,SAAS,SAAS,KACjB,WAAW,CAAC,CAAC,CAAC,GAAG,SAkCnB,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,WAAW,MAAM,EACjB,QAAQ,gBAAgB,EACxB,oBAAoB,yBAAyB,EAC7C,cAAc,kBAAkB,KAC/B,IAcF,CAAC;AAwFF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,MAAM,EAClB,OAAO,YAAY,EACnB,SAAS,MAAM,EACf,cAAc,OAAO,KACpB,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAoCnE,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAC3C,OAAO,MAAM,EACb,OAAO,MAAM,EACb,cAAc,OAAO,KACpB,MAAM,GAAG,SAC6D,CAAC;AAE1E,eAAO,MAAM,gCAAgC,GAC3C,OAAO,MAAM,EACb,OAAO,MAAM,EACb,cAAc,OAAO,KACpB,MAAM,GAAG,SAEX,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,KAAG,MAAM,EAClB,CAAC;AAEhD,eAAO,MAAM,yBAAyB,GAAI,WAAW,MAAM,KAAG,MAAM,EAIjE,CAAC;AAGJ;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL,MAAM,GAAG,SAAS,CA2BpB;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,WAAW,CAAC,MAAM,CAAC,EAC3B,kBAAa,KACZ,MAYF,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,cAAc,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,YAAY,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAC3C,kBAAe,uCAkBhB,CAAC"}
@@ -0,0 +1,288 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { DAYS_IN_YEAR } from '../constants';
22
+ export var DEFAULT_VISIBLE_ITEMS = 6;
23
+ var RANGE_DECIMAL_PRECISION = 1;
24
+ export var symmetricalRound = function (x) {
25
+ return x < 0 ? Math.round(Math.abs(x)) * -1 : Math.round(x);
26
+ };
27
+ export var getLowerAgeYears = function (days) {
28
+ return symmetricalRound(days / DAYS_IN_YEAR);
29
+ };
30
+ export var getLowerAgeFromYears = function (years) {
31
+ return symmetricalRound(years * DAYS_IN_YEAR);
32
+ };
33
+ export var buildRangeOperator = function (field, rangeData) {
34
+ // couple of different cases
35
+ // * no from/to return undefined
36
+ if (rangeData.from === undefined && rangeData.to === undefined)
37
+ return undefined;
38
+ var fromOperation = rangeData.from !== undefined && rangeData.fromOp !== undefined
39
+ ? {
40
+ field: field,
41
+ operator: rangeData.fromOp,
42
+ operand: rangeData.from,
43
+ }
44
+ : undefined;
45
+ var toOperation = rangeData.to !== undefined && rangeData.toOp !== undefined
46
+ ? {
47
+ field: field,
48
+ operator: rangeData.toOp,
49
+ operand: rangeData.to,
50
+ }
51
+ : undefined;
52
+ if (fromOperation && toOperation)
53
+ return { operator: 'and', operands: [fromOperation, toOperation] };
54
+ if (fromOperation)
55
+ return fromOperation;
56
+ return toOperation;
57
+ };
58
+ /**
59
+ * Given an operation, determine if range is open or closed and extract
60
+ * the range values and operands as a NumericRange
61
+ * @param filter - operation to test
62
+ */
63
+ export var extractRangeValues = function (filter) {
64
+ if (filter !== undefined) {
65
+ switch (filter.operator) {
66
+ case '>':
67
+ case '>=':
68
+ return {
69
+ from: typeof filter.operand === 'number' ||
70
+ typeof filter.operand === 'string'
71
+ ? filter.operand
72
+ : undefined,
73
+ fromOp: filter.operator,
74
+ };
75
+ case '<':
76
+ case '<=':
77
+ return {
78
+ to: typeof filter.operand === 'number' ||
79
+ typeof filter.operand === 'string'
80
+ ? filter.operand
81
+ : undefined,
82
+ toOp: filter.operator,
83
+ };
84
+ case 'and': {
85
+ var a = extractRangeValues(filter.operands[0]);
86
+ var b = extractRangeValues(filter.operands[1]);
87
+ return __assign(__assign({}, a), b);
88
+ }
89
+ default:
90
+ return undefined;
91
+ }
92
+ }
93
+ else {
94
+ return undefined;
95
+ }
96
+ };
97
+ export var updateFacetEnum = function (fieldName, values, updateFacetFilters, clearFilters) {
98
+ if (values === undefined)
99
+ return;
100
+ if (values.length > 0) {
101
+ // TODO: Assuming Includes by default but this might change to Include|Excludes
102
+ updateFacetFilters(fieldName, {
103
+ operator: 'in',
104
+ field: fieldName,
105
+ operands: values,
106
+ });
107
+ }
108
+ // no values remove the filter
109
+ else {
110
+ clearFilters(fieldName);
111
+ }
112
+ };
113
+ /**
114
+ * returns the range [from to] for a "bucket"
115
+ * @param x - current bucket index
116
+ * @param units - custom units for this range: "years" or "days"
117
+ * @param minimum - starting value of range must be in years
118
+ */
119
+ var buildDayYearRangeBucket = function (x, units, minimum, queryInYears) {
120
+ var _a, _b;
121
+ if (queryInYears === void 0) { queryInYears = false; }
122
+ var from = minimum + x * 10; // in years
123
+ var to = minimum + (x + 1) * 10;
124
+ var fromDays = symmetricalRound(from * DAYS_IN_YEAR);
125
+ var toDays = symmetricalRound(to * DAYS_IN_YEAR);
126
+ var fromLabel = (units === 'years' ? from : fromDays).toFixed(0);
127
+ var toLabel = (units === 'years' ? to : toDays).toFixed(0);
128
+ return {
129
+ from: queryInYears ? from : fromDays,
130
+ to: queryInYears ? to : toDays,
131
+ key: "".concat((queryInYears ? from : fromDays).toFixed(RANGE_DECIMAL_PRECISION), "-").concat((queryInYears ? to : toDays).toFixed(RANGE_DECIMAL_PRECISION)),
132
+ label: "\u2265 ".concat((_a = Number(fromLabel)) === null || _a === void 0 ? void 0 : _a.toLocaleString(), " to < ").concat((_b = Number(toLabel)) === null || _b === void 0 ? void 0 : _b.toLocaleString(), " ").concat(units),
133
+ };
134
+ };
135
+ /**
136
+ * returns 10 value range from to for a "bucket"
137
+ * @param x - current bucket index
138
+ * @param units - string to append to label
139
+ * @param minimum - staring value of range
140
+ * @param fractionDigits - number of values to the right of the decimal point
141
+ */
142
+ var build10UnitRange = function (x, units, minimum) {
143
+ var from = minimum + x * 10;
144
+ var to = minimum + (x + 1) * 10;
145
+ return {
146
+ from: from,
147
+ to: to,
148
+ key: "".concat(from.toFixed(RANGE_DECIMAL_PRECISION), "-").concat(to.toFixed(RANGE_DECIMAL_PRECISION)),
149
+ label: "\u2265 ".concat(from, " to < ").concat(to, " ").concat(units),
150
+ };
151
+ };
152
+ /**
153
+ * Builds a Dictionary like object contain the range and label for each "bucket" in the range
154
+ * @param numBuckets - number of buckets to create
155
+ * @param units - units such as days or percent
156
+ * @param minimum - start value of range
157
+ * @param rangeFunction - function to compute range boundaries
158
+ */
159
+ var buildRanges = function (numBuckets, units, minimum, queryInYears, rangeFunction) {
160
+ // build the range for the useRangeFacet call
161
+ return __spreadArray([], Array(numBuckets), true).map(function (_x, i) {
162
+ return rangeFunction(i, units, minimum, queryInYears);
163
+ })
164
+ .reduce(function (r, x) {
165
+ r[x.key] = x;
166
+ return r;
167
+ }, {});
168
+ };
169
+ /**
170
+ * Builds a Dictionary like object contain the range and label for each "bucket" in the range
171
+ * @param numBuckets - number of buckets to create
172
+ * @param units - units such as days or percent
173
+ * @param minimum - start value of range
174
+ * @param conversion - if this is a conversion of a year value to days
175
+ */
176
+ export var buildRangeBuckets = function (numBuckets, units, minimum, queryInYears) {
177
+ var RangeBuilder = {
178
+ days: {
179
+ builder: buildDayYearRangeBucket,
180
+ label: 'days',
181
+ startRange: symmetricalRound(minimum / DAYS_IN_YEAR), // convert to years
182
+ },
183
+ years: {
184
+ builder: buildDayYearRangeBucket,
185
+ label: 'years',
186
+ startRange: symmetricalRound(minimum / DAYS_IN_YEAR), // convert to years
187
+ },
188
+ percent: {
189
+ builder: build10UnitRange,
190
+ label: '%',
191
+ startRange: minimum, // no conversion
192
+ },
193
+ year: {
194
+ builder: build10UnitRange,
195
+ label: '',
196
+ startRange: minimum, // no conversion
197
+ },
198
+ };
199
+ var bucketEntries = buildRanges(numBuckets, RangeBuilder[units].label, RangeBuilder[units].startRange, queryInYears, RangeBuilder[units].builder);
200
+ // build ranges for continuous range query
201
+ var r = Object.keys(bucketEntries).map(function (x) {
202
+ return { from: bucketEntries[x].from, to: bucketEntries[x].to };
203
+ });
204
+ return [bucketEntries, r];
205
+ };
206
+ export var adjustYearsToDaysIfUnitsAreYears = function (value, units, queryInYears) {
207
+ return units == 'years' && !queryInYears ? getLowerAgeFromYears(value) : value;
208
+ };
209
+ export var adjustDaysToYearsIfUnitsAreYears = function (value, units, queryInYears) {
210
+ return units === 'years' && !queryInYears ? getLowerAgeYears(value) : value;
211
+ };
212
+ export var leapThenPair = function (years, days) {
213
+ return days === 365 ? [years + 1, 0] : [years, days];
214
+ };
215
+ export var ageInYearsAndDaysFromDays = function (ageInDays) {
216
+ return leapThenPair(Math.floor(ageInDays / DAYS_IN_YEAR), Math.ceil(ageInDays % DAYS_IN_YEAR));
217
+ };
218
+ // https://stackoverflow.com/questions/2388115/get-locale-short-date-format-using-javascript
219
+ /**
220
+ * Returns a formatted timestamp string based on the provided date or the current date.
221
+ *
222
+ * @param options - An object containing the following optional parameters:
223
+ * @param date - A Date object to format. If not provided, uses the current date.
224
+ * @param includeTimes - Boolean to include time in the output. Defaults to false.
225
+ * @returns A timestamp in the format 'YYYY-MM-DD' if includeTimes is false, or 'YYYY-MM-DD.HHMMSS' if true.
226
+ * If date is null it returns undefined
227
+ *
228
+ * Uses the Swedish ("sv-SE") locale for consistent formatting (YYYY-MM-DD HH:MM:SS).
229
+ * Explicitly sets the time zone to the system's local time zone.
230
+ */
231
+ export function getFormattedTimestamp(options) {
232
+ if (options === void 0) { options = {}; }
233
+ var _a = options.date, date = _a === void 0 ? new Date() : _a, _b = options.includeTimes, includeTimes = _b === void 0 ? false : _b;
234
+ if (date === null)
235
+ return undefined;
236
+ var formatOptions = {
237
+ year: 'numeric',
238
+ month: '2-digit',
239
+ day: '2-digit',
240
+ timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
241
+ };
242
+ if (includeTimes) {
243
+ Object.assign(formatOptions, {
244
+ hour: '2-digit',
245
+ minute: '2-digit',
246
+ second: '2-digit',
247
+ hour12: false,
248
+ });
249
+ }
250
+ var formattedDate = date.toLocaleString('sv-SE', formatOptions);
251
+ if (includeTimes) {
252
+ return formattedDate.replace(' ', '.').replace(/[:]/g, '');
253
+ }
254
+ else {
255
+ return formattedDate;
256
+ }
257
+ }
258
+ /**
259
+ * Given a range compute the key if possibly matches a predefined range
260
+ * otherwise classify as "custom"
261
+ * @param range - Range to classify
262
+ * @param precision - number of values after .
263
+ */
264
+ export var classifyRangeType = function (range, precision) {
265
+ if (precision === void 0) { precision = 1; }
266
+ if (range === undefined)
267
+ return 'custom';
268
+ if (range.fromOp == '>=' &&
269
+ range.toOp == '<' &&
270
+ range.from !== undefined &&
271
+ range.to !== undefined)
272
+ // builds a range "key"
273
+ return "".concat(range.from.toFixed(precision), "-").concat(range.to.toFixed(precision));
274
+ return 'custom';
275
+ };
276
+ export var buildRangeLabelsAndValues = function (bucketRanges, rangeData, showZero) {
277
+ if (showZero === void 0) { showZero = true; }
278
+ return Object.keys(bucketRanges).reduce(function (b, x) {
279
+ var _a;
280
+ if (!showZero && rangeData && rangeData[x] == 0)
281
+ return b;
282
+ b[x] = __assign(__assign({}, bucketRanges[x]), { key: x, value: rangeData === null || rangeData === void 0 ? void 0 : rangeData[x], valueLabel: (rangeData === null || rangeData === void 0 ? void 0 : rangeData[x])
283
+ ? "".concat((_a = rangeData[x]) === null || _a === void 0 ? void 0 : _a.toLocaleString())
284
+ : undefined });
285
+ return b;
286
+ }, {});
287
+ };
288
+ //# sourceMappingURL=utils.js.map