@hitachivantara/uikit-react-core 5.4.0 → 5.6.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/Accordion/Accordion.cjs.map +1 -1
- package/dist/cjs/components/Accordion/accordionClasses.cjs.map +1 -1
- package/dist/cjs/components/ActionBar/actionBarClasses.cjs.map +1 -1
- package/dist/cjs/components/ActionsGeneric/actionsGenericClasses.cjs.map +1 -1
- package/dist/cjs/components/AppSwitcher/Action/actionClasses.cjs.map +1 -1
- package/dist/cjs/components/AppSwitcher/appSwitcherClasses.cjs.map +1 -1
- package/dist/cjs/components/Avatar/avatarClasses.cjs.map +1 -1
- package/dist/cjs/components/Badge/badgeClasses.cjs.map +1 -1
- package/dist/cjs/components/Banner/Banner.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/ActionContainer/actionContainerClasses.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/MessageContainer/messageContainerClasses.cjs.map +1 -1
- package/dist/cjs/components/Banner/BannerContent/bannerContentClasses.cjs.map +1 -1
- package/dist/cjs/components/Banner/bannerClasses.cjs.map +1 -1
- package/dist/cjs/components/BaseCheckBox/BaseCheckBox.cjs.map +1 -1
- package/dist/cjs/components/BaseCheckBox/baseCheckBoxClasses.cjs.map +1 -1
- package/dist/cjs/components/BaseDropdown/BaseDropdown.cjs.map +1 -1
- package/dist/cjs/components/BaseDropdown/baseDropdownClasses.cjs.map +1 -1
- package/dist/cjs/components/BaseInput/BaseInput.cjs +1 -1
- package/dist/cjs/components/BaseInput/BaseInput.cjs.map +1 -1
- package/dist/cjs/components/BaseInput/baseInputClasses.cjs.map +1 -1
- package/dist/cjs/components/BaseRadio/BaseRadio.cjs.map +1 -1
- package/dist/cjs/components/BaseRadio/baseRadioClasses.cjs.map +1 -1
- package/dist/cjs/components/BaseSwitch/BaseSwitch.cjs.map +1 -1
- package/dist/cjs/components/BaseSwitch/baseSwitchClasses.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/BreadCrumb.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/Page/pageClasses.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/PathElement/pathElementClasses.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/breadCrumbClasses.cjs.map +1 -1
- package/dist/cjs/components/BulkActions/bulkActionsClasses.cjs.map +1 -1
- package/dist/cjs/components/Button/buttonClasses.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarHeader/calendarHeaderClasses.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.cjs +6 -7
- package/dist/cjs/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/ComposedNavigation/composedNavigationClasses.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.cjs +5 -8
- package/dist/cjs/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/MonthSelector/monthSelectorClasses.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarNavigation/Navigation/navigationClasses.cjs.map +1 -1
- package/dist/cjs/components/Calendar/CalendarWeekLabels/calendarWeekLabelsClasses.cjs.map +1 -1
- package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.cjs +6 -7
- package/dist/cjs/components/Calendar/SingleCalendar/SingleCalendar.cjs.map +1 -1
- package/dist/cjs/components/Calendar/SingleCalendar/calendarCellClasses.cjs.map +1 -1
- package/dist/cjs/components/Calendar/SingleCalendar/singleCalendarClasses.cjs.map +1 -1
- package/dist/cjs/components/Calendar/calendarClasses.cjs.map +1 -1
- package/dist/cjs/components/Calendar/utils.cjs +7 -7
- package/dist/cjs/components/Calendar/utils.cjs.map +1 -1
- package/dist/cjs/components/Card/Content/contentClasses.cjs.map +1 -1
- package/dist/cjs/components/Card/Header/Header.cjs.map +1 -1
- package/dist/cjs/components/Card/Header/headerClasses.cjs.map +1 -1
- package/dist/cjs/components/Card/Media/Media.cjs.map +1 -1
- package/dist/cjs/components/Card/Media/mediaClasses.cjs.map +1 -1
- package/dist/cjs/components/Card/cardClasses.cjs.map +1 -1
- package/dist/cjs/components/CheckBox/checkBoxClasses.cjs.map +1 -1
- package/dist/cjs/components/CheckBoxGroup/CheckBoxGroup.cjs.map +1 -1
- package/dist/cjs/components/CheckBoxGroup/checkBoxGroupClasses.cjs.map +1 -1
- package/dist/cjs/components/Container/containerClasses.cjs.map +1 -1
- package/dist/cjs/components/Controls/LeftControl/leftControlClasses.cjs.map +1 -1
- package/dist/cjs/components/Controls/RightControl/rightControlClasses.cjs.map +1 -1
- package/dist/cjs/components/Controls/controlClasses.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.cjs +3 -4
- package/dist/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/datePickerClasses.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/useVisibleDate.cjs +10 -14
- package/dist/cjs/components/DatePicker/useVisibleDate.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/utils.cjs +2 -3
- package/dist/cjs/components/DatePicker/utils.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Actions/actionsClasses.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Content/contentClasses.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Title/Title.cjs.map +1 -1
- package/dist/cjs/components/Dialog/Title/titleClasses.cjs.map +1 -1
- package/dist/cjs/components/Dialog/dialogClasses.cjs.map +1 -1
- package/dist/cjs/components/DotPagination/dotPaginationClasses.cjs.map +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.cjs.map +1 -1
- package/dist/cjs/components/DropDownMenu/dropDownMenuClasses.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/Dropdown.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/List/listClasses.cjs.map +1 -1
- package/dist/cjs/components/Dropdown/dropdownClasses.cjs.map +1 -1
- package/dist/cjs/components/EmptyState/EmptyState.cjs.map +1 -1
- package/dist/cjs/components/EmptyState/emptyStateClasses.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/DropZone/dropZoneClasses.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/File/fileClasses.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/FileList/fileListClasses.cjs.map +1 -1
- package/dist/cjs/components/FileUploader/Preview/previewClasses.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/FilterContent/filterContentClasses.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/filterGroupClasses.cjs.map +1 -1
- package/dist/cjs/components/Focus/Focus.cjs +1 -1
- package/dist/cjs/components/Focus/Focus.cjs.map +1 -1
- package/dist/cjs/components/Focus/focusClasses.cjs.map +1 -1
- package/dist/cjs/components/Footer/footerClasses.cjs.map +1 -1
- package/dist/cjs/components/Forms/Adornment/Adornment.cjs.map +1 -1
- package/dist/cjs/components/Forms/Adornment/adornmentClasses.cjs.map +1 -1
- package/dist/cjs/components/Forms/CharCounter/charCounterClasses.cjs.map +1 -1
- package/dist/cjs/components/Forms/FormElement/FormElement.cjs.map +1 -1
- package/dist/cjs/components/Forms/FormElement/formElementClasses.cjs.map +1 -1
- package/dist/cjs/components/Forms/InfoMessage/infoMessageClasses.cjs.map +1 -1
- package/dist/cjs/components/Forms/Label/labelClasses.cjs.map +1 -1
- package/dist/cjs/components/Forms/Suggestions/Suggestions.styles.cjs +4 -4
- package/dist/cjs/components/Forms/Suggestions/Suggestions.styles.cjs.map +1 -1
- package/dist/cjs/components/Forms/Suggestions/suggestionsClasses.cjs.map +1 -1
- package/dist/cjs/components/Forms/WarningText/warningTextClasses.cjs.map +1 -1
- package/dist/cjs/components/GlobalActions/GlobalActions.cjs.map +1 -1
- package/dist/cjs/components/GlobalActions/globalActionsClasses.cjs.map +1 -1
- package/dist/cjs/components/Grid/Grid.cjs.map +1 -1
- package/dist/cjs/components/Grid/gridClasses.cjs.map +1 -1
- package/dist/cjs/components/Header/Actions/actionsClasses.cjs.map +1 -1
- package/dist/cjs/components/Header/Brand/brandClasses.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/MenuBar/MenuBar.cjs +5 -4
- package/dist/cjs/components/Header/Navigation/MenuBar/MenuBar.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/MenuBar/MenuBar.styles.cjs +33 -17
- package/dist/cjs/components/Header/Navigation/MenuBar/MenuBar.styles.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/MenuBar/menuBarClasses.cjs +8 -0
- package/dist/cjs/components/Header/Navigation/MenuBar/menuBarClasses.cjs.map +1 -0
- package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs +2 -1
- package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.styles.cjs +26 -10
- package/dist/cjs/components/Header/Navigation/MenuItem/MenuItem.styles.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/Navigation.cjs.map +1 -1
- package/dist/cjs/components/Header/Navigation/navigationClasses.cjs.map +1 -1
- package/dist/cjs/components/Header/headerClasses.cjs.map +1 -1
- package/dist/cjs/components/InlineEditor/InlineEditor.cjs.map +1 -1
- package/dist/cjs/components/InlineEditor/inlineEditorClasses.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/Input/inputClasses.cjs.map +1 -1
- package/dist/cjs/components/Kpi/Kpi.cjs.map +1 -1
- package/dist/cjs/components/Kpi/kpiClasses.cjs.map +1 -1
- package/dist/cjs/components/Link/Link.cjs.map +1 -1
- package/dist/cjs/components/Link/linkClasses.cjs.map +1 -1
- package/dist/cjs/components/List/List.cjs.map +1 -1
- package/dist/cjs/components/List/listClasses.cjs.map +1 -1
- package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs.map +1 -1
- package/dist/cjs/components/ListContainer/ListItem/listItemClasses.cjs.map +1 -1
- package/dist/cjs/components/ListContainer/listContainerClasses.cjs.map +1 -1
- package/dist/cjs/components/Loading/Loading.cjs.map +1 -1
- package/dist/cjs/components/Loading/loadingClasses.cjs.map +1 -1
- package/dist/cjs/components/Login/loginClasses.cjs.map +1 -1
- package/dist/cjs/components/MultiButton/multiButtonClasses.cjs.map +1 -1
- package/dist/cjs/components/OverflowTooltip/overflowTooltipClasses.cjs.map +1 -1
- package/dist/cjs/components/Pagination/paginationClasses.cjs.map +1 -1
- package/dist/cjs/components/Panel/panelClasses.cjs.map +1 -1
- package/dist/cjs/components/ProgressBar/progressBarClasses.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.cjs +60 -0
- package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Context.cjs +281 -0
- package/dist/cjs/components/QueryBuilder/Context.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs +89 -0
- package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Attribute/Attribute.cjs +81 -0
- package/dist/cjs/components/QueryBuilder/Rule/Attribute/Attribute.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Operator/Operator.cjs +67 -0
- package/dist/cjs/components/QueryBuilder/Rule/Operator/Operator.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs +110 -0
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Rule.styles.cjs +53 -0
- package/dist/cjs/components/QueryBuilder/Rule/Rule.styles.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.cjs +55 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.cjs +35 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs +197 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.cjs +8 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.cjs +61 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.cjs +9 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.cjs +8 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/Value.cjs +62 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/Value.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/ruleClasses.cjs +8 -0
- package/dist/cjs/components/QueryBuilder/Rule/ruleClasses.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs +212 -0
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.styles.cjs +92 -0
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.styles.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/queryBuilderClasses.cjs +8 -0
- package/dist/cjs/components/QueryBuilder/queryBuilderClasses.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/utils/index.cjs +59 -0
- package/dist/cjs/components/QueryBuilder/utils/index.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/utils/reducer.cjs +93 -0
- package/dist/cjs/components/QueryBuilder/utils/reducer.cjs.map +1 -0
- package/dist/cjs/components/Radio/Radio.cjs.map +1 -1
- package/dist/cjs/components/Radio/radioClasses.cjs.map +1 -1
- package/dist/cjs/components/RadioGroup/RadioGroup.cjs.map +1 -1
- package/dist/cjs/components/RadioGroup/radioGroupClasses.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Horizontal/scrollToHorizontalClasses.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/verticalScrollListItemClasses.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/scrollToVerticalClasses.cjs.map +1 -1
- package/dist/cjs/components/SelectionList/SelectionList.cjs.map +1 -1
- package/dist/cjs/components/SelectionList/selectionListClasses.cjs.map +1 -1
- package/dist/cjs/components/Slider/Slider.cjs.map +1 -1
- package/dist/cjs/components/Slider/SliderInput/SliderInput.cjs.map +1 -1
- package/dist/cjs/components/Slider/SliderInput/sliderInputClasses.cjs.map +1 -1
- package/dist/cjs/components/Slider/sliderClasses.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.cjs.map +1 -1
- package/dist/cjs/components/Snackbar/snackbarClasses.cjs.map +1 -1
- package/dist/cjs/components/Stack/stackClasses.cjs.map +1 -1
- package/dist/cjs/components/Switch/Switch.cjs.map +1 -1
- package/dist/cjs/components/Switch/switchClasses.cjs.map +1 -1
- package/dist/cjs/components/Tab/Tab.cjs.map +1 -1
- package/dist/cjs/components/Tab/tabClasses.cjs.map +1 -1
- package/dist/cjs/components/Table/TableBody/TableBody.cjs +1 -1
- package/dist/cjs/components/Table/TableBody/TableBody.cjs.map +1 -1
- package/dist/cjs/components/Table/TableBody/tableBodyClasses.cjs.map +1 -1
- package/dist/cjs/components/Table/TableCell/tableCellClasses.cjs.map +1 -1
- package/dist/cjs/components/Table/TableContainer/TableContainer.cjs +1 -1
- package/dist/cjs/components/Table/TableContainer/TableContainer.cjs.map +1 -1
- package/dist/cjs/components/Table/TableContainer/tableContainerClasses.cjs.map +1 -1
- package/dist/cjs/components/Table/TableHead/TableHead.cjs +1 -1
- package/dist/cjs/components/Table/TableHead/TableHead.cjs.map +1 -1
- package/dist/cjs/components/Table/TableHead/tableHeadClasses.cjs.map +1 -1
- package/dist/cjs/components/Table/TableHeader/tableHeaderClasses.cjs.map +1 -1
- package/dist/cjs/components/Table/TableRow/TableRow.cjs +1 -1
- package/dist/cjs/components/Table/TableRow/TableRow.cjs.map +1 -1
- package/dist/cjs/components/Table/TableRow/tableRowClasses.cjs.map +1 -1
- package/dist/cjs/components/Table/tableClasses.cjs.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/cjs/components/Tabs/tabsClasses.cjs.map +1 -1
- package/dist/cjs/components/Tag/Tag.cjs.map +1 -1
- package/dist/cjs/components/Tag/tagClasses.cjs.map +1 -1
- package/dist/cjs/components/TagsInput/TagsInput.cjs.map +1 -1
- package/dist/cjs/components/TagsInput/tagsInputClasses.cjs.map +1 -1
- package/dist/cjs/components/TextArea/textAreaClasses.cjs.map +1 -1
- package/dist/cjs/components/TimeAgo/TimeAgo.cjs +39 -0
- package/dist/cjs/components/TimeAgo/TimeAgo.cjs.map +1 -0
- package/dist/cjs/components/TimeAgo/formatUtils.cjs +134 -0
- package/dist/cjs/components/TimeAgo/formatUtils.cjs.map +1 -0
- package/dist/cjs/components/TimeAgo/timeAgoClasses.cjs +8 -0
- package/dist/cjs/components/TimeAgo/timeAgoClasses.cjs.map +1 -0
- package/dist/cjs/components/TimeAgo/useTimeAgo.cjs +29 -0
- package/dist/cjs/components/TimeAgo/useTimeAgo.cjs.map +1 -0
- package/dist/cjs/components/TimeAgo/useTimeout.cjs +17 -0
- package/dist/cjs/components/TimeAgo/useTimeout.cjs.map +1 -0
- package/dist/cjs/components/ToggleButton/ToggleButton.cjs.map +1 -1
- package/dist/cjs/components/Tooltip/tooltipClasses.cjs.map +1 -1
- package/dist/cjs/components/Typography/Typography.cjs +1 -1
- package/dist/cjs/components/Typography/Typography.cjs.map +1 -1
- package/dist/cjs/components/Typography/typographyClasses.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Actions/actionClasses.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Actions/actionsClasses.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Header/headerClasses.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Navigation/Navigation.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/Navigation/navigationClasses.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/navigationSliderClasses.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/treeViewClasses.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/treeViewItemClasses.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/verticalNavigationClasses.cjs.map +1 -1
- package/dist/cjs/hocs/withTooltip.cjs +2 -2
- package/dist/cjs/hocs/withTooltip.cjs.map +1 -1
- package/dist/cjs/index.cjs +8 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/utils/classes.cjs.map +1 -1
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/Accordion/accordionClasses.js.map +1 -1
- package/dist/esm/components/ActionBar/actionBarClasses.js.map +1 -1
- package/dist/esm/components/ActionsGeneric/actionsGenericClasses.js.map +1 -1
- package/dist/esm/components/AppSwitcher/Action/actionClasses.js.map +1 -1
- package/dist/esm/components/AppSwitcher/appSwitcherClasses.js.map +1 -1
- package/dist/esm/components/Avatar/avatarClasses.js.map +1 -1
- package/dist/esm/components/Badge/badgeClasses.js.map +1 -1
- package/dist/esm/components/Banner/Banner.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/ActionContainer/actionContainerClasses.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/MessageContainer/messageContainerClasses.js.map +1 -1
- package/dist/esm/components/Banner/BannerContent/bannerContentClasses.js.map +1 -1
- package/dist/esm/components/Banner/bannerClasses.js.map +1 -1
- package/dist/esm/components/BaseCheckBox/BaseCheckBox.js.map +1 -1
- package/dist/esm/components/BaseCheckBox/baseCheckBoxClasses.js.map +1 -1
- package/dist/esm/components/BaseDropdown/BaseDropdown.js.map +1 -1
- package/dist/esm/components/BaseDropdown/baseDropdownClasses.js.map +1 -1
- package/dist/esm/components/BaseInput/BaseInput.js +1 -1
- package/dist/esm/components/BaseInput/BaseInput.js.map +1 -1
- package/dist/esm/components/BaseInput/baseInputClasses.js.map +1 -1
- package/dist/esm/components/BaseRadio/BaseRadio.js.map +1 -1
- package/dist/esm/components/BaseRadio/baseRadioClasses.js.map +1 -1
- package/dist/esm/components/BaseSwitch/BaseSwitch.js.map +1 -1
- package/dist/esm/components/BaseSwitch/baseSwitchClasses.js.map +1 -1
- package/dist/esm/components/BreadCrumb/BreadCrumb.js.map +1 -1
- package/dist/esm/components/BreadCrumb/Page/pageClasses.js.map +1 -1
- package/dist/esm/components/BreadCrumb/PathElement/pathElementClasses.js.map +1 -1
- package/dist/esm/components/BreadCrumb/breadCrumbClasses.js.map +1 -1
- package/dist/esm/components/BulkActions/bulkActionsClasses.js.map +1 -1
- package/dist/esm/components/Button/buttonClasses.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarHeader/calendarHeaderClasses.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.js +6 -7
- package/dist/esm/components/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/ComposedNavigation/composedNavigationClasses.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.js +5 -8
- package/dist/esm/components/Calendar/CalendarNavigation/MonthSelector/MonthSelector.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/MonthSelector/monthSelectorClasses.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarNavigation/Navigation/navigationClasses.js.map +1 -1
- package/dist/esm/components/Calendar/CalendarWeekLabels/calendarWeekLabelsClasses.js.map +1 -1
- package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.js +6 -7
- package/dist/esm/components/Calendar/SingleCalendar/SingleCalendar.js.map +1 -1
- package/dist/esm/components/Calendar/SingleCalendar/calendarCellClasses.js.map +1 -1
- package/dist/esm/components/Calendar/SingleCalendar/singleCalendarClasses.js.map +1 -1
- package/dist/esm/components/Calendar/calendarClasses.js.map +1 -1
- package/dist/esm/components/Calendar/utils.js +6 -7
- package/dist/esm/components/Calendar/utils.js.map +1 -1
- package/dist/esm/components/Card/Content/contentClasses.js.map +1 -1
- package/dist/esm/components/Card/Header/Header.js.map +1 -1
- package/dist/esm/components/Card/Header/headerClasses.js.map +1 -1
- package/dist/esm/components/Card/Media/Media.js.map +1 -1
- package/dist/esm/components/Card/Media/mediaClasses.js.map +1 -1
- package/dist/esm/components/Card/cardClasses.js.map +1 -1
- package/dist/esm/components/CheckBox/checkBoxClasses.js.map +1 -1
- package/dist/esm/components/CheckBoxGroup/CheckBoxGroup.js.map +1 -1
- package/dist/esm/components/CheckBoxGroup/checkBoxGroupClasses.js.map +1 -1
- package/dist/esm/components/Container/containerClasses.js.map +1 -1
- package/dist/esm/components/Controls/LeftControl/leftControlClasses.js.map +1 -1
- package/dist/esm/components/Controls/RightControl/rightControlClasses.js.map +1 -1
- package/dist/esm/components/Controls/controlClasses.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +3 -4
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/datePickerClasses.js.map +1 -1
- package/dist/esm/components/DatePicker/useVisibleDate.js +10 -14
- package/dist/esm/components/DatePicker/useVisibleDate.js.map +1 -1
- package/dist/esm/components/DatePicker/utils.js +2 -3
- package/dist/esm/components/DatePicker/utils.js.map +1 -1
- package/dist/esm/components/Dialog/Actions/actionsClasses.js.map +1 -1
- package/dist/esm/components/Dialog/Content/contentClasses.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +2 -2
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/Dialog/Title/Title.js.map +1 -1
- package/dist/esm/components/Dialog/Title/titleClasses.js.map +1 -1
- package/dist/esm/components/Dialog/dialogClasses.js.map +1 -1
- package/dist/esm/components/DotPagination/dotPaginationClasses.js.map +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.js.map +1 -1
- package/dist/esm/components/DropDownMenu/dropDownMenuClasses.js.map +1 -1
- package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/esm/components/Dropdown/List/listClasses.js.map +1 -1
- package/dist/esm/components/Dropdown/dropdownClasses.js.map +1 -1
- package/dist/esm/components/EmptyState/EmptyState.js.map +1 -1
- package/dist/esm/components/EmptyState/emptyStateClasses.js.map +1 -1
- package/dist/esm/components/FileUploader/DropZone/dropZoneClasses.js.map +1 -1
- package/dist/esm/components/FileUploader/File/fileClasses.js.map +1 -1
- package/dist/esm/components/FileUploader/FileList/fileListClasses.js.map +1 -1
- package/dist/esm/components/FileUploader/Preview/previewClasses.js.map +1 -1
- package/dist/esm/components/FilterGroup/FilterContent/filterContentClasses.js.map +1 -1
- package/dist/esm/components/FilterGroup/filterGroupClasses.js.map +1 -1
- package/dist/esm/components/Focus/Focus.js +1 -1
- package/dist/esm/components/Focus/Focus.js.map +1 -1
- package/dist/esm/components/Focus/focusClasses.js.map +1 -1
- package/dist/esm/components/Footer/footerClasses.js.map +1 -1
- package/dist/esm/components/Forms/Adornment/Adornment.js.map +1 -1
- package/dist/esm/components/Forms/Adornment/adornmentClasses.js.map +1 -1
- package/dist/esm/components/Forms/CharCounter/charCounterClasses.js.map +1 -1
- package/dist/esm/components/Forms/FormElement/FormElement.js.map +1 -1
- package/dist/esm/components/Forms/FormElement/formElementClasses.js.map +1 -1
- package/dist/esm/components/Forms/InfoMessage/infoMessageClasses.js.map +1 -1
- package/dist/esm/components/Forms/Label/labelClasses.js.map +1 -1
- package/dist/esm/components/Forms/Suggestions/Suggestions.styles.js +5 -5
- package/dist/esm/components/Forms/Suggestions/Suggestions.styles.js.map +1 -1
- package/dist/esm/components/Forms/Suggestions/suggestionsClasses.js.map +1 -1
- package/dist/esm/components/Forms/WarningText/warningTextClasses.js.map +1 -1
- package/dist/esm/components/GlobalActions/GlobalActions.js.map +1 -1
- package/dist/esm/components/GlobalActions/globalActionsClasses.js.map +1 -1
- package/dist/esm/components/Grid/Grid.js.map +1 -1
- package/dist/esm/components/Grid/gridClasses.js.map +1 -1
- package/dist/esm/components/Header/Actions/actionsClasses.js.map +1 -1
- package/dist/esm/components/Header/Brand/brandClasses.js.map +1 -1
- package/dist/esm/components/Header/Navigation/MenuBar/MenuBar.js +5 -4
- package/dist/esm/components/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
- package/dist/esm/components/Header/Navigation/MenuBar/MenuBar.styles.js +33 -17
- package/dist/esm/components/Header/Navigation/MenuBar/MenuBar.styles.js.map +1 -1
- package/dist/esm/components/Header/Navigation/MenuBar/menuBarClasses.js +8 -0
- package/dist/esm/components/Header/Navigation/MenuBar/menuBarClasses.js.map +1 -0
- package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js +2 -1
- package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.styles.js +26 -10
- package/dist/esm/components/Header/Navigation/MenuItem/MenuItem.styles.js.map +1 -1
- package/dist/esm/components/Header/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/Header/Navigation/navigationClasses.js.map +1 -1
- package/dist/esm/components/Header/headerClasses.js.map +1 -1
- package/dist/esm/components/InlineEditor/InlineEditor.js.map +1 -1
- package/dist/esm/components/InlineEditor/inlineEditorClasses.js.map +1 -1
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/Input/inputClasses.js.map +1 -1
- package/dist/esm/components/Kpi/Kpi.js.map +1 -1
- package/dist/esm/components/Kpi/kpiClasses.js.map +1 -1
- package/dist/esm/components/Link/Link.js.map +1 -1
- package/dist/esm/components/Link/linkClasses.js.map +1 -1
- package/dist/esm/components/List/List.js.map +1 -1
- package/dist/esm/components/List/listClasses.js.map +1 -1
- package/dist/esm/components/ListContainer/ListItem/ListItem.js.map +1 -1
- package/dist/esm/components/ListContainer/ListItem/listItemClasses.js.map +1 -1
- package/dist/esm/components/ListContainer/listContainerClasses.js.map +1 -1
- package/dist/esm/components/Loading/Loading.js.map +1 -1
- package/dist/esm/components/Loading/loadingClasses.js.map +1 -1
- package/dist/esm/components/Login/loginClasses.js.map +1 -1
- package/dist/esm/components/MultiButton/multiButtonClasses.js.map +1 -1
- package/dist/esm/components/OverflowTooltip/overflowTooltipClasses.js.map +1 -1
- package/dist/esm/components/Pagination/paginationClasses.js.map +1 -1
- package/dist/esm/components/Panel/panelClasses.js.map +1 -1
- package/dist/esm/components/ProgressBar/progressBarClasses.js.map +1 -1
- package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js +60 -0
- package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Context.js +281 -0
- package/dist/esm/components/QueryBuilder/Context.js.map +1 -0
- package/dist/esm/components/QueryBuilder/QueryBuilder.js +86 -0
- package/dist/esm/components/QueryBuilder/QueryBuilder.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Attribute/Attribute.js +81 -0
- package/dist/esm/components/QueryBuilder/Rule/Attribute/Attribute.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Operator/Operator.js +67 -0
- package/dist/esm/components/QueryBuilder/Rule/Operator/Operator.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Rule.js +110 -0
- package/dist/esm/components/QueryBuilder/Rule/Rule.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Rule.styles.js +53 -0
- package/dist/esm/components/QueryBuilder/Rule/Rule.styles.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.js +55 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js +35 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js +194 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.js +8 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.js +61 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.js +9 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.js +8 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/Value.js +62 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/Value.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/ruleClasses.js +8 -0
- package/dist/esm/components/QueryBuilder/Rule/ruleClasses.js.map +1 -0
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js +212 -0
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -0
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.styles.js +92 -0
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.styles.js.map +1 -0
- package/dist/esm/components/QueryBuilder/queryBuilderClasses.js +8 -0
- package/dist/esm/components/QueryBuilder/queryBuilderClasses.js.map +1 -0
- package/dist/esm/components/QueryBuilder/utils/index.js +59 -0
- package/dist/esm/components/QueryBuilder/utils/index.js.map +1 -0
- package/dist/esm/components/QueryBuilder/utils/reducer.js +93 -0
- package/dist/esm/components/QueryBuilder/utils/reducer.js.map +1 -0
- package/dist/esm/components/Radio/Radio.js.map +1 -1
- package/dist/esm/components/Radio/radioClasses.js.map +1 -1
- package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/esm/components/RadioGroup/radioGroupClasses.js.map +1 -1
- package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.js.map +1 -1
- package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.js.map +1 -1
- package/dist/esm/components/ScrollTo/Horizontal/scrollToHorizontalClasses.js.map +1 -1
- package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.js.map +1 -1
- package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/verticalScrollListItemClasses.js.map +1 -1
- package/dist/esm/components/ScrollTo/Vertical/scrollToVerticalClasses.js.map +1 -1
- package/dist/esm/components/ScrollTo/withTooltip.js +2 -2
- package/dist/esm/components/ScrollTo/withTooltip.js.map +1 -1
- package/dist/esm/components/SelectionList/SelectionList.js.map +1 -1
- package/dist/esm/components/SelectionList/selectionListClasses.js.map +1 -1
- package/dist/esm/components/Slider/Slider.js.map +1 -1
- package/dist/esm/components/Slider/SliderInput/SliderInput.js.map +1 -1
- package/dist/esm/components/Slider/SliderInput/sliderInputClasses.js.map +1 -1
- package/dist/esm/components/Slider/sliderClasses.js.map +1 -1
- package/dist/esm/components/Snackbar/SnackbarContentWrapper/snackbarContentWrapperClasses.js.map +1 -1
- package/dist/esm/components/Snackbar/snackbarClasses.js.map +1 -1
- package/dist/esm/components/Stack/stackClasses.js.map +1 -1
- package/dist/esm/components/Switch/Switch.js.map +1 -1
- package/dist/esm/components/Switch/switchClasses.js.map +1 -1
- package/dist/esm/components/Tab/Tab.js.map +1 -1
- package/dist/esm/components/Tab/tabClasses.js.map +1 -1
- package/dist/esm/components/Table/TableBody/TableBody.js +1 -1
- package/dist/esm/components/Table/TableBody/TableBody.js.map +1 -1
- package/dist/esm/components/Table/TableBody/tableBodyClasses.js.map +1 -1
- package/dist/esm/components/Table/TableCell/tableCellClasses.js.map +1 -1
- package/dist/esm/components/Table/TableContainer/TableContainer.js +1 -1
- package/dist/esm/components/Table/TableContainer/TableContainer.js.map +1 -1
- package/dist/esm/components/Table/TableContainer/tableContainerClasses.js.map +1 -1
- package/dist/esm/components/Table/TableHead/TableHead.js +1 -1
- package/dist/esm/components/Table/TableHead/TableHead.js.map +1 -1
- package/dist/esm/components/Table/TableHead/tableHeadClasses.js.map +1 -1
- package/dist/esm/components/Table/TableHeader/tableHeaderClasses.js.map +1 -1
- package/dist/esm/components/Table/TableRow/TableRow.js +1 -1
- package/dist/esm/components/Table/TableRow/TableRow.js.map +1 -1
- package/dist/esm/components/Table/TableRow/tableRowClasses.js.map +1 -1
- package/dist/esm/components/Table/tableClasses.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Tabs/tabsClasses.js.map +1 -1
- package/dist/esm/components/Tag/Tag.js.map +1 -1
- package/dist/esm/components/Tag/tagClasses.js.map +1 -1
- package/dist/esm/components/TagsInput/TagsInput.js.map +1 -1
- package/dist/esm/components/TagsInput/tagsInputClasses.js.map +1 -1
- package/dist/esm/components/TextArea/textAreaClasses.js.map +1 -1
- package/dist/esm/components/TimeAgo/TimeAgo.js +37 -0
- package/dist/esm/components/TimeAgo/TimeAgo.js.map +1 -0
- package/dist/esm/components/TimeAgo/formatUtils.js +126 -0
- package/dist/esm/components/TimeAgo/formatUtils.js.map +1 -0
- package/dist/esm/components/TimeAgo/timeAgoClasses.js +8 -0
- package/dist/esm/components/TimeAgo/timeAgoClasses.js.map +1 -0
- package/dist/esm/components/TimeAgo/useTimeAgo.js +29 -0
- package/dist/esm/components/TimeAgo/useTimeAgo.js.map +1 -0
- package/dist/esm/components/TimeAgo/useTimeout.js +17 -0
- package/dist/esm/components/TimeAgo/useTimeout.js.map +1 -0
- package/dist/esm/components/ToggleButton/ToggleButton.js.map +1 -1
- package/dist/esm/components/Tooltip/tooltipClasses.js.map +1 -1
- package/dist/esm/components/Typography/Typography.js +1 -1
- package/dist/esm/components/Typography/Typography.js.map +1 -1
- package/dist/esm/components/Typography/typographyClasses.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/actionClasses.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Actions/actionsClasses.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Header/headerClasses.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/Navigation/navigationClasses.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/NavigationSlider/navigationSliderClasses.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/treeViewClasses.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/treeViewItemClasses.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/verticalNavigationClasses.js.map +1 -1
- package/dist/esm/hocs/withTooltip.js +2 -2
- package/dist/esm/hocs/withTooltip.js.map +1 -1
- package/dist/esm/index.js +26 -18
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/classes.js.map +1 -1
- package/dist/esm/utils/wrapperTooltip.js +2 -2
- package/dist/esm/utils/wrapperTooltip.js.map +1 -1
- package/dist/types/index.d.ts +1321 -274
- package/package.json +6 -6
- package/dist/cjs/components/Calendar/enums.cjs +0 -32
- package/dist/cjs/components/Calendar/enums.cjs.map +0 -1
- package/dist/esm/components/Calendar/enums.js +0 -32
- package/dist/esm/components/Calendar/enums.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dropdown.js","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { PopperProps } from \"@mui/material\";\nimport { clsx } from \"clsx\";\nimport { setId } from \"@core/utils\";\nimport { useLabels, useUniqueId, useControlled } from \"@core/hooks\";\nimport { isInvalid } from \"../Forms/FormElement/validationStates\";\nimport { getSelected, getSelectionLabel } from \"./utils\";\nimport dropdownClasses, { HvDropdownClasses } from \"./dropdownClasses\";\nimport { HvDropdownList, HvDropdownListProps } from \"./List\";\nimport {\n StyledDropdown,\n StyledHvFormElement,\n StyledLabel,\n StyledLabelContainer,\n StyledTypography,\n} from \"./Dropdown.styles\";\nimport { HvBaseProps } from \"@core/types\";\nimport {\n HvBaseDropdownProps,\n HvInfoMessage,\n HvListValue,\n HvWarningText,\n} from \"@core/components\";\n\nexport interface HvDropdownLabelsProps {\n /**\n * Label for overwrite the default header behavior.\n */\n select?: string;\n /**\n * Label used for the All checkbox action.\n */\n selectAll?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * The label used in the middle of the multiSelection count.\n */\n multiSelectionConjunction?: string;\n /**\n * The label used in search.\n */\n searchPlaceholder?: string;\n}\n\nexport type HvDropdownStatus = \"standBy\" | \"valid\" | \"invalid\";\n\nexport interface HvDropdownProps\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?: HvDropdownClasses;\n /**\n * Id to be applied to the form element root node.\n */\n id?: string;\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?: any;\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?: any;\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 the form element is in read only mode.\n */\n readOnly?: boolean;\n /**\n * Indicates that user input is required on the form element.\n */\n required?: boolean;\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?: HvDropdownStatus;\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?: any;\n /**\n * Identifies the element that provides an error message for the dropdown.\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?: (selected: HvListValue | HvListValue[] | undefined) => void;\n\n /**\n * The list to be rendered by the dropdown.\n */\n values?: HvListValue[];\n /**\n * If `true` the dropdown is multiSelect, if `false` the dropdown is single select.\n */\n multiSelect?: boolean;\n /**\n * If `true` the dropdown is rendered with a search bar, if `false` there won't be a search bar.\n */\n showSearch?: boolean;\n /**\n * If `true` the dropdown starts opened if `false` it starts closed.\n */\n expanded?: boolean;\n /**\n * When uncontrolled, defines the initial expanded state.\n */\n defaultExpanded?: boolean;\n /**\n * If 'true' the dropdown will notify on the first render.\n */\n notifyChangesOnFirstRender?: boolean;\n /**\n * An object containing all the labels for the dropdown.\n */\n labels?: HvDropdownLabelsProps;\n /**\n * If `true` the dropdown will show tooltips when user mouseenter text in list\n */\n hasTooltips?: boolean;\n /**\n * Disable the portal behavior.\n * The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * If `true` the dropdown width depends size of content if `false` the width depends on the header size.\n * Defaults to `false`.\n */\n variableWidth?: boolean;\n /**\n * If `true`, selection can be toggled when single selection.\n */\n singleSelectionToggle?: boolean;\n /**\n * Placement of the dropdown.\n */\n placement?: \"left\" | \"right\";\n /**\n * An object containing props to be wired to the popper component.\n */\n popperProps?: Partial<PopperProps>;\n\n /**\n * Callback called when the user cancels the changes.\n *\n * Called when the cancel button is used and when the user clicks outside the open container.\n *\n * @param {object} event The event source of the callback.\n */\n onCancel?: (event: Event) => void;\n /**\n * Callback called when dropdown changes the expanded state.\n *\n * @param {object} event The event source of the callback.\n * @param {boolean} open If the dropdown new state is open (`true`) or closed (`false`).\n */\n onToggle?: (event: Event, open: boolean) => void;\n /**\n * Callback called when the user clicks outside the open container.\n *\n * @param {object} event The event source of the callback.\n */\n onClickOutside?: (event: Event) => void;\n /**\n * @ignore\n */\n onFocus?: React.FocusEventHandler<any>;\n /**\n * @ignore\n */\n onBlur?: React.FocusEventHandler<any>;\n /**\n * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used\n */\n height?: number;\n /**\n * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used\n */\n maxHeight?: number;\n /**\n * Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options.\n */\n virtualized?: boolean;\n /**\n * Extra props passed to the dropdown.\n */\n baseDropdownProps?: HvBaseDropdownProps;\n /**\n * Extra props passed to the list.\n */\n listProps?: HvDropdownListProps;\n}\n\nconst DEFAULT_LABELS: HvDropdownLabelsProps = {\n select: undefined,\n selectAll: \"All\",\n cancelLabel: \"Cancel\",\n applyLabel: \"Apply\",\n searchPlaceholder: \"Search\",\n multiSelectionConjunction: \"/\",\n};\n\n/**\n * A dropdown list is a graphical control element, similar to a list box, that allows the user to choose one value from a list.\n */\nexport const HvDropdown = (props: HvDropdownProps) => {\n const {\n classes,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly = false,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n placeholder = \"Select...\",\n\n onChange,\n\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n onCancel,\n onToggle,\n onClickOutside,\n\n onFocus,\n onBlur,\n\n values,\n multiSelect = false,\n showSearch = false,\n expanded,\n defaultExpanded = false,\n notifyChangesOnFirstRender = false,\n labels: labelsProp,\n hasTooltips = false,\n disablePortal = false,\n singleSelectionToggle = true,\n placement,\n variableWidth = false,\n popperProps = {},\n height,\n maxHeight,\n virtualized = false,\n baseDropdownProps = {},\n listProps = {},\n ...others\n } = props;\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdropdown\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));\n const [selectionLabel, setSelectionLabel] = useState(\n getSelectionLabel(labels, placeholder, multiSelect, values)\n );\n const [internalValues, setInternalValues] = useState(values);\n\n useEffect(() => {\n setInternalValues(values);\n }, [values]);\n\n useEffect(() => {\n setSelectionLabel(\n getSelectionLabel(labels, placeholder, multiSelect, values)\n );\n }, [labels, multiSelect, placeholder, values]);\n\n if (virtualized && !height && process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.error(\n \"Dropdown/List in virtualized mode requires a height. Please define it.\"\n );\n }\n\n const dropdownHeaderRef = useRef<HTMLDivElement>();\n\n const handleToggle = (_e, open) => {\n onToggle?.(_e, open);\n\n setIsOpen(open);\n\n if (!open) {\n // also run built-in validation when closing without changes\n // as the user \"touched\" the input\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required) {\n const hasSelection = getSelected(internalValues).length > 0;\n\n if (!hasSelection) {\n return \"invalid\";\n }\n }\n\n return \"valid\";\n });\n }\n };\n\n /**\n * Applies the selected values to the state\n *\n * @param {Array} listValues - An array containing the selected values.\n * @param {Boolean} commitChanges - If `true` the selection if finally committed the dropdown header text should reflect the new selection\n * @param {Boolean} toggle -If `true` the dropdown should toggle it's current state\n * @param {Boolean} notifyChanges -If `true` the dropdown will call onChange.\n */\n const handleSelection = (\n listValues,\n commitChanges,\n toggle,\n notifyChanges = true\n ) => {\n const selected = getSelected(listValues);\n\n if (commitChanges) {\n setInternalValues(listValues);\n setSelectionLabel(\n getSelectionLabel(labels, placeholder, multiSelect, listValues)\n );\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && selected.length === 0) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n }\n if (notifyChanges) onChange?.(multiSelect ? selected : selected[0]);\n if (toggle) {\n handleToggle(undefined, false);\n\n // focus-ring won't be visible even if using the keyboard:\n // https://github.com/WICG/focus-visible/issues/88\n dropdownHeaderRef.current?.focus({ preventScroll: true });\n }\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = (evt) => {\n onCancel?.(evt);\n\n handleToggle(evt, false);\n\n // focus-ring won't be visible even if using the keyboard:\n // https://github.com/WICG/focus-visible/issues/88\n dropdownHeaderRef.current?.focus({ preventScroll: true });\n };\n\n const handleClickOutside = (evt) => {\n onClickOutside?.(evt);\n onCancel?.(evt);\n };\n\n const setFocusToContent = (containerRef) => {\n const inputs = containerRef?.getElementsByTagName(\"input\");\n if (inputs?.length > 0) {\n inputs[0].focus();\n return;\n }\n const listItems =\n containerRef != null ? [...containerRef.getElementsByTagName(\"li\")] : [];\n listItems.every((listItem) => {\n if (listItem.tabIndex >= 0) {\n listItem.focus();\n return false;\n }\n return true;\n });\n };\n\n const buildHeaderLabel = () => {\n const hasSelection = getSelected(internalValues).length > 0;\n return labels?.select || !multiSelect ? (\n <StyledTypography\n component=\"div\"\n $selectionDisabled={disabled}\n $isOpen={isOpen || hasSelection}\n variant=\"body\"\n className={clsx(\n dropdownClasses?.placeholder,\n classes?.placeholder,\n disabled &&\n clsx(dropdownClasses?.selectionDisabled, classes?.selectionDisabled)\n )}\n >\n {selectionLabel.selected}\n </StyledTypography>\n ) : (\n <StyledTypography\n component=\"div\"\n $selectionDisabled={disabled}\n className={clsx(\n dropdownClasses?.placeholder,\n classes?.placeholder,\n disabled &&\n clsx(dropdownClasses?.selectionDisabled, classes?.selectionDisabled)\n )}\n variant=\"body\"\n >\n <b>{selectionLabel.selected}</b>\n {` ${labels?.multiSelectionConjunction} ${selectionLabel.total}`}\n </StyledTypography>\n );\n };\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 <StyledHvFormElement\n id={id}\n name={name}\n status={validationState}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n className={clsx(className, dropdownClasses.root, classes?.root)}\n $selectionDisabled={disabled}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <StyledLabelContainer\n className={clsx(\n dropdownClasses.labelContainer,\n classes?.labelContainer\n )}\n >\n {hasLabel && (\n <StyledLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={clsx(classes?.label, dropdownClasses.label)}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={clsx(\n classes?.description,\n dropdownClasses.description\n )}\n >\n {description}\n </HvInfoMessage>\n )}\n </StyledLabelContainer>\n )}\n <StyledDropdown\n id={setId(id, \"dropdown\")}\n classes={{\n root: clsx(classes?.dropdown, dropdownClasses.dropdown),\n arrow: clsx(classes?.arrow, dropdownClasses.arrow),\n header: clsx(\n dropdownClasses.dropdownHeader,\n classes?.dropdownHeader,\n isStateInvalid &&\n clsx(\n dropdownClasses.dropdownHeaderInvalid,\n classes?.dropdownHeaderInvalid\n )\n ),\n headerOpen: clsx(\n dropdownClasses.dropdownHeaderOpen,\n classes?.dropdownHeaderOpen\n ),\n }}\n $dropdownHeaderInvalid={isStateInvalid}\n $readOnly={readOnly}\n expanded={isOpen}\n disabled={disabled}\n readOnly={readOnly}\n disablePortal={disablePortal}\n placement={placement}\n popperProps={popperProps}\n placeholder={buildHeaderLabel()}\n onToggle={handleToggle}\n onClickOutside={handleClickOutside}\n onContainerCreation={setFocusToContent}\n role=\"combobox\"\n variableWidth={variableWidth}\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 onFocus={onFocus}\n onBlur={onBlur}\n dropdownHeaderRef={dropdownHeaderRef}\n {...baseDropdownProps}\n >\n <HvDropdownList\n id={setId(elementId, \"values\")}\n classes={{\n rootList: clsx(dropdownClasses.rootList, classes?.rootList),\n dropdownListContainer: clsx(\n dropdownClasses.dropdownListContainer,\n classes?.dropdownListContainer\n ),\n }}\n values={internalValues}\n multiSelect={multiSelect}\n showSearch={showSearch}\n onChange={handleSelection}\n onCancel={handleCancel}\n labels={labels}\n notifyChangesOnFirstRender={notifyChangesOnFirstRender}\n hasTooltips={hasTooltips}\n singleSelectionToggle={singleSelectionToggle}\n aria-labelledby={hasLabel ? setId(elementId, \"label\") : undefined}\n height={height}\n maxHeight={maxHeight}\n virtualized={virtualized}\n {...listProps}\n />\n </StyledDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={clsx(dropdownClasses.error, classes?.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </StyledHvFormElement>\n );\n};\n"],"names":["DEFAULT_LABELS","select","undefined","selectAll","cancelLabel","applyLabel","searchPlaceholder","multiSelectionConjunction","HvDropdown","props","classes","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","placeholder","onChange","status","statusMessage","ariaErrorMessage","onCancel","onToggle","onClickOutside","onFocus","onBlur","values","multiSelect","showSearch","expanded","defaultExpanded","notifyChangesOnFirstRender","labels","labelsProp","hasTooltips","disablePortal","singleSelectionToggle","placement","variableWidth","popperProps","height","maxHeight","virtualized","baseDropdownProps","listProps","others","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","isOpen","setIsOpen","Boolean","selectionLabel","setSelectionLabel","useState","getSelectionLabel","internalValues","setInternalValues","useEffect","process","env","NODE_ENV","console","error","dropdownHeaderRef","useRef","handleToggle","_e","open","hasSelection","getSelected","length","handleSelection","listValues","commitChanges","toggle","notifyChanges","selected","current","focus","preventScroll","handleCancel","evt","handleClickOutside","setFocusToContent","containerRef","inputs","getElementsByTagName","listItems","every","listItem","tabIndex","buildHeaderLabel","StyledTypography","component","$selectionDisabled","$isOpen","variant","clsx","dropdownClasses","selectionDisabled","children","_jsxs","_jsx","total","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","setId","StyledHvFormElement","root","StyledLabelContainer","labelContainer","StyledLabel","HvInfoMessage","StyledDropdown","dropdown","arrow","header","dropdownHeader","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","$dropdownHeaderInvalid","$readOnly","onContainerCreation","role","join","trim","HvDropdownList","rootList","dropdownListContainer","HvWarningText","disableBorder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Dropdown.js","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { PopperProps } from \"@mui/material\";\nimport { clsx } from \"clsx\";\nimport { setId } from \"@core/utils\";\nimport { useLabels, useUniqueId, useControlled } from \"@core/hooks\";\nimport { isInvalid } from \"../Forms/FormElement/validationStates\";\nimport { getSelected, getSelectionLabel } from \"./utils\";\nimport dropdownClasses, { HvDropdownClasses } from \"./dropdownClasses\";\nimport { HvDropdownList, HvDropdownListProps } from \"./List\";\nimport {\n StyledDropdown,\n StyledHvFormElement,\n StyledLabel,\n StyledLabelContainer,\n StyledTypography,\n} from \"./Dropdown.styles\";\nimport { HvBaseProps } from \"@core/types\";\nimport {\n HvBaseDropdownProps,\n HvInfoMessage,\n HvListValue,\n HvWarningText,\n} from \"@core/components\";\n\nexport interface HvDropdownLabelsProps {\n /**\n * Label for overwrite the default header behavior.\n */\n select?: string;\n /**\n * Label used for the All checkbox action.\n */\n selectAll?: string;\n /**\n * Cancel button label.\n */\n cancelLabel?: string;\n /**\n * Apply button label.\n */\n applyLabel?: string;\n /**\n * The label used in the middle of the multiSelection count.\n */\n multiSelectionConjunction?: string;\n /**\n * The label used in search.\n */\n searchPlaceholder?: string;\n}\n\nexport type HvDropdownStatus = \"standBy\" | \"valid\" | \"invalid\";\n\nexport interface HvDropdownProps\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?: HvDropdownClasses;\n /**\n * Id to be applied to the form element root node.\n */\n id?: string;\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?: any;\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?: any;\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 the form element is in read only mode.\n */\n readOnly?: boolean;\n /**\n * Indicates that user input is required on the form element.\n */\n required?: boolean;\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?: HvDropdownStatus;\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?: any;\n /**\n * Identifies the element that provides an error message for the dropdown.\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?: (selected: HvListValue | HvListValue[] | undefined) => void;\n\n /**\n * The list to be rendered by the dropdown.\n */\n values?: HvListValue[];\n /**\n * If `true` the dropdown is multiSelect, if `false` the dropdown is single select.\n */\n multiSelect?: boolean;\n /**\n * If `true` the dropdown is rendered with a search bar, if `false` there won't be a search bar.\n */\n showSearch?: boolean;\n /**\n * If `true` the dropdown starts opened if `false` it starts closed.\n */\n expanded?: boolean;\n /**\n * When uncontrolled, defines the initial expanded state.\n */\n defaultExpanded?: boolean;\n /**\n * If 'true' the dropdown will notify on the first render.\n */\n notifyChangesOnFirstRender?: boolean;\n /**\n * An object containing all the labels for the dropdown.\n */\n labels?: HvDropdownLabelsProps;\n /**\n * If `true` the dropdown will show tooltips when user mouseenter text in list\n */\n hasTooltips?: boolean;\n /**\n * Disable the portal behavior.\n * The children stay within it's parent DOM hierarchy.\n */\n disablePortal?: boolean;\n /**\n * If `true` the dropdown width depends size of content if `false` the width depends on the header size.\n * Defaults to `false`.\n */\n variableWidth?: boolean;\n /**\n * If `true`, selection can be toggled when single selection.\n */\n singleSelectionToggle?: boolean;\n /**\n * Placement of the dropdown.\n */\n placement?: \"left\" | \"right\";\n /**\n * An object containing props to be wired to the popper component.\n */\n popperProps?: Partial<PopperProps>;\n\n /**\n * Callback called when the user cancels the changes.\n *\n * Called when the cancel button is used and when the user clicks outside the open container.\n *\n * @param {object} event The event source of the callback.\n */\n onCancel?: (event: Event) => void;\n /**\n * Callback called when dropdown changes the expanded state.\n *\n * @param {object} event The event source of the callback.\n * @param {boolean} open If the dropdown new state is open (`true`) or closed (`false`).\n */\n onToggle?: (event: Event, open: boolean) => void;\n /**\n * Callback called when the user clicks outside the open container.\n *\n * @param {object} event The event source of the callback.\n */\n onClickOutside?: (event: Event) => void;\n /**\n * @ignore\n */\n onFocus?: React.FocusEventHandler<any>;\n /**\n * @ignore\n */\n onBlur?: React.FocusEventHandler<any>;\n /**\n * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used\n */\n height?: number;\n /**\n * Experimental. Height of the dropdown, in case you want to control it from a prop. Styles can also be used through dropdownListContainer class. Required in case virtualized is used\n */\n maxHeight?: number;\n /**\n * Experimental. Uses dropdown in a virtualized form, where not all options are rendered initially. Good for use cases with a lot of options.\n */\n virtualized?: boolean;\n /**\n * Extra props passed to the dropdown.\n */\n baseDropdownProps?: HvBaseDropdownProps;\n /**\n * Extra props passed to the list.\n */\n listProps?: HvDropdownListProps;\n}\n\nconst DEFAULT_LABELS: HvDropdownLabelsProps = {\n select: undefined,\n selectAll: \"All\",\n cancelLabel: \"Cancel\",\n applyLabel: \"Apply\",\n searchPlaceholder: \"Search\",\n multiSelectionConjunction: \"/\",\n};\n\n/**\n * A dropdown list is a graphical control element, similar to a list box, that allows the user to choose one value from a list.\n */\nexport const HvDropdown = (props: HvDropdownProps) => {\n const {\n classes,\n className,\n\n id,\n name,\n\n required = false,\n disabled = false,\n readOnly = false,\n\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n description,\n \"aria-describedby\": ariaDescribedBy,\n\n placeholder = \"Select...\",\n\n onChange,\n\n status,\n statusMessage,\n \"aria-errormessage\": ariaErrorMessage,\n\n onCancel,\n onToggle,\n onClickOutside,\n\n onFocus,\n onBlur,\n\n values,\n multiSelect = false,\n showSearch = false,\n expanded,\n defaultExpanded = false,\n notifyChangesOnFirstRender = false,\n labels: labelsProp,\n hasTooltips = false,\n disablePortal = false,\n singleSelectionToggle = true,\n placement,\n variableWidth = false,\n popperProps = {},\n height,\n maxHeight,\n virtualized = false,\n baseDropdownProps = {},\n listProps = {},\n ...others\n } = props;\n\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n\n const elementId = useUniqueId(id, \"hvdropdown\");\n\n const [validationState, setValidationState] = useControlled(\n status,\n \"standBy\"\n );\n\n const [validationMessage] = useControlled(statusMessage, \"Required\");\n\n const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));\n const [selectionLabel, setSelectionLabel] = useState(\n getSelectionLabel(labels, placeholder, multiSelect, values)\n );\n const [internalValues, setInternalValues] = useState(values);\n\n useEffect(() => {\n setInternalValues(values);\n }, [values]);\n\n useEffect(() => {\n setSelectionLabel(\n getSelectionLabel(labels, placeholder, multiSelect, values)\n );\n }, [labels, multiSelect, placeholder, values]);\n\n if (virtualized && !height && process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.error(\n \"Dropdown/List in virtualized mode requires a height. Please define it.\"\n );\n }\n\n const dropdownHeaderRef = useRef<HTMLDivElement>();\n\n const handleToggle = (_e, open) => {\n onToggle?.(_e, open);\n\n setIsOpen(open);\n\n if (!open) {\n // also run built-in validation when closing without changes\n // as the user \"touched\" the input\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required) {\n const hasSelection = getSelected(internalValues).length > 0;\n\n if (!hasSelection) {\n return \"invalid\";\n }\n }\n\n return \"valid\";\n });\n }\n };\n\n /**\n * Applies the selected values to the state\n *\n * @param {Array} listValues - An array containing the selected values.\n * @param {Boolean} commitChanges - If `true` the selection if finally committed the dropdown header text should reflect the new selection\n * @param {Boolean} toggle -If `true` the dropdown should toggle it's current state\n * @param {Boolean} notifyChanges -If `true` the dropdown will call onChange.\n */\n const handleSelection = (\n listValues,\n commitChanges,\n toggle,\n notifyChanges = true\n ) => {\n const selected = getSelected(listValues);\n\n if (commitChanges) {\n setInternalValues(listValues);\n setSelectionLabel(\n getSelectionLabel(labels, placeholder, multiSelect, listValues)\n );\n\n setValidationState(() => {\n // this will only run if status is uncontrolled\n if (required && selected.length === 0) {\n return \"invalid\";\n }\n\n return \"valid\";\n });\n }\n if (notifyChanges) onChange?.(multiSelect ? selected : selected[0]);\n if (toggle) {\n handleToggle(undefined, false);\n\n // focus-ring won't be visible even if using the keyboard:\n // https://github.com/WICG/focus-visible/issues/88\n dropdownHeaderRef.current?.focus({ preventScroll: true });\n }\n };\n\n /**\n * Handles the `Cancel` action. Both single and ranged modes are handled here.\n */\n const handleCancel = (evt) => {\n onCancel?.(evt);\n\n handleToggle(evt, false);\n\n // focus-ring won't be visible even if using the keyboard:\n // https://github.com/WICG/focus-visible/issues/88\n dropdownHeaderRef.current?.focus({ preventScroll: true });\n };\n\n const handleClickOutside = (evt) => {\n onClickOutside?.(evt);\n onCancel?.(evt);\n };\n\n const setFocusToContent = (containerRef) => {\n const inputs = containerRef?.getElementsByTagName(\"input\");\n if (inputs?.length > 0) {\n inputs[0].focus();\n return;\n }\n const listItems =\n containerRef != null ? [...containerRef.getElementsByTagName(\"li\")] : [];\n listItems.every((listItem) => {\n if (listItem.tabIndex >= 0) {\n listItem.focus();\n return false;\n }\n return true;\n });\n };\n\n const buildHeaderLabel = () => {\n const hasSelection = getSelected(internalValues).length > 0;\n return labels?.select || !multiSelect ? (\n <StyledTypography\n component=\"div\"\n $selectionDisabled={disabled}\n $isOpen={isOpen || hasSelection}\n variant=\"body\"\n className={clsx(\n dropdownClasses?.placeholder,\n classes?.placeholder,\n disabled &&\n clsx(dropdownClasses?.selectionDisabled, classes?.selectionDisabled)\n )}\n >\n {selectionLabel.selected}\n </StyledTypography>\n ) : (\n <StyledTypography\n component=\"div\"\n $selectionDisabled={disabled}\n className={clsx(\n dropdownClasses?.placeholder,\n classes?.placeholder,\n disabled &&\n clsx(dropdownClasses?.selectionDisabled, classes?.selectionDisabled)\n )}\n variant=\"body\"\n >\n <b>{selectionLabel.selected}</b>\n {` ${labels?.multiSelectionConjunction} ${selectionLabel.total}`}\n </StyledTypography>\n );\n };\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 <StyledHvFormElement\n id={id}\n name={name}\n status={validationState}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n className={clsx(className, dropdownClasses.root, classes?.root)}\n $selectionDisabled={disabled}\n {...others}\n >\n {(hasLabel || hasDescription) && (\n <StyledLabelContainer\n className={clsx(\n dropdownClasses.labelContainer,\n classes?.labelContainer\n )}\n >\n {hasLabel && (\n <StyledLabel\n id={setId(elementId, \"label\")}\n label={label}\n className={clsx(classes?.label, dropdownClasses.label)}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n id={setId(elementId, \"description\")}\n className={clsx(\n classes?.description,\n dropdownClasses.description\n )}\n >\n {description}\n </HvInfoMessage>\n )}\n </StyledLabelContainer>\n )}\n <StyledDropdown\n id={setId(id, \"dropdown\")}\n classes={{\n root: clsx(classes?.dropdown, dropdownClasses.dropdown),\n arrow: clsx(classes?.arrow, dropdownClasses.arrow),\n header: clsx(\n dropdownClasses.dropdownHeader,\n classes?.dropdownHeader,\n isStateInvalid &&\n clsx(\n dropdownClasses.dropdownHeaderInvalid,\n classes?.dropdownHeaderInvalid\n )\n ),\n headerOpen: clsx(\n dropdownClasses.dropdownHeaderOpen,\n classes?.dropdownHeaderOpen\n ),\n }}\n $dropdownHeaderInvalid={isStateInvalid}\n $readOnly={readOnly}\n expanded={isOpen}\n disabled={disabled}\n readOnly={readOnly}\n disablePortal={disablePortal}\n placement={placement}\n popperProps={popperProps}\n placeholder={buildHeaderLabel()}\n onToggle={handleToggle}\n onClickOutside={handleClickOutside}\n onContainerCreation={setFocusToContent}\n role=\"combobox\"\n variableWidth={variableWidth}\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 onFocus={onFocus}\n onBlur={onBlur}\n dropdownHeaderRef={dropdownHeaderRef}\n {...baseDropdownProps}\n >\n <HvDropdownList\n id={setId(elementId, \"values\")}\n classes={{\n rootList: clsx(dropdownClasses.rootList, classes?.rootList),\n dropdownListContainer: clsx(\n dropdownClasses.dropdownListContainer,\n classes?.dropdownListContainer\n ),\n }}\n values={internalValues}\n multiSelect={multiSelect}\n showSearch={showSearch}\n onChange={handleSelection}\n onCancel={handleCancel}\n labels={labels}\n notifyChangesOnFirstRender={notifyChangesOnFirstRender}\n hasTooltips={hasTooltips}\n singleSelectionToggle={singleSelectionToggle}\n aria-labelledby={hasLabel ? setId(elementId, \"label\") : undefined}\n height={height}\n maxHeight={maxHeight}\n virtualized={virtualized}\n {...listProps}\n />\n </StyledDropdown>\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n disableBorder\n className={clsx(dropdownClasses.error, classes?.error)}\n >\n {validationMessage}\n </HvWarningText>\n )}\n </StyledHvFormElement>\n );\n};\n"],"names":["DEFAULT_LABELS","select","undefined","selectAll","cancelLabel","applyLabel","searchPlaceholder","multiSelectionConjunction","HvDropdown","props","classes","className","id","name","required","disabled","readOnly","label","ariaLabel","ariaLabelledBy","description","ariaDescribedBy","placeholder","onChange","status","statusMessage","ariaErrorMessage","onCancel","onToggle","onClickOutside","onFocus","onBlur","values","multiSelect","showSearch","expanded","defaultExpanded","notifyChangesOnFirstRender","labels","labelsProp","hasTooltips","disablePortal","singleSelectionToggle","placement","variableWidth","popperProps","height","maxHeight","virtualized","baseDropdownProps","listProps","others","useLabels","elementId","useUniqueId","validationState","setValidationState","useControlled","validationMessage","isOpen","setIsOpen","Boolean","selectionLabel","setSelectionLabel","useState","getSelectionLabel","internalValues","setInternalValues","useEffect","process","env","NODE_ENV","console","error","dropdownHeaderRef","useRef","handleToggle","_e","open","hasSelection","getSelected","length","handleSelection","listValues","commitChanges","toggle","notifyChanges","selected","current","focus","preventScroll","handleCancel","evt","handleClickOutside","setFocusToContent","containerRef","inputs","getElementsByTagName","listItems","every","listItem","tabIndex","buildHeaderLabel","StyledTypography","component","$selectionDisabled","$isOpen","variant","clsx","dropdownClasses","selectionDisabled","children","_jsxs","_jsx","total","hasLabel","hasDescription","canShowError","isStateInvalid","isInvalid","errorMessageId","setId","StyledHvFormElement","root","StyledLabelContainer","labelContainer","StyledLabel","HvInfoMessage","StyledDropdown","dropdown","arrow","header","dropdownHeader","dropdownHeaderInvalid","headerOpen","dropdownHeaderOpen","$dropdownHeaderInvalid","$readOnly","onContainerCreation","role","join","trim","HvDropdownList","rootList","dropdownListContainer","HvWarningText","disableBorder"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listClasses.js","sources":["../../../../../src/components/Dropdown/List/listClasses.
|
|
1
|
+
{"version":3,"file":"listClasses.js","sources":["../../../../../src/components/Dropdown/List/listClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvDropdownListClasses {\n rootList?: string;\n dropdownListContainer?: string;\n searchContainer?: string;\n listBorderDown?: string;\n listContainer?: string;\n selectAllContainer?: string;\n selection?: string;\n selectAll?: string;\n}\n\nconst classKeys: (keyof HvDropdownListClasses)[] = [\n \"rootList\",\n \"dropdownListContainer\",\n \"searchContainer\",\n \"listBorderDown\",\n \"listContainer\",\n \"selectAllContainer\",\n \"selection\",\n \"selectAll\",\n];\n\nconst dropdownListClasses = getClasses(classKeys, \"HvDropdownList\");\n\nexport default dropdownListClasses;\n"],"names":["classKeys","dropdownListClasses","getClasses"],"mappings":";AAaA,MAAMA,YAA6C,CACjD,YACA,yBACA,mBACA,kBACA,iBACA,sBACA,aACA,WAAW;AAGb,MAAMC,sBAAsBC,WAAWF,WAAW,gBAAgB;AAElE,MAAA,wBAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdownClasses.js","sources":["../../../../src/components/Dropdown/dropdownClasses.
|
|
1
|
+
{"version":3,"file":"dropdownClasses.js","sources":["../../../../src/components/Dropdown/dropdownClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvDropdownClasses {\n root?: string;\n labelContainer?: string;\n label?: string;\n description?: string;\n error?: string;\n placeholder?: string;\n selectionDisabled?: string;\n dropdown?: string;\n arrow?: string;\n dropdownHeader?: string;\n dropdownHeaderInvalid?: string;\n dropdownHeaderOpen?: string;\n dropdownListContainer?: string;\n rootList?: string;\n}\n\nconst classKeys: (keyof HvDropdownClasses)[] = [\n \"root\",\n \"labelContainer\",\n \"label\",\n \"description\",\n \"error\",\n \"placeholder\",\n \"selectionDisabled\",\n \"dropdown\",\n \"arrow\",\n \"dropdownHeader\",\n \"dropdownHeaderInvalid\",\n \"dropdownHeaderOpen\",\n \"dropdownListContainer\",\n \"rootList\",\n];\n\nconst dropdownClasses = getClasses(classKeys, \"HvDropdown\");\n\nexport default dropdownClasses;\n"],"names":["classKeys","dropdownClasses","getClasses"],"mappings":";AAmBA,MAAMA,YAAyC,CAC7C,QACA,kBACA,SACA,eACA,SACA,eACA,qBACA,YACA,SACA,kBACA,yBACA,sBACA,yBACA,UAAU;AAGZ,MAAMC,kBAAkBC,WAAWF,WAAW,YAAY;AAE1D,MAAA,oBAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState.js","sources":["../../../../src/components/EmptyState/EmptyState.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport React from \"react\";\nimport { HvBaseProps } from \"@core/types\";\nimport emptyStateClasses, { HvEmptyStateClasses } from \"./emptyStateClasses\";\nimport {\n StyledContainer,\n StyledRoot,\n StyledTextContainer,\n StyledTypography,\n} from \"./EmptyState.styles\";\nimport { HvTypographyProps } from \"@core/components\";\nimport { useTheme as useHvTheme } from \"@core/hooks\";\nimport { useTheme } from \"@mui/material/styles\";\n\nexport interface HvEmptyStateProps\n extends HvBaseProps<HTMLDivElement,
|
|
1
|
+
{"version":3,"file":"EmptyState.js","sources":["../../../../src/components/EmptyState/EmptyState.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport React from \"react\";\nimport { HvBaseProps } from \"@core/types\";\nimport emptyStateClasses, { HvEmptyStateClasses } from \"./emptyStateClasses\";\nimport {\n StyledContainer,\n StyledRoot,\n StyledTextContainer,\n StyledTypography,\n} from \"./EmptyState.styles\";\nimport { HvTypographyProps } from \"@core/components\";\nimport { useTheme as useHvTheme } from \"@core/hooks\";\nimport { useTheme } from \"@mui/material/styles\";\n\nexport interface HvEmptyStateProps\n extends HvBaseProps<HTMLDivElement, \"title\"> {\n /** Icon to be presented. */\n icon: React.ReactNode;\n /** The title to be shown. */\n title?: string | React.ReactNode;\n /** The message to be shown. */\n message?: string | React.ReactNode;\n /** The action message to be shown. */\n action?: string | React.ReactNode;\n /** A Jss Object used to override or extend the styles applied to the empty state component. */\n classes?: HvEmptyStateClasses;\n}\n\n/**\n * Empty states communicate that there’s no information, data or values to display in a given context.\n */\nexport const HvEmptyState = (props: HvEmptyStateProps) => {\n const { activeTheme } = useHvTheme();\n\n const muiTheme = useTheme();\n\n const renderNode = (\n type: \"action\" | \"message\" | \"title\",\n variant?: HvTypographyProps[\"variant\"],\n node?: string | React.ReactNode,\n className?: string\n ) =>\n node && (\n <StyledTypography $type={type} variant={variant} className={className}>\n {node}\n </StyledTypography>\n );\n\n const { action, icon, title, message, classes, className, ...others } = props;\n\n return (\n <StyledRoot\n className={clsx(className, emptyStateClasses.root, classes?.root)}\n {...others}\n >\n <StyledContainer\n className={clsx(\n emptyStateClasses.container,\n classes?.container,\n !!(message && !(title || action)) &&\n clsx(\n emptyStateClasses.containerMessageOnly,\n classes?.containerMessageOnly\n )\n )}\n $breakpoints={muiTheme.breakpoints}\n $messageOnly={!!(message && !(title || action))}\n >\n <div\n className={clsx(\n emptyStateClasses.iconContainer,\n classes?.iconContainer\n )}\n >\n {icon}\n </div>\n <StyledTextContainer\n $breakpoints={muiTheme.breakpoints}\n className={clsx(\n emptyStateClasses.textContainer,\n classes?.textContainer\n )}\n >\n {renderNode(\n \"title\",\n activeTheme?.emptyState.titleVariant,\n title,\n clsx(emptyStateClasses.titleContainer, classes?.titleContainer)\n )}\n {renderNode(\n \"message\",\n \"body\",\n message,\n clsx(emptyStateClasses.messageContainer, classes?.messageContainer)\n )}\n {renderNode(\n \"action\",\n \"body\",\n action,\n clsx(emptyStateClasses.actionContainer, classes?.actionContainer)\n )}\n </StyledTextContainer>\n </StyledContainer>\n </StyledRoot>\n );\n};\n"],"names":["HvEmptyState","props","activeTheme","useHvTheme","muiTheme","useTheme","renderNode","type","variant","node","className","StyledTypography","$type","children","action","icon","title","message","classes","others","StyledRoot","clsx","emptyStateClasses","root","StyledContainer","container","containerMessageOnly","$breakpoints","breakpoints","$messageOnly","_jsx","iconContainer","_jsxs","StyledTextContainer","textContainer","emptyState","titleVariant","titleContainer","messageContainer","actionContainer"],"mappings":";;;;;;AA+BaA,MAAAA,eAAeA,CAACC,UAA6B;AAClD,QAAA;AAAA,IAAEC;AAAAA,MAAgBC,SAAY;AAEpC,QAAMC,WAAWC;AAEXC,QAAAA,aAAaA,CACjBC,MACAC,SACAC,MACAC,eAEAD,4BACGE,kBAAgB;AAAA,IAACC,OAAOL;AAAAA,IAAMC;AAAAA,IAAkBE,WAAWA;AAAAA,IAAUG,UACnEJ;AAAAA,EAAAA,CAEJ;AAEG,QAAA;AAAA,IAAEK;AAAAA,IAAQC;AAAAA,IAAMC;AAAAA,IAAOC;AAAAA,IAASC;AAAAA,IAASR;AAAAA,IAAW,GAAGS;AAAAA,EAAWlB,IAAAA;AAExE,6BACGmB,YAAU;AAAA,IACTV,WAAWW,KAAKX,WAAWY,kBAAkBC,MAAML,mCAASK,IAAI;AAAA,IAAE,GAC9DJ;AAAAA,IAAMN,+BAETW,iBAAe;AAAA,MACdd,WAAWW,KACTC,kBAAkBG,WAClBP,mCAASO,WACT,CAAC,EAAER,WAAW,EAAED,SAASF,YACvBO,KACEC,kBAAkBI,sBAClBR,mCAASQ,oBAAoB,CAC9B;AAAA,MAELC,cAAcvB,SAASwB;AAAAA,MACvBC,cAAc,CAAC,EAAEZ,WAAW,EAAED,SAASF;AAAAA,MAASD,WAEhDiB,oBAAA,OAAA;AAAA,QACEpB,WAAWW,KACTC,kBAAkBS,eAClBb,mCAASa,aAAa;AAAA,QACtBlB,UAEDE;AAAAA,MAAAA,CACG,GACNiB,qBAACC,qBAAmB;AAAA,QAClBN,cAAcvB,SAASwB;AAAAA,QACvBlB,WAAWW,KACTC,kBAAkBY,eAClBhB,mCAASgB,aAAa;AAAA,QACtBrB,UAEDP,CAAAA,WACC,SACAJ,2CAAaiC,WAAWC,cACxBpB,OACAK,KAAKC,kBAAkBe,gBAAgBnB,mCAASmB,cAAc,CAAC,GAEhE/B,WACC,WACA,QACAW,SACAI,KAAKC,kBAAkBgB,kBAAkBpB,mCAASoB,gBAAgB,CAAC,GAEpEhC,WACC,UACA,QACAQ,QACAO,KAAKC,kBAAkBiB,iBAAiBrB,mCAASqB,eAAe,CAAC,CAClE;AAAA,MAAA,CACmB,CAAA;AAAA,IAAA,CAAA;AAAA,EAAA,CAEb;AAEjB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emptyStateClasses.js","sources":["../../../../src/components/EmptyState/emptyStateClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvEmptyStateClasses {\n root?: string;\n container?: string;\n containerMessageOnly?: string;\n iconContainer?: string;\n titleContainer?: string;\n textContainer?: string;\n messageContainer?: string;\n actionContainer?: string;\n}\n\nconst classKeys:
|
|
1
|
+
{"version":3,"file":"emptyStateClasses.js","sources":["../../../../src/components/EmptyState/emptyStateClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvEmptyStateClasses {\n root?: string;\n container?: string;\n containerMessageOnly?: string;\n iconContainer?: string;\n titleContainer?: string;\n textContainer?: string;\n messageContainer?: string;\n actionContainer?: string;\n}\n\nconst classKeys: (keyof HvEmptyStateClasses)[] = [\n \"root\",\n \"container\",\n \"containerMessageOnly\",\n \"iconContainer\",\n \"titleContainer\",\n \"textContainer\",\n \"messageContainer\",\n \"actionContainer\",\n];\n\nconst emptyStateClasses = getClasses(classKeys, \"HvEmptyState\");\n\nexport default emptyStateClasses;\n"],"names":["classKeys","emptyStateClasses","getClasses"],"mappings":";AAaA,MAAMA,YAA2C,CAC/C,QACA,aACA,wBACA,iBACA,kBACA,iBACA,oBACA,iBAAiB;AAGnB,MAAMC,oBAAoBC,WAAWF,WAAW,cAAc;AAE9D,MAAA,sBAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropZoneClasses.js","sources":["../../../../../src/components/FileUploader/DropZone/dropZoneClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvDropZoneClasses {\n dropZoneContainer?: string;\n dropZoneLabelsGroup?: string;\n dragAction?: string;\n dropZoneContainerDisabled?: string;\n inputArea?: string;\n dropArea?: string;\n dropZoneAreaLabels?: string;\n dropZoneAreaIcon?: string;\n dropZoneLabel?: string;\n dragText?: string;\n selectFilesText?: string;\n}\n\nconst classKeys:
|
|
1
|
+
{"version":3,"file":"dropZoneClasses.js","sources":["../../../../../src/components/FileUploader/DropZone/dropZoneClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvDropZoneClasses {\n dropZoneContainer?: string;\n dropZoneLabelsGroup?: string;\n dragAction?: string;\n dropZoneContainerDisabled?: string;\n inputArea?: string;\n dropArea?: string;\n dropZoneAreaLabels?: string;\n dropZoneAreaIcon?: string;\n dropZoneLabel?: string;\n dragText?: string;\n selectFilesText?: string;\n}\n\nconst classKeys: (keyof HvDropZoneClasses)[] = [\n \"dropZoneContainer\",\n \"dropZoneLabelsGroup\",\n \"dragAction\",\n \"dropZoneContainerDisabled\",\n \"inputArea\",\n \"dropArea\",\n \"dropZoneAreaLabels\",\n \"dropZoneAreaIcon\",\n \"dropZoneLabel\",\n \"dragText\",\n \"selectFilesText\",\n];\n\nconst dropZoneClasses = getClasses(classKeys, \"HvDropZone\");\n\nexport default dropZoneClasses;\n"],"names":["classKeys","dropZoneClasses","getClasses"],"mappings":";AAgBA,MAAMA,YAAyC,CAC7C,qBACA,uBACA,cACA,6BACA,aACA,YACA,sBACA,oBACA,iBACA,YACA,iBAAiB;AAGnB,MAAMC,kBAAkBC,WAAWF,WAAW,YAAY;AAE1D,MAAA,oBAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileClasses.js","sources":["../../../../../src/components/FileUploader/File/fileClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFileClasses {\n root?: string;\n progressbar?: string;\n progressbarBack?: string;\n nameText?: string;\n progressTextContainer?: string;\n removeButton?: string;\n previewContainer?: string;\n icon?: string;\n fail?: string;\n}\n\nconst classKeys:
|
|
1
|
+
{"version":3,"file":"fileClasses.js","sources":["../../../../../src/components/FileUploader/File/fileClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFileClasses {\n root?: string;\n progressbar?: string;\n progressbarBack?: string;\n nameText?: string;\n progressTextContainer?: string;\n removeButton?: string;\n previewContainer?: string;\n icon?: string;\n fail?: string;\n}\n\nconst classKeys: (keyof HvFileClasses)[] = [\n \"root\",\n \"progressbar\",\n \"progressbarBack\",\n \"nameText\",\n \"progressTextContainer\",\n \"removeButton\",\n \"previewContainer\",\n \"icon\",\n \"fail\",\n];\n\nconst fileClasses = getClasses(classKeys, \"HvFile\");\n\nexport default fileClasses;\n"],"names":["classKeys","fileClasses","getClasses"],"mappings":";AAcA,MAAMA,YAAqC,CACzC,QACA,eACA,mBACA,YACA,yBACA,gBACA,oBACA,QACA,MAAM;AAGR,MAAMC,cAAcC,WAAWF,WAAW,QAAQ;AAElD,MAAA,gBAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileListClasses.js","sources":["../../../../../src/components/FileUploader/FileList/fileListClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFileListClasses {\n list?: string;\n listItem?: string;\n}\n\nconst classKeys:
|
|
1
|
+
{"version":3,"file":"fileListClasses.js","sources":["../../../../../src/components/FileUploader/FileList/fileListClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFileListClasses {\n list?: string;\n listItem?: string;\n}\n\nconst classKeys: (keyof HvFileListClasses)[] = [\"list\", \"listItem\"];\n\nconst fileListClasses = getClasses(classKeys, \"HvFileList\");\n\nexport default fileListClasses;\n"],"names":["classKeys","fileListClasses","getClasses"],"mappings":";AAOA,MAAMA,YAAyC,CAAC,QAAQ,UAAU;AAElE,MAAMC,kBAAkBC,WAAWF,WAAW,YAAY;AAE1D,MAAA,oBAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"previewClasses.js","sources":["../../../../../src/components/FileUploader/Preview/previewClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFileUploaderPreviewClasses {\n previewButton?: string;\n overlay?: string;\n}\n\nconst classKeys:
|
|
1
|
+
{"version":3,"file":"previewClasses.js","sources":["../../../../../src/components/FileUploader/Preview/previewClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFileUploaderPreviewClasses {\n previewButton?: string;\n overlay?: string;\n}\n\nconst classKeys: (keyof HvFileUploaderPreviewClasses)[] = [\n \"previewButton\",\n \"overlay\",\n];\n\nconst fileUploaderPreviewClasses = getClasses(\n classKeys,\n \"HvFileUploaderPreview\"\n);\n\nexport default fileUploaderPreviewClasses;\n"],"names":["classKeys","fileUploaderPreviewClasses","getClasses"],"mappings":";AAOA,MAAMA,YAAoD,CACxD,iBACA,SAAS;AAGX,MAAMC,6BAA6BC,WACjCF,WACA,uBAAuB;AAGzB,MAAA,+BAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterContentClasses.js","sources":["../../../../../src/components/FilterGroup/FilterContent/filterContentClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFilterGroupContentClasses {\n dropdown?: string;\n panel?: string;\n baseDropdownSelection?: string;\n header?: string;\n root?: string;\n leftSidePanel?: string;\n rightSidePanel?: string;\n actionBar?: string;\n space?: string;\n}\n\nconst classKeys:
|
|
1
|
+
{"version":3,"file":"filterContentClasses.js","sources":["../../../../../src/components/FilterGroup/FilterContent/filterContentClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFilterGroupContentClasses {\n dropdown?: string;\n panel?: string;\n baseDropdownSelection?: string;\n header?: string;\n root?: string;\n leftSidePanel?: string;\n rightSidePanel?: string;\n actionBar?: string;\n space?: string;\n}\n\nconst classKeys: (keyof HvFilterGroupContentClasses)[] = [\n \"dropdown\",\n \"panel\",\n \"baseDropdownSelection\",\n \"header\",\n \"root\",\n \"leftSidePanel\",\n \"rightSidePanel\",\n \"actionBar\",\n \"space\",\n];\n\nconst filterGroupContentClasses = getClasses(classKeys, \"HvFilterGroupContent\");\n\nexport default filterGroupContentClasses;\n"],"names":["classKeys","filterGroupContentClasses","getClasses"],"mappings":";AAcA,MAAMA,YAAmD,CACvD,YACA,SACA,yBACA,UACA,QACA,iBACA,kBACA,aACA,OAAO;AAGT,MAAMC,4BAA4BC,WAAWF,WAAW,sBAAsB;AAE9E,MAAA,8BAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterGroupClasses.js","sources":["../../../../src/components/FilterGroup/filterGroupClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFilterGroupClasses {\n root?: string;\n labelContainer?: string;\n label?: string;\n description?: string;\n error?: string;\n}\n\nconst classKeys:
|
|
1
|
+
{"version":3,"file":"filterGroupClasses.js","sources":["../../../../src/components/FilterGroup/filterGroupClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFilterGroupClasses {\n root?: string;\n labelContainer?: string;\n label?: string;\n description?: string;\n error?: string;\n}\n\nconst classKeys: (keyof HvFilterGroupClasses)[] = [\n \"root\",\n \"labelContainer\",\n \"label\",\n \"description\",\n \"error\",\n];\n\nconst filterGroupClasses = getClasses(classKeys, \"HvFilterGroup\");\n\nexport default filterGroupClasses;\n"],"names":["classKeys","filterGroupClasses","getClasses"],"mappings":";AAUA,MAAMA,YAA4C,CAChD,QACA,kBACA,SACA,eACA,OAAO;AAGT,MAAMC,qBAAqBC,WAAWF,WAAW,eAAe;AAEhE,MAAA,uBAAeC;"}
|
|
@@ -18,7 +18,7 @@ const focusStyles = process.env.NODE_ENV === "production" ? {
|
|
|
18
18
|
} : {
|
|
19
19
|
name: "1ahoc7i-focusStyles",
|
|
20
20
|
styles: ".HvFocus-focused{outline-color:#52a8ec;outline-style:solid;outline-width:0px;outline-offset:-1px;box-shadow:0 0 0 1px #52a8ec,0 0 0 4px rgba(29, 155, 209, 0.3);@media (-webkit-min-device-pixel-ratio: 0){outline-color:#52a8ec;outline-style:solid;outline-width:0px;outline-offset:-1px;box-shadow:0 0 0 1px #52a8ec,0 0 0 4px rgba(29, 155, 209, 0.3);}}.HvFocus-focusDisabled{outline:none;box-shadow:none;}.HvFocus-focusDisabled *:focus{outline:none;box-shadow:none;}.HvFocus-focusDisabled *{outline:none!important;box-shadow:none!important;};label:focusStyles;",
|
|
21
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRm9jdXMvRm9jdXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVd1QiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9odi11aWtpdC1yZWFjdC9odi11aWtpdC1yZWFjdC9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL0ZvY3VzL0ZvY3VzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsc3ggfSBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IGlzTmlsIGZyb20gXCJsb2Rhc2gvaXNOaWxcIjtcbmltcG9ydCBSZWFjdCwgeyBSZWZPYmplY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBIdkJhc2VQcm9wcyB9IGZyb20gXCJAY29yZS90eXBlc1wiO1xuaW1wb3J0IHsga2V5Ym9hcmRDb2RlcywgaXNCcm93c2VyIH0gZnJvbSBcIkBjb3JlL3V0aWxzXCI7XG5pbXBvcnQgQ29uZGl0aW9uYWxXcmFwcGVyIGZyb20gXCJAY29yZS91dGlscy9Db25kaXRpb25hbFdyYXBwZXJcIjtcbmltcG9ydCB7IFN0eWxlZEZvY3VzV3JhcHBlciwgU3R5bGVkRmFsc2VGb2N1cyB9IGZyb20gXCIuL0ZvY3VzLnN0eWxlc1wiO1xuaW1wb3J0IHsgZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4sIGlzS2V5LCBpc09uZU9mS2V5cywgc2V0Rm9jdXNUbyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgZm9jdXNDbGFzc2VzLCB7IEh2Rm9jdXNDbGFzc2VzIH0gZnJvbSBcIi4vZm9jdXNDbGFzc2VzXCI7XG5pbXBvcnQgeyBjc3MsIEdsb2JhbCB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xuXG5jb25zdCBmb2N1c1N0eWxlcyA9IGNzc2BcbiAgLkh2Rm9jdXMtZm9jdXNlZCB7XG4gICAgb3V0bGluZS1jb2xvcjogIzUyYThlYztcbiAgICBvdXRsaW5lLXN0eWxlOiBzb2xpZDtcbiAgICBvdXRsaW5lLXdpZHRoOiAwcHg7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICM1MmE4ZWMsIDAgMCAwIDRweCByZ2JhKDI5LCAxNTUsIDIwOSwgMC4zKTtcblxuICAgIEBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAwKSB7XG4gICAgICBvdXRsaW5lLWNvbG9yOiAjNTJhOGVjO1xuICAgICAgb3V0bGluZS1zdHlsZTogc29saWQ7XG4gICAgICBvdXRsaW5lLXdpZHRoOiAwcHg7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTFweDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjNTJhOGVjLCAwIDAgMCA0cHggcmdiYSgyOSwgMTU1LCAyMDksIDAuMyk7XG4gICAgfVxuICB9XG5cbiAgLkh2Rm9jdXMtZm9jdXNEaXNhYmxlZCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG4gIC5IdkZvY3VzLWZvY3VzRGlzYWJsZWQgKjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG4gIC5IdkZvY3VzLWZvY3VzRGlzYWJsZWQgKiB7XG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuYDtcblxuZXhwb3J0IHR5cGUgSHZGb2N1c1N0cmF0ZWdpZXMgPSBcImxpc3Rib3hcIiB8IFwibWVudVwiIHwgXCJjYXJkXCIgfCBcImdyaWRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBIdkZvY3VzUHJvcHMgZXh0ZW5kcyBIdkJhc2VQcm9wczxIVE1MRWxlbWVudCwgeyBjaGlsZHJlbiB9PiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdEVsZW1lbnQ7XG4gIC8qKiBFeHRyYSBjb25maWd1cmF0aW9uIGZvciB0aGUgY2hpbGQgZWxlbWVudC4gKi9cbiAgY29uZmlndXJhdGlvbj86IHtcbiAgICB0YWJJbmRleD86IG51bWJlcjtcbiAgfTtcbiAgLyoqIEluZGljYXRlcyB0aGF0IHRoZSBkaXNhYmxlZCBjbGFzcyBzaG91bGQgYmUgYXBwbGllZC4gKi9cbiAgZGlzYWJsZWRDbGFzcz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBmb2N1cyBpcyBzZWxlY3RlZC4gKi9cbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgZm9jdXMgaXMgZGlzYWJsZWQuICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIFRoZSByZWZlcmVuY2UgdG8gdGhlIHJvb3QgZWxlbWVudCB0byBob2xkIGFsbCBGb2N1cycgY29udGV4dC4gKi9cbiAgcm9vdFJlZj86IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG4gIC8qKiBTaG93IGZvY3VzIHdoZW4gY2xpY2sgZWxlbWVudC4gdiovXG4gIGZvY3VzT25DbGljaz86IGJvb2xlYW47XG4gIC8qKiBTaG93IGZvY3VzIHdoZW4gY2xpY2sgZWxlbWVudC4gdiovXG4gIGZvY3VzRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogVXNlIHVwLyBkb3duIGtleWJvYXJkIGFycm93cyB0byBjb250cm9sIGZvY3VzLiAqL1xuICB1c2VBcnJvd3M/OiBib29sZWFuO1xuICAvKiogRm9jdXMgYW5kIG5hdmlnYXRpb24gc3RyYXRlZ3kgdG8gYmUgdXNlZC4gdiovXG4gIHN0cmF0ZWd5PzogSHZGb2N1c1N0cmF0ZWdpZXM7XG4gIC8qKiBVc2VzIGFuIGFic29sdXRlIHBvc2l0aW9uZWQgZGl2IGFzIGEgZm9jdXMuIHYqL1xuICB1c2VGYWxzZUZvY3VzPzogYm9vbGVhbjtcbiAgLyoqIE5hcnJvd3MgdGhlIHJlc3VsdHMgb2YgdGhlIGZvY3VzIHRvIG9ubHkgdGhlc2VzIGNsYXNzIHYqL1xuICBmaWx0ZXJDbGFzcz86IHN0cmluZztcbiAgLyoqIEhvdyBtdWNoIHRoZSBuYXZpZ2F0aW9uIHdpbGwgc2tpcCB3aGVuIHVzaW5nIHRoZSBhcnJvd3MuIHYqL1xuICBuYXZpZ2F0aW9uSnVtcD86IG51bWJlcjtcbiAgLyoqIEEgSnNzIE9iamVjdCB1c2VkIHRvIG92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC4gKi9cbiAgY2xhc3Nlcz86IEh2Rm9jdXNDbGFzc2VzO1xufVxuXG5leHBvcnQgY29uc3QgSHZGb2N1cyA9ICh7XG4gIGNsYXNzZXMsXG4gIGNoaWxkcmVuLFxuICBjb25maWd1cmF0aW9uID0ge30sXG4gIGRpc2FibGVkQ2xhc3MgPSBmYWxzZSxcbiAgc2VsZWN0ZWQgPSBmYWxzZSxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgcm9vdFJlZiA9IHVuZGVmaW5lZCxcbiAgZm9jdXNPbkNsaWNrID0gZmFsc2UsXG4gIGZvY3VzRGlzYWJsZWQgPSB0cnVlLFxuICBzdHJhdGVneSA9IFwibGlzdGJveFwiLFxuICB1c2VGYWxzZUZvY3VzID0gZmFsc2UsXG4gIGZpbHRlckNsYXNzLFxuICBuYXZpZ2F0aW9uSnVtcCA9IDQsXG59OiBIdkZvY3VzUHJvcHMpID0+IHtcbiAgY29uc3QgW3Nob3dGb2N1cywgc2V0U2hvd0ZvY3VzXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW2NoaWxkRm9jdXMsIHNldENoaWxkRm9jdXNdID0gdXNlU3RhdGU8YW55PigpO1xuICBjb25zdCBbaGFzUnVuQ29uZmlnLCBzZXRIYXNSdW5Db25maWddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGdldEZvY3VzZXMgPSAoKSA9PiB7XG4gICAgY29uc3QgZm9jdXNlcyA9IHJvb3RSZWY/LmN1cnJlbnRcbiAgICAgID8gQXJyYXkuZnJvbShcbiAgICAgICAgICByb290UmVmLmN1cnJlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgICAgICAgIGZpbHRlckNsYXNzIHx8IGZvY3VzQ2xhc3Nlcy5yb290IHx8IGNsYXNzZXM/LnJvb3QgfHwgXCJyb290XCJcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIDogW107XG4gICAgcmV0dXJuIGZvY3VzZXM7XG4gIH07XG5cbiAgY29uc3Qgc2V0VGFiSW5kZXggPSAoZWwsIHRhYkluZGV4ID0gMCkgPT4ge1xuICAgIGNvbnN0IGVsQ2hpbGRGb2N1cyA9IGdldEZvY3VzYWJsZUNoaWxkcmVuKGVsKVswXTtcbiAgICBpZiAoZWxDaGlsZEZvY3VzKSB7XG4gICAgICBlbC50YWJJbmRleCA9IC0xO1xuICAgICAgZWxDaGlsZEZvY3VzLnRhYkluZGV4ID0gdGFiSW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnRhYkluZGV4ID0gdGFiSW5kZXg7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNldFNlbGVjdGVkVGFiSW5kZXggPSAoKSA9PiB7XG4gICAgY29uc3QgZm9jdXNlcyA9IGdldEZvY3VzZXMoKTtcbiAgICBjb25zdCBmaXJzdFNlbGVjdGVkID0gZm9jdXNlcy5maW5kKChmb2N1cykgPT5cbiAgICAgIGZvY3VzLmNsYXNzTGlzdC5jb250YWlucyhcbiAgICAgICAgZm9jdXNDbGFzc2VzLnNlbGVjdGVkIHx8IGNsYXNzZXM/LnNlbGVjdGVkIHx8IFwic2VsZWN0ZWRcIlxuICAgICAgKVxuICAgICk7XG5cbiAgICBpZiAoIWZpcnN0U2VsZWN0ZWQpIHJldHVybjtcbiAgICBmb2N1c2VzLmZvckVhY2goKGZvY3VzKSA9PiBzZXRUYWJJbmRleChmb2N1cywgLTEpKTtcbiAgICBzZXRUYWJJbmRleChmaXJzdFNlbGVjdGVkLCAwKTtcbiAgfTtcblxuICBjb25zdCBjbGVhclRhYlNpYmxpbmdzID0gKGVsKSA9PiB7XG4gICAgZ2V0Rm9jdXNlcygpLmZvckVhY2goKGZvY3VzKSA9PiBzZXRUYWJJbmRleChmb2N1cywgLTEpKTtcbiAgICBzZXRUYWJJbmRleChlbCwgMCk7XG4gIH07XG5cbiAgY29uc3Qgb25Gb2N1c1N0cmF0ZWd5ID0gKGV2dCkgPT4ge1xuICAgIGlmIChzdHJhdGVneSA9PT0gXCJsaXN0Ym94XCIpIHtcbiAgICAgIGNsZWFyVGFiU2libGluZ3MoZXZ0LmN1cnJlbnRUYXJnZXQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkJsdXJTdHJhdGVneSA9ICgpID0+IHtcbiAgICBpZiAoXG4gICAgICBzdHJhdGVneSA9PT0gXCJsaXN0Ym94XCIgJiZcbiAgICAgIHJvb3RSZWYgJiZcbiAgICAgIHJvb3RSZWYuY3VycmVudCAmJlxuICAgICAgIXJvb3RSZWYuY3VycmVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KVxuICAgICkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldFNlbGVjdGVkVGFiSW5kZXgoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29uZmlnID0gKGVsKSA9PiB7XG4gICAgY29uc3QgeyB0YWJJbmRleCB9ID0gY29uZmlndXJhdGlvbjtcbiAgICBpZiAoIWVsIHx8IGhhc1J1bkNvbmZpZykgcmV0dXJuO1xuICAgIGlmIChzdHJhdGVneSA9PT0gXCJjYXJkXCIpIHtcbiAgICAgIHNldENoaWxkRm9jdXMoY2hpbGRyZW4pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzdHJhdGVneSA9PT0gXCJncmlkXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb2N1c2FibGVDaGlsZHJlbiA9IGdldEZvY3VzYWJsZUNoaWxkcmVuKGVsKTtcbiAgICBpZiAoZm9jdXNhYmxlQ2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBmb2N1c2FibGVDaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4gc2V0VGFiSW5kZXgoY2hpbGQsIC0xKSk7XG4gICAgICBzZXRDaGlsZEZvY3VzKGZvY3VzYWJsZUNoaWxkcmVuWzBdKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzTmlsKHRhYkluZGV4KSkgc2V0VGFiSW5kZXgoZWwsIHRhYkluZGV4KTtcbiAgICBzZXRIYXNSdW5Db25maWcodHJ1ZSk7XG4gIH07XG5cbiAgY29uc3QgYWRkRm9jdXNDbGFzcyA9IChldnQpID0+IHtcbiAgICBpZiAoIXVzZUZhbHNlRm9jdXMpIHtcbiAgICAgIGV2dC5jdXJyZW50VGFyZ2V0LmNsYXNzTGlzdC5hZGQoZm9jdXNDbGFzc2VzLmZvY3VzZWQpO1xuICAgICAgaWYgKGNsYXNzZXM/LmZvY3VzZWQpIHtcbiAgICAgICAgZXZ0LmN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LmFkZChjbGFzc2VzLmZvY3VzZWQpO1xuICAgICAgfVxuICAgICAgLy8gYWRkIGdsb2JhbCBjbGFzcyBIdklzRm9jdXNlZCBhcyBhIG1hcmtlclxuICAgICAgLy8gbm90IHRvIGJlIHN0eWxlZCBkaXJlY3RseSwgb25seSBhcyBoZWxwZXIgaW4gc3BlY2lmaWMgY3NzIHF1ZXJpZXNcbiAgICAgIGV2dC5jdXJyZW50VGFyZ2V0LmNsYXNzTGlzdC5hZGQoXCJIdklzRm9jdXNlZFwiKTtcbiAgICAgIGNsYXNzZXM/LmZvY3VzXG4gICAgICAgID8uc3BsaXQoXCIgXCIpXG4gICAgICAgIC5mb3JFYWNoKChjKSA9PiBldnQuY3VycmVudFRhcmdldC5jbGFzc0xpc3QuYWRkKGMpKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlRm9jdXNDbGFzcyA9ICgpID0+IHtcbiAgICBpZiAoIXVzZUZhbHNlRm9jdXMpIHtcbiAgICAgIGdldEZvY3VzZXMoKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChmb2N1c0NsYXNzZXMuZm9jdXNlZCkge1xuICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShmb2N1c0NsYXNzZXMuZm9jdXNlZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsYXNzZXM/LmZvY3VzZWQpIHtcbiAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3Nlcy5mb2N1c2VkKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZW1vdmUgdGhlIGdsb2JhbCBjbGFzcyBIdklzRm9jdXNlZFxuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJIdklzRm9jdXNlZFwiKTtcbiAgICAgICAgY2xhc3Nlcz8uZm9jdXM/LnNwbGl0KFwiIFwiKS5mb3JFYWNoKChjKSA9PiBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYykpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uRm9jdXMgPSAoZXZ0KSA9PiB7XG4gICAgYWRkRm9jdXNDbGFzcyhldnQpO1xuICAgIHNldFNob3dGb2N1cyh0cnVlKTtcbiAgICAvLyBnaXZlIGZvY3VzIHRvIGNoaWxkIGVsZW1lbnQgaWYgYW55IGZvY3VzYWJsZVxuXG4gICAgaWYgKGNoaWxkRm9jdXMgJiYgY2hpbGRGb2N1cy5mb2N1cykgY2hpbGRGb2N1cy5mb2N1cygpO1xuICAgIG9uRm9jdXNTdHJhdGVneShldnQpO1xuICB9O1xuXG4gIGNvbnN0IG9uQmx1ciA9ICgpID0+IHtcbiAgICBzZXRTaG93Rm9jdXMoZmFsc2UpO1xuICAgIHJlbW92ZUZvY3VzQ2xhc3MoKTtcbiAgICBvbkJsdXJTdHJhdGVneSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uTW91c2VEb3duID0gKGV2dCkgPT4ge1xuICAgIGNvbnN0IGhhc0NhcmQgPSAhIWV2dC5jdXJyZW50VGFyZ2V0Py5xdWVyeVNlbGVjdG9yKFwiLkh2SXNDYXJkR3JpZEVsZW1lbnRcIik7XG4gICAgaWYgKHN0cmF0ZWd5ID09PSBcImdyaWRcIiAmJiBoYXNDYXJkKSByZXR1cm47XG5cbiAgICBzZXRGb2N1c1RvKGV2dC5jdXJyZW50VGFyZ2V0KTtcbiAgICBzZXRUYWJJbmRleChldnQuY3VycmVudFRhcmdldCwgMCk7XG4gICAgLy8gcmVtb3ZlIGZvY3VzIG91dGxpbmUgdW5sZXNzIGV4cGxpY2l0bHkgZW5hYmxlZFxuICAgIGlmICghZm9jdXNPbkNsaWNrKSB7XG4gICAgICAvLyBUT0RPIHRoaXMgcGllY2Ugb2YgY29kZSB3b3JrcyBvbmx5IGJlY2F1c2Ugb25Nb3VzZURvd24gaXMgaGFwcGVuaW5nIGFmdGVyIHRoZSBmb2N1cyBldmVudFxuICAgICAgLy8gVGhlcmUgaXMgbm90aGluZyBpbiBoZXJlIHRoYXQgZ3VhcmFudGVlcyB0aGUgb3JkZXIgb2YgdGhlc2UgZXZlbnRzLCBzbyBpdCBtYXkgcHJlc2VudCBhIHByb2JsZW0gaW4gdGhlIGZ1dHVyZVxuICAgICAgcmVtb3ZlRm9jdXNDbGFzcygpO1xuICAgICAgc2V0U2hvd0ZvY3VzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZm9jdXNBbmRVcGRhdGVJbmRleCA9IChuZXh0Rm9jdXMsIHByZXZpb3VzRm9jdXMsIGZvY3VzZXNMaXN0KSA9PiB7XG4gICAgaWYgKGZvY3VzZXNMaXN0Py5pbmNsdWRlcyhwcmV2aW91c0ZvY3VzKSkge1xuICAgICAgc2V0VGFiSW5kZXgocHJldmlvdXNGb2N1cywgLTEpO1xuICAgIH1cbiAgICBzZXRUYWJJbmRleChuZXh0Rm9jdXMsIDApO1xuICAgIHNldEZvY3VzVG8obmV4dEZvY3VzKTtcbiAgfTtcblxuICBjb25zdCBnZXRFbmFibGVkS2V5cyA9IChjdXJyZW50Rm9jdXNJbmRleCwganVtcCwgbGlzdFNpemUpID0+ICh7XG4gICAgcmlnaHQ6XG4gICAgICAoY3VycmVudEZvY3VzSW5kZXggKyAxKSAlIGp1bXAgPT09IDAgfHxcbiAgICAgIGN1cnJlbnRGb2N1c0luZGV4ICsgMSA+IGxpc3RTaXplIC0gMSxcbiAgICBsZWZ0OiBjdXJyZW50Rm9jdXNJbmRleCAlIGp1bXAgPT09IDAsXG4gICAgdXA6IGN1cnJlbnRGb2N1c0luZGV4IC0ganVtcCA8IDAsXG4gICAgZG93bjpcbiAgICAgIGN1cnJlbnRGb2N1c0luZGV4ICsganVtcCA+IGxpc3RTaXplIHx8XG4gICAgICBjdXJyZW50Rm9jdXNJbmRleCArIGp1bXAgPiBsaXN0U2l6ZSAtIDEsXG4gIH0pO1xuXG4gIGNvbnN0IG9uR3JpZEtleURvd25IYW5kbGVyID0gKFxuICAgIGV2dCxcbiAgICBmb2N1c2VzLFxuICAgIGZvY3VzZXNMaXN0LFxuICAgIGN1cnJlbnRGb2N1c0luZGV4LFxuICAgIGp1bXBcbiAgKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgQXJyb3dVcCxcbiAgICAgIEFycm93RG93bixcbiAgICAgIEhvbWUsXG4gICAgICBFbmQsXG4gICAgICBBcnJvd0xlZnQsXG4gICAgICBBcnJvd1JpZ2h0LFxuICAgICAgRW50ZXIsXG4gICAgICBTcGFjZUJhcixcbiAgICB9ID0ga2V5Ym9hcmRDb2RlcztcblxuICAgIGNvbnN0IGNoaWxkRm9jdXNJc0lucHV0ID0gY2hpbGRGb2N1cyAmJiBjaGlsZEZvY3VzLm5vZGVOYW1lID09PSBcIklOUFVUXCI7XG5cbiAgICBpZiAoXG4gICAgICAhaXNPbmVPZktleXMoZXZ0LCBbXG4gICAgICAgIEFycm93VXAsXG4gICAgICAgIEFycm93RG93bixcbiAgICAgICAgQXJyb3dMZWZ0LFxuICAgICAgICBBcnJvd1JpZ2h0LFxuICAgICAgICBIb21lLFxuICAgICAgICBFbmQsXG4gICAgICAgIFNwYWNlQmFyLFxuICAgICAgICBFbnRlcixcbiAgICAgIF0pIHx8XG4gICAgICAoY2hpbGRGb2N1c0lzSW5wdXQgJiYgaXNLZXkoZXZ0LCBFbnRlcikpXG4gICAgKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gd2UnbGwgZG8gc29tZXRoaW5nIHdpdGggdGhlIGtleSBzbyBwcmV2ZW50IGRlZmF1bHQgYW5kIHN0b3AgcHJvcGFnYXRpb25cbiAgICAvLyBleGNlcHQgZm9yIEVudGVyIGFuZCBTcGFjZUJhclxuICAgIGlmICghaXNPbmVPZktleXMoZXZ0LCBbRW50ZXIsIFNwYWNlQmFyXSkpIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IGJsb2NrZWRLZXlzID0gZ2V0RW5hYmxlZEtleXMoXG4gICAgICBjdXJyZW50Rm9jdXNJbmRleCxcbiAgICAgIGp1bXAsXG4gICAgICBmb2N1c2VzTGlzdC5sZW5ndGhcbiAgICApO1xuXG4gICAgc3dpdGNoIChldnQua2V5Q29kZSkge1xuICAgICAgY2FzZSBTcGFjZUJhcjpcbiAgICAgIGNhc2UgRW50ZXI6XG4gICAgICAgIGlmIChpc0Jyb3dzZXIoXCJmaXJlZm94XCIpKSB7XG4gICAgICAgICAgZXZ0LnRhcmdldC5jbGljaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV2dC5jdXJyZW50VGFyZ2V0LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEFycm93VXA6XG4gICAgICAgIGlmICghYmxvY2tlZEtleXMudXApIHtcbiAgICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KFxuICAgICAgICAgICAgZm9jdXNlcy5qdW1wIHx8IGZvY3VzZXMubGFzdCxcbiAgICAgICAgICAgIGV2dC5jdXJyZW50LFxuICAgICAgICAgICAgZm9jdXNlc0xpc3RcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBcnJvd0Rvd246XG4gICAgICAgIGlmICghYmxvY2tlZEtleXMuZG93bikge1xuICAgICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoXG4gICAgICAgICAgICBmb2N1c2VzLmZhbGwgfHwgZm9jdXNlcy5maXJzdCxcbiAgICAgICAgICAgIGV2dC5jdXJyZW50LFxuICAgICAgICAgICAgZm9jdXNlc0xpc3RcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBcnJvd0xlZnQ6XG4gICAgICAgIGlmICghYmxvY2tlZEtleXMubGVmdCkge1xuICAgICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoXG4gICAgICAgICAgICBmb2N1c2VzLnByZXZpb3VzIHx8IGZvY3VzZXMubGFzdCxcbiAgICAgICAgICAgIGV2dC5jdXJyZW50LFxuICAgICAgICAgICAgZm9jdXNlc0xpc3RcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBcnJvd1JpZ2h0OlxuICAgICAgICBpZiAoIWJsb2NrZWRLZXlzLnJpZ2h0KSB7XG4gICAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChcbiAgICAgICAgICAgIGZvY3VzZXMubmV4dCB8fCBmb2N1c2VzLmZpcnN0LFxuICAgICAgICAgICAgZXZ0LmN1cnJlbnQsXG4gICAgICAgICAgICBmb2N1c2VzTGlzdFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEhvbWU6XG4gICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoZm9jdXNlcy5maXJzdCwgZXZ0LmN1cnJlbnQsIGZvY3VzZXNMaXN0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVuZDpcbiAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChmb2N1c2VzLmxhc3QsIGV2dC5jdXJyZW50LCBmb2N1c2VzTGlzdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25WZXJ0aWNhbEFycmFuZ2VtZW50SGFuZGxlciA9IChldnQsIGZvY3VzZXMsIGZvY3VzZXNMaXN0KSA9PiB7XG4gICAgY29uc3QgeyBBcnJvd1VwLCBBcnJvd0Rvd24sIEhvbWUsIEVuZCwgRW50ZXIsIFNwYWNlQmFyIH0gPSBrZXlib2FyZENvZGVzO1xuICAgIGNvbnN0IGNoaWxkRm9jdXNJc0lucHV0ID0gY2hpbGRGb2N1cyAmJiBjaGlsZEZvY3VzLm5vZGVOYW1lID09PSBcIklOUFVUXCI7XG5cbiAgICBpZiAoXG4gICAgICAhaXNPbmVPZktleXMoZXZ0LCBbQXJyb3dVcCwgQXJyb3dEb3duLCBIb21lLCBFbmQsIFNwYWNlQmFyLCBFbnRlcl0pIHx8XG4gICAgICAoY2hpbGRGb2N1c0lzSW5wdXQgJiYgaXNLZXkoZXZ0LCBFbnRlcikpXG4gICAgKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gd2UnbGwgZG8gc29tZXRoaW5nIHdpdGggdGhlIGtleSBzbyBwcmV2ZW50IGRlZmF1bHQgYW5kIHN0b3AgcHJvcGFnYXRpb25cbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBzd2l0Y2ggKGV2dC5rZXlDb2RlKSB7XG4gICAgICBjYXNlIFNwYWNlQmFyOlxuICAgICAgY2FzZSBFbnRlcjpcbiAgICAgICAgZXZ0LnRhcmdldC5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXJyb3dVcDpcbiAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChcbiAgICAgICAgICBmb2N1c2VzLnByZXZpb3VzIHx8IGZvY3VzZXMubGFzdCxcbiAgICAgICAgICBldnQuY3VycmVudCxcbiAgICAgICAgICBmb2N1c2VzTGlzdFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXJyb3dEb3duOlxuICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KFxuICAgICAgICAgIGZvY3VzZXMubmV4dCB8fCBmb2N1c2VzLmZpcnN0LFxuICAgICAgICAgIGV2dC5jdXJyZW50LFxuICAgICAgICAgIGZvY3VzZXNMaXN0XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIb21lOlxuICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KGZvY3VzZXMuZmlyc3QsIGV2dC5jdXJyZW50LCBmb2N1c2VzTGlzdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFbmQ6XG4gICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoZm9jdXNlcy5sYXN0LCBldnQuY3VycmVudCwgZm9jdXNlc0xpc3QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uU2luZ2xlSGFuZGxlciA9IChldnQpID0+IHtcbiAgICBjb25zdCB7IEVudGVyLCBTcGFjZUJhciB9ID0ga2V5Ym9hcmRDb2RlcztcbiAgICBjb25zdCBjaGlsZEZvY3VzSXNJbnB1dCA9IGNoaWxkRm9jdXMgJiYgY2hpbGRGb2N1cy5ub2RlTmFtZSA9PT0gXCJJTlBVVFwiO1xuXG4gICAgaWYgKFxuICAgICAgIWlzT25lT2ZLZXlzKGV2dCwgW1NwYWNlQmFyLCBFbnRlcl0pIHx8XG4gICAgICAoY2hpbGRGb2N1c0lzSW5wdXQgJiYgaXNLZXkoZXZ0LCBFbnRlcikpXG4gICAgKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gd2UnbGwgZG8gc29tZXRoaW5nIHdpdGggdGhlIGtleSBzbyBwcmV2ZW50IGRlZmF1bHQgYW5kIHN0b3AgcHJvcGFnYXRpb25cbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBldnQuY3VycmVudFRhcmdldC5jbGljaygpO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IChldnQpID0+IHtcbiAgICBpZiAocm9vdFJlZj8uY3VycmVudCA9PSBudWxsKSB7XG4gICAgICAvLyBvcGVyYXRpbmcgb3V0c2lkZSBvZiBhIGNvbXBvc2l0ZSB3aWRnZXRcbiAgICAgIC8vIG5vdGhpbmcgdG8gbWFuYWdlLCBqdXN0IHN0eWxlIGFuZCB0cmlnZ2VyIGNsaWNrc1xuICAgICAgb25TaW5nbGVIYW5kbGVyKGV2dCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVE9ETyBrZWVwIHRoZSBzbWFydCBkZWZhdWx0LCBidXQgYWxsb3cgdG8gZXhwbGljaXRseSBvdmVycmlkZSBpZiBkaXNhYmxlZCBlbGVtZW50cyBzaG91bGQgYmUgZm9jdXNhYmxlXG4gICAgY29uc3QgaXNEaXNhYmxlZEZvY3VzYWJsZSA9IHN0cmF0ZWd5ID09PSBcIm1lbnVcIjtcbiAgICBjb25zdCBmb2N1c2VzTGlzdCA9IGdldEZvY3VzZXMoKS5maWx0ZXIoXG4gICAgICAoZWwpID0+XG4gICAgICAgIGlzRGlzYWJsZWRGb2N1c2FibGUgfHxcbiAgICAgICAgIWVsLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc2VzPy5kaXNhYmxlZCBhcyBzdHJpbmcpXG4gICAgKTtcblxuICAgIGNvbnN0IGN1cnJlbnRGb2N1cyA9IGZvY3VzZXNMaXN0LmluZGV4T2YoZXZ0LmN1cnJlbnRUYXJnZXQpO1xuXG4gICAgY29uc3QgZm9jdXNlcyA9IHtcbiAgICAgIGZpcnN0OiBmb2N1c2VzTGlzdFswXSxcbiAgICAgIGxhc3Q6IGZvY3VzZXNMaXN0W2ZvY3VzZXNMaXN0Lmxlbmd0aCAtIDFdLFxuICAgICAgcHJldmlvdXM6IGZvY3VzZXNMaXN0W2N1cnJlbnRGb2N1cyAtIDFdLFxuICAgICAgbmV4dDogZm9jdXNlc0xpc3RbY3VycmVudEZvY3VzICsgMV0sXG4gICAgICBmYWxsOiBmb2N1c2VzTGlzdFtjdXJyZW50Rm9jdXMgKyBuYXZpZ2F0aW9uSnVtcF0sXG4gICAgICBqdW1wOiBmb2N1c2VzTGlzdFtjdXJyZW50Rm9jdXMgLSBuYXZpZ2F0aW9uSnVtcF0sXG4gICAgfTtcblxuICAgIGlmIChzdHJhdGVneSA9PT0gXCJncmlkXCIpIHtcbiAgICAgIG9uR3JpZEtleURvd25IYW5kbGVyKFxuICAgICAgICBldnQsXG4gICAgICAgIGZvY3VzZXMsXG4gICAgICAgIGZvY3VzZXNMaXN0LFxuICAgICAgICBjdXJyZW50Rm9jdXMsXG4gICAgICAgIG5hdmlnYXRpb25KdW1wXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRPRE8gYWRkIHByb3BlcnR5IGZvciBzcGVjaWZ5aW5nIHRoZSBjb21wb3NpdGUgd2lkZ2V0IG9yaWVudGF0aW9uXG4gICAgLy8gVE9ETyBpbXBsZW1lbnQgaGFuZGxlciBmb3IgaG9yaXpvbnRhbCBvcmllbnRhdGlvblxuICAgIG9uVmVydGljYWxBcnJhbmdlbWVudEhhbmRsZXIoZXZ0LCBmb2N1c2VzLCBmb2N1c2VzTGlzdCk7XG4gIH07XG5cbiAgY29uc3Qgb25LZXlVcCA9IChldnQpID0+IHtcbiAgICBpZiAoaXNCcm93c2VyKFwiZmlyZWZveFwiKSkgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgaWYgKGRpc2FibGVkKSByZXR1cm4gY2hpbGRyZW47XG5cbiAgY29uc3QgZm9jdXNXcmFwcGVyID0gKGNoaWxkcmVuVG9XcmFwKSA9PiAoXG4gICAgPFN0eWxlZEZvY3VzV3JhcHBlclxuICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICBjbGFzc2VzPy5leHRlcm5hbFJlZmVyZW5jZSxcbiAgICAgICAgZm9jdXNDbGFzc2VzLmV4dGVybmFsUmVmZXJlbmNlXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlblRvV3JhcH1cbiAgICAgIHtzaG93Rm9jdXMgJiYgKFxuICAgICAgICA8U3R5bGVkRmFsc2VGb2N1c1xuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChjbGFzc2VzPy5mYWxzZUZvY3VzLCBmb2N1c0NsYXNzZXMuZmFsc2VGb2N1cyl9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvU3R5bGVkRm9jdXNXcmFwcGVyPlxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPENvbmRpdGlvbmFsV3JhcHBlciBjb25kaXRpb249e3VzZUZhbHNlRm9jdXN9IHdyYXBwZXI9e2ZvY3VzV3JhcHBlcn0+XG4gICAgICA8R2xvYmFsIHN0eWxlcz17Zm9jdXNTdHlsZXN9IC8+XG4gICAgICB7UmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIGNsYXNzTmFtZTogY2xzeChcbiAgICAgICAgICBjaGlsZHJlbi5wcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgZm9jdXNDbGFzc2VzLnJvb3QsXG4gICAgICAgICAgY2xhc3Nlcz8ucm9vdCxcbiAgICAgICAgICBmaWx0ZXJDbGFzcyxcbiAgICAgICAgICBzZWxlY3RlZCAmJiBjbHN4KGZvY3VzQ2xhc3Nlcy5zZWxlY3RlZCwgY2xhc3Nlcz8uc2VsZWN0ZWQpLFxuICAgICAgICAgIGRpc2FibGVkQ2xhc3MgJiYgY2xzeChmb2N1c0NsYXNzZXMuZGlzYWJsZWQsIGNsYXNzZXM/LmRpc2FibGVkKSxcbiAgICAgICAgICBmb2N1c0Rpc2FibGVkICYmXG4gICAgICAgICAgICBjbHN4KGZvY3VzQ2xhc3Nlcy5mb2N1c0Rpc2FibGVkLCBjbGFzc2VzPy5mb2N1c0Rpc2FibGVkKVxuICAgICAgICApLFxuICAgICAgICByZWY6IGNvbmZpZyxcbiAgICAgICAgb25Gb2N1cyxcbiAgICAgICAgb25CbHVyLFxuICAgICAgICBvbk1vdXNlRG93bixcbiAgICAgICAgb25LZXlEb3duLFxuICAgICAgICBvbktleVVwLFxuICAgICAgICBzZWxlY3RlZCxcbiAgICAgIH0pfVxuICAgIDwvQ29uZGl0aW9uYWxXcmFwcGVyPlxuICApO1xufTtcbiJdfQ== */",
|
|
21
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvRm9jdXMvRm9jdXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVd1QiIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9odi11aWtpdC1yZWFjdC9odi11aWtpdC1yZWFjdC9wYWNrYWdlcy9jb3JlL3NyYy9jb21wb25lbnRzL0ZvY3VzL0ZvY3VzLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsc3ggfSBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IGlzTmlsIGZyb20gXCJsb2Rhc2gvaXNOaWxcIjtcbmltcG9ydCBSZWFjdCwgeyBSZWZPYmplY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBIdkJhc2VQcm9wcyB9IGZyb20gXCJAY29yZS90eXBlc1wiO1xuaW1wb3J0IHsga2V5Ym9hcmRDb2RlcywgaXNCcm93c2VyIH0gZnJvbSBcIkBjb3JlL3V0aWxzXCI7XG5pbXBvcnQgQ29uZGl0aW9uYWxXcmFwcGVyIGZyb20gXCJAY29yZS91dGlscy9Db25kaXRpb25hbFdyYXBwZXJcIjtcbmltcG9ydCB7IFN0eWxlZEZvY3VzV3JhcHBlciwgU3R5bGVkRmFsc2VGb2N1cyB9IGZyb20gXCIuL0ZvY3VzLnN0eWxlc1wiO1xuaW1wb3J0IHsgZ2V0Rm9jdXNhYmxlQ2hpbGRyZW4sIGlzS2V5LCBpc09uZU9mS2V5cywgc2V0Rm9jdXNUbyB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgZm9jdXNDbGFzc2VzLCB7IEh2Rm9jdXNDbGFzc2VzIH0gZnJvbSBcIi4vZm9jdXNDbGFzc2VzXCI7XG5pbXBvcnQgeyBjc3MsIEdsb2JhbCB9IGZyb20gXCJAZW1vdGlvbi9yZWFjdFwiO1xuXG5jb25zdCBmb2N1c1N0eWxlcyA9IGNzc2BcbiAgLkh2Rm9jdXMtZm9jdXNlZCB7XG4gICAgb3V0bGluZS1jb2xvcjogIzUyYThlYztcbiAgICBvdXRsaW5lLXN0eWxlOiBzb2xpZDtcbiAgICBvdXRsaW5lLXdpZHRoOiAwcHg7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICM1MmE4ZWMsIDAgMCAwIDRweCByZ2JhKDI5LCAxNTUsIDIwOSwgMC4zKTtcblxuICAgIEBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAwKSB7XG4gICAgICBvdXRsaW5lLWNvbG9yOiAjNTJhOGVjO1xuICAgICAgb3V0bGluZS1zdHlsZTogc29saWQ7XG4gICAgICBvdXRsaW5lLXdpZHRoOiAwcHg7XG4gICAgICBvdXRsaW5lLW9mZnNldDogLTFweDtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjNTJhOGVjLCAwIDAgMCA0cHggcmdiYSgyOSwgMTU1LCAyMDksIDAuMyk7XG4gICAgfVxuICB9XG5cbiAgLkh2Rm9jdXMtZm9jdXNEaXNhYmxlZCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG4gIC5IdkZvY3VzLWZvY3VzRGlzYWJsZWQgKjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG4gIC5IdkZvY3VzLWZvY3VzRGlzYWJsZWQgKiB7XG4gICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuYDtcblxuZXhwb3J0IHR5cGUgSHZGb2N1c1N0cmF0ZWdpZXMgPSBcImxpc3Rib3hcIiB8IFwibWVudVwiIHwgXCJjYXJkXCIgfCBcImdyaWRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBIdkZvY3VzUHJvcHMgZXh0ZW5kcyBIdkJhc2VQcm9wczxIVE1MRWxlbWVudCwgXCJjaGlsZHJlblwiPiB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdEVsZW1lbnQ7XG4gIC8qKiBFeHRyYSBjb25maWd1cmF0aW9uIGZvciB0aGUgY2hpbGQgZWxlbWVudC4gKi9cbiAgY29uZmlndXJhdGlvbj86IHtcbiAgICB0YWJJbmRleD86IG51bWJlcjtcbiAgfTtcbiAgLyoqIEluZGljYXRlcyB0aGF0IHRoZSBkaXNhYmxlZCBjbGFzcyBzaG91bGQgYmUgYXBwbGllZC4gKi9cbiAgZGlzYWJsZWRDbGFzcz86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSBmb2N1cyBpcyBzZWxlY3RlZC4gKi9cbiAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgZm9jdXMgaXMgZGlzYWJsZWQuICovXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIFRoZSByZWZlcmVuY2UgdG8gdGhlIHJvb3QgZWxlbWVudCB0byBob2xkIGFsbCBGb2N1cycgY29udGV4dC4gKi9cbiAgcm9vdFJlZj86IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG4gIC8qKiBTaG93IGZvY3VzIHdoZW4gY2xpY2sgZWxlbWVudC4gdiovXG4gIGZvY3VzT25DbGljaz86IGJvb2xlYW47XG4gIC8qKiBTaG93IGZvY3VzIHdoZW4gY2xpY2sgZWxlbWVudC4gdiovXG4gIGZvY3VzRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKiogVXNlIHVwLyBkb3duIGtleWJvYXJkIGFycm93cyB0byBjb250cm9sIGZvY3VzLiAqL1xuICB1c2VBcnJvd3M/OiBib29sZWFuO1xuICAvKiogRm9jdXMgYW5kIG5hdmlnYXRpb24gc3RyYXRlZ3kgdG8gYmUgdXNlZC4gdiovXG4gIHN0cmF0ZWd5PzogSHZGb2N1c1N0cmF0ZWdpZXM7XG4gIC8qKiBVc2VzIGFuIGFic29sdXRlIHBvc2l0aW9uZWQgZGl2IGFzIGEgZm9jdXMuIHYqL1xuICB1c2VGYWxzZUZvY3VzPzogYm9vbGVhbjtcbiAgLyoqIE5hcnJvd3MgdGhlIHJlc3VsdHMgb2YgdGhlIGZvY3VzIHRvIG9ubHkgdGhlc2VzIGNsYXNzIHYqL1xuICBmaWx0ZXJDbGFzcz86IHN0cmluZztcbiAgLyoqIEhvdyBtdWNoIHRoZSBuYXZpZ2F0aW9uIHdpbGwgc2tpcCB3aGVuIHVzaW5nIHRoZSBhcnJvd3MuIHYqL1xuICBuYXZpZ2F0aW9uSnVtcD86IG51bWJlcjtcbiAgLyoqIEEgSnNzIE9iamVjdCB1c2VkIHRvIG92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC4gKi9cbiAgY2xhc3Nlcz86IEh2Rm9jdXNDbGFzc2VzO1xufVxuXG5leHBvcnQgY29uc3QgSHZGb2N1cyA9ICh7XG4gIGNsYXNzZXMsXG4gIGNoaWxkcmVuLFxuICBjb25maWd1cmF0aW9uID0ge30sXG4gIGRpc2FibGVkQ2xhc3MgPSBmYWxzZSxcbiAgc2VsZWN0ZWQgPSBmYWxzZSxcbiAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgcm9vdFJlZiA9IHVuZGVmaW5lZCxcbiAgZm9jdXNPbkNsaWNrID0gZmFsc2UsXG4gIGZvY3VzRGlzYWJsZWQgPSB0cnVlLFxuICBzdHJhdGVneSA9IFwibGlzdGJveFwiLFxuICB1c2VGYWxzZUZvY3VzID0gZmFsc2UsXG4gIGZpbHRlckNsYXNzLFxuICBuYXZpZ2F0aW9uSnVtcCA9IDQsXG59OiBIdkZvY3VzUHJvcHMpID0+IHtcbiAgY29uc3QgW3Nob3dGb2N1cywgc2V0U2hvd0ZvY3VzXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW2NoaWxkRm9jdXMsIHNldENoaWxkRm9jdXNdID0gdXNlU3RhdGU8YW55PigpO1xuICBjb25zdCBbaGFzUnVuQ29uZmlnLCBzZXRIYXNSdW5Db25maWddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGdldEZvY3VzZXMgPSAoKSA9PiB7XG4gICAgY29uc3QgZm9jdXNlcyA9IHJvb3RSZWY/LmN1cnJlbnRcbiAgICAgID8gQXJyYXkuZnJvbShcbiAgICAgICAgICByb290UmVmLmN1cnJlbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcbiAgICAgICAgICAgIGZpbHRlckNsYXNzIHx8IGZvY3VzQ2xhc3Nlcy5yb290IHx8IGNsYXNzZXM/LnJvb3QgfHwgXCJyb290XCJcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIDogW107XG4gICAgcmV0dXJuIGZvY3VzZXM7XG4gIH07XG5cbiAgY29uc3Qgc2V0VGFiSW5kZXggPSAoZWwsIHRhYkluZGV4ID0gMCkgPT4ge1xuICAgIGNvbnN0IGVsQ2hpbGRGb2N1cyA9IGdldEZvY3VzYWJsZUNoaWxkcmVuKGVsKVswXTtcbiAgICBpZiAoZWxDaGlsZEZvY3VzKSB7XG4gICAgICBlbC50YWJJbmRleCA9IC0xO1xuICAgICAgZWxDaGlsZEZvY3VzLnRhYkluZGV4ID0gdGFiSW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsLnRhYkluZGV4ID0gdGFiSW5kZXg7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHNldFNlbGVjdGVkVGFiSW5kZXggPSAoKSA9PiB7XG4gICAgY29uc3QgZm9jdXNlcyA9IGdldEZvY3VzZXMoKTtcbiAgICBjb25zdCBmaXJzdFNlbGVjdGVkID0gZm9jdXNlcy5maW5kKChmb2N1cykgPT5cbiAgICAgIGZvY3VzLmNsYXNzTGlzdC5jb250YWlucyhcbiAgICAgICAgZm9jdXNDbGFzc2VzLnNlbGVjdGVkIHx8IGNsYXNzZXM/LnNlbGVjdGVkIHx8IFwic2VsZWN0ZWRcIlxuICAgICAgKVxuICAgICk7XG5cbiAgICBpZiAoIWZpcnN0U2VsZWN0ZWQpIHJldHVybjtcbiAgICBmb2N1c2VzLmZvckVhY2goKGZvY3VzKSA9PiBzZXRUYWJJbmRleChmb2N1cywgLTEpKTtcbiAgICBzZXRUYWJJbmRleChmaXJzdFNlbGVjdGVkLCAwKTtcbiAgfTtcblxuICBjb25zdCBjbGVhclRhYlNpYmxpbmdzID0gKGVsKSA9PiB7XG4gICAgZ2V0Rm9jdXNlcygpLmZvckVhY2goKGZvY3VzKSA9PiBzZXRUYWJJbmRleChmb2N1cywgLTEpKTtcbiAgICBzZXRUYWJJbmRleChlbCwgMCk7XG4gIH07XG5cbiAgY29uc3Qgb25Gb2N1c1N0cmF0ZWd5ID0gKGV2dCkgPT4ge1xuICAgIGlmIChzdHJhdGVneSA9PT0gXCJsaXN0Ym94XCIpIHtcbiAgICAgIGNsZWFyVGFiU2libGluZ3MoZXZ0LmN1cnJlbnRUYXJnZXQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkJsdXJTdHJhdGVneSA9ICgpID0+IHtcbiAgICBpZiAoXG4gICAgICBzdHJhdGVneSA9PT0gXCJsaXN0Ym94XCIgJiZcbiAgICAgIHJvb3RSZWYgJiZcbiAgICAgIHJvb3RSZWYuY3VycmVudCAmJlxuICAgICAgIXJvb3RSZWYuY3VycmVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KVxuICAgICkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldFNlbGVjdGVkVGFiSW5kZXgoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29uZmlnID0gKGVsKSA9PiB7XG4gICAgY29uc3QgeyB0YWJJbmRleCB9ID0gY29uZmlndXJhdGlvbjtcbiAgICBpZiAoIWVsIHx8IGhhc1J1bkNvbmZpZykgcmV0dXJuO1xuICAgIGlmIChzdHJhdGVneSA9PT0gXCJjYXJkXCIpIHtcbiAgICAgIHNldENoaWxkRm9jdXMoY2hpbGRyZW4pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzdHJhdGVneSA9PT0gXCJncmlkXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmb2N1c2FibGVDaGlsZHJlbiA9IGdldEZvY3VzYWJsZUNoaWxkcmVuKGVsKTtcbiAgICBpZiAoZm9jdXNhYmxlQ2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBmb2N1c2FibGVDaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4gc2V0VGFiSW5kZXgoY2hpbGQsIC0xKSk7XG4gICAgICBzZXRDaGlsZEZvY3VzKGZvY3VzYWJsZUNoaWxkcmVuWzBdKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzTmlsKHRhYkluZGV4KSkgc2V0VGFiSW5kZXgoZWwsIHRhYkluZGV4KTtcbiAgICBzZXRIYXNSdW5Db25maWcodHJ1ZSk7XG4gIH07XG5cbiAgY29uc3QgYWRkRm9jdXNDbGFzcyA9IChldnQpID0+IHtcbiAgICBpZiAoIXVzZUZhbHNlRm9jdXMpIHtcbiAgICAgIGV2dC5jdXJyZW50VGFyZ2V0LmNsYXNzTGlzdC5hZGQoZm9jdXNDbGFzc2VzLmZvY3VzZWQpO1xuICAgICAgaWYgKGNsYXNzZXM/LmZvY3VzZWQpIHtcbiAgICAgICAgZXZ0LmN1cnJlbnRUYXJnZXQuY2xhc3NMaXN0LmFkZChjbGFzc2VzLmZvY3VzZWQpO1xuICAgICAgfVxuICAgICAgLy8gYWRkIGdsb2JhbCBjbGFzcyBIdklzRm9jdXNlZCBhcyBhIG1hcmtlclxuICAgICAgLy8gbm90IHRvIGJlIHN0eWxlZCBkaXJlY3RseSwgb25seSBhcyBoZWxwZXIgaW4gc3BlY2lmaWMgY3NzIHF1ZXJpZXNcbiAgICAgIGV2dC5jdXJyZW50VGFyZ2V0LmNsYXNzTGlzdC5hZGQoXCJIdklzRm9jdXNlZFwiKTtcbiAgICAgIGNsYXNzZXM/LmZvY3VzXG4gICAgICAgID8uc3BsaXQoXCIgXCIpXG4gICAgICAgIC5mb3JFYWNoKChjKSA9PiBldnQuY3VycmVudFRhcmdldC5jbGFzc0xpc3QuYWRkKGMpKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlRm9jdXNDbGFzcyA9ICgpID0+IHtcbiAgICBpZiAoIXVzZUZhbHNlRm9jdXMpIHtcbiAgICAgIGdldEZvY3VzZXMoKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChmb2N1c0NsYXNzZXMuZm9jdXNlZCkge1xuICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShmb2N1c0NsYXNzZXMuZm9jdXNlZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNsYXNzZXM/LmZvY3VzZWQpIHtcbiAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3Nlcy5mb2N1c2VkKTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZW1vdmUgdGhlIGdsb2JhbCBjbGFzcyBIdklzRm9jdXNlZFxuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJIdklzRm9jdXNlZFwiKTtcbiAgICAgICAgY2xhc3Nlcz8uZm9jdXM/LnNwbGl0KFwiIFwiKS5mb3JFYWNoKChjKSA9PiBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYykpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uRm9jdXMgPSAoZXZ0KSA9PiB7XG4gICAgYWRkRm9jdXNDbGFzcyhldnQpO1xuICAgIHNldFNob3dGb2N1cyh0cnVlKTtcbiAgICAvLyBnaXZlIGZvY3VzIHRvIGNoaWxkIGVsZW1lbnQgaWYgYW55IGZvY3VzYWJsZVxuXG4gICAgaWYgKGNoaWxkRm9jdXMgJiYgY2hpbGRGb2N1cy5mb2N1cykgY2hpbGRGb2N1cy5mb2N1cygpO1xuICAgIG9uRm9jdXNTdHJhdGVneShldnQpO1xuICB9O1xuXG4gIGNvbnN0IG9uQmx1ciA9ICgpID0+IHtcbiAgICBzZXRTaG93Rm9jdXMoZmFsc2UpO1xuICAgIHJlbW92ZUZvY3VzQ2xhc3MoKTtcbiAgICBvbkJsdXJTdHJhdGVneSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uTW91c2VEb3duID0gKGV2dCkgPT4ge1xuICAgIGNvbnN0IGhhc0NhcmQgPSAhIWV2dC5jdXJyZW50VGFyZ2V0Py5xdWVyeVNlbGVjdG9yKFwiLkh2SXNDYXJkR3JpZEVsZW1lbnRcIik7XG4gICAgaWYgKHN0cmF0ZWd5ID09PSBcImdyaWRcIiAmJiBoYXNDYXJkKSByZXR1cm47XG5cbiAgICBzZXRGb2N1c1RvKGV2dC5jdXJyZW50VGFyZ2V0KTtcbiAgICBzZXRUYWJJbmRleChldnQuY3VycmVudFRhcmdldCwgMCk7XG4gICAgLy8gcmVtb3ZlIGZvY3VzIG91dGxpbmUgdW5sZXNzIGV4cGxpY2l0bHkgZW5hYmxlZFxuICAgIGlmICghZm9jdXNPbkNsaWNrKSB7XG4gICAgICAvLyBUT0RPIHRoaXMgcGllY2Ugb2YgY29kZSB3b3JrcyBvbmx5IGJlY2F1c2Ugb25Nb3VzZURvd24gaXMgaGFwcGVuaW5nIGFmdGVyIHRoZSBmb2N1cyBldmVudFxuICAgICAgLy8gVGhlcmUgaXMgbm90aGluZyBpbiBoZXJlIHRoYXQgZ3VhcmFudGVlcyB0aGUgb3JkZXIgb2YgdGhlc2UgZXZlbnRzLCBzbyBpdCBtYXkgcHJlc2VudCBhIHByb2JsZW0gaW4gdGhlIGZ1dHVyZVxuICAgICAgcmVtb3ZlRm9jdXNDbGFzcygpO1xuICAgICAgc2V0U2hvd0ZvY3VzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZm9jdXNBbmRVcGRhdGVJbmRleCA9IChuZXh0Rm9jdXMsIHByZXZpb3VzRm9jdXMsIGZvY3VzZXNMaXN0KSA9PiB7XG4gICAgaWYgKGZvY3VzZXNMaXN0Py5pbmNsdWRlcyhwcmV2aW91c0ZvY3VzKSkge1xuICAgICAgc2V0VGFiSW5kZXgocHJldmlvdXNGb2N1cywgLTEpO1xuICAgIH1cbiAgICBzZXRUYWJJbmRleChuZXh0Rm9jdXMsIDApO1xuICAgIHNldEZvY3VzVG8obmV4dEZvY3VzKTtcbiAgfTtcblxuICBjb25zdCBnZXRFbmFibGVkS2V5cyA9IChjdXJyZW50Rm9jdXNJbmRleCwganVtcCwgbGlzdFNpemUpID0+ICh7XG4gICAgcmlnaHQ6XG4gICAgICAoY3VycmVudEZvY3VzSW5kZXggKyAxKSAlIGp1bXAgPT09IDAgfHxcbiAgICAgIGN1cnJlbnRGb2N1c0luZGV4ICsgMSA+IGxpc3RTaXplIC0gMSxcbiAgICBsZWZ0OiBjdXJyZW50Rm9jdXNJbmRleCAlIGp1bXAgPT09IDAsXG4gICAgdXA6IGN1cnJlbnRGb2N1c0luZGV4IC0ganVtcCA8IDAsXG4gICAgZG93bjpcbiAgICAgIGN1cnJlbnRGb2N1c0luZGV4ICsganVtcCA+IGxpc3RTaXplIHx8XG4gICAgICBjdXJyZW50Rm9jdXNJbmRleCArIGp1bXAgPiBsaXN0U2l6ZSAtIDEsXG4gIH0pO1xuXG4gIGNvbnN0IG9uR3JpZEtleURvd25IYW5kbGVyID0gKFxuICAgIGV2dCxcbiAgICBmb2N1c2VzLFxuICAgIGZvY3VzZXNMaXN0LFxuICAgIGN1cnJlbnRGb2N1c0luZGV4LFxuICAgIGp1bXBcbiAgKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgQXJyb3dVcCxcbiAgICAgIEFycm93RG93bixcbiAgICAgIEhvbWUsXG4gICAgICBFbmQsXG4gICAgICBBcnJvd0xlZnQsXG4gICAgICBBcnJvd1JpZ2h0LFxuICAgICAgRW50ZXIsXG4gICAgICBTcGFjZUJhcixcbiAgICB9ID0ga2V5Ym9hcmRDb2RlcztcblxuICAgIGNvbnN0IGNoaWxkRm9jdXNJc0lucHV0ID0gY2hpbGRGb2N1cyAmJiBjaGlsZEZvY3VzLm5vZGVOYW1lID09PSBcIklOUFVUXCI7XG5cbiAgICBpZiAoXG4gICAgICAhaXNPbmVPZktleXMoZXZ0LCBbXG4gICAgICAgIEFycm93VXAsXG4gICAgICAgIEFycm93RG93bixcbiAgICAgICAgQXJyb3dMZWZ0LFxuICAgICAgICBBcnJvd1JpZ2h0LFxuICAgICAgICBIb21lLFxuICAgICAgICBFbmQsXG4gICAgICAgIFNwYWNlQmFyLFxuICAgICAgICBFbnRlcixcbiAgICAgIF0pIHx8XG4gICAgICAoY2hpbGRGb2N1c0lzSW5wdXQgJiYgaXNLZXkoZXZ0LCBFbnRlcikpXG4gICAgKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gd2UnbGwgZG8gc29tZXRoaW5nIHdpdGggdGhlIGtleSBzbyBwcmV2ZW50IGRlZmF1bHQgYW5kIHN0b3AgcHJvcGFnYXRpb25cbiAgICAvLyBleGNlcHQgZm9yIEVudGVyIGFuZCBTcGFjZUJhclxuICAgIGlmICghaXNPbmVPZktleXMoZXZ0LCBbRW50ZXIsIFNwYWNlQmFyXSkpIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IGJsb2NrZWRLZXlzID0gZ2V0RW5hYmxlZEtleXMoXG4gICAgICBjdXJyZW50Rm9jdXNJbmRleCxcbiAgICAgIGp1bXAsXG4gICAgICBmb2N1c2VzTGlzdC5sZW5ndGhcbiAgICApO1xuXG4gICAgc3dpdGNoIChldnQua2V5Q29kZSkge1xuICAgICAgY2FzZSBTcGFjZUJhcjpcbiAgICAgIGNhc2UgRW50ZXI6XG4gICAgICAgIGlmIChpc0Jyb3dzZXIoXCJmaXJlZm94XCIpKSB7XG4gICAgICAgICAgZXZ0LnRhcmdldC5jbGljaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV2dC5jdXJyZW50VGFyZ2V0LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEFycm93VXA6XG4gICAgICAgIGlmICghYmxvY2tlZEtleXMudXApIHtcbiAgICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KFxuICAgICAgICAgICAgZm9jdXNlcy5qdW1wIHx8IGZvY3VzZXMubGFzdCxcbiAgICAgICAgICAgIGV2dC5jdXJyZW50LFxuICAgICAgICAgICAgZm9jdXNlc0xpc3RcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBcnJvd0Rvd246XG4gICAgICAgIGlmICghYmxvY2tlZEtleXMuZG93bikge1xuICAgICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoXG4gICAgICAgICAgICBmb2N1c2VzLmZhbGwgfHwgZm9jdXNlcy5maXJzdCxcbiAgICAgICAgICAgIGV2dC5jdXJyZW50LFxuICAgICAgICAgICAgZm9jdXNlc0xpc3RcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBcnJvd0xlZnQ6XG4gICAgICAgIGlmICghYmxvY2tlZEtleXMubGVmdCkge1xuICAgICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoXG4gICAgICAgICAgICBmb2N1c2VzLnByZXZpb3VzIHx8IGZvY3VzZXMubGFzdCxcbiAgICAgICAgICAgIGV2dC5jdXJyZW50LFxuICAgICAgICAgICAgZm9jdXNlc0xpc3RcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBcnJvd1JpZ2h0OlxuICAgICAgICBpZiAoIWJsb2NrZWRLZXlzLnJpZ2h0KSB7XG4gICAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChcbiAgICAgICAgICAgIGZvY3VzZXMubmV4dCB8fCBmb2N1c2VzLmZpcnN0LFxuICAgICAgICAgICAgZXZ0LmN1cnJlbnQsXG4gICAgICAgICAgICBmb2N1c2VzTGlzdFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEhvbWU6XG4gICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoZm9jdXNlcy5maXJzdCwgZXZ0LmN1cnJlbnQsIGZvY3VzZXNMaXN0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVuZDpcbiAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChmb2N1c2VzLmxhc3QsIGV2dC5jdXJyZW50LCBmb2N1c2VzTGlzdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25WZXJ0aWNhbEFycmFuZ2VtZW50SGFuZGxlciA9IChldnQsIGZvY3VzZXMsIGZvY3VzZXNMaXN0KSA9PiB7XG4gICAgY29uc3QgeyBBcnJvd1VwLCBBcnJvd0Rvd24sIEhvbWUsIEVuZCwgRW50ZXIsIFNwYWNlQmFyIH0gPSBrZXlib2FyZENvZGVzO1xuICAgIGNvbnN0IGNoaWxkRm9jdXNJc0lucHV0ID0gY2hpbGRGb2N1cyAmJiBjaGlsZEZvY3VzLm5vZGVOYW1lID09PSBcIklOUFVUXCI7XG5cbiAgICBpZiAoXG4gICAgICAhaXNPbmVPZktleXMoZXZ0LCBbQXJyb3dVcCwgQXJyb3dEb3duLCBIb21lLCBFbmQsIFNwYWNlQmFyLCBFbnRlcl0pIHx8XG4gICAgICAoY2hpbGRGb2N1c0lzSW5wdXQgJiYgaXNLZXkoZXZ0LCBFbnRlcikpXG4gICAgKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gd2UnbGwgZG8gc29tZXRoaW5nIHdpdGggdGhlIGtleSBzbyBwcmV2ZW50IGRlZmF1bHQgYW5kIHN0b3AgcHJvcGFnYXRpb25cbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBzd2l0Y2ggKGV2dC5rZXlDb2RlKSB7XG4gICAgICBjYXNlIFNwYWNlQmFyOlxuICAgICAgY2FzZSBFbnRlcjpcbiAgICAgICAgZXZ0LnRhcmdldC5jbGljaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXJyb3dVcDpcbiAgICAgICAgZm9jdXNBbmRVcGRhdGVJbmRleChcbiAgICAgICAgICBmb2N1c2VzLnByZXZpb3VzIHx8IGZvY3VzZXMubGFzdCxcbiAgICAgICAgICBldnQuY3VycmVudCxcbiAgICAgICAgICBmb2N1c2VzTGlzdFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXJyb3dEb3duOlxuICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KFxuICAgICAgICAgIGZvY3VzZXMubmV4dCB8fCBmb2N1c2VzLmZpcnN0LFxuICAgICAgICAgIGV2dC5jdXJyZW50LFxuICAgICAgICAgIGZvY3VzZXNMaXN0XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIb21lOlxuICAgICAgICBmb2N1c0FuZFVwZGF0ZUluZGV4KGZvY3VzZXMuZmlyc3QsIGV2dC5jdXJyZW50LCBmb2N1c2VzTGlzdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFbmQ6XG4gICAgICAgIGZvY3VzQW5kVXBkYXRlSW5kZXgoZm9jdXNlcy5sYXN0LCBldnQuY3VycmVudCwgZm9jdXNlc0xpc3QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uU2luZ2xlSGFuZGxlciA9IChldnQpID0+IHtcbiAgICBjb25zdCB7IEVudGVyLCBTcGFjZUJhciB9ID0ga2V5Ym9hcmRDb2RlcztcbiAgICBjb25zdCBjaGlsZEZvY3VzSXNJbnB1dCA9IGNoaWxkRm9jdXMgJiYgY2hpbGRGb2N1cy5ub2RlTmFtZSA9PT0gXCJJTlBVVFwiO1xuXG4gICAgaWYgKFxuICAgICAgIWlzT25lT2ZLZXlzKGV2dCwgW1NwYWNlQmFyLCBFbnRlcl0pIHx8XG4gICAgICAoY2hpbGRGb2N1c0lzSW5wdXQgJiYgaXNLZXkoZXZ0LCBFbnRlcikpXG4gICAgKSB7XG4gICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gd2UnbGwgZG8gc29tZXRoaW5nIHdpdGggdGhlIGtleSBzbyBwcmV2ZW50IGRlZmF1bHQgYW5kIHN0b3AgcHJvcGFnYXRpb25cbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBldnQuY3VycmVudFRhcmdldC5jbGljaygpO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IChldnQpID0+IHtcbiAgICBpZiAocm9vdFJlZj8uY3VycmVudCA9PSBudWxsKSB7XG4gICAgICAvLyBvcGVyYXRpbmcgb3V0c2lkZSBvZiBhIGNvbXBvc2l0ZSB3aWRnZXRcbiAgICAgIC8vIG5vdGhpbmcgdG8gbWFuYWdlLCBqdXN0IHN0eWxlIGFuZCB0cmlnZ2VyIGNsaWNrc1xuICAgICAgb25TaW5nbGVIYW5kbGVyKGV2dCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVE9ETyBrZWVwIHRoZSBzbWFydCBkZWZhdWx0LCBidXQgYWxsb3cgdG8gZXhwbGljaXRseSBvdmVycmlkZSBpZiBkaXNhYmxlZCBlbGVtZW50cyBzaG91bGQgYmUgZm9jdXNhYmxlXG4gICAgY29uc3QgaXNEaXNhYmxlZEZvY3VzYWJsZSA9IHN0cmF0ZWd5ID09PSBcIm1lbnVcIjtcbiAgICBjb25zdCBmb2N1c2VzTGlzdCA9IGdldEZvY3VzZXMoKS5maWx0ZXIoXG4gICAgICAoZWwpID0+XG4gICAgICAgIGlzRGlzYWJsZWRGb2N1c2FibGUgfHxcbiAgICAgICAgIWVsLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc2VzPy5kaXNhYmxlZCBhcyBzdHJpbmcpXG4gICAgKTtcblxuICAgIGNvbnN0IGN1cnJlbnRGb2N1cyA9IGZvY3VzZXNMaXN0LmluZGV4T2YoZXZ0LmN1cnJlbnRUYXJnZXQpO1xuXG4gICAgY29uc3QgZm9jdXNlcyA9IHtcbiAgICAgIGZpcnN0OiBmb2N1c2VzTGlzdFswXSxcbiAgICAgIGxhc3Q6IGZvY3VzZXNMaXN0W2ZvY3VzZXNMaXN0Lmxlbmd0aCAtIDFdLFxuICAgICAgcHJldmlvdXM6IGZvY3VzZXNMaXN0W2N1cnJlbnRGb2N1cyAtIDFdLFxuICAgICAgbmV4dDogZm9jdXNlc0xpc3RbY3VycmVudEZvY3VzICsgMV0sXG4gICAgICBmYWxsOiBmb2N1c2VzTGlzdFtjdXJyZW50Rm9jdXMgKyBuYXZpZ2F0aW9uSnVtcF0sXG4gICAgICBqdW1wOiBmb2N1c2VzTGlzdFtjdXJyZW50Rm9jdXMgLSBuYXZpZ2F0aW9uSnVtcF0sXG4gICAgfTtcblxuICAgIGlmIChzdHJhdGVneSA9PT0gXCJncmlkXCIpIHtcbiAgICAgIG9uR3JpZEtleURvd25IYW5kbGVyKFxuICAgICAgICBldnQsXG4gICAgICAgIGZvY3VzZXMsXG4gICAgICAgIGZvY3VzZXNMaXN0LFxuICAgICAgICBjdXJyZW50Rm9jdXMsXG4gICAgICAgIG5hdmlnYXRpb25KdW1wXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRPRE8gYWRkIHByb3BlcnR5IGZvciBzcGVjaWZ5aW5nIHRoZSBjb21wb3NpdGUgd2lkZ2V0IG9yaWVudGF0aW9uXG4gICAgLy8gVE9ETyBpbXBsZW1lbnQgaGFuZGxlciBmb3IgaG9yaXpvbnRhbCBvcmllbnRhdGlvblxuICAgIG9uVmVydGljYWxBcnJhbmdlbWVudEhhbmRsZXIoZXZ0LCBmb2N1c2VzLCBmb2N1c2VzTGlzdCk7XG4gIH07XG5cbiAgY29uc3Qgb25LZXlVcCA9IChldnQpID0+IHtcbiAgICBpZiAoaXNCcm93c2VyKFwiZmlyZWZveFwiKSkgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgaWYgKGRpc2FibGVkKSByZXR1cm4gY2hpbGRyZW47XG5cbiAgY29uc3QgZm9jdXNXcmFwcGVyID0gKGNoaWxkcmVuVG9XcmFwKSA9PiAoXG4gICAgPFN0eWxlZEZvY3VzV3JhcHBlclxuICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICBjbGFzc2VzPy5leHRlcm5hbFJlZmVyZW5jZSxcbiAgICAgICAgZm9jdXNDbGFzc2VzLmV4dGVybmFsUmVmZXJlbmNlXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlblRvV3JhcH1cbiAgICAgIHtzaG93Rm9jdXMgJiYgKFxuICAgICAgICA8U3R5bGVkRmFsc2VGb2N1c1xuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChjbGFzc2VzPy5mYWxzZUZvY3VzLCBmb2N1c0NsYXNzZXMuZmFsc2VGb2N1cyl9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvU3R5bGVkRm9jdXNXcmFwcGVyPlxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPENvbmRpdGlvbmFsV3JhcHBlciBjb25kaXRpb249e3VzZUZhbHNlRm9jdXN9IHdyYXBwZXI9e2ZvY3VzV3JhcHBlcn0+XG4gICAgICA8R2xvYmFsIHN0eWxlcz17Zm9jdXNTdHlsZXN9IC8+XG4gICAgICB7UmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIGNsYXNzTmFtZTogY2xzeChcbiAgICAgICAgICBjaGlsZHJlbi5wcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgZm9jdXNDbGFzc2VzLnJvb3QsXG4gICAgICAgICAgY2xhc3Nlcz8ucm9vdCxcbiAgICAgICAgICBmaWx0ZXJDbGFzcyxcbiAgICAgICAgICBzZWxlY3RlZCAmJiBjbHN4KGZvY3VzQ2xhc3Nlcy5zZWxlY3RlZCwgY2xhc3Nlcz8uc2VsZWN0ZWQpLFxuICAgICAgICAgIGRpc2FibGVkQ2xhc3MgJiYgY2xzeChmb2N1c0NsYXNzZXMuZGlzYWJsZWQsIGNsYXNzZXM/LmRpc2FibGVkKSxcbiAgICAgICAgICBmb2N1c0Rpc2FibGVkICYmXG4gICAgICAgICAgICBjbHN4KGZvY3VzQ2xhc3Nlcy5mb2N1c0Rpc2FibGVkLCBjbGFzc2VzPy5mb2N1c0Rpc2FibGVkKVxuICAgICAgICApLFxuICAgICAgICByZWY6IGNvbmZpZyxcbiAgICAgICAgb25Gb2N1cyxcbiAgICAgICAgb25CbHVyLFxuICAgICAgICBvbk1vdXNlRG93bixcbiAgICAgICAgb25LZXlEb3duLFxuICAgICAgICBvbktleVVwLFxuICAgICAgICBzZWxlY3RlZCxcbiAgICAgIH0pfVxuICAgIDwvQ29uZGl0aW9uYWxXcmFwcGVyPlxuICApO1xufTtcbiJdfQ== */",
|
|
22
22
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
23
23
|
};
|
|
24
24
|
const HvFocus = ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Focus.js","sources":["../../../../src/components/Focus/Focus.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport isNil from \"lodash/isNil\";\nimport React, { RefObject, useState } from \"react\";\nimport { HvBaseProps } from \"@core/types\";\nimport { keyboardCodes, isBrowser } from \"@core/utils\";\nimport ConditionalWrapper from \"@core/utils/ConditionalWrapper\";\nimport { StyledFocusWrapper, StyledFalseFocus } from \"./Focus.styles\";\nimport { getFocusableChildren, isKey, isOneOfKeys, setFocusTo } from \"./utils\";\nimport focusClasses, { HvFocusClasses } from \"./focusClasses\";\nimport { css, Global } from \"@emotion/react\";\n\nconst focusStyles = css`\n .HvFocus-focused {\n outline-color: #52a8ec;\n outline-style: solid;\n outline-width: 0px;\n outline-offset: -1px;\n box-shadow: 0 0 0 1px #52a8ec, 0 0 0 4px rgba(29, 155, 209, 0.3);\n\n @media (-webkit-min-device-pixel-ratio: 0) {\n outline-color: #52a8ec;\n outline-style: solid;\n outline-width: 0px;\n outline-offset: -1px;\n box-shadow: 0 0 0 1px #52a8ec, 0 0 0 4px rgba(29, 155, 209, 0.3);\n }\n }\n\n .HvFocus-focusDisabled {\n outline: none;\n box-shadow: none;\n }\n .HvFocus-focusDisabled *:focus {\n outline: none;\n box-shadow: none;\n }\n .HvFocus-focusDisabled * {\n outline: none !important;\n box-shadow: none !important;\n }\n`;\n\nexport type HvFocusStrategies = \"listbox\" | \"menu\" | \"card\" | \"grid\";\n\nexport interface HvFocusProps extends HvBaseProps<HTMLElement, { children }> {\n children: React.ReactElement;\n /** Extra configuration for the child element. */\n configuration?: {\n tabIndex?: number;\n };\n /** Indicates that the disabled class should be applied. */\n disabledClass?: boolean;\n /** Whether the focus is selected. */\n selected?: boolean;\n /** Whether the focus is disabled. */\n disabled?: boolean;\n /** The reference to the root element to hold all Focus' context. */\n rootRef?: RefObject<HTMLElement>;\n /** Show focus when click element. v*/\n focusOnClick?: boolean;\n /** Show focus when click element. v*/\n focusDisabled?: boolean;\n /** Use up/ down keyboard arrows to control focus. */\n useArrows?: boolean;\n /** Focus and navigation strategy to be used. v*/\n strategy?: HvFocusStrategies;\n /** Uses an absolute positioned div as a focus. v*/\n useFalseFocus?: boolean;\n /** Narrows the results of the focus to only theses class v*/\n filterClass?: string;\n /** How much the navigation will skip when using the arrows. v*/\n navigationJump?: number;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvFocusClasses;\n}\n\nexport const HvFocus = ({\n classes,\n children,\n configuration = {},\n disabledClass = false,\n selected = false,\n disabled = false,\n rootRef = undefined,\n focusOnClick = false,\n focusDisabled = true,\n strategy = \"listbox\",\n useFalseFocus = false,\n filterClass,\n navigationJump = 4,\n}: HvFocusProps) => {\n const [showFocus, setShowFocus] = useState<boolean>(false);\n const [childFocus, setChildFocus] = useState<any>();\n const [hasRunConfig, setHasRunConfig] = useState(false);\n\n const getFocuses = () => {\n const focuses = rootRef?.current\n ? Array.from(\n rootRef.current.getElementsByClassName(\n filterClass || focusClasses.root || classes?.root || \"root\"\n )\n )\n : [];\n return focuses;\n };\n\n const setTabIndex = (el, tabIndex = 0) => {\n const elChildFocus = getFocusableChildren(el)[0];\n if (elChildFocus) {\n el.tabIndex = -1;\n elChildFocus.tabIndex = tabIndex;\n } else {\n el.tabIndex = tabIndex;\n }\n };\n\n const setSelectedTabIndex = () => {\n const focuses = getFocuses();\n const firstSelected = focuses.find((focus) =>\n focus.classList.contains(\n focusClasses.selected || classes?.selected || \"selected\"\n )\n );\n\n if (!firstSelected) return;\n focuses.forEach((focus) => setTabIndex(focus, -1));\n setTabIndex(firstSelected, 0);\n };\n\n const clearTabSiblings = (el) => {\n getFocuses().forEach((focus) => setTabIndex(focus, -1));\n setTabIndex(el, 0);\n };\n\n const onFocusStrategy = (evt) => {\n if (strategy === \"listbox\") {\n clearTabSiblings(evt.currentTarget);\n }\n };\n\n const onBlurStrategy = () => {\n if (\n strategy === \"listbox\" &&\n rootRef &&\n rootRef.current &&\n !rootRef.current.contains(document.activeElement)\n ) {\n setTimeout(() => {\n setSelectedTabIndex();\n }, 10);\n }\n };\n\n const config = (el) => {\n const { tabIndex } = configuration;\n if (!el || hasRunConfig) return;\n if (strategy === \"card\") {\n setChildFocus(children);\n return;\n }\n\n if (strategy === \"grid\") {\n return;\n }\n\n const focusableChildren = getFocusableChildren(el);\n if (focusableChildren.length) {\n focusableChildren.forEach((child) => setTabIndex(child, -1));\n setChildFocus(focusableChildren[0]);\n }\n\n if (!isNil(tabIndex)) setTabIndex(el, tabIndex);\n setHasRunConfig(true);\n };\n\n const addFocusClass = (evt) => {\n if (!useFalseFocus) {\n evt.currentTarget.classList.add(focusClasses.focused);\n if (classes?.focused) {\n evt.currentTarget.classList.add(classes.focused);\n }\n // add global class HvIsFocused as a marker\n // not to be styled directly, only as helper in specific css queries\n evt.currentTarget.classList.add(\"HvIsFocused\");\n classes?.focus\n ?.split(\" \")\n .forEach((c) => evt.currentTarget.classList.add(c));\n }\n };\n\n const removeFocusClass = () => {\n if (!useFalseFocus) {\n getFocuses().forEach((element) => {\n if (focusClasses.focused) {\n element.classList.remove(focusClasses.focused);\n }\n if (classes?.focused) {\n element.classList.remove(classes.focused);\n }\n // remove the global class HvIsFocused\n element.classList.remove(\"HvIsFocused\");\n classes?.focus?.split(\" \").forEach((c) => element.classList.remove(c));\n });\n }\n };\n\n const onFocus = (evt) => {\n addFocusClass(evt);\n setShowFocus(true);\n // give focus to child element if any focusable\n\n if (childFocus && childFocus.focus) childFocus.focus();\n onFocusStrategy(evt);\n };\n\n const onBlur = () => {\n setShowFocus(false);\n removeFocusClass();\n onBlurStrategy();\n };\n\n const onMouseDown = (evt) => {\n const hasCard = !!evt.currentTarget?.querySelector(\".HvIsCardGridElement\");\n if (strategy === \"grid\" && hasCard) return;\n\n setFocusTo(evt.currentTarget);\n setTabIndex(evt.currentTarget, 0);\n // remove focus outline unless explicitly enabled\n if (!focusOnClick) {\n // TODO this piece of code works only because onMouseDown is happening after the focus event\n // There is nothing in here that guarantees the order of these events, so it may present a problem in the future\n removeFocusClass();\n setShowFocus(false);\n }\n };\n\n const focusAndUpdateIndex = (nextFocus, previousFocus, focusesList) => {\n if (focusesList?.includes(previousFocus)) {\n setTabIndex(previousFocus, -1);\n }\n setTabIndex(nextFocus, 0);\n setFocusTo(nextFocus);\n };\n\n const getEnabledKeys = (currentFocusIndex, jump, listSize) => ({\n right:\n (currentFocusIndex + 1) % jump === 0 ||\n currentFocusIndex + 1 > listSize - 1,\n left: currentFocusIndex % jump === 0,\n up: currentFocusIndex - jump < 0,\n down:\n currentFocusIndex + jump > listSize ||\n currentFocusIndex + jump > listSize - 1,\n });\n\n const onGridKeyDownHandler = (\n evt,\n focuses,\n focusesList,\n currentFocusIndex,\n jump\n ) => {\n const {\n ArrowUp,\n ArrowDown,\n Home,\n End,\n ArrowLeft,\n ArrowRight,\n Enter,\n SpaceBar,\n } = keyboardCodes;\n\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [\n ArrowUp,\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n Home,\n End,\n SpaceBar,\n Enter,\n ]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n // except for Enter and SpaceBar\n if (!isOneOfKeys(evt, [Enter, SpaceBar])) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n const blockedKeys = getEnabledKeys(\n currentFocusIndex,\n jump,\n focusesList.length\n );\n\n switch (evt.keyCode) {\n case SpaceBar:\n case Enter:\n if (isBrowser(\"firefox\")) {\n evt.target.click();\n } else {\n evt.currentTarget.click();\n }\n break;\n case ArrowUp:\n if (!blockedKeys.up) {\n focusAndUpdateIndex(\n focuses.jump || focuses.last,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowDown:\n if (!blockedKeys.down) {\n focusAndUpdateIndex(\n focuses.fall || focuses.first,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowLeft:\n if (!blockedKeys.left) {\n focusAndUpdateIndex(\n focuses.previous || focuses.last,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowRight:\n if (!blockedKeys.right) {\n focusAndUpdateIndex(\n focuses.next || focuses.first,\n evt.current,\n focusesList\n );\n }\n break;\n case Home:\n focusAndUpdateIndex(focuses.first, evt.current, focusesList);\n break;\n case End:\n focusAndUpdateIndex(focuses.last, evt.current, focusesList);\n break;\n default:\n }\n };\n\n const onVerticalArrangementHandler = (evt, focuses, focusesList) => {\n const { ArrowUp, ArrowDown, Home, End, Enter, SpaceBar } = keyboardCodes;\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [ArrowUp, ArrowDown, Home, End, SpaceBar, Enter]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n evt.preventDefault();\n evt.stopPropagation();\n\n switch (evt.keyCode) {\n case SpaceBar:\n case Enter:\n evt.target.click();\n break;\n case ArrowUp:\n focusAndUpdateIndex(\n focuses.previous || focuses.last,\n evt.current,\n focusesList\n );\n break;\n case ArrowDown:\n focusAndUpdateIndex(\n focuses.next || focuses.first,\n evt.current,\n focusesList\n );\n break;\n case Home:\n focusAndUpdateIndex(focuses.first, evt.current, focusesList);\n break;\n case End:\n focusAndUpdateIndex(focuses.last, evt.current, focusesList);\n break;\n default:\n }\n };\n\n const onSingleHandler = (evt) => {\n const { Enter, SpaceBar } = keyboardCodes;\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [SpaceBar, Enter]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n evt.preventDefault();\n evt.stopPropagation();\n\n evt.currentTarget.click();\n };\n\n const onKeyDown = (evt) => {\n if (rootRef?.current == null) {\n // operating outside of a composite widget\n // nothing to manage, just style and trigger clicks\n onSingleHandler(evt);\n return;\n }\n\n // TODO keep the smart default, but allow to explicitly override if disabled elements should be focusable\n const isDisabledFocusable = strategy === \"menu\";\n const focusesList = getFocuses().filter(\n (el) =>\n isDisabledFocusable ||\n !el.classList.contains(classes?.disabled as string)\n );\n\n const currentFocus = focusesList.indexOf(evt.currentTarget);\n\n const focuses = {\n first: focusesList[0],\n last: focusesList[focusesList.length - 1],\n previous: focusesList[currentFocus - 1],\n next: focusesList[currentFocus + 1],\n fall: focusesList[currentFocus + navigationJump],\n jump: focusesList[currentFocus - navigationJump],\n };\n\n if (strategy === \"grid\") {\n onGridKeyDownHandler(\n evt,\n focuses,\n focusesList,\n currentFocus,\n navigationJump\n );\n return;\n }\n\n // TODO add property for specifying the composite widget orientation\n // TODO implement handler for horizontal orientation\n onVerticalArrangementHandler(evt, focuses, focusesList);\n };\n\n const onKeyUp = (evt) => {\n if (isBrowser(\"firefox\")) evt.preventDefault();\n };\n\n if (disabled) return children;\n\n const focusWrapper = (childrenToWrap) => (\n <StyledFocusWrapper\n className={clsx(\n classes?.externalReference,\n focusClasses.externalReference\n )}\n >\n {childrenToWrap}\n {showFocus && (\n <StyledFalseFocus\n className={clsx(classes?.falseFocus, focusClasses.falseFocus)}\n />\n )}\n </StyledFocusWrapper>\n );\n\n return (\n <ConditionalWrapper condition={useFalseFocus} wrapper={focusWrapper}>\n <Global styles={focusStyles} />\n {React.cloneElement(children, {\n className: clsx(\n children.props.className,\n focusClasses.root,\n classes?.root,\n filterClass,\n selected && clsx(focusClasses.selected, classes?.selected),\n disabledClass && clsx(focusClasses.disabled, classes?.disabled),\n focusDisabled &&\n clsx(focusClasses.focusDisabled, classes?.focusDisabled)\n ),\n ref: config,\n onFocus,\n onBlur,\n onMouseDown,\n onKeyDown,\n onKeyUp,\n selected,\n })}\n </ConditionalWrapper>\n );\n};\n"],"names":["focusStyles","process","env","NODE_ENV","name","styles","map","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","HvFocus","classes","children","configuration","disabledClass","selected","disabled","rootRef","undefined","focusOnClick","focusDisabled","strategy","useFalseFocus","filterClass","navigationJump","showFocus","setShowFocus","useState","childFocus","setChildFocus","hasRunConfig","setHasRunConfig","getFocuses","focuses","current","Array","from","getElementsByClassName","focusClasses","root","setTabIndex","el","tabIndex","elChildFocus","getFocusableChildren","setSelectedTabIndex","firstSelected","find","focus","classList","contains","forEach","clearTabSiblings","onFocusStrategy","evt","currentTarget","onBlurStrategy","document","activeElement","setTimeout","config","focusableChildren","length","child","isNil","addFocusClass","add","focused","split","c","removeFocusClass","element","remove","onFocus","onBlur","onMouseDown","hasCard","querySelector","setFocusTo","focusAndUpdateIndex","nextFocus","previousFocus","focusesList","includes","getEnabledKeys","currentFocusIndex","jump","listSize","right","left","up","down","onGridKeyDownHandler","ArrowUp","ArrowDown","Home","End","ArrowLeft","ArrowRight","Enter","SpaceBar","keyboardCodes","childFocusIsInput","nodeName","isOneOfKeys","isKey","preventDefault","stopPropagation","blockedKeys","keyCode","isBrowser","target","click","last","fall","first","previous","next","onVerticalArrangementHandler","onSingleHandler","onKeyDown","isDisabledFocusable","filter","currentFocus","indexOf","onKeyUp","focusWrapper","childrenToWrap","_jsxs","StyledFocusWrapper","className","clsx","externalReference","StyledFalseFocus","falseFocus","ConditionalWrapper","condition","wrapper","_jsx","Global","React","cloneElement","props","ref"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Focus.js","sources":["../../../../src/components/Focus/Focus.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport isNil from \"lodash/isNil\";\nimport React, { RefObject, useState } from \"react\";\nimport { HvBaseProps } from \"@core/types\";\nimport { keyboardCodes, isBrowser } from \"@core/utils\";\nimport ConditionalWrapper from \"@core/utils/ConditionalWrapper\";\nimport { StyledFocusWrapper, StyledFalseFocus } from \"./Focus.styles\";\nimport { getFocusableChildren, isKey, isOneOfKeys, setFocusTo } from \"./utils\";\nimport focusClasses, { HvFocusClasses } from \"./focusClasses\";\nimport { css, Global } from \"@emotion/react\";\n\nconst focusStyles = css`\n .HvFocus-focused {\n outline-color: #52a8ec;\n outline-style: solid;\n outline-width: 0px;\n outline-offset: -1px;\n box-shadow: 0 0 0 1px #52a8ec, 0 0 0 4px rgba(29, 155, 209, 0.3);\n\n @media (-webkit-min-device-pixel-ratio: 0) {\n outline-color: #52a8ec;\n outline-style: solid;\n outline-width: 0px;\n outline-offset: -1px;\n box-shadow: 0 0 0 1px #52a8ec, 0 0 0 4px rgba(29, 155, 209, 0.3);\n }\n }\n\n .HvFocus-focusDisabled {\n outline: none;\n box-shadow: none;\n }\n .HvFocus-focusDisabled *:focus {\n outline: none;\n box-shadow: none;\n }\n .HvFocus-focusDisabled * {\n outline: none !important;\n box-shadow: none !important;\n }\n`;\n\nexport type HvFocusStrategies = \"listbox\" | \"menu\" | \"card\" | \"grid\";\n\nexport interface HvFocusProps extends HvBaseProps<HTMLElement, \"children\"> {\n children: React.ReactElement;\n /** Extra configuration for the child element. */\n configuration?: {\n tabIndex?: number;\n };\n /** Indicates that the disabled class should be applied. */\n disabledClass?: boolean;\n /** Whether the focus is selected. */\n selected?: boolean;\n /** Whether the focus is disabled. */\n disabled?: boolean;\n /** The reference to the root element to hold all Focus' context. */\n rootRef?: RefObject<HTMLElement>;\n /** Show focus when click element. v*/\n focusOnClick?: boolean;\n /** Show focus when click element. v*/\n focusDisabled?: boolean;\n /** Use up/ down keyboard arrows to control focus. */\n useArrows?: boolean;\n /** Focus and navigation strategy to be used. v*/\n strategy?: HvFocusStrategies;\n /** Uses an absolute positioned div as a focus. v*/\n useFalseFocus?: boolean;\n /** Narrows the results of the focus to only theses class v*/\n filterClass?: string;\n /** How much the navigation will skip when using the arrows. v*/\n navigationJump?: number;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvFocusClasses;\n}\n\nexport const HvFocus = ({\n classes,\n children,\n configuration = {},\n disabledClass = false,\n selected = false,\n disabled = false,\n rootRef = undefined,\n focusOnClick = false,\n focusDisabled = true,\n strategy = \"listbox\",\n useFalseFocus = false,\n filterClass,\n navigationJump = 4,\n}: HvFocusProps) => {\n const [showFocus, setShowFocus] = useState<boolean>(false);\n const [childFocus, setChildFocus] = useState<any>();\n const [hasRunConfig, setHasRunConfig] = useState(false);\n\n const getFocuses = () => {\n const focuses = rootRef?.current\n ? Array.from(\n rootRef.current.getElementsByClassName(\n filterClass || focusClasses.root || classes?.root || \"root\"\n )\n )\n : [];\n return focuses;\n };\n\n const setTabIndex = (el, tabIndex = 0) => {\n const elChildFocus = getFocusableChildren(el)[0];\n if (elChildFocus) {\n el.tabIndex = -1;\n elChildFocus.tabIndex = tabIndex;\n } else {\n el.tabIndex = tabIndex;\n }\n };\n\n const setSelectedTabIndex = () => {\n const focuses = getFocuses();\n const firstSelected = focuses.find((focus) =>\n focus.classList.contains(\n focusClasses.selected || classes?.selected || \"selected\"\n )\n );\n\n if (!firstSelected) return;\n focuses.forEach((focus) => setTabIndex(focus, -1));\n setTabIndex(firstSelected, 0);\n };\n\n const clearTabSiblings = (el) => {\n getFocuses().forEach((focus) => setTabIndex(focus, -1));\n setTabIndex(el, 0);\n };\n\n const onFocusStrategy = (evt) => {\n if (strategy === \"listbox\") {\n clearTabSiblings(evt.currentTarget);\n }\n };\n\n const onBlurStrategy = () => {\n if (\n strategy === \"listbox\" &&\n rootRef &&\n rootRef.current &&\n !rootRef.current.contains(document.activeElement)\n ) {\n setTimeout(() => {\n setSelectedTabIndex();\n }, 10);\n }\n };\n\n const config = (el) => {\n const { tabIndex } = configuration;\n if (!el || hasRunConfig) return;\n if (strategy === \"card\") {\n setChildFocus(children);\n return;\n }\n\n if (strategy === \"grid\") {\n return;\n }\n\n const focusableChildren = getFocusableChildren(el);\n if (focusableChildren.length) {\n focusableChildren.forEach((child) => setTabIndex(child, -1));\n setChildFocus(focusableChildren[0]);\n }\n\n if (!isNil(tabIndex)) setTabIndex(el, tabIndex);\n setHasRunConfig(true);\n };\n\n const addFocusClass = (evt) => {\n if (!useFalseFocus) {\n evt.currentTarget.classList.add(focusClasses.focused);\n if (classes?.focused) {\n evt.currentTarget.classList.add(classes.focused);\n }\n // add global class HvIsFocused as a marker\n // not to be styled directly, only as helper in specific css queries\n evt.currentTarget.classList.add(\"HvIsFocused\");\n classes?.focus\n ?.split(\" \")\n .forEach((c) => evt.currentTarget.classList.add(c));\n }\n };\n\n const removeFocusClass = () => {\n if (!useFalseFocus) {\n getFocuses().forEach((element) => {\n if (focusClasses.focused) {\n element.classList.remove(focusClasses.focused);\n }\n if (classes?.focused) {\n element.classList.remove(classes.focused);\n }\n // remove the global class HvIsFocused\n element.classList.remove(\"HvIsFocused\");\n classes?.focus?.split(\" \").forEach((c) => element.classList.remove(c));\n });\n }\n };\n\n const onFocus = (evt) => {\n addFocusClass(evt);\n setShowFocus(true);\n // give focus to child element if any focusable\n\n if (childFocus && childFocus.focus) childFocus.focus();\n onFocusStrategy(evt);\n };\n\n const onBlur = () => {\n setShowFocus(false);\n removeFocusClass();\n onBlurStrategy();\n };\n\n const onMouseDown = (evt) => {\n const hasCard = !!evt.currentTarget?.querySelector(\".HvIsCardGridElement\");\n if (strategy === \"grid\" && hasCard) return;\n\n setFocusTo(evt.currentTarget);\n setTabIndex(evt.currentTarget, 0);\n // remove focus outline unless explicitly enabled\n if (!focusOnClick) {\n // TODO this piece of code works only because onMouseDown is happening after the focus event\n // There is nothing in here that guarantees the order of these events, so it may present a problem in the future\n removeFocusClass();\n setShowFocus(false);\n }\n };\n\n const focusAndUpdateIndex = (nextFocus, previousFocus, focusesList) => {\n if (focusesList?.includes(previousFocus)) {\n setTabIndex(previousFocus, -1);\n }\n setTabIndex(nextFocus, 0);\n setFocusTo(nextFocus);\n };\n\n const getEnabledKeys = (currentFocusIndex, jump, listSize) => ({\n right:\n (currentFocusIndex + 1) % jump === 0 ||\n currentFocusIndex + 1 > listSize - 1,\n left: currentFocusIndex % jump === 0,\n up: currentFocusIndex - jump < 0,\n down:\n currentFocusIndex + jump > listSize ||\n currentFocusIndex + jump > listSize - 1,\n });\n\n const onGridKeyDownHandler = (\n evt,\n focuses,\n focusesList,\n currentFocusIndex,\n jump\n ) => {\n const {\n ArrowUp,\n ArrowDown,\n Home,\n End,\n ArrowLeft,\n ArrowRight,\n Enter,\n SpaceBar,\n } = keyboardCodes;\n\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [\n ArrowUp,\n ArrowDown,\n ArrowLeft,\n ArrowRight,\n Home,\n End,\n SpaceBar,\n Enter,\n ]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n // except for Enter and SpaceBar\n if (!isOneOfKeys(evt, [Enter, SpaceBar])) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n const blockedKeys = getEnabledKeys(\n currentFocusIndex,\n jump,\n focusesList.length\n );\n\n switch (evt.keyCode) {\n case SpaceBar:\n case Enter:\n if (isBrowser(\"firefox\")) {\n evt.target.click();\n } else {\n evt.currentTarget.click();\n }\n break;\n case ArrowUp:\n if (!blockedKeys.up) {\n focusAndUpdateIndex(\n focuses.jump || focuses.last,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowDown:\n if (!blockedKeys.down) {\n focusAndUpdateIndex(\n focuses.fall || focuses.first,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowLeft:\n if (!blockedKeys.left) {\n focusAndUpdateIndex(\n focuses.previous || focuses.last,\n evt.current,\n focusesList\n );\n }\n break;\n case ArrowRight:\n if (!blockedKeys.right) {\n focusAndUpdateIndex(\n focuses.next || focuses.first,\n evt.current,\n focusesList\n );\n }\n break;\n case Home:\n focusAndUpdateIndex(focuses.first, evt.current, focusesList);\n break;\n case End:\n focusAndUpdateIndex(focuses.last, evt.current, focusesList);\n break;\n default:\n }\n };\n\n const onVerticalArrangementHandler = (evt, focuses, focusesList) => {\n const { ArrowUp, ArrowDown, Home, End, Enter, SpaceBar } = keyboardCodes;\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [ArrowUp, ArrowDown, Home, End, SpaceBar, Enter]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n evt.preventDefault();\n evt.stopPropagation();\n\n switch (evt.keyCode) {\n case SpaceBar:\n case Enter:\n evt.target.click();\n break;\n case ArrowUp:\n focusAndUpdateIndex(\n focuses.previous || focuses.last,\n evt.current,\n focusesList\n );\n break;\n case ArrowDown:\n focusAndUpdateIndex(\n focuses.next || focuses.first,\n evt.current,\n focusesList\n );\n break;\n case Home:\n focusAndUpdateIndex(focuses.first, evt.current, focusesList);\n break;\n case End:\n focusAndUpdateIndex(focuses.last, evt.current, focusesList);\n break;\n default:\n }\n };\n\n const onSingleHandler = (evt) => {\n const { Enter, SpaceBar } = keyboardCodes;\n const childFocusIsInput = childFocus && childFocus.nodeName === \"INPUT\";\n\n if (\n !isOneOfKeys(evt, [SpaceBar, Enter]) ||\n (childFocusIsInput && isKey(evt, Enter))\n ) {\n // nothing to do\n return;\n }\n\n // we'll do something with the key so prevent default and stop propagation\n evt.preventDefault();\n evt.stopPropagation();\n\n evt.currentTarget.click();\n };\n\n const onKeyDown = (evt) => {\n if (rootRef?.current == null) {\n // operating outside of a composite widget\n // nothing to manage, just style and trigger clicks\n onSingleHandler(evt);\n return;\n }\n\n // TODO keep the smart default, but allow to explicitly override if disabled elements should be focusable\n const isDisabledFocusable = strategy === \"menu\";\n const focusesList = getFocuses().filter(\n (el) =>\n isDisabledFocusable ||\n !el.classList.contains(classes?.disabled as string)\n );\n\n const currentFocus = focusesList.indexOf(evt.currentTarget);\n\n const focuses = {\n first: focusesList[0],\n last: focusesList[focusesList.length - 1],\n previous: focusesList[currentFocus - 1],\n next: focusesList[currentFocus + 1],\n fall: focusesList[currentFocus + navigationJump],\n jump: focusesList[currentFocus - navigationJump],\n };\n\n if (strategy === \"grid\") {\n onGridKeyDownHandler(\n evt,\n focuses,\n focusesList,\n currentFocus,\n navigationJump\n );\n return;\n }\n\n // TODO add property for specifying the composite widget orientation\n // TODO implement handler for horizontal orientation\n onVerticalArrangementHandler(evt, focuses, focusesList);\n };\n\n const onKeyUp = (evt) => {\n if (isBrowser(\"firefox\")) evt.preventDefault();\n };\n\n if (disabled) return children;\n\n const focusWrapper = (childrenToWrap) => (\n <StyledFocusWrapper\n className={clsx(\n classes?.externalReference,\n focusClasses.externalReference\n )}\n >\n {childrenToWrap}\n {showFocus && (\n <StyledFalseFocus\n className={clsx(classes?.falseFocus, focusClasses.falseFocus)}\n />\n )}\n </StyledFocusWrapper>\n );\n\n return (\n <ConditionalWrapper condition={useFalseFocus} wrapper={focusWrapper}>\n <Global styles={focusStyles} />\n {React.cloneElement(children, {\n className: clsx(\n children.props.className,\n focusClasses.root,\n classes?.root,\n filterClass,\n selected && clsx(focusClasses.selected, classes?.selected),\n disabledClass && clsx(focusClasses.disabled, classes?.disabled),\n focusDisabled &&\n clsx(focusClasses.focusDisabled, classes?.focusDisabled)\n ),\n ref: config,\n onFocus,\n onBlur,\n onMouseDown,\n onKeyDown,\n onKeyUp,\n selected,\n })}\n </ConditionalWrapper>\n );\n};\n"],"names":["focusStyles","process","env","NODE_ENV","name","styles","map","toString","_EMOTION_STRINGIFIED_CSS_ERROR__","HvFocus","classes","children","configuration","disabledClass","selected","disabled","rootRef","undefined","focusOnClick","focusDisabled","strategy","useFalseFocus","filterClass","navigationJump","showFocus","setShowFocus","useState","childFocus","setChildFocus","hasRunConfig","setHasRunConfig","getFocuses","focuses","current","Array","from","getElementsByClassName","focusClasses","root","setTabIndex","el","tabIndex","elChildFocus","getFocusableChildren","setSelectedTabIndex","firstSelected","find","focus","classList","contains","forEach","clearTabSiblings","onFocusStrategy","evt","currentTarget","onBlurStrategy","document","activeElement","setTimeout","config","focusableChildren","length","child","isNil","addFocusClass","add","focused","split","c","removeFocusClass","element","remove","onFocus","onBlur","onMouseDown","hasCard","querySelector","setFocusTo","focusAndUpdateIndex","nextFocus","previousFocus","focusesList","includes","getEnabledKeys","currentFocusIndex","jump","listSize","right","left","up","down","onGridKeyDownHandler","ArrowUp","ArrowDown","Home","End","ArrowLeft","ArrowRight","Enter","SpaceBar","keyboardCodes","childFocusIsInput","nodeName","isOneOfKeys","isKey","preventDefault","stopPropagation","blockedKeys","keyCode","isBrowser","target","click","last","fall","first","previous","next","onVerticalArrangementHandler","onSingleHandler","onKeyDown","isDisabledFocusable","filter","currentFocus","indexOf","onKeyUp","focusWrapper","childrenToWrap","_jsxs","StyledFocusWrapper","className","clsx","externalReference","StyledFalseFocus","falseFocus","ConditionalWrapper","condition","wrapper","_jsx","Global","React","cloneElement","props","ref"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focusClasses.js","sources":["../../../../src/components/Focus/focusClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFocusClasses {\n root?: string;\n selected?: string;\n focused?: string;\n focus?: string;\n disabled?: string;\n externalReference?: string;\n falseFocus?: string;\n focusDisabled?: string;\n}\n\nconst classKeys:
|
|
1
|
+
{"version":3,"file":"focusClasses.js","sources":["../../../../src/components/Focus/focusClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFocusClasses {\n root?: string;\n selected?: string;\n focused?: string;\n focus?: string;\n disabled?: string;\n externalReference?: string;\n falseFocus?: string;\n focusDisabled?: string;\n}\n\nconst classKeys: (keyof HvFocusClasses)[] = [\n \"root\",\n \"selected\",\n \"focused\",\n \"focus\",\n \"disabled\",\n \"externalReference\",\n \"falseFocus\",\n \"focusDisabled\",\n];\n\nconst focusClasses = getClasses(classKeys, \"HvFocus\");\n\nexport default focusClasses;\n"],"names":["classKeys","focusClasses","getClasses"],"mappings":";AAaA,MAAMA,YAAsC,CAC1C,QACA,YACA,WACA,SACA,YACA,qBACA,cACA,eAAe;AAGjB,MAAMC,eAAeC,WAAWF,WAAW,SAAS;AAEpD,MAAA,iBAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"footerClasses.js","sources":["../../../../src/components/Footer/footerClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFooterClasses {\n root?: string;\n name?: string;\n copyright?: string;\n separator?: string;\n rightContainer?: string;\n}\n\nconst classKeys:
|
|
1
|
+
{"version":3,"file":"footerClasses.js","sources":["../../../../src/components/Footer/footerClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvFooterClasses {\n root?: string;\n name?: string;\n copyright?: string;\n separator?: string;\n rightContainer?: string;\n}\n\nconst classKeys: (keyof HvFooterClasses)[] = [\n \"root\",\n \"name\",\n \"copyright\",\n \"separator\",\n \"rightContainer\",\n];\n\nconst footerClasses = getClasses(classKeys, \"HvFooter\");\n\nexport default footerClasses;\n"],"names":["classKeys","footerClasses","getClasses"],"mappings":";AAUA,MAAMA,YAAuC,CAC3C,QACA,QACA,aACA,aACA,gBAAgB;AAGlB,MAAMC,gBAAgBC,WAAWF,WAAW,UAAU;AAEtD,MAAA,kBAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Adornment.js","sources":["../../../../../src/components/Forms/Adornment/Adornment.tsx"],"sourcesContent":["import { useContext, forwardRef, MouseEventHandler, ForwardedRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { HvBaseProps } from \"@core/types\";\nimport { StyledRoot, StyledIcon, StyledButton } from \"./Adornment.styles\";\nimport {\n HvFormElementContext,\n HvFormElementDescriptorsContext,\n HvFormStatus,\n} from \"../FormElement\";\nimport adornmentClasses, { HvAdornmentClasses } from \"./adornmentClasses\";\n\nconst preventDefault = (event) => event.preventDefault();\nconst noop = () => {};\n\nexport interface HvAdornmentProps\n extends HvBaseProps<\n HTMLDivElement | HTMLButtonElement,\n
|
|
1
|
+
{"version":3,"file":"Adornment.js","sources":["../../../../../src/components/Forms/Adornment/Adornment.tsx"],"sourcesContent":["import { useContext, forwardRef, MouseEventHandler, ForwardedRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { HvBaseProps } from \"@core/types\";\nimport { StyledRoot, StyledIcon, StyledButton } from \"./Adornment.styles\";\nimport {\n HvFormElementContext,\n HvFormElementDescriptorsContext,\n HvFormStatus,\n} from \"../FormElement\";\nimport adornmentClasses, { HvAdornmentClasses } from \"./adornmentClasses\";\n\nconst preventDefault = (event) => event.preventDefault();\nconst noop = () => {};\n\nexport interface HvAdornmentProps\n extends HvBaseProps<\n HTMLDivElement | HTMLButtonElement,\n \"onMouseDown\" | \"onKeyDown\"\n > {\n /** The icon to be added into the input. */\n icon: React.ReactNode;\n /** When the adornment should be displayed. */\n showWhen?: HvFormStatus;\n /** Function to be executed when this element is clicked. */\n onClick?: MouseEventHandler<HTMLButtonElement> | undefined;\n /** If this property is defined the adornment visibility will be exclusively controlled by this value. */\n isVisible?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvAdornmentClasses;\n}\n\n/**\n * Allows to add a decorative icon or an action to a form element, usually on the right side of an input.\n * E.g., the reveal password button.\n *\n * In addition to the showWhen feature, which uses the form element's context validation state to determine\n * its visibility, this component also ensures that it does not steal focus from the input and that it is\n * not accessible using the keyboard.\n *\n * As such, its functionality, if any, for accessibility purposes must be provided through an alternative mean,\n * or by using a regular icon button or toggle button instead.\n */\nexport const HvAdornment = forwardRef<\n HTMLDivElement | HTMLButtonElement,\n HvAdornmentProps\n>(\n (\n {\n id,\n classes,\n className,\n icon,\n showWhen = undefined,\n onClick,\n isVisible = undefined,\n ...others\n },\n ref\n ) => {\n const { elementStatus = \"\" } = useContext(HvFormElementContext);\n\n const { input } = useContext(HvFormElementDescriptorsContext);\n\n const displayIcon =\n isVisible ?? (showWhen === undefined || elementStatus === showWhen);\n\n const isClickable = !!onClick;\n\n return isClickable ? (\n <StyledButton\n id={id}\n ref={ref as ForwardedRef<HTMLButtonElement>}\n type=\"button\"\n tabIndex={-1}\n aria-controls={input?.[0]?.id}\n className={clsx(\n className,\n adornmentClasses.root,\n classes?.root,\n adornmentClasses.adornment,\n classes?.adornment,\n adornmentClasses.adornmentButton,\n classes?.adornmentButton,\n !displayIcon && clsx(adornmentClasses.hideIcon, classes?.hideIcon)\n )}\n onClick={onClick}\n onMouseDown={preventDefault}\n onKeyDown={noop}\n $hideIcon={!displayIcon}\n {...others}\n >\n <StyledIcon className={clsx(adornmentClasses.icon, classes?.icon)}>\n {icon}\n </StyledIcon>\n </StyledButton>\n ) : (\n <StyledRoot\n id={id}\n ref={ref as ForwardedRef<HTMLDivElement>}\n className={clsx(\n className,\n adornmentClasses.root,\n classes?.root,\n adornmentClasses.adornment,\n classes?.adornment,\n adornmentClasses.adornmentIcon,\n classes?.adornmentIcon,\n !displayIcon && clsx(adornmentClasses.hideIcon, classes?.hideIcon)\n )}\n $hideIcon={!displayIcon}\n role=\"presentation\"\n {...others}\n >\n <StyledIcon className={clsx(adornmentClasses.icon, classes?.icon)}>\n {icon}\n </StyledIcon>\n </StyledRoot>\n );\n }\n);\n"],"names":["preventDefault","event","noop","HvAdornment","forwardRef","id","classes","className","icon","showWhen","undefined","onClick","isVisible","others","ref","elementStatus","useContext","HvFormElementContext","input","HvFormElementDescriptorsContext","displayIcon","isClickable","StyledButton","type","tabIndex","clsx","adornmentClasses","root","adornment","adornmentButton","hideIcon","onMouseDown","onKeyDown","$hideIcon","children","StyledIcon","_jsx","StyledRoot","adornmentIcon","role"],"mappings":";;;;;;;AAWA,MAAMA,iBAAkBC,CAAUA,UAAAA,MAAMD,eAAgB;AACxD,MAAME,OAAOA,MAAM;AAAC;AA8BPC,MAAAA,cAAcC,WAIzB,CACE;AAAA,EACEC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,WAAWC;AAAAA,EACXC;AAAAA,EACAC,YAAYF;AAAAA,EACZ,GAAGG;AACL,GACAC,QACG;;AACG,QAAA;AAAA,IAAEC,gBAAgB;AAAA,EAAA,IAAOC,WAAWC,oBAAoB;AAExD,QAAA;AAAA,IAAEC;AAAAA,EAAAA,IAAUF,WAAWG,+BAA+B;AAE5D,QAAMC,cACJR,cAAcH,aAAaC,UAAaK,kBAAkBN;AAEtDY,QAAAA,cAAc,CAAC,CAACV;AAEfU,SAAAA,kCACJC,cAAY;AAAA,IACXjB;AAAAA,IACAS;AAAAA,IACAS,MAAK;AAAA,IACLC,UAAU;AAAA,IACV,kBAAeN,oCAAQ,OAARA,mBAAYb;AAAAA,IAC3BE,WAAWkB,KACTlB,WACAmB,iBAAiBC,MACjBrB,mCAASqB,MACTD,iBAAiBE,WACjBtB,mCAASsB,WACTF,iBAAiBG,iBACjBvB,mCAASuB,iBACT,CAACT,eAAeK,KAAKC,iBAAiBI,UAAUxB,mCAASwB,QAAQ,CAAC;AAAA,IAEpEnB;AAAAA,IACAoB,aAAa/B;AAAAA,IACbgC,WAAW9B;AAAAA,IACX+B,WAAW,CAACb;AAAAA,IAAY,GACpBP;AAAAA,IAAMqB,8BAETC,YAAU;AAAA,MAAC5B,WAAWkB,KAAKC,iBAAiBlB,MAAMF,mCAASE,IAAI;AAAA,MAAE0B,UAC/D1B;AAAAA,IAAAA,CAAI;AAAA,EAAA,CAEM,IAEf4B,oBAACC,YAAU;AAAA,IACThC;AAAAA,IACAS;AAAAA,IACAP,WAAWkB,KACTlB,WACAmB,iBAAiBC,MACjBrB,mCAASqB,MACTD,iBAAiBE,WACjBtB,mCAASsB,WACTF,iBAAiBY,eACjBhC,mCAASgC,eACT,CAAClB,eAAeK,KAAKC,iBAAiBI,UAAUxB,mCAASwB,QAAQ,CAAC;AAAA,IAEpEG,WAAW,CAACb;AAAAA,IACZmB,MAAK;AAAA,IAAc,GACf1B;AAAAA,IAAMqB,8BAETC,YAAU;AAAA,MAAC5B,WAAWkB,KAAKC,iBAAiBlB,MAAMF,mCAASE,IAAI;AAAA,MAAE0B,UAC/D1B;AAAAA,IAAAA,CAAI;AAAA,EAAA,CAGV;AACH,CAAC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adornmentClasses.js","sources":["../../../../../src/components/Forms/Adornment/adornmentClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvAdornmentClasses {\n root?: string;\n icon?: string;\n adornment?: string;\n adornmentIcon?: string;\n hideIcon?: string;\n adornmentButton?: string;\n}\n\nconst classKeys:
|
|
1
|
+
{"version":3,"file":"adornmentClasses.js","sources":["../../../../../src/components/Forms/Adornment/adornmentClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvAdornmentClasses {\n root?: string;\n icon?: string;\n adornment?: string;\n adornmentIcon?: string;\n hideIcon?: string;\n adornmentButton?: string;\n}\n\nconst classKeys: (keyof HvAdornmentClasses)[] = [\n \"root\",\n \"icon\",\n \"adornment\",\n \"adornmentIcon\",\n \"hideIcon\",\n \"adornmentButton\",\n];\n\nconst adornmentClasses = getClasses(classKeys, \"HvAdornment\");\n\nexport default adornmentClasses;\n"],"names":["classKeys","adornmentClasses","getClasses"],"mappings":";AAWA,MAAMA,YAA0C,CAC9C,QACA,QACA,aACA,iBACA,YACA,iBAAiB;AAGnB,MAAMC,mBAAmBC,WAAWF,WAAW,aAAa;AAE5D,MAAA,qBAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charCounterClasses.js","sources":["../../../../../src/components/Forms/CharCounter/charCounterClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvCharCounterClasses {\n root?: string;\n counterDisabled?: string;\n gutter?: string;\n overloaded?: string;\n}\n\nconst classKeys:
|
|
1
|
+
{"version":3,"file":"charCounterClasses.js","sources":["../../../../../src/components/Forms/CharCounter/charCounterClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvCharCounterClasses {\n root?: string;\n counterDisabled?: string;\n gutter?: string;\n overloaded?: string;\n}\n\nconst classKeys: (keyof HvCharCounterClasses)[] = [\n \"root\",\n \"counterDisabled\",\n \"gutter\",\n \"overloaded\",\n];\n\nconst charCounterClasses = getClasses(classKeys, \"HvCharCounter\");\n\nexport default charCounterClasses;\n"],"names":["classKeys","charCounterClasses","getClasses"],"mappings":";AASA,MAAMA,YAA4C,CAChD,QACA,mBACA,UACA,YAAY;AAGd,MAAMC,qBAAqBC,WAAWF,WAAW,eAAe;AAEhE,MAAA,uBAAeC;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormElement.js","sources":["../../../../../src/components/Forms/FormElement/FormElement.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { clsx } from \"clsx\";\nimport { HvBaseProps } from \"@core/types\";\nimport { useUniqueId } from \"@core/hooks\";\nimport { findDescriptors } from \"./utils/FormUtils\";\nimport { HvFormElementContextProvider } from \"./context/FormElementContext\";\nimport { HvFormElementValueContextProvider } from \"./context/FormElementValueContext\";\nimport { HvFormElementDescriptorsContextProvider } from \"./context/FormElementDescriptorsContext\";\nimport formElementClasses, { HvFormElementClasses } from \"./formElementClasses\";\n\nexport type HvFormStatus = \"standBy\" | \"valid\" | \"invalid\" | \"empty\";\n\nexport interface HvFormElementProps\n extends HvBaseProps<HTMLDivElement,
|
|
1
|
+
{"version":3,"file":"FormElement.js","sources":["../../../../../src/components/Forms/FormElement/FormElement.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { clsx } from \"clsx\";\nimport { HvBaseProps } from \"@core/types\";\nimport { useUniqueId } from \"@core/hooks\";\nimport { findDescriptors } from \"./utils/FormUtils\";\nimport { HvFormElementContextProvider } from \"./context/FormElementContext\";\nimport { HvFormElementValueContextProvider } from \"./context/FormElementValueContext\";\nimport { HvFormElementDescriptorsContextProvider } from \"./context/FormElementDescriptorsContext\";\nimport formElementClasses, { HvFormElementClasses } from \"./formElementClasses\";\n\nexport type HvFormStatus = \"standBy\" | \"valid\" | \"invalid\" | \"empty\";\n\nexport interface HvFormElementProps\n extends HvBaseProps<HTMLDivElement, \"onChange\"> {\n /**\n * Name of the form element.\n *\n * Part of a name/value pair, should be the name property of the underling native input.\n */\n name?: string;\n /**\n * Current value of the form element.\n *\n * Part of a name/value pair, should be the value property of the underling native input.\n */\n value?: any;\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 /** Provide additional descriptive text for the form element. */\n description?: React.ReactNode;\n /** Whether the form element is disabled. */\n disabled?: boolean;\n /** Indicates that the form element is not editable. */\n readOnly?: boolean;\n /** Indicates that user input is required on the form element. */\n required?: boolean;\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?: HvFormStatus;\n /** The error message to show when `status` is \"invalid\". */\n statusMessage?: string;\n /** The callback fired when the value changes. */\n onChange?: (event: React.FormEvent<HTMLDivElement>) => void;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvFormElementClasses;\n}\n\nexport const HvFormElement = ({\n classes,\n className,\n children,\n id,\n name,\n value,\n disabled = false,\n required = false,\n readOnly = false,\n status = \"standBy\",\n ...others\n}: HvFormElementProps) => {\n const elementId = useUniqueId(id, \"hvformelement\");\n\n const contextValue = useMemo(\n () => ({\n elementId,\n elementName: name,\n elementStatus: status,\n elementDisabled: disabled,\n elementRequired: required,\n elementReadOnly: readOnly,\n }),\n [disabled, elementId, name, readOnly, required, status]\n );\n\n const descriptors = useMemo(() => findDescriptors(children), [children]);\n\n return (\n <div\n id={id}\n className={clsx(className, formElementClasses.root, classes?.root)}\n {...others}\n >\n <HvFormElementContextProvider value={contextValue}>\n <HvFormElementValueContextProvider value={value}>\n <HvFormElementDescriptorsContextProvider value={descriptors}>\n {children}\n </HvFormElementDescriptorsContextProvider>\n </HvFormElementValueContextProvider>\n </HvFormElementContextProvider>\n </div>\n );\n};\n\nHvFormElement.formElementType = \"formelement\";\n"],"names":["HvFormElement","classes","className","children","id","name","value","disabled","required","readOnly","status","others","elementId","useUniqueId","contextValue","useMemo","elementName","elementStatus","elementDisabled","elementRequired","elementReadOnly","descriptors","findDescriptors","clsx","formElementClasses","root","HvFormElementContextProvider","HvFormElementValueContextProvider","HvFormElementDescriptorsContextProvider","formElementType"],"mappings":";;;;;;;;;AA0DO,MAAMA,gBAAgBA,CAAC;AAAA,EAC5BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,WAAW;AAAA,EACXC,WAAW;AAAA,EACXC,WAAW;AAAA,EACXC,SAAS;AAAA,EACT,GAAGC;AACe,MAAM;AAClBC,QAAAA,YAAYC,YAAYT,IAAI,eAAe;AAE3CU,QAAAA,eAAeC,QACnB,OAAO;AAAA,IACLH;AAAAA,IACAI,aAAaX;AAAAA,IACbY,eAAeP;AAAAA,IACfQ,iBAAiBX;AAAAA,IACjBY,iBAAiBX;AAAAA,IACjBY,iBAAiBX;AAAAA,EAAAA,IAEnB,CAACF,UAAUK,WAAWP,MAAMI,UAAUD,UAAUE,MAAM,CAAC;AAGnDW,QAAAA,cAAcN,QAAQ,MAAMO,gBAAgBnB,QAAQ,GAAG,CAACA,QAAQ,CAAC;AAEvE,6BACE,OAAA;AAAA,IACEC;AAAAA,IACAF,WAAWqB,KAAKrB,WAAWsB,mBAAmBC,MAAMxB,mCAASwB,IAAI;AAAA,IAAE,GAC/Dd;AAAAA,IAAMR,8BAETuB,8BAA4B;AAAA,MAACpB,OAAOQ;AAAAA,MAAaX,8BAC/CwB,mCAAiC;AAAA,QAACrB;AAAAA,QAAaH,8BAC7CyB,yCAAuC;AAAA,UAACtB,OAAOe;AAAAA,UAAYlB;AAAAA,QAAAA,CACjD;AAAA,MAAA,CAC+B;AAAA,IAAA,CACR;AAAA,EAAA,CAElC;AAEV;AAEAH,cAAc6B,kBAAkB;"}
|