@dnb/eufemia 10.25.0 → 10.26.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 +32 -0
- package/cjs/components/autocomplete/Autocomplete.js +9 -2
- package/cjs/components/autocomplete/Autocomplete.js.map +1 -1
- package/cjs/components/card/style/dnb-card.css +3 -0
- package/cjs/components/card/style/dnb-card.min.css +1 -1
- package/cjs/components/card/style/dnb-card.scss +4 -0
- package/cjs/components/input-masked/InputMaskedUtils.js +10 -7
- package/cjs/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/cjs/components/table/style/dnb-table.css +3 -0
- package/cjs/components/table/style/dnb-table.min.css +1 -1
- package/cjs/components/table/style/table-th.scss +4 -1
- package/cjs/components/textarea/Textarea.js +24 -17
- package/cjs/components/textarea/Textarea.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Context.d.ts +2 -1
- package/cjs/extensions/forms/DataContext/Context.js +1 -0
- package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
- package/cjs/extensions/forms/DataContext/Provider/Provider.js +4 -2
- package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/cjs/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +5 -7
- package/cjs/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/Boolean/Boolean.js +5 -8
- package/cjs/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/cjs/extensions/forms/Field/Composition/Composition.d.ts +6 -0
- package/cjs/extensions/forms/Field/Composition/Composition.js +19 -0
- package/cjs/extensions/forms/Field/Composition/Composition.js.map +1 -0
- package/cjs/extensions/forms/Field/Composition/index.d.ts +2 -0
- package/cjs/extensions/forms/Field/Composition/index.js +27 -0
- package/cjs/extensions/forms/Field/Composition/index.js.map +1 -0
- package/cjs/extensions/forms/Field/Currency/Currency.js +6 -4
- package/cjs/extensions/forms/Field/Currency/Currency.js.map +1 -1
- package/cjs/extensions/forms/Field/Date/Date.js +5 -7
- package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
- package/cjs/extensions/forms/Field/Email/Email.js +6 -10
- package/cjs/extensions/forms/Field/Email/Email.js.map +1 -1
- package/cjs/extensions/forms/Field/Expiry/Expiry.js +24 -12
- package/cjs/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +4 -6
- package/cjs/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/Number/Number.js +8 -7
- package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
- package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +5 -7
- package/cjs/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/Password/Password.js +5 -8
- package/cjs/extensions/forms/Field/Password/Password.js.map +1 -1
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +1 -1
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js +6 -5
- package/cjs/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -1
- package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +15 -16
- package/cjs/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js +6 -5
- package/cjs/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/cjs/extensions/forms/Field/String/String.js +9 -9
- package/cjs/extensions/forms/Field/String/String.js.map +1 -1
- package/cjs/extensions/forms/Field/Toggle/Toggle.js +6 -7
- package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/cjs/extensions/forms/Field/index.d.ts +1 -0
- package/cjs/extensions/forms/Field/index.js +7 -0
- package/cjs/extensions/forms/Field/index.js.map +1 -1
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js +3 -4
- package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/cjs/extensions/forms/Form/Element/style/dnb-forms-element.css +7 -0
- package/cjs/extensions/forms/Form/Element/style/dnb-forms-element.min.css +1 -0
- package/cjs/extensions/forms/Form/Element/style/dnb-forms-element.scss +9 -0
- package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js +5 -5
- package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
- package/cjs/extensions/forms/Form/SubmitIndicator/style/index.d.ts +1 -1
- package/cjs/extensions/forms/Form/SubmitIndicator/style/index.js +1 -1
- package/cjs/extensions/forms/Form/SubmitIndicator/style/index.js.map +1 -1
- package/cjs/extensions/forms/Form/data-context/useData.js +6 -3
- package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
- package/cjs/extensions/forms/Form/data-context/useError.d.ts +1 -0
- package/cjs/extensions/forms/Form/data-context/useError.js +13 -5
- package/cjs/extensions/forms/Form/data-context/useError.js.map +1 -1
- package/cjs/extensions/forms/Form/index.d.ts +1 -0
- package/cjs/extensions/forms/Form/index.js +7 -0
- package/cjs/extensions/forms/Form/index.js.map +1 -1
- package/cjs/extensions/forms/Value/BankAccountNumber/BankAccountNumber.js +4 -7
- package/cjs/extensions/forms/Value/BankAccountNumber/BankAccountNumber.js.map +1 -1
- package/cjs/extensions/forms/Value/Boolean/Boolean.js +4 -7
- package/cjs/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
- package/cjs/extensions/forms/Value/Date/Date.js +4 -7
- package/cjs/extensions/forms/Value/Date/Date.js.map +1 -1
- package/cjs/extensions/forms/Value/Email/Email.js +4 -7
- package/cjs/extensions/forms/Value/Email/Email.js.map +1 -1
- package/cjs/extensions/forms/Value/NationalIdentityNumber/NationalIdentityNumber.js +4 -7
- package/cjs/extensions/forms/Value/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/cjs/extensions/forms/Value/PhoneNumber/PhoneNumber.js +4 -7
- package/cjs/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
- package/cjs/extensions/forms/Wizard/Buttons/Buttons.js +33 -0
- package/cjs/extensions/forms/Wizard/Buttons/Buttons.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Buttons/index.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.d.ts +19 -0
- package/cjs/extensions/forms/{StepsLayout/StepsLayout.js → Wizard/Container/WizardContainer.js} +53 -45
- package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.d.ts +3 -0
- package/cjs/extensions/forms/{StepsLayout/StepsLayoutDocs.js → Wizard/Container/WizardContainerDocs.js} +8 -8
- package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Container/index.d.ts +2 -0
- package/cjs/extensions/forms/Wizard/Container/index.js +27 -0
- package/cjs/extensions/forms/Wizard/Container/index.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +17 -0
- package/cjs/extensions/forms/{StepsLayout/StepsContext.js → Wizard/Context/WizardContext.js} +7 -4
- package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Context/index.d.ts +2 -0
- package/cjs/extensions/forms/Wizard/Context/index.js +27 -0
- package/cjs/extensions/forms/Wizard/Context/index.js.map +1 -0
- package/cjs/extensions/forms/{StepsLayout → Wizard}/NextButton/NextButton.js +6 -6
- package/cjs/extensions/forms/Wizard/NextButton/NextButton.js.map +1 -0
- package/cjs/extensions/forms/Wizard/NextButton/index.js.map +1 -0
- package/cjs/extensions/forms/{StepsLayout → Wizard}/PreviousButton/PreviousButton.js +7 -7
- package/cjs/extensions/forms/Wizard/PreviousButton/PreviousButton.js.map +1 -0
- package/cjs/extensions/forms/Wizard/PreviousButton/index.js.map +1 -0
- package/cjs/extensions/forms/{StepsLayout → Wizard}/Step/Step.js +3 -3
- package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -0
- package/cjs/extensions/forms/Wizard/Step/index.js.map +1 -0
- package/cjs/extensions/forms/Wizard/hooks/useNextRouter.d.ts +7 -0
- package/cjs/extensions/forms/Wizard/hooks/useNextRouter.js +52 -0
- package/cjs/extensions/forms/Wizard/hooks/useNextRouter.js.map +1 -0
- package/cjs/extensions/forms/Wizard/hooks/useQueryLocator.d.ts +3 -0
- package/cjs/extensions/forms/Wizard/hooks/useQueryLocator.js +60 -0
- package/cjs/extensions/forms/Wizard/hooks/useQueryLocator.js.map +1 -0
- package/cjs/extensions/forms/Wizard/hooks/useReachRouter.d.ts +6 -0
- package/cjs/extensions/forms/Wizard/hooks/useReachRouter.js +56 -0
- package/cjs/extensions/forms/Wizard/hooks/useReachRouter.js.map +1 -0
- package/cjs/extensions/forms/Wizard/hooks/useReactRouter.d.ts +5 -0
- package/cjs/extensions/forms/Wizard/hooks/useReactRouter.js +47 -0
- package/cjs/extensions/forms/Wizard/hooks/useReactRouter.js.map +1 -0
- package/cjs/extensions/forms/Wizard/hooks/useStep.d.ts +5 -0
- package/cjs/extensions/forms/Wizard/hooks/useStep.js +30 -0
- package/cjs/extensions/forms/Wizard/hooks/useStep.js.map +1 -0
- package/cjs/extensions/forms/Wizard/index.d.ts +13 -0
- package/cjs/extensions/forms/Wizard/index.js +87 -0
- package/cjs/extensions/forms/Wizard/index.js.map +1 -0
- package/{extensions/forms/StepsLayout/style/dnb-steps-layout.css → cjs/extensions/forms/Wizard/style/dnb-wizard-layout.css} +10 -9
- package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -0
- package/{extensions/forms/StepsLayout/style/dnb-steps-layout.scss → cjs/extensions/forms/Wizard/style/dnb-wizard-layout.scss} +5 -4
- package/cjs/extensions/forms/Wizard/style/index.d.ts +5 -0
- package/cjs/extensions/forms/Wizard/style/index.js +4 -0
- package/cjs/extensions/forms/Wizard/style/index.js.map +1 -0
- package/cjs/extensions/forms/Wizard/style.js.map +1 -0
- package/cjs/extensions/forms/constants/countries.d.ts +1 -0
- package/cjs/extensions/forms/constants/countries.js.map +1 -1
- package/cjs/extensions/forms/constants/locales/en-GB.d.ts +99 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js +100 -0
- package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -0
- package/cjs/extensions/forms/constants/locales/en-US.d.ts +93 -0
- package/cjs/extensions/forms/constants/locales/en-US.js +25 -0
- package/cjs/extensions/forms/constants/locales/en-US.js.map +1 -0
- package/cjs/extensions/forms/constants/locales/index.d.ts +183 -0
- package/cjs/extensions/forms/constants/locales/index.js +18 -0
- package/cjs/extensions/forms/constants/locales/index.js.map +1 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +99 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js +100 -0
- package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -0
- package/cjs/extensions/forms/hooks/DataValueDocs.js +4 -4
- package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -1
- package/cjs/extensions/forms/hooks/useFieldProps.js +10 -7
- package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/cjs/extensions/forms/hooks/useLocale.d.ts +10 -0
- package/cjs/extensions/forms/hooks/useLocale.js +32 -0
- package/cjs/extensions/forms/hooks/useLocale.js.map +1 -0
- package/cjs/extensions/forms/index.d.ts +14 -1
- package/cjs/extensions/forms/index.js +15 -15
- package/cjs/extensions/forms/index.js.map +1 -1
- package/cjs/extensions/forms/style/dnb-forms.css +35 -26
- package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
- package/cjs/extensions/forms/types.d.ts +2 -0
- package/cjs/extensions/forms/types.js.map +1 -1
- package/cjs/shared/Context.d.ts +7 -6
- package/cjs/shared/Context.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 +0 -1
- package/cjs/shared/component-helper.js +1 -9
- package/cjs/shared/component-helper.js.map +1 -1
- package/cjs/shared/helpers/useSharedState.d.ts +3 -1
- package/cjs/shared/helpers/useSharedState.js.map +1 -1
- package/cjs/shared/locales/en-GB.d.ts +0 -51
- package/cjs/shared/locales/en-GB.js +3 -54
- package/cjs/shared/locales/en-GB.js.map +1 -1
- package/cjs/shared/locales/en-US.d.ts +0 -51
- package/cjs/shared/locales/en-US.js.map +1 -1
- package/cjs/shared/locales/index.d.ts +0 -102
- package/cjs/shared/locales/nb-NO.d.ts +0 -51
- package/cjs/shared/locales/nb-NO.js +3 -54
- package/cjs/shared/locales/nb-NO.js.map +1 -1
- package/cjs/shared/types.d.ts +3 -0
- package/cjs/shared/types.js.map +1 -1
- package/cjs/shared/useLocale.d.ts +8 -1
- package/cjs/shared/useLocale.js +24 -11
- package/cjs/shared/useLocale.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 +41 -26
- package/cjs/style/dnb-ui-components.min.css +3 -3
- package/cjs/style/dnb-ui-core.css +1 -1
- package/cjs/style/dnb-ui-core.min.css +1 -1
- package/cjs/style/dnb-ui-extensions.css +35 -26
- package/cjs/style/dnb-ui-extensions.min.css +1 -1
- package/cjs/style/dnb-ui-forms.css +35 -26
- package/cjs/style/dnb-ui-forms.min.css +1 -1
- package/cjs/style/dnb-ui-forms.scss +2 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +76 -52
- package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +35 -26
- package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +35 -26
- package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +76 -52
- package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +35 -26
- package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +35 -26
- package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-components.css +76 -52
- package/cjs/style/themes/theme-ui/ui-theme-components.min.css +3 -3
- package/cjs/style/themes/theme-ui/ui-theme-extensions.css +35 -26
- package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/cjs/style/themes/theme-ui/ui-theme-forms.css +35 -26
- package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- package/components/autocomplete/Autocomplete.js +9 -2
- package/components/autocomplete/Autocomplete.js.map +1 -1
- package/components/card/style/dnb-card.css +3 -0
- package/components/card/style/dnb-card.min.css +1 -1
- package/components/card/style/dnb-card.scss +4 -0
- package/components/input-masked/InputMaskedUtils.js +10 -7
- package/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/components/table/style/dnb-table.css +3 -0
- package/components/table/style/dnb-table.min.css +1 -1
- package/components/table/style/table-th.scss +4 -1
- package/components/textarea/Textarea.js +24 -17
- package/components/textarea/Textarea.js.map +1 -1
- package/es/components/autocomplete/Autocomplete.js +9 -2
- package/es/components/autocomplete/Autocomplete.js.map +1 -1
- package/es/components/card/style/dnb-card.css +3 -0
- package/es/components/card/style/dnb-card.min.css +1 -1
- package/es/components/card/style/dnb-card.scss +4 -0
- package/es/components/input-masked/InputMaskedUtils.js +10 -7
- package/es/components/input-masked/InputMaskedUtils.js.map +1 -1
- package/es/components/table/style/dnb-table.css +3 -0
- package/es/components/table/style/dnb-table.min.css +1 -1
- package/es/components/table/style/table-th.scss +4 -1
- package/es/components/textarea/Textarea.js +24 -17
- package/es/components/textarea/Textarea.js.map +1 -1
- package/es/extensions/forms/DataContext/Context.d.ts +2 -1
- package/es/extensions/forms/DataContext/Context.js +1 -0
- package/es/extensions/forms/DataContext/Context.js.map +1 -1
- package/es/extensions/forms/DataContext/Provider/Provider.js +4 -2
- package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/es/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +6 -9
- package/es/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
- package/es/extensions/forms/Field/Boolean/Boolean.js +5 -7
- package/es/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/es/extensions/forms/Field/Composition/Composition.d.ts +6 -0
- package/es/extensions/forms/Field/Composition/Composition.js +11 -0
- package/es/extensions/forms/Field/Composition/Composition.js.map +1 -0
- package/es/extensions/forms/Field/Composition/index.d.ts +2 -0
- package/es/extensions/forms/Field/Composition/index.js +3 -0
- package/es/extensions/forms/Field/Composition/index.js.map +1 -0
- package/es/extensions/forms/Field/Currency/Currency.js +4 -4
- package/es/extensions/forms/Field/Currency/Currency.js.map +1 -1
- package/es/extensions/forms/Field/Date/Date.js +6 -9
- package/es/extensions/forms/Field/Date/Date.js.map +1 -1
- package/es/extensions/forms/Field/Email/Email.js +6 -9
- package/es/extensions/forms/Field/Email/Email.js.map +1 -1
- package/es/extensions/forms/Field/Expiry/Expiry.js +25 -14
- package/es/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +5 -8
- package/es/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/es/extensions/forms/Field/Number/Number.js +8 -7
- package/es/extensions/forms/Field/Number/Number.js.map +1 -1
- package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +6 -9
- package/es/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
- package/es/extensions/forms/Field/Password/Password.js +5 -8
- package/es/extensions/forms/Field/Password/Password.js.map +1 -1
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +1 -1
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js +6 -5
- package/es/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -1
- package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +15 -15
- package/es/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
- package/es/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
- package/es/extensions/forms/Field/SelectCountry/SelectCountry.js +6 -5
- package/es/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/es/extensions/forms/Field/String/String.js +9 -9
- package/es/extensions/forms/Field/String/String.js.map +1 -1
- package/es/extensions/forms/Field/Toggle/Toggle.js +7 -9
- package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/es/extensions/forms/Field/index.d.ts +1 -0
- package/es/extensions/forms/Field/index.js +1 -0
- package/es/extensions/forms/Field/index.js.map +1 -1
- package/es/extensions/forms/FieldBlock/FieldBlock.js +3 -4
- package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/es/extensions/forms/Form/Element/style/dnb-forms-element.css +7 -0
- package/es/extensions/forms/Form/Element/style/dnb-forms-element.min.css +1 -0
- package/es/extensions/forms/Form/Element/style/dnb-forms-element.scss +9 -0
- package/es/extensions/forms/Form/SubmitButton/SubmitButton.js +3 -3
- package/es/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
- package/es/extensions/forms/Form/SubmitIndicator/style/index.d.ts +1 -1
- package/es/extensions/forms/Form/SubmitIndicator/style/index.js +1 -1
- package/es/extensions/forms/Form/SubmitIndicator/style/index.js.map +1 -1
- package/es/extensions/forms/Form/data-context/useData.js +7 -4
- package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
- package/es/extensions/forms/Form/data-context/useError.d.ts +1 -0
- package/es/extensions/forms/Form/data-context/useError.js +14 -6
- package/es/extensions/forms/Form/data-context/useError.js.map +1 -1
- package/es/extensions/forms/Form/index.d.ts +1 -0
- package/es/extensions/forms/Form/index.js +1 -0
- package/es/extensions/forms/Form/index.js.map +1 -1
- package/es/extensions/forms/Value/BankAccountNumber/BankAccountNumber.js +4 -6
- package/es/extensions/forms/Value/BankAccountNumber/BankAccountNumber.js.map +1 -1
- package/es/extensions/forms/Value/Boolean/Boolean.js +4 -6
- package/es/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
- package/es/extensions/forms/Value/Date/Date.js +4 -6
- package/es/extensions/forms/Value/Date/Date.js.map +1 -1
- package/es/extensions/forms/Value/Email/Email.js +4 -6
- package/es/extensions/forms/Value/Email/Email.js.map +1 -1
- package/es/extensions/forms/Value/NationalIdentityNumber/NationalIdentityNumber.js +4 -6
- package/es/extensions/forms/Value/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/es/extensions/forms/Value/PhoneNumber/PhoneNumber.js +4 -6
- package/es/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
- package/es/extensions/forms/Wizard/Buttons/Buttons.js +24 -0
- package/es/extensions/forms/Wizard/Buttons/Buttons.js.map +1 -0
- package/es/extensions/forms/Wizard/Buttons/index.js.map +1 -0
- package/es/extensions/forms/Wizard/Container/WizardContainer.d.ts +19 -0
- package/es/extensions/forms/{StepsLayout/StepsLayout.js → Wizard/Container/WizardContainer.js} +53 -45
- package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -0
- package/es/extensions/forms/Wizard/Container/WizardContainerDocs.d.ts +3 -0
- package/{extensions/forms/StepsLayout/StepsLayoutDocs.js → es/extensions/forms/Wizard/Container/WizardContainerDocs.js} +5 -5
- package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -0
- package/es/extensions/forms/Wizard/Container/index.d.ts +2 -0
- package/es/extensions/forms/Wizard/Container/index.js +3 -0
- package/es/extensions/forms/Wizard/Container/index.js.map +1 -0
- package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +17 -0
- package/es/extensions/forms/Wizard/Context/WizardContext.js +12 -0
- package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -0
- package/es/extensions/forms/Wizard/Context/index.d.ts +2 -0
- package/es/extensions/forms/Wizard/Context/index.js +3 -0
- package/es/extensions/forms/Wizard/Context/index.js.map +1 -0
- package/es/extensions/forms/{StepsLayout → Wizard}/NextButton/NextButton.js +6 -6
- package/es/extensions/forms/Wizard/NextButton/NextButton.js.map +1 -0
- package/es/extensions/forms/Wizard/NextButton/index.js.map +1 -0
- package/{extensions/forms/StepsLayout → es/extensions/forms/Wizard}/PreviousButton/PreviousButton.js +7 -7
- package/es/extensions/forms/Wizard/PreviousButton/PreviousButton.js.map +1 -0
- package/es/extensions/forms/Wizard/PreviousButton/index.js.map +1 -0
- package/{extensions/forms/StepsLayout → es/extensions/forms/Wizard}/Step/Step.js +3 -3
- package/es/extensions/forms/Wizard/Step/Step.js.map +1 -0
- package/es/extensions/forms/Wizard/Step/index.js.map +1 -0
- package/es/extensions/forms/Wizard/hooks/useNextRouter.d.ts +7 -0
- package/es/extensions/forms/Wizard/hooks/useNextRouter.js +42 -0
- package/es/extensions/forms/Wizard/hooks/useNextRouter.js.map +1 -0
- package/es/extensions/forms/Wizard/hooks/useQueryLocator.d.ts +3 -0
- package/es/extensions/forms/Wizard/hooks/useQueryLocator.js +51 -0
- package/es/extensions/forms/Wizard/hooks/useQueryLocator.js.map +1 -0
- package/es/extensions/forms/Wizard/hooks/useReachRouter.d.ts +6 -0
- package/es/extensions/forms/Wizard/hooks/useReachRouter.js +46 -0
- package/es/extensions/forms/Wizard/hooks/useReachRouter.js.map +1 -0
- package/es/extensions/forms/Wizard/hooks/useReactRouter.d.ts +5 -0
- package/es/extensions/forms/Wizard/hooks/useReactRouter.js +37 -0
- package/es/extensions/forms/Wizard/hooks/useReactRouter.js.map +1 -0
- package/es/extensions/forms/Wizard/hooks/useStep.d.ts +5 -0
- package/es/extensions/forms/Wizard/hooks/useStep.js +22 -0
- package/es/extensions/forms/Wizard/hooks/useStep.js.map +1 -0
- package/es/extensions/forms/Wizard/index.d.ts +13 -0
- package/es/extensions/forms/Wizard/index.js +14 -0
- package/es/extensions/forms/Wizard/index.js.map +1 -0
- package/{cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.css → es/extensions/forms/Wizard/style/dnb-wizard-layout.css} +10 -9
- package/es/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -0
- package/es/extensions/forms/{StepsLayout/style/dnb-steps-layout.scss → Wizard/style/dnb-wizard-layout.scss} +5 -4
- package/es/extensions/forms/Wizard/style/index.d.ts +5 -0
- package/es/extensions/forms/Wizard/style/index.js +1 -0
- package/es/extensions/forms/Wizard/style/index.js.map +1 -0
- package/es/extensions/forms/Wizard/style.js.map +1 -0
- package/es/extensions/forms/constants/countries.d.ts +1 -0
- package/es/extensions/forms/constants/countries.js.map +1 -1
- package/es/extensions/forms/constants/locales/en-GB.d.ts +99 -0
- package/es/extensions/forms/constants/locales/en-GB.js +93 -0
- package/es/extensions/forms/constants/locales/en-GB.js.map +1 -0
- package/es/extensions/forms/constants/locales/en-US.d.ts +93 -0
- package/es/extensions/forms/constants/locales/en-US.js +15 -0
- package/es/extensions/forms/constants/locales/en-US.js.map +1 -0
- package/es/extensions/forms/constants/locales/index.d.ts +183 -0
- package/es/extensions/forms/constants/locales/index.js +8 -0
- package/es/extensions/forms/constants/locales/index.js.map +1 -0
- package/es/extensions/forms/constants/locales/nb-NO.d.ts +99 -0
- package/es/extensions/forms/constants/locales/nb-NO.js +93 -0
- package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -0
- package/es/extensions/forms/hooks/DataValueDocs.js +4 -4
- package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -1
- package/es/extensions/forms/hooks/useFieldProps.js +10 -7
- package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/es/extensions/forms/hooks/useLocale.d.ts +10 -0
- package/es/extensions/forms/hooks/useLocale.js +26 -0
- package/es/extensions/forms/hooks/useLocale.js.map +1 -0
- package/es/extensions/forms/index.d.ts +14 -1
- package/es/extensions/forms/index.js +11 -1
- package/es/extensions/forms/index.js.map +1 -1
- package/es/extensions/forms/style/dnb-forms.css +35 -26
- package/es/extensions/forms/style/dnb-forms.min.css +1 -1
- package/es/extensions/forms/types.d.ts +2 -0
- package/es/extensions/forms/types.js.map +1 -1
- package/es/shared/Context.d.ts +7 -6
- package/es/shared/Context.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 +0 -1
- package/es/shared/component-helper.js +0 -1
- package/es/shared/component-helper.js.map +1 -1
- package/es/shared/helpers/useSharedState.d.ts +3 -1
- package/es/shared/helpers/useSharedState.js.map +1 -1
- package/es/shared/locales/en-GB.d.ts +0 -51
- package/es/shared/locales/en-GB.js +3 -54
- package/es/shared/locales/en-GB.js.map +1 -1
- package/es/shared/locales/en-US.d.ts +0 -51
- package/es/shared/locales/en-US.js.map +1 -1
- package/es/shared/locales/index.d.ts +0 -102
- package/es/shared/locales/nb-NO.d.ts +0 -51
- package/es/shared/locales/nb-NO.js +3 -54
- package/es/shared/locales/nb-NO.js.map +1 -1
- package/es/shared/types.d.ts +3 -0
- package/es/shared/types.js.map +1 -1
- package/es/shared/useLocale.d.ts +8 -1
- package/es/shared/useLocale.js +22 -11
- package/es/shared/useLocale.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 +41 -26
- package/es/style/dnb-ui-components.min.css +3 -3
- package/es/style/dnb-ui-core.css +1 -1
- package/es/style/dnb-ui-core.min.css +1 -1
- package/es/style/dnb-ui-extensions.css +35 -26
- package/es/style/dnb-ui-extensions.min.css +1 -1
- package/es/style/dnb-ui-forms.css +35 -26
- package/es/style/dnb-ui-forms.min.css +1 -1
- package/es/style/dnb-ui-forms.scss +2 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-components.css +76 -52
- package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +35 -26
- package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +35 -26
- package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-components.css +76 -52
- package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +35 -26
- package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +35 -26
- package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-components.css +76 -52
- package/es/style/themes/theme-ui/ui-theme-components.min.css +3 -3
- package/es/style/themes/theme-ui/ui-theme-extensions.css +35 -26
- package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/es/style/themes/theme-ui/ui-theme-forms.css +35 -26
- package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- 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 +3 -3
- package/esm/dnb-ui-lib.min.mjs +1 -1
- package/extensions/forms/DataContext/Context.d.ts +2 -1
- package/extensions/forms/DataContext/Context.js +1 -0
- package/extensions/forms/DataContext/Context.js.map +1 -1
- package/extensions/forms/DataContext/Provider/Provider.js +4 -2
- package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
- package/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js +6 -9
- package/extensions/forms/Field/BankAccountNumber/BankAccountNumber.js.map +1 -1
- package/extensions/forms/Field/Boolean/Boolean.js +5 -7
- package/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
- package/extensions/forms/Field/Composition/Composition.d.ts +6 -0
- package/extensions/forms/Field/Composition/Composition.js +11 -0
- package/extensions/forms/Field/Composition/Composition.js.map +1 -0
- package/extensions/forms/Field/Composition/index.d.ts +2 -0
- package/extensions/forms/Field/Composition/index.js +3 -0
- package/extensions/forms/Field/Composition/index.js.map +1 -0
- package/extensions/forms/Field/Currency/Currency.js +4 -4
- package/extensions/forms/Field/Currency/Currency.js.map +1 -1
- package/extensions/forms/Field/Date/Date.js +6 -9
- package/extensions/forms/Field/Date/Date.js.map +1 -1
- package/extensions/forms/Field/Email/Email.js +6 -9
- package/extensions/forms/Field/Email/Email.js.map +1 -1
- package/extensions/forms/Field/Expiry/Expiry.js +25 -14
- package/extensions/forms/Field/Expiry/Expiry.js.map +1 -1
- package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js +5 -8
- package/extensions/forms/Field/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/extensions/forms/Field/Number/Number.js +8 -7
- package/extensions/forms/Field/Number/Number.js.map +1 -1
- package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js +6 -9
- package/extensions/forms/Field/OrganizationNumber/OrganizationNumber.js.map +1 -1
- package/extensions/forms/Field/Password/Password.js +5 -8
- package/extensions/forms/Field/Password/Password.js.map +1 -1
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.d.ts +1 -1
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.js +6 -5
- package/extensions/forms/Field/PhoneNumber/PhoneNumber.js.map +1 -1
- package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.d.ts +1 -1
- package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js +15 -15
- package/extensions/forms/Field/PostalCodeAndCity/PostalCodeAndCity.js.map +1 -1
- package/extensions/forms/Field/SelectCountry/SelectCountry.d.ts +2 -2
- package/extensions/forms/Field/SelectCountry/SelectCountry.js +6 -5
- package/extensions/forms/Field/SelectCountry/SelectCountry.js.map +1 -1
- package/extensions/forms/Field/String/String.js +9 -9
- package/extensions/forms/Field/String/String.js.map +1 -1
- package/extensions/forms/Field/Toggle/Toggle.js +7 -9
- package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
- package/extensions/forms/Field/index.d.ts +1 -0
- package/extensions/forms/Field/index.js +1 -0
- package/extensions/forms/Field/index.js.map +1 -1
- package/extensions/forms/FieldBlock/FieldBlock.js +3 -4
- package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
- package/extensions/forms/Form/Element/style/dnb-forms-element.css +7 -0
- package/extensions/forms/Form/Element/style/dnb-forms-element.min.css +1 -0
- package/extensions/forms/Form/Element/style/dnb-forms-element.scss +9 -0
- package/extensions/forms/Form/SubmitButton/SubmitButton.js +3 -3
- package/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
- package/extensions/forms/Form/SubmitIndicator/style/index.d.ts +1 -1
- package/extensions/forms/Form/SubmitIndicator/style/index.js +1 -1
- package/extensions/forms/Form/SubmitIndicator/style/index.js.map +1 -1
- package/extensions/forms/Form/data-context/useData.js +7 -4
- package/extensions/forms/Form/data-context/useData.js.map +1 -1
- package/extensions/forms/Form/data-context/useError.d.ts +1 -0
- package/extensions/forms/Form/data-context/useError.js +14 -6
- package/extensions/forms/Form/data-context/useError.js.map +1 -1
- package/extensions/forms/Form/index.d.ts +1 -0
- package/extensions/forms/Form/index.js +1 -0
- package/extensions/forms/Form/index.js.map +1 -1
- package/extensions/forms/Value/BankAccountNumber/BankAccountNumber.js +4 -6
- package/extensions/forms/Value/BankAccountNumber/BankAccountNumber.js.map +1 -1
- package/extensions/forms/Value/Boolean/Boolean.js +4 -6
- package/extensions/forms/Value/Boolean/Boolean.js.map +1 -1
- package/extensions/forms/Value/Date/Date.js +4 -6
- package/extensions/forms/Value/Date/Date.js.map +1 -1
- package/extensions/forms/Value/Email/Email.js +4 -6
- package/extensions/forms/Value/Email/Email.js.map +1 -1
- package/extensions/forms/Value/NationalIdentityNumber/NationalIdentityNumber.js +4 -6
- package/extensions/forms/Value/NationalIdentityNumber/NationalIdentityNumber.js.map +1 -1
- package/extensions/forms/Value/PhoneNumber/PhoneNumber.js +4 -6
- package/extensions/forms/Value/PhoneNumber/PhoneNumber.js.map +1 -1
- package/extensions/forms/Wizard/Buttons/Buttons.js +24 -0
- package/extensions/forms/Wizard/Buttons/Buttons.js.map +1 -0
- package/extensions/forms/Wizard/Buttons/index.js.map +1 -0
- package/extensions/forms/Wizard/Container/WizardContainer.d.ts +19 -0
- package/extensions/forms/{StepsLayout/StepsLayout.js → Wizard/Container/WizardContainer.js} +53 -45
- package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -0
- package/extensions/forms/Wizard/Container/WizardContainerDocs.d.ts +3 -0
- package/{es/extensions/forms/StepsLayout/StepsLayoutDocs.js → extensions/forms/Wizard/Container/WizardContainerDocs.js} +5 -5
- package/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -0
- package/extensions/forms/Wizard/Container/index.d.ts +2 -0
- package/extensions/forms/Wizard/Container/index.js +3 -0
- package/extensions/forms/Wizard/Container/index.js.map +1 -0
- package/extensions/forms/Wizard/Context/WizardContext.d.ts +17 -0
- package/extensions/forms/Wizard/Context/WizardContext.js +12 -0
- package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -0
- package/extensions/forms/Wizard/Context/index.d.ts +2 -0
- package/extensions/forms/Wizard/Context/index.js +3 -0
- package/extensions/forms/Wizard/Context/index.js.map +1 -0
- package/extensions/forms/{StepsLayout → Wizard}/NextButton/NextButton.js +6 -6
- package/extensions/forms/Wizard/NextButton/NextButton.js.map +1 -0
- package/extensions/forms/Wizard/NextButton/index.js.map +1 -0
- package/{es/extensions/forms/StepsLayout → extensions/forms/Wizard}/PreviousButton/PreviousButton.js +7 -7
- package/extensions/forms/Wizard/PreviousButton/PreviousButton.js.map +1 -0
- package/extensions/forms/Wizard/PreviousButton/index.js.map +1 -0
- package/{es/extensions/forms/StepsLayout → extensions/forms/Wizard}/Step/Step.js +3 -3
- package/extensions/forms/Wizard/Step/Step.js.map +1 -0
- package/extensions/forms/Wizard/Step/index.js.map +1 -0
- package/extensions/forms/Wizard/hooks/useNextRouter.d.ts +7 -0
- package/extensions/forms/Wizard/hooks/useNextRouter.js +43 -0
- package/extensions/forms/Wizard/hooks/useNextRouter.js.map +1 -0
- package/extensions/forms/Wizard/hooks/useQueryLocator.d.ts +3 -0
- package/extensions/forms/Wizard/hooks/useQueryLocator.js +51 -0
- package/extensions/forms/Wizard/hooks/useQueryLocator.js.map +1 -0
- package/extensions/forms/Wizard/hooks/useReachRouter.d.ts +6 -0
- package/extensions/forms/Wizard/hooks/useReachRouter.js +47 -0
- package/extensions/forms/Wizard/hooks/useReachRouter.js.map +1 -0
- package/extensions/forms/Wizard/hooks/useReactRouter.d.ts +5 -0
- package/extensions/forms/Wizard/hooks/useReactRouter.js +38 -0
- package/extensions/forms/Wizard/hooks/useReactRouter.js.map +1 -0
- package/extensions/forms/Wizard/hooks/useStep.d.ts +5 -0
- package/extensions/forms/Wizard/hooks/useStep.js +24 -0
- package/extensions/forms/Wizard/hooks/useStep.js.map +1 -0
- package/extensions/forms/Wizard/index.d.ts +13 -0
- package/extensions/forms/Wizard/index.js +14 -0
- package/extensions/forms/Wizard/index.js.map +1 -0
- package/{es/extensions/forms/StepsLayout/style/dnb-steps-layout.css → extensions/forms/Wizard/style/dnb-wizard-layout.css} +10 -9
- package/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -0
- package/{cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.scss → extensions/forms/Wizard/style/dnb-wizard-layout.scss} +5 -4
- package/extensions/forms/Wizard/style/index.d.ts +5 -0
- package/extensions/forms/Wizard/style/index.js +1 -0
- package/extensions/forms/Wizard/style/index.js.map +1 -0
- package/extensions/forms/Wizard/style.js.map +1 -0
- package/extensions/forms/constants/countries.d.ts +1 -0
- package/extensions/forms/constants/countries.js.map +1 -1
- package/extensions/forms/constants/locales/en-GB.d.ts +99 -0
- package/extensions/forms/constants/locales/en-GB.js +93 -0
- package/extensions/forms/constants/locales/en-GB.js.map +1 -0
- package/extensions/forms/constants/locales/en-US.d.ts +93 -0
- package/extensions/forms/constants/locales/en-US.js +15 -0
- package/extensions/forms/constants/locales/en-US.js.map +1 -0
- package/extensions/forms/constants/locales/index.d.ts +183 -0
- package/extensions/forms/constants/locales/index.js +8 -0
- package/extensions/forms/constants/locales/index.js.map +1 -0
- package/extensions/forms/constants/locales/nb-NO.d.ts +99 -0
- package/extensions/forms/constants/locales/nb-NO.js +93 -0
- package/extensions/forms/constants/locales/nb-NO.js.map +1 -0
- package/extensions/forms/hooks/DataValueDocs.js +4 -4
- package/extensions/forms/hooks/DataValueDocs.js.map +1 -1
- package/extensions/forms/hooks/useFieldProps.js +10 -7
- package/extensions/forms/hooks/useFieldProps.js.map +1 -1
- package/extensions/forms/hooks/useLocale.d.ts +10 -0
- package/extensions/forms/hooks/useLocale.js +26 -0
- package/extensions/forms/hooks/useLocale.js.map +1 -0
- package/extensions/forms/index.d.ts +14 -1
- package/extensions/forms/index.js +12 -1
- package/extensions/forms/index.js.map +1 -1
- package/extensions/forms/style/dnb-forms.css +35 -26
- package/extensions/forms/style/dnb-forms.min.css +1 -1
- package/extensions/forms/types.d.ts +2 -0
- package/extensions/forms/types.js.map +1 -1
- package/package.json +1 -1
- package/shared/Context.d.ts +7 -6
- package/shared/Context.js.map +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 +0 -1
- package/shared/component-helper.js +0 -1
- package/shared/component-helper.js.map +1 -1
- package/shared/helpers/useSharedState.d.ts +3 -1
- package/shared/helpers/useSharedState.js.map +1 -1
- package/shared/locales/en-GB.d.ts +0 -51
- package/shared/locales/en-GB.js +3 -54
- package/shared/locales/en-GB.js.map +1 -1
- package/shared/locales/en-US.d.ts +0 -51
- package/shared/locales/en-US.js.map +1 -1
- package/shared/locales/index.d.ts +0 -102
- package/shared/locales/nb-NO.d.ts +0 -51
- package/shared/locales/nb-NO.js +3 -54
- package/shared/locales/nb-NO.js.map +1 -1
- package/shared/types.d.ts +3 -0
- package/shared/types.js.map +1 -1
- package/shared/useLocale.d.ts +8 -1
- package/shared/useLocale.js +23 -11
- package/shared/useLocale.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 +41 -26
- package/style/dnb-ui-components.min.css +3 -3
- package/style/dnb-ui-core.css +1 -1
- package/style/dnb-ui-core.min.css +1 -1
- package/style/dnb-ui-extensions.css +35 -26
- package/style/dnb-ui-extensions.min.css +1 -1
- package/style/dnb-ui-forms.css +35 -26
- package/style/dnb-ui-forms.min.css +1 -1
- package/style/dnb-ui-forms.scss +2 -1
- package/style/themes/theme-eiendom/eiendom-theme-components.css +76 -52
- package/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
- package/style/themes/theme-eiendom/eiendom-theme-extensions.css +35 -26
- package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
- package/style/themes/theme-eiendom/eiendom-theme-forms.css +35 -26
- package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-components.css +76 -52
- package/style/themes/theme-sbanken/sbanken-theme-components.min.css +3 -3
- package/style/themes/theme-sbanken/sbanken-theme-extensions.css +35 -26
- package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
- package/style/themes/theme-sbanken/sbanken-theme-forms.css +35 -26
- package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-components.css +76 -52
- package/style/themes/theme-ui/ui-theme-components.min.css +3 -3
- package/style/themes/theme-ui/ui-theme-extensions.css +35 -26
- package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
- package/style/themes/theme-ui/ui-theme-forms.css +35 -26
- package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
- 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 +3 -3
- package/umd/dnb-ui-lib.min.js +1 -1
- package/cjs/extensions/forms/Field/style/index.d.ts +0 -5
- package/cjs/extensions/forms/Field/style/index.js +0 -4
- package/cjs/extensions/forms/Field/style/index.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/Buttons/Buttons.js +0 -26
- package/cjs/extensions/forms/StepsLayout/Buttons/Buttons.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/Buttons/index.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/NextButton/NextButton.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/NextButton/index.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/PreviousButton/index.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/Step/Step.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/Step/index.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/StepsContext.d.ts +0 -10
- package/cjs/extensions/forms/StepsLayout/StepsContext.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/StepsLayout.d.ts +0 -24
- package/cjs/extensions/forms/StepsLayout/StepsLayout.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/StepsLayoutDocs.d.ts +0 -3
- package/cjs/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/index.d.ts +0 -3
- package/cjs/extensions/forms/StepsLayout/index.js +0 -18
- package/cjs/extensions/forms/StepsLayout/index.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +0 -1
- package/cjs/extensions/forms/StepsLayout/style/index.d.ts +0 -5
- package/cjs/extensions/forms/StepsLayout/style/index.js +0 -4
- package/cjs/extensions/forms/StepsLayout/style/index.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/style.js.map +0 -1
- package/cjs/extensions/forms/StepsLayout/useStep.d.ts +0 -3
- package/cjs/extensions/forms/StepsLayout/useStep.js +0 -19
- package/cjs/extensions/forms/StepsLayout/useStep.js.map +0 -1
- package/cjs/shared/helpers/useEventEmitter.d.ts +0 -16
- package/cjs/shared/helpers/useEventEmitter.js +0 -38
- package/cjs/shared/helpers/useEventEmitter.js.map +0 -1
- package/es/extensions/forms/Field/style/index.d.ts +0 -5
- package/es/extensions/forms/Field/style/index.js +0 -1
- package/es/extensions/forms/Field/style/index.js.map +0 -1
- package/es/extensions/forms/StepsLayout/Buttons/Buttons.js +0 -18
- package/es/extensions/forms/StepsLayout/Buttons/Buttons.js.map +0 -1
- package/es/extensions/forms/StepsLayout/Buttons/index.js.map +0 -1
- package/es/extensions/forms/StepsLayout/NextButton/NextButton.js.map +0 -1
- package/es/extensions/forms/StepsLayout/NextButton/index.js.map +0 -1
- package/es/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +0 -1
- package/es/extensions/forms/StepsLayout/PreviousButton/index.js.map +0 -1
- package/es/extensions/forms/StepsLayout/Step/Step.js.map +0 -1
- package/es/extensions/forms/StepsLayout/Step/index.js.map +0 -1
- package/es/extensions/forms/StepsLayout/StepsContext.d.ts +0 -10
- package/es/extensions/forms/StepsLayout/StepsContext.js +0 -9
- package/es/extensions/forms/StepsLayout/StepsContext.js.map +0 -1
- package/es/extensions/forms/StepsLayout/StepsLayout.d.ts +0 -24
- package/es/extensions/forms/StepsLayout/StepsLayout.js.map +0 -1
- package/es/extensions/forms/StepsLayout/StepsLayoutDocs.d.ts +0 -3
- package/es/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +0 -1
- package/es/extensions/forms/StepsLayout/index.d.ts +0 -3
- package/es/extensions/forms/StepsLayout/index.js +0 -4
- package/es/extensions/forms/StepsLayout/index.js.map +0 -1
- package/es/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +0 -1
- package/es/extensions/forms/StepsLayout/style/index.d.ts +0 -5
- package/es/extensions/forms/StepsLayout/style/index.js +0 -1
- package/es/extensions/forms/StepsLayout/style/index.js.map +0 -1
- package/es/extensions/forms/StepsLayout/style.js.map +0 -1
- package/es/extensions/forms/StepsLayout/useStep.d.ts +0 -3
- package/es/extensions/forms/StepsLayout/useStep.js +0 -12
- package/es/extensions/forms/StepsLayout/useStep.js.map +0 -1
- package/es/shared/helpers/useEventEmitter.d.ts +0 -16
- package/es/shared/helpers/useEventEmitter.js +0 -29
- package/es/shared/helpers/useEventEmitter.js.map +0 -1
- package/extensions/forms/Field/style/index.d.ts +0 -5
- package/extensions/forms/Field/style/index.js +0 -1
- package/extensions/forms/Field/style/index.js.map +0 -1
- package/extensions/forms/StepsLayout/Buttons/Buttons.js +0 -18
- package/extensions/forms/StepsLayout/Buttons/Buttons.js.map +0 -1
- package/extensions/forms/StepsLayout/Buttons/index.js.map +0 -1
- package/extensions/forms/StepsLayout/NextButton/NextButton.js.map +0 -1
- package/extensions/forms/StepsLayout/NextButton/index.js.map +0 -1
- package/extensions/forms/StepsLayout/PreviousButton/PreviousButton.js.map +0 -1
- package/extensions/forms/StepsLayout/PreviousButton/index.js.map +0 -1
- package/extensions/forms/StepsLayout/Step/Step.js.map +0 -1
- package/extensions/forms/StepsLayout/Step/index.js.map +0 -1
- package/extensions/forms/StepsLayout/StepsContext.d.ts +0 -10
- package/extensions/forms/StepsLayout/StepsContext.js +0 -9
- package/extensions/forms/StepsLayout/StepsContext.js.map +0 -1
- package/extensions/forms/StepsLayout/StepsLayout.d.ts +0 -24
- package/extensions/forms/StepsLayout/StepsLayout.js.map +0 -1
- package/extensions/forms/StepsLayout/StepsLayoutDocs.d.ts +0 -3
- package/extensions/forms/StepsLayout/StepsLayoutDocs.js.map +0 -1
- package/extensions/forms/StepsLayout/index.d.ts +0 -3
- package/extensions/forms/StepsLayout/index.js +0 -4
- package/extensions/forms/StepsLayout/index.js.map +0 -1
- package/extensions/forms/StepsLayout/style/dnb-steps-layout.min.css +0 -1
- package/extensions/forms/StepsLayout/style/index.d.ts +0 -5
- package/extensions/forms/StepsLayout/style/index.js +0 -1
- package/extensions/forms/StepsLayout/style/index.js.map +0 -1
- package/extensions/forms/StepsLayout/style.js.map +0 -1
- package/extensions/forms/StepsLayout/useStep.d.ts +0 -3
- package/extensions/forms/StepsLayout/useStep.js +0 -13
- package/extensions/forms/StepsLayout/useStep.js.map +0 -1
- package/shared/helpers/useEventEmitter.d.ts +0 -16
- package/shared/helpers/useEventEmitter.js +0 -30
- package/shared/helpers/useEventEmitter.js.map +0 -1
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/Buttons/Buttons.d.ts +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/Buttons/index.d.ts +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/Buttons/index.js +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/NextButton/NextButton.d.ts +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/NextButton/index.d.ts +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/NextButton/index.js +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/PreviousButton/PreviousButton.d.ts +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/PreviousButton/index.d.ts +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/PreviousButton/index.js +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/Step/Step.d.ts +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/Step/index.d.ts +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/Step/index.js +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/style.d.ts +0 -0
- /package/cjs/extensions/forms/{StepsLayout → Wizard}/style.js +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/Buttons/Buttons.d.ts +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/Buttons/index.d.ts +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/Buttons/index.js +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/NextButton/NextButton.d.ts +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/NextButton/index.d.ts +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/NextButton/index.js +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/PreviousButton/PreviousButton.d.ts +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/PreviousButton/index.d.ts +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/PreviousButton/index.js +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/Step/Step.d.ts +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/Step/index.d.ts +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/Step/index.js +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/style.d.ts +0 -0
- /package/es/extensions/forms/{StepsLayout → Wizard}/style.js +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/Buttons/Buttons.d.ts +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/Buttons/index.d.ts +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/Buttons/index.js +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/NextButton/NextButton.d.ts +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/NextButton/index.d.ts +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/NextButton/index.js +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/PreviousButton/PreviousButton.d.ts +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/PreviousButton/index.d.ts +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/PreviousButton/index.js +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/Step/Step.d.ts +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/Step/index.d.ts +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/Step/index.js +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/style.d.ts +0 -0
- /package/extensions/forms/{StepsLayout → Wizard}/style.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.js","names":["React","PropTypes","classnames","FormLabel","FormStatus","TextCounter","isTrue","makeUniqueId","extendPropsWithContextInClassComponent","validateDOMAttributes","processChildren","getStatusState","combineDescribedBy","warn","dispatchCustomElementEvent","pickFormElementProps","AlignmentHelper","spacingPropTypes","createSpacingClasses","skeletonDOMAttributes","createSkeletonClass","Context","Suffix","Textarea","PureComponent","getDerivedStateFromProps","props","state","value","getValue","_value","on_state_update","textarea_state","textareaState","hasValue","String","length","constructor","_defineProperty","event","_ref","current","setState","target","autoresize","prepareAutosize","rows","getRows","ret","setAutosize","elem","style","height","e","_heightOffset","offsetHeight","clientHeight","lineHeight","getLineHeight","newHeight","scrollHeight","maxRows","parseFloat","autoresize_max_rows","maxHeight","createRef","_id","id","navigator","resizeModifier","test","userAgent","platform","error","console","componentDidMount","inner_ref","window","resizeObserver","ResizeObserver","observe","document","body","addEventListener","componentWillUnmount","disconnect","removeEventListener","Math","floor","getComputedStyle","render","_this$context","_this$context2","_this$context3","defaultProps","skeleton","context","getTranslation","FormRow","formElement","label","label_direction","label_sr_only","status","status_state","status_props","status_no_animation","globalStatus","suffix","disabled","stretch","placeholder","keepPlaceholder","align","size","textarea_class","readOnly","textarea_attributes","class","_className","className","characterCounter","children","textarea_element","_textarea_element","attributes","_objectWithoutProperties","_excluded","showStatus","TextareaElement","textareaAttributes","JSON","parse","textareaParams","_objectSpread","role","name","onChange","onChangeHandler","onFocus","onFocusHandler","onBlur","onBlurHandler","onKeyDown","onKeyDownHandler","mainParams","innerParams","shellParams","placeholderStyle","createElement","for_id","text","sr_only","_AlignmentHelper","_extends","show","text_id","no_animation","ref","_span","top","max","lang","locale","cols","on_change","on_focus","on_blur","on_key_down","process","env","NODE_ENV","propTypes","string","oneOfType","func","node","oneOf","bool","object","shape","message","number","variant","_formElement","_supportsSpacingProps"],"sources":["../../../../src/components/textarea/Textarea.js"],"sourcesContent":["/**\n * Web Textarea Component\n *\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport FormLabel from '../form-label/FormLabel'\nimport FormStatus from '../form-status/FormStatus'\nimport TextCounter from '../../fragments/text-counter/TextCounter'\nimport {\n isTrue,\n makeUniqueId,\n extendPropsWithContextInClassComponent,\n validateDOMAttributes,\n processChildren,\n getStatusState,\n combineDescribedBy,\n warn,\n dispatchCustomElementEvent,\n} from '../../shared/component-helper'\nimport { pickFormElementProps } from '../../shared/helpers/filterValidProps'\nimport AlignmentHelper from '../../shared/AlignmentHelper'\nimport {\n spacingPropTypes,\n createSpacingClasses,\n} from '../space/SpacingHelper'\nimport {\n skeletonDOMAttributes,\n createSkeletonClass,\n} from '../skeleton/SkeletonHelper'\n\nimport Context from '../../shared/Context'\nimport Suffix from '../../shared/helpers/Suffix'\n\n/**\n * The textarea component is an umbrella component for all textareas which share the same style as the classic `text` textarea field.\n */\nexport default class Textarea extends React.PureComponent {\n static contextType = Context\n\n static propTypes = {\n value: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.node,\n ]),\n label_direction: PropTypes.oneOf(['horizontal', 'vertical']),\n label_sr_only: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n status: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.func,\n PropTypes.node,\n ]),\n textarea_state: PropTypes.string,\n status_state: PropTypes.string,\n status_props: PropTypes.object,\n status_no_animation: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n globalStatus: PropTypes.shape({\n id: PropTypes.string,\n message: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n }),\n suffix: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.node,\n ]),\n placeholder: PropTypes.string,\n keepPlaceholder: PropTypes.bool,\n align: PropTypes.oneOf(['left', 'right']),\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n stretch: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n disabled: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n skeleton: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n characterCounter: PropTypes.oneOfType([\n PropTypes.shape({\n max: PropTypes.number,\n variant: PropTypes.oneOf(['down', 'up']),\n }),\n PropTypes.number,\n ]),\n autoresize: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n autoresize_max_rows: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n class: PropTypes.string,\n textarea_class: PropTypes.string,\n textarea_attributes: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n readOnly: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n cols: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n inner_ref: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n\n ...spacingPropTypes,\n\n className: PropTypes.string,\n textarea_element: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.node,\n ]),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n on_change: PropTypes.func,\n on_focus: PropTypes.func,\n on_blur: PropTypes.func,\n on_key_down: PropTypes.func,\n on_state_update: PropTypes.func,\n }\n\n static defaultProps = {\n value: 'initval',\n id: null,\n label: null,\n label_direction: null,\n label_sr_only: null,\n status: null,\n textarea_state: null,\n status_state: 'error',\n status_props: null,\n status_no_animation: null,\n globalStatus: null,\n suffix: null,\n placeholder: null,\n keepPlaceholder: null,\n align: null,\n size: null,\n stretch: null,\n disabled: null,\n skeleton: null,\n autoresize: null,\n autoresize_max_rows: null,\n characterCounter: null,\n textarea_class: null,\n class: null,\n textarea_attributes: null,\n readOnly: false,\n rows: null,\n cols: null,\n inner_ref: null,\n\n className: null,\n textarea_element: null,\n children: null,\n\n on_change: null,\n on_focus: null,\n on_blur: null,\n on_key_down: null,\n on_state_update: null,\n }\n\n static getDerivedStateFromProps(props, state) {\n const value = Textarea.getValue(props)\n if (\n value !== 'initval' &&\n value !== state.value &&\n value !== state._value\n ) {\n if (\n value !== state.value &&\n typeof props.on_state_update === 'function'\n ) {\n dispatchCustomElementEvent({ props }, 'on_state_update', { value })\n }\n state.value = value\n }\n if (props.textarea_state) {\n state.textareaState = props.textarea_state\n }\n state._value = props.value\n return state\n }\n\n static hasValue(value) {\n return (\n ((typeof value === 'string' || typeof value === 'number') &&\n String(value).length > 0) ||\n false\n )\n }\n\n static getValue(props) {\n const value = processChildren(props)\n if (value === '' || Textarea.hasValue(value)) {\n return value\n }\n return props.value\n }\n\n state = {\n textareaState: 'virgin',\n value: null,\n _value: null,\n }\n\n constructor(props) {\n super(props)\n\n this._ref = React.createRef()\n this._id = props.id || makeUniqueId() // cause we need an id anyway\n\n if (props.textarea_state) {\n this.state.textareaState = props.textarea_state\n }\n\n try {\n if (typeof navigator !== 'undefined') {\n this.resizeModifier =\n /Firefox|Edg/.test(navigator.userAgent) ||\n (/Chrome/.test(navigator.userAgent) &&\n /Win/.test(navigator.platform))\n ? 'large'\n : false\n\n if (!this.resizeModifier) {\n this.resizeModifier =\n /Safari|Chrome/.test(navigator.userAgent) &&\n /Mac/.test(navigator.platform)\n ? 'medium'\n : false\n }\n }\n } catch (error) {\n console.error(error)\n }\n }\n componentDidMount() {\n if (this.props.inner_ref) {\n typeof this.props.inner_ref === 'function'\n ? this.props.inner_ref(this._ref.current)\n : (this.props.inner_ref.current = this._ref.current)\n }\n\n if (isTrue(this.props.autoresize) && typeof window !== 'undefined') {\n this.setAutosize()\n try {\n this.resizeObserver = new ResizeObserver(this.setAutosize)\n this.resizeObserver.observe(document.body)\n } catch (e) {\n window.addEventListener('resize', this.setAutosize)\n }\n }\n }\n componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect()\n this.resizeObserver = null\n }\n if (typeof window !== 'undefined') {\n window.removeEventListener('resize', this.setAutosize)\n }\n }\n onFocusHandler = (event) => {\n const { value } = this._ref.current\n this.setState({\n value,\n textareaState: 'focus',\n })\n dispatchCustomElementEvent(this, 'on_focus', { value, event })\n }\n onBlurHandler = (event) => {\n const { value } = event.target\n this.setState({\n value,\n textareaState: Textarea.hasValue(value) ? 'dirty' : 'initial',\n })\n dispatchCustomElementEvent(this, 'on_blur', { value, event })\n }\n onChangeHandler = (event) => {\n const { value } = event.target\n\n if (isTrue(this.props.autoresize)) {\n this.prepareAutosize()\n }\n\n const rows = this.getRows(value)\n\n const ret = dispatchCustomElementEvent(this, 'on_change', {\n value,\n rows,\n event,\n })\n if (ret !== false) {\n this.setState({ value })\n if (isTrue(this.props.autoresize)) {\n this.setAutosize(rows)\n }\n }\n }\n onKeyDownHandler = (event) => {\n const rows = this.getRows()\n const { value } = event.target\n dispatchCustomElementEvent(this, 'on_key_down', {\n value,\n rows,\n event,\n })\n }\n prepareAutosize = () => {\n const elem = this._ref.current\n if (!elem) {\n return // stop here if no element was gotten\n }\n try {\n elem.style.height = 'auto'\n } catch (e) {\n warn(e)\n }\n }\n setAutosize = (rows = null) => {\n const elem = this._ref.current\n if (!elem) {\n return // stop here if no element was gotten\n }\n try {\n if (typeof this._heightOffset === 'undefined') {\n this._heightOffset = elem.offsetHeight - elem.clientHeight\n }\n\n elem.style.height = 'auto'\n\n // get rows after we set height to auto, this way we get 100% correct rows\n const lineHeight = this.getLineHeight()\n let newHeight = elem.scrollHeight + this._heightOffset\n if (!rows) {\n rows = this.getRows()\n }\n\n if (rows === 1) {\n if (newHeight > lineHeight) {\n newHeight = lineHeight\n }\n }\n\n const maxRows = parseFloat(this.props.autoresize_max_rows)\n if (maxRows > 0) {\n const maxHeight = maxRows * lineHeight\n\n if (rows > maxRows || newHeight > maxHeight) {\n newHeight = maxHeight\n }\n }\n\n elem.style.height = newHeight + 'px'\n } catch (e) {\n warn(e)\n }\n }\n getRows() {\n return (\n Math.floor(this._ref.current.scrollHeight / this.getLineHeight()) ||\n 1\n )\n }\n getLineHeight() {\n return parseFloat(getComputedStyle(this._ref.current).lineHeight) || 0\n }\n render() {\n // use only the props from context, who are available here anyway\n const props = extendPropsWithContextInClassComponent(\n this.props,\n Textarea.defaultProps,\n { skeleton: this.context?.skeleton },\n this.context.getTranslation(this.props).Textarea,\n // Deprecated – can be removed in v11\n pickFormElementProps(this.context?.FormRow),\n pickFormElementProps(this.context?.formElement),\n this.context.Textarea\n )\n\n const {\n label,\n label_direction,\n label_sr_only,\n status,\n status_state,\n status_props,\n status_no_animation,\n globalStatus,\n suffix,\n disabled,\n skeleton,\n stretch,\n placeholder,\n keepPlaceholder,\n align,\n size,\n textarea_class,\n readOnly,\n textarea_attributes,\n class: _className,\n className,\n autoresize,\n characterCounter,\n autoresize_max_rows, //eslint-disable-line\n id: _id, //eslint-disable-line\n children, //eslint-disable-line\n value: _value, //eslint-disable-line\n textarea_element: _textarea_element, //eslint-disable-line\n\n ...attributes\n } = props\n\n const { value, textareaState } = this.state\n\n const id = this._id\n const showStatus = getStatusState(status)\n const hasValue = Textarea.hasValue(value)\n\n // pass along all props we wish to have as params\n let { textarea_element: TextareaElement } = props\n\n const textareaAttributes = textarea_attributes\n ? typeof textarea_attributes === 'string'\n ? JSON.parse(textarea_attributes)\n : textarea_attributes\n : {}\n\n const textareaParams = {\n className: classnames('dnb-textarea__textarea', textarea_class),\n role: 'textbox',\n value: hasValue ? value : '',\n id,\n name: id,\n disabled: isTrue(disabled) || isTrue(skeleton),\n 'aria-placeholder': placeholder,\n ...attributes,\n ...textareaAttributes,\n onChange: this.onChangeHandler,\n onFocus: this.onFocusHandler,\n onBlur: this.onBlurHandler,\n // onPaste: this.onChangeHandler,\n onKeyDown: this.onKeyDownHandler,\n }\n\n // we may consider using: aria-details\n if (showStatus || suffix) {\n textareaParams['aria-describedby'] = combineDescribedBy(\n textareaParams,\n showStatus ? id + '-status' : null,\n suffix ? id + '-suffix' : null\n )\n }\n if (readOnly) {\n textareaParams['aria-readonly'] = textareaParams.readOnly = true\n }\n\n const mainParams = {\n className: classnames(\n 'dnb-textarea',\n `dnb-textarea--${textareaState}`,\n disabled && 'dnb-textarea--disabled',\n hasValue && 'dnb-textarea--has-content',\n align && `dnb-textarea__align--${align}`,\n size && `dnb-textarea__size--${size}`,\n status && `dnb-textarea__status--${status_state}`,\n autoresize && 'dnb-textarea__autoresize',\n !autoresize &&\n this.resizeModifier &&\n `dnb-textarea__resize--${this.resizeModifier}`,\n label_direction && `dnb-textarea--${label_direction}`,\n isTrue(stretch) && `dnb-textarea--stretch`,\n isTrue(keepPlaceholder) && `dnb-textarea--keep-placeholder`,\n 'dnb-form-component',\n createSkeletonClass(null, skeleton),\n createSpacingClasses(props),\n _className,\n className\n ),\n }\n\n const innerParams = {\n className: classnames(\n 'dnb-textarea__inner',\n createSkeletonClass('shape', skeleton, this.context)\n ),\n }\n\n const shellParams = {\n className: classnames('dnb-textarea__shell'),\n }\n\n if (isTrue(disabled) || isTrue(skeleton)) {\n shellParams['aria-disabled'] = true\n }\n\n // to show the ending dots on a placeholder, if the text is longer\n const placeholderStyle =\n parseFloat(this.props.rows) > 0\n ? {\n '--textarea-rows': parseFloat(this.props.rows),\n // '--textarea-cols': parseFloat(this.props.cols)\n }\n : null\n\n skeletonDOMAttributes(innerParams, skeleton, this.context)\n\n // also used for code markup simulation\n validateDOMAttributes(this.props, textareaParams)\n validateDOMAttributes(null, innerParams)\n validateDOMAttributes(null, shellParams)\n\n if (TextareaElement && typeof TextareaElement === 'function') {\n TextareaElement = TextareaElement(textareaParams, this._ref)\n } else if (!TextareaElement && _textarea_element) {\n TextareaElement = _textarea_element\n }\n\n return (\n <span {...mainParams}>\n {label && (\n <FormLabel\n id={id + '-label'}\n for_id={id}\n text={label}\n label_direction={label_direction}\n sr_only={label_sr_only}\n disabled={disabled}\n skeleton={skeleton}\n />\n )}\n\n <span {...innerParams}>\n <AlignmentHelper />\n\n <FormStatus\n show={showStatus}\n id={id + '-form-status'}\n globalStatus={globalStatus}\n label={label}\n text_id={id + '-status'} // used for \"aria-describedby\"\n text={status}\n state={status_state}\n no_animation={status_no_animation}\n skeleton={skeleton}\n {...status_props}\n />\n\n <span className=\"dnb-textarea__row\">\n <span {...shellParams}>\n {TextareaElement || (\n <textarea ref={this._ref} {...textareaParams} />\n )}\n\n {!hasValue &&\n placeholder &&\n (textareaState !== 'focus' || keepPlaceholder) && (\n <span\n className={classnames(\n 'dnb-textarea__placeholder',\n align ? `dnb-textarea__align--${align}` : null\n )}\n style={placeholderStyle}\n aria-hidden\n >\n {placeholder}\n </span>\n )}\n\n <span className=\"dnb-textarea__state\" />\n </span>\n\n {suffix && (\n <Suffix\n className=\"dnb-textarea__suffix\"\n id={id + '-suffix'} // used for \"aria-describedby\"\n context={props}\n >\n {suffix}\n </Suffix>\n )}\n </span>\n\n {characterCounter && (\n <TextCounter\n top=\"x-small\"\n text={value}\n max={characterCounter}\n lang={this.props.lang}\n locale={this.props.locale}\n {...characterCounter}\n />\n )}\n </span>\n </span>\n )\n }\n}\n\nTextarea._formElement = true\nTextarea._supportsSpacingProps = true\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Textarea.js","names":["React","PropTypes","classnames","FormLabel","FormStatus","TextCounter","isTrue","makeUniqueId","extendPropsWithContextInClassComponent","validateDOMAttributes","processChildren","getStatusState","combineDescribedBy","warn","dispatchCustomElementEvent","pickFormElementProps","AlignmentHelper","spacingPropTypes","createSpacingClasses","skeletonDOMAttributes","createSkeletonClass","Context","Suffix","Textarea","PureComponent","getDerivedStateFromProps","props","state","value","getValue","_value","on_state_update","textarea_state","textareaState","hasValue","String","length","constructor","_defineProperty","event","_ref","current","setState","target","getProps","autoresize","prepareAutosize","rows","getRows","ret","setAutosize","elem","style","height","e","_heightOffset","offsetHeight","clientHeight","lineHeight","getLineHeight","newHeight","scrollHeight","maxRows","parseFloat","autoresize_max_rows","maxHeight","createRef","_id","id","navigator","resizeModifier","test","userAgent","platform","error","console","componentDidMount","inner_ref","window","resizeObserver","ResizeObserver","observe","document","body","addEventListener","componentWillUnmount","disconnect","removeEventListener","Math","floor","getComputedStyle","_this$context","_this$context2","_this$context3","defaultProps","skeleton","context","getTranslation","FormRow","formElement","render","label","label_direction","label_sr_only","status","status_state","status_props","status_no_animation","globalStatus","suffix","disabled","stretch","placeholder","keepPlaceholder","align","size","textarea_class","readOnly","textarea_attributes","class","_className","className","characterCounter","children","textarea_element","_textarea_element","attributes","_objectWithoutProperties","_excluded","showStatus","TextareaElement","textareaAttributes","JSON","parse","textareaParams","_objectSpread","role","name","onChange","onChangeHandler","onFocus","onFocusHandler","onBlur","onBlurHandler","onKeyDown","onKeyDownHandler","mainParams","innerParams","shellParams","placeholderStyle","createElement","for_id","text","sr_only","_AlignmentHelper","_extends","show","text_id","no_animation","ref","_span","top","max","lang","locale","cols","on_change","on_focus","on_blur","on_key_down","process","env","NODE_ENV","propTypes","string","oneOfType","func","node","oneOf","bool","object","shape","message","number","variant","_formElement","_supportsSpacingProps"],"sources":["../../../../src/components/textarea/Textarea.js"],"sourcesContent":["/**\n * Web Textarea Component\n *\n */\n\nimport React from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport FormLabel from '../form-label/FormLabel'\nimport FormStatus from '../form-status/FormStatus'\nimport TextCounter from '../../fragments/text-counter/TextCounter'\nimport {\n isTrue,\n makeUniqueId,\n extendPropsWithContextInClassComponent,\n validateDOMAttributes,\n processChildren,\n getStatusState,\n combineDescribedBy,\n warn,\n dispatchCustomElementEvent,\n} from '../../shared/component-helper'\nimport { pickFormElementProps } from '../../shared/helpers/filterValidProps'\nimport AlignmentHelper from '../../shared/AlignmentHelper'\nimport {\n spacingPropTypes,\n createSpacingClasses,\n} from '../space/SpacingHelper'\nimport {\n skeletonDOMAttributes,\n createSkeletonClass,\n} from '../skeleton/SkeletonHelper'\n\nimport Context from '../../shared/Context'\nimport Suffix from '../../shared/helpers/Suffix'\n\n/**\n * The textarea component is an umbrella component for all textareas which share the same style as the classic `text` textarea field.\n */\nexport default class Textarea extends React.PureComponent {\n static contextType = Context\n\n static propTypes = {\n value: PropTypes.string,\n id: PropTypes.string,\n label: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.node,\n ]),\n label_direction: PropTypes.oneOf(['horizontal', 'vertical']),\n label_sr_only: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n status: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n PropTypes.func,\n PropTypes.node,\n ]),\n textarea_state: PropTypes.string,\n status_state: PropTypes.string,\n status_props: PropTypes.object,\n status_no_animation: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool,\n ]),\n globalStatus: PropTypes.shape({\n id: PropTypes.string,\n message: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\n }),\n suffix: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.node,\n ]),\n placeholder: PropTypes.string,\n keepPlaceholder: PropTypes.bool,\n align: PropTypes.oneOf(['left', 'right']),\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n stretch: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n disabled: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n skeleton: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n characterCounter: PropTypes.oneOfType([\n PropTypes.shape({\n max: PropTypes.number,\n variant: PropTypes.oneOf(['down', 'up']),\n }),\n PropTypes.number,\n ]),\n autoresize: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n autoresize_max_rows: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n class: PropTypes.string,\n textarea_class: PropTypes.string,\n textarea_attributes: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]),\n readOnly: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n cols: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n inner_ref: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n\n ...spacingPropTypes,\n\n className: PropTypes.string,\n textarea_element: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.node,\n ]),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n on_change: PropTypes.func,\n on_focus: PropTypes.func,\n on_blur: PropTypes.func,\n on_key_down: PropTypes.func,\n on_state_update: PropTypes.func,\n }\n\n static defaultProps = {\n value: 'initval',\n id: null,\n label: null,\n label_direction: null,\n label_sr_only: null,\n status: null,\n textarea_state: null,\n status_state: 'error',\n status_props: null,\n status_no_animation: null,\n globalStatus: null,\n suffix: null,\n placeholder: null,\n keepPlaceholder: null,\n align: null,\n size: null,\n stretch: null,\n disabled: null,\n skeleton: null,\n autoresize: null,\n autoresize_max_rows: null,\n characterCounter: null,\n textarea_class: null,\n class: null,\n textarea_attributes: null,\n readOnly: false,\n rows: null,\n cols: null,\n inner_ref: null,\n\n className: null,\n textarea_element: null,\n children: null,\n\n on_change: null,\n on_focus: null,\n on_blur: null,\n on_key_down: null,\n on_state_update: null,\n }\n\n static getDerivedStateFromProps(props, state) {\n const value = Textarea.getValue(props)\n if (\n value !== 'initval' &&\n value !== state.value &&\n value !== state._value\n ) {\n if (\n value !== state.value &&\n typeof props.on_state_update === 'function'\n ) {\n dispatchCustomElementEvent({ props }, 'on_state_update', { value })\n }\n state.value = value\n }\n if (props.textarea_state) {\n state.textareaState = props.textarea_state\n }\n state._value = props.value\n return state\n }\n\n static hasValue(value) {\n return (\n ((typeof value === 'string' || typeof value === 'number') &&\n String(value).length > 0) ||\n false\n )\n }\n\n static getValue(props) {\n const value = processChildren(props)\n if (value === '' || Textarea.hasValue(value)) {\n return value\n }\n return props.value\n }\n\n state = {\n textareaState: 'virgin',\n value: null,\n _value: null,\n }\n\n constructor(props) {\n super(props)\n\n this._ref = React.createRef()\n this._id = props.id || makeUniqueId() // cause we need an id anyway\n\n if (props.textarea_state) {\n this.state.textareaState = props.textarea_state\n }\n\n try {\n if (typeof navigator !== 'undefined') {\n this.resizeModifier =\n /Firefox|Edg/.test(navigator.userAgent) ||\n (/Chrome/.test(navigator.userAgent) &&\n /Win/.test(navigator.platform))\n ? 'large'\n : false\n\n if (!this.resizeModifier) {\n this.resizeModifier =\n /Safari|Chrome/.test(navigator.userAgent) &&\n /Mac/.test(navigator.platform)\n ? 'medium'\n : false\n }\n }\n } catch (error) {\n console.error(error)\n }\n }\n componentDidMount() {\n const props = this.getProps()\n if (props.inner_ref) {\n typeof props.inner_ref === 'function'\n ? props.inner_ref(this._ref.current)\n : (props.inner_ref.current = this._ref.current)\n }\n\n if (isTrue(props.autoresize) && typeof window !== 'undefined') {\n this.setAutosize()\n try {\n this.resizeObserver = new ResizeObserver(this.setAutosize)\n this.resizeObserver.observe(document.body)\n } catch (e) {\n window.addEventListener('resize', this.setAutosize)\n }\n }\n }\n componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect()\n this.resizeObserver = null\n }\n if (typeof window !== 'undefined') {\n window.removeEventListener('resize', this.setAutosize)\n }\n }\n onFocusHandler = (event) => {\n const { value } = this._ref.current\n this.setState({\n value,\n textareaState: 'focus',\n })\n dispatchCustomElementEvent(this, 'on_focus', { value, event })\n }\n onBlurHandler = (event) => {\n const { value } = event.target\n this.setState({\n value,\n textareaState: Textarea.hasValue(value) ? 'dirty' : 'initial',\n })\n dispatchCustomElementEvent(this, 'on_blur', { value, event })\n }\n onChangeHandler = (event) => {\n const { value } = event.target\n\n const props = this.getProps()\n const autoresize = isTrue(props.autoresize)\n\n if (autoresize) {\n this.prepareAutosize()\n }\n\n const rows = this.getRows(value)\n\n const ret = dispatchCustomElementEvent(this, 'on_change', {\n value,\n rows,\n event,\n })\n if (ret !== false) {\n this.setState({ value })\n if (autoresize) {\n this.setAutosize(rows)\n }\n }\n }\n onKeyDownHandler = (event) => {\n const rows = this.getRows()\n const { value } = event.target\n dispatchCustomElementEvent(this, 'on_key_down', {\n value,\n rows,\n event,\n })\n }\n prepareAutosize = () => {\n const elem = this._ref.current\n if (!elem) {\n return // stop here if no element was gotten\n }\n try {\n elem.style.height = 'auto'\n } catch (e) {\n warn(e)\n }\n }\n setAutosize = (rows = null) => {\n const elem = this._ref.current\n if (!elem) {\n return // stop here if no element was gotten\n }\n try {\n if (typeof this._heightOffset === 'undefined') {\n this._heightOffset = elem.offsetHeight - elem.clientHeight\n }\n\n elem.style.height = 'auto'\n\n // get rows after we set height to auto, this way we get 100% correct rows\n const lineHeight = this.getLineHeight()\n let newHeight = elem.scrollHeight + this._heightOffset\n if (!rows) {\n rows = this.getRows()\n }\n\n if (rows === 1) {\n if (newHeight > lineHeight) {\n newHeight = lineHeight\n }\n }\n\n const props = this.getProps()\n const maxRows = parseFloat(props.autoresize_max_rows)\n if (maxRows > 0) {\n const maxHeight = maxRows * lineHeight\n\n if (rows > maxRows || newHeight > maxHeight) {\n newHeight = maxHeight\n }\n }\n\n elem.style.height = newHeight + 'px'\n } catch (e) {\n warn(e)\n }\n }\n getRows() {\n return (\n Math.floor(this._ref.current.scrollHeight / this.getLineHeight()) ||\n 1\n )\n }\n getLineHeight() {\n return parseFloat(getComputedStyle(this._ref.current).lineHeight) || 0\n }\n getProps() {\n return extendPropsWithContextInClassComponent(\n this.props,\n Textarea.defaultProps,\n { skeleton: this.context?.skeleton },\n this.context.getTranslation(this.props).Textarea,\n // Deprecated – can be removed in v11\n pickFormElementProps(this.context?.FormRow),\n pickFormElementProps(this.context?.formElement),\n this.context.Textarea\n )\n }\n render() {\n // use only the props from context, who are available here anyway\n const props = this.getProps()\n\n const {\n label,\n label_direction,\n label_sr_only,\n status,\n status_state,\n status_props,\n status_no_animation,\n globalStatus,\n suffix,\n disabled,\n skeleton,\n stretch,\n placeholder,\n keepPlaceholder,\n align,\n size,\n textarea_class,\n readOnly,\n textarea_attributes,\n class: _className,\n className,\n autoresize,\n characterCounter,\n autoresize_max_rows, //eslint-disable-line\n id: _id, //eslint-disable-line\n children, //eslint-disable-line\n value: _value, //eslint-disable-line\n textarea_element: _textarea_element, //eslint-disable-line\n\n ...attributes\n } = props\n\n const { value, textareaState } = this.state\n\n const id = this._id\n const showStatus = getStatusState(status)\n const hasValue = Textarea.hasValue(value)\n\n // pass along all props we wish to have as params\n let { textarea_element: TextareaElement } = props\n\n const textareaAttributes = textarea_attributes\n ? typeof textarea_attributes === 'string'\n ? JSON.parse(textarea_attributes)\n : textarea_attributes\n : {}\n\n const textareaParams = {\n className: classnames('dnb-textarea__textarea', textarea_class),\n role: 'textbox',\n value: hasValue ? value : '',\n id,\n name: id,\n disabled: isTrue(disabled) || isTrue(skeleton),\n 'aria-placeholder': placeholder,\n ...attributes,\n ...textareaAttributes,\n onChange: this.onChangeHandler,\n onFocus: this.onFocusHandler,\n onBlur: this.onBlurHandler,\n // onPaste: this.onChangeHandler,\n onKeyDown: this.onKeyDownHandler,\n }\n\n // we may consider using: aria-details\n if (showStatus || suffix) {\n textareaParams['aria-describedby'] = combineDescribedBy(\n textareaParams,\n showStatus ? id + '-status' : null,\n suffix ? id + '-suffix' : null\n )\n }\n if (readOnly) {\n textareaParams['aria-readonly'] = textareaParams.readOnly = true\n }\n\n const mainParams = {\n className: classnames(\n 'dnb-textarea',\n `dnb-textarea--${textareaState}`,\n disabled && 'dnb-textarea--disabled',\n hasValue && 'dnb-textarea--has-content',\n align && `dnb-textarea__align--${align}`,\n size && `dnb-textarea__size--${size}`,\n status && `dnb-textarea__status--${status_state}`,\n autoresize && 'dnb-textarea__autoresize',\n !autoresize &&\n this.resizeModifier &&\n `dnb-textarea__resize--${this.resizeModifier}`,\n label_direction && `dnb-textarea--${label_direction}`,\n isTrue(stretch) && `dnb-textarea--stretch`,\n isTrue(keepPlaceholder) && `dnb-textarea--keep-placeholder`,\n 'dnb-form-component',\n createSkeletonClass(null, skeleton),\n createSpacingClasses(props),\n _className,\n className\n ),\n }\n\n const innerParams = {\n className: classnames(\n 'dnb-textarea__inner',\n createSkeletonClass('shape', skeleton, this.context)\n ),\n }\n\n const shellParams = {\n className: classnames('dnb-textarea__shell'),\n }\n\n if (isTrue(disabled) || isTrue(skeleton)) {\n shellParams['aria-disabled'] = true\n }\n\n // to show the ending dots on a placeholder, if the text is longer\n const placeholderStyle =\n parseFloat(props.rows) > 0\n ? {\n '--textarea-rows': parseFloat(props.rows),\n }\n : null\n\n skeletonDOMAttributes(innerParams, skeleton, this.context)\n\n // also used for code markup simulation\n validateDOMAttributes(this.props, textareaParams)\n validateDOMAttributes(null, innerParams)\n validateDOMAttributes(null, shellParams)\n\n if (TextareaElement && typeof TextareaElement === 'function') {\n TextareaElement = TextareaElement(textareaParams, this._ref)\n } else if (!TextareaElement && _textarea_element) {\n TextareaElement = _textarea_element\n }\n\n return (\n <span {...mainParams}>\n {label && (\n <FormLabel\n id={id + '-label'}\n for_id={id}\n text={label}\n label_direction={label_direction}\n sr_only={label_sr_only}\n disabled={disabled}\n skeleton={skeleton}\n />\n )}\n\n <span {...innerParams}>\n <AlignmentHelper />\n\n <FormStatus\n show={showStatus}\n id={id + '-form-status'}\n globalStatus={globalStatus}\n label={label}\n text_id={id + '-status'} // used for \"aria-describedby\"\n text={status}\n state={status_state}\n no_animation={status_no_animation}\n skeleton={skeleton}\n {...status_props}\n />\n\n <span className=\"dnb-textarea__row\">\n <span {...shellParams}>\n {TextareaElement || (\n <textarea ref={this._ref} {...textareaParams} />\n )}\n\n {!hasValue &&\n placeholder &&\n (textareaState !== 'focus' || keepPlaceholder) && (\n <span\n className={classnames(\n 'dnb-textarea__placeholder',\n align ? `dnb-textarea__align--${align}` : null\n )}\n style={placeholderStyle}\n aria-hidden\n >\n {placeholder}\n </span>\n )}\n\n <span className=\"dnb-textarea__state\" />\n </span>\n\n {suffix && (\n <Suffix\n className=\"dnb-textarea__suffix\"\n id={id + '-suffix'} // used for \"aria-describedby\"\n context={props}\n >\n {suffix}\n </Suffix>\n )}\n </span>\n\n {characterCounter && (\n <TextCounter\n top=\"x-small\"\n text={value}\n max={characterCounter}\n lang={props.lang}\n locale={props.locale}\n {...characterCounter}\n />\n )}\n </span>\n </span>\n )\n }\n}\n\nTextarea._formElement = true\nTextarea._supportsSpacingProps = true\n"],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export type FilterData = (path: Path, value: any, props: FieldProps, internal: {
|
|
|
17
17
|
export interface ContextState {
|
|
18
18
|
id?: Identifier;
|
|
19
19
|
hasContext: boolean;
|
|
20
|
-
/** The dataset for the form / form
|
|
20
|
+
/** The dataset for the form / form wizard */
|
|
21
21
|
data: any;
|
|
22
22
|
/** Should the form validate data before submitting? */
|
|
23
23
|
errors?: Record<string, Error>;
|
|
@@ -43,6 +43,7 @@ export interface ContextState {
|
|
|
43
43
|
handleUnMountField: (path: Path) => void;
|
|
44
44
|
formState: SubmitState;
|
|
45
45
|
setFormState?: (state: SubmitState) => void;
|
|
46
|
+
setSubmitState?: (state: EventStateObject) => void;
|
|
46
47
|
handleSubmitCall: ({ onSubmit, enableAsyncBehaviour, skipFieldValidation, skipErrorCheck, }: {
|
|
47
48
|
onSubmit: () => EventReturnWithStateObject | void | Promise<EventReturnWithStateObject | void>;
|
|
48
49
|
enableAsyncBehaviour: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","disabled","submitState","handlePathChange","handlePathChangeUnvalidated","updateDataValue","setData","filterDataHandler","validateData","handleSubmit","scrollToTop","showAllErrors","formState","setFormState","setFieldEventListener","handleSubmitCall","setShowAllErrors","mountedFieldPaths","handleMountField","handleUnMountField","hasErrors","hasFieldState","checkFieldStateFor","setFieldState","setFieldError","setProps","ajvInstance","contextErrorMessages","_isInsideFormElement","props","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, makeAjvInstance } from '../utils/ajv'\nimport {\n AllJSONSchemaVersions,\n CustomErrorMessagesWithPaths,\n SubmitState,\n Path,\n EventStateObject,\n EventReturnWithStateObject,\n Identifier,\n FieldProps,\n FormError,\n} from '../types'\nimport { Props as ProviderProps } from './Provider'\n\ntype HandleSubmitProps = {\n formElement?: HTMLFormElement\n}\n\nexport type EventListenerCall = {\n path: Path\n type: 'onSubmit'\n callback: () => any\n}\n\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterData = (\n path: Path,\n value: any,\n props: FieldProps,\n internal: {\n error: Error | undefined\n }\n) => boolean | undefined\n\nexport interface ContextState {\n id?: Identifier\n hasContext: boolean\n /** The dataset for the form / form
|
|
1
|
+
{"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","disabled","submitState","handlePathChange","handlePathChangeUnvalidated","updateDataValue","setData","filterDataHandler","validateData","handleSubmit","scrollToTop","showAllErrors","formState","setFormState","setSubmitState","setFieldEventListener","handleSubmitCall","setShowAllErrors","mountedFieldPaths","handleMountField","handleUnMountField","hasErrors","hasFieldState","checkFieldStateFor","setFieldState","setFieldError","setProps","ajvInstance","contextErrorMessages","_isInsideFormElement","props","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, makeAjvInstance } from '../utils/ajv'\nimport {\n AllJSONSchemaVersions,\n CustomErrorMessagesWithPaths,\n SubmitState,\n Path,\n EventStateObject,\n EventReturnWithStateObject,\n Identifier,\n FieldProps,\n FormError,\n} from '../types'\nimport { Props as ProviderProps } from './Provider'\n\ntype HandleSubmitProps = {\n formElement?: HTMLFormElement\n}\n\nexport type EventListenerCall = {\n path: Path\n type: 'onSubmit'\n callback: () => any\n}\n\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterData = (\n path: Path,\n value: any,\n props: FieldProps,\n internal: {\n error: Error | undefined\n }\n) => boolean | undefined\n\nexport interface ContextState {\n id?: Identifier\n hasContext: boolean\n /** The dataset for the form / form wizard */\n data: any\n /** Should the form validate data before submitting? */\n errors?: Record<string, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (\n path: Path,\n value?: any\n ) =>\n | EventReturnWithStateObject\n | unknown\n | Promise<EventReturnWithStateObject | unknown>\n handlePathChangeUnvalidated: (path: Path, value: any) => void\n updateDataValue: (path: Path, value: any) => void\n setData: (data: any) => void\n filterDataHandler: (data: any, filter: FilterData) => any\n validateData: () => void\n handleSubmit: (props?: HandleSubmitProps) => any\n scrollToTop: () => void\n // Error status\n showAllErrors: boolean\n setShowAllErrors: (showAllErrors: boolean) => void\n hasErrors: () => boolean\n hasFieldState: (state: SubmitState) => boolean\n checkFieldStateFor: (path: Path, state: SubmitState) => boolean\n setFieldState: (path: Path, fieldState: SubmitState) => void\n setFieldError: (path: Path, error: Error | FormError) => void\n // Mounted fields - Components telling the provider what fields is on screen at any time\n mountedFieldPaths: string[]\n handleMountField: (path: Path) => void\n handleUnMountField: (path: Path) => void\n formState: SubmitState\n setFormState?: (state: SubmitState) => void\n setSubmitState?: (state: EventStateObject) => void\n handleSubmitCall: ({\n onSubmit,\n enableAsyncBehaviour,\n skipFieldValidation,\n skipErrorCheck,\n }: {\n onSubmit: () =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n enableAsyncBehaviour: boolean\n skipFieldValidation?: boolean\n skipErrorCheck?: boolean\n }) => void\n setFieldEventListener: (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => void\n setProps: (path: Path, props: any) => void\n ajvInstance: Ajv\n contextErrorMessages: CustomErrorMessagesWithPaths\n schema: AllJSONSchemaVersions\n disabled: boolean\n submitState: Partial<EventStateObject>\n _isInsideFormElement?: boolean\n props: ProviderProps<unknown>\n}\n\nexport const defaultContextState: ContextState = {\n hasContext: false,\n data: undefined,\n schema: undefined,\n disabled: undefined,\n submitState: undefined,\n handlePathChange: () => null,\n handlePathChangeUnvalidated: () => null,\n updateDataValue: () => null,\n setData: () => null,\n filterDataHandler: () => null,\n validateData: () => null,\n handleSubmit: () => null,\n scrollToTop: () => null,\n showAllErrors: false,\n formState: undefined,\n setFormState: () => null,\n setSubmitState: () => null,\n setFieldEventListener: () => null,\n handleSubmitCall: () => null,\n setShowAllErrors: () => null,\n mountedFieldPaths: [],\n handleMountField: () => null,\n handleUnMountField: () => null,\n hasErrors: () => false,\n hasFieldState: () => false,\n checkFieldStateFor: () => false,\n setFieldState: () => null,\n setFieldError: () => null,\n setProps: () => null,\n ajvInstance: makeAjvInstance(),\n contextErrorMessages: undefined,\n _isInsideFormElement: false,\n props: null,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAcC,eAAe,QAAQ,cAAc;AAwGnD,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,UAAU,EAAE,KAAK;EACjBC,IAAI,EAAEC,SAAS;EACfC,MAAM,EAAED,SAAS;EACjBE,QAAQ,EAAEF,SAAS;EACnBG,WAAW,EAAEH,SAAS;EACtBI,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,2BAA2B,EAAEA,CAAA,KAAM,IAAI;EACvCC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,OAAO,EAAEA,CAAA,KAAM,IAAI;EACnBC,iBAAiB,EAAEA,CAAA,KAAM,IAAI;EAC7BC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,WAAW,EAAEA,CAAA,KAAM,IAAI;EACvBC,aAAa,EAAE,KAAK;EACpBC,SAAS,EAAEb,SAAS;EACpBc,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,qBAAqB,EAAEA,CAAA,KAAM,IAAI;EACjCC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,iBAAiB,EAAE,EAAE;EACrBC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAI;EAC9BC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,kBAAkB,EAAEA,CAAA,KAAM,KAAK;EAC/BC,aAAa,EAAEA,CAAA,KAAM,IAAI;EACzBC,aAAa,EAAEA,CAAA,KAAM,IAAI;EACzBC,QAAQ,EAAEA,CAAA,KAAM,IAAI;EACpBC,WAAW,EAAEhC,eAAe,CAAC,CAAC;EAC9BiC,oBAAoB,EAAE7B,SAAS;EAC/B8B,oBAAoB,EAAE,KAAK;EAC3BC,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,OAAO,GAAGrC,KAAK,CAACsC,aAAa,CAAepC,mBAAmB,CAAC;AAEtE,eAAemC,OAAO"}
|
|
@@ -189,13 +189,14 @@ export default function Provider(props) {
|
|
|
189
189
|
extendAttachment === null || extendAttachment === void 0 ? void 0 : extendAttachment({
|
|
190
190
|
filterDataHandler,
|
|
191
191
|
hasErrors,
|
|
192
|
-
setShowAllErrors
|
|
192
|
+
setShowAllErrors,
|
|
193
|
+
setSubmitState
|
|
193
194
|
});
|
|
194
195
|
if (filterData) {
|
|
195
196
|
rerenderUseDataHook === null || rerenderUseDataHook === void 0 ? void 0 : rerenderUseDataHook();
|
|
196
197
|
}
|
|
197
198
|
}
|
|
198
|
-
}, [extendAttachment, filterData, filterDataHandler, hasErrors, id, rerenderUseDataHook, setShowAllErrors]);
|
|
199
|
+
}, [extendAttachment, filterData, filterDataHandler, hasErrors, id, rerenderUseDataHook, setShowAllErrors, setSubmitState]);
|
|
199
200
|
const updateDataValue = useCallback((path, value) => {
|
|
200
201
|
var _internalDataRef$curr;
|
|
201
202
|
if (!path) {
|
|
@@ -452,6 +453,7 @@ export default function Provider(props) {
|
|
|
452
453
|
handleUnMountField,
|
|
453
454
|
handleSubmitCall,
|
|
454
455
|
setFormState,
|
|
456
|
+
setSubmitState,
|
|
455
457
|
setShowAllErrors,
|
|
456
458
|
setFieldEventListener,
|
|
457
459
|
setFieldState,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.js","names":["React","useRef","useMemo","useCallback","useReducer","useEffect","pointer","makeAjvInstance","ajvErrorsToFormErrors","SharedProvider","useMountEffect","useUpdateEffect","isAsync","useSharedState","Context","structuredClone","useLayoutEffect","window","isArrayJsonPointer","Provider","props","_sharedAttachments$da","_rest$disabled","forceUpdate","id","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete","scrollTopOnSubmit","minimumAsyncBehaviorTime","asyncSubmitTimeout","sessionStorageId","ajvInstance","filterData","errorMessages","contextErrorMessages","children","rest","_objectWithoutProperties","_excluded","undefined","console","error","ajvRef","mountedFieldPathsRef","errorsRef","showAllErrorsRef","setShowAllErrors","showAllErrors","current","submitStateRef","setSubmitState","state","Object","assign","formStateRef","setFormState","formState","fieldErrorRef","fieldStateRef","initialData","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","ajvValidatorRef","executeAjvValidator","_ajvValidatorRef$curr","call","errors","validateData","checkFieldStateFor","path","_errorsRef$current","Boolean","Error","hasFieldState","some","hasErrors","setFieldError","setFieldState","fieldState","filterDataHandler","filter","filtered","_objectSpread","entries","fieldPropsRef","forEach","_fieldErrorRef$curren","exists","has","result","get","remove","setProps","hasFieldWithAsyncValidator","validator","onBlurValidator","sharedData","sharedAttachments","setSharedData","set","extendSharedData","extend","extendAttachment","rerenderUseDataHook","cacheRef","shared","hasUsedInitialData","update","updateDataValue","value","_internalDataRef$curr","givenData","match","newData","e","_window$sessionStorag2","setItem","stringify","setData","handlePathChangeUnvalidated","handlePathChange","handleMountField","addListPath","handleUnMountField","_fieldPropsRef$curren","removeListPath","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmitCall","args","enableAsyncBehaviour","skipFieldValidation","skipErrorCheck","asyncBehaviorIsEnabled","type","callback","fieldEventListenersRef","includes","warning","info","requestAnimationFrame","onSubmitContinueRef","handleSubmit","formElement","opts","resetForm","_formElement$reset","reset","removeItem","clearData","completeResult","keys","length","setFieldEventListener","p","t","push","_onSubmitContinueRef$","_ajvRef$current","compile","_ajvRef$current2","onTimeout","bufferedFormState","useFormStatusBuffer","waitFor","submitState","disabled","createElement","hasContext","mountedFieldPaths","paths","concat","thisPath","stateRef","nowRef","timeoutRef","setState","clear","key","clearTimeout","hadCompleteRef","isTest","process","env","NODE_ENV","minimum","setTimeout","Date","now","offset","Math","max","delay","complete","timeout"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, {\n useRef,\n useMemo,\n useCallback,\n useReducer,\n useEffect,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n} from '../../utils/ajv'\nimport {\n FormError,\n CustomErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n SubmitState,\n Path,\n EventStateObject,\n OnSubmit,\n OnChange,\n EventReturnWithStateObject,\n} from '../../types'\nimport SharedProvider from '../../../../shared/Provider'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport useUpdateEffect from '../../../../shared/helpers/useUpdateEffect'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport Context, {\n ContextState,\n EventListenerCall,\n FilterData,\n} from '../Context'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport interface Props<Data extends JsonObject> {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: string\n /**\n * Default source data, only used if no other source is available, and not leading to updates if changed after mount\n */\n defaultData?: Partial<Data>\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Partial<Data>\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions\n /**\n * Custom Ajv instance, if you want to use your own\n */\n ajvInstance?: Ajv\n /**\n * Custom error messages for the whole data set\n */\n errorMessages?: CustomErrorMessagesWithPaths\n /**\n * Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.\n */\n filterData?: FilterData\n /**\n * Change handler for the whole data set.\n * You can provide an async function to show an indicator on the current label during a field change.\n */\n onChange?: OnChange<Data>\n /**\n * Change handler for each value\n */\n onPathChange?: (\n path: Path,\n value: any\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Will emit on a form submit – if validation has passed.\n * You can provide an async function to shows a submit indicator during submit. All form elements will be disabled during the submit.\n */\n onSubmit?: OnSubmit\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\n /**\n * Will be called when the onSubmit is finished and had not errors\n */\n onSubmitComplete?: (\n data: Data,\n /**\n * The result of the onSubmit function\n */\n result: unknown\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Minimum time to display the submit indicator.\n */\n minimumAsyncBehaviorTime?: number\n /**\n * The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission.\n */\n asyncSubmitTimeout?: number\n /**\n * Scroll to top on submit\n */\n scrollTopOnSubmit?: boolean\n /**\n * Key for caching the data in session storage\n */\n sessionStorageId?: string\n children: React.ReactNode\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>(\n props: Props<Data>\n) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n const {\n id,\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n scrollTopOnSubmit,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n sessionStorageId,\n ajvInstance,\n filterData,\n errorMessages: contextErrorMessages,\n children,\n ...rest\n } = props\n\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n console.error(\n 'Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.'\n )\n }\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n\n // - Paths\n const mountedFieldPathsRef = useRef<Path[]>([])\n\n // - Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<Path, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n const submitStateRef = useRef<Partial<EventStateObject>>({})\n const setSubmitState = useCallback((state: EventStateObject) => {\n Object.assign(submitStateRef.current, state)\n forceUpdate()\n }, [])\n\n // - Progress\n const formStateRef = useRef<SubmitState>()\n const setFormState = useCallback((formState: SubmitState) => {\n formStateRef.current = formState\n forceUpdate()\n }, [])\n\n // - States (e.g. error) reported by fields, based on their direct validation rules\n const fieldErrorRef = useRef<Record<Path, Error>>({})\n const fieldStateRef = useRef<Record<Path, SubmitState>>({})\n\n // - Data\n const initialData = useMemo<Data>(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n return data ?? defaultData\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Partial<Data>>(initialData)\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n const executeAjvValidator = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvValidatorRef.current?.(internalDataRef.current)) {\n // Errors found\n errorsRef.current = ajvErrorsToFormErrors(\n ajvValidatorRef.current.errors,\n internalDataRef.current\n )\n } else {\n errorsRef.current = undefined\n }\n }, [])\n const validateData = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n executeAjvValidator()\n forceUpdate()\n }, [executeAjvValidator])\n\n // - Error handling\n const checkFieldStateFor = useCallback(\n (path: Path, state: SubmitState) => {\n return Boolean(\n state === 'error'\n ? errorsRef.current?.[path] instanceof Error ||\n fieldErrorRef.current[path] instanceof Error\n : fieldStateRef.current[path] === state\n )\n },\n []\n )\n const hasFieldState = useCallback(\n (state: SubmitState) => {\n return mountedFieldPathsRef.current.some((path) => {\n return checkFieldStateFor(path, state)\n })\n },\n [checkFieldStateFor]\n )\n const hasErrors = useCallback(() => {\n return hasFieldState('error')\n }, [hasFieldState])\n\n /**\n * Sets the error state for a specific path\n */\n const setFieldError = useCallback(\n (path: Path, error: Error | FormError) => {\n fieldErrorRef.current[path] = error\n },\n []\n )\n\n /**\n * Sets the field state for a specific path\n */\n const setFieldState = useCallback(\n (path: Path, fieldState: SubmitState) => {\n if (fieldState !== fieldStateRef.current[path]) {\n // The state for the target value was changed\n fieldStateRef.current[path] = fieldState\n forceUpdate()\n }\n },\n []\n )\n\n /**\n * Filter the data set based on the filterData function\n */\n const filterDataHandler = useCallback(\n (data: Data, filter = filterData) => {\n if (filter) {\n const filtered = { ...data }\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n const result = filter(\n path,\n exists ? pointer.get(data, path) : undefined,\n props,\n {\n error: fieldErrorRef.current?.[path],\n }\n )\n if (result === false && exists) {\n pointer.remove(filtered, path)\n }\n })\n\n return filtered\n }\n\n return data\n },\n [filterData]\n )\n const fieldPropsRef = useRef<Record<Path, FieldProps>>({})\n const setProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = props\n },\n []\n )\n const hasFieldWithAsyncValidator = useCallback(() => {\n for (const path in fieldPropsRef.current) {\n const props = fieldPropsRef.current[path]\n if (isAsync(props.validator) || isAsync(props.onBlurValidator)) {\n return true\n }\n }\n\n return false\n }, [])\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAttachments = useSharedState<{\n filterDataHandler?: Props<Data>['filterData']\n hasErrors?: ContextState['hasErrors']\n setShowAllErrors?: ContextState['setShowAllErrors']\n rerenderUseDataHook?: () => void\n }>(id + '-attachments')\n\n const setSharedData = sharedData.set\n const extendSharedData = sharedData.extend\n const extendAttachment = sharedAttachments.extend\n const rerenderUseDataHook = sharedAttachments.data?.rerenderUseDataHook\n\n const cacheRef = useRef({\n data,\n schema,\n shared: sharedData.data,\n hasUsedInitialData: false,\n })\n\n internalDataRef.current = useMemo(() => {\n // NB: \"sharedData.data\" is only available on a rerender.\n // Update the shared state, if initialData is given and no shared state is available.\n // We do almost the same later in a useLayoutEffect, but we need to do it here as well, so we set the data as early as possible.\n if (id && initialData && !sharedData.data) {\n sharedData.update(initialData)\n }\n\n // Merge both internal data and the shared state, if it both where given\n if (\n id &&\n initialData &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data &&\n internalDataRef.current === initialData\n ) {\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // Use shared state if no initial and initial data, and the shared state exists\n if (\n id &&\n !initialData &&\n !internalDataRef.current &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data\n ) {\n return sharedData.data\n }\n\n // Merge the internal data with the shared state, if the shared was updated and not the same as internal data\n if (\n id &&\n sharedData.data &&\n cacheRef.current.shared !== sharedData.data &&\n sharedData.data !== internalDataRef.current\n ) {\n cacheRef.current.shared = sharedData.data\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // When external data has changed, update the internal data\n if (data !== cacheRef.current.data) {\n cacheRef.current.data = data\n return data\n }\n\n return internalDataRef.current\n }, [data, id, initialData, sharedData])\n\n useLayoutEffect(() => {\n // Set the shared state, if initialData was given\n if (id && initialData && !sharedData.data) {\n extendSharedData?.(initialData)\n }\n }, [id, initialData, extendSharedData, sharedData.data])\n\n useMemo(() => {\n executeAjvValidator()\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [internalDataRef.current]) // run validation when internal data has changed\n\n useLayoutEffect(() => {\n if (id) {\n extendAttachment?.({\n filterDataHandler,\n hasErrors,\n setShowAllErrors,\n })\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n extendAttachment,\n filterData,\n filterDataHandler,\n hasErrors,\n id,\n rerenderUseDataHook,\n setShowAllErrors,\n ])\n\n /**\n * Update the data set\n */\n const updateDataValue: ContextState['updateDataValue'] = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n const givenData = (\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalDataRef.current ??\n (path.match(isArrayJsonPointer) ? [] : {})\n ) as Data\n\n let newData: Data = null\n try {\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n newData = structuredClone(givenData)\n } catch (e) {\n newData = givenData\n }\n\n if (path !== '/') {\n pointer.set(newData, path, value)\n }\n\n internalDataRef.current = newData\n\n if (id) {\n // Will ensure that Form.getData() gets the correct data\n extendSharedData?.(newData)\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n\n if (sessionStorageId && typeof window !== 'undefined') {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(newData)\n )\n }\n\n forceUpdate()\n\n return newData\n },\n [\n id,\n sessionStorageId,\n extendSharedData,\n filterData,\n rerenderUseDataHook,\n ]\n )\n\n const setData = useCallback((newData: Data) => {\n internalDataRef.current = newData\n forceUpdate()\n }, [])\n\n /**\n * Update the data set on user interaction (unvalidated)\n */\n const handlePathChangeUnvalidated: ContextState['handlePathChange'] =\n useCallback(\n async (path, value) => {\n if (!path) {\n return null\n }\n\n updateDataValue(path, value)\n\n if (isAsync(onPathChange)) {\n await onPathChange?.(path, value)\n } else {\n onPathChange?.(path, value)\n }\n },\n [onPathChange, updateDataValue]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: ContextState['handlePathChange'] = useCallback(\n async (path, value = '_undefined_') => {\n if (!path) {\n return null\n }\n\n if (value !== '_undefined_') {\n handlePathChangeUnvalidated(path, value)\n }\n\n showAllErrorsRef.current = false\n\n validateData()\n\n if (isAsync(onChange)) {\n return await onChange(internalDataRef.current as Data)\n }\n\n return onChange?.(internalDataRef.current as Data)\n },\n [handlePathChangeUnvalidated, onChange, validateData]\n )\n\n // - Mounted fields\n const handleMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n if (fieldPropsRef.current?.[path]) {\n delete fieldPropsRef.current[path]\n }\n }, [])\n\n // - Features\n const scrollToTop = useCallback(() => {\n if (typeof window !== 'undefined') {\n window?.scrollTo?.({ top: 0, behavior: 'smooth' })\n }\n }, [])\n\n /**\n * Shared logic dedicated to submit the whole form\n */\n const handleSubmitCall = useCallback<ContextState['handleSubmitCall']>(\n async (args) => {\n const {\n onSubmit,\n enableAsyncBehaviour,\n skipFieldValidation,\n skipErrorCheck,\n } = args\n\n setSubmitState({ error: undefined })\n\n const asyncBehaviorIsEnabled =\n (skipErrorCheck\n ? true\n : // Don't enable async behaviour if we have errors, but when we have a pending state\n !hasErrors() || hasFieldState('pending')) &&\n (enableAsyncBehaviour || hasFieldWithAsyncValidator())\n\n if (asyncBehaviorIsEnabled) {\n setFormState('pending')\n }\n\n // Just call the submit listeners \"once\", and not on the retry/recall\n if (!skipFieldValidation) {\n for (const {\n path,\n type,\n callback,\n } of fieldEventListenersRef.current) {\n if (\n type === 'onSubmit' &&\n mountedFieldPathsRef.current.includes(path)\n ) {\n // Call all submit listener callbacks (e.g. to validate fields)\n if (asyncBehaviorIsEnabled) {\n await callback()\n } else {\n callback()\n }\n }\n }\n }\n\n if (\n !(skipErrorCheck ? false : hasErrors()) &&\n !hasFieldState('pending') &&\n (skipFieldValidation ? true : !hasFieldState('error'))\n ) {\n let result: EventStateObject | unknown\n\n try {\n result = await onSubmit()\n\n if (result instanceof Error) {\n throw result\n }\n } catch (error) {\n result = { error }\n }\n\n const state = result as EventStateObject\n\n if (asyncBehaviorIsEnabled) {\n setFormState(state?.error ? 'abort' : 'complete')\n }\n\n // Force the state to be set by a custom status\n if (state?.['status']) {\n setFormState(state?.['status'])\n }\n\n if (state?.error || state?.warning || state?.info) {\n setSubmitState(state)\n }\n } else {\n if (asyncBehaviorIsEnabled) {\n window.requestAnimationFrame(() => {\n setFormState(undefined)\n })\n\n if (!skipFieldValidation) {\n // Add a event listener to continue the submit after the pending state is resolved\n onSubmitContinueRef.current = () => {\n window.requestAnimationFrame(() => {\n // Do not call the validators again,\n // because we already did it in the first call\n // If they are async, we wait for them to finish anyway\n handleSubmitCall({ ...args, skipFieldValidation: true })\n })\n }\n }\n }\n\n onSubmitRequest?.()\n\n setShowAllErrors(true)\n }\n\n return internalDataRef.current\n },\n [\n setSubmitState,\n hasErrors,\n hasFieldWithAsyncValidator,\n hasFieldState,\n setFormState,\n onSubmitRequest,\n setShowAllErrors,\n ]\n )\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n async ({ formElement = null } = {}) => {\n handleSubmitCall({\n enableAsyncBehaviour: isAsync(onSubmit),\n onSubmit: async () => {\n const args = filterDataHandler(internalDataRef.current as Data)\n const opts = {\n resetForm: () => {\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n }\n\n forceUpdate() // in order to fill \"empty fields\" again with their internal states\n },\n clearData: () => {\n internalDataRef.current = {}\n if (id) {\n setSharedData?.({} as Data)\n } else {\n forceUpdate()\n }\n },\n }\n\n let result = undefined\n\n if (isAsync(onSubmit)) {\n result = await onSubmit(args, opts)\n } else {\n result = onSubmit?.(args, opts)\n }\n\n const completeResult = await onSubmitComplete?.(args, result)\n if (completeResult) {\n result =\n Object.keys(result).length > 0\n ? { ...result, ...completeResult }\n : completeResult\n }\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n\n return result\n },\n })\n },\n [\n filterDataHandler,\n handleSubmitCall,\n id,\n onSubmit,\n onSubmitComplete,\n scrollToTop,\n scrollTopOnSubmit,\n sessionStorageId,\n setSharedData,\n ]\n )\n\n // Collect listeners to be called during form submit\n const fieldEventListenersRef = useRef<Array<EventListenerCall>>([])\n const setFieldEventListener = useCallback(\n (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => {\n fieldEventListenersRef.current =\n fieldEventListenersRef.current.filter(({ path: p, type: t }) => {\n return !(p === path && t === type)\n })\n fieldEventListenersRef.current.push({ path, type, callback })\n },\n []\n )\n\n // Handle unresolved field states during async submit\n const onSubmitContinueRef = useRef<() => void>(null)\n if (!hasFieldState('pending')) {\n onSubmitContinueRef.current?.()\n onSubmitContinueRef.current = null\n }\n\n // - ajv validator routines\n useMountEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n })\n useUpdateEffect(() => {\n if (schema && schema !== cacheRef.current.schema) {\n cacheRef.current.schema = schema\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n\n validateData()\n forceUpdate()\n }\n }, [schema, validateData, forceUpdate])\n\n const onTimeout = useCallback(() => {\n setFormState(undefined)\n setSubmitState({\n info: undefined,\n warning: undefined,\n error: undefined,\n })\n }, [setFormState, setSubmitState])\n\n const { bufferedFormState: formState } = useFormStatusBuffer({\n formState: formStateRef.current,\n waitFor: hasFieldState('pending'),\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n })\n\n const submitState = submitStateRef.current\n const disabled = rest?.['disabled'] ?? formState === 'pending'\n\n return (\n <Context.Provider\n value={{\n /** Method */\n handlePathChange,\n handlePathChangeUnvalidated,\n handleSubmit,\n handleMountField,\n handleUnMountField,\n handleSubmitCall,\n setFormState,\n setShowAllErrors,\n setFieldEventListener,\n setFieldState,\n setFieldError,\n setProps,\n hasErrors,\n hasFieldState,\n checkFieldStateFor,\n validateData,\n updateDataValue,\n setData,\n filterDataHandler,\n scrollToTop,\n\n /** State handling */\n schema,\n disabled,\n formState,\n submitState,\n contextErrorMessages,\n hasContext: true,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n mountedFieldPaths: mountedFieldPathsRef.current,\n ajvInstance: ajvRef.current,\n\n /** Additional */\n id,\n data: internalDataRef.current,\n props,\n ...rest,\n }}\n >\n <SharedProvider formElement={{ disabled }}>\n {children}\n </SharedProvider>\n </Context.Provider>\n )\n}\n\ntype PathList = string[]\n\nfunction addListPath(paths: PathList, path: Path): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nfunction removeListPath(paths: PathList, path: Path): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n\ntype FormStatusBufferProps = {\n minimumAsyncBehaviorTime?: Props<unknown>['minimumAsyncBehaviorTime']\n asyncSubmitTimeout?: Props<unknown>['asyncSubmitTimeout']\n formState: ContextState['formState']\n waitFor: boolean\n onTimeout: () => void\n}\n\nfunction useFormStatusBuffer(props: FormStatusBufferProps) {\n const {\n formState,\n waitFor,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n } = props || {}\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const stateRef = useRef<SubmitState>()\n const nowRef = useRef<number | null>(null)\n const timeoutRef = useRef<{\n complete?: NodeJS.Timeout | null\n reset?: NodeJS.Timeout | null\n timeout?: NodeJS.Timeout | null\n }>({})\n\n const setState = useCallback(\n (state: SubmitState) => {\n stateRef.current = state\n forceUpdate()\n },\n [forceUpdate]\n )\n\n const clear = useCallback(() => {\n for (const key in timeoutRef.current) {\n clearTimeout(timeoutRef.current[key])\n }\n }, [])\n\n const hadCompleteRef = useRef(false)\n\n useEffect(() => {\n // This offset is used to calculate the delay,\n // which ensures that the form state is displayed for at least minimumAsyncBehaviorTime duration.\n // If the form was 'pending' for less than minimumAsyncBehaviorTime,\n // the delay will be the remaining time to reach minimumAsyncBehaviorTime.\n const isTest = process.env.NODE_ENV === 'test'\n const minimum =\n minimumAsyncBehaviorTime ??\n // make it testable\n (isTest ? 1 : 1000)\n\n if (stateRef.current && formState === 'error') {\n clear()\n setState(undefined)\n return\n }\n\n if (formState === 'abort') {\n clear()\n setState('abort')\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n }, minimum)\n return\n }\n\n if (formState === 'complete') {\n hadCompleteRef.current = true\n }\n\n if (formState === 'pending' && stateRef.current !== 'pending') {\n clear()\n nowRef.current = Date.now()\n hadCompleteRef.current = false\n setState('pending')\n } else if (stateRef.current === 'pending') {\n const offset = Math.max(Date.now() - nowRef.current)\n const delay = isTest ? minimum : Math.max(minimum - offset, 0)\n\n if (!waitFor) {\n timeoutRef.current.complete = setTimeout(() => {\n if (hadCompleteRef.current) {\n setState('complete')\n }\n }, delay)\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n clear()\n }, delay + minimum)\n }\n }\n\n if (stateRef.current === 'pending') {\n timeoutRef.current.timeout = setTimeout(() => {\n clear()\n setState(undefined)\n onTimeout?.()\n }, asyncSubmitTimeout ?? 30000)\n }\n\n return clear\n }, [\n clear,\n minimumAsyncBehaviorTime,\n formState,\n setState,\n waitFor,\n asyncSubmitTimeout,\n onTimeout,\n ])\n\n return { bufferedFormState: stateRef.current }\n}\n"],"mappings":";;;;;;;AAAA,OAAOA,KAAK,IACVC,MAAM,EACNC,OAAO,EACPC,WAAW,EACXC,UAAU,EACVC,SAAS,QACJ,OAAO;AACd,OAAOC,OAAO,MAAsB,cAAc;AAElD,SAEEC,eAAe,EACfC,qBAAqB,QAChB,iBAAiB;AAaxB,OAAOC,cAAc,MAAM,6BAA6B;AACxD,OAAOC,cAAc,MAAM,2CAA2C;AACtE,OAAOC,eAAe,MAAM,4CAA4C;AACxE,SAASC,OAAO,QAAQ,oCAAoC;AAC5D,SAASC,cAAc,QAAQ,2CAA2C;AAC1E,OAAOC,OAAO,MAIP,YAAY;AAMnB,OAAOC,eAAe,MAAM,yBAAyB;AAGrD,MAAMC,eAAe,GACnB,OAAOC,MAAM,KAAK,WAAW,GAAGjB,KAAK,CAACK,SAAS,GAAGL,KAAK,CAACgB,eAAe;AAuFzE,MAAME,kBAAkB,GAAG,cAAc;AAEzC,eAAe,SAASC,QAAQA,CAC9BC,KAAkB,EAClB;EAAA,IAAAC,qBAAA,EAAAC,cAAA;EACA,MAAM,GAAGC,WAAW,CAAC,GAAGnB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAElD,MAAM;MACJoB,EAAE;MACFC,WAAW;MACXC,IAAI;MACJC,MAAM;MACNC,QAAQ;MACRC,YAAY;MACZC,QAAQ;MACRC,eAAe;MACfC,gBAAgB;MAChBC,iBAAiB;MACjBC,wBAAwB;MACxBC,kBAAkB;MAClBC,gBAAgB;MAChBC,WAAW;MACXC,UAAU;MACVC,aAAa,EAAEC,oBAAoB;MACnCC;IAEF,CAAC,GAAGrB,KAAK;IADJsB,IAAI,GAAAC,wBAAA,CACLvB,KAAK,EAAAwB,SAAA;EAGT,IAAIlB,IAAI,KAAKmB,SAAS,IAAIT,gBAAgB,KAAKS,SAAS,EAAE;IACxDC,OAAO,CAACC,KAAK,CACX,kLACF,CAAC;EACH;EAGA,MAAMC,MAAM,GAAG/C,MAAM,CAAMM,eAAe,CAAC8B,WAAW,CAAC,CAAC;EAGxD,MAAMY,oBAAoB,GAAGhD,MAAM,CAAS,EAAE,CAAC;EAG/C,MAAMiD,SAAS,GAAGjD,MAAM,CAAsC,CAAC;EAC/D,MAAMkD,gBAAgB,GAAGlD,MAAM,CAAU,KAAK,CAAC;EAC/C,MAAMmD,gBAAgB,GAAGjD,WAAW,CAAEkD,aAAsB,IAAK;IAC/DF,gBAAgB,CAACG,OAAO,GAAGD,aAAa;IACxC9B,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EACN,MAAMgC,cAAc,GAAGtD,MAAM,CAA4B,CAAC,CAAC,CAAC;EAC5D,MAAMuD,cAAc,GAAGrD,WAAW,CAAEsD,KAAuB,IAAK;IAC9DC,MAAM,CAACC,MAAM,CAACJ,cAAc,CAACD,OAAO,EAAEG,KAAK,CAAC;IAC5ClC,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAGN,MAAMqC,YAAY,GAAG3D,MAAM,CAAc,CAAC;EAC1C,MAAM4D,YAAY,GAAG1D,WAAW,CAAE2D,SAAsB,IAAK;IAC3DF,YAAY,CAACN,OAAO,GAAGQ,SAAS;IAChCvC,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAGN,MAAMwC,aAAa,GAAG9D,MAAM,CAAsB,CAAC,CAAC,CAAC;EACrD,MAAM+D,aAAa,GAAG/D,MAAM,CAA4B,CAAC,CAAC,CAAC;EAG3D,MAAMgE,WAAW,GAAG/D,OAAO,CAAO,MAAM;IACtC,IAAIkC,gBAAgB,IAAI,OAAOnB,MAAM,KAAK,WAAW,EAAE;MAAA,IAAAiD,qBAAA;MACrD,MAAMC,eAAe,IAAAD,qBAAA,GACnBjD,MAAM,CAACmD,cAAc,cAAAF,qBAAA,uBAArBA,qBAAA,CAAuBG,OAAO,CAACjC,gBAAgB,CAAC;MAClD,IAAI+B,eAAe,EAAE;QACnB,OAAOG,IAAI,CAACC,KAAK,CAACJ,eAAe,CAAC;MACpC;IACF;IACA,OAAOzC,IAAI,aAAJA,IAAI,cAAJA,IAAI,GAAID,WAAW;EAE5B,CAAC,EAAE,EAAE,CAAC;EACN,MAAM+C,eAAe,GAAGvE,MAAM,CAAgBgE,WAAW,CAAC;EAG1D,MAAMQ,eAAe,GAAGxE,MAAM,CAAmB,CAAC;EAClD,MAAMyE,mBAAmB,GAAGvE,WAAW,CAAC,MAAM;IAAA,IAAAwE,qBAAA;IAC5C,IAAI,CAACF,eAAe,CAACnB,OAAO,EAAE;MAE5B;IACF;IAEA,IAAI,GAAAqB,qBAAA,GAACF,eAAe,CAACnB,OAAO,cAAAqB,qBAAA,eAAvBA,qBAAA,CAAAC,IAAA,CAAAH,eAAe,EAAWD,eAAe,CAAClB,OAAO,CAAC,GAAE;MAEvDJ,SAAS,CAACI,OAAO,GAAG9C,qBAAqB,CACvCiE,eAAe,CAACnB,OAAO,CAACuB,MAAM,EAC9BL,eAAe,CAAClB,OAClB,CAAC;IACH,CAAC,MAAM;MACLJ,SAAS,CAACI,OAAO,GAAGT,SAAS;IAC/B;EACF,CAAC,EAAE,EAAE,CAAC;EACN,MAAMiC,YAAY,GAAG3E,WAAW,CAAC,MAAM;IACrC,IAAI,CAACsE,eAAe,CAACnB,OAAO,EAAE;MAE5B;IACF;IAEAoB,mBAAmB,CAAC,CAAC;IACrBnD,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,CAACmD,mBAAmB,CAAC,CAAC;EAGzB,MAAMK,kBAAkB,GAAG5E,WAAW,CACpC,CAAC6E,IAAU,EAAEvB,KAAkB,KAAK;IAAA,IAAAwB,kBAAA;IAClC,OAAOC,OAAO,CACZzB,KAAK,KAAK,OAAO,GACb,EAAAwB,kBAAA,GAAA/B,SAAS,CAACI,OAAO,cAAA2B,kBAAA,uBAAjBA,kBAAA,CAAoBD,IAAI,CAAC,aAAYG,KAAK,IACxCpB,aAAa,CAACT,OAAO,CAAC0B,IAAI,CAAC,YAAYG,KAAK,GAC9CnB,aAAa,CAACV,OAAO,CAAC0B,IAAI,CAAC,KAAKvB,KACtC,CAAC;EACH,CAAC,EACD,EACF,CAAC;EACD,MAAM2B,aAAa,GAAGjF,WAAW,CAC9BsD,KAAkB,IAAK;IACtB,OAAOR,oBAAoB,CAACK,OAAO,CAAC+B,IAAI,CAAEL,IAAI,IAAK;MACjD,OAAOD,kBAAkB,CAACC,IAAI,EAAEvB,KAAK,CAAC;IACxC,CAAC,CAAC;EACJ,CAAC,EACD,CAACsB,kBAAkB,CACrB,CAAC;EACD,MAAMO,SAAS,GAAGnF,WAAW,CAAC,MAAM;IAClC,OAAOiF,aAAa,CAAC,OAAO,CAAC;EAC/B,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;EAKnB,MAAMG,aAAa,GAAGpF,WAAW,CAC/B,CAAC6E,IAAU,EAAEjC,KAAwB,KAAK;IACxCgB,aAAa,CAACT,OAAO,CAAC0B,IAAI,CAAC,GAAGjC,KAAK;EACrC,CAAC,EACD,EACF,CAAC;EAKD,MAAMyC,aAAa,GAAGrF,WAAW,CAC/B,CAAC6E,IAAU,EAAES,UAAuB,KAAK;IACvC,IAAIA,UAAU,KAAKzB,aAAa,CAACV,OAAO,CAAC0B,IAAI,CAAC,EAAE;MAE9ChB,aAAa,CAACV,OAAO,CAAC0B,IAAI,CAAC,GAAGS,UAAU;MACxClE,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EACD,EACF,CAAC;EAKD,MAAMmE,iBAAiB,GAAGvF,WAAW,CACnC,CAACuB,IAAU,EAAEiE,MAAM,GAAGrD,UAAU,KAAK;IACnC,IAAIqD,MAAM,EAAE;MACV,MAAMC,QAAQ,GAAAC,aAAA,KAAQnE,IAAI,CAAE;MAC5BgC,MAAM,CAACoC,OAAO,CAACC,aAAa,CAACzC,OAAO,CAAC,CAAC0C,OAAO,CAAC,CAAC,CAAChB,IAAI,EAAE5D,KAAK,CAAC,KAAK;QAAA,IAAA6E,qBAAA;QAC/D,MAAMC,MAAM,GAAG5F,OAAO,CAAC6F,GAAG,CAACzE,IAAI,EAAEsD,IAAI,CAAC;QACtC,MAAMoB,MAAM,GAAGT,MAAM,CACnBX,IAAI,EACJkB,MAAM,GAAG5F,OAAO,CAAC+F,GAAG,CAAC3E,IAAI,EAAEsD,IAAI,CAAC,GAAGnC,SAAS,EAC5CzB,KAAK,EACL;UACE2B,KAAK,GAAAkD,qBAAA,GAAElC,aAAa,CAACT,OAAO,cAAA2C,qBAAA,uBAArBA,qBAAA,CAAwBjB,IAAI;QACrC,CACF,CAAC;QACD,IAAIoB,MAAM,KAAK,KAAK,IAAIF,MAAM,EAAE;UAC9B5F,OAAO,CAACgG,MAAM,CAACV,QAAQ,EAAEZ,IAAI,CAAC;QAChC;MACF,CAAC,CAAC;MAEF,OAAOY,QAAQ;IACjB;IAEA,OAAOlE,IAAI;EACb,CAAC,EACD,CAACY,UAAU,CACb,CAAC;EACD,MAAMyD,aAAa,GAAG9F,MAAM,CAA2B,CAAC,CAAC,CAAC;EAC1D,MAAMsG,QAAQ,GAAGpG,WAAW,CAC1B,CAAC6E,IAAU,EAAE5D,KAA8B,KAAK;IAC9C2E,aAAa,CAACzC,OAAO,CAAC0B,IAAI,CAAC,GAAG5D,KAAK;EACrC,CAAC,EACD,EACF,CAAC;EACD,MAAMoF,0BAA0B,GAAGrG,WAAW,CAAC,MAAM;IACnD,KAAK,MAAM6E,IAAI,IAAIe,aAAa,CAACzC,OAAO,EAAE;MACxC,MAAMlC,KAAK,GAAG2E,aAAa,CAACzC,OAAO,CAAC0B,IAAI,CAAC;MACzC,IAAIpE,OAAO,CAACQ,KAAK,CAACqF,SAAS,CAAC,IAAI7F,OAAO,CAACQ,KAAK,CAACsF,eAAe,CAAC,EAAE;QAC9D,OAAO,IAAI;MACb;IACF;IAEA,OAAO,KAAK;EACd,CAAC,EAAE,EAAE,CAAC;EAGN,MAAMC,UAAU,GAAG9F,cAAc,CAAOW,EAAE,CAAC;EAC3C,MAAMoF,iBAAiB,GAAG/F,cAAc,CAKrCW,EAAE,GAAG,cAAc,CAAC;EAEvB,MAAMqF,aAAa,GAAGF,UAAU,CAACG,GAAG;EACpC,MAAMC,gBAAgB,GAAGJ,UAAU,CAACK,MAAM;EAC1C,MAAMC,gBAAgB,GAAGL,iBAAiB,CAACI,MAAM;EACjD,MAAME,mBAAmB,IAAA7F,qBAAA,GAAGuF,iBAAiB,CAAClF,IAAI,cAAAL,qBAAA,uBAAtBA,qBAAA,CAAwB6F,mBAAmB;EAEvE,MAAMC,QAAQ,GAAGlH,MAAM,CAAC;IACtByB,IAAI;IACJC,MAAM;IACNyF,MAAM,EAAET,UAAU,CAACjF,IAAI;IACvB2F,kBAAkB,EAAE;EACtB,CAAC,CAAC;EAEF7C,eAAe,CAAClB,OAAO,GAAGpD,OAAO,CAAC,MAAM;IAItC,IAAIsB,EAAE,IAAIyC,WAAW,IAAI,CAAC0C,UAAU,CAACjF,IAAI,EAAE;MACzCiF,UAAU,CAACW,MAAM,CAACrD,WAAW,CAAC;IAChC;IAGA,IACEzC,EAAE,IACFyC,WAAW,IACX0C,UAAU,CAACjF,IAAI,IACfyF,QAAQ,CAAC7D,OAAO,CAAC8D,MAAM,KAAKT,UAAU,CAACjF,IAAI,IAC3C8C,eAAe,CAAClB,OAAO,KAAKW,WAAW,EACvC;MACA,OAAA4B,aAAA,CAAAA,aAAA,KACKrB,eAAe,CAAClB,OAAO,GACvBqD,UAAU,CAACjF,IAAI;IAEtB;IAGA,IACEF,EAAE,IACF,CAACyC,WAAW,IACZ,CAACO,eAAe,CAAClB,OAAO,IACxBqD,UAAU,CAACjF,IAAI,IACfyF,QAAQ,CAAC7D,OAAO,CAAC8D,MAAM,KAAKT,UAAU,CAACjF,IAAI,EAC3C;MACA,OAAOiF,UAAU,CAACjF,IAAI;IACxB;IAGA,IACEF,EAAE,IACFmF,UAAU,CAACjF,IAAI,IACfyF,QAAQ,CAAC7D,OAAO,CAAC8D,MAAM,KAAKT,UAAU,CAACjF,IAAI,IAC3CiF,UAAU,CAACjF,IAAI,KAAK8C,eAAe,CAAClB,OAAO,EAC3C;MACA6D,QAAQ,CAAC7D,OAAO,CAAC8D,MAAM,GAAGT,UAAU,CAACjF,IAAI;MACzC,OAAAmE,aAAA,CAAAA,aAAA,KACKrB,eAAe,CAAClB,OAAO,GACvBqD,UAAU,CAACjF,IAAI;IAEtB;IAGA,IAAIA,IAAI,KAAKyF,QAAQ,CAAC7D,OAAO,CAAC5B,IAAI,EAAE;MAClCyF,QAAQ,CAAC7D,OAAO,CAAC5B,IAAI,GAAGA,IAAI;MAC5B,OAAOA,IAAI;IACb;IAEA,OAAO8C,eAAe,CAAClB,OAAO;EAChC,CAAC,EAAE,CAAC5B,IAAI,EAAEF,EAAE,EAAEyC,WAAW,EAAE0C,UAAU,CAAC,CAAC;EAEvC3F,eAAe,CAAC,MAAM;IAEpB,IAAIQ,EAAE,IAAIyC,WAAW,IAAI,CAAC0C,UAAU,CAACjF,IAAI,EAAE;MACzCqF,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG9C,WAAW,CAAC;IACjC;EACF,CAAC,EAAE,CAACzC,EAAE,EAAEyC,WAAW,EAAE8C,gBAAgB,EAAEJ,UAAU,CAACjF,IAAI,CAAC,CAAC;EAExDxB,OAAO,CAAC,MAAM;IACZwE,mBAAmB,CAAC,CAAC;EAGvB,CAAC,EAAE,CAACF,eAAe,CAAClB,OAAO,CAAC,CAAC;EAE7BtC,eAAe,CAAC,MAAM;IACpB,IAAIQ,EAAE,EAAE;MACNyF,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG;QACjBvB,iBAAiB;QACjBJ,SAAS;QACTlC;MACF,CAAC,CAAC;MACF,IAAId,UAAU,EAAE;QACd4E,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAG,CAAC;MACzB;IACF;EACF,CAAC,EAAE,CACDD,gBAAgB,EAChB3E,UAAU,EACVoD,iBAAiB,EACjBJ,SAAS,EACT9D,EAAE,EACF0F,mBAAmB,EACnB9D,gBAAgB,CACjB,CAAC;EAKF,MAAMmE,eAAgD,GAAGpH,WAAW,CAClE,CAAC6E,IAAI,EAAEwC,KAAK,KAAK;IAAA,IAAAC,qBAAA;IACf,IAAI,CAACzC,IAAI,EAAE;MACT;IACF;IAEA,MAAM0C,SAAS,GACb1C,IAAI,KAAK,GAAG,GAERwC,KAAK,IAAAC,qBAAA,GAELjD,eAAe,CAAClB,OAAO,cAAAmE,qBAAA,cAAAA,qBAAA,GACtBzC,IAAI,CAAC2C,KAAK,CAACzG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CACrC;IAET,IAAI0G,OAAa,GAAG,IAAI;IACxB,IAAI;MAEFA,OAAO,GAAG7G,eAAe,CAAC2G,SAAS,CAAC;IACtC,CAAC,CAAC,OAAOG,CAAC,EAAE;MACVD,OAAO,GAAGF,SAAS;IACrB;IAEA,IAAI1C,IAAI,KAAK,GAAG,EAAE;MAChB1E,OAAO,CAACwG,GAAG,CAACc,OAAO,EAAE5C,IAAI,EAAEwC,KAAK,CAAC;IACnC;IAEAhD,eAAe,CAAClB,OAAO,GAAGsE,OAAO;IAEjC,IAAIpG,EAAE,EAAE;MAENuF,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAGa,OAAO,CAAC;MAC3B,IAAItF,UAAU,EAAE;QACd4E,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAG,CAAC;MACzB;IACF;IAEA,IAAI9E,gBAAgB,IAAI,OAAOnB,MAAM,KAAK,WAAW,EAAE;MAAA,IAAA6G,sBAAA;MACrD,CAAAA,sBAAA,GAAA7G,MAAM,CAACmD,cAAc,cAAA0D,sBAAA,uBAArBA,sBAAA,CAAuBC,OAAO,CAC5B3F,gBAAgB,EAChBkC,IAAI,CAAC0D,SAAS,CAACJ,OAAO,CACxB,CAAC;IACH;IAEArG,WAAW,CAAC,CAAC;IAEb,OAAOqG,OAAO;EAChB,CAAC,EACD,CACEpG,EAAE,EACFY,gBAAgB,EAChB2E,gBAAgB,EAChBzE,UAAU,EACV4E,mBAAmB,CAEvB,CAAC;EAED,MAAMe,OAAO,GAAG9H,WAAW,CAAEyH,OAAa,IAAK;IAC7CpD,eAAe,CAAClB,OAAO,GAAGsE,OAAO;IACjCrG,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EAKN,MAAM2G,2BAA6D,GACjE/H,WAAW,CACT,OAAO6E,IAAI,EAAEwC,KAAK,KAAK;IACrB,IAAI,CAACxC,IAAI,EAAE;MACT,OAAO,IAAI;IACb;IAEAuC,eAAe,CAACvC,IAAI,EAAEwC,KAAK,CAAC;IAE5B,IAAI5G,OAAO,CAACiB,YAAY,CAAC,EAAE;MACzB,OAAMA,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGmD,IAAI,EAAEwC,KAAK,CAAC;IACnC,CAAC,MAAM;MACL3F,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGmD,IAAI,EAAEwC,KAAK,CAAC;IAC7B;EACF,CAAC,EACD,CAAC3F,YAAY,EAAE0F,eAAe,CAChC,CAAC;EAKH,MAAMY,gBAAkD,GAAGhI,WAAW,CACpE,OAAO6E,IAAI,EAAEwC,KAAK,GAAG,aAAa,KAAK;IACrC,IAAI,CAACxC,IAAI,EAAE;MACT,OAAO,IAAI;IACb;IAEA,IAAIwC,KAAK,KAAK,aAAa,EAAE;MAC3BU,2BAA2B,CAAClD,IAAI,EAAEwC,KAAK,CAAC;IAC1C;IAEArE,gBAAgB,CAACG,OAAO,GAAG,KAAK;IAEhCwB,YAAY,CAAC,CAAC;IAEd,IAAIlE,OAAO,CAACgB,QAAQ,CAAC,EAAE;MACrB,OAAO,MAAMA,QAAQ,CAAC4C,eAAe,CAAClB,OAAe,CAAC;IACxD;IAEA,OAAO1B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAG4C,eAAe,CAAClB,OAAe,CAAC;EACpD,CAAC,EACD,CAAC4E,2BAA2B,EAAEtG,QAAQ,EAAEkD,YAAY,CACtD,CAAC;EAGD,MAAMsD,gBAAgB,GAAGjI,WAAW,CAAE6E,IAAU,IAAK;IACnD/B,oBAAoB,CAACK,OAAO,GAAG+E,WAAW,CACxCpF,oBAAoB,CAACK,OAAO,EAC5B0B,IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMsD,kBAAkB,GAAGnI,WAAW,CAAE6E,IAAU,IAAK;IAAA,IAAAuD,qBAAA;IACrDtF,oBAAoB,CAACK,OAAO,GAAGkF,cAAc,CAC3CvF,oBAAoB,CAACK,OAAO,EAC5B0B,IACF,CAAC;IACD,KAAAuD,qBAAA,GAAIxC,aAAa,CAACzC,OAAO,cAAAiF,qBAAA,eAArBA,qBAAA,CAAwBvD,IAAI,CAAC,EAAE;MACjC,OAAOe,aAAa,CAACzC,OAAO,CAAC0B,IAAI,CAAC;IACpC;EACF,CAAC,EAAE,EAAE,CAAC;EAGN,MAAMyD,WAAW,GAAGtI,WAAW,CAAC,MAAM;IACpC,IAAI,OAAOc,MAAM,KAAK,WAAW,EAAE;MAAA,IAAAyH,OAAA,EAAAC,gBAAA;MACjC,CAAAD,OAAA,GAAAzH,MAAM,cAAAyH,OAAA,wBAAAC,gBAAA,GAAND,OAAA,CAAQE,QAAQ,cAAAD,gBAAA,uBAAhBA,gBAAA,CAAA/D,IAAA,CAAA8D,OAAA,EAAmB;QAAEG,GAAG,EAAE,CAAC;QAAEC,QAAQ,EAAE;MAAS,CAAC,CAAC;IACpD;EACF,CAAC,EAAE,EAAE,CAAC;EAKN,MAAMC,gBAAgB,GAAG5I,WAAW,CAClC,MAAO6I,IAAI,IAAK;IACd,MAAM;MACJlH,QAAQ;MACRmH,oBAAoB;MACpBC,mBAAmB;MACnBC;IACF,CAAC,GAAGH,IAAI;IAERxF,cAAc,CAAC;MAAET,KAAK,EAAEF;IAAU,CAAC,CAAC;IAEpC,MAAMuG,sBAAsB,GAC1B,CAACD,cAAc,GACX,IAAI,GAEJ,CAAC7D,SAAS,CAAC,CAAC,IAAIF,aAAa,CAAC,SAAS,CAAC,MAC3C6D,oBAAoB,IAAIzC,0BAA0B,CAAC,CAAC,CAAC;IAExD,IAAI4C,sBAAsB,EAAE;MAC1BvF,YAAY,CAAC,SAAS,CAAC;IACzB;IAGA,IAAI,CAACqF,mBAAmB,EAAE;MACxB,KAAK,MAAM;QACTlE,IAAI;QACJqE,IAAI;QACJC;MACF,CAAC,IAAIC,sBAAsB,CAACjG,OAAO,EAAE;QACnC,IACE+F,IAAI,KAAK,UAAU,IACnBpG,oBAAoB,CAACK,OAAO,CAACkG,QAAQ,CAACxE,IAAI,CAAC,EAC3C;UAEA,IAAIoE,sBAAsB,EAAE;YAC1B,MAAME,QAAQ,CAAC,CAAC;UAClB,CAAC,MAAM;YACLA,QAAQ,CAAC,CAAC;UACZ;QACF;MACF;IACF;IAEA,IACE,EAAEH,cAAc,GAAG,KAAK,GAAG7D,SAAS,CAAC,CAAC,CAAC,IACvC,CAACF,aAAa,CAAC,SAAS,CAAC,KACxB8D,mBAAmB,GAAG,IAAI,GAAG,CAAC9D,aAAa,CAAC,OAAO,CAAC,CAAC,EACtD;MACA,IAAIgB,MAAkC;MAEtC,IAAI;QACFA,MAAM,GAAG,MAAMtE,QAAQ,CAAC,CAAC;QAEzB,IAAIsE,MAAM,YAAYjB,KAAK,EAAE;UAC3B,MAAMiB,MAAM;QACd;MACF,CAAC,CAAC,OAAOrD,KAAK,EAAE;QACdqD,MAAM,GAAG;UAAErD;QAAM,CAAC;MACpB;MAEA,MAAMU,KAAK,GAAG2C,MAA0B;MAExC,IAAIgD,sBAAsB,EAAE;QAC1BvF,YAAY,CAACJ,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEV,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;MACnD;MAGA,IAAIU,KAAK,aAALA,KAAK,eAALA,KAAK,CAAG,QAAQ,CAAC,EAAE;QACrBI,YAAY,CAACJ,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAG,QAAQ,CAAC,CAAC;MACjC;MAEA,IAAIA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEV,KAAK,IAAIU,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEgG,OAAO,IAAIhG,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEiG,IAAI,EAAE;QACjDlG,cAAc,CAACC,KAAK,CAAC;MACvB;IACF,CAAC,MAAM;MACL,IAAI2F,sBAAsB,EAAE;QAC1BnI,MAAM,CAAC0I,qBAAqB,CAAC,MAAM;UACjC9F,YAAY,CAAChB,SAAS,CAAC;QACzB,CAAC,CAAC;QAEF,IAAI,CAACqG,mBAAmB,EAAE;UAExBU,mBAAmB,CAACtG,OAAO,GAAG,MAAM;YAClCrC,MAAM,CAAC0I,qBAAqB,CAAC,MAAM;cAIjCZ,gBAAgB,CAAAlD,aAAA,CAAAA,aAAA,KAAMmD,IAAI;gBAAEE,mBAAmB,EAAE;cAAI,EAAE,CAAC;YAC1D,CAAC,CAAC;UACJ,CAAC;QACH;MACF;MAEAnH,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAG,CAAC;MAEnBqB,gBAAgB,CAAC,IAAI,CAAC;IACxB;IAEA,OAAOoB,eAAe,CAAClB,OAAO;EAChC,CAAC,EACD,CACEE,cAAc,EACd8B,SAAS,EACTkB,0BAA0B,EAC1BpB,aAAa,EACbvB,YAAY,EACZ9B,eAAe,EACfqB,gBAAgB,CAEpB,CAAC;EAKD,MAAMyG,YAAY,GAAG1J,WAAW,CAC9B,OAAO;IAAE2J,WAAW,GAAG;EAAK,CAAC,GAAG,CAAC,CAAC,KAAK;IACrCf,gBAAgB,CAAC;MACfE,oBAAoB,EAAErI,OAAO,CAACkB,QAAQ,CAAC;MACvCA,QAAQ,EAAE,MAAAA,CAAA,KAAY;QACpB,MAAMkH,IAAI,GAAGtD,iBAAiB,CAAClB,eAAe,CAAClB,OAAe,CAAC;QAC/D,MAAMyG,IAAI,GAAG;UACXC,SAAS,EAAEA,CAAA,KAAM;YAAA,IAAAC,kBAAA;YACfH,WAAW,aAAXA,WAAW,wBAAAG,kBAAA,GAAXH,WAAW,CAAEI,KAAK,cAAAD,kBAAA,uBAAlBA,kBAAA,CAAArF,IAAA,CAAAkF,WAAqB,CAAC;YAEtB,IAAI,OAAO7I,MAAM,KAAK,WAAW,EAAE;cACjC,IAAImB,gBAAgB,EAAE;gBACpBnB,MAAM,CAACmD,cAAc,CAAC+F,UAAU,CAAC/H,gBAAgB,CAAC;cACpD;YACF;YAEAb,WAAW,CAAC,CAAC;UACf,CAAC;UACD6I,SAAS,EAAEA,CAAA,KAAM;YACf5F,eAAe,CAAClB,OAAO,GAAG,CAAC,CAAC;YAC5B,IAAI9B,EAAE,EAAE;cACNqF,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAG,CAAC,CAAS,CAAC;YAC7B,CAAC,MAAM;cACLtF,WAAW,CAAC,CAAC;YACf;UACF;QACF,CAAC;QAED,IAAI6E,MAAM,GAAGvD,SAAS;QAEtB,IAAIjC,OAAO,CAACkB,QAAQ,CAAC,EAAE;UACrBsE,MAAM,GAAG,MAAMtE,QAAQ,CAACkH,IAAI,EAAEe,IAAI,CAAC;QACrC,CAAC,MAAM;UACL3D,MAAM,GAAGtE,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAGkH,IAAI,EAAEe,IAAI,CAAC;QACjC;QAEA,MAAMM,cAAc,GAAG,OAAMrI,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAGgH,IAAI,EAAE5C,MAAM,CAAC;QAC7D,IAAIiE,cAAc,EAAE;UAClBjE,MAAM,GACJ1C,MAAM,CAAC4G,IAAI,CAAClE,MAAM,CAAC,CAACmE,MAAM,GAAG,CAAC,GAAA1E,aAAA,CAAAA,aAAA,KACrBO,MAAM,GAAKiE,cAAc,IAC9BA,cAAc;QACtB;QAEA,IAAIpI,iBAAiB,EAAE;UACrBwG,WAAW,CAAC,CAAC;QACf;QAEA,OAAOrC,MAAM;MACf;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CACEV,iBAAiB,EACjBqD,gBAAgB,EAChBvH,EAAE,EACFM,QAAQ,EACRE,gBAAgB,EAChByG,WAAW,EACXxG,iBAAiB,EACjBG,gBAAgB,EAChByE,aAAa,CAEjB,CAAC;EAGD,MAAM0C,sBAAsB,GAAGtJ,MAAM,CAA2B,EAAE,CAAC;EACnE,MAAMuK,qBAAqB,GAAGrK,WAAW,CACvC,CACE6E,IAA+B,EAC/BqE,IAA+B,EAC/BC,QAAuC,KACpC;IACHC,sBAAsB,CAACjG,OAAO,GAC5BiG,sBAAsB,CAACjG,OAAO,CAACqC,MAAM,CAAC,CAAC;MAAEX,IAAI,EAAEyF,CAAC;MAAEpB,IAAI,EAAEqB;IAAE,CAAC,KAAK;MAC9D,OAAO,EAAED,CAAC,KAAKzF,IAAI,IAAI0F,CAAC,KAAKrB,IAAI,CAAC;IACpC,CAAC,CAAC;IACJE,sBAAsB,CAACjG,OAAO,CAACqH,IAAI,CAAC;MAAE3F,IAAI;MAAEqE,IAAI;MAAEC;IAAS,CAAC,CAAC;EAC/D,CAAC,EACD,EACF,CAAC;EAGD,MAAMM,mBAAmB,GAAG3J,MAAM,CAAa,IAAI,CAAC;EACpD,IAAI,CAACmF,aAAa,CAAC,SAAS,CAAC,EAAE;IAAA,IAAAwF,qBAAA;IAC7B,CAAAA,qBAAA,GAAAhB,mBAAmB,CAACtG,OAAO,cAAAsH,qBAAA,uBAA3BA,qBAAA,CAAAhG,IAAA,CAAAgF,mBAA8B,CAAC;IAC/BA,mBAAmB,CAACtG,OAAO,GAAG,IAAI;EACpC;EAGA5C,cAAc,CAAC,MAAM;IACnB,IAAIiB,MAAM,EAAE;MAAA,IAAAkJ,eAAA;MACVpG,eAAe,CAACnB,OAAO,IAAAuH,eAAA,GAAG7H,MAAM,CAACM,OAAO,cAAAuH,eAAA,uBAAdA,eAAA,CAAgBC,OAAO,CAACnJ,MAAM,CAAC;IAC3D;IAGAmD,YAAY,CAAC,CAAC;EAChB,CAAC,CAAC;EACFnE,eAAe,CAAC,MAAM;IACpB,IAAIgB,MAAM,IAAIA,MAAM,KAAKwF,QAAQ,CAAC7D,OAAO,CAAC3B,MAAM,EAAE;MAAA,IAAAoJ,gBAAA;MAChD5D,QAAQ,CAAC7D,OAAO,CAAC3B,MAAM,GAAGA,MAAM;MAChC8C,eAAe,CAACnB,OAAO,IAAAyH,gBAAA,GAAG/H,MAAM,CAACM,OAAO,cAAAyH,gBAAA,uBAAdA,gBAAA,CAAgBD,OAAO,CAACnJ,MAAM,CAAC;MAEzDmD,YAAY,CAAC,CAAC;MACdvD,WAAW,CAAC,CAAC;IACf;EACF,CAAC,EAAE,CAACI,MAAM,EAAEmD,YAAY,EAAEvD,WAAW,CAAC,CAAC;EAEvC,MAAMyJ,SAAS,GAAG7K,WAAW,CAAC,MAAM;IAClC0D,YAAY,CAAChB,SAAS,CAAC;IACvBW,cAAc,CAAC;MACbkG,IAAI,EAAE7G,SAAS;MACf4G,OAAO,EAAE5G,SAAS;MAClBE,KAAK,EAAEF;IACT,CAAC,CAAC;EACJ,CAAC,EAAE,CAACgB,YAAY,EAAEL,cAAc,CAAC,CAAC;EAElC,MAAM;IAAEyH,iBAAiB,EAAEnH;EAAU,CAAC,GAAGoH,mBAAmB,CAAC;IAC3DpH,SAAS,EAAEF,YAAY,CAACN,OAAO;IAC/B6H,OAAO,EAAE/F,aAAa,CAAC,SAAS,CAAC;IACjClD,wBAAwB;IACxBC,kBAAkB;IAClB6I;EACF,CAAC,CAAC;EAEF,MAAMI,WAAW,GAAG7H,cAAc,CAACD,OAAO;EAC1C,MAAM+H,QAAQ,IAAA/J,cAAA,GAAGoB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAG,UAAU,CAAC,cAAApB,cAAA,cAAAA,cAAA,GAAIwC,SAAS,KAAK,SAAS;EAE9D,OACE9D,KAAA,CAAAsL,aAAA,CAACxK,OAAO,CAACK,QAAQ;IACfqG,KAAK,EAAA3B,aAAA;MAEHsC,gBAAgB;MAChBD,2BAA2B;MAC3B2B,YAAY;MACZzB,gBAAgB;MAChBE,kBAAkB;MAClBS,gBAAgB;MAChBlF,YAAY;MACZT,gBAAgB;MAChBoH,qBAAqB;MACrBhF,aAAa;MACbD,aAAa;MACbgB,QAAQ;MACRjB,SAAS;MACTF,aAAa;MACbL,kBAAkB;MAClBD,YAAY;MACZyC,eAAe;MACfU,OAAO;MACPvC,iBAAiB;MACjB+C,WAAW;MAGX9G,MAAM;MACN0J,QAAQ;MACRvH,SAAS;MACTsH,WAAW;MACX5I,oBAAoB;MACpB+I,UAAU,EAAE,IAAI;MAChB1G,MAAM,EAAE3B,SAAS,CAACI,OAAO;MACzBD,aAAa,EAAEF,gBAAgB,CAACG,OAAO;MACvCkI,iBAAiB,EAAEvI,oBAAoB,CAACK,OAAO;MAC/CjB,WAAW,EAAEW,MAAM,CAACM,OAAO;MAG3B9B,EAAE;MACFE,IAAI,EAAE8C,eAAe,CAAClB,OAAO;MAC7BlC;IAAK,GACFsB,IAAI;EACP,GAEF1C,KAAA,CAAAsL,aAAA,CAAC7K,cAAc;IAACqJ,WAAW,EAAE;MAAEuB;IAAS;EAAE,GACvC5I,QACa,CACA,CAAC;AAEvB;AAIA,SAAS4F,WAAWA,CAACoD,KAAe,EAAEzG,IAAU,EAAY;EAC1D,OAAOyG,KAAK,CAACjC,QAAQ,CAACxE,IAAI,CAAC,GAAGyG,KAAK,GAAGA,KAAK,CAACC,MAAM,CAAC1G,IAAI,CAAC;AAC1D;AAEA,SAASwD,cAAcA,CAACiD,KAAe,EAAEzG,IAAU,EAAY;EAC7D,OAAOyG,KAAK,CAAC9F,MAAM,CAAEgG,QAAQ,IAAKA,QAAQ,KAAK3G,IAAI,CAAC;AACtD;AAUA,SAASkG,mBAAmBA,CAAC9J,KAA4B,EAAE;EACzD,MAAM;IACJ0C,SAAS;IACTqH,OAAO;IACPjJ,wBAAwB;IACxBC,kBAAkB;IAClB6I;EACF,CAAC,GAAG5J,KAAK,IAAI,CAAC,CAAC;EAEf,MAAM,GAAGG,WAAW,CAAC,GAAGnB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EAClD,MAAMwL,QAAQ,GAAG3L,MAAM,CAAc,CAAC;EACtC,MAAM4L,MAAM,GAAG5L,MAAM,CAAgB,IAAI,CAAC;EAC1C,MAAM6L,UAAU,GAAG7L,MAAM,CAItB,CAAC,CAAC,CAAC;EAEN,MAAM8L,QAAQ,GAAG5L,WAAW,CACzBsD,KAAkB,IAAK;IACtBmI,QAAQ,CAACtI,OAAO,GAAGG,KAAK;IACxBlC,WAAW,CAAC,CAAC;EACf,CAAC,EACD,CAACA,WAAW,CACd,CAAC;EAED,MAAMyK,KAAK,GAAG7L,WAAW,CAAC,MAAM;IAC9B,KAAK,MAAM8L,GAAG,IAAIH,UAAU,CAACxI,OAAO,EAAE;MACpC4I,YAAY,CAACJ,UAAU,CAACxI,OAAO,CAAC2I,GAAG,CAAC,CAAC;IACvC;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,cAAc,GAAGlM,MAAM,CAAC,KAAK,CAAC;EAEpCI,SAAS,CAAC,MAAM;IAKd,MAAM+L,MAAM,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM;IAC9C,MAAMC,OAAO,GACXtK,wBAAwB,aAAxBA,wBAAwB,cAAxBA,wBAAwB,GAEvBkK,MAAM,GAAG,CAAC,GAAG,IAAK;IAErB,IAAIR,QAAQ,CAACtI,OAAO,IAAIQ,SAAS,KAAK,OAAO,EAAE;MAC7CkI,KAAK,CAAC,CAAC;MACPD,QAAQ,CAAClJ,SAAS,CAAC;MACnB;IACF;IAEA,IAAIiB,SAAS,KAAK,OAAO,EAAE;MACzBkI,KAAK,CAAC,CAAC;MACPD,QAAQ,CAAC,OAAO,CAAC;MAEjBD,UAAU,CAACxI,OAAO,CAAC4G,KAAK,GAAGuC,UAAU,CAAC,MAAM;QAC1CZ,MAAM,CAACvI,OAAO,GAAG,CAAC;QAClByI,QAAQ,CAAClJ,SAAS,CAAC;MACrB,CAAC,EAAE2J,OAAO,CAAC;MACX;IACF;IAEA,IAAI1I,SAAS,KAAK,UAAU,EAAE;MAC5BqI,cAAc,CAAC7I,OAAO,GAAG,IAAI;IAC/B;IAEA,IAAIQ,SAAS,KAAK,SAAS,IAAI8H,QAAQ,CAACtI,OAAO,KAAK,SAAS,EAAE;MAC7D0I,KAAK,CAAC,CAAC;MACPH,MAAM,CAACvI,OAAO,GAAGoJ,IAAI,CAACC,GAAG,CAAC,CAAC;MAC3BR,cAAc,CAAC7I,OAAO,GAAG,KAAK;MAC9ByI,QAAQ,CAAC,SAAS,CAAC;IACrB,CAAC,MAAM,IAAIH,QAAQ,CAACtI,OAAO,KAAK,SAAS,EAAE;MACzC,MAAMsJ,MAAM,GAAGC,IAAI,CAACC,GAAG,CAACJ,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGd,MAAM,CAACvI,OAAO,CAAC;MACpD,MAAMyJ,KAAK,GAAGX,MAAM,GAAGI,OAAO,GAAGK,IAAI,CAACC,GAAG,CAACN,OAAO,GAAGI,MAAM,EAAE,CAAC,CAAC;MAE9D,IAAI,CAACzB,OAAO,EAAE;QACZW,UAAU,CAACxI,OAAO,CAAC0J,QAAQ,GAAGP,UAAU,CAAC,MAAM;UAC7C,IAAIN,cAAc,CAAC7I,OAAO,EAAE;YAC1ByI,QAAQ,CAAC,UAAU,CAAC;UACtB;QACF,CAAC,EAAEgB,KAAK,CAAC;QAETjB,UAAU,CAACxI,OAAO,CAAC4G,KAAK,GAAGuC,UAAU,CAAC,MAAM;UAC1CZ,MAAM,CAACvI,OAAO,GAAG,CAAC;UAClByI,QAAQ,CAAClJ,SAAS,CAAC;UACnBmJ,KAAK,CAAC,CAAC;QACT,CAAC,EAAEe,KAAK,GAAGP,OAAO,CAAC;MACrB;IACF;IAEA,IAAIZ,QAAQ,CAACtI,OAAO,KAAK,SAAS,EAAE;MAClCwI,UAAU,CAACxI,OAAO,CAAC2J,OAAO,GAAGR,UAAU,CAAC,MAAM;QAC5CT,KAAK,CAAC,CAAC;QACPD,QAAQ,CAAClJ,SAAS,CAAC;QACnBmI,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAG,CAAC;MACf,CAAC,EAAE7I,kBAAkB,aAAlBA,kBAAkB,cAAlBA,kBAAkB,GAAI,KAAK,CAAC;IACjC;IAEA,OAAO6J,KAAK;EACd,CAAC,EAAE,CACDA,KAAK,EACL9J,wBAAwB,EACxB4B,SAAS,EACTiI,QAAQ,EACRZ,OAAO,EACPhJ,kBAAkB,EAClB6I,SAAS,CACV,CAAC;EAEF,OAAO;IAAEC,iBAAiB,EAAEW,QAAQ,CAACtI;EAAQ,CAAC;AAChD"}
|
|
1
|
+
{"version":3,"file":"Provider.js","names":["React","useRef","useMemo","useCallback","useReducer","useEffect","pointer","makeAjvInstance","ajvErrorsToFormErrors","SharedProvider","useMountEffect","useUpdateEffect","isAsync","useSharedState","Context","structuredClone","useLayoutEffect","window","isArrayJsonPointer","Provider","props","_sharedAttachments$da","_rest$disabled","forceUpdate","id","defaultData","data","schema","onChange","onPathChange","onSubmit","onSubmitRequest","onSubmitComplete","scrollTopOnSubmit","minimumAsyncBehaviorTime","asyncSubmitTimeout","sessionStorageId","ajvInstance","filterData","errorMessages","contextErrorMessages","children","rest","_objectWithoutProperties","_excluded","undefined","console","error","ajvRef","mountedFieldPathsRef","errorsRef","showAllErrorsRef","setShowAllErrors","showAllErrors","current","submitStateRef","setSubmitState","state","Object","assign","formStateRef","setFormState","formState","fieldErrorRef","fieldStateRef","initialData","_window$sessionStorag","sessionDataJSON","sessionStorage","getItem","JSON","parse","internalDataRef","ajvValidatorRef","executeAjvValidator","_ajvValidatorRef$curr","call","errors","validateData","checkFieldStateFor","path","_errorsRef$current","Boolean","Error","hasFieldState","some","hasErrors","setFieldError","setFieldState","fieldState","filterDataHandler","filter","filtered","_objectSpread","entries","fieldPropsRef","forEach","_fieldErrorRef$curren","exists","has","result","get","remove","setProps","hasFieldWithAsyncValidator","validator","onBlurValidator","sharedData","sharedAttachments","setSharedData","set","extendSharedData","extend","extendAttachment","rerenderUseDataHook","cacheRef","shared","hasUsedInitialData","update","updateDataValue","value","_internalDataRef$curr","givenData","match","newData","e","_window$sessionStorag2","setItem","stringify","setData","handlePathChangeUnvalidated","handlePathChange","handleMountField","addListPath","handleUnMountField","_fieldPropsRef$curren","removeListPath","scrollToTop","_window","_window$scrollTo","scrollTo","top","behavior","handleSubmitCall","args","enableAsyncBehaviour","skipFieldValidation","skipErrorCheck","asyncBehaviorIsEnabled","type","callback","fieldEventListenersRef","includes","warning","info","requestAnimationFrame","onSubmitContinueRef","handleSubmit","formElement","opts","resetForm","_formElement$reset","reset","removeItem","clearData","completeResult","keys","length","setFieldEventListener","p","t","push","_onSubmitContinueRef$","_ajvRef$current","compile","_ajvRef$current2","onTimeout","bufferedFormState","useFormStatusBuffer","waitFor","submitState","disabled","createElement","hasContext","mountedFieldPaths","paths","concat","thisPath","stateRef","nowRef","timeoutRef","setState","clear","key","clearTimeout","hadCompleteRef","isTest","process","env","NODE_ENV","minimum","setTimeout","Date","now","offset","Math","max","delay","complete","timeout"],"sources":["../../../../../../src/extensions/forms/DataContext/Provider/Provider.tsx"],"sourcesContent":["import React, {\n useRef,\n useMemo,\n useCallback,\n useReducer,\n useEffect,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { ValidateFunction } from 'ajv/dist/2020'\nimport {\n Ajv,\n makeAjvInstance,\n ajvErrorsToFormErrors,\n} from '../../utils/ajv'\nimport {\n FormError,\n CustomErrorMessagesWithPaths,\n AllJSONSchemaVersions,\n FieldProps,\n SubmitState,\n Path,\n EventStateObject,\n OnSubmit,\n OnChange,\n EventReturnWithStateObject,\n} from '../../types'\nimport SharedProvider from '../../../../shared/Provider'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport useUpdateEffect from '../../../../shared/helpers/useUpdateEffect'\nimport { isAsync } from '../../../../shared/helpers/isAsync'\nimport { useSharedState } from '../../../../shared/helpers/useSharedState'\nimport Context, {\n ContextState,\n EventListenerCall,\n FilterData,\n} from '../Context'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So its a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\n// SSR warning fix: https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\nconst useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n\nexport interface Props<Data extends JsonObject> {\n /**\n * Unique ID to communicate with the hook Form.useData\n */\n id?: string\n /**\n * Default source data, only used if no other source is available, and not leading to updates if changed after mount\n */\n defaultData?: Partial<Data>\n /**\n * Source data, will be used instead of defaultData, and leading to updates if changed after mount\n */\n data?: Partial<Data>\n /**\n * JSON Schema to validate the data against.\n */\n schema?: AllJSONSchemaVersions\n /**\n * Custom Ajv instance, if you want to use your own\n */\n ajvInstance?: Ajv\n /**\n * Custom error messages for the whole data set\n */\n errorMessages?: CustomErrorMessagesWithPaths\n /**\n * Filter the internal data context based on your criteria: `(path, value, props) => !props?.disabled`. It will iterate on each data entry.\n */\n filterData?: FilterData\n /**\n * Change handler for the whole data set.\n * You can provide an async function to show an indicator on the current label during a field change.\n */\n onChange?: OnChange<Data>\n /**\n * Change handler for each value\n */\n onPathChange?: (\n path: Path,\n value: any\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Will emit on a form submit – if validation has passed.\n * You can provide an async function to shows a submit indicator during submit. All form elements will be disabled during the submit.\n */\n onSubmit?: OnSubmit\n /**\n * Submit was requested, but data was invalid\n */\n onSubmitRequest?: () => void\n /**\n * Will be called when the onSubmit is finished and had not errors\n */\n onSubmitComplete?: (\n data: Data,\n /**\n * The result of the onSubmit function\n */\n result: unknown\n ) =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n /**\n * Minimum time to display the submit indicator.\n */\n minimumAsyncBehaviorTime?: number\n /**\n * The maximum time to display the submit indicator before it changes back to normal. In case something went wrong during submission.\n */\n asyncSubmitTimeout?: number\n /**\n * Scroll to top on submit\n */\n scrollTopOnSubmit?: boolean\n /**\n * Key for caching the data in session storage\n */\n sessionStorageId?: string\n children: React.ReactNode\n}\n\nconst isArrayJsonPointer = /^\\/\\d+(\\/|$)/\n\nexport default function Provider<Data extends JsonObject>(\n props: Props<Data>\n) {\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n const {\n id,\n defaultData,\n data,\n schema,\n onChange,\n onPathChange,\n onSubmit,\n onSubmitRequest,\n onSubmitComplete,\n scrollTopOnSubmit,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n sessionStorageId,\n ajvInstance,\n filterData,\n errorMessages: contextErrorMessages,\n children,\n ...rest\n } = props\n\n // Prop error handling\n if (data !== undefined && sessionStorageId !== undefined) {\n console.error(\n 'Providing both data and sessionStorageId could lead to competing data sources. To provide default data to use only before anything is changed in the interface, use defaultData.'\n )\n }\n\n // - Ajv\n const ajvRef = useRef<Ajv>(makeAjvInstance(ajvInstance))\n\n // - Paths\n const mountedFieldPathsRef = useRef<Path[]>([])\n\n // - Errors from provider validation (the whole data set)\n const errorsRef = useRef<Record<Path, FormError> | undefined>()\n const showAllErrorsRef = useRef<boolean>(false)\n const setShowAllErrors = useCallback((showAllErrors: boolean) => {\n showAllErrorsRef.current = showAllErrors\n forceUpdate()\n }, [])\n const submitStateRef = useRef<Partial<EventStateObject>>({})\n const setSubmitState = useCallback((state: EventStateObject) => {\n Object.assign(submitStateRef.current, state)\n forceUpdate()\n }, [])\n\n // - Progress\n const formStateRef = useRef<SubmitState>()\n const setFormState = useCallback((formState: SubmitState) => {\n formStateRef.current = formState\n forceUpdate()\n }, [])\n\n // - States (e.g. error) reported by fields, based on their direct validation rules\n const fieldErrorRef = useRef<Record<Path, Error>>({})\n const fieldStateRef = useRef<Record<Path, SubmitState>>({})\n\n // - Data\n const initialData = useMemo<Data>(() => {\n if (sessionStorageId && typeof window !== 'undefined') {\n const sessionDataJSON =\n window.sessionStorage?.getItem(sessionStorageId)\n if (sessionDataJSON) {\n return JSON.parse(sessionDataJSON)\n }\n }\n return data ?? defaultData\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Avoid triggering code that should only run initially\n }, [])\n const internalDataRef = useRef<Partial<Data>>(initialData)\n\n // - Validator\n const ajvValidatorRef = useRef<ValidateFunction>()\n const executeAjvValidator = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n if (!ajvValidatorRef.current?.(internalDataRef.current)) {\n // Errors found\n errorsRef.current = ajvErrorsToFormErrors(\n ajvValidatorRef.current.errors,\n internalDataRef.current\n )\n } else {\n errorsRef.current = undefined\n }\n }, [])\n const validateData = useCallback(() => {\n if (!ajvValidatorRef.current) {\n // No schema-based validator. Assume data is valid.\n return\n }\n\n executeAjvValidator()\n forceUpdate()\n }, [executeAjvValidator])\n\n // - Error handling\n const checkFieldStateFor = useCallback(\n (path: Path, state: SubmitState) => {\n return Boolean(\n state === 'error'\n ? errorsRef.current?.[path] instanceof Error ||\n fieldErrorRef.current[path] instanceof Error\n : fieldStateRef.current[path] === state\n )\n },\n []\n )\n const hasFieldState = useCallback(\n (state: SubmitState) => {\n return mountedFieldPathsRef.current.some((path) => {\n return checkFieldStateFor(path, state)\n })\n },\n [checkFieldStateFor]\n )\n const hasErrors = useCallback(() => {\n return hasFieldState('error')\n }, [hasFieldState])\n\n /**\n * Sets the error state for a specific path\n */\n const setFieldError = useCallback(\n (path: Path, error: Error | FormError) => {\n fieldErrorRef.current[path] = error\n },\n []\n )\n\n /**\n * Sets the field state for a specific path\n */\n const setFieldState = useCallback(\n (path: Path, fieldState: SubmitState) => {\n if (fieldState !== fieldStateRef.current[path]) {\n // The state for the target value was changed\n fieldStateRef.current[path] = fieldState\n forceUpdate()\n }\n },\n []\n )\n\n /**\n * Filter the data set based on the filterData function\n */\n const filterDataHandler = useCallback(\n (data: Data, filter = filterData) => {\n if (filter) {\n const filtered = { ...data }\n Object.entries(fieldPropsRef.current).forEach(([path, props]) => {\n const exists = pointer.has(data, path)\n const result = filter(\n path,\n exists ? pointer.get(data, path) : undefined,\n props,\n {\n error: fieldErrorRef.current?.[path],\n }\n )\n if (result === false && exists) {\n pointer.remove(filtered, path)\n }\n })\n\n return filtered\n }\n\n return data\n },\n [filterData]\n )\n const fieldPropsRef = useRef<Record<Path, FieldProps>>({})\n const setProps = useCallback(\n (path: Path, props: Record<string, unknown>) => {\n fieldPropsRef.current[path] = props\n },\n []\n )\n const hasFieldWithAsyncValidator = useCallback(() => {\n for (const path in fieldPropsRef.current) {\n const props = fieldPropsRef.current[path]\n if (isAsync(props.validator) || isAsync(props.onBlurValidator)) {\n return true\n }\n }\n\n return false\n }, [])\n\n // - Shared state\n const sharedData = useSharedState<Data>(id)\n const sharedAttachments = useSharedState<{\n filterDataHandler?: Props<Data>['filterData']\n hasErrors?: ContextState['hasErrors']\n setShowAllErrors?: ContextState['setShowAllErrors']\n setSubmitState?: ContextState['setSubmitState']\n rerenderUseDataHook?: () => void\n }>(id + '-attachments')\n\n const setSharedData = sharedData.set\n const extendSharedData = sharedData.extend\n const extendAttachment = sharedAttachments.extend\n const rerenderUseDataHook = sharedAttachments.data?.rerenderUseDataHook\n\n const cacheRef = useRef({\n data,\n schema,\n shared: sharedData.data,\n hasUsedInitialData: false,\n })\n\n internalDataRef.current = useMemo(() => {\n // NB: \"sharedData.data\" is only available on a rerender.\n // Update the shared state, if initialData is given and no shared state is available.\n // We do almost the same later in a useLayoutEffect, but we need to do it here as well, so we set the data as early as possible.\n if (id && initialData && !sharedData.data) {\n sharedData.update(initialData)\n }\n\n // Merge both internal data and the shared state, if it both where given\n if (\n id &&\n initialData &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data &&\n internalDataRef.current === initialData\n ) {\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // Use shared state if no initial and initial data, and the shared state exists\n if (\n id &&\n !initialData &&\n !internalDataRef.current &&\n sharedData.data &&\n cacheRef.current.shared === sharedData.data\n ) {\n return sharedData.data\n }\n\n // Merge the internal data with the shared state, if the shared was updated and not the same as internal data\n if (\n id &&\n sharedData.data &&\n cacheRef.current.shared !== sharedData.data &&\n sharedData.data !== internalDataRef.current\n ) {\n cacheRef.current.shared = sharedData.data\n return {\n ...internalDataRef.current,\n ...sharedData.data,\n }\n }\n\n // When external data has changed, update the internal data\n if (data !== cacheRef.current.data) {\n cacheRef.current.data = data\n return data\n }\n\n return internalDataRef.current\n }, [data, id, initialData, sharedData])\n\n useLayoutEffect(() => {\n // Set the shared state, if initialData was given\n if (id && initialData && !sharedData.data) {\n extendSharedData?.(initialData)\n }\n }, [id, initialData, extendSharedData, sharedData.data])\n\n useMemo(() => {\n executeAjvValidator()\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [internalDataRef.current]) // run validation when internal data has changed\n\n useLayoutEffect(() => {\n if (id) {\n extendAttachment?.({\n filterDataHandler,\n hasErrors,\n setShowAllErrors,\n setSubmitState,\n })\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n }, [\n extendAttachment,\n filterData,\n filterDataHandler,\n hasErrors,\n id,\n rerenderUseDataHook,\n setShowAllErrors,\n setSubmitState,\n ])\n\n /**\n * Update the data set\n */\n const updateDataValue: ContextState['updateDataValue'] = useCallback(\n (path, value) => {\n if (!path) {\n return\n }\n\n const givenData = (\n path === '/'\n ? // When setting the root of the data, the whole data set should be the new value\n value\n : // For sub paths, use the the existing data set (or empty array/object), but modify it below (since pointer.set is not immutable)\n internalDataRef.current ??\n (path.match(isArrayJsonPointer) ? [] : {})\n ) as Data\n\n let newData: Data = null\n try {\n // Update the data even if it contains errors. Submit/SubmitRequest will be called accordingly\n newData = structuredClone(givenData)\n } catch (e) {\n newData = givenData\n }\n\n if (path !== '/') {\n pointer.set(newData, path, value)\n }\n\n internalDataRef.current = newData\n\n if (id) {\n // Will ensure that Form.getData() gets the correct data\n extendSharedData?.(newData)\n if (filterData) {\n rerenderUseDataHook?.()\n }\n }\n\n if (sessionStorageId && typeof window !== 'undefined') {\n window.sessionStorage?.setItem(\n sessionStorageId,\n JSON.stringify(newData)\n )\n }\n\n forceUpdate()\n\n return newData\n },\n [\n id,\n sessionStorageId,\n extendSharedData,\n filterData,\n rerenderUseDataHook,\n ]\n )\n\n const setData = useCallback((newData: Data) => {\n internalDataRef.current = newData\n forceUpdate()\n }, [])\n\n /**\n * Update the data set on user interaction (unvalidated)\n */\n const handlePathChangeUnvalidated: ContextState['handlePathChange'] =\n useCallback(\n async (path, value) => {\n if (!path) {\n return null\n }\n\n updateDataValue(path, value)\n\n if (isAsync(onPathChange)) {\n await onPathChange?.(path, value)\n } else {\n onPathChange?.(path, value)\n }\n },\n [onPathChange, updateDataValue]\n )\n\n /**\n * Update the data set on user interaction\n */\n const handlePathChange: ContextState['handlePathChange'] = useCallback(\n async (path, value = '_undefined_') => {\n if (!path) {\n return null\n }\n\n if (value !== '_undefined_') {\n handlePathChangeUnvalidated(path, value)\n }\n\n showAllErrorsRef.current = false\n\n validateData()\n\n if (isAsync(onChange)) {\n return await onChange(internalDataRef.current as Data)\n }\n\n return onChange?.(internalDataRef.current as Data)\n },\n [handlePathChangeUnvalidated, onChange, validateData]\n )\n\n // - Mounted fields\n const handleMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = addListPath(\n mountedFieldPathsRef.current,\n path\n )\n }, [])\n\n const handleUnMountField = useCallback((path: Path) => {\n mountedFieldPathsRef.current = removeListPath(\n mountedFieldPathsRef.current,\n path\n )\n if (fieldPropsRef.current?.[path]) {\n delete fieldPropsRef.current[path]\n }\n }, [])\n\n // - Features\n const scrollToTop = useCallback(() => {\n if (typeof window !== 'undefined') {\n window?.scrollTo?.({ top: 0, behavior: 'smooth' })\n }\n }, [])\n\n /**\n * Shared logic dedicated to submit the whole form\n */\n const handleSubmitCall = useCallback<ContextState['handleSubmitCall']>(\n async (args) => {\n const {\n onSubmit,\n enableAsyncBehaviour,\n skipFieldValidation,\n skipErrorCheck,\n } = args\n\n setSubmitState({ error: undefined })\n\n const asyncBehaviorIsEnabled =\n (skipErrorCheck\n ? true\n : // Don't enable async behaviour if we have errors, but when we have a pending state\n !hasErrors() || hasFieldState('pending')) &&\n (enableAsyncBehaviour || hasFieldWithAsyncValidator())\n\n if (asyncBehaviorIsEnabled) {\n setFormState('pending')\n }\n\n // Just call the submit listeners \"once\", and not on the retry/recall\n if (!skipFieldValidation) {\n for (const {\n path,\n type,\n callback,\n } of fieldEventListenersRef.current) {\n if (\n type === 'onSubmit' &&\n mountedFieldPathsRef.current.includes(path)\n ) {\n // Call all submit listener callbacks (e.g. to validate fields)\n if (asyncBehaviorIsEnabled) {\n await callback()\n } else {\n callback()\n }\n }\n }\n }\n\n if (\n !(skipErrorCheck ? false : hasErrors()) &&\n !hasFieldState('pending') &&\n (skipFieldValidation ? true : !hasFieldState('error'))\n ) {\n let result: EventStateObject | unknown\n\n try {\n result = await onSubmit()\n\n if (result instanceof Error) {\n throw result\n }\n } catch (error) {\n result = { error }\n }\n\n const state = result as EventStateObject\n\n if (asyncBehaviorIsEnabled) {\n setFormState(state?.error ? 'abort' : 'complete')\n }\n\n // Force the state to be set by a custom status\n if (state?.['status']) {\n setFormState(state?.['status'])\n }\n\n if (state?.error || state?.warning || state?.info) {\n setSubmitState(state)\n }\n } else {\n if (asyncBehaviorIsEnabled) {\n window.requestAnimationFrame(() => {\n setFormState(undefined)\n })\n\n if (!skipFieldValidation) {\n // Add a event listener to continue the submit after the pending state is resolved\n onSubmitContinueRef.current = () => {\n window.requestAnimationFrame(() => {\n // Do not call the validators again,\n // because we already did it in the first call\n // If they are async, we wait for them to finish anyway\n handleSubmitCall({ ...args, skipFieldValidation: true })\n })\n }\n }\n }\n\n onSubmitRequest?.()\n\n setShowAllErrors(true)\n }\n\n return internalDataRef.current\n },\n [\n setSubmitState,\n hasErrors,\n hasFieldWithAsyncValidator,\n hasFieldState,\n setFormState,\n onSubmitRequest,\n setShowAllErrors,\n ]\n )\n\n /**\n * Request to submit the whole form\n */\n const handleSubmit = useCallback<ContextState['handleSubmit']>(\n async ({ formElement = null } = {}) => {\n handleSubmitCall({\n enableAsyncBehaviour: isAsync(onSubmit),\n onSubmit: async () => {\n const args = filterDataHandler(internalDataRef.current as Data)\n const opts = {\n resetForm: () => {\n formElement?.reset?.()\n\n if (typeof window !== 'undefined') {\n if (sessionStorageId) {\n window.sessionStorage.removeItem(sessionStorageId)\n }\n }\n\n forceUpdate() // in order to fill \"empty fields\" again with their internal states\n },\n clearData: () => {\n internalDataRef.current = {}\n if (id) {\n setSharedData?.({} as Data)\n } else {\n forceUpdate()\n }\n },\n }\n\n let result = undefined\n\n if (isAsync(onSubmit)) {\n result = await onSubmit(args, opts)\n } else {\n result = onSubmit?.(args, opts)\n }\n\n const completeResult = await onSubmitComplete?.(args, result)\n if (completeResult) {\n result =\n Object.keys(result).length > 0\n ? { ...result, ...completeResult }\n : completeResult\n }\n\n if (scrollTopOnSubmit) {\n scrollToTop()\n }\n\n return result\n },\n })\n },\n [\n filterDataHandler,\n handleSubmitCall,\n id,\n onSubmit,\n onSubmitComplete,\n scrollToTop,\n scrollTopOnSubmit,\n sessionStorageId,\n setSharedData,\n ]\n )\n\n // Collect listeners to be called during form submit\n const fieldEventListenersRef = useRef<Array<EventListenerCall>>([])\n const setFieldEventListener = useCallback(\n (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => {\n fieldEventListenersRef.current =\n fieldEventListenersRef.current.filter(({ path: p, type: t }) => {\n return !(p === path && t === type)\n })\n fieldEventListenersRef.current.push({ path, type, callback })\n },\n []\n )\n\n // Handle unresolved field states during async submit\n const onSubmitContinueRef = useRef<() => void>(null)\n if (!hasFieldState('pending')) {\n onSubmitContinueRef.current?.()\n onSubmitContinueRef.current = null\n }\n\n // - ajv validator routines\n useMountEffect(() => {\n if (schema) {\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n }\n\n // Validate the initial data\n validateData()\n })\n useUpdateEffect(() => {\n if (schema && schema !== cacheRef.current.schema) {\n cacheRef.current.schema = schema\n ajvValidatorRef.current = ajvRef.current?.compile(schema)\n\n validateData()\n forceUpdate()\n }\n }, [schema, validateData, forceUpdate])\n\n const onTimeout = useCallback(() => {\n setFormState(undefined)\n setSubmitState({\n info: undefined,\n warning: undefined,\n error: undefined,\n })\n }, [setFormState, setSubmitState])\n\n const { bufferedFormState: formState } = useFormStatusBuffer({\n formState: formStateRef.current,\n waitFor: hasFieldState('pending'),\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n })\n\n const submitState = submitStateRef.current\n const disabled = rest?.['disabled'] ?? formState === 'pending'\n\n return (\n <Context.Provider\n value={{\n /** Method */\n handlePathChange,\n handlePathChangeUnvalidated,\n handleSubmit,\n handleMountField,\n handleUnMountField,\n handleSubmitCall,\n setFormState,\n setSubmitState,\n setShowAllErrors,\n setFieldEventListener,\n setFieldState,\n setFieldError,\n setProps,\n hasErrors,\n hasFieldState,\n checkFieldStateFor,\n validateData,\n updateDataValue,\n setData,\n filterDataHandler,\n scrollToTop,\n\n /** State handling */\n schema,\n disabled,\n formState,\n submitState,\n contextErrorMessages,\n hasContext: true,\n errors: errorsRef.current,\n showAllErrors: showAllErrorsRef.current,\n mountedFieldPaths: mountedFieldPathsRef.current,\n ajvInstance: ajvRef.current,\n\n /** Additional */\n id,\n data: internalDataRef.current,\n props,\n ...rest,\n }}\n >\n <SharedProvider formElement={{ disabled }}>\n {children}\n </SharedProvider>\n </Context.Provider>\n )\n}\n\ntype PathList = string[]\n\nfunction addListPath(paths: PathList, path: Path): PathList {\n return paths.includes(path) ? paths : paths.concat(path)\n}\n\nfunction removeListPath(paths: PathList, path: Path): PathList {\n return paths.filter((thisPath) => thisPath !== path)\n}\n\ntype FormStatusBufferProps = {\n minimumAsyncBehaviorTime?: Props<unknown>['minimumAsyncBehaviorTime']\n asyncSubmitTimeout?: Props<unknown>['asyncSubmitTimeout']\n formState: ContextState['formState']\n waitFor: boolean\n onTimeout: () => void\n}\n\nfunction useFormStatusBuffer(props: FormStatusBufferProps) {\n const {\n formState,\n waitFor,\n minimumAsyncBehaviorTime,\n asyncSubmitTimeout,\n onTimeout,\n } = props || {}\n\n const [, forceUpdate] = useReducer(() => ({}), {})\n const stateRef = useRef<SubmitState>()\n const nowRef = useRef<number | null>(null)\n const timeoutRef = useRef<{\n complete?: NodeJS.Timeout | null\n reset?: NodeJS.Timeout | null\n timeout?: NodeJS.Timeout | null\n }>({})\n\n const setState = useCallback(\n (state: SubmitState) => {\n stateRef.current = state\n forceUpdate()\n },\n [forceUpdate]\n )\n\n const clear = useCallback(() => {\n for (const key in timeoutRef.current) {\n clearTimeout(timeoutRef.current[key])\n }\n }, [])\n\n const hadCompleteRef = useRef(false)\n\n useEffect(() => {\n // This offset is used to calculate the delay,\n // which ensures that the form state is displayed for at least minimumAsyncBehaviorTime duration.\n // If the form was 'pending' for less than minimumAsyncBehaviorTime,\n // the delay will be the remaining time to reach minimumAsyncBehaviorTime.\n const isTest = process.env.NODE_ENV === 'test'\n const minimum =\n minimumAsyncBehaviorTime ??\n // make it testable\n (isTest ? 1 : 1000)\n\n if (stateRef.current && formState === 'error') {\n clear()\n setState(undefined)\n return\n }\n\n if (formState === 'abort') {\n clear()\n setState('abort')\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n }, minimum)\n return\n }\n\n if (formState === 'complete') {\n hadCompleteRef.current = true\n }\n\n if (formState === 'pending' && stateRef.current !== 'pending') {\n clear()\n nowRef.current = Date.now()\n hadCompleteRef.current = false\n setState('pending')\n } else if (stateRef.current === 'pending') {\n const offset = Math.max(Date.now() - nowRef.current)\n const delay = isTest ? minimum : Math.max(minimum - offset, 0)\n\n if (!waitFor) {\n timeoutRef.current.complete = setTimeout(() => {\n if (hadCompleteRef.current) {\n setState('complete')\n }\n }, delay)\n\n timeoutRef.current.reset = setTimeout(() => {\n nowRef.current = 0\n setState(undefined)\n clear()\n }, delay + minimum)\n }\n }\n\n if (stateRef.current === 'pending') {\n timeoutRef.current.timeout = setTimeout(() => {\n clear()\n setState(undefined)\n onTimeout?.()\n }, asyncSubmitTimeout ?? 30000)\n }\n\n return clear\n }, [\n clear,\n minimumAsyncBehaviorTime,\n formState,\n setState,\n waitFor,\n asyncSubmitTimeout,\n onTimeout,\n ])\n\n return { bufferedFormState: stateRef.current }\n}\n"],"mappings":"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"}
|
|
@@ -1,29 +1,26 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
2
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
5
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
|
-
import React, {
|
|
4
|
+
import React, { useMemo } from 'react';
|
|
7
5
|
import StringField from '../String';
|
|
8
|
-
import SharedContext from '../../../../shared/Context';
|
|
9
6
|
import useErrorMessage from '../../hooks/useErrorMessage';
|
|
7
|
+
import useLocale from '../../hooks/useLocale';
|
|
10
8
|
function BankAccountNumber(props) {
|
|
11
9
|
var _props$pattern, _props$label, _props$width;
|
|
12
|
-
const
|
|
13
|
-
const tr = sharedContext === null || sharedContext === void 0 ? void 0 : sharedContext.translation.Forms;
|
|
10
|
+
const translations = useLocale().BankAccountNumber;
|
|
14
11
|
const {
|
|
15
12
|
validate = true,
|
|
16
13
|
omitMask
|
|
17
14
|
} = props;
|
|
18
15
|
const errorMessages = useErrorMessage(props.path, props.errorMessages, {
|
|
19
|
-
required:
|
|
20
|
-
pattern:
|
|
16
|
+
required: translations.errorRequired,
|
|
17
|
+
pattern: translations.errorPattern
|
|
21
18
|
});
|
|
22
19
|
const mask = useMemo(() => omitMask ? [/\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/] : [/\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, /\d/], [omitMask]);
|
|
23
20
|
const StringFieldProps = _objectSpread(_objectSpread({}, props), {}, {
|
|
24
21
|
className: 'dnb-forms-field-bank-account-number',
|
|
25
22
|
pattern: (_props$pattern = props.pattern) !== null && _props$pattern !== void 0 ? _props$pattern : validate ? '^[0-9]{11}$' : undefined,
|
|
26
|
-
label: (_props$label = props.label) !== null && _props$label !== void 0 ? _props$label :
|
|
23
|
+
label: (_props$label = props.label) !== null && _props$label !== void 0 ? _props$label : translations.label,
|
|
27
24
|
errorMessages,
|
|
28
25
|
mask,
|
|
29
26
|
width: (_props$width = props.width) !== null && _props$width !== void 0 ? _props$width : 'medium',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BankAccountNumber.js","names":["React","
|
|
1
|
+
{"version":3,"file":"BankAccountNumber.js","names":["React","useMemo","StringField","useErrorMessage","useLocale","BankAccountNumber","props","_props$pattern","_props$label","_props$width","translations","validate","omitMask","errorMessages","path","required","errorRequired","pattern","errorPattern","mask","StringFieldProps","_objectSpread","className","undefined","label","width","inputMode","createElement","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/BankAccountNumber/BankAccountNumber.tsx"],"sourcesContent":["import React, { useMemo } from 'react'\nimport StringField, { Props as StringFieldProps } from '../String'\n\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useLocale from '../../hooks/useLocale'\n\nexport type Props = StringFieldProps & {\n validate?: boolean\n omitMask?: boolean\n}\n\nfunction BankAccountNumber(props: Props) {\n const translations = useLocale().BankAccountNumber\n const { validate = true, omitMask } = props\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.errorRequired,\n pattern: translations.errorPattern,\n })\n const mask = useMemo(\n () =>\n omitMask\n ? [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ]\n : [\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n ' ',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n ],\n [omitMask]\n )\n\n const StringFieldProps: Props = {\n ...props,\n className: 'dnb-forms-field-bank-account-number',\n pattern: props.pattern ?? (validate ? '^[0-9]{11}$' : undefined),\n label: props.label ?? translations.label,\n errorMessages,\n mask,\n width: props.width ?? 'medium',\n inputMode: 'numeric',\n }\n\n return <StringField {...StringFieldProps} />\n}\n\nBankAccountNumber._supportsSpacingProps = true\nexport default BankAccountNumber\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,OAAOC,WAAW,MAAqC,WAAW;AAElE,OAAOC,eAAe,MAAM,6BAA6B;AACzD,OAAOC,SAAS,MAAM,uBAAuB;AAO7C,SAASC,iBAAiBA,CAACC,KAAY,EAAE;EAAA,IAAAC,cAAA,EAAAC,YAAA,EAAAC,YAAA;EACvC,MAAMC,YAAY,GAAGN,SAAS,CAAC,CAAC,CAACC,iBAAiB;EAClD,MAAM;IAAEM,QAAQ,GAAG,IAAI;IAAEC;EAAS,CAAC,GAAGN,KAAK;EAE3C,MAAMO,aAAa,GAAGV,eAAe,CAACG,KAAK,CAACQ,IAAI,EAAER,KAAK,CAACO,aAAa,EAAE;IACrEE,QAAQ,EAAEL,YAAY,CAACM,aAAa;IACpCC,OAAO,EAAEP,YAAY,CAACQ;EACxB,CAAC,CAAC;EACF,MAAMC,IAAI,GAAGlB,OAAO,CAClB,MACEW,QAAQ,GACJ,CACE,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,GACD,CACE,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,EACP,CAACA,QAAQ,CACX,CAAC;EAED,MAAMQ,gBAAuB,GAAAC,aAAA,CAAAA,aAAA,KACxBf,KAAK;IACRgB,SAAS,EAAE,qCAAqC;IAChDL,OAAO,GAAAV,cAAA,GAAED,KAAK,CAACW,OAAO,cAAAV,cAAA,cAAAA,cAAA,GAAKI,QAAQ,GAAG,aAAa,GAAGY,SAAU;IAChEC,KAAK,GAAAhB,YAAA,GAAEF,KAAK,CAACkB,KAAK,cAAAhB,YAAA,cAAAA,YAAA,GAAIE,YAAY,CAACc,KAAK;IACxCX,aAAa;IACbM,IAAI;IACJM,KAAK,GAAAhB,YAAA,GAAEH,KAAK,CAACmB,KAAK,cAAAhB,YAAA,cAAAA,YAAA,GAAI,QAAQ;IAC9BiB,SAAS,EAAE;EAAS,EACrB;EAED,OAAO1B,KAAA,CAAA2B,aAAA,CAACzB,WAAW,EAAKkB,gBAAmB,CAAC;AAC9C;AAEAf,iBAAiB,CAACuB,qBAAqB,GAAG,IAAI;AAC9C,eAAevB,iBAAiB"}
|