@1money/component-ui 0.0.67 → 0.0.69

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 (163) hide show
  1. package/es/business/Filter/Account/Account.d.ts +2 -0
  2. package/es/business/Filter/Account/Account.js +289 -0
  3. package/es/business/Filter/Account/index.d.ts +2 -0
  4. package/es/business/Filter/Account/index.js +3 -0
  5. package/es/business/Filter/Account/interface.d.ts +83 -0
  6. package/es/business/Filter/Account/interface.js +2 -0
  7. package/es/business/Filter/Account/style/Account.css +84 -0
  8. package/es/business/Filter/Account/style/css.js +2 -0
  9. package/es/business/Filter/Account/style/index.d.ts +1 -0
  10. package/es/business/Filter/Account/style/index.js +2 -0
  11. package/es/business/Filter/Asset/Asset.d.ts +2 -0
  12. package/es/business/Filter/Asset/Asset.js +306 -0
  13. package/es/business/Filter/Asset/index.d.ts +2 -0
  14. package/es/business/Filter/Asset/index.js +3 -0
  15. package/es/business/Filter/Asset/interface.d.ts +90 -0
  16. package/es/business/Filter/Asset/interface.js +2 -0
  17. package/es/business/Filter/Asset/style/Asset.css +96 -0
  18. package/es/business/Filter/Asset/style/css.js +2 -0
  19. package/es/business/Filter/Asset/style/index.d.ts +1 -0
  20. package/es/business/Filter/Asset/style/index.js +2 -0
  21. package/es/business/Filter/DateRange/DateRange.d.ts +2 -0
  22. package/es/business/Filter/DateRange/DateRange.js +393 -0
  23. package/es/business/Filter/DateRange/index.d.ts +2 -0
  24. package/es/business/Filter/DateRange/index.js +3 -0
  25. package/es/business/Filter/DateRange/interface.d.ts +68 -0
  26. package/es/business/Filter/DateRange/interface.js +9 -0
  27. package/es/business/Filter/DateRange/style/DateRange.css +85 -0
  28. package/es/business/Filter/DateRange/style/css.js +2 -0
  29. package/es/business/Filter/DateRange/style/index.d.ts +1 -0
  30. package/es/business/Filter/DateRange/style/index.js +2 -0
  31. package/es/business/Filter/Option/Option.d.ts +2 -0
  32. package/es/business/Filter/Option/Option.js +264 -0
  33. package/es/business/Filter/Option/index.d.ts +2 -0
  34. package/es/business/Filter/Option/index.js +3 -0
  35. package/es/business/Filter/Option/interface.d.ts +81 -0
  36. package/es/business/Filter/Option/interface.js +2 -0
  37. package/es/business/Filter/Option/style/Option.css +72 -0
  38. package/es/business/Filter/Option/style/css.js +2 -0
  39. package/es/business/Filter/Option/style/index.d.ts +1 -0
  40. package/es/business/Filter/Option/style/index.js +2 -0
  41. package/es/business/Filter/index.d.ts +4 -0
  42. package/es/business/Filter/index.js +5 -0
  43. package/es/business/Select/Asset/AssetSelect.js +49 -27
  44. package/es/business/Select/Asset/interface.d.ts +16 -1
  45. package/es/business/Select/Asset/style/AssetSelect.css +5 -0
  46. package/es/business/Select/Network/NetworkSelect.js +79 -13
  47. package/es/business/Select/Network/interface.d.ts +43 -9
  48. package/es/business/Select/Network/interface.js +9 -2
  49. package/es/business/Select/Network/style/NetworkSelect.css +10 -0
  50. package/es/business/index.d.ts +1 -0
  51. package/es/business/index.js +2 -1
  52. package/es/components/ProForm/interface.d.ts +3 -1
  53. package/es/components/ProForm/layouts/QueryFilter.js +5 -1
  54. package/es/components/ProTable/ProTable.d.ts +5 -0
  55. package/es/components/ProTable/ProTable.js +309 -0
  56. package/es/components/ProTable/constants.d.ts +12 -0
  57. package/es/components/ProTable/constants.js +12 -0
  58. package/es/components/ProTable/core/genColumns.d.ts +10 -0
  59. package/es/components/ProTable/core/genColumns.js +81 -0
  60. package/es/components/ProTable/core/genSearchFields.d.ts +19 -0
  61. package/es/components/ProTable/core/genSearchFields.js +103 -0
  62. package/es/components/ProTable/core/useAwaitableReload.d.ts +17 -0
  63. package/es/components/ProTable/core/useAwaitableReload.js +39 -0
  64. package/es/components/ProTable/core/utils.d.ts +12 -0
  65. package/es/components/ProTable/core/utils.js +21 -0
  66. package/es/components/ProTable/index.d.ts +4 -0
  67. package/es/components/ProTable/index.js +5 -0
  68. package/es/components/ProTable/interface.d.ts +132 -0
  69. package/es/components/ProTable/interface.js +2 -0
  70. package/es/components/ProTable/style/ProTable.css +47 -0
  71. package/es/components/ProTable/style/css.js +6 -0
  72. package/es/components/ProTable/style/index.d.ts +5 -0
  73. package/es/components/ProTable/style/index.js +6 -0
  74. package/es/components/ProTable/useFetchData.d.ts +48 -0
  75. package/es/components/ProTable/useFetchData.js +270 -0
  76. package/es/components/Select/Select.js +3 -2
  77. package/es/components/Select/interface.d.ts +2 -0
  78. package/es/index.css +1 -1
  79. package/es/index.d.ts +2 -0
  80. package/es/index.js +2 -1
  81. package/lib/business/Filter/Account/Account.d.ts +2 -0
  82. package/lib/business/Filter/Account/Account.js +296 -0
  83. package/lib/business/Filter/Account/index.d.ts +2 -0
  84. package/lib/business/Filter/Account/index.js +28 -0
  85. package/lib/business/Filter/Account/interface.d.ts +83 -0
  86. package/lib/business/Filter/Account/interface.js +6 -0
  87. package/lib/business/Filter/Account/style/Account.css +84 -0
  88. package/lib/business/Filter/Account/style/css.js +4 -0
  89. package/lib/business/Filter/Account/style/index.d.ts +1 -0
  90. package/lib/business/Filter/Account/style/index.js +4 -0
  91. package/lib/business/Filter/Asset/Asset.d.ts +2 -0
  92. package/lib/business/Filter/Asset/Asset.js +313 -0
  93. package/lib/business/Filter/Asset/index.d.ts +2 -0
  94. package/lib/business/Filter/Asset/index.js +28 -0
  95. package/lib/business/Filter/Asset/interface.d.ts +90 -0
  96. package/lib/business/Filter/Asset/interface.js +6 -0
  97. package/lib/business/Filter/Asset/style/Asset.css +96 -0
  98. package/lib/business/Filter/Asset/style/css.js +4 -0
  99. package/lib/business/Filter/Asset/style/index.d.ts +1 -0
  100. package/lib/business/Filter/Asset/style/index.js +4 -0
  101. package/lib/business/Filter/DateRange/DateRange.d.ts +2 -0
  102. package/lib/business/Filter/DateRange/DateRange.js +400 -0
  103. package/lib/business/Filter/DateRange/index.d.ts +2 -0
  104. package/lib/business/Filter/DateRange/index.js +28 -0
  105. package/lib/business/Filter/DateRange/interface.d.ts +68 -0
  106. package/lib/business/Filter/DateRange/interface.js +15 -0
  107. package/lib/business/Filter/DateRange/style/DateRange.css +85 -0
  108. package/lib/business/Filter/DateRange/style/css.js +4 -0
  109. package/lib/business/Filter/DateRange/style/index.d.ts +1 -0
  110. package/lib/business/Filter/DateRange/style/index.js +4 -0
  111. package/lib/business/Filter/Option/Option.d.ts +2 -0
  112. package/lib/business/Filter/Option/Option.js +271 -0
  113. package/lib/business/Filter/Option/index.d.ts +2 -0
  114. package/lib/business/Filter/Option/index.js +28 -0
  115. package/lib/business/Filter/Option/interface.d.ts +81 -0
  116. package/lib/business/Filter/Option/interface.js +6 -0
  117. package/lib/business/Filter/Option/style/Option.css +72 -0
  118. package/lib/business/Filter/Option/style/css.js +4 -0
  119. package/lib/business/Filter/Option/style/index.d.ts +1 -0
  120. package/lib/business/Filter/Option/style/index.js +4 -0
  121. package/lib/business/Filter/index.d.ts +4 -0
  122. package/lib/business/Filter/index.js +50 -0
  123. package/lib/business/Select/Asset/AssetSelect.js +49 -27
  124. package/lib/business/Select/Asset/interface.d.ts +16 -1
  125. package/lib/business/Select/Asset/style/AssetSelect.css +5 -0
  126. package/lib/business/Select/Network/NetworkSelect.js +80 -13
  127. package/lib/business/Select/Network/interface.d.ts +43 -9
  128. package/lib/business/Select/Network/interface.js +10 -1
  129. package/lib/business/Select/Network/style/NetworkSelect.css +10 -0
  130. package/lib/business/index.d.ts +1 -0
  131. package/lib/business/index.js +12 -1
  132. package/lib/components/ProForm/interface.d.ts +3 -1
  133. package/lib/components/ProForm/layouts/QueryFilter.js +5 -1
  134. package/lib/components/ProTable/ProTable.d.ts +5 -0
  135. package/lib/components/ProTable/ProTable.js +316 -0
  136. package/lib/components/ProTable/constants.d.ts +12 -0
  137. package/lib/components/ProTable/constants.js +18 -0
  138. package/lib/components/ProTable/core/genColumns.d.ts +10 -0
  139. package/lib/components/ProTable/core/genColumns.js +87 -0
  140. package/lib/components/ProTable/core/genSearchFields.d.ts +19 -0
  141. package/lib/components/ProTable/core/genSearchFields.js +111 -0
  142. package/lib/components/ProTable/core/useAwaitableReload.d.ts +17 -0
  143. package/lib/components/ProTable/core/useAwaitableReload.js +46 -0
  144. package/lib/components/ProTable/core/utils.d.ts +12 -0
  145. package/lib/components/ProTable/core/utils.js +28 -0
  146. package/lib/components/ProTable/index.d.ts +4 -0
  147. package/lib/components/ProTable/index.js +33 -0
  148. package/lib/components/ProTable/interface.d.ts +132 -0
  149. package/lib/components/ProTable/interface.js +6 -0
  150. package/lib/components/ProTable/style/ProTable.css +47 -0
  151. package/lib/components/ProTable/style/css.js +8 -0
  152. package/lib/components/ProTable/style/index.d.ts +5 -0
  153. package/lib/components/ProTable/style/index.js +8 -0
  154. package/lib/components/ProTable/useFetchData.d.ts +48 -0
  155. package/lib/components/ProTable/useFetchData.js +277 -0
  156. package/lib/components/Select/Select.js +3 -2
  157. package/lib/components/Select/interface.d.ts +2 -0
  158. package/lib/index.css +1 -1
  159. package/lib/index.d.ts +2 -0
  160. package/lib/index.js +8 -1
  161. package/package.json +31 -1
  162. package/scripts/mcp-server/examples.generated.json +156 -0
  163. package/scripts/mcp-server/index.generated.json +741 -1
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Retrieves the spacing value for a given token key.
3
+ *
4
+ * @param {string} $key - The spacing token key (e.g., '100', '200').
5
+ * @return {length|null} The computed spacing value or null if the key is invalid.
6
+ * @example
7
+ * .element {
8
+ * padding: om-spacing-token('200'); // Returns 8px if $om-sys-spacing-unit is 4px
9
+ * }
10
+ */
11
+ /**
12
+ * Computes the spacing value based on a token key or a direct length value.
13
+ *
14
+ * @param {string|length} $value - The spacing token key (e.g., '100') or a direct length value (e.g., '16px').
15
+ * @return {length} The computed spacing value.
16
+ * @example
17
+ * .element {
18
+ * margin: om-spacing-value('300'); // Returns 12px if $om-sys-spacing-unit is 4px
19
+ * padding: om-spacing-value(16px); // Returns 16px
20
+ * gap: om-spacing-value(2); // Returns 8px if $om-sys-spacing-unit is 4px
21
+ * }
22
+ */
23
+ .om-asset-filter__value {
24
+ display: inline-flex;
25
+ align-items: center;
26
+ width: 100%;
27
+ overflow: hidden;
28
+ line-height: 18px;
29
+ }
30
+ .om-asset-filter__value-label {
31
+ flex: 0 1 auto;
32
+ min-width: 0;
33
+ overflow: hidden;
34
+ white-space: nowrap;
35
+ text-overflow: ellipsis;
36
+ }
37
+ .om-asset-filter__value-more {
38
+ flex: 0 0 auto;
39
+ margin-left: var(--om-spacing-100, 4px);
40
+ color: var(--om-text-default-tertiary, #646465);
41
+ }
42
+
43
+ .om-asset-filter-panel .om-component-ui-select-panel-header {
44
+ margin-bottom: var(--om-spacing-050, 2px);
45
+ }
46
+ .om-asset-filter-panel .om-asset-filter__group-label {
47
+ padding-top: var(--om-spacing-200, 8px);
48
+ padding-bottom: var(--om-spacing-050, 2px);
49
+ }
50
+ .om-asset-filter-panel .om-asset-filter__group-label [class*=om-component-ui-typography] {
51
+ font-size: var(--om-body-sm-font-size);
52
+ font-family: var(--om-body-sm-font-family);
53
+ line-height: var(--om-body-sm-line-height);
54
+ letter-spacing: var(--om-body-sm-letter-spacing);
55
+ font-weight: var(--om-body-sm-strong-font-weight);
56
+ color: var(--om-text-default-tertiary, #646465);
57
+ }
58
+ .om-asset-filter-panel .om-asset-filter__row {
59
+ width: 100%;
60
+ }
61
+ .om-asset-filter-panel .om-asset-filter__row-main {
62
+ min-width: 0;
63
+ }
64
+ .om-asset-filter-panel .om-asset-filter__row-name {
65
+ min-width: 0;
66
+ overflow: hidden;
67
+ white-space: nowrap;
68
+ text-overflow: ellipsis;
69
+ }
70
+ .om-asset-filter-panel .om-asset-filter__row-check {
71
+ flex: 0 0 auto;
72
+ pointer-events: none;
73
+ }
74
+ .om-asset-filter-panel .om-asset-filter__all {
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: space-between;
78
+ width: 100%;
79
+ padding: var(--om-spacing-200, 8px);
80
+ border: none;
81
+ background: transparent;
82
+ border-radius: var(--om-radius-200, 8px);
83
+ cursor: pointer;
84
+ }
85
+ .om-asset-filter-panel .om-asset-filter__all:hover, .om-asset-filter-panel .om-asset-filter__all--checked {
86
+ background: var(--om-bg-default-secondary, #f8f8f8);
87
+ }
88
+
89
+ .om-asset-filter-icon {
90
+ flex: 0 0 auto;
91
+ width: 24px;
92
+ height: 24px;
93
+ -o-object-fit: cover;
94
+ object-fit: cover;
95
+ border-radius: var(--om-radius-full, 9999px);
96
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("./Asset.css");
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0ZpbHRlci9Bc3NldC9zcmMvYnVzaW5lc3MvRmlsdGVyL0Fzc2V0L3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbInJlcXVpcmUiXSwibWFwcGluZ3MiOiI7O0FBQUFBLE9BQUEiLCJmaWxlIjoiYnVzaW5lc3MvRmlsdGVyL0Fzc2V0L3N0eWxlL2Nzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1 @@
1
+ import './Asset.css';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("./Asset.css");
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0ZpbHRlci9Bc3NldC9zcmMvYnVzaW5lc3MvRmlsdGVyL0Fzc2V0L3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbInJlcXVpcmUiXSwibWFwcGluZ3MiOiI7O0FBQUFBLE9BQUEiLCJmaWxlIjoiYnVzaW5lc3MvRmlsdGVyL0Fzc2V0L3N0eWxlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,2 @@
1
+ import type { DateRangeFilterProps } from './interface';
2
+ export declare const DateRangeFilter: import("react").NamedExoticComponent<DateRangeFilterProps>;
@@ -0,0 +1,400 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.DateRangeFilter = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ var _react = require("react");
11
+ var _Button = require("../../../components/Button");
12
+ var _Calendar = require("../../../components/Calendar");
13
+ var _Flex = require("../../../components/Flex");
14
+ var _Icons = require("../../../components/Icons");
15
+ var _Radio = require("../../../components/Radio");
16
+ var _Select = require("../../../components/Select");
17
+ var _Typography = require("../../../components/Typography");
18
+ var _classnames = require("../../../utils/classnames");
19
+ var _interface = require("./interface");
20
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
21
+ var t = {};
22
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
23
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
24
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
25
+ }
26
+ return t;
27
+ };
28
+ var WRAP_CLS = 'om-date-range-filter';
29
+ // The calendar overlay is portaled to <body>, outside WRAP_CLS — this is a
30
+ // standalone top-level hook so its SCSS can lift it above the host
31
+ // Select.Custom panel (z-index 1500).
32
+ var CALENDAR_PANEL_CLS = 'om-date-range-filter-calendar-panel';
33
+ // The Select.Custom panel is portaled to <body> too — top-level hook for
34
+ // scoping panel-body overrides without leaking into other Select panels.
35
+ var SELECT_PANEL_CLS = 'om-date-range-filter-panel';
36
+ var PANEL_WIDTH_PRESET = 240;
37
+ var PANEL_WIDTH_CUSTOM = 320;
38
+ var CALENDAR_MONTHS = 2;
39
+ var CHEVRON_SIZE = 16;
40
+ var BACK_ICON_SIZE = 24;
41
+ var RESET_LABEL = 'Reset';
42
+ var APPLY_LABEL = 'Apply';
43
+ var CUSTOM_RANGE_TITLE = 'Custom date range';
44
+ var RANGE_SEPARATOR = ' - ';
45
+ var FULL_WIDTH_STYLE = {
46
+ flex: 1
47
+ };
48
+ var _DATE_RANGE_OPTIONS = (0, _slicedToArray2["default"])(_interface.DATE_RANGE_OPTIONS, 5),
49
+ OPTION_ALL = _DATE_RANGE_OPTIONS[0],
50
+ OPTION_LAST_30_DAYS = _DATE_RANGE_OPTIONS[1],
51
+ OPTION_YEAR_TO_DATE = _DATE_RANGE_OPTIONS[2],
52
+ OPTION_LAST_12_MONTHS = _DATE_RANGE_OPTIONS[3],
53
+ OPTION_CUSTOM = _DATE_RANGE_OPTIONS[4];
54
+ var LAST_30_DAYS_COUNT = 30;
55
+ var LAST_12_MONTHS_COUNT = 12;
56
+ var YEAR_START_MONTH = 0; // January (zero-based month index)
57
+ var FIRST_DAY_OF_MONTH = 1;
58
+ // Day-boundary times so an applied range covers whole days inclusively:
59
+ // the start day from 00:00:00.000 and the end day through 23:59:59.999.
60
+ var DAY_START_TIME = [0, 0, 0, 0]; // [hours, minutes, seconds, ms]
61
+ var DAY_END_TIME = [23, 59, 59, 999]; // [hours, minutes, seconds, ms]
62
+ var DATE_FORMAT_LOCALE = 'en-US';
63
+ var DATE_FORMAT_OPTIONS = {
64
+ month: '2-digit',
65
+ day: '2-digit',
66
+ year: 'numeric'
67
+ };
68
+ var dateFormatter = new Intl.DateTimeFormat(DATE_FORMAT_LOCALE, DATE_FORMAT_OPTIONS);
69
+ var EMPTY_RANGE = {
70
+ startDate: null,
71
+ endDate: null
72
+ };
73
+ var startOfDay = function startOfDay(date) {
74
+ var result = new Date(date);
75
+ result.setHours.apply(result, DAY_START_TIME);
76
+ return result;
77
+ };
78
+ var endOfDay = function endOfDay(date) {
79
+ var result = new Date(date);
80
+ result.setHours.apply(result, DAY_END_TIME);
81
+ return result;
82
+ };
83
+ var formatDate = function formatDate(date) {
84
+ return dateFormatter.format(date);
85
+ };
86
+ var formatRange = function formatRange(start, end) {
87
+ return "".concat(formatDate(start)).concat(RANGE_SEPARATOR).concat(formatDate(end));
88
+ };
89
+ var getDateFromOption = function getDateFromOption(option, range) {
90
+ var today = new Date();
91
+ switch (option) {
92
+ case OPTION_LAST_30_DAYS:
93
+ {
94
+ var startDate = new Date();
95
+ startDate.setDate(today.getDate() - LAST_30_DAYS_COUNT);
96
+ return {
97
+ startDate: startOfDay(startDate),
98
+ endDate: endOfDay(today)
99
+ };
100
+ }
101
+ case OPTION_YEAR_TO_DATE:
102
+ {
103
+ var _startDate = new Date(today.getFullYear(), YEAR_START_MONTH, FIRST_DAY_OF_MONTH);
104
+ return {
105
+ startDate: startOfDay(_startDate),
106
+ endDate: endOfDay(today)
107
+ };
108
+ }
109
+ case OPTION_LAST_12_MONTHS:
110
+ {
111
+ var _startDate2 = new Date();
112
+ _startDate2.setMonth(today.getMonth() - LAST_12_MONTHS_COUNT);
113
+ return {
114
+ startDate: startOfDay(_startDate2),
115
+ endDate: endOfDay(today)
116
+ };
117
+ }
118
+ case OPTION_CUSTOM:
119
+ if (range.startDate && range.endDate) {
120
+ return {
121
+ startDate: startOfDay(range.startDate),
122
+ endDate: endOfDay(range.endDate)
123
+ };
124
+ }
125
+ return _interface.ALL_TRANSACTIONS_VALUE;
126
+ default:
127
+ return _interface.ALL_TRANSACTIONS_VALUE;
128
+ }
129
+ };
130
+ var DateRangeFilterBase = function DateRangeFilterBase(_a) {
131
+ var ref = _a.ref,
132
+ className = _a.className,
133
+ _a$size = _a.size,
134
+ size = _a$size === void 0 ? 'small' : _a$size,
135
+ label = _a.label,
136
+ _a$placeholder = _a.placeholder,
137
+ placeholder = _a$placeholder === void 0 ? 'Date' : _a$placeholder,
138
+ _a$allTransactionsLab = _a.allTransactionsLabel,
139
+ allTransactionsLabel = _a$allTransactionsLab === void 0 ? 'All transactions' : _a$allTransactionsLab,
140
+ _a$defaultSelectAll = _a.defaultSelectAll,
141
+ defaultSelectAll = _a$defaultSelectAll === void 0 ? false : _a$defaultSelectAll,
142
+ onApply = _a.onApply,
143
+ onReset = _a.onReset,
144
+ rest = __rest(_a, ["ref", "className", "size", "label", "placeholder", "allTransactionsLabel", "defaultSelectAll", "onApply", "onReset"]);
145
+ var initialOption = defaultSelectAll ? OPTION_ALL : null;
146
+ var initialText = defaultSelectAll ? allTransactionsLabel : '';
147
+ var _useState = (0, _react.useState)(false),
148
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
149
+ open = _useState2[0],
150
+ setOpen = _useState2[1];
151
+ var _useState3 = (0, _react.useState)(initialOption),
152
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
153
+ selectedOption = _useState4[0],
154
+ setSelectedOption = _useState4[1];
155
+ var _useState5 = (0, _react.useState)(initialOption),
156
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
157
+ lastSelectedOption = _useState6[0],
158
+ setLastSelectedOption = _useState6[1];
159
+ var _useState7 = (0, _react.useState)(EMPTY_RANGE),
160
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
161
+ selectedRange = _useState8[0],
162
+ setSelectedRange = _useState8[1];
163
+ var _useState9 = (0, _react.useState)(EMPTY_RANGE),
164
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
165
+ appliedRange = _useState10[0],
166
+ setAppliedRange = _useState10[1];
167
+ var _useState11 = (0, _react.useState)(initialText),
168
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
169
+ selectedText = _useState12[0],
170
+ setSelectedText = _useState12[1];
171
+ var _useState13 = (0, _react.useState)(false),
172
+ _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
173
+ showCustomRange = _useState14[0],
174
+ setShowCustomRange = _useState14[1];
175
+ var _useState15 = (0, _react.useState)(undefined),
176
+ _useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
177
+ monthView = _useState16[0],
178
+ setMonthView = _useState16[1];
179
+ (0, _react.useImperativeHandle)(ref, function () {
180
+ return {
181
+ clear: function clear() {
182
+ setSelectedOption(null);
183
+ setLastSelectedOption(null);
184
+ setSelectedRange(EMPTY_RANGE);
185
+ setAppliedRange(EMPTY_RANGE);
186
+ setSelectedText('');
187
+ setShowCustomRange(false);
188
+ setMonthView(undefined);
189
+ },
190
+ reset: function reset() {
191
+ setSelectedOption(initialOption);
192
+ setLastSelectedOption(initialOption);
193
+ setSelectedRange(EMPTY_RANGE);
194
+ setAppliedRange(EMPTY_RANGE);
195
+ setSelectedText(initialText);
196
+ setShowCustomRange(false);
197
+ setMonthView(undefined);
198
+ onReset === null || onReset === void 0 ? void 0 : onReset();
199
+ }
200
+ };
201
+ }, [initialOption, initialText, onReset]);
202
+ var getDisplayLabel = (0, _react.useCallback)(function (option) {
203
+ return option === OPTION_ALL ? allTransactionsLabel : option;
204
+ }, [allTransactionsLabel]);
205
+ var handleItemClick = (0, _react.useCallback)(function (option) {
206
+ if (option === OPTION_CUSTOM) {
207
+ setShowCustomRange(true);
208
+ } else {
209
+ setShowCustomRange(false);
210
+ setSelectedOption(option);
211
+ }
212
+ }, []);
213
+ var handleDateSelect = (0, _react.useCallback)(function (event) {
214
+ var value = event.value;
215
+ if (!Array.isArray(value)) return;
216
+ var _value = (0, _slicedToArray2["default"])(value, 2),
217
+ start = _value[0],
218
+ end = _value[1];
219
+ if (start && end) {
220
+ setMonthView(start);
221
+ setSelectedRange({
222
+ startDate: start,
223
+ endDate: end
224
+ });
225
+ } else if (start) {
226
+ setSelectedRange({
227
+ startDate: start,
228
+ endDate: null
229
+ });
230
+ }
231
+ }, []);
232
+ var applyPreset = (0, _react.useCallback)(function () {
233
+ if (!selectedOption) return;
234
+ onApply(getDateFromOption(selectedOption, selectedRange));
235
+ setSelectedText(getDisplayLabel(selectedOption));
236
+ setLastSelectedOption(selectedOption);
237
+ setShowCustomRange(false);
238
+ setSelectedRange(EMPTY_RANGE);
239
+ setAppliedRange(EMPTY_RANGE);
240
+ setMonthView(undefined);
241
+ setOpen(false);
242
+ }, [selectedOption, selectedRange, onApply, getDisplayLabel]);
243
+ var applyCustom = (0, _react.useCallback)(function () {
244
+ var startDate = selectedRange.startDate,
245
+ endDate = selectedRange.endDate;
246
+ if (!startDate || !endDate) return;
247
+ onApply({
248
+ startDate: startOfDay(startDate),
249
+ endDate: endOfDay(endDate)
250
+ });
251
+ setSelectedText(formatRange(startDate, endDate));
252
+ setLastSelectedOption(OPTION_CUSTOM);
253
+ setSelectedOption(null);
254
+ setAppliedRange({
255
+ startDate: startDate,
256
+ endDate: endDate
257
+ });
258
+ setShowCustomRange(true);
259
+ setOpen(false);
260
+ }, [selectedRange, onApply]);
261
+ var resetSelection = (0, _react.useCallback)(function () {
262
+ setSelectedOption(initialOption);
263
+ setLastSelectedOption(initialOption);
264
+ setSelectedText(initialText);
265
+ setSelectedRange(EMPTY_RANGE);
266
+ setAppliedRange(EMPTY_RANGE);
267
+ setMonthView(undefined);
268
+ onReset === null || onReset === void 0 ? void 0 : onReset();
269
+ }, [initialOption, initialText, onReset]);
270
+ var handleOpenChange = (0, _react.useCallback)(function (nextOpen) {
271
+ setOpen(nextOpen);
272
+ if (nextOpen) return;
273
+ // On close without Apply, snap the panel back to the last committed state
274
+ // so an abandoned edit doesn't linger.
275
+ if (lastSelectedOption === OPTION_CUSTOM) {
276
+ setShowCustomRange(true);
277
+ setSelectedRange(appliedRange);
278
+ } else {
279
+ setShowCustomRange(false);
280
+ setSelectedOption(lastSelectedOption);
281
+ }
282
+ }, [lastSelectedOption, appliedRange]);
283
+ var calendarValue = selectedRange.startDate ? selectedRange.endDate ? [selectedRange.startDate, selectedRange.endDate] : [selectedRange.startDate] : null;
284
+ var renderPresetList = function renderPresetList() {
285
+ return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
286
+ children: [(0, _jsxRuntime.jsx)("ul", {
287
+ className: "".concat(WRAP_CLS, "__list"),
288
+ children: _interface.DATE_RANGE_OPTIONS.map(function (option) {
289
+ return (0, _jsxRuntime.jsxs)("li", {
290
+ className: (0, _classnames.joinCls)("".concat(WRAP_CLS, "__item"), option === OPTION_CUSTOM && "".concat(WRAP_CLS, "__item--custom")),
291
+ onClick: function onClick() {
292
+ return handleItemClick(option);
293
+ },
294
+ children: [(0, _jsxRuntime.jsx)(_Typography.TypographyBody, {
295
+ size: 'md',
296
+ children: getDisplayLabel(option)
297
+ }), option === OPTION_CUSTOM ? (0, _jsxRuntime.jsx)(_Icons.Icons, {
298
+ name: 'chevronRight',
299
+ size: CHEVRON_SIZE
300
+ }) : (0, _jsxRuntime.jsx)(_Radio.Radio, {
301
+ size: 'small',
302
+ checked: selectedOption === option
303
+ })]
304
+ }, option);
305
+ })
306
+ }), (0, _jsxRuntime.jsxs)(_Flex.Flex, {
307
+ gap: 8,
308
+ className: "".concat(WRAP_CLS, "__footer"),
309
+ children: [(0, _jsxRuntime.jsx)(_Button.Button, {
310
+ color: 'grey',
311
+ size: 'small',
312
+ style: FULL_WIDTH_STYLE,
313
+ onClick: resetSelection,
314
+ children: RESET_LABEL
315
+ }), (0, _jsxRuntime.jsx)(_Button.Button, {
316
+ color: 'primary',
317
+ size: 'small',
318
+ style: FULL_WIDTH_STYLE,
319
+ disabled: !selectedOption,
320
+ onClick: applyPreset,
321
+ children: APPLY_LABEL
322
+ })]
323
+ })]
324
+ });
325
+ };
326
+ var renderCustomRange = function renderCustomRange() {
327
+ return (0, _jsxRuntime.jsxs)("div", {
328
+ className: "".concat(WRAP_CLS, "__custom"),
329
+ children: [(0, _jsxRuntime.jsxs)(_Flex.Flex, {
330
+ align: 'center',
331
+ gap: 8,
332
+ className: "".concat(WRAP_CLS, "__custom-header"),
333
+ children: [(0, _jsxRuntime.jsx)(_Icons.Icons, {
334
+ name: 'arrowLeft',
335
+ size: BACK_ICON_SIZE,
336
+ wrapperCls: "".concat(WRAP_CLS, "__back-icon"),
337
+ onClick: function onClick() {
338
+ return setShowCustomRange(false);
339
+ }
340
+ }), (0, _jsxRuntime.jsx)(_Typography.TypographyLabel, {
341
+ size: 'lg',
342
+ children: CUSTOM_RANGE_TITLE
343
+ })]
344
+ }), (0, _jsxRuntime.jsx)(_Calendar.Calendar, {
345
+ wrapperCls: "".concat(WRAP_CLS, "__calendar"),
346
+ panelClassName: CALENDAR_PANEL_CLS,
347
+ size: 'small',
348
+ selectionMode: 'range',
349
+ placeholder: 'MM/DD/YYYY - MM/DD/YYYY',
350
+ readOnlyInput: true,
351
+ hideOnRangeSelection: true,
352
+ numberOfMonths: CALENDAR_MONTHS,
353
+ value: calendarValue,
354
+ viewDate: monthView,
355
+ onViewDateChange: function onViewDateChange(event) {
356
+ return setMonthView(event.value);
357
+ },
358
+ onChange: handleDateSelect
359
+ }), (0, _jsxRuntime.jsxs)(_Flex.Flex, {
360
+ gap: 8,
361
+ className: (0, _classnames.joinCls)("".concat(WRAP_CLS, "__footer"), "".concat(WRAP_CLS, "__footer--bordered")),
362
+ children: [(0, _jsxRuntime.jsx)(_Button.Button, {
363
+ color: 'grey',
364
+ size: 'small',
365
+ style: FULL_WIDTH_STYLE,
366
+ onClick: resetSelection,
367
+ children: RESET_LABEL
368
+ }), (0, _jsxRuntime.jsx)(_Button.Button, {
369
+ color: 'primary',
370
+ size: 'small',
371
+ style: FULL_WIDTH_STYLE,
372
+ disabled: !selectedRange.startDate || !selectedRange.endDate,
373
+ onClick: applyCustom,
374
+ children: APPLY_LABEL
375
+ })]
376
+ })]
377
+ });
378
+ };
379
+ return (0, _jsxRuntime.jsx)(_Select.Select.Custom, Object.assign({}, rest, {
380
+ size: size,
381
+ animation: false,
382
+ label: label,
383
+ placeholder: placeholder,
384
+ className: (0, _classnames.joinCls)(WRAP_CLS, className),
385
+ panelClassName: SELECT_PANEL_CLS,
386
+ panelWidth: showCustomRange ? PANEL_WIDTH_CUSTOM : PANEL_WIDTH_PRESET,
387
+ open: open,
388
+ onOpenChange: handleOpenChange,
389
+ selectedTemplate: selectedText ? (0, _jsxRuntime.jsx)(_Typography.TypographyBody, {
390
+ size: 'md',
391
+ className: "".concat(WRAP_CLS, "__value"),
392
+ children: selectedText
393
+ }) : null,
394
+ children: function children() {
395
+ return showCustomRange ? renderCustomRange() : renderPresetList();
396
+ }
397
+ }));
398
+ };
399
+ var DateRangeFilter = exports.DateRangeFilter = /*#__PURE__*/(0, _react.memo)(DateRangeFilterBase);
400
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0ZpbHRlci9EYXRlUmFuZ2UvRGF0ZVJhbmdlLmpzIiwiYnVzaW5lc3MvRmlsdGVyL3NyYy9idXNpbmVzcy9GaWx0ZXIvRGF0ZVJhbmdlL0RhdGVSYW5nZS50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX0J1dHRvbiIsIl9DYWxlbmRhciIsIl9GbGV4IiwiX0ljb25zIiwiX1JhZGlvIiwiX1NlbGVjdCIsIl9UeXBvZ3JhcGh5IiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJmYWNlIiwiX19yZXN0IiwicyIsImUiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJXUkFQX0NMUyIsIkNBTEVOREFSX1BBTkVMX0NMUyIsIlNFTEVDVF9QQU5FTF9DTFMiLCJQQU5FTF9XSURUSF9QUkVTRVQiLCJQQU5FTF9XSURUSF9DVVNUT00iLCJDQUxFTkRBUl9NT05USFMiLCJDSEVWUk9OX1NJWkUiLCJCQUNLX0lDT05fU0laRSIsIlJFU0VUX0xBQkVMIiwiQVBQTFlfTEFCRUwiLCJDVVNUT01fUkFOR0VfVElUTEUiLCJSQU5HRV9TRVBBUkFUT1IiLCJGVUxMX1dJRFRIX1NUWUxFIiwiZmxleCIsIl9EQVRFX1JBTkdFX09QVElPTlMiLCJfc2xpY2VkVG9BcnJheTIiLCJEQVRFX1JBTkdFX09QVElPTlMiLCJPUFRJT05fQUxMIiwiT1BUSU9OX0xBU1RfMzBfREFZUyIsIk9QVElPTl9ZRUFSX1RPX0RBVEUiLCJPUFRJT05fTEFTVF8xMl9NT05USFMiLCJPUFRJT05fQ1VTVE9NIiwiTEFTVF8zMF9EQVlTX0NPVU5UIiwiTEFTVF8xMl9NT05USFNfQ09VTlQiLCJZRUFSX1NUQVJUX01PTlRIIiwiRklSU1RfREFZX09GX01PTlRIIiwiREFZX1NUQVJUX1RJTUUiLCJEQVlfRU5EX1RJTUUiLCJEQVRFX0ZPUk1BVF9MT0NBTEUiLCJEQVRFX0ZPUk1BVF9PUFRJT05TIiwibW9udGgiLCJkYXkiLCJ5ZWFyIiwiZGF0ZUZvcm1hdHRlciIsIkludGwiLCJEYXRlVGltZUZvcm1hdCIsIkVNUFRZX1JBTkdFIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsInN0YXJ0T2ZEYXkiLCJkYXRlIiwicmVzdWx0IiwiRGF0ZSIsInNldEhvdXJzIiwiYXBwbHkiLCJlbmRPZkRheSIsImZvcm1hdERhdGUiLCJmb3JtYXQiLCJmb3JtYXRSYW5nZSIsInN0YXJ0IiwiZW5kIiwiY29uY2F0IiwiZ2V0RGF0ZUZyb21PcHRpb24iLCJvcHRpb24iLCJyYW5nZSIsInRvZGF5Iiwic2V0RGF0ZSIsImdldERhdGUiLCJnZXRGdWxsWWVhciIsInNldE1vbnRoIiwiZ2V0TW9udGgiLCJBTExfVFJBTlNBQ1RJT05TX1ZBTFVFIiwiRGF0ZVJhbmdlRmlsdGVyQmFzZSIsIl9hIiwicmVmIiwiY2xhc3NOYW1lIiwiX2Ekc2l6ZSIsInNpemUiLCJsYWJlbCIsIl9hJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfYSRhbGxUcmFuc2FjdGlvbnNMYWIiLCJhbGxUcmFuc2FjdGlvbnNMYWJlbCIsIl9hJGRlZmF1bHRTZWxlY3RBbGwiLCJkZWZhdWx0U2VsZWN0QWxsIiwib25BcHBseSIsIm9uUmVzZXQiLCJyZXN0IiwiaW5pdGlhbE9wdGlvbiIsImluaXRpYWxUZXh0IiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwib3BlbiIsInNldE9wZW4iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNlbGVjdGVkT3B0aW9uIiwic2V0U2VsZWN0ZWRPcHRpb24iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImxhc3RTZWxlY3RlZE9wdGlvbiIsInNldExhc3RTZWxlY3RlZE9wdGlvbiIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2VsZWN0ZWRSYW5nZSIsInNldFNlbGVjdGVkUmFuZ2UiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMTAiLCJhcHBsaWVkUmFuZ2UiLCJzZXRBcHBsaWVkUmFuZ2UiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwic2VsZWN0ZWRUZXh0Iiwic2V0U2VsZWN0ZWRUZXh0IiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInNob3dDdXN0b21SYW5nZSIsInNldFNob3dDdXN0b21SYW5nZSIsIl91c2VTdGF0ZTE1IiwidW5kZWZpbmVkIiwiX3VzZVN0YXRlMTYiLCJtb250aFZpZXciLCJzZXRNb250aFZpZXciLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiY2xlYXIiLCJyZXNldCIsImdldERpc3BsYXlMYWJlbCIsInVzZUNhbGxiYWNrIiwiaGFuZGxlSXRlbUNsaWNrIiwiaGFuZGxlRGF0ZVNlbGVjdCIsImV2ZW50IiwidmFsdWUiLCJBcnJheSIsImlzQXJyYXkiLCJfdmFsdWUiLCJhcHBseVByZXNldCIsImFwcGx5Q3VzdG9tIiwicmVzZXRTZWxlY3Rpb24iLCJoYW5kbGVPcGVuQ2hhbmdlIiwibmV4dE9wZW4iLCJjYWxlbmRhclZhbHVlIiwicmVuZGVyUHJlc2V0TGlzdCIsIl9qc3hzIiwiX0ZyYWdtZW50IiwiY2hpbGRyZW4iLCJfanN4IiwibWFwIiwiam9pbkNscyIsIm9uQ2xpY2siLCJUeXBvZ3JhcGh5Qm9keSIsIkljb25zIiwibmFtZSIsIlJhZGlvIiwiY2hlY2tlZCIsIkZsZXgiLCJnYXAiLCJCdXR0b24iLCJjb2xvciIsInN0eWxlIiwiZGlzYWJsZWQiLCJyZW5kZXJDdXN0b21SYW5nZSIsImFsaWduIiwid3JhcHBlckNscyIsIlR5cG9ncmFwaHlMYWJlbCIsIkNhbGVuZGFyIiwicGFuZWxDbGFzc05hbWUiLCJzZWxlY3Rpb25Nb2RlIiwicmVhZE9ubHlJbnB1dCIsImhpZGVPblJhbmdlU2VsZWN0aW9uIiwibnVtYmVyT2ZNb250aHMiLCJ2aWV3RGF0ZSIsIm9uVmlld0RhdGVDaGFuZ2UiLCJvbkNoYW5nZSIsIlNlbGVjdCIsIkN1c3RvbSIsImFzc2lnbiIsImFuaW1hdGlvbiIsInBhbmVsV2lkdGgiLCJvbk9wZW5DaGFuZ2UiLCJzZWxlY3RlZFRlbXBsYXRlIiwiRGF0ZVJhbmdlRmlsdGVyIiwiZXhwb3J0cyIsIm1lbW8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBV0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDWEEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsV0FBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBVixPQUFBO0FEVEEsSUFBSVcsTUFBTSxHQUFJLFVBQVEsU0FBS0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENB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SUFBQXlFLG1CQUFPLEVBQUMxSSxRQUFRLEVBQUVpRSxTQUFTLENBQUM7SUFDdkMyRixjQUFjLEVBQUUxSixnQkFBZ0I7SUFDaENzSyxVQUFVLEVBQUU3RCxlQUFlLEdBQUd2RyxrQkFBa0IsR0FBR0Qsa0JBQWtCO0lBQ3JFZ0YsSUFBSSxFQUFFQSxJQUFJO0lBQ1ZzRixZQUFZLEVBQUV4QyxnQkFBZ0I7SUFDOUJ5QyxnQkFBZ0IsRUFDZG5FLFlBQVksR0FDVixJQUFBaUMsZUFBQSxFQUFDSSwwQkFBYyxFQUFBO01BQUN6RSxJQUFJLEVBQUMsSUFBSTtNQUFDRixTQUFTLEtBQUFkLE1BQUEsQ0FBS25ELFFBQVEsWUFBUztNQUFBdUksUUFBQSxFQUN0RGhDO0lBQVksQ0FBQSxDQUNFLEdBQ2YsSUFBSTtJQUFBZ0MsUUFBQSxFQUdULFNBSFNBLFFBQUFBLENBQUE7TUFBQSxPQUdGNUIsZUFBZSxHQUFHNEMsaUJBQWlCLENBQUEsQ0FBRSxHQUFHbkIsZ0JBQWdCLENBQUEsQ0FBRTtJQUFBO0VBQUMsQ0FBQSxDQUFBLENBQ3JEO0FBRXBCLENBQUM7QUFFTSxJQUFNdUMsZUFBZSxHQUFBQyxPQUFBLENBQUFELGVBQUEsZ0JBQUcsSUFBQUUsV0FBSSxFQUFDL0csbUJBQW1CLENBQUMiLCJmaWxlIjoiYnVzaW5lc3MvRmlsdGVyL0RhdGVSYW5nZS9EYXRlUmFuZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cywgRnJhZ21lbnQgYXMgX0ZyYWdtZW50IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VDYWxsYmFjaywgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL0J1dHRvbic7XG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvQ2FsZW5kYXInO1xuaW1wb3J0IHsgRmxleCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvRmxleCc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvSWNvbnMnO1xuaW1wb3J0IHsgUmFkaW8gfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL1JhZGlvJztcbmltcG9ydCB7IFNlbGVjdCB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvU2VsZWN0JztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5LCBUeXBvZ3JhcGh5TGFiZWwgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgam9pbkNscyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQUxMX1RSQU5TQUNUSU9OU19WQUxVRSwgREFURV9SQU5HRV9PUFRJT05TLCB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmNvbnN0IFdSQVBfQ0xTID0gJ29tLWRhdGUtcmFuZ2UtZmlsdGVyJztcbi8vIFRoZSBjYWxlbmRhciBvdmVybGF5IGlzIHBvcnRhbGVkIHRvIDxib2R5Piwgb3V0c2lkZSBXUkFQX0NMUyDigJQgdGhpcyBpcyBhXG4vLyBzdGFuZGFsb25lIHRvcC1sZXZlbCBob29rIHNvIGl0cyBTQ1NTIGNhbiBsaWZ0IGl0IGFib3ZlIHRoZSBob3N0XG4vLyBTZWxlY3QuQ3VzdG9tIHBhbmVsICh6LWluZGV4IDE1MDApLlxuY29uc3QgQ0FMRU5EQVJfUEFORUxfQ0xTID0gJ29tLWRhdGUtcmFuZ2UtZmlsdGVyLWNhbGVuZGFyLXBhbmVsJztcbi8vIFRoZSBTZWxlY3QuQ3VzdG9tIHBhbmVsIGlzIHBvcnRhbGVkIHRvIDxib2R5PiB0b28g4oCUIHRvcC1sZXZlbCBob29rIGZvclxuLy8gc2NvcGluZyBwYW5lbC1ib2R5IG92ZXJyaWRlcyB3aXRob3V0IGxlYWtpbmcgaW50byBvdGhlciBTZWxlY3QgcGFuZWxzLlxuY29uc3QgU0VMRUNUX1BBTkVMX0NMUyA9ICdvbS1kYXRlLXJhbmdlLWZpbHRlci1wYW5lbCc7XG5jb25zdCBQQU5FTF9XSURUSF9QUkVTRVQgPSAyNDA7XG5jb25zdCBQQU5FTF9XSURUSF9DVVNUT00gPSAzMjA7XG5jb25zdCBDQUxFTkRBUl9NT05USFMgPSAyO1xuY29uc3QgQ0hFVlJPTl9TSVpFID0gMTY7XG5jb25zdCBCQUNLX0lDT05fU0laRSA9IDI0O1xuY29uc3QgUkVTRVRfTEFCRUwgPSAnUmVzZXQnO1xuY29uc3QgQVBQTFlfTEFCRUwgPSAnQXBwbHknO1xuY29uc3QgQ1VTVE9NX1JBTkdFX1RJVExFID0gJ0N1c3RvbSBkYXRlIHJhbmdlJztcbmNvbnN0IFJBTkdFX1NFUEFSQVRPUiA9ICcgLSAnO1xuY29uc3QgRlVMTF9XSURUSF9TVFlMRSA9IHsgZmxleDogMSB9O1xuY29uc3QgW09QVElPTl9BTEwsIE9QVElPTl9MQVNUXzMwX0RBWVMsIE9QVElPTl9ZRUFSX1RPX0RBVEUsIE9QVElPTl9MQVNUXzEyX01PTlRIUywgT1BUSU9OX0NVU1RPTSxdID0gREFURV9SQU5HRV9PUFRJT05TO1xuY29uc3QgTEFTVF8zMF9EQVlTX0NPVU5UID0gMzA7XG5jb25zdCBMQVNUXzEyX01PTlRIU19DT1VOVCA9IDEyO1xuY29uc3QgWUVBUl9TVEFSVF9NT05USCA9IDA7IC8vIEphbnVhcnkgKHplcm8tYmFzZWQgbW9udGggaW5kZXgpXG5jb25zdCBGSVJTVF9EQVlfT0ZfTU9OVEggPSAxO1xuLy8gRGF5LWJvdW5kYXJ5IHRpbWVzIHNvIGFuIGFwcGxpZWQgcmFuZ2UgY292ZXJzIHdob2xlIGRheXMgaW5jbHVzaXZlbHk6XG4vLyB0aGUgc3RhcnQgZGF5IGZyb20gMDA6MDA6MDAuMDAwIGFuZCB0aGUgZW5kIGRheSB0aHJvdWdoIDIzOjU5OjU5Ljk5OS5cbmNvbnN0IERBWV9TVEFSVF9USU1FID0gWzAsIDAsIDAsIDBdOyAvLyBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1zXVxuY29uc3QgREFZX0VORF9USU1FID0gWzIzLCA1OSwgNTksIDk5OV07IC8vIFtob3VycywgbWludXRlcywgc2Vjb25kcywgbXNdXG5jb25zdCBEQVRFX0ZPUk1BVF9MT0NBTEUgPSAnZW4tVVMnO1xuY29uc3QgREFURV9GT1JNQVRfT1BUSU9OUyA9IHtcbiAgICBtb250aDogJzItZGlnaXQnLFxuICAgIGRheTogJzItZGlnaXQnLFxuICAgIHllYXI6ICdudW1lcmljJyxcbn07XG5jb25zdCBkYXRlRm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoREFURV9GT1JNQVRfTE9DQUxFLCBEQVRFX0ZPUk1BVF9PUFRJT05TKTtcbmNvbnN0IEVNUFRZX1JBTkdFID0geyBzdGFydERhdGU6IG51bGwsIGVuZERhdGU6IG51bGwgfTtcbmNvbnN0IHN0YXJ0T2ZEYXkgPSAoZGF0ZSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIHJlc3VsdC5zZXRIb3VycyguLi5EQVlfU1RBUlRfVElNRSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5jb25zdCBlbmRPZkRheSA9IChkYXRlKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgcmVzdWx0LnNldEhvdXJzKC4uLkRBWV9FTkRfVElNRSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5jb25zdCBmb3JtYXREYXRlID0gKGRhdGUpID0+IGRhdGVGb3JtYXR0ZXIuZm9ybWF0KGRhdGUpO1xuY29uc3QgZm9ybWF0UmFuZ2UgPSAoc3RhcnQsIGVuZCkgPT4gYCR7Zm9ybWF0RGF0ZShzdGFydCl9JHtSQU5HRV9TRVBBUkFUT1J9JHtmb3JtYXREYXRlKGVuZCl9YDtcbmNvbnN0IGdldERhdGVGcm9tT3B0aW9uID0gKG9wdGlvbiwgcmFuZ2UpID0+IHtcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgc3dpdGNoIChvcHRpb24pIHtcbiAgICAgICAgY2FzZSBPUFRJT05fTEFTVF8zMF9EQVlTOiB7XG4gICAgICAgICAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgc3RhcnREYXRlLnNldERhdGUodG9kYXkuZ2V0RGF0ZSgpIC0gTEFTVF8zMF9EQVlTX0NPVU5UKTtcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXJ0RGF0ZTogc3RhcnRPZkRheShzdGFydERhdGUpLCBlbmREYXRlOiBlbmRPZkRheSh0b2RheSkgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIE9QVElPTl9ZRUFSX1RPX0RBVEU6IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHRvZGF5LmdldEZ1bGxZZWFyKCksIFlFQVJfU1RBUlRfTU9OVEgsIEZJUlNUX0RBWV9PRl9NT05USCk7XG4gICAgICAgICAgICByZXR1cm4geyBzdGFydERhdGU6IHN0YXJ0T2ZEYXkoc3RhcnREYXRlKSwgZW5kRGF0ZTogZW5kT2ZEYXkodG9kYXkpIH07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBPUFRJT05fTEFTVF8xMl9NT05USFM6IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBzdGFydERhdGUuc2V0TW9udGgodG9kYXkuZ2V0TW9udGgoKSAtIExBU1RfMTJfTU9OVEhTX0NPVU5UKTtcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXJ0RGF0ZTogc3RhcnRPZkRheShzdGFydERhdGUpLCBlbmREYXRlOiBlbmRPZkRheSh0b2RheSkgfTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIE9QVElPTl9DVVNUT006XG4gICAgICAgICAgICBpZiAocmFuZ2Uuc3RhcnREYXRlICYmIHJhbmdlLmVuZERhdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdGFydERhdGU6IHN0YXJ0T2ZEYXkocmFuZ2Uuc3RhcnREYXRlKSwgZW5kRGF0ZTogZW5kT2ZEYXkocmFuZ2UuZW5kRGF0ZSkgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBBTExfVFJBTlNBQ1RJT05TX1ZBTFVFO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIEFMTF9UUkFOU0FDVElPTlNfVkFMVUU7XG4gICAgfVxufTtcbmNvbnN0IERhdGVSYW5nZUZpbHRlckJhc2UgPSAoX2EpID0+IHtcbiAgICB2YXIgeyByZWYsIGNsYXNzTmFtZSwgc2l6ZSA9ICdzbWFsbCcsIGxhYmVsLCBwbGFjZWhvbGRlciA9ICdEYXRlJywgYWxsVHJhbnNhY3Rpb25zTGFiZWwgPSAnQWxsIHRyYW5zYWN0aW9ucycsIGRlZmF1bHRTZWxlY3RBbGwgPSBmYWxzZSwgb25BcHBseSwgb25SZXNldCB9ID0gX2EsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcInJlZlwiLCBcImNsYXNzTmFtZVwiLCBcInNpemVcIiwgXCJsYWJlbFwiLCBcInBsYWNlaG9sZGVyXCIsIFwiYWxsVHJhbnNhY3Rpb25zTGFiZWxcIiwgXCJkZWZhdWx0U2VsZWN0QWxsXCIsIFwib25BcHBseVwiLCBcIm9uUmVzZXRcIl0pO1xuICAgIGNvbnN0IGluaXRpYWxPcHRpb24gPSBkZWZhdWx0U2VsZWN0QWxsID8gT1BUSU9OX0FMTCA6IG51bGw7XG4gICAgY29uc3QgaW5pdGlhbFRleHQgPSBkZWZhdWx0U2VsZWN0QWxsID8gYWxsVHJhbnNhY3Rpb25zTGFiZWwgOiAnJztcbiAgICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3NlbGVjdGVkT3B0aW9uLCBzZXRTZWxlY3RlZE9wdGlvbl0gPSB1c2VTdGF0ZShpbml0aWFsT3B0aW9uKTtcbiAgICBjb25zdCBbbGFzdFNlbGVjdGVkT3B0aW9uLCBzZXRMYXN0U2VsZWN0ZWRPcHRpb25dID0gdXNlU3RhdGUoaW5pdGlhbE9wdGlvbik7XG4gICAgY29uc3QgW3NlbGVjdGVkUmFuZ2UsIHNldFNlbGVjdGVkUmFuZ2VdID0gdXNlU3RhdGUoRU1QVFlfUkFOR0UpO1xuICAgIGNvbnN0IFthcHBsaWVkUmFuZ2UsIHNldEFwcGxpZWRSYW5nZV0gPSB1c2VTdGF0ZShFTVBUWV9SQU5HRSk7XG4gICAgY29uc3QgW3NlbGVjdGVkVGV4dCwgc2V0U2VsZWN0ZWRUZXh0XSA9IHVzZVN0YXRlKGluaXRpYWxUZXh0KTtcbiAgICBjb25zdCBbc2hvd0N1c3RvbVJhbmdlLCBzZXRTaG93Q3VzdG9tUmFuZ2VdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFttb250aFZpZXcsIHNldE1vbnRoVmlld10gPSB1c2VTdGF0ZSh1bmRlZmluZWQpO1xuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb24obnVsbCk7XG4gICAgICAgICAgICBzZXRMYXN0U2VsZWN0ZWRPcHRpb24obnVsbCk7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZFJhbmdlKEVNUFRZX1JBTkdFKTtcbiAgICAgICAgICAgIHNldEFwcGxpZWRSYW5nZShFTVBUWV9SQU5HRSk7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZFRleHQoJycpO1xuICAgICAgICAgICAgc2V0U2hvd0N1c3RvbVJhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIHNldE1vbnRoVmlldyh1bmRlZmluZWQpO1xuICAgICAgICB9LFxuICAgICAgICByZXNldDogKCkgPT4ge1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWRPcHRpb24oaW5pdGlhbE9wdGlvbik7XG4gICAgICAgICAgICBzZXRMYXN0U2VsZWN0ZWRPcHRpb24oaW5pdGlhbE9wdGlvbik7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZFJhbmdlKEVNUFRZX1JBTkdFKTtcbiAgICAgICAgICAgIHNldEFwcGxpZWRSYW5nZShFTVBUWV9SQU5HRSk7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZFRleHQoaW5pdGlhbFRleHQpO1xuICAgICAgICAgICAgc2V0U2hvd0N1c3RvbVJhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIHNldE1vbnRoVmlldyh1bmRlZmluZWQpO1xuICAgICAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgICAgIH0sXG4gICAgfSksIFtpbml0aWFsT3B0aW9uLCBpbml0aWFsVGV4dCwgb25SZXNldF0pO1xuICAgIGNvbnN0IGdldERpc3BsYXlMYWJlbCA9IHVzZUNhbGxiYWNrKChvcHRpb24pID0+IChvcHRpb24gPT09IE9QVElPTl9BTEwgPyBhbGxUcmFuc2FjdGlvbnNMYWJlbCA6IG9wdGlvbiksIFthbGxUcmFuc2FjdGlvbnNMYWJlbF0pO1xuICAgIGNvbnN0IGhhbmRsZUl0ZW1DbGljayA9IHVzZUNhbGxiYWNrKChvcHRpb24pID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbiA9PT0gT1BUSU9OX0NVU1RPTSkge1xuICAgICAgICAgICAgc2V0U2hvd0N1c3RvbVJhbmdlKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0U2hvd0N1c3RvbVJhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlRGF0ZVNlbGVjdCA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnZhbHVlO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBbc3RhcnQsIGVuZF0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgc2V0TW9udGhWaWV3KHN0YXJ0KTtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkUmFuZ2UoeyBzdGFydERhdGU6IHN0YXJ0LCBlbmREYXRlOiBlbmQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhcnQpIHtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkUmFuZ2UoeyBzdGFydERhdGU6IHN0YXJ0LCBlbmREYXRlOiBudWxsIH0pO1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGFwcGx5UHJlc2V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIXNlbGVjdGVkT3B0aW9uKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBvbkFwcGx5KGdldERhdGVGcm9tT3B0aW9uKHNlbGVjdGVkT3B0aW9uLCBzZWxlY3RlZFJhbmdlKSk7XG4gICAgICAgIHNldFNlbGVjdGVkVGV4dChnZXREaXNwbGF5TGFiZWwoc2VsZWN0ZWRPcHRpb24pKTtcbiAgICAgICAgc2V0TGFzdFNlbGVjdGVkT3B0aW9uKHNlbGVjdGVkT3B0aW9uKTtcbiAgICAgICAgc2V0U2hvd0N1c3RvbVJhbmdlKGZhbHNlKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRSYW5nZShFTVBUWV9SQU5HRSk7XG4gICAgICAgIHNldEFwcGxpZWRSYW5nZShFTVBUWV9SQU5HRSk7XG4gICAgICAgIHNldE1vbnRoVmlldyh1bmRlZmluZWQpO1xuICAgICAgICBzZXRPcGVuKGZhbHNlKTtcbiAgICB9LCBbc2VsZWN0ZWRPcHRpb24sIHNlbGVjdGVkUmFuZ2UsIG9uQXBwbHksIGdldERpc3BsYXlMYWJlbF0pO1xuICAgIGNvbnN0IGFwcGx5Q3VzdG9tID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXJ0RGF0ZSwgZW5kRGF0ZSB9ID0gc2VsZWN0ZWRSYW5nZTtcbiAgICAgICAgaWYgKCFzdGFydERhdGUgfHwgIWVuZERhdGUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIG9uQXBwbHkoeyBzdGFydERhdGU6IHN0YXJ0T2ZEYXkoc3RhcnREYXRlKSwgZW5kRGF0ZTogZW5kT2ZEYXkoZW5kRGF0ZSkgfSk7XG4gICAgICAgIHNldFNlbGVjdGVkVGV4dChmb3JtYXRSYW5nZShzdGFydERhdGUsIGVuZERhdGUpKTtcbiAgICAgICAgc2V0TGFzdFNlbGVjdGVkT3B0aW9uKE9QVElPTl9DVVNUT00pO1xuICAgICAgICBzZXRTZWxlY3RlZE9wdGlvbihudWxsKTtcbiAgICAgICAgc2V0QXBwbGllZFJhbmdlKHsgc3RhcnREYXRlLCBlbmREYXRlIH0pO1xuICAgICAgICBzZXRTaG93Q3VzdG9tUmFuZ2UodHJ1ZSk7XG4gICAgICAgIHNldE9wZW4oZmFsc2UpO1xuICAgIH0sIFtzZWxlY3RlZFJhbmdlLCBvbkFwcGx5XSk7XG4gICAgY29uc3QgcmVzZXRTZWxlY3Rpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNldFNlbGVjdGVkT3B0aW9uKGluaXRpYWxPcHRpb24pO1xuICAgICAgICBzZXRMYXN0U2VsZWN0ZWRPcHRpb24oaW5pdGlhbE9wdGlvbik7XG4gICAgICAgIHNldFNlbGVjdGVkVGV4dChpbml0aWFsVGV4dCk7XG4gICAgICAgIHNldFNlbGVjdGVkUmFuZ2UoRU1QVFlfUkFOR0UpO1xuICAgICAgICBzZXRBcHBsaWVkUmFuZ2UoRU1QVFlfUkFOR0UpO1xuICAgICAgICBzZXRNb250aFZpZXcodW5kZWZpbmVkKTtcbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSwgW2luaXRpYWxPcHRpb24sIGluaXRpYWxUZXh0LCBvblJlc2V0XSk7XG4gICAgY29uc3QgaGFuZGxlT3BlbkNoYW5nZSA9IHVzZUNhbGxiYWNrKChuZXh0T3BlbikgPT4ge1xuICAgICAgICBzZXRPcGVuKG5leHRPcGVuKTtcbiAgICAgICAgaWYgKG5leHRPcGVuKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvLyBPbiBjbG9zZSB3aXRob3V0IEFwcGx5LCBzbmFwIHRoZSBwYW5lbCBiYWNrIHRvIHRoZSBsYXN0IGNvbW1pdHRlZCBzdGF0ZVxuICAgICAgICAvLyBzbyBhbiBhYmFuZG9uZWQgZWRpdCBkb2Vzbid0IGxpbmdlci5cbiAgICAgICAgaWYgKGxhc3RTZWxlY3RlZE9wdGlvbiA9PT0gT1BUSU9OX0NVU1RPTSkge1xuICAgICAgICAgICAgc2V0U2hvd0N1c3RvbVJhbmdlKHRydWUpO1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWRSYW5nZShhcHBsaWVkUmFuZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2V0U2hvd0N1c3RvbVJhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIHNldFNlbGVjdGVkT3B0aW9uKGxhc3RTZWxlY3RlZE9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9LCBbbGFzdFNlbGVjdGVkT3B0aW9uLCBhcHBsaWVkUmFuZ2VdKTtcbiAgICBjb25zdCBjYWxlbmRhclZhbHVlID0gc2VsZWN0ZWRSYW5nZS5zdGFydERhdGVcbiAgICAgICAgPyBzZWxlY3RlZFJhbmdlLmVuZERhdGVcbiAgICAgICAgICAgID8gW3NlbGVjdGVkUmFuZ2Uuc3RhcnREYXRlLCBzZWxlY3RlZFJhbmdlLmVuZERhdGVdXG4gICAgICAgICAgICA6IFtzZWxlY3RlZFJhbmdlLnN0YXJ0RGF0ZV1cbiAgICAgICAgOiBudWxsO1xuICAgIGNvbnN0IHJlbmRlclByZXNldExpc3QgPSAoKSA9PiAoX2pzeHMoX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBbX2pzeChcInVsXCIsIHsgY2xhc3NOYW1lOiBgJHtXUkFQX0NMU31fX2xpc3RgLCBjaGlsZHJlbjogREFURV9SQU5HRV9PUFRJT05TLm1hcCgob3B0aW9uKSA9PiAoX2pzeHMoXCJsaVwiLCB7IGNsYXNzTmFtZTogam9pbkNscyhgJHtXUkFQX0NMU31fX2l0ZW1gLCBvcHRpb24gPT09IE9QVElPTl9DVVNUT00gJiYgYCR7V1JBUF9DTFN9X19pdGVtLS1jdXN0b21gKSwgb25DbGljazogKCkgPT4gaGFuZGxlSXRlbUNsaWNrKG9wdGlvbiksIGNoaWxkcmVuOiBbX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiAnbWQnLCBjaGlsZHJlbjogZ2V0RGlzcGxheUxhYmVsKG9wdGlvbikgfSksIG9wdGlvbiA9PT0gT1BUSU9OX0NVU1RPTSA/IChfanN4KEljb25zLCB7IG5hbWU6ICdjaGV2cm9uUmlnaHQnLCBzaXplOiBDSEVWUk9OX1NJWkUgfSkpIDogKF9qc3goUmFkaW8sIHsgc2l6ZTogJ3NtYWxsJywgY2hlY2tlZDogc2VsZWN0ZWRPcHRpb24gPT09IG9wdGlvbiB9KSldIH0sIG9wdGlvbikpKSB9KSwgX2pzeHMoRmxleCwgeyBnYXA6IDgsIGNsYXNzTmFtZTogYCR7V1JBUF9DTFN9X19mb290ZXJgLCBjaGlsZHJlbjogW19qc3goQnV0dG9uLCB7IGNvbG9yOiAnZ3JleScsIHNpemU6ICdzbWFsbCcsIHN0eWxlOiBGVUxMX1dJRFRIX1NUWUxFLCBvbkNsaWNrOiByZXNldFNlbGVjdGlvbiwgY2hpbGRyZW46IFJFU0VUX0xBQkVMIH0pLCBfanN4KEJ1dHRvbiwgeyBjb2xvcjogJ3ByaW1hcnknLCBzaXplOiAnc21hbGwnLCBzdHlsZTogRlVMTF9XSURUSF9TVFlMRSwgZGlzYWJsZWQ6ICFzZWxlY3RlZE9wdGlvbiwgb25DbGljazogYXBwbHlQcmVzZXQsIGNoaWxkcmVuOiBBUFBMWV9MQUJFTCB9KV0gfSldIH0pKTtcbiAgICBjb25zdCByZW5kZXJDdXN0b21SYW5nZSA9ICgpID0+IChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogYCR7V1JBUF9DTFN9X19jdXN0b21gLCBjaGlsZHJlbjogW19qc3hzKEZsZXgsIHsgYWxpZ246ICdjZW50ZXInLCBnYXA6IDgsIGNsYXNzTmFtZTogYCR7V1JBUF9DTFN9X19jdXN0b20taGVhZGVyYCwgY2hpbGRyZW46IFtfanN4KEljb25zLCB7IG5hbWU6ICdhcnJvd0xlZnQnLCBzaXplOiBCQUNLX0lDT05fU0laRSwgd3JhcHBlckNsczogYCR7V1JBUF9DTFN9X19iYWNrLWljb25gLCBvbkNsaWNrOiAoKSA9PiBzZXRTaG93Q3VzdG9tUmFuZ2UoZmFsc2UpIH0pLCBfanN4KFR5cG9ncmFwaHlMYWJlbCwgeyBzaXplOiAnbGcnLCBjaGlsZHJlbjogQ1VTVE9NX1JBTkdFX1RJVExFIH0pXSB9KSwgX2pzeChDYWxlbmRhciwgeyB3cmFwcGVyQ2xzOiBgJHtXUkFQX0NMU31fX2NhbGVuZGFyYCwgcGFuZWxDbGFzc05hbWU6IENBTEVOREFSX1BBTkVMX0NMUywgc2l6ZTogJ3NtYWxsJywgc2VsZWN0aW9uTW9kZTogJ3JhbmdlJywgcGxhY2Vob2xkZXI6ICdNTS9ERC9ZWVlZIC0gTU0vREQvWVlZWScsIHJlYWRPbmx5SW5wdXQ6IHRydWUsIGhpZGVPblJhbmdlU2VsZWN0aW9uOiB0cnVlLCBudW1iZXJPZk1vbnRoczogQ0FMRU5EQVJfTU9OVEhTLCB2YWx1ZTogY2FsZW5kYXJWYWx1ZSwgdmlld0RhdGU6IG1vbnRoVmlldywgb25WaWV3RGF0ZUNoYW5nZTogKGV2ZW50KSA9PiBzZXRNb250aFZpZXcoZXZlbnQudmFsdWUpLCBvbkNoYW5nZTogaGFuZGxlRGF0ZVNlbGVjdCB9KSwgX2pzeHMoRmxleCwgeyBnYXA6IDgsIGNsYXNzTmFtZTogam9pbkNscyhgJHtXUkFQX0NMU31fX2Zvb3RlcmAsIGAke1dSQVBfQ0xTfV9fZm9vdGVyLS1ib3JkZXJlZGApLCBjaGlsZHJlbjogW19qc3goQnV0dG9uLCB7IGNvbG9yOiAnZ3JleScsIHNpemU6ICdzbWFsbCcsIHN0eWxlOiBGVUxMX1dJRFRIX1NUWUxFLCBvbkNsaWNrOiByZXNldFNlbGVjdGlvbiwgY2hpbGRyZW46IFJFU0VUX0xBQkVMIH0pLCBfanN4KEJ1dHRvbiwgeyBjb2xvcjogJ3ByaW1hcnknLCBzaXplOiAnc21hbGwnLCBzdHlsZTogRlVMTF9XSURUSF9TVFlMRSwgZGlzYWJsZWQ6ICFzZWxlY3RlZFJhbmdlLnN0YXJ0RGF0ZSB8fCAhc2VsZWN0ZWRSYW5nZS5lbmREYXRlLCBvbkNsaWNrOiBhcHBseUN1c3RvbSwgY2hpbGRyZW46IEFQUExZX0xBQkVMIH0pXSB9KV0gfSkpO1xuICAgIHJldHVybiAoX2pzeChTZWxlY3QuQ3VzdG9tLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHNpemU6IHNpemUsIGFuaW1hdGlvbjogZmFsc2UsIGxhYmVsOiBsYWJlbCwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBjbGFzc05hbWU6IGpvaW5DbHMoV1JBUF9DTFMsIGNsYXNzTmFtZSksIHBhbmVsQ2xhc3NOYW1lOiBTRUxFQ1RfUEFORUxfQ0xTLCBwYW5lbFdpZHRoOiBzaG93Q3VzdG9tUmFuZ2UgPyBQQU5FTF9XSURUSF9DVVNUT00gOiBQQU5FTF9XSURUSF9QUkVTRVQsIG9wZW46IG9wZW4sIG9uT3BlbkNoYW5nZTogaGFuZGxlT3BlbkNoYW5nZSwgc2VsZWN0ZWRUZW1wbGF0ZTogc2VsZWN0ZWRUZXh0ID8gKF9qc3goVHlwb2dyYXBoeUJvZHksIHsgc2l6ZTogJ21kJywgY2xhc3NOYW1lOiBgJHtXUkFQX0NMU31fX3ZhbHVlYCwgY2hpbGRyZW46IHNlbGVjdGVkVGV4dCB9KSkgOiBudWxsLCBjaGlsZHJlbjogKCkgPT4gKHNob3dDdXN0b21SYW5nZSA/IHJlbmRlckN1c3RvbVJhbmdlKCkgOiByZW5kZXJQcmVzZXRMaXN0KCkpIH0pKSk7XG59O1xuZXhwb3J0IGNvbnN0IERhdGVSYW5nZUZpbHRlciA9IG1lbW8oRGF0ZVJhbmdlRmlsdGVyQmFzZSk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -0,0 +1,2 @@
1
+ export { DateRangeFilter } from './DateRange';
2
+ export * from './interface';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ DateRangeFilter: true
8
+ };
9
+ Object.defineProperty(exports, "DateRangeFilter", {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return _DateRange.DateRangeFilter;
13
+ }
14
+ });
15
+ var _DateRange = require("./DateRange");
16
+ var _interface = require("./interface");
17
+ Object.keys(_interface).forEach(function (key) {
18
+ if (key === "default" || key === "__esModule") return;
19
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
+ if (key in exports && exports[key] === _interface[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _interface[key];
25
+ }
26
+ });
27
+ });
28
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0ZpbHRlci9zcmMvYnVzaW5lc3MvRmlsdGVyL0RhdGVSYW5nZS9pbmRleC50cyJdLCJuYW1lcyI6WyJfRGF0ZVJhbmdlIiwicmVxdWlyZSIsIl9pbnRlcmZhY2UiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9leHBvcnROYW1lcyIsImV4cG9ydHMiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQUFFLE1BQUEsQ0FBQUMsSUFBQSxDQUFBRixVQUFBLEVBQUFHLE9BQUEsV0FBQUMsR0FBQTtFQUFBLElBQUFBLEdBQUEsa0JBQUFBLEdBQUE7RUFBQSxJQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFDLFlBQUEsRUFBQUosR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUssT0FBQSxJQUFBQSxPQUFBLENBQUFMLEdBQUEsTUFBQUosVUFBQSxDQUFBSSxHQUFBO0VBQUFILE1BQUEsQ0FBQVMsY0FBQSxDQUFBRCxPQUFBLEVBQUFMLEdBQUE7SUFBQU8sVUFBQTtJQUFBQyxHQUFBLFdBQUFBLElBQUE7TUFBQSxPQUFBWixVQUFBLENBQUFJLEdBQUE7SUFBQTtFQUFBO0FBQUEiLCJmaWxlIjoiYnVzaW5lc3MvRmlsdGVyL0RhdGVSYW5nZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==