@fremtind/jokul 0.27.1 → 0.27.2
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/build/build-stats.html +1 -1
- package/build/cjs/components/ScreenReaderOnly.cjs.map +1 -1
- package/build/cjs/components/accordion/Accordion.cjs.map +1 -1
- package/build/cjs/components/accordion/AccordionItem.cjs.map +1 -1
- package/build/cjs/components/breadcrumb/Breadcrumb.cjs.map +1 -1
- package/build/cjs/components/breadcrumb/BreadcrumbItem.cjs.map +1 -1
- package/build/cjs/components/button/Button.cjs.map +1 -1
- package/build/cjs/components/button/index.d.cts +1 -1
- package/build/cjs/components/button/types.cjs.map +1 -1
- package/build/cjs/components/card/Card.cjs.map +1 -1
- package/build/cjs/components/card/CardImage.cjs.map +1 -1
- package/build/cjs/components/card/InfoCard.cjs.map +1 -1
- package/build/cjs/components/card/NavCard.cjs.map +1 -1
- package/build/cjs/components/card/TaskCard.cjs.map +1 -1
- package/build/cjs/components/card/documentation/examples/FakturainfoExample.d.cts +1 -1
- package/build/cjs/components/card/documentation/examples/StatuskortExample.d.cts +1 -1
- package/build/cjs/components/card/types.cjs.map +1 -1
- package/build/cjs/components/card/utils.cjs.map +1 -1
- package/build/cjs/components/checkbox/Checkbox.cjs.map +1 -1
- package/build/cjs/components/combobox/Combobox.cjs.map +1 -1
- package/build/cjs/components/combobox/index.d.cts +1 -1
- package/build/cjs/components/cookie-consent/CookieConsent.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/CookieConsentContext.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/CookieConsentModal.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/consents/CustomConsents.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/consents/DefaultConsents.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/consents/RequirementCheckbox.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/consents/RequirementCheckbox.d.cts +1 -1
- package/build/cjs/components/cookie-consent/cookieConsentUtils.cjs.map +1 -1
- package/build/cjs/components/cookie-consent/cookieConsentUtils.d.cts +1 -1
- package/build/cjs/components/cookie-consent/index.d.cts +1 -1
- package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/Calendar.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/calendarReducer.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/useCalendar.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/utils.cjs.map +1 -1
- package/build/cjs/components/datepicker/internal/utils.d.cts +2 -2
- package/build/cjs/components/datepicker/utils.cjs.map +1 -1
- package/build/cjs/components/description-list/DescriptionList.cjs.map +1 -1
- package/build/cjs/components/expander/ExpandSection.cjs.map +1 -1
- package/build/cjs/components/expander/Expander.cjs.map +1 -1
- package/build/cjs/components/feedback/Feedback.cjs.map +1 -1
- package/build/cjs/components/feedback/FeedbackSuccess.cjs.map +1 -1
- package/build/cjs/components/feedback/FeedbackValues.cjs.map +1 -1
- package/build/cjs/components/feedback/feedbackContext.cjs.map +1 -1
- package/build/cjs/components/feedback/followup/Followup.cjs.map +1 -1
- package/build/cjs/components/feedback/followup/followupContext.cjs.map +1 -1
- package/build/cjs/components/feedback/followup/useFollowup.cjs.map +1 -1
- package/build/cjs/components/feedback/main-question/MainQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/main-question/mainQuestionContext.cjs.map +1 -1
- package/build/cjs/components/feedback/main-question/useMainQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/presets.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/AddonQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/CheckboxQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/ContactQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/RadioQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/SmileyQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/TextQuestion.cjs.map +1 -1
- package/build/cjs/components/feedback/questions/smileyUtils.cjs.map +1 -1
- package/build/cjs/components/feedback/utils.cjs.map +1 -1
- package/build/cjs/components/flex/Flex.cjs.map +1 -1
- package/build/cjs/components/icon/Icon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ArrowDownIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ArrowLeftIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ArrowNorthEastIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ArrowRightIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ArrowUpIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/CalendarIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/CheckIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ChevronDownIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ChevronLeftIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ChevronRightIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ChevronUpIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/CloseIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/CopyIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/DotsIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/DragIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/GreenCheckIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/HamburgerIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/LinkIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/MinusIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/PenIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/PlusIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/QuestionIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/RedCrossIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/SearchIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ThumbDownIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/ThumbUpIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/TrashCanIcon.cjs.map +1 -1
- package/build/cjs/components/icon/icons/animated/ArrowHorizontalAnimated.cjs.map +1 -1
- package/build/cjs/components/icon/icons/animated/ArrowVerticalAnimated.cjs.map +1 -1
- package/build/cjs/components/icon/icons/animated/PlusRemoveAnimated.cjs.map +1 -1
- package/build/cjs/components/icon-button/IconButton.cjs.map +1 -1
- package/build/cjs/components/image/Image.cjs.map +1 -1
- package/build/cjs/components/image/useImageLoadingStatus.cjs.map +1 -1
- package/build/cjs/components/index.d.cts +1 -1
- package/build/cjs/components/input-group/FieldGroup.cjs.map +1 -1
- package/build/cjs/components/input-group/InputGroup.cjs.map +1 -1
- package/build/cjs/components/input-group/Label.cjs.map +1 -1
- package/build/cjs/components/input-group/SupportLabel.cjs.map +1 -1
- package/build/cjs/components/input-group/index.d.cts +2 -2
- package/build/cjs/components/link/Link.cjs.map +1 -1
- package/build/cjs/components/link/NavLink.cjs.map +1 -1
- package/build/cjs/components/link-list/LinkList.cjs.map +1 -1
- package/build/cjs/components/loader/index.d.cts +2 -2
- package/build/cjs/components/loader/skeletons/SkeletonAnimation.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonButton.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonCheckboxGroup.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonElement.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonInput.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonLabel.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonRadioButtonGroup.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonTable.cjs.map +1 -1
- package/build/cjs/components/loader/skeletons/SkeletonTextArea.cjs.map +1 -1
- package/build/cjs/components/loader/useDelayedRender.cjs.map +1 -1
- package/build/cjs/components/logo/Logo.cjs.map +1 -1
- package/build/cjs/components/logo/LogoStamp.cjs.map +1 -1
- package/build/cjs/components/logo/useTextSpinner.cjs.map +1 -1
- package/build/cjs/components/menu/Menu.cjs.map +1 -1
- package/build/cjs/components/menu/MenuItem.cjs.map +1 -1
- package/build/cjs/components/menu/MenuItemCheckbox.cjs.map +1 -1
- package/build/cjs/components/menu/index.d.cts +1 -1
- package/build/cjs/components/message/DismissButton.cjs.map +1 -1
- package/build/cjs/components/message/FormErrorMessage.cjs.map +1 -1
- package/build/cjs/components/message/Message.cjs.map +1 -1
- package/build/cjs/components/message/index.d.cts +2 -2
- package/build/cjs/components/modal/Modal.cjs.map +1 -1
- package/build/cjs/components/modal/index.d.cts +1 -1
- package/build/cjs/components/modal/useModal.cjs.map +1 -1
- package/build/cjs/components/pagination/Pagination.cjs.map +1 -1
- package/build/cjs/components/popover/Popover.cjs.map +1 -1
- package/build/cjs/components/progress-bar/Countdown.cjs.map +1 -1
- package/build/cjs/components/radio-button/BaseRadioButton.cjs.map +1 -1
- package/build/cjs/components/radio-button/RadioButton.cjs.map +1 -1
- package/build/cjs/components/radio-button/RadioButtonGroup.cjs.map +1 -1
- package/build/cjs/components/radio-button/radioGroupContext.cjs.map +1 -1
- package/build/cjs/components/radio-panel/RadioPanel.cjs.map +1 -1
- package/build/cjs/components/select/NativeSelect.cjs.map +1 -1
- package/build/cjs/components/select/Select.cjs.map +1 -1
- package/build/cjs/components/select/select-utils.cjs.map +1 -1
- package/build/cjs/components/summary-table/SummaryTable.cjs.map +1 -1
- package/build/cjs/components/summary-table/SummaryTableRow.cjs.map +1 -1
- package/build/cjs/components/summary-table/mocks.cjs.map +1 -1
- package/build/cjs/components/system-message/SystemMessage.cjs.map +1 -1
- package/build/cjs/components/system-message/common/DismissButton.cjs.map +1 -1
- package/build/cjs/components/system-message/common/MessageIcon.cjs.map +1 -1
- package/build/cjs/components/system-message/index.d.cts +1 -1
- package/build/cjs/components/table/DataTable.cjs.map +1 -1
- package/build/cjs/components/table/ExpandableTableRow.cjs.map +1 -1
- package/build/cjs/components/table/ExpandableTableRowController.cjs.map +1 -1
- package/build/cjs/components/table/Table.cjs.map +1 -1
- package/build/cjs/components/table/TableBody.cjs.map +1 -1
- package/build/cjs/components/table/TableCaption.cjs.map +1 -1
- package/build/cjs/components/table/TableCell.cjs.map +1 -1
- package/build/cjs/components/table/TableColumn.cjs.map +1 -1
- package/build/cjs/components/table/TableColumnGroup.cjs.map +1 -1
- package/build/cjs/components/table/TableFooter.cjs.map +1 -1
- package/build/cjs/components/table/TableHead.cjs.map +1 -1
- package/build/cjs/components/table/TableHeader.cjs.map +1 -1
- package/build/cjs/components/table/TablePagination.cjs.map +1 -1
- package/build/cjs/components/table/TableRow.cjs.map +1 -1
- package/build/cjs/components/table/index.d.cts +1 -1
- package/build/cjs/components/table/tableContext.cjs.map +1 -1
- package/build/cjs/components/table/tableSectionContext.cjs.map +1 -1
- package/build/cjs/components/table/utils.cjs.map +1 -1
- package/build/cjs/components/tabs/NavTab.cjs.map +1 -1
- package/build/cjs/components/tabs/NavTabs.cjs.map +1 -1
- package/build/cjs/components/tabs/Tab.cjs.map +1 -1
- package/build/cjs/components/tabs/TabList.cjs.map +1 -1
- package/build/cjs/components/tabs/Tabs.cjs.map +1 -1
- package/build/cjs/components/tag/Tag.cjs.map +1 -1
- package/build/cjs/components/text-input/BaseTextArea.cjs.map +1 -1
- package/build/cjs/components/text-input/BaseTextInput.cjs.map +1 -1
- package/build/cjs/components/text-input/TextArea.cjs.map +1 -1
- package/build/cjs/components/text-input/TextInput.cjs.map +1 -1
- package/build/cjs/components/toast/Toast.cjs.map +1 -1
- package/build/cjs/components/toast/ToastRegion.cjs.map +1 -1
- package/build/cjs/components/toast/ToastRegion.d.cts +1 -1
- package/build/cjs/components/toast/toastContext.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/ToggleSlider.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/ToggleSwitch.cjs.map +1 -1
- package/build/cjs/components/toggle-switch/usePillStyles.cjs.map +1 -1
- package/build/cjs/components/tooltip/PopupTip.cjs.map +1 -1
- package/build/cjs/components/tooltip/Tooltip.cjs.map +1 -1
- package/build/cjs/components/tooltip/TooltipContent.cjs.map +1 -1
- package/build/cjs/components/tooltip/TooltipTrigger.cjs.map +1 -1
- package/build/cjs/components/tooltip/index.d.cts +1 -1
- package/build/cjs/hooks/index.d.cts +5 -5
- package/build/cjs/hooks/mediaQueryUtils.cjs.map +1 -1
- package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.cjs.map +1 -1
- package/build/cjs/hooks/useAnimatedHeight/index.d.cts +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.cjs.map +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs.map +1 -1
- package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs.map +1 -1
- package/build/cjs/hooks/useAriaLiveRegion/index.d.cts +1 -1
- package/build/cjs/hooks/useAriaLiveRegion/useAriaLiveRegion.cjs.map +1 -1
- package/build/cjs/hooks/useBrowserPreferences/useBrowserPreferences.cjs.map +1 -1
- package/build/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
- package/build/cjs/hooks/useElementDimensions/index.d.cts +1 -1
- package/build/cjs/hooks/useElementDimensions/useElementDimensions.cjs.map +1 -1
- package/build/cjs/hooks/useFocusOutside/useFocusOutside.cjs.map +1 -1
- package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
- package/build/cjs/hooks/useListNavigation/useListNavigation.cjs.map +1 -1
- package/build/cjs/hooks/useListNavigation/useListNavigation.d.cts +1 -1
- package/build/cjs/hooks/useLocalStorage/useLocalStorage.cjs.map +1 -1
- package/build/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
- package/build/cjs/hooks/useProgressiveImg/index.d.cts +1 -1
- package/build/cjs/hooks/useProgressiveImg/useProgressiveImg.cjs.map +1 -1
- package/build/cjs/hooks/useProgressiveImg/useProgressiveImg.d.cts +1 -1
- package/build/cjs/hooks/useScreen/state.cjs.map +1 -1
- package/build/cjs/hooks/useScreen/useScreen.cjs.map +1 -1
- package/build/cjs/hooks/useScrollIntoView/index.d.cts +1 -1
- package/build/cjs/hooks/useSwipeGesture/useSwipeGesture.cjs.map +1 -1
- package/build/cjs/utilities/formatters/avstand/formatAvstand.cjs.map +1 -1
- package/build/cjs/utilities/formatters/bytes/formatBytes.cjs.map +1 -1
- package/build/cjs/utilities/formatters/date/formatDate.cjs.map +1 -1
- package/build/cjs/utilities/formatters/fodselsnummer/formatFodselsnummer.cjs.map +1 -1
- package/build/cjs/utilities/formatters/index.d.cts +5 -5
- package/build/cjs/utilities/formatters/kontonummer/formatKontonummer.cjs.map +1 -1
- package/build/cjs/utilities/formatters/kortnummer/formatKortnummer.cjs.map +1 -1
- package/build/cjs/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs.map +1 -1
- package/build/cjs/utilities/formatters/telefonnummer/formatTelefonnummer.cjs.map +1 -1
- package/build/cjs/utilities/formatters/util/formatNumber.cjs.map +1 -1
- package/build/cjs/utilities/formatters/util/parseNumber.cjs.map +1 -1
- package/build/cjs/utilities/formatters/util/registerWithMask.cjs.map +1 -1
- package/build/cjs/utilities/formatters/valuta/formatValuta.cjs.map +1 -1
- package/build/cjs/utilities/getThemeAndDensity.cjs.map +1 -1
- package/build/cjs/utilities/polymorphism/SlotComponent.cjs.map +1 -1
- package/build/cjs/utilities/polymorphism/index.d.cts +1 -1
- package/build/cjs/utilities/polymorphism/mergeProps.cjs.map +1 -1
- package/build/cjs/utilities/polymorphism/mergeRefs.cjs.map +1 -1
- package/build/cjs/utilities/tabListener.cjs.map +1 -1
- package/build/cjs/utilities/validators/hasMinimumWords/hasMinimumWords.cjs.map +1 -1
- package/build/cjs/utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.cjs.map +1 -1
- package/build/cjs/utilities/validators/isValidChassisnummer/isValidChassisnummer.cjs.map +1 -1
- package/build/cjs/utilities/validators/isValidEpost/isValidEpost.cjs.map +1 -1
- package/build/cjs/utilities/validators/isValidFodselsnummer/isValidFodselsnummer.cjs.map +1 -1
- package/build/cjs/utilities/validators/isValidKortnummer/isValidKortnummer.cjs.map +1 -1
- package/build/cjs/utilities/validators/isValidName/isValidName.cjs.map +1 -1
- package/build/cjs/utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.cjs.map +1 -1
- package/build/cjs/utilities/validators/isValidTelefonnummer/isValidTelefonnummer.cjs.map +1 -1
- package/build/es/components/ScreenReaderOnly.js.map +1 -1
- package/build/es/components/accordion/Accordion.js.map +1 -1
- package/build/es/components/accordion/AccordionItem.js.map +1 -1
- package/build/es/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/build/es/components/breadcrumb/BreadcrumbItem.js.map +1 -1
- package/build/es/components/button/Button.js.map +1 -1
- package/build/es/components/button/index.d.ts +1 -1
- package/build/es/components/button/types.js.map +1 -1
- package/build/es/components/card/Card.js.map +1 -1
- package/build/es/components/card/CardImage.js.map +1 -1
- package/build/es/components/card/InfoCard.js.map +1 -1
- package/build/es/components/card/NavCard.js.map +1 -1
- package/build/es/components/card/TaskCard.js.map +1 -1
- package/build/es/components/card/documentation/examples/FakturainfoExample.d.ts +1 -1
- package/build/es/components/card/documentation/examples/StatuskortExample.d.ts +1 -1
- package/build/es/components/card/types.js.map +1 -1
- package/build/es/components/card/utils.js.map +1 -1
- package/build/es/components/checkbox/Checkbox.js.map +1 -1
- package/build/es/components/combobox/Combobox.js.map +1 -1
- package/build/es/components/combobox/index.d.ts +1 -1
- package/build/es/components/cookie-consent/CookieConsent.js.map +1 -1
- package/build/es/components/cookie-consent/CookieConsentContext.js.map +1 -1
- package/build/es/components/cookie-consent/CookieConsentModal.js.map +1 -1
- package/build/es/components/cookie-consent/consents/CustomConsents.js.map +1 -1
- package/build/es/components/cookie-consent/consents/DefaultConsents.js.map +1 -1
- package/build/es/components/cookie-consent/consents/RequirementCheckbox.d.ts +1 -1
- package/build/es/components/cookie-consent/consents/RequirementCheckbox.js.map +1 -1
- package/build/es/components/cookie-consent/cookieConsentUtils.d.ts +1 -1
- package/build/es/components/cookie-consent/cookieConsentUtils.js.map +1 -1
- package/build/es/components/cookie-consent/index.d.ts +1 -1
- package/build/es/components/datepicker/DatePicker.js.map +1 -1
- package/build/es/components/datepicker/internal/Calendar.js.map +1 -1
- package/build/es/components/datepicker/internal/calendarReducer.js.map +1 -1
- package/build/es/components/datepicker/internal/useCalendar.js.map +1 -1
- package/build/es/components/datepicker/internal/utils.d.ts +2 -2
- package/build/es/components/datepicker/internal/utils.js.map +1 -1
- package/build/es/components/datepicker/utils.js.map +1 -1
- package/build/es/components/description-list/DescriptionList.js.map +1 -1
- package/build/es/components/expander/ExpandSection.js.map +1 -1
- package/build/es/components/expander/Expander.js.map +1 -1
- package/build/es/components/feedback/Feedback.js.map +1 -1
- package/build/es/components/feedback/FeedbackSuccess.js.map +1 -1
- package/build/es/components/feedback/FeedbackValues.js.map +1 -1
- package/build/es/components/feedback/feedbackContext.js.map +1 -1
- package/build/es/components/feedback/followup/Followup.js.map +1 -1
- package/build/es/components/feedback/followup/followupContext.js.map +1 -1
- package/build/es/components/feedback/followup/useFollowup.js.map +1 -1
- package/build/es/components/feedback/main-question/MainQuestion.js.map +1 -1
- package/build/es/components/feedback/main-question/mainQuestionContext.js.map +1 -1
- package/build/es/components/feedback/main-question/useMainQuestion.js.map +1 -1
- package/build/es/components/feedback/presets.js.map +1 -1
- package/build/es/components/feedback/questions/AddonQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/CheckboxQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/ContactQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/RadioQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/SmileyQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/TextQuestion.js.map +1 -1
- package/build/es/components/feedback/questions/smileyUtils.js.map +1 -1
- package/build/es/components/feedback/utils.js.map +1 -1
- package/build/es/components/flex/Flex.js.map +1 -1
- package/build/es/components/icon/Icon.js.map +1 -1
- package/build/es/components/icon/icons/ArrowDownIcon.js.map +1 -1
- package/build/es/components/icon/icons/ArrowLeftIcon.js.map +1 -1
- package/build/es/components/icon/icons/ArrowNorthEastIcon.js.map +1 -1
- package/build/es/components/icon/icons/ArrowRightIcon.js.map +1 -1
- package/build/es/components/icon/icons/ArrowUpIcon.js.map +1 -1
- package/build/es/components/icon/icons/CalendarIcon.js.map +1 -1
- package/build/es/components/icon/icons/CheckIcon.js.map +1 -1
- package/build/es/components/icon/icons/ChevronDownIcon.js.map +1 -1
- package/build/es/components/icon/icons/ChevronLeftIcon.js.map +1 -1
- package/build/es/components/icon/icons/ChevronRightIcon.js.map +1 -1
- package/build/es/components/icon/icons/ChevronUpIcon.js.map +1 -1
- package/build/es/components/icon/icons/CloseIcon.js.map +1 -1
- package/build/es/components/icon/icons/CopyIcon.js.map +1 -1
- package/build/es/components/icon/icons/DotsIcon.js.map +1 -1
- package/build/es/components/icon/icons/DragIcon.js.map +1 -1
- package/build/es/components/icon/icons/GreenCheckIcon.js.map +1 -1
- package/build/es/components/icon/icons/HamburgerIcon.js.map +1 -1
- package/build/es/components/icon/icons/LinkIcon.js.map +1 -1
- package/build/es/components/icon/icons/MinusIcon.js.map +1 -1
- package/build/es/components/icon/icons/PenIcon.js.map +1 -1
- package/build/es/components/icon/icons/PlusIcon.js.map +1 -1
- package/build/es/components/icon/icons/QuestionIcon.js.map +1 -1
- package/build/es/components/icon/icons/RedCrossIcon.js.map +1 -1
- package/build/es/components/icon/icons/SearchIcon.js.map +1 -1
- package/build/es/components/icon/icons/ThumbDownIcon.js.map +1 -1
- package/build/es/components/icon/icons/ThumbUpIcon.js.map +1 -1
- package/build/es/components/icon/icons/TrashCanIcon.js.map +1 -1
- package/build/es/components/icon/icons/animated/ArrowHorizontalAnimated.js.map +1 -1
- package/build/es/components/icon/icons/animated/ArrowVerticalAnimated.js.map +1 -1
- package/build/es/components/icon/icons/animated/PlusRemoveAnimated.js.map +1 -1
- package/build/es/components/icon-button/IconButton.js.map +1 -1
- package/build/es/components/image/Image.js.map +1 -1
- package/build/es/components/image/useImageLoadingStatus.js.map +1 -1
- package/build/es/components/index.d.ts +1 -1
- package/build/es/components/input-group/FieldGroup.js.map +1 -1
- package/build/es/components/input-group/InputGroup.js.map +1 -1
- package/build/es/components/input-group/Label.js.map +1 -1
- package/build/es/components/input-group/SupportLabel.js.map +1 -1
- package/build/es/components/input-group/index.d.ts +2 -2
- package/build/es/components/link/Link.js.map +1 -1
- package/build/es/components/link/NavLink.js.map +1 -1
- package/build/es/components/link-list/LinkList.js.map +1 -1
- package/build/es/components/loader/index.d.ts +2 -2
- package/build/es/components/loader/skeletons/SkeletonAnimation.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonButton.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonCheckboxGroup.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonElement.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonInput.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonLabel.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonRadioButtonGroup.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonTable.js.map +1 -1
- package/build/es/components/loader/skeletons/SkeletonTextArea.js.map +1 -1
- package/build/es/components/loader/useDelayedRender.js.map +1 -1
- package/build/es/components/logo/Logo.js.map +1 -1
- package/build/es/components/logo/LogoStamp.js.map +1 -1
- package/build/es/components/logo/useTextSpinner.js.map +1 -1
- package/build/es/components/menu/Menu.js.map +1 -1
- package/build/es/components/menu/MenuItem.js.map +1 -1
- package/build/es/components/menu/MenuItemCheckbox.js.map +1 -1
- package/build/es/components/menu/index.d.ts +1 -1
- package/build/es/components/message/DismissButton.js.map +1 -1
- package/build/es/components/message/FormErrorMessage.js.map +1 -1
- package/build/es/components/message/Message.js.map +1 -1
- package/build/es/components/message/index.d.ts +2 -2
- package/build/es/components/modal/Modal.js.map +1 -1
- package/build/es/components/modal/index.d.ts +1 -1
- package/build/es/components/modal/useModal.js.map +1 -1
- package/build/es/components/pagination/Pagination.js.map +1 -1
- package/build/es/components/popover/Popover.js.map +1 -1
- package/build/es/components/progress-bar/Countdown.js.map +1 -1
- package/build/es/components/radio-button/BaseRadioButton.js.map +1 -1
- package/build/es/components/radio-button/RadioButton.js.map +1 -1
- package/build/es/components/radio-button/RadioButtonGroup.js.map +1 -1
- package/build/es/components/radio-button/radioGroupContext.js.map +1 -1
- package/build/es/components/radio-panel/RadioPanel.js.map +1 -1
- package/build/es/components/select/NativeSelect.js.map +1 -1
- package/build/es/components/select/Select.js.map +1 -1
- package/build/es/components/select/select-utils.js.map +1 -1
- package/build/es/components/summary-table/SummaryTable.js.map +1 -1
- package/build/es/components/summary-table/SummaryTableRow.js.map +1 -1
- package/build/es/components/summary-table/mocks.js.map +1 -1
- package/build/es/components/system-message/SystemMessage.js.map +1 -1
- package/build/es/components/system-message/common/DismissButton.js.map +1 -1
- package/build/es/components/system-message/common/MessageIcon.js.map +1 -1
- package/build/es/components/system-message/index.d.ts +1 -1
- package/build/es/components/table/DataTable.js.map +1 -1
- package/build/es/components/table/ExpandableTableRow.js.map +1 -1
- package/build/es/components/table/ExpandableTableRowController.js.map +1 -1
- package/build/es/components/table/Table.js.map +1 -1
- package/build/es/components/table/TableBody.js.map +1 -1
- package/build/es/components/table/TableCaption.js.map +1 -1
- package/build/es/components/table/TableCell.js.map +1 -1
- package/build/es/components/table/TableColumn.js.map +1 -1
- package/build/es/components/table/TableColumnGroup.js.map +1 -1
- package/build/es/components/table/TableFooter.js.map +1 -1
- package/build/es/components/table/TableHead.js.map +1 -1
- package/build/es/components/table/TableHeader.js.map +1 -1
- package/build/es/components/table/TablePagination.js.map +1 -1
- package/build/es/components/table/TableRow.js.map +1 -1
- package/build/es/components/table/index.d.ts +1 -1
- package/build/es/components/table/tableContext.js.map +1 -1
- package/build/es/components/table/tableSectionContext.js.map +1 -1
- package/build/es/components/table/utils.js.map +1 -1
- package/build/es/components/tabs/NavTab.js.map +1 -1
- package/build/es/components/tabs/NavTabs.js.map +1 -1
- package/build/es/components/tabs/Tab.js.map +1 -1
- package/build/es/components/tabs/TabList.js.map +1 -1
- package/build/es/components/tabs/Tabs.js.map +1 -1
- package/build/es/components/tag/Tag.js.map +1 -1
- package/build/es/components/text-input/BaseTextArea.js.map +1 -1
- package/build/es/components/text-input/BaseTextInput.js.map +1 -1
- package/build/es/components/text-input/TextArea.js.map +1 -1
- package/build/es/components/text-input/TextInput.js.map +1 -1
- package/build/es/components/toast/Toast.js.map +1 -1
- package/build/es/components/toast/ToastRegion.d.ts +1 -1
- package/build/es/components/toast/ToastRegion.js.map +1 -1
- package/build/es/components/toast/toastContext.js.map +1 -1
- package/build/es/components/toggle-switch/ToggleSlider.js.map +1 -1
- package/build/es/components/toggle-switch/ToggleSwitch.js.map +1 -1
- package/build/es/components/toggle-switch/usePillStyles.js.map +1 -1
- package/build/es/components/tooltip/PopupTip.js.map +1 -1
- package/build/es/components/tooltip/Tooltip.js.map +1 -1
- package/build/es/components/tooltip/TooltipContent.js.map +1 -1
- package/build/es/components/tooltip/TooltipTrigger.js.map +1 -1
- package/build/es/components/tooltip/index.d.ts +1 -1
- package/build/es/hooks/index.d.ts +5 -5
- package/build/es/hooks/mediaQueryUtils.js.map +1 -1
- package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.js.map +1 -1
- package/build/es/hooks/useAnimatedHeight/index.d.ts +1 -1
- package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js.map +1 -1
- package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js.map +1 -1
- package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js.map +1 -1
- package/build/es/hooks/useAriaLiveRegion/index.d.ts +1 -1
- package/build/es/hooks/useAriaLiveRegion/useAriaLiveRegion.js.map +1 -1
- package/build/es/hooks/useBrowserPreferences/useBrowserPreferences.js.map +1 -1
- package/build/es/hooks/useClickOutside/useClickOutside.js.map +1 -1
- package/build/es/hooks/useElementDimensions/index.d.ts +1 -1
- package/build/es/hooks/useElementDimensions/useElementDimensions.js.map +1 -1
- package/build/es/hooks/useFocusOutside/useFocusOutside.js.map +1 -1
- package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
- package/build/es/hooks/useListNavigation/useListNavigation.d.ts +1 -1
- package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -1
- package/build/es/hooks/useLocalStorage/useLocalStorage.js.map +1 -1
- package/build/es/hooks/useMutationObserver/useMutationObserver.js.map +1 -1
- package/build/es/hooks/useProgressiveImg/index.d.ts +1 -1
- package/build/es/hooks/useProgressiveImg/useProgressiveImg.d.ts +1 -1
- package/build/es/hooks/useProgressiveImg/useProgressiveImg.js.map +1 -1
- package/build/es/hooks/useScreen/state.js.map +1 -1
- package/build/es/hooks/useScreen/useScreen.js.map +1 -1
- package/build/es/hooks/useScrollIntoView/index.d.ts +1 -1
- package/build/es/hooks/useSwipeGesture/useSwipeGesture.js.map +1 -1
- package/build/es/utilities/formatters/avstand/formatAvstand.js.map +1 -1
- package/build/es/utilities/formatters/bytes/formatBytes.js.map +1 -1
- package/build/es/utilities/formatters/date/formatDate.js.map +1 -1
- package/build/es/utilities/formatters/fodselsnummer/formatFodselsnummer.js.map +1 -1
- package/build/es/utilities/formatters/index.d.ts +5 -5
- package/build/es/utilities/formatters/kontonummer/formatKontonummer.js.map +1 -1
- package/build/es/utilities/formatters/kortnummer/formatKortnummer.js.map +1 -1
- package/build/es/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.js.map +1 -1
- package/build/es/utilities/formatters/telefonnummer/formatTelefonnummer.js.map +1 -1
- package/build/es/utilities/formatters/util/formatNumber.js.map +1 -1
- package/build/es/utilities/formatters/util/parseNumber.js.map +1 -1
- package/build/es/utilities/formatters/util/registerWithMask.js.map +1 -1
- package/build/es/utilities/formatters/valuta/formatValuta.js.map +1 -1
- package/build/es/utilities/getThemeAndDensity.js.map +1 -1
- package/build/es/utilities/polymorphism/SlotComponent.js.map +1 -1
- package/build/es/utilities/polymorphism/index.d.ts +1 -1
- package/build/es/utilities/polymorphism/mergeProps.js.map +1 -1
- package/build/es/utilities/polymorphism/mergeRefs.js.map +1 -1
- package/build/es/utilities/tabListener.js.map +1 -1
- package/build/es/utilities/validators/hasMinimumWords/hasMinimumWords.js.map +1 -1
- package/build/es/utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.js.map +1 -1
- package/build/es/utilities/validators/isValidChassisnummer/isValidChassisnummer.js.map +1 -1
- package/build/es/utilities/validators/isValidEpost/isValidEpost.js.map +1 -1
- package/build/es/utilities/validators/isValidFodselsnummer/isValidFodselsnummer.js.map +1 -1
- package/build/es/utilities/validators/isValidKortnummer/isValidKortnummer.js.map +1 -1
- package/build/es/utilities/validators/isValidName/isValidName.js.map +1 -1
- package/build/es/utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.js.map +1 -1
- package/build/es/utilities/validators/isValidTelefonnummer/isValidTelefonnummer.js.map +1 -1
- package/package.json +2 -2
- package/styles/components/button/button.css +2 -2
- package/styles/components/button/button.min.css +1 -1
- package/styles/components/checkbox/checkbox.css +4 -4
- package/styles/components/checkbox/checkbox.min.css +1 -1
- package/styles/components/feedback/feedback.css +2 -2
- package/styles/components/feedback/feedback.min.css +1 -1
- package/styles/components/input-group/input-group.css +2 -2
- package/styles/components/input-group/input-group.min.css +1 -1
- package/styles/components/loader/loader.css +6 -6
- package/styles/components/loader/loader.min.css +1 -1
- package/styles/components/loader/skeleton-loader.css +5 -5
- package/styles/components/loader/skeleton-loader.min.css +1 -1
- package/styles/components/message/message.css +2 -2
- package/styles/components/message/message.min.css +1 -1
- package/styles/components/progress-bar/progress-bar.css +2 -2
- package/styles/components/progress-bar/progress-bar.min.css +1 -1
- package/styles/components/radio-button/radio-button.css +2 -2
- package/styles/components/radio-button/radio-button.min.css +1 -1
- package/styles/components/radio-panel/radio-panel.css +6 -6
- package/styles/components/radio-panel/radio-panel.min.css +1 -1
- package/styles/components/system-message/system-message.css +2 -2
- package/styles/components/system-message/system-message.min.css +1 -1
- package/styles/components/toast/toast.css +4 -4
- package/styles/components/toast/toast.min.css +1 -1
- package/styles/styles.css +35 -35
- package/styles/styles.min.css +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIntersectionObserver.cjs","sources":["../../../../src/hooks/useIntersectionObserver/useIntersectionObserver.ts"],"sourcesContent":["import { useEffect, useRef, RefObject, MutableRefObject } from \"react\";\n\ntype ValidElement = HTMLElement | SVGElement;\ntype Target =\n | MutableRefObject<ValidElement>\n | RefObject<ValidElement>\n | MutableRefObject<NodeListOf<ValidElement>>\n | RefObject<NodeListOf<ValidElement>>\n | NodeListOf<ValidElement>;\n\nfunction isNodeList(target: Target | ValidElement): target is NodeListOf<ValidElement> {\n return (target as NodeListOf<ValidElement>).forEach !== undefined;\n}\n\nconst hasWindowWithIntersectionObserver = () =>\n typeof window !== \"undefined\"
|
|
1
|
+
{"version":3,"file":"useIntersectionObserver.cjs","sources":["../../../../src/hooks/useIntersectionObserver/useIntersectionObserver.ts"],"sourcesContent":["import { useEffect, useRef, RefObject, MutableRefObject } from \"react\";\n\ntype ValidElement = HTMLElement | SVGElement;\ntype Target =\n | MutableRefObject<ValidElement>\n | RefObject<ValidElement>\n | MutableRefObject<NodeListOf<ValidElement>>\n | RefObject<NodeListOf<ValidElement>>\n | NodeListOf<ValidElement>;\n\nfunction isNodeList(\n target: Target | ValidElement,\n): target is NodeListOf<ValidElement> {\n return (target as NodeListOf<ValidElement>).forEach !== undefined;\n}\n\nconst hasWindowWithIntersectionObserver = () =>\n typeof window !== \"undefined\" &&\n typeof IntersectionObserver !== \"undefined\";\n\n/**\n * Hook som gjør det enkelt å observere om et element er synlig i viewporten.\n *\n * @param target Elementet eller elementene som skal observeres. Du kan sende in en React ref til et HTMLElement eller SVG Element, eller en NodeList av samme type elementer (returneres f.eks. av document.querySelectorAll), eller en React ref med en NodeList av samme type elementer.\n * @param onIntersect Callback-funksjon som utføres når et av elementene som observeres overlapper angitt mål. Se https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#parameters for mer info.\n * @param fallback Funksjon som kalles dersom nettleseren ikke støtter IntersectionOpserver-APIet.\n * @param options Objekt med innstillinger for oberveren. Se https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#parameters for mer info.\n */\nexport const useIntersectionObserver = (\n target: Target,\n onIntersect: IntersectionObserverCallback,\n fallback?: VoidFunction | null,\n options?: Partial<IntersectionObserverInit>,\n): void => {\n const observerRef = useRef<IntersectionObserver>(null);\n\n useEffect(() => {\n let observer = observerRef.current;\n\n if (hasWindowWithIntersectionObserver()) {\n if (observer) {\n observer.disconnect();\n }\n\n observer = new IntersectionObserver(onIntersect, options);\n\n if (isNodeList(target)) {\n target.forEach((element) => observer?.observe(element));\n } else if (target.current && isNodeList(target.current)) {\n target.current.forEach((element) => observer?.observe(element));\n } else if (target.current) {\n observer.observe(target.current);\n }\n } else if (fallback) {\n fallback();\n }\n\n return () => {\n if (hasWindowWithIntersectionObserver() && observer) {\n observer.disconnect();\n }\n };\n }, [target, onIntersect, fallback, options]);\n};\n"],"names":["isNodeList","target","forEach","hasWindowWithIntersectionObserver","window","IntersectionObserver","onIntersect","fallback","options","observerRef","useRef","useEffect","observer","current","disconnect","element","observe"],"mappings":"yGAUA,SAASA,EACLC,GAEA,YAAwD,IAAhDA,EAAoCC,OAChD,CAEA,MAAMC,EAAoC,WAC/BC,OAAW,YACXC,qBAAyB,oCAUG,CACnCJ,EACAK,EACAC,EACAC,KAEM,MAAAC,EAAcC,SAA6B,MAEjDC,EAAAA,WAAU,KACN,IAAIC,EAAWH,EAAYI,QAE3B,OAAIV,KACIS,GACAA,EAASE,aAGFF,EAAA,IAAIP,qBAAqBC,EAAaE,GAE7CR,EAAWC,GACXA,EAAOC,SAASa,GAAY,MAAAH,OAAAA,EAAAA,EAAUI,QAAQD,KACvCd,EAAOY,SAAWb,EAAWC,EAAOY,SAC3CZ,EAAOY,QAAQX,SAASa,GAAY,MAAAH,OAAAA,EAAAA,EAAUI,QAAQD,KAC/Cd,EAAOY,SACLD,EAAAI,QAAQf,EAAOY,UAErBN,GACEA,IAGN,KACCJ,KAAuCS,GACvCA,EAASE,YAAW,CACxB,GAEL,CAACb,EAAQK,EAAaC,EAAUC,GAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useListNavigation.cjs","sources":["../../../../src/hooks/useListNavigation/useListNavigation.ts"],"sourcesContent":["import { useEffect, RefObject } from \"react\";\n\ntype Timer = number | undefined;\ntype KeyBuffer = { keys: string } | undefined;\ntype Direction = \"prev\" | \"next\" | \"first\" | \"last\";\ninterface MoveDetails {\n event: KeyboardEvent;\n list: HTMLElement;\n currentFocus: HTMLButtonElement;\n}\ninterface ListDetails {\n list: HTMLElement;\n search: KeyBuffer;\n searchResetTimer: Timer;\n}\ninterface SearchDetails extends ListDetails {\n key: string;\n}\ninterface EventDetails extends ListDetails {\n event: KeyboardEvent;\n}\ntype UseListNavigationProps<T> = {\n /** Ref til et element med rollen `listbox` */\n ref: RefObject<T>;\n};\n\nexport function useListNavigation<T extends HTMLElement>({
|
|
1
|
+
{"version":3,"file":"useListNavigation.cjs","sources":["../../../../src/hooks/useListNavigation/useListNavigation.ts"],"sourcesContent":["import { useEffect, RefObject } from \"react\";\n\ntype Timer = number | undefined;\ntype KeyBuffer = { keys: string } | undefined;\ntype Direction = \"prev\" | \"next\" | \"first\" | \"last\";\ninterface MoveDetails {\n event: KeyboardEvent;\n list: HTMLElement;\n currentFocus: HTMLButtonElement;\n}\ninterface ListDetails {\n list: HTMLElement;\n search: KeyBuffer;\n searchResetTimer: Timer;\n}\ninterface SearchDetails extends ListDetails {\n key: string;\n}\ninterface EventDetails extends ListDetails {\n event: KeyboardEvent;\n}\ntype UseListNavigationProps<T> = {\n /** Ref til et element med rollen `listbox` */\n ref: RefObject<T>;\n};\n\nexport function useListNavigation<T extends HTMLElement>({\n ref,\n}: UseListNavigationProps<T>): void {\n useEffect(() => {\n let searchResetTimer: Timer;\n const search: KeyBuffer = { keys: \"\" }; // keypress buffer is an object to preserve state\n const list = ref.current;\n const handler = (event: KeyboardEvent) => {\n if (list) {\n handleListKeyNav({ list, event, search, searchResetTimer });\n }\n };\n\n if (list) {\n list.addEventListener(\"keydown\", handler);\n }\n\n return () => {\n if (list) {\n list.removeEventListener(\"keydown\", handler);\n }\n };\n }, [ref]);\n}\n\nfunction handleMoveTo(\n direction: Direction,\n { event, list, currentFocus }: MoveDetails,\n) {\n event.preventDefault();\n moveFocusTo(direction, list, currentFocus);\n}\n\nfunction handleListKeyNav({\n list,\n event,\n search,\n searchResetTimer,\n}: EventDetails) {\n const { key, target } = event;\n const currentFocus = target as HTMLButtonElement;\n\n const moveDetails = {\n event,\n list,\n currentFocus,\n };\n\n switch (key) {\n case \"ArrowUp\":\n case \"PageUp\":\n handleMoveTo(\"prev\", moveDetails);\n break;\n case \"ArrowDown\":\n case \"PageDown\":\n handleMoveTo(\"next\", moveDetails);\n break;\n case \"Home\":\n handleMoveTo(\"first\", moveDetails);\n break;\n case \"End\":\n handleMoveTo(\"last\", moveDetails);\n break;\n case \"Tab\":\n // in a standard select, tab does nothing in-menu\n event.preventDefault();\n break;\n case \"Enter\":\n case \" \":\n break;\n\n default:\n if (search !== undefined) {\n const searchResult = findItem({\n list,\n key,\n search,\n searchResetTimer,\n });\n if (searchResult) {\n searchResult.focus();\n }\n }\n break;\n }\n}\n\nfunction moveFocusTo(\n direction: Direction,\n list: HTMLElement,\n current: HTMLButtonElement,\n) {\n const thisOption = current;\n switch (direction) {\n case \"prev\":\n const prevOption: HTMLButtonElement | null =\n thisOption &&\n (thisOption.previousElementSibling as HTMLButtonElement);\n if (prevOption) {\n prevOption.focus();\n }\n break;\n case \"next\":\n const nextOption: HTMLButtonElement | null =\n thisOption &&\n (thisOption.nextElementSibling as HTMLButtonElement);\n if (nextOption) {\n nextOption.focus();\n }\n break;\n case \"first\":\n const firstItem =\n list.querySelector<HTMLButtonElement>(`[role=\"option\"]`);\n if (firstItem) {\n firstItem.focus();\n }\n break;\n case \"last\":\n const listItems =\n list.querySelectorAll<HTMLButtonElement>(`[role=\"option\"]`);\n if (listItems.length) {\n listItems[listItems.length - 1].focus();\n }\n break;\n }\n}\n\nfunction findItem({\n list,\n key,\n search,\n searchResetTimer,\n}: SearchDetails): HTMLButtonElement | null {\n const listItems = list.querySelectorAll(`[role=\"option\"]`);\n if (!listItems.length) return null;\n\n if (search) {\n search.keys = search.keys.concat(key);\n resetWhenIdle(search, searchResetTimer);\n\n for (let n = 0; n < listItems.length; n++) {\n const label = (listItems[n] as HTMLButtonElement).innerText;\n if (label && label.toLowerCase().indexOf(search.keys) === 0) {\n return listItems[n] as HTMLButtonElement;\n }\n }\n }\n\n return null;\n}\n\nfunction resetWhenIdle(search: KeyBuffer, timer: Timer) {\n if (timer) {\n clearTimeout(timer);\n timer = undefined;\n }\n timer = setTimeout(\n () => {\n search ? (search.keys = \"\") : (search = { keys: \"\" });\n timer = undefined;\n },\n 500,\n search,\n timer,\n );\n}\n"],"names":["handleMoveTo","direction","event","list","currentFocus","preventDefault","current","thisOption","prevOption","previousElementSibling","focus","nextOption","nextElementSibling","firstItem","querySelector","listItems","querySelectorAll","length","moveFocusTo","ref","useEffect","search","keys","handler","searchResetTimer","key","target","moveDetails","searchResult","concat","timer","clearTimeout","setTimeout","resetWhenIdle","n","label","innerText","toLowerCase","indexOf","findItem","handleListKeyNav","addEventListener","removeEventListener"],"mappings":"yGAmDA,SAASA,EACLC,GACEC,MAAAA,EAAOC,KAAAA,EAAMC,aAAAA,IAEfF,EAAMG,iBA0DV,SACIJ,EACAE,EACAG,GAEA,MAAMC,EAAaD,EACnB,OAAQL,GACJ,IAAK,OACK,MAAAO,EACFD,GACCA,EAAWE,uBACZD,GACAA,EAAWE,QAEf,MACJ,IAAK,OACK,MAAAC,EACFJ,GACCA,EAAWK,mBACZD,GACAA,EAAWD,QAEf,MACJ,IAAK,QACK,MAAAG,EACFV,EAAKW,cAAiC,mBACtCD,GACAA,EAAUH,QAEd,MACJ,IAAK,OACK,MAAAK,EACFZ,EAAKa,iBAAoC,mBACzCD,EAAUE,QACVF,EAAUA,EAAUE,OAAS,GAAGP,QAIhD,CA/FgBQ,CAAAjB,EAAWE,EAAMC,EACjC,2BA/BO,UACHe,IAAAA,IAEAC,EAAAA,WAAU,KAEA,MAAAC,EAAoB,CAAEC,KAAM,IAC5BnB,EAAOgB,EAAIb,QACXiB,EAAWrB,IACTC,GAyBhB,UACIA,KAAAA,EACAD,MAAAA,EACAmB,OAAAA,EACAG,iBAAAA,IAEM,MAAEC,IAAAA,EAAKC,OAAAA,GAAWxB,EAGlByB,EAAc,CAChBzB,MAAAA,EACAC,KAAAA,EACAC,aALiBsB,GAQrB,OAAQD,GACJ,IAAK,UACL,IAAK,SACDzB,EAAa,OAAQ2B,GACrB,MACJ,IAAK,YACL,IAAK,WACD3B,EAAa,OAAQ2B,GACrB,MACJ,IAAK,OACD3B,EAAa,QAAS2B,GACtB,MACJ,IAAK,MACD3B,EAAa,OAAQ2B,GACrB,MACJ,IAAK,MAEDzB,EAAMG,iBACN,MACJ,IAAK,QACL,IAAK,IACD,MAEJ,QACI,QAAe,IAAXgB,EAAsB,CACtB,MAAMO,EAsDtB,UACIzB,KAAAA,EACAsB,IAAAA,EACAJ,OAAAA,EACAG,iBAAAA,IAEM,MAAAT,EAAYZ,EAAKa,iBAAiB,mBACpC,IAACD,EAAUE,OAAe,OAAA,KAE9B,GAAII,EAAQ,CACRA,EAAOC,KAAOD,EAAOC,KAAKO,OAAOJ,GAczC,SAAuBJ,EAAmBS,GAClCA,IACAC,aAAaD,GACLA,OAAA,GAEJA,EAAAE,YACJ,KACIX,EAAUA,EAAOC,KAAO,GAAOD,EAAS,CAAEC,KAAM,IACxCQ,OAAA,CAAA,GAEZ,IACAT,EACAS,EAER,CA3BQG,CAAcZ,EAAQG,GAEtB,IAASU,IAAAA,EAAI,EAAGA,EAAInB,EAAUE,OAAQiB,IAAK,CACjC,MAAAC,EAASpB,EAAUmB,GAAyBE,UAC9C,GAAAD,GAAsD,IAA7CA,EAAME,cAAcC,QAAQjB,EAAOC,MAC5C,OAAOP,EAAUmB,EAEzB,CACJ,CAEO,OAAA,IACX,CA5EqCK,CAAS,CAC1BpC,KAAAA,EACAsB,IAAAA,EACAJ,OAAAA,EACAG,iBAAAA,IAEAI,GACAA,EAAalB,OAErB,EAGZ,CA5EgB8B,CAAiB,CAAErC,KAAAA,EAAMD,MAAAA,EAAOmB,OAAAA,EAAQG,iBAL5CA,WAK8D,EAIlE,OAAIrB,GACKA,EAAAsC,iBAAiB,UAAWlB,GAG9B,KACCpB,GACKA,EAAAuC,oBAAoB,UAAWnB,EAAO,CAC/C,GAEL,CAACJ,GACR"}
|
|
@@ -3,5 +3,5 @@ type UseListNavigationProps<T> = {
|
|
|
3
3
|
/** Ref til et element med rollen `listbox` */
|
|
4
4
|
ref: RefObject<T>;
|
|
5
5
|
};
|
|
6
|
-
export declare function useListNavigation<T extends HTMLElement>({ ref }: UseListNavigationProps<T>): void;
|
|
6
|
+
export declare function useListNavigation<T extends HTMLElement>({ ref, }: UseListNavigationProps<T>): void;
|
|
7
7
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLocalStorage.cjs","sources":["../../../../src/hooks/useLocalStorage/useLocalStorage.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\nexport const useLocalStorage = <T>(key: string
|
|
1
|
+
{"version":3,"file":"useLocalStorage.cjs","sources":["../../../../src/hooks/useLocalStorage/useLocalStorage.ts"],"sourcesContent":["import { useCallback, useState } from \"react\";\n\nexport const useLocalStorage = <T>(\n key: string,\n defaultValue: T,\n): [T, (newValue: T) => void] => {\n const [state, setState] = useState(() => {\n if (typeof window === \"undefined\" || !localStorage) {\n return defaultValue;\n }\n const storedValue = JSON.parse(localStorage.getItem(key) || \"null\");\n return storedValue || defaultValue;\n });\n\n const updateState = useCallback(\n (newValue: T) => {\n setState(newValue);\n if (typeof window !== \"undefined\" && localStorage) {\n localStorage.setItem(key, JSON.stringify(newValue));\n }\n },\n [key],\n );\n\n return [state, updateState];\n};\n"],"names":["key","defaultValue","state","setState","useState","window","localStorage","JSON","parse","getItem","useCallback","newValue","setItem","stringify"],"mappings":"iIAE+B,CAC3BA,EACAC,KAEA,MAAOC,EAAOC,GAAYC,YAAS,WACpBC,OAAW,MAAgBC,aAC3BL,EAESM,KAAKC,MAAMF,aAAaG,QAAQT,IAAQ,SACtCC,IAanB,MAAA,CAACC,EAVYQ,EAAAA,aACfC,IACGR,EAASQ,UACEN,OAAW,KAAeC,cACjCA,aAAaM,QAAQZ,EAAKO,KAAKM,UAAUF,GAAS,GAG1D,CAACX,IAGqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMutationObserver.cjs","sources":["../../../../src/hooks/useMutationObserver/useMutationObserver.ts"],"sourcesContent":["import { useEffect, useRef, RefObject } from \"react\";\n\nconst hasWindowWithMutationObserver = ()
|
|
1
|
+
{"version":3,"file":"useMutationObserver.cjs","sources":["../../../../src/hooks/useMutationObserver/useMutationObserver.ts"],"sourcesContent":["import { useEffect, useRef, RefObject } from \"react\";\n\nconst hasWindowWithMutationObserver = () =>\n typeof window !== \"undefined\" && typeof MutationObserver !== \"undefined\";\n\n/**\n * Hook som gjør det enklere å sjekke en komponents children for endringer.\n *\n * @param targetRef Container som skal observeres. Containeren må ikke rerendres, da vil observereren bli opprettet på nytt.\n * @param onObservation Callback-funksjon som utføres når en mutasjon observeres.\n * @param config Parametere til observereren. Se https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit#properties for mer info.\n */\nexport const useMutationObserver = (\n targetRef: RefObject<HTMLElement>,\n onObservation: MutationCallback,\n config?: Partial<MutationObserverInit>,\n): void => {\n const observerRef = useRef<MutationObserver>(null);\n\n useEffect(() => {\n let observer = observerRef.current;\n\n if (hasWindowWithMutationObserver()) {\n const target = targetRef.current;\n\n if (observer) {\n observer.disconnect();\n }\n\n observer = new MutationObserver(onObservation);\n\n if (target) {\n observer.observe(target, config);\n }\n }\n return () => {\n if (hasWindowWithMutationObserver() && observer) {\n observer.disconnect();\n }\n };\n }, [targetRef, onObservation, config]);\n};\n"],"names":["hasWindowWithMutationObserver","window","MutationObserver","targetRef","onObservation","config","observerRef","useRef","useEffect","observer","current","target","disconnect","observe"],"mappings":"yGAEMA,EAAgC,WAC3BC,OAAW,YAAsBC,iBAAqB,gCAS9B,CAC/BC,EACAC,EACAC,KAEM,MAAAC,EAAcC,SAAyB,MAE7CC,EAAAA,WAAU,KACN,IAAIC,EAAWH,EAAYI,QAE3B,GAAIV,IAAiC,CACjC,MAAMW,EAASR,EAAUO,QAErBD,GACAA,EAASG,aAGFH,EAAA,IAAIP,iBAAiBE,GAE5BO,GACSF,EAAAI,QAAQF,EAAQN,EAEjC,CACA,MAAO,KACCL,KAAmCS,GACnCA,EAASG,YAAW,CACxB,GAEL,CAACT,EAAWC,EAAeC,GAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { useProgressiveImg, type ProgressiveImageProps } from './useProgressiveImg.cjs';
|
|
1
|
+
export { useProgressiveImg, type ProgressiveImageProps, } from './useProgressiveImg.cjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProgressiveImg.cjs","sources":["../../../../src/hooks/useProgressiveImg/useProgressiveImg.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\n\nexport interface ProgressiveImageProps {\n lowQualitySrc: string;\n highQualitySrc: string;\n}\n\ntype ProgressiveImage = { src: string; isBlurred: boolean };\n\nexport const useProgressiveImg = ({
|
|
1
|
+
{"version":3,"file":"useProgressiveImg.cjs","sources":["../../../../src/hooks/useProgressiveImg/useProgressiveImg.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\n\nexport interface ProgressiveImageProps {\n lowQualitySrc: string;\n highQualitySrc: string;\n}\n\ntype ProgressiveImage = { src: string; isBlurred: boolean };\n\nexport const useProgressiveImg = ({\n lowQualitySrc,\n highQualitySrc,\n}: ProgressiveImageProps): ProgressiveImage => {\n const [src, setSrc] = useState(lowQualitySrc);\n\n useEffect(() => {\n setSrc(lowQualitySrc);\n const img = new Image();\n img.src = highQualitySrc;\n\n img.onload = () => {\n setSrc(highQualitySrc);\n };\n }, [lowQualitySrc, highQualitySrc]);\n\n return { src, isBlurred: src === lowQualitySrc };\n};\n"],"names":["lowQualitySrc","highQualitySrc","src","setSrc","useState","useEffect","img","Image","onload","isBlurred"],"mappings":"mIASiC,EAC7BA,cAAAA,EACAC,eAAAA,MAEA,MAAOC,EAAKC,GAAUC,WAASJ,GAE/BK,OAAAA,EAAAA,WAAU,KACNF,EAAOH,GACD,MAAAM,EAAM,IAAIC,MAChBD,EAAIJ,IAAMD,EAEVK,EAAIE,OAAS,KACTL,EAAOF,EAAc,CAAA,GAE1B,CAACD,EAAeC,IAEZ,CAAEC,IAAAA,EAAKO,UAAWP,IAAQF,EAAc"}
|
|
@@ -6,5 +6,5 @@ type ProgressiveImage = {
|
|
|
6
6
|
src: string;
|
|
7
7
|
isBlurred: boolean;
|
|
8
8
|
};
|
|
9
|
-
export declare const useProgressiveImg: ({ lowQualitySrc, highQualitySrc }: ProgressiveImageProps) => ProgressiveImage;
|
|
9
|
+
export declare const useProgressiveImg: ({ lowQualitySrc, highQualitySrc, }: ProgressiveImageProps) => ProgressiveImage;
|
|
10
10
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.cjs","sources":["../../../../src/hooks/useScreen/state.ts"],"sourcesContent":["export interface ScreenState {\n isSmallDevice: boolean;\n isMediumDevice: boolean;\n isLargeDevice: boolean;\n isXlDevice: boolean;\n isLandscape: boolean;\n isPortrait: boolean;\n}\n\nexport enum ActionType {\n orientation = \"ORIENTATION_CHANGED\",\n deviceSize = \"DEVICE_SIZE_CHANGED\",\n}\n\nexport interface ScreenAction {\n type: ActionType;\n property: keyof ScreenState;\n}\n\nfunction setDeviceSize(deviceSize: keyof ScreenState): Omit<ScreenState, \"isLandscape\" | \"isPortrait\"> {\n return {\n isSmallDevice: deviceSize === \"isSmallDevice\",\n isMediumDevice: deviceSize === \"isMediumDevice\",\n isLargeDevice: deviceSize === \"isLargeDevice\",\n isXlDevice: deviceSize === \"isXlDevice\",\n };\n}\n\nfunction setOrientation(orientation: keyof ScreenState): Pick<ScreenState, \"isLandscape\" | \"isPortrait\"> {\n return {\n isLandscape: orientation === \"isLandscape\",\n isPortrait: orientation === \"isPortrait\",\n };\n}\n\nexport const reducer = (state: ScreenState
|
|
1
|
+
{"version":3,"file":"state.cjs","sources":["../../../../src/hooks/useScreen/state.ts"],"sourcesContent":["export interface ScreenState {\n isSmallDevice: boolean;\n isMediumDevice: boolean;\n isLargeDevice: boolean;\n isXlDevice: boolean;\n isLandscape: boolean;\n isPortrait: boolean;\n}\n\nexport enum ActionType {\n orientation = \"ORIENTATION_CHANGED\",\n deviceSize = \"DEVICE_SIZE_CHANGED\",\n}\n\nexport interface ScreenAction {\n type: ActionType;\n property: keyof ScreenState;\n}\n\nfunction setDeviceSize(\n deviceSize: keyof ScreenState,\n): Omit<ScreenState, \"isLandscape\" | \"isPortrait\"> {\n return {\n isSmallDevice: deviceSize === \"isSmallDevice\",\n isMediumDevice: deviceSize === \"isMediumDevice\",\n isLargeDevice: deviceSize === \"isLargeDevice\",\n isXlDevice: deviceSize === \"isXlDevice\",\n };\n}\n\nfunction setOrientation(\n orientation: keyof ScreenState,\n): Pick<ScreenState, \"isLandscape\" | \"isPortrait\"> {\n return {\n isLandscape: orientation === \"isLandscape\",\n isPortrait: orientation === \"isPortrait\",\n };\n}\n\nexport const reducer = (\n state: ScreenState,\n action: ScreenAction,\n): ScreenState => {\n switch (action.type) {\n case ActionType.orientation:\n return {\n ...state,\n ...setOrientation(action.property),\n };\n case ActionType.deviceSize:\n return {\n ...state,\n ...setDeviceSize(action.property),\n };\n default:\n return state;\n }\n};\n"],"names":["ActionType","orientation","deviceSize","setDeviceSize","isSmallDevice","isMediumDevice","isLargeDevice","isXlDevice","setOrientation","isLandscape","isPortrait","state","action","type","property"],"mappings":"gFASY,IAAAA,EAAAA,IAAAA,EAAAA,GAAA,CAAA,GACRC,YAAc,sBACdD,EAAAE,WAAa,sBAFLF,GAUZ,SAASG,EACLD,GAEO,MAAA,CACHE,cAA8B,kBAAfF,EACfG,eAA+B,mBAAfH,EAChBI,cAA8B,kBAAfJ,EACfK,WAA2B,eAAfL,EAEpB,CAEA,SAASM,EACLP,GAEO,MAAA,CACHQ,YAA6B,gBAAhBR,EACbS,WAA4B,eAAhBT,EAEpB,sCAEuB,CACnBU,EACAC,KAEA,OAAQA,EAAOC,MACX,IAAK,sBACM,MAAA,IACAF,KACAH,EAAeI,EAAOE,WAEjC,IAAK,sBACM,MAAA,IACAH,KACAR,EAAcS,EAAOE,WAEhC,QACW,OAAAH,EACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScreen.cjs","sources":["../../../../src/hooks/useScreen/useScreen.ts"],"sourcesContent":["import { useCallback, useEffect, useReducer, useState } from \"react\";\nimport { tokens } from \"../../core/index.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"useScreen.cjs","sources":["../../../../src/hooks/useScreen/useScreen.ts"],"sourcesContent":["import { useCallback, useEffect, useReducer, useState } from \"react\";\nimport { tokens } from \"../../core/index.js\";\nimport {\n addMediaQueryListener,\n getInitialMediaQueryMatch,\n removeMediaQueryListener,\n} from \"../mediaQueryUtils.js\";\nimport { ScreenAction, ActionType, reducer, ScreenState } from \"./state.js\";\n\nconst { breakpoint } = tokens;\n\nconst MEDIA_RULES: Record<keyof ScreenState, string> = {\n isSmallDevice: `(max-width: calc(${breakpoint.medium} - 1px))`,\n isMediumDevice: `(min-width: ${breakpoint.medium}) and (max-width: calc(${breakpoint.large} -1px))`,\n isLargeDevice: `(min-width: ${breakpoint.large}) and (max-width: calc(${breakpoint.xl} -1px))`,\n isXlDevice: `(min-width: ${breakpoint.xl})`,\n isPortrait: \"(orientation: portrait)\",\n isLandscape: \"(orientation: landscape)\",\n};\n\nconst createAction = (property: keyof ScreenState): ScreenAction => ({\n type:\n property === \"isLandscape\" || property === \"isPortrait\"\n ? ActionType.orientation\n : ActionType.deviceSize,\n property,\n});\n\n/**\n * Finn størrelsen og orienteringen til skjermen.\n * @returns Et objekt med boolean som indikerer om skjermstørrelsen er liten, medium, stor eller ekstra stor, og om skjermen er i portrett- eller landskapsmodus.\n */\nexport const useScreen = (): ScreenState => {\n const [hasMounted, setHasMounted] = useState(false);\n\n const [device, deviceDispatch] = useReducer(reducer, {\n isSmallDevice: false,\n isMediumDevice: false,\n isLargeDevice: false,\n isXlDevice: false,\n isLandscape: false,\n isPortrait: false,\n });\n\n useEffect(() => {\n setHasMounted(true);\n Object.entries(MEDIA_RULES)\n .map(([key, rule]) => [key, getInitialMediaQueryMatch(rule)])\n .forEach(([key, value]) => {\n if (value) {\n deviceDispatch(createAction(key as keyof ScreenState));\n }\n });\n }, []);\n\n const createListener = useCallback(\n (key: keyof ScreenState) => (e: MediaQueryListEvent) => {\n requestAnimationFrame(() => {\n if (e.matches) {\n deviceDispatch(createAction(key));\n }\n });\n },\n [],\n );\n\n useEffect(() => {\n if (!hasMounted || !window.matchMedia) {\n return;\n }\n const eventListenerPairs: Array<\n [MediaQueryList, (e: MediaQueryListEvent) => void]\n > = [];\n\n Object.entries(MEDIA_RULES).forEach(([key, rule]) => {\n const queryList = window.matchMedia(rule);\n const listener = createListener(key as keyof ScreenState);\n eventListenerPairs.push([queryList, listener]);\n addMediaQueryListener(queryList, listener);\n });\n\n return () => {\n eventListenerPairs.forEach(([queryList, listener]) =>\n removeMediaQueryListener(queryList, listener),\n );\n };\n }, [createListener, hasMounted]);\n\n return { ...device };\n};\n"],"names":["breakpoint","tokens","MEDIA_RULES","isSmallDevice","medium","isMediumDevice","large","isLargeDevice","xl","isXlDevice","isPortrait","isLandscape","createAction","property","type","ActionType","orientation","deviceSize","hasMounted","setHasMounted","useState","device","deviceDispatch","useReducer","reducer","useEffect","Object","entries","map","key","rule","getInitialMediaQueryMatch","forEach","value","createListener","useCallback","e","requestAnimationFrame","matches","window","matchMedia","eventListenerPairs","queryList","listener","push","addMediaQueryListener","removeMediaQueryListener"],"mappings":"0MASQA,WAAAA,GAAeC,EAEjBC,EAAiD,CACnDC,cAAe,oBAAoBH,EAAWI,iBAC9CC,eAAgB,eAAeL,EAAWI,gCAAgCJ,EAAWM,eACrFC,cAAe,eAAeP,EAAWM,+BAA+BN,EAAWQ,YACnFC,WAAY,eAAeT,EAAWQ,MACtCE,WAAY,0BACZC,YAAa,4BAGXC,EAAgBC,IAAAA,CAClBC,KACiB,gBAAbD,GAA2C,eAAbA,EACxBE,aAAWC,YACXD,EAAAA,WAAWE,WACrBJ,SAAAA,sBAOqB,KACrB,MAAOK,EAAYC,GAAiBC,YAAS,IAEtCC,EAAQC,GAAkBC,EAAAA,WAAWC,EAAAA,QAAS,CACjDrB,eAAe,EACfE,gBAAgB,EAChBE,eAAe,EACfE,YAAY,EACZE,aAAa,EACbD,YAAY,IAGhBe,EAAAA,WAAU,KACNN,GAAc,GACPO,OAAAC,QAAQzB,GACV0B,KAAI,EAAEC,EAAKC,KAAU,CAACD,EAAKE,EAA0BA,0BAAAD,MACrDE,SAAQ,EAAEH,EAAKI,MACRA,GACeX,EAAAV,EAAaiB,GAAyB,GAE5D,GACN,IAEH,MAAMK,EAAiBC,EAAAA,aAClBN,GAA4BO,IACzBC,uBAAsB,KACdD,EAAEE,SACahB,EAAAV,EAAaiB,GAAI,GAEvC,GAEL,IAGJJ,OAAAA,EAAAA,WAAU,KACN,IAAKP,IAAeqB,OAAOC,WACvB,OAEJ,MAAMC,EAEF,GAEG,OAAAf,OAAAC,QAAQzB,GAAa8B,SAAQ,EAAEH,EAAKC,MACjC,MAAAY,EAAYH,OAAOC,WAAWV,GAC9Ba,EAAWT,EAAeL,GAChCY,EAAmBG,KAAK,CAACF,EAAWC,IACpCE,wBAAsBH,EAAWC,EAAQ,IAGtC,KACgBF,EAAAT,SAAQ,EAAEU,EAAWC,KACpCG,EAAAA,yBAAyBJ,EAAWC,IAAQ,CAChD,GAEL,CAACT,EAAgBhB,IAEb,IAAKG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { useScrollIntoView, type ScrollIntoViewProps } from './useScrollIntoView.cjs';
|
|
1
|
+
export { useScrollIntoView, type ScrollIntoViewProps, } from './useScrollIntoView.cjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSwipeGesture.cjs","sources":["../../../../src/hooks/useSwipeGesture/useSwipeGesture.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"useSwipeGesture.cjs","sources":["../../../../src/hooks/useSwipeGesture/useSwipeGesture.ts"],"sourcesContent":["import {\n type MouseEventHandler,\n type PointerEventHandler,\n type MutableRefObject,\n useCallback,\n useRef,\n} from \"react\";\n\nexport type SwipeChangeHandler<T extends HTMLElement> = (\n event: React.MouseEvent<T> | React.PointerEvent<T>,\n pressed: boolean,\n) => void;\n\ntype Point = { x: number; y: number };\n\nfunction getGesturePointFromEvent<T extends HTMLElement>(\n event: React.PointerEvent<T>,\n): Point {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n}\n\ntype SwipeGestureOptions<T extends HTMLElement> = {\n onClick?: MouseEventHandler<T>;\n onChange?: SwipeChangeHandler<T>;\n onPointerDown?: PointerEventHandler<T>;\n onPointerUp?: PointerEventHandler<T>;\n onPointerMove?: PointerEventHandler<T>;\n onPointerCancel?: PointerEventHandler<T>;\n};\n\n/**\n * Logikk for å håndtere en swipe, for eksempel brukt i toggle switch.\n *\n * @param options Callbacks for de ulike stegene i en swipe-gesture\n * @returns Handlers for de ulike stegene i en swipe-gesture\n */\nexport function useSwipeGesture<T extends HTMLElement>(\n options: SwipeGestureOptions<T>,\n): {\n swipeHandled: MutableRefObject<\"on\" | \"off\" | false>;\n gestureHandlers: {\n onClick: MouseEventHandler<T>;\n onPointerDown: PointerEventHandler<T>;\n onPointerMove: PointerEventHandler<T>;\n onPointerUp: PointerEventHandler<T>;\n onPointerCancel: PointerEventHandler<T>;\n };\n} {\n const swipeHandled = useRef<\"on\" | \"off\" | false>(false);\n const gestureStartPosition = useRef<Point>();\n\n const {\n onClick,\n onChange,\n onPointerCancel,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n } = options;\n\n const handleClick: MouseEventHandler<T> = useCallback(\n (event) => {\n if (!swipeHandled.current) {\n onClick?.(event);\n }\n swipeHandled.current = false; // sørg for at vi får klikke igjen etter swipes\n },\n [onClick],\n );\n\n const handleGestureStart: PointerEventHandler<T> = useCallback(\n (event) => {\n event.preventDefault();\n\n (event.target as T).setPointerCapture?.(event.pointerId);\n gestureStartPosition.current = getGesturePointFromEvent(event);\n swipeHandled.current = false;\n\n onPointerDown?.(event);\n },\n [onPointerDown],\n );\n\n const handleGestureMove: PointerEventHandler<T> = useCallback(\n (event) => {\n event.preventDefault();\n\n if (!gestureStartPosition.current) {\n return;\n }\n\n const { x: currentX } = getGesturePointFromEvent(event);\n const { x: startX } = gestureStartPosition.current;\n\n if (\n currentX - startX > 10 &&\n onChange &&\n swipeHandled.current !== \"on\"\n ) {\n onChange(event, true);\n swipeHandled.current = \"on\";\n gestureStartPosition.current = getGesturePointFromEvent(event);\n } else if (\n startX - currentX > 10 &&\n onChange &&\n swipeHandled.current !== \"off\"\n ) {\n onChange(event, false);\n swipeHandled.current = \"off\";\n gestureStartPosition.current = getGesturePointFromEvent(event);\n }\n\n onPointerMove?.(event);\n },\n [onPointerMove, onChange],\n );\n\n const handleGestureEnd: PointerEventHandler<T> = useCallback(\n (event) => {\n event.preventDefault();\n\n (event.target as T).releasePointerCapture?.(event.pointerId);\n gestureStartPosition.current = undefined;\n\n event.type === \"pointerup\"\n ? onPointerUp?.(event)\n : onPointerCancel?.(event);\n },\n [onPointerUp, onPointerCancel],\n );\n\n return {\n swipeHandled,\n gestureHandlers: {\n onClick: handleClick,\n onPointerDown: handleGestureStart,\n onPointerMove: handleGestureMove,\n onPointerUp: handleGestureEnd,\n onPointerCancel: handleGestureEnd,\n },\n };\n}\n"],"names":["getGesturePointFromEvent","event","x","clientX","y","clientY","options","swipeHandled","useRef","gestureStartPosition","onClick","onChange","onPointerCancel","onPointerDown","onPointerMove","onPointerUp","handleClick","useCallback","current","handleGestureStart","preventDefault","_b","_a","target","setPointerCapture","call","pointerId","handleGestureMove","currentX","startX","handleGestureEnd","releasePointerCapture","type","gestureHandlers"],"mappings":"yGAeA,SAASA,EACLC,GAEO,MAAA,CACHC,EAAGD,EAAME,QACTC,EAAGH,EAAMI,QAEjB,yBAiBO,SACHC,GAWM,MAAAC,EAAeC,UAA6B,GAC5CC,EAAuBD,EAAAA,UAGzBE,QAAAA,EACAC,SAAAA,EACAC,gBAAAA,EACAC,cAAAA,EACAC,cAAAA,EACAC,YAAAA,GACAT,EAEEU,EAAoCC,EAAAA,aACrChB,IACQM,EAAaW,SACd,MAAAR,GAAAA,EAAUT,GAEdM,EAAaW,SAAU,CAC3B,GACA,CAACR,IAGCS,EAA6CF,EAAAA,aAC9ChB,YACGA,EAAMmB,iBAEL,OAAAC,GAAAC,EAAArB,EAAMsB,QAAaC,oBAAnBH,EAAAI,KAAAH,EAAuCrB,EAAMyB,WACzBjB,EAAAS,QAAUlB,EAAyBC,GACxDM,EAAaW,SAAU,EAEvB,MAAAL,GAAAA,EAAgBZ,EAAAA,GAEpB,CAACY,IAGCc,EAA4CV,EAAAA,aAC7ChB,IAGO,GAFJA,EAAMmB,kBAEDX,EAAqBS,QACtB,OAGJ,MAAQhB,EAAG0B,GAAa5B,EAAyBC,IACzCC,EAAG2B,GAAWpB,EAAqBS,QAGvCU,EAAWC,EAAS,IACpBlB,GACyB,OAAzBJ,EAAaW,SAEbP,EAASV,GAAO,GAChBM,EAAaW,QAAU,KACFT,EAAAS,QAAUlB,EAAyBC,IAExD4B,EAASD,EAAW,IACpBjB,GACyB,QAAzBJ,EAAaW,UAEbP,EAASV,GAAO,GAChBM,EAAaW,QAAU,MACFT,EAAAS,QAAUlB,EAAyBC,IAG5D,MAAAa,GAAAA,EAAgBb,EAAAA,GAEpB,CAACa,EAAeH,IAGdmB,EAA2Cb,EAAAA,aAC5ChB,YACGA,EAAMmB,iBAEL,OAAAC,GAAAC,EAAArB,EAAMsB,QAAaQ,wBAAnBV,EAAAI,KAAAH,EAA2CrB,EAAMyB,WAClDjB,EAAqBS,aAAU,EAEhB,cAAfjB,EAAM+B,KACA,MAAAjB,GAAAA,EAAcd,GACd,MAAAW,GAAAA,EAAkBX,EAAAA,GAE5B,CAACc,EAAaH,IAGX,MAAA,CACHL,aAAAA,EACA0B,gBAAiB,CACbvB,QAASM,EACTH,cAAeM,EACfL,cAAea,EACfZ,YAAae,EACblB,gBAAiBkB,GAG7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatAvstand.cjs","sources":["../../../../../src/utilities/formatters/avstand/formatAvstand.ts"],"sourcesContent":["import { formatNumber, FormatNumberOptions } from \"../util/formatNumber.js\";\nimport { parseNumber } from \"../util/parseNumber.js\";\n\nexport type LengthUnit =\n | \"kilometer\"\n | \"meter\"\n | \"decimeter\"\n | \"centimeter\"\n | \"millimeter\"\n | \"micrometer\"\n | \"nanometer\"\n | \"picometer\"\n | \"mile\"\n | \"yard\"\n | \"foot\"\n | \"inch\"\n | \"point\";\n\nexport interface FormatAvstandOptions extends FormatNumberOptions {\n /**\n * Lengdeenheten som skal vises for tallet, f.eks. \"kilometer\" eller \"foot\".\n * Hvis du _ikke_ ønsker å vise noen enhet bør du heller bruke `formatNumber` direkte.\n *\n * @default \"kilometer\"\n */\n unit?: LengthUnit;\n /**\n * Valgfritt suffiks som vises etter lengdeenheten. Ønsker du for eksempel\n * å vise \"km/år\" kan du setter \"kilometer\" som `unit` og \"/år\" som `suffix`.\n */\n suffix?: string;\n}\n\nconst defaultOptions: FormatNumberOptions = {\n style: \"unit\",\n unit: \"kilometer\",\n};\n\n/**\n * Formaterer en avstand med norsk locale på tallverdien.\n * @param input Verdien som skal formateres\n * @param options Lengdeenheten som skal vises for tallet, f.eks. \"kilometer\" eller \"foot\". Default: \"kilometer\". Kan også angi en valgfri suffix, f.eks. \"/år\".\n * @returns Den formaterte verdien.\n */\nexport function formatAvstand(input: string | number
|
|
1
|
+
{"version":3,"file":"formatAvstand.cjs","sources":["../../../../../src/utilities/formatters/avstand/formatAvstand.ts"],"sourcesContent":["import { formatNumber, FormatNumberOptions } from \"../util/formatNumber.js\";\nimport { parseNumber } from \"../util/parseNumber.js\";\n\nexport type LengthUnit =\n | \"kilometer\"\n | \"meter\"\n | \"decimeter\"\n | \"centimeter\"\n | \"millimeter\"\n | \"micrometer\"\n | \"nanometer\"\n | \"picometer\"\n | \"mile\"\n | \"yard\"\n | \"foot\"\n | \"inch\"\n | \"point\";\n\nexport interface FormatAvstandOptions extends FormatNumberOptions {\n /**\n * Lengdeenheten som skal vises for tallet, f.eks. \"kilometer\" eller \"foot\".\n * Hvis du _ikke_ ønsker å vise noen enhet bør du heller bruke `formatNumber` direkte.\n *\n * @default \"kilometer\"\n */\n unit?: LengthUnit;\n /**\n * Valgfritt suffiks som vises etter lengdeenheten. Ønsker du for eksempel\n * å vise \"km/år\" kan du setter \"kilometer\" som `unit` og \"/år\" som `suffix`.\n */\n suffix?: string;\n}\n\nconst defaultOptions: FormatNumberOptions = {\n style: \"unit\",\n unit: \"kilometer\",\n};\n\n/**\n * Formaterer en avstand med norsk locale på tallverdien.\n * @param input Verdien som skal formateres\n * @param options Lengdeenheten som skal vises for tallet, f.eks. \"kilometer\" eller \"foot\". Default: \"kilometer\". Kan også angi en valgfri suffix, f.eks. \"/år\".\n * @returns Den formaterte verdien.\n */\nexport function formatAvstand(\n input: string | number,\n options?: FormatAvstandOptions,\n) {\n const number = parseNumber(input);\n if (!number) {\n return input.toString();\n }\n\n const { suffix, ...formatOptions } = { ...defaultOptions, ...options };\n\n return [formatNumber(number, formatOptions), suffix].join(\"\");\n}\n"],"names":["defaultOptions","style","unit","input","options","number","parseNumber","toString","suffix","formatOptions","formatNumber","join"],"mappings":"iKAiCMA,EAAsC,CACxCC,MAAO,OACPC,KAAM,mCASM,SACZC,EACAC,GAEM,MAAAC,EAASC,cAAYH,GAC3B,IAAKE,EACD,OAAOF,EAAMI,WAGX,MAAEC,OAAAA,KAAWC,GAAkB,IAAKT,KAAmBI,GAEtD,MAAA,CAACM,EAAAA,aAAaL,EAAQI,GAAgBD,GAAQG,KAAK,GAC9D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatBytes.cjs","sources":["../../../../../src/utilities/formatters/bytes/formatBytes.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\nimport { formatNumber, FormatNumberOptions } from \"../util/formatNumber.js\";\n\n/**\n * Formater et antall bytes som en lesbar verdi med enten KB eller MB som enhet.\n * @param bytes Antall bytes som skal vises i lesbar form\n * @param options Innstillinger for formateringen. Se https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options for detaljer.\n * @returns Den formaterte verdien\n */\nexport function formatBytes(bytes: number
|
|
1
|
+
{"version":3,"file":"formatBytes.cjs","sources":["../../../../../src/utilities/formatters/bytes/formatBytes.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\nimport { formatNumber, FormatNumberOptions } from \"../util/formatNumber.js\";\n\n/**\n * Formater et antall bytes som en lesbar verdi med enten KB eller MB som enhet.\n * @param bytes Antall bytes som skal vises i lesbar form\n * @param options Innstillinger for formateringen. Se https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options for detaljer.\n * @returns Den formaterte verdien\n */\nexport function formatBytes(\n bytes: number,\n options?: FormatNumberOptions,\n): string {\n if (bytes >= 100000) {\n return `${formatNumber(Number(bytes / 1000 / 1000), {\n maximumFractionDigits: 1,\n ...options,\n })}${unicode.nbsp}MB`;\n } else {\n return `${formatNumber(bytes / 1000, {\n maximumFractionDigits: 2,\n ...options,\n })}${unicode.nbsp}KB`;\n }\n}\n"],"names":["bytes","options","formatNumber","Number","maximumFractionDigits","unicode.nbsp"],"mappings":"4LASgB,SACZA,EACAC,GAEA,OAAID,GAAS,IACF,GAAGE,EAAAA,aAAaC,OAAOH,EAAQ,IAAO,KAAO,CAChDI,sBAAuB,KACpBH,MACFI,WAEE,GAAGH,EAAAA,aAAaF,EAAQ,IAAM,CACjCI,sBAAuB,KACpBH,MACFI,UAEb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatDate.cjs","sources":["../../../../../src/utilities/formatters/date/formatDate.ts"],"sourcesContent":["/**\n * Formaterer en dato med \"dd.mm.yyyy\"-format.\n * @param date Verdien som skal formateres\n * @returns Verdien i \"dd.mm.yyyy\"-format\n */\nexport function formatDate(date: Date): string {\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n return `${day}.${month}.${date.getFullYear()}`;\n}\n\nexport const DATE_REGEX = {\n // Tillater datoer på formene DDMMYY og DDMMYYYY\n full: /^(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[0-2])(\\d{2}|\\d{4})$/,\n partial: /^(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[0-2])?(\\d{1,4})?$/,\n};\n\ntype FormatDateStringOptions = {\n partial?: boolean;\n};\n\nexport function formatDateString(input: string
|
|
1
|
+
{"version":3,"file":"formatDate.cjs","sources":["../../../../../src/utilities/formatters/date/formatDate.ts"],"sourcesContent":["/**\n * Formaterer en dato med \"dd.mm.yyyy\"-format.\n * @param date Verdien som skal formateres\n * @returns Verdien i \"dd.mm.yyyy\"-format\n */\nexport function formatDate(date: Date): string {\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n return `${day}.${month}.${date.getFullYear()}`;\n}\n\nexport const DATE_REGEX = {\n // Tillater datoer på formene DDMMYY og DDMMYYYY\n full: /^(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[0-2])(\\d{2}|\\d{4})$/,\n partial: /^(0[1-9]|[12][0-9]|3[01])(0[1-9]|1[0-2])?(\\d{1,4})?$/,\n};\n\ntype FormatDateStringOptions = {\n partial?: boolean;\n};\n\nexport function formatDateString(\n input: string,\n options?: FormatDateStringOptions,\n): string {\n const strippedInput = input.replace(/\\D/g, \"\");\n const regex = options?.partial ? DATE_REGEX.partial : DATE_REGEX.full;\n\n const match = strippedInput.match(regex);\n\n if (!match) {\n return input;\n }\n\n return match.slice(1).filter(Boolean).join(\".\");\n}\n"],"names":["DATE_REGEX","full","partial","date","getDate","padStart","getMonth","getFullYear","input","options","strippedInput","replace","regex","match","slice","filter","Boolean","join"],"mappings":"gFAWO,MAAMA,EAAa,CAEtBC,KAAM,yDACNC,QAAS,gGATN,SAAoBC,GAGvB,MAAO,GAFK,GAAGA,EAAKC,YAAYC,SAAS,EAAG,QAC9B,GAAGF,EAAKG,WAAa,IAAID,SAAS,EAAG,QACzBF,EAAKI,eACnC,2BAYgB,SACZC,EACAC,GAEA,MAAMC,EAAgBF,EAAMG,QAAQ,MAAO,IACrCC,EAAQ,MAAAH,GAAAA,EAASP,QAAUF,EAAWE,QAAUF,EAAWC,KAE3DY,EAAQH,EAAcG,MAAMD,GAElC,OAAKC,EAIEA,EAAMC,MAAM,GAAGC,OAAOC,SAASC,KAAK,KAHhCT,CAIf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatFodselsnummer.cjs","sources":["../../../../../src/utilities/formatters/fodselsnummer/formatFodselsnummer.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\n\nexport const FODSELSNUMMER_REGEX = {\n full: /^(\\d{6})(\\d{5})$/,\n partial: /^(\\d{6})(\\d{1,5})?$/,\n};\n\ntype FormatFodselsnummerOptions = {\n partial?: boolean;\n};\n\n/**\n * Formaterer et fødselsnummer. Delene av fødselsnummeret skilles med non-breaking space.\n * @param input Verdien som skal formateres\n * @param options Angi at verdien er et ufullstendig fødselsnummer og likevel skal formateres.\n * @returns Den formaterte verdien\n */\nexport function formatFodselsnummer(input: string
|
|
1
|
+
{"version":3,"file":"formatFodselsnummer.cjs","sources":["../../../../../src/utilities/formatters/fodselsnummer/formatFodselsnummer.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\n\nexport const FODSELSNUMMER_REGEX = {\n full: /^(\\d{6})(\\d{5})$/,\n partial: /^(\\d{6})(\\d{1,5})?$/,\n};\n\ntype FormatFodselsnummerOptions = {\n partial?: boolean;\n};\n\n/**\n * Formaterer et fødselsnummer. Delene av fødselsnummeret skilles med non-breaking space.\n * @param input Verdien som skal formateres\n * @param options Angi at verdien er et ufullstendig fødselsnummer og likevel skal formateres.\n * @returns Den formaterte verdien\n */\nexport function formatFodselsnummer(\n input: string,\n options?: FormatFodselsnummerOptions,\n) {\n const strippedInput = input.replace(/\\W/g, \"\");\n const regex = options?.partial\n ? FODSELSNUMMER_REGEX.partial\n : FODSELSNUMMER_REGEX.full;\n\n const match = strippedInput.match(regex);\n\n if (!match) {\n return input;\n }\n\n return match.slice(1).filter(Boolean).join(unicode.NON_BREAKING_SPACE);\n}\n"],"names":["FODSELSNUMMER_REGEX","full","partial","input","options","strippedInput","replace","regex","match","slice","filter","Boolean","join","unicode.NON_BREAKING_SPACE"],"mappings":"kIAEaA,EAAsB,CAC/BC,KAAM,mBACNC,QAAS,iFAaG,SACZC,EACAC,GAEA,MAAMC,EAAgBF,EAAMG,QAAQ,MAAO,IACrCC,EAAQ,MAAAH,GAAAA,EAASF,QACjBF,EAAoBE,QACpBF,EAAoBC,KAEpBO,EAAQH,EAAcG,MAAMD,GAElC,OAAKC,EAIEA,EAAMC,MAAM,GAAGC,OAAOC,SAASC,KAAKC,EAAAA,oBAHhCV,CAIf"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
export type { FormatNumberOptions } from './util/formatNumber.cjs';
|
|
2
2
|
export { formatNumber } from './util/formatNumber.cjs';
|
|
3
3
|
export { parseNumber } from './util/parseNumber.cjs';
|
|
4
|
-
export type { Formatter, RegisterWithMaskOptions } from './util/registerWithMask.cjs';
|
|
4
|
+
export type { Formatter, RegisterWithMaskOptions, } from './util/registerWithMask.cjs';
|
|
5
5
|
export { registerWithMasks, registerWithFodselsnummerMask, registerWithKontonummerMask, registerWithKortnummerMask, registerWithTelefonnummerMask, } from './util/registerWithMask.cjs';
|
|
6
6
|
export { formatAvstand } from './avstand/formatAvstand.cjs';
|
|
7
7
|
export { formatBytes } from './bytes/formatBytes.cjs';
|
|
8
8
|
export { formatDate } from './date/formatDate.cjs';
|
|
9
|
-
export { FODSELSNUMMER_REGEX, formatFodselsnummer } from './fodselsnummer/formatFodselsnummer.cjs';
|
|
9
|
+
export { FODSELSNUMMER_REGEX, formatFodselsnummer, } from './fodselsnummer/formatFodselsnummer.cjs';
|
|
10
10
|
export { ORGANISASJONSNUMMER_REGEX, formatOrganisasjonsnummer, } from './organisasjonsnummer/formatOrganisasjonsnummer.cjs';
|
|
11
|
-
export { KONTONUMMER_REGEX, formatKontonummer } from './kontonummer/formatKontonummer.cjs';
|
|
12
|
-
export { KORTNUMMER_REGEX, formatKortnummer } from './kortnummer/formatKortnummer.cjs';
|
|
13
|
-
export { TELEFONNUMMER_REGEX, formatTelefonnummer } from './telefonnummer/formatTelefonnummer.cjs';
|
|
11
|
+
export { KONTONUMMER_REGEX, formatKontonummer, } from './kontonummer/formatKontonummer.cjs';
|
|
12
|
+
export { KORTNUMMER_REGEX, formatKortnummer, } from './kortnummer/formatKortnummer.cjs';
|
|
13
|
+
export { TELEFONNUMMER_REGEX, formatTelefonnummer, } from './telefonnummer/formatTelefonnummer.cjs';
|
|
14
14
|
export { formatValuta } from './valuta/formatValuta.cjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatKontonummer.cjs","sources":["../../../../../src/utilities/formatters/kontonummer/formatKontonummer.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\n\nexport const KONTONUMMER_REGEX = {\n full: /^(\\d{4})(\\d{2})(\\d{5})$/,\n partial: /^(\\d{4})(\\d{1,2})?(\\d{1,5})?$/,\n};\n\ntype FormatKontonummerOptions = {\n partial?: boolean;\n separator?: string;\n};\n\n/**\n * Formaterer et kontonummer, med eller uten punktum som skilletegn. Default er med non-breaking space.\n * @param input Verdien som skal formateres\n * @param options Angi at verdien er et ufullstendig kontonummer og likevel skal formateres.\n * @returns Den formaterte verdien\n */\nexport function formatKontonummer(input: string
|
|
1
|
+
{"version":3,"file":"formatKontonummer.cjs","sources":["../../../../../src/utilities/formatters/kontonummer/formatKontonummer.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\n\nexport const KONTONUMMER_REGEX = {\n full: /^(\\d{4})(\\d{2})(\\d{5})$/,\n partial: /^(\\d{4})(\\d{1,2})?(\\d{1,5})?$/,\n};\n\ntype FormatKontonummerOptions = {\n partial?: boolean;\n separator?: string;\n};\n\n/**\n * Formaterer et kontonummer, med eller uten punktum som skilletegn. Default er med non-breaking space.\n * @param input Verdien som skal formateres\n * @param options Angi at verdien er et ufullstendig kontonummer og likevel skal formateres.\n * @returns Den formaterte verdien\n */\nexport function formatKontonummer(\n input: string,\n options?: FormatKontonummerOptions,\n) {\n const strippedInput = input.replace(/\\W/g, \"\");\n const regex = options?.partial\n ? KONTONUMMER_REGEX.partial\n : KONTONUMMER_REGEX.full;\n\n const match = strippedInput.match(regex);\n\n if (!match) {\n return input;\n }\n\n return match\n .slice(1)\n .filter(Boolean)\n .join(options?.separator || unicode.NON_BREAKING_SPACE);\n}\n"],"names":["KONTONUMMER_REGEX","full","partial","input","options","strippedInput","replace","regex","match","slice","filter","Boolean","join","separator","unicode.NON_BREAKING_SPACE","NON_BREAKING_SPACE"],"mappings":"kIAEaA,EAAoB,CAC7BC,KAAM,0BACNC,QAAS,uFAcG,SACZC,EACAC,GAEA,MAAMC,EAAgBF,EAAMG,QAAQ,MAAO,IACrCC,EAAQ,MAAAH,GAAAA,EAASF,QACjBF,EAAkBE,QAClBF,EAAkBC,KAElBO,EAAQH,EAAcG,MAAMD,GAElC,OAAKC,EAIEA,EACFC,MAAM,GACNC,OAAOC,SACPC,MAAK,MAAAR,OAAA,EAAAA,EAASS,YAAaC,EAA0BC,oBAN/CZ,CAOf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatKortnummer.cjs","sources":["../../../../../src/utilities/formatters/kortnummer/formatKortnummer.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\n\nexport const KORTNUMMER_REGEX = {\n full: /^(\\d{4})(\\d{4})(\\d{4})(\\d{4})$/,\n partial: /^(\\d{4})(\\d{1,4})?(\\d{1,4})?(\\d{1,4})?$/,\n};\n\ntype FormatKortnummerOptions = {\n partial?: boolean;\n};\n\n/**\n * Formaterer et kortnummer. Delene av kortnummeret skilles med non-breaking space.\n * @param input Verdien som skal formateres\n * @param options Angi at verdien er et ufullstendig kortnummer og likevel skal formateres.\n * @returns Den formaterte verdien\n */\nexport function formatKortnummer(input: string
|
|
1
|
+
{"version":3,"file":"formatKortnummer.cjs","sources":["../../../../../src/utilities/formatters/kortnummer/formatKortnummer.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\n\nexport const KORTNUMMER_REGEX = {\n full: /^(\\d{4})(\\d{4})(\\d{4})(\\d{4})$/,\n partial: /^(\\d{4})(\\d{1,4})?(\\d{1,4})?(\\d{1,4})?$/,\n};\n\ntype FormatKortnummerOptions = {\n partial?: boolean;\n};\n\n/**\n * Formaterer et kortnummer. Delene av kortnummeret skilles med non-breaking space.\n * @param input Verdien som skal formateres\n * @param options Angi at verdien er et ufullstendig kortnummer og likevel skal formateres.\n * @returns Den formaterte verdien\n */\nexport function formatKortnummer(\n input: string,\n options?: FormatKortnummerOptions,\n) {\n const strippedInput = input.replace(/[\\s-.]/g, \"\");\n const regex = options?.partial\n ? KORTNUMMER_REGEX.partial\n : KORTNUMMER_REGEX.full;\n\n const match = strippedInput.match(regex);\n\n if (!match) {\n return input;\n }\n\n return match.slice(1).filter(Boolean).join(unicode.NON_BREAKING_SPACE);\n}\n"],"names":["KORTNUMMER_REGEX","full","partial","input","options","strippedInput","replace","regex","match","slice","filter","Boolean","join","unicode.NON_BREAKING_SPACE"],"mappings":"kIAEaA,EAAmB,CAC5BC,KAAM,iCACNC,QAAS,+FAaG,SACZC,EACAC,GAEA,MAAMC,EAAgBF,EAAMG,QAAQ,UAAW,IACzCC,EAAQ,MAAAH,GAAAA,EAASF,QACjBF,EAAiBE,QACjBF,EAAiBC,KAEjBO,EAAQH,EAAcG,MAAMD,GAElC,OAAKC,EAIEA,EAAMC,MAAM,GAAGC,OAAOC,SAASC,KAAKC,EAAAA,oBAHhCV,CAIf"}
|
package/build/cjs/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatOrganisasjonsnummer.cjs","sources":["../../../../../src/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\n\nexport const ORGANISASJONSNUMMER_REGEX = {\n full: /^(\\d{3})(\\d{3})(\\d{3})$/,\n partial: /^(\\d{3})(\\d{1,3})?(\\d{1,5})?$/,\n};\n\ntype FormatOrganisasjonsnummerOptions = {\n partial?: boolean;\n};\n\n/**\n * Formaterer et organisasjonsnummer. Delene av organisasjonsnummeret skilles med non-breaking space.\n * @param input Verdien som skal formateres\n * @param options Angi at verdien er et ufullstendig organisasjonsnummer og likevel skal formateres.\n * @returns Den formaterte verdien\n */\nexport function formatOrganisasjonsnummer(input: string
|
|
1
|
+
{"version":3,"file":"formatOrganisasjonsnummer.cjs","sources":["../../../../../src/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\n\nexport const ORGANISASJONSNUMMER_REGEX = {\n full: /^(\\d{3})(\\d{3})(\\d{3})$/,\n partial: /^(\\d{3})(\\d{1,3})?(\\d{1,5})?$/,\n};\n\ntype FormatOrganisasjonsnummerOptions = {\n partial?: boolean;\n};\n\n/**\n * Formaterer et organisasjonsnummer. Delene av organisasjonsnummeret skilles med non-breaking space.\n * @param input Verdien som skal formateres\n * @param options Angi at verdien er et ufullstendig organisasjonsnummer og likevel skal formateres.\n * @returns Den formaterte verdien\n */\nexport function formatOrganisasjonsnummer(\n input: string,\n options?: FormatOrganisasjonsnummerOptions,\n) {\n const strippedInput = input.replace(/[\\s-.]/g, \"\");\n const regex = options?.partial\n ? ORGANISASJONSNUMMER_REGEX.partial\n : ORGANISASJONSNUMMER_REGEX.full;\n\n const match = strippedInput.match(regex);\n\n if (!match) {\n return input;\n }\n\n return match.slice(1).filter(Boolean).join(unicode.NON_BREAKING_SPACE);\n}\n"],"names":["ORGANISASJONSNUMMER_REGEX","full","partial","input","options","strippedInput","replace","regex","match","slice","filter","Boolean","join","unicode.NON_BREAKING_SPACE"],"mappings":"kIAEaA,EAA4B,CACrCC,KAAM,0BACNC,QAAS,uGAaG,SACZC,EACAC,GAEA,MAAMC,EAAgBF,EAAMG,QAAQ,UAAW,IACzCC,EAAQ,MAAAH,GAAAA,EAASF,QACjBF,EAA0BE,QAC1BF,EAA0BC,KAE1BO,EAAQH,EAAcG,MAAMD,GAElC,OAAKC,EAIEA,EAAMC,MAAM,GAAGC,OAAOC,SAASC,KAAKC,EAAAA,oBAHhCV,CAIf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatTelefonnummer.cjs","sources":["../../../../../src/utilities/formatters/telefonnummer/formatTelefonnummer.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\n\nexport const TELEFONNUMMER_REGEX = {\n mobil: /^([8]\\d{2})(\\d{2})(\\d{3})$/,\n fast: /^([2-9]\\d)(\\d{2})(\\d{2})(\\d{2})$/,\n mobilPartial: /^([8]\\d{2})(\\d{1,2})?(\\d{1,3})?$/,\n fastPartial: /^([2-9]\\d)(\\d{1,2})?(\\d{1,2})?(\\d{1,2})?$/,\n};\n\ntype FormatTelefonnummerOptions = {\n partial?: boolean;\n countryCode?: string;\n};\n\n/**\n * Formaterer et telefonnummer etter språkrådets anbefalinger. Delene av telefonnummeret skilles med non-breaking space.\n * @param input Verdien som skal formateres\n * @param options Inkluder en valgfri landkode, eller angi at verdien er et ufullstendig telefonnummer og likevel skal formateres.\n * @returns Den formatererte verdien\n */\nexport function formatTelefonnummer(input: string
|
|
1
|
+
{"version":3,"file":"formatTelefonnummer.cjs","sources":["../../../../../src/utilities/formatters/telefonnummer/formatTelefonnummer.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\n\nexport const TELEFONNUMMER_REGEX = {\n mobil: /^([8]\\d{2})(\\d{2})(\\d{3})$/,\n fast: /^([2-9]\\d)(\\d{2})(\\d{2})(\\d{2})$/,\n mobilPartial: /^([8]\\d{2})(\\d{1,2})?(\\d{1,3})?$/,\n fastPartial: /^([2-9]\\d)(\\d{1,2})?(\\d{1,2})?(\\d{1,2})?$/,\n};\n\ntype FormatTelefonnummerOptions = {\n partial?: boolean;\n countryCode?: string;\n};\n\n/**\n * Formaterer et telefonnummer etter språkrådets anbefalinger. Delene av telefonnummeret skilles med non-breaking space.\n * @param input Verdien som skal formateres\n * @param options Inkluder en valgfri landkode, eller angi at verdien er et ufullstendig telefonnummer og likevel skal formateres.\n * @returns Den formatererte verdien\n */\nexport function formatTelefonnummer(\n input: string,\n options?: FormatTelefonnummerOptions,\n) {\n const strippedInput = input.replace(/\\W/g, \"\");\n const mobilRegex = options?.partial\n ? TELEFONNUMMER_REGEX.mobilPartial\n : TELEFONNUMMER_REGEX.mobil;\n const fastRegex = options?.partial\n ? TELEFONNUMMER_REGEX.fastPartial\n : TELEFONNUMMER_REGEX.fast;\n\n const match =\n strippedInput.match(mobilRegex) || strippedInput.match(fastRegex);\n\n if (!match) {\n return input;\n }\n\n return [\n options?.countryCode ? `+${options.countryCode}` : undefined,\n ...match.slice(1),\n ] // build array of number elements\n .filter(Boolean) // ensure all elements are valid\n .join(unicode.NON_BREAKING_SPACE); // build formattet string\n}\n"],"names":["TELEFONNUMMER_REGEX","mobil","fast","mobilPartial","fastPartial","input","options","strippedInput","replace","mobilRegex","partial","fastRegex","match","countryCode","slice","filter","Boolean","join","unicode.NON_BREAKING_SPACE","NON_BREAKING_SPACE"],"mappings":"kIAEaA,EAAsB,CAC/BC,MAAO,6BACPC,KAAM,mCACNC,aAAc,mCACdC,YAAa,uGAcD,SACZC,EACAC,GAEA,MAAMC,EAAgBF,EAAMG,QAAQ,MAAO,IACrCC,EAAa,MAAAH,GAAAA,EAASI,QACtBV,EAAoBG,aACpBH,EAAoBC,MACpBU,EAAY,MAAAL,GAAAA,EAASI,QACrBV,EAAoBI,YACpBJ,EAAoBE,KAEpBU,EACFL,EAAcK,MAAMH,IAAeF,EAAcK,MAAMD,GAE3D,OAAKC,EAIE,CACH,MAAAN,GAAAA,EAASO,YAAc,IAAIP,EAAQO,mBAAgB,KAChDD,EAAME,MAAM,IAEdC,OAAOC,SACPC,KAAKC,EAA0BC,oBARzBd,CASf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatNumber.cjs","sources":["../../../../../src/utilities/formatters/util/formatNumber.ts"],"sourcesContent":["import { parseNumber } from \"./parseNumber.js\";\n\nexport interface FormatNumberOptions extends Intl.NumberFormatOptions {\n /**\n * Hvilken lokalisasjon tallet skal formateres med\n * @default \"no-NB\"\n */\n locale?: string;\n}\n\nconst defaultOptions: FormatNumberOptions = {\n locale: \"no-NB\",\n};\n\n/**\n * Formaterer et tall med norsk locale.\n * @param input Verdien som skal formateres\n * @param options Innstillinger for formateringen. Se https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options for detaljer.\n * @returns Den formatererte verdien\n */\nexport function formatNumber(input: string | number
|
|
1
|
+
{"version":3,"file":"formatNumber.cjs","sources":["../../../../../src/utilities/formatters/util/formatNumber.ts"],"sourcesContent":["import { parseNumber } from \"./parseNumber.js\";\n\nexport interface FormatNumberOptions extends Intl.NumberFormatOptions {\n /**\n * Hvilken lokalisasjon tallet skal formateres med\n * @default \"no-NB\"\n */\n locale?: string;\n}\n\nconst defaultOptions: FormatNumberOptions = {\n locale: \"no-NB\",\n};\n\n/**\n * Formaterer et tall med norsk locale.\n * @param input Verdien som skal formateres\n * @param options Innstillinger for formateringen. Se https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options for detaljer.\n * @returns Den formatererte verdien\n */\nexport function formatNumber(\n input: string | number,\n options?: FormatNumberOptions,\n): string {\n const number = parseNumber(input);\n if (!number) {\n return input.toString();\n }\n\n const { locale, ...otherOptions } = { ...defaultOptions, ...options };\n const formatter = new Intl.NumberFormat(locale, otherOptions);\n\n return formatter.format(number);\n}\n"],"names":["defaultOptions","locale","input","options","number","parseNumber","toString","otherOptions","Intl","NumberFormat","format"],"mappings":"qHAUMA,EAAsC,CACxCC,OAAQ,8BASI,SACZC,EACAC,GAEM,MAAAC,EAASC,cAAYH,GAC3B,IAAKE,EACD,OAAOF,EAAMI,WAGX,MAAEL,OAAAA,KAAWM,GAAiB,IAAKP,KAAmBG,GAGrD,OAFW,IAAIK,KAAKC,aAAaR,EAAQM,GAE/BG,OAAON,EAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseNumber.cjs","sources":["../../../../../src/utilities/formatters/util/parseNumber.ts"],"sourcesContent":["const replaceAllButLastOccurence = (input: string | string[]
|
|
1
|
+
{"version":3,"file":"parseNumber.cjs","sources":["../../../../../src/utilities/formatters/util/parseNumber.ts"],"sourcesContent":["const replaceAllButLastOccurence = (\n input: string | string[],\n search: string,\n) => {\n const arrInput = Array.isArray(input) ? input : input.split(\"\");\n const indexOfSearch = arrInput.lastIndexOf(search);\n\n return (\n arrInput\n // remove all instances of the notator except the last one\n .filter((f, i) => {\n if (f !== search) {\n return true;\n }\n\n return i === indexOfSearch;\n })\n .join(\"\")\n );\n};\n\n/**\n * Parser en formatert string til et Number.\n * @param input Kandidaten som skal parses til et tall\n * @returns Verdien som et Number\n */\nexport function parseNumber(input: string | number) {\n if (typeof input === \"number\") {\n return input;\n }\n\n // remove all spaces from number\n const spaceRegex = /\\s/g;\n const arrNumber = input.replaceAll(spaceRegex, \"\").split(\"\");\n\n // find what separator is used for decimal notation\n const decimalNotator = arrNumber.reduce<\".\" | \",\" | null>(\n (notator, currentItem) => {\n if (currentItem === \",\" || currentItem === \".\") {\n return currentItem;\n }\n\n return notator;\n },\n null,\n );\n\n if (decimalNotator === \".\") {\n return Number(\n replaceAllButLastOccurence(arrNumber, \".\").replace(\",\", \"\"),\n );\n } else if (decimalNotator === \",\") {\n return Number(\n replaceAllButLastOccurence(arrNumber, \",\")\n .replace(\".\", \"\")\n .replace(\",\", \".\"),\n );\n } else {\n return Number(arrNumber.join(\"\"));\n }\n}\n"],"names":["replaceAllButLastOccurence","input","search","arrInput","Array","isArray","split","indexOfSearch","lastIndexOf","filter","f","i","join","arrNumber","replaceAll","decimalNotator","reduce","notator","currentItem","Number","replace"],"mappings":"gFAAA,MAAMA,EAA6B,CAC/BC,EACAC,KAEM,MAAAC,EAAWC,MAAMC,QAAQJ,GAASA,EAAQA,EAAMK,MAAM,IACtDC,EAAgBJ,EAASK,YAAYN,GAE3C,OACIC,EAEKM,QAAO,CAACC,EAAGC,IACJD,IAAMR,GAIHS,IAAMJ,IAEhBK,KAAK,GAAE,sBASb,SAAqBX,GACpB,GAAiB,iBAAVA,EACA,OAAAA,EAIX,MACMY,EAAYZ,EAAMa,WADL,MAC4B,IAAIR,MAAM,IAGnDS,EAAiBF,EAAUG,QAC7B,CAACC,EAASC,IACc,MAAhBA,GAAuC,MAAhBA,EAChBA,EAGJD,GAEX,MAGJ,OACWE,OADY,MAAnBJ,EAEIf,EAA2Ba,EAAW,KAAKO,QAAQ,IAAK,IAElC,MAAnBL,EAEHf,EAA2Ba,EAAW,KACjCO,QAAQ,IAAK,IACbA,QAAQ,IAAK,KAGRP,EAAUD,KAAK,IAErC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerWithMask.cjs","sources":["../../../../../src/utilities/formatters/util/registerWithMask.ts"],"sourcesContent":["import type { ChangeEvent, KeyboardEventHandler } from \"react\";\nimport type {\n FieldValues,\n Path,\n PathValue,\n RegisterOptions,\n UseFormRegisterReturn,\n UseFormReturn,\n} from \"react-hook-form\";\nimport { formatDateString } from \"../date/formatDate.js\";\nimport { formatFodselsnummer } from \"../fodselsnummer/formatFodselsnummer.js\";\nimport { formatKontonummer } from \"../kontonummer/formatKontonummer.js\";\nimport { formatKortnummer } from \"../kortnummer/formatKortnummer.js\";\nimport { formatOrganisasjonsnummer } from \"../organisasjonsnummer/formatOrganisasjonsnummer.js\";\nimport { formatTelefonnummer } from \"../telefonnummer/formatTelefonnummer.js\";\nimport { formatNumber } from \"./formatNumber.js\";\n\nconst formatters = {\n date: formatDateString,\n fodselsnummer: formatFodselsnummer,\n kortnummer: formatKortnummer,\n kontonummer: formatKontonummer,\n telefonnummer: formatTelefonnummer,\n number: formatNumber,\n organisasjonsnummer: formatOrganisasjonsnummer,\n};\nexport type Formatter = keyof typeof formatters;\n\nexport type RegisterWithMaskOptions<T extends FieldValues> = Omit
|
|
1
|
+
{"version":3,"file":"registerWithMask.cjs","sources":["../../../../../src/utilities/formatters/util/registerWithMask.ts"],"sourcesContent":["import type { ChangeEvent, KeyboardEventHandler } from \"react\";\nimport type {\n FieldValues,\n Path,\n PathValue,\n RegisterOptions,\n UseFormRegisterReturn,\n UseFormReturn,\n} from \"react-hook-form\";\nimport { formatDateString } from \"../date/formatDate.js\";\nimport { formatFodselsnummer } from \"../fodselsnummer/formatFodselsnummer.js\";\nimport { formatKontonummer } from \"../kontonummer/formatKontonummer.js\";\nimport { formatKortnummer } from \"../kortnummer/formatKortnummer.js\";\nimport { formatOrganisasjonsnummer } from \"../organisasjonsnummer/formatOrganisasjonsnummer.js\";\nimport { formatTelefonnummer } from \"../telefonnummer/formatTelefonnummer.js\";\nimport { formatNumber } from \"./formatNumber.js\";\n\nconst formatters = {\n date: formatDateString,\n fodselsnummer: formatFodselsnummer,\n kortnummer: formatKortnummer,\n kontonummer: formatKontonummer,\n telefonnummer: formatTelefonnummer,\n number: formatNumber,\n organisasjonsnummer: formatOrganisasjonsnummer,\n};\nexport type Formatter = keyof typeof formatters;\n\nexport type RegisterWithMaskOptions<T extends FieldValues> = Omit<\n RegisterOptions<T>,\n \"setValueAs\"\n>;\n\nconst registerWithMask =\n (formatter: Formatter) =>\n <T extends FieldValues>(\n form: UseFormReturn<T>,\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ) => {\n let onKeyDownCaretPosition = 0;\n let onKeyDownKeyPressed = \"\";\n\n const setValueAs = (value: string) => value.replace(/\\s/g, \"\");\n const onChange = (event: ChangeEvent<HTMLInputElement>) => {\n options?.onChange?.(event);\n\n // save some values before event.target.value change\n let onChangeCaretPosition = 0;\n const inputLength = event.target.value.length;\n\n // type checking formalities\n if (event.target.selectionStart !== null) {\n onChangeCaretPosition = event.target.selectionStart;\n }\n\n form.setValue(\n name,\n formatters[formatter](event.target.value, {\n partial: true,\n }) as PathValue<T, Path<T>>,\n );\n\n let newPosition: number | null = null;\n\n if ([\"Delete\", \"Backspace\"].includes(onKeyDownKeyPressed)) {\n // handle removing content\n // calculate how much to move the caret, this also accounts for removing sections of text\n const delta = onKeyDownCaretPosition - onChangeCaretPosition;\n\n // calculate new caret position (- because we move backwards)\n newPosition = onKeyDownCaretPosition - delta;\n } else if (onChangeCaretPosition < event.target.value.length) {\n // handle adding content from inside the string\n // calculate how much to move the caret forwards\n const delta = event.target.value.length - inputLength;\n\n // calculate new caret position (+ because we move forwards)\n newPosition = onChangeCaretPosition + delta;\n }\n\n if (newPosition !== null) {\n event.target.setSelectionRange(\n newPosition,\n newPosition,\n undefined,\n );\n }\n };\n\n const registerOptions: RegisterOptions<T, Path<T>> = {\n setValueAs,\n onChange,\n };\n if (options) {\n Object.assign(registerOptions, options);\n }\n const register = form.register(name, registerOptions);\n\n // save the caret position before the change occured\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n if ((event.target as HTMLInputElement).selectionStart !== null) {\n onKeyDownCaretPosition = (event.target as HTMLInputElement)\n .selectionStart as number;\n }\n onKeyDownKeyPressed = event.key;\n };\n\n // add onKeyDown event handler to the registered input\n const extra: Record<string, unknown> = {\n onKeyDown,\n };\n\n if (formatter === \"number\") {\n extra.align = \"right\"; // Se https://github.com/fremtind/jokul/pull/2898\n }\n\n return Object.assign(register, extra);\n };\n\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithFodselsnummerMask = registerWithMask(\"fodselsnummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithKortnummerMask = registerWithMask(\"kortnummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithKontonummerMask = registerWithMask(\"kontonummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithTelefonnummerMask = registerWithMask(\"telefonnummer\");\n\n/**\n * Hjelpefunksjon for React Hook Form som lar deg bruke formateringsfunksjonene i denne pakken som inputmasker.\n */\nexport const registerWithMasks = <T extends FieldValues>(\n form: UseFormReturn<T>,\n) => ({\n registerWithFodselsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"fodselsnummer\")<T>(form, name, options),\n registerWithKortnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kortnummer\")<T>(form, name, options),\n registerWithKontonummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kontonummer\")<T>(form, name, options),\n registerWithTelefonnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"telefonnummer\")<T>(form, name, options),\n registerWithOrganisasjonsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"organisasjonsnummer\")<T>(form, name, options),\n registerWithDateMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"date\")<T>(form, name, options),\n registerWithNumber: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn & { align: \"right\" } =>\n registerWithMask(\"number\")<T>(\n form,\n name,\n options,\n ) as unknown as UseFormRegisterReturn & {\n align: \"right\";\n },\n});\n"],"names":["formatters","date","formatDateString","fodselsnummer","formatFodselsnummer","kortnummer","formatKortnummer","kontonummer","formatKontonummer","telefonnummer","formatTelefonnummer","number","formatNumber","organisasjonsnummer","formatOrganisasjonsnummer","registerWithMask","formatter","form","name","options","onKeyDownCaretPosition","onKeyDownKeyPressed","registerOptions","setValueAs","value","replace","onChange","event","_a","call","onChangeCaretPosition","inputLength","target","length","selectionStart","setValue","partial","newPosition","includes","setSelectionRange","Object","assign","register","extra","onKeyDown","key","align","registerWithFodselsnummerMask","registerWithKortnummerMask","registerWithKontonummerMask","registerWithTelefonnummerMask","registerWithOrganisasjonsnummerMask","registerWithDateMask","registerWithNumber"],"mappings":"0aAiBMA,EAAa,CACfC,KAAMC,EAAAA,iBACNC,cAAeC,EAAAA,oBACfC,WAAYC,EAAAA,iBACZC,YAAaC,EAAAA,kBACbC,cAAeC,EAAAA,oBACfC,OAAQC,EAAAA,aACRC,oBAAqBC,EAAAA,2BASnBC,EACDC,GACD,CACIC,EACAC,EACAC,KAEA,IAAIC,EAAyB,EACzBC,EAAsB,GAiD1B,MAAMC,EAA+C,CACjDC,WAhDgBC,GAAkBA,EAAMC,QAAQ,MAAO,IAiDvDC,SAhDcC,UACd,OAAAC,EAAA,MAAAT,OAAA,EAAAA,EAASO,WAATE,EAAAC,KAAAV,EAAoBQ,GAGpB,IAAIG,EAAwB,EACtB,MAAAC,EAAcJ,EAAMK,OAAOR,MAAMS,OAGH,OAAhCN,EAAMK,OAAOE,iBACbJ,EAAwBH,EAAMK,OAAOE,gBAGpCjB,EAAAkB,SACDjB,EACAlB,EAAWgB,GAAWW,EAAMK,OAAOR,MAAO,CACtCY,SAAS,KAIjB,IAAIC,EAA6B,KAEjC,GAAI,CAAC,SAAU,aAAaC,SAASjB,GAAsB,CAMvDgB,EAAcjB,GAHAA,EAAyBU,EAIhC,MAAAA,GAAAA,EAAwBH,EAAMK,OAAOR,MAAMS,OAAQ,CAM1DI,EAAcP,GAHAH,EAAMK,OAAOR,MAAMS,OAASF,EAI9C,CAEoB,OAAhBM,GACAV,EAAMK,OAAOO,kBACTF,EACAA,OACA,EAAA,GASRlB,GACOqB,OAAAC,OAAOnB,EAAiBH,GAEnC,MAAMuB,EAAWzB,EAAKyB,SAASxB,EAAMI,GAY/BqB,EAAiC,CACnCC,UAVuDjB,IACG,OAArDA,EAAMK,OAA4BE,iBACnCd,EAA0BO,EAAMK,OAC3BE,gBAETb,EAAsBM,EAAMkB,MAQhC,MAAkB,WAAd7B,IACA2B,EAAMG,MAAQ,SAGXN,OAAOC,OAAOC,EAAUC,EAAK,EAI/BI,EAAgChC,EAAiB,iBAEjDiC,EAA6BjC,EAAiB,cAE9CkC,EAA8BlC,EAAiB,eAE/CmC,EAAgCnC,EAAiB,8JAM1DE,IACE,CACF8B,8BAA+B,CAC3B7B,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrD6B,2BAA4B,CACxB9B,EACAC,IAEAJ,EAAiB,aAAjBA,CAAkCE,EAAMC,EAAMC,GAClD8B,4BAA6B,CACzB/B,EACAC,IAEAJ,EAAiB,cAAjBA,CAAmCE,EAAMC,EAAMC,GACnD+B,8BAA+B,CAC3BhC,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrDgC,oCAAqC,CACjCjC,EACAC,IAEAJ,EAAiB,sBAAjBA,CAA2CE,EAAMC,EAAMC,GAC3DiC,qBAAsB,CAClBlC,EACAC,IAEAJ,EAAiB,OAAjBA,CAA4BE,EAAMC,EAAMC,GAC5CkC,mBAAoB,CAChBnC,EACAC,IAEAJ,EAAiB,SAAjBA,CACIE,EACAC,EACAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatValuta.cjs","sources":["../../../../../src/utilities/formatters/valuta/formatValuta.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\nimport { formatNumber, FormatNumberOptions } from \"../util/formatNumber.js\";\nimport { parseNumber } from \"../util/parseNumber.js\";\n\ninterface FormatValutaOptions extends FormatNumberOptions {\n prefix?: string;\n /**\n * For å fjerne suffix, send inn en tom streng\n * @default \"kr\"\n */\n suffix?: string;\n}\n\nconst defaultOptions: FormatValutaOptions = {\n locale: \"no-NB\",\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n suffix: \"kr\",\n};\n\n/**\n * Formaterer et gitt tall som valuta. Som standard vises suffikset \"kr\" og tallet formateres med norsk lokalisasjon\n *\n * @param input Tallet som skal formateres til valuta\n * @param options Valgene fra formatNumber, pluss valg for prefix og suffix\n * @returns Formatert beløp\n */\nexport function formatValuta(input: string | number
|
|
1
|
+
{"version":3,"file":"formatValuta.cjs","sources":["../../../../../src/utilities/formatters/valuta/formatValuta.ts"],"sourcesContent":["import { unicode } from \"../../constants/index.js\";\nimport { formatNumber, FormatNumberOptions } from \"../util/formatNumber.js\";\nimport { parseNumber } from \"../util/parseNumber.js\";\n\ninterface FormatValutaOptions extends FormatNumberOptions {\n prefix?: string;\n /**\n * For å fjerne suffix, send inn en tom streng\n * @default \"kr\"\n */\n suffix?: string;\n}\n\nconst defaultOptions: FormatValutaOptions = {\n locale: \"no-NB\",\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n suffix: \"kr\",\n};\n\n/**\n * Formaterer et gitt tall som valuta. Som standard vises suffikset \"kr\" og tallet formateres med norsk lokalisasjon\n *\n * @param input Tallet som skal formateres til valuta\n * @param options Valgene fra formatNumber, pluss valg for prefix og suffix\n * @returns Formatert beløp\n */\nexport function formatValuta(\n input: string | number,\n options?: FormatValutaOptions,\n) {\n const number = parseNumber(input);\n if (isNaN(number)) {\n return input.toString();\n }\n\n // Dersom tallet ikke er et heltall, pass på å alltid vise to desimaler\n // Antall desimaler kan i alle tilfeller overstyres via options\n const fractionOptions: Intl.NumberFormatOptions = Number.isInteger(number)\n ? {}\n : { minimumFractionDigits: 2, maximumFractionDigits: 2 };\n\n const suffix =\n options?.suffix !== undefined ? options.suffix : defaultOptions.suffix;\n const { prefix, ...formatOptions } = {\n ...defaultOptions,\n ...fractionOptions,\n ...options,\n };\n\n const prefixString = prefix?.length ? `${prefix}${unicode.nbsp}` : \"\";\n const suffixString = suffix?.length ? `${unicode.nbsp}${suffix}` : \"\";\n const formattedNumber = formatNumber(number, formatOptions);\n\n return `${prefixString}${formattedNumber}${suffixString}`;\n}\n"],"names":["defaultOptions","locale","minimumFractionDigits","maximumFractionDigits","suffix","input","options","number","parseNumber","isNaN","toString","fractionOptions","Number","isInteger","prefix","formatOptions","prefixString","length","unicode.nbsp","suffixString","formatNumber"],"mappings":"6MAaMA,EAAsC,CACxCC,OAAQ,QACRC,sBAAuB,EACvBC,sBAAuB,EACvBC,OAAQ,2BAUI,SACZC,EACAC,GAEM,MAAAC,EAASC,cAAYH,GACvB,GAAAI,MAAMF,GACN,OAAOF,EAAMK,WAKX,MAAAC,EAA4CC,OAAOC,UAAUN,GAC7D,GACA,CAAEL,sBAAuB,EAAGC,sBAAuB,GAEnDC,OACkB,KAApB,MAAAE,OAAA,EAAAA,EAASF,QAAuBE,EAAQF,OAASJ,EAAeI,QAC5DU,OAAAA,KAAWC,GAAkB,IAC9Bf,KACAW,KACAL,GAGDU,EAAe,MAAAF,GAAAA,EAAQG,OAAS,GAAGH,IAASI,EAAAA,OAAiB,GAC7DC,EAAe,MAAAf,GAAAA,EAAQa,OAAS,GAAGC,EAAAA,OAAed,IAAW,GAGnE,MAAO,GAAGY,IAFcI,EAAAA,aAAab,EAAQQ,KAEFI,GAC/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getThemeAndDensity.cjs","sources":["../../../src/utilities/getThemeAndDensity.ts"],"sourcesContent":["/*\n * For komponenter som mountes utenfor roten av applikasjonen vil styring av theme og density\n * via data-attributter satt på rot ikke fungere. Denne util'en kan brukes av slike komponenter\n * for å finne riktige verdier ved å sende inn et element som er mountet innenfor applikasjonen\n */\nexport const getThemeAndDensity = (element: Element | undefined): { theme?: string; density?: string } => {\n if (!element) return {};\n\n const computedStyles = getComputedStyle(element);\n\n // Sett theme til dark hvis bakgrunnsfargen er mørkere enn 50% av hvit\n // dette gir oss slingringsmonn i tilfelle verdien av Jøkuls bakgrunnsfarge endres\n const theme =\n parseInt(computedStyles.getPropertyValue(\"--jkl-background-color\").replace(\"#\", \"\")
|
|
1
|
+
{"version":3,"file":"getThemeAndDensity.cjs","sources":["../../../src/utilities/getThemeAndDensity.ts"],"sourcesContent":["/*\n * For komponenter som mountes utenfor roten av applikasjonen vil styring av theme og density\n * via data-attributter satt på rot ikke fungere. Denne util'en kan brukes av slike komponenter\n * for å finne riktige verdier ved å sende inn et element som er mountet innenfor applikasjonen\n */\nexport const getThemeAndDensity = (\n element: Element | undefined,\n): { theme?: string; density?: string } => {\n if (!element) return {};\n\n const computedStyles = getComputedStyle(element);\n\n // Sett theme til dark hvis bakgrunnsfargen er mørkere enn 50% av hvit\n // dette gir oss slingringsmonn i tilfelle verdien av Jøkuls bakgrunnsfarge endres\n const theme =\n parseInt(\n computedStyles\n .getPropertyValue(\"--jkl-background-color\")\n .replace(\"#\", \"\"),\n 16,\n ) <\n 0xffffff / 2\n ? \"dark\"\n : \"light\";\n\n const density =\n computedStyles.getPropertyValue(\"--jkl-density\") === '\"compact\"'\n ? \"compact\"\n : \"comfortable\";\n\n return { theme, density };\n};\n"],"names":["element","computedStyles","getComputedStyle","theme","parseInt","getPropertyValue","replace","density"],"mappings":"2GAMIA,IAEI,IAACA,EAAS,MAAO,GAEf,MAAAC,EAAiBC,iBAAiBF,GAoBjC,MAAA,CAAEG,MAfLC,SACIH,EACKI,iBAAiB,0BACjBC,QAAQ,IAAK,IAClB,IAEJ,UACM,OACA,QAOMC,QAJyC,cAArDN,EAAeI,iBAAiB,iBAC1B,UACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlotComponent.cjs","sources":["../../../../src/utilities/polymorphism/SlotComponent.tsx"],"sourcesContent":["import React from \"react\";\nimport { mergeProps } from \"./mergeProps.js\";\nimport { mergeRefs } from \"./mergeRefs.js\";\n\nexport type SlotComponentProps = React.HTMLAttributes<HTMLElement> & {\n children: React.ReactElement | false | null;\n};\n\nexport const SlotComponent = React.forwardRef<HTMLElement, SlotComponentProps>(function SlotComponent(
|
|
1
|
+
{"version":3,"file":"SlotComponent.cjs","sources":["../../../../src/utilities/polymorphism/SlotComponent.tsx"],"sourcesContent":["import React from \"react\";\nimport { mergeProps } from \"./mergeProps.js\";\nimport { mergeRefs } from \"./mergeRefs.js\";\n\nexport type SlotComponentProps = React.HTMLAttributes<HTMLElement> & {\n children: React.ReactElement | false | null;\n};\n\nexport const SlotComponent = React.forwardRef<HTMLElement, SlotComponentProps>(\n function SlotComponent({ children, ...slotProps }, forwardedRef) {\n if (React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement, {\n ...mergeProps(slotProps, children.props),\n ref: mergeRefs(forwardedRef, (children as any).ref),\n });\n }\n\n if (React.Children.count(children) > 1) {\n throw new Error(\n \"Du kan kun bruke ett enkelt React-element som children i en komponent med asChild\",\n );\n }\n\n return null;\n },\n);\n"],"names":["SlotComponent","React","forwardRef","children","slotProps","forwardedRef","isValidElement","cloneElement","mergeProps","props","ref","mergeRefs","Children","count","Error"],"mappings":"oKAQaA,EAAgBC,EAAMC,YAC/B,UAAyBC,SAAAA,KAAaC,GAAaC,GAC3C,GAAAJ,EAAMK,eAAeH,GACd,OAAAF,EAAMM,aAAaJ,EAAgC,IACnDK,aAAWJ,EAAWD,EAASM,OAClCC,IAAKC,EAAAA,UAAUN,EAAeF,EAAiBO,OAIvD,GAAIT,EAAMW,SAASC,MAAMV,GAAY,EACjC,MAAM,IAAIW,MACN,qFAID,OAAA,IACX"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { AsChildProps } from './as-child.cjs';
|
|
2
2
|
export { mergeProps } from './mergeProps.cjs';
|
|
3
3
|
export { mergeRefs, type PossibleRef } from './mergeRefs.cjs';
|
|
4
|
-
export type { PolymorphicProps, PolymorphicPropsWithRef, PolymorphicRef } from './polymorphism.cjs';
|
|
4
|
+
export type { PolymorphicProps, PolymorphicPropsWithRef, PolymorphicRef, } from './polymorphism.cjs';
|
|
5
5
|
export { SlotComponent, type SlotComponentProps } from './SlotComponent.cjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeProps.cjs","sources":["../../../../src/utilities/polymorphism/mergeProps.ts"],"sourcesContent":["export function mergeProps(baseProps: Record<string, any
|
|
1
|
+
{"version":3,"file":"mergeProps.cjs","sources":["../../../../src/utilities/polymorphism/mergeProps.ts"],"sourcesContent":["export function mergeProps(\n baseProps: Record<string, any>,\n addedProps: Record<string, any>,\n) {\n const overrides = { ...addedProps };\n\n for (const prop in addedProps) {\n const basePropValue = baseProps[prop];\n const addedPropValue = addedProps[prop];\n\n if (/^on[A-Z]/.test(prop)) {\n // Propen er en event handler. Slå sammen hvis\n // den finnes på både base og added\n if (basePropValue && addedPropValue) {\n overrides[prop] = (...args: unknown[]) => {\n addedPropValue(...args);\n basePropValue(...args);\n };\n } else if (basePropValue) {\n overrides[prop] = basePropValue;\n }\n }\n\n if (prop === \"style\") {\n overrides[prop] = { ...basePropValue, ...addedPropValue };\n }\n\n if (prop === \"className\") {\n overrides[prop] = [basePropValue, addedPropValue]\n .filter(Boolean)\n .join(\" \");\n }\n }\n\n return { ...baseProps, ...overrides };\n}\n"],"names":["baseProps","addedProps","overrides","prop","basePropValue","addedPropValue","test","args","filter","Boolean","join"],"mappings":"mGAAgB,SACZA,EACAC,GAEM,MAAAC,EAAY,IAAKD,GAEvB,IAAWE,MAAAA,KAAQF,EAAY,CACrB,MAAAG,EAAgBJ,EAAUG,GAC1BE,EAAiBJ,EAAWE,GAE9B,WAAWG,KAAKH,KAGZC,GAAiBC,EACPH,EAAAC,GAAQ,IAAII,KAClBF,KAAkBE,GAClBH,KAAiBG,EAAI,EAElBH,IACPF,EAAUC,GAAQC,IAIb,UAATD,IACAD,EAAUC,GAAQ,IAAKC,KAAkBC,IAGhC,cAATF,IACUD,EAAAC,GAAQ,CAACC,EAAeC,GAC7BG,OAAOC,SACPC,KAAK,KAElB,CAEA,MAAO,IAAKV,KAAcE,EAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeRefs.cjs","sources":["../../../../src/utilities/polymorphism/mergeRefs.ts"],"sourcesContent":["import React from \"react\";\n\nexport type PossibleRef<T> = React.LegacyRef<T> | undefined;\n\nexport function mergeRefs<T>(...possibleRefs: PossibleRef<T>[]): React.RefCallback<T> {\n return (instance) =>\n possibleRefs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(instance);\n } else if (ref !== null && ref !== undefined) {\n (ref as React.MutableRefObject<T | null>).current = instance;\n }\n });\n}\n"],"names":["possibleRefs","instance","forEach","ref","current"],"mappings":"kGAIO,
|
|
1
|
+
{"version":3,"file":"mergeRefs.cjs","sources":["../../../../src/utilities/polymorphism/mergeRefs.ts"],"sourcesContent":["import React from \"react\";\n\nexport type PossibleRef<T> = React.LegacyRef<T> | undefined;\n\nexport function mergeRefs<T>(\n ...possibleRefs: PossibleRef<T>[]\n): React.RefCallback<T> {\n return (instance) =>\n possibleRefs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(instance);\n } else if (ref !== null && ref !== undefined) {\n (ref as React.MutableRefObject<T | null>).current = instance;\n }\n });\n}\n"],"names":["possibleRefs","instance","forEach","ref","current"],"mappings":"kGAIO,YACAA,GAEH,OAAQC,GACJD,EAAaE,SAASC,IACC,mBAARA,EACPA,EAAIF,GACW,MAARE,IACNA,EAAyCC,QAAUH,EACxD,GAEZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabListener.cjs","sources":["../../../src/utilities/tabListener.ts"],"sourcesContent":["let mousenavigation = false;\nlet touchnavigation = false;\nlet touchEventFired = false;\n\nconst listeners = {\n mousedown: handleMouseDown as EventListener,\n keydown: handleKeydown as EventListener,\n touchstart: handleTouchStart as EventListener,\n};\n\nfunction removeAllListeners() {\n (Object.keys(listeners) as Array<keyof typeof listeners>).forEach((listenerType) => {\n
|
|
1
|
+
{"version":3,"file":"tabListener.cjs","sources":["../../../src/utilities/tabListener.ts"],"sourcesContent":["let mousenavigation = false;\nlet touchnavigation = false;\nlet touchEventFired = false;\n\nconst listeners = {\n mousedown: handleMouseDown as EventListener,\n keydown: handleKeydown as EventListener,\n touchstart: handleTouchStart as EventListener,\n};\n\nfunction removeAllListeners() {\n (Object.keys(listeners) as Array<keyof typeof listeners>).forEach(\n (listenerType) => {\n document.removeEventListener(listenerType, listeners[listenerType]);\n },\n );\n}\n\nfunction addListener(listenerType: keyof typeof listeners) {\n document.addEventListener(listenerType, listeners[listenerType]);\n}\n\nfunction handleMouseDown() {\n if (!mousenavigation && !touchEventFired) {\n mousenavigation = true;\n touchnavigation = false;\n const htmlElement = document.querySelector(\"html\");\n htmlElement?.setAttribute(\"data-mousenavigation\", \"true\");\n htmlElement?.removeAttribute(\"data-touchnavigation\");\n\n // Reset listeners\n removeAllListeners();\n addListener(\"touchstart\");\n addListener(\"keydown\");\n }\n}\n\nfunction handleKeydown(event: KeyboardEvent) {\n if (event.key === \"Tab\") {\n const htmlElement = document.querySelector(\"html\");\n removeAllListeners();\n htmlElement?.removeAttribute(\"data-mousenavigation\");\n htmlElement?.removeAttribute(\"data-touchnavigation\");\n mousenavigation = false;\n touchnavigation = false;\n\n // Reset listeners\n addListener(\"touchstart\");\n addListener(\"mousedown\");\n }\n}\n\nfunction handleTouchStart() {\n if (!touchnavigation) {\n mousenavigation = false;\n touchnavigation = true;\n const htmlElement = document.querySelector(\"html\");\n htmlElement?.setAttribute(\"data-touchnavigation\", \"true\");\n htmlElement?.removeAttribute(\"data-mousenavigation\");\n\n // Reset listeners\n removeAllListeners();\n addListener(\"touchstart\");\n addListener(\"keydown\");\n addListener(\"mousedown\");\n }\n\n // Most touch devices fire both touch and mouse events on touch (in that order)\n // see https://w3c.github.io/touch-events/#mouse-events\n // Set a check variable to avoid resetting the data-attribute:\n touchEventFired = true;\n setTimeout(() => {\n touchEventFired = false;\n }, 150); // Yes, it can take this long between the events\n}\n\nexport function initTabListener(): void {\n if (typeof document !== \"undefined\") {\n addListener(\"touchstart\");\n addListener(\"mousedown\");\n }\n}\n"],"names":["mousenavigation","touchnavigation","touchEventFired","listeners","mousedown","htmlElement","document","querySelector","setAttribute","removeAttribute","removeAllListeners","addListener","keydown","event","key","touchstart","setTimeout","Object","keys","forEach","listenerType","removeEventListener","addEventListener"],"mappings":"gFAAA,IAAIA,GAAkB,EAClBC,GAAkB,EAClBC,GAAkB,EAEtB,MAAMC,EAAY,CACdC,UAiBJ,WACQ,IAACJ,IAAoBE,EAAiB,CACpBF,GAAA,EACAC,GAAA,EACZ,MAAAI,EAAcC,SAASC,cAAc,QAC9B,MAAAF,GAAAA,EAAAG,aAAa,uBAAwB,QAClD,MAAAH,GAAAA,EAAaI,gBAAgB,wBAGVC,IACnBC,EAAY,cACZA,EAAY,UAChB,CACJ,EA7BIC,QA+BJ,SAAuBC,GACf,GAAc,QAAdA,EAAMC,IAAe,CACf,MAAAT,EAAcC,SAASC,cAAc,QACxBG,IACnB,MAAAL,GAAAA,EAAaI,gBAAgB,wBAC7B,MAAAJ,GAAAA,EAAaI,gBAAgB,wBACXT,GAAA,EACAC,GAAA,EAGlBU,EAAY,cACZA,EAAY,YAChB,CACJ,EA3CII,WA6CJ,WACI,IAAKd,EAAiB,CACAD,GAAA,EACAC,GAAA,EACZ,MAAAI,EAAcC,SAASC,cAAc,QAC9B,MAAAF,GAAAA,EAAAG,aAAa,uBAAwB,QAClD,MAAAH,GAAAA,EAAaI,gBAAgB,wBAGVC,IACnBC,EAAY,cACZA,EAAY,WACZA,EAAY,YAChB,CAKkBT,GAAA,EAClBc,YAAW,KACWd,GAAA,CAAA,GACnB,IACP,GAhEA,SAASQ,IACJO,OAAOC,KAAKf,GAA6CgB,SACrDC,IACGd,SAASe,oBAAoBD,EAAcjB,EAAUiB,GAAa,GAG9E,CAEA,SAAST,EAAYS,GACjBd,SAASgB,iBAAiBF,EAAcjB,EAAUiB,GACtD,yBAwDO,kBACQd,SAAa,MACpBK,EAAY,cACZA,EAAY,aAEpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasMinimumWords.cjs","sources":["../../../../../src/utilities/validators/hasMinimumWords/hasMinimumWords.ts"],"sourcesContent":["export interface HasMinimumWordsOptions {\n minimumWords?: number;\n}\n\n/**\n * Sjekk at verdien har minimum et gitt antall ord.\n * @param value Verdien som skal valideres\n * @param options Objekt med konfigurasjon for minimum antall ord som kreves\n * @returns Om verdien har minimum antall ord\n */\nexport const hasMinimumWords = (value: string
|
|
1
|
+
{"version":3,"file":"hasMinimumWords.cjs","sources":["../../../../../src/utilities/validators/hasMinimumWords/hasMinimumWords.ts"],"sourcesContent":["export interface HasMinimumWordsOptions {\n minimumWords?: number;\n}\n\n/**\n * Sjekk at verdien har minimum et gitt antall ord.\n * @param value Verdien som skal valideres\n * @param options Objekt med konfigurasjon for minimum antall ord som kreves\n * @returns Om verdien har minimum antall ord\n */\nexport const hasMinimumWords = (\n value: string,\n options?: HasMinimumWordsOptions,\n): boolean =>\n value.split(\" \").filter((str) => ![\"\", \" \"].includes(str)).length >=\n (options?.minimumWords || 2);\n"],"names":["value","options","split","filter","str","includes","length","minimumWords"],"mappings":"wGAU+B,CAC3BA,EACAC,IAEAD,EAAME,MAAM,KAAKC,QAAQC,IAAS,CAAC,GAAI,KAAKC,SAASD,KAAME,UAC1D,MAAAL,OAAAA,EAAAA,EAASM,eAAgB"}
|
package/build/cjs/utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasNoIllegalCharacters.cjs","sources":["../../../../../src/utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.ts"],"sourcesContent":["const ILLEGAL_CHARS_REGEX = /[[\\]{}%¤/()$@£€^~*?_;:\"]+/;\nexport const ILLEGAL_CHARS_STRING = '[]{}%¤/()$@£€^~*?_;:\"';\n\n/**\n * Sjekker at verdien ikke har spesialtegn som ikke er tillatt.\n * @param value Verdien som skal valideres\n * @returns Om verdien er fri for spesialtegn som ikke er tillatt\n */\nexport const hasNoIllegalCharacters = (value: string): boolean
|
|
1
|
+
{"version":3,"file":"hasNoIllegalCharacters.cjs","sources":["../../../../../src/utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.ts"],"sourcesContent":["const ILLEGAL_CHARS_REGEX = /[[\\]{}%¤/()$@£€^~*?_;:\"]+/;\nexport const ILLEGAL_CHARS_STRING = '[]{}%¤/()$@£€^~*?_;:\"';\n\n/**\n * Sjekker at verdien ikke har spesialtegn som ikke er tillatt.\n * @param value Verdien som skal valideres\n * @returns Om verdien er fri for spesialtegn som ikke er tillatt\n */\nexport const hasNoIllegalCharacters = (value: string): boolean =>\n !ILLEGAL_CHARS_REGEX.test(value);\n"],"names":["ILLEGAL_CHARS_REGEX","value","test"],"mappings":"gFAAA,MAAMA,EAAsB,yDACQ,uDAOGC,IAClCD,EAAoBE,KAAKD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isValidChassisnummer.cjs","sources":["../../../../../src/utilities/validators/isValidChassisnummer/isValidChassisnummer.ts"],"sourcesContent":["export const CHASSISNR_REGEX = /^[a-zA-Z0-9]{9,17}$/;\n\n/**\n * Sjekker om verdien validerer som et gyldig chassisnummer.\n * @param value Verdien som skal valideres\n * @returns Om verdien matcher regex for chassisnummer\n */\nexport const isValidChassisnummer = (value: string): boolean
|
|
1
|
+
{"version":3,"file":"isValidChassisnummer.cjs","sources":["../../../../../src/utilities/validators/isValidChassisnummer/isValidChassisnummer.ts"],"sourcesContent":["export const CHASSISNR_REGEX = /^[a-zA-Z0-9]{9,17}$/;\n\n/**\n * Sjekker om verdien validerer som et gyldig chassisnummer.\n * @param value Verdien som skal valideres\n * @returns Om verdien matcher regex for chassisnummer\n */\nexport const isValidChassisnummer = (value: string): boolean =>\n CHASSISNR_REGEX.test(value);\n"],"names":["CHASSISNR_REGEX","value","test"],"mappings":"gFAAO,MAAMA,EAAkB,6EAOMC,GACjCD,EAAgBE,KAAKD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isValidEpost.cjs","sources":["../../../../../src/utilities/validators/isValidEpost/isValidEpost.ts"],"sourcesContent":["export const EMAIL_REGEX
|
|
1
|
+
{"version":3,"file":"isValidEpost.cjs","sources":["../../../../../src/utilities/validators/isValidEpost/isValidEpost.ts"],"sourcesContent":["export const EMAIL_REGEX =\n /^[a-zA-ZæøåÆØÅ0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-ZæøåÆØÅ0-9-]+(?:\\.[a-zA-Z0-9-]+)+$/;\n\n/**\n * Sjekker om verdien validerer som en gyldig epostadresse.\n * @param value Verdien som skal valideres\n * @returns Om verdien matcher regex for epost\n */\nexport const isValidEpost = (value: string): boolean => EMAIL_REGEX.test(value);\n"],"names":["EMAIL_REGEX","value","test"],"mappings":"gFAAO,MAAMA,EACT,8HAOyBC,GAA2BD,EAAYE,KAAKD"}
|