@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.
- package/dist/cjs/components/ActionsGeneric/ActionsGeneric.cjs.map +1 -1
- package/dist/cjs/components/BaseInput/BaseInput.cjs +18 -1
- package/dist/cjs/components/BaseInput/BaseInput.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/BreadCrumb.cjs +3 -3
- package/dist/cjs/components/BreadCrumb/BreadCrumb.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/Page/Page.cjs +22 -12
- package/dist/cjs/components/BreadCrumb/Page/Page.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/Page/Page.styles.cjs +19 -44
- package/dist/cjs/components/BreadCrumb/Page/Page.styles.cjs.map +1 -1
- package/dist/cjs/components/Calendar/Calendar.cjs +4 -0
- package/dist/cjs/components/Calendar/Calendar.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.cjs +3 -3
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.styles.cjs +23 -16
- package/dist/cjs/components/Calendar/CalendarHeader/CalendarHeader.styles.cjs.map +1 -1
- package/dist/cjs/components/Calendar/SingleCalendar/CalendarCell.cjs +5 -17
- package/dist/cjs/components/Calendar/SingleCalendar/CalendarCell.cjs.map +1 -1
- package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.cjs +3 -1
- package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.cjs.map +1 -1
- package/dist/cjs/components/Calendar/utils.cjs +0 -8
- package/dist/cjs/components/Calendar/utils.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +5 -3
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.cjs +4 -3
- package/dist/cjs/components/DropDownMenu/DropDownMenu.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/DropZone/DropZone.cjs +5 -4
- package/dist/cjs/components/FileUploader/DropZone/DropZone.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/Counter/Counter.cjs +1 -2
- package/dist/cjs/components/FilterGroup/Counter/Counter.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.styles.cjs +10 -14
- package/dist/cjs/components/Pagination/Pagination.styles.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.styles.cjs +23 -37
- package/dist/cjs/components/Tooltip/Tooltip.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs +7 -0
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs +2 -1
- package/dist/cjs/components/VerticalNavigation/VerticalNavigation.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/VerticalNavigationContext.cjs.map +1 -1
- package/dist/cjs/hooks/useUniqueId.cjs +1 -1
- package/dist/cjs/hooks/useUniqueId.cjs.map +1 -1
- package/dist/cjs/index.cjs +0 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/components/ActionsGeneric/ActionsGeneric.js.map +1 -1
- package/dist/esm/components/BaseInput/BaseInput.js +18 -1
- package/dist/esm/components/BaseInput/BaseInput.js.map +1 -1
- package/dist/esm/components/BreadCrumb/BreadCrumb.js +3 -3
- package/dist/esm/components/BreadCrumb/BreadCrumb.js.map +1 -1
- package/dist/esm/components/BreadCrumb/Page/Page.js +23 -13
- package/dist/esm/components/BreadCrumb/Page/Page.js.map +1 -1
- package/dist/esm/components/BreadCrumb/Page/Page.styles.js +19 -42
- package/dist/esm/components/BreadCrumb/Page/Page.styles.js.map +1 -1
- package/dist/esm/components/Calendar/Calendar.js +4 -0
- package/dist/esm/components/Calendar/Calendar.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.js +4 -4
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.styles.js +24 -17
- package/dist/esm/components/Calendar/CalendarHeader/CalendarHeader.styles.js.map +1 -1
- package/dist/esm/components/Calendar/SingleCalendar/CalendarCell.js +6 -18
- package/dist/esm/components/Calendar/SingleCalendar/CalendarCell.js.map +1 -1
- package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.js +3 -1
- package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.js.map +1 -1
- package/dist/esm/components/Calendar/utils.js +1 -9
- package/dist/esm/components/Calendar/utils.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +5 -3
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.js +4 -3
- package/dist/esm/components/DropDownMenu/DropDownMenu.js.map +1 -1
- package/dist/esm/components/FileUploader/DropZone/DropZone.js +5 -4
- package/dist/esm/components/FileUploader/DropZone/DropZone.js.map +1 -1
- package/dist/esm/components/FilterGroup/Counter/Counter.js +1 -2
- package/dist/esm/components/FilterGroup/Counter/Counter.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.styles.js +10 -14
- package/dist/esm/components/Pagination/Pagination.styles.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.styles.js +24 -38
- package/dist/esm/components/Tooltip/Tooltip.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js +7 -0
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.js +2 -1
- package/dist/esm/components/VerticalNavigation/VerticalNavigation.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/VerticalNavigationContext.js.map +1 -1
- package/dist/esm/hooks/useUniqueId.js +2 -2
- package/dist/esm/hooks/useUniqueId.js.map +1 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +40 -44
- package/package.json +2 -2
- package/dist/cjs/hocs/withId.cjs +0 -31
- package/dist/cjs/hocs/withId.cjs.map +0 -1
- package/dist/esm/hocs/withId.js +0 -28
- package/dist/esm/hocs/withId.js.map +0 -1
|
@@ -32,7 +32,8 @@ const _styled__default = /* @__PURE__ */ _interopDefault(_styled);
|
|
|
32
32
|
const DEFAULT_LABELS = {
|
|
33
33
|
applyLabel: "Apply",
|
|
34
34
|
cancelLabel: "Cancel",
|
|
35
|
-
clearLabel: "Clear"
|
|
35
|
+
clearLabel: "Clear",
|
|
36
|
+
invalidLabel: "Invalid date"
|
|
36
37
|
};
|
|
37
38
|
const HvDatePicker = ({
|
|
38
39
|
classes,
|
|
@@ -236,7 +237,7 @@ const HvDatePicker = ({
|
|
|
236
237
|
label: "StyledTypography"
|
|
237
238
|
})({
|
|
238
239
|
color: dateString ? uikitStyles.theme.colors.secondary : uikitStyles.theme.datePicker.dropdownPlaceholderColor
|
|
239
|
-
}, 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= */");
|
|
240
|
+
}, 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 */");
|
|
240
241
|
return /* @__PURE__ */ jsxRuntime.jsx(StyledTypography, {
|
|
241
242
|
variant,
|
|
242
243
|
children: text
|
|
@@ -332,7 +333,8 @@ const HvDatePicker = ({
|
|
|
332
333
|
},
|
|
333
334
|
locale,
|
|
334
335
|
...visibleDate,
|
|
335
|
-
...calendarProps
|
|
336
|
+
...calendarProps,
|
|
337
|
+
invalidDateLabel: labels == null ? void 0 : labels.invalidDateLabel
|
|
336
338
|
}), (rangeMode || showActions) && renderActions()]
|
|
337
339
|
}), canShowError && /* @__PURE__ */ jsxRuntime.jsx(WarningText.HvWarningText, {
|
|
338
340
|
id: setId.setId(elementId, "error"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.cjs","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.cjs","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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"}
|
|
@@ -4,10 +4,10 @@ const React = require("react");
|
|
|
4
4
|
const react = require("@emotion/react");
|
|
5
5
|
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
6
6
|
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
7
|
-
const withId = require("../../hocs/withId.cjs");
|
|
8
7
|
const DropDownMenu_styles = require("./DropDownMenu.styles.cjs");
|
|
9
8
|
const dropDownMenuClasses = require("./dropDownMenuClasses.cjs");
|
|
10
9
|
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
10
|
+
const useUniqueId = require("../../hooks/useUniqueId.cjs");
|
|
11
11
|
const focusableElementFinder = require("../../utils/focusableElementFinder.cjs");
|
|
12
12
|
const BaseDropdown = require("../BaseDropdown/BaseDropdown.cjs");
|
|
13
13
|
const Panel = require("../Panel/Panel.cjs");
|
|
@@ -18,7 +18,7 @@ const Button = require("../Button/Button.cjs");
|
|
|
18
18
|
const keyCheck = require("../../utils/keyboardUtils/keyCheck.cjs");
|
|
19
19
|
const keyboardCodes = require("../../utils/keyboardUtils/keyboardCodes.cjs");
|
|
20
20
|
const HvDropDownMenu = ({
|
|
21
|
-
id,
|
|
21
|
+
id: idProp,
|
|
22
22
|
classes,
|
|
23
23
|
className,
|
|
24
24
|
icon,
|
|
@@ -35,6 +35,7 @@ const HvDropDownMenu = ({
|
|
|
35
35
|
...others
|
|
36
36
|
}) => {
|
|
37
37
|
const [open, setOpen] = useControlled.useControlled(expanded, Boolean(defaultExpanded));
|
|
38
|
+
const id = useUniqueId.default(idProp, "dropdown-menu");
|
|
38
39
|
const focusNodes = focusableElementFinder.getPrevNextFocus(setId.setId(id, "icon-button"));
|
|
39
40
|
const listId = setId.setId(id, "list");
|
|
40
41
|
const handleClose = (event) => {
|
|
@@ -119,6 +120,6 @@ const HvDropDownMenu = ({
|
|
|
119
120
|
})
|
|
120
121
|
});
|
|
121
122
|
};
|
|
122
|
-
const HvDropDownMenu$1 =
|
|
123
|
+
const HvDropDownMenu$1 = HvDropDownMenu;
|
|
123
124
|
exports.default = HvDropDownMenu$1;
|
|
124
125
|
//# sourceMappingURL=DropDownMenu.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropDownMenu.cjs","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.cjs","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":"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"}
|
|
@@ -4,19 +4,19 @@ const React = require("react");
|
|
|
4
4
|
const uniqueId = require("lodash/uniqueId");
|
|
5
5
|
const accept = require("attr-accept");
|
|
6
6
|
const clsx = require("clsx");
|
|
7
|
-
const withId = require("../../../hocs/withId.cjs");
|
|
8
7
|
const utils = require("../utils.cjs");
|
|
9
8
|
const DropZone_styles = require("./DropZone.styles.cjs");
|
|
10
9
|
const dropZoneClasses = require("./dropZoneClasses.cjs");
|
|
11
10
|
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
11
|
+
const useUniqueId = require("../../../hooks/useUniqueId.cjs");
|
|
12
12
|
const setId = require("../../../utils/setId.cjs");
|
|
13
13
|
const keyCheck = require("../../../utils/keyboardUtils/keyCheck.cjs");
|
|
14
14
|
const keyboardCodes = require("../../../utils/keyboardUtils/keyboardCodes.cjs");
|
|
15
15
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
16
16
|
const uniqueId__default = /* @__PURE__ */ _interopDefault(uniqueId);
|
|
17
17
|
const accept__default = /* @__PURE__ */ _interopDefault(accept);
|
|
18
|
-
const HvDropZone =
|
|
19
|
-
id,
|
|
18
|
+
const HvDropZone = ({
|
|
19
|
+
id: idProp,
|
|
20
20
|
classes,
|
|
21
21
|
labels,
|
|
22
22
|
acceptedFiles,
|
|
@@ -27,6 +27,7 @@ const HvDropZone = withId.default(({
|
|
|
27
27
|
disabled = false,
|
|
28
28
|
onFilesAdded
|
|
29
29
|
}) => {
|
|
30
|
+
const id = useUniqueId.default(idProp, "dropzone");
|
|
30
31
|
const [dragState, setDrag] = React.useState(false);
|
|
31
32
|
const inputRef = React.useRef(null);
|
|
32
33
|
const leaveDropArea = () => {
|
|
@@ -163,6 +164,6 @@ const HvDropZone = withId.default(({
|
|
|
163
164
|
})]
|
|
164
165
|
})]
|
|
165
166
|
});
|
|
166
|
-
}
|
|
167
|
+
};
|
|
167
168
|
exports.HvDropZone = HvDropZone;
|
|
168
169
|
//# sourceMappingURL=DropZone.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropZone.cjs","sources":["../../../../../src/components/FileUploader/DropZone/DropZone.tsx"],"sourcesContent":["import React, { useRef, useState } from \"react\";\nimport uniqueId from \"lodash/uniqueId\";\nimport accept from \"attr-accept\";\nimport { clsx } from \"clsx\";\nimport { isKeypress, keyboardCodes, setId } from \"@core/utils\";\nimport withId from \"@core/hocs/withId\";\nimport { convertUnits } from \"../utils\";\nimport {\n StyledDragText,\n StyledDropArea,\n StyledDropAreaIcon,\n StyledDropAreaLabel,\n StyledDropAreaLabels,\n StyledDropZoneContainer,\n StyledDropZoneLabelsGroup,\n StyledInfoMessage,\n StyledInput,\n StyledLabel,\n StyledSelectedFilesText,\n} from \"./DropZone.styles\";\nimport dropZoneClasses, { HvDropZoneClasses } from \"./dropZoneClasses\";\nimport { HvFileData, HvFilesAddedEvent } from \"../File\";\n\nexport interface HvDropZoneLabels {\n /**\n * Extensions of the accepted file types\n */\n acceptedFiles?: string;\n /**\n * Dropzone area label.\n */\n dropzone?: string;\n /**\n * Size file warning label.\n */\n sizeWarning?: string;\n /**\n * Size file warning label.\n */\n drag?: string;\n /**\n * Size file warning label.\n */\n selectFiles?: string;\n /**\n * Theming sheet used to style components\n * */\n dropFiles?: string;\n /**\n * Message to display when file size is greater than allowed\n * */\n fileSizeError?: string;\n /**\n * Message to display when file type is greater than allowed\n * */\n fileTypeError?: string;\n}\n\nexport interface HvDropZoneProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Labels to present in FileUploader.\n */\n labels?: HvDropZoneLabels;\n /**\n * Whether the Dropzone should accept multiple files at once.\n */\n multiple?: boolean;\n /**\n * If the input is disabled or not\n */\n disabled?: boolean;\n /**\n * Files extensions accepted for upload.\n */\n acceptedFiles: string[];\n /**\n * Max upload size\n * */\n maxFileSize: number;\n /**\n * Function responsible for processing files added to the drop zone.\n */\n onFilesAdded?: HvFilesAddedEvent;\n /**\n * Whether the DropZone should hide labels or not.\n */\n hideLabels?: boolean;\n /**\n * Attributes applied to the input element.\n */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvDropZoneClasses;\n}\n\nexport const HvDropZone = withId(\n ({\n id,\n classes,\n labels,\n acceptedFiles,\n maxFileSize,\n inputProps,\n hideLabels,\n multiple = true,\n disabled = false,\n onFilesAdded,\n }: HvDropZoneProps) => {\n const [dragState, setDrag] = useState<boolean>(false);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const leaveDropArea = () => {\n setDrag(false);\n };\n\n const enterDropArea = () => {\n setDrag(true);\n };\n\n const onChangeHandler = (filesList: FileList) => {\n const filesToProcess = Object.keys(filesList).map((e) => filesList[e]);\n\n const newFiles: HvFileData[] = [];\n\n filesToProcess.forEach((file: File) => {\n const newFile: HvFileData = file;\n\n const isSizeAllowed = file.size <= maxFileSize;\n const isFileAccepted =\n !acceptedFiles.length ||\n acceptedFiles.indexOf(file.type.split(\"/\")[1]) > -1 ||\n acceptedFiles.some((acceptExtension) =>\n accept({ name: file.name, type: file.type }, acceptExtension)\n );\n\n if (!isFileAccepted) {\n newFile.errorMessage = labels?.fileTypeError;\n newFile.status = \"fail\";\n } else if (!isSizeAllowed) {\n newFile.errorMessage = labels?.fileSizeError;\n newFile.status = \"fail\";\n }\n\n newFile.id = uniqueId(\"uploaded-file-data-\");\n newFiles.push(newFile);\n });\n\n onFilesAdded?.(newFiles);\n };\n\n return (\n <>\n {!hideLabels && (\n <StyledDropZoneLabelsGroup\n id={id}\n className={clsx(\n classes?.dropZoneLabelsGroup,\n dropZoneClasses.dropZoneLabelsGroup\n )}\n aria-label=\"File Dropzone\"\n >\n <StyledLabel\n id={setId(id, \"input-file-label\")}\n htmlFor={setId(id, \"input-file\")}\n label={labels?.dropzone}\n className={clsx(\n classes?.dropZoneLabel,\n dropZoneClasses.dropZoneLabel\n )}\n $disabled={disabled}\n />\n <StyledInfoMessage\n $disabled={disabled}\n id={setId(id, \"description\")}\n >\n {Number.isInteger(maxFileSize) &&\n `${labels?.sizeWarning} ${convertUnits(maxFileSize)}`}\n {labels?.acceptedFiles && labels.acceptedFiles}\n {!labels?.acceptedFiles &&\n acceptedFiles.length > 0 &&\n `\\u00A0(${acceptedFiles.join(\", \")})`}\n </StyledInfoMessage>\n </StyledDropZoneLabelsGroup>\n )}\n <StyledDropZoneContainer\n id={setId(id, \"button\")}\n className={clsx(\n classes?.dropZoneContainer,\n dropZoneClasses.dropZoneContainer,\n dragState && clsx(classes?.dragAction, dropZoneClasses.dragAction),\n disabled &&\n clsx(\n classes?.dropZoneContainerDisabled,\n dropZoneClasses.dropZoneContainerDisabled\n )\n )}\n $drag={dragState}\n $disabled={disabled}\n role=\"button\"\n tabIndex={0}\n onDragEnter={(event) => {\n if (!disabled) {\n enterDropArea();\n event.stopPropagation();\n event.preventDefault();\n }\n }}\n onDragLeave={leaveDropArea}\n onDropCapture={leaveDropArea}\n onDragOver={(event) => {\n if (!disabled) {\n enterDropArea();\n event.stopPropagation();\n event.preventDefault();\n }\n }}\n onDrop={(event) => {\n if (!disabled) {\n const { files } = event.dataTransfer;\n if (multiple === true || files.length === 1) {\n event.stopPropagation();\n event.preventDefault();\n onChangeHandler(files);\n }\n }\n }}\n onKeyDown={(e) => {\n if (isKeypress(e, keyboardCodes.Enter) || isKeypress(e, 32)) {\n inputRef.current?.click();\n }\n }}\n >\n <StyledInput\n id={setId(id, \"input-file\")}\n tabIndex={-1}\n className={clsx(classes?.inputArea, dropZoneClasses.inputArea)}\n type=\"file\"\n multiple={multiple}\n disabled={disabled}\n title={!disabled ? `${labels?.drag}\\xa0${labels?.selectFiles}` : \"\"}\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.value = \"\";\n }\n }}\n onChange={() => {\n if (!disabled && inputRef.current?.files) {\n onChangeHandler(inputRef.current.files);\n }\n }}\n ref={inputRef}\n accept={acceptedFiles.join(\",\")}\n {...inputProps}\n />\n <StyledDropArea\n className={clsx(classes?.dropArea, dropZoneClasses.dropArea)}\n >\n {dragState ? (\n <StyledDropAreaLabel\n className={clsx(\n classes?.dropZoneAreaLabels,\n dropZoneClasses.dropZoneAreaLabels\n )}\n >\n <StyledDragText\n className={clsx(classes?.dragText, dropZoneClasses.dragText)}\n >\n {labels?.dropFiles}\n </StyledDragText>\n </StyledDropAreaLabel>\n ) : (\n <>\n <StyledDropAreaIcon\n iconSize=\"M\"\n className={clsx(\n classes?.dropZoneAreaIcon,\n dropZoneClasses.dropZoneAreaIcon\n )}\n color={disabled ? \"secondary_60\" : \"secondary\"}\n />\n <StyledDropAreaLabels\n className={clsx(\n classes?.dropZoneAreaLabels,\n dropZoneClasses.dropZoneAreaLabels\n )}\n >\n <StyledDragText\n className={clsx(\n classes?.dragText,\n dropZoneClasses.dragText\n )}\n >\n {labels?.drag}\n <StyledSelectedFilesText\n className={clsx(\n classes?.selectFilesText,\n dropZoneClasses.selectFilesText\n )}\n >{`\\xa0${labels?.selectFiles}`}</StyledSelectedFilesText>\n </StyledDragText>\n </StyledDropAreaLabels>\n </>\n )}\n </StyledDropArea>\n </StyledDropZoneContainer>\n </>\n );\n }\n);\n"],"names":["HvDropZone","withId","id","classes","labels","acceptedFiles","maxFileSize","inputProps","hideLabels","multiple","disabled","onFilesAdded","dragState","setDrag","useState","inputRef","useRef","leaveDropArea","enterDropArea","onChangeHandler","filesList","filesToProcess","Object","keys","map","e","newFiles","forEach","file","newFile","isSizeAllowed","size","isFileAccepted","length","indexOf","type","split","some","acceptExtension","accept","name","errorMessage","fileTypeError","status","fileSizeError","uniqueId","push","_Fragment","children","StyledDropZoneLabelsGroup","className","clsx","dropZoneLabelsGroup","dropZoneClasses","_jsx","StyledLabel","setId","htmlFor","label","dropzone","dropZoneLabel","$disabled","_jsxs","StyledInfoMessage","Number","isInteger","sizeWarning","convertUnits","join","StyledDropZoneContainer","dropZoneContainer","dragAction","dropZoneContainerDisabled","$drag","role","tabIndex","onDragEnter","event","stopPropagation","preventDefault","onDragLeave","onDropCapture","onDragOver","onDrop","files","dataTransfer","onKeyDown","isKeypress","keyboardCodes","Enter","current","click","StyledInput","inputArea","title","drag","selectFiles","onClick","value","onChange","ref","StyledDropArea","dropArea","StyledDropAreaLabel","dropZoneAreaLabels","StyledDragText","dragText","dropFiles","StyledDropAreaIcon","iconSize","dropZoneAreaIcon","color","StyledDropAreaLabels","StyledSelectedFilesText","selectFilesText"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropZone.cjs","sources":["../../../../../src/components/FileUploader/DropZone/DropZone.tsx"],"sourcesContent":["import React, { useRef, useState } from \"react\";\nimport uniqueId from \"lodash/uniqueId\";\nimport accept from \"attr-accept\";\nimport { clsx } from \"clsx\";\nimport { isKeypress, keyboardCodes, setId } from \"@core/utils\";\nimport { useUniqueId } from \"@core/hooks\";\nimport { convertUnits } from \"../utils\";\nimport {\n StyledDragText,\n StyledDropArea,\n StyledDropAreaIcon,\n StyledDropAreaLabel,\n StyledDropAreaLabels,\n StyledDropZoneContainer,\n StyledDropZoneLabelsGroup,\n StyledInfoMessage,\n StyledInput,\n StyledLabel,\n StyledSelectedFilesText,\n} from \"./DropZone.styles\";\nimport dropZoneClasses, { HvDropZoneClasses } from \"./dropZoneClasses\";\nimport { HvFileData, HvFilesAddedEvent } from \"../File\";\n\nexport interface HvDropZoneLabels {\n /**\n * Extensions of the accepted file types\n */\n acceptedFiles?: string;\n /**\n * Dropzone area label.\n */\n dropzone?: string;\n /**\n * Size file warning label.\n */\n sizeWarning?: string;\n /**\n * Size file warning label.\n */\n drag?: string;\n /**\n * Size file warning label.\n */\n selectFiles?: string;\n /**\n * Theming sheet used to style components\n * */\n dropFiles?: string;\n /**\n * Message to display when file size is greater than allowed\n * */\n fileSizeError?: string;\n /**\n * Message to display when file type is greater than allowed\n * */\n fileTypeError?: string;\n}\n\nexport interface HvDropZoneProps {\n /**\n * Id to be applied to the root node.\n */\n id?: string;\n /**\n * Labels to present in FileUploader.\n */\n labels?: HvDropZoneLabels;\n /**\n * Whether the Dropzone should accept multiple files at once.\n */\n multiple?: boolean;\n /**\n * If the input is disabled or not\n */\n disabled?: boolean;\n /**\n * Files extensions accepted for upload.\n */\n acceptedFiles: string[];\n /**\n * Max upload size\n * */\n maxFileSize: number;\n /**\n * Function responsible for processing files added to the drop zone.\n */\n onFilesAdded?: HvFilesAddedEvent;\n /**\n * Whether the DropZone should hide labels or not.\n */\n hideLabels?: boolean;\n /**\n * Attributes applied to the input element.\n */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n /**\n * A Jss Object used to override or extend the styles applied to the component.\n */\n classes?: HvDropZoneClasses;\n}\n\nexport const HvDropZone = ({\n id: idProp,\n classes,\n labels,\n acceptedFiles,\n maxFileSize,\n inputProps,\n hideLabels,\n multiple = true,\n disabled = false,\n onFilesAdded,\n}: HvDropZoneProps) => {\n const id = useUniqueId(idProp, \"dropzone\");\n const [dragState, setDrag] = useState<boolean>(false);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const leaveDropArea = () => {\n setDrag(false);\n };\n\n const enterDropArea = () => {\n setDrag(true);\n };\n\n const onChangeHandler = (filesList: FileList) => {\n const filesToProcess = Object.keys(filesList).map((e) => filesList[e]);\n\n const newFiles: HvFileData[] = [];\n\n filesToProcess.forEach((file: File) => {\n const newFile: HvFileData = file;\n\n const isSizeAllowed = file.size <= maxFileSize;\n const isFileAccepted =\n !acceptedFiles.length ||\n acceptedFiles.indexOf(file.type.split(\"/\")[1]) > -1 ||\n acceptedFiles.some((acceptExtension) =>\n accept({ name: file.name, type: file.type }, acceptExtension)\n );\n\n if (!isFileAccepted) {\n newFile.errorMessage = labels?.fileTypeError;\n newFile.status = \"fail\";\n } else if (!isSizeAllowed) {\n newFile.errorMessage = labels?.fileSizeError;\n newFile.status = \"fail\";\n }\n\n newFile.id = uniqueId(\"uploaded-file-data-\");\n newFiles.push(newFile);\n });\n\n onFilesAdded?.(newFiles);\n };\n\n return (\n <>\n {!hideLabels && (\n <StyledDropZoneLabelsGroup\n id={id}\n className={clsx(\n classes?.dropZoneLabelsGroup,\n dropZoneClasses.dropZoneLabelsGroup\n )}\n aria-label=\"File Dropzone\"\n >\n <StyledLabel\n id={setId(id, \"input-file-label\")}\n htmlFor={setId(id, \"input-file\")}\n label={labels?.dropzone}\n className={clsx(\n classes?.dropZoneLabel,\n dropZoneClasses.dropZoneLabel\n )}\n $disabled={disabled}\n />\n <StyledInfoMessage $disabled={disabled} id={setId(id, \"description\")}>\n {Number.isInteger(maxFileSize) &&\n `${labels?.sizeWarning} ${convertUnits(maxFileSize)}`}\n {labels?.acceptedFiles && labels.acceptedFiles}\n {!labels?.acceptedFiles &&\n acceptedFiles.length > 0 &&\n `\\u00A0(${acceptedFiles.join(\", \")})`}\n </StyledInfoMessage>\n </StyledDropZoneLabelsGroup>\n )}\n <StyledDropZoneContainer\n id={setId(id, \"button\")}\n className={clsx(\n classes?.dropZoneContainer,\n dropZoneClasses.dropZoneContainer,\n dragState && clsx(classes?.dragAction, dropZoneClasses.dragAction),\n disabled &&\n clsx(\n classes?.dropZoneContainerDisabled,\n dropZoneClasses.dropZoneContainerDisabled\n )\n )}\n $drag={dragState}\n $disabled={disabled}\n role=\"button\"\n tabIndex={0}\n onDragEnter={(event) => {\n if (!disabled) {\n enterDropArea();\n event.stopPropagation();\n event.preventDefault();\n }\n }}\n onDragLeave={leaveDropArea}\n onDropCapture={leaveDropArea}\n onDragOver={(event) => {\n if (!disabled) {\n enterDropArea();\n event.stopPropagation();\n event.preventDefault();\n }\n }}\n onDrop={(event) => {\n if (!disabled) {\n const { files } = event.dataTransfer;\n if (multiple === true || files.length === 1) {\n event.stopPropagation();\n event.preventDefault();\n onChangeHandler(files);\n }\n }\n }}\n onKeyDown={(e) => {\n if (isKeypress(e, keyboardCodes.Enter) || isKeypress(e, 32)) {\n inputRef.current?.click();\n }\n }}\n >\n <StyledInput\n id={setId(id, \"input-file\")}\n tabIndex={-1}\n className={clsx(classes?.inputArea, dropZoneClasses.inputArea)}\n type=\"file\"\n multiple={multiple}\n disabled={disabled}\n title={!disabled ? `${labels?.drag}\\xa0${labels?.selectFiles}` : \"\"}\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.value = \"\";\n }\n }}\n onChange={() => {\n if (!disabled && inputRef.current?.files) {\n onChangeHandler(inputRef.current.files);\n }\n }}\n ref={inputRef}\n accept={acceptedFiles.join(\",\")}\n {...inputProps}\n />\n <StyledDropArea\n className={clsx(classes?.dropArea, dropZoneClasses.dropArea)}\n >\n {dragState ? (\n <StyledDropAreaLabel\n className={clsx(\n classes?.dropZoneAreaLabels,\n dropZoneClasses.dropZoneAreaLabels\n )}\n >\n <StyledDragText\n className={clsx(classes?.dragText, dropZoneClasses.dragText)}\n >\n {labels?.dropFiles}\n </StyledDragText>\n </StyledDropAreaLabel>\n ) : (\n <>\n <StyledDropAreaIcon\n iconSize=\"M\"\n className={clsx(\n classes?.dropZoneAreaIcon,\n dropZoneClasses.dropZoneAreaIcon\n )}\n color={disabled ? \"secondary_60\" : \"secondary\"}\n />\n <StyledDropAreaLabels\n className={clsx(\n classes?.dropZoneAreaLabels,\n dropZoneClasses.dropZoneAreaLabels\n )}\n >\n <StyledDragText\n className={clsx(classes?.dragText, dropZoneClasses.dragText)}\n >\n {labels?.drag}\n <StyledSelectedFilesText\n className={clsx(\n classes?.selectFilesText,\n dropZoneClasses.selectFilesText\n )}\n >{`\\xa0${labels?.selectFiles}`}</StyledSelectedFilesText>\n </StyledDragText>\n </StyledDropAreaLabels>\n </>\n )}\n </StyledDropArea>\n </StyledDropZoneContainer>\n </>\n );\n};\n"],"names":["HvDropZone","id","idProp","classes","labels","acceptedFiles","maxFileSize","inputProps","hideLabels","multiple","disabled","onFilesAdded","useUniqueId","dragState","setDrag","useState","inputRef","useRef","leaveDropArea","enterDropArea","onChangeHandler","filesList","filesToProcess","Object","keys","map","e","newFiles","forEach","file","newFile","isSizeAllowed","size","isFileAccepted","length","indexOf","type","split","some","acceptExtension","accept","name","errorMessage","fileTypeError","status","fileSizeError","uniqueId","push","_Fragment","children","StyledDropZoneLabelsGroup","className","clsx","dropZoneLabelsGroup","dropZoneClasses","_jsx","StyledLabel","setId","htmlFor","label","dropzone","dropZoneLabel","$disabled","_jsxs","StyledInfoMessage","Number","isInteger","sizeWarning","convertUnits","join","StyledDropZoneContainer","dropZoneContainer","dragAction","dropZoneContainerDisabled","$drag","role","tabIndex","onDragEnter","event","stopPropagation","preventDefault","onDragLeave","onDropCapture","onDragOver","onDrop","files","dataTransfer","onKeyDown","isKeypress","keyboardCodes","Enter","current","click","StyledInput","inputArea","title","drag","selectFiles","onClick","value","onChange","ref","StyledDropArea","dropArea","StyledDropAreaLabel","dropZoneAreaLabels","StyledDragText","dragText","dropFiles","StyledDropAreaIcon","iconSize","dropZoneAreaIcon","color","StyledDropAreaLabels","StyledSelectedFilesText","selectFilesText"],"mappings":"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"}
|
|
@@ -22,7 +22,6 @@ const HvFilterGroupCounter = ({
|
|
|
22
22
|
id,
|
|
23
23
|
classes
|
|
24
24
|
}) => {
|
|
25
|
-
var _a;
|
|
26
25
|
const {
|
|
27
26
|
filterOptions,
|
|
28
27
|
filterValues = [],
|
|
@@ -31,7 +30,7 @@ const HvFilterGroupCounter = ({
|
|
|
31
30
|
const options = id && filterOptions.find((option) => option.id === id) ? [filterOptions.find((option) => option.id === id)] : filterOptions;
|
|
32
31
|
const optionIdx = filterOptions.findIndex((option) => option.id === id);
|
|
33
32
|
let groupsCounter = 0;
|
|
34
|
-
|
|
33
|
+
appliedFilters.filter((elem) => elem !== void 0).forEach((fg, i) => {
|
|
35
34
|
groupsCounter += getExistingFiltersById(i, filterValues, filterOptions);
|
|
36
35
|
});
|
|
37
36
|
const partialCounter = id ? getExistingFiltersById(optionIdx, filterValues, filterOptions) || 0 : groupsCounter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Counter.cjs","sources":["../../../../../src/components/FilterGroup/Counter/Counter.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { styles } from \"./Counter.styles\";\nimport { HvFilterGroupFilters, HvFilterGroupValue } from \"../FilterGroup\";\nimport filterGroupCounterClasses, {\n HvFilterGroupCounterClasses,\n} from \"./counterClasses\";\n\nexport interface HvFilterGroupCounterProps {\n className?: string;\n id?: string;\n classes?: HvFilterGroupCounterClasses;\n}\n\nconst getExistingFiltersById = (\n idx: number,\n filterValues: HvFilterGroupValue,\n filterOptions: HvFilterGroupFilters\n) => {\n let total = 0;\n filterValues[idx]?.forEach((fv) => {\n if (filterOptions[idx]?.data.find((f) => f.id === fv)) {\n total += 1;\n }\n });\n return total;\n};\n\nexport const HvFilterGroupCounter = ({\n className,\n id,\n classes,\n}: HvFilterGroupCounterProps) => {\n const {\n filterOptions,\n filterValues = [],\n appliedFilters = [],\n } = useContext(HvFilterGroupContext);\n\n const options =\n id && filterOptions.find((option) => option.id === id)\n ? ([\n filterOptions.find((option) => option.id === id),\n ] as HvFilterGroupFilters)\n : filterOptions;\n const optionIdx = filterOptions.findIndex((option) => option.id === id);\n\n let groupsCounter = 0;\n appliedFilters\n
|
|
1
|
+
{"version":3,"file":"Counter.cjs","sources":["../../../../../src/components/FilterGroup/Counter/Counter.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { ClassNames } from \"@emotion/react\";\nimport { HvFilterGroupContext } from \"../FilterGroupContext\";\nimport { styles } from \"./Counter.styles\";\nimport { HvFilterGroupFilters, HvFilterGroupValue } from \"../FilterGroup\";\nimport filterGroupCounterClasses, {\n HvFilterGroupCounterClasses,\n} from \"./counterClasses\";\n\nexport interface HvFilterGroupCounterProps {\n className?: string;\n id?: string;\n classes?: HvFilterGroupCounterClasses;\n}\n\nconst getExistingFiltersById = (\n idx: number,\n filterValues: HvFilterGroupValue,\n filterOptions: HvFilterGroupFilters\n) => {\n let total = 0;\n filterValues[idx]?.forEach((fv) => {\n if (filterOptions[idx]?.data.find((f) => f.id === fv)) {\n total += 1;\n }\n });\n return total;\n};\n\nexport const HvFilterGroupCounter = ({\n className,\n id,\n classes,\n}: HvFilterGroupCounterProps) => {\n const {\n filterOptions,\n filterValues = [],\n appliedFilters = [],\n } = useContext(HvFilterGroupContext);\n\n const options =\n id && filterOptions.find((option) => option.id === id)\n ? ([\n filterOptions.find((option) => option.id === id),\n ] as HvFilterGroupFilters)\n : filterOptions;\n const optionIdx = filterOptions.findIndex((option) => option.id === id);\n\n let groupsCounter = 0;\n appliedFilters\n .filter((elem) => elem !== undefined)\n .forEach((fg, i) => {\n groupsCounter += getExistingFiltersById(i, filterValues, filterOptions);\n });\n\n const partialCounter = id\n ? getExistingFiltersById(optionIdx, filterValues, filterOptions) || 0\n : groupsCounter;\n\n const totalCounter = options.reduce(\n (acc, option) => acc + option.data.length,\n 0\n );\n\n return (\n <ClassNames>\n {({ css, cx }) => (\n <div\n className={cx(\n filterGroupCounterClasses.root,\n css(styles.root),\n className,\n classes?.root\n )}\n >\n {partialCounter > 0 ? (\n <p\n className={cx(\n filterGroupCounterClasses.partialCounter,\n css(styles.partialCounter),\n classes?.partialCounter\n )}\n >\n {partialCounter}\n </p>\n ) : (\n partialCounter\n )}\n {` / ${totalCounter}`}\n </div>\n )}\n </ClassNames>\n );\n};\n"],"names":["getExistingFiltersById","idx","filterValues","filterOptions","total","forEach","fv","data","find","f","id","HvFilterGroupCounter","className","classes","appliedFilters","useContext","HvFilterGroupContext","options","option","optionIdx","findIndex","groupsCounter","filter","elem","undefined","fg","i","partialCounter","totalCounter","reduce","acc","length","ClassNames","children","css","cx","filterGroupCounterClasses","root","styles"],"mappings":";;;;;;;;AAeA,MAAMA,yBAAyBA,CAC7BC,KACAC,cACAC,kBACG;;AACH,MAAIC,QAAQ;AACCH,qBAAAA,GAAG,MAAHA,mBAAMI,QAASC,CAAO,OAAA;;AAC7BH,SAAAA,MAAAA,cAAcF,GAAG,MAAjBE,gBAAAA,IAAoBI,KAAKC,KAAMC,CAAMA,MAAAA,EAAEC,OAAOJ,KAAK;AAC5C,eAAA;AAAA,IACX;AAAA,EAAA;AAEKF,SAAAA;AACT;AAEO,MAAMO,uBAAuBA,CAAC;AAAA,EACnCC;AAAAA,EACAF;AAAAA,EACAG;AACyB,MAAM;AACzB,QAAA;AAAA,IACJV;AAAAA,IACAD,eAAe,CAAE;AAAA,IACjBY,iBAAiB,CAAA;AAAA,EAAA,IACfC,MAAAA,WAAWC,mBAAAA,oBAAoB;AAEnC,QAAMC,UACJP,MAAMP,cAAcK,KAAMU,CAAAA,WAAWA,OAAOR,OAAOA,EAAE,IAChD,CACCP,cAAcK,KAAMU,CAAAA,WAAWA,OAAOR,OAAOA,EAAE,CAAC,IAElDP;AACN,QAAMgB,YAAYhB,cAAciB,UAAWF,CAAWA,WAAAA,OAAOR,OAAOA,EAAE;AAEtE,MAAIW,gBAAgB;AAEjBC,iBAAAA,OAAQC,UAASA,SAASC,MAAS,EACnCnB,QAAQ,CAACoB,IAAIC,MAAM;AACD1B,qBAAAA,uBAAuB0B,GAAGxB,cAAcC,aAAa;AAAA,EAAA,CACvE;AAEH,QAAMwB,iBAAiBjB,KACnBV,uBAAuBmB,WAAWjB,cAAcC,aAAa,KAAK,IAClEkB;AAEEO,QAAAA,eAAeX,QAAQY,OAC3B,CAACC,KAAKZ,WAAWY,MAAMZ,OAAOX,KAAKwB,QACnC,CAAC;AAGH,wCACGC,MAAAA,YAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,MAAKC;AAAAA,IAAAA,sCACP,OAAA;AAAA,MACEvB,WAAWuB,GACTC,uBAA0BC,MAC1BH,IAAII,sBAAOD,IAAI,GACfzB,WACAC,mCAASwB,IAAI;AAAA,MACbJ,UAEDN,CAAAA,iBAAiB,mCAChB,KAAA;AAAA,QACEf,WAAWuB,GACTC,eAA0BT,QAAAA,gBAC1BO,IAAII,eAAAA,OAAOX,cAAc,GACzBd,mCAASc,cAAc;AAAA,QACvBM,UAEDN;AAAAA,MAAc,CAAA,IAGjBA,gBAEA,MAAKC,cAAc;AAAA,IAAA,CAAA;AAAA,EAAA,CAGd;AAEjB;;"}
|