@dfds-ui/react-components 2.2.0-alpha.9bb1ab0f → 2.2.0-alpha.a78c2264

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 (269) hide show
  1. package/accordion/Accordion.js +70 -51
  2. package/accordion/AccordionContent.js +13 -6
  3. package/accordion/AccordionSmall.js +52 -38
  4. package/app-bar/AppBar.js +49 -35
  5. package/app-bar/AppBarContext.js +7 -6
  6. package/app-bar/AppBarDrawer.js +13 -6
  7. package/app-bar/AppBarIconButton.js +10 -5
  8. package/app-bar/AppBarItem.js +71 -56
  9. package/assertions/banner/Banner.js +65 -51
  10. package/assertions/banner/BannerAction.js +10 -5
  11. package/assertions/banner/BannerTypography.js +9 -4
  12. package/assertions/toast/Toast.js +28 -17
  13. package/assertions/toast/Toaster.js +52 -56
  14. package/badge/Badge.js +17 -9
  15. package/button/BadgeIcon.js +18 -16
  16. package/button/Button.js +27 -19
  17. package/button/IconButton.js +20 -13
  18. package/button/LinkButton.js +8 -3
  19. package/button-stack/ButtonStack.js +27 -19
  20. package/card/Card.js +49 -35
  21. package/card/CardActions.js +13 -6
  22. package/card/CardContent.js +19 -9
  23. package/card/CardMedia.js +15 -6
  24. package/card/CardPriceTag.js +22 -4
  25. package/card/CardTitle.js +25 -15
  26. package/chip/Chip.js +22 -13
  27. package/cjs/accordion/Accordion.js +63 -50
  28. package/cjs/accordion/AccordionContent.js +7 -6
  29. package/cjs/accordion/AccordionSmall.js +45 -37
  30. package/cjs/app-bar/AppBar.js +45 -35
  31. package/cjs/app-bar/AppBarContext.js +5 -4
  32. package/cjs/app-bar/AppBarDrawer.js +7 -7
  33. package/cjs/app-bar/AppBarIconButton.js +6 -6
  34. package/cjs/app-bar/AppBarItem.js +63 -54
  35. package/cjs/app-bar/AppBarListItem.js +1 -2
  36. package/cjs/assertions/banner/Banner.js +56 -49
  37. package/cjs/assertions/banner/BannerAction.js +5 -4
  38. package/cjs/assertions/banner/BannerTypography.js +9 -7
  39. package/cjs/assertions/toast/Toast.js +22 -17
  40. package/cjs/assertions/toast/Toaster.js +36 -28
  41. package/cjs/badge/Badge.js +11 -7
  42. package/cjs/button/BadgeIcon.js +19 -17
  43. package/cjs/button/BaseButton.js +2 -4
  44. package/cjs/button/Button.js +21 -19
  45. package/cjs/button/IconButton.js +15 -14
  46. package/cjs/button/LinkButton.js +6 -6
  47. package/cjs/button/button-style.js +8 -15
  48. package/cjs/button-stack/ButtonStack.js +19 -17
  49. package/cjs/card/Card.js +39 -29
  50. package/cjs/card/CardActions.js +7 -7
  51. package/cjs/card/CardContent.js +13 -9
  52. package/cjs/card/CardMedia.js +9 -6
  53. package/cjs/card/CardPriceTag.js +16 -4
  54. package/cjs/card/CardTitle.js +16 -12
  55. package/cjs/chip/Chip.js +18 -15
  56. package/cjs/common/LockBodyScroll.js +15 -11
  57. package/cjs/common/emotionCloneElement.js +1 -2
  58. package/cjs/common/polymorphic.js +9 -5
  59. package/cjs/counter/Counter.js +50 -43
  60. package/cjs/counter/PluralCounter.js +13 -11
  61. package/cjs/data-table/DataTable.js +45 -37
  62. package/cjs/date-range-picker/DateRangePicker.d.ts +4 -4
  63. package/cjs/date-range-picker/DateRangePicker.js +276 -207
  64. package/cjs/date-range-picker/DateRangePicker.styles.d.ts +6 -0
  65. package/cjs/date-range-picker/DateRangePicker.styles.js +14 -0
  66. package/cjs/divider/Divider.js +6 -6
  67. package/cjs/drawer/Drawer.js +10 -8
  68. package/cjs/dropdown-menu/Dropdown.js +34 -29
  69. package/cjs/dropdown-menu/DropdownContext.js +7 -8
  70. package/cjs/dropdown-menu/MenuCheckbox.js +24 -23
  71. package/cjs/dropdown-menu/MenuItem.js +30 -28
  72. package/cjs/dropdown-menu/MenuTitle.js +15 -12
  73. package/cjs/elevation/index.js +1 -2
  74. package/cjs/flexbox/FlexBox.js +2 -4
  75. package/cjs/footer/Footer.js +10 -6
  76. package/cjs/forms/assistive-text/AssistiveText.js +1 -2
  77. package/cjs/forms/asterisk/Asterisk.js +5 -4
  78. package/cjs/forms/checkbox/Checkbox.js +36 -31
  79. package/cjs/forms/checkbox/ExampleControlComponent.js +7 -7
  80. package/cjs/forms/email-field/EmailField.js +7 -7
  81. package/cjs/forms/error-text/ErrorText.js +1 -2
  82. package/cjs/forms/field/Field.js +10 -6
  83. package/cjs/forms/input/Input.js +23 -21
  84. package/cjs/forms/input/InputComposition.js +29 -23
  85. package/cjs/forms/label/Label.js +6 -3
  86. package/cjs/forms/number-field/NumberField.js +6 -6
  87. package/cjs/forms/password-field/PasswordField.js +10 -10
  88. package/cjs/forms/radio/Radio.js +20 -19
  89. package/cjs/forms/reactselect/ReactSelect.js +70 -61
  90. package/cjs/forms/searchable-select/AsyncSearchableSelect.js +47 -38
  91. package/cjs/forms/select/Select.js +25 -22
  92. package/cjs/forms/select-field/SelectField.js +33 -29
  93. package/cjs/forms/switch/Switch.js +28 -22
  94. package/cjs/forms/tel-field/TelField.js +7 -7
  95. package/cjs/forms/text-field/TextField.js +37 -34
  96. package/cjs/global-styles/GlobalStyles.js +3 -2
  97. package/cjs/global-styles/ResetStyles.js +2 -1
  98. package/cjs/global-styles/sanitize.js +2 -3
  99. package/cjs/grid/Column.js +7 -7
  100. package/cjs/grid/Container.js +34 -29
  101. package/cjs/hero/Hero.js +32 -12
  102. package/cjs/hero/stripes.js +177 -162
  103. package/cjs/ie-banner/IEBanner.js +13 -8
  104. package/cjs/layout/LayoutLegacy.js +2 -1
  105. package/cjs/lists/FeatureList.js +16 -13
  106. package/cjs/lists/ListAddon.js +10 -7
  107. package/cjs/lists/ListDivider.js +6 -6
  108. package/cjs/lists/ListIcon.js +6 -6
  109. package/cjs/lists/ListItem.js +7 -6
  110. package/cjs/lists/ListText.js +6 -6
  111. package/cjs/lists/ListTextGroup.js +6 -6
  112. package/cjs/lists/ListTitle.js +6 -6
  113. package/cjs/loader/DfdsLoader.js +27 -21
  114. package/cjs/loader/Loader.js +9 -3
  115. package/cjs/localization/LocaleFlag.js +5 -4
  116. package/cjs/localization/locales.js +3 -6
  117. package/cjs/logo/Logo.js +12 -9
  118. package/cjs/media/index.js +1 -2
  119. package/cjs/menu/Menu.js +22 -15
  120. package/cjs/mobile-stepper/MobileStepper.js +17 -15
  121. package/cjs/nav-bar/NavBar.js +34 -24
  122. package/cjs/nav-menu/NavMenuItem.js +13 -11
  123. package/cjs/pagination/Pagination.js +50 -38
  124. package/cjs/pagination/Pagination.styles.js +6 -12
  125. package/cjs/popper/Popper.js +21 -17
  126. package/cjs/progress-bar/ProgressBar.js +3 -3
  127. package/cjs/schedule/ScheduleItem.js +11 -8
  128. package/cjs/schedule/ScheduleList.js +10 -11
  129. package/cjs/side-sheet/SideSheet.js +41 -33
  130. package/cjs/side-sheet/SideSheetCloseButton.js +6 -6
  131. package/cjs/side-sheet/SideSheetContent.js +10 -7
  132. package/cjs/side-sheet/SideSheetFooter.js +10 -7
  133. package/cjs/side-sheet/SideSheetHeader.js +10 -7
  134. package/cjs/side-sheet/SideSheetHeadline.js +6 -5
  135. package/cjs/site-layout/SiteLayout.js +30 -19
  136. package/cjs/skeleton/Skeleton.js +6 -6
  137. package/cjs/social-media-link-list/SocialMediaLinkList.js +64 -58
  138. package/cjs/spinner/Spinner.js +13 -13
  139. package/cjs/step/Step.js +29 -20
  140. package/cjs/step/Step.styles.js +4 -8
  141. package/cjs/step/StepButton.js +26 -23
  142. package/cjs/step/StepContent.js +12 -10
  143. package/cjs/step/StepContext.js +1 -2
  144. package/cjs/step/StepLabel.js +9 -7
  145. package/cjs/stepper/Stepper.js +12 -10
  146. package/cjs/stepper/StepperContext.js +1 -2
  147. package/cjs/stepper-feedback-message/StepperFeedbackMessage.js +10 -7
  148. package/cjs/styles/media.js +2 -4
  149. package/cjs/styles/theme.js +2 -4
  150. package/cjs/surface/Surface.js +20 -14
  151. package/cjs/tab/Tab.js +7 -6
  152. package/cjs/tab/TabPanel.js +6 -6
  153. package/cjs/tab/Tabs.js +29 -28
  154. package/cjs/tab/TabsContext.js +7 -8
  155. package/cjs/table/Table.js +15 -15
  156. package/cjs/table/TableBody.js +8 -9
  157. package/cjs/table/TableDataCell.js +9 -10
  158. package/cjs/table/TableHead.js +10 -12
  159. package/cjs/table/TableHeaderCell.js +9 -10
  160. package/cjs/table/TableRow.js +9 -10
  161. package/cjs/test/Test.js +5 -4
  162. package/cjs/tooltip/Tooltip.js +28 -22
  163. package/cjs/typography/Headlines.js +14 -20
  164. package/cjs/typography/Text.js +2 -3
  165. package/common/LockBodyScroll.js +20 -10
  166. package/common/polymorphic.js +9 -3
  167. package/common/use-media.js +2 -2
  168. package/counter/Counter.js +50 -42
  169. package/counter/PluralCounter.js +20 -11
  170. package/data-table/DataTable.js +52 -38
  171. package/date-range-picker/DateRangePicker.d.ts +4 -4
  172. package/date-range-picker/DateRangePicker.js +319 -238
  173. package/date-range-picker/DateRangePicker.styles.d.ts +6 -0
  174. package/date-range-picker/DateRangePicker.styles.js +9 -0
  175. package/divider/Divider.js +10 -5
  176. package/drawer/Drawer.js +15 -6
  177. package/dropdown-menu/Dropdown.js +42 -31
  178. package/dropdown-menu/DropdownContext.js +5 -4
  179. package/dropdown-menu/MenuCheckbox.js +24 -17
  180. package/dropdown-menu/MenuItem.js +26 -18
  181. package/dropdown-menu/MenuTitle.js +14 -11
  182. package/flexbox/FlexBox.js +2 -2
  183. package/footer/Footer.js +9 -4
  184. package/forms/asterisk/Asterisk.js +4 -2
  185. package/forms/checkbox/Checkbox.js +42 -32
  186. package/forms/checkbox/ExampleControlComponent.js +15 -8
  187. package/forms/email-field/EmailField.js +8 -3
  188. package/forms/field/Field.js +9 -4
  189. package/forms/input/Input.js +29 -22
  190. package/forms/input/InputComposition.js +29 -17
  191. package/forms/label/Label.js +12 -4
  192. package/forms/number-field/NumberField.js +8 -3
  193. package/forms/password-field/PasswordField.js +15 -9
  194. package/forms/radio/Radio.js +25 -18
  195. package/forms/reactselect/ReactSelect.js +65 -57
  196. package/forms/searchable-select/AsyncSearchableSelect.js +50 -38
  197. package/forms/select/Select.js +31 -23
  198. package/forms/select-field/SelectField.js +38 -29
  199. package/forms/switch/Switch.js +35 -23
  200. package/forms/tel-field/TelField.js +8 -3
  201. package/forms/text-field/TextField.js +43 -34
  202. package/global-styles/GlobalStyles.js +3 -3
  203. package/global-styles/ResetStyles.js +2 -2
  204. package/grid/Column.js +14 -7
  205. package/grid/Container.js +41 -35
  206. package/hero/Hero.js +32 -10
  207. package/hero/stripes.js +176 -160
  208. package/ie-banner/IEBanner.js +14 -8
  209. package/layout/LayoutLegacy.js +2 -2
  210. package/lists/FeatureList.js +21 -11
  211. package/lists/ListAddon.js +13 -6
  212. package/lists/ListDivider.js +10 -5
  213. package/lists/ListIcon.js +10 -5
  214. package/lists/ListItem.js +13 -6
  215. package/lists/ListText.js +10 -5
  216. package/lists/ListTextGroup.js +10 -5
  217. package/lists/ListTitle.js +10 -5
  218. package/loader/DfdsLoader.js +25 -19
  219. package/loader/Loader.js +8 -2
  220. package/localization/LocaleFlag.js +10 -5
  221. package/logo/Logo.js +14 -7
  222. package/menu/Menu.js +25 -12
  223. package/mobile-stepper/MobileStepper.js +26 -18
  224. package/nav-bar/NavBar.js +41 -23
  225. package/nav-menu/NavMenuItem.js +12 -10
  226. package/package.json +14 -16
  227. package/pagination/Pagination.js +53 -35
  228. package/popper/Popper.js +27 -17
  229. package/progress-bar/ProgressBar.js +2 -2
  230. package/schedule/ScheduleItem.js +9 -4
  231. package/schedule/ScheduleList.js +16 -10
  232. package/side-sheet/SideSheet.js +47 -34
  233. package/side-sheet/SideSheetCloseButton.js +10 -5
  234. package/side-sheet/SideSheetContent.js +17 -8
  235. package/side-sheet/SideSheetFooter.js +17 -8
  236. package/side-sheet/SideSheetHeader.js +17 -8
  237. package/side-sheet/SideSheetHeadline.js +5 -4
  238. package/site-layout/SiteLayout.js +31 -12
  239. package/skeleton/Skeleton.js +10 -5
  240. package/social-media-link-list/SocialMediaLinkList.js +69 -55
  241. package/spinner/Spinner.js +17 -10
  242. package/step/Step.js +34 -20
  243. package/step/StepButton.js +23 -15
  244. package/step/StepContent.js +11 -9
  245. package/step/StepLabel.js +8 -6
  246. package/stepper/Stepper.js +13 -11
  247. package/stepper-feedback-message/StepperFeedbackMessage.js +9 -6
  248. package/surface/Surface.js +17 -14
  249. package/tab/Tab.js +13 -6
  250. package/tab/TabPanel.js +5 -4
  251. package/tab/Tabs.js +42 -35
  252. package/tab/TabsContext.js +5 -4
  253. package/table/Table.js +20 -13
  254. package/table/TableBody.js +13 -7
  255. package/table/TableDataCell.js +14 -8
  256. package/table/TableHead.js +10 -8
  257. package/table/TableHeaderCell.js +14 -8
  258. package/table/TableRow.js +11 -10
  259. package/test/Test.js +4 -2
  260. package/tooltip/Tooltip.js +31 -21
  261. package/typography/Headlines.js +13 -6
  262. package/cjs/date-range-picker/DatePickerDefaultStyles.d.ts +0 -2
  263. package/cjs/date-range-picker/DatePickerDefaultStyles.js +0 -19
  264. package/cjs/date-range-picker/DatePickerDfdsStyles.d.ts +0 -2
  265. package/cjs/date-range-picker/DatePickerDfdsStyles.js +0 -11
  266. package/date-range-picker/DatePickerDefaultStyles.d.ts +0 -2
  267. package/date-range-picker/DatePickerDefaultStyles.js +0 -12
  268. package/date-range-picker/DatePickerDfdsStyles.d.ts +0 -2
  269. package/date-range-picker/DatePickerDfdsStyles.js +0 -4
@@ -4,33 +4,70 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _reactDates = require("react-dates");
7
+ var _reactDayPicker = require("react-day-picker");
8
8
  var _classnames = _interopRequireDefault(require("classnames"));
9
- var _moment = _interopRequireDefault(require("moment"));
10
9
  var _react = _interopRequireWildcard(require("react"));
11
- require("react-dates/initialize");
12
10
  var _react2 = require("@emotion/react");
13
11
  var _icons = require("@dfds-ui/icons");
14
12
  var _useMedia = _interopRequireDefault(require("../common/use-media"));
15
13
  var _miniMoize = require("../common/miniMoize");
16
- var _DatePickerDefaultStyles = _interopRequireDefault(require("./DatePickerDefaultStyles"));
17
- var _DatePickerDfdsStyles = _interopRequireDefault(require("./DatePickerDfdsStyles"));
14
+ var _DateRangePicker = require("./DateRangePicker.styles");
18
15
  var _LockBodyScroll = _interopRequireDefault(require("../common/LockBodyScroll"));
16
+ require("react-day-picker/dist/style.css");
17
+ var _jsxRuntime = require("@emotion/react/jsx-runtime");
19
18
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
20
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } /* eslint-disable @typescript-eslint/no-deprecated */ /* eslint-disable @typescript-eslint/restrict-plus-operands */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ // eslint-disable-next-line import/no-extraneous-dependencies
22
- // Do a wrapper to support styled components: https://github.com/airbnb/react-dates/issues/1030#issuecomment-388227454
20
+ // --- Date helpers (replace moment) ---
21
+
22
+ function toISOStr(d) {
23
+ if (!d) return null;
24
+ const y = d.getFullYear();
25
+ const m = String(d.getMonth() + 1).padStart(2, '0');
26
+ const day = String(d.getDate()).padStart(2, '0');
27
+ return `${y}-${m}-${day}`;
28
+ }
29
+ function toDate(s) {
30
+ if (!s) return null;
31
+ const [y, m, d] = s.split('-').map(Number);
32
+ return new Date(y, m - 1, d);
33
+ }
34
+ function formatDisplayDate(date, locale) {
35
+ const weekday = date.toLocaleDateString(locale || 'en', {
36
+ weekday: 'short'
37
+ });
38
+ const day = String(date.getDate()).padStart(2, '0');
39
+ const month = String(date.getMonth() + 1).padStart(2, '0');
40
+ return `${weekday} ${day}/${month}`;
41
+ }
42
+ function getWeekStart(locale) {
43
+ const sundayLocales = ['en', 'en-US', 'ja', 'ko', 'zh'];
44
+ const lang = locale.split('-')[0];
45
+ return sundayLocales.includes(locale) || sundayLocales.includes(lang) ? 0 : 1;
46
+ }
47
+ function buildMap(dates) {
48
+ const map = {};
49
+ if (!dates) return map;
50
+ for (const d of dates) {
51
+ map[d] = 1;
52
+ }
53
+ return map;
54
+ }
55
+
56
+ // --- Component ---
57
+
23
58
  const DateRangePicker = props => {
24
- const [startDate, setStartDate] = (0, _react.useState)(toMoment(props.startDates.initial));
25
- const [endDate, setEndDate] = (0, _react.useState)(toMoment(props.endDates.initial));
59
+ const [startDate, setStartDate] = (0, _react.useState)(toDate(props.startDates.initial));
60
+ const [endDate, setEndDate] = (0, _react.useState)(toDate(props.endDates.initial));
26
61
  const [showCalendar, setShowCalendar] = (0, _react.useState)(false);
27
62
  const [focusedInput, setFocusedInput] = (0, _react.useState)('startDate');
63
+ const [displayMonth, setDisplayMonth] = (0, _react.useState)(toDate(props.startDates.initial) || new Date());
64
+ const wrapperRef = (0, _react.useRef)(null);
28
65
  const {
29
66
  numberOfMonths,
30
67
  mobileState,
31
68
  size
32
69
  } = (0, _useMedia.default)(['(max-width: 64em)', '(min-width: 78.063em)'], [{
33
- numberOfMonths: props.numberOfMobileMonths || 12,
70
+ numberOfMonths: 1,
34
71
  mobileState: true,
35
72
  size: 40
36
73
  }, {
@@ -42,14 +79,26 @@ const DateRangePicker = props => {
42
79
  mobileState: false,
43
80
  size: 48
44
81
  });
45
- _moment.default.locale(props.locale);
46
- (0, _moment.default)().weekday(0);
47
82
  (0, _react.useEffect)(() => {
48
- setStartDate(toMoment(props.startDates.initial));
49
- setEndDate(toMoment(props.endDates.initial));
83
+ setStartDate(toDate(props.startDates.initial));
84
+ setEndDate(toDate(props.endDates.initial));
50
85
  }, [props.startDates.initial, props.endDates.initial]);
51
- const closeExceptionDivOut = (0, _react.useRef)(null);
52
- const closeExceptionImgOut = (0, _react.useRef)(null);
86
+
87
+ // Handle clicks outside the calendar to close it
88
+ const onDateChangeRef = (0, _react.useRef)(props.onDateChange);
89
+ onDateChangeRef.current = props.onDateChange;
90
+ (0, _react.useEffect)(() => {
91
+ if (!showCalendar) return;
92
+ const handleClickOutside = e => {
93
+ if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {
94
+ setShowCalendar(false);
95
+ setFocusedInput('startDate');
96
+ onDateChangeRef.current(toISOStr(startDate), toISOStr(endDate));
97
+ }
98
+ };
99
+ document.addEventListener('mousedown', handleClickOutside);
100
+ return () => document.removeEventListener('mousedown', handleClickOutside);
101
+ }, [showCalendar, startDate, endDate]);
53
102
  const startCalendarClicked = () => {
54
103
  setShowCalendar(prev => !prev);
55
104
  setFocusedInput('startDate');
@@ -58,206 +107,226 @@ const DateRangePicker = props => {
58
107
  setShowCalendar(prev => !prev);
59
108
  setFocusedInput('endDate');
60
109
  };
61
- const onOutsideClick = ({
62
- target
63
- }) => {
64
- if (target === closeExceptionDivOut.current || target === closeExceptionImgOut.current) {
65
- return;
66
- }
67
- setShowCalendar(false);
68
- setFocusedInput('startDate');
69
- props.onDateChange(getKeyStr(startDate), getKeyStr(endDate));
70
- };
71
- const renderCalendarInfo = () => props.infoLabel ? (0, _react2.jsx)("div", {
72
- className: "dateRangePickerInfo"
73
- }, (0, _react2.jsx)("span", {
74
- className: "dateRangePickerInfo__legend"
75
- }), (0, _react2.jsx)("p", {
76
- className: "dateRangePickerInfo__info"
77
- }, props.infoLabel)) : '';
78
- const disabledDates = (0, _miniMoize.miniMoize)((focusedInput, start, startDisabledDates, endDisabledDates) => buildMap(focusedInput !== 'endDate' ? startDisabledDates : (startDisabledDates || []).filter(d => d < start).concat(endDisabledDates)));
79
- const isDayBlocked = date => {
80
- const startDateStr = getKeyStr(startDate);
81
- const disabled = disabledDates(focusedInput, startDateStr, props.startDates.disabledDates, props.endDates.disabledDates);
82
- const dateN = getKeyStr(date);
83
- if (!dateN) {
84
- return false;
85
- }
110
+ const renderCalendarInfo = () => props.infoLabel ? (0, _jsxRuntime.jsxs)("div", {
111
+ className: "dateRangePickerInfo",
112
+ children: [(0, _jsxRuntime.jsx)("span", {
113
+ className: "dateRangePickerInfo__legend"
114
+ }), (0, _jsxRuntime.jsx)("p", {
115
+ className: "dateRangePickerInfo__info",
116
+ children: props.infoLabel
117
+ })]
118
+ }) : null;
119
+
120
+ // Memoized disabled dates map
121
+ const disabledDatesMap = (0, _miniMoize.miniMoize)((focusedInput, start, startDisabledDates, endDisabledDates) => buildMap(focusedInput !== 'endDate' ? startDisabledDates : (startDisabledDates || []).filter(d => d < (start || '')).concat(endDisabledDates || [])));
122
+ const isDayDisabled = (0, _react.useCallback)(date => {
123
+ const startDateStr = toISOStr(startDate);
124
+ const disabled = disabledDatesMap(focusedInput, startDateStr, props.startDates.disabledDates, props.endDates.disabledDates);
125
+ const dateStr = toISOStr(date);
126
+ if (!dateStr) return false;
86
127
  const d = focusedInput !== 'endDate' ? props.startDates : props.endDates;
87
128
  const min = props.startDates.minDate;
88
- if (disabled[dateN]) {
129
+ if (disabled[dateStr]) return true;
130
+ if (min && dateStr < min) return true;
131
+ if (d.maxDate && dateStr > d.maxDate) return true;
132
+ if (focusedInput === 'endDate' && startDateStr && startDateStr < dateStr && dateStr < props.endDates.minDate) {
89
133
  return true;
90
134
  }
91
- if (min && dateN && dateN < min) {
92
- return true;
135
+ return false;
136
+ }, [focusedInput, startDate, props.startDates, props.endDates, disabledDatesMap]);
137
+
138
+ // Memoized offer dates map
139
+ const offerDatesMap = (0, _miniMoize.miniMoize)((focusedInput, startOffers, endOffers) => buildMap(focusedInput !== 'endDate' ? startOffers : endOffers));
140
+ const isOfferDay = (0, _react.useCallback)(date => {
141
+ const map = offerDatesMap(focusedInput, props.startDates.offerDates, props.endDates.offerDates);
142
+ const dateStr = toISOStr(date);
143
+ return dateStr ? !!map[dateStr] : false;
144
+ }, [focusedInput, props.startDates.offerDates, props.endDates.offerDates, offerDatesMap]);
145
+ const defaultMonth = (0, _react.useMemo)(() => {
146
+ if (mobileState) {
147
+ return toDate(props.startDates.minDate) || new Date();
93
148
  }
94
- if (d.maxDate && dateN && dateN > d.maxDate) {
95
- return true;
149
+ return startDate || new Date();
150
+ // Only compute on mount / when mobile state changes
151
+ // eslint-disable-next-line react-hooks/exhaustive-deps
152
+ }, [mobileState]);
153
+ const handleMonthChange = (0, _react.useCallback)(month => {
154
+ if (month > displayMonth) {
155
+ props.onNextMonthClick?.();
156
+ } else {
157
+ props.onPrevMonthClick?.();
96
158
  }
97
- if (focusedInput === 'endDate' && startDateStr && startDateStr < dateN && dateN < props.endDates.minDate) {
98
- return true;
159
+ setDisplayMonth(month);
160
+ }, [displayMonth, props.onNextMonthClick, props.onPrevMonthClick]);
161
+ const handleDayClick = day => {
162
+ if (isDayDisabled(day)) return;
163
+ if (props.endDateDisabled) {
164
+ setStartDate(day);
165
+ setEndDate(day);
166
+ props.onDateChange(toISOStr(day), null);
167
+ setShowCalendar(false);
168
+ return;
169
+ }
170
+ if (focusedInput === 'startDate') {
171
+ setStartDate(day);
172
+ setEndDate(null);
173
+ setFocusedInput('endDate');
174
+ props.onDateChange(toISOStr(day), null);
175
+ } else {
176
+ setEndDate(day);
177
+ setFocusedInput('startDate');
178
+ setShowCalendar(false);
179
+ props.onDateChange(toISOStr(startDate), toISOStr(day));
99
180
  }
100
- return false;
101
- };
102
- const offerDates = (0, _miniMoize.miniMoize)((focusedInput, startOffers, endOffers) => buildMap(focusedInput !== 'endDate' ? startOffers : endOffers));
103
- const isOfferValid = date => {
104
- const map = offerDates(focusedInput, props.startDates.offerDates, props.endDates.offerDates);
105
- return map[getKeyStr(date)];
106
- };
107
- const minimumNights = () => {
108
- const start = toMoment(props.startDates.initial);
109
- const end = toMoment(props.endDates.minDate);
110
- return end && start ? end.diff(start, 'days') : 0;
111
181
  };
112
- const initialMonth = () => (mobileState ? toMoment(props.startDates.minDate) : startDate) || (0, _moment.default)();
113
- const sharedCustomProps = {
114
- hideKeyboardShortcutsPanel: true,
115
- navPrev: (0, _react2.jsx)(_icons.LeftLink, {
116
- "aria-label": "Previous Month"
117
- }),
118
- navNext: (0, _react2.jsx)(_icons.RightLink, {
119
- "aria-label": "Next Month"
182
+ const isSelected = (0, _react.useCallback)(date => {
183
+ const dateStr = toISOStr(date);
184
+ return dateStr === toISOStr(startDate) || dateStr === toISOStr(endDate);
185
+ }, [startDate, endDate]);
186
+ const isRangeMiddle = (0, _react.useCallback)(date => {
187
+ if (!startDate || !endDate) return false;
188
+ return date > startDate && date < endDate;
189
+ }, [startDate, endDate]);
190
+
191
+ // Custom DayContent that sets aria-label to the ISO date (for testability & a11y)
192
+ const DayContent = (0, _react.useMemo)(() => {
193
+ return function DayContentComponent({
194
+ date
195
+ }) {
196
+ return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
197
+ children: date.getDate()
198
+ });
199
+ };
200
+ }, []);
201
+ const formatters = (0, _react.useMemo)(() => ({
202
+ formatWeekdayName: date => date.toLocaleDateString(props.locale || 'en', {
203
+ weekday: 'short'
120
204
  }),
121
- weekDayFormat: 'ddd',
122
- daySize: size,
123
- monthFormat: 'MMMM YYYY',
124
- dayAriaLabelFormat: 'YYYY-MM-DD',
125
- transitionDuration: 100,
126
- numberOfMonths,
127
- onOutsideClick,
128
- isDayBlocked: d => isDayBlocked(d),
129
- isDayHighlighted: d => isOfferValid(d),
130
- initialVisibleMonth: initialMonth,
131
- renderCalendarInfo
132
- };
133
- return (0, _react2.jsx)(_LockBodyScroll.default, {
134
- enabled: mobileState && showCalendar
135
- }, (0, _react2.jsx)("div", {
136
- className: 'outer ' + props.className,
137
- css: /*#__PURE__*/(0, _react2.css)(_DatePickerDefaultStyles.default, ";", _DatePickerDfdsStyles.default, ";position:relative;" + (process.env.NODE_ENV === "production" ? "" : ";label:DateRangePicker;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRlLXJhbmdlLXBpY2tlci9EYXRlUmFuZ2VQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1LZ0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2RhdGUtcmFuZ2UtcGlja2VyL0RhdGVSYW5nZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZGVwcmVjYXRlZCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXBsdXMtb3BlcmFuZHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cbmltcG9ydCB7IERheVBpY2tlclJhbmdlQ29udHJvbGxlciwgRm9jdXNlZElucHV0U2hhcGUsIERheVBpY2tlclNpbmdsZURhdGVDb250cm9sbGVyIH0gZnJvbSAncmVhY3QtZGF0ZXMnXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IG1vbWVudCwgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgJ3JlYWN0LWRhdGVzL2luaXRpYWxpemUnXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCB7IENsb3NlLCBSaWdodExpbmssIExlZnRMaW5rLCBDYWxlbmRhck91dGJvdW5kLCBDYWxlbmRhclJldHVybiB9IGZyb20gJ0BkZmRzLXVpL2ljb25zJ1xuaW1wb3J0IHVzZU1lZGlhIGZyb20gJy4uL2NvbW1vbi91c2UtbWVkaWEnXG5pbXBvcnQgeyBtaW5pTW9pemUgfSBmcm9tICcuLi9jb21tb24vbWluaU1vaXplJ1xuaW1wb3J0IERhdGVQaWNrZXJEZWZhdWx0U3R5bGVzIGZyb20gJy4vRGF0ZVBpY2tlckRlZmF1bHRTdHlsZXMnXG5pbXBvcnQgRGF0ZVBpY2tlckRmZHNTdHlsZXMgZnJvbSAnLi9EYXRlUGlja2VyRGZkc1N0eWxlcydcbmltcG9ydCBMb2NrQm9keVNjcm9sbCBmcm9tICcuLi9jb21tb24vTG9ja0JvZHlTY3JvbGwnXG5pbnRlcmZhY2UgSURhdGVSYW5nZVBpY2tlclByb3BzIHtcbiAgZW5kRGF0ZURpc2FibGVkPzogYm9vbGVhblxuICB2YWxpZDogYm9vbGVhblxuICBvbkRhdGVDaGFuZ2U6IChkOiBzdHJpbmcgfCBudWxsLCByOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkXG4gIGZvcm1hdD86IHN0cmluZ1xuICBpbmZvTGFiZWw/OiBzdHJpbmdcbiAgc3RhcnREYXRlczogSURhdGVMZWdcbiAgZW5kRGF0ZXM6IElEYXRlTGVnXG4gIGxhYmVsczogSURhdGVSYW5nZVBpY2tlckxhYmVsc1xuICBvbk5leHRNb250aENsaWNrPzogKCkgPT4gdm9pZFxuICBvblByZXZNb250aENsaWNrPzogKCkgPT4gdm9pZFxuICBudW1iZXJPZk1vYmlsZU1vbnRocz86IG51bWJlclxuICBoaWRlSWNvbj86IGJvb2xlYW5cbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGxvY2FsZT86IHN0cmluZ1xufVxuaW50ZXJmYWNlIElEYXRlTGVnIHtcbiAgaW5pdGlhbDogc3RyaW5nIHwgbnVsbFxuICBtYXhEYXRlOiBzdHJpbmdcbiAgbWluRGF0ZTogc3RyaW5nXG4gIGRpc2FibGVkRGF0ZXM/OiBzdHJpbmdbXVxuICBvZmZlckRhdGVzPzogc3RyaW5nW11cbn1cbmludGVyZmFjZSBJRGF0ZVJhbmdlUGlja2VyTGFiZWxzIHtcbiAgc3RhcnQ6IHN0cmluZ1xuICBlbmQ6IHN0cmluZ1xuICBoZWFkZXI6IHN0cmluZ1xuICBpbmZvPzogc3RyaW5nXG59XG4vLyBEbyBhIHdyYXBwZXIgdG8gc3VwcG9ydCBzdHlsZWQgY29tcG9uZW50czogaHR0cHM6Ly9naXRodWIuY29tL2FpcmJuYi9yZWFjdC1kYXRlcy9pc3N1ZXMvMTAzMCNpc3N1ZWNvbW1lbnQtMzg4MjI3NDU0XG5jb25zdCBEYXRlUmFuZ2VQaWNrZXIgPSAocHJvcHM6IElEYXRlUmFuZ2VQaWNrZXJQcm9wcykgPT4ge1xuICBjb25zdCBbc3RhcnREYXRlLCBzZXRTdGFydERhdGVdID0gdXNlU3RhdGUodG9Nb21lbnQocHJvcHMuc3RhcnREYXRlcy5pbml0aWFsKSlcbiAgY29uc3QgW2VuZERhdGUsIHNldEVuZERhdGVdID0gdXNlU3RhdGUodG9Nb21lbnQocHJvcHMuZW5kRGF0ZXMuaW5pdGlhbCkpXG4gIGNvbnN0IFtzaG93Q2FsZW5kYXIsIHNldFNob3dDYWxlbmRhcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2ZvY3VzZWRJbnB1dCwgc2V0Rm9jdXNlZElucHV0XSA9IHVzZVN0YXRlKCdzdGFydERhdGUnIGFzIEZvY3VzZWRJbnB1dFNoYXBlKVxuICBjb25zdCB7IG51bWJlck9mTW9udGhzLCBtb2JpbGVTdGF0ZSwgc2l6ZSB9ID0gdXNlTWVkaWEoXG4gICAgWycobWF4LXdpZHRoOiA2NGVtKScsICcobWluLXdpZHRoOiA3OC4wNjNlbSknXSxcbiAgICBbXG4gICAgICB7IG51bWJlck9mTW9udGhzOiBwcm9wcy5udW1iZXJPZk1vYmlsZU1vbnRocyB8fCAxMiwgbW9iaWxlU3RhdGU6IHRydWUsIHNpemU6IDQwIH0sXG4gICAgICB7IG51bWJlck9mTW9udGhzOiAyLCBtb2JpbGVTdGF0ZTogZmFsc2UsIHNpemU6IDQ4IH0sXG4gICAgXSxcbiAgICB7IG51bWJlck9mTW9udGhzOiAxLCBtb2JpbGVTdGF0ZTogZmFsc2UsIHNpemU6IDQ4IH1cbiAgKVxuXG4gIG1vbWVudC5sb2NhbGUocHJvcHMubG9jYWxlKVxuICBtb21lbnQoKS53ZWVrZGF5KDApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTdGFydERhdGUodG9Nb21lbnQocHJvcHMuc3RhcnREYXRlcy5pbml0aWFsKSlcbiAgICBzZXRFbmREYXRlKHRvTW9tZW50KHByb3BzLmVuZERhdGVzLmluaXRpYWwpKVxuICB9LCBbcHJvcHMuc3RhcnREYXRlcy5pbml0aWFsLCBwcm9wcy5lbmREYXRlcy5pbml0aWFsXSlcbiAgY29uc3QgY2xvc2VFeGNlcHRpb25EaXZPdXQgPSB1c2VSZWYobnVsbClcbiAgY29uc3QgY2xvc2VFeGNlcHRpb25JbWdPdXQgPSB1c2VSZWYobnVsbClcbiAgY29uc3Qgc3RhcnRDYWxlbmRhckNsaWNrZWQgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0NhbGVuZGFyKChwcmV2KSA9PiAhcHJldilcbiAgICBzZXRGb2N1c2VkSW5wdXQoJ3N0YXJ0RGF0ZScpXG4gIH1cbiAgY29uc3QgZW5kQ2FsZW5kYXJDbGlja2VkID0gKCkgPT4ge1xuICAgIHNldFNob3dDYWxlbmRhcigocHJldikgPT4gIXByZXYpXG4gICAgc2V0Rm9jdXNlZElucHV0KCdlbmREYXRlJylcbiAgfVxuICBjb25zdCBvbk91dHNpZGVDbGljayA9ICh7IHRhcmdldCB9OiBhbnkpID0+IHtcbiAgICBpZiAodGFyZ2V0ID09PSBjbG9zZUV4Y2VwdGlvbkRpdk91dC5jdXJyZW50IHx8IHRhcmdldCA9PT0gY2xvc2VFeGNlcHRpb25JbWdPdXQuY3VycmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFNob3dDYWxlbmRhcihmYWxzZSlcbiAgICBzZXRGb2N1c2VkSW5wdXQoJ3N0YXJ0RGF0ZScpXG4gICAgcHJvcHMub25EYXRlQ2hhbmdlKGdldEtleVN0cihzdGFydERhdGUpLCBnZXRLZXlTdHIoZW5kRGF0ZSkpXG4gIH1cbiAgY29uc3QgcmVuZGVyQ2FsZW5kYXJJbmZvID0gKCkgPT5cbiAgICBwcm9wcy5pbmZvTGFiZWwgPyAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVSYW5nZVBpY2tlckluZm9cIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZGF0ZVJhbmdlUGlja2VySW5mb19fbGVnZW5kXCIgLz5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwiZGF0ZVJhbmdlUGlja2VySW5mb19faW5mb1wiPntwcm9wcy5pbmZvTGFiZWx9PC9wPlxuICAgICAgPC9kaXY+XG4gICAgKSA6IChcbiAgICAgICcnXG4gICAgKVxuICBjb25zdCBkaXNhYmxlZERhdGVzID0gbWluaU1vaXplKFxuICAgIChmb2N1c2VkSW5wdXQ6IHN0cmluZywgc3RhcnQ6IHN0cmluZywgc3RhcnREaXNhYmxlZERhdGVzOiBzdHJpbmdbXSwgZW5kRGlzYWJsZWREYXRlczogc3RyaW5nW10pID0+XG4gICAgICBidWlsZE1hcChcbiAgICAgICAgZm9jdXNlZElucHV0ICE9PSAnZW5kRGF0ZSdcbiAgICAgICAgICA/IHN0YXJ0RGlzYWJsZWREYXRlc1xuICAgICAgICAgIDogKHN0YXJ0RGlzYWJsZWREYXRlcyB8fCBbXSkuZmlsdGVyKChkKSA9PiBkIDwgc3RhcnQpLmNvbmNhdChlbmREaXNhYmxlZERhdGVzKVxuICAgICAgKVxuICApXG4gIGNvbnN0IGlzRGF5QmxvY2tlZCA9IChkYXRlOiBNb21lbnQpID0+IHtcbiAgICBjb25zdCBzdGFydERhdGVTdHIgPSBnZXRLZXlTdHIoc3RhcnREYXRlKVxuICAgIGNvbnN0IGRpc2FibGVkID0gZGlzYWJsZWREYXRlcyhcbiAgICAgIGZvY3VzZWRJbnB1dCxcbiAgICAgIHN0YXJ0RGF0ZVN0cixcbiAgICAgIHByb3BzLnN0YXJ0RGF0ZXMuZGlzYWJsZWREYXRlcyxcbiAgICAgIHByb3BzLmVuZERhdGVzLmRpc2FibGVkRGF0ZXNcbiAgICApXG4gICAgY29uc3QgZGF0ZU4gPSBnZXRLZXlTdHIoZGF0ZSlcbiAgICBpZiAoIWRhdGVOKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgY29uc3QgZCA9IGZvY3VzZWRJbnB1dCAhPT0gJ2VuZERhdGUnID8gcHJvcHMuc3RhcnREYXRlcyA6IHByb3BzLmVuZERhdGVzXG4gICAgY29uc3QgbWluID0gcHJvcHMuc3RhcnREYXRlcy5taW5EYXRlXG4gICAgaWYgKGRpc2FibGVkW2RhdGVOXSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgaWYgKG1pbiAmJiBkYXRlTiAmJiBkYXRlTiA8IG1pbikge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgaWYgKGQubWF4RGF0ZSAmJiBkYXRlTiAmJiBkYXRlTiA+IGQubWF4RGF0ZSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgaWYgKGZvY3VzZWRJbnB1dCA9PT0gJ2VuZERhdGUnICYmIHN0YXJ0RGF0ZVN0ciAmJiBzdGFydERhdGVTdHIgPCBkYXRlTiAmJiBkYXRlTiA8IHByb3BzLmVuZERhdGVzLm1pbkRhdGUpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IG9mZmVyRGF0ZXMgPSBtaW5pTW9pemUoKGZvY3VzZWRJbnB1dDogc3RyaW5nLCBzdGFydE9mZmVyczogc3RyaW5nW10sIGVuZE9mZmVyczogc3RyaW5nW10pID0+XG4gICAgYnVpbGRNYXAoZm9jdXNlZElucHV0ICE9PSAnZW5kRGF0ZScgPyBzdGFydE9mZmVycyA6IGVuZE9mZmVycylcbiAgKVxuICBjb25zdCBpc09mZmVyVmFsaWQgPSAoZGF0ZTogTW9tZW50KSA9PiB7XG4gICAgY29uc3QgbWFwID0gb2ZmZXJEYXRlcyhmb2N1c2VkSW5wdXQsIHByb3BzLnN0YXJ0RGF0ZXMub2ZmZXJEYXRlcywgcHJvcHMuZW5kRGF0ZXMub2ZmZXJEYXRlcylcbiAgICByZXR1cm4gbWFwW2dldEtleVN0cihkYXRlKSFdXG4gIH1cbiAgY29uc3QgbWluaW11bU5pZ2h0cyA9ICgpID0+IHtcbiAgICBjb25zdCBzdGFydCA9IHRvTW9tZW50KHByb3BzLnN0YXJ0RGF0ZXMuaW5pdGlhbClcbiAgICBjb25zdCBlbmQgPSB0b01vbWVudChwcm9wcy5lbmREYXRlcy5taW5EYXRlKVxuICAgIHJldHVybiBlbmQgJiYgc3RhcnQgPyBlbmQuZGlmZihzdGFydCwgJ2RheXMnKSA6IDBcbiAgfVxuICBjb25zdCBpbml0aWFsTW9udGggPSAoKSA9PiAobW9iaWxlU3RhdGUgPyB0b01vbWVudChwcm9wcy5zdGFydERhdGVzLm1pbkRhdGUpIDogc3RhcnREYXRlKSB8fCBtb21lbnQoKVxuICBjb25zdCBzaGFyZWRDdXN0b21Qcm9wcyA9IHtcbiAgICBoaWRlS2V5Ym9hcmRTaG9ydGN1dHNQYW5lbDogdHJ1ZSxcbiAgICBuYXZQcmV2OiA8TGVmdExpbmsgYXJpYS1sYWJlbD1cIlByZXZpb3VzIE1vbnRoXCIgLz4sXG4gICAgbmF2TmV4dDogPFJpZ2h0TGluayBhcmlhLWxhYmVsPVwiTmV4dCBNb250aFwiIC8+LFxuICAgIHdlZWtEYXlGb3JtYXQ6ICdkZGQnLFxuICAgIGRheVNpemU6IHNpemUsXG4gICAgbW9udGhGb3JtYXQ6ICdNTU1NIFlZWVknLFxuICAgIGRheUFyaWFMYWJlbEZvcm1hdDogJ1lZWVktTU0tREQnLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogMTAwLFxuICAgIG51bWJlck9mTW9udGhzLFxuICAgIG9uT3V0c2lkZUNsaWNrLFxuICAgIGlzRGF5QmxvY2tlZDogKGQ6IE1vbWVudCkgPT4gaXNEYXlCbG9ja2VkKGQpLFxuICAgIGlzRGF5SGlnaGxpZ2h0ZWQ6IChkOiBNb21lbnQpID0+IGlzT2ZmZXJWYWxpZChkKSxcbiAgICBpbml0aWFsVmlzaWJsZU1vbnRoOiBpbml0aWFsTW9udGgsXG4gICAgcmVuZGVyQ2FsZW5kYXJJbmZvLFxuICB9XG4gIHJldHVybiAoXG4gICAgPExvY2tCb2R5U2Nyb2xsIGVuYWJsZWQ9e21vYmlsZVN0YXRlICYmIHNob3dDYWxlbmRhcn0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17J291dGVyICcgKyBwcm9wcy5jbGFzc05hbWV9XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICR7RGF0ZVBpY2tlckRlZmF1bHRTdHlsZXN9O1xuICAgICAgICAgICR7RGF0ZVBpY2tlckRmZHNTdHlsZXN9O1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYH1cbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZXMoJ2RhdGVSYW5nZVBpY2tlcldyYXBwZXInLCB7ICdkYXRlUmFuZ2VQaWNrZXJXcmFwcGVyLS1hY3RpdmUnOiBzaG93Q2FsZW5kYXIgfSl9PlxuICAgICAgICAgIHttb2JpbGVTdGF0ZSAmJiBzaG93Q2FsZW5kYXIgJiYgKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cImRhdGVSYW5nZVBpY2tlcldyYXBwZXJfX3RpdGxlXCI+e3Byb3BzLmxhYmVscy5oZWFkZXJ9PC9oMj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZGF0ZVJhbmdlUGlja2VyV3JhcHBlcl9fY2xvc2VcIiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93Q2FsZW5kYXIoZmFsc2UpfT5cbiAgICAgICAgICAgICAgICA8Q2xvc2UgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoe1xuICAgICAgICAgICAgICBkYXRlcGlja2VyX2NvbnRhaW5lcjogdHJ1ZSxcbiAgICAgICAgICAgICAgZGF0ZXBpY2tlcl9vcGVuOiBzaG93Q2FsZW5kYXIsXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyh7XG4gICAgICAgICAgICAgICAgZGF0ZUlucHV0czogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19lcnJvckJvcmRlcjogIXByb3BzLnZhbGlkICYmICFzaG93Q2FsZW5kYXIsXG4gICAgICAgICAgICAgICAgZGF0ZUlucHV0c19fZm9jdXNfb3V0OiBmb2N1c2VkSW5wdXQgPT09ICdzdGFydERhdGUnICYmIHNob3dDYWxlbmRhcixcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19ub25mb2N1czogZm9jdXNlZElucHV0ID09PSAnZW5kRGF0ZScgJiYgc2hvd0NhbGVuZGFyLFxuICAgICAgICAgICAgICAgIGZyb21EYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGVJbnB1dHNfX2hpZGVJY29uOiBwcm9wcy5oaWRlSWNvbixcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3N0YXJ0Q2FsZW5kYXJDbGlja2VkfVxuICAgICAgICAgICAgICByZWY9e2Nsb3NlRXhjZXB0aW9uRGl2T3V0fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZGF0ZUlucHV0c19fbGFiZWxcIj57cHJvcHMubGFiZWxzLnN0YXJ0fTwvbGFiZWw+XG4gICAgICAgICAgICAgIHshcHJvcHMuaGlkZUljb24gJiYgPENhbGVuZGFyT3V0Ym91bmQgY2xhc3NOYW1lPVwiZGF0ZUlucHV0c19faWNvblwiIHJlZj17Y2xvc2VFeGNlcHRpb25JbWdPdXR9IC8+fVxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJkYXRlSW5wdXRzX19pbnB1dFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJmcm9tRGF0ZVwiXG4gICAgICAgICAgICAgICAgdmFsdWU9e3N0YXJ0RGF0ZSA/IHN0YXJ0RGF0ZS5mb3JtYXQoJ2RkZCBERC9NTScpIDogJyd9XG4gICAgICAgICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyh7XG4gICAgICAgICAgICAgIGRhdGVwaWNrZXJfY29udGFpbmVyOiB0cnVlLFxuICAgICAgICAgICAgICBkYXRlcGlja2VyX29wZW46IHNob3dDYWxlbmRhcixcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHtcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGVJbnB1dHNfX29uZVdheTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19kaXNhYmxlZDogcHJvcHMuZW5kRGF0ZURpc2FibGVkLFxuICAgICAgICAgICAgICAgICdkYXRlSW5wdXRzX19kaXNhYmxlZC0tYWN0aXZlJzogc2hvd0NhbGVuZGFyICYmIHByb3BzLmVuZERhdGVEaXNhYmxlZCxcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19lcnJvckJvcmRlcjogIXByb3BzLnZhbGlkICYmICFzaG93Q2FsZW5kYXIsXG4gICAgICAgICAgICAgICAgZGF0ZUlucHV0c19fbm9uZm9jdXM6IGZvY3VzZWRJbnB1dCA9PT0gJ3N0YXJ0RGF0ZScgJiYgc2hvd0NhbGVuZGFyICYmICFwcm9wcy5lbmREYXRlRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgZGF0ZUlucHV0c19fZm9jdXNfcmV0OiBmb2N1c2VkSW5wdXQgPT09ICdlbmREYXRlJyAmJiBzaG93Q2FsZW5kYXIsXG4gICAgICAgICAgICAgICAgZW5kRGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19oaWRlSWNvbjogcHJvcHMuaGlkZUljb24sXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtlbmRDYWxlbmRhckNsaWNrZWR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJkYXRlSW5wdXRzX19sYWJlbFwiPntwcm9wcy5sYWJlbHMuZW5kfTwvbGFiZWw+XG4gICAgICAgICAgICAgIHshcHJvcHMuaGlkZUljb24gJiYgPENhbGVuZGFyUmV0dXJuIGNsYXNzTmFtZT1cImRhdGVJbnB1dHNfX2ljb25cIiAvPn1cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZGF0ZUlucHV0c19faW5wdXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBuYW1lPVwidG9EYXRlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17ZW5kRGF0ZSA/IGVuZERhdGUuZm9ybWF0KCdkZGQgREQvTU0nKSA6ICcnfVxuICAgICAgICAgICAgICAgIHJlYWRPbmx5XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLmVuZERhdGVEaXNhYmxlZH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHtzaG93Q2FsZW5kYXIgJiYgIXByb3BzLmVuZERhdGVEaXNhYmxlZCAmJiAoXG4gICAgICAgICAgICA8RGF5UGlja2VyUmFuZ2VDb250cm9sbGVyXG4gICAgICAgICAgICAgIG9uTmV4dE1vbnRoQ2xpY2s9e3Byb3BzLm9uTmV4dE1vbnRoQ2xpY2t9XG4gICAgICAgICAgICAgIG9uUHJldk1vbnRoQ2xpY2s9e3Byb3BzLm9uUHJldk1vbnRoQ2xpY2t9XG4gICAgICAgICAgICAgIC8vIFJlcXVpcmVkIHByb3BzXG4gICAgICAgICAgICAgIG9uRGF0ZXNDaGFuZ2U9eyh7IHN0YXJ0RGF0ZSwgZW5kRGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0U3RhcnREYXRlKHN0YXJ0RGF0ZSlcbiAgICAgICAgICAgICAgICBzZXRFbmREYXRlKGVuZERhdGUpXG4gICAgICAgICAgICAgICAgcHJvcHMub25EYXRlQ2hhbmdlKGdldEtleVN0cihzdGFydERhdGUpLCBnZXRLZXlTdHIoZW5kRGF0ZSkpXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGZvY3VzZWRJbnB1dD17Zm9jdXNlZElucHV0fVxuICAgICAgICAgICAgICBzdGFydERhdGU9e3N0YXJ0RGF0ZX1cbiAgICAgICAgICAgICAgZW5kRGF0ZT17ZW5kRGF0ZX1cbiAgICAgICAgICAgICAgb25Gb2N1c0NoYW5nZT17KGZvY3VzZWRJbnB1dDogRm9jdXNlZElucHV0U2hhcGUgfCBudWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0Rm9jdXNlZElucHV0KGZvY3VzZWRJbnB1dCB8fCAnc3RhcnREYXRlJylcbiAgICAgICAgICAgICAgICBzZXRTaG93Q2FsZW5kYXIoISFmb2N1c2VkSW5wdXQpXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8vIFdlIHVzZSBwaHJhc2VzIHRvIGRpc2FibGUgZXh0cmEgc3R1ZmYgZnJvbSBhcmlhLWxhYmVsXG4gICAgICAgICAgICAgIHBocmFzZXM9e3sgY2hvb3NlQXZhaWxhYmxlU3RhcnREYXRlOiAoYTogYW55KSA9PiBhLmRhdGUsIGNob29zZUF2YWlsYWJsZUVuZERhdGU6IChhOiBhbnkpID0+IGEuZGF0ZSB9fVxuICAgICAgICAgICAgICBtaW5pbXVtTmlnaHRzPXttaW5pbXVtTmlnaHRzKCl9XG4gICAgICAgICAgICAgIG9yaWVudGF0aW9uPXttb2JpbGVTdGF0ZSA/ICd2ZXJ0aWNhbFNjcm9sbGFibGUnIDogJ2hvcml6b250YWwnfVxuICAgICAgICAgICAgICB7Li4uc2hhcmVkQ3VzdG9tUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3Nob3dDYWxlbmRhciAmJiBwcm9wcy5lbmREYXRlRGlzYWJsZWQgJiYgKFxuICAgICAgICAgICAgPERheVBpY2tlclNpbmdsZURhdGVDb250cm9sbGVyXG4gICAgICAgICAgICAgIC8vIFJlcXVpcmVkIHByb3BzXG4gICAgICAgICAgICAgIG9uRGF0ZUNoYW5nZT17KGRhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRTdGFydERhdGUoZGF0ZSlcbiAgICAgICAgICAgICAgICBzZXRFbmREYXRlKGRhdGUpXG4gICAgICAgICAgICAgICAgcHJvcHMub25EYXRlQ2hhbmdlKGdldEtleVN0cihkYXRlKSwgbnVsbClcbiAgICAgICAgICAgICAgICBzZXRTaG93Q2FsZW5kYXIoZmFsc2UpXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9uRm9jdXNDaGFuZ2U9eygpID0+IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgZm9jdXNlZFxuICAgICAgICAgICAgICBkYXRlPXtzdGFydERhdGV9XG4gICAgICAgICAgICAgIG9yaWVudGF0aW9uPXttb2JpbGVTdGF0ZSA/ICd2ZXJ0aWNhbFNjcm9sbGFibGUnIDogJ2hvcml6b250YWwnfVxuICAgICAgICAgICAgICB7Li4uc2hhcmVkQ3VzdG9tUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Mb2NrQm9keVNjcm9sbD5cbiAgKVxufVxuZnVuY3Rpb24gZ2V0S2V5U3RyKG06IE1vbWVudCB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcbiAgcmV0dXJuIG0gJiYgbS5mb3JtYXQoJ1lZWVktTU0tREQnKVxufVxuZnVuY3Rpb24gdG9Nb21lbnQobjogc3RyaW5nIHwgbnVsbCk6IE1vbWVudCB8IG51bGwge1xuICByZXR1cm4gbiA/IG1vbWVudChuLCAnWVlZWS1NTS1ERCcpIDogbnVsbFxufVxuZnVuY3Rpb24gYnVpbGRNYXAoZGF0ZXM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IG1hcDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9XG4gIGlmICghZGF0ZXMpIHtcbiAgICByZXR1cm4gbWFwXG4gIH1cbiAgZm9yIChjb25zdCBkIG9mIGRhdGVzKSB7XG4gICAgbWFwW2RdID0gMVxuICB9XG4gIHJldHVybiBtYXBcbn1cbmV4cG9ydCBkZWZhdWx0IERhdGVSYW5nZVBpY2tlclxuIl19 */")
138
- }, (0, _react2.jsx)("div", {
139
- className: (0, _classnames.default)('dateRangePickerWrapper', {
140
- 'dateRangePickerWrapper--active': showCalendar
141
- })
142
- }, mobileState && showCalendar && (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)("h2", {
143
- className: "dateRangePickerWrapper__title"
144
- }, props.labels.header), (0, _react2.jsx)("span", {
145
- className: "dateRangePickerWrapper__close",
146
- onClick: () => setShowCalendar(false)
147
- }, (0, _react2.jsx)(_icons.Close, null))), (0, _react2.jsx)("div", {
148
- className: (0, _classnames.default)({
149
- datepicker_container: true,
150
- datepicker_open: showCalendar
151
- })
152
- }, (0, _react2.jsx)("div", {
153
- className: (0, _classnames.default)({
154
- dateInputs: true,
155
- dateInputs__errorBorder: !props.valid && !showCalendar,
156
- dateInputs__focus_out: focusedInput === 'startDate' && showCalendar,
157
- dateInputs__nonfocus: focusedInput === 'endDate' && showCalendar,
158
- fromDate: true,
159
- dateInputs__hideIcon: props.hideIcon
205
+ formatCaption: date => date.toLocaleDateString(props.locale || 'en', {
206
+ month: 'long',
207
+ year: 'numeric'
160
208
  }),
161
- onClick: startCalendarClicked,
162
- ref: closeExceptionDivOut
163
- }, (0, _react2.jsx)("label", {
164
- className: "dateInputs__label"
165
- }, props.labels.start), !props.hideIcon && (0, _react2.jsx)(_icons.CalendarOutbound, {
166
- className: "dateInputs__icon",
167
- ref: closeExceptionImgOut
168
- }), (0, _react2.jsx)("input", {
169
- className: "dateInputs__input",
170
- type: "text",
171
- name: "fromDate",
172
- value: startDate ? startDate.format('ddd DD/MM') : '',
173
- readOnly: true
174
- }))), (0, _react2.jsx)("div", {
175
- className: (0, _classnames.default)({
176
- datepicker_container: true,
177
- datepicker_open: showCalendar
209
+ formatDay: date => String(date.getDate())
210
+ }), [props.locale]);
211
+ const daySizeCss = /*#__PURE__*/(0, _react2.css)("--rdp-cell-size:", size, "px;" + (process.env.NODE_ENV === "production" ? "" : ";label:daySizeCss;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRlLXJhbmdlLXBpY2tlci9EYXRlUmFuZ2VQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9Sd0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2RhdGUtcmFuZ2UtcGlja2VyL0RhdGVSYW5nZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXlQaWNrZXIgfSBmcm9tICdyZWFjdC1kYXktcGlja2VyJ1xuaW1wb3J0IHR5cGUgeyBEYXlDb250ZW50UHJvcHMgfSBmcm9tICdyZWFjdC1kYXktcGlja2VyJ1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCB7IENsb3NlLCBSaWdodExpbmssIExlZnRMaW5rLCBDYWxlbmRhck91dGJvdW5kLCBDYWxlbmRhclJldHVybiB9IGZyb20gJ0BkZmRzLXVpL2ljb25zJ1xuaW1wb3J0IHVzZU1lZGlhIGZyb20gJy4uL2NvbW1vbi91c2UtbWVkaWEnXG5pbXBvcnQgeyBtaW5pTW9pemUgfSBmcm9tICcuLi9jb21tb24vbWluaU1vaXplJ1xuaW1wb3J0IHsgZGF0ZVJhbmdlUGlja2VyRGZkc1N0eWxlcyB9IGZyb20gJy4vRGF0ZVJhbmdlUGlja2VyLnN0eWxlcydcbmltcG9ydCBMb2NrQm9keVNjcm9sbCBmcm9tICcuLi9jb21tb24vTG9ja0JvZHlTY3JvbGwnXG5cbmltcG9ydCAncmVhY3QtZGF5LXBpY2tlci9kaXN0L3N0eWxlLmNzcydcblxudHlwZSBGb2N1c2VkSW5wdXQgPSAnc3RhcnREYXRlJyB8ICdlbmREYXRlJ1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRlUmFuZ2VQaWNrZXJQcm9wcyB7XG4gIGVuZERhdGVEaXNhYmxlZD86IGJvb2xlYW5cbiAgdmFsaWQ6IGJvb2xlYW5cbiAgb25EYXRlQ2hhbmdlOiAoZDogc3RyaW5nIHwgbnVsbCwgcjogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZFxuICBmb3JtYXQ/OiBzdHJpbmdcbiAgaW5mb0xhYmVsPzogc3RyaW5nXG4gIHN0YXJ0RGF0ZXM6IElEYXRlTGVnXG4gIGVuZERhdGVzOiBJRGF0ZUxlZ1xuICBsYWJlbHM6IElEYXRlUmFuZ2VQaWNrZXJMYWJlbHNcbiAgb25OZXh0TW9udGhDbGljaz86ICgpID0+IHZvaWRcbiAgb25QcmV2TW9udGhDbGljaz86ICgpID0+IHZvaWRcbiAgbnVtYmVyT2ZNb2JpbGVNb250aHM/OiBudW1iZXJcbiAgaGlkZUljb24/OiBib29sZWFuXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBsb2NhbGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0ZUxlZyB7XG4gIGluaXRpYWw6IHN0cmluZyB8IG51bGxcbiAgbWF4RGF0ZTogc3RyaW5nXG4gIG1pbkRhdGU6IHN0cmluZ1xuICBkaXNhYmxlZERhdGVzPzogc3RyaW5nW11cbiAgb2ZmZXJEYXRlcz86IHN0cmluZ1tdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGVSYW5nZVBpY2tlckxhYmVscyB7XG4gIHN0YXJ0OiBzdHJpbmdcbiAgZW5kOiBzdHJpbmdcbiAgaGVhZGVyOiBzdHJpbmdcbiAgaW5mbz86IHN0cmluZ1xufVxuXG4vLyAtLS0gRGF0ZSBoZWxwZXJzIChyZXBsYWNlIG1vbWVudCkgLS0tXG5cbmZ1bmN0aW9uIHRvSVNPU3RyKGQ6IERhdGUgfCBudWxsKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICghZCkgcmV0dXJuIG51bGxcbiAgY29uc3QgeSA9IGQuZ2V0RnVsbFllYXIoKVxuICBjb25zdCBtID0gU3RyaW5nKGQuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJylcbiAgY29uc3QgZGF5ID0gU3RyaW5nKGQuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpXG4gIHJldHVybiBgJHt5fS0ke219LSR7ZGF5fWBcbn1cblxuZnVuY3Rpb24gdG9EYXRlKHM6IHN0cmluZyB8IG51bGwpOiBEYXRlIHwgbnVsbCB7XG4gIGlmICghcykgcmV0dXJuIG51bGxcbiAgY29uc3QgW3ksIG0sIGRdID0gcy5zcGxpdCgnLScpLm1hcChOdW1iZXIpXG4gIHJldHVybiBuZXcgRGF0ZSh5LCBtIC0gMSwgZClcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGlzcGxheURhdGUoZGF0ZTogRGF0ZSwgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgd2Vla2RheSA9IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSB8fCAnZW4nLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSlcbiAgY29uc3QgZGF5ID0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpXG4gIGNvbnN0IG1vbnRoID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJylcbiAgcmV0dXJuIGAke3dlZWtkYXl9ICR7ZGF5fS8ke21vbnRofWBcbn1cblxuZnVuY3Rpb24gZ2V0V2Vla1N0YXJ0KGxvY2FsZTogc3RyaW5nKTogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiB7XG4gIGNvbnN0IHN1bmRheUxvY2FsZXMgPSBbJ2VuJywgJ2VuLVVTJywgJ2phJywgJ2tvJywgJ3poJ11cbiAgY29uc3QgbGFuZyA9IGxvY2FsZS5zcGxpdCgnLScpWzBdXG4gIHJldHVybiBzdW5kYXlMb2NhbGVzLmluY2x1ZGVzKGxvY2FsZSkgfHwgc3VuZGF5TG9jYWxlcy5pbmNsdWRlcyhsYW5nKSA/IDAgOiAxXG59XG5cbmZ1bmN0aW9uIGJ1aWxkTWFwKGRhdGVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICBjb25zdCBtYXA6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fVxuICBpZiAoIWRhdGVzKSByZXR1cm4gbWFwXG4gIGZvciAoY29uc3QgZCBvZiBkYXRlcykge1xuICAgIG1hcFtkXSA9IDFcbiAgfVxuICByZXR1cm4gbWFwXG59XG5cbi8vIC0tLSBDb21wb25lbnQgLS0tXG5cbmNvbnN0IERhdGVSYW5nZVBpY2tlciA9IChwcm9wczogSURhdGVSYW5nZVBpY2tlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtzdGFydERhdGUsIHNldFN0YXJ0RGF0ZV0gPSB1c2VTdGF0ZSh0b0RhdGUocHJvcHMuc3RhcnREYXRlcy5pbml0aWFsKSlcbiAgY29uc3QgW2VuZERhdGUsIHNldEVuZERhdGVdID0gdXNlU3RhdGUodG9EYXRlKHByb3BzLmVuZERhdGVzLmluaXRpYWwpKVxuICBjb25zdCBbc2hvd0NhbGVuZGFyLCBzZXRTaG93Q2FsZW5kYXJdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtmb2N1c2VkSW5wdXQsIHNldEZvY3VzZWRJbnB1dF0gPSB1c2VTdGF0ZTxGb2N1c2VkSW5wdXQ+KCdzdGFydERhdGUnKVxuICBjb25zdCBbZGlzcGxheU1vbnRoLCBzZXREaXNwbGF5TW9udGhdID0gdXNlU3RhdGU8RGF0ZT4odG9EYXRlKHByb3BzLnN0YXJ0RGF0ZXMuaW5pdGlhbCkgfHwgbmV3IERhdGUoKSlcbiAgY29uc3Qgd3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICBjb25zdCB7IG51bWJlck9mTW9udGhzLCBtb2JpbGVTdGF0ZSwgc2l6ZSB9ID0gdXNlTWVkaWEoXG4gICAgWycobWF4LXdpZHRoOiA2NGVtKScsICcobWluLXdpZHRoOiA3OC4wNjNlbSknXSxcbiAgICBbXG4gICAgICB7IG51bWJlck9mTW9udGhzOiAxLCBtb2JpbGVTdGF0ZTogdHJ1ZSwgc2l6ZTogNDAgfSxcbiAgICAgIHsgbnVtYmVyT2ZNb250aHM6IDIsIG1vYmlsZVN0YXRlOiBmYWxzZSwgc2l6ZTogNDggfSxcbiAgICBdLFxuICAgIHsgbnVtYmVyT2ZNb250aHM6IDEsIG1vYmlsZVN0YXRlOiBmYWxzZSwgc2l6ZTogNDggfVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTdGFydERhdGUodG9EYXRlKHByb3BzLnN0YXJ0RGF0ZXMuaW5pdGlhbCkpXG4gICAgc2V0RW5kRGF0ZSh0b0RhdGUocHJvcHMuZW5kRGF0ZXMuaW5pdGlhbCkpXG4gIH0sIFtwcm9wcy5zdGFydERhdGVzLmluaXRpYWwsIHByb3BzLmVuZERhdGVzLmluaXRpYWxdKVxuXG4gIC8vIEhhbmRsZSBjbGlja3Mgb3V0c2lkZSB0aGUgY2FsZW5kYXIgdG8gY2xvc2UgaXRcbiAgY29uc3Qgb25EYXRlQ2hhbmdlUmVmID0gdXNlUmVmKHByb3BzLm9uRGF0ZUNoYW5nZSlcbiAgb25EYXRlQ2hhbmdlUmVmLmN1cnJlbnQgPSBwcm9wcy5vbkRhdGVDaGFuZ2VcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd0NhbGVuZGFyKSByZXR1cm5cbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHdyYXBwZXJSZWYuY3VycmVudCAmJiAhd3JhcHBlclJlZi5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgIHNldFNob3dDYWxlbmRhcihmYWxzZSlcbiAgICAgICAgc2V0Rm9jdXNlZElucHV0KCdzdGFydERhdGUnKVxuICAgICAgICBvbkRhdGVDaGFuZ2VSZWYuY3VycmVudCh0b0lTT1N0cihzdGFydERhdGUpLCB0b0lTT1N0cihlbmREYXRlKSlcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gIH0sIFtzaG93Q2FsZW5kYXIsIHN0YXJ0RGF0ZSwgZW5kRGF0ZV0pXG5cbiAgY29uc3Qgc3RhcnRDYWxlbmRhckNsaWNrZWQgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0NhbGVuZGFyKChwcmV2KSA9PiAhcHJldilcbiAgICBzZXRGb2N1c2VkSW5wdXQoJ3N0YXJ0RGF0ZScpXG4gIH1cblxuICBjb25zdCBlbmRDYWxlbmRhckNsaWNrZWQgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0NhbGVuZGFyKChwcmV2KSA9PiAhcHJldilcbiAgICBzZXRGb2N1c2VkSW5wdXQoJ2VuZERhdGUnKVxuICB9XG5cbiAgY29uc3QgcmVuZGVyQ2FsZW5kYXJJbmZvID0gKCkgPT5cbiAgICBwcm9wcy5pbmZvTGFiZWwgPyAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVSYW5nZVBpY2tlckluZm9cIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZGF0ZVJhbmdlUGlja2VySW5mb19fbGVnZW5kXCIgLz5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwiZGF0ZVJhbmdlUGlja2VySW5mb19faW5mb1wiPntwcm9wcy5pbmZvTGFiZWx9PC9wPlxuICAgICAgPC9kaXY+XG4gICAgKSA6IG51bGxcblxuICAvLyBNZW1vaXplZCBkaXNhYmxlZCBkYXRlcyBtYXBcbiAgY29uc3QgZGlzYWJsZWREYXRlc01hcCA9IG1pbmlNb2l6ZShcbiAgICAoXG4gICAgICBmb2N1c2VkSW5wdXQ6IHN0cmluZyxcbiAgICAgIHN0YXJ0OiBzdHJpbmcgfCBudWxsLFxuICAgICAgc3RhcnREaXNhYmxlZERhdGVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICAgIGVuZERpc2FibGVkRGF0ZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkXG4gICAgKSA9PlxuICAgICAgYnVpbGRNYXAoXG4gICAgICAgIGZvY3VzZWRJbnB1dCAhPT0gJ2VuZERhdGUnXG4gICAgICAgICAgPyBzdGFydERpc2FibGVkRGF0ZXNcbiAgICAgICAgICA6IChzdGFydERpc2FibGVkRGF0ZXMgfHwgW10pLmZpbHRlcigoZCkgPT4gZCA8IChzdGFydCB8fCAnJykpLmNvbmNhdChlbmREaXNhYmxlZERhdGVzIHx8IFtdKVxuICAgICAgKVxuICApXG5cbiAgY29uc3QgaXNEYXlEaXNhYmxlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRlOiBEYXRlKSA9PiB7XG4gICAgICBjb25zdCBzdGFydERhdGVTdHIgPSB0b0lTT1N0cihzdGFydERhdGUpXG4gICAgICBjb25zdCBkaXNhYmxlZCA9IGRpc2FibGVkRGF0ZXNNYXAoXG4gICAgICAgIGZvY3VzZWRJbnB1dCxcbiAgICAgICAgc3RhcnREYXRlU3RyLFxuICAgICAgICBwcm9wcy5zdGFydERhdGVzLmRpc2FibGVkRGF0ZXMsXG4gICAgICAgIHByb3BzLmVuZERhdGVzLmRpc2FibGVkRGF0ZXNcbiAgICAgIClcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSB0b0lTT1N0cihkYXRlKVxuICAgICAgaWYgKCFkYXRlU3RyKSByZXR1cm4gZmFsc2VcblxuICAgICAgY29uc3QgZCA9IGZvY3VzZWRJbnB1dCAhPT0gJ2VuZERhdGUnID8gcHJvcHMuc3RhcnREYXRlcyA6IHByb3BzLmVuZERhdGVzXG4gICAgICBjb25zdCBtaW4gPSBwcm9wcy5zdGFydERhdGVzLm1pbkRhdGVcbiAgICAgIGlmIChkaXNhYmxlZFtkYXRlU3RyXSkgcmV0dXJuIHRydWVcbiAgICAgIGlmIChtaW4gJiYgZGF0ZVN0ciA8IG1pbikgcmV0dXJuIHRydWVcbiAgICAgIGlmIChkLm1heERhdGUgJiYgZGF0ZVN0ciA+IGQubWF4RGF0ZSkgcmV0dXJuIHRydWVcbiAgICAgIGlmIChmb2N1c2VkSW5wdXQgPT09ICdlbmREYXRlJyAmJiBzdGFydERhdGVTdHIgJiYgc3RhcnREYXRlU3RyIDwgZGF0ZVN0ciAmJiBkYXRlU3RyIDwgcHJvcHMuZW5kRGF0ZXMubWluRGF0ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSxcbiAgICBbZm9jdXNlZElucHV0LCBzdGFydERhdGUsIHByb3BzLnN0YXJ0RGF0ZXMsIHByb3BzLmVuZERhdGVzLCBkaXNhYmxlZERhdGVzTWFwXVxuICApXG5cbiAgLy8gTWVtb2l6ZWQgb2ZmZXIgZGF0ZXMgbWFwXG4gIGNvbnN0IG9mZmVyRGF0ZXNNYXAgPSBtaW5pTW9pemUoXG4gICAgKGZvY3VzZWRJbnB1dDogc3RyaW5nLCBzdGFydE9mZmVyczogc3RyaW5nW10gfCB1bmRlZmluZWQsIGVuZE9mZmVyczogc3RyaW5nW10gfCB1bmRlZmluZWQpID0+XG4gICAgICBidWlsZE1hcChmb2N1c2VkSW5wdXQgIT09ICdlbmREYXRlJyA/IHN0YXJ0T2ZmZXJzIDogZW5kT2ZmZXJzKVxuICApXG5cbiAgY29uc3QgaXNPZmZlckRheSA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRlOiBEYXRlKSA9PiB7XG4gICAgICBjb25zdCBtYXAgPSBvZmZlckRhdGVzTWFwKGZvY3VzZWRJbnB1dCwgcHJvcHMuc3RhcnREYXRlcy5vZmZlckRhdGVzLCBwcm9wcy5lbmREYXRlcy5vZmZlckRhdGVzKVxuICAgICAgY29uc3QgZGF0ZVN0ciA9IHRvSVNPU3RyKGRhdGUpXG4gICAgICByZXR1cm4gZGF0ZVN0ciA/ICEhbWFwW2RhdGVTdHJdIDogZmFsc2VcbiAgICB9LFxuICAgIFtmb2N1c2VkSW5wdXQsIHByb3BzLnN0YXJ0RGF0ZXMub2ZmZXJEYXRlcywgcHJvcHMuZW5kRGF0ZXMub2ZmZXJEYXRlcywgb2ZmZXJEYXRlc01hcF1cbiAgKVxuXG4gIGNvbnN0IGRlZmF1bHRNb250aCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChtb2JpbGVTdGF0ZSkge1xuICAgICAgcmV0dXJuIHRvRGF0ZShwcm9wcy5zdGFydERhdGVzLm1pbkRhdGUpIHx8IG5ldyBEYXRlKClcbiAgICB9XG4gICAgcmV0dXJuIHN0YXJ0RGF0ZSB8fCBuZXcgRGF0ZSgpXG4gICAgLy8gT25seSBjb21wdXRlIG9uIG1vdW50IC8gd2hlbiBtb2JpbGUgc3RhdGUgY2hhbmdlc1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW21vYmlsZVN0YXRlXSlcblxuICBjb25zdCBoYW5kbGVNb250aENoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChtb250aDogRGF0ZSkgPT4ge1xuICAgICAgaWYgKG1vbnRoID4gZGlzcGxheU1vbnRoKSB7XG4gICAgICAgIHByb3BzLm9uTmV4dE1vbnRoQ2xpY2s/LigpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wcy5vblByZXZNb250aENsaWNrPy4oKVxuICAgICAgfVxuICAgICAgc2V0RGlzcGxheU1vbnRoKG1vbnRoKVxuICAgIH0sXG4gICAgW2Rpc3BsYXlNb250aCwgcHJvcHMub25OZXh0TW9udGhDbGljaywgcHJvcHMub25QcmV2TW9udGhDbGlja11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZURheUNsaWNrID0gKGRheTogRGF0ZSkgPT4ge1xuICAgIGlmIChpc0RheURpc2FibGVkKGRheSkpIHJldHVyblxuXG4gICAgaWYgKHByb3BzLmVuZERhdGVEaXNhYmxlZCkge1xuICAgICAgc2V0U3RhcnREYXRlKGRheSlcbiAgICAgIHNldEVuZERhdGUoZGF5KVxuICAgICAgcHJvcHMub25EYXRlQ2hhbmdlKHRvSVNPU3RyKGRheSksIG51bGwpXG4gICAgICBzZXRTaG93Q2FsZW5kYXIoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZm9jdXNlZElucHV0ID09PSAnc3RhcnREYXRlJykge1xuICAgICAgc2V0U3RhcnREYXRlKGRheSlcbiAgICAgIHNldEVuZERhdGUobnVsbClcbiAgICAgIHNldEZvY3VzZWRJbnB1dCgnZW5kRGF0ZScpXG4gICAgICBwcm9wcy5vbkRhdGVDaGFuZ2UodG9JU09TdHIoZGF5KSwgbnVsbClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RW5kRGF0ZShkYXkpXG4gICAgICBzZXRGb2N1c2VkSW5wdXQoJ3N0YXJ0RGF0ZScpXG4gICAgICBzZXRTaG93Q2FsZW5kYXIoZmFsc2UpXG4gICAgICBwcm9wcy5vbkRhdGVDaGFuZ2UodG9JU09TdHIoc3RhcnREYXRlKSwgdG9JU09TdHIoZGF5KSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBpc1NlbGVjdGVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGRhdGU6IERhdGUpID0+IHtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSB0b0lTT1N0cihkYXRlKVxuICAgICAgcmV0dXJuIGRhdGVTdHIgPT09IHRvSVNPU3RyKHN0YXJ0RGF0ZSkgfHwgZGF0ZVN0ciA9PT0gdG9JU09TdHIoZW5kRGF0ZSlcbiAgICB9LFxuICAgIFtzdGFydERhdGUsIGVuZERhdGVdXG4gIClcblxuICBjb25zdCBpc1JhbmdlTWlkZGxlID0gdXNlQ2FsbGJhY2soXG4gICAgKGRhdGU6IERhdGUpID0+IHtcbiAgICAgIGlmICghc3RhcnREYXRlIHx8ICFlbmREYXRlKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiBkYXRlID4gc3RhcnREYXRlICYmIGRhdGUgPCBlbmREYXRlXG4gICAgfSxcbiAgICBbc3RhcnREYXRlLCBlbmREYXRlXVxuICApXG5cbiAgLy8gQ3VzdG9tIERheUNvbnRlbnQgdGhhdCBzZXRzIGFyaWEtbGFiZWwgdG8gdGhlIElTTyBkYXRlIChmb3IgdGVzdGFiaWxpdHkgJiBhMTF5KVxuICBjb25zdCBEYXlDb250ZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIERheUNvbnRlbnRDb21wb25lbnQoeyBkYXRlIH06IERheUNvbnRlbnRQcm9wcykge1xuICAgICAgcmV0dXJuIDw+e2RhdGUuZ2V0RGF0ZSgpfTwvPlxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgZm9ybWF0dGVycyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGZvcm1hdFdlZWtkYXlOYW1lOiAoZGF0ZTogRGF0ZSkgPT4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcocHJvcHMubG9jYWxlIHx8ICdlbicsIHsgd2Vla2RheTogJ3Nob3J0JyB9KSxcbiAgICAgIGZvcm1hdENhcHRpb246IChkYXRlOiBEYXRlKSA9PiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhwcm9wcy5sb2NhbGUgfHwgJ2VuJywgeyBtb250aDogJ2xvbmcnLCB5ZWFyOiAnbnVtZXJpYycgfSksXG4gICAgICBmb3JtYXREYXk6IChkYXRlOiBEYXRlKSA9PiBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLFxuICAgIH0pLFxuICAgIFtwcm9wcy5sb2NhbGVdXG4gIClcblxuICBjb25zdCBkYXlTaXplQ3NzID0gY3NzYFxuICAgIC0tcmRwLWNlbGwtc2l6ZTogJHtzaXplfXB4O1xuICBgXG5cbiAgcmV0dXJuIChcbiAgICA8TG9ja0JvZHlTY3JvbGwgZW5hYmxlZD17bW9iaWxlU3RhdGUgJiYgc2hvd0NhbGVuZGFyfT5cbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXt3cmFwcGVyUmVmfVxuICAgICAgICBjbGFzc05hbWU9eydvdXRlciAnICsgKHByb3BzLmNsYXNzTmFtZSB8fCAnJyl9XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICR7ZGF0ZVJhbmdlUGlja2VyRGZkc1N0eWxlc307XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcygnZGF0ZVJhbmdlUGlja2VyV3JhcHBlcicsIHsgJ2RhdGVSYW5nZVBpY2tlcldyYXBwZXItLWFjdGl2ZSc6IHNob3dDYWxlbmRhciB9KX0+XG4gICAgICAgICAge21vYmlsZVN0YXRlICYmIHNob3dDYWxlbmRhciAmJiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwiZGF0ZVJhbmdlUGlja2VyV3JhcHBlcl9fdGl0bGVcIj57cHJvcHMubGFiZWxzLmhlYWRlcn08L2gyPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJkYXRlUmFuZ2VQaWNrZXJXcmFwcGVyX19jbG9zZVwiIG9uQ2xpY2s9eygpID0+IHNldFNob3dDYWxlbmRhcihmYWxzZSl9PlxuICAgICAgICAgICAgICAgIDxDbG9zZSAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyh7XG4gICAgICAgICAgICAgIGRhdGVwaWNrZXJfY29udGFpbmVyOiB0cnVlLFxuICAgICAgICAgICAgICBkYXRlcGlja2VyX29wZW46IHNob3dDYWxlbmRhcixcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHtcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGVJbnB1dHNfX2Vycm9yQm9yZGVyOiAhcHJvcHMudmFsaWQgJiYgIXNob3dDYWxlbmRhcixcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19mb2N1c19vdXQ6IGZvY3VzZWRJbnB1dCA9PT0gJ3N0YXJ0RGF0ZScgJiYgc2hvd0NhbGVuZGFyLFxuICAgICAgICAgICAgICAgIGRhdGVJbnB1dHNfX25vbmZvY3VzOiBmb2N1c2VkSW5wdXQgPT09ICdlbmREYXRlJyAmJiBzaG93Q2FsZW5kYXIsXG4gICAgICAgICAgICAgICAgZnJvbURhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGF0ZUlucHV0c19faGlkZUljb246IHByb3BzLmhpZGVJY29uLFxuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgb25DbGljaz17c3RhcnRDYWxlbmRhckNsaWNrZWR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJkYXRlSW5wdXRzX19sYWJlbFwiPntwcm9wcy5sYWJlbHMuc3RhcnR9PC9sYWJlbD5cbiAgICAgICAgICAgICAgeyFwcm9wcy5oaWRlSWNvbiAmJiA8Q2FsZW5kYXJPdXRib3VuZCBjbGFzc05hbWU9XCJkYXRlSW5wdXRzX19pY29uXCIgLz59XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRhdGVJbnB1dHNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImZyb21EYXRlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17c3RhcnREYXRlID8gZm9ybWF0RGlzcGxheURhdGUoc3RhcnREYXRlLCBwcm9wcy5sb2NhbGUpIDogJyd9XG4gICAgICAgICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyh7XG4gICAgICAgICAgICAgIGRhdGVwaWNrZXJfY29udGFpbmVyOiB0cnVlLFxuICAgICAgICAgICAgICBkYXRlcGlja2VyX29wZW46IHNob3dDYWxlbmRhcixcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHtcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGVJbnB1dHNfX29uZVdheTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19kaXNhYmxlZDogcHJvcHMuZW5kRGF0ZURpc2FibGVkLFxuICAgICAgICAgICAgICAgICdkYXRlSW5wdXRzX19kaXNhYmxlZC0tYWN0aXZlJzogc2hvd0NhbGVuZGFyICYmIHByb3BzLmVuZERhdGVEaXNhYmxlZCxcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19lcnJvckJvcmRlcjogIXByb3BzLnZhbGlkICYmICFzaG93Q2FsZW5kYXIsXG4gICAgICAgICAgICAgICAgZGF0ZUlucHV0c19fbm9uZm9jdXM6IGZvY3VzZWRJbnB1dCA9PT0gJ3N0YXJ0RGF0ZScgJiYgc2hvd0NhbGVuZGFyICYmICFwcm9wcy5lbmREYXRlRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgZGF0ZUlucHV0c19fZm9jdXNfcmV0OiBmb2N1c2VkSW5wdXQgPT09ICdlbmREYXRlJyAmJiBzaG93Q2FsZW5kYXIsXG4gICAgICAgICAgICAgICAgZW5kRGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19oaWRlSWNvbjogcHJvcHMuaGlkZUljb24sXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtlbmRDYWxlbmRhckNsaWNrZWR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJkYXRlSW5wdXRzX19sYWJlbFwiPntwcm9wcy5sYWJlbHMuZW5kfTwvbGFiZWw+XG4gICAgICAgICAgICAgIHshcHJvcHMuaGlkZUljb24gJiYgPENhbGVuZGFyUmV0dXJuIGNsYXNzTmFtZT1cImRhdGVJbnB1dHNfX2ljb25cIiAvPn1cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZGF0ZUlucHV0c19faW5wdXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBuYW1lPVwidG9EYXRlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17ZW5kRGF0ZSA/IGZvcm1hdERpc3BsYXlEYXRlKGVuZERhdGUsIHByb3BzLmxvY2FsZSkgOiAnJ31cbiAgICAgICAgICAgICAgICByZWFkT25seVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5lbmREYXRlRGlzYWJsZWR9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7c2hvd0NhbGVuZGFyICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxEYXlQaWNrZXJcbiAgICAgICAgICAgICAgICBjc3M9e2RheVNpemVDc3N9XG4gICAgICAgICAgICAgICAgbnVtYmVyT2ZNb250aHM9e251bWJlck9mTW9udGhzfVxuICAgICAgICAgICAgICAgIG1vbnRoPXtkaXNwbGF5TW9udGh9XG4gICAgICAgICAgICAgICAgZGVmYXVsdE1vbnRoPXtkZWZhdWx0TW9udGh9XG4gICAgICAgICAgICAgICAgb25Nb250aENoYW5nZT17aGFuZGxlTW9udGhDaGFuZ2V9XG4gICAgICAgICAgICAgICAgb25EYXlDbGljaz17aGFuZGxlRGF5Q2xpY2t9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGF5RGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgICAgICAgICAgSWNvbkxlZnQ6ICgpID0+IDxMZWZ0TGluayBhcmlhLWxhYmVsPVwiUHJldmlvdXMgTW9udGhcIiAvPixcbiAgICAgICAgICAgICAgICAgIEljb25SaWdodDogKCkgPT4gPFJpZ2h0TGluayBhcmlhLWxhYmVsPVwiTmV4dCBNb250aFwiIC8+LFxuICAgICAgICAgICAgICAgICAgRGF5Q29udGVudCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcnM9e2Zvcm1hdHRlcnN9XG4gICAgICAgICAgICAgICAgbW9kaWZpZXJzPXt7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgIHJhbmdlX3N0YXJ0OiAoZDogRGF0ZSkgPT4gdG9JU09TdHIoZCkgPT09IHRvSVNPU3RyKHN0YXJ0RGF0ZSksXG4gICAgICAgICAgICAgICAgICByYW5nZV9lbmQ6IChkOiBEYXRlKSA9PiAhcHJvcHMuZW5kRGF0ZURpc2FibGVkICYmIHRvSVNPU3RyKGQpID09PSB0b0lTT1N0cihlbmREYXRlKSxcbiAgICAgICAgICAgICAgICAgIHJhbmdlX21pZGRsZTogaXNSYW5nZU1pZGRsZSxcbiAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodGVkOiBpc09mZmVyRGF5LFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgbW9kaWZpZXJzQ2xhc3NOYW1lcz17e1xuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6ICdDYWxlbmRhckRheV9fc2VsZWN0ZWQnLFxuICAgICAgICAgICAgICAgICAgcmFuZ2Vfc3RhcnQ6ICdDYWxlbmRhckRheV9fc2VsZWN0ZWRfc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgcmFuZ2VfZW5kOiAnQ2FsZW5kYXJEYXlfX3NlbGVjdGVkX2VuZCcsXG4gICAgICAgICAgICAgICAgICByYW5nZV9taWRkbGU6ICdDYWxlbmRhckRheV9fc2VsZWN0ZWRfc3BhbicsXG4gICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZDogJ0NhbGVuZGFyRGF5X19oaWdobGlnaHRlZF9jYWxlbmRhcicsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBwYWdlZE5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICB3ZWVrU3RhcnRzT249e2dldFdlZWtTdGFydChwcm9wcy5sb2NhbGUgfHwgJ2VuJyl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIHtyZW5kZXJDYWxlbmRhckluZm8oKX1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Mb2NrQm9keVNjcm9sbD5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBEYXRlUmFuZ2VQaWNrZXJcbiJdfQ== */");
212
+ return (0, _jsxRuntime.jsx)(_LockBodyScroll.default, {
213
+ enabled: mobileState && showCalendar,
214
+ children: (0, _jsxRuntime.jsx)("div", {
215
+ ref: wrapperRef,
216
+ className: 'outer ' + (props.className || ''),
217
+ css: /*#__PURE__*/(0, _react2.css)(_DateRangePicker.dateRangePickerDfdsStyles, ";position:relative;" + (process.env.NODE_ENV === "production" ? "" : ";label:DateRangePicker;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRlLXJhbmdlLXBpY2tlci9EYXRlUmFuZ2VQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZSZ0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2RhdGUtcmFuZ2UtcGlja2VyL0RhdGVSYW5nZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXlQaWNrZXIgfSBmcm9tICdyZWFjdC1kYXktcGlja2VyJ1xuaW1wb3J0IHR5cGUgeyBEYXlDb250ZW50UHJvcHMgfSBmcm9tICdyZWFjdC1kYXktcGlja2VyJ1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCB7IENsb3NlLCBSaWdodExpbmssIExlZnRMaW5rLCBDYWxlbmRhck91dGJvdW5kLCBDYWxlbmRhclJldHVybiB9IGZyb20gJ0BkZmRzLXVpL2ljb25zJ1xuaW1wb3J0IHVzZU1lZGlhIGZyb20gJy4uL2NvbW1vbi91c2UtbWVkaWEnXG5pbXBvcnQgeyBtaW5pTW9pemUgfSBmcm9tICcuLi9jb21tb24vbWluaU1vaXplJ1xuaW1wb3J0IHsgZGF0ZVJhbmdlUGlja2VyRGZkc1N0eWxlcyB9IGZyb20gJy4vRGF0ZVJhbmdlUGlja2VyLnN0eWxlcydcbmltcG9ydCBMb2NrQm9keVNjcm9sbCBmcm9tICcuLi9jb21tb24vTG9ja0JvZHlTY3JvbGwnXG5cbmltcG9ydCAncmVhY3QtZGF5LXBpY2tlci9kaXN0L3N0eWxlLmNzcydcblxudHlwZSBGb2N1c2VkSW5wdXQgPSAnc3RhcnREYXRlJyB8ICdlbmREYXRlJ1xuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRlUmFuZ2VQaWNrZXJQcm9wcyB7XG4gIGVuZERhdGVEaXNhYmxlZD86IGJvb2xlYW5cbiAgdmFsaWQ6IGJvb2xlYW5cbiAgb25EYXRlQ2hhbmdlOiAoZDogc3RyaW5nIHwgbnVsbCwgcjogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZFxuICBmb3JtYXQ/OiBzdHJpbmdcbiAgaW5mb0xhYmVsPzogc3RyaW5nXG4gIHN0YXJ0RGF0ZXM6IElEYXRlTGVnXG4gIGVuZERhdGVzOiBJRGF0ZUxlZ1xuICBsYWJlbHM6IElEYXRlUmFuZ2VQaWNrZXJMYWJlbHNcbiAgb25OZXh0TW9udGhDbGljaz86ICgpID0+IHZvaWRcbiAgb25QcmV2TW9udGhDbGljaz86ICgpID0+IHZvaWRcbiAgbnVtYmVyT2ZNb2JpbGVNb250aHM/OiBudW1iZXJcbiAgaGlkZUljb24/OiBib29sZWFuXG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBsb2NhbGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0ZUxlZyB7XG4gIGluaXRpYWw6IHN0cmluZyB8IG51bGxcbiAgbWF4RGF0ZTogc3RyaW5nXG4gIG1pbkRhdGU6IHN0cmluZ1xuICBkaXNhYmxlZERhdGVzPzogc3RyaW5nW11cbiAgb2ZmZXJEYXRlcz86IHN0cmluZ1tdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURhdGVSYW5nZVBpY2tlckxhYmVscyB7XG4gIHN0YXJ0OiBzdHJpbmdcbiAgZW5kOiBzdHJpbmdcbiAgaGVhZGVyOiBzdHJpbmdcbiAgaW5mbz86IHN0cmluZ1xufVxuXG4vLyAtLS0gRGF0ZSBoZWxwZXJzIChyZXBsYWNlIG1vbWVudCkgLS0tXG5cbmZ1bmN0aW9uIHRvSVNPU3RyKGQ6IERhdGUgfCBudWxsKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICghZCkgcmV0dXJuIG51bGxcbiAgY29uc3QgeSA9IGQuZ2V0RnVsbFllYXIoKVxuICBjb25zdCBtID0gU3RyaW5nKGQuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJylcbiAgY29uc3QgZGF5ID0gU3RyaW5nKGQuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpXG4gIHJldHVybiBgJHt5fS0ke219LSR7ZGF5fWBcbn1cblxuZnVuY3Rpb24gdG9EYXRlKHM6IHN0cmluZyB8IG51bGwpOiBEYXRlIHwgbnVsbCB7XG4gIGlmICghcykgcmV0dXJuIG51bGxcbiAgY29uc3QgW3ksIG0sIGRdID0gcy5zcGxpdCgnLScpLm1hcChOdW1iZXIpXG4gIHJldHVybiBuZXcgRGF0ZSh5LCBtIC0gMSwgZClcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGlzcGxheURhdGUoZGF0ZTogRGF0ZSwgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgd2Vla2RheSA9IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSB8fCAnZW4nLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSlcbiAgY29uc3QgZGF5ID0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpXG4gIGNvbnN0IG1vbnRoID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJylcbiAgcmV0dXJuIGAke3dlZWtkYXl9ICR7ZGF5fS8ke21vbnRofWBcbn1cblxuZnVuY3Rpb24gZ2V0V2Vla1N0YXJ0KGxvY2FsZTogc3RyaW5nKTogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiB7XG4gIGNvbnN0IHN1bmRheUxvY2FsZXMgPSBbJ2VuJywgJ2VuLVVTJywgJ2phJywgJ2tvJywgJ3poJ11cbiAgY29uc3QgbGFuZyA9IGxvY2FsZS5zcGxpdCgnLScpWzBdXG4gIHJldHVybiBzdW5kYXlMb2NhbGVzLmluY2x1ZGVzKGxvY2FsZSkgfHwgc3VuZGF5TG9jYWxlcy5pbmNsdWRlcyhsYW5nKSA/IDAgOiAxXG59XG5cbmZ1bmN0aW9uIGJ1aWxkTWFwKGRhdGVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICBjb25zdCBtYXA6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fVxuICBpZiAoIWRhdGVzKSByZXR1cm4gbWFwXG4gIGZvciAoY29uc3QgZCBvZiBkYXRlcykge1xuICAgIG1hcFtkXSA9IDFcbiAgfVxuICByZXR1cm4gbWFwXG59XG5cbi8vIC0tLSBDb21wb25lbnQgLS0tXG5cbmNvbnN0IERhdGVSYW5nZVBpY2tlciA9IChwcm9wczogSURhdGVSYW5nZVBpY2tlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtzdGFydERhdGUsIHNldFN0YXJ0RGF0ZV0gPSB1c2VTdGF0ZSh0b0RhdGUocHJvcHMuc3RhcnREYXRlcy5pbml0aWFsKSlcbiAgY29uc3QgW2VuZERhdGUsIHNldEVuZERhdGVdID0gdXNlU3RhdGUodG9EYXRlKHByb3BzLmVuZERhdGVzLmluaXRpYWwpKVxuICBjb25zdCBbc2hvd0NhbGVuZGFyLCBzZXRTaG93Q2FsZW5kYXJdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtmb2N1c2VkSW5wdXQsIHNldEZvY3VzZWRJbnB1dF0gPSB1c2VTdGF0ZTxGb2N1c2VkSW5wdXQ+KCdzdGFydERhdGUnKVxuICBjb25zdCBbZGlzcGxheU1vbnRoLCBzZXREaXNwbGF5TW9udGhdID0gdXNlU3RhdGU8RGF0ZT4odG9EYXRlKHByb3BzLnN0YXJ0RGF0ZXMuaW5pdGlhbCkgfHwgbmV3IERhdGUoKSlcbiAgY29uc3Qgd3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICBjb25zdCB7IG51bWJlck9mTW9udGhzLCBtb2JpbGVTdGF0ZSwgc2l6ZSB9ID0gdXNlTWVkaWEoXG4gICAgWycobWF4LXdpZHRoOiA2NGVtKScsICcobWluLXdpZHRoOiA3OC4wNjNlbSknXSxcbiAgICBbXG4gICAgICB7IG51bWJlck9mTW9udGhzOiAxLCBtb2JpbGVTdGF0ZTogdHJ1ZSwgc2l6ZTogNDAgfSxcbiAgICAgIHsgbnVtYmVyT2ZNb250aHM6IDIsIG1vYmlsZVN0YXRlOiBmYWxzZSwgc2l6ZTogNDggfSxcbiAgICBdLFxuICAgIHsgbnVtYmVyT2ZNb250aHM6IDEsIG1vYmlsZVN0YXRlOiBmYWxzZSwgc2l6ZTogNDggfVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTdGFydERhdGUodG9EYXRlKHByb3BzLnN0YXJ0RGF0ZXMuaW5pdGlhbCkpXG4gICAgc2V0RW5kRGF0ZSh0b0RhdGUocHJvcHMuZW5kRGF0ZXMuaW5pdGlhbCkpXG4gIH0sIFtwcm9wcy5zdGFydERhdGVzLmluaXRpYWwsIHByb3BzLmVuZERhdGVzLmluaXRpYWxdKVxuXG4gIC8vIEhhbmRsZSBjbGlja3Mgb3V0c2lkZSB0aGUgY2FsZW5kYXIgdG8gY2xvc2UgaXRcbiAgY29uc3Qgb25EYXRlQ2hhbmdlUmVmID0gdXNlUmVmKHByb3BzLm9uRGF0ZUNoYW5nZSlcbiAgb25EYXRlQ2hhbmdlUmVmLmN1cnJlbnQgPSBwcm9wcy5vbkRhdGVDaGFuZ2VcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd0NhbGVuZGFyKSByZXR1cm5cbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKHdyYXBwZXJSZWYuY3VycmVudCAmJiAhd3JhcHBlclJlZi5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpKSB7XG4gICAgICAgIHNldFNob3dDYWxlbmRhcihmYWxzZSlcbiAgICAgICAgc2V0Rm9jdXNlZElucHV0KCdzdGFydERhdGUnKVxuICAgICAgICBvbkRhdGVDaGFuZ2VSZWYuY3VycmVudCh0b0lTT1N0cihzdGFydERhdGUpLCB0b0lTT1N0cihlbmREYXRlKSlcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gIH0sIFtzaG93Q2FsZW5kYXIsIHN0YXJ0RGF0ZSwgZW5kRGF0ZV0pXG5cbiAgY29uc3Qgc3RhcnRDYWxlbmRhckNsaWNrZWQgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0NhbGVuZGFyKChwcmV2KSA9PiAhcHJldilcbiAgICBzZXRGb2N1c2VkSW5wdXQoJ3N0YXJ0RGF0ZScpXG4gIH1cblxuICBjb25zdCBlbmRDYWxlbmRhckNsaWNrZWQgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0NhbGVuZGFyKChwcmV2KSA9PiAhcHJldilcbiAgICBzZXRGb2N1c2VkSW5wdXQoJ2VuZERhdGUnKVxuICB9XG5cbiAgY29uc3QgcmVuZGVyQ2FsZW5kYXJJbmZvID0gKCkgPT5cbiAgICBwcm9wcy5pbmZvTGFiZWwgPyAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImRhdGVSYW5nZVBpY2tlckluZm9cIj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZGF0ZVJhbmdlUGlja2VySW5mb19fbGVnZW5kXCIgLz5cbiAgICAgICAgPHAgY2xhc3NOYW1lPVwiZGF0ZVJhbmdlUGlja2VySW5mb19faW5mb1wiPntwcm9wcy5pbmZvTGFiZWx9PC9wPlxuICAgICAgPC9kaXY+XG4gICAgKSA6IG51bGxcblxuICAvLyBNZW1vaXplZCBkaXNhYmxlZCBkYXRlcyBtYXBcbiAgY29uc3QgZGlzYWJsZWREYXRlc01hcCA9IG1pbmlNb2l6ZShcbiAgICAoXG4gICAgICBmb2N1c2VkSW5wdXQ6IHN0cmluZyxcbiAgICAgIHN0YXJ0OiBzdHJpbmcgfCBudWxsLFxuICAgICAgc3RhcnREaXNhYmxlZERhdGVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICAgIGVuZERpc2FibGVkRGF0ZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkXG4gICAgKSA9PlxuICAgICAgYnVpbGRNYXAoXG4gICAgICAgIGZvY3VzZWRJbnB1dCAhPT0gJ2VuZERhdGUnXG4gICAgICAgICAgPyBzdGFydERpc2FibGVkRGF0ZXNcbiAgICAgICAgICA6IChzdGFydERpc2FibGVkRGF0ZXMgfHwgW10pLmZpbHRlcigoZCkgPT4gZCA8IChzdGFydCB8fCAnJykpLmNvbmNhdChlbmREaXNhYmxlZERhdGVzIHx8IFtdKVxuICAgICAgKVxuICApXG5cbiAgY29uc3QgaXNEYXlEaXNhYmxlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRlOiBEYXRlKSA9PiB7XG4gICAgICBjb25zdCBzdGFydERhdGVTdHIgPSB0b0lTT1N0cihzdGFydERhdGUpXG4gICAgICBjb25zdCBkaXNhYmxlZCA9IGRpc2FibGVkRGF0ZXNNYXAoXG4gICAgICAgIGZvY3VzZWRJbnB1dCxcbiAgICAgICAgc3RhcnREYXRlU3RyLFxuICAgICAgICBwcm9wcy5zdGFydERhdGVzLmRpc2FibGVkRGF0ZXMsXG4gICAgICAgIHByb3BzLmVuZERhdGVzLmRpc2FibGVkRGF0ZXNcbiAgICAgIClcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSB0b0lTT1N0cihkYXRlKVxuICAgICAgaWYgKCFkYXRlU3RyKSByZXR1cm4gZmFsc2VcblxuICAgICAgY29uc3QgZCA9IGZvY3VzZWRJbnB1dCAhPT0gJ2VuZERhdGUnID8gcHJvcHMuc3RhcnREYXRlcyA6IHByb3BzLmVuZERhdGVzXG4gICAgICBjb25zdCBtaW4gPSBwcm9wcy5zdGFydERhdGVzLm1pbkRhdGVcbiAgICAgIGlmIChkaXNhYmxlZFtkYXRlU3RyXSkgcmV0dXJuIHRydWVcbiAgICAgIGlmIChtaW4gJiYgZGF0ZVN0ciA8IG1pbikgcmV0dXJuIHRydWVcbiAgICAgIGlmIChkLm1heERhdGUgJiYgZGF0ZVN0ciA+IGQubWF4RGF0ZSkgcmV0dXJuIHRydWVcbiAgICAgIGlmIChmb2N1c2VkSW5wdXQgPT09ICdlbmREYXRlJyAmJiBzdGFydERhdGVTdHIgJiYgc3RhcnREYXRlU3RyIDwgZGF0ZVN0ciAmJiBkYXRlU3RyIDwgcHJvcHMuZW5kRGF0ZXMubWluRGF0ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSxcbiAgICBbZm9jdXNlZElucHV0LCBzdGFydERhdGUsIHByb3BzLnN0YXJ0RGF0ZXMsIHByb3BzLmVuZERhdGVzLCBkaXNhYmxlZERhdGVzTWFwXVxuICApXG5cbiAgLy8gTWVtb2l6ZWQgb2ZmZXIgZGF0ZXMgbWFwXG4gIGNvbnN0IG9mZmVyRGF0ZXNNYXAgPSBtaW5pTW9pemUoXG4gICAgKGZvY3VzZWRJbnB1dDogc3RyaW5nLCBzdGFydE9mZmVyczogc3RyaW5nW10gfCB1bmRlZmluZWQsIGVuZE9mZmVyczogc3RyaW5nW10gfCB1bmRlZmluZWQpID0+XG4gICAgICBidWlsZE1hcChmb2N1c2VkSW5wdXQgIT09ICdlbmREYXRlJyA/IHN0YXJ0T2ZmZXJzIDogZW5kT2ZmZXJzKVxuICApXG5cbiAgY29uc3QgaXNPZmZlckRheSA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRlOiBEYXRlKSA9PiB7XG4gICAgICBjb25zdCBtYXAgPSBvZmZlckRhdGVzTWFwKGZvY3VzZWRJbnB1dCwgcHJvcHMuc3RhcnREYXRlcy5vZmZlckRhdGVzLCBwcm9wcy5lbmREYXRlcy5vZmZlckRhdGVzKVxuICAgICAgY29uc3QgZGF0ZVN0ciA9IHRvSVNPU3RyKGRhdGUpXG4gICAgICByZXR1cm4gZGF0ZVN0ciA/ICEhbWFwW2RhdGVTdHJdIDogZmFsc2VcbiAgICB9LFxuICAgIFtmb2N1c2VkSW5wdXQsIHByb3BzLnN0YXJ0RGF0ZXMub2ZmZXJEYXRlcywgcHJvcHMuZW5kRGF0ZXMub2ZmZXJEYXRlcywgb2ZmZXJEYXRlc01hcF1cbiAgKVxuXG4gIGNvbnN0IGRlZmF1bHRNb250aCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChtb2JpbGVTdGF0ZSkge1xuICAgICAgcmV0dXJuIHRvRGF0ZShwcm9wcy5zdGFydERhdGVzLm1pbkRhdGUpIHx8IG5ldyBEYXRlKClcbiAgICB9XG4gICAgcmV0dXJuIHN0YXJ0RGF0ZSB8fCBuZXcgRGF0ZSgpXG4gICAgLy8gT25seSBjb21wdXRlIG9uIG1vdW50IC8gd2hlbiBtb2JpbGUgc3RhdGUgY2hhbmdlc1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW21vYmlsZVN0YXRlXSlcblxuICBjb25zdCBoYW5kbGVNb250aENoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChtb250aDogRGF0ZSkgPT4ge1xuICAgICAgaWYgKG1vbnRoID4gZGlzcGxheU1vbnRoKSB7XG4gICAgICAgIHByb3BzLm9uTmV4dE1vbnRoQ2xpY2s/LigpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wcy5vblByZXZNb250aENsaWNrPy4oKVxuICAgICAgfVxuICAgICAgc2V0RGlzcGxheU1vbnRoKG1vbnRoKVxuICAgIH0sXG4gICAgW2Rpc3BsYXlNb250aCwgcHJvcHMub25OZXh0TW9udGhDbGljaywgcHJvcHMub25QcmV2TW9udGhDbGlja11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZURheUNsaWNrID0gKGRheTogRGF0ZSkgPT4ge1xuICAgIGlmIChpc0RheURpc2FibGVkKGRheSkpIHJldHVyblxuXG4gICAgaWYgKHByb3BzLmVuZERhdGVEaXNhYmxlZCkge1xuICAgICAgc2V0U3RhcnREYXRlKGRheSlcbiAgICAgIHNldEVuZERhdGUoZGF5KVxuICAgICAgcHJvcHMub25EYXRlQ2hhbmdlKHRvSVNPU3RyKGRheSksIG51bGwpXG4gICAgICBzZXRTaG93Q2FsZW5kYXIoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZm9jdXNlZElucHV0ID09PSAnc3RhcnREYXRlJykge1xuICAgICAgc2V0U3RhcnREYXRlKGRheSlcbiAgICAgIHNldEVuZERhdGUobnVsbClcbiAgICAgIHNldEZvY3VzZWRJbnB1dCgnZW5kRGF0ZScpXG4gICAgICBwcm9wcy5vbkRhdGVDaGFuZ2UodG9JU09TdHIoZGF5KSwgbnVsbClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RW5kRGF0ZShkYXkpXG4gICAgICBzZXRGb2N1c2VkSW5wdXQoJ3N0YXJ0RGF0ZScpXG4gICAgICBzZXRTaG93Q2FsZW5kYXIoZmFsc2UpXG4gICAgICBwcm9wcy5vbkRhdGVDaGFuZ2UodG9JU09TdHIoc3RhcnREYXRlKSwgdG9JU09TdHIoZGF5KSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBpc1NlbGVjdGVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGRhdGU6IERhdGUpID0+IHtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSB0b0lTT1N0cihkYXRlKVxuICAgICAgcmV0dXJuIGRhdGVTdHIgPT09IHRvSVNPU3RyKHN0YXJ0RGF0ZSkgfHwgZGF0ZVN0ciA9PT0gdG9JU09TdHIoZW5kRGF0ZSlcbiAgICB9LFxuICAgIFtzdGFydERhdGUsIGVuZERhdGVdXG4gIClcblxuICBjb25zdCBpc1JhbmdlTWlkZGxlID0gdXNlQ2FsbGJhY2soXG4gICAgKGRhdGU6IERhdGUpID0+IHtcbiAgICAgIGlmICghc3RhcnREYXRlIHx8ICFlbmREYXRlKSByZXR1cm4gZmFsc2VcbiAgICAgIHJldHVybiBkYXRlID4gc3RhcnREYXRlICYmIGRhdGUgPCBlbmREYXRlXG4gICAgfSxcbiAgICBbc3RhcnREYXRlLCBlbmREYXRlXVxuICApXG5cbiAgLy8gQ3VzdG9tIERheUNvbnRlbnQgdGhhdCBzZXRzIGFyaWEtbGFiZWwgdG8gdGhlIElTTyBkYXRlIChmb3IgdGVzdGFiaWxpdHkgJiBhMTF5KVxuICBjb25zdCBEYXlDb250ZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIERheUNvbnRlbnRDb21wb25lbnQoeyBkYXRlIH06IERheUNvbnRlbnRQcm9wcykge1xuICAgICAgcmV0dXJuIDw+e2RhdGUuZ2V0RGF0ZSgpfTwvPlxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgZm9ybWF0dGVycyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGZvcm1hdFdlZWtkYXlOYW1lOiAoZGF0ZTogRGF0ZSkgPT4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcocHJvcHMubG9jYWxlIHx8ICdlbicsIHsgd2Vla2RheTogJ3Nob3J0JyB9KSxcbiAgICAgIGZvcm1hdENhcHRpb246IChkYXRlOiBEYXRlKSA9PiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhwcm9wcy5sb2NhbGUgfHwgJ2VuJywgeyBtb250aDogJ2xvbmcnLCB5ZWFyOiAnbnVtZXJpYycgfSksXG4gICAgICBmb3JtYXREYXk6IChkYXRlOiBEYXRlKSA9PiBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLFxuICAgIH0pLFxuICAgIFtwcm9wcy5sb2NhbGVdXG4gIClcblxuICBjb25zdCBkYXlTaXplQ3NzID0gY3NzYFxuICAgIC0tcmRwLWNlbGwtc2l6ZTogJHtzaXplfXB4O1xuICBgXG5cbiAgcmV0dXJuIChcbiAgICA8TG9ja0JvZHlTY3JvbGwgZW5hYmxlZD17bW9iaWxlU3RhdGUgJiYgc2hvd0NhbGVuZGFyfT5cbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXt3cmFwcGVyUmVmfVxuICAgICAgICBjbGFzc05hbWU9eydvdXRlciAnICsgKHByb3BzLmNsYXNzTmFtZSB8fCAnJyl9XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICR7ZGF0ZVJhbmdlUGlja2VyRGZkc1N0eWxlc307XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcygnZGF0ZVJhbmdlUGlja2VyV3JhcHBlcicsIHsgJ2RhdGVSYW5nZVBpY2tlcldyYXBwZXItLWFjdGl2ZSc6IHNob3dDYWxlbmRhciB9KX0+XG4gICAgICAgICAge21vYmlsZVN0YXRlICYmIHNob3dDYWxlbmRhciAmJiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwiZGF0ZVJhbmdlUGlja2VyV3JhcHBlcl9fdGl0bGVcIj57cHJvcHMubGFiZWxzLmhlYWRlcn08L2gyPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJkYXRlUmFuZ2VQaWNrZXJXcmFwcGVyX19jbG9zZVwiIG9uQ2xpY2s9eygpID0+IHNldFNob3dDYWxlbmRhcihmYWxzZSl9PlxuICAgICAgICAgICAgICAgIDxDbG9zZSAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyh7XG4gICAgICAgICAgICAgIGRhdGVwaWNrZXJfY29udGFpbmVyOiB0cnVlLFxuICAgICAgICAgICAgICBkYXRlcGlja2VyX29wZW46IHNob3dDYWxlbmRhcixcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHtcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGVJbnB1dHNfX2Vycm9yQm9yZGVyOiAhcHJvcHMudmFsaWQgJiYgIXNob3dDYWxlbmRhcixcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19mb2N1c19vdXQ6IGZvY3VzZWRJbnB1dCA9PT0gJ3N0YXJ0RGF0ZScgJiYgc2hvd0NhbGVuZGFyLFxuICAgICAgICAgICAgICAgIGRhdGVJbnB1dHNfX25vbmZvY3VzOiBmb2N1c2VkSW5wdXQgPT09ICdlbmREYXRlJyAmJiBzaG93Q2FsZW5kYXIsXG4gICAgICAgICAgICAgICAgZnJvbURhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZGF0ZUlucHV0c19faGlkZUljb246IHByb3BzLmhpZGVJY29uLFxuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgb25DbGljaz17c3RhcnRDYWxlbmRhckNsaWNrZWR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJkYXRlSW5wdXRzX19sYWJlbFwiPntwcm9wcy5sYWJlbHMuc3RhcnR9PC9sYWJlbD5cbiAgICAgICAgICAgICAgeyFwcm9wcy5oaWRlSWNvbiAmJiA8Q2FsZW5kYXJPdXRib3VuZCBjbGFzc05hbWU9XCJkYXRlSW5wdXRzX19pY29uXCIgLz59XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImRhdGVJbnB1dHNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImZyb21EYXRlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17c3RhcnREYXRlID8gZm9ybWF0RGlzcGxheURhdGUoc3RhcnREYXRlLCBwcm9wcy5sb2NhbGUpIDogJyd9XG4gICAgICAgICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyh7XG4gICAgICAgICAgICAgIGRhdGVwaWNrZXJfY29udGFpbmVyOiB0cnVlLFxuICAgICAgICAgICAgICBkYXRlcGlja2VyX29wZW46IHNob3dDYWxlbmRhcixcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHtcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGRhdGVJbnB1dHNfX29uZVdheTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19kaXNhYmxlZDogcHJvcHMuZW5kRGF0ZURpc2FibGVkLFxuICAgICAgICAgICAgICAgICdkYXRlSW5wdXRzX19kaXNhYmxlZC0tYWN0aXZlJzogc2hvd0NhbGVuZGFyICYmIHByb3BzLmVuZERhdGVEaXNhYmxlZCxcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19lcnJvckJvcmRlcjogIXByb3BzLnZhbGlkICYmICFzaG93Q2FsZW5kYXIsXG4gICAgICAgICAgICAgICAgZGF0ZUlucHV0c19fbm9uZm9jdXM6IGZvY3VzZWRJbnB1dCA9PT0gJ3N0YXJ0RGF0ZScgJiYgc2hvd0NhbGVuZGFyICYmICFwcm9wcy5lbmREYXRlRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgZGF0ZUlucHV0c19fZm9jdXNfcmV0OiBmb2N1c2VkSW5wdXQgPT09ICdlbmREYXRlJyAmJiBzaG93Q2FsZW5kYXIsXG4gICAgICAgICAgICAgICAgZW5kRGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRlSW5wdXRzX19oaWRlSWNvbjogcHJvcHMuaGlkZUljb24sXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtlbmRDYWxlbmRhckNsaWNrZWR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJkYXRlSW5wdXRzX19sYWJlbFwiPntwcm9wcy5sYWJlbHMuZW5kfTwvbGFiZWw+XG4gICAgICAgICAgICAgIHshcHJvcHMuaGlkZUljb24gJiYgPENhbGVuZGFyUmV0dXJuIGNsYXNzTmFtZT1cImRhdGVJbnB1dHNfX2ljb25cIiAvPn1cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZGF0ZUlucHV0c19faW5wdXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBuYW1lPVwidG9EYXRlXCJcbiAgICAgICAgICAgICAgICB2YWx1ZT17ZW5kRGF0ZSA/IGZvcm1hdERpc3BsYXlEYXRlKGVuZERhdGUsIHByb3BzLmxvY2FsZSkgOiAnJ31cbiAgICAgICAgICAgICAgICByZWFkT25seVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5lbmREYXRlRGlzYWJsZWR9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7c2hvd0NhbGVuZGFyICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxEYXlQaWNrZXJcbiAgICAgICAgICAgICAgICBjc3M9e2RheVNpemVDc3N9XG4gICAgICAgICAgICAgICAgbnVtYmVyT2ZNb250aHM9e251bWJlck9mTW9udGhzfVxuICAgICAgICAgICAgICAgIG1vbnRoPXtkaXNwbGF5TW9udGh9XG4gICAgICAgICAgICAgICAgZGVmYXVsdE1vbnRoPXtkZWZhdWx0TW9udGh9XG4gICAgICAgICAgICAgICAgb25Nb250aENoYW5nZT17aGFuZGxlTW9udGhDaGFuZ2V9XG4gICAgICAgICAgICAgICAgb25EYXlDbGljaz17aGFuZGxlRGF5Q2xpY2t9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGF5RGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgICAgICAgICAgSWNvbkxlZnQ6ICgpID0+IDxMZWZ0TGluayBhcmlhLWxhYmVsPVwiUHJldmlvdXMgTW9udGhcIiAvPixcbiAgICAgICAgICAgICAgICAgIEljb25SaWdodDogKCkgPT4gPFJpZ2h0TGluayBhcmlhLWxhYmVsPVwiTmV4dCBNb250aFwiIC8+LFxuICAgICAgICAgICAgICAgICAgRGF5Q29udGVudCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcnM9e2Zvcm1hdHRlcnN9XG4gICAgICAgICAgICAgICAgbW9kaWZpZXJzPXt7XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZDogaXNTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgIHJhbmdlX3N0YXJ0OiAoZDogRGF0ZSkgPT4gdG9JU09TdHIoZCkgPT09IHRvSVNPU3RyKHN0YXJ0RGF0ZSksXG4gICAgICAgICAgICAgICAgICByYW5nZV9lbmQ6IChkOiBEYXRlKSA9PiAhcHJvcHMuZW5kRGF0ZURpc2FibGVkICYmIHRvSVNPU3RyKGQpID09PSB0b0lTT1N0cihlbmREYXRlKSxcbiAgICAgICAgICAgICAgICAgIHJhbmdlX21pZGRsZTogaXNSYW5nZU1pZGRsZSxcbiAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodGVkOiBpc09mZmVyRGF5LFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgbW9kaWZpZXJzQ2xhc3NOYW1lcz17e1xuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6ICdDYWxlbmRhckRheV9fc2VsZWN0ZWQnLFxuICAgICAgICAgICAgICAgICAgcmFuZ2Vfc3RhcnQ6ICdDYWxlbmRhckRheV9fc2VsZWN0ZWRfc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgcmFuZ2VfZW5kOiAnQ2FsZW5kYXJEYXlfX3NlbGVjdGVkX2VuZCcsXG4gICAgICAgICAgICAgICAgICByYW5nZV9taWRkbGU6ICdDYWxlbmRhckRheV9fc2VsZWN0ZWRfc3BhbicsXG4gICAgICAgICAgICAgICAgICBoaWdobGlnaHRlZDogJ0NhbGVuZGFyRGF5X19oaWdobGlnaHRlZF9jYWxlbmRhcicsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBwYWdlZE5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICB3ZWVrU3RhcnRzT249e2dldFdlZWtTdGFydChwcm9wcy5sb2NhbGUgfHwgJ2VuJyl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIHtyZW5kZXJDYWxlbmRhckluZm8oKX1cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9Mb2NrQm9keVNjcm9sbD5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBEYXRlUmFuZ2VQaWNrZXJcbiJdfQ== */"),
218
+ children: (0, _jsxRuntime.jsxs)("div", {
219
+ className: (0, _classnames.default)('dateRangePickerWrapper', {
220
+ 'dateRangePickerWrapper--active': showCalendar
221
+ }),
222
+ children: [mobileState && showCalendar && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
223
+ children: [(0, _jsxRuntime.jsx)("h2", {
224
+ className: "dateRangePickerWrapper__title",
225
+ children: props.labels.header
226
+ }), (0, _jsxRuntime.jsx)("span", {
227
+ className: "dateRangePickerWrapper__close",
228
+ onClick: () => setShowCalendar(false),
229
+ children: (0, _jsxRuntime.jsx)(_icons.Close, {})
230
+ })]
231
+ }), (0, _jsxRuntime.jsx)("div", {
232
+ className: (0, _classnames.default)({
233
+ datepicker_container: true,
234
+ datepicker_open: showCalendar
235
+ }),
236
+ children: (0, _jsxRuntime.jsxs)("div", {
237
+ className: (0, _classnames.default)({
238
+ dateInputs: true,
239
+ dateInputs__errorBorder: !props.valid && !showCalendar,
240
+ dateInputs__focus_out: focusedInput === 'startDate' && showCalendar,
241
+ dateInputs__nonfocus: focusedInput === 'endDate' && showCalendar,
242
+ fromDate: true,
243
+ dateInputs__hideIcon: props.hideIcon
244
+ }),
245
+ onClick: startCalendarClicked,
246
+ children: [(0, _jsxRuntime.jsx)("label", {
247
+ className: "dateInputs__label",
248
+ children: props.labels.start
249
+ }), !props.hideIcon && (0, _jsxRuntime.jsx)(_icons.CalendarOutbound, {
250
+ className: "dateInputs__icon"
251
+ }), (0, _jsxRuntime.jsx)("input", {
252
+ className: "dateInputs__input",
253
+ type: "text",
254
+ name: "fromDate",
255
+ value: startDate ? formatDisplayDate(startDate, props.locale) : '',
256
+ readOnly: true
257
+ })]
258
+ })
259
+ }), (0, _jsxRuntime.jsx)("div", {
260
+ className: (0, _classnames.default)({
261
+ datepicker_container: true,
262
+ datepicker_open: showCalendar
263
+ }),
264
+ children: (0, _jsxRuntime.jsxs)("div", {
265
+ className: (0, _classnames.default)({
266
+ dateInputs: true,
267
+ dateInputs__oneWay: true,
268
+ dateInputs__disabled: props.endDateDisabled,
269
+ 'dateInputs__disabled--active': showCalendar && props.endDateDisabled,
270
+ dateInputs__errorBorder: !props.valid && !showCalendar,
271
+ dateInputs__nonfocus: focusedInput === 'startDate' && showCalendar && !props.endDateDisabled,
272
+ dateInputs__focus_ret: focusedInput === 'endDate' && showCalendar,
273
+ endDate: true,
274
+ dateInputs__hideIcon: props.hideIcon
275
+ }),
276
+ onClick: endCalendarClicked,
277
+ children: [(0, _jsxRuntime.jsx)("label", {
278
+ className: "dateInputs__label",
279
+ children: props.labels.end
280
+ }), !props.hideIcon && (0, _jsxRuntime.jsx)(_icons.CalendarReturn, {
281
+ className: "dateInputs__icon"
282
+ }), (0, _jsxRuntime.jsx)("input", {
283
+ className: "dateInputs__input",
284
+ type: "text",
285
+ name: "toDate",
286
+ value: endDate ? formatDisplayDate(endDate, props.locale) : '',
287
+ readOnly: true,
288
+ disabled: props.endDateDisabled
289
+ })]
290
+ })
291
+ }), showCalendar && (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
292
+ children: [(0, _jsxRuntime.jsx)(_reactDayPicker.DayPicker, {
293
+ css: daySizeCss,
294
+ numberOfMonths: numberOfMonths,
295
+ month: displayMonth,
296
+ defaultMonth: defaultMonth,
297
+ onMonthChange: handleMonthChange,
298
+ onDayClick: handleDayClick,
299
+ disabled: isDayDisabled,
300
+ components: {
301
+ IconLeft: () => (0, _jsxRuntime.jsx)(_icons.LeftLink, {
302
+ "aria-label": "Previous Month"
303
+ }),
304
+ IconRight: () => (0, _jsxRuntime.jsx)(_icons.RightLink, {
305
+ "aria-label": "Next Month"
306
+ }),
307
+ DayContent
308
+ },
309
+ formatters: formatters,
310
+ modifiers: {
311
+ selected: isSelected,
312
+ range_start: d => toISOStr(d) === toISOStr(startDate),
313
+ range_end: d => !props.endDateDisabled && toISOStr(d) === toISOStr(endDate),
314
+ range_middle: isRangeMiddle,
315
+ highlighted: isOfferDay
316
+ },
317
+ modifiersClassNames: {
318
+ selected: 'CalendarDay__selected',
319
+ range_start: 'CalendarDay__selected_start',
320
+ range_end: 'CalendarDay__selected_end',
321
+ range_middle: 'CalendarDay__selected_span',
322
+ highlighted: 'CalendarDay__highlighted_calendar'
323
+ },
324
+ pagedNavigation: true,
325
+ weekStartsOn: getWeekStart(props.locale || 'en')
326
+ }), renderCalendarInfo()]
327
+ })]
328
+ })
178
329
  })
179
- }, (0, _react2.jsx)("div", {
180
- className: (0, _classnames.default)({
181
- dateInputs: true,
182
- dateInputs__oneWay: true,
183
- dateInputs__disabled: props.endDateDisabled,
184
- 'dateInputs__disabled--active': showCalendar && props.endDateDisabled,
185
- dateInputs__errorBorder: !props.valid && !showCalendar,
186
- dateInputs__nonfocus: focusedInput === 'startDate' && showCalendar && !props.endDateDisabled,
187
- dateInputs__focus_ret: focusedInput === 'endDate' && showCalendar,
188
- endDate: true,
189
- dateInputs__hideIcon: props.hideIcon
190
- }),
191
- onClick: endCalendarClicked
192
- }, (0, _react2.jsx)("label", {
193
- className: "dateInputs__label"
194
- }, props.labels.end), !props.hideIcon && (0, _react2.jsx)(_icons.CalendarReturn, {
195
- className: "dateInputs__icon"
196
- }), (0, _react2.jsx)("input", {
197
- className: "dateInputs__input",
198
- type: "text",
199
- name: "toDate",
200
- value: endDate ? endDate.format('ddd DD/MM') : '',
201
- readOnly: true,
202
- disabled: props.endDateDisabled
203
- }))), showCalendar && !props.endDateDisabled && (0, _react2.jsx)(_reactDates.DayPickerRangeController, _extends({
204
- onNextMonthClick: props.onNextMonthClick,
205
- onPrevMonthClick: props.onPrevMonthClick
206
- // Required props
207
- ,
208
- onDatesChange: ({
209
- startDate,
210
- endDate
211
- }) => {
212
- setStartDate(startDate);
213
- setEndDate(endDate);
214
- props.onDateChange(getKeyStr(startDate), getKeyStr(endDate));
215
- },
216
- focusedInput: focusedInput,
217
- startDate: startDate,
218
- endDate: endDate,
219
- onFocusChange: focusedInput => {
220
- setFocusedInput(focusedInput || 'startDate');
221
- setShowCalendar(!!focusedInput);
222
- }
223
- // We use phrases to disable extra stuff from aria-label
224
- ,
225
- phrases: {
226
- chooseAvailableStartDate: a => a.date,
227
- chooseAvailableEndDate: a => a.date
228
- },
229
- minimumNights: minimumNights(),
230
- orientation: mobileState ? 'verticalScrollable' : 'horizontal'
231
- }, sharedCustomProps)), showCalendar && props.endDateDisabled && (0, _react2.jsx)(_reactDates.DayPickerSingleDateController
232
- // Required props
233
- , _extends({
234
- onDateChange: date => {
235
- setStartDate(date);
236
- setEndDate(date);
237
- props.onDateChange(getKeyStr(date), null);
238
- setShowCalendar(false);
239
- },
240
- onFocusChange: () => undefined,
241
- focused: true,
242
- date: startDate,
243
- orientation: mobileState ? 'verticalScrollable' : 'horizontal'
244
- }, sharedCustomProps)))));
330
+ });
245
331
  };
246
- function getKeyStr(m) {
247
- return m && m.format('YYYY-MM-DD');
248
- }
249
- function toMoment(n) {
250
- return n ? (0, _moment.default)(n, 'YYYY-MM-DD') : null;
251
- }
252
- function buildMap(dates) {
253
- const map = {};
254
- if (!dates) {
255
- return map;
256
- }
257
- for (const d of dates) {
258
- map[d] = 1;
259
- }
260
- return map;
261
- }
262
- var _default = DateRangePicker;
263
- exports.default = _default;
332
+ var _default = exports.default = DateRangePicker;