@elliemae/ds-date-range-picker 2.3.1 → 3.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/cjs/DSDateRangePicker.js +226 -0
  2. package/dist/cjs/DSDateRangePicker.js.map +7 -0
  3. package/dist/cjs/components/DSDateRangePickerImpl.js +293 -0
  4. package/dist/cjs/components/DSDateRangePickerImpl.js.map +7 -0
  5. package/dist/cjs/components/DatePickerLabel/DatePickerLabel.js +39 -0
  6. package/dist/cjs/components/DatePickerLabel/DatePickerLabel.js.map +7 -0
  7. package/dist/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js +112 -0
  8. package/dist/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js.map +7 -0
  9. package/dist/cjs/components/DayPickerRangeController.js +203 -0
  10. package/dist/cjs/components/DayPickerRangeController.js.map +7 -0
  11. package/dist/cjs/index.js +36 -0
  12. package/dist/cjs/index.js.map +7 -0
  13. package/dist/cjs/isMaxDiffSafe.js +46 -0
  14. package/dist/cjs/isMaxDiffSafe.js.map +7 -0
  15. package/dist/esm/DSDateRangePicker.js +202 -0
  16. package/dist/esm/DSDateRangePicker.js.map +7 -0
  17. package/dist/esm/components/DSDateRangePickerImpl.js +264 -0
  18. package/dist/esm/components/DSDateRangePickerImpl.js.map +7 -0
  19. package/dist/esm/components/DatePickerLabel/DatePickerLabel.js +10 -0
  20. package/dist/esm/components/DatePickerLabel/DatePickerLabel.js.map +7 -0
  21. package/{esm → dist/esm}/components/DatePickerRangeHeader/DatePickerRangeHeader.js +36 -45
  22. package/dist/esm/components/DatePickerRangeHeader/DatePickerRangeHeader.js.map +7 -0
  23. package/dist/esm/components/DayPickerRangeController.js +176 -0
  24. package/dist/esm/components/DayPickerRangeController.js.map +7 -0
  25. package/dist/esm/index.js +7 -0
  26. package/dist/esm/index.js.map +7 -0
  27. package/dist/esm/isMaxDiffSafe.js +17 -0
  28. package/dist/esm/isMaxDiffSafe.js.map +7 -0
  29. package/package.json +41 -32
  30. package/cjs/DSDateRangePicker.js +0 -204
  31. package/cjs/components/DSDateRangePickerImpl.js +0 -343
  32. package/cjs/components/DatePickerLabel/DatePickerLabel.js +0 -20
  33. package/cjs/components/DatePickerRangeHeader/DatePickerRangeHeader.js +0 -100
  34. package/cjs/components/DayPickerRangeController.js +0 -147
  35. package/cjs/index.js +0 -15
  36. package/cjs/isMaxDiffSafe.js +0 -20
  37. package/esm/DSDateRangePicker.js +0 -191
  38. package/esm/components/DSDateRangePickerImpl.js +0 -330
  39. package/esm/components/DatePickerLabel/DatePickerLabel.js +0 -14
  40. package/esm/components/DayPickerRangeController.js +0 -139
  41. package/esm/index.js +0 -3
  42. package/esm/isMaxDiffSafe.js +0 -15
  43. package/types/DSDateRangePicker.d.ts +0 -243
  44. package/types/components/DSDateRangePickerImpl.d.ts +0 -24
  45. package/types/components/DatePickerLabel/DatePickerLabel.d.ts +0 -6
  46. package/types/components/DatePickerRangeHeader/DatePickerRangeHeader.d.ts +0 -10
  47. package/types/components/DayPickerRangeController.d.ts +0 -36
  48. package/types/index.d.ts +0 -2
  49. package/types/isMaxDiffSafe.d.ts +0 -2
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/DSDateRangePicker.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React from 'react';\nimport { PropTypes, describe } from 'react-desc';\nimport { convertPropToCssClassName } from '@elliemae/ds-classnames';\nimport moment from 'moment';\nimport 'react-dates/initialize';\nimport { DateRangePickerPhrases } from 'react-dates/lib/defaultPhrases';\nimport DayPickerRangeController from './components/DayPickerRangeController';\nimport DSDateRangePickerImpl, {\n START_DATE,\n END_DATE,\n} from './components/DSDateRangePickerImpl';\n\nconst DSDateRangePicker = ({\n containerProps = {},\n className = '',\n disabled = false,\n required = false,\n startDateRequired = false,\n endDateRequired = false,\n id,\n hasError = false,\n validationMessage = '',\n readOnly = false,\n screenReaderInputMessage = 'Select date',\n initialVisibleMonth = moment(),\n firstDayOfWeek = 0,\n keepOpenOnDateSelect = true,\n reopenPickerOnClearDates = false,\n hideKeyboardShortcutsPanel = true,\n onPrevMonthClick = () => null,\n onNextMonthClick = () => null,\n onClose = () => null,\n onOutsideClick = () => null,\n transitionDuration = 0,\n verticalSpacing = 0,\n minimumNights = 0,\n isDayBlocked = () => false,\n isOutsideRange = () => false,\n isDayHighlighted = () => false,\n displayFormat = 'L',\n displayFormatDay = 'D',\n phrases = DateRangePickerPhrases,\n startDate,\n endDate,\n startDateId = 'startDateId',\n endDateId = 'endDateId',\n labelFrom = 'From',\n labelTo = 'To',\n enableOutsideDays = true,\n onChangeStartInput = () => null,\n onChangeEndInput = () => null,\n onDatesChange = () => null,\n}) => {\n const { cssClassName, prefixBlockName } = convertPropToCssClassName(\n 'datepicker',\n className,\n {\n hasError,\n readOnly,\n disabled,\n id,\n },\n );\n return (\n <div\n {...containerProps}\n className={`${prefixBlockName}-range ${cssClassName} ${prefixBlockName}-range`}\n >\n <DSDateRangePickerImpl\n appendToBody\n disabled={disabled}\n displayFormat={displayFormat}\n displayFormatDay={displayFormatDay}\n enableOutsideDays={enableOutsideDays}\n endDate={endDate}\n endDateId={endDateId}\n firstDayOfWeek={firstDayOfWeek}\n hideKeyboardShortcutsPanel={hideKeyboardShortcutsPanel}\n initialVisibleMonth={() =>\n initialVisibleMonth ? moment(initialVisibleMonth) : moment(startDate)\n }\n isDayBlocked={isDayBlocked}\n isDayHighlighted={isDayHighlighted}\n isOutsideRange={\n isOutsideRange === true || isOutsideRange === false\n ? () => isOutsideRange\n : isOutsideRange\n }\n keepOpenOnDateSelect={keepOpenOnDateSelect}\n labelFrom={labelFrom}\n labelTo={labelTo}\n minimumNights={minimumNights}\n onDatesChange={onDatesChange}\n onChangeStartInput={onChangeStartInput}\n onChangeEndInput={onChangeEndInput}\n onClose={onClose}\n onNextMonthClick={onNextMonthClick}\n onPrevMonthClick={onPrevMonthClick}\n onOutsideClick={onOutsideClick}\n phrases={phrases}\n readOnly={readOnly}\n reopenPickerOnClearDates={reopenPickerOnClearDates}\n required={required}\n startDateRequired={startDateRequired}\n endDateRequired={endDateRequired}\n screenReaderInputMessage={screenReaderInputMessage}\n startDate={startDate}\n startDateId={startDateId}\n transitionDuration={transitionDuration}\n verticalSpacing={verticalSpacing}\n hasError={hasError}\n validationMessage={validationMessage}\n />\n </div>\n );\n};\n\nconst dateRangePickerProps = {\n containerProps: PropTypes.shape({}).description(\n 'Set of Properties attached to the main container',\n ),\n className: PropTypes.string.description('html class attribute'),\n disabled: PropTypes.bool\n .description('disable component or not')\n .defaultValue(false),\n required: PropTypes.bool\n .description('input is required or not')\n .defaultValue(false),\n startDateRequired: PropTypes.bool\n .description('start date is required or not')\n .defaultValue(false),\n endDateRequired: PropTypes.bool\n .description('end date is required or not')\n .defaultValue(false),\n id: PropTypes.string.description('components id'),\n hasError: PropTypes.bool.description('set error state').defaultValue(false),\n validationMessage: PropTypes.string.description('validation message'),\n readOnly: PropTypes.bool\n .description('component is read only or not')\n .description(false),\n screenReaderInputMessage: PropTypes.string\n .description('message to be anounced by screen reader')\n .defaultValue('select date'),\n initialVisibleMonth: PropTypes.instanceOf(Date, moment).description(\n 'initial visible month',\n ),\n firstDayOfWeek: PropTypes.number\n .description('first day of week')\n .defaultValue(0),\n keepOpenOnDateSelect: PropTypes.bool\n .description('keep picker open when a date is selected')\n .defaultValue(true),\n reopenPickerOnClearDates: PropTypes.bool\n .description('reopen picker when clearing dates')\n .defaultValue(false),\n hideKeyboardShortcutsPanel: PropTypes.bool.description(\n 'hide keyabord shortcut panel or not',\n ),\n onPrevMonthClick: PropTypes.func.description(\n 'function executed when clicking on prev month button',\n ),\n onNextMonthClick: PropTypes.func.description(\n 'function executed when clicking on next month button',\n ),\n onClose: PropTypes.func.description(\n 'function executed when component closes',\n ),\n transitionDuration: PropTypes.number\n .description('transition duration')\n .defaultValue(0),\n verticalSpacing: PropTypes.number.description('vertical spacing'),\n isDayBlocked: PropTypes.func.description(\n 'function that returns each day and disables desired dates',\n ),\n isOutsideRange: PropTypes.func.description(\n 'function that returns each day and disables outisde range dates',\n ),\n isDayHighlighted: PropTypes.func.description(\n 'function that returns each day and higlights desired dates',\n ),\n minimumNights: 0,\n displayFormat: PropTypes.string\n .description('display format')\n .defaultValue('L'),\n displayFormatDay: PropTypes.string\n .description('display format day')\n .defaultValue('D'),\n phrases: PropTypes.shape({\n calendarLabel: PropTypes.string,\n closeDatePicker: PropTypes.string,\n clearDates: PropTypes.string,\n focusStartDate: PropTypes.string,\n jumpToPrevMonth: PropTypes.string,\n jumpToNextMonth: PropTypes.string,\n keyboardShortcuts: PropTypes.string,\n showKeyboardShortcutsPanel: PropTypes.string,\n hideKeyboardShortcutsPanel: PropTypes.string,\n openThisPanel: PropTypes.string,\n enterKey: PropTypes.string,\n leftArrowRightArrow: PropTypes.string,\n upArrowDownArrow: PropTypes.string,\n pageUpPageDown: PropTypes.string,\n homeEnd: PropTypes.string,\n escape: PropTypes.string,\n questionMark: PropTypes.string,\n selectFocusedDate: PropTypes.string,\n moveFocusByOneDay: PropTypes.string,\n moveFocusByOneWeek: PropTypes.string,\n moveFocusByOneMonth: PropTypes.string,\n moveFocustoStartAndEndOfWeek: PropTypes.string,\n returnFocusToInput: PropTypes.string,\n keyboardNavigationInstructions: PropTypes.string,\n chooseAvailableStartDate: PropTypes.func,\n chooseAvailableEndDate: PropTypes.func,\n dateIsUnavailable: PropTypes.func,\n dateIsSelected: PropTypes.func,\n }).description('react-dates phrases'),\n startDate: PropTypes.instanceOf(Date, moment).description('start date value'),\n endDate: PropTypes.instanceOf(Date, moment).description('end date value'),\n startDateId: PropTypes.string.description('start date id'),\n endDateId: PropTypes.string.description('end date id'),\n labelFrom: PropTypes.string.description('label of start date input'),\n labelTo: PropTypes.string.description('label of end date input'),\n enableOutsideDays: PropTypes.bool\n .description('enable days outside current month')\n .defaultValue('true'),\n onDatesChange: PropTypes.func.description(\n 'function executed when dates change',\n ),\n onChangeStartInput: PropTypes.func.description(\n 'function executed when start date input changes',\n ),\n onChangeEndInput: PropTypes.func.description(\n 'function executed when end date input changes',\n ),\n onOutsideClick: PropTypes.func.description(\n 'function executed when clicking outside component',\n ),\n};\n\nDSDateRangePicker.propTypes = dateRangePickerProps;\nconst DateRangePickerWithSchema = describe(DSDateRangePicker);\nDateRangePickerWithSchema.propTypes = dateRangePickerProps;\n\nexport {\n DayPickerRangeController,\n START_DATE,\n END_DATE,\n DateRangePickerWithSchema,\n};\n\nexport default DSDateRangePicker;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,264 @@
1
+ import * as React from "react";
2
+ import React2 from "react";
3
+ import PropTypes from "prop-types";
4
+ import moment from "moment";
5
+ import { convertPropToCssClassName } from "@elliemae/ds-classnames";
6
+ import { MASK_TYPES, MASK_PIPES, DSFormItemLayout, DSInputMask } from "@elliemae/ds-form";
7
+ import DSPopper from "@elliemae/ds-popper";
8
+ import { DatePickerPicker, renderMonthElement } from "@elliemae/ds-date-picker";
9
+ import DayPickerRangeController from "./DayPickerRangeController";
10
+ import { isMaxDiffSafe } from "../isMaxDiffSafe";
11
+ const START_DATE = "startDate";
12
+ const END_DATE = "endDate";
13
+ const { classNameElement, classNameBlock } = convertPropToCssClassName("datepicker");
14
+ class DSDateRangePickerImpl extends React2.Component {
15
+ constructor(props) {
16
+ super(props);
17
+ this.onDatesChange = ({ startDate, endDate }) => {
18
+ const { onDatesChange } = this.props;
19
+ onDatesChange(startDate, endDate);
20
+ const safe = isMaxDiffSafe(startDate, endDate, this.state.startDate, this.state.endDate);
21
+ if (!safe) {
22
+ this.setState({ showPicker: false });
23
+ }
24
+ this.setState({
25
+ startDate,
26
+ endDate,
27
+ primaryStartInput: false,
28
+ primaryEndInput: false
29
+ });
30
+ };
31
+ this.onFocusChange = () => {
32
+ this.setState(({ focusedInput }) => ({
33
+ focusedInput: focusedInput === START_DATE ? END_DATE : START_DATE
34
+ }));
35
+ };
36
+ this.handleKeyDown = (event) => {
37
+ if (event.key === "Escape")
38
+ this.setState({ showPicker: false });
39
+ };
40
+ this.getSafeStartInputValue = () => {
41
+ const { startInput, primaryStartInput, startDate } = this.state;
42
+ if (primaryStartInput && startInput)
43
+ return startInput;
44
+ if (!startDate)
45
+ return "";
46
+ return startDate.format("MMDDYYYY");
47
+ };
48
+ this.getSafeEndInputValue = () => {
49
+ const { endInput, primaryEndInput, endDate } = this.state;
50
+ if (primaryEndInput && endInput)
51
+ return endInput;
52
+ if (!endDate)
53
+ return "";
54
+ return endDate.format("MMDDYYYY");
55
+ };
56
+ this.changeFocus = () => {
57
+ const { disabled } = this.props;
58
+ if (!disabled) {
59
+ this.setState(() => ({ focusedInput: "startDate" }));
60
+ }
61
+ };
62
+ this.handleChangeStart = (e) => {
63
+ const { onChangeStartInput, isDayBlocked, minimumNights } = this.props;
64
+ const { endDate } = this.state;
65
+ const startInputVal = e.target.value;
66
+ let momentValue = null;
67
+ if (startInputVal && moment(startInputVal, "MM/DD/YYYY", true).isValid()) {
68
+ momentValue = moment(startInputVal);
69
+ }
70
+ const startDateBlocked = isDayBlocked(momentValue);
71
+ const isStartDateAcceptable = !startDateBlocked && momentValue && startInputVal !== "";
72
+ const areDatesValid = endDate && momentValue && endDate?.isValid() && momentValue?.isValid();
73
+ const canEndBeSameAsStart = minimumNights === 0;
74
+ const isStartAcceptableWithSelectedEnd = !endDate || areDatesValid && (canEndBeSameAsStart && momentValue.diff(endDate, "days") <= 0 || !canEndBeSameAsStart && momentValue.diff(endDate, "days") < 0);
75
+ const invalidDate = !isStartDateAcceptable || !isStartAcceptableWithSelectedEnd;
76
+ if (startDateBlocked)
77
+ momentValue = null;
78
+ onChangeStartInput(momentValue);
79
+ this.setState((prevState) => ({
80
+ startDate: momentValue,
81
+ startInput: startInputVal,
82
+ primaryStartInput: true,
83
+ startDateError: invalidDate,
84
+ endDateError: !isStartDateAcceptable || !prevState.endDateError ? prevState.endDateError : !isStartAcceptableWithSelectedEnd
85
+ }));
86
+ };
87
+ this.handleChangeEnd = (e) => {
88
+ const { onChangeEndInput, isDayBlocked, minimumNights } = this.props;
89
+ const { startDate } = this.state;
90
+ const endInputValue = e.target.value;
91
+ let momentValue = null;
92
+ if (endInputValue && moment(endInputValue, "MM/DD/YYYY", true).isValid()) {
93
+ momentValue = moment(endInputValue);
94
+ }
95
+ const endDateBlocked = isDayBlocked(momentValue);
96
+ const isEndDateAcceptable = !endDateBlocked && momentValue && endInputValue !== "";
97
+ const areDatesValid = startDate && momentValue && startDate?.isValid() && momentValue?.isValid();
98
+ const canEndBeSameAsStart = minimumNights === 0;
99
+ const isEndAcceptableWithSelectedStart = !startDate || areDatesValid && (canEndBeSameAsStart && momentValue.diff(startDate, "days") >= 0 || !canEndBeSameAsStart && momentValue.diff(startDate, "days") > 0);
100
+ const invalidDate = !isEndDateAcceptable || !isEndAcceptableWithSelectedStart;
101
+ if (endDateBlocked)
102
+ momentValue = null;
103
+ onChangeEndInput(momentValue);
104
+ this.setState((prevState) => ({
105
+ endDate: momentValue,
106
+ endInput: endInputValue,
107
+ primaryEndInput: true,
108
+ startDateError: !isEndDateAcceptable || !prevState.startDateError ? prevState.startDateError : !isEndAcceptableWithSelectedStart,
109
+ endDateError: invalidDate
110
+ }));
111
+ };
112
+ this.handleChangeDate = ({ startDate: _start, endDate }) => {
113
+ if (_start && endDate) {
114
+ this.setState({
115
+ startDate: moment(_start),
116
+ endDate,
117
+ primaryStartInput: false,
118
+ primaryEndInput: false
119
+ });
120
+ } else if (_start) {
121
+ this.setState({ startDate: moment(_start), primaryStartInput: false });
122
+ } else if (endDate) {
123
+ this.setState({ endDate, primaryEndInput: false });
124
+ }
125
+ };
126
+ this.state = {
127
+ startDate: props.startDate ? moment(props.startDate) : null,
128
+ endDate: props.endDate ? moment(props.endDate) : null,
129
+ focusedInput: START_DATE,
130
+ showPicker: false,
131
+ startDateError: false,
132
+ endDateError: false
133
+ };
134
+ }
135
+ componentDidMount() {
136
+ document.addEventListener("keydown", this.handleKeyDown, false);
137
+ }
138
+ componentWillUnmount() {
139
+ document.removeEventListener("keydown", this.handleKeyDown, false);
140
+ }
141
+ render() {
142
+ const { startDate, endDate, focusedInput, showPicker, startDateError, endDateError } = this.state;
143
+ const {
144
+ disabled,
145
+ displayFormatDay,
146
+ minimumNights,
147
+ labelFrom,
148
+ labelTo,
149
+ isDayBlocked,
150
+ isDayHighlighted,
151
+ isOutsideRange,
152
+ enableOutsideDays,
153
+ startDateRequired,
154
+ endDateRequired,
155
+ onOutsideClick,
156
+ onNextMonthClick,
157
+ onPrevMonthClick,
158
+ onClose,
159
+ hasError,
160
+ validationMessage
161
+ } = this.props;
162
+ const inputClass = classNameBlock("inputs", "range-picker");
163
+ const inputClassModifier = "";
164
+ const safeStartInputValue = this.getSafeStartInputValue();
165
+ const safeEndInputValue = this.getSafeEndInputValue();
166
+ return /* @__PURE__ */ React2.createElement("div", {
167
+ className: `${inputClass} ${inputClassModifier}`
168
+ }, /* @__PURE__ */ React2.createElement("div", {
169
+ className: classNameBlock("wrapper-input-date-range-picker-controller")
170
+ }, /* @__PURE__ */ React2.createElement(DSFormItemLayout, {
171
+ floatingLabel: true,
172
+ inputComponent: DSInputMask,
173
+ labelText: labelFrom,
174
+ mask: MASK_TYPES.DATE,
175
+ onChange: this.handleChangeStart,
176
+ onFocus: () => this.setState({ showPicker: false }),
177
+ pipe: MASK_PIPES.AUTO_CORRECT_DATE,
178
+ value: safeStartInputValue,
179
+ required: startDateRequired,
180
+ hasError: hasError || startDateError,
181
+ placeholder: "MM/DD/YYYY"
182
+ }), /* @__PURE__ */ React2.createElement(DSFormItemLayout, {
183
+ floatingLabel: true,
184
+ inputComponent: DSInputMask,
185
+ labelText: labelTo,
186
+ mask: MASK_TYPES.DATE,
187
+ onChange: this.handleChangeEnd,
188
+ onFocus: () => this.setState({ showPicker: false }),
189
+ pipe: MASK_PIPES.AUTO_CORRECT_DATE,
190
+ value: safeEndInputValue,
191
+ required: endDateRequired,
192
+ hasError: hasError || endDateError,
193
+ validationMessage,
194
+ placeholder: "MM/DD/YYYY"
195
+ })), /* @__PURE__ */ React2.createElement("div", {
196
+ className: classNameBlock("wrapper-button-date-range-picker-controller")
197
+ }, /* @__PURE__ */ React2.createElement(DSPopper, {
198
+ contentComponent: /* @__PURE__ */ React2.createElement("div", null, showPicker && /* @__PURE__ */ React2.createElement(DayPickerRangeController, {
199
+ enableOutsideDays,
200
+ isDayBlocked,
201
+ isDayHighlighted,
202
+ isOutsideRange,
203
+ displayFormatDay,
204
+ endDate,
205
+ focusedInput,
206
+ hideKeyboardShortcutsPanel: true,
207
+ minimumNights,
208
+ onDatesChange: this.onDatesChange,
209
+ onFocusChange: this.onFocusChange,
210
+ onOutsideClick: (e) => {
211
+ onOutsideClick(e);
212
+ this.setState({ showPicker: false });
213
+ },
214
+ onNextMonthClick,
215
+ onPrevMonthClick,
216
+ startDate,
217
+ renderMonthElement
218
+ })),
219
+ isOpen: showPicker && !startDateError && !endDateError,
220
+ onClose,
221
+ placement: "bottom-end",
222
+ showArrow: false,
223
+ triggerComponent: /* @__PURE__ */ React2.createElement("div", {
224
+ onFocus: () => this.setState({ showPicker: true })
225
+ }, /* @__PURE__ */ React2.createElement(DatePickerPicker, {
226
+ className: classNameElement("picker"),
227
+ disabled,
228
+ onClick: () => this.setState({ showPicker: true })
229
+ }), hasError && validationMessage && /* @__PURE__ */ React2.createElement("div", {
230
+ style: { height: 15 }
231
+ }))
232
+ })));
233
+ }
234
+ }
235
+ DSDateRangePickerImpl.propTypes = {
236
+ startDate: PropTypes.instanceOf(Date, moment),
237
+ endDate: PropTypes.instanceOf(Date, moment),
238
+ onDatesChange: PropTypes.func,
239
+ onChangeStartInput: PropTypes.func,
240
+ onChangeEndInput: PropTypes.func,
241
+ onNextMonthClick: PropTypes.func,
242
+ onPrevMonthClick: PropTypes.func,
243
+ onClose: PropTypes.func,
244
+ onOutsideClick: PropTypes.func,
245
+ disabled: PropTypes.bool,
246
+ displayFormatDay: PropTypes.string,
247
+ minimumNights: PropTypes.number,
248
+ labelTo: PropTypes.string,
249
+ labelFrom: PropTypes.string,
250
+ isDayBlocked: PropTypes.func,
251
+ isDayHighlighted: PropTypes.func,
252
+ isOutsideRange: PropTypes.func,
253
+ enableOutsideDays: PropTypes.bool,
254
+ startDateRequired: PropTypes.bool,
255
+ endDateRequired: PropTypes.bool,
256
+ hasError: PropTypes.bool,
257
+ validationMessage: PropTypes.string
258
+ };
259
+ export {
260
+ END_DATE,
261
+ START_DATE,
262
+ DSDateRangePickerImpl as default
263
+ };
264
+ //# sourceMappingURL=DSDateRangePickerImpl.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/components/DSDateRangePickerImpl.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable import/no-unresolved */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { convertPropToCssClassName } from '@elliemae/ds-classnames';\nimport { MASK_TYPES, MASK_PIPES, DSFormItemLayout, DSInputMask } from '@elliemae/ds-form';\nimport DSPopper from '@elliemae/ds-popper';\nimport { DatePickerPicker, renderMonthElement } from '@elliemae/ds-date-picker';\nimport DayPickerRangeController from './DayPickerRangeController';\nimport { isMaxDiffSafe } from '../isMaxDiffSafe';\n\nexport const START_DATE = 'startDate';\nexport const END_DATE = 'endDate';\n\nconst { classNameElement, classNameBlock } = convertPropToCssClassName('datepicker');\n\nexport default class DSDateRangePickerImpl extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n startDate: props.startDate ? moment(props.startDate) : null,\n endDate: props.endDate ? moment(props.endDate) : null,\n focusedInput: START_DATE,\n showPicker: false,\n startDateError: false,\n endDateError: false,\n };\n }\n\n componentDidMount() {\n document.addEventListener('keydown', this.handleKeyDown, false);\n }\n\n componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeyDown, false);\n }\n\n onDatesChange = ({ startDate, endDate }) => {\n const { onDatesChange } = this.props;\n onDatesChange(startDate, endDate);\n const safe = isMaxDiffSafe(startDate, endDate, this.state.startDate, this.state.endDate);\n if (!safe) {\n this.setState({ showPicker: false });\n }\n this.setState({\n startDate,\n endDate,\n primaryStartInput: false,\n primaryEndInput: false,\n });\n };\n\n onFocusChange = () => {\n this.setState(({ focusedInput }) => ({\n focusedInput: focusedInput === START_DATE ? END_DATE : START_DATE,\n }));\n };\n\n handleKeyDown = (event) => {\n if (event.key === 'Escape') this.setState({ showPicker: false });\n };\n\n getSafeStartInputValue = () => {\n const { startInput, primaryStartInput, startDate } = this.state;\n if (primaryStartInput && startInput) return startInput;\n if (!startDate) return '';\n return startDate.format('MMDDYYYY');\n };\n\n getSafeEndInputValue = () => {\n const { endInput, primaryEndInput, endDate } = this.state;\n if (primaryEndInput && endInput) return endInput;\n if (!endDate) return '';\n return endDate.format('MMDDYYYY');\n };\n\n changeFocus = () => {\n const { disabled } = this.props;\n if (!disabled) {\n this.setState(() => ({ focusedInput: 'startDate' }));\n }\n };\n\n handleChangeStart = (e) => {\n const { onChangeStartInput, isDayBlocked, minimumNights } = this.props;\n const { endDate } = this.state;\n const startInputVal = e.target.value;\n let momentValue = null;\n if (startInputVal && moment(startInputVal, 'MM/DD/YYYY', true).isValid()) {\n momentValue = moment(startInputVal);\n }\n\n const startDateBlocked = isDayBlocked(momentValue);\n\n const isStartDateAcceptable = !startDateBlocked && momentValue && startInputVal !== '';\n const areDatesValid = endDate && momentValue && endDate?.isValid() && momentValue?.isValid();\n\n const canEndBeSameAsStart = minimumNights === 0;\n const isStartAcceptableWithSelectedEnd =\n !endDate ||\n (areDatesValid &&\n ((canEndBeSameAsStart && momentValue.diff(endDate, 'days') <= 0) ||\n (!canEndBeSameAsStart && momentValue.diff(endDate, 'days') < 0)));\n\n const invalidDate = !isStartDateAcceptable || !isStartAcceptableWithSelectedEnd;\n if (startDateBlocked) momentValue = null;\n onChangeStartInput(momentValue);\n this.setState((prevState: { endDateError: boolean }) => ({\n startDate: momentValue,\n startInput: startInputVal,\n primaryStartInput: true,\n startDateError: invalidDate,\n endDateError:\n !isStartDateAcceptable || !prevState.endDateError ? prevState.endDateError : !isStartAcceptableWithSelectedEnd,\n }));\n };\n\n handleChangeEnd = (e) => {\n const { onChangeEndInput, isDayBlocked, minimumNights } = this.props;\n const { startDate } = this.state;\n const endInputValue = e.target.value;\n let momentValue = null;\n if (endInputValue && moment(endInputValue, 'MM/DD/YYYY', true).isValid()) {\n momentValue = moment(endInputValue);\n }\n const endDateBlocked = isDayBlocked(momentValue);\n\n const isEndDateAcceptable = !endDateBlocked && momentValue && endInputValue !== '';\n const areDatesValid = startDate && momentValue && startDate?.isValid() && momentValue?.isValid();\n\n const canEndBeSameAsStart = minimumNights === 0;\n const isEndAcceptableWithSelectedStart =\n !startDate || // we can't compare with start date because it's not yet set\n (areDatesValid && // it's set and both are valid\n ((canEndBeSameAsStart && momentValue.diff(startDate, 'days') >= 0) || // >= is valid\n (!canEndBeSameAsStart && momentValue.diff(startDate, 'days') > 0))); // only > is valid\n\n const invalidDate = !isEndDateAcceptable || !isEndAcceptableWithSelectedStart;\n\n if (endDateBlocked) momentValue = null;\n onChangeEndInput(momentValue);\n this.setState((prevState: { startDateError: boolean }) => ({\n endDate: momentValue,\n endInput: endInputValue,\n primaryEndInput: true,\n startDateError:\n !isEndDateAcceptable || !prevState.startDateError\n ? prevState.startDateError\n : !isEndAcceptableWithSelectedStart,\n endDateError: invalidDate,\n }));\n };\n\n handleChangeDate = ({ startDate: _start, endDate }) => {\n if (_start && endDate) {\n this.setState({\n startDate: moment(_start),\n endDate,\n primaryStartInput: false,\n primaryEndInput: false,\n });\n } else if (_start) {\n this.setState({ startDate: moment(_start), primaryStartInput: false });\n } else if (endDate) {\n this.setState({ endDate, primaryEndInput: false });\n }\n };\n\n render() {\n const { startDate, endDate, focusedInput, showPicker, startDateError, endDateError } = this.state;\n\n const {\n disabled,\n displayFormatDay,\n minimumNights,\n labelFrom,\n labelTo,\n isDayBlocked,\n isDayHighlighted,\n isOutsideRange,\n enableOutsideDays,\n startDateRequired,\n endDateRequired,\n onOutsideClick,\n onNextMonthClick,\n onPrevMonthClick,\n onClose,\n hasError,\n validationMessage,\n } = this.props;\n\n const inputClass = classNameBlock('inputs', 'range-picker');\n const inputClassModifier = '';\n\n const safeStartInputValue = this.getSafeStartInputValue();\n const safeEndInputValue = this.getSafeEndInputValue();\n\n return (\n <div className={`${inputClass} ${inputClassModifier}`}>\n <div className={classNameBlock('wrapper-input-date-range-picker-controller')}>\n <DSFormItemLayout\n floatingLabel\n inputComponent={DSInputMask}\n labelText={labelFrom}\n mask={MASK_TYPES.DATE}\n onChange={this.handleChangeStart}\n onFocus={() => this.setState({ showPicker: false })}\n pipe={MASK_PIPES.AUTO_CORRECT_DATE}\n value={safeStartInputValue}\n required={startDateRequired}\n hasError={hasError || startDateError}\n placeholder=\"MM/DD/YYYY\"\n />\n <DSFormItemLayout\n floatingLabel\n inputComponent={DSInputMask}\n labelText={labelTo}\n mask={MASK_TYPES.DATE}\n onChange={this.handleChangeEnd}\n onFocus={() => this.setState({ showPicker: false })}\n pipe={MASK_PIPES.AUTO_CORRECT_DATE}\n value={safeEndInputValue}\n required={endDateRequired}\n hasError={hasError || endDateError}\n validationMessage={validationMessage}\n placeholder=\"MM/DD/YYYY\"\n />\n </div>\n <div className={classNameBlock('wrapper-button-date-range-picker-controller')}>\n <DSPopper\n contentComponent={\n <div>\n {showPicker && (\n <DayPickerRangeController\n enableOutsideDays={enableOutsideDays}\n isDayBlocked={isDayBlocked}\n isDayHighlighted={isDayHighlighted}\n isOutsideRange={isOutsideRange}\n displayFormatDay={displayFormatDay}\n endDate={endDate}\n focusedInput={focusedInput}\n hideKeyboardShortcutsPanel\n minimumNights={minimumNights}\n onDatesChange={this.onDatesChange}\n onFocusChange={this.onFocusChange}\n onOutsideClick={(e) => {\n onOutsideClick(e);\n this.setState({ showPicker: false });\n }}\n onNextMonthClick={onNextMonthClick}\n onPrevMonthClick={onPrevMonthClick}\n startDate={startDate}\n renderMonthElement={renderMonthElement}\n />\n )}\n </div>\n }\n isOpen={showPicker && !startDateError && !endDateError}\n onClose={onClose}\n placement=\"bottom-end\"\n showArrow={false}\n triggerComponent={\n <div onFocus={() => this.setState({ showPicker: true })}>\n <DatePickerPicker\n className={classNameElement('picker')}\n disabled={disabled}\n onClick={() => this.setState({ showPicker: true })}\n />\n {hasError && validationMessage && <div style={{ height: 15 }} />}\n </div>\n }\n />\n </div>\n </div>\n );\n }\n}\n\nDSDateRangePickerImpl.propTypes = {\n startDate: PropTypes.instanceOf(Date, moment),\n endDate: PropTypes.instanceOf(Date, moment),\n onDatesChange: PropTypes.func,\n onChangeStartInput: PropTypes.func,\n onChangeEndInput: PropTypes.func,\n onNextMonthClick: PropTypes.func,\n onPrevMonthClick: PropTypes.func,\n onClose: PropTypes.func,\n onOutsideClick: PropTypes.func,\n disabled: PropTypes.bool,\n displayFormatDay: PropTypes.string,\n minimumNights: PropTypes.number,\n labelTo: PropTypes.string,\n labelFrom: PropTypes.string,\n isDayBlocked: PropTypes.func,\n isDayHighlighted: PropTypes.func,\n isOutsideRange: PropTypes.func,\n enableOutsideDays: PropTypes.bool,\n startDateRequired: PropTypes.bool,\n endDateRequired: PropTypes.bool,\n hasError: PropTypes.bool,\n validationMessage: PropTypes.string,\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ import React2 from "react";
3
+ const Label = ({ className = "date-picker-label", label = "" }) => /* @__PURE__ */ React2.createElement("div", {
4
+ className
5
+ }, /* @__PURE__ */ React2.createElement("span", null, label));
6
+ var DatePickerLabel_default = Label;
7
+ export {
8
+ DatePickerLabel_default as default
9
+ };
10
+ //# sourceMappingURL=DatePickerLabel.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/components/DatePickerLabel/DatePickerLabel.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\n\nconst Label = ({ className = 'date-picker-label', label = '' }) => (\n <div className={className}>\n <span>{label}</span>\n </div>\n);\n\nexport default Label;\n"],
5
+ "mappings": "AAAA;ACAA;AAEA,MAAM,QAAQ,CAAC,EAAE,YAAY,qBAAqB,QAAQ,SACxD,qCAAC,OAAD;AAAA,EAAK;AAAA,GACH,qCAAC,QAAD,MAAO;AAIX,IAAO,0BAAQ;",
6
+ "names": []
7
+ }
@@ -1,75 +1,63 @@
1
- import _jsx from '@babel/runtime/helpers/esm/jsx';
2
- import 'core-js/modules/web.dom-collections.iterator.js';
3
- import { useState, useEffect } from 'react';
4
- import moment from 'moment';
5
- import DSInputMask, { DSInputGroup, MASK_TYPES, MASK_PIPES } from '@elliemae/ds-form';
6
- import { aggregatedClasses } from '@elliemae/ds-classnames';
7
-
8
- const blockname = 'date-range-picker';
9
- const Header = aggregatedClasses('div')(blockname, 'header');
10
-
11
- const formatDate = date => {
1
+ import * as React from "react";
2
+ import React2, { useState, useEffect } from "react";
3
+ import moment from "moment";
4
+ import DSInputMask, { DSInputGroup, MASK_TYPES, MASK_PIPES } from "@elliemae/ds-form";
5
+ import { aggregatedClasses } from "@elliemae/ds-classnames";
6
+ const blockname = "date-range-picker";
7
+ const Header = aggregatedClasses("div")(blockname, "header");
8
+ const formatDate = (date) => {
12
9
  if (date) {
13
- return date.format('MMDDYYYY');
10
+ return date.format("MMDDYYYY");
14
11
  }
15
12
  };
16
-
17
- const DatePickerRangeHeader = _ref => {
18
- let {
19
- placeholderStart = 'Start Date',
20
- placeholderEnd = 'End Date',
21
- onStartInputChange = () => null,
22
- onEndInputChange = () => null,
23
- selectedStartDate,
24
- selectedEndDate
25
- } = _ref;
26
- const [startValue, setStartValue] = useState(selectedStartDate ? formatDate(selectedStartDate) : '');
27
- const [endValue, setEndValue] = useState(selectedEndDate ? formatDate(selectedEndDate) : '');
13
+ const DatePickerRangeHeader = ({
14
+ placeholderStart = "Start Date",
15
+ placeholderEnd = "End Date",
16
+ onStartInputChange = () => null,
17
+ onEndInputChange = () => null,
18
+ selectedStartDate,
19
+ selectedEndDate
20
+ }) => {
21
+ const [startValue, setStartValue] = useState(selectedStartDate ? formatDate(selectedStartDate) : "");
22
+ const [endValue, setEndValue] = useState(selectedEndDate ? formatDate(selectedEndDate) : "");
28
23
  useEffect(() => {
29
24
  const startDate = formatDate(selectedStartDate);
30
25
  const endDate = formatDate(selectedEndDate);
31
26
  startDate !== startValue && setStartValue(startDate);
32
27
  endDate !== endValue && setEndValue(endDate);
33
28
  }, [selectedStartDate, selectedEndDate]);
34
-
35
- const handleOnChangeStart = e => {
29
+ const handleOnChangeStart = (e) => {
36
30
  const newStartValue = e.target.value;
37
31
  setStartValue(newStartValue);
38
32
  };
39
-
40
- const handleOnChangeEnd = e => {
33
+ const handleOnChangeEnd = (e) => {
41
34
  const newEndValue = e.target.value;
42
35
  setEndValue(newEndValue);
43
36
  };
44
-
45
- const handleOnBlurStart = e => {
37
+ const handleOnBlurStart = (e) => {
46
38
  const newStartValue = e.target.value;
47
39
  onStartInputChange(moment(newStartValue));
48
40
  };
49
-
50
- const handleOnBlurEnd = e => {
41
+ const handleOnBlurEnd = (e) => {
51
42
  const newEndValue = e.target.value;
52
43
  onEndInputChange(moment(newEndValue));
53
44
  };
54
-
55
- const handleOnKeyDownStart = e => {
56
- if (e.key === 'Enter') {
45
+ const handleOnKeyDownStart = (e) => {
46
+ if (e.key === "Enter") {
57
47
  const newValue = e.target.value;
58
48
  onStartInputChange(moment(newValue));
59
49
  e.target.blur();
60
50
  }
61
51
  };
62
-
63
- const handleOnKeyDownEnd = e => {
64
- if (e.key === 'Enter') {
52
+ const handleOnKeyDownEnd = (e) => {
53
+ if (e.key === "Enter") {
65
54
  const newValue = e.target.value;
66
55
  onEndInputChange(moment(newValue));
67
56
  e.target.blur();
68
57
  }
69
58
  };
70
-
71
- return /*#__PURE__*/_jsx(Header, {}, void 0, /*#__PURE__*/_jsx(DSInputGroup, {}, void 0, /*#__PURE__*/_jsx(DSInputMask, {
72
- "aria-label": placeholderStart || 'Date Picker Input Mask',
59
+ return /* @__PURE__ */ React2.createElement(Header, null, /* @__PURE__ */ React2.createElement(DSInputGroup, null, /* @__PURE__ */ React2.createElement(DSInputMask, {
60
+ "aria-label": placeholderStart || "Date Picker Input Mask",
73
61
  mask: MASK_TYPES.DATE,
74
62
  onBlur: handleOnBlurStart,
75
63
  onChange: handleOnChangeStart,
@@ -77,8 +65,8 @@ const DatePickerRangeHeader = _ref => {
77
65
  pipe: MASK_PIPES.AUTO_CORRECT_DATE,
78
66
  placeholder: placeholderStart,
79
67
  value: startValue
80
- }), /*#__PURE__*/_jsx(DSInputMask, {
81
- "aria-label": placeholderEnd || 'Date Picker Input Mask',
68
+ }), /* @__PURE__ */ React2.createElement(DSInputMask, {
69
+ "aria-label": placeholderEnd || "Date Picker Input Mask",
82
70
  mask: MASK_TYPES.DATE,
83
71
  onBlur: handleOnBlurEnd,
84
72
  onChange: handleOnChangeEnd,
@@ -88,5 +76,8 @@ const DatePickerRangeHeader = _ref => {
88
76
  value: endValue
89
77
  })));
90
78
  };
91
-
92
- export { DatePickerRangeHeader as default };
79
+ var DatePickerRangeHeader_default = DatePickerRangeHeader;
80
+ export {
81
+ DatePickerRangeHeader_default as default
82
+ };
83
+ //# sourceMappingURL=DatePickerRangeHeader.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/components/DatePickerRangeHeader/DatePickerRangeHeader.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable no-unused-expressions */\n/* eslint-disable no-console */\nimport React, { useState, useEffect } from 'react';\nimport moment from 'moment';\nimport DSInputMask, { DSInputGroup, MASK_TYPES, MASK_PIPES } from '@elliemae/ds-form';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\n\nconst blockname = 'date-range-picker';\nconst Header = aggregatedClasses('div')(blockname, 'header');\n\nconst formatDate = (date) => {\n if (date) {\n return date.format('MMDDYYYY');\n }\n};\n\nconst DatePickerRangeHeader = ({\n placeholderStart = 'Start Date',\n placeholderEnd = 'End Date',\n onStartInputChange = () => null,\n onEndInputChange = () => null,\n selectedStartDate,\n selectedEndDate,\n}) => {\n const [startValue, setStartValue] = useState(selectedStartDate ? formatDate(selectedStartDate) : '');\n const [endValue, setEndValue] = useState(selectedEndDate ? formatDate(selectedEndDate) : '');\n\n useEffect(() => {\n const startDate = formatDate(selectedStartDate);\n const endDate = formatDate(selectedEndDate);\n startDate !== startValue && setStartValue(startDate);\n endDate !== endValue && setEndValue(endDate);\n }, [selectedStartDate, selectedEndDate]);\n\n const handleOnChangeStart = (e) => {\n const newStartValue = e.target.value;\n setStartValue(newStartValue);\n };\n\n const handleOnChangeEnd = (e) => {\n const newEndValue = e.target.value;\n setEndValue(newEndValue);\n };\n\n const handleOnBlurStart = (e) => {\n const newStartValue = e.target.value;\n onStartInputChange(moment(newStartValue));\n };\n\n const handleOnBlurEnd = (e) => {\n const newEndValue = e.target.value;\n onEndInputChange(moment(newEndValue));\n };\n\n const handleOnKeyDownStart = (e) => {\n if (e.key === 'Enter') {\n const newValue = e.target.value;\n onStartInputChange(moment(newValue));\n e.target.blur();\n }\n };\n\n const handleOnKeyDownEnd = (e) => {\n if (e.key === 'Enter') {\n const newValue = e.target.value;\n onEndInputChange(moment(newValue));\n e.target.blur();\n }\n };\n\n return (\n <Header>\n <DSInputGroup>\n <DSInputMask\n aria-label={placeholderStart || 'Date Picker Input Mask'}\n mask={MASK_TYPES.DATE}\n onBlur={handleOnBlurStart}\n onChange={handleOnChangeStart}\n onKeyDown={handleOnKeyDownStart}\n pipe={MASK_PIPES.AUTO_CORRECT_DATE}\n placeholder={placeholderStart}\n value={startValue}\n />\n <DSInputMask\n aria-label={placeholderEnd || 'Date Picker Input Mask'}\n mask={MASK_TYPES.DATE}\n onBlur={handleOnBlurEnd}\n onChange={handleOnChangeEnd}\n onKeyDown={handleOnKeyDownEnd}\n pipe={MASK_PIPES.AUTO_CORRECT_DATE}\n placeholder={placeholderEnd}\n value={endValue}\n />\n </DSInputGroup>\n </Header>\n );\n};\n\nexport default DatePickerRangeHeader;\n"],
5
+ "mappings": "AAAA;ACEA;AACA;AACA;AACA;AAEA,MAAM,YAAY;AAClB,MAAM,SAAS,kBAAkB,OAAO,WAAW;AAEnD,MAAM,aAAa,CAAC,SAAS;AAC3B,MAAI,MAAM;AACR,WAAO,KAAK,OAAO;AAAA;AAAA;AAIvB,MAAM,wBAAwB,CAAC;AAAA,EAC7B,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,qBAAqB,MAAM;AAAA,EAC3B,mBAAmB,MAAM;AAAA,EACzB;AAAA,EACA;AAAA,MACI;AACJ,QAAM,CAAC,YAAY,iBAAiB,SAAS,oBAAoB,WAAW,qBAAqB;AACjG,QAAM,CAAC,UAAU,eAAe,SAAS,kBAAkB,WAAW,mBAAmB;AAEzF,YAAU,MAAM;AACd,UAAM,YAAY,WAAW;AAC7B,UAAM,UAAU,WAAW;AAC3B,kBAAc,cAAc,cAAc;AAC1C,gBAAY,YAAY,YAAY;AAAA,KACnC,CAAC,mBAAmB;AAEvB,QAAM,sBAAsB,CAAC,MAAM;AACjC,UAAM,gBAAgB,EAAE,OAAO;AAC/B,kBAAc;AAAA;AAGhB,QAAM,oBAAoB,CAAC,MAAM;AAC/B,UAAM,cAAc,EAAE,OAAO;AAC7B,gBAAY;AAAA;AAGd,QAAM,oBAAoB,CAAC,MAAM;AAC/B,UAAM,gBAAgB,EAAE,OAAO;AAC/B,uBAAmB,OAAO;AAAA;AAG5B,QAAM,kBAAkB,CAAC,MAAM;AAC7B,UAAM,cAAc,EAAE,OAAO;AAC7B,qBAAiB,OAAO;AAAA;AAG1B,QAAM,uBAAuB,CAAC,MAAM;AAClC,QAAI,EAAE,QAAQ,SAAS;AACrB,YAAM,WAAW,EAAE,OAAO;AAC1B,yBAAmB,OAAO;AAC1B,QAAE,OAAO;AAAA;AAAA;AAIb,QAAM,qBAAqB,CAAC,MAAM;AAChC,QAAI,EAAE,QAAQ,SAAS;AACrB,YAAM,WAAW,EAAE,OAAO;AAC1B,uBAAiB,OAAO;AACxB,QAAE,OAAO;AAAA;AAAA;AAIb,SACE,qCAAC,QAAD,MACE,qCAAC,cAAD,MACE,qCAAC,aAAD;AAAA,IACE,cAAY,oBAAoB;AAAA,IAChC,MAAM,WAAW;AAAA,IACjB,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,IACX,MAAM,WAAW;AAAA,IACjB,aAAa;AAAA,IACb,OAAO;AAAA,MAET,qCAAC,aAAD;AAAA,IACE,cAAY,kBAAkB;AAAA,IAC9B,MAAM,WAAW;AAAA,IACjB,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,IACX,MAAM,WAAW;AAAA,IACjB,aAAa;AAAA,IACb,OAAO;AAAA;AAAA;AAOjB,IAAO,gCAAQ;",
6
+ "names": []
7
+ }