@dnb/eufemia 10.73.2 → 10.74.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/CHANGELOG.md +28 -0
- package/cjs/components/autocomplete/Autocomplete.js +7 -4
- package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/autocomplete/AutocompleteDocs.d.ts +289 -3
- package/cjs/components/autocomplete/AutocompleteDocs.js +2 -2
- package/cjs/components/autocomplete/AutocompleteDocs.js.map +1 -1
- package/cjs/components/button/style/dnb-button.css +1 -0
- package/cjs/components/button/style/dnb-button.min.css +1 -1
- package/cjs/components/button/style/dnb-button.scss +1 -0
- package/cjs/components/checkbox/Checkbox.d.ts +9 -1
- package/cjs/components/checkbox/Checkbox.js +59 -34
- package/cjs/components/checkbox/Checkbox.js.map +1 -1
- package/cjs/components/checkbox/CheckboxDocs.js +6 -1
- package/cjs/components/checkbox/CheckboxDocs.js.map +1 -1
- package/cjs/components/date-picker/DatePicker.d.ts +4 -0
- package/cjs/components/date-picker/DatePicker.js +4 -3
- package/cjs/components/date-picker/DatePicker.js.map +1 -1
- package/cjs/components/date-picker/DatePickerCalendar.d.ts +2 -16
- package/cjs/components/date-picker/DatePickerCalendar.js +27 -86
- package/cjs/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/cjs/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
- package/cjs/components/date-picker/DatePickerCalendarNavigator.js +173 -0
- package/cjs/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
- package/cjs/components/date-picker/DatePickerContext.d.ts +3 -0
- package/cjs/components/date-picker/DatePickerContext.js.map +1 -1
- package/cjs/components/date-picker/DatePickerDocs.js +6 -1
- package/cjs/components/date-picker/DatePickerDocs.js.map +1 -1
- package/cjs/components/date-picker/DatePickerFooter.js +20 -17
- package/cjs/components/date-picker/DatePickerFooter.js.map +1 -1
- package/cjs/components/date-picker/DatePickerProvider.js +7 -0
- package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
- package/cjs/components/date-picker/DatePickerRange.js +2 -28
- package/cjs/components/date-picker/DatePickerRange.js.map +1 -1
- package/cjs/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
- package/cjs/components/date-picker/hooks/useSubmittedDates.js +19 -0
- package/cjs/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
- package/cjs/components/date-picker/style/dnb-date-picker.css +1 -1
- package/cjs/components/date-picker/style/dnb-date-picker.min.css +1 -1
- package/cjs/components/date-picker/style/dnb-date-picker.scss +1 -1
- package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
- package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
- package/cjs/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
- package/cjs/components/drawer/Drawer.js +1 -0
- package/cjs/components/drawer/Drawer.js.map +1 -1
- package/cjs/components/dropdown/Dropdown.js +6 -4
- package/cjs/components/dropdown/Dropdown.js.map +1 -1
- package/cjs/components/dropdown/DropdownDocs.d.ts +179 -3
- package/cjs/components/dropdown/DropdownDocs.js.map +1 -1
- package/cjs/components/heading/HeadingHelpers.js +9 -5
- package/cjs/components/heading/HeadingHelpers.js.map +1 -1
- package/cjs/components/icon/Icon.d.ts +2 -2
- package/cjs/components/input-masked/InputMaskedDocs.js +1 -1
- package/cjs/components/input-masked/InputMaskedDocs.js.map +1 -1
- package/cjs/components/input-masked/InputMaskedHooks.d.ts +1 -0
- package/cjs/components/input-masked/InputMaskedHooks.js +38 -6
- package/cjs/components/input-masked/InputMaskedHooks.js.map +1 -1
- package/cjs/components/input-masked/InputMaskedUtils.js +5 -4
- package/cjs/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/cjs/components/number-format/NumberUtils.js +6 -4
- package/cjs/components/number-format/NumberUtils.js.map +1 -1
- package/cjs/components/switch/SwitchDocs.js +2 -2
- package/cjs/components/switch/SwitchDocs.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Context.d.ts +1 -1
- package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +9 -0
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
- package/cjs/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js +8 -1
- package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Date/Date.d.ts +1 -1
- package/cjs/extensions/forms/Field/Date/Date.js +1 -1
- package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
- package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/cjs/extensions/forms/Field/Number/NumberDocs.js +1 -1
- package/cjs/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +2 -2
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +2 -2
- package/cjs/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
- package/cjs/extensions/forms/Field/Selection/Selection.d.ts +2 -0
- package/cjs/extensions/forms/Field/Selection/Selection.js +10 -9
- package/cjs/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
- package/cjs/extensions/forms/Field/Toggle/Toggle.js +24 -8
- package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
- package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js +8 -1
- package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
- package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.js +64 -0
- package/cjs/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
- package/cjs/extensions/forms/Form/Isolation/Isolation.js +39 -14
- package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
- package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationContext.js +11 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.js +31 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
- package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.js +112 -0
- package/cjs/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
- package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.js +58 -0
- package/cjs/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
- package/cjs/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
- package/cjs/extensions/forms/Form/Isolation/useHandleStatus.js +57 -0
- package/cjs/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
- package/cjs/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +11 -9
- package/cjs/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
- package/cjs/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
- package/cjs/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/index.js +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js +15 -56
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
- package/cjs/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.js +3 -3
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +1 -1
- package/cjs/extensions/forms/constants/locales/index.d.ts +2 -2
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
- package/cjs/extensions/forms/constants/locales/nb-NO.js +3 -3
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
- package/cjs/extensions/forms/constants/locales/sv-SE.js +3 -3
- package/cjs/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/cjs/extensions/forms/hooks/useDataContext.js +5 -3
- package/cjs/extensions/forms/hooks/useDataContext.js.map +1 -1
- package/cjs/extensions/forms/hooks/useSnapshot.js +17 -14
- package/cjs/extensions/forms/hooks/useSnapshot.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerList.d.ts +176 -224
- package/cjs/fragments/drawer-list/DrawerList.js +70 -175
- package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListContext.d.ts +27 -2
- package/cjs/fragments/drawer-list/DrawerListContext.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
- package/cjs/fragments/drawer-list/DrawerListDocs.js +2 -2
- package/cjs/fragments/drawer-list/DrawerListDocs.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
- package/cjs/fragments/drawer-list/DrawerListHelpers.js +52 -58
- package/cjs/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListItem.d.ts +30 -0
- package/cjs/fragments/drawer-list/DrawerListItem.js +106 -0
- package/cjs/fragments/drawer-list/DrawerListItem.js.map +1 -0
- package/cjs/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
- package/cjs/fragments/drawer-list/DrawerListPortal.js +93 -125
- package/cjs/fragments/drawer-list/DrawerListPortal.js.map +1 -1
- package/cjs/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
- package/cjs/fragments/drawer-list/DrawerListProvider.js +11 -18
- package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/cjs/shared/Eufemia.d.ts +1 -1
- package/cjs/shared/Eufemia.js +2 -2
- package/cjs/shared/Eufemia.js.map +1 -1
- package/cjs/shared/component-helper.d.ts +45 -48
- package/cjs/shared/component-helper.js +72 -201
- package/cjs/shared/component-helper.js.map +1 -1
- package/cjs/shared/helpers/withCamelCaseProps.d.ts +4 -5
- package/cjs/shared/helpers/withCamelCaseProps.js +7 -2
- package/cjs/shared/helpers/withCamelCaseProps.js.map +1 -1
- package/cjs/shared/legacy/component-helper-legacy.d.ts +19 -0
- package/cjs/shared/legacy/component-helper-legacy.js +202 -0
- package/cjs/shared/legacy/component-helper-legacy.js.map +1 -0
- package/cjs/shared/locales/en-GB.d.ts +1 -0
- package/cjs/shared/locales/en-GB.js +1 -0
- package/cjs/shared/locales/en-GB.js.map +1 -1
- package/cjs/shared/locales/en-US.js.map +1 -1
- package/cjs/shared/locales/index.d.ts +2 -0
- package/cjs/shared/locales/nb-NO.d.ts +1 -0
- package/cjs/shared/locales/nb-NO.js +2 -1
- package/cjs/shared/locales/nb-NO.js.map +1 -1
- package/cjs/shared/locales/sv-SE.d.ts +1 -0
- package/cjs/shared/locales/sv-SE.js +1 -0
- package/cjs/shared/locales/sv-SE.js.map +1 -1
- package/cjs/style/core/scopes.scss +1 -1
- package/cjs/style/dnb-ui-basis.css +1 -1
- package/cjs/style/dnb-ui-basis.min.css +1 -1
- package/cjs/style/dnb-ui-body.css +1 -1
- package/cjs/style/dnb-ui-body.min.css +1 -1
- package/cjs/style/dnb-ui-components.css +2 -1
- package/cjs/style/dnb-ui-components.min.css +1 -1
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/cjs/style/themes/theme-ui/ui-theme-components.css +19 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/components/autocomplete/Autocomplete.js +6 -3
- package/components/autocomplete/Autocomplete.js.map +1 -1
- package/components/autocomplete/AutocompleteDocs.d.ts +289 -3
- package/components/autocomplete/AutocompleteDocs.js +1 -1
- package/components/autocomplete/AutocompleteDocs.js.map +1 -1
- package/components/button/style/dnb-button.css +1 -0
- package/components/button/style/dnb-button.min.css +1 -1
- package/components/button/style/dnb-button.scss +1 -0
- package/components/checkbox/Checkbox.d.ts +9 -1
- package/components/checkbox/Checkbox.js +60 -35
- package/components/checkbox/Checkbox.js.map +1 -1
- package/components/checkbox/CheckboxDocs.js +6 -1
- package/components/checkbox/CheckboxDocs.js.map +1 -1
- package/components/date-picker/DatePicker.d.ts +4 -0
- package/components/date-picker/DatePicker.js +4 -3
- package/components/date-picker/DatePicker.js.map +1 -1
- package/components/date-picker/DatePickerCalendar.d.ts +2 -16
- package/components/date-picker/DatePickerCalendar.js +27 -86
- package/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
- package/components/date-picker/DatePickerCalendarNavigator.js +162 -0
- package/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
- package/components/date-picker/DatePickerContext.d.ts +3 -0
- package/components/date-picker/DatePickerContext.js.map +1 -1
- package/components/date-picker/DatePickerDocs.js +6 -1
- package/components/date-picker/DatePickerDocs.js.map +1 -1
- package/components/date-picker/DatePickerFooter.js +20 -17
- package/components/date-picker/DatePickerFooter.js.map +1 -1
- package/components/date-picker/DatePickerProvider.js +7 -0
- package/components/date-picker/DatePickerProvider.js.map +1 -1
- package/components/date-picker/DatePickerRange.js +2 -28
- package/components/date-picker/DatePickerRange.js.map +1 -1
- package/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
- package/components/date-picker/hooks/useSubmittedDates.js +14 -0
- package/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
- package/components/date-picker/style/dnb-date-picker.css +1 -1
- package/components/date-picker/style/dnb-date-picker.min.css +1 -1
- package/components/date-picker/style/dnb-date-picker.scss +1 -1
- package/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
- package/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
- package/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
- package/components/drawer/Drawer.js +1 -0
- package/components/drawer/Drawer.js.map +1 -1
- package/components/dropdown/Dropdown.js +6 -4
- package/components/dropdown/Dropdown.js.map +1 -1
- package/components/dropdown/DropdownDocs.d.ts +179 -3
- package/components/dropdown/DropdownDocs.js.map +1 -1
- package/components/heading/HeadingHelpers.js +9 -5
- package/components/heading/HeadingHelpers.js.map +1 -1
- package/components/icon/Icon.d.ts +2 -2
- package/components/input-masked/InputMaskedDocs.js +1 -1
- package/components/input-masked/InputMaskedDocs.js.map +1 -1
- package/components/input-masked/InputMaskedHooks.d.ts +1 -0
- package/components/input-masked/InputMaskedHooks.js +39 -7
- package/components/input-masked/InputMaskedHooks.js.map +1 -1
- package/components/input-masked/InputMaskedUtils.js +6 -5
- package/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/components/number-format/NumberUtils.js +5 -4
- package/components/number-format/NumberUtils.js.map +1 -1
- package/components/switch/SwitchDocs.js +2 -2
- package/components/switch/SwitchDocs.js.map +1 -1
- package/es/components/autocomplete/Autocomplete.js +6 -3
- package/es/components/autocomplete/Autocomplete.js.map +1 -1
- package/es/components/autocomplete/AutocompleteDocs.d.ts +289 -3
- package/es/components/autocomplete/AutocompleteDocs.js +1 -1
- package/es/components/autocomplete/AutocompleteDocs.js.map +1 -1
- package/es/components/button/style/dnb-button.css +1 -0
- package/es/components/button/style/dnb-button.min.css +1 -1
- package/es/components/button/style/dnb-button.scss +1 -0
- package/es/components/checkbox/Checkbox.d.ts +9 -1
- package/es/components/checkbox/Checkbox.js +60 -35
- package/es/components/checkbox/Checkbox.js.map +1 -1
- package/es/components/checkbox/CheckboxDocs.js +6 -1
- package/es/components/checkbox/CheckboxDocs.js.map +1 -1
- package/es/components/date-picker/DatePicker.d.ts +4 -0
- package/es/components/date-picker/DatePicker.js +4 -3
- package/es/components/date-picker/DatePicker.js.map +1 -1
- package/es/components/date-picker/DatePickerCalendar.d.ts +2 -16
- package/es/components/date-picker/DatePickerCalendar.js +23 -80
- package/es/components/date-picker/DatePickerCalendar.js.map +1 -1
- package/es/components/date-picker/DatePickerCalendarNavigator.d.ts +37 -0
- package/es/components/date-picker/DatePickerCalendarNavigator.js +158 -0
- package/es/components/date-picker/DatePickerCalendarNavigator.js.map +1 -0
- package/es/components/date-picker/DatePickerContext.d.ts +3 -0
- package/es/components/date-picker/DatePickerContext.js.map +1 -1
- package/es/components/date-picker/DatePickerDocs.js +6 -1
- package/es/components/date-picker/DatePickerDocs.js.map +1 -1
- package/es/components/date-picker/DatePickerFooter.js +20 -17
- package/es/components/date-picker/DatePickerFooter.js.map +1 -1
- package/es/components/date-picker/DatePickerProvider.js +7 -0
- package/es/components/date-picker/DatePickerProvider.js.map +1 -1
- package/es/components/date-picker/DatePickerRange.js +2 -27
- package/es/components/date-picker/DatePickerRange.js.map +1 -1
- package/es/components/date-picker/hooks/useSubmittedDates.d.ts +7 -0
- package/es/components/date-picker/hooks/useSubmittedDates.js +14 -0
- package/es/components/date-picker/hooks/useSubmittedDates.js.map +1 -0
- package/es/components/date-picker/style/dnb-date-picker.css +1 -1
- package/es/components/date-picker/style/dnb-date-picker.min.css +1 -1
- package/es/components/date-picker/style/dnb-date-picker.scss +1 -1
- package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.css +17 -0
- package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.min.css +1 -1
- package/es/components/date-picker/style/themes/dnb-date-picker-theme-ui.scss +19 -0
- package/es/components/drawer/Drawer.js +1 -0
- package/es/components/drawer/Drawer.js.map +1 -1
- package/es/components/dropdown/Dropdown.js +6 -4
- package/es/components/dropdown/Dropdown.js.map +1 -1
- package/es/components/dropdown/DropdownDocs.d.ts +179 -3
- package/es/components/dropdown/DropdownDocs.js.map +1 -1
- package/es/components/heading/HeadingHelpers.js +9 -5
- package/es/components/heading/HeadingHelpers.js.map +1 -1
- package/es/components/icon/Icon.d.ts +2 -2
- package/es/components/input-masked/InputMaskedDocs.js +1 -1
- package/es/components/input-masked/InputMaskedDocs.js.map +1 -1
- package/es/components/input-masked/InputMaskedHooks.d.ts +1 -0
- package/es/components/input-masked/InputMaskedHooks.js +39 -7
- package/es/components/input-masked/InputMaskedHooks.js.map +1 -1
- package/es/components/input-masked/InputMaskedUtils.js +6 -5
- package/es/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/es/components/number-format/NumberUtils.js +5 -4
- package/es/components/number-format/NumberUtils.js.map +1 -1
- package/es/components/switch/SwitchDocs.js +2 -2
- package/es/components/switch/SwitchDocs.js.map +1 -1
- package/es/extensions/forms/DataContext/Context.d.ts +1 -1
- package/es/extensions/forms/DataContext/Context.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.js +9 -0
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
- package/es/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/es/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
- package/es/extensions/forms/Field/Boolean/BooleanDocs.js +7 -0
- package/es/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/es/extensions/forms/Field/Date/Date.d.ts +1 -1
- package/es/extensions/forms/Field/Date/Date.js +1 -1
- package/es/extensions/forms/Field/Date/Date.js.map +1 -1
- package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/es/extensions/forms/Field/Number/NumberDocs.js +1 -1
- package/es/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/es/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
- package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +3 -3
- package/es/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
- package/es/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +3 -3
- package/es/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
- package/es/extensions/forms/Field/Selection/Selection.d.ts +2 -0
- package/es/extensions/forms/Field/Selection/Selection.js +9 -8
- package/es/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
- package/es/extensions/forms/Field/Toggle/Toggle.js +24 -6
- package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
- package/es/extensions/forms/Field/Toggle/ToggleDocs.js +7 -0
- package/es/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
- package/es/extensions/forms/Form/Isolation/IsolatedContainer.js +53 -0
- package/es/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
- package/es/extensions/forms/Form/Isolation/Isolation.js +40 -14
- package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
- package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
- package/es/extensions/forms/Form/Isolation/IsolationContext.js +6 -0
- package/es/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
- package/es/extensions/forms/Form/Isolation/IsolationDataReference.js +25 -0
- package/es/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
- package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
- package/es/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
- package/es/extensions/forms/Form/Isolation/IsolationResetButton.js +99 -0
- package/es/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
- package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.js +50 -0
- package/es/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
- package/es/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
- package/es/extensions/forms/Form/Isolation/useHandleStatus.js +48 -0
- package/es/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
- package/es/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +12 -10
- package/es/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
- package/es/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
- package/es/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
- package/es/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
- package/es/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
- package/es/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
- package/es/extensions/forms/Iterate/EditContainer/index.js +1 -1
- package/es/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.js +16 -55
- package/es/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
- package/es/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +1 -1
- package/es/extensions/forms/constants/locales/en-GB.js +3 -3
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-US.d.ts +1 -1
- package/es/extensions/forms/constants/locales/index.d.ts +2 -2
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
- package/es/extensions/forms/constants/locales/nb-NO.js +3 -3
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/es/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
- package/es/extensions/forms/constants/locales/sv-SE.js +3 -3
- package/es/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/es/extensions/forms/hooks/useDataContext.js +5 -3
- package/es/extensions/forms/hooks/useDataContext.js.map +1 -1
- package/es/extensions/forms/hooks/useSnapshot.js +18 -15
- package/es/extensions/forms/hooks/useSnapshot.js.map +1 -1
- package/es/fragments/drawer-list/DrawerList.d.ts +176 -224
- package/es/fragments/drawer-list/DrawerList.js +72 -173
- package/es/fragments/drawer-list/DrawerList.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListContext.d.ts +27 -2
- package/es/fragments/drawer-list/DrawerListContext.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
- package/es/fragments/drawer-list/DrawerListDocs.js +2 -2
- package/es/fragments/drawer-list/DrawerListDocs.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
- package/es/fragments/drawer-list/DrawerListHelpers.js +45 -54
- package/es/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListItem.d.ts +30 -0
- package/es/fragments/drawer-list/DrawerListItem.js +90 -0
- package/es/fragments/drawer-list/DrawerListItem.js.map +1 -0
- package/es/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
- package/es/fragments/drawer-list/DrawerListPortal.js +88 -120
- package/es/fragments/drawer-list/DrawerListPortal.js.map +1 -1
- package/es/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
- package/es/fragments/drawer-list/DrawerListProvider.js +33 -19
- package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/es/shared/Eufemia.d.ts +1 -1
- package/es/shared/Eufemia.js +2 -2
- package/es/shared/Eufemia.js.map +1 -1
- package/es/shared/component-helper.d.ts +45 -48
- package/es/shared/component-helper.js +20 -183
- package/es/shared/component-helper.js.map +1 -1
- package/es/shared/helpers/withCamelCaseProps.d.ts +4 -5
- package/es/shared/helpers/withCamelCaseProps.js +7 -2
- package/es/shared/helpers/withCamelCaseProps.js.map +1 -1
- package/es/shared/legacy/component-helper-legacy.d.ts +19 -0
- package/es/shared/legacy/component-helper-legacy.js +180 -0
- package/es/shared/legacy/component-helper-legacy.js.map +1 -0
- package/es/shared/locales/en-GB.d.ts +1 -0
- package/es/shared/locales/en-GB.js +1 -0
- package/es/shared/locales/en-GB.js.map +1 -1
- package/es/shared/locales/en-US.js.map +1 -1
- package/es/shared/locales/index.d.ts +2 -0
- package/es/shared/locales/nb-NO.d.ts +1 -0
- package/es/shared/locales/nb-NO.js +2 -1
- package/es/shared/locales/nb-NO.js.map +1 -1
- package/es/shared/locales/sv-SE.d.ts +1 -0
- package/es/shared/locales/sv-SE.js +1 -0
- package/es/shared/locales/sv-SE.js.map +1 -1
- package/es/style/core/scopes.scss +1 -1
- package/es/style/dnb-ui-basis.css +1 -1
- package/es/style/dnb-ui-basis.min.css +1 -1
- package/es/style/dnb-ui-body.css +1 -1
- package/es/style/dnb-ui-body.min.css +1 -1
- package/es/style/dnb-ui-components.css +2 -1
- package/es/style/dnb-ui-components.min.css +1 -1
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/es/style/themes/theme-ui/ui-theme-components.css +19 -1
- package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/esm/dnb-ui-basis.min.mjs +1 -1
- package/esm/dnb-ui-components.min.mjs +1 -1
- package/esm/dnb-ui-elements.min.mjs +1 -1
- package/esm/dnb-ui-extensions.min.mjs +2 -2
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Context.d.ts +1 -1
- package/extensions/forms/DataContext/Context.js.map +1 -1
- package/extensions/forms/DataContext/Provider/Provider.js +9 -0
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/Field/Boolean/Boolean.d.ts +1 -0
- package/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/extensions/forms/Field/Boolean/BooleanDocs.d.ts +1 -0
- package/extensions/forms/Field/Boolean/BooleanDocs.js +7 -0
- package/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -1
- package/extensions/forms/Field/Date/Date.d.ts +1 -1
- package/extensions/forms/Field/Date/Date.js +1 -1
- package/extensions/forms/Field/Date/Date.js.map +1 -1
- package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/extensions/forms/Field/Number/NumberDocs.js +1 -1
- package/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
- package/extensions/forms/Field/Provider/useFieldProvider.d.ts +3 -3
- package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js +3 -3
- package/extensions/forms/Field/SelectCountry/SelectCountryDocs.js.map +1 -1
- package/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js +3 -3
- package/extensions/forms/Field/SelectCurrency/SelectCurrencyDocs.js.map +1 -1
- package/extensions/forms/Field/Selection/Selection.d.ts +2 -0
- package/extensions/forms/Field/Selection/Selection.js +10 -9
- package/extensions/forms/Field/Selection/Selection.js.map +1 -1
- package/extensions/forms/Field/Toggle/Toggle.d.ts +7 -0
- package/extensions/forms/Field/Toggle/Toggle.js +26 -9
- package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/extensions/forms/Field/Toggle/ToggleDocs.d.ts +1 -0
- package/extensions/forms/Field/Toggle/ToggleDocs.js +7 -0
- package/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -1
- package/extensions/forms/Form/Isolation/IsolatedContainer.d.ts +4 -0
- package/extensions/forms/Form/Isolation/IsolatedContainer.js +54 -0
- package/extensions/forms/Form/Isolation/IsolatedContainer.js.map +1 -0
- package/extensions/forms/Form/Isolation/Isolation.d.ts +16 -0
- package/extensions/forms/Form/Isolation/Isolation.js +40 -15
- package/extensions/forms/Form/Isolation/Isolation.js.map +1 -1
- package/extensions/forms/Form/Isolation/IsolationCommitButton.js +1 -1
- package/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -1
- package/extensions/forms/Form/Isolation/IsolationContext.d.ts +12 -0
- package/extensions/forms/Form/Isolation/IsolationContext.js +6 -0
- package/extensions/forms/Form/Isolation/IsolationContext.js.map +1 -0
- package/extensions/forms/Form/Isolation/IsolationDataReference.d.ts +9 -0
- package/extensions/forms/Form/Isolation/IsolationDataReference.js +25 -0
- package/extensions/forms/Form/Isolation/IsolationDataReference.js.map +1 -0
- package/extensions/forms/Form/Isolation/IsolationDocs.js +15 -0
- package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
- package/extensions/forms/Form/Isolation/IsolationResetButton.d.ts +7 -0
- package/extensions/forms/Form/Isolation/IsolationResetButton.js +100 -0
- package/extensions/forms/Form/Isolation/IsolationResetButton.js.map +1 -0
- package/extensions/forms/Form/Isolation/useDataContextSnapshot.d.ts +7 -0
- package/extensions/forms/Form/Isolation/useDataContextSnapshot.js +52 -0
- package/extensions/forms/Form/Isolation/useDataContextSnapshot.js.map +1 -0
- package/extensions/forms/Form/Isolation/useHandleStatus.d.ts +9 -0
- package/extensions/forms/Form/Isolation/useHandleStatus.js +51 -0
- package/extensions/forms/Form/Isolation/useHandleStatus.js.map +1 -0
- package/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.js +12 -10
- package/extensions/forms/Form/Isolation/useHasContentChanged.js.map +1 -0
- package/extensions/forms/Form/Snapshot/Snapshot.d.ts +2 -1
- package/extensions/forms/Form/Snapshot/Snapshot.js.map +1 -1
- package/extensions/forms/Iterate/EditContainer/ResetButton.js +1 -1
- package/extensions/forms/Iterate/EditContainer/ResetButton.js.map +1 -1
- package/extensions/forms/Iterate/EditContainer/index.d.ts +1 -1
- package/extensions/forms/Iterate/EditContainer/index.js +1 -1
- package/extensions/forms/Iterate/EditContainer/index.js.map +1 -1
- package/extensions/forms/Iterate/PushContainer/PushContainer.d.ts +7 -0
- package/extensions/forms/Iterate/PushContainer/PushContainer.js +16 -57
- package/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
- package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js +2 -2
- package/extensions/forms/Iterate/PushContainer/PushContainerDocs.js.map +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +1 -1
- package/extensions/forms/constants/locales/en-GB.js +3 -3
- package/extensions/forms/constants/locales/en-GB.js.map +1 -1
- package/extensions/forms/constants/locales/en-US.d.ts +1 -1
- package/extensions/forms/constants/locales/index.d.ts +2 -2
- package/extensions/forms/constants/locales/nb-NO.d.ts +1 -1
- package/extensions/forms/constants/locales/nb-NO.js +3 -3
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
- package/extensions/forms/constants/locales/sv-SE.d.ts +1 -1
- package/extensions/forms/constants/locales/sv-SE.js +3 -3
- package/extensions/forms/constants/locales/sv-SE.js.map +1 -1
- package/extensions/forms/hooks/useDataContext.js +5 -3
- package/extensions/forms/hooks/useDataContext.js.map +1 -1
- package/extensions/forms/hooks/useSnapshot.js +18 -15
- package/extensions/forms/hooks/useSnapshot.js.map +1 -1
- package/fragments/drawer-list/DrawerList.d.ts +176 -224
- package/fragments/drawer-list/DrawerList.js +71 -175
- package/fragments/drawer-list/DrawerList.js.map +1 -1
- package/fragments/drawer-list/DrawerListContext.d.ts +27 -2
- package/fragments/drawer-list/DrawerListContext.js.map +1 -1
- package/fragments/drawer-list/DrawerListDocs.d.ts +211 -4
- package/fragments/drawer-list/DrawerListDocs.js +2 -2
- package/fragments/drawer-list/DrawerListDocs.js.map +1 -1
- package/fragments/drawer-list/DrawerListHelpers.d.ts +85 -89
- package/fragments/drawer-list/DrawerListHelpers.js +45 -53
- package/fragments/drawer-list/DrawerListHelpers.js.map +1 -1
- package/fragments/drawer-list/DrawerListItem.d.ts +30 -0
- package/fragments/drawer-list/DrawerListItem.js +91 -0
- package/fragments/drawer-list/DrawerListItem.js.map +1 -0
- package/fragments/drawer-list/DrawerListPortal.d.ts +20 -30
- package/fragments/drawer-list/DrawerListPortal.js +91 -121
- package/fragments/drawer-list/DrawerListPortal.js.map +1 -1
- package/fragments/drawer-list/DrawerListProvider.d.ts +217 -11
- package/fragments/drawer-list/DrawerListProvider.js +12 -19
- package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
- package/package.json +1 -1
- package/shared/Eufemia.d.ts +1 -1
- package/shared/Eufemia.js +2 -2
- package/shared/Eufemia.js.map +1 -1
- package/shared/component-helper.d.ts +45 -48
- package/shared/component-helper.js +23 -189
- package/shared/component-helper.js.map +1 -1
- package/shared/helpers/withCamelCaseProps.d.ts +4 -5
- package/shared/helpers/withCamelCaseProps.js +7 -2
- package/shared/helpers/withCamelCaseProps.js.map +1 -1
- package/shared/legacy/component-helper-legacy.d.ts +19 -0
- package/shared/legacy/component-helper-legacy.js +185 -0
- package/shared/legacy/component-helper-legacy.js.map +1 -0
- package/shared/locales/en-GB.d.ts +1 -0
- package/shared/locales/en-GB.js +1 -0
- package/shared/locales/en-GB.js.map +1 -1
- package/shared/locales/en-US.js.map +1 -1
- package/shared/locales/index.d.ts +2 -0
- package/shared/locales/nb-NO.d.ts +1 -0
- package/shared/locales/nb-NO.js +2 -1
- package/shared/locales/nb-NO.js.map +1 -1
- package/shared/locales/sv-SE.d.ts +1 -0
- package/shared/locales/sv-SE.js +1 -0
- package/shared/locales/sv-SE.js.map +1 -1
- package/style/core/scopes.scss +1 -1
- package/style/dnb-ui-basis.css +1 -1
- package/style/dnb-ui-basis.min.css +1 -1
- package/style/dnb-ui-body.css +1 -1
- package/style/dnb-ui-body.min.css +1 -1
- package/style/dnb-ui-components.css +2 -1
- package/style/dnb-ui-components.min.css +1 -1
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +19 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
- package/style/themes/theme-sbanken/sbanken-theme-components.css +19 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
- package/style/themes/theme-ui/ui-theme-components.css +19 -1
- package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
- package/umd/dnb-ui-basis.min.js +1 -1
- package/umd/dnb-ui-components.min.js +1 -1
- package/umd/dnb-ui-elements.min.js +1 -1
- package/umd/dnb-ui-extensions.min.js +1 -1
- package/umd/dnb-ui-lib.min.js +1 -1
- package/cjs/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
- package/es/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
- package/extensions/forms/Iterate/EditContainer/useHasContentChanged.js.map +0 -1
- /package/cjs/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
- /package/es/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
- /package/extensions/forms/{Iterate/EditContainer → Form/Isolation}/useHasContentChanged.d.ts +0 -0
|
@@ -1,53 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Component helpers
|
|
3
|
+
*
|
|
3
4
|
*/
|
|
4
|
-
|
|
5
|
-
export function defineNavigator(): void;
|
|
6
|
-
export function isObject(item: any): boolean;
|
|
7
|
-
export function extendDeep(target?: {}, ...sources: any[]): {};
|
|
8
|
-
export function toCapitalized(str: any): any;
|
|
9
|
-
export function convertStatusToStateOnly(status: any, state: any): any;
|
|
10
|
-
export function getStatusState(status: any): boolean;
|
|
11
|
-
export function combineLabelledBy(...params: any[]): any;
|
|
12
|
-
export function combineDescribedBy(...params: any[]): any;
|
|
13
|
-
export function combineDetails(...params: any[]): any;
|
|
14
|
-
export function findElementInChildren(children: any, find: any): any;
|
|
15
|
-
export function escapeRegexChars(str: any): any;
|
|
16
|
-
export function removeUndefinedProps(object: any): any;
|
|
17
|
-
export { InteractionInvalidation } from "./helpers/InteractionInvalidation";
|
|
18
|
-
export { assignPropsWithContext } from "./helpers/assignPropsWithContext";
|
|
19
|
-
export { filterProps } from "./helpers/filterProps";
|
|
20
|
-
export function validateDOMAttributes(props: any, params: any): any;
|
|
21
|
-
export function processChildren(props: any): any;
|
|
22
|
-
export function extendGracefully(...objects: any[]): any;
|
|
23
|
-
export function isTrue(value: any): boolean;
|
|
24
|
-
export function dispatchCustomElementEvent(src: any, eventName: any, eventObjectOrig: any): any;
|
|
25
|
-
export function toCamelCase(s: any): any;
|
|
26
|
-
export function toPascalCase(s: any): any;
|
|
27
|
-
export function toSnakeCase(str: any): any;
|
|
28
|
-
export function toKebabCase(str: any): any;
|
|
29
|
-
export function detectOutsideClick(ignoreElements: any, onSuccess: Function, options?: any): DetectOutsideClickClass;
|
|
30
|
-
export class DetectOutsideClickClass {
|
|
31
|
-
constructor(ignoreElements: any, onSuccess: any, options?: {});
|
|
32
|
-
handleClickOutside: (event: any) => void;
|
|
33
|
-
keydownCallback: (event: any) => void;
|
|
34
|
-
keyupCallback: (event: any) => void;
|
|
35
|
-
remove(): void;
|
|
36
|
-
checkOutsideClick: ({ event, ignoreElements }: {
|
|
37
|
-
event: any;
|
|
38
|
-
ignoreElements: any;
|
|
39
|
-
}, onSuccess?: any) => void;
|
|
40
|
-
}
|
|
41
|
-
export function checkIfHasScrollbar(elem: any): boolean;
|
|
42
|
-
export function makeUniqueId(prefix?: string, length?: number): string;
|
|
43
|
-
export function slugify(s: any): string;
|
|
44
|
-
export function matchAll(string: any, regex: any): any[];
|
|
45
|
-
export function isChildOfElement(element: HTMLElement, target: HTMLElement, callback?: Function): HTMLElement | null;
|
|
46
|
-
export function roundToNearest(num: any, target: any): any;
|
|
47
|
-
export function getClosestScrollViewElement(currentElement: any): Element;
|
|
48
|
-
export function convertJsxToString(elements: any, separator?: any, transformWord?: any): any;
|
|
5
|
+
import React from 'react';
|
|
49
6
|
import keycode from './keycode';
|
|
50
|
-
import { getPreviousSibling } from './helpers/getPreviousSibling';
|
|
51
7
|
import { warn } from './helpers';
|
|
8
|
+
import { getPreviousSibling } from './helpers/getPreviousSibling';
|
|
9
|
+
export * from './legacy/component-helper-legacy';
|
|
10
|
+
export { InteractionInvalidation } from './helpers/InteractionInvalidation';
|
|
11
|
+
export { extendPropsWithContext, extendPropsWithContextInClassComponent, } from './helpers/extendPropsWithContext';
|
|
12
|
+
export { assignPropsWithContext } from './helpers/assignPropsWithContext';
|
|
13
|
+
export { filterProps } from './helpers/filterProps';
|
|
52
14
|
export { keycode, getPreviousSibling, warn };
|
|
53
|
-
export
|
|
15
|
+
export declare const validateDOMAttributes: (props: any, params: any) => any;
|
|
16
|
+
/** @deprecated Can be removed in v11 */
|
|
17
|
+
export declare const extendGracefully: (...objects: any[]) => any;
|
|
18
|
+
export declare function isObject(item: any): boolean;
|
|
19
|
+
export declare function extendDeep(target?: {}, ...sources: any[]): {};
|
|
20
|
+
export declare const isTrue: (value: any) => boolean;
|
|
21
|
+
export declare const dispatchCustomElementEvent: (src: any, eventName: any, eventObjectOrig?: any) => any;
|
|
22
|
+
export declare const toCamelCase: (s: any) => any;
|
|
23
|
+
export declare const toPascalCase: (s: any) => any;
|
|
24
|
+
export declare const toSnakeCase: (str: any) => any;
|
|
25
|
+
export declare const toKebabCase: (str: any) => any;
|
|
26
|
+
export declare function toCapitalized(str: any): any;
|
|
27
|
+
export declare const makeUniqueId: (prefix?: string, length?: number) => string;
|
|
28
|
+
export declare const slugify: (s: any) => string;
|
|
29
|
+
export declare const matchAll: (string: any, regex: any) => any[];
|
|
30
|
+
/**
|
|
31
|
+
* Check if an element exists in its children
|
|
32
|
+
* If it finds it, the child "element" of target will be returned.
|
|
33
|
+
*
|
|
34
|
+
* @param {HTMLElement} element The DOM Element to find
|
|
35
|
+
* @param {HTMLElement} target The DOM Element that should contain "element"
|
|
36
|
+
* @param {function} callback (optional)
|
|
37
|
+
* @returns {HTMLElement | null} Returns the found child of all existing dom elements inside of "target"
|
|
38
|
+
*/
|
|
39
|
+
export declare const isChildOfElement: (element: any, target: any, callback?: any) => any;
|
|
40
|
+
export declare const roundToNearest: (num: any, target: any) => any;
|
|
41
|
+
export declare const getClosestScrollViewElement: (currentElement: any) => Element;
|
|
42
|
+
export declare function convertJsxToString(elements: React.ReactNode | React.ReactNode[], separator?: string, transformWord?: (element: React.ReactElement) => React.ReactElement<unknown>): string;
|
|
43
|
+
export declare function convertStatusToStateOnly(status: any, state: any): any;
|
|
44
|
+
export declare function getStatusState(status: any): boolean;
|
|
45
|
+
export declare function combineLabelledBy(...params: any[]): any;
|
|
46
|
+
export declare function combineDescribedBy(...params: any[]): any;
|
|
47
|
+
export declare function combineDetails(...params: any[]): any;
|
|
48
|
+
export declare function findElementInChildren(children: any, find: any): any;
|
|
49
|
+
export declare function escapeRegexChars(str: any): any;
|
|
50
|
+
export declare function removeUndefinedProps(object: any): any;
|
|
@@ -4,9 +4,11 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import keycode from './keycode';
|
|
6
6
|
import whatInput from 'what-input';
|
|
7
|
-
import { warn
|
|
7
|
+
import { warn } from './helpers';
|
|
8
8
|
import { getPreviousSibling } from './helpers/getPreviousSibling';
|
|
9
9
|
import { init } from './Eufemia';
|
|
10
|
+
import { defineNavigator } from './legacy/component-helper-legacy';
|
|
11
|
+
export * from './legacy/component-helper-legacy';
|
|
10
12
|
export { InteractionInvalidation } from './helpers/InteractionInvalidation';
|
|
11
13
|
export { extendPropsWithContext, extendPropsWithContextInClassComponent } from './helpers/extendPropsWithContext';
|
|
12
14
|
export { assignPropsWithContext } from './helpers/assignPropsWithContext';
|
|
@@ -15,44 +17,6 @@ export { keycode, getPreviousSibling, warn };
|
|
|
15
17
|
init();
|
|
16
18
|
whatInput.specificKeys([9]);
|
|
17
19
|
defineNavigator();
|
|
18
|
-
export function isTouchDevice() {
|
|
19
|
-
if (typeof document !== 'undefined') {
|
|
20
|
-
let intent = false;
|
|
21
|
-
try {
|
|
22
|
-
intent = document.documentElement.getAttribute('data-whatintent');
|
|
23
|
-
} catch (e) {}
|
|
24
|
-
return intent === 'touch';
|
|
25
|
-
}
|
|
26
|
-
return false;
|
|
27
|
-
}
|
|
28
|
-
export function defineNavigator() {
|
|
29
|
-
const handleNavigator = () => {
|
|
30
|
-
if (typeof document === 'undefined' || typeof window === 'undefined' || typeof navigator === 'undefined') {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
if (!(typeof window !== 'undefined' && window.IS_TEST)) {
|
|
35
|
-
if (navigator.platform.match(new RegExp(PLATFORM_MAC)) !== null) {
|
|
36
|
-
document.documentElement.setAttribute('data-os', 'mac');
|
|
37
|
-
} else if (navigator.platform.match(new RegExp(PLATFORM_WIN)) !== null) {
|
|
38
|
-
document.documentElement.setAttribute('data-os', 'win');
|
|
39
|
-
} else if (navigator.platform.match(new RegExp(PLATFORM_LINUX)) !== null) {
|
|
40
|
-
document.documentElement.setAttribute('data-os', 'linux');
|
|
41
|
-
}
|
|
42
|
-
} else {
|
|
43
|
-
document.documentElement.setAttribute('data-os', 'other');
|
|
44
|
-
}
|
|
45
|
-
} catch (e) {
|
|
46
|
-
warn(e);
|
|
47
|
-
}
|
|
48
|
-
document.removeEventListener('DOMContentLoaded', handleNavigator);
|
|
49
|
-
};
|
|
50
|
-
if (typeof document !== 'undefined' && document.readyState === 'loading') {
|
|
51
|
-
document.addEventListener('DOMContentLoaded', handleNavigator);
|
|
52
|
-
} else {
|
|
53
|
-
handleNavigator();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
20
|
export const validateDOMAttributes = (props, params) => {
|
|
57
21
|
if (props && props.attributes) {
|
|
58
22
|
let attr = props.attributes;
|
|
@@ -117,46 +81,6 @@ export const validateDOMAttributes = (props, params) => {
|
|
|
117
81
|
}
|
|
118
82
|
return params;
|
|
119
83
|
};
|
|
120
|
-
export const processChildren = props => {
|
|
121
|
-
if (!props) {
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
if (typeof global !== 'undefined' && Array.isArray(global.registeredElements) && global.registeredElements.length > 0) {
|
|
125
|
-
let cache = null;
|
|
126
|
-
Object.entries(props).reverse().map(([key, cb]) => {
|
|
127
|
-
if (key.includes('render_') && /^render_/.test(key)) {
|
|
128
|
-
if (typeof cb === 'function') {
|
|
129
|
-
if (cache) {
|
|
130
|
-
if (Object.isFrozen(props)) {
|
|
131
|
-
props = _objectSpread({}, props);
|
|
132
|
-
}
|
|
133
|
-
props.children = cache;
|
|
134
|
-
}
|
|
135
|
-
return cache = React.createElement(React.Fragment, {
|
|
136
|
-
key: key
|
|
137
|
-
}, cb(props));
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return null;
|
|
141
|
-
}).filter(Boolean);
|
|
142
|
-
if (cache) {
|
|
143
|
-
return cache;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
const res = typeof props.children === 'function' ? props.children(props) : props.children;
|
|
147
|
-
if (Array.isArray(res)) {
|
|
148
|
-
const onlyTexts = res.reduce((pV, cV) => {
|
|
149
|
-
if (typeof cV === 'string' || typeof cV === 'number') {
|
|
150
|
-
pV.push(cV);
|
|
151
|
-
}
|
|
152
|
-
return pV;
|
|
153
|
-
}, []);
|
|
154
|
-
if (onlyTexts.length === res.length && onlyTexts.length > 0) {
|
|
155
|
-
return onlyTexts.join('');
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return res;
|
|
159
|
-
};
|
|
160
84
|
export const extendGracefully = (...objects) => {
|
|
161
85
|
let first = {};
|
|
162
86
|
const keepRef = objects[0];
|
|
@@ -214,7 +138,7 @@ export const isTrue = value => {
|
|
|
214
138
|
}
|
|
215
139
|
return false;
|
|
216
140
|
};
|
|
217
|
-
export const dispatchCustomElementEvent = (src, eventName, eventObjectOrig) => {
|
|
141
|
+
export const dispatchCustomElementEvent = (src, eventName, eventObjectOrig = undefined) => {
|
|
218
142
|
let ret = undefined;
|
|
219
143
|
const eventObject = _objectSpread(_objectSpread({}, eventObjectOrig && eventObjectOrig.event || {}), eventObjectOrig);
|
|
220
144
|
if (eventObject && eventObject.attributes && eventObject.event) {
|
|
@@ -280,101 +204,6 @@ export const toKebabCase = str => str.replace(/\B[A-Z]/g, letter => `-${letter}`
|
|
|
280
204
|
export function toCapitalized(str) {
|
|
281
205
|
return typeof str === 'string' ? str.toLowerCase().split('').map((char, index, arr) => index === 0 || arr[index - 1] === ' ' || arr[index - 1] === '-' ? char.toUpperCase() : char).join('') : str;
|
|
282
206
|
}
|
|
283
|
-
export const detectOutsideClick = (ignoreElements, onSuccess, options) => new DetectOutsideClickClass(ignoreElements, onSuccess, options);
|
|
284
|
-
export class DetectOutsideClickClass {
|
|
285
|
-
constructor(_ignoreElements, _onSuccess, options = {}) {
|
|
286
|
-
_defineProperty(this, "checkOutsideClick", ({
|
|
287
|
-
event,
|
|
288
|
-
ignoreElements
|
|
289
|
-
}, onSuccess = null) => {
|
|
290
|
-
try {
|
|
291
|
-
const currentElement = event.target;
|
|
292
|
-
if ((currentElement === null || currentElement === void 0 ? void 0 : currentElement.tagName) === 'HTML' && (event.pageX > document.documentElement.clientWidth - 40 || event.pageY > document.documentElement.clientHeight - 40)) {
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
if (checkIfHasScrollbar(currentElement)) {
|
|
296
|
-
return;
|
|
297
|
-
}
|
|
298
|
-
for (let i = 0, elem, l = ignoreElements.length; i < l; ++i) {
|
|
299
|
-
const ignoreElement = ignoreElements[i] && 'current' in ignoreElements[i] ? ignoreElements[i].current : ignoreElements[i];
|
|
300
|
-
elem = currentElement;
|
|
301
|
-
if (!ignoreElements[i]) {
|
|
302
|
-
continue;
|
|
303
|
-
}
|
|
304
|
-
do {
|
|
305
|
-
if (elem === ignoreElement) {
|
|
306
|
-
return;
|
|
307
|
-
}
|
|
308
|
-
elem = elem && elem.parentNode;
|
|
309
|
-
} while (elem);
|
|
310
|
-
}
|
|
311
|
-
if (typeof onSuccess === 'function') {
|
|
312
|
-
onSuccess();
|
|
313
|
-
}
|
|
314
|
-
} catch (e) {
|
|
315
|
-
warn(e);
|
|
316
|
-
}
|
|
317
|
-
});
|
|
318
|
-
if (!this.handleClickOutside && typeof document !== 'undefined' && typeof window !== 'undefined') {
|
|
319
|
-
if (!Array.isArray(_ignoreElements)) {
|
|
320
|
-
_ignoreElements = [_ignoreElements];
|
|
321
|
-
}
|
|
322
|
-
this.handleClickOutside = event => {
|
|
323
|
-
this.checkOutsideClick({
|
|
324
|
-
event,
|
|
325
|
-
ignoreElements: _ignoreElements
|
|
326
|
-
}, () => typeof _onSuccess === 'function' && _onSuccess({
|
|
327
|
-
event
|
|
328
|
-
}));
|
|
329
|
-
};
|
|
330
|
-
document.addEventListener('mousedown', this.handleClickOutside);
|
|
331
|
-
this.keydownCallback = event => {
|
|
332
|
-
const keyCode = keycode(event);
|
|
333
|
-
if (keyCode === 'esc') {
|
|
334
|
-
window.removeEventListener('keydown', this.keydownCallback);
|
|
335
|
-
if (typeof _onSuccess === 'function') {
|
|
336
|
-
_onSuccess({
|
|
337
|
-
event
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
};
|
|
342
|
-
window.addEventListener('keydown', this.keydownCallback);
|
|
343
|
-
if (options.includedKeys) {
|
|
344
|
-
this.keyupCallback = event => {
|
|
345
|
-
const keyCode = keycode(event);
|
|
346
|
-
if (options.includedKeys.includes(keyCode) && typeof this.handleClickOutside === 'function') {
|
|
347
|
-
this.handleClickOutside(event, () => {
|
|
348
|
-
if (this.keyupCallback) window.removeEventListener('keyup', this.keyupCallback);
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
};
|
|
352
|
-
window.addEventListener('keyup', this.keyupCallback);
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
remove() {
|
|
357
|
-
if (this.handleClickOutside && typeof document !== 'undefined') {
|
|
358
|
-
document.removeEventListener('mousedown', this.handleClickOutside);
|
|
359
|
-
this.handleClickOutside = null;
|
|
360
|
-
}
|
|
361
|
-
if (this.keydownCallback && typeof window !== 'undefined') {
|
|
362
|
-
window.removeEventListener('keydown', this.keydownCallback);
|
|
363
|
-
this.keydownCallback = null;
|
|
364
|
-
}
|
|
365
|
-
if (this.keyupCallback && typeof window !== 'undefined') {
|
|
366
|
-
window.removeEventListener('keyup', this.keyupCallback);
|
|
367
|
-
this.keyupCallback = null;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
export const checkIfHasScrollbar = elem => {
|
|
372
|
-
return elem && (elem.scrollHeight > elem.offsetHeight || elem.scrollWidth > elem.offsetWidth) && overflowIsScrollable(elem);
|
|
373
|
-
};
|
|
374
|
-
const overflowIsScrollable = elem => {
|
|
375
|
-
const style = typeof window !== 'undefined' ? window.getComputedStyle(elem) : {};
|
|
376
|
-
return /scroll|auto/i.test((style.overflow || '') + (style.overflowX || '') + (style.overflowY || ''));
|
|
377
|
-
};
|
|
378
207
|
export const makeUniqueId = (prefix = 'id-', length = 8) => prefix + String(Math.random().toString(36).substr(2, length) + idIncrement++).slice(-length);
|
|
379
208
|
let idIncrement = 0;
|
|
380
209
|
export const slugify = s => String(s).toLowerCase().replace(/[^\w\s-]/g, '').replace(/[\s_-]+/g, '-').replace(/^-+|-+$/g, '');
|
|
@@ -414,7 +243,7 @@ export const roundToNearest = (num, target) => {
|
|
|
414
243
|
export const getClosestScrollViewElement = currentElement => {
|
|
415
244
|
return getPreviousSibling('.dnb-scroll-view', currentElement);
|
|
416
245
|
};
|
|
417
|
-
export
|
|
246
|
+
export function convertJsxToString(elements, separator = undefined, transformWord = undefined) {
|
|
418
247
|
if (!Array.isArray(elements)) {
|
|
419
248
|
elements = [elements];
|
|
420
249
|
}
|
|
@@ -423,26 +252,34 @@ export const convertJsxToString = (elements, separator = undefined, transformWor
|
|
|
423
252
|
if (transformWord) {
|
|
424
253
|
word = transformWord(word);
|
|
425
254
|
}
|
|
426
|
-
if (
|
|
427
|
-
word = word.props.children.trim();
|
|
428
|
-
} else if (Array.isArray(word.props.children)) {
|
|
255
|
+
if (Array.isArray(word.props.children)) {
|
|
429
256
|
word = word.props.children.reduce((acc, word) => {
|
|
430
257
|
if (typeof word !== 'string') {
|
|
431
|
-
word = process(word
|
|
258
|
+
word = process(word);
|
|
432
259
|
}
|
|
433
260
|
if (typeof word === 'string') {
|
|
434
261
|
acc = (acc + (separator || '') + word).trim();
|
|
435
262
|
}
|
|
436
263
|
return acc;
|
|
437
264
|
}, '');
|
|
265
|
+
} else if (word.props.children) {
|
|
266
|
+
word = word.props.children;
|
|
267
|
+
if (typeof word !== 'string') {
|
|
268
|
+
word = process(word);
|
|
269
|
+
}
|
|
270
|
+
if (typeof word === 'string') {
|
|
271
|
+
word = word.trim();
|
|
272
|
+
} else {
|
|
273
|
+
return undefined;
|
|
274
|
+
}
|
|
438
275
|
} else {
|
|
439
|
-
return
|
|
276
|
+
return undefined;
|
|
440
277
|
}
|
|
441
278
|
}
|
|
442
279
|
return word;
|
|
443
280
|
};
|
|
444
|
-
return elements.map(word => process(word)).filter(Boolean).join(separator).trim();
|
|
445
|
-
}
|
|
281
|
+
return Array.from(elements).map(word => process(word)).filter(Boolean).join(separator).trim();
|
|
282
|
+
}
|
|
446
283
|
export function convertStatusToStateOnly(status, state) {
|
|
447
284
|
return status ? state : null;
|
|
448
285
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-helper.js","names":["React","keycode","whatInput","warn","PLATFORM_MAC","PLATFORM_WIN","PLATFORM_LINUX","getPreviousSibling","init","InteractionInvalidation","extendPropsWithContext","extendPropsWithContextInClassComponent","assignPropsWithContext","filterProps","specificKeys","defineNavigator","isTouchDevice","document","intent","documentElement","getAttribute","e","handleNavigator","window","navigator","IS_TEST","platform","match","RegExp","setAttribute","removeEventListener","readyState","addEventListener","validateDOMAttributes","props","params","attributes","attr","JSON","parse","Object","entries","forEach","key","value","assign","disabled","space","top","right","bottom","left","no_collapse","innerSpace","tabindex","tabIndex","i","test","processChildren","global","Array","isArray","registeredElements","length","cache","reverse","map","cb","includes","isFrozen","_objectSpread","children","createElement","Fragment","filter","Boolean","res","onlyTexts","reduce","pV","cV","push","join","extendGracefully","objects","first","keepRef","shift","acc1","object","acc2","keys","isObject","item","extendDeep","target","sources","source","prototype","hasOwnProperty","call","isTrue","String","dispatchCustomElementEvent","src","eventName","eventObjectOrig","ret","undefined","eventObject","event","currentTarget","dataset","replace","r","apply","toCamelCase","toSnakeCase","s","split","acc","cur","g0","g1","g2","toUpperCase","toLowerCase","toPascalCase","str","letter","toKebabCase","toCapitalized","char","index","arr","detectOutsideClick","ignoreElements","onSuccess","options","DetectOutsideClickClass","constructor","_defineProperty","currentElement","tagName","pageX","clientWidth","pageY","clientHeight","checkIfHasScrollbar","elem","l","ignoreElement","current","parentNode","handleClickOutside","checkOutsideClick","keydownCallback","keyCode","includedKeys","keyupCallback","remove","scrollHeight","offsetHeight","scrollWidth","offsetWidth","overflowIsScrollable","style","getComputedStyle","overflow","overflowX","overflowY","makeUniqueId","prefix","Math","random","toString","substr","idIncrement","slice","slugify","matchAll","string","regex","from","matches","exec","isChildOfElement","element","callback","contains","parentElement","roundToNearest","num","diff","getClosestScrollViewElement","convertJsxToString","elements","separator","transformWord","process","word","isValidElement","trim","convertStatusToStateOnly","status","state","getStatusState","combineLabelledBy","combineAriaBy","combineDescribedBy","combineDetails","type","findElementInChildren","find","result","some","escapeRegexChars","removeUndefinedProps"],"sources":["../../../src/shared/component-helper.js"],"sourcesContent":["/**\n * Component helpers\n *\n */\n\nimport React from 'react'\nimport keycode from './keycode'\nimport whatInput from 'what-input'\nimport {\n warn,\n PLATFORM_MAC,\n PLATFORM_WIN,\n PLATFORM_LINUX,\n} from './helpers'\nimport { getPreviousSibling } from './helpers/getPreviousSibling'\nimport { init } from './Eufemia'\n\nexport { InteractionInvalidation } from './helpers/InteractionInvalidation'\nexport {\n extendPropsWithContext,\n extendPropsWithContextInClassComponent,\n} from './helpers/extendPropsWithContext'\nexport { assignPropsWithContext } from './helpers/assignPropsWithContext'\nexport { filterProps } from './helpers/filterProps'\n\nexport { keycode, getPreviousSibling, warn }\n\ninit()\n\n// run component helper functions\nwhatInput.specificKeys([9])\ndefineNavigator()\n\n/**\n * Check if device is touch device or not\n */\nexport function isTouchDevice() {\n if (typeof document !== 'undefined') {\n let intent = false\n try {\n intent = document.documentElement.getAttribute('data-whatintent')\n } catch (e) {\n //\n }\n return intent === 'touch'\n }\n return false\n}\n\nexport function defineNavigator() {\n const handleNavigator = () => {\n if (\n typeof document === 'undefined' ||\n typeof window === 'undefined' ||\n typeof navigator === 'undefined'\n ) {\n return\n }\n\n try {\n if (!(typeof window !== 'undefined' && window.IS_TEST)) {\n if (navigator.platform.match(new RegExp(PLATFORM_MAC)) !== null) {\n document.documentElement.setAttribute('data-os', 'mac')\n } else if (\n navigator.platform.match(new RegExp(PLATFORM_WIN)) !== null\n ) {\n document.documentElement.setAttribute('data-os', 'win')\n } else if (\n navigator.platform.match(new RegExp(PLATFORM_LINUX)) !== null\n ) {\n document.documentElement.setAttribute('data-os', 'linux')\n }\n } else {\n document.documentElement.setAttribute('data-os', 'other')\n }\n } catch (e) {\n warn(e)\n }\n\n document.removeEventListener('DOMContentLoaded', handleNavigator)\n }\n\n if (\n typeof document !== 'undefined' &&\n document.readyState === 'loading'\n ) {\n document.addEventListener('DOMContentLoaded', handleNavigator)\n } else {\n handleNavigator()\n }\n}\n\nexport const validateDOMAttributes = (props, params) => {\n // if there is an \"attributes\" prop, prepare these\n // mostly used for prop example usage\n if (props && props.attributes) {\n let attr = props.attributes\n if (attr) {\n if (attr[0] === '{') {\n attr = JSON.parse(attr)\n }\n if (attr && typeof attr === 'object') {\n Object.entries(attr).forEach(([key, value]) => {\n Object.assign(params, { [key]: value })\n })\n }\n delete params.attributes\n }\n }\n\n // remove disabled, in case it is false (this is for web components support)\n if (params.disabled === null || params.disabled === 'false') {\n delete params.disabled\n }\n if (typeof params.space !== 'undefined') {\n delete params.space\n }\n if (typeof params.top !== 'undefined') {\n delete params.top\n }\n if (typeof params.right !== 'undefined') {\n delete params.right\n }\n if (typeof params.bottom !== 'undefined') {\n delete params.bottom\n }\n if (typeof params.left !== 'undefined') {\n delete params.left\n }\n if (typeof params.no_collapse !== 'undefined') {\n delete params.no_collapse\n }\n if (typeof params.innerSpace !== 'undefined') {\n delete params.innerSpace\n }\n\n // in case disabled is a string, it's enabled, send it in as a true (this is for web components support)\n else if (params.disabled === 'true') {\n params.disabled = true\n }\n if (params.disabled === true) {\n params['aria-disabled'] = true\n }\n\n if (props && props.tabindex) {\n let tabIndex = props.tabindex\n if (tabIndex === 'off') {\n tabIndex = '-1'\n }\n params['tabIndex'] = tabIndex\n }\n\n // make sure we don't return a render prop as a DOM attribute\n if (params && typeof params === 'object') {\n for (const i in params) {\n if (\n // is React\n typeof params[i] === 'function' &&\n // only React Style props, like onClick are allowed\n !/(^[a-z]{1,}[A-Z]{1})/.test(i)\n ) {\n delete params[i]\n\n // filter out invalid attributes\n } else if (\n // we don't want NULL values\n params[i] === null ||\n // we don't want\n /[^a-z-]/i.test(i)\n // (typeof params[i] !== 'string' && /[^a-z-]/i.test(i))\n ) {\n delete params[i]\n }\n }\n }\n\n return params\n}\n\nexport const processChildren = (props) => {\n if (!props) {\n return null\n }\n\n // If used in WB, call functions who starts with \"render_\"\n if (\n typeof global !== 'undefined' &&\n Array.isArray(global.registeredElements) &&\n global.registeredElements.length > 0\n ) {\n let cache = null\n Object.entries(props)\n .reverse()\n .map(([key, cb]) => {\n if (key.includes('render_') && /^render_/.test(key)) {\n if (typeof cb === 'function') {\n if (cache) {\n if (Object.isFrozen(props)) {\n props = { ...props }\n }\n props.children = cache\n }\n return (cache = (\n <React.Fragment key={key}>{cb(props)}</React.Fragment>\n ))\n }\n }\n\n return null\n })\n .filter(Boolean)\n if (cache) {\n return cache\n }\n }\n\n const res =\n typeof props.children === 'function'\n ? props.children(props)\n : props.children\n\n // if we get several react children which represents only a text\n if (Array.isArray(res)) {\n const onlyTexts = res.reduce((pV, cV) => {\n if (typeof cV === 'string' || typeof cV === 'number') {\n pV.push(cV)\n }\n return pV\n }, [])\n\n // if there was one or more text elements\n if (onlyTexts.length === res.length && onlyTexts.length > 0) {\n return onlyTexts.join('')\n }\n }\n\n return res\n}\n\n/** @deprecated Can be removed in v11 */\nexport const extendGracefully = (...objects) => {\n let first = {}\n const keepRef = objects[0]\n\n if (keepRef === true || keepRef === false) {\n // remove settings value\n objects.shift()\n\n if (keepRef) {\n // by extracting the first, we keep the same main object reference\n first = objects.shift()\n }\n }\n\n return objects.reduce((acc1, object) => {\n if (object) {\n acc1 = Object.assign(\n acc1,\n Object.entries(object).reduce((acc2, [key, value]) => {\n if (value !== null) {\n // go recursively\n if (typeof value === 'object') {\n value = extendGracefully(acc1[key] || {}, value)\n if (Object.keys(value).length > 0) {\n acc2[key] = value\n }\n } else {\n acc2[key] = value\n }\n }\n return acc2\n }, {})\n )\n }\n return acc1\n }, first)\n}\n\nexport function isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item)\n}\n\nexport function extendDeep(target = {}, ...sources) {\n for (const source of sources) {\n if (isObject(source)) {\n for (const key in source) {\n // Prototype-polluting checks etc.\n if (key === '__proto__' || key === 'constructor') continue\n if (!Object.prototype.hasOwnProperty.call(source, key)) continue\n if (!isObject(target)) continue\n\n if (isObject(source[key])) {\n if (!isObject(target[key])) {\n target[key] = {}\n }\n extendDeep(target[key], source[key])\n } else {\n target[key] = source[key]\n }\n }\n }\n }\n\n return target\n}\n\n// check if value is \"truthy\"\nexport const isTrue = (value) => {\n if (\n value !== null &&\n typeof value !== 'undefined' &&\n (String(value) === 'true' || String(value) === '1')\n ) {\n return true\n }\n return false\n}\n\nexport const dispatchCustomElementEvent = (\n src,\n eventName,\n eventObjectOrig\n) => {\n let ret = undefined\n\n const eventObject = {\n ...((eventObjectOrig && eventObjectOrig.event) || {}),\n ...eventObjectOrig,\n }\n\n // distribute dataset like \"data-*\" to both currentTarget and target\n if (eventObject && eventObject.attributes && eventObject.event) {\n const currentTarget = eventObject.event.currentTarget\n if (currentTarget) {\n try {\n // 1. create new dataset, and copy if exists\n const dataset = { ...(currentTarget.dataset || {}) }\n\n // 2. copy in our attributes if they are of \"data-\" type\n const attributes = { ...eventObject.attributes }\n for (const i in attributes) {\n if (/^data-/.test(i)) {\n dataset[String(i).replace(/^data-/, '')] = attributes[i]\n }\n }\n\n // 3. and distribute them to the targets. Use the for method because of immutability\n for (const i in dataset) {\n if (eventObject.event.currentTarget.dataset) {\n eventObject.event.currentTarget.dataset[i] = dataset[i]\n }\n if (\n eventObject.event.target &&\n eventObject.event.target.dataset\n ) {\n eventObject.event.target.dataset[i] = dataset[i]\n }\n }\n } catch (e) {\n warn('Error on handling dataset:', e)\n }\n }\n }\n\n const props = (src && src.props) || src\n\n // call the default snake case event\n if (eventName.includes('_')) {\n if (typeof props[eventName] === 'function') {\n const r = props[eventName].apply(src, [eventObject])\n if (typeof r !== 'undefined') {\n ret = r\n }\n }\n\n // call Synthetic React event camelCase naming events\n eventName = toCamelCase(eventName)\n if (typeof props[eventName] === 'function') {\n const r = props[eventName].apply(src, [eventObject])\n if (typeof r !== 'undefined') {\n ret = r\n }\n }\n } else {\n if (typeof props[eventName] === 'function') {\n const r = props[eventName].apply(src, [eventObject])\n if (typeof r !== 'undefined') {\n ret = r\n }\n }\n\n // call (in future deprecated) event snake case naming events\n eventName = toSnakeCase(eventName)\n if (typeof props[eventName] === 'function') {\n const r = props[eventName].apply(src, [eventObject])\n if (typeof r !== 'undefined') {\n ret = r\n }\n }\n }\n\n return ret\n}\n\n// transform on_click to onClick\nexport const toCamelCase = (s) =>\n s\n .split(/_/g)\n .reduce(\n (acc, cur, i) =>\n acc +\n (i === 0\n ? cur\n : cur.replace(\n /(\\w)(\\w*)/g,\n (g0, g1, g2) => g1.toUpperCase() + g2.toLowerCase()\n )),\n ''\n )\n\n// transform my_component to MyComponent\nexport const toPascalCase = (s) =>\n s\n .split(/_/g)\n .reduce(\n (acc, cur) =>\n acc +\n cur.replace(\n /(\\w)(\\w*)/g,\n (g0, g1, g2) => g1.toUpperCase() + g2.toLowerCase()\n ),\n ''\n )\n\n// transform MyComponent to my_component\nexport const toSnakeCase = (str) =>\n str.replace(/\\B[A-Z]/g, (letter) => `_${letter}`).toLowerCase()\n\n// transform MyComponent to my-component\nexport const toKebabCase = (str) =>\n str.replace(/\\B[A-Z]/g, (letter) => `-${letter}`).toLowerCase()\n\nexport function toCapitalized(str) {\n return typeof str === 'string'\n ? str\n .toLowerCase()\n .split('')\n .map((char, index, arr) =>\n index === 0 || arr[index - 1] === ' ' || arr[index - 1] === '-'\n ? char.toUpperCase()\n : char\n )\n .join('')\n : str\n}\n\n/**\n * [detectOutsideClick Detects a click outside a given DOM element]\n * @param {HTMLElement} ignoreElement [The element we want to protect from a click]\n * @param {Function} onSuccess [Will be called on outside click]\n * @param {Object} [options] [Options]\n * @return {DetectOutsideClickClass} [A new instance of DetectOutsideClickClass]\n */\nexport const detectOutsideClick = (ignoreElements, onSuccess, options) =>\n new DetectOutsideClickClass(ignoreElements, onSuccess, options)\n\n// Used by detectOutsideClick\nexport class DetectOutsideClickClass {\n constructor(ignoreElements, onSuccess, options = {}) {\n if (\n !this.handleClickOutside &&\n typeof document !== 'undefined' &&\n typeof window !== 'undefined'\n ) {\n if (!Array.isArray(ignoreElements)) {\n ignoreElements = [ignoreElements]\n }\n this.handleClickOutside = (event) => {\n this.checkOutsideClick(\n {\n event,\n ignoreElements,\n },\n () => typeof onSuccess === 'function' && onSuccess({ event })\n )\n }\n document.addEventListener('mousedown', this.handleClickOutside)\n\n this.keydownCallback = (event) => {\n const keyCode = keycode(event)\n if (keyCode === 'esc') {\n window.removeEventListener('keydown', this.keydownCallback)\n if (typeof onSuccess === 'function') {\n onSuccess({ event })\n }\n }\n }\n window.addEventListener('keydown', this.keydownCallback)\n\n // e.g. includedKeys = ['tab']\n if (options.includedKeys) {\n // use keyup so we get the correct new target\n this.keyupCallback = (event) => {\n const keyCode = keycode(event)\n if (\n options.includedKeys.includes(keyCode) &&\n typeof this.handleClickOutside === 'function'\n ) {\n this.handleClickOutside(event, () => {\n if (this.keyupCallback)\n window.removeEventListener('keyup', this.keyupCallback)\n })\n }\n }\n window.addEventListener('keyup', this.keyupCallback)\n }\n }\n }\n\n remove() {\n if (this.handleClickOutside && typeof document !== 'undefined') {\n document.removeEventListener('mousedown', this.handleClickOutside)\n this.handleClickOutside = null\n }\n if (this.keydownCallback && typeof window !== 'undefined') {\n window.removeEventListener('keydown', this.keydownCallback)\n this.keydownCallback = null\n }\n if (this.keyupCallback && typeof window !== 'undefined') {\n window.removeEventListener('keyup', this.keyupCallback)\n this.keyupCallback = null\n }\n }\n\n checkOutsideClick = ({ event, ignoreElements }, onSuccess = null) => {\n try {\n const currentElement = event.target\n\n // we also check if currentElement is documentElement\n // and if it has scrollbars, we then ignore the click\n if (\n currentElement?.tagName === 'HTML' &&\n (event.pageX > document.documentElement.clientWidth - 40 ||\n event.pageY > document.documentElement.clientHeight - 40)\n ) {\n return // stop here\n }\n\n // check if element has e.g. \"overflow: scroll\"\n if (checkIfHasScrollbar(currentElement)) {\n return // stop here\n }\n\n // check the rest\n for (let i = 0, elem, l = ignoreElements.length; i < l; ++i) {\n // Allow for comparing ref elements that are rendered conditionally,\n // That might be `null` or ´undefined` during the construction stage of this class\n\n const ignoreElement =\n ignoreElements[i] && 'current' in ignoreElements[i]\n ? ignoreElements[i].current\n : ignoreElements[i]\n\n elem = currentElement\n if (!ignoreElements[i]) {\n continue\n }\n do {\n if (elem === ignoreElement) {\n return // stop here\n }\n elem = elem && elem.parentNode\n } while (elem)\n }\n\n if (typeof onSuccess === 'function') {\n onSuccess()\n }\n } catch (e) {\n warn(e)\n }\n }\n}\n\nexport const checkIfHasScrollbar = (elem) => {\n return (\n elem &&\n (elem.scrollHeight > elem.offsetHeight ||\n elem.scrollWidth > elem.offsetWidth) &&\n overflowIsScrollable(elem)\n )\n}\nconst overflowIsScrollable = (elem) => {\n const style =\n typeof window !== 'undefined' ? window.getComputedStyle(elem) : {}\n return /scroll|auto/i.test(\n (style.overflow || '') +\n (style.overflowX || '') +\n (style.overflowY || '')\n )\n}\n\nexport const makeUniqueId = (prefix = 'id-', length = 8) =>\n prefix +\n String(\n Math.random().toString(36).substr(2, length) + idIncrement++\n ).slice(-length)\nlet idIncrement = 0\n\nexport const slugify = (s) =>\n String(s)\n .toLowerCase()\n .replace(/[^\\w\\s-]/g, '')\n .replace(/[\\s_-]+/g, '-')\n .replace(/^-+|-+$/g, '')\n\n// NB: in future we can use String.matchAll() instead\nexport const matchAll = (string, regex) => {\n if (typeof string.matchAll === 'function') {\n return Array.from(string.matchAll(regex))\n }\n const matches = []\n let match\n while ((match = regex.exec(string))) {\n matches.push(match)\n }\n return matches\n}\n\n/**\n * Check if an element exists in its children\n * If it finds it, the child \"element\" of target will be returned.\n *\n * @param {HTMLElement} element The DOM Element to find\n * @param {HTMLElement} target The DOM Element that should contain \"element\"\n * @param {function} callback (optional)\n * @returns {HTMLElement | null} Returns the found child of all existing dom elements inside of \"target\"\n */\nexport const isChildOfElement = (element, target, callback = null) => {\n try {\n const contains = (element) => {\n if (callback) {\n const res = callback(element)\n if (res) {\n return element\n }\n }\n return element && element === target\n }\n\n if (contains(element)) {\n return element\n }\n\n while (\n (element = element && element.parentElement) &&\n !contains(element)\n );\n } catch (e) {\n //\n }\n\n return element\n}\n\n// Round number to nearest target number\nexport const roundToNearest = (num, target) => {\n const diff = num % target\n return diff > target / 2 ? num - diff + target : num - diff\n}\n\nexport const getClosestScrollViewElement = (currentElement) => {\n return getPreviousSibling('.dnb-scroll-view', currentElement)\n}\n\nexport const convertJsxToString = (\n elements,\n separator = undefined,\n transformWord = undefined\n) => {\n if (!Array.isArray(elements)) {\n elements = [elements]\n }\n\n const process = (word) => {\n if (React.isValidElement(word)) {\n if (transformWord) {\n word = transformWord(word)\n }\n\n if (typeof word.props.children === 'string') {\n word = word.props.children.trim()\n } else if (Array.isArray(word.props.children)) {\n word = word.props.children.reduce((acc, word) => {\n if (typeof word !== 'string') {\n word = process(word, separator, transformWord)\n }\n if (typeof word === 'string') {\n acc = (acc + (separator || '') + word).trim()\n }\n return acc\n }, '')\n } else {\n return null\n }\n }\n\n return word\n }\n\n return elements\n .map((word) => process(word))\n .filter(Boolean)\n .join(separator)\n .trim()\n}\n\nexport function convertStatusToStateOnly(status, state) {\n return status ? state : null\n}\n\nexport function getStatusState(status) {\n return (\n status && status !== 'error' && status !== 'warn' && status !== 'info'\n )\n}\n\nexport function combineLabelledBy(...params) {\n return combineAriaBy('aria-labelledby', params)\n}\nexport function combineDescribedBy(...params) {\n return combineAriaBy('aria-describedby', params)\n}\nexport function combineDetails(...params) {\n return combineAriaBy('aria-details', params)\n}\nfunction combineAriaBy(type, params) {\n params = params.map((cur) => {\n if (Array.isArray(cur)) {\n return cur.join(' ')\n }\n if (cur && params.includes(cur[type])) {\n return null\n }\n if (cur && typeof cur[type] !== 'undefined') {\n cur = cur[type]\n }\n if (typeof cur !== 'string') {\n cur = null\n }\n return cur\n })\n params = params.filter(Boolean).join(' ')\n if (params === '') {\n params = undefined\n }\n return params\n}\n\nexport function findElementInChildren(children, find) {\n if (!Array.isArray(children)) {\n children = [children]\n }\n\n let result = null\n children.some((cur) => {\n if (cur && cur.props && cur.props.children) {\n const res = findElementInChildren(cur.props.children, find)\n if (res) {\n return (result = res)\n }\n }\n if (React.isValidElement(cur) && find(cur)) {\n return (result = cur)\n }\n return null\n })\n\n return result\n}\n\nexport function escapeRegexChars(str) {\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#]/g, '\\\\$&')\n}\n\nexport function removeUndefinedProps(object) {\n Object.keys(object || {}).forEach((key) => {\n if (object[key] === undefined) {\n delete object[key]\n }\n })\n return object\n}\n"],"mappings":";;;AAKA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,OAAO,MAAM,WAAW;AAC/B,OAAOC,SAAS,MAAM,YAAY;AAClC,SACEC,IAAI,EACJC,YAAY,EACZC,YAAY,EACZC,cAAc,QACT,WAAW;AAClB,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,IAAI,QAAQ,WAAW;AAEhC,SAASC,uBAAuB,QAAQ,mCAAmC;AAC3E,SACEC,sBAAsB,EACtBC,sCAAsC,QACjC,kCAAkC;AACzC,SAASC,sBAAsB,QAAQ,kCAAkC;AACzE,SAASC,WAAW,QAAQ,uBAAuB;AAEnD,SAASZ,OAAO,EAAEM,kBAAkB,EAAEJ,IAAI;AAE1CK,IAAI,CAAC,CAAC;AAGNN,SAAS,CAACY,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3BC,eAAe,CAAC,CAAC;AAKjB,OAAO,SAASC,aAAaA,CAAA,EAAG;EAC9B,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IACnC,IAAIC,MAAM,GAAG,KAAK;IAClB,IAAI;MACFA,MAAM,GAAGD,QAAQ,CAACE,eAAe,CAACC,YAAY,CAAC,iBAAiB,CAAC;IACnE,CAAC,CAAC,OAAOC,CAAC,EAAE,CAEZ;IACA,OAAOH,MAAM,KAAK,OAAO;EAC3B;EACA,OAAO,KAAK;AACd;AAEA,OAAO,SAASH,eAAeA,CAAA,EAAG;EAChC,MAAMO,eAAe,GAAGA,CAAA,KAAM;IAC5B,IACE,OAAOL,QAAQ,KAAK,WAAW,IAC/B,OAAOM,MAAM,KAAK,WAAW,IAC7B,OAAOC,SAAS,KAAK,WAAW,EAChC;MACA;IACF;IAEA,IAAI;MACF,IAAI,EAAE,OAAOD,MAAM,KAAK,WAAW,IAAIA,MAAM,CAACE,OAAO,CAAC,EAAE;QACtD,IAAID,SAAS,CAACE,QAAQ,CAACC,KAAK,CAAC,IAAIC,MAAM,CAACxB,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE;UAC/Da,QAAQ,CAACE,eAAe,CAACU,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC;QACzD,CAAC,MAAM,IACLL,SAAS,CAACE,QAAQ,CAACC,KAAK,CAAC,IAAIC,MAAM,CAACvB,YAAY,CAAC,CAAC,KAAK,IAAI,EAC3D;UACAY,QAAQ,CAACE,eAAe,CAACU,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC;QACzD,CAAC,MAAM,IACLL,SAAS,CAACE,QAAQ,CAACC,KAAK,CAAC,IAAIC,MAAM,CAACtB,cAAc,CAAC,CAAC,KAAK,IAAI,EAC7D;UACAW,QAAQ,CAACE,eAAe,CAACU,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC;QAC3D;MACF,CAAC,MAAM;QACLZ,QAAQ,CAACE,eAAe,CAACU,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC;MAC3D;IACF,CAAC,CAAC,OAAOR,CAAC,EAAE;MACVlB,IAAI,CAACkB,CAAC,CAAC;IACT;IAEAJ,QAAQ,CAACa,mBAAmB,CAAC,kBAAkB,EAAER,eAAe,CAAC;EACnE,CAAC;EAED,IACE,OAAOL,QAAQ,KAAK,WAAW,IAC/BA,QAAQ,CAACc,UAAU,KAAK,SAAS,EACjC;IACAd,QAAQ,CAACe,gBAAgB,CAAC,kBAAkB,EAAEV,eAAe,CAAC;EAChE,CAAC,MAAM;IACLA,eAAe,CAAC,CAAC;EACnB;AACF;AAEA,OAAO,MAAMW,qBAAqB,GAAGA,CAACC,KAAK,EAAEC,MAAM,KAAK;EAGtD,IAAID,KAAK,IAAIA,KAAK,CAACE,UAAU,EAAE;IAC7B,IAAIC,IAAI,GAAGH,KAAK,CAACE,UAAU;IAC3B,IAAIC,IAAI,EAAE;MACR,IAAIA,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACnBA,IAAI,GAAGC,IAAI,CAACC,KAAK,CAACF,IAAI,CAAC;MACzB;MACA,IAAIA,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;QACpCG,MAAM,CAACC,OAAO,CAACJ,IAAI,CAAC,CAACK,OAAO,CAAC,CAAC,CAACC,GAAG,EAAEC,KAAK,CAAC,KAAK;UAC7CJ,MAAM,CAACK,MAAM,CAACV,MAAM,EAAE;YAAE,CAACQ,GAAG,GAAGC;UAAM,CAAC,CAAC;QACzC,CAAC,CAAC;MACJ;MACA,OAAOT,MAAM,CAACC,UAAU;IAC1B;EACF;EAGA,IAAID,MAAM,CAACW,QAAQ,KAAK,IAAI,IAAIX,MAAM,CAACW,QAAQ,KAAK,OAAO,EAAE;IAC3D,OAAOX,MAAM,CAACW,QAAQ;EACxB;EACA,IAAI,OAAOX,MAAM,CAACY,KAAK,KAAK,WAAW,EAAE;IACvC,OAAOZ,MAAM,CAACY,KAAK;EACrB;EACA,IAAI,OAAOZ,MAAM,CAACa,GAAG,KAAK,WAAW,EAAE;IACrC,OAAOb,MAAM,CAACa,GAAG;EACnB;EACA,IAAI,OAAOb,MAAM,CAACc,KAAK,KAAK,WAAW,EAAE;IACvC,OAAOd,MAAM,CAACc,KAAK;EACrB;EACA,IAAI,OAAOd,MAAM,CAACe,MAAM,KAAK,WAAW,EAAE;IACxC,OAAOf,MAAM,CAACe,MAAM;EACtB;EACA,IAAI,OAAOf,MAAM,CAACgB,IAAI,KAAK,WAAW,EAAE;IACtC,OAAOhB,MAAM,CAACgB,IAAI;EACpB;EACA,IAAI,OAAOhB,MAAM,CAACiB,WAAW,KAAK,WAAW,EAAE;IAC7C,OAAOjB,MAAM,CAACiB,WAAW;EAC3B;EACA,IAAI,OAAOjB,MAAM,CAACkB,UAAU,KAAK,WAAW,EAAE;IAC5C,OAAOlB,MAAM,CAACkB,UAAU;EAC1B,CAAC,MAGI,IAAIlB,MAAM,CAACW,QAAQ,KAAK,MAAM,EAAE;IACnCX,MAAM,CAACW,QAAQ,GAAG,IAAI;EACxB;EACA,IAAIX,MAAM,CAACW,QAAQ,KAAK,IAAI,EAAE;IAC5BX,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI;EAChC;EAEA,IAAID,KAAK,IAAIA,KAAK,CAACoB,QAAQ,EAAE;IAC3B,IAAIC,QAAQ,GAAGrB,KAAK,CAACoB,QAAQ;IAC7B,IAAIC,QAAQ,KAAK,KAAK,EAAE;MACtBA,QAAQ,GAAG,IAAI;IACjB;IACApB,MAAM,CAAC,UAAU,CAAC,GAAGoB,QAAQ;EAC/B;EAGA,IAAIpB,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IACxC,KAAK,MAAMqB,CAAC,IAAIrB,MAAM,EAAE;MACtB,IAEE,OAAOA,MAAM,CAACqB,CAAC,CAAC,KAAK,UAAU,IAE/B,CAAC,sBAAsB,CAACC,IAAI,CAACD,CAAC,CAAC,EAC/B;QACA,OAAOrB,MAAM,CAACqB,CAAC,CAAC;MAGlB,CAAC,MAAM,IAELrB,MAAM,CAACqB,CAAC,CAAC,KAAK,IAAI,IAElB,UAAU,CAACC,IAAI,CAACD,CAAC,CAAC,EAElB;QACA,OAAOrB,MAAM,CAACqB,CAAC,CAAC;MAClB;IACF;EACF;EAEA,OAAOrB,MAAM;AACf,CAAC;AAED,OAAO,MAAMuB,eAAe,GAAIxB,KAAK,IAAK;EACxC,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,IAAI;EACb;EAGA,IACE,OAAOyB,MAAM,KAAK,WAAW,IAC7BC,KAAK,CAACC,OAAO,CAACF,MAAM,CAACG,kBAAkB,CAAC,IACxCH,MAAM,CAACG,kBAAkB,CAACC,MAAM,GAAG,CAAC,EACpC;IACA,IAAIC,KAAK,GAAG,IAAI;IAChBxB,MAAM,CAACC,OAAO,CAACP,KAAK,CAAC,CAClB+B,OAAO,CAAC,CAAC,CACTC,GAAG,CAAC,CAAC,CAACvB,GAAG,EAAEwB,EAAE,CAAC,KAAK;MAClB,IAAIxB,GAAG,CAACyB,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAACX,IAAI,CAACd,GAAG,CAAC,EAAE;QACnD,IAAI,OAAOwB,EAAE,KAAK,UAAU,EAAE;UAC5B,IAAIH,KAAK,EAAE;YACT,IAAIxB,MAAM,CAAC6B,QAAQ,CAACnC,KAAK,CAAC,EAAE;cAC1BA,KAAK,GAAAoC,aAAA,KAAQpC,KAAK,CAAE;YACtB;YACAA,KAAK,CAACqC,QAAQ,GAAGP,KAAK;UACxB;UACA,OAAQA,KAAK,GACXhE,KAAA,CAAAwE,aAAA,CAACxE,KAAK,CAACyE,QAAQ;YAAC9B,GAAG,EAAEA;UAAI,GAAEwB,EAAE,CAACjC,KAAK,CAAkB,CACtD;QACH;MACF;MAEA,OAAO,IAAI;IACb,CAAC,CAAC,CACDwC,MAAM,CAACC,OAAO,CAAC;IAClB,IAAIX,KAAK,EAAE;MACT,OAAOA,KAAK;IACd;EACF;EAEA,MAAMY,GAAG,GACP,OAAO1C,KAAK,CAACqC,QAAQ,KAAK,UAAU,GAChCrC,KAAK,CAACqC,QAAQ,CAACrC,KAAK,CAAC,GACrBA,KAAK,CAACqC,QAAQ;EAGpB,IAAIX,KAAK,CAACC,OAAO,CAACe,GAAG,CAAC,EAAE;IACtB,MAAMC,SAAS,GAAGD,GAAG,CAACE,MAAM,CAAC,CAACC,EAAE,EAAEC,EAAE,KAAK;MACvC,IAAI,OAAOA,EAAE,KAAK,QAAQ,IAAI,OAAOA,EAAE,KAAK,QAAQ,EAAE;QACpDD,EAAE,CAACE,IAAI,CAACD,EAAE,CAAC;MACb;MACA,OAAOD,EAAE;IACX,CAAC,EAAE,EAAE,CAAC;IAGN,IAAIF,SAAS,CAACd,MAAM,KAAKa,GAAG,CAACb,MAAM,IAAIc,SAAS,CAACd,MAAM,GAAG,CAAC,EAAE;MAC3D,OAAOc,SAAS,CAACK,IAAI,CAAC,EAAE,CAAC;IAC3B;EACF;EAEA,OAAON,GAAG;AACZ,CAAC;AAGD,OAAO,MAAMO,gBAAgB,GAAGA,CAAC,GAAGC,OAAO,KAAK;EAC9C,IAAIC,KAAK,GAAG,CAAC,CAAC;EACd,MAAMC,OAAO,GAAGF,OAAO,CAAC,CAAC,CAAC;EAE1B,IAAIE,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAK,KAAK,EAAE;IAEzCF,OAAO,CAACG,KAAK,CAAC,CAAC;IAEf,IAAID,OAAO,EAAE;MAEXD,KAAK,GAAGD,OAAO,CAACG,KAAK,CAAC,CAAC;IACzB;EACF;EAEA,OAAOH,OAAO,CAACN,MAAM,CAAC,CAACU,IAAI,EAAEC,MAAM,KAAK;IACtC,IAAIA,MAAM,EAAE;MACVD,IAAI,GAAGhD,MAAM,CAACK,MAAM,CAClB2C,IAAI,EACJhD,MAAM,CAACC,OAAO,CAACgD,MAAM,CAAC,CAACX,MAAM,CAAC,CAACY,IAAI,EAAE,CAAC/C,GAAG,EAAEC,KAAK,CAAC,KAAK;QACpD,IAAIA,KAAK,KAAK,IAAI,EAAE;UAElB,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;YAC7BA,KAAK,GAAGuC,gBAAgB,CAACK,IAAI,CAAC7C,GAAG,CAAC,IAAI,CAAC,CAAC,EAAEC,KAAK,CAAC;YAChD,IAAIJ,MAAM,CAACmD,IAAI,CAAC/C,KAAK,CAAC,CAACmB,MAAM,GAAG,CAAC,EAAE;cACjC2B,IAAI,CAAC/C,GAAG,CAAC,GAAGC,KAAK;YACnB;UACF,CAAC,MAAM;YACL8C,IAAI,CAAC/C,GAAG,CAAC,GAAGC,KAAK;UACnB;QACF;QACA,OAAO8C,IAAI;MACb,CAAC,EAAE,CAAC,CAAC,CACP,CAAC;IACH;IACA,OAAOF,IAAI;EACb,CAAC,EAAEH,KAAK,CAAC;AACX,CAAC;AAED,OAAO,SAASO,QAAQA,CAACC,IAAI,EAAE;EAC7B,OAAOA,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,CAACjC,KAAK,CAACC,OAAO,CAACgC,IAAI,CAAC;AACjE;AAEA,OAAO,SAASC,UAAUA,CAACC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAGC,OAAO,EAAE;EAClD,KAAK,MAAMC,MAAM,IAAID,OAAO,EAAE;IAC5B,IAAIJ,QAAQ,CAACK,MAAM,CAAC,EAAE;MACpB,KAAK,MAAMtD,GAAG,IAAIsD,MAAM,EAAE;QAExB,IAAItD,GAAG,KAAK,WAAW,IAAIA,GAAG,KAAK,aAAa,EAAE;QAClD,IAAI,CAACH,MAAM,CAAC0D,SAAS,CAACC,cAAc,CAACC,IAAI,CAACH,MAAM,EAAEtD,GAAG,CAAC,EAAE;QACxD,IAAI,CAACiD,QAAQ,CAACG,MAAM,CAAC,EAAE;QAEvB,IAAIH,QAAQ,CAACK,MAAM,CAACtD,GAAG,CAAC,CAAC,EAAE;UACzB,IAAI,CAACiD,QAAQ,CAACG,MAAM,CAACpD,GAAG,CAAC,CAAC,EAAE;YAC1BoD,MAAM,CAACpD,GAAG,CAAC,GAAG,CAAC,CAAC;UAClB;UACAmD,UAAU,CAACC,MAAM,CAACpD,GAAG,CAAC,EAAEsD,MAAM,CAACtD,GAAG,CAAC,CAAC;QACtC,CAAC,MAAM;UACLoD,MAAM,CAACpD,GAAG,CAAC,GAAGsD,MAAM,CAACtD,GAAG,CAAC;QAC3B;MACF;IACF;EACF;EAEA,OAAOoD,MAAM;AACf;AAGA,OAAO,MAAMM,MAAM,GAAIzD,KAAK,IAAK;EAC/B,IACEA,KAAK,KAAK,IAAI,IACd,OAAOA,KAAK,KAAK,WAAW,KAC3B0D,MAAM,CAAC1D,KAAK,CAAC,KAAK,MAAM,IAAI0D,MAAM,CAAC1D,KAAK,CAAC,KAAK,GAAG,CAAC,EACnD;IACA,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd,CAAC;AAED,OAAO,MAAM2D,0BAA0B,GAAGA,CACxCC,GAAG,EACHC,SAAS,EACTC,eAAe,KACZ;EACH,IAAIC,GAAG,GAAGC,SAAS;EAEnB,MAAMC,WAAW,GAAAvC,aAAA,CAAAA,aAAA,KACVoC,eAAe,IAAIA,eAAe,CAACI,KAAK,IAAK,CAAC,CAAC,GACjDJ,eAAe,CACnB;EAGD,IAAIG,WAAW,IAAIA,WAAW,CAACzE,UAAU,IAAIyE,WAAW,CAACC,KAAK,EAAE;IAC9D,MAAMC,aAAa,GAAGF,WAAW,CAACC,KAAK,CAACC,aAAa;IACrD,IAAIA,aAAa,EAAE;MACjB,IAAI;QAEF,MAAMC,OAAO,GAAA1C,aAAA,KAASyC,aAAa,CAACC,OAAO,IAAI,CAAC,CAAC,CAAG;QAGpD,MAAM5E,UAAU,GAAAkC,aAAA,KAAQuC,WAAW,CAACzE,UAAU,CAAE;QAChD,KAAK,MAAMoB,CAAC,IAAIpB,UAAU,EAAE;UAC1B,IAAI,QAAQ,CAACqB,IAAI,CAACD,CAAC,CAAC,EAAE;YACpBwD,OAAO,CAACV,MAAM,CAAC9C,CAAC,CAAC,CAACyD,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,GAAG7E,UAAU,CAACoB,CAAC,CAAC;UAC1D;QACF;QAGA,KAAK,MAAMA,CAAC,IAAIwD,OAAO,EAAE;UACvB,IAAIH,WAAW,CAACC,KAAK,CAACC,aAAa,CAACC,OAAO,EAAE;YAC3CH,WAAW,CAACC,KAAK,CAACC,aAAa,CAACC,OAAO,CAACxD,CAAC,CAAC,GAAGwD,OAAO,CAACxD,CAAC,CAAC;UACzD;UACA,IACEqD,WAAW,CAACC,KAAK,CAACf,MAAM,IACxBc,WAAW,CAACC,KAAK,CAACf,MAAM,CAACiB,OAAO,EAChC;YACAH,WAAW,CAACC,KAAK,CAACf,MAAM,CAACiB,OAAO,CAACxD,CAAC,CAAC,GAAGwD,OAAO,CAACxD,CAAC,CAAC;UAClD;QACF;MACF,CAAC,CAAC,OAAOnC,CAAC,EAAE;QACVlB,IAAI,CAAC,4BAA4B,EAAEkB,CAAC,CAAC;MACvC;IACF;EACF;EAEA,MAAMa,KAAK,GAAIsE,GAAG,IAAIA,GAAG,CAACtE,KAAK,IAAKsE,GAAG;EAGvC,IAAIC,SAAS,CAACrC,QAAQ,CAAC,GAAG,CAAC,EAAE;IAC3B,IAAI,OAAOlC,KAAK,CAACuE,SAAS,CAAC,KAAK,UAAU,EAAE;MAC1C,MAAMS,CAAC,GAAGhF,KAAK,CAACuE,SAAS,CAAC,CAACU,KAAK,CAACX,GAAG,EAAE,CAACK,WAAW,CAAC,CAAC;MACpD,IAAI,OAAOK,CAAC,KAAK,WAAW,EAAE;QAC5BP,GAAG,GAAGO,CAAC;MACT;IACF;IAGAT,SAAS,GAAGW,WAAW,CAACX,SAAS,CAAC;IAClC,IAAI,OAAOvE,KAAK,CAACuE,SAAS,CAAC,KAAK,UAAU,EAAE;MAC1C,MAAMS,CAAC,GAAGhF,KAAK,CAACuE,SAAS,CAAC,CAACU,KAAK,CAACX,GAAG,EAAE,CAACK,WAAW,CAAC,CAAC;MACpD,IAAI,OAAOK,CAAC,KAAK,WAAW,EAAE;QAC5BP,GAAG,GAAGO,CAAC;MACT;IACF;EACF,CAAC,MAAM;IACL,IAAI,OAAOhF,KAAK,CAACuE,SAAS,CAAC,KAAK,UAAU,EAAE;MAC1C,MAAMS,CAAC,GAAGhF,KAAK,CAACuE,SAAS,CAAC,CAACU,KAAK,CAACX,GAAG,EAAE,CAACK,WAAW,CAAC,CAAC;MACpD,IAAI,OAAOK,CAAC,KAAK,WAAW,EAAE;QAC5BP,GAAG,GAAGO,CAAC;MACT;IACF;IAGAT,SAAS,GAAGY,WAAW,CAACZ,SAAS,CAAC;IAClC,IAAI,OAAOvE,KAAK,CAACuE,SAAS,CAAC,KAAK,UAAU,EAAE;MAC1C,MAAMS,CAAC,GAAGhF,KAAK,CAACuE,SAAS,CAAC,CAACU,KAAK,CAACX,GAAG,EAAE,CAACK,WAAW,CAAC,CAAC;MACpD,IAAI,OAAOK,CAAC,KAAK,WAAW,EAAE;QAC5BP,GAAG,GAAGO,CAAC;MACT;IACF;EACF;EAEA,OAAOP,GAAG;AACZ,CAAC;AAGD,OAAO,MAAMS,WAAW,GAAIE,CAAC,IAC3BA,CAAC,CACEC,KAAK,CAAC,IAAI,CAAC,CACXzC,MAAM,CACL,CAAC0C,GAAG,EAAEC,GAAG,EAAEjE,CAAC,KACVgE,GAAG,IACFhE,CAAC,KAAK,CAAC,GACJiE,GAAG,GACHA,GAAG,CAACR,OAAO,CACT,YAAY,EACZ,CAACS,EAAE,EAAEC,EAAE,EAAEC,EAAE,KAAKD,EAAE,CAACE,WAAW,CAAC,CAAC,GAAGD,EAAE,CAACE,WAAW,CAAC,CACpD,CAAC,CAAC,EACR,EACF,CAAC;AAGL,OAAO,MAAMC,YAAY,GAAIT,CAAC,IAC5BA,CAAC,CACEC,KAAK,CAAC,IAAI,CAAC,CACXzC,MAAM,CACL,CAAC0C,GAAG,EAAEC,GAAG,KACPD,GAAG,GACHC,GAAG,CAACR,OAAO,CACT,YAAY,EACZ,CAACS,EAAE,EAAEC,EAAE,EAAEC,EAAE,KAAKD,EAAE,CAACE,WAAW,CAAC,CAAC,GAAGD,EAAE,CAACE,WAAW,CAAC,CACpD,CAAC,EACH,EACF,CAAC;AAGL,OAAO,MAAMT,WAAW,GAAIW,GAAG,IAC7BA,GAAG,CAACf,OAAO,CAAC,UAAU,EAAGgB,MAAM,IAAK,IAAIA,MAAM,EAAE,CAAC,CAACH,WAAW,CAAC,CAAC;AAGjE,OAAO,MAAMI,WAAW,GAAIF,GAAG,IAC7BA,GAAG,CAACf,OAAO,CAAC,UAAU,EAAGgB,MAAM,IAAK,IAAIA,MAAM,EAAE,CAAC,CAACH,WAAW,CAAC,CAAC;AAEjE,OAAO,SAASK,aAAaA,CAACH,GAAG,EAAE;EACjC,OAAO,OAAOA,GAAG,KAAK,QAAQ,GAC1BA,GAAG,CACAF,WAAW,CAAC,CAAC,CACbP,KAAK,CAAC,EAAE,CAAC,CACTrD,GAAG,CAAC,CAACkE,IAAI,EAAEC,KAAK,EAAEC,GAAG,KACpBD,KAAK,KAAK,CAAC,IAAIC,GAAG,CAACD,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,IAAIC,GAAG,CAACD,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,GAC3DD,IAAI,CAACP,WAAW,CAAC,CAAC,GAClBO,IACN,CAAC,CACAlD,IAAI,CAAC,EAAE,CAAC,GACX8C,GAAG;AACT;AASA,OAAO,MAAMO,kBAAkB,GAAGA,CAACC,cAAc,EAAEC,SAAS,EAAEC,OAAO,KACnE,IAAIC,uBAAuB,CAACH,cAAc,EAAEC,SAAS,EAAEC,OAAO,CAAC;AAGjE,OAAO,MAAMC,uBAAuB,CAAC;EACnCC,WAAWA,CAACJ,eAAc,EAAEC,UAAS,EAAEC,OAAO,GAAG,CAAC,CAAC,EAAE;IAAAG,eAAA,4BAkEjC,CAAC;MAAE/B,KAAK;MAAE0B;IAAe,CAAC,EAAEC,SAAS,GAAG,IAAI,KAAK;MACnE,IAAI;QACF,MAAMK,cAAc,GAAGhC,KAAK,CAACf,MAAM;QAInC,IACE,CAAA+C,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEC,OAAO,MAAK,MAAM,KACjCjC,KAAK,CAACkC,KAAK,GAAG/H,QAAQ,CAACE,eAAe,CAAC8H,WAAW,GAAG,EAAE,IACtDnC,KAAK,CAACoC,KAAK,GAAGjI,QAAQ,CAACE,eAAe,CAACgI,YAAY,GAAG,EAAE,CAAC,EAC3D;UACA;QACF;QAGA,IAAIC,mBAAmB,CAACN,cAAc,CAAC,EAAE;UACvC;QACF;QAGA,KAAK,IAAItF,CAAC,GAAG,CAAC,EAAE6F,IAAI,EAAEC,CAAC,GAAGd,cAAc,CAACzE,MAAM,EAAEP,CAAC,GAAG8F,CAAC,EAAE,EAAE9F,CAAC,EAAE;UAI3D,MAAM+F,aAAa,GACjBf,cAAc,CAAChF,CAAC,CAAC,IAAI,SAAS,IAAIgF,cAAc,CAAChF,CAAC,CAAC,GAC/CgF,cAAc,CAAChF,CAAC,CAAC,CAACgG,OAAO,GACzBhB,cAAc,CAAChF,CAAC,CAAC;UAEvB6F,IAAI,GAAGP,cAAc;UACrB,IAAI,CAACN,cAAc,CAAChF,CAAC,CAAC,EAAE;YACtB;UACF;UACA,GAAG;YACD,IAAI6F,IAAI,KAAKE,aAAa,EAAE;cAC1B;YACF;YACAF,IAAI,GAAGA,IAAI,IAAIA,IAAI,CAACI,UAAU;UAChC,CAAC,QAAQJ,IAAI;QACf;QAEA,IAAI,OAAOZ,SAAS,KAAK,UAAU,EAAE;UACnCA,SAAS,CAAC,CAAC;QACb;MACF,CAAC,CAAC,OAAOpH,CAAC,EAAE;QACVlB,IAAI,CAACkB,CAAC,CAAC;MACT;IACF,CAAC;IAhHC,IACE,CAAC,IAAI,CAACqI,kBAAkB,IACxB,OAAOzI,QAAQ,KAAK,WAAW,IAC/B,OAAOM,MAAM,KAAK,WAAW,EAC7B;MACA,IAAI,CAACqC,KAAK,CAACC,OAAO,CAAC2E,eAAc,CAAC,EAAE;QAClCA,eAAc,GAAG,CAACA,eAAc,CAAC;MACnC;MACA,IAAI,CAACkB,kBAAkB,GAAI5C,KAAK,IAAK;QACnC,IAAI,CAAC6C,iBAAiB,CACpB;UACE7C,KAAK;UACL0B,cAAc,EAAdA;QACF,CAAC,EACD,MAAM,OAAOC,UAAS,KAAK,UAAU,IAAIA,UAAS,CAAC;UAAE3B;QAAM,CAAC,CAC9D,CAAC;MACH,CAAC;MACD7F,QAAQ,CAACe,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC0H,kBAAkB,CAAC;MAE/D,IAAI,CAACE,eAAe,GAAI9C,KAAK,IAAK;QAChC,MAAM+C,OAAO,GAAG5J,OAAO,CAAC6G,KAAK,CAAC;QAC9B,IAAI+C,OAAO,KAAK,KAAK,EAAE;UACrBtI,MAAM,CAACO,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC8H,eAAe,CAAC;UAC3D,IAAI,OAAOnB,UAAS,KAAK,UAAU,EAAE;YACnCA,UAAS,CAAC;cAAE3B;YAAM,CAAC,CAAC;UACtB;QACF;MACF,CAAC;MACDvF,MAAM,CAACS,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC4H,eAAe,CAAC;MAGxD,IAAIlB,OAAO,CAACoB,YAAY,EAAE;QAExB,IAAI,CAACC,aAAa,GAAIjD,KAAK,IAAK;UAC9B,MAAM+C,OAAO,GAAG5J,OAAO,CAAC6G,KAAK,CAAC;UAC9B,IACE4B,OAAO,CAACoB,YAAY,CAAC1F,QAAQ,CAACyF,OAAO,CAAC,IACtC,OAAO,IAAI,CAACH,kBAAkB,KAAK,UAAU,EAC7C;YACA,IAAI,CAACA,kBAAkB,CAAC5C,KAAK,EAAE,MAAM;cACnC,IAAI,IAAI,CAACiD,aAAa,EACpBxI,MAAM,CAACO,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACiI,aAAa,CAAC;YAC3D,CAAC,CAAC;UACJ;QACF,CAAC;QACDxI,MAAM,CAACS,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC+H,aAAa,CAAC;MACtD;IACF;EACF;EAEAC,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAACN,kBAAkB,IAAI,OAAOzI,QAAQ,KAAK,WAAW,EAAE;MAC9DA,QAAQ,CAACa,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC4H,kBAAkB,CAAC;MAClE,IAAI,CAACA,kBAAkB,GAAG,IAAI;IAChC;IACA,IAAI,IAAI,CAACE,eAAe,IAAI,OAAOrI,MAAM,KAAK,WAAW,EAAE;MACzDA,MAAM,CAACO,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC8H,eAAe,CAAC;MAC3D,IAAI,CAACA,eAAe,GAAG,IAAI;IAC7B;IACA,IAAI,IAAI,CAACG,aAAa,IAAI,OAAOxI,MAAM,KAAK,WAAW,EAAE;MACvDA,MAAM,CAACO,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACiI,aAAa,CAAC;MACvD,IAAI,CAACA,aAAa,GAAG,IAAI;IAC3B;EACF;AAkDF;AAEA,OAAO,MAAMX,mBAAmB,GAAIC,IAAI,IAAK;EAC3C,OACEA,IAAI,KACHA,IAAI,CAACY,YAAY,GAAGZ,IAAI,CAACa,YAAY,IACpCb,IAAI,CAACc,WAAW,GAAGd,IAAI,CAACe,WAAW,CAAC,IACtCC,oBAAoB,CAAChB,IAAI,CAAC;AAE9B,CAAC;AACD,MAAMgB,oBAAoB,GAAIhB,IAAI,IAAK;EACrC,MAAMiB,KAAK,GACT,OAAO/I,MAAM,KAAK,WAAW,GAAGA,MAAM,CAACgJ,gBAAgB,CAAClB,IAAI,CAAC,GAAG,CAAC,CAAC;EACpE,OAAO,cAAc,CAAC5F,IAAI,CACxB,CAAC6G,KAAK,CAACE,QAAQ,IAAI,EAAE,KAClBF,KAAK,CAACG,SAAS,IAAI,EAAE,CAAC,IACtBH,KAAK,CAACI,SAAS,IAAI,EAAE,CAC1B,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,YAAY,GAAGA,CAACC,MAAM,GAAG,KAAK,EAAE7G,MAAM,GAAG,CAAC,KACrD6G,MAAM,GACNtE,MAAM,CACJuE,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,MAAM,CAAC,CAAC,EAAEjH,MAAM,CAAC,GAAGkH,WAAW,EAC5D,CAAC,CAACC,KAAK,CAAC,CAACnH,MAAM,CAAC;AAClB,IAAIkH,WAAW,GAAG,CAAC;AAEnB,OAAO,MAAME,OAAO,GAAI7D,CAAC,IACvBhB,MAAM,CAACgB,CAAC,CAAC,CACNQ,WAAW,CAAC,CAAC,CACbb,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CACxBA,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CACxBA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAG5B,OAAO,MAAMmE,QAAQ,GAAGA,CAACC,MAAM,EAAEC,KAAK,KAAK;EACzC,IAAI,OAAOD,MAAM,CAACD,QAAQ,KAAK,UAAU,EAAE;IACzC,OAAOxH,KAAK,CAAC2H,IAAI,CAACF,MAAM,CAACD,QAAQ,CAACE,KAAK,CAAC,CAAC;EAC3C;EACA,MAAME,OAAO,GAAG,EAAE;EAClB,IAAI7J,KAAK;EACT,OAAQA,KAAK,GAAG2J,KAAK,CAACG,IAAI,CAACJ,MAAM,CAAC,EAAG;IACnCG,OAAO,CAACvG,IAAI,CAACtD,KAAK,CAAC;EACrB;EACA,OAAO6J,OAAO;AAChB,CAAC;AAWD,OAAO,MAAME,gBAAgB,GAAGA,CAACC,OAAO,EAAE5F,MAAM,EAAE6F,QAAQ,GAAG,IAAI,KAAK;EACpE,IAAI;IACF,MAAMC,QAAQ,GAAIF,OAAO,IAAK;MAC5B,IAAIC,QAAQ,EAAE;QACZ,MAAMhH,GAAG,GAAGgH,QAAQ,CAACD,OAAO,CAAC;QAC7B,IAAI/G,GAAG,EAAE;UACP,OAAO+G,OAAO;QAChB;MACF;MACA,OAAOA,OAAO,IAAIA,OAAO,KAAK5F,MAAM;IACtC,CAAC;IAED,IAAI8F,QAAQ,CAACF,OAAO,CAAC,EAAE;MACrB,OAAOA,OAAO;IAChB;IAEA,OACE,CAACA,OAAO,GAAGA,OAAO,IAAIA,OAAO,CAACG,aAAa,KAC3C,CAACD,QAAQ,CAACF,OAAO,CAAC,CACnB;EACH,CAAC,CAAC,OAAOtK,CAAC,EAAE,CAEZ;EAEA,OAAOsK,OAAO;AAChB,CAAC;AAGD,OAAO,MAAMI,cAAc,GAAGA,CAACC,GAAG,EAAEjG,MAAM,KAAK;EAC7C,MAAMkG,IAAI,GAAGD,GAAG,GAAGjG,MAAM;EACzB,OAAOkG,IAAI,GAAGlG,MAAM,GAAG,CAAC,GAAGiG,GAAG,GAAGC,IAAI,GAAGlG,MAAM,GAAGiG,GAAG,GAAGC,IAAI;AAC7D,CAAC;AAED,OAAO,MAAMC,2BAA2B,GAAIpD,cAAc,IAAK;EAC7D,OAAOvI,kBAAkB,CAAC,kBAAkB,EAAEuI,cAAc,CAAC;AAC/D,CAAC;AAED,OAAO,MAAMqD,kBAAkB,GAAGA,CAChCC,QAAQ,EACRC,SAAS,GAAGzF,SAAS,EACrB0F,aAAa,GAAG1F,SAAS,KACtB;EACH,IAAI,CAAChD,KAAK,CAACC,OAAO,CAACuI,QAAQ,CAAC,EAAE;IAC5BA,QAAQ,GAAG,CAACA,QAAQ,CAAC;EACvB;EAEA,MAAMG,OAAO,GAAIC,IAAI,IAAK;IACxB,IAAIxM,KAAK,CAACyM,cAAc,CAACD,IAAI,CAAC,EAAE;MAC9B,IAAIF,aAAa,EAAE;QACjBE,IAAI,GAAGF,aAAa,CAACE,IAAI,CAAC;MAC5B;MAEA,IAAI,OAAOA,IAAI,CAACtK,KAAK,CAACqC,QAAQ,KAAK,QAAQ,EAAE;QAC3CiI,IAAI,GAAGA,IAAI,CAACtK,KAAK,CAACqC,QAAQ,CAACmI,IAAI,CAAC,CAAC;MACnC,CAAC,MAAM,IAAI9I,KAAK,CAACC,OAAO,CAAC2I,IAAI,CAACtK,KAAK,CAACqC,QAAQ,CAAC,EAAE;QAC7CiI,IAAI,GAAGA,IAAI,CAACtK,KAAK,CAACqC,QAAQ,CAACO,MAAM,CAAC,CAAC0C,GAAG,EAAEgF,IAAI,KAAK;UAC/C,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;YAC5BA,IAAI,GAAGD,OAAO,CAACC,IAAI,EAAEH,SAAS,EAAEC,aAAa,CAAC;UAChD;UACA,IAAI,OAAOE,IAAI,KAAK,QAAQ,EAAE;YAC5BhF,GAAG,GAAG,CAACA,GAAG,IAAI6E,SAAS,IAAI,EAAE,CAAC,GAAGG,IAAI,EAAEE,IAAI,CAAC,CAAC;UAC/C;UACA,OAAOlF,GAAG;QACZ,CAAC,EAAE,EAAE,CAAC;MACR,CAAC,MAAM;QACL,OAAO,IAAI;MACb;IACF;IAEA,OAAOgF,IAAI;EACb,CAAC;EAED,OAAOJ,QAAQ,CACZlI,GAAG,CAAEsI,IAAI,IAAKD,OAAO,CAACC,IAAI,CAAC,CAAC,CAC5B9H,MAAM,CAACC,OAAO,CAAC,CACfO,IAAI,CAACmH,SAAS,CAAC,CACfK,IAAI,CAAC,CAAC;AACX,CAAC;AAED,OAAO,SAASC,wBAAwBA,CAACC,MAAM,EAAEC,KAAK,EAAE;EACtD,OAAOD,MAAM,GAAGC,KAAK,GAAG,IAAI;AAC9B;AAEA,OAAO,SAASC,cAAcA,CAACF,MAAM,EAAE;EACrC,OACEA,MAAM,IAAIA,MAAM,KAAK,OAAO,IAAIA,MAAM,KAAK,MAAM,IAAIA,MAAM,KAAK,MAAM;AAE1E;AAEA,OAAO,SAASG,iBAAiBA,CAAC,GAAG5K,MAAM,EAAE;EAC3C,OAAO6K,aAAa,CAAC,iBAAiB,EAAE7K,MAAM,CAAC;AACjD;AACA,OAAO,SAAS8K,kBAAkBA,CAAC,GAAG9K,MAAM,EAAE;EAC5C,OAAO6K,aAAa,CAAC,kBAAkB,EAAE7K,MAAM,CAAC;AAClD;AACA,OAAO,SAAS+K,cAAcA,CAAC,GAAG/K,MAAM,EAAE;EACxC,OAAO6K,aAAa,CAAC,cAAc,EAAE7K,MAAM,CAAC;AAC9C;AACA,SAAS6K,aAAaA,CAACG,IAAI,EAAEhL,MAAM,EAAE;EACnCA,MAAM,GAAGA,MAAM,CAAC+B,GAAG,CAAEuD,GAAG,IAAK;IAC3B,IAAI7D,KAAK,CAACC,OAAO,CAAC4D,GAAG,CAAC,EAAE;MACtB,OAAOA,GAAG,CAACvC,IAAI,CAAC,GAAG,CAAC;IACtB;IACA,IAAIuC,GAAG,IAAItF,MAAM,CAACiC,QAAQ,CAACqD,GAAG,CAAC0F,IAAI,CAAC,CAAC,EAAE;MACrC,OAAO,IAAI;IACb;IACA,IAAI1F,GAAG,IAAI,OAAOA,GAAG,CAAC0F,IAAI,CAAC,KAAK,WAAW,EAAE;MAC3C1F,GAAG,GAAGA,GAAG,CAAC0F,IAAI,CAAC;IACjB;IACA,IAAI,OAAO1F,GAAG,KAAK,QAAQ,EAAE;MAC3BA,GAAG,GAAG,IAAI;IACZ;IACA,OAAOA,GAAG;EACZ,CAAC,CAAC;EACFtF,MAAM,GAAGA,MAAM,CAACuC,MAAM,CAACC,OAAO,CAAC,CAACO,IAAI,CAAC,GAAG,CAAC;EACzC,IAAI/C,MAAM,KAAK,EAAE,EAAE;IACjBA,MAAM,GAAGyE,SAAS;EACpB;EACA,OAAOzE,MAAM;AACf;AAEA,OAAO,SAASiL,qBAAqBA,CAAC7I,QAAQ,EAAE8I,IAAI,EAAE;EACpD,IAAI,CAACzJ,KAAK,CAACC,OAAO,CAACU,QAAQ,CAAC,EAAE;IAC5BA,QAAQ,GAAG,CAACA,QAAQ,CAAC;EACvB;EAEA,IAAI+I,MAAM,GAAG,IAAI;EACjB/I,QAAQ,CAACgJ,IAAI,CAAE9F,GAAG,IAAK;IACrB,IAAIA,GAAG,IAAIA,GAAG,CAACvF,KAAK,IAAIuF,GAAG,CAACvF,KAAK,CAACqC,QAAQ,EAAE;MAC1C,MAAMK,GAAG,GAAGwI,qBAAqB,CAAC3F,GAAG,CAACvF,KAAK,CAACqC,QAAQ,EAAE8I,IAAI,CAAC;MAC3D,IAAIzI,GAAG,EAAE;QACP,OAAQ0I,MAAM,GAAG1I,GAAG;MACtB;IACF;IACA,IAAI5E,KAAK,CAACyM,cAAc,CAAChF,GAAG,CAAC,IAAI4F,IAAI,CAAC5F,GAAG,CAAC,EAAE;MAC1C,OAAQ6F,MAAM,GAAG7F,GAAG;IACtB;IACA,OAAO,IAAI;EACb,CAAC,CAAC;EAEF,OAAO6F,MAAM;AACf;AAEA,OAAO,SAASE,gBAAgBA,CAACxF,GAAG,EAAE;EACpC,OAAOA,GAAG,CAACf,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC;AACtD;AAEA,OAAO,SAASwG,oBAAoBA,CAAChI,MAAM,EAAE;EAC3CjD,MAAM,CAACmD,IAAI,CAACF,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC/C,OAAO,CAAEC,GAAG,IAAK;IACzC,IAAI8C,MAAM,CAAC9C,GAAG,CAAC,KAAKiE,SAAS,EAAE;MAC7B,OAAOnB,MAAM,CAAC9C,GAAG,CAAC;IACpB;EACF,CAAC,CAAC;EACF,OAAO8C,MAAM;AACf","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"component-helper.js","names":["React","keycode","whatInput","warn","getPreviousSibling","init","defineNavigator","InteractionInvalidation","extendPropsWithContext","extendPropsWithContextInClassComponent","assignPropsWithContext","filterProps","specificKeys","validateDOMAttributes","props","params","attributes","attr","JSON","parse","Object","entries","forEach","key","value","assign","disabled","space","top","right","bottom","left","no_collapse","innerSpace","tabindex","tabIndex","i","test","extendGracefully","objects","first","keepRef","shift","reduce","acc1","object","acc2","keys","length","isObject","item","Array","isArray","extendDeep","target","sources","source","prototype","hasOwnProperty","call","isTrue","String","dispatchCustomElementEvent","src","eventName","eventObjectOrig","undefined","ret","eventObject","_objectSpread","event","currentTarget","dataset","replace","e","includes","r","apply","toCamelCase","toSnakeCase","s","split","acc","cur","g0","g1","g2","toUpperCase","toLowerCase","toPascalCase","str","letter","toKebabCase","toCapitalized","map","char","index","arr","join","makeUniqueId","prefix","Math","random","toString","substr","idIncrement","slice","slugify","matchAll","string","regex","from","matches","match","exec","push","isChildOfElement","element","callback","contains","res","parentElement","roundToNearest","num","diff","getClosestScrollViewElement","currentElement","convertJsxToString","elements","separator","transformWord","process","word","isValidElement","children","trim","filter","Boolean","convertStatusToStateOnly","status","state","getStatusState","combineLabelledBy","combineAriaBy","combineDescribedBy","combineDetails","type","findElementInChildren","find","result","some","escapeRegexChars","removeUndefinedProps"],"sources":["../../../src/shared/component-helper.ts"],"sourcesContent":["/**\n * Component helpers\n *\n */\n\nimport React from 'react'\n\nimport keycode from './keycode'\nimport whatInput from 'what-input'\nimport { warn } from './helpers'\nimport { getPreviousSibling } from './helpers/getPreviousSibling'\nimport { init } from './Eufemia'\nimport { defineNavigator } from './legacy/component-helper-legacy'\n\nexport * from './legacy/component-helper-legacy'\nexport { InteractionInvalidation } from './helpers/InteractionInvalidation'\nexport {\n extendPropsWithContext,\n extendPropsWithContextInClassComponent,\n} from './helpers/extendPropsWithContext'\nexport { assignPropsWithContext } from './helpers/assignPropsWithContext'\nexport { filterProps } from './helpers/filterProps'\n\nexport { keycode, getPreviousSibling, warn }\n\ninit()\n\n// run component helper functions\nwhatInput.specificKeys([9])\ndefineNavigator()\n\nexport const validateDOMAttributes = (props, params) => {\n // if there is an \"attributes\" prop, prepare these\n // mostly used for prop example usage\n if (props && props.attributes) {\n let attr = props.attributes\n if (attr) {\n if (attr[0] === '{') {\n attr = JSON.parse(attr)\n }\n if (attr && typeof attr === 'object') {\n Object.entries(attr).forEach(([key, value]) => {\n Object.assign(params, { [key]: value })\n })\n }\n delete params.attributes\n }\n }\n\n // remove disabled, in case it is false (this is for web components support)\n if (params.disabled === null || params.disabled === 'false') {\n delete params.disabled\n }\n if (typeof params.space !== 'undefined') {\n delete params.space\n }\n if (typeof params.top !== 'undefined') {\n delete params.top\n }\n if (typeof params.right !== 'undefined') {\n delete params.right\n }\n if (typeof params.bottom !== 'undefined') {\n delete params.bottom\n }\n if (typeof params.left !== 'undefined') {\n delete params.left\n }\n if (typeof params.no_collapse !== 'undefined') {\n delete params.no_collapse\n }\n if (typeof params.innerSpace !== 'undefined') {\n delete params.innerSpace\n }\n\n // in case disabled is a string, it's enabled, send it in as a true (this is for web components support)\n else if (params.disabled === 'true') {\n params.disabled = true\n }\n if (params.disabled === true) {\n params['aria-disabled'] = true\n }\n\n if (props && props.tabindex) {\n let tabIndex = props.tabindex\n if (tabIndex === 'off') {\n tabIndex = '-1'\n }\n params['tabIndex'] = tabIndex\n }\n\n // make sure we don't return a render prop as a DOM attribute\n if (params && typeof params === 'object') {\n for (const i in params) {\n if (\n // is React\n typeof params[i] === 'function' &&\n // only React Style props, like onClick are allowed\n !/(^[a-z]{1,}[A-Z]{1})/.test(i)\n ) {\n delete params[i]\n\n // filter out invalid attributes\n } else if (\n // we don't want NULL values\n params[i] === null ||\n // we don't want\n /[^a-z-]/i.test(i)\n // (typeof params[i] !== 'string' && /[^a-z-]/i.test(i))\n ) {\n delete params[i]\n }\n }\n }\n\n return params\n}\n\n/** @deprecated Can be removed in v11 */\nexport const extendGracefully = (...objects) => {\n let first = {}\n const keepRef = objects[0]\n\n if (keepRef === true || keepRef === false) {\n // remove settings value\n objects.shift()\n\n if (keepRef) {\n // by extracting the first, we keep the same main object reference\n first = objects.shift()\n }\n }\n\n return objects.reduce((acc1, object) => {\n if (object) {\n acc1 = Object.assign(\n acc1,\n Object.entries(object).reduce((acc2, [key, value]) => {\n if (value !== null) {\n // go recursively\n if (typeof value === 'object') {\n value = extendGracefully(acc1[key] || {}, value)\n if (Object.keys(value).length > 0) {\n acc2[key] = value\n }\n } else {\n acc2[key] = value\n }\n }\n return acc2\n }, {})\n )\n }\n return acc1\n }, first)\n}\n\nexport function isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item)\n}\n\nexport function extendDeep(target = {}, ...sources) {\n for (const source of sources) {\n if (isObject(source)) {\n for (const key in source) {\n // Prototype-polluting checks etc.\n if (key === '__proto__' || key === 'constructor') continue\n if (!Object.prototype.hasOwnProperty.call(source, key)) continue\n if (!isObject(target)) continue\n\n if (isObject(source[key])) {\n if (!isObject(target[key])) {\n target[key] = {}\n }\n extendDeep(target[key], source[key])\n } else {\n target[key] = source[key]\n }\n }\n }\n }\n\n return target\n}\n\n// check if value is \"truthy\"\nexport const isTrue = (value) => {\n if (\n value !== null &&\n typeof value !== 'undefined' &&\n (String(value) === 'true' || String(value) === '1')\n ) {\n return true\n }\n return false\n}\n\nexport const dispatchCustomElementEvent = (\n src,\n eventName,\n eventObjectOrig = undefined\n) => {\n let ret = undefined\n\n const eventObject = {\n ...((eventObjectOrig && eventObjectOrig.event) || {}),\n ...eventObjectOrig,\n }\n\n // distribute dataset like \"data-*\" to both currentTarget and target\n if (eventObject && eventObject.attributes && eventObject.event) {\n const currentTarget = eventObject.event.currentTarget\n if (currentTarget) {\n try {\n // 1. create new dataset, and copy if exists\n const dataset = { ...(currentTarget.dataset || {}) }\n\n // 2. copy in our attributes if they are of \"data-\" type\n const attributes = { ...eventObject.attributes }\n for (const i in attributes) {\n if (/^data-/.test(i)) {\n dataset[String(i).replace(/^data-/, '')] = attributes[i]\n }\n }\n\n // 3. and distribute them to the targets. Use the for method because of immutability\n for (const i in dataset) {\n if (eventObject.event.currentTarget.dataset) {\n eventObject.event.currentTarget.dataset[i] = dataset[i]\n }\n if (\n eventObject.event.target &&\n eventObject.event.target.dataset\n ) {\n eventObject.event.target.dataset[i] = dataset[i]\n }\n }\n } catch (e) {\n warn('Error on handling dataset:', e)\n }\n }\n }\n\n const props = (src && src.props) || src\n\n // call the default snake case event\n if (eventName.includes('_')) {\n if (typeof props[eventName] === 'function') {\n const r = props[eventName].apply(src, [eventObject])\n if (typeof r !== 'undefined') {\n ret = r\n }\n }\n\n // call Synthetic React event camelCase naming events\n eventName = toCamelCase(eventName)\n if (typeof props[eventName] === 'function') {\n const r = props[eventName].apply(src, [eventObject])\n if (typeof r !== 'undefined') {\n ret = r\n }\n }\n } else {\n if (typeof props[eventName] === 'function') {\n const r = props[eventName].apply(src, [eventObject])\n if (typeof r !== 'undefined') {\n ret = r\n }\n }\n\n // call (in future deprecated) event snake case naming events\n eventName = toSnakeCase(eventName)\n if (typeof props[eventName] === 'function') {\n const r = props[eventName].apply(src, [eventObject])\n if (typeof r !== 'undefined') {\n ret = r\n }\n }\n }\n\n return ret\n}\n\n// transform on_click to onClick\nexport const toCamelCase = (s) =>\n s\n .split(/_/g)\n .reduce(\n (acc, cur, i) =>\n acc +\n (i === 0\n ? cur\n : cur.replace(\n /(\\w)(\\w*)/g,\n (g0, g1, g2) => g1.toUpperCase() + g2.toLowerCase()\n )),\n ''\n )\n\n// transform my_component to MyComponent\nexport const toPascalCase = (s) =>\n s\n .split(/_/g)\n .reduce(\n (acc, cur) =>\n acc +\n cur.replace(\n /(\\w)(\\w*)/g,\n (g0, g1, g2) => g1.toUpperCase() + g2.toLowerCase()\n ),\n ''\n )\n\n// transform MyComponent to my_component\nexport const toSnakeCase = (str) =>\n str.replace(/\\B[A-Z]/g, (letter) => `_${letter}`).toLowerCase()\n\n// transform MyComponent to my-component\nexport const toKebabCase = (str) =>\n str.replace(/\\B[A-Z]/g, (letter) => `-${letter}`).toLowerCase()\n\nexport function toCapitalized(str) {\n return typeof str === 'string'\n ? str\n .toLowerCase()\n .split('')\n .map((char, index, arr) =>\n index === 0 || arr[index - 1] === ' ' || arr[index - 1] === '-'\n ? char.toUpperCase()\n : char\n )\n .join('')\n : str\n}\n\nexport const makeUniqueId = (prefix = 'id-', length = 8) =>\n prefix +\n String(\n Math.random().toString(36).substr(2, length) + idIncrement++\n ).slice(-length)\nlet idIncrement = 0\n\nexport const slugify = (s) =>\n String(s)\n .toLowerCase()\n .replace(/[^\\w\\s-]/g, '')\n .replace(/[\\s_-]+/g, '-')\n .replace(/^-+|-+$/g, '')\n\n// NB: in future we can use String.matchAll() instead\nexport const matchAll = (string, regex) => {\n if (typeof string.matchAll === 'function') {\n return Array.from(string.matchAll(regex))\n }\n const matches = []\n let match\n while ((match = regex.exec(string))) {\n matches.push(match)\n }\n return matches\n}\n\n/**\n * Check if an element exists in its children\n * If it finds it, the child \"element\" of target will be returned.\n *\n * @param {HTMLElement} element The DOM Element to find\n * @param {HTMLElement} target The DOM Element that should contain \"element\"\n * @param {function} callback (optional)\n * @returns {HTMLElement | null} Returns the found child of all existing dom elements inside of \"target\"\n */\nexport const isChildOfElement = (element, target, callback = null) => {\n try {\n const contains = (element) => {\n if (callback) {\n const res = callback(element)\n if (res) {\n return element\n }\n }\n return element && element === target\n }\n\n if (contains(element)) {\n return element\n }\n\n while (\n (element = element && element.parentElement) &&\n !contains(element)\n );\n } catch (e) {\n //\n }\n\n return element\n}\n\n// Round number to nearest target number\nexport const roundToNearest = (num, target) => {\n const diff = num % target\n return diff > target / 2 ? num - diff + target : num - diff\n}\n\nexport const getClosestScrollViewElement = (currentElement) => {\n return getPreviousSibling('.dnb-scroll-view', currentElement)\n}\n\nexport function convertJsxToString(\n elements: React.ReactNode | React.ReactNode[],\n separator: string = undefined,\n transformWord: (\n element: React.ReactElement\n ) => React.ReactElement<unknown> = undefined\n): string {\n if (!Array.isArray(elements)) {\n elements = [elements]\n }\n\n const process = (word: React.ReactNode) => {\n if (React.isValidElement(word)) {\n if (transformWord) {\n word = transformWord(word)\n }\n\n if (Array.isArray(word.props.children)) {\n word = word.props.children.reduce((acc, word) => {\n if (typeof word !== 'string') {\n word = process(word)\n }\n if (typeof word === 'string') {\n acc = (acc + (separator || '') + word).trim()\n }\n return acc\n }, '')\n } else if (word.props.children) {\n word = word.props.children\n if (typeof word !== 'string') {\n word = process(word)\n }\n if (typeof word === 'string') {\n word = word.trim()\n } else {\n return undefined\n }\n } else {\n return undefined\n }\n }\n\n return word\n }\n\n return Array.from(elements)\n .map((word) => process(word))\n .filter(Boolean)\n .join(separator)\n .trim()\n}\n\nexport function convertStatusToStateOnly(status, state) {\n return status ? state : null\n}\n\nexport function getStatusState(status) {\n return (\n status && status !== 'error' && status !== 'warn' && status !== 'info'\n )\n}\n\nexport function combineLabelledBy(...params) {\n return combineAriaBy('aria-labelledby', params)\n}\nexport function combineDescribedBy(...params) {\n return combineAriaBy('aria-describedby', params)\n}\nexport function combineDetails(...params) {\n return combineAriaBy('aria-details', params)\n}\nfunction combineAriaBy(type, params) {\n params = params.map((cur) => {\n if (Array.isArray(cur)) {\n return cur.join(' ')\n }\n if (cur && params.includes(cur[type])) {\n return null\n }\n if (cur && typeof cur[type] !== 'undefined') {\n cur = cur[type]\n }\n if (typeof cur !== 'string') {\n cur = null\n }\n return cur\n })\n params = params.filter(Boolean).join(' ')\n if (params === '') {\n params = undefined\n }\n return params\n}\n\nexport function findElementInChildren(children, find) {\n if (!Array.isArray(children)) {\n children = [children]\n }\n\n let result = null\n children.some((cur) => {\n if (cur && cur.props && cur.props.children) {\n const res = findElementInChildren(cur.props.children, find)\n if (res) {\n return (result = res)\n }\n }\n if (React.isValidElement(cur) && find(cur)) {\n return (result = cur)\n }\n return null\n })\n\n return result\n}\n\nexport function escapeRegexChars(str) {\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#]/g, '\\\\$&')\n}\n\nexport function removeUndefinedProps(object) {\n Object.keys(object || {}).forEach((key) => {\n if (object[key] === undefined) {\n delete object[key]\n }\n })\n return object\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -21,12 +21,11 @@ export declare function withCamelCaseProps<TBase, P>(Base: React.FunctionCompone
|
|
|
21
21
|
export declare function classWithCamelCaseProps<TBase extends React.ComponentClass>(Base: TBase): typeof Base;
|
|
22
22
|
/**
|
|
23
23
|
* Converts camel case props to snake case props.
|
|
24
|
-
*
|
|
25
|
-
* @template P - The type of the props object.
|
|
26
|
-
* @param {P} props - The props object to convert.
|
|
27
|
-
* @returns {P} - The converted props object.
|
|
28
24
|
*/
|
|
29
|
-
export declare function convertCamelCasePropsToSnakeCase<P>(props: P): P;
|
|
25
|
+
export declare function convertCamelCasePropsToSnakeCase<P>(props: P, validProperties?: Array<string> | ReadonlyArray<string>): P;
|
|
26
|
+
export type AssertNoMissing<T extends readonly string[], P extends Record<string, unknown>> = Exclude<Extract<keyof P, `${string}_${string}`>, T[number]> extends never ? T : never;
|
|
27
|
+
type KeysMatching<T, P extends string> = Extract<keyof T, P>;
|
|
28
|
+
export type KeysWithUnderscore<T> = KeysMatching<T, `${string}_${string}`>;
|
|
30
29
|
/**
|
|
31
30
|
* Convert recursively Types from snake_case to camelCase
|
|
32
31
|
*
|
|
@@ -43,9 +43,10 @@ export function classWithCamelCaseProps(Base) {
|
|
|
43
43
|
});
|
|
44
44
|
return Derived;
|
|
45
45
|
}
|
|
46
|
-
export function convertCamelCasePropsToSnakeCase(props) {
|
|
46
|
+
export function convertCamelCasePropsToSnakeCase(props, validProperties) {
|
|
47
47
|
const isFrozen = Object.isFrozen(props);
|
|
48
48
|
const newProps = isFrozen ? _objectSpread({}, props) : props;
|
|
49
|
+
const hasValidProperties = Array.isArray(validProperties);
|
|
49
50
|
for (const key in props) {
|
|
50
51
|
switch (key) {
|
|
51
52
|
case 'className':
|
|
@@ -54,7 +55,11 @@ export function convertCamelCasePropsToSnakeCase(props) {
|
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
if (/^[a-z]+[A-Z]/.test(key)) {
|
|
57
|
-
|
|
58
|
+
const name = toSnakeCase(key);
|
|
59
|
+
if (hasValidProperties && !(validProperties !== null && validProperties !== void 0 && validProperties.includes(name))) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
newProps[name] = props[key];
|
|
58
63
|
delete newProps[key];
|
|
59
64
|
}
|
|
60
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withCamelCaseProps.js","names":["React","toSnakeCase","withCamelCaseProps","Base","Component","Derived","props","createElement","convertCamelCasePropsToSnakeCase","Object","defineProperty","value","name","classWithCamelCaseProps","constructor","args","_defineProperty","componentDidMount","render","_prevProps","_elem","displayName","isFrozen","newProps","_objectSpread","key","test","freeze"],"sources":["../../../../src/shared/helpers/withCamelCaseProps.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport React from 'react'\nimport { toSnakeCase } from '../component-helper'\n\n/**\n * withCamelCaseProps is a HOC for function components\n * it will return a React Component where all snake_case props gets converted to camelCase\n *\n * Use the same for TypeScript types by using: ToCamelCase\n *\n * @param Base the original function or class\n * @returns extended function or class\n */\nexport function withCamelCaseProps<TBase, P>(\n Base: React.FunctionComponent<P> & TBase\n): typeof Base {\n const Component: React.ComponentType = Base\n\n const Derived = (props: P) => {\n return <Component {...convertCamelCasePropsToSnakeCase(props)} />\n }\n\n Object.defineProperty(Derived, 'name', {\n value: Base.name,\n })\n\n for (const name in Base) {\n Object.defineProperty(Derived, name, {\n value: Base[name],\n })\n }\n\n // @ts-ignore\n return Derived\n}\n\n/**\n * withCamelCaseProps is a HOC for classes\n * it will return a React Component where all snake_case props gets converted to camelCase\n *\n * Use the same for TypeScript types by using: ToCamelCase\n *\n * @param Base the original function or class\n * @returns extended function or class\n */\nexport function classWithCamelCaseProps<\n TBase extends React.ComponentClass,\n>(Base: TBase): typeof Base {\n const Component: React.ComponentClass = Base\n\n // Bug? https://github.com/microsoft/TypeScript/issues/37142\n // @ts-ignore\n class Derived extends Base {\n _prevProps: Record<string, unknown>\n _elem: React.ReactElement\n\n componentDidMount() {\n // ensures we do not run componentDidMount twice\n }\n\n render() {\n if (this.props !== this._prevProps) {\n this._prevProps = this.props\n this._elem = (\n // @ts-ignore\n <Component {...convertCamelCasePropsToSnakeCase(this.props)} />\n )\n }\n\n return this._elem\n }\n }\n\n Object.defineProperty(Derived, 'name', {\n value: Base.name,\n })\n\n Object.defineProperty(Derived, 'displayName', {\n value: Base.displayName || Base.name,\n })\n\n return Derived\n}\n\n/**\n * Converts camel case props to snake case props.\n
|
|
1
|
+
{"version":3,"file":"withCamelCaseProps.js","names":["React","toSnakeCase","withCamelCaseProps","Base","Component","Derived","props","createElement","convertCamelCasePropsToSnakeCase","Object","defineProperty","value","name","classWithCamelCaseProps","constructor","args","_defineProperty","componentDidMount","render","_prevProps","_elem","displayName","validProperties","isFrozen","newProps","_objectSpread","hasValidProperties","Array","isArray","key","test","includes","freeze"],"sources":["../../../../src/shared/helpers/withCamelCaseProps.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport React from 'react'\nimport { toSnakeCase } from '../component-helper'\n\n/**\n * withCamelCaseProps is a HOC for function components\n * it will return a React Component where all snake_case props gets converted to camelCase\n *\n * Use the same for TypeScript types by using: ToCamelCase\n *\n * @param Base the original function or class\n * @returns extended function or class\n */\nexport function withCamelCaseProps<TBase, P>(\n Base: React.FunctionComponent<P> & TBase\n): typeof Base {\n const Component: React.ComponentType = Base\n\n const Derived = (props: P) => {\n return <Component {...convertCamelCasePropsToSnakeCase(props)} />\n }\n\n Object.defineProperty(Derived, 'name', {\n value: Base.name,\n })\n\n for (const name in Base) {\n Object.defineProperty(Derived, name, {\n value: Base[name],\n })\n }\n\n // @ts-ignore\n return Derived\n}\n\n/**\n * withCamelCaseProps is a HOC for classes\n * it will return a React Component where all snake_case props gets converted to camelCase\n *\n * Use the same for TypeScript types by using: ToCamelCase\n *\n * @param Base the original function or class\n * @returns extended function or class\n */\nexport function classWithCamelCaseProps<\n TBase extends React.ComponentClass,\n>(Base: TBase): typeof Base {\n const Component: React.ComponentClass = Base\n\n // Bug? https://github.com/microsoft/TypeScript/issues/37142\n // @ts-ignore\n class Derived extends Base {\n _prevProps: Record<string, unknown>\n _elem: React.ReactElement\n\n componentDidMount() {\n // ensures we do not run componentDidMount twice\n }\n\n render() {\n if (this.props !== this._prevProps) {\n this._prevProps = this.props\n this._elem = (\n // @ts-ignore\n <Component {...convertCamelCasePropsToSnakeCase(this.props)} />\n )\n }\n\n return this._elem\n }\n }\n\n Object.defineProperty(Derived, 'name', {\n value: Base.name,\n })\n\n Object.defineProperty(Derived, 'displayName', {\n value: Base.displayName || Base.name,\n })\n\n return Derived\n}\n\n/**\n * Converts camel case props to snake case props.\n */\nexport function convertCamelCasePropsToSnakeCase<P>(\n props: P,\n validProperties?: Array<string> | ReadonlyArray<string>\n): P {\n const isFrozen = Object.isFrozen(props)\n const newProps = isFrozen ? { ...props } : props\n const hasValidProperties = Array.isArray(validProperties)\n\n for (const key in props) {\n switch (key) {\n case 'className': {\n continue\n }\n }\n\n if (/^[a-z]+[A-Z]/.test(key)) {\n const name = toSnakeCase(key)\n if (hasValidProperties && !validProperties?.includes(name)) {\n continue\n }\n newProps[name] = props[key]\n delete newProps[key]\n }\n }\n\n return isFrozen ? Object.freeze(newProps) : newProps\n}\n\nexport type AssertNoMissing<\n T extends readonly string[],\n P extends Record<string, unknown>,\n> = Exclude<\n Extract<keyof P, `${string}_${string}`>,\n T[number]\n> extends never\n ? T\n : never\ntype KeysMatching<T, P extends string> = Extract<keyof T, P>\nexport type KeysWithUnderscore<T> = KeysMatching<T, `${string}_${string}`>\n\n/**\n * Convert recursively Types from snake_case to camelCase\n *\n * Use it like so:\n * OriginalProps & ToCamelCase<OriginalProps>\n *\n * Disclaimer: Be careful using these with required props\n * - ToCamelCase makes the required snake_case props also required in camelCase\n * - ToCamelCasePartial removes required for the camelCase props\n * - ToCamelCaseFlat is like ToCamelCase, but it will not convert nested objects for performance boost\n * - ToCamelCasePartialFlat is like ToCamelCasePartial, but it will not convert nested objects for performance boost\n */\nexport type ToCamelCasePartial<T> = Partial<ToCamelCase<T>>\nexport type ToCamelCase<T> = T extends object\n ? {\n [K in keyof T as ConvertSnakeToCamelCase<K & string>]:\n | T[K]\n | ToCamelCase<T[K]>\n }\n : T\nexport type IncludeCamelCase<T> = Partial<T> & ToCamelCasePartial<T>\ntype ConvertSnakeToCamelCase<S extends string> =\n S extends `${infer T}_${infer U}`\n ? `${T}${Capitalize<ConvertSnakeToCamelCase<U>>}`\n : S\n\ntype ConvertObjectKeysToCamelCase<T> = {\n [K in keyof T as ConvertSnakeToCamelCase<K & string>]: T[K]\n}\nexport type ToCamelCaseFlat<T> = T extends object\n ? ConvertObjectKeysToCamelCase<T>\n : T\nexport type ToCamelCasePartialFlat<T> = Partial<ToCamelCaseFlat<T>>\n"],"mappings":";;;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,qBAAqB;AAWjD,OAAO,SAASC,kBAAkBA,CAChCC,IAAwC,EAC3B;EACb,MAAMC,SAA8B,GAAGD,IAAI;EAE3C,MAAME,OAAO,GAAIC,KAAQ,IAAK;IAC5B,OAAON,KAAA,CAAAO,aAAA,CAACH,SAAS,EAAKI,gCAAgC,CAACF,KAAK,CAAI,CAAC;EACnE,CAAC;EAEDG,MAAM,CAACC,cAAc,CAACL,OAAO,EAAE,MAAM,EAAE;IACrCM,KAAK,EAAER,IAAI,CAACS;EACd,CAAC,CAAC;EAEF,KAAK,MAAMA,IAAI,IAAIT,IAAI,EAAE;IACvBM,MAAM,CAACC,cAAc,CAACL,OAAO,EAAEO,IAAI,EAAE;MACnCD,KAAK,EAAER,IAAI,CAACS,IAAI;IAClB,CAAC,CAAC;EACJ;EAGA,OAAOP,OAAO;AAChB;AAWA,OAAO,SAASQ,uBAAuBA,CAErCV,IAAW,EAAe;EAC1B,MAAMC,SAA+B,GAAGD,IAAI;EAI5C,MAAME,OAAO,SAASF,IAAI,CAAC;IAAAW,YAAA,GAAAC,IAAA;MAAA,SAAAA,IAAA;MAAAC,eAAA;MAAAA,eAAA;IAAA;IAIzBC,iBAAiBA,CAAA,EAAG,CAEpB;IAEAC,MAAMA,CAAA,EAAG;MACP,IAAI,IAAI,CAACZ,KAAK,KAAK,IAAI,CAACa,UAAU,EAAE;QAClC,IAAI,CAACA,UAAU,GAAG,IAAI,CAACb,KAAK;QAC5B,IAAI,CAACc,KAAK,GAERpB,KAAA,CAAAO,aAAA,CAACH,SAAS,EAAKI,gCAAgC,CAAC,IAAI,CAACF,KAAK,CAAI,CAC/D;MACH;MAEA,OAAO,IAAI,CAACc,KAAK;IACnB;EACF;EAEAX,MAAM,CAACC,cAAc,CAACL,OAAO,EAAE,MAAM,EAAE;IACrCM,KAAK,EAAER,IAAI,CAACS;EACd,CAAC,CAAC;EAEFH,MAAM,CAACC,cAAc,CAACL,OAAO,EAAE,aAAa,EAAE;IAC5CM,KAAK,EAAER,IAAI,CAACkB,WAAW,IAAIlB,IAAI,CAACS;EAClC,CAAC,CAAC;EAEF,OAAOP,OAAO;AAChB;AAKA,OAAO,SAASG,gCAAgCA,CAC9CF,KAAQ,EACRgB,eAAuD,EACpD;EACH,MAAMC,QAAQ,GAAGd,MAAM,CAACc,QAAQ,CAACjB,KAAK,CAAC;EACvC,MAAMkB,QAAQ,GAAGD,QAAQ,GAAAE,aAAA,KAAQnB,KAAK,IAAKA,KAAK;EAChD,MAAMoB,kBAAkB,GAAGC,KAAK,CAACC,OAAO,CAACN,eAAe,CAAC;EAEzD,KAAK,MAAMO,GAAG,IAAIvB,KAAK,EAAE;IACvB,QAAQuB,GAAG;MACT,KAAK,WAAW;QAAE;UAChB;QACF;IACF;IAEA,IAAI,cAAc,CAACC,IAAI,CAACD,GAAG,CAAC,EAAE;MAC5B,MAAMjB,IAAI,GAAGX,WAAW,CAAC4B,GAAG,CAAC;MAC7B,IAAIH,kBAAkB,IAAI,EAACJ,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAES,QAAQ,CAACnB,IAAI,CAAC,GAAE;QAC1D;MACF;MACAY,QAAQ,CAACZ,IAAI,CAAC,GAAGN,KAAK,CAACuB,GAAG,CAAC;MAC3B,OAAOL,QAAQ,CAACK,GAAG,CAAC;IACtB;EACF;EAEA,OAAON,QAAQ,GAAGd,MAAM,CAACuB,MAAM,CAACR,QAAQ,CAAC,GAAGA,QAAQ;AACtD","ignoreList":[]}
|