@hitachivantara/uikit-react-core 5.10.0 → 5.12.0

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 (92) hide show
  1. package/dist/cjs/components/ActionsGeneric/ActionsGeneric.cjs.map +1 -1
  2. package/dist/cjs/components/BaseInput/BaseInput.cjs +18 -1
  3. package/dist/cjs/components/BaseInput/BaseInput.cjs.map +1 -1
  4. package/dist/cjs/components/BreadCrumb/BreadCrumb.cjs +3 -3
  5. package/dist/cjs/components/BreadCrumb/BreadCrumb.cjs.map +1 -1
  6. package/dist/cjs/components/BreadCrumb/Page/Page.cjs +22 -12
  7. package/dist/cjs/components/BreadCrumb/Page/Page.cjs.map +1 -1
  8. package/dist/cjs/components/BreadCrumb/Page/Page.styles.cjs +19 -44
  9. package/dist/cjs/components/BreadCrumb/Page/Page.styles.cjs.map +1 -1
  10. package/dist/cjs/components/Calendar/Calendar.cjs +4 -0
  11. package/dist/cjs/components/Calendar/Calendar.cjs.map +1 -1
  12. package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.cjs +3 -3
  13. package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.cjs.map +1 -1
  14. package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.styles.cjs +23 -16
  15. package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.styles.cjs.map +1 -1
  16. package/dist/cjs/components/Calendar/SingleCalendar/CalendarCell.cjs +5 -17
  17. package/dist/cjs/components/Calendar/SingleCalendar/CalendarCell.cjs.map +1 -1
  18. package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.cjs +3 -1
  19. package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.cjs.map +1 -1
  20. package/dist/cjs/components/Calendar/utils.cjs +0 -8
  21. package/dist/cjs/components/Calendar/utils.cjs.map +1 -1
  22. package/dist/cjs/components/DatePicker/DatePicker.cjs +5 -3
  23. package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
  24. package/dist/cjs/components/DropDownMenu/DropDownMenu.cjs +4 -3
  25. package/dist/cjs/components/DropDownMenu/DropDownMenu.cjs.map +1 -1
  26. package/dist/cjs/components/FileUploader/DropZone/DropZone.cjs +5 -4
  27. package/dist/cjs/components/FileUploader/DropZone/DropZone.cjs.map +1 -1
  28. package/dist/cjs/components/FilterGroup/Counter/Counter.cjs +1 -2
  29. package/dist/cjs/components/FilterGroup/Counter/Counter.cjs.map +1 -1
  30. package/dist/cjs/components/Pagination/Pagination.styles.cjs +10 -14
  31. package/dist/cjs/components/Pagination/Pagination.styles.cjs.map +1 -1
  32. package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
  33. package/dist/cjs/components/Tooltip/Tooltip.styles.cjs +23 -37
  34. package/dist/cjs/components/Tooltip/Tooltip.styles.cjs.map +1 -1
  35. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs +7 -0
  36. package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
  37. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs +2 -1
  38. package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs.map +1 -1
  39. package/dist/cjs/components/VerticalNavigation/VerticalNavigationContext.cjs.map +1 -1
  40. package/dist/cjs/hooks/useUniqueId.cjs +1 -1
  41. package/dist/cjs/hooks/useUniqueId.cjs.map +1 -1
  42. package/dist/cjs/index.cjs +0 -2
  43. package/dist/cjs/index.cjs.map +1 -1
  44. package/dist/esm/components/ActionsGeneric/ActionsGeneric.js.map +1 -1
  45. package/dist/esm/components/BaseInput/BaseInput.js +18 -1
  46. package/dist/esm/components/BaseInput/BaseInput.js.map +1 -1
  47. package/dist/esm/components/BreadCrumb/BreadCrumb.js +3 -3
  48. package/dist/esm/components/BreadCrumb/BreadCrumb.js.map +1 -1
  49. package/dist/esm/components/BreadCrumb/Page/Page.js +23 -13
  50. package/dist/esm/components/BreadCrumb/Page/Page.js.map +1 -1
  51. package/dist/esm/components/BreadCrumb/Page/Page.styles.js +19 -42
  52. package/dist/esm/components/BreadCrumb/Page/Page.styles.js.map +1 -1
  53. package/dist/esm/components/Calendar/Calendar.js +4 -0
  54. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  55. package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.js +4 -4
  56. package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
  57. package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.styles.js +24 -17
  58. package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.styles.js.map +1 -1
  59. package/dist/esm/components/Calendar/SingleCalendar/CalendarCell.js +6 -18
  60. package/dist/esm/components/Calendar/SingleCalendar/CalendarCell.js.map +1 -1
  61. package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.js +3 -1
  62. package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.js.map +1 -1
  63. package/dist/esm/components/Calendar/utils.js +1 -9
  64. package/dist/esm/components/Calendar/utils.js.map +1 -1
  65. package/dist/esm/components/DatePicker/DatePicker.js +5 -3
  66. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  67. package/dist/esm/components/DropDownMenu/DropDownMenu.js +4 -3
  68. package/dist/esm/components/DropDownMenu/DropDownMenu.js.map +1 -1
  69. package/dist/esm/components/FileUploader/DropZone/DropZone.js +5 -4
  70. package/dist/esm/components/FileUploader/DropZone/DropZone.js.map +1 -1
  71. package/dist/esm/components/FilterGroup/Counter/Counter.js +1 -2
  72. package/dist/esm/components/FilterGroup/Counter/Counter.js.map +1 -1
  73. package/dist/esm/components/Pagination/Pagination.styles.js +10 -14
  74. package/dist/esm/components/Pagination/Pagination.styles.js.map +1 -1
  75. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  76. package/dist/esm/components/Tooltip/Tooltip.styles.js +24 -38
  77. package/dist/esm/components/Tooltip/Tooltip.styles.js.map +1 -1
  78. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js +7 -0
  79. package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
  80. package/dist/esm/components/VerticalNavigation/VerticalNavigation.js +2 -1
  81. package/dist/esm/components/VerticalNavigation/VerticalNavigation.js.map +1 -1
  82. package/dist/esm/components/VerticalNavigation/VerticalNavigationContext.js.map +1 -1
  83. package/dist/esm/hooks/useUniqueId.js +2 -2
  84. package/dist/esm/hooks/useUniqueId.js.map +1 -1
  85. package/dist/esm/index.js +0 -2
  86. package/dist/esm/index.js.map +1 -1
  87. package/dist/types/index.d.ts +40 -44
  88. package/package.json +2 -2
  89. package/dist/cjs/hocs/withId.cjs +0 -31
  90. package/dist/cjs/hocs/withId.cjs.map +0 -1
  91. package/dist/esm/hocs/withId.js +0 -28
  92. package/dist/esm/hocs/withId.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/components/Calendar/utils.tsx"],"sourcesContent":["import dayjs from \"dayjs\";\nimport isNil from \"lodash/isNil\";\nimport capitalize from \"lodash/capitalize\";\nimport { DateRangeProp } from \".\";\n\n/**\n * Constant with the number of weeks to be displayed on the calendar.\n */\nexport const CALENDAR_WEEKS = 6;\n\n/**\n * Constant with the default locale that should be used as the default.\n */\nexport const DEFAULT_LOCALE = \"en\";\n\n/**\n * Pads a string value with leading zeroes(0) until length is reached.\n *\n * @param value - Value to be padded.\n * @param length - Length of the value after the padding is added.\n * @returns The value as a string with the received amount of padding.\n *\n * @example zeroPad(5, 2) => \"05\"\n */\nexport const zeroPad = (value: number, length: number) =>\n `${value}`.padStart(length, \"0\");\n\n/**\n * Returns the number of days in the month given a month and year.\n *\n * @param month - Number of the month (1 to 12).\n * @param year - Number of the year.\n * @returns The number of days in a month for the received year.\n */\nexport const getMonthDays = (month: number, year: number) =>\n new Date(year, month, 0).getDate();\n\n/**\n * Gets the week day of the first day of a given month and year.\n * From 0 (Sunday) to 6 (Saturday).\n *\n * @param month - Number of the month (1 to 12).\n * @param year - Number of the year.\n * @returns The zero indexed week day where 0 is Sunday (0 to 6).\n */\nexport const getMonthFirstWeekday = (month: number, year: number) =>\n new Date(year, month - 1, 1).getDay();\n\n/**\n * Creates a `Date` instance in UTC timezone.\n *\n * @param year - The year of the date.\n * @param monthIndex - The zero indexed month of the year (0 to 11).\n * @param day - The day of the month.\n * @param [hour=1] - The hour of the day.\n * @returns A `Date` instance in UTC timezone.\n */\nexport const makeUTCDate = (\n year: number,\n monthIndex: number,\n day: number,\n hour = 1\n) => new Date(Date.UTC(year, monthIndex, day, hour));\n\n/**\n * Checks if the received date is a valid date.\n *\n * @param date - The date to be validated.\n * @returns A flag stating if the date is valid or not.\n */\nexport const isDate = (date: any): date is Date =>\n Object.prototype.toString.call(date) === \"[object Date]\" &&\n !Number.isNaN(date.valueOf());\n\nexport const isDateRangeProp = (date: any): date is DateRangeProp =>\n \"startDate\" in date;\n\n/**\n * Checks if two dates are in the same month and year.\n *\n * @param date1 - First date.\n * @param date2 - Second date.\n * @returns A flag stating if the dates are in the same month and year or not.\n */\nexport const isSameMonth = (date1: any, date2: any) => {\n if (!(isDate(date1) && isDate(date2))) return false;\n\n return (\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n};\n\n/**\n * Checks if two dates are on the same day.\n *\n * @param date1 - First date.\n * @param date2 - Second date.\n * @returns A flag stating if the dates are in the same day or not.\n */\nexport const isSameDay = (date1: any, date2: any) => {\n if (!(isDate(date1) && isDate(date2))) return false;\n\n return (\n date1.getDate() === date2.getDate() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n};\n\n/**\n * Formats the received date using the ISO format (YYYY-MM-DD).\n *\n * @param date - The date to be formatted.\n * @returns The formatted date in ISO format.\n */\nexport const getDateISO = (date?: Date) => {\n if (!isDate(date)) return null;\n\n return [\n date.getFullYear(),\n zeroPad(date.getMonth() + 1, 2),\n zeroPad(date.getDate(), 2),\n ].join(\"-\");\n};\n\n/**\n * Returns an object with the previous month taking also into consideration the year.\n * For example the previous month of January 2000 will be December 1999.\n *\n * @param month - Number of the month.\n * @param year - Number of the year.\n * @returns Object with new month and year defined.\n */\nexport const getPreviousMonth = (month: number, year: number) => {\n const prevMonth = month > 1 ? month - 1 : 12;\n const prevMonthYear = month > 1 ? year : year - 1;\n\n return { month: prevMonth, year: prevMonthYear };\n};\n\n/**\n * Returns an object with the next month taking also into consideration the year.\n * For example the next month of December 2000 will be January 2001.\n *\n * @param month - Number of the month.\n * @param year - Number of the year.\n * @returns Object with new month and year defined.\n */\nexport const getNextMonth = (month: number, year: number) => {\n const nextMonth = month < 12 ? month + 1 : 1;\n const nextMonthYear = month < 12 ? year : year + 1;\n\n return { month: nextMonth, year: nextMonthYear };\n};\n\n/**\n * Returns a list with the names of all the months localized in the received locale and representation value.\n *\n * @param locale - The locale to be applied to the Intl format.\n * @param representationValue - The representation value for the month.\n * @returns An array with all the months names.\n */\nexport const getMonthNamesList = (\n locale: string | undefined,\n representationValue: Intl.DateTimeFormatOptions[\"month\"] = \"long\"\n) => {\n const options = { month: representationValue, timeZone: \"UTC\" };\n\n return [...new Array(12)].map((n, index) => {\n const auxDate = makeUTCDate(1970, index, 1);\n return capitalize(Intl.DateTimeFormat(locale, options).format(auxDate));\n });\n};\n\n/**\n * Returns a list with the names of all the weekdays localized in the received locale and representation value.\n *\n * @param locale - The locale to be applied.\n * @param dateTimeFormatValue - The representation value for the weekday.\n * @returns An array with all the weekday names.\n */\nexport const getWeekdayNamesList = (\n locale: string,\n dateTimeFormatValue: Intl.DateTimeFormatOptions[\"weekday\"] = \"long\"\n) => {\n const options = { weekday: dateTimeFormatValue, timeZone: \"UTC\" };\n const weekdayNames: string[] = [];\n\n for (let day = 4; day <= 10; day += 1) {\n const auxDate = makeUTCDate(1970, 0, day);\n weekdayNames.push(Intl.DateTimeFormat(locale, options).format(auxDate));\n }\n return weekdayNames;\n};\n\n/**\n * Returns the name of the month for the supplied month localized in the received locale and representation value.\n *\n * @param date - The date from which the month name is extracted.\n * @param locale - The locale to be applied to the Intl format.\n * @param representationValue - The locale to be applied to the Intl format.\n * @returns The name of the month.\n */\nexport const getMonthName = (\n date: Date,\n locale: string,\n representationValue: Intl.DateTimeFormatOptions[\"month\"] = \"long\"\n) =>\n new Intl.DateTimeFormat(locale, { month: representationValue }).format(date);\n\n/**\n * Formats the received date according to Design System specifications.\n * Currently: day month, year => `14 Aug, 2019`.\n *\n * @param date - UTC date to be formatted.\n * @param locale - The locale to be applied to the Intl format.\n * @returns The formatted date as a string.\n */\nexport const getFormattedDate = (\n // TODO: fix this\n date: any,\n locale: any,\n rep: Intl.DateTimeFormatOptions[\"month\"] = \"short\"\n) =>\n `${date.getDate()} ${getMonthName(date, locale, rep)} ${date.getFullYear()}`;\n\n/**\n * Creates an array of 42 days. The complete current month and enough days from the previous and next months to fill\n * the 42 positions.\n *\n * @param month - The number of the month (1 to 12).\n * @param year - The number of the year.\n * @returns The array of dates.\n */\nexport const createDatesArray = (month: number, year: number) => {\n // Initializes the variables needed to calculate the dates for the received month and year\n const monthDays = getMonthDays(month, year);\n const daysFromPrevMonth = getMonthFirstWeekday(month, year);\n const daysFromNextMonth =\n CALENDAR_WEEKS * 7 - (daysFromPrevMonth + monthDays);\n const prevMonthYear = getPreviousMonth(month, year);\n const nextMonthYear = getNextMonth(month, year);\n const prevMonthDays = getMonthDays(prevMonthYear.month, prevMonthYear.year);\n\n // Creates the arrays for the dates for previous, current and next months\n const prevMonthDates = [...new Array(daysFromPrevMonth)].map((n, index) => {\n const day = index + 1 + (prevMonthDays - daysFromPrevMonth);\n return new Date(prevMonthYear.year, prevMonthYear.month - 1, day);\n });\n const currentMonthDates = [...new Array(monthDays)].map((n, index) => {\n const day = index + 1;\n return new Date(year, month - 1, day);\n });\n const nextMonthDates = [...new Array(daysFromNextMonth)].map((n, index) => {\n const day = index + 1;\n return new Date(nextMonthYear.year, nextMonthYear.month - 1, day);\n });\n\n return [...prevMonthDates, ...currentMonthDates, ...nextMonthDates];\n};\n\n/**\n * Checks if the received locale is valid according to Intl.\n *\n * @param locale - The locale to be checked\n * @returns True if the locale is valid, false otherwise.\n */\nexport const isValidLocale = (locale: string) => {\n try {\n if (Intl.DateTimeFormat.supportedLocalesOf(locale).length > 0) {\n return true;\n }\n // eslint-disable-next-line no-console\n console.warn(`${locale} is not supported. Falling back to a known locale.`);\n return false;\n } catch (error) {\n if (\n error != null &&\n typeof error === \"object\" &&\n \"name\" in error &&\n error?.name === \"RangeError\"\n ) {\n // eslint-disable-next-line no-console\n console.error(`Invalid locale: ${locale}`);\n return false;\n }\n if (error != null && typeof error === \"object\" && \"message\" in error) {\n // eslint-disable-next-line no-console\n console.error(error?.message);\n return false;\n }\n\n return false;\n }\n};\n\nexport const isRange = (date): date is DateRangeProp =>\n date != null && typeof date === \"object\" && \"startDate\" in date;\n\n/**\n * Checks if the date falls within a specified date range.\n *\n * @param date - The date to be evaluated.\n * @param providedValueRange - Provided selection range.\n * @returns - True if the date falls within the range, false otherwise.\n */\nexport const dateInProvidedValueRange = (\n date: any,\n providedValueRange: any\n) => {\n const { startDate, endDate } = providedValueRange;\n\n if (!isRange(providedValueRange) || isNil(endDate)) return false;\n const localEndDate = endDate;\n\n const modStartDate = dayjs(startDate).format(\"YYYY-MM-DD\");\n const modEndDate = dayjs(localEndDate).format(\"YYYY-MM-DD\");\n\n const convertedDate = dayjs(date).format(\"YYYY-MM-DD\");\n\n return convertedDate >= modStartDate && convertedDate <= modEndDate;\n};\n\nexport const checkIfDateIsDisabled = (\n date?: string | number | Date | dayjs.Dayjs,\n minimumDate?: string | number | Date | dayjs.Dayjs,\n maximumDate?: string | number | Date | dayjs.Dayjs\n) => {\n if (!minimumDate && !maximumDate) return false;\n const modStartDate = minimumDate\n ? dayjs(minimumDate).format(\"YYYY-MM-DD\")\n : undefined;\n const modEndDate = maximumDate\n ? dayjs(maximumDate).format(\"YYYY-MM-DD\")\n : undefined;\n\n const convertedDate = dayjs(date).format(\"YYYY-MM-DD\");\n\n return (\n (modStartDate !== undefined && convertedDate < modStartDate) ||\n (modEndDate !== undefined && convertedDate > modEndDate)\n );\n};\n\nexport const formatToLocale = (date, locale) => {\n return new Intl.DateTimeFormat(locale, {\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\",\n }).format(date);\n};\n"],"names":["CALENDAR_WEEKS","zeroPad","value","length","padStart","getMonthDays","month","year","Date","getDate","getMonthFirstWeekday","getDay","makeUTCDate","monthIndex","day","hour","UTC","isDate","date","Object","prototype","toString","call","Number","isNaN","valueOf","isDateRangeProp","isSameMonth","date1","date2","getMonth","getFullYear","isSameDay","getDateISO","join","getPreviousMonth","prevMonth","prevMonthYear","getNextMonth","nextMonth","nextMonthYear","getMonthNamesList","locale","representationValue","options","timeZone","Array","map","n","index","auxDate","capitalize","Intl","DateTimeFormat","format","getWeekdayNamesList","dateTimeFormatValue","weekday","weekdayNames","push","getMonthName","getFormattedDate","rep","createDatesArray","monthDays","daysFromPrevMonth","daysFromNextMonth","prevMonthDays","prevMonthDates","currentMonthDates","nextMonthDates","isRange","dateInProvidedValueRange","providedValueRange","startDate","endDate","isNil","localEndDate","modStartDate","dayjs","modEndDate","convertedDate","checkIfDateIsDisabled","minimumDate","maximumDate","undefined","formatToLocale"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/components/Calendar/utils.tsx"],"sourcesContent":["import dayjs from \"dayjs\";\nimport isNil from \"lodash/isNil\";\nimport capitalize from \"lodash/capitalize\";\nimport { DateRangeProp } from \".\";\n\n/**\n * Constant with the number of weeks to be displayed on the calendar.\n */\nexport const CALENDAR_WEEKS = 6;\n\n/**\n * Constant with the default locale that should be used as the default.\n */\nexport const DEFAULT_LOCALE = \"en\";\n\n/**\n * Pads a string value with leading zeroes(0) until length is reached.\n *\n * @param value - Value to be padded.\n * @param length - Length of the value after the padding is added.\n * @returns The value as a string with the received amount of padding.\n *\n * @example zeroPad(5, 2) => \"05\"\n */\nexport const zeroPad = (value: number, length: number) =>\n `${value}`.padStart(length, \"0\");\n\n/**\n * Returns the number of days in the month given a month and year.\n *\n * @param month - Number of the month (1 to 12).\n * @param year - Number of the year.\n * @returns The number of days in a month for the received year.\n */\nexport const getMonthDays = (month: number, year: number) =>\n new Date(year, month, 0).getDate();\n\n/**\n * Gets the week day of the first day of a given month and year.\n * From 0 (Sunday) to 6 (Saturday).\n *\n * @param month - Number of the month (1 to 12).\n * @param year - Number of the year.\n * @returns The zero indexed week day where 0 is Sunday (0 to 6).\n */\nexport const getMonthFirstWeekday = (month: number, year: number) =>\n new Date(year, month - 1, 1).getDay();\n\n/**\n * Creates a `Date` instance in UTC timezone.\n *\n * @param year - The year of the date.\n * @param monthIndex - The zero indexed month of the year (0 to 11).\n * @param day - The day of the month.\n * @param [hour=1] - The hour of the day.\n * @returns A `Date` instance in UTC timezone.\n */\nexport const makeUTCDate = (\n year: number,\n monthIndex: number,\n day: number,\n hour = 1\n) => new Date(Date.UTC(year, monthIndex, day, hour));\n\n/**\n * Checks if the received date is a valid date.\n *\n * @param date - The date to be validated.\n * @returns A flag stating if the date is valid or not.\n */\nexport const isDate = (date: any): date is Date =>\n Object.prototype.toString.call(date) === \"[object Date]\" &&\n !Number.isNaN(date.valueOf());\n\nexport const isDateRangeProp = (date: any): date is DateRangeProp =>\n \"startDate\" in date;\n\n/**\n * Checks if two dates are in the same month and year.\n *\n * @param date1 - First date.\n * @param date2 - Second date.\n * @returns A flag stating if the dates are in the same month and year or not.\n */\nexport const isSameMonth = (date1: any, date2: any) => {\n if (!(isDate(date1) && isDate(date2))) return false;\n\n return (\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n};\n\n/**\n * Checks if two dates are on the same day.\n *\n * @param date1 - First date.\n * @param date2 - Second date.\n * @returns A flag stating if the dates are in the same day or not.\n */\nexport const isSameDay = (date1: any, date2: any) => {\n if (!(isDate(date1) && isDate(date2))) return false;\n\n return (\n date1.getDate() === date2.getDate() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n};\n\n/**\n * Formats the received date using the ISO format (YYYY-MM-DD).\n *\n * @param date - The date to be formatted.\n * @returns The formatted date in ISO format.\n */\nexport const getDateISO = (date?: Date) => {\n if (!isDate(date)) return null;\n\n return [\n date.getFullYear(),\n zeroPad(date.getMonth() + 1, 2),\n zeroPad(date.getDate(), 2),\n ].join(\"-\");\n};\n\n/**\n * Returns an object with the previous month taking also into consideration the year.\n * For example the previous month of January 2000 will be December 1999.\n *\n * @param month - Number of the month.\n * @param year - Number of the year.\n * @returns Object with new month and year defined.\n */\nexport const getPreviousMonth = (month: number, year: number) => {\n const prevMonth = month > 1 ? month - 1 : 12;\n const prevMonthYear = month > 1 ? year : year - 1;\n\n return { month: prevMonth, year: prevMonthYear };\n};\n\n/**\n * Returns an object with the next month taking also into consideration the year.\n * For example the next month of December 2000 will be January 2001.\n *\n * @param month - Number of the month.\n * @param year - Number of the year.\n * @returns Object with new month and year defined.\n */\nexport const getNextMonth = (month: number, year: number) => {\n const nextMonth = month < 12 ? month + 1 : 1;\n const nextMonthYear = month < 12 ? year : year + 1;\n\n return { month: nextMonth, year: nextMonthYear };\n};\n\n/**\n * Returns a list with the names of all the months localized in the received locale and representation value.\n *\n * @param locale - The locale to be applied to the Intl format.\n * @param representationValue - The representation value for the month.\n * @returns An array with all the months names.\n */\nexport const getMonthNamesList = (\n locale: string | undefined,\n representationValue: Intl.DateTimeFormatOptions[\"month\"] = \"long\"\n) => {\n const options = { month: representationValue, timeZone: \"UTC\" };\n\n return [...new Array(12)].map((n, index) => {\n const auxDate = makeUTCDate(1970, index, 1);\n return capitalize(Intl.DateTimeFormat(locale, options).format(auxDate));\n });\n};\n\n/**\n * Returns a list with the names of all the weekdays localized in the received locale and representation value.\n *\n * @param locale - The locale to be applied.\n * @param dateTimeFormatValue - The representation value for the weekday.\n * @returns An array with all the weekday names.\n */\nexport const getWeekdayNamesList = (\n locale: string,\n dateTimeFormatValue: Intl.DateTimeFormatOptions[\"weekday\"] = \"long\"\n) => {\n const options = { weekday: dateTimeFormatValue, timeZone: \"UTC\" };\n const weekdayNames: string[] = [];\n\n for (let day = 4; day <= 10; day += 1) {\n const auxDate = makeUTCDate(1970, 0, day);\n weekdayNames.push(Intl.DateTimeFormat(locale, options).format(auxDate));\n }\n return weekdayNames;\n};\n\n/**\n * Returns the name of the month for the supplied month localized in the received locale and representation value.\n *\n * @param date - The date from which the month name is extracted.\n * @param locale - The locale to be applied to the Intl format.\n * @param representationValue - The locale to be applied to the Intl format.\n * @returns The name of the month.\n */\nexport const getMonthName = (\n date: Date,\n locale: string,\n representationValue: Intl.DateTimeFormatOptions[\"month\"] = \"long\"\n) =>\n new Intl.DateTimeFormat(locale, { month: representationValue }).format(date);\n\n/**\n * Formats the received date according to Design System specifications.\n * Currently: day month, year => `14 Aug, 2019`.\n *\n * @param date - UTC date to be formatted.\n * @param locale - The locale to be applied to the Intl format.\n * @returns The formatted date as a string.\n */\nexport const getFormattedDate = (\n // TODO: fix this\n date: any,\n locale: any,\n rep: Intl.DateTimeFormatOptions[\"month\"] = \"short\"\n) =>\n `${date.getDate()} ${getMonthName(date, locale, rep)} ${date.getFullYear()}`;\n\n/**\n * Creates an array of 42 days. The complete current month and enough days from the previous and next months to fill\n * the 42 positions.\n *\n * @param month - The number of the month (1 to 12).\n * @param year - The number of the year.\n * @returns The array of dates.\n */\nexport const createDatesArray = (month: number, year: number) => {\n // Initializes the variables needed to calculate the dates for the received month and year\n const monthDays = getMonthDays(month, year);\n const daysFromPrevMonth = getMonthFirstWeekday(month, year);\n const daysFromNextMonth =\n CALENDAR_WEEKS * 7 - (daysFromPrevMonth + monthDays);\n const prevMonthYear = getPreviousMonth(month, year);\n const nextMonthYear = getNextMonth(month, year);\n const prevMonthDays = getMonthDays(prevMonthYear.month, prevMonthYear.year);\n\n // Creates the arrays for the dates for previous, current and next months\n const prevMonthDates = [...new Array(daysFromPrevMonth)].map((n, index) => {\n const day = index + 1 + (prevMonthDays - daysFromPrevMonth);\n return new Date(prevMonthYear.year, prevMonthYear.month - 1, day);\n });\n const currentMonthDates = [...new Array(monthDays)].map((n, index) => {\n const day = index + 1;\n return new Date(year, month - 1, day);\n });\n const nextMonthDates = [...new Array(daysFromNextMonth)].map((n, index) => {\n const day = index + 1;\n return new Date(nextMonthYear.year, nextMonthYear.month - 1, day);\n });\n\n return [...prevMonthDates, ...currentMonthDates, ...nextMonthDates];\n};\n\n/**\n * Checks if the received locale is valid according to Intl.\n *\n * @param locale - The locale to be checked\n * @returns True if the locale is valid, false otherwise.\n */\nexport const isValidLocale = (locale: string) => {\n try {\n if (Intl.DateTimeFormat.supportedLocalesOf(locale).length > 0) {\n return true;\n }\n // eslint-disable-next-line no-console\n console.warn(`${locale} is not supported. Falling back to a known locale.`);\n return false;\n } catch (error) {\n if (\n error != null &&\n typeof error === \"object\" &&\n \"name\" in error &&\n error?.name === \"RangeError\"\n ) {\n // eslint-disable-next-line no-console\n console.error(`Invalid locale: ${locale}`);\n return false;\n }\n if (error != null && typeof error === \"object\" && \"message\" in error) {\n // eslint-disable-next-line no-console\n console.error(error?.message);\n return false;\n }\n\n return false;\n }\n};\n\nexport const isRange = (date): date is DateRangeProp =>\n date != null && typeof date === \"object\" && \"startDate\" in date;\n\n/**\n * Checks if the date falls within a specified date range.\n *\n * @param date - The date to be evaluated.\n * @param providedValueRange - Provided selection range.\n * @returns - True if the date falls within the range, false otherwise.\n */\nexport const dateInProvidedValueRange = (\n date: any,\n providedValueRange: any\n) => {\n const { startDate, endDate } = providedValueRange;\n\n if (!isRange(providedValueRange) || isNil(endDate)) return false;\n const localEndDate = endDate;\n\n const modStartDate = dayjs(startDate).format(\"YYYY-MM-DD\");\n const modEndDate = dayjs(localEndDate).format(\"YYYY-MM-DD\");\n\n const convertedDate = dayjs(date).format(\"YYYY-MM-DD\");\n\n return convertedDate >= modStartDate && convertedDate <= modEndDate;\n};\n\nexport const checkIfDateIsDisabled = (\n date?: string | number | Date | dayjs.Dayjs,\n minimumDate?: string | number | Date | dayjs.Dayjs,\n maximumDate?: string | number | Date | dayjs.Dayjs\n) => {\n if (!minimumDate && !maximumDate) return false;\n const modStartDate = minimumDate\n ? dayjs(minimumDate).format(\"YYYY-MM-DD\")\n : undefined;\n const modEndDate = maximumDate\n ? dayjs(maximumDate).format(\"YYYY-MM-DD\")\n : undefined;\n\n const convertedDate = dayjs(date).format(\"YYYY-MM-DD\");\n\n return (\n (modStartDate !== undefined && convertedDate < modStartDate) ||\n (modEndDate !== undefined && convertedDate > modEndDate)\n );\n};\n\nexport const formatToLocale = (date, locale) => {\n return new Intl.DateTimeFormat(locale, {\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\",\n }).format(date);\n};\n"],"names":["CALENDAR_WEEKS","getMonthDays","month","year","Date","getDate","getMonthFirstWeekday","getDay","makeUTCDate","monthIndex","day","hour","UTC","isDate","date","Object","prototype","toString","call","Number","isNaN","valueOf","isDateRangeProp","isSameMonth","date1","date2","getMonth","getFullYear","isSameDay","getPreviousMonth","prevMonth","prevMonthYear","getNextMonth","nextMonth","nextMonthYear","getMonthNamesList","locale","representationValue","options","timeZone","Array","map","n","index","auxDate","capitalize","Intl","DateTimeFormat","format","getWeekdayNamesList","dateTimeFormatValue","weekday","weekdayNames","push","getMonthName","getFormattedDate","rep","createDatesArray","monthDays","daysFromPrevMonth","daysFromNextMonth","prevMonthDays","prevMonthDates","currentMonthDates","nextMonthDates","isRange","dateInProvidedValueRange","providedValueRange","startDate","endDate","isNil","localEndDate","modStartDate","dayjs","modEndDate","convertedDate","checkIfDateIsDisabled","minimumDate","maximumDate","undefined","formatToLocale"],"mappings":"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"}
@@ -28,7 +28,8 @@ import { HvTypography } from "../Typography/Typography.js";
28
28
  const DEFAULT_LABELS = {
29
29
  applyLabel: "Apply",
30
30
  cancelLabel: "Cancel",
31
- clearLabel: "Clear"
31
+ clearLabel: "Clear",
32
+ invalidLabel: "Invalid date"
32
33
  };
33
34
  const HvDatePicker = ({
34
35
  classes,
@@ -232,7 +233,7 @@ const HvDatePicker = ({
232
233
  label: "StyledTypography"
233
234
  })({
234
235
  color: dateString ? theme.colors.secondary : theme.datePicker.dropdownPlaceholderColor
235
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxZjZCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ2xhc3NOYW1lcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvdWlraXQtcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1zdHlsZXNcIjtcbmltcG9ydCB7XG4gIEh2Q2FsZW5kYXIsXG4gIEh2SW5mb01lc3NhZ2UsXG4gIEh2V2FybmluZ1RleHQsXG4gIEh2Q2FsZW5kYXJQcm9wcyxcbiAgSHZBY3Rpb25CYXIsXG4gIEh2QnV0dG9uLFxuICBIdkZvcm1FbGVtZW50LFxuICBIdlR5cG9ncmFwaHksXG4gIEh2QmFzZURyb3Bkb3duLFxuICBIdkxhYmVsLFxufSBmcm9tIFwiQGNvcmUvY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZCwgdXNlTGFiZWxzLCB1c2VUaGVtZSwgdXNlVW5pcXVlSWQgfSBmcm9tIFwiQGNvcmUvaG9va3NcIjtcbmltcG9ydCB7IEh2QmFzZVByb3BzIH0gZnJvbSBcIkBjb3JlL3R5cGVzXCI7XG5pbXBvcnQgeyBzZXRJZCwgdXNlU2F2ZWRTdGF0ZSB9IGZyb20gXCJAY29yZS91dGlsc1wiO1xuaW1wb3J0IHsgaXNJbnZhbGlkIH0gZnJvbSBcIi4uL0Zvcm1zL0Zvcm1FbGVtZW50L3ZhbGlkYXRpb25TdGF0ZXNcIjtcbmltcG9ydCB7IGlzRGF0ZSB9IGZyb20gXCIuLi9DYWxlbmRhci91dGlsc1wiO1xuaW1wb3J0IHsgZ2V0RGF0ZUxhYmVsIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB1c2VWaXNpYmxlRGF0ZSBmcm9tIFwiLi91c2VWaXNpYmxlRGF0ZVwiO1xuaW1wb3J0IGRhdGVQaWNrZXJDbGFzc2VzLCB7IEh2RGF0ZVBpY2tlckNsYXNzZXMgfSBmcm9tIFwiLi9kYXRlUGlja2VyQ2xhc3Nlc1wiO1xuaW1wb3J0IHsgc3R5bGVzIH0gZnJvbSBcIi4vRGF0ZVBpY2tlci5zdHlsZXNcIjtcblxuY29uc3QgREVGQVVMVF9MQUJFTFMgPSB7XG4gIGFwcGx5TGFiZWw6IFwiQXBwbHlcIixcbiAgY2FuY2VsTGFiZWw6IFwiQ2FuY2VsXCIsXG4gIGNsZWFyTGFiZWw6IFwiQ2xlYXJcIixcbn07XG5cbmV4cG9ydCB0eXBlIEh2RGF0ZVBpY2tlclN0YXR1cyA9IFwic3RhbmRCeVwiIHwgXCJ2YWxpZFwiIHwgXCJpbnZhbGlkXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSHZEYXRlUGlja2VyUHJvcHNcbiAgZXh0ZW5kcyBIdkJhc2VQcm9wczxIVE1MRGl2RWxlbWVudCwgXCJvbkNoYW5nZVwiPiB7XG4gIC8qKlxuICAgKiBDbGFzcyBuYW1lcyB0byBiZSBhcHBsaWVkLlxuICAgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBKc3MgT2JqZWN0IHVzZWQgdG8gb3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBjb21wb25lbnQgc3R5bGVzIGFwcGxpZWQuXG4gICAqL1xuICBjbGFzc2VzPzogSHZEYXRlUGlja2VyQ2xhc3NlcztcbiAgLyoqXG4gICAqIElkIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGZvcm0gZWxlbWVudCByb290IG5vZGUuXG4gICAqL1xuICBpZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZvcm0gZWxlbWVudCBuYW1lLlxuICAgKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBvZiB0aGUgZm9ybSBlbGVtZW50LlxuICAgKlxuICAgKiBUaGUgZm9ybSBlbGVtZW50IG11c3QgYmUgbGFiZWxlZCBmb3IgYWNjZXNzaWJpbGl0eSByZWFzb25zLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIGFuIGFyaWEtbGFiZWwgb3IgYXJpYS1sYWJlbGxlZGJ5IG11c3QgYmUgcHJvdmlkZWQgaW5zdGVhZC5cbiAgICovXG4gIGxhYmVsPzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgXCJhcmlhLWxhYmVsXCI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBcImFyaWEtbGFiZWxsZWRieVwiPzogc3RyaW5nO1xuICAvKipcbiAgICogUHJvdmlkZSBhZGRpdGlvbmFsIGRlc2NyaXB0aXZlIHRleHQgZm9yIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIFwiYXJpYS1kZXNjcmliZWRieVwiPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBsYWNlaG9sZGVyIHZhbHVlIHdoZW4gbm90aGluZyBpcyBzZWxlY3RlZC5cbiAgICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZm9ybSBlbGVtZW50IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdXNlciBpbnB1dCBpcyByZXF1aXJlZCBvbiB0aGUgZm9ybSBlbGVtZW50LlxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqXG4gICAqIFZhbGlkIGlzIGNvcnJlY3QsIGludmFsaWQgaXMgaW5jb3JyZWN0IGFuZCBzdGFuZEJ5IG1lYW5zIG5vIHZhbGlkYXRpb25zIGhhdmUgcnVuLlxuICAgKlxuICAgKiBXaGVuIHVuY29udHJvbGxlZCBhbmQgdW5zcGVjaWZpZWQgaXQgd2lsbCBkZWZhdWx0IHRvIFwic3RhbmRCeVwiIGFuZCBjaGFuZ2UgdG8gZWl0aGVyIFwidmFsaWRcIlxuICAgKiBvciBcImludmFsaWRcIiBhZnRlciBhbnkgY2hhbmdlIHRvIHRoZSBzdGF0ZS5cbiAgICovXG4gIHN0YXR1cz86IEh2RGF0ZVBpY2tlclN0YXR1cztcbiAgLyoqXG4gICAqIFRoZSBlcnJvciBtZXNzYWdlIHRvIHNob3cgd2hlbiB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgaXMgXCJpbnZhbGlkXCIuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIFwiUmVxdWlyZWRcIiB3aGVuIHRoZSBzdGF0dXMgaXMgdW5jb250cm9sbGVkIGFuZCBubyBgYXJpYS1lcnJvcm1lc3NhZ2VgIGlzIHByb3ZpZGVkLlxuICAgKi9cbiAgc3RhdHVzTWVzc2FnZT86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgLyoqXG4gICAqIElkZW50aWZpZXMgdGhlIGVsZW1lbnQgdGhhdCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIGZvciB0aGUgZGF0ZSBwaWNrZXIuXG4gICAqXG4gICAqIFdpbGwgb25seSBiZSB1c2VkIHdoZW4gdGhlIHZhbGlkYXRpb24gc3RhdHVzIGlzIGludmFsaWQuXG4gICAqL1xuICBcImFyaWEtZXJyb3JtZXNzYWdlXCI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayBmaXJlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgb25DaGFuZ2U/OiAoZGF0ZT86IERhdGUsIGVuZERhdGU/OiBEYXRlKSA9PiB2b2lkO1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGZpcmVkIHdoZW4gdXNlciBjbGlja3Mgb24gY2FuY2VsLlxuICAgKi9cbiAgb25DYW5jZWw/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGZpcmVkIHdoZW4gdXNlciBjbGlja3Mgb24gY2xlYXIuXG4gICAqL1xuICBvbkNsZWFyPzogKCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgbGFiZWxzIGZvciB0aGUgZGF0ZXBpY2tlci5cbiAgICovXG4gIGxhYmVscz86IHtcbiAgICAvKipcbiAgICAgKiBBcHBseSBidXR0b24gbGFiZWwuXG4gICAgICovXG4gICAgYXBwbHlMYWJlbD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBDYW5jZWwgYnV0dG9uIGxhYmVsLlxuICAgICAqL1xuICAgIGNhbmNlbExhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENsZWFyIGJ1dHRvbiBsYWJlbC5cbiAgICAgKi9cbiAgICBjbGVhckxhYmVsPzogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgaW5wdXQgd2hlbiBpbiBzaW5nbGUgY2FsZW5kYXIgbW9kZS5cbiAgICovXG4gIHZhbHVlPzogRGF0ZTtcbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgc3RhcnQgZGF0ZSB3aGVuIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICBzdGFydFZhbHVlPzogRGF0ZTtcbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgZW5kIGRhdGUgd2hlbiBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgZW5kVmFsdWU/OiBEYXRlO1xuICAvKipcbiAgICogRmxhZyBpbmZvcm1pbmcgaWYgdGhlIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIGluIHJhbmdlIG1vZGUgb3IgaW4gc2luZ2xlIG1vZGUuXG4gICAqIFRPRE86IHJlbW92ZSB0aGlzIGluIGZhdm91ciBvZiBkaXNjcmltaW5hdGVkIHVuaW9uXG4gICAqL1xuICByYW5nZU1vZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHBsYWNlbWVudCB3aGVyZSB0aGUgY2FsZW5kYXIgc2hvdWxkIGJlIHBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGlucHV0LiBPcHRpb25zIGFyZSBgbGVmdGAgb3IgYHJpZ2h0YC5cbiAgICogTm90ZSB0aGlzIHByb3Agb25seSBhZmZlY3RzIHRoZSBjYWxlbmRhciB3aGVuIGluIGByYW5nZU1vZGVgLlxuICAgKi9cbiAgaG9yaXpvbnRhbFBsYWNlbWVudD86IFwibGVmdFwiIHwgXCJyaWdodFwiO1xuICAvKipcbiAgICogVGhlIGNhbGVuZGFyIGxvY2FsZS4gSWYgdW5kZWZpbmVkLCBpdCB1c2VzIGNhbGVuZGFyIGRlZmF1bHRcbiAgICovXG4gIGxvY2FsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ29udHJvbHMgaWYgYWN0aW9ucyBidXR0b25zIGFyZSB2aXNpYmxlIGF0IHRoZSBjYWxlbmRhci5cbiAgICovXG4gIHNob3dBY3Rpb25zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbnRyb2xzIGlmIGNsZWFyIGJ1dHRvbiBpcyB2aXNpYmxlIGF0IHRoZSBjYWxlbmRhcixcbiAgICogb25seSB3b3JrcyBpZiBzaG93aW5nIGFjdGlvbnMgb3IgaW4gcmFuZ2UgbW9kZS5cbiAgICovXG4gIHNob3dDbGVhcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBwb3J0YWwgYmVoYXZpb3IuIFRoZSBjaGlsZHJlbiBzdGF5IHdpdGhpbiBpdCdzIHBhcmVudCBET00gaGllcmFyY2h5LlxuICAgKi9cbiAgZGlzYWJsZVBvcnRhbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTZXRzIGlmIHRoZSBjYWxlbmRhciBjb250YWluZXIgc2hvdWxkIGZvbGxvdyB0aGUgZGF0ZSBwaWNrZXIgaW5wdXQgb3V0IG9mIHRoZSBzY3JlZW4gb3Igc3RheSB2aXNpYmxlLlxuICAgKi9cbiAgZXNjYXBlV2l0aFJlZmVyZW5jZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbiBlbGVtZW50IHBsYWNlZCBiZWZvcmUgdGhlIENhbGVuZGFyXG4gICAqL1xuICBzdGFydEFkb3JubWVudD86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgLyoqXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BzIHRvIGJlIHBhc3NlZCBvbnRvIHRoZSBiYXNlRHJvcGRvd24uXG4gICAqL1xuICBkcm9wZG93blByb3BzPzogT2JqZWN0O1xuICAvKipcbiAgICogSWYgYHRydWVgIHRoZSBEYXRlUGlja2VyIHdpbGwgYmUgaW4gcmVhZCBvbmx5IG1vZGUsIHVuYWJsZSB0byBiZSBpbnRlcmFjdGVkLlxuICAgKi9cbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBwcm9wcyBwYXNzZWQgdG8gdGhlIEh2Q2FsZW5kYXIgY29tcG9uZW50LlxuICAgKi9cbiAgY2FsZW5kYXJQcm9wcz86IFBhcnRpYWw8SHZDYWxlbmRhclByb3BzPjtcbn1cblxuLyoqXG4gKiBBIGRhdGUgcGlja2VyLCBwb3B1cCBjYWxlbmRhciBvciBkYXRlIHJhbmdlIHBpY2tlciBpcyBhIGdyYXBoaWNhbCB1c2VyXG4gKiBpbnRlcmZhY2Ugd2lkZ2V0IHdoaWNoIGFsbG93cyB0aGUgdXNlciB0byBzZWxlY3QgYSBkYXRlIGZyb20gYSBjYWxlbmRhci5cbiAqL1xuZXhwb3J0IGNvbnN0IEh2RGF0ZVBpY2tlciA9ICh7XG4gIGNsYXNzZXMsXG4gIGNsYXNzTmFtZSxcblxuICBpZCxcbiAgbmFtZSxcblxuICByZXF1aXJlZCA9IGZhbHNlLFxuICBkaXNhYmxlZCA9IGZhbHNlLFxuICByZWFkT25seSxcblxuICBsYWJlbCxcbiAgXCJhcmlhLWxhYmVsXCI6IGFyaWFMYWJlbCxcbiAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXJpYUxhYmVsbGVkQnksXG4gIGRlc2NyaXB0aW9uLFxuICBcImFyaWEtZGVzY3JpYmVkYnlcIjogYXJpYURlc2NyaWJlZEJ5LFxuXG4gIG9uQ2hhbmdlLFxuICBvbkNhbmNlbCxcbiAgb25DbGVhcixcbiAgc3RhdHVzLFxuICBzdGF0dXNNZXNzYWdlLFxuICBcImFyaWEtZXJyb3JtZXNzYWdlXCI6IGFyaWFFcnJvck1lc3NhZ2UsXG5cbiAgcGxhY2Vob2xkZXIsXG5cbiAgbGFiZWxzOiBsYWJlbHNQcm9wLFxuXG4gIHZhbHVlLFxuICBzdGFydFZhbHVlLFxuICBlbmRWYWx1ZSxcblxuICByYW5nZU1vZGUgPSBmYWxzZSxcbiAgc3RhcnRBZG9ybm1lbnQsXG4gIGhvcml6b250YWxQbGFjZW1lbnQgPSBcInJpZ2h0XCIsXG4gIGxvY2FsZTogbG9jYWxlUHJvcCxcbiAgc2hvd0FjdGlvbnMgPSBmYWxzZSxcbiAgc2hvd0NsZWFyID0gZmFsc2UsXG4gIGRpc2FibGVQb3J0YWwgPSB0cnVlLFxuICBlc2NhcGVXaXRoUmVmZXJlbmNlID0gdHJ1ZSxcbiAgZHJvcGRvd25Qcm9wcyxcbiAgY2FsZW5kYXJQcm9wcyxcbiAgLi4ub3RoZXJzXG59OiBIdkRhdGVQaWNrZXJQcm9wcykgPT4ge1xuICBjb25zdCBsYWJlbHMgPSB1c2VMYWJlbHMoREVGQVVMVF9MQUJFTFMsIGxhYmVsc1Byb3ApO1xuXG4gIGNvbnN0IGVsZW1lbnRJZCA9IHVzZVVuaXF1ZUlkKGlkLCBcImh2ZGF0ZXBpY2tlclwiKTtcblxuICBjb25zdCBbdmFsaWRhdGlvblN0YXRlLCBzZXRWYWxpZGF0aW9uU3RhdGVdID0gdXNlQ29udHJvbGxlZChcbiAgICBzdGF0dXMsXG4gICAgXCJzdGFuZEJ5XCJcbiAgKTtcblxuICBjb25zdCBbdmFsaWRhdGlvbk1lc3NhZ2VdID0gdXNlQ29udHJvbGxlZChzdGF0dXNNZXNzYWdlLCBcIlJlcXVpcmVkXCIpO1xuXG4gIGNvbnN0IGxvY2FsZSA9IGxvY2FsZVByb3AgfHwgXCJlbi1VU1wiO1xuXG4gIGNvbnN0IFtjYWxlbmRhck9wZW4sIHNldENhbGVuZGFyT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgW3N0YXJ0RGF0ZSwgc2V0U3RhcnREYXRlLCByb2xsYmFja1N0YXJ0RGF0ZV0gPSB1c2VTYXZlZFN0YXRlKFxuICAgIHJhbmdlTW9kZSA/IHN0YXJ0VmFsdWUgOiB2YWx1ZVxuICApO1xuICBjb25zdCBbZW5kRGF0ZSwgc2V0RW5kRGF0ZSwgcm9sbGJhY2tFbmREYXRlXSA9IHVzZVNhdmVkU3RhdGUoZW5kVmFsdWUpO1xuXG4gIGNvbnN0IFt2aXNpYmxlRGF0ZSwgZGlzcGF0Y2hBY3Rpb25dID0gdXNlVmlzaWJsZURhdGUoc3RhcnREYXRlLCBlbmREYXRlKTtcblxuICBjb25zdCBmb2N1c1RhcmdldCA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG5cbiAgY29uc3QgeyBhY3RpdmVUaGVtZSB9ID0gdXNlVGhlbWUoKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFN0YXJ0RGF0ZShyYW5nZU1vZGUgPyBzdGFydFZhbHVlIDogdmFsdWUsIHRydWUpO1xuICAgIHNldEVuZERhdGUoZW5kVmFsdWUsIHRydWUpO1xuICB9LCBbdmFsdWUsIHN0YXJ0VmFsdWUsIGVuZFZhbHVlLCByYW5nZU1vZGVdKTtcblxuICBjb25zdCBlbmREYXRlSXNTZXQgPSB1c2VSZWYoZmFsc2UpO1xuICBlbmREYXRlSXNTZXQuY3VycmVudCA9IGVuZERhdGUgIT0gbnVsbDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdGFydERhdGUgIT0gbnVsbCkge1xuICAgICAgZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICB0eXBlOiBcIm1vbnRoX3llYXJcIixcbiAgICAgICAgdGFyZ2V0OiBlbmREYXRlSXNTZXQuY3VycmVudCA/IFwibGVmdFwiIDogXCJiZXN0XCIsXG4gICAgICAgIHllYXI6IHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICBtb250aDogc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbZGlzcGF0Y2hBY3Rpb24sIHN0YXJ0RGF0ZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVuZERhdGUgIT0gbnVsbCkge1xuICAgICAgZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICB0eXBlOiBcIm1vbnRoX3llYXJcIixcbiAgICAgICAgdGFyZ2V0OiBcInJpZ2h0XCIsXG4gICAgICAgIHllYXI6IGVuZERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgbW9udGg6IGVuZERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtkaXNwYXRjaEFjdGlvbiwgZW5kRGF0ZV0pO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBgQXBwbHlgIGFjdGlvbi4gQm90aCBzaW5nbGUgYW5kIHJhbmdlZCBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlQXBwbHkgPSAoKSA9PiB7XG4gICAgc2V0U3RhcnREYXRlKHN0YXJ0RGF0ZSwgdHJ1ZSk7XG4gICAgc2V0RW5kRGF0ZShlbmREYXRlID8/IHN0YXJ0RGF0ZSwgdHJ1ZSk7XG5cbiAgICBvbkNoYW5nZT8uKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG5cbiAgICBzZXRWYWxpZGF0aW9uU3RhdGUoKCkgPT4ge1xuICAgICAgLy8gdGhpcyB3aWxsIG9ubHkgcnVuIGlmIHN0YXR1cyBpcyB1bmNvbnRyb2xsZWRcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAoIWlzRGF0ZShzdGFydERhdGUpIHx8IChyYW5nZU1vZGUgJiYgIWlzRGF0ZShlbmREYXRlKSkpKSB7XG4gICAgICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFwidmFsaWRcIjtcbiAgICB9KTtcblxuICAgIHNldENhbGVuZGFyT3BlbihmYWxzZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGBDYW5jZWxgIGFjdGlvbi4gQm90aCBzaW5nbGUgYW5kIHJhbmdlZCBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIHJvbGxiYWNrU3RhcnREYXRlKCk7XG4gICAgcm9sbGJhY2tFbmREYXRlKCk7XG5cbiAgICBvbkNhbmNlbD8uKCk7XG5cbiAgICBzZXRDYWxlbmRhck9wZW4oZmFsc2UpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBgQ2FuY2VsYCBhY3Rpb24uIEJvdGggc2luZ2xlIGFuZCByYW5nZWQgbW9kZXMgYXJlIGhhbmRsZWQgaGVyZS5cbiAgICovXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIHNldFN0YXJ0RGF0ZSh1bmRlZmluZWQsIGZhbHNlKTtcbiAgICBzZXRFbmREYXRlKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIG9uQ2xlYXI/LigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNhbGVuZGFyQ2xvc2UgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2hvdWxkU2F2ZSA9ICEocmFuZ2VNb2RlIHx8IHNob3dBY3Rpb25zKTtcbiAgICBpZiAoc2hvdWxkU2F2ZSkge1xuICAgICAgaGFuZGxlQXBwbHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlQ2FuY2VsKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZSA9IChldnQsIG9wZW4pID0+IHtcbiAgICAvKiBcbiAgICAgSWYgZXZ0IGlzIG51bGwgdGhpcyB0b2dnbGUgd2Fzbid0IHRyaWdnZXJlZCBieSB0aGUgdXNlci5cbiAgICAgaW5zdGVhZCBpdCB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBiYXNlRHJvcGRvd24gdXNlRWZmZWN0IGFmdGVyXG4gICAgIHRoZSBkYXRlcGlja2VyIGNoYW5nZWQgdGhlIGV4cGFuZGVkIHZhbHVlIHRoaXMgYmFzZURyb3Bkb3duIGJlaGF2aW9yIG5lZWRzIGEgcmV2aWV3XG4gICAgKi9cbiAgICBpZiAoZXZ0ID09PSBudWxsKSByZXR1cm47XG4gICAgc2V0Q2FsZW5kYXJPcGVuKG9wZW4pO1xuICAgIGlmICghb3BlbikgaGFuZGxlQ2FsZW5kYXJDbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGZvY3VzT25Db250YWluZXIgPSAoKSA9PiB7XG4gICAgZm9jdXNUYXJnZXQuY3VycmVudD8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVEYXRlQ2hhbmdlID0gKGV2ZW50LCBuZXdEYXRlKSA9PiB7XG4gICAgaWYgKCFpc0RhdGUobmV3RGF0ZSkpIHJldHVybjtcblxuICAgIGNvbnN0IGF1dG9TYXZlID0gIXNob3dBY3Rpb25zICYmICFyYW5nZU1vZGU7XG5cbiAgICBpZiAocmFuZ2VNb2RlKSB7XG4gICAgICBpZiAoIXN0YXJ0RGF0ZSB8fCAoc3RhcnREYXRlICYmIGVuZERhdGUpIHx8IG5ld0RhdGUgPCBzdGFydERhdGUpIHtcbiAgICAgICAgc2V0U3RhcnREYXRlKG5ld0RhdGUpO1xuICAgICAgICBzZXRFbmREYXRlKHVuZGVmaW5lZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFbmREYXRlKG5ld0RhdGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTdGFydERhdGUobmV3RGF0ZSwgYXV0b1NhdmUpO1xuICAgIH1cblxuICAgIGlmIChhdXRvU2F2ZSkge1xuICAgICAgb25DaGFuZ2U/LihuZXdEYXRlKTtcblxuICAgICAgc2V0VmFsaWRhdGlvblN0YXRlKCgpID0+IHtcbiAgICAgICAgLy8gdGhpcyB3aWxsIG9ubHkgcnVuIGlmIHN0YXR1cyBpcyB1bmNvbnRyb2xsZWRcbiAgICAgICAgaWYgKHJlcXVpcmVkICYmICFpc0RhdGUobmV3RGF0ZSkpIHtcbiAgICAgICAgICByZXR1cm4gXCJpbnZhbGlkXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gXCJ2YWxpZFwiO1xuICAgICAgfSk7XG5cbiAgICAgIHNldENhbGVuZGFyT3BlbihmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0RGF0ZUNoYW5nZSA9IChldmVudCwgbmV3RGF0ZSwgcG9zaXRpb24pID0+IHtcbiAgICBpZiAoIWlzRGF0ZShuZXdEYXRlKSkgcmV0dXJuO1xuXG4gICAgaWYgKCFyYW5nZU1vZGUpIHtcbiAgICAgIGhhbmRsZURhdGVDaGFuZ2UoZXZlbnQsIG5ld0RhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA9PT0gXCJsZWZ0XCIpIHtcbiAgICAgIGlmIChlbmREYXRlKSBzZXRTdGFydERhdGUobmV3RGF0ZSA+IGVuZERhdGUgPyBlbmREYXRlIDogbmV3RGF0ZSk7XG4gICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PT0gXCJyaWdodFwiKSB7XG4gICAgICBpZiAoIXN0YXJ0RGF0ZSkge1xuICAgICAgICBpZiAoZW5kRGF0ZSkgc2V0U3RhcnREYXRlKG5ld0RhdGUgPiBlbmREYXRlID8gZW5kRGF0ZSA6IG5ld0RhdGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzZXRFbmREYXRlKG5ld0RhdGUgPCBzdGFydERhdGUgPyBzdGFydERhdGUgOiBuZXdEYXRlKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGNvbnRhaW5lciBmb3IgdGhlIGFjdGlvbiBlbGVtZW50cy5cbiAgICovXG4gIGNvbnN0IHJlbmRlckFjdGlvbnMgPSAoKSA9PiAoXG4gICAgPENsYXNzTmFtZXM+XG4gICAgICB7KHsgY3NzLCBjeCB9KSA9PiAoXG4gICAgICAgIDxIdkFjdGlvbkJhclxuICAgICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgICBzaG93Q2xlYXJcbiAgICAgICAgICAgICAgPyBjeChcbiAgICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJDbGFzc2VzLmFjdGlvbkNvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgIGNzcyhzdHlsZXMuYWN0aW9uQ29udGFpbmVyKSxcbiAgICAgICAgICAgICAgICAgIGNsYXNzZXM/LmFjdGlvbkNvbnRhaW5lclxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAge3Nob3dDbGVhciAmJiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMubGVmdENvbnRhaW5lcixcbiAgICAgICAgICAgICAgICBjbGFzc2VzPy5sZWZ0Q29udGFpbmVyXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxIdkJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJhY3Rpb25cIiwgXCJjbGVhclwiKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMuYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgY3NzKHN0eWxlcy5hY3Rpb24pLFxuICAgICAgICAgICAgICAgICAgY2xhc3Nlcz8uYWN0aW9uXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeUdob3N0XCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGVhcn1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtsYWJlbHM/LmNsZWFyTGFiZWx9XG4gICAgICAgICAgICAgIDwvSHZCdXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgIGRhdGVQaWNrZXJDbGFzc2VzLnJpZ2h0Q29udGFpbmVyLFxuICAgICAgICAgICAgICBjbGFzc2VzPy5yaWdodENvbnRhaW5lclxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SHZCdXR0b25cbiAgICAgICAgICAgICAgaWQ9e3NldElkKGlkLCBcImFjdGlvblwiLCBcImFwcGx5XCIpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJDbGFzc2VzLmFjdGlvbixcbiAgICAgICAgICAgICAgICBjc3Moc3R5bGVzLmFjdGlvbiksXG4gICAgICAgICAgICAgICAgY2xhc3Nlcz8uYWN0aW9uXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5R2hvc3RcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBcHBseX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2xhYmVscz8uYXBwbHlMYWJlbH1cbiAgICAgICAgICAgIDwvSHZCdXR0b24+XG4gICAgICAgICAgICA8SHZCdXR0b25cbiAgICAgICAgICAgICAgaWQ9e3NldElkKGlkLCBcImFjdGlvblwiLCBcImNhbmNlbFwiKX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgICAgICBkYXRlUGlja2VyQ2xhc3Nlcy5hY3Rpb24sXG4gICAgICAgICAgICAgICAgY3NzKHN0eWxlcy5hY3Rpb24pLFxuICAgICAgICAgICAgICAgIGNsYXNzZXM/LmFjdGlvblxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeUdob3N0XCJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bGFiZWxzPy5jYW5jZWxMYWJlbH1cbiAgICAgICAgICAgIDwvSHZCdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvSHZBY3Rpb25CYXI+XG4gICAgICApfVxuICAgIDwvQ2xhc3NOYW1lcz5cbiAgKTtcblxuICBjb25zdCBzdHlsZWRUeXBvZ3JhcGh5ID0gKGRhdGVTdHJpbmcsIHZhcmlhbnQsIHRleHQpID0+IHtcbiAgICBjb25zdCBTdHlsZWRUeXBvZ3JhcGh5ID0gc3R5bGVkKEh2VHlwb2dyYXBoeSkoe1xuICAgICAgY29sb3I6IGRhdGVTdHJpbmdcbiAgICAgICAgPyB0aGVtZS5jb2xvcnMuc2Vjb25kYXJ5XG4gICAgICAgIDogdGhlbWUuZGF0ZVBpY2tlci5kcm9wZG93blBsYWNlaG9sZGVyQ29sb3IsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gPFN0eWxlZFR5cG9ncmFwaHkgdmFyaWFudD17dmFyaWFudH0+e3RleHR9PC9TdHlsZWRUeXBvZ3JhcGh5PjtcbiAgfTtcblxuICBjb25zdCByZW5kZXJJbnB1dCA9IChkYXRlU3RyaW5nKSA9PlxuICAgIHN0eWxlZFR5cG9ncmFwaHkoXG4gICAgICBkYXRlU3RyaW5nLFxuICAgICAgYWN0aXZlVGhlbWU/LmRhdGVQaWNrZXIucGxhY2Vob2xkZXJWYXJpYW50LFxuICAgICAgKGRhdGVTdHJpbmcgfHwgcGxhY2Vob2xkZXIpID09PSB1bmRlZmluZWQgPyBcIlwiIDogZGF0ZVN0cmluZyB8fCBwbGFjZWhvbGRlclxuICAgICk7XG5cbiAgY29uc3QgZGF0ZVZhbHVlID0gcmFuZ2VNb2RlID8geyBzdGFydERhdGUsIGVuZERhdGUgfSA6IHN0YXJ0RGF0ZTtcblxuICBjb25zdCBoYXNMYWJlbCA9IGxhYmVsICE9IG51bGw7XG4gIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gIT0gbnVsbDtcblxuICAvLyB0aGUgZXJyb3IgbWVzc2FnZSBhcmVhIHdpbGwgb25seSBiZSBjcmVhdGVkIGlmOlxuICAvLyAtIGFuIGV4dGVybmFsIGVsZW1lbnQgdGhhdCBwcm92aWRlcyBhbiBlcnJvciBtZXNzYWdlIGlzbid0IGlkZW50aWZpZWQgdmlhIGFyaWEtZXJyb3JtZXNzYWdlIEFORFxuICAvLyAgIC0gYm90aCBzdGF0dXMgYW5kIHN0YXR1c01lc3NhZ2UgcHJvcGVydGllcyBhcmUgYmVpbmcgY29udHJvbGxlZCBPUlxuICAvLyAgIC0gc3RhdHVzIGlzIHVuY29udHJvbGxlZCBhbmQgcmVxdWlyZWQgaXMgdHJ1ZVxuICBjb25zdCBjYW5TaG93RXJyb3IgPVxuICAgIGFyaWFFcnJvck1lc3NhZ2UgPT0gbnVsbCAmJlxuICAgICgoc3RhdHVzICE9PSB1bmRlZmluZWQgJiYgc3RhdHVzTWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB8fFxuICAgICAgKHN0YXR1cyA9PT0gdW5kZWZpbmVkICYmIHJlcXVpcmVkKSk7XG5cbiAgY29uc3QgaXNTdGF0ZUludmFsaWQgPSBpc0ludmFsaWQodmFsaWRhdGlvblN0YXRlKTtcblxuICBsZXQgZXJyb3JNZXNzYWdlSWQ7XG4gIGlmIChpc1N0YXRlSW52YWxpZCkge1xuICAgIGVycm9yTWVzc2FnZUlkID0gY2FuU2hvd0Vycm9yXG4gICAgICA/IHNldElkKGVsZW1lbnRJZCwgXCJlcnJvclwiKVxuICAgICAgOiBhcmlhRXJyb3JNZXNzYWdlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Q2xhc3NOYW1lcz5cbiAgICAgIHsoeyBjc3MsIGN4IH0pID0+IChcbiAgICAgICAgPEh2Rm9ybUVsZW1lbnRcbiAgICAgICAgICBpZD17aWR9XG4gICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICB2YWx1ZT17ZGF0ZVZhbHVlfVxuICAgICAgICAgIHN0YXR1cz17dmFsaWRhdGlvblN0YXRlfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17cmVxdWlyZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgIGRhdGVQaWNrZXJDbGFzc2VzLnJvb3QsXG4gICAgICAgICAgICBjc3Moc3R5bGVzLnJvb3QpLFxuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgY2xhc3Nlcz8ucm9vdFxuICAgICAgICAgICl9XG4gICAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICAgIHsuLi5vdGhlcnN9XG4gICAgICAgID5cbiAgICAgICAgICB7KGhhc0xhYmVsIHx8IGhhc0Rlc2NyaXB0aW9uKSAmJiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMubGFiZWxDb250YWluZXIsXG4gICAgICAgICAgICAgICAgY3NzKHN0eWxlcy5sYWJlbENvbnRhaW5lciksXG4gICAgICAgICAgICAgICAgY2xhc3Nlcz8ubGFiZWxDb250YWluZXJcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2hhc0xhYmVsICYmIChcbiAgICAgICAgICAgICAgICA8SHZMYWJlbFxuICAgICAgICAgICAgICAgICAgaWQ9e3NldElkKGVsZW1lbnRJZCwgXCJsYWJlbFwiKX1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJDbGFzc2VzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBjc3Moc3R5bGVzLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcz8ubGFiZWxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICB7aGFzRGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgIDxIdkluZm9NZXNzYWdlXG4gICAgICAgICAgICAgICAgICBpZD17c2V0SWQoZWxlbWVudElkLCBcImRlc2NyaXB0aW9uXCIpfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGNzcyhzdHlsZXMuZGVzY3JpcHRpb24pLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2VzPy5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7ZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9IdkluZm9NZXNzYWdlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8SHZCYXNlRHJvcGRvd25cbiAgICAgICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgICAgICBjbGFzc2VzPXt7XG4gICAgICAgICAgICAgIHJvb3Q6IGN4KFxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJDbGFzc2VzLmRyb3Bkb3duLFxuICAgICAgICAgICAgICAgIGNzcyhzdHlsZXMuZHJvcGRvd24pLFxuICAgICAgICAgICAgICAgIGNsYXNzZXM/LmRyb3Bkb3duXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHBhbmVsOiBjeChcbiAgICAgICAgICAgICAgICBkYXRlUGlja2VyQ2xhc3Nlcy5wYW5lbCxcbiAgICAgICAgICAgICAgICBjc3Moc3R5bGVzLnBhbmVsKSxcbiAgICAgICAgICAgICAgICBjbGFzc2VzPy5wYW5lbFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBoZWFkZXI6IGlzU3RhdGVJbnZhbGlkXG4gICAgICAgICAgICAgICAgPyBjeChcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMuZHJvcGRvd25IZWFkZXJJbnZhbGlkLFxuICAgICAgICAgICAgICAgICAgICBjc3Moc3R5bGVzLmRyb3Bkb3duSGVhZGVySW52YWxpZCksXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzZXM/LmRyb3Bkb3duSGVhZGVySW52YWxpZFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBoZWFkZXJPcGVuOiBjeChcbiAgICAgICAgICAgICAgICBkYXRlUGlja2VyQ2xhc3Nlcy5kcm9wZG93bkhlYWRlck9wZW4sXG4gICAgICAgICAgICAgICAgY3NzKHN0eWxlcy5kcm9wZG93bkhlYWRlck9wZW4pLFxuICAgICAgICAgICAgICAgIGNsYXNzZXM/LmRyb3Bkb3duSGVhZGVyT3BlblxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHJlYWRPbmx5PXtyZWFkT25seX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIGRpc2FibGVQb3J0YWw9e2Rpc2FibGVQb3J0YWx9XG4gICAgICAgICAgICB2YXJpYWJsZVdpZHRoXG4gICAgICAgICAgICBwbGFjZW1lbnQ9e2hvcml6b250YWxQbGFjZW1lbnR9XG4gICAgICAgICAgICBleHBhbmRlZD17Y2FsZW5kYXJPcGVufVxuICAgICAgICAgICAgb25Ub2dnbGU9e2hhbmRsZVRvZ2dsZX1cbiAgICAgICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtoYW5kbGVDYWxlbmRhckNsb3NlfVxuICAgICAgICAgICAgb25Db250YWluZXJDcmVhdGlvbj17Zm9jdXNPbkNvbnRhaW5lcn1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtyZW5kZXJJbnB1dChcbiAgICAgICAgICAgICAgZ2V0RGF0ZUxhYmVsKGRhdGVWYWx1ZSwgcmFuZ2VNb2RlLCBsb2NhbGUpXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgYWRvcm5tZW50PXtcbiAgICAgICAgICAgICAgPENhbGVuZGFyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJDbGFzc2VzLmljb24sXG4gICAgICAgICAgICAgICAgICBjc3Moc3R5bGVzLmljb24pLFxuICAgICAgICAgICAgICAgICAgY2xhc3Nlcz8uaWNvblxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgY29sb3I9e2Rpc2FibGVkID8gXCJzZWNvbmRhcnlfODBcIiA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBvcHBlclByb3BzPXt7XG4gICAgICAgICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgICAgICAgIHsgbmFtZTogXCJwcmV2ZW50T3ZlcmZsb3dcIiwgZW5hYmxlZDogZXNjYXBlV2l0aFJlZmVyZW5jZSB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD17YXJpYUxhYmVsfVxuICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtcbiAgICAgICAgICAgICAgW2xhYmVsICYmIHNldElkKGVsZW1lbnRJZCwgXCJsYWJlbFwiKSwgYXJpYUxhYmVsbGVkQnldXG4gICAgICAgICAgICAgICAgLmpvaW4oXCIgXCIpXG4gICAgICAgICAgICAgICAgLnRyaW0oKSB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFyaWEtaW52YWxpZD17aXNTdGF0ZUludmFsaWQgPyB0cnVlIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgYXJpYS1lcnJvcm1lc3NhZ2U9e2Vycm9yTWVzc2FnZUlkfVxuICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT17XG4gICAgICAgICAgICAgIFtkZXNjcmlwdGlvbiAmJiBzZXRJZChlbGVtZW50SWQsIFwiZGVzY3JpcHRpb25cIiksIGFyaWFEZXNjcmliZWRCeV1cbiAgICAgICAgICAgICAgICAuam9pbihcIiBcIilcbiAgICAgICAgICAgICAgICAudHJpbSgpIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgey4uLmRyb3Bkb3duUHJvcHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiByZWY9e2ZvY3VzVGFyZ2V0fSB0YWJJbmRleD17LTF9IC8+XG4gICAgICAgICAgICA8SHZDYWxlbmRhclxuICAgICAgICAgICAgICBpZD17c2V0SWQoaWQsIFwiY2FsZW5kYXJcIil9XG4gICAgICAgICAgICAgIHN0YXJ0QWRvcm5tZW50PXtzdGFydEFkb3JubWVudH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZURhdGVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uSW5wdXRDaGFuZ2U9e2hhbmRsZUlucHV0RGF0ZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25WaXNpYmxlRGF0ZUNoYW5nZT17KF9ldmVudCwgdHlwZSwgbW9udGgsIHRhcmdldCkgPT4ge1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoQWN0aW9uKHsgdHlwZSwgdGFyZ2V0LCBtb250aCB9KTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgIHsuLi52aXNpYmxlRGF0ZX1cbiAgICAgICAgICAgICAgey4uLmNhbGVuZGFyUHJvcHN9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgeyhyYW5nZU1vZGUgfHwgc2hvd0FjdGlvbnMpICYmIHJlbmRlckFjdGlvbnMoKX1cbiAgICAgICAgICA8L0h2QmFzZURyb3Bkb3duPlxuICAgICAgICAgIHtjYW5TaG93RXJyb3IgJiYgKFxuICAgICAgICAgICAgPEh2V2FybmluZ1RleHRcbiAgICAgICAgICAgICAgaWQ9e3NldElkKGVsZW1lbnRJZCwgXCJlcnJvclwiKX1cbiAgICAgICAgICAgICAgZGlzYWJsZUJvcmRlclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KGRhdGVQaWNrZXJDbGFzc2VzLmVycm9yLCBjbGFzc2VzPy5lcnJvcil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt2YWxpZGF0aW9uTWVzc2FnZX1cbiAgICAgICAgICAgIDwvSHZXYXJuaW5nVGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L0h2Rm9ybUVsZW1lbnQ+XG4gICAgICApfVxuICAgIDwvQ2xhc3NOYW1lcz5cbiAgKTtcbn07XG4iXX0= */");
236
+ }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwZjZCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRGF0ZVBpY2tlci9EYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQ2xhc3NOYW1lcyB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBDYWxlbmRhciB9IGZyb20gXCJAaGl0YWNoaXZhbnRhcmEvdWlraXQtcmVhY3QtaWNvbnNcIjtcbmltcG9ydCB7IHRoZW1lIH0gZnJvbSBcIkBoaXRhY2hpdmFudGFyYS91aWtpdC1zdHlsZXNcIjtcbmltcG9ydCB7XG4gIEh2Q2FsZW5kYXIsXG4gIEh2SW5mb01lc3NhZ2UsXG4gIEh2V2FybmluZ1RleHQsXG4gIEh2Q2FsZW5kYXJQcm9wcyxcbiAgSHZBY3Rpb25CYXIsXG4gIEh2QnV0dG9uLFxuICBIdkZvcm1FbGVtZW50LFxuICBIdlR5cG9ncmFwaHksXG4gIEh2QmFzZURyb3Bkb3duLFxuICBIdkxhYmVsLFxufSBmcm9tIFwiQGNvcmUvY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxlZCwgdXNlTGFiZWxzLCB1c2VUaGVtZSwgdXNlVW5pcXVlSWQgfSBmcm9tIFwiQGNvcmUvaG9va3NcIjtcbmltcG9ydCB7IEh2QmFzZVByb3BzIH0gZnJvbSBcIkBjb3JlL3R5cGVzXCI7XG5pbXBvcnQgeyBzZXRJZCwgdXNlU2F2ZWRTdGF0ZSB9IGZyb20gXCJAY29yZS91dGlsc1wiO1xuaW1wb3J0IHsgaXNJbnZhbGlkIH0gZnJvbSBcIi4uL0Zvcm1zL0Zvcm1FbGVtZW50L3ZhbGlkYXRpb25TdGF0ZXNcIjtcbmltcG9ydCB7IGlzRGF0ZSB9IGZyb20gXCIuLi9DYWxlbmRhci91dGlsc1wiO1xuaW1wb3J0IHsgZ2V0RGF0ZUxhYmVsIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB1c2VWaXNpYmxlRGF0ZSBmcm9tIFwiLi91c2VWaXNpYmxlRGF0ZVwiO1xuaW1wb3J0IGRhdGVQaWNrZXJDbGFzc2VzLCB7IEh2RGF0ZVBpY2tlckNsYXNzZXMgfSBmcm9tIFwiLi9kYXRlUGlja2VyQ2xhc3Nlc1wiO1xuaW1wb3J0IHsgc3R5bGVzIH0gZnJvbSBcIi4vRGF0ZVBpY2tlci5zdHlsZXNcIjtcblxuY29uc3QgREVGQVVMVF9MQUJFTFMgPSB7XG4gIGFwcGx5TGFiZWw6IFwiQXBwbHlcIixcbiAgY2FuY2VsTGFiZWw6IFwiQ2FuY2VsXCIsXG4gIGNsZWFyTGFiZWw6IFwiQ2xlYXJcIixcbiAgaW52YWxpZExhYmVsOiBcIkludmFsaWQgZGF0ZVwiLFxufTtcblxuZXhwb3J0IHR5cGUgSHZEYXRlUGlja2VyU3RhdHVzID0gXCJzdGFuZEJ5XCIgfCBcInZhbGlkXCIgfCBcImludmFsaWRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBIdkRhdGVQaWNrZXJQcm9wc1xuICBleHRlbmRzIEh2QmFzZVByb3BzPEhUTUxEaXZFbGVtZW50LCBcIm9uQ2hhbmdlXCI+IHtcbiAgLyoqXG4gICAqIENsYXNzIG5hbWVzIHRvIGJlIGFwcGxpZWQuXG4gICAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIEpzcyBPYmplY3QgdXNlZCB0byBvdmVycmlkZSBvciBleHRlbmQgdGhlIGNvbXBvbmVudCBzdHlsZXMgYXBwbGllZC5cbiAgICovXG4gIGNsYXNzZXM/OiBIdkRhdGVQaWNrZXJDbGFzc2VzO1xuICAvKipcbiAgICogSWQgdG8gYmUgYXBwbGllZCB0byB0aGUgZm9ybSBlbGVtZW50IHJvb3Qgbm9kZS5cbiAgICovXG4gIGlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9ybSBlbGVtZW50IG5hbWUuXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGxhYmVsIG9mIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqXG4gICAqIFRoZSBmb3JtIGVsZW1lbnQgbXVzdCBiZSBsYWJlbGVkIGZvciBhY2Nlc3NpYmlsaXR5IHJlYXNvbnMuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgYW4gYXJpYS1sYWJlbCBvciBhcmlhLWxhYmVsbGVkYnkgbXVzdCBiZSBwcm92aWRlZCBpbnN0ZWFkLlxuICAgKi9cbiAgbGFiZWw/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBcImFyaWEtbGFiZWxcIj86IHN0cmluZztcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIFwiYXJpYS1sYWJlbGxlZGJ5XCI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQcm92aWRlIGFkZGl0aW9uYWwgZGVzY3JpcHRpdmUgdGV4dCBmb3IgdGhlIGZvcm0gZWxlbWVudC5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcGxhY2Vob2xkZXIgdmFsdWUgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBmb3JtIGVsZW1lbnQgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB1c2VyIGlucHV0IGlzIHJlcXVpcmVkIG9uIHRoZSBmb3JtIGVsZW1lbnQuXG4gICAqL1xuICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIGZvcm0gZWxlbWVudC5cbiAgICpcbiAgICogVmFsaWQgaXMgY29ycmVjdCwgaW52YWxpZCBpcyBpbmNvcnJlY3QgYW5kIHN0YW5kQnkgbWVhbnMgbm8gdmFsaWRhdGlvbnMgaGF2ZSBydW4uXG4gICAqXG4gICAqIFdoZW4gdW5jb250cm9sbGVkIGFuZCB1bnNwZWNpZmllZCBpdCB3aWxsIGRlZmF1bHQgdG8gXCJzdGFuZEJ5XCIgYW5kIGNoYW5nZSB0byBlaXRoZXIgXCJ2YWxpZFwiXG4gICAqIG9yIFwiaW52YWxpZFwiIGFmdGVyIGFueSBjaGFuZ2UgdG8gdGhlIHN0YXRlLlxuICAgKi9cbiAgc3RhdHVzPzogSHZEYXRlUGlja2VyU3RhdHVzO1xuICAvKipcbiAgICogVGhlIGVycm9yIG1lc3NhZ2UgdG8gc2hvdyB3aGVuIHRoZSB2YWxpZGF0aW9uIHN0YXR1cyBpcyBcImludmFsaWRcIi5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gXCJSZXF1aXJlZFwiIHdoZW4gdGhlIHN0YXR1cyBpcyB1bmNvbnRyb2xsZWQgYW5kIG5vIGBhcmlhLWVycm9ybWVzc2FnZWAgaXMgcHJvdmlkZWQuXG4gICAqL1xuICBzdGF0dXNNZXNzYWdlPzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgZWxlbWVudCB0aGF0IHByb3ZpZGVzIGFuIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBkYXRlIHBpY2tlci5cbiAgICpcbiAgICogV2lsbCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgaXMgaW52YWxpZC5cbiAgICovXG4gIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZT86IChkYXRlPzogRGF0ZSwgZW5kRGF0ZT86IERhdGUpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBjYW5jZWwuXG4gICAqL1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgZmlyZWQgd2hlbiB1c2VyIGNsaWNrcyBvbiBjbGVhci5cbiAgICovXG4gIG9uQ2xlYXI/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIHRoZSBsYWJlbHMgZm9yIHRoZSBkYXRlcGlja2VyLlxuICAgKi9cbiAgbGFiZWxzPzoge1xuICAgIC8qKlxuICAgICAqIEFwcGx5IGJ1dHRvbiBsYWJlbC5cbiAgICAgKi9cbiAgICBhcHBseUxhYmVsPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENhbmNlbCBidXR0b24gbGFiZWwuXG4gICAgICovXG4gICAgY2FuY2VsTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQ2xlYXIgYnV0dG9uIGxhYmVsLlxuICAgICAqL1xuICAgIGNsZWFyTGFiZWw/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSW52YWxpZCBEYXRlIGxhYmVsLlxuICAgICAqL1xuICAgIGludmFsaWREYXRlTGFiZWw/OiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBpbnB1dCB3aGVuIGluIHNpbmdsZSBjYWxlbmRhciBtb2RlLlxuICAgKi9cbiAgdmFsdWU/OiBEYXRlO1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBzdGFydCBkYXRlIHdoZW4gaW4gcmFuZ2UgbW9kZS5cbiAgICovXG4gIHN0YXJ0VmFsdWU/OiBEYXRlO1xuICAvKipcbiAgICogVGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSBlbmQgZGF0ZSB3aGVuIGluIHJhbmdlIG1vZGUuXG4gICAqL1xuICBlbmRWYWx1ZT86IERhdGU7XG4gIC8qKlxuICAgKiBGbGFnIGluZm9ybWluZyBpZiB0aGUgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgaW4gcmFuZ2UgbW9kZSBvciBpbiBzaW5nbGUgbW9kZS5cbiAgICogVE9ETzogcmVtb3ZlIHRoaXMgaW4gZmF2b3VyIG9mIGRpc2NyaW1pbmF0ZWQgdW5pb25cbiAgICovXG4gIHJhbmdlTW9kZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgcGxhY2VtZW50IHdoZXJlIHRoZSBjYWxlbmRhciBzaG91bGQgYmUgcGxhY2VkIGFjY29yZGluZyB0byB0aGUgaW5wdXQuIE9wdGlvbnMgYXJlIGBsZWZ0YCBvciBgcmlnaHRgLlxuICAgKiBOb3RlIHRoaXMgcHJvcCBvbmx5IGFmZmVjdHMgdGhlIGNhbGVuZGFyIHdoZW4gaW4gYHJhbmdlTW9kZWAuXG4gICAqL1xuICBob3Jpem9udGFsUGxhY2VtZW50PzogXCJsZWZ0XCIgfCBcInJpZ2h0XCI7XG4gIC8qKlxuICAgKiBUaGUgY2FsZW5kYXIgbG9jYWxlLiBJZiB1bmRlZmluZWQsIGl0IHVzZXMgY2FsZW5kYXIgZGVmYXVsdFxuICAgKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBpZiBhY3Rpb25zIGJ1dHRvbnMgYXJlIHZpc2libGUgYXQgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgc2hvd0FjdGlvbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29udHJvbHMgaWYgY2xlYXIgYnV0dG9uIGlzIHZpc2libGUgYXQgdGhlIGNhbGVuZGFyLFxuICAgKiBvbmx5IHdvcmtzIGlmIHNob3dpbmcgYWN0aW9ucyBvciBpbiByYW5nZSBtb2RlLlxuICAgKi9cbiAgc2hvd0NsZWFyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIHBvcnRhbCBiZWhhdmlvci4gVGhlIGNoaWxkcmVuIHN0YXkgd2l0aGluIGl0J3MgcGFyZW50IERPTSBoaWVyYXJjaHkuXG4gICAqL1xuICBkaXNhYmxlUG9ydGFsPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNldHMgaWYgdGhlIGNhbGVuZGFyIGNvbnRhaW5lciBzaG91bGQgZm9sbG93IHRoZSBkYXRlIHBpY2tlciBpbnB1dCBvdXQgb2YgdGhlIHNjcmVlbiBvciBzdGF5IHZpc2libGUuXG4gICAqL1xuICBlc2NhcGVXaXRoUmVmZXJlbmNlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFuIGVsZW1lbnQgcGxhY2VkIGJlZm9yZSB0aGUgQ2FsZW5kYXJcbiAgICovXG4gIHN0YXJ0QWRvcm5tZW50PzogUmVhY3QuUmVhY3ROb2RlO1xuICAvKipcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcHMgdG8gYmUgcGFzc2VkIG9udG8gdGhlIGJhc2VEcm9wZG93bi5cbiAgICovXG4gIGRyb3Bkb3duUHJvcHM/OiBPYmplY3Q7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgdGhlIERhdGVQaWNrZXIgd2lsbCBiZSBpbiByZWFkIG9ubHkgbW9kZSwgdW5hYmxlIHRvIGJlIGludGVyYWN0ZWQuXG4gICAqL1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHByb3BzIHBhc3NlZCB0byB0aGUgSHZDYWxlbmRhciBjb21wb25lbnQuXG4gICAqL1xuICBjYWxlbmRhclByb3BzPzogUGFydGlhbDxIdkNhbGVuZGFyUHJvcHM+O1xufVxuXG4vKipcbiAqIEEgZGF0ZSBwaWNrZXIsIHBvcHVwIGNhbGVuZGFyIG9yIGRhdGUgcmFuZ2UgcGlja2VyIGlzIGEgZ3JhcGhpY2FsIHVzZXJcbiAqIGludGVyZmFjZSB3aWRnZXQgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBhIGRhdGUgZnJvbSBhIGNhbGVuZGFyLlxuICovXG5leHBvcnQgY29uc3QgSHZEYXRlUGlja2VyID0gKHtcbiAgY2xhc3NlcyxcbiAgY2xhc3NOYW1lLFxuXG4gIGlkLFxuICBuYW1lLFxuXG4gIHJlcXVpcmVkID0gZmFsc2UsXG4gIGRpc2FibGVkID0gZmFsc2UsXG4gIHJlYWRPbmx5LFxuXG4gIGxhYmVsLFxuICBcImFyaWEtbGFiZWxcIjogYXJpYUxhYmVsLFxuICBcImFyaWEtbGFiZWxsZWRieVwiOiBhcmlhTGFiZWxsZWRCeSxcbiAgZGVzY3JpcHRpb24sXG4gIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkQnksXG5cbiAgb25DaGFuZ2UsXG4gIG9uQ2FuY2VsLFxuICBvbkNsZWFyLFxuICBzdGF0dXMsXG4gIHN0YXR1c01lc3NhZ2UsXG4gIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIjogYXJpYUVycm9yTWVzc2FnZSxcblxuICBwbGFjZWhvbGRlcixcblxuICBsYWJlbHM6IGxhYmVsc1Byb3AsXG5cbiAgdmFsdWUsXG4gIHN0YXJ0VmFsdWUsXG4gIGVuZFZhbHVlLFxuXG4gIHJhbmdlTW9kZSA9IGZhbHNlLFxuICBzdGFydEFkb3JubWVudCxcbiAgaG9yaXpvbnRhbFBsYWNlbWVudCA9IFwicmlnaHRcIixcbiAgbG9jYWxlOiBsb2NhbGVQcm9wLFxuICBzaG93QWN0aW9ucyA9IGZhbHNlLFxuICBzaG93Q2xlYXIgPSBmYWxzZSxcbiAgZGlzYWJsZVBvcnRhbCA9IHRydWUsXG4gIGVzY2FwZVdpdGhSZWZlcmVuY2UgPSB0cnVlLFxuICBkcm9wZG93blByb3BzLFxuICBjYWxlbmRhclByb3BzLFxuICAuLi5vdGhlcnNcbn06IEh2RGF0ZVBpY2tlclByb3BzKSA9PiB7XG4gIGNvbnN0IGxhYmVscyA9IHVzZUxhYmVscyhERUZBVUxUX0xBQkVMUywgbGFiZWxzUHJvcCk7XG5cbiAgY29uc3QgZWxlbWVudElkID0gdXNlVW5pcXVlSWQoaWQsIFwiaHZkYXRlcGlja2VyXCIpO1xuXG4gIGNvbnN0IFt2YWxpZGF0aW9uU3RhdGUsIHNldFZhbGlkYXRpb25TdGF0ZV0gPSB1c2VDb250cm9sbGVkKFxuICAgIHN0YXR1cyxcbiAgICBcInN0YW5kQnlcIlxuICApO1xuXG4gIGNvbnN0IFt2YWxpZGF0aW9uTWVzc2FnZV0gPSB1c2VDb250cm9sbGVkKHN0YXR1c01lc3NhZ2UsIFwiUmVxdWlyZWRcIik7XG5cbiAgY29uc3QgbG9jYWxlID0gbG9jYWxlUHJvcCB8fCBcImVuLVVTXCI7XG5cbiAgY29uc3QgW2NhbGVuZGFyT3Blbiwgc2V0Q2FsZW5kYXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBbc3RhcnREYXRlLCBzZXRTdGFydERhdGUsIHJvbGxiYWNrU3RhcnREYXRlXSA9IHVzZVNhdmVkU3RhdGUoXG4gICAgcmFuZ2VNb2RlID8gc3RhcnRWYWx1ZSA6IHZhbHVlXG4gICk7XG4gIGNvbnN0IFtlbmREYXRlLCBzZXRFbmREYXRlLCByb2xsYmFja0VuZERhdGVdID0gdXNlU2F2ZWRTdGF0ZShlbmRWYWx1ZSk7XG5cbiAgY29uc3QgW3Zpc2libGVEYXRlLCBkaXNwYXRjaEFjdGlvbl0gPSB1c2VWaXNpYmxlRGF0ZShzdGFydERhdGUsIGVuZERhdGUpO1xuXG4gIGNvbnN0IGZvY3VzVGFyZ2V0ID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICBjb25zdCB7IGFjdGl2ZVRoZW1lIH0gPSB1c2VUaGVtZSgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U3RhcnREYXRlKHJhbmdlTW9kZSA/IHN0YXJ0VmFsdWUgOiB2YWx1ZSwgdHJ1ZSk7XG4gICAgc2V0RW5kRGF0ZShlbmRWYWx1ZSwgdHJ1ZSk7XG4gIH0sIFt2YWx1ZSwgc3RhcnRWYWx1ZSwgZW5kVmFsdWUsIHJhbmdlTW9kZV0pO1xuXG4gIGNvbnN0IGVuZERhdGVJc1NldCA9IHVzZVJlZihmYWxzZSk7XG4gIGVuZERhdGVJc1NldC5jdXJyZW50ID0gZW5kRGF0ZSAhPSBudWxsO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXJ0RGF0ZSAhPSBudWxsKSB7XG4gICAgICBkaXNwYXRjaEFjdGlvbih7XG4gICAgICAgIHR5cGU6IFwibW9udGhfeWVhclwiLFxuICAgICAgICB0YXJnZXQ6IGVuZERhdGVJc1NldC5jdXJyZW50ID8gXCJsZWZ0XCIgOiBcImJlc3RcIixcbiAgICAgICAgeWVhcjogc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIG1vbnRoOiBzdGFydERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtkaXNwYXRjaEFjdGlvbiwgc3RhcnREYXRlXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW5kRGF0ZSAhPSBudWxsKSB7XG4gICAgICBkaXNwYXRjaEFjdGlvbih7XG4gICAgICAgIHR5cGU6IFwibW9udGhfeWVhclwiLFxuICAgICAgICB0YXJnZXQ6IFwicmlnaHRcIixcbiAgICAgICAgeWVhcjogZW5kRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICBtb250aDogZW5kRGF0ZS5nZXRNb250aCgpICsgMSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2Rpc3BhdGNoQWN0aW9uLCBlbmREYXRlXSk7XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGBBcHBseWAgYWN0aW9uLiBCb3RoIHNpbmdsZSBhbmQgcmFuZ2VkIG1vZGVzIGFyZSBoYW5kbGVkIGhlcmUuXG4gICAqL1xuICBjb25zdCBoYW5kbGVBcHBseSA9ICgpID0+IHtcbiAgICBzZXRTdGFydERhdGUoc3RhcnREYXRlLCB0cnVlKTtcbiAgICBzZXRFbmREYXRlKGVuZERhdGUgPz8gc3RhcnREYXRlLCB0cnVlKTtcblxuICAgIG9uQ2hhbmdlPy4oc3RhcnREYXRlLCBlbmREYXRlKTtcblxuICAgIHNldFZhbGlkYXRpb25TdGF0ZSgoKSA9PiB7XG4gICAgICAvLyB0aGlzIHdpbGwgb25seSBydW4gaWYgc3RhdHVzIGlzIHVuY29udHJvbGxlZFxuICAgICAgaWYgKHJlcXVpcmVkICYmICghaXNEYXRlKHN0YXJ0RGF0ZSkgfHwgKHJhbmdlTW9kZSAmJiAhaXNEYXRlKGVuZERhdGUpKSkpIHtcbiAgICAgICAgcmV0dXJuIFwiaW52YWxpZFwiO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gXCJ2YWxpZFwiO1xuICAgIH0pO1xuXG4gICAgc2V0Q2FsZW5kYXJPcGVuKGZhbHNlKTtcbiAgfTtcblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgYENhbmNlbGAgYWN0aW9uLiBCb3RoIHNpbmdsZSBhbmQgcmFuZ2VkIG1vZGVzIGFyZSBoYW5kbGVkIGhlcmUuXG4gICAqL1xuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgcm9sbGJhY2tTdGFydERhdGUoKTtcbiAgICByb2xsYmFja0VuZERhdGUoKTtcblxuICAgIG9uQ2FuY2VsPy4oKTtcblxuICAgIHNldENhbGVuZGFyT3BlbihmYWxzZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGBDYW5jZWxgIGFjdGlvbi4gQm90aCBzaW5nbGUgYW5kIHJhbmdlZCBtb2RlcyBhcmUgaGFuZGxlZCBoZXJlLlxuICAgKi9cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgc2V0U3RhcnREYXRlKHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgIHNldEVuZERhdGUodW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgb25DbGVhcj8uKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2FsZW5kYXJDbG9zZSA9ICgpID0+IHtcbiAgICBjb25zdCBzaG91bGRTYXZlID0gIShyYW5nZU1vZGUgfHwgc2hvd0FjdGlvbnMpO1xuICAgIGlmIChzaG91bGRTYXZlKSB7XG4gICAgICBoYW5kbGVBcHBseSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYW5kbGVDYW5jZWwoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlID0gKGV2dCwgb3BlbikgPT4ge1xuICAgIC8qIFxuICAgICBJZiBldnQgaXMgbnVsbCB0aGlzIHRvZ2dsZSB3YXNuJ3QgdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyLlxuICAgICBpbnN0ZWFkIGl0IHdhcyB0cmlnZ2VyZWQgYnkgdGhlIGJhc2VEcm9wZG93biB1c2VFZmZlY3QgYWZ0ZXJcbiAgICAgdGhlIGRhdGVwaWNrZXIgY2hhbmdlZCB0aGUgZXhwYW5kZWQgdmFsdWUgdGhpcyBiYXNlRHJvcGRvd24gYmVoYXZpb3IgbmVlZHMgYSByZXZpZXdcbiAgICAqL1xuICAgIGlmIChldnQgPT09IG51bGwpIHJldHVybjtcbiAgICBzZXRDYWxlbmRhck9wZW4ob3Blbik7XG4gICAgaWYgKCFvcGVuKSBoYW5kbGVDYWxlbmRhckNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3QgZm9jdXNPbkNvbnRhaW5lciA9ICgpID0+IHtcbiAgICBmb2N1c1RhcmdldC5jdXJyZW50Py5mb2N1cygpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZURhdGVDaGFuZ2UgPSAoZXZlbnQsIG5ld0RhdGUpID0+IHtcbiAgICBpZiAoIWlzRGF0ZShuZXdEYXRlKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgYXV0b1NhdmUgPSAhc2hvd0FjdGlvbnMgJiYgIXJhbmdlTW9kZTtcblxuICAgIGlmIChyYW5nZU1vZGUpIHtcbiAgICAgIGlmICghc3RhcnREYXRlIHx8IChzdGFydERhdGUgJiYgZW5kRGF0ZSkgfHwgbmV3RGF0ZSA8IHN0YXJ0RGF0ZSkge1xuICAgICAgICBzZXRTdGFydERhdGUobmV3RGF0ZSk7XG4gICAgICAgIHNldEVuZERhdGUodW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVuZERhdGUobmV3RGF0ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFN0YXJ0RGF0ZShuZXdEYXRlLCBhdXRvU2F2ZSk7XG4gICAgfVxuXG4gICAgaWYgKGF1dG9TYXZlKSB7XG4gICAgICBvbkNoYW5nZT8uKG5ld0RhdGUpO1xuXG4gICAgICBzZXRWYWxpZGF0aW9uU3RhdGUoKCkgPT4ge1xuICAgICAgICAvLyB0aGlzIHdpbGwgb25seSBydW4gaWYgc3RhdHVzIGlzIHVuY29udHJvbGxlZFxuICAgICAgICBpZiAocmVxdWlyZWQgJiYgIWlzRGF0ZShuZXdEYXRlKSkge1xuICAgICAgICAgIHJldHVybiBcImludmFsaWRcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBcInZhbGlkXCI7XG4gICAgICB9KTtcblxuICAgICAgc2V0Q2FsZW5kYXJPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlSW5wdXREYXRlQ2hhbmdlID0gKGV2ZW50LCBuZXdEYXRlLCBwb3NpdGlvbikgPT4ge1xuICAgIGlmICghaXNEYXRlKG5ld0RhdGUpKSByZXR1cm47XG5cbiAgICBpZiAoIXJhbmdlTW9kZSkge1xuICAgICAgaGFuZGxlRGF0ZUNoYW5nZShldmVudCwgbmV3RGF0ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uID09PSBcImxlZnRcIikge1xuICAgICAgaWYgKGVuZERhdGUpIHNldFN0YXJ0RGF0ZShuZXdEYXRlID4gZW5kRGF0ZSA/IGVuZERhdGUgOiBuZXdEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSBcInJpZ2h0XCIpIHtcbiAgICAgIGlmICghc3RhcnREYXRlKSB7XG4gICAgICAgIGlmIChlbmREYXRlKSBzZXRTdGFydERhdGUobmV3RGF0ZSA+IGVuZERhdGUgPyBlbmREYXRlIDogbmV3RGF0ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNldEVuZERhdGUobmV3RGF0ZSA8IHN0YXJ0RGF0ZSA/IHN0YXJ0RGF0ZSA6IG5ld0RhdGUpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgY29udGFpbmVyIGZvciB0aGUgYWN0aW9uIGVsZW1lbnRzLlxuICAgKi9cbiAgY29uc3QgcmVuZGVyQWN0aW9ucyA9ICgpID0+IChcbiAgICA8Q2xhc3NOYW1lcz5cbiAgICAgIHsoeyBjc3MsIGN4IH0pID0+IChcbiAgICAgICAgPEh2QWN0aW9uQmFyXG4gICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgIHNob3dDbGVhclxuICAgICAgICAgICAgICA/IGN4KFxuICAgICAgICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMuYWN0aW9uQ29udGFpbmVyLFxuICAgICAgICAgICAgICAgICAgY3NzKHN0eWxlcy5hY3Rpb25Db250YWluZXIpLFxuICAgICAgICAgICAgICAgICAgY2xhc3Nlcz8uYWN0aW9uQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICB7c2hvd0NsZWFyICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgICAgICBkYXRlUGlja2VyQ2xhc3Nlcy5sZWZ0Q29udGFpbmVyLFxuICAgICAgICAgICAgICAgIGNsYXNzZXM/LmxlZnRDb250YWluZXJcbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEh2QnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9e3NldElkKGlkLCBcImFjdGlvblwiLCBcImNsZWFyXCIpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgICAgICBkYXRlUGlja2VyQ2xhc3Nlcy5hY3Rpb24sXG4gICAgICAgICAgICAgICAgICBjc3Moc3R5bGVzLmFjdGlvbiksXG4gICAgICAgICAgICAgICAgICBjbGFzc2VzPy5hY3Rpb25cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5R2hvc3RcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsZWFyfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2xhYmVscz8uY2xlYXJMYWJlbH1cbiAgICAgICAgICAgICAgPC9IdkJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMucmlnaHRDb250YWluZXIsXG4gICAgICAgICAgICAgIGNsYXNzZXM/LnJpZ2h0Q29udGFpbmVyXG4gICAgICAgICAgICApfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxIdkJ1dHRvblxuICAgICAgICAgICAgICBpZD17c2V0SWQoaWQsIFwiYWN0aW9uXCIsIFwiYXBwbHlcIil9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goXG4gICAgICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMuYWN0aW9uLFxuICAgICAgICAgICAgICAgIGNzcyhzdHlsZXMuYWN0aW9uKSxcbiAgICAgICAgICAgICAgICBjbGFzc2VzPy5hY3Rpb25cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlHaG9zdFwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFwcGx5fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bGFiZWxzPy5hcHBseUxhYmVsfVxuICAgICAgICAgICAgPC9IdkJ1dHRvbj5cbiAgICAgICAgICAgIDxIdkJ1dHRvblxuICAgICAgICAgICAgICBpZD17c2V0SWQoaWQsIFwiYWN0aW9uXCIsIFwiY2FuY2VsXCIpfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJDbGFzc2VzLmFjdGlvbixcbiAgICAgICAgICAgICAgICBjc3Moc3R5bGVzLmFjdGlvbiksXG4gICAgICAgICAgICAgICAgY2xhc3Nlcz8uYWN0aW9uXG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5R2hvc3RcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsYWJlbHM/LmNhbmNlbExhYmVsfVxuICAgICAgICAgICAgPC9IdkJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9IdkFjdGlvbkJhcj5cbiAgICAgICl9XG4gICAgPC9DbGFzc05hbWVzPlxuICApO1xuXG4gIGNvbnN0IHN0eWxlZFR5cG9ncmFwaHkgPSAoZGF0ZVN0cmluZywgdmFyaWFudCwgdGV4dCkgPT4ge1xuICAgIGNvbnN0IFN0eWxlZFR5cG9ncmFwaHkgPSBzdHlsZWQoSHZUeXBvZ3JhcGh5KSh7XG4gICAgICBjb2xvcjogZGF0ZVN0cmluZ1xuICAgICAgICA/IHRoZW1lLmNvbG9ycy5zZWNvbmRhcnlcbiAgICAgICAgOiB0aGVtZS5kYXRlUGlja2VyLmRyb3Bkb3duUGxhY2Vob2xkZXJDb2xvcixcbiAgICB9KTtcblxuICAgIHJldHVybiA8U3R5bGVkVHlwb2dyYXBoeSB2YXJpYW50PXt2YXJpYW50fT57dGV4dH08L1N0eWxlZFR5cG9ncmFwaHk+O1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlcklucHV0ID0gKGRhdGVTdHJpbmcpID0+XG4gICAgc3R5bGVkVHlwb2dyYXBoeShcbiAgICAgIGRhdGVTdHJpbmcsXG4gICAgICBhY3RpdmVUaGVtZT8uZGF0ZVBpY2tlci5wbGFjZWhvbGRlclZhcmlhbnQsXG4gICAgICAoZGF0ZVN0cmluZyB8fCBwbGFjZWhvbGRlcikgPT09IHVuZGVmaW5lZCA/IFwiXCIgOiBkYXRlU3RyaW5nIHx8IHBsYWNlaG9sZGVyXG4gICAgKTtcblxuICBjb25zdCBkYXRlVmFsdWUgPSByYW5nZU1vZGUgPyB7IHN0YXJ0RGF0ZSwgZW5kRGF0ZSB9IDogc3RhcnREYXRlO1xuXG4gIGNvbnN0IGhhc0xhYmVsID0gbGFiZWwgIT0gbnVsbDtcbiAgY29uc3QgaGFzRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiAhPSBudWxsO1xuXG4gIC8vIHRoZSBlcnJvciBtZXNzYWdlIGFyZWEgd2lsbCBvbmx5IGJlIGNyZWF0ZWQgaWY6XG4gIC8vIC0gYW4gZXh0ZXJuYWwgZWxlbWVudCB0aGF0IHByb3ZpZGVzIGFuIGVycm9yIG1lc3NhZ2UgaXNuJ3QgaWRlbnRpZmllZCB2aWEgYXJpYS1lcnJvcm1lc3NhZ2UgQU5EXG4gIC8vICAgLSBib3RoIHN0YXR1cyBhbmQgc3RhdHVzTWVzc2FnZSBwcm9wZXJ0aWVzIGFyZSBiZWluZyBjb250cm9sbGVkIE9SXG4gIC8vICAgLSBzdGF0dXMgaXMgdW5jb250cm9sbGVkIGFuZCByZXF1aXJlZCBpcyB0cnVlXG4gIGNvbnN0IGNhblNob3dFcnJvciA9XG4gICAgYXJpYUVycm9yTWVzc2FnZSA9PSBudWxsICYmXG4gICAgKChzdGF0dXMgIT09IHVuZGVmaW5lZCAmJiBzdGF0dXNNZXNzYWdlICE9PSB1bmRlZmluZWQpIHx8XG4gICAgICAoc3RhdHVzID09PSB1bmRlZmluZWQgJiYgcmVxdWlyZWQpKTtcblxuICBjb25zdCBpc1N0YXRlSW52YWxpZCA9IGlzSW52YWxpZCh2YWxpZGF0aW9uU3RhdGUpO1xuXG4gIGxldCBlcnJvck1lc3NhZ2VJZDtcbiAgaWYgKGlzU3RhdGVJbnZhbGlkKSB7XG4gICAgZXJyb3JNZXNzYWdlSWQgPSBjYW5TaG93RXJyb3JcbiAgICAgID8gc2V0SWQoZWxlbWVudElkLCBcImVycm9yXCIpXG4gICAgICA6IGFyaWFFcnJvck1lc3NhZ2U7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDbGFzc05hbWVzPlxuICAgICAgeyh7IGNzcywgY3ggfSkgPT4gKFxuICAgICAgICA8SHZGb3JtRWxlbWVudFxuICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgIHZhbHVlPXtkYXRlVmFsdWV9XG4gICAgICAgICAgc3RhdHVzPXt2YWxpZGF0aW9uU3RhdGV9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtyZXF1aXJlZH1cbiAgICAgICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMucm9vdCxcbiAgICAgICAgICAgIGNzcyhzdHlsZXMucm9vdCksXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgICBjbGFzc2VzPy5yb290XG4gICAgICAgICAgKX1cbiAgICAgICAgICByZWFkT25seT17cmVhZE9ubHl9XG4gICAgICAgICAgey4uLm90aGVyc31cbiAgICAgICAgPlxuICAgICAgICAgIHsoaGFzTGFiZWwgfHwgaGFzRGVzY3JpcHRpb24pICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgICAgICBkYXRlUGlja2VyQ2xhc3Nlcy5sYWJlbENvbnRhaW5lcixcbiAgICAgICAgICAgICAgICBjc3Moc3R5bGVzLmxhYmVsQ29udGFpbmVyKSxcbiAgICAgICAgICAgICAgICBjbGFzc2VzPy5sYWJlbENvbnRhaW5lclxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aGFzTGFiZWwgJiYgKFxuICAgICAgICAgICAgICAgIDxIdkxhYmVsXG4gICAgICAgICAgICAgICAgICBpZD17c2V0SWQoZWxlbWVudElkLCBcImxhYmVsXCIpfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIGNzcyhzdHlsZXMubGFiZWwpLFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2VzPy5sYWJlbFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIHtoYXNEZXNjcmlwdGlvbiAmJiAoXG4gICAgICAgICAgICAgICAgPEh2SW5mb01lc3NhZ2VcbiAgICAgICAgICAgICAgICAgIGlkPXtzZXRJZChlbGVtZW50SWQsIFwiZGVzY3JpcHRpb25cIil9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICAgICAgICAgICAgICBkYXRlUGlja2VyQ2xhc3Nlcy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgY3NzKHN0eWxlcy5kZXNjcmlwdGlvbiksXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzZXM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICA8L0h2SW5mb01lc3NhZ2U+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxIdkJhc2VEcm9wZG93blxuICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgICAgICAgcm9vdDogY3goXG4gICAgICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMuZHJvcGRvd24sXG4gICAgICAgICAgICAgICAgY3NzKHN0eWxlcy5kcm9wZG93biksXG4gICAgICAgICAgICAgICAgY2xhc3Nlcz8uZHJvcGRvd25cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgcGFuZWw6IGN4KFxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJDbGFzc2VzLnBhbmVsLFxuICAgICAgICAgICAgICAgIGNzcyhzdHlsZXMucGFuZWwpLFxuICAgICAgICAgICAgICAgIGNsYXNzZXM/LnBhbmVsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGhlYWRlcjogaXNTdGF0ZUludmFsaWRcbiAgICAgICAgICAgICAgICA/IGN4KFxuICAgICAgICAgICAgICAgICAgICBkYXRlUGlja2VyQ2xhc3Nlcy5kcm9wZG93bkhlYWRlckludmFsaWQsXG4gICAgICAgICAgICAgICAgICAgIGNzcyhzdHlsZXMuZHJvcGRvd25IZWFkZXJJbnZhbGlkKSxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcz8uZHJvcGRvd25IZWFkZXJJbnZhbGlkXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIGhlYWRlck9wZW46IGN4KFxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJDbGFzc2VzLmRyb3Bkb3duSGVhZGVyT3BlbixcbiAgICAgICAgICAgICAgICBjc3Moc3R5bGVzLmRyb3Bkb3duSGVhZGVyT3BlbiksXG4gICAgICAgICAgICAgICAgY2xhc3Nlcz8uZHJvcGRvd25IZWFkZXJPcGVuXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5fVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgZGlzYWJsZVBvcnRhbD17ZGlzYWJsZVBvcnRhbH1cbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGhcbiAgICAgICAgICAgIHBsYWNlbWVudD17aG9yaXpvbnRhbFBsYWNlbWVudH1cbiAgICAgICAgICAgIGV4cGFuZGVkPXtjYWxlbmRhck9wZW59XG4gICAgICAgICAgICBvblRvZ2dsZT17aGFuZGxlVG9nZ2xlfVxuICAgICAgICAgICAgb25DbGlja091dHNpZGU9e2hhbmRsZUNhbGVuZGFyQ2xvc2V9XG4gICAgICAgICAgICBvbkNvbnRhaW5lckNyZWF0aW9uPXtmb2N1c09uQ29udGFpbmVyfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3JlbmRlcklucHV0KFxuICAgICAgICAgICAgICBnZXREYXRlTGFiZWwoZGF0ZVZhbHVlLCByYW5nZU1vZGUsIGxvY2FsZSlcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICBhZG9ybm1lbnQ9e1xuICAgICAgICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KFxuICAgICAgICAgICAgICAgICAgZGF0ZVBpY2tlckNsYXNzZXMuaWNvbixcbiAgICAgICAgICAgICAgICAgIGNzcyhzdHlsZXMuaWNvbiksXG4gICAgICAgICAgICAgICAgICBjbGFzc2VzPy5pY29uXG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICBjb2xvcj17ZGlzYWJsZWQgPyBcInNlY29uZGFyeV84MFwiIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcG9wcGVyUHJvcHM9e3tcbiAgICAgICAgICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgICAgICAgICAgeyBuYW1lOiBcInByZXZlbnRPdmVyZmxvd1wiLCBlbmFibGVkOiBlc2NhcGVXaXRoUmVmZXJlbmNlIH0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e1xuICAgICAgICAgICAgICBbbGFiZWwgJiYgc2V0SWQoZWxlbWVudElkLCBcImxhYmVsXCIpLCBhcmlhTGFiZWxsZWRCeV1cbiAgICAgICAgICAgICAgICAuam9pbihcIiBcIilcbiAgICAgICAgICAgICAgICAudHJpbSgpIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXJpYS1pbnZhbGlkPXtpc1N0YXRlSW52YWxpZCA/IHRydWUgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBhcmlhLWVycm9ybWVzc2FnZT17ZXJyb3JNZXNzYWdlSWR9XG4gICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PXtcbiAgICAgICAgICAgICAgW2Rlc2NyaXB0aW9uICYmIHNldElkKGVsZW1lbnRJZCwgXCJkZXNjcmlwdGlvblwiKSwgYXJpYURlc2NyaWJlZEJ5XVxuICAgICAgICAgICAgICAgIC5qb2luKFwiIFwiKVxuICAgICAgICAgICAgICAgIC50cmltKCkgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7Li4uZHJvcGRvd25Qcm9wc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IHJlZj17Zm9jdXNUYXJnZXR9IHRhYkluZGV4PXstMX0gLz5cbiAgICAgICAgICAgIDxIdkNhbGVuZGFyXG4gICAgICAgICAgICAgIGlkPXtzZXRJZChpZCwgXCJjYWxlbmRhclwiKX1cbiAgICAgICAgICAgICAgc3RhcnRBZG9ybm1lbnQ9e3N0YXJ0QWRvcm5tZW50fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRGF0ZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25JbnB1dENoYW5nZT17aGFuZGxlSW5wdXREYXRlQ2hhbmdlfVxuICAgICAgICAgICAgICBvblZpc2libGVEYXRlQ2hhbmdlPXsoX2V2ZW50LCB0eXBlLCBtb250aCwgdGFyZ2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgZGlzcGF0Y2hBY3Rpb24oeyB0eXBlLCB0YXJnZXQsIG1vbnRoIH0pO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgey4uLnZpc2libGVEYXRlfVxuICAgICAgICAgICAgICB7Li4uY2FsZW5kYXJQcm9wc31cbiAgICAgICAgICAgICAgaW52YWxpZERhdGVMYWJlbD17bGFiZWxzPy5pbnZhbGlkRGF0ZUxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHsocmFuZ2VNb2RlIHx8IHNob3dBY3Rpb25zKSAmJiByZW5kZXJBY3Rpb25zKCl9XG4gICAgICAgICAgPC9IdkJhc2VEcm9wZG93bj5cbiAgICAgICAgICB7Y2FuU2hvd0Vycm9yICYmIChcbiAgICAgICAgICAgIDxIdldhcm5pbmdUZXh0XG4gICAgICAgICAgICAgIGlkPXtzZXRJZChlbGVtZW50SWQsIFwiZXJyb3JcIil9XG4gICAgICAgICAgICAgIGRpc2FibGVCb3JkZXJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeChkYXRlUGlja2VyQ2xhc3Nlcy5lcnJvciwgY2xhc3Nlcz8uZXJyb3IpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dmFsaWRhdGlvbk1lc3NhZ2V9XG4gICAgICAgICAgICA8L0h2V2FybmluZ1RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9IdkZvcm1FbGVtZW50PlxuICAgICAgKX1cbiAgICA8L0NsYXNzTmFtZXM+XG4gICk7XG59O1xuIl19 */");
236
237
  return /* @__PURE__ */ jsx(StyledTypography, {
237
238
  variant,
238
239
  children: text
@@ -328,7 +329,8 @@ const HvDatePicker = ({
328
329
  },
329
330
  locale,
330
331
  ...visibleDate,
331
- ...calendarProps
332
+ ...calendarProps,
333
+ invalidDateLabel: labels == null ? void 0 : labels.invalidDateLabel
332
334
  }), (rangeMode || showActions) && renderActions()]
333
335
  }), canShowError && /* @__PURE__ */ jsx(HvWarningText, {
334
336
  id: setId(elementId, "error"),
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useState, useEffect, useRef } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { Calendar } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport {\n HvCalendar,\n HvInfoMessage,\n HvWarningText,\n HvCalendarProps,\n HvActionBar,\n HvButton,\n HvFormElement,\n HvTypography,\n HvBaseDropdown,\n HvLabel,\n} from \"@core/components\";\nimport { useControlled, useLabels, useTheme, useUniqueId } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport { setId, useSavedState } from \"@core/utils\";\nimport { isInvalid } from \"../Forms/FormElement/validationStates\";\nimport { isDate } from \"../Calendar/utils\";\nimport { getDateLabel } from \"./utils\";\nimport useVisibleDate from \"./useVisibleDate\";\nimport datePickerClasses, { HvDatePickerClasses } from \"./datePickerClasses\";\nimport { styles } from \"./DatePicker.styles\";\n\nconst DEFAULT_LABELS = {\n applyLabel: \"Apply\",\n cancelLabel: \"Cancel\",\n clearLabel: \"Clear\",\n};\n\nexport type HvDatePickerStatus = \"standBy\" | \"valid\" | \"invalid\";\n\nexport interface HvDatePickerProps\n extends HvBaseProps<HTMLDivElement, \"onChange\"> {\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvDatePickerClasses;\n /**\n * Id to be applied to the form element root node.\n */\n id?: string;\n\n /**\n * The form element name.\n */\n name?: string;\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-label\"?: string;\n /**\n * @ignore\n */\n \"aria-labelledby\"?: string;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-describedby\"?: string;\n /**\n * The placeholder value when nothing is selected.\n */\n placeholder?: string;\n\n /**\n * Indicates that the form element is disabled.\n */\n disabled?: boolean;\n /**\n * Indicates that user input is required on the form element.\n */\n required?: boolean;\n\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvDatePickerStatus;\n /**\n * The error message to show when the validation status is \"invalid\".\n *\n * Defaults to \"Required\" when the status is uncontrolled and no `aria-errormessage` is provided.\n */\n statusMessage?: React.ReactNode;\n /**\n * Identifies the element that provides an error message for the date picker.\n *\n * Will only be used when the validation status is invalid.\n */\n \"aria-errormessage\"?: string;\n\n /**\n * The callback fired when the value changes.\n */\n onChange?: (date?: Date, endDate?: Date) => void;\n /**\n * The callback fired when user clicks on cancel.\n */\n onCancel?: () => void;\n /**\n * The callback fired when user clicks on clear.\n */\n onClear?: () => void;\n /**\n * An object containing all the labels for the datepicker.\n */\n labels?: {\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Clear button label.\n */\n clearLabel?: string;\n };\n\n /**\n * The initial value of the input when in single calendar mode.\n */\n value?: Date;\n /**\n * The initial value for the start date when in range mode.\n */\n startValue?: Date;\n /**\n * The initial value for the end date when in range mode.\n */\n endValue?: Date;\n /**\n * Flag informing if the the component should be in range mode or in single mode.\n * TODO: remove this in favour of discriminated union\n */\n rangeMode?: boolean;\n /**\n * The placement where the calendar should be placed according to the input. Options are `left` or `right`.\n * Note this prop only affects the calendar when in `rangeMode`.\n */\n horizontalPlacement?: \"left\" | \"right\";\n /**\n * The calendar locale. If undefined, it uses calendar default\n */\n locale?: string;\n\n /**\n * Controls if actions buttons are visible at the calendar.\n */\n showActions?: boolean;\n /**\n * Controls if clear button is visible at the calendar,\n * only works if showing actions or in range mode.\n */\n showClear?: boolean;\n /**\n * Disable the portal behavior. The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * Sets if the calendar container should follow the date picker input out of the screen or stay visible.\n */\n escapeWithReference?: boolean;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * An object containing props to be passed onto the baseDropdown.\n */\n dropdownProps?: Object;\n /**\n * If `true` the DatePicker will be in read only mode, unable to be interacted.\n */\n readOnly?: boolean;\n /**\n * Additional props passed to the HvCalendar component.\n */\n calendarProps?: Partial<HvCalendarProps>;\n}\n\n/**\n * A date picker, popup calendar or date range picker is a graphical user\n * interface widget which allows the user to select a date from a calendar.\n */\nexport const HvDatePicker = ({\n classes,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n onCancel,\n onClear,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n\n labels: labelsProp,\n\n value,\n startValue,\n endValue,\n\n rangeMode = false,\n startAdornment,\n horizontalPlacement = \"right\",\n locale: localeProp,\n showActions = false,\n showClear = false,\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps,\n calendarProps,\n ...others\n}: HvDatePickerProps) => {\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdatepicker\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const locale = localeProp || \"en-US\";\n\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const [startDate, setStartDate, rollbackStartDate] = useSavedState(\n rangeMode ? startValue : value\n );\n const [endDate, setEndDate, rollbackEndDate] = useSavedState(endValue);\n\n const [visibleDate, dispatchAction] = useVisibleDate(startDate, endDate);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const { activeTheme } = useTheme();\n\n useEffect(() => {\n setStartDate(rangeMode ? startValue : value, true);\n setEndDate(endValue, true);\n }, [value, startValue, endValue, rangeMode]);\n\n const endDateIsSet = useRef(false);\n endDateIsSet.current = endDate != null;\n\n useEffect(() => {\n if (startDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: endDateIsSet.current ? \"left\" : \"best\",\n year: startDate.getFullYear(),\n month: startDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, startDate]);\n\n useEffect(() => {\n if (endDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: \"right\",\n year: endDate.getFullYear(),\n month: endDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, endDate]);\n\n /**\n * Handles the `Apply` action. Both single and ranged modes are handled here.\n */\n const handleApply = () => {\n setStartDate(startDate, true);\n setEndDate(endDate ?? startDate, true);\n\n onChange?.(startDate, endDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && (!isDate(startDate) || (rangeMode && !isDate(endDate)))) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = () => {\n rollbackStartDate();\n rollbackEndDate();\n\n onCancel?.();\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleClear = () => {\n setStartDate(undefined, false);\n setEndDate(undefined, false);\n onClear?.();\n };\n\n const handleCalendarClose = () => {\n const shouldSave = !(rangeMode || showActions);\n if (shouldSave) {\n handleApply();\n } else {\n handleCancel();\n }\n };\n\n const handleToggle = (evt, open) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (evt === null) return;\n setCalendarOpen(open);\n if (!open) handleCalendarClose();\n };\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const handleDateChange = (event, newDate) => {\n if (!isDate(newDate)) return;\n\n const autoSave = !showActions && !rangeMode;\n\n if (rangeMode) {\n if (!startDate || (startDate && endDate) || newDate < startDate) {\n setStartDate(newDate);\n setEndDate(undefined);\n } else {\n setEndDate(newDate);\n }\n } else {\n setStartDate(newDate, autoSave);\n }\n\n if (autoSave) {\n onChange?.(newDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && !isDate(newDate)) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n }\n };\n\n const handleInputDateChange = (event, newDate, position) => {\n if (!isDate(newDate)) return;\n\n if (!rangeMode) {\n handleDateChange(event, newDate);\n return;\n }\n\n if (position === \"left\") {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n } else if (position === \"right\") {\n if (!startDate) {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n return;\n }\n setEndDate(newDate < startDate ? startDate : newDate);\n }\n };\n\n /**\n * Renders the container for the action elements.\n */\n const renderActions = () => (\n <ClassNames>\n {({ css, cx }) => (\n <HvActionBar\n className={\n showClear\n ? cx(\n datePickerClasses.actionContainer,\n css(styles.actionContainer),\n classes?.actionContainer\n )\n : \"\"\n }\n >\n {showClear && (\n <div\n className={cx(\n datePickerClasses.leftContainer,\n classes?.leftContainer\n )}\n >\n <HvButton\n id={setId(id, \"action\", \"clear\")}\n className={cx(\n datePickerClasses.action,\n css(styles.action),\n classes?.action\n )}\n variant=\"primaryGhost\"\n onClick={handleClear}\n >\n {labels?.clearLabel}\n </HvButton>\n </div>\n )}\n <div\n className={cx(\n datePickerClasses.rightContainer,\n classes?.rightContainer\n )}\n >\n <HvButton\n id={setId(id, \"action\", \"apply\")}\n className={cx(\n datePickerClasses.action,\n css(styles.action),\n classes?.action\n )}\n variant=\"primaryGhost\"\n onClick={handleApply}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"action\", \"cancel\")}\n className={cx(\n datePickerClasses.action,\n css(styles.action),\n classes?.action\n )}\n variant=\"primaryGhost\"\n onClick={handleCancel}\n >\n {labels?.cancelLabel}\n </HvButton>\n </div>\n </HvActionBar>\n )}\n </ClassNames>\n );\n\n const styledTypography = (dateString, variant, text) => {\n const StyledTypography = styled(HvTypography)({\n color: dateString\n ? theme.colors.secondary\n : theme.datePicker.dropdownPlaceholderColor,\n });\n\n return <StyledTypography variant={variant}>{text}</StyledTypography>;\n };\n\n const renderInput = (dateString) =>\n styledTypography(\n dateString,\n activeTheme?.datePicker.placeholderVariant,\n (dateString || placeholder) === undefined ? \"\" : dateString || placeholder\n );\n\n const dateValue = rangeMode ? { startDate, endDate } : startDate;\n\n const hasLabel = label != null;\n const hasDescription = description != null;\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = isInvalid(validationState);\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <HvFormElement\n id={id}\n name={name}\n value={dateValue}\n status={validationState}\n disabled={disabled}\n required={required}\n className={cx(\n datePickerClasses.root,\n css(styles.root),\n className,\n classes?.root\n )}\n readOnly={readOnly}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <div\n className={cx(\n datePickerClasses.labelContainer,\n css(styles.labelContainer),\n classes?.labelContainer\n )}\n >\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={cx(\n datePickerClasses.label,\n css(styles.label),\n classes?.label\n )}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={cx(\n datePickerClasses.description,\n css(styles.description),\n classes?.description\n )}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n <HvBaseDropdown\n role=\"combobox\"\n classes={{\n root: cx(\n datePickerClasses.dropdown,\n css(styles.dropdown),\n classes?.dropdown\n ),\n panel: cx(\n datePickerClasses.panel,\n css(styles.panel),\n classes?.panel\n ),\n header: isStateInvalid\n ? cx(\n datePickerClasses.dropdownHeaderInvalid,\n css(styles.dropdownHeaderInvalid),\n classes?.dropdownHeaderInvalid\n )\n : undefined,\n headerOpen: cx(\n datePickerClasses.dropdownHeaderOpen,\n css(styles.dropdownHeaderOpen),\n classes?.dropdownHeaderOpen\n ),\n }}\n readOnly={readOnly}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={calendarOpen}\n onToggle={handleToggle}\n onClickOutside={handleCalendarClose}\n onContainerCreation={focusOnContainer}\n placeholder={renderInput(\n getDateLabel(dateValue, rangeMode, locale)\n )}\n adornment={\n <Calendar\n className={cx(\n datePickerClasses.icon,\n css(styles.icon),\n classes?.icon\n )}\n color={disabled ? \"secondary_80\" : undefined}\n />\n }\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={\n [label && setId(elementId, \"label\"), ariaLabelledBy]\n .join(\" \")\n .trim() || undefined\n }\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n aria-describedby={\n [description && setId(elementId, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...dropdownProps}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <HvCalendar\n id={setId(id, \"calendar\")}\n startAdornment={startAdornment}\n onChange={handleDateChange}\n onInputChange={handleInputDateChange}\n onVisibleDateChange={(_event, type, month, target) => {\n dispatchAction({ type, target, month });\n }}\n locale={locale}\n {...visibleDate}\n {...calendarProps}\n />\n {(rangeMode || showActions) && renderActions()}\n </HvBaseDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={cx(datePickerClasses.error, classes?.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n )}\n </ClassNames>\n );\n};\n"],"names":["DEFAULT_LABELS","applyLabel","cancelLabel","clearLabel","HvDatePicker","classes","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","status","statusMessage","ariaErrorMessage","placeholder","labels","labelsProp","value","startValue","endValue","rangeMode","startAdornment","horizontalPlacement","locale","localeProp","showActions","showClear","disablePortal","escapeWithReference","dropdownProps","calendarProps","others","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","calendarOpen","setCalendarOpen","useState","startDate","setStartDate","rollbackStartDate","useSavedState","endDate","setEndDate","rollbackEndDate","visibleDate","dispatchAction","useVisibleDate","focusTarget","useRef","activeTheme","useTheme","useEffect","endDateIsSet","current","type","target","year","getFullYear","month","getMonth","handleApply","isDate","handleCancel","handleClear","undefined","handleCalendarClose","shouldSave","handleToggle","evt","open","focusOnContainer","focus","handleDateChange","event","newDate","autoSave","handleInputDateChange","position","renderActions","_jsx","ClassNames","children","css","cx","HvActionBar","datePickerClasses","actionContainer","styles","leftContainer","HvButton","setId","action","variant","onClick","_jsxs","rightContainer","styledTypography","dateString","text","StyledTypography","HvTypography","process","env","NODE_ENV","color","theme","colors","secondary","datePicker","dropdownPlaceholderColor","renderInput","placeholderVariant","dateValue","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","HvFormElement","root","labelContainer","HvLabel","HvInfoMessage","HvBaseDropdown","role","dropdown","panel","header","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","variableWidth","placement","expanded","onToggle","onClickOutside","onContainerCreation","getDateLabel","adornment","Calendar","icon","popperProps","modifiers","enabled","join","trim","ref","tabIndex","HvCalendar","onInputChange","onVisibleDateChange","_event","HvWarningText","disableBorder","error"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useState, useEffect, useRef } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport styled from \"@emotion/styled\";\nimport { Calendar } from \"@hitachivantara/uikit-react-icons\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport {\n HvCalendar,\n HvInfoMessage,\n HvWarningText,\n HvCalendarProps,\n HvActionBar,\n HvButton,\n HvFormElement,\n HvTypography,\n HvBaseDropdown,\n HvLabel,\n} from \"@core/components\";\nimport { useControlled, useLabels, useTheme, useUniqueId } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport { setId, useSavedState } from \"@core/utils\";\nimport { isInvalid } from \"../Forms/FormElement/validationStates\";\nimport { isDate } from \"../Calendar/utils\";\nimport { getDateLabel } from \"./utils\";\nimport useVisibleDate from \"./useVisibleDate\";\nimport datePickerClasses, { HvDatePickerClasses } from \"./datePickerClasses\";\nimport { styles } from \"./DatePicker.styles\";\n\nconst DEFAULT_LABELS = {\n applyLabel: \"Apply\",\n cancelLabel: \"Cancel\",\n clearLabel: \"Clear\",\n invalidLabel: \"Invalid date\",\n};\n\nexport type HvDatePickerStatus = \"standBy\" | \"valid\" | \"invalid\";\n\nexport interface HvDatePickerProps\n extends HvBaseProps<HTMLDivElement, \"onChange\"> {\n /**\n * Class names to be applied.\n */\n className?: string;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvDatePickerClasses;\n /**\n * Id to be applied to the form element root node.\n */\n id?: string;\n\n /**\n * The form element name.\n */\n name?: string;\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-label\"?: string;\n /**\n * @ignore\n */\n \"aria-labelledby\"?: string;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * @ignore\n */\n \"aria-describedby\"?: string;\n /**\n * The placeholder value when nothing is selected.\n */\n placeholder?: string;\n\n /**\n * Indicates that the form element is disabled.\n */\n disabled?: boolean;\n /**\n * Indicates that user input is required on the form element.\n */\n required?: boolean;\n\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvDatePickerStatus;\n /**\n * The error message to show when the validation status is \"invalid\".\n *\n * Defaults to \"Required\" when the status is uncontrolled and no `aria-errormessage` is provided.\n */\n statusMessage?: React.ReactNode;\n /**\n * Identifies the element that provides an error message for the date picker.\n *\n * Will only be used when the validation status is invalid.\n */\n \"aria-errormessage\"?: string;\n\n /**\n * The callback fired when the value changes.\n */\n onChange?: (date?: Date, endDate?: Date) => void;\n /**\n * The callback fired when user clicks on cancel.\n */\n onCancel?: () => void;\n /**\n * The callback fired when user clicks on clear.\n */\n onClear?: () => void;\n /**\n * An object containing all the labels for the datepicker.\n */\n labels?: {\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Clear button label.\n */\n clearLabel?: string;\n /**\n * Invalid Date label.\n */\n invalidDateLabel?: string;\n };\n\n /**\n * The initial value of the input when in single calendar mode.\n */\n value?: Date;\n /**\n * The initial value for the start date when in range mode.\n */\n startValue?: Date;\n /**\n * The initial value for the end date when in range mode.\n */\n endValue?: Date;\n /**\n * Flag informing if the the component should be in range mode or in single mode.\n * TODO: remove this in favour of discriminated union\n */\n rangeMode?: boolean;\n /**\n * The placement where the calendar should be placed according to the input. Options are `left` or `right`.\n * Note this prop only affects the calendar when in `rangeMode`.\n */\n horizontalPlacement?: \"left\" | \"right\";\n /**\n * The calendar locale. If undefined, it uses calendar default\n */\n locale?: string;\n\n /**\n * Controls if actions buttons are visible at the calendar.\n */\n showActions?: boolean;\n /**\n * Controls if clear button is visible at the calendar,\n * only works if showing actions or in range mode.\n */\n showClear?: boolean;\n /**\n * Disable the portal behavior. The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * Sets if the calendar container should follow the date picker input out of the screen or stay visible.\n */\n escapeWithReference?: boolean;\n /**\n * An element placed before the Calendar\n */\n startAdornment?: React.ReactNode;\n /**\n * An object containing props to be passed onto the baseDropdown.\n */\n dropdownProps?: Object;\n /**\n * If `true` the DatePicker will be in read only mode, unable to be interacted.\n */\n readOnly?: boolean;\n /**\n * Additional props passed to the HvCalendar component.\n */\n calendarProps?: Partial<HvCalendarProps>;\n}\n\n/**\n * A date picker, popup calendar or date range picker is a graphical user\n * interface widget which allows the user to select a date from a calendar.\n */\nexport const HvDatePicker = ({\n classes,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n onChange,\n onCancel,\n onClear,\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n placeholder,\n\n labels: labelsProp,\n\n value,\n startValue,\n endValue,\n\n rangeMode = false,\n startAdornment,\n horizontalPlacement = \"right\",\n locale: localeProp,\n showActions = false,\n showClear = false,\n disablePortal = true,\n escapeWithReference = true,\n dropdownProps,\n calendarProps,\n ...others\n}: HvDatePickerProps) => {\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdatepicker\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const locale = localeProp || \"en-US\";\n\n const [calendarOpen, setCalendarOpen] = useState(false);\n\n const [startDate, setStartDate, rollbackStartDate] = useSavedState(\n rangeMode ? startValue : value\n );\n const [endDate, setEndDate, rollbackEndDate] = useSavedState(endValue);\n\n const [visibleDate, dispatchAction] = useVisibleDate(startDate, endDate);\n\n const focusTarget = useRef<HTMLDivElement>(null);\n\n const { activeTheme } = useTheme();\n\n useEffect(() => {\n setStartDate(rangeMode ? startValue : value, true);\n setEndDate(endValue, true);\n }, [value, startValue, endValue, rangeMode]);\n\n const endDateIsSet = useRef(false);\n endDateIsSet.current = endDate != null;\n\n useEffect(() => {\n if (startDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: endDateIsSet.current ? \"left\" : \"best\",\n year: startDate.getFullYear(),\n month: startDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, startDate]);\n\n useEffect(() => {\n if (endDate != null) {\n dispatchAction({\n type: \"month_year\",\n target: \"right\",\n year: endDate.getFullYear(),\n month: endDate.getMonth() + 1,\n });\n }\n }, [dispatchAction, endDate]);\n\n /**\n * Handles the `Apply` action. Both single and ranged modes are handled here.\n */\n const handleApply = () => {\n setStartDate(startDate, true);\n setEndDate(endDate ?? startDate, true);\n\n onChange?.(startDate, endDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && (!isDate(startDate) || (rangeMode && !isDate(endDate)))) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = () => {\n rollbackStartDate();\n rollbackEndDate();\n\n onCancel?.();\n\n setCalendarOpen(false);\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleClear = () => {\n setStartDate(undefined, false);\n setEndDate(undefined, false);\n onClear?.();\n };\n\n const handleCalendarClose = () => {\n const shouldSave = !(rangeMode || showActions);\n if (shouldSave) {\n handleApply();\n } else {\n handleCancel();\n }\n };\n\n const handleToggle = (evt, open) => {\n /* \n If evt is null this toggle wasn't triggered by the user.\n instead it was triggered by the baseDropdown useEffect after\n the datepicker changed the expanded value this baseDropdown behavior needs a review\n */\n if (evt === null) return;\n setCalendarOpen(open);\n if (!open) handleCalendarClose();\n };\n\n const focusOnContainer = () => {\n focusTarget.current?.focus();\n };\n\n const handleDateChange = (event, newDate) => {\n if (!isDate(newDate)) return;\n\n const autoSave = !showActions && !rangeMode;\n\n if (rangeMode) {\n if (!startDate || (startDate && endDate) || newDate < startDate) {\n setStartDate(newDate);\n setEndDate(undefined);\n } else {\n setEndDate(newDate);\n }\n } else {\n setStartDate(newDate, autoSave);\n }\n\n if (autoSave) {\n onChange?.(newDate);\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && !isDate(newDate)) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n\n setCalendarOpen(false);\n }\n };\n\n const handleInputDateChange = (event, newDate, position) => {\n if (!isDate(newDate)) return;\n\n if (!rangeMode) {\n handleDateChange(event, newDate);\n return;\n }\n\n if (position === \"left\") {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n } else if (position === \"right\") {\n if (!startDate) {\n if (endDate) setStartDate(newDate > endDate ? endDate : newDate);\n return;\n }\n setEndDate(newDate < startDate ? startDate : newDate);\n }\n };\n\n /**\n * Renders the container for the action elements.\n */\n const renderActions = () => (\n <ClassNames>\n {({ css, cx }) => (\n <HvActionBar\n className={\n showClear\n ? cx(\n datePickerClasses.actionContainer,\n css(styles.actionContainer),\n classes?.actionContainer\n )\n : \"\"\n }\n >\n {showClear && (\n <div\n className={cx(\n datePickerClasses.leftContainer,\n classes?.leftContainer\n )}\n >\n <HvButton\n id={setId(id, \"action\", \"clear\")}\n className={cx(\n datePickerClasses.action,\n css(styles.action),\n classes?.action\n )}\n variant=\"primaryGhost\"\n onClick={handleClear}\n >\n {labels?.clearLabel}\n </HvButton>\n </div>\n )}\n <div\n className={cx(\n datePickerClasses.rightContainer,\n classes?.rightContainer\n )}\n >\n <HvButton\n id={setId(id, \"action\", \"apply\")}\n className={cx(\n datePickerClasses.action,\n css(styles.action),\n classes?.action\n )}\n variant=\"primaryGhost\"\n onClick={handleApply}\n >\n {labels?.applyLabel}\n </HvButton>\n <HvButton\n id={setId(id, \"action\", \"cancel\")}\n className={cx(\n datePickerClasses.action,\n css(styles.action),\n classes?.action\n )}\n variant=\"primaryGhost\"\n onClick={handleCancel}\n >\n {labels?.cancelLabel}\n </HvButton>\n </div>\n </HvActionBar>\n )}\n </ClassNames>\n );\n\n const styledTypography = (dateString, variant, text) => {\n const StyledTypography = styled(HvTypography)({\n color: dateString\n ? theme.colors.secondary\n : theme.datePicker.dropdownPlaceholderColor,\n });\n\n return <StyledTypography variant={variant}>{text}</StyledTypography>;\n };\n\n const renderInput = (dateString) =>\n styledTypography(\n dateString,\n activeTheme?.datePicker.placeholderVariant,\n (dateString || placeholder) === undefined ? \"\" : dateString || placeholder\n );\n\n const dateValue = rangeMode ? { startDate, endDate } : startDate;\n\n const hasLabel = label != null;\n const hasDescription = description != null;\n\n // the error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and required is true\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined && required));\n\n const isStateInvalid = isInvalid(validationState);\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <HvFormElement\n id={id}\n name={name}\n value={dateValue}\n status={validationState}\n disabled={disabled}\n required={required}\n className={cx(\n datePickerClasses.root,\n css(styles.root),\n className,\n classes?.root\n )}\n readOnly={readOnly}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <div\n className={cx(\n datePickerClasses.labelContainer,\n css(styles.labelContainer),\n classes?.labelContainer\n )}\n >\n {hasLabel && (\n <HvLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={cx(\n datePickerClasses.label,\n css(styles.label),\n classes?.label\n )}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={cx(\n datePickerClasses.description,\n css(styles.description),\n classes?.description\n )}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n <HvBaseDropdown\n role=\"combobox\"\n classes={{\n root: cx(\n datePickerClasses.dropdown,\n css(styles.dropdown),\n classes?.dropdown\n ),\n panel: cx(\n datePickerClasses.panel,\n css(styles.panel),\n classes?.panel\n ),\n header: isStateInvalid\n ? cx(\n datePickerClasses.dropdownHeaderInvalid,\n css(styles.dropdownHeaderInvalid),\n classes?.dropdownHeaderInvalid\n )\n : undefined,\n headerOpen: cx(\n datePickerClasses.dropdownHeaderOpen,\n css(styles.dropdownHeaderOpen),\n classes?.dropdownHeaderOpen\n ),\n }}\n readOnly={readOnly}\n disabled={disabled}\n disablePortal={disablePortal}\n variableWidth\n placement={horizontalPlacement}\n expanded={calendarOpen}\n onToggle={handleToggle}\n onClickOutside={handleCalendarClose}\n onContainerCreation={focusOnContainer}\n placeholder={renderInput(\n getDateLabel(dateValue, rangeMode, locale)\n )}\n adornment={\n <Calendar\n className={cx(\n datePickerClasses.icon,\n css(styles.icon),\n classes?.icon\n )}\n color={disabled ? \"secondary_80\" : undefined}\n />\n }\n popperProps={{\n modifiers: [\n { name: \"preventOverflow\", enabled: escapeWithReference },\n ],\n }}\n aria-haspopup=\"dialog\"\n aria-label={ariaLabel}\n aria-labelledby={\n [label && setId(elementId, \"label\"), ariaLabelledBy]\n .join(\" \")\n .trim() || undefined\n }\n aria-invalid={isStateInvalid ? true : undefined}\n aria-errormessage={errorMessageId}\n aria-describedby={\n [description && setId(elementId, \"description\"), ariaDescribedBy]\n .join(\" \")\n .trim() || undefined\n }\n {...dropdownProps}\n >\n <div ref={focusTarget} tabIndex={-1} />\n <HvCalendar\n id={setId(id, \"calendar\")}\n startAdornment={startAdornment}\n onChange={handleDateChange}\n onInputChange={handleInputDateChange}\n onVisibleDateChange={(_event, type, month, target) => {\n dispatchAction({ type, target, month });\n }}\n locale={locale}\n {...visibleDate}\n {...calendarProps}\n invalidDateLabel={labels?.invalidDateLabel}\n />\n {(rangeMode || showActions) && renderActions()}\n </HvBaseDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={cx(datePickerClasses.error, classes?.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n )}\n </ClassNames>\n );\n};\n"],"names":["DEFAULT_LABELS","applyLabel","cancelLabel","clearLabel","invalidLabel","HvDatePicker","classes","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","onChange","onCancel","onClear","status","statusMessage","ariaErrorMessage","placeholder","labels","labelsProp","value","startValue","endValue","rangeMode","startAdornment","horizontalPlacement","locale","localeProp","showActions","showClear","disablePortal","escapeWithReference","dropdownProps","calendarProps","others","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","calendarOpen","setCalendarOpen","useState","startDate","setStartDate","rollbackStartDate","useSavedState","endDate","setEndDate","rollbackEndDate","visibleDate","dispatchAction","useVisibleDate","focusTarget","useRef","activeTheme","useTheme","useEffect","endDateIsSet","current","type","target","year","getFullYear","month","getMonth","handleApply","isDate","handleCancel","handleClear","undefined","handleCalendarClose","shouldSave","handleToggle","evt","open","focusOnContainer","focus","handleDateChange","event","newDate","autoSave","handleInputDateChange","position","renderActions","_jsx","ClassNames","children","css","cx","HvActionBar","datePickerClasses","actionContainer","styles","leftContainer","HvButton","setId","action","variant","onClick","_jsxs","rightContainer","styledTypography","dateString","text","StyledTypography","HvTypography","process","env","NODE_ENV","color","theme","colors","secondary","datePicker","dropdownPlaceholderColor","renderInput","placeholderVariant","dateValue","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","HvFormElement","root","labelContainer","HvLabel","HvInfoMessage","HvBaseDropdown","role","dropdown","panel","header","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","variableWidth","placement","expanded","onToggle","onClickOutside","onContainerCreation","getDateLabel","adornment","Calendar","icon","popperProps","modifiers","enabled","join","trim","ref","tabIndex","HvCalendar","onInputChange","onVisibleDateChange","_event","invalidDateLabel","HvWarningText","disableBorder","error"],"mappings":"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"}
@@ -2,10 +2,10 @@ import { useMemo } from "react";
2
2
  import { ClassNames } from "@emotion/react";
3
3
  import { theme } from "@hitachivantara/uikit-styles";
4
4
  import { MoreOptionsVertical } from "@hitachivantara/uikit-react-icons";
5
- import withId from "../../hocs/withId.js";
6
5
  import { styles } from "./DropDownMenu.styles.js";
7
6
  import dropDownMenuClasses from "./dropDownMenuClasses.js";
8
7
  import { jsx } from "@emotion/react/jsx-runtime";
8
+ import useUniqueId from "../../hooks/useUniqueId.js";
9
9
  import { getPrevNextFocus } from "../../utils/focusableElementFinder.js";
10
10
  import { HvBaseDropdown } from "../BaseDropdown/BaseDropdown.js";
11
11
  import { HvPanel } from "../Panel/Panel.js";
@@ -16,7 +16,7 @@ import { HvButton } from "../Button/Button.js";
16
16
  import { isKeypress } from "../../utils/keyboardUtils/keyCheck.js";
17
17
  import { keyboardCodes } from "../../utils/keyboardUtils/keyboardCodes.js";
18
18
  const HvDropDownMenu = ({
19
- id,
19
+ id: idProp,
20
20
  classes,
21
21
  className,
22
22
  icon,
@@ -33,6 +33,7 @@ const HvDropDownMenu = ({
33
33
  ...others
34
34
  }) => {
35
35
  const [open, setOpen] = useControlled(expanded, Boolean(defaultExpanded));
36
+ const id = useUniqueId(idProp, "dropdown-menu");
36
37
  const focusNodes = getPrevNextFocus(setId(id, "icon-button"));
37
38
  const listId = setId(id, "list");
38
39
  const handleClose = (event) => {
@@ -117,7 +118,7 @@ const HvDropDownMenu = ({
117
118
  })
118
119
  });
119
120
  };
120
- const HvDropDownMenu$1 = withId(HvDropDownMenu);
121
+ const HvDropDownMenu$1 = HvDropDownMenu;
121
122
  export {
122
123
  HvDropDownMenu$1 as default
123
124
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DropDownMenu.js","sources":["../../../../src/components/DropDownMenu/DropDownMenu.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { MoreOptionsVertical } from \"@hitachivantara/uikit-react-icons\";\nimport { useControlled } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport withId from \"@core/hocs/withId\";\nimport {\n isKeypress,\n keyboardCodes,\n setId,\n getPrevNextFocus,\n} from \"@core/utils\";\nimport {\n HvBaseDropdown,\n HvBaseDropdownProps,\n HvButton,\n HvButtonVariant,\n HvList,\n HvListValue,\n HvPanel,\n} from \"@core/components\";\nimport { styles } from \"./DropDownMenu.styles\";\nimport dropDownMenuClasses, {\n HvDropDownMenuClasses,\n} from \"./dropDownMenuClasses\";\n\nexport interface HvDropDownMenuProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n /** Icon. */\n icon?: React.ReactElement;\n /**\n * A list containing the elements to be rendered.\n *\n * - label: The label of the element to be rendered.\n * - selected: The selection state of the element.\n * - disabled: The disabled state of the element.\n * - icon: The icon node to be rendered on the left.\n * - showNavIcon: If true renders the navigation icon on the right.\n */\n dataList: HvListValue[];\n /** Placement of the dropdown. */\n placement?: \"left\" | \"right\";\n /** Disable the portal behavior. The children stay within it's parent DOM hierarchy. */\n disablePortal?: boolean;\n /** Function executed on toggle of the dropdown. Should receive the open status. */\n onToggle?: (event: Event, open: boolean) => void;\n /** Function executed in each onClick. Should received the clicked element. */\n onClick?: (\n event: React.ChangeEvent<HTMLLIElement>,\n value: HvListValue\n ) => void;\n /** Keep the Dropdown Menu opened after clicking one option */\n keepOpened?: boolean;\n /** Defines if the component is disabled. */\n disabled?: boolean;\n /** If true it should be displayed open. */\n expanded?: boolean;\n /** When uncontrolled, defines the initial expanded state. */\n defaultExpanded?: boolean;\n /** The variant to be used in the header. */\n category?: HvButtonVariant;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvDropDownMenuClasses;\n}\n\n/**\n * A drop-down menu is a graphical control element, similar to a list box, that allows the user to choose a value from a list.\n */\nconst HvDropDownMenu = ({\n id,\n classes,\n className,\n icon,\n placement = \"right\",\n dataList,\n disablePortal = false,\n onToggle,\n onClick,\n keepOpened = true,\n disabled = false,\n expanded,\n defaultExpanded = false,\n category = \"secondaryGhost\",\n ...others\n}: HvDropDownMenuProps) => {\n const [open, setOpen] = useControlled(expanded, Boolean(defaultExpanded));\n const focusNodes = getPrevNextFocus(setId(id, \"icon-button\"));\n\n const listId = setId(id, \"list\");\n\n const handleClose = (event) => {\n // this will only run if uncontrolled\n setOpen(false);\n onToggle?.(event, false);\n };\n\n // If the ESCAPE key is pressed inside the list, the close handler must be called.\n const handleKeyDown = (event) => {\n if (isKeypress(event, keyboardCodes.Tab)) {\n const node = event.shiftKey ? focusNodes.prevFocus : focusNodes.nextFocus;\n if (node) setTimeout(() => node.focus(), 0);\n handleClose(event);\n }\n event.preventDefault();\n };\n\n const setFocusToContent = (containerRef) => {\n containerRef?.getElementsByTagName(\"li\")[0]?.focus();\n };\n\n const condensed = useMemo(() => dataList.every((el) => !el.icon), [dataList]);\n const popperStyle: HvBaseDropdownProps[\"popperProps\"] = {\n style: {\n zIndex: theme.zIndices.tooltip,\n width: \"auto\",\n position: \"relative\",\n },\n };\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <HvBaseDropdown\n id={id}\n className={cx(\n dropDownMenuClasses.container,\n css(styles.container),\n className,\n classes?.container\n )}\n classes={{\n root: cx(dropDownMenuClasses.root, css(styles.root), classes?.root),\n container: cx(\n dropDownMenuClasses.baseContainer,\n classes?.baseContainer\n ),\n }}\n expanded={open && !disabled}\n component={\n <HvButton\n icon\n variant={category}\n id={setId(id, \"icon-button\")}\n className={cx(\n dropDownMenuClasses.icon,\n open && dropDownMenuClasses.iconSelected,\n css(styles.icon),\n open && css(styles.iconSelected),\n classes?.icon,\n open && classes?.iconSelected\n )}\n aria-expanded={open}\n disabled={disabled}\n aria-label=\"Dropdown menu\"\n >\n {icon || (\n <MoreOptionsVertical\n color={disabled ? \"secondary_60\" : undefined}\n />\n )}\n </HvButton>\n }\n aria-haspopup=\"menu\"\n placement={placement}\n variableWidth\n disablePortal={disablePortal}\n onToggle={(e, s) => {\n // this will only run if uncontrolled\n setOpen(s);\n onToggle?.(e, s);\n }}\n disabled={disabled}\n onContainerCreation={setFocusToContent}\n popperProps={popperStyle}\n {...others}\n >\n <HvPanel\n className={cx(\n dropDownMenuClasses.menuListRoot,\n css(styles.menuListRoot),\n classes?.menuListRoot\n )}\n >\n <HvList\n id={listId}\n values={dataList}\n selectable={false}\n condensed={condensed}\n onClick={(event, item) => {\n if (!keepOpened) handleClose(event);\n onClick?.(event, item);\n }}\n onKeyDown={handleKeyDown}\n classes={{\n root: cx(dropDownMenuClasses.menuList, classes?.menuList),\n }}\n />\n </HvPanel>\n </HvBaseDropdown>\n )}\n </ClassNames>\n );\n};\n\nexport default withId(HvDropDownMenu);\n"],"names":["HvDropDownMenu","id","classes","className","icon","placement","dataList","disablePortal","onToggle","onClick","keepOpened","disabled","expanded","defaultExpanded","category","others","open","setOpen","useControlled","Boolean","focusNodes","getPrevNextFocus","setId","listId","handleClose","event","handleKeyDown","isKeypress","keyboardCodes","Tab","node","shiftKey","prevFocus","nextFocus","setTimeout","focus","preventDefault","setFocusToContent","containerRef","getElementsByTagName","condensed","useMemo","every","el","popperStyle","style","zIndex","theme","zIndices","tooltip","width","position","ClassNames","children","css","cx","HvBaseDropdown","dropDownMenuClasses","container","styles","root","baseContainer","component","HvButton","variant","iconSelected","_jsx","MoreOptionsVertical","color","undefined","variableWidth","e","s","onContainerCreation","popperProps","HvPanel","menuListRoot","HvList","values","selectable","item","onKeyDown","menuList","withId"],"mappings":"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"}
1
+ {"version":3,"file":"DropDownMenu.js","sources":["../../../../src/components/DropDownMenu/DropDownMenu.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport { MoreOptionsVertical } from \"@hitachivantara/uikit-react-icons\";\nimport { useControlled, useUniqueId } from \"@core/hooks\";\nimport { HvBaseProps } from \"@core/types\";\nimport {\n isKeypress,\n keyboardCodes,\n setId,\n getPrevNextFocus,\n} from \"@core/utils\";\nimport {\n HvBaseDropdown,\n HvBaseDropdownProps,\n HvButton,\n HvButtonVariant,\n HvList,\n HvListValue,\n HvPanel,\n} from \"@core/components\";\nimport { styles } from \"./DropDownMenu.styles\";\nimport dropDownMenuClasses, {\n HvDropDownMenuClasses,\n} from \"./dropDownMenuClasses\";\n\nexport interface HvDropDownMenuProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n /** Icon. */\n icon?: React.ReactElement;\n /**\n * A list containing the elements to be rendered.\n *\n * - label: The label of the element to be rendered.\n * - selected: The selection state of the element.\n * - disabled: The disabled state of the element.\n * - icon: The icon node to be rendered on the left.\n * - showNavIcon: If true renders the navigation icon on the right.\n */\n dataList: HvListValue[];\n /** Placement of the dropdown. */\n placement?: \"left\" | \"right\";\n /** Disable the portal behavior. The children stay within it's parent DOM hierarchy. */\n disablePortal?: boolean;\n /** Function executed on toggle of the dropdown. Should receive the open status. */\n onToggle?: (event: Event, open: boolean) => void;\n /** Function executed in each onClick. Should received the clicked element. */\n onClick?: (\n event: React.ChangeEvent<HTMLLIElement>,\n value: HvListValue\n ) => void;\n /** Keep the Dropdown Menu opened after clicking one option */\n keepOpened?: boolean;\n /** Defines if the component is disabled. */\n disabled?: boolean;\n /** If true it should be displayed open. */\n expanded?: boolean;\n /** When uncontrolled, defines the initial expanded state. */\n defaultExpanded?: boolean;\n /** The variant to be used in the header. */\n category?: HvButtonVariant;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvDropDownMenuClasses;\n}\n\n/**\n * A drop-down menu is a graphical control element, similar to a list box, that allows the user to choose a value from a list.\n */\nconst HvDropDownMenu = ({\n id: idProp,\n classes,\n className,\n icon,\n placement = \"right\",\n dataList,\n disablePortal = false,\n onToggle,\n onClick,\n keepOpened = true,\n disabled = false,\n expanded,\n defaultExpanded = false,\n category = \"secondaryGhost\",\n ...others\n}: HvDropDownMenuProps) => {\n const [open, setOpen] = useControlled(expanded, Boolean(defaultExpanded));\n const id = useUniqueId(idProp, \"dropdown-menu\");\n const focusNodes = getPrevNextFocus(setId(id, \"icon-button\"));\n\n const listId = setId(id, \"list\");\n\n const handleClose = (event) => {\n // this will only run if uncontrolled\n setOpen(false);\n onToggle?.(event, false);\n };\n\n // If the ESCAPE key is pressed inside the list, the close handler must be called.\n const handleKeyDown = (event) => {\n if (isKeypress(event, keyboardCodes.Tab)) {\n const node = event.shiftKey ? focusNodes.prevFocus : focusNodes.nextFocus;\n if (node) setTimeout(() => node.focus(), 0);\n handleClose(event);\n }\n event.preventDefault();\n };\n\n const setFocusToContent = (containerRef) => {\n containerRef?.getElementsByTagName(\"li\")[0]?.focus();\n };\n\n const condensed = useMemo(() => dataList.every((el) => !el.icon), [dataList]);\n const popperStyle: HvBaseDropdownProps[\"popperProps\"] = {\n style: {\n zIndex: theme.zIndices.tooltip,\n width: \"auto\",\n position: \"relative\",\n },\n };\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <HvBaseDropdown\n id={id}\n className={cx(\n dropDownMenuClasses.container,\n css(styles.container),\n className,\n classes?.container\n )}\n classes={{\n root: cx(dropDownMenuClasses.root, css(styles.root), classes?.root),\n container: cx(\n dropDownMenuClasses.baseContainer,\n classes?.baseContainer\n ),\n }}\n expanded={open && !disabled}\n component={\n <HvButton\n icon\n variant={category}\n id={setId(id, \"icon-button\")}\n className={cx(\n dropDownMenuClasses.icon,\n open && dropDownMenuClasses.iconSelected,\n css(styles.icon),\n open && css(styles.iconSelected),\n classes?.icon,\n open && classes?.iconSelected\n )}\n aria-expanded={open}\n disabled={disabled}\n aria-label=\"Dropdown menu\"\n >\n {icon || (\n <MoreOptionsVertical\n color={disabled ? \"secondary_60\" : undefined}\n />\n )}\n </HvButton>\n }\n aria-haspopup=\"menu\"\n placement={placement}\n variableWidth\n disablePortal={disablePortal}\n onToggle={(e, s) => {\n // this will only run if uncontrolled\n setOpen(s);\n onToggle?.(e, s);\n }}\n disabled={disabled}\n onContainerCreation={setFocusToContent}\n popperProps={popperStyle}\n {...others}\n >\n <HvPanel\n className={cx(\n dropDownMenuClasses.menuListRoot,\n css(styles.menuListRoot),\n classes?.menuListRoot\n )}\n >\n <HvList\n id={listId}\n values={dataList}\n selectable={false}\n condensed={condensed}\n onClick={(event, item) => {\n if (!keepOpened) handleClose(event);\n onClick?.(event, item);\n }}\n onKeyDown={handleKeyDown}\n classes={{\n root: cx(dropDownMenuClasses.menuList, classes?.menuList),\n }}\n />\n </HvPanel>\n </HvBaseDropdown>\n )}\n </ClassNames>\n );\n};\n\nexport default HvDropDownMenu;\n"],"names":["HvDropDownMenu","id","idProp","classes","className","icon","placement","dataList","disablePortal","onToggle","onClick","keepOpened","disabled","expanded","defaultExpanded","category","others","open","setOpen","useControlled","Boolean","useUniqueId","focusNodes","getPrevNextFocus","setId","listId","handleClose","event","handleKeyDown","isKeypress","keyboardCodes","Tab","node","shiftKey","prevFocus","nextFocus","setTimeout","focus","preventDefault","setFocusToContent","containerRef","getElementsByTagName","condensed","useMemo","every","el","popperStyle","style","zIndex","theme","zIndices","tooltip","width","position","ClassNames","children","css","cx","HvBaseDropdown","dropDownMenuClasses","container","styles","root","baseContainer","component","HvButton","variant","iconSelected","_jsx","MoreOptionsVertical","color","undefined","variableWidth","e","s","onContainerCreation","popperProps","HvPanel","menuListRoot","HvList","values","selectable","item","onKeyDown","menuList"],"mappings":";;;;;;;;;;;;;;;;;AAoEA,MAAMA,iBAAiBA,CAAC;AAAA,EACtBC,IAAIC;AAAAA,EACJC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,YAAY;AAAA,EACZC;AAAAA,EACAC,gBAAgB;AAAA,EAChBC;AAAAA,EACAC;AAAAA,EACAC,aAAa;AAAA,EACbC,WAAW;AAAA,EACXC;AAAAA,EACAC,kBAAkB;AAAA,EAClBC,WAAW;AAAA,EACX,GAAGC;AACgB,MAAM;AACnB,QAAA,CAACC,MAAMC,OAAO,IAAIC,cAAcN,UAAUO,QAAQN,eAAe,CAAC;AAClEb,QAAAA,KAAKoB,YAAYnB,QAAQ,eAAe;AAC9C,QAAMoB,aAAaC,iBAAiBC,MAAMvB,IAAI,aAAa,CAAC;AAEtDwB,QAAAA,SAASD,MAAMvB,IAAI,MAAM;AAE/B,QAAMyB,cAAeC,CAAU,UAAA;AAE7BT,YAAQ,KAAK;AACbT,yCAAWkB,OAAO;AAAA,EAAK;AAIzB,QAAMC,gBAAiBD,CAAU,UAAA;AAC/B,QAAIE,WAAWF,OAAOG,cAAcC,GAAG,GAAG;AACxC,YAAMC,OAAOL,MAAMM,WAAWX,WAAWY,YAAYZ,WAAWa;AAC5DH,UAAAA;AAAMI,mBAAW,MAAMJ,KAAKK,MAAK,GAAI,CAAC;AAC1CX,kBAAYC,KAAK;AAAA,IACnB;AACAA,UAAMW,eAAgB;AAAA,EAAA;AAGxB,QAAMC,oBAAqBC,CAAiB,iBAAA;;AAC1CA,uDAAcC,qBAAqB,MAAM,OAAzCD,mBAA6CH;AAAAA,EAAO;AAGtD,QAAMK,YAAYC,QAAQ,MAAMpC,SAASqC,MAAOC,CAAAA,OAAO,CAACA,GAAGxC,IAAI,GAAG,CAACE,QAAQ,CAAC;AAC5E,QAAMuC,cAAkD;AAAA,IACtDC,OAAO;AAAA,MACLC,QAAQC,MAAMC,SAASC;AAAAA,MACvBC,OAAO;AAAA,MACPC,UAAU;AAAA,IACZ;AAAA,EAAA;AAGF,6BACGC,YAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,MAAKC;AAAAA,IAAAA,0BACNC,gBAAc;AAAA,MACbzD;AAAAA,MACAG,WAAWqD,GACTE,oBAAoBC,WACpBJ,IAAIK,OAAOD,SAAS,GACpBxD,WACAD,mCAASyD,SAAS;AAAA,MAEpBzD,SAAS;AAAA,QACP2D,MAAML,GAAGE,oBAAoBG,MAAMN,IAAIK,OAAOC,IAAI,GAAG3D,mCAAS2D,IAAI;AAAA,QAClEF,WAAWH,GACTE,oBAAoBI,eACpB5D,mCAAS4D,aAAa;AAAA,MAE1B;AAAA,MACAlD,UAAUI,QAAQ,CAACL;AAAAA,MACnBoD,+BACGC,UAAQ;AAAA,QACP5D,MAAI;AAAA,QACJ6D,SAASnD;AAAAA,QACTd,IAAIuB,MAAMvB,IAAI,aAAa;AAAA,QAC3BG,WAAWqD,GACTE,oBAAoBtD,MACpBY,QAAQ0C,oBAAoBQ,cAC5BX,IAAIK,OAAOxD,IAAI,GACfY,QAAQuC,IAAIK,OAAOM,YAAY,GAC/BhE,mCAASE,MACTY,SAAQd,mCAASgE,aAAY;AAAA,QAE/B,iBAAelD;AAAAA,QACfL;AAAAA,QACA,cAAW;AAAA,QAAe2C,UAEzBlD,QACC+D,oBAACC,qBAAmB;AAAA,UAClBC,OAAO1D,WAAW,iBAAiB2D;AAAAA,QAAAA,CAAU;AAAA,MAAA,CAIpD;AAAA,MACD,iBAAc;AAAA,MACdjE;AAAAA,MACAkE,eAAa;AAAA,MACbhE;AAAAA,MACAC,UAAUA,CAACgE,GAAGC,MAAM;AAElBxD,gBAAQwD,CAAC;AACTjE,6CAAWgE,GAAGC;AAAAA,MAChB;AAAA,MACA9D;AAAAA,MACA+D,qBAAqBpC;AAAAA,MACrBqC,aAAa9B;AAAAA,MAAY,GACrB9B;AAAAA,MAAMuC,8BAETsB,SAAO;AAAA,QACNzE,WAAWqD,GACTE,oBAAoBmB,cACpBtB,IAAIK,OAAOiB,YAAY,GACvB3E,mCAAS2E,YAAY;AAAA,QACrBvB,8BAEDwB,QAAM;AAAA,UACL9E,IAAIwB;AAAAA,UACJuD,QAAQzE;AAAAA,UACR0E,YAAY;AAAA,UACZvC;AAAAA,UACAhC,SAASA,CAACiB,OAAOuD,SAAS;AACxB,gBAAI,CAACvE;AAAYe,0BAAYC,KAAK;AAClCjB,+CAAUiB,OAAOuD;AAAAA,UACnB;AAAA,UACAC,WAAWvD;AAAAA,UACXzB,SAAS;AAAA,YACP2D,MAAML,GAAGE,oBAAoByB,UAAUjF,mCAASiF,QAAQ;AAAA,UAC1D;AAAA,QAAA,CAAE;AAAA,MAAA,CACF;AAAA,IAAA,CACM;AAAA,EAAA,CAGH;AAEjB;AAEA,MAAA,mBAAepF;"}
@@ -2,16 +2,16 @@ import { useState, useRef } from "react";
2
2
  import uniqueId from "lodash/uniqueId";
3
3
  import accept from "attr-accept";
4
4
  import { clsx } from "clsx";
5
- import withId from "../../../hocs/withId.js";
6
5
  import { convertUnits } from "../utils.js";
7
6
  import { StyledDropZoneLabelsGroup, StyledLabel, StyledInfoMessage, StyledDropZoneContainer, StyledInput, StyledDropArea, StyledDropAreaLabel, StyledDragText, StyledDropAreaIcon, StyledDropAreaLabels, StyledSelectedFilesText } from "./DropZone.styles.js";
8
7
  import dropZoneClasses from "./dropZoneClasses.js";
9
8
  import { jsxs, Fragment, jsx } from "@emotion/react/jsx-runtime";
9
+ import useUniqueId from "../../../hooks/useUniqueId.js";
10
10
  import { setId } from "../../../utils/setId.js";
11
11
  import { isKeypress } from "../../../utils/keyboardUtils/keyCheck.js";
12
12
  import { keyboardCodes } from "../../../utils/keyboardUtils/keyboardCodes.js";
13
- const HvDropZone = withId(({
14
- id,
13
+ const HvDropZone = ({
14
+ id: idProp,
15
15
  classes,
16
16
  labels,
17
17
  acceptedFiles,
@@ -22,6 +22,7 @@ const HvDropZone = withId(({
22
22
  disabled = false,
23
23
  onFilesAdded
24
24
  }) => {
25
+ const id = useUniqueId(idProp, "dropzone");
25
26
  const [dragState, setDrag] = useState(false);
26
27
  const inputRef = useRef(null);
27
28
  const leaveDropArea = () => {
@@ -158,7 +159,7 @@ const HvDropZone = withId(({
158
159
  })]
159
160
  })]
160
161
  });
161
- });
162
+ };
162
163
  export {
163
164
  HvDropZone
164
165
  };