@helsenorge/designsystem-react 15.0.0-beta.0 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (712) hide show
  1. package/lib/AnchorLink.js.map +1 -1
  2. package/lib/AsChildSlot.js.map +1 -1
  3. package/lib/Avatar.js.map +1 -1
  4. package/lib/Badge.js.map +1 -1
  5. package/lib/Button.js.map +1 -1
  6. package/lib/CHANGELOG.md +61 -0
  7. package/lib/Checkbox.js +25 -48
  8. package/lib/Checkbox.js.map +1 -1
  9. package/lib/Checkbox2.js +69 -0
  10. package/lib/Checkbox2.js.map +1 -0
  11. package/lib/CheckboxMarker.js +64 -0
  12. package/lib/CheckboxMarker.js.map +1 -0
  13. package/lib/Chip.js.map +1 -1
  14. package/lib/Close.js.map +1 -1
  15. package/lib/DictionaryTrigger.js.map +1 -1
  16. package/lib/Drawer.js +2 -2
  17. package/lib/Drawer.js.map +1 -1
  18. package/lib/DrawerNavigation.js.map +1 -1
  19. package/lib/Duolist.js.map +1 -1
  20. package/lib/ElementHeader.js.map +1 -1
  21. package/lib/ElementHeaderText.js.map +1 -1
  22. package/lib/ErrorBoundary.js.map +1 -1
  23. package/lib/ErrorWrapper.js.map +1 -1
  24. package/lib/Expander.js.map +1 -1
  25. package/lib/FilterButton.js.map +1 -1
  26. package/lib/FilterButtonAndChipsWrapper.js.map +1 -1
  27. package/lib/FilterDrawer.js +20 -10
  28. package/lib/FilterDrawer.js.map +1 -1
  29. package/lib/FilterLinkList.js.map +1 -1
  30. package/lib/FilterOverviewLinkList.js.map +1 -1
  31. package/lib/FilterOverviewSearch.js.map +1 -1
  32. package/lib/FilterResultCountAndSortWrapper.js.map +1 -1
  33. package/lib/FilterSearch.js.map +1 -1
  34. package/lib/FilterSort.js.map +1 -1
  35. package/lib/FilterStateWrapper.js.map +1 -1
  36. package/lib/FormFieldTag.js.map +1 -1
  37. package/lib/FormGroup.js +8 -6
  38. package/lib/FormGroup.js.map +1 -1
  39. package/lib/FormLayout.js.map +1 -1
  40. package/lib/HelpDetails.js.map +1 -1
  41. package/lib/HelpTriggerIcon.js.map +1 -1
  42. package/lib/HelpTriggerStandalone.js.map +1 -1
  43. package/lib/HighlightPanel.js.map +1 -1
  44. package/lib/Highlighter.js.map +1 -1
  45. package/lib/HorizontalScroll.js.map +1 -1
  46. package/lib/Icon.js.map +1 -1
  47. package/lib/Illustration.js +1 -1
  48. package/lib/Illustration.js.map +1 -1
  49. package/lib/InfoTeaser.js.map +1 -1
  50. package/lib/Input.js.map +1 -1
  51. package/lib/LazyIcon.js +1 -1
  52. package/lib/LazyIcon.js.map +1 -1
  53. package/lib/LazyIllustration.js +6 -2
  54. package/lib/LazyIllustration.js.map +1 -1
  55. package/lib/LinkList.js.map +1 -1
  56. package/lib/List.js.map +1 -1
  57. package/lib/ListEditMode.js.map +1 -1
  58. package/lib/LoaderSpinner.js +61 -0
  59. package/lib/LoaderSpinner.js.map +1 -0
  60. package/lib/MaxCharacters.js.map +1 -1
  61. package/lib/NotificationBadge.js.map +1 -1
  62. package/lib/PanelTitle.js.map +1 -1
  63. package/lib/PopOver.js.map +1 -1
  64. package/lib/Radio.js +74 -0
  65. package/lib/Radio.js.map +1 -0
  66. package/lib/RadioButton.js +84 -0
  67. package/lib/RadioButton.js.map +1 -0
  68. package/lib/RadioMarker.js +35 -0
  69. package/lib/RadioMarker.js.map +1 -0
  70. package/lib/Select.js.map +1 -1
  71. package/lib/SingleSelectItem.js.map +1 -1
  72. package/lib/Slider.js.map +1 -1
  73. package/lib/Spacer.js.map +1 -1
  74. package/lib/StatusDot.js.map +1 -1
  75. package/lib/StatusDotList.js.map +1 -1
  76. package/lib/StepButtons.js.map +1 -1
  77. package/lib/TabList.js.map +1 -1
  78. package/lib/TabPanel.js.map +1 -1
  79. package/lib/TableBody.js +1 -1
  80. package/lib/TableBody.js.map +1 -1
  81. package/lib/TableCell.js.map +1 -1
  82. package/lib/TableExpandedRow.js.map +1 -1
  83. package/lib/TableExpanderCell.js.map +1 -1
  84. package/lib/TableHead.js +1 -1
  85. package/lib/TableHead.js.map +1 -1
  86. package/lib/TableHeadCell.js.map +1 -1
  87. package/lib/TableRow.js +1 -1
  88. package/lib/TableRow.js.map +1 -1
  89. package/lib/Textarea.js.map +1 -1
  90. package/lib/Title.js.map +1 -1
  91. package/lib/Toast.js.map +1 -1
  92. package/lib/VisualCheckbox.js +79 -0
  93. package/lib/VisualCheckbox.js.map +1 -0
  94. package/lib/VisualRadio.js +64 -0
  95. package/lib/VisualRadio.js.map +1 -0
  96. package/lib/__mocks__/IntersectionObserver.js.map +1 -1
  97. package/lib/__mocks__/MutationObserver.js.map +1 -1
  98. package/lib/__mocks__/ResizeObserver.js.map +1 -1
  99. package/lib/__mocks__/matchMedia.js +3 -2
  100. package/lib/__mocks__/matchMedia.js.map +1 -1
  101. package/lib/__mocks__/useLayoutEvent.js.map +1 -1
  102. package/lib/__mocks__/useOutsideEvent.js.map +1 -1
  103. package/lib/__mocks__/usePseudoClasses.js.map +1 -1
  104. package/lib/__mocks__/useSize.js.map +1 -1
  105. package/lib/__mocks__/uuid.js.map +1 -1
  106. package/lib/components/ArticleTeaser/index.js.map +1 -1
  107. package/lib/components/Checkbox/CheckboxMarker/CheckboxMarker.d.ts +20 -0
  108. package/lib/components/Checkbox/CheckboxMarker/styles.module.scss +309 -0
  109. package/lib/components/Checkbox/CheckboxMarker/styles.module.scss.d.ts +25 -0
  110. package/lib/components/Checkbox/styles.module.scss +9 -269
  111. package/lib/components/Checkbox/styles.module.scss.d.ts +1 -17
  112. package/lib/components/Dropdown/index.js.map +1 -1
  113. package/lib/components/DropdownOld/index.js.map +1 -1
  114. package/lib/components/EmptyState/index.js.map +1 -1
  115. package/lib/components/ExpanderHierarchy/index.js.map +1 -1
  116. package/lib/components/ExpanderList/index.js.map +1 -1
  117. package/lib/components/EyebrowHeader/index.js.map +1 -1
  118. package/lib/components/FavoriteButton/index.js.map +1 -1
  119. package/lib/components/Filter/FilterDrawer/FilterDrawer.d.ts +4 -2
  120. package/lib/components/Filter/FilterDrawer/styles.module.scss +7 -0
  121. package/lib/components/Filter/FilterDrawer/styles.module.scss.d.ts +1 -0
  122. package/lib/components/Filter/FilterSort/styles.module.scss +2 -0
  123. package/lib/components/Filter/LoaderSpinner/LoaderSpinner.d.ts +9 -0
  124. package/lib/components/Filter/LoaderSpinner/index.d.ts +3 -0
  125. package/lib/components/Filter/LoaderSpinner/index.js +7 -0
  126. package/lib/components/Filter/LoaderSpinner/index.js.map +1 -0
  127. package/lib/components/Filter/LoaderSpinner/styles.module.scss +27 -0
  128. package/lib/components/Filter/LoaderSpinner/styles.module.scss.d.ts +11 -0
  129. package/lib/components/Filter/index.d.ts +2 -0
  130. package/lib/components/Filter/index.js +2 -1
  131. package/lib/components/Filter/index.js.map +1 -1
  132. package/lib/components/FormGroup/FormGroup.d.ts +2 -0
  133. package/lib/components/HelpBubble/index.js.map +1 -1
  134. package/lib/components/HelpDrawer/index.js.map +1 -1
  135. package/lib/components/HelpExpanderInline/index.js.map +1 -1
  136. package/lib/components/HelpExpanderStandalone/index.js.map +1 -1
  137. package/lib/components/HelpPanel/index.js.map +1 -1
  138. package/lib/components/HelpTeaser/index.js.map +1 -1
  139. package/lib/components/HelpTooltip/index.js.map +1 -1
  140. package/lib/components/HelpTriggerInline/index.js.map +1 -1
  141. package/lib/components/Icons/ActiveMonitoring.js.map +1 -1
  142. package/lib/components/Icons/AcupunctureBack.js.map +1 -1
  143. package/lib/components/Icons/AdditionalIconInformation.js.map +1 -1
  144. package/lib/components/Icons/AlarmClock.js.map +1 -1
  145. package/lib/components/Icons/AlertSignFill.js.map +1 -1
  146. package/lib/components/Icons/AlertSignStroke.js.map +1 -1
  147. package/lib/components/Icons/Amputation.js.map +1 -1
  148. package/lib/components/Icons/Anxiety.js.map +1 -1
  149. package/lib/components/Icons/Apple.js.map +1 -1
  150. package/lib/components/Icons/Archive.js.map +1 -1
  151. package/lib/components/Icons/ArmFlexing.js.map +1 -1
  152. package/lib/components/Icons/ArrowDown.js.map +1 -1
  153. package/lib/components/Icons/ArrowLeft.js.map +1 -1
  154. package/lib/components/Icons/ArrowRight.js.map +1 -1
  155. package/lib/components/Icons/ArrowUp.js.map +1 -1
  156. package/lib/components/Icons/ArrowUpRight.js.map +1 -1
  157. package/lib/components/Icons/Attachment.js.map +1 -1
  158. package/lib/components/Icons/Atv.js.map +1 -1
  159. package/lib/components/Icons/Avatar.js.map +1 -1
  160. package/lib/components/Icons/AwakePersonOnPillow.js.map +1 -1
  161. package/lib/components/Icons/Baby.js.map +1 -1
  162. package/lib/components/Icons/BandAid.js.map +1 -1
  163. package/lib/components/Icons/BeerAndPills.js.map +1 -1
  164. package/lib/components/Icons/Bell.js.map +1 -1
  165. package/lib/components/Icons/Bike.js.map +1 -1
  166. package/lib/components/Icons/BirthControl.js.map +1 -1
  167. package/lib/components/Icons/BirthdayCake.js.map +1 -1
  168. package/lib/components/Icons/Boat.js.map +1 -1
  169. package/lib/components/Icons/Body.js.map +1 -1
  170. package/lib/components/Icons/Braille.js.map +1 -1
  171. package/lib/components/Icons/Brain.js.map +1 -1
  172. package/lib/components/Icons/BreastReconstruction.js.map +1 -1
  173. package/lib/components/Icons/BreastRemoval.js.map +1 -1
  174. package/lib/components/Icons/Breasts.js.map +1 -1
  175. package/lib/components/Icons/BrokenHeart.js.map +1 -1
  176. package/lib/components/Icons/BrokenPuzzle.js.map +1 -1
  177. package/lib/components/Icons/Bus.js.map +1 -1
  178. package/lib/components/Icons/Calendar.js.map +1 -1
  179. package/lib/components/Icons/CalendarChange.js.map +1 -1
  180. package/lib/components/Icons/CalendarCheck.js.map +1 -1
  181. package/lib/components/Icons/CalendarEvent.js.map +1 -1
  182. package/lib/components/Icons/CalendarSave.js.map +1 -1
  183. package/lib/components/Icons/Cancer.js.map +1 -1
  184. package/lib/components/Icons/Candle.js.map +1 -1
  185. package/lib/components/Icons/Car.js.map +1 -1
  186. package/lib/components/Icons/Carton.js.map +1 -1
  187. package/lib/components/Icons/Change.js.map +1 -1
  188. package/lib/components/Icons/Check.js.map +1 -1
  189. package/lib/components/Icons/CheckFill.js.map +1 -1
  190. package/lib/components/Icons/CheckOutline.js.map +1 -1
  191. package/lib/components/Icons/Chest.js.map +1 -1
  192. package/lib/components/Icons/ChevronDown.js.map +1 -1
  193. package/lib/components/Icons/ChevronLeft.js.map +1 -1
  194. package/lib/components/Icons/ChevronRight.js.map +1 -1
  195. package/lib/components/Icons/ChevronUp.js.map +1 -1
  196. package/lib/components/Icons/ChevronsDown.js.map +1 -1
  197. package/lib/components/Icons/ChevronsUp.js.map +1 -1
  198. package/lib/components/Icons/ChildPlaying.js.map +1 -1
  199. package/lib/components/Icons/Cigarette.js.map +1 -1
  200. package/lib/components/Icons/Coins.js.map +1 -1
  201. package/lib/components/Icons/Contacts.js.map +1 -1
  202. package/lib/components/Icons/Copy.js.map +1 -1
  203. package/lib/components/Icons/CoronaCertificate.js.map +1 -1
  204. package/lib/components/Icons/Coronavirus.js.map +1 -1
  205. package/lib/components/Icons/Cough.js.map +1 -1
  206. package/lib/components/Icons/CreditCard.js.map +1 -1
  207. package/lib/components/Icons/CriticalHealthInfo.js.map +1 -1
  208. package/lib/components/Icons/Cross.js.map +1 -1
  209. package/lib/components/Icons/DataExchange.js.map +1 -1
  210. package/lib/components/Icons/DataReceived.js.map +1 -1
  211. package/lib/components/Icons/DataSent.js.map +1 -1
  212. package/lib/components/Icons/Depression.js.map +1 -1
  213. package/lib/components/Icons/DigestiveSystem.js.map +1 -1
  214. package/lib/components/Icons/Dizzy.js.map +1 -1
  215. package/lib/components/Icons/Documents.js.map +1 -1
  216. package/lib/components/Icons/Dog.js.map +1 -1
  217. package/lib/components/Icons/DonorCard.js.map +1 -1
  218. package/lib/components/Icons/DotAttachment.js.map +1 -1
  219. package/lib/components/Icons/DotCheckmark.js.map +1 -1
  220. package/lib/components/Icons/DotCircleArrows.js.map +1 -1
  221. package/lib/components/Icons/DotDot.js.map +1 -1
  222. package/lib/components/Icons/DotExclamationMark.js.map +1 -1
  223. package/lib/components/Icons/DotFill.js.map +1 -1
  224. package/lib/components/Icons/DotGroup.js.map +1 -1
  225. package/lib/components/Icons/DotHalfDisc.js.map +1 -1
  226. package/lib/components/Icons/DotInfo.js.map +1 -1
  227. package/lib/components/Icons/DotLogin.js.map +1 -1
  228. package/lib/components/Icons/DotLookingGlass.js.map +1 -1
  229. package/lib/components/Icons/DotNoAccess.js.map +1 -1
  230. package/lib/components/Icons/DotNoEye.js.map +1 -1
  231. package/lib/components/Icons/DotOutline.js.map +1 -1
  232. package/lib/components/Icons/DotPencil.js.map +1 -1
  233. package/lib/components/Icons/DotQuestionMark.js.map +1 -1
  234. package/lib/components/Icons/DotTriangle.js.map +1 -1
  235. package/lib/components/Icons/DotX.js.map +1 -1
  236. package/lib/components/Icons/Download.js.map +1 -1
  237. package/lib/components/Icons/Draft.js.map +1 -1
  238. package/lib/components/Icons/Drag.js.map +1 -1
  239. package/lib/components/Icons/EChat.js.map +1 -1
  240. package/lib/components/Icons/Ear.js.map +1 -1
  241. package/lib/components/Icons/EarDeaf.js.map +1 -1
  242. package/lib/components/Icons/EarHearingAid.js.map +1 -1
  243. package/lib/components/Icons/EarNoseThroat.js.map +1 -1
  244. package/lib/components/Icons/EarVolume.js.map +1 -1
  245. package/lib/components/Icons/Edit.js.map +1 -1
  246. package/lib/components/Icons/ElderlyPerson.js.map +1 -1
  247. package/lib/components/Icons/Embolization.js.map +1 -1
  248. package/lib/components/Icons/EmergencyCall.js.map +1 -1
  249. package/lib/components/Icons/EmoticonAnnoyed.js.map +1 -1
  250. package/lib/components/Icons/EmoticonDelighted.js.map +1 -1
  251. package/lib/components/Icons/EmoticonDisappointed.js.map +1 -1
  252. package/lib/components/Icons/EmoticonHappy.js.map +1 -1
  253. package/lib/components/Icons/EmoticonMeh.js.map +1 -1
  254. package/lib/components/Icons/EmptyBox.js.map +1 -1
  255. package/lib/components/Icons/EnterFullScreen.js.map +1 -1
  256. package/lib/components/Icons/Envelope.js.map +1 -1
  257. package/lib/components/Icons/Epilepsy.js.map +1 -1
  258. package/lib/components/Icons/Eraser.js.map +1 -1
  259. package/lib/components/Icons/ErrorSignFill.js.map +1 -1
  260. package/lib/components/Icons/ErrorSignStroke.js.map +1 -1
  261. package/lib/components/Icons/EuropeanHealthCard.js.map +1 -1
  262. package/lib/components/Icons/ExitFullScreen.js.map +1 -1
  263. package/lib/components/Icons/Eye.js.map +1 -1
  264. package/lib/components/Icons/Facebook.js.map +1 -1
  265. package/lib/components/Icons/FallingLeaf.js.map +1 -1
  266. package/lib/components/Icons/Feedback.js.map +1 -1
  267. package/lib/components/Icons/Female.js.map +1 -1
  268. package/lib/components/Icons/FemaleDoctor.js.map +1 -1
  269. package/lib/components/Icons/Ferry.js.map +1 -1
  270. package/lib/components/Icons/File.js.map +1 -1
  271. package/lib/components/Icons/Filter.js +12 -12
  272. package/lib/components/Icons/Filter.js.map +1 -1
  273. package/lib/components/Icons/FingerBleed.js.map +1 -1
  274. package/lib/components/Icons/FirstAidKit.js.map +1 -1
  275. package/lib/components/Icons/Fish.js.map +1 -1
  276. package/lib/components/Icons/FloppyDisk.js.map +1 -1
  277. package/lib/components/Icons/Football.js.map +1 -1
  278. package/lib/components/Icons/Form.js.map +1 -1
  279. package/lib/components/Icons/Forward.js.map +1 -1
  280. package/lib/components/Icons/Gallery.js.map +1 -1
  281. package/lib/components/Icons/Garden.js.map +1 -1
  282. package/lib/components/Icons/GasCan.js.map +1 -1
  283. package/lib/components/Icons/GenderIdentity.js.map +1 -1
  284. package/lib/components/Icons/GlassWater.js.map +1 -1
  285. package/lib/components/Icons/Glasses.js.map +1 -1
  286. package/lib/components/Icons/Globe.js.map +1 -1
  287. package/lib/components/Icons/Grain.js.map +1 -1
  288. package/lib/components/Icons/Graph.js.map +1 -1
  289. package/lib/components/Icons/Group.js.map +1 -1
  290. package/lib/components/Icons/GroupTwins.js.map +1 -1
  291. package/lib/components/Icons/HTMLFile.js.map +1 -1
  292. package/lib/components/Icons/HandWaving.js.map +1 -1
  293. package/lib/components/Icons/HandWithDisease.js.map +1 -1
  294. package/lib/components/Icons/HandsAndHeart.js.map +1 -1
  295. package/lib/components/Icons/HealthClinic.js.map +1 -1
  296. package/lib/components/Icons/HealthMeasurements.js.map +1 -1
  297. package/lib/components/Icons/HealthWarning.js.map +1 -1
  298. package/lib/components/Icons/HealthcarePerson.js.map +1 -1
  299. package/lib/components/Icons/HealthcarePersonell.js.map +1 -1
  300. package/lib/components/Icons/HearingProtection.js.map +1 -1
  301. package/lib/components/Icons/Heart.js.map +1 -1
  302. package/lib/components/Icons/HeartHands.js.map +1 -1
  303. package/lib/components/Icons/HelpSign.js.map +1 -1
  304. package/lib/components/Icons/HelpingHand.js.map +1 -1
  305. package/lib/components/Icons/Hemodialysis.js.map +1 -1
  306. package/lib/components/Icons/Hiker.js.map +1 -1
  307. package/lib/components/Icons/Hipprosthesis.js.map +1 -1
  308. package/lib/components/Icons/History.js.map +1 -1
  309. package/lib/components/Icons/HivAndAids.js.map +1 -1
  310. package/lib/components/Icons/Home.js.map +1 -1
  311. package/lib/components/Icons/HomeFill.js.map +1 -1
  312. package/lib/components/Icons/Hormone.js.map +1 -1
  313. package/lib/components/Icons/Hospital.js.map +1 -1
  314. package/lib/components/Icons/Hourglass.js.map +1 -1
  315. package/lib/components/Icons/IconNames.js.map +1 -1
  316. package/lib/components/Icons/ImgFile.js.map +1 -1
  317. package/lib/components/Icons/Inbox.js.map +1 -1
  318. package/lib/components/Icons/InfoSignFill.js.map +1 -1
  319. package/lib/components/Icons/InfoSignStroke.js.map +1 -1
  320. package/lib/components/Icons/Instagram.js.map +1 -1
  321. package/lib/components/Icons/Intravenous.js.map +1 -1
  322. package/lib/components/Icons/JointPain.js.map +1 -1
  323. package/lib/components/Icons/Journal.js.map +1 -1
  324. package/lib/components/Icons/JpgFile.js.map +1 -1
  325. package/lib/components/Icons/Kidney.js.map +1 -1
  326. package/lib/components/Icons/KitchenScale.js.map +1 -1
  327. package/lib/components/Icons/Kjernejournal.js.map +1 -1
  328. package/lib/components/Icons/Laboratory.js.map +1 -1
  329. package/lib/components/Icons/LaptopBlog.js.map +1 -1
  330. package/lib/components/Icons/LawBook.js.map +1 -1
  331. package/lib/components/Icons/LegalDocument.js.map +1 -1
  332. package/lib/components/Icons/LightBulb.js.map +1 -1
  333. package/lib/components/Icons/List.js.map +1 -1
  334. package/lib/components/Icons/Location.js.map +1 -1
  335. package/lib/components/Icons/LocationFill.js.map +1 -1
  336. package/lib/components/Icons/Lock.js.map +1 -1
  337. package/lib/components/Icons/Login.js.map +1 -1
  338. package/lib/components/Icons/Logout.js.map +1 -1
  339. package/lib/components/Icons/Lungs.js.map +1 -1
  340. package/lib/components/Icons/Makeup.js.map +1 -1
  341. package/lib/components/Icons/MaleDoctor.js.map +1 -1
  342. package/lib/components/Icons/MaleDoctorAndPerson.js.map +1 -1
  343. package/lib/components/Icons/MaleDoctorCompact.js.map +1 -1
  344. package/lib/components/Icons/MaleDoctorCompactFill.js.map +1 -1
  345. package/lib/components/Icons/MaleGenitalia.js.map +1 -1
  346. package/lib/components/Icons/MeasuringTape.js.map +1 -1
  347. package/lib/components/Icons/Medicine.js.map +1 -1
  348. package/lib/components/Icons/MedicineWarning.js.map +1 -1
  349. package/lib/components/Icons/MentalHealthAdult.js.map +1 -1
  350. package/lib/components/Icons/MentalHealthChild.js.map +1 -1
  351. package/lib/components/Icons/Menu.js.map +1 -1
  352. package/lib/components/Icons/Microscope.js.map +1 -1
  353. package/lib/components/Icons/Minus.js.map +1 -1
  354. package/lib/components/Icons/Mirror.js.map +1 -1
  355. package/lib/components/Icons/MobilePhone.js.map +1 -1
  356. package/lib/components/Icons/MotherHoldingBaby.js.map +1 -1
  357. package/lib/components/Icons/MuscleBack.js.map +1 -1
  358. package/lib/components/Icons/MuscleLeg.js.map +1 -1
  359. package/lib/components/Icons/Mushroom.js.map +1 -1
  360. package/lib/components/Icons/Music.js.map +1 -1
  361. package/lib/components/Icons/MusselsAndSalt.js.map +1 -1
  362. package/lib/components/Icons/NoAccess.js.map +1 -1
  363. package/lib/components/Icons/NoEye.js.map +1 -1
  364. package/lib/components/Icons/NoFilter.js.map +1 -1
  365. package/lib/components/Icons/Notepad.js.map +1 -1
  366. package/lib/components/Icons/Osteotomy.js.map +1 -1
  367. package/lib/components/Icons/PaintRoller.js.map +1 -1
  368. package/lib/components/Icons/PaperPlane.js.map +1 -1
  369. package/lib/components/Icons/PatientAndPerson.js.map +1 -1
  370. package/lib/components/Icons/Pause.js.map +1 -1
  371. package/lib/components/Icons/PdfFile.js.map +1 -1
  372. package/lib/components/Icons/Pencil.js.map +1 -1
  373. package/lib/components/Icons/PeopleTalking.js.map +1 -1
  374. package/lib/components/Icons/Peritonealdialysis.js.map +1 -1
  375. package/lib/components/Icons/Person.js.map +1 -1
  376. package/lib/components/Icons/PersonAndPatient.js.map +1 -1
  377. package/lib/components/Icons/PersonCancel.js.map +1 -1
  378. package/lib/components/Icons/PersonInXRayMachine.js.map +1 -1
  379. package/lib/components/Icons/PersonOverweight.js.map +1 -1
  380. package/lib/components/Icons/PersonRelaxing.js.map +1 -1
  381. package/lib/components/Icons/PersonWithBrain.js.map +1 -1
  382. package/lib/components/Icons/PersonWithBrokenArm.js.map +1 -1
  383. package/lib/components/Icons/PersonWithCrutches.js.map +1 -1
  384. package/lib/components/Icons/PersonWithJaw.js.map +1 -1
  385. package/lib/components/Icons/PersonWithMagnifyingGlass.js.map +1 -1
  386. package/lib/components/Icons/PersonWithSenses.js.map +1 -1
  387. package/lib/components/Icons/PersonWorking.js.map +1 -1
  388. package/lib/components/Icons/PersonalPlan.js.map +1 -1
  389. package/lib/components/Icons/PizzaSlice.js.map +1 -1
  390. package/lib/components/Icons/Plane.js.map +1 -1
  391. package/lib/components/Icons/Plant.js.map +1 -1
  392. package/lib/components/Icons/PlateKnifeFork.js.map +1 -1
  393. package/lib/components/Icons/Play.js.map +1 -1
  394. package/lib/components/Icons/PlusLarge.js.map +1 -1
  395. package/lib/components/Icons/PlusSmall.js.map +1 -1
  396. package/lib/components/Icons/PngFile.js.map +1 -1
  397. package/lib/components/Icons/Podcast.js.map +1 -1
  398. package/lib/components/Icons/PoisonInformation.js.map +1 -1
  399. package/lib/components/Icons/Pregnant.js.map +1 -1
  400. package/lib/components/Icons/Printer.js.map +1 -1
  401. package/lib/components/Icons/Psychosis.js.map +1 -1
  402. package/lib/components/Icons/Publication.js.map +1 -1
  403. package/lib/components/Icons/Puzzle.js.map +1 -1
  404. package/lib/components/Icons/QrCode.js.map +1 -1
  405. package/lib/components/Icons/Quarrel.js.map +1 -1
  406. package/lib/components/Icons/RadioTherapy.js.map +1 -1
  407. package/lib/components/Icons/RadioactiveTreatment.js.map +1 -1
  408. package/lib/components/Icons/Radioiodine.js.map +1 -1
  409. package/lib/components/Icons/Receipt.js.map +1 -1
  410. package/lib/components/Icons/Receptionist.js.map +1 -1
  411. package/lib/components/Icons/Recovery.js.map +1 -1
  412. package/lib/components/Icons/Referral.js.map +1 -1
  413. package/lib/components/Icons/Refresh.js.map +1 -1
  414. package/lib/components/Icons/Refund.js.map +1 -1
  415. package/lib/components/Icons/Reminder.js.map +1 -1
  416. package/lib/components/Icons/Reply.js.map +1 -1
  417. package/lib/components/Icons/Rocket.js.map +1 -1
  418. package/lib/components/Icons/RtfFile.js.map +1 -1
  419. package/lib/components/Icons/STDs.js.map +1 -1
  420. package/lib/components/Icons/Save.js.map +1 -1
  421. package/lib/components/Icons/Scale.js.map +1 -1
  422. package/lib/components/Icons/ScreenReader.js.map +1 -1
  423. package/lib/components/Icons/Search.js +4 -4
  424. package/lib/components/Icons/Search.js.map +1 -1
  425. package/lib/components/Icons/SectionSign.js.map +1 -1
  426. package/lib/components/Icons/Settings.js.map +1 -1
  427. package/lib/components/Icons/SettingsFill.js.map +1 -1
  428. package/lib/components/Icons/Sexualorientation.js.map +1 -1
  429. package/lib/components/Icons/ShakingHand.js.map +1 -1
  430. package/lib/components/Icons/Share.js.map +1 -1
  431. package/lib/components/Icons/SharedHealthData.js.map +1 -1
  432. package/lib/components/Icons/SharedHealthMeasurements.js.map +1 -1
  433. package/lib/components/Icons/Shield.js.map +1 -1
  434. package/lib/components/Icons/ShuntOperation.js.map +1 -1
  435. package/lib/components/Icons/Skeleton.js.map +1 -1
  436. package/lib/components/Icons/Skin.js.map +1 -1
  437. package/lib/components/Icons/Snake.js.map +1 -1
  438. package/lib/components/Icons/Snapchat.js.map +1 -1
  439. package/lib/components/Icons/Sort.js +12 -12
  440. package/lib/components/Icons/Sort.js.map +1 -1
  441. package/lib/components/Icons/SortDown.js.map +1 -1
  442. package/lib/components/Icons/SortUp.js.map +1 -1
  443. package/lib/components/Icons/SpeechBubble.js.map +1 -1
  444. package/lib/components/Icons/Spray.js.map +1 -1
  445. package/lib/components/Icons/StarFill.js.map +1 -1
  446. package/lib/components/Icons/StarStroke.js.map +1 -1
  447. package/lib/components/Icons/StickyNote.js.map +1 -1
  448. package/lib/components/Icons/StickyNotes.js.map +1 -1
  449. package/lib/components/Icons/Stopwatch.js.map +1 -1
  450. package/lib/components/Icons/Sun.js.map +1 -1
  451. package/lib/components/Icons/SupportingPerson.js.map +1 -1
  452. package/lib/components/Icons/Surgery.js.map +1 -1
  453. package/lib/components/Icons/Sweets.js.map +1 -1
  454. package/lib/components/Icons/Syringe.js.map +1 -1
  455. package/lib/components/Icons/Taxi.js.map +1 -1
  456. package/lib/components/Icons/TeddyBear.js.map +1 -1
  457. package/lib/components/Icons/Teenagers.js.map +1 -1
  458. package/lib/components/Icons/ThinkingAboutBaby.js.map +1 -1
  459. package/lib/components/Icons/Ticket.js.map +1 -1
  460. package/lib/components/Icons/TimePassing.js.map +1 -1
  461. package/lib/components/Icons/Toddler.js.map +1 -1
  462. package/lib/components/Icons/Tombstone.js.map +1 -1
  463. package/lib/components/Icons/Toolbox.js.map +1 -1
  464. package/lib/components/Icons/Tooth.js.map +1 -1
  465. package/lib/components/Icons/TotalKneeProsthesis.js.map +1 -1
  466. package/lib/components/Icons/Train.js.map +1 -1
  467. package/lib/components/Icons/Transplantation.js.map +1 -1
  468. package/lib/components/Icons/TrashCan.js.map +1 -1
  469. package/lib/components/Icons/TravelRoute.js.map +1 -1
  470. package/lib/components/Icons/TreatmentAids.js.map +1 -1
  471. package/lib/components/Icons/TriangleX.js.map +1 -1
  472. package/lib/components/Icons/Twitter.js.map +1 -1
  473. package/lib/components/Icons/Undo.js.map +1 -1
  474. package/lib/components/Icons/UniProsthesis.js.map +1 -1
  475. package/lib/components/Icons/Upload.js.map +1 -1
  476. package/lib/components/Icons/UserOrganization.js.map +1 -1
  477. package/lib/components/Icons/Vaccine.js.map +1 -1
  478. package/lib/components/Icons/VerticalDots.js.map +1 -1
  479. package/lib/components/Icons/VideoCamera.js.map +1 -1
  480. package/lib/components/Icons/VideoChat.js.map +1 -1
  481. package/lib/components/Icons/Wallet.js.map +1 -1
  482. package/lib/components/Icons/Watch.js.map +1 -1
  483. package/lib/components/Icons/Website.js.map +1 -1
  484. package/lib/components/Icons/Wheelchair.js.map +1 -1
  485. package/lib/components/Icons/WheelchairActive.js.map +1 -1
  486. package/lib/components/Icons/Window.js.map +1 -1
  487. package/lib/components/Icons/WordDocument.js.map +1 -1
  488. package/lib/components/Icons/WorkSuitcase.js.map +1 -1
  489. package/lib/components/Icons/X.js.map +1 -1
  490. package/lib/components/Icons/XOutline.js.map +1 -1
  491. package/lib/components/Icons/XmlFile.js.map +1 -1
  492. package/lib/components/Icons/YouTube.js.map +1 -1
  493. package/lib/components/Icons/Zoom.js.map +1 -1
  494. package/lib/components/Icons/ZoomInLeft.js.map +1 -1
  495. package/lib/components/Icons/ZoomOutLeft.js.map +1 -1
  496. package/lib/components/Illustration/index.js +1 -1
  497. package/lib/components/Illustrations/BabyMobile.js +1 -1
  498. package/lib/components/Illustrations/BabyMobile.js.map +1 -1
  499. package/lib/components/Illustrations/BabyMobileMedium.js +1 -1
  500. package/lib/components/Illustrations/BabyMobileMedium.js.map +1 -1
  501. package/lib/components/Illustrations/Child.js +1 -1
  502. package/lib/components/Illustrations/Child.js.map +1 -1
  503. package/lib/components/Illustrations/ChildMedium.js +1 -1
  504. package/lib/components/Illustrations/ChildMedium.js.map +1 -1
  505. package/lib/components/Illustrations/Doctor.js +1 -1
  506. package/lib/components/Illustrations/Doctor.js.map +1 -1
  507. package/lib/components/Illustrations/DoctorMedium.js.map +1 -1
  508. package/lib/components/Illustrations/DoctorSmall.js.map +1 -1
  509. package/lib/components/Illustrations/EyeContact.d.ts +8 -0
  510. package/lib/components/Illustrations/EyeContact.js +17 -0
  511. package/lib/components/Illustrations/EyeContact.js.map +1 -0
  512. package/lib/components/Illustrations/EyeContactMedium.d.ts +3 -0
  513. package/lib/components/Illustrations/EyeContactMedium.js +80 -0
  514. package/lib/components/Illustrations/EyeContactMedium.js.map +1 -0
  515. package/lib/components/Illustrations/FacialRecognitionFingerprint.js +1 -1
  516. package/lib/components/Illustrations/FacialRecognitionFingerprint.js.map +1 -1
  517. package/lib/components/Illustrations/FacialRecognitionFingerprintMedium.js +1 -1
  518. package/lib/components/Illustrations/FacialRecognitionFingerprintMedium.js.map +1 -1
  519. package/lib/components/Illustrations/GiveBabyFood.js +1 -1
  520. package/lib/components/Illustrations/GiveBabyFood.js.map +1 -1
  521. package/lib/components/Illustrations/GiveBabyFoodMedium.js +1 -1
  522. package/lib/components/Illustrations/GiveBabyFoodMedium.js.map +1 -1
  523. package/lib/components/Illustrations/HealthcarePersonnel.js +1 -1
  524. package/lib/components/Illustrations/HealthcarePersonnel.js.map +1 -1
  525. package/lib/components/Illustrations/HealthcarePersonnelMedium.js.map +1 -1
  526. package/lib/components/Illustrations/HealthcarePersonnelSmall.js.map +1 -1
  527. package/lib/components/Illustrations/IllustrationNames.d.ts +1 -1
  528. package/lib/components/Illustrations/IllustrationNames.js +4 -0
  529. package/lib/components/Illustrations/IllustrationNames.js.map +1 -1
  530. package/lib/components/Illustrations/ReadLetters.js +1 -1
  531. package/lib/components/Illustrations/ReadLetters.js.map +1 -1
  532. package/lib/components/Illustrations/ReadLettersMedium.js +1 -1
  533. package/lib/components/Illustrations/ReadLettersMedium.js.map +1 -1
  534. package/lib/components/Illustrations/SkinToSkin.d.ts +8 -0
  535. package/lib/components/Illustrations/SkinToSkin.js +17 -0
  536. package/lib/components/Illustrations/SkinToSkin.js.map +1 -0
  537. package/lib/components/Illustrations/SkinToSkinMedium.d.ts +3 -0
  538. package/lib/components/Illustrations/SkinToSkinMedium.js +107 -0
  539. package/lib/components/Illustrations/SkinToSkinMedium.js.map +1 -0
  540. package/lib/components/Illustrations/Stork.js +1 -1
  541. package/lib/components/Illustrations/Stork.js.map +1 -1
  542. package/lib/components/Illustrations/StorkMedium.js +1 -1
  543. package/lib/components/Illustrations/StorkMedium.js.map +1 -1
  544. package/lib/components/Illustrations/Stroller.js +1 -1
  545. package/lib/components/Illustrations/Stroller.js.map +1 -1
  546. package/lib/components/Illustrations/StrollerMedium.js +1 -1
  547. package/lib/components/Illustrations/StrollerMedium.js.map +1 -1
  548. package/lib/components/Illustrations/Support2.js +1 -1
  549. package/lib/components/Illustrations/Support2.js.map +1 -1
  550. package/lib/components/Illustrations/Support2Medium.js +1 -1
  551. package/lib/components/Illustrations/Support2Medium.js.map +1 -1
  552. package/lib/components/Illustrations/Thinking.js +1 -1
  553. package/lib/components/Illustrations/Thinking.js.map +1 -1
  554. package/lib/components/Illustrations/ThinkingMedium.js +1 -1
  555. package/lib/components/Illustrations/ThinkingMedium.js.map +1 -1
  556. package/lib/components/Loader/index.js.map +1 -1
  557. package/lib/components/Logo/index.js.map +1 -1
  558. package/lib/components/Modal/index.js.map +1 -1
  559. package/lib/components/NotificationPanel/index.js.map +1 -1
  560. package/lib/components/Panel/index.js +1 -1
  561. package/lib/components/Panel/index.js.map +1 -1
  562. package/lib/components/PanelList/index.js +1 -1
  563. package/lib/components/PanelList/index.js.map +1 -1
  564. package/lib/components/PopMenu/index.js.map +1 -1
  565. package/lib/components/Portal/index.js.map +1 -1
  566. package/lib/components/Progressbar/index.js.map +1 -1
  567. package/lib/components/PromoPanel/index.js.map +1 -1
  568. package/lib/components/RadioButton/RadioMarker/RadioMarker.d.ts +20 -0
  569. package/lib/components/RadioButton/RadioMarker/styles.module.scss +288 -0
  570. package/lib/components/RadioButton/RadioMarker/styles.module.scss.d.ts +20 -0
  571. package/lib/components/RadioButton/index.d.ts +0 -1
  572. package/lib/components/RadioButton/index.js +2 -2
  573. package/lib/components/RadioButton/index.js.map +1 -1
  574. package/lib/components/RadioButton/styles.module.scss +13 -275
  575. package/lib/components/RadioButton/styles.module.scss.d.ts +2 -12
  576. package/lib/components/ServiceMessage/index.js.map +1 -1
  577. package/lib/components/SharingStatus/index.js.map +1 -1
  578. package/lib/components/Step/index.js.map +1 -1
  579. package/lib/components/Stepper/index.js +1 -5
  580. package/lib/components/Stepper/index.js.map +1 -1
  581. package/lib/components/StickyNote/index.js.map +1 -1
  582. package/lib/components/Table/index.js +1 -1
  583. package/lib/components/Table/index.js.map +1 -1
  584. package/lib/components/Tabs/index.js.map +1 -1
  585. package/lib/components/Tag/index.js.map +1 -1
  586. package/lib/components/TagList/index.js.map +1 -1
  587. package/lib/components/Tile/index.js.map +1 -1
  588. package/lib/components/ToastList/index.js.map +1 -1
  589. package/lib/components/Toggle/index.js.map +1 -1
  590. package/lib/components/Validation/index.js.map +1 -1
  591. package/lib/components/VisualCheckboxCloud/Checkbox/Checkbox.d.ts +21 -0
  592. package/lib/components/VisualCheckboxCloud/Checkbox/index.d.ts +3 -0
  593. package/lib/components/VisualCheckboxCloud/Checkbox/index.js +7 -0
  594. package/lib/components/VisualCheckboxCloud/Checkbox/index.js.map +1 -0
  595. package/lib/components/VisualCheckboxCloud/Checkbox/styles.module.scss +10 -0
  596. package/lib/components/VisualCheckboxCloud/Checkbox/styles.module.scss.d.ts +15 -0
  597. package/lib/components/VisualCheckboxCloud/VisualCheckboxCloud.d.ts +29 -0
  598. package/lib/components/VisualCheckboxCloud/index.d.ts +3 -0
  599. package/lib/components/VisualCheckboxCloud/index.js +42 -0
  600. package/lib/components/VisualCheckboxCloud/index.js.map +1 -0
  601. package/lib/components/VisualCheckboxCloud/styles.module.scss +6 -0
  602. package/lib/components/VisualCheckboxCloud/styles.module.scss.d.ts +9 -0
  603. package/lib/components/VisualCheckboxGroup/VisualCheckbox/VisualCheckbox.d.ts +26 -0
  604. package/lib/components/VisualCheckboxGroup/VisualCheckbox/VisualContent.d.ts +10 -0
  605. package/lib/components/VisualCheckboxGroup/VisualCheckbox/index.d.ts +3 -0
  606. package/lib/components/VisualCheckboxGroup/VisualCheckbox/index.js +7 -0
  607. package/lib/components/VisualCheckboxGroup/VisualCheckbox/index.js.map +1 -0
  608. package/lib/components/VisualCheckboxGroup/VisualCheckbox/styles.module.scss +7 -0
  609. package/lib/components/VisualCheckboxGroup/VisualCheckbox/styles.module.scss.d.ts +18 -0
  610. package/lib/components/VisualCheckboxGroup/VisualCheckboxGroup.d.ts +33 -0
  611. package/lib/components/VisualCheckboxGroup/index.d.ts +3 -0
  612. package/lib/components/VisualCheckboxGroup/index.js +47 -0
  613. package/lib/components/VisualCheckboxGroup/index.js.map +1 -0
  614. package/lib/components/VisualCheckboxGroup/styles.module.scss +6 -0
  615. package/lib/components/VisualCheckboxGroup/styles.module.scss.d.ts +10 -0
  616. package/lib/components/VisualRadioCloud/Radio/Radio.d.ts +23 -0
  617. package/lib/components/VisualRadioCloud/Radio/index.d.ts +3 -0
  618. package/lib/components/VisualRadioCloud/Radio/index.js +7 -0
  619. package/lib/components/VisualRadioCloud/Radio/index.js.map +1 -0
  620. package/lib/components/VisualRadioCloud/Radio/styles.module.scss +7 -0
  621. package/lib/components/VisualRadioCloud/Radio/styles.module.scss.d.ts +15 -0
  622. package/lib/components/VisualRadioCloud/VisualRadioCloud.d.ts +39 -0
  623. package/lib/components/VisualRadioCloud/index.d.ts +3 -0
  624. package/lib/components/VisualRadioCloud/index.js +62 -0
  625. package/lib/components/VisualRadioCloud/index.js.map +1 -0
  626. package/lib/components/VisualRadioCloud/styles.module.scss +6 -0
  627. package/lib/components/VisualRadioCloud/styles.module.scss.d.ts +9 -0
  628. package/lib/components/VisualRadioGroup/VisualRadio/VisualContent.d.ts +10 -0
  629. package/lib/components/VisualRadioGroup/VisualRadio/VisualRadio.d.ts +26 -0
  630. package/lib/components/VisualRadioGroup/VisualRadio/index.d.ts +3 -0
  631. package/lib/components/VisualRadioGroup/VisualRadio/index.js +7 -0
  632. package/lib/components/VisualRadioGroup/VisualRadio/index.js.map +1 -0
  633. package/lib/components/VisualRadioGroup/VisualRadio/styles.module.scss +7 -0
  634. package/lib/components/VisualRadioGroup/VisualRadio/styles.module.scss.d.ts +18 -0
  635. package/lib/components/VisualRadioGroup/VisualRadioGroup.d.ts +39 -0
  636. package/lib/components/VisualRadioGroup/index.d.ts +3 -0
  637. package/lib/components/VisualRadioGroup/index.js +67 -0
  638. package/lib/components/VisualRadioGroup/index.js.map +1 -0
  639. package/lib/components/VisualRadioGroup/styles.module.scss +6 -0
  640. package/lib/components/VisualRadioGroup/styles.module.scss.d.ts +10 -0
  641. package/lib/constants.js.map +1 -1
  642. package/lib/constants2.js +6 -6
  643. package/lib/constants2.js.map +1 -1
  644. package/lib/floating-ui.react.js +34 -30
  645. package/lib/floating-ui.react.js.map +1 -1
  646. package/lib/getFilterChips.js.map +1 -1
  647. package/lib/hoc/withBreakpoint/withBreakpoint.js.map +1 -1
  648. package/lib/hooks/useBreakpoint.js.map +1 -1
  649. package/lib/hooks/useElementList.js.map +1 -1
  650. package/lib/hooks/useEventListenerState.js.map +1 -1
  651. package/lib/hooks/useExpand.js.map +1 -1
  652. package/lib/hooks/useFocusToggle.js.map +1 -1
  653. package/lib/hooks/useFocusTrap.js.map +1 -1
  654. package/lib/hooks/useFocusableElements.js.map +1 -1
  655. package/lib/hooks/useIcons.js.map +1 -1
  656. package/lib/hooks/useIdWithFallback.js.map +1 -1
  657. package/lib/hooks/useIntersectionObserver.js.map +1 -1
  658. package/lib/hooks/useInterval.js.map +1 -1
  659. package/lib/hooks/useIsMobileBreakpoint.js.map +1 -1
  660. package/lib/hooks/useIsServerSide.js.map +1 -1
  661. package/lib/hooks/useIsVisible.js.map +1 -1
  662. package/lib/hooks/useKeyboardEvent.js.map +1 -1
  663. package/lib/hooks/useLanguage.js.map +1 -1
  664. package/lib/hooks/useLayoutEvent.js.map +1 -1
  665. package/lib/hooks/useOutsideEvent.js.map +1 -1
  666. package/lib/hooks/usePrevious.js.map +1 -1
  667. package/lib/hooks/usePseudoClasses.js.map +1 -1
  668. package/lib/hooks/useResizeObserver.js.map +1 -1
  669. package/lib/hooks/useReturnFocusOnUnmount.js.map +1 -1
  670. package/lib/hooks/useRovingFocus.js.map +1 -1
  671. package/lib/hooks/useSize.js.map +1 -1
  672. package/lib/hooks/useToggle.js.map +1 -1
  673. package/lib/hooks/usestopPropagation.js.map +1 -1
  674. package/lib/resourceHelper.js +12 -8
  675. package/lib/resourceHelper.js.map +1 -1
  676. package/lib/resources/HN.Designsystem.Drawer.en-GB.json.d.ts +2 -2
  677. package/lib/resources/HN.Designsystem.Filter.en-GB.json.d.ts +6 -4
  678. package/lib/resources/HN.Designsystem.Filter.nb-NO.json.d.ts +6 -4
  679. package/lib/resources/Resources.d.ts +11 -3
  680. package/lib/scss/_visual-form.scss +357 -0
  681. package/lib/theme/currys/color.js.map +1 -1
  682. package/lib/theme/currys/spacing.js.map +1 -1
  683. package/lib/theme/grid.js.map +1 -1
  684. package/lib/theme/index.js.map +1 -1
  685. package/lib/theme/palette.js.map +1 -1
  686. package/lib/theme/spacers.js.map +1 -1
  687. package/lib/utils/accessibility.js.map +1 -1
  688. package/lib/utils/component.js.map +1 -1
  689. package/lib/utils/debounce.js.map +1 -1
  690. package/lib/utils/deepContains.js.map +1 -1
  691. package/lib/utils/device.js.map +1 -1
  692. package/lib/utils/focus.js.map +1 -1
  693. package/lib/utils/language.js.map +1 -1
  694. package/lib/utils/mobile.js.map +1 -1
  695. package/lib/utils/refs.js.map +1 -1
  696. package/lib/utils/resource.js.map +1 -1
  697. package/lib/utils/scroll.js.map +1 -1
  698. package/lib/utils/viewport.js.map +1 -1
  699. package/lib/utils.js.map +1 -1
  700. package/lib/utils2.js.map +1 -1
  701. package/lib/utils3.js +11 -100
  702. package/lib/utils3.js.map +1 -1
  703. package/lib/utils4.js +31 -12
  704. package/lib/utils4.js.map +1 -1
  705. package/lib/utils5.js +112 -31
  706. package/lib/utils5.js.map +1 -1
  707. package/lib/uuid.js.map +1 -1
  708. package/package.json +115 -1
  709. package/scss/_visual-form.scss +357 -0
  710. package/lib/components/RadioButton/utils.d.ts +0 -2
  711. package/lib/utils6.js +0 -115
  712. package/lib/utils6.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"getFilterChips.js","names":[],"sources":["../src/components/Filter/getFilterChips/getFilterChips.tsx","../src/components/Filter/getFilterChips/index.ts"],"sourcesContent":["import type { FilterValues, UseFilterReturn } from '../useFilter';\n\nimport Chip from '../../Chip';\n\nexport interface GetFilterChipsArgs<T extends FilterValues> {\n /** The filter instance from useFilter */\n filter: UseFilterReturn<T>;\n /** Look up the display label for a filter key + value */\n getLabel: (key: keyof T, value: unknown) => string;\n /** Called when a chip is clicked (f.ex. to open the drawer at that filter category) */\n onChipClick: (key: keyof T, value: unknown) => void;\n /** Called when a chip's close button is clicked. If not provided, defaults to filter.removeFilter */\n onChipRemove?: (key: keyof T, value: unknown) => void;\n /** Called when the overflow chip is clicked */\n onOverflowChipClick: () => void;\n /** Function for mapping if close button is shown on chip or not */\n willShowCloseButton?: (key: keyof T, value?: unknown) => boolean;\n}\n\nfunction getFilterChips<T extends FilterValues>({\n filter,\n getLabel,\n onChipClick,\n onChipRemove,\n onOverflowChipClick,\n willShowCloseButton,\n}: GetFilterChipsArgs<T>): React.ReactNode[] {\n const maxVisible = 5;\n\n const allChips = Object.entries(filter.filters).flatMap(([key, raw]) => {\n const values = [raw ?? []].flat();\n return values.map(v => ({ key, value: v }));\n });\n\n const visibleChips = allChips.slice(0, maxVisible);\n const overflowCount = allChips.length - maxVisible;\n\n return [\n visibleChips.map(({ key, value: v }) => (\n <Chip\n key={`${key}-${v}`}\n onChipClick={() => onChipClick(key as keyof T, v)}\n onCloseClick={() => {\n if (onChipRemove) {\n onChipRemove(key as keyof T, v);\n } else {\n filter.removeFilter(key, v);\n }\n }}\n withCloseButton={willShowCloseButton?.(key, v)}\n >\n {getLabel(key as keyof T, v)}\n </Chip>\n )),\n overflowCount > 0 && <Chip key=\"overflow\" onChipClick={onOverflowChipClick} withCloseButton={false}>{`+${overflowCount}`}</Chip>,\n ];\n}\n\nexport default getFilterChips;\n","import getFilterChips from './getFilterChips';\nexport * from './getFilterChips';\nexport default getFilterChips;\n"],"mappings":";;;AAmBA,SAAS,eAAuC,EAC9C,QACA,UACA,aACA,cACA,qBACA,uBAC2C;CAC3C,MAAM,aAAa;CAEnB,MAAM,WAAW,OAAO,QAAQ,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,SAAS;EAEtE,OADe,CAAC,OAAO,EAAE,CAAC,CAAC,MACpB,CAAO,KAAI,OAAM;GAAE;GAAK,OAAO;GAAG,EAAE;GAC3C;CAEF,MAAM,eAAe,SAAS,MAAM,GAAG,WAAW;CAClD,MAAM,gBAAgB,SAAS,SAAS;CAExC,OAAO,CACL,aAAa,KAAK,EAAE,KAAK,OAAO,QAC9B,oBAAC,cAAD;EAEE,mBAAmB,YAAY,KAAgB,EAAE;EACjD,oBAAoB;GAClB,IAAI,cACF,aAAa,KAAgB,EAAE;QAE/B,OAAO,aAAa,KAAK,EAAE;;EAG/B,iBAAiB,sBAAsB,KAAK,EAAE;YAE7C,SAAS,KAAgB,EAAE;EACvB,EAZA,GAAG,IAAI,GAAG,IAYV,CACP,EACF,gBAAgB,KAAK,oBAAC,cAAD;EAAqB,aAAa;EAAqB,iBAAiB;YAAQ,IAAI;EAAuB,EAAjG,WAAiG,CACjI;;;;ACrDH,IAAA,yBAAe"}
1
+ {"version":3,"file":"getFilterChips.js","names":[],"sources":["../src/components/Filter/getFilterChips/getFilterChips.tsx","../src/components/Filter/getFilterChips/index.ts"],"sourcesContent":["import type { FilterValues, UseFilterReturn } from '../useFilter';\n\nimport Chip from '../../Chip';\n\nexport interface GetFilterChipsArgs<T extends FilterValues> {\n /** The filter instance from useFilter */\n filter: UseFilterReturn<T>;\n /** Look up the display label for a filter key + value */\n getLabel: (key: keyof T, value: unknown) => string;\n /** Called when a chip is clicked (f.ex. to open the drawer at that filter category) */\n onChipClick: (key: keyof T, value: unknown) => void;\n /** Called when a chip's close button is clicked. If not provided, defaults to filter.removeFilter */\n onChipRemove?: (key: keyof T, value: unknown) => void;\n /** Called when the overflow chip is clicked */\n onOverflowChipClick: () => void;\n /** Function for mapping if close button is shown on chip or not */\n willShowCloseButton?: (key: keyof T, value?: unknown) => boolean;\n}\n\nfunction getFilterChips<T extends FilterValues>({\n filter,\n getLabel,\n onChipClick,\n onChipRemove,\n onOverflowChipClick,\n willShowCloseButton,\n}: GetFilterChipsArgs<T>): React.ReactNode[] {\n const maxVisible = 5;\n\n const allChips = Object.entries(filter.filters).flatMap(([key, raw]) => {\n const values = [raw ?? []].flat();\n return values.map(v => ({ key, value: v }));\n });\n\n const visibleChips = allChips.slice(0, maxVisible);\n const overflowCount = allChips.length - maxVisible;\n\n return [\n visibleChips.map(({ key, value: v }) => (\n <Chip\n key={`${key}-${v}`}\n onChipClick={() => onChipClick(key as keyof T, v)}\n onCloseClick={() => {\n if (onChipRemove) {\n onChipRemove(key as keyof T, v);\n } else {\n filter.removeFilter(key, v);\n }\n }}\n withCloseButton={willShowCloseButton?.(key, v)}\n >\n {getLabel(key as keyof T, v)}\n </Chip>\n )),\n overflowCount > 0 && <Chip key=\"overflow\" onChipClick={onOverflowChipClick} withCloseButton={false}>{`+${overflowCount}`}</Chip>,\n ];\n}\n\nexport default getFilterChips;\n","import getFilterChips from './getFilterChips';\nexport * from './getFilterChips';\nexport default getFilterChips;\n"],"mappings":";;;AAmBA,SAAS,eAAuC,EAC9C,QACA,UACA,aACA,cACA,qBACA,uBAC2C;CAC3C,MAAM,aAAa;CAEnB,MAAM,WAAW,OAAO,QAAQ,OAAO,OAAO,EAAE,SAAS,CAAC,KAAK,SAAS;EAEtE,OADe,CAAC,OAAO,CAAC,CAAC,EAAE,KACpB,EAAO,KAAI,OAAM;GAAE;GAAK,OAAO;EAAE,EAAE;CAC5C,CAAC;CAED,MAAM,eAAe,SAAS,MAAM,GAAG,UAAU;CACjD,MAAM,gBAAgB,SAAS,SAAS;CAExC,OAAO,CACL,aAAa,KAAK,EAAE,KAAK,OAAO,QAC9B,oBAAC,cAAD;EAEE,mBAAmB,YAAY,KAAgB,CAAC;EAChD,oBAAoB;GAClB,IAAI,cACF,aAAa,KAAgB,CAAC;QAE9B,OAAO,aAAa,KAAK,CAAC;EAE9B;EACA,iBAAiB,sBAAsB,KAAK,CAAC;YAE5C,SAAS,KAAgB,CAAC;CACvB,GAZC,GAAG,IAAI,GAAG,GAYX,CACP,GACD,gBAAgB,KAAK,oBAAC,cAAD;EAAqB,aAAa;EAAqB,iBAAiB;YAAQ,IAAI;CAAsB,GAAhG,UAAgG,CACjI;AACF;;;ACtDA,IAAA,yBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"withBreakpoint.js","names":[],"sources":["../../../src/hoc/withBreakpoint/withBreakpoint.tsx"],"sourcesContent":["import type { Breakpoint } from '../../hooks/useBreakpoint';\n\nimport { useBreakpoint } from '../../hooks/useBreakpoint';\n\nexport interface BreakpointProps {\n breakpoint: Breakpoint;\n}\n\n// Hentet fra https://github.com/DefinitelyTyped/DefinitelyTyped/issues/35834#issuecomment-497605842\nexport function withBreakpoint<P extends BreakpointProps, C extends React.ComponentClass<P>>(\n Component: C & React.ComponentType<P>\n): React.FC<Omit<React.ComponentPropsWithoutRef<C>, keyof BreakpointProps>>;\n\nexport function withBreakpoint<P extends BreakpointProps>(Component: React.FC<P>): React.FC<Omit<P, keyof BreakpointProps>>;\n\nexport function withBreakpoint<P extends BreakpointProps>(Component: React.ComponentType<P>): React.FC<Omit<P, keyof BreakpointProps>> {\n const WithBreakpoint: React.FC<Omit<P, keyof BreakpointProps>> = props => {\n const breakpoint = useBreakpoint();\n return <Component {...(props as P)} breakpoint={breakpoint} />;\n };\n return WithBreakpoint;\n}\n\nexport default withBreakpoint;\n"],"mappings":";;;AAeA,SAAgB,eAA0C,WAA6E;CACrI,MAAM,kBAA2D,UAAS;EACxE,MAAM,aAAa,eAAe;EAClC,OAAO,oBAAC,WAAD;GAAW,GAAK;GAAyB;GAAc,CAAA;;CAEhE,OAAO"}
1
+ {"version":3,"file":"withBreakpoint.js","names":[],"sources":["../../../src/hoc/withBreakpoint/withBreakpoint.tsx"],"sourcesContent":["import type { Breakpoint } from '../../hooks/useBreakpoint';\n\nimport { useBreakpoint } from '../../hooks/useBreakpoint';\n\nexport interface BreakpointProps {\n breakpoint: Breakpoint;\n}\n\n// Hentet fra https://github.com/DefinitelyTyped/DefinitelyTyped/issues/35834#issuecomment-497605842\nexport function withBreakpoint<P extends BreakpointProps, C extends React.ComponentClass<P>>(\n Component: C & React.ComponentType<P>\n): React.FC<Omit<React.ComponentPropsWithoutRef<C>, keyof BreakpointProps>>;\n\nexport function withBreakpoint<P extends BreakpointProps>(Component: React.FC<P>): React.FC<Omit<P, keyof BreakpointProps>>;\n\nexport function withBreakpoint<P extends BreakpointProps>(Component: React.ComponentType<P>): React.FC<Omit<P, keyof BreakpointProps>> {\n const WithBreakpoint: React.FC<Omit<P, keyof BreakpointProps>> = props => {\n const breakpoint = useBreakpoint();\n return <Component {...(props as P)} breakpoint={breakpoint} />;\n };\n return WithBreakpoint;\n}\n\nexport default withBreakpoint;\n"],"mappings":";;;AAeA,SAAgB,eAA0C,WAA6E;CACrI,MAAM,kBAA2D,UAAS;EACxE,MAAM,aAAa,cAAc;EACjC,OAAO,oBAAC,WAAD;GAAW,GAAK;GAAyB;EAAa,CAAA;CAC/D;CACA,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBreakpoint.js","names":[],"sources":["../../src/hooks/useBreakpoint.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nimport { breakpoints, screen } from '../theme/grid';\n\nexport enum Breakpoint {\n xxs = breakpoints.xxs,\n xs = breakpoints.xs,\n sm = breakpoints.sm,\n md = breakpoints.md,\n lg = breakpoints.lg,\n xl = breakpoints.xl,\n}\n\n/** Sjekker nettleserens media queries fra største til minste; det høyeste treffet gjelder */\nfunction getCurrentBreakpoint(): Breakpoint {\n const mediaQueryList = Object.entries(screen)\n .reverse() // Sjekk xl, lg, md, osv. i synkende rekkefølge\n .map(([size, mediaQuery]) => {\n return {\n breakpoint: Breakpoint[size as keyof typeof Breakpoint],\n mq: window.matchMedia(mediaQuery),\n };\n });\n\n const matched = mediaQueryList.find(entry => entry.mq.matches);\n return matched?.breakpoint ?? Breakpoint.xxs;\n}\n\n/** Event listeners for media queries - dette varslet React ved endringer */\nfunction subscribeToBreakpointChanges(callback: () => void): () => void {\n const mediaQueryList = Object.values(screen).map(mediaQuery => {\n const mq = window.matchMedia(mediaQuery);\n mq.addEventListener('change', callback);\n return mq;\n });\n\n return (): void => {\n mediaQueryList.forEach(mq => {\n mq.removeEventListener('change', callback);\n });\n };\n}\n\n/** Brukes ved server side rendering der window ikke finnes. Returnerer minste breakpoint som default */\nconst getServerSnapshot = (): Breakpoint => Breakpoint.xxs;\n\nexport const useBreakpoint = (): Breakpoint => {\n return useSyncExternalStore(subscribeToBreakpointChanges, getCurrentBreakpoint, getServerSnapshot);\n};\n"],"mappings":";;;AAIA,IAAY,aAAL,yBAAA,YAAA;CACL,WAAA,WAAA,SAAM,YAAY,OAAA;CAClB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;;KAClB;;AAGD,SAAS,uBAAmC;CAW1C,OAVuB,OAAO,QAAQ,OAAO,CAC1C,SAAS,CACT,KAAK,CAAC,MAAM,gBAAgB;EAC3B,OAAO;GACL,YAAY,WAAW;GACvB,IAAI,OAAO,WAAW,WAAW;GAClC;GAGW,CAAe,MAAK,UAAS,MAAM,GAAG,QAC/C,EAAS,cAAc,WAAW;;;AAI3C,SAAS,6BAA6B,UAAkC;CACtE,MAAM,iBAAiB,OAAO,OAAO,OAAO,CAAC,KAAI,eAAc;EAC7D,MAAM,KAAK,OAAO,WAAW,WAAW;EACxC,GAAG,iBAAiB,UAAU,SAAS;EACvC,OAAO;GACP;CAEF,aAAmB;EACjB,eAAe,SAAQ,OAAM;GAC3B,GAAG,oBAAoB,UAAU,SAAS;IAC1C;;;;AAKN,IAAM,0BAAsC,WAAW;AAEvD,IAAa,sBAAkC;CAC7C,OAAO,qBAAqB,8BAA8B,sBAAsB,kBAAkB"}
1
+ {"version":3,"file":"useBreakpoint.js","names":[],"sources":["../../src/hooks/useBreakpoint.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nimport { breakpoints, screen } from '../theme/grid';\n\nexport enum Breakpoint {\n xxs = breakpoints.xxs,\n xs = breakpoints.xs,\n sm = breakpoints.sm,\n md = breakpoints.md,\n lg = breakpoints.lg,\n xl = breakpoints.xl,\n}\n\n/** Sjekker nettleserens media queries fra største til minste; det høyeste treffet gjelder */\nfunction getCurrentBreakpoint(): Breakpoint {\n const mediaQueryList = Object.entries(screen)\n .reverse() // Sjekk xl, lg, md, osv. i synkende rekkefølge\n .map(([size, mediaQuery]) => {\n return {\n breakpoint: Breakpoint[size as keyof typeof Breakpoint],\n mq: window.matchMedia(mediaQuery),\n };\n });\n\n const matched = mediaQueryList.find(entry => entry.mq.matches);\n return matched?.breakpoint ?? Breakpoint.xxs;\n}\n\n/** Event listeners for media queries - dette varslet React ved endringer */\nfunction subscribeToBreakpointChanges(callback: () => void): () => void {\n const mediaQueryList = Object.values(screen).map(mediaQuery => {\n const mq = window.matchMedia(mediaQuery);\n mq.addEventListener('change', callback);\n return mq;\n });\n\n return (): void => {\n mediaQueryList.forEach(mq => {\n mq.removeEventListener('change', callback);\n });\n };\n}\n\n/** Brukes ved server side rendering der window ikke finnes. Returnerer minste breakpoint som default */\nconst getServerSnapshot = (): Breakpoint => Breakpoint.xxs;\n\nexport const useBreakpoint = (): Breakpoint => {\n return useSyncExternalStore(subscribeToBreakpointChanges, getCurrentBreakpoint, getServerSnapshot);\n};\n"],"mappings":";;;AAIA,IAAY,aAAL,yBAAA,YAAA;CACL,WAAA,WAAA,SAAM,YAAY,OAAA;CAClB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;;AACnB,EAAA,CAAA,CAAA;;AAGA,SAAS,uBAAmC;CAW1C,OAVuB,OAAO,QAAQ,MAAM,EACzC,QAAQ,EACR,KAAK,CAAC,MAAM,gBAAgB;EAC3B,OAAO;GACL,YAAY,WAAW;GACvB,IAAI,OAAO,WAAW,UAAU;EAClC;CACF,CAEc,EAAe,MAAK,UAAS,MAAM,GAAG,OAC/C,GAAS,cAAc,WAAW;AAC3C;;AAGA,SAAS,6BAA6B,UAAkC;CACtE,MAAM,iBAAiB,OAAO,OAAO,MAAM,EAAE,KAAI,eAAc;EAC7D,MAAM,KAAK,OAAO,WAAW,UAAU;EACvC,GAAG,iBAAiB,UAAU,QAAQ;EACtC,OAAO;CACT,CAAC;CAED,aAAmB;EACjB,eAAe,SAAQ,OAAM;GAC3B,GAAG,oBAAoB,UAAU,QAAQ;EAC3C,CAAC;CACH;AACF;;AAGA,IAAM,0BAAsC,WAAW;AAEvD,IAAa,sBAAkC;CAC7C,OAAO,qBAAqB,8BAA8B,sBAAsB,iBAAiB;AACnG"}
@@ -1 +1 @@
1
- {"version":3,"file":"useElementList.js","names":[],"sources":["../../src/hooks/useElementList.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\n\n/**\n * Hent ut en liste med HTML-elementer. Bruker MutationObserver-APIet.\n * @param ref Element som skal observeres\n * @param selectors Selektorer som sendes til querySelectorAll for å hente ut liste med elementer\n * @param options MutationObserver-options. Default er å lytte på endringer på child-elementer og deres attributter.\n * @returns Liste med HTML-elementer\n */\nexport const useElementList = (\n ref: React.RefObject<HTMLElement | null>,\n selectors: string,\n options?: MutationObserverInit\n): NodeListOf<HTMLElement> | undefined => {\n const [elementList, setElementList] = useState<NodeListOf<HTMLElement>>();\n const previousElementsRef = useRef<HTMLElement[]>([]);\n\n useEffect(() => {\n const handleMutationChange = (): void => {\n const elements = ref.current?.querySelectorAll<HTMLElement>(selectors);\n if (!elements) {\n if (previousElementsRef.current.length > 0) {\n previousElementsRef.current = [];\n setElementList(undefined);\n }\n return;\n }\n\n // We check if an element has been added/removed to avoid extra state updates on other changes.\n const elementsArray = Array.from(elements);\n const previousElements = previousElementsRef.current;\n\n const hasChanged = elementsArray.length !== previousElements.length || elementsArray.some((el, i) => el !== previousElements[i]);\n\n if (hasChanged) {\n previousElementsRef.current = elementsArray;\n setElementList(elements);\n }\n };\n\n const mutationObserver = new MutationObserver(handleMutationChange);\n if (ref?.current) {\n mutationObserver.observe(ref.current, { subtree: true, childList: true, attributes: true, ...options });\n }\n\n handleMutationChange();\n\n return (): void => {\n mutationObserver.disconnect();\n };\n }, [ref, selectors]);\n\n return elementList;\n};\n"],"mappings":";;;;;;;;;AASA,IAAa,kBACX,KACA,WACA,YACwC;CACxC,MAAM,CAAC,aAAa,kBAAkB,UAAmC;CACzE,MAAM,sBAAsB,OAAsB,EAAE,CAAC;CAErD,gBAAgB;EACd,MAAM,6BAAmC;GACvC,MAAM,WAAW,IAAI,SAAS,iBAA8B,UAAU;GACtE,IAAI,CAAC,UAAU;IACb,IAAI,oBAAoB,QAAQ,SAAS,GAAG;KAC1C,oBAAoB,UAAU,EAAE;KAChC,eAAe,KAAA,EAAU;;IAE3B;;GAIF,MAAM,gBAAgB,MAAM,KAAK,SAAS;GAC1C,MAAM,mBAAmB,oBAAoB;GAI7C,IAFmB,cAAc,WAAW,iBAAiB,UAAU,cAAc,MAAM,IAAI,MAAM,OAAO,iBAAiB,GAAG,EAEhH;IACd,oBAAoB,UAAU;IAC9B,eAAe,SAAS;;;EAI5B,MAAM,mBAAmB,IAAI,iBAAiB,qBAAqB;EACnE,IAAI,KAAK,SACP,iBAAiB,QAAQ,IAAI,SAAS;GAAE,SAAS;GAAM,WAAW;GAAM,YAAY;GAAM,GAAG;GAAS,CAAC;EAGzG,sBAAsB;EAEtB,aAAmB;GACjB,iBAAiB,YAAY;;IAE9B,CAAC,KAAK,UAAU,CAAC;CAEpB,OAAO"}
1
+ {"version":3,"file":"useElementList.js","names":[],"sources":["../../src/hooks/useElementList.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\n\n/**\n * Hent ut en liste med HTML-elementer. Bruker MutationObserver-APIet.\n * @param ref Element som skal observeres\n * @param selectors Selektorer som sendes til querySelectorAll for å hente ut liste med elementer\n * @param options MutationObserver-options. Default er å lytte på endringer på child-elementer og deres attributter.\n * @returns Liste med HTML-elementer\n */\nexport const useElementList = (\n ref: React.RefObject<HTMLElement | null>,\n selectors: string,\n options?: MutationObserverInit\n): NodeListOf<HTMLElement> | undefined => {\n const [elementList, setElementList] = useState<NodeListOf<HTMLElement>>();\n const previousElementsRef = useRef<HTMLElement[]>([]);\n\n useEffect(() => {\n const handleMutationChange = (): void => {\n const elements = ref.current?.querySelectorAll<HTMLElement>(selectors);\n if (!elements) {\n if (previousElementsRef.current.length > 0) {\n previousElementsRef.current = [];\n setElementList(undefined);\n }\n return;\n }\n\n // We check if an element has been added/removed to avoid extra state updates on other changes.\n const elementsArray = Array.from(elements);\n const previousElements = previousElementsRef.current;\n\n const hasChanged = elementsArray.length !== previousElements.length || elementsArray.some((el, i) => el !== previousElements[i]);\n\n if (hasChanged) {\n previousElementsRef.current = elementsArray;\n setElementList(elements);\n }\n };\n\n const mutationObserver = new MutationObserver(handleMutationChange);\n if (ref?.current) {\n mutationObserver.observe(ref.current, { subtree: true, childList: true, attributes: true, ...options });\n }\n\n handleMutationChange();\n\n return (): void => {\n mutationObserver.disconnect();\n };\n }, [ref, selectors]);\n\n return elementList;\n};\n"],"mappings":";;;;;;;;;AASA,IAAa,kBACX,KACA,WACA,YACwC;CACxC,MAAM,CAAC,aAAa,kBAAkB,SAAkC;CACxE,MAAM,sBAAsB,OAAsB,CAAC,CAAC;CAEpD,gBAAgB;EACd,MAAM,6BAAmC;GACvC,MAAM,WAAW,IAAI,SAAS,iBAA8B,SAAS;GACrE,IAAI,CAAC,UAAU;IACb,IAAI,oBAAoB,QAAQ,SAAS,GAAG;KAC1C,oBAAoB,UAAU,CAAC;KAC/B,eAAe,KAAA,CAAS;IAC1B;IACA;GACF;GAGA,MAAM,gBAAgB,MAAM,KAAK,QAAQ;GACzC,MAAM,mBAAmB,oBAAoB;GAI7C,IAFmB,cAAc,WAAW,iBAAiB,UAAU,cAAc,MAAM,IAAI,MAAM,OAAO,iBAAiB,EAAE,GAE/G;IACd,oBAAoB,UAAU;IAC9B,eAAe,QAAQ;GACzB;EACF;EAEA,MAAM,mBAAmB,IAAI,iBAAiB,oBAAoB;EAClE,IAAI,KAAK,SACP,iBAAiB,QAAQ,IAAI,SAAS;GAAE,SAAS;GAAM,WAAW;GAAM,YAAY;GAAM,GAAG;EAAQ,CAAC;EAGxG,qBAAqB;EAErB,aAAmB;GACjB,iBAAiB,WAAW;EAC9B;CACF,GAAG,CAAC,KAAK,SAAS,CAAC;CAEnB,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEventListenerState.js","names":[],"sources":["../../src/hooks/useEventListenerState.ts"],"sourcesContent":["import React from 'react';\n\nexport const useEventListenerState = <T>(initial?: T): [valueRef: React.MutableRefObject<T | undefined>, setValue: (x: T) => void] => {\n const [value, _setValue] = React.useState<T | undefined>(initial);\n\n const valueRef = React.useRef(value);\n\n const setValue = (x: T): void => {\n valueRef.current = x;\n _setValue(x);\n };\n\n return [valueRef, setValue];\n};\n"],"mappings":";;AAEA,IAAa,yBAA4B,YAA6F;CACpI,MAAM,CAAC,OAAO,aAAa,MAAM,SAAwB,QAAQ;CAEjE,MAAM,WAAW,MAAM,OAAO,MAAM;CAEpC,MAAM,YAAY,MAAe;EAC/B,SAAS,UAAU;EACnB,UAAU,EAAE;;CAGd,OAAO,CAAC,UAAU,SAAS"}
1
+ {"version":3,"file":"useEventListenerState.js","names":[],"sources":["../../src/hooks/useEventListenerState.ts"],"sourcesContent":["import React from 'react';\n\nexport const useEventListenerState = <T>(initial?: T): [valueRef: React.MutableRefObject<T | undefined>, setValue: (x: T) => void] => {\n const [value, _setValue] = React.useState<T | undefined>(initial);\n\n const valueRef = React.useRef(value);\n\n const setValue = (x: T): void => {\n valueRef.current = x;\n _setValue(x);\n };\n\n return [valueRef, setValue];\n};\n"],"mappings":";;AAEA,IAAa,yBAA4B,YAA6F;CACpI,MAAM,CAAC,OAAO,aAAa,MAAM,SAAwB,OAAO;CAEhE,MAAM,WAAW,MAAM,OAAO,KAAK;CAEnC,MAAM,YAAY,MAAe;EAC/B,SAAS,UAAU;EACnB,UAAU,CAAC;CACb;CAEA,OAAO,CAAC,UAAU,QAAQ;AAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useExpand.js","names":[],"sources":["../../src/hooks/useExpand.ts"],"sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { usePrevious } from './usePrevious';\n\nexport const useExpand = (expanded: boolean, onExpand?: (isExpanded: boolean) => void): [boolean, Dispatch<SetStateAction<boolean>>] => {\n const [isExpanded, setIsExpanded] = useState(expanded);\n const [prevExpanded, setPrevExpanded] = useState(expanded);\n const previousIsExpanded = usePrevious(isExpanded);\n\n if (expanded !== prevExpanded) {\n setPrevExpanded(expanded);\n setIsExpanded(expanded);\n }\n\n useEffect(() => {\n if (onExpand && isExpanded !== !!previousIsExpanded) {\n onExpand(isExpanded);\n }\n }, [isExpanded, onExpand]);\n\n return [isExpanded, setIsExpanded];\n};\n"],"mappings":";;;AAKA,IAAa,aAAa,UAAmB,aAA2F;CACtI,MAAM,CAAC,YAAY,iBAAiB,SAAS,SAAS;CACtD,MAAM,CAAC,cAAc,mBAAmB,SAAS,SAAS;CAC1D,MAAM,qBAAqB,YAAY,WAAW;CAElD,IAAI,aAAa,cAAc;EAC7B,gBAAgB,SAAS;EACzB,cAAc,SAAS;;CAGzB,gBAAgB;EACd,IAAI,YAAY,eAAe,CAAC,CAAC,oBAC/B,SAAS,WAAW;IAErB,CAAC,YAAY,SAAS,CAAC;CAE1B,OAAO,CAAC,YAAY,cAAc"}
1
+ {"version":3,"file":"useExpand.js","names":[],"sources":["../../src/hooks/useExpand.ts"],"sourcesContent":["import type { Dispatch, SetStateAction } from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { usePrevious } from './usePrevious';\n\nexport const useExpand = (expanded: boolean, onExpand?: (isExpanded: boolean) => void): [boolean, Dispatch<SetStateAction<boolean>>] => {\n const [isExpanded, setIsExpanded] = useState(expanded);\n const [prevExpanded, setPrevExpanded] = useState(expanded);\n const previousIsExpanded = usePrevious(isExpanded);\n\n if (expanded !== prevExpanded) {\n setPrevExpanded(expanded);\n setIsExpanded(expanded);\n }\n\n useEffect(() => {\n if (onExpand && isExpanded !== !!previousIsExpanded) {\n onExpand(isExpanded);\n }\n }, [isExpanded, onExpand]);\n\n return [isExpanded, setIsExpanded];\n};\n"],"mappings":";;;AAKA,IAAa,aAAa,UAAmB,aAA2F;CACtI,MAAM,CAAC,YAAY,iBAAiB,SAAS,QAAQ;CACrD,MAAM,CAAC,cAAc,mBAAmB,SAAS,QAAQ;CACzD,MAAM,qBAAqB,YAAY,UAAU;CAEjD,IAAI,aAAa,cAAc;EAC7B,gBAAgB,QAAQ;EACxB,cAAc,QAAQ;CACxB;CAEA,gBAAgB;EACd,IAAI,YAAY,eAAe,CAAC,CAAC,oBAC/B,SAAS,UAAU;CAEvB,GAAG,CAAC,YAAY,QAAQ,CAAC;CAEzB,OAAO,CAAC,YAAY,aAAa;AACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusToggle.js","names":[],"sources":["../../src/hooks/useFocusToggle.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useElementList } from './useElementList';\nimport { FOCUSABLE_SELECTORS } from './useFocusableElements';\n\n/**\n * Skru av og på fokus på fokuserbare elementer slik at de kan være en del av DOMen, men samtidig\n * ikke kunne fokuseres/tabbes til med tastaturet.\n * @param ref Alle barn av dette elementet vil sjekkes for om de er fokuserbare\n * @param allowFocus Om elementene skal være fokuserbare eller ikke\n * @returns void\n */\nexport const useFocusToggle = (ref: React.RefObject<HTMLElement | null>, allowFocus?: boolean): void => {\n // Kan ikke lytte på endringer i attributter, fordi det vil føre til en loop når vi endrer dem etterpå\n const focusableElementList = useElementList(ref, FOCUSABLE_SELECTORS, { attributes: false });\n\n useEffect(() => {\n const TABINDEX_ATTRIBUTE_NAME = 'tabindex';\n const PREVIOUS_TABINDEX_ATTRIBUTE_NAME = 'data-tabindex';\n if (allowFocus) {\n focusableElementList?.forEach(el => {\n // Sett tabIndex tilbake til verdien den hadde før, eller fjern tabIndex\n // slik at elementet kan tabbes til igjen.\n const prevTabIndex = el.getAttribute(PREVIOUS_TABINDEX_ATTRIBUTE_NAME);\n if (prevTabIndex) {\n el.setAttribute(TABINDEX_ATTRIBUTE_NAME, prevTabIndex);\n } else {\n el.removeAttribute(TABINDEX_ATTRIBUTE_NAME);\n }\n });\n } else {\n focusableElementList?.forEach(el => {\n // Hvis elementet allerede har tabIndex, ta vare på den før vi gjør det umulig å\n // tabbe til det.\n if (el.hasAttribute(TABINDEX_ATTRIBUTE_NAME)) {\n el.setAttribute(PREVIOUS_TABINDEX_ATTRIBUTE_NAME, `${el.tabIndex}`);\n }\n el.tabIndex = -1;\n });\n }\n }, [ref, allowFocus, focusableElementList]);\n};\n"],"mappings":";;;;;;;;;;;AAYA,IAAa,kBAAkB,KAA0C,eAA+B;CAEtG,MAAM,uBAAuB,eAAe,KAAK,qBAAqB,EAAE,YAAY,OAAO,CAAC;CAE5F,gBAAgB;EACd,MAAM,0BAA0B;EAChC,MAAM,mCAAmC;EACzC,IAAI,YACF,sBAAsB,SAAQ,OAAM;GAGlC,MAAM,eAAe,GAAG,aAAa,iCAAiC;GACtE,IAAI,cACF,GAAG,aAAa,yBAAyB,aAAa;QAEtD,GAAG,gBAAgB,wBAAwB;IAE7C;OAEF,sBAAsB,SAAQ,OAAM;GAGlC,IAAI,GAAG,aAAa,wBAAwB,EAC1C,GAAG,aAAa,kCAAkC,GAAG,GAAG,WAAW;GAErE,GAAG,WAAW;IACd;IAEH;EAAC;EAAK;EAAY;EAAqB,CAAC"}
1
+ {"version":3,"file":"useFocusToggle.js","names":[],"sources":["../../src/hooks/useFocusToggle.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useElementList } from './useElementList';\nimport { FOCUSABLE_SELECTORS } from './useFocusableElements';\n\n/**\n * Skru av og på fokus på fokuserbare elementer slik at de kan være en del av DOMen, men samtidig\n * ikke kunne fokuseres/tabbes til med tastaturet.\n * @param ref Alle barn av dette elementet vil sjekkes for om de er fokuserbare\n * @param allowFocus Om elementene skal være fokuserbare eller ikke\n * @returns void\n */\nexport const useFocusToggle = (ref: React.RefObject<HTMLElement | null>, allowFocus?: boolean): void => {\n // Kan ikke lytte på endringer i attributter, fordi det vil føre til en loop når vi endrer dem etterpå\n const focusableElementList = useElementList(ref, FOCUSABLE_SELECTORS, { attributes: false });\n\n useEffect(() => {\n const TABINDEX_ATTRIBUTE_NAME = 'tabindex';\n const PREVIOUS_TABINDEX_ATTRIBUTE_NAME = 'data-tabindex';\n if (allowFocus) {\n focusableElementList?.forEach(el => {\n // Sett tabIndex tilbake til verdien den hadde før, eller fjern tabIndex\n // slik at elementet kan tabbes til igjen.\n const prevTabIndex = el.getAttribute(PREVIOUS_TABINDEX_ATTRIBUTE_NAME);\n if (prevTabIndex) {\n el.setAttribute(TABINDEX_ATTRIBUTE_NAME, prevTabIndex);\n } else {\n el.removeAttribute(TABINDEX_ATTRIBUTE_NAME);\n }\n });\n } else {\n focusableElementList?.forEach(el => {\n // Hvis elementet allerede har tabIndex, ta vare på den før vi gjør det umulig å\n // tabbe til det.\n if (el.hasAttribute(TABINDEX_ATTRIBUTE_NAME)) {\n el.setAttribute(PREVIOUS_TABINDEX_ATTRIBUTE_NAME, `${el.tabIndex}`);\n }\n el.tabIndex = -1;\n });\n }\n }, [ref, allowFocus, focusableElementList]);\n};\n"],"mappings":";;;;;;;;;;;AAYA,IAAa,kBAAkB,KAA0C,eAA+B;CAEtG,MAAM,uBAAuB,eAAe,KAAK,qBAAqB,EAAE,YAAY,MAAM,CAAC;CAE3F,gBAAgB;EACd,MAAM,0BAA0B;EAChC,MAAM,mCAAmC;EACzC,IAAI,YACF,sBAAsB,SAAQ,OAAM;GAGlC,MAAM,eAAe,GAAG,aAAa,gCAAgC;GACrE,IAAI,cACF,GAAG,aAAa,yBAAyB,YAAY;QAErD,GAAG,gBAAgB,uBAAuB;EAE9C,CAAC;OAED,sBAAsB,SAAQ,OAAM;GAGlC,IAAI,GAAG,aAAa,uBAAuB,GACzC,GAAG,aAAa,kCAAkC,GAAG,GAAG,UAAU;GAEpE,GAAG,WAAW;EAChB,CAAC;CAEL,GAAG;EAAC;EAAK;EAAY;CAAoB,CAAC;AAC5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusTrap.js","names":[],"sources":["../../src/hooks/useFocusTrap.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useFocusableElements } from './useFocusableElements';\nimport { getDocumentActiveElement } from '../utils/focus';\n\n/**\n * Lås fokus til et bestemt element. Bruker vil bare kunne tabbe mellom fokuserbare elementer innenfor elementet.\n * @param ref Alle barn av dette elementet vil være fokuserbare, elementer utenfor vil ikke det\n * @param trapFocus Om fokus skal \"trappes\" innenfor elementet eller ikke. Default=true.\n */\nexport const useFocusTrap = (ref: React.RefObject<HTMLElement | null>, trapFocus = true): void => {\n const focusableElementList = useFocusableElements(ref);\n\n const handleKeyboardEvent = (e: KeyboardEvent): void => {\n if (trapFocus && ref.current && focusableElementList?.length && e.key === 'Tab') {\n const activeElement = getDocumentActiveElement(ref.current);\n const firstElement = focusableElementList[0];\n const lastElement = focusableElementList.length === 1 ? firstElement : focusableElementList[focusableElementList.length - 1];\n\n if (e.shiftKey && activeElement === firstElement) {\n /* shift + tab */\n lastElement.focus();\n e.preventDefault();\n } else if (!e.shiftKey && activeElement === lastElement) {\n /* tab */\n firstElement.focus();\n e.preventDefault();\n }\n }\n };\n\n useEffect(() => {\n ref.current?.addEventListener('keydown', handleKeyboardEvent);\n\n return (): void => {\n ref.current?.removeEventListener('keydown', handleKeyboardEvent);\n };\n }, [ref, trapFocus, focusableElementList]); // focusableElementList må være med som dependency for at handleKeyboardEvent skal få oppdatert state\n};\n\nexport default useFocusTrap;\n"],"mappings":";;;;;;;;;AAUA,IAAa,gBAAgB,KAA0C,YAAY,SAAe;CAChG,MAAM,uBAAuB,qBAAqB,IAAI;CAEtD,MAAM,uBAAuB,MAA2B;EACtD,IAAI,aAAa,IAAI,WAAW,sBAAsB,UAAU,EAAE,QAAQ,OAAO;GAC/E,MAAM,gBAAgB,yBAAyB,IAAI,QAAQ;GAC3D,MAAM,eAAe,qBAAqB;GAC1C,MAAM,cAAc,qBAAqB,WAAW,IAAI,eAAe,qBAAqB,qBAAqB,SAAS;GAE1H,IAAI,EAAE,YAAY,kBAAkB,cAAc;IAEhD,YAAY,OAAO;IACnB,EAAE,gBAAgB;UACb,IAAI,CAAC,EAAE,YAAY,kBAAkB,aAAa;IAEvD,aAAa,OAAO;IACpB,EAAE,gBAAgB;;;;CAKxB,gBAAgB;EACd,IAAI,SAAS,iBAAiB,WAAW,oBAAoB;EAE7D,aAAmB;GACjB,IAAI,SAAS,oBAAoB,WAAW,oBAAoB;;IAEjE;EAAC;EAAK;EAAW;EAAqB,CAAC"}
1
+ {"version":3,"file":"useFocusTrap.js","names":[],"sources":["../../src/hooks/useFocusTrap.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { useFocusableElements } from './useFocusableElements';\nimport { getDocumentActiveElement } from '../utils/focus';\n\n/**\n * Lås fokus til et bestemt element. Bruker vil bare kunne tabbe mellom fokuserbare elementer innenfor elementet.\n * @param ref Alle barn av dette elementet vil være fokuserbare, elementer utenfor vil ikke det\n * @param trapFocus Om fokus skal \"trappes\" innenfor elementet eller ikke. Default=true.\n */\nexport const useFocusTrap = (ref: React.RefObject<HTMLElement | null>, trapFocus = true): void => {\n const focusableElementList = useFocusableElements(ref);\n\n const handleKeyboardEvent = (e: KeyboardEvent): void => {\n if (trapFocus && ref.current && focusableElementList?.length && e.key === 'Tab') {\n const activeElement = getDocumentActiveElement(ref.current);\n const firstElement = focusableElementList[0];\n const lastElement = focusableElementList.length === 1 ? firstElement : focusableElementList[focusableElementList.length - 1];\n\n if (e.shiftKey && activeElement === firstElement) {\n /* shift + tab */\n lastElement.focus();\n e.preventDefault();\n } else if (!e.shiftKey && activeElement === lastElement) {\n /* tab */\n firstElement.focus();\n e.preventDefault();\n }\n }\n };\n\n useEffect(() => {\n ref.current?.addEventListener('keydown', handleKeyboardEvent);\n\n return (): void => {\n ref.current?.removeEventListener('keydown', handleKeyboardEvent);\n };\n }, [ref, trapFocus, focusableElementList]); // focusableElementList må være med som dependency for at handleKeyboardEvent skal få oppdatert state\n};\n\nexport default useFocusTrap;\n"],"mappings":";;;;;;;;;AAUA,IAAa,gBAAgB,KAA0C,YAAY,SAAe;CAChG,MAAM,uBAAuB,qBAAqB,GAAG;CAErD,MAAM,uBAAuB,MAA2B;EACtD,IAAI,aAAa,IAAI,WAAW,sBAAsB,UAAU,EAAE,QAAQ,OAAO;GAC/E,MAAM,gBAAgB,yBAAyB,IAAI,OAAO;GAC1D,MAAM,eAAe,qBAAqB;GAC1C,MAAM,cAAc,qBAAqB,WAAW,IAAI,eAAe,qBAAqB,qBAAqB,SAAS;GAE1H,IAAI,EAAE,YAAY,kBAAkB,cAAc;IAEhD,YAAY,MAAM;IAClB,EAAE,eAAe;GACnB,OAAO,IAAI,CAAC,EAAE,YAAY,kBAAkB,aAAa;IAEvD,aAAa,MAAM;IACnB,EAAE,eAAe;GACnB;EACF;CACF;CAEA,gBAAgB;EACd,IAAI,SAAS,iBAAiB,WAAW,mBAAmB;EAE5D,aAAmB;GACjB,IAAI,SAAS,oBAAoB,WAAW,mBAAmB;EACjE;CACF,GAAG;EAAC;EAAK;EAAW;CAAoB,CAAC;AAC3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusableElements.js","names":[],"sources":["../../src/hooks/useFocusableElements.ts"],"sourcesContent":["import { useElementList } from './useElementList';\n\n// Fra https://github.com/KittyGiraudel/focusable-selectors\nexport const FOCUSABLE_SELECTORS = [\n 'a[href]:not([tabindex^=\"-\"])',\n 'area[href]:not([tabindex^=\"-\"])',\n 'input:not([type=\"hidden\"]):not([type=\"radio\"]):not([disabled]):not([tabindex^=\"-\"])',\n 'input[type=\"radio\"]:not([disabled]):not([tabindex^=\"-\"])',\n 'select:not([disabled]):not([tabindex^=\"-\"])',\n 'textarea:not([disabled]):not([tabindex^=\"-\"])',\n 'button:not([disabled]):not([tabindex^=\"-\"])',\n 'iframe:not([tabindex^=\"-\"])',\n 'audio[controls]:not([tabindex^=\"-\"])',\n 'video[controls]:not([tabindex^=\"-\"])',\n '[contenteditable]:not([tabindex^=\"-\"])',\n '[tabindex]:not([tabindex^=\"-\"])',\n].join(',');\n\n/**\n * Overvåk et element og finn alle fokuserbare elementer inne i elementet. Bruker MutationObserver slik at eventuelle\n * nye elementer som legges til også vil inkluderes i listen.\n * @param ref Element som skal observeres\n * @returns Liste med fokuserbare HTML-elementer\n */\nexport const useFocusableElements = (ref: React.RefObject<HTMLElement | null>): NodeListOf<HTMLElement> | undefined =>\n useElementList(ref, FOCUSABLE_SELECTORS, { attributeFilter: ['href', 'tabindex', 'type', 'disabled', 'controls', 'contenteditable'] });\n"],"mappings":";;AAGA,IAAa,sBAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC,KAAK,IAAI;;;;;;;AAQX,IAAa,wBAAwB,QACnC,eAAe,KAAK,qBAAqB,EAAE,iBAAiB;CAAC;CAAQ;CAAY;CAAQ;CAAY;CAAY;CAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"useFocusableElements.js","names":[],"sources":["../../src/hooks/useFocusableElements.ts"],"sourcesContent":["import { useElementList } from './useElementList';\n\n// Fra https://github.com/KittyGiraudel/focusable-selectors\nexport const FOCUSABLE_SELECTORS = [\n 'a[href]:not([tabindex^=\"-\"])',\n 'area[href]:not([tabindex^=\"-\"])',\n 'input:not([type=\"hidden\"]):not([type=\"radio\"]):not([disabled]):not([tabindex^=\"-\"])',\n 'input[type=\"radio\"]:not([disabled]):not([tabindex^=\"-\"])',\n 'select:not([disabled]):not([tabindex^=\"-\"])',\n 'textarea:not([disabled]):not([tabindex^=\"-\"])',\n 'button:not([disabled]):not([tabindex^=\"-\"])',\n 'iframe:not([tabindex^=\"-\"])',\n 'audio[controls]:not([tabindex^=\"-\"])',\n 'video[controls]:not([tabindex^=\"-\"])',\n '[contenteditable]:not([tabindex^=\"-\"])',\n '[tabindex]:not([tabindex^=\"-\"])',\n].join(',');\n\n/**\n * Overvåk et element og finn alle fokuserbare elementer inne i elementet. Bruker MutationObserver slik at eventuelle\n * nye elementer som legges til også vil inkluderes i listen.\n * @param ref Element som skal observeres\n * @returns Liste med fokuserbare HTML-elementer\n */\nexport const useFocusableElements = (ref: React.RefObject<HTMLElement | null>): NodeListOf<HTMLElement> | undefined =>\n useElementList(ref, FOCUSABLE_SELECTORS, { attributeFilter: ['href', 'tabindex', 'type', 'disabled', 'controls', 'contenteditable'] });\n"],"mappings":";;AAGA,IAAa,sBAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,EAAE,KAAK,GAAG;;;;;;;AAQV,IAAa,wBAAwB,QACnC,eAAe,KAAK,qBAAqB,EAAE,iBAAiB;CAAC;CAAQ;CAAY;CAAQ;CAAY;CAAY;AAAiB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIcons.js","names":[],"sources":["../../src/hooks/useIcons.ts"],"sourcesContent":["import type { BaseIconProps, IconProps } from '../components/Icon';\nimport type { LazyIconProps } from '../components/LazyIcon';\n\nimport Icon from '../components/Icon';\nimport LazyIcon from '../components/LazyIcon';\nimport { isComponent } from '../utils/component';\n\nexport type BaseIconElement = React.ReactElement<BaseIconProps>;\n\nexport const useIcons = (children: React.ReactNode[]): [BaseIconElement | null, BaseIconElement | null, React.ReactNode[] | null] => {\n let leftIcon: BaseIconElement | null = null;\n let rightIcon: BaseIconElement | null = null;\n\n const firstChild = children[0];\n if (isComponent<IconProps>(firstChild, Icon) || isComponent<LazyIconProps>(firstChild, LazyIcon)) {\n leftIcon = firstChild;\n children.shift();\n }\n\n const lastChild = children[children.length - 1];\n if (isComponent<IconProps>(lastChild, Icon) || isComponent<LazyIconProps>(lastChild, LazyIcon)) {\n rightIcon = lastChild;\n children.pop();\n }\n const restChildren = children.filter(child => child);\n\n return [leftIcon, rightIcon, restChildren.length > 0 ? restChildren : null];\n};\n"],"mappings":";;;;AASA,IAAa,YAAY,aAA4G;CACnI,IAAI,WAAmC;CACvC,IAAI,YAAoC;CAExC,MAAM,aAAa,SAAS;CAC5B,IAAI,YAAuB,YAAY,aAAK,IAAI,YAA2B,YAAY,iBAAS,EAAE;EAChG,WAAW;EACX,SAAS,OAAO;;CAGlB,MAAM,YAAY,SAAS,SAAS,SAAS;CAC7C,IAAI,YAAuB,WAAW,aAAK,IAAI,YAA2B,WAAW,iBAAS,EAAE;EAC9F,YAAY;EACZ,SAAS,KAAK;;CAEhB,MAAM,eAAe,SAAS,QAAO,UAAS,MAAM;CAEpD,OAAO;EAAC;EAAU;EAAW,aAAa,SAAS,IAAI,eAAe;EAAK"}
1
+ {"version":3,"file":"useIcons.js","names":[],"sources":["../../src/hooks/useIcons.ts"],"sourcesContent":["import type { BaseIconProps, IconProps } from '../components/Icon';\nimport type { LazyIconProps } from '../components/LazyIcon';\n\nimport Icon from '../components/Icon';\nimport LazyIcon from '../components/LazyIcon';\nimport { isComponent } from '../utils/component';\n\nexport type BaseIconElement = React.ReactElement<BaseIconProps>;\n\nexport const useIcons = (children: React.ReactNode[]): [BaseIconElement | null, BaseIconElement | null, React.ReactNode[] | null] => {\n let leftIcon: BaseIconElement | null = null;\n let rightIcon: BaseIconElement | null = null;\n\n const firstChild = children[0];\n if (isComponent<IconProps>(firstChild, Icon) || isComponent<LazyIconProps>(firstChild, LazyIcon)) {\n leftIcon = firstChild;\n children.shift();\n }\n\n const lastChild = children[children.length - 1];\n if (isComponent<IconProps>(lastChild, Icon) || isComponent<LazyIconProps>(lastChild, LazyIcon)) {\n rightIcon = lastChild;\n children.pop();\n }\n const restChildren = children.filter(child => child);\n\n return [leftIcon, rightIcon, restChildren.length > 0 ? restChildren : null];\n};\n"],"mappings":";;;;AASA,IAAa,YAAY,aAA4G;CACnI,IAAI,WAAmC;CACvC,IAAI,YAAoC;CAExC,MAAM,aAAa,SAAS;CAC5B,IAAI,YAAuB,YAAY,YAAI,KAAK,YAA2B,YAAY,gBAAQ,GAAG;EAChG,WAAW;EACX,SAAS,MAAM;CACjB;CAEA,MAAM,YAAY,SAAS,SAAS,SAAS;CAC7C,IAAI,YAAuB,WAAW,YAAI,KAAK,YAA2B,WAAW,gBAAQ,GAAG;EAC9F,YAAY;EACZ,SAAS,IAAI;CACf;CACA,MAAM,eAAe,SAAS,QAAO,UAAS,KAAK;CAEnD,OAAO;EAAC;EAAU;EAAW,aAAa,SAAS,IAAI,eAAe;CAAI;AAC5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIdWithFallback.js","names":[],"sources":["../../src/hooks/useIdWithFallback.ts"],"sourcesContent":["import { useId } from 'react';\n\n/**\n * Returner unik id som ikke endrer seg for hver render\n * @param initial id som vil overstyre react sin useId\n * @returns stable id-string\n */\nexport const useIdWithFallback = (initial?: string): string => {\n const fallbackId = useId();\n\n return initial || fallbackId;\n};\n"],"mappings":";;;;;;;AAOA,IAAa,qBAAqB,YAA6B;CAC7D,MAAM,aAAa,OAAO;CAE1B,OAAO,WAAW"}
1
+ {"version":3,"file":"useIdWithFallback.js","names":[],"sources":["../../src/hooks/useIdWithFallback.ts"],"sourcesContent":["import { useId } from 'react';\n\n/**\n * Returner unik id som ikke endrer seg for hver render\n * @param initial id som vil overstyre react sin useId\n * @returns stable id-string\n */\nexport const useIdWithFallback = (initial?: string): string => {\n const fallbackId = useId();\n\n return initial || fallbackId;\n};\n"],"mappings":";;;;;;;AAOA,IAAa,qBAAqB,YAA6B;CAC7D,MAAM,aAAa,MAAM;CAEzB,OAAO,WAAW;AACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIntersectionObserver.js","names":[],"sources":["../../src/hooks/useIntersectionObserver.ts"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Lytt på endringer i synligheten (intersection) til et HTML-element. F.eks. kan du bruke denne til å kalle en callback\n * når elementet er i ferd med å forsvinne ut av vinduet.\n *\n * @param ref Element som skal observeres\n * @param callback Kalles når en endring i intersection er observert\n * @param options Objekt med options for IntersectionObserver, f.eks. threshold for å bestemme når callbacken skal fyres\n */\n\nexport const useIntersectionObserver = (\n ref: React.RefObject<Element | null>,\n callback: IntersectionObserverCallback,\n options?: IntersectionObserverInit\n): void => {\n useEffect(() => {\n const intersectionObserver = new IntersectionObserver(callback, options);\n\n if (ref?.current) {\n intersectionObserver.observe(ref.current);\n }\n\n return (): void => {\n if (ref?.current) {\n intersectionObserver.unobserve(ref.current);\n } else {\n intersectionObserver.disconnect();\n }\n };\n }, [ref, options]);\n};\n"],"mappings":";;;;;;;;;;AAWA,IAAa,2BACX,KACA,UACA,YACS;CACT,gBAAgB;EACd,MAAM,uBAAuB,IAAI,qBAAqB,UAAU,QAAQ;EAExE,IAAI,KAAK,SACP,qBAAqB,QAAQ,IAAI,QAAQ;EAG3C,aAAmB;GACjB,IAAI,KAAK,SACP,qBAAqB,UAAU,IAAI,QAAQ;QAE3C,qBAAqB,YAAY;;IAGpC,CAAC,KAAK,QAAQ,CAAC"}
1
+ {"version":3,"file":"useIntersectionObserver.js","names":[],"sources":["../../src/hooks/useIntersectionObserver.ts"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Lytt på endringer i synligheten (intersection) til et HTML-element. F.eks. kan du bruke denne til å kalle en callback\n * når elementet er i ferd med å forsvinne ut av vinduet.\n *\n * @param ref Element som skal observeres\n * @param callback Kalles når en endring i intersection er observert\n * @param options Objekt med options for IntersectionObserver, f.eks. threshold for å bestemme når callbacken skal fyres\n */\n\nexport const useIntersectionObserver = (\n ref: React.RefObject<Element | null>,\n callback: IntersectionObserverCallback,\n options?: IntersectionObserverInit\n): void => {\n useEffect(() => {\n const intersectionObserver = new IntersectionObserver(callback, options);\n\n if (ref?.current) {\n intersectionObserver.observe(ref.current);\n }\n\n return (): void => {\n if (ref?.current) {\n intersectionObserver.unobserve(ref.current);\n } else {\n intersectionObserver.disconnect();\n }\n };\n }, [ref, options]);\n};\n"],"mappings":";;;;;;;;;;AAWA,IAAa,2BACX,KACA,UACA,YACS;CACT,gBAAgB;EACd,MAAM,uBAAuB,IAAI,qBAAqB,UAAU,OAAO;EAEvE,IAAI,KAAK,SACP,qBAAqB,QAAQ,IAAI,OAAO;EAG1C,aAAmB;GACjB,IAAI,KAAK,SACP,qBAAqB,UAAU,IAAI,OAAO;QAE1C,qBAAqB,WAAW;EAEpC;CACF,GAAG,CAAC,KAAK,OAAO,CAAC;AACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useInterval.js","names":[],"sources":["../../src/hooks/useInterval.ts"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Kjør en funksjon ved intervaller basert på ønsket frequency.\n *\n * @param callback Funksjon som skal kjøres\n * @param frequency Hvor ofte vi skal kjøre funksjonen\n * @returns void\n */\nexport const useInterval = (callback: () => void, frequency = 10): void => {\n useEffect(() => {\n const timer = setInterval(callback, frequency);\n\n return (): void => {\n clearInterval(timer);\n };\n }, [callback, frequency]);\n};\n"],"mappings":";;;;;;;;;AASA,IAAa,eAAe,UAAsB,YAAY,OAAa;CACzE,gBAAgB;EACd,MAAM,QAAQ,YAAY,UAAU,UAAU;EAE9C,aAAmB;GACjB,cAAc,MAAM;;IAErB,CAAC,UAAU,UAAU,CAAC"}
1
+ {"version":3,"file":"useInterval.js","names":[],"sources":["../../src/hooks/useInterval.ts"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Kjør en funksjon ved intervaller basert på ønsket frequency.\n *\n * @param callback Funksjon som skal kjøres\n * @param frequency Hvor ofte vi skal kjøre funksjonen\n * @returns void\n */\nexport const useInterval = (callback: () => void, frequency = 10): void => {\n useEffect(() => {\n const timer = setInterval(callback, frequency);\n\n return (): void => {\n clearInterval(timer);\n };\n }, [callback, frequency]);\n};\n"],"mappings":";;;;;;;;;AASA,IAAa,eAAe,UAAsB,YAAY,OAAa;CACzE,gBAAgB;EACd,MAAM,QAAQ,YAAY,UAAU,SAAS;EAE7C,aAAmB;GACjB,cAAc,KAAK;EACrB;CACF,GAAG,CAAC,UAAU,SAAS,CAAC;AAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsMobileBreakpoint.js","names":[],"sources":["../../src/hooks/useIsMobileBreakpoint.ts"],"sourcesContent":["import { useBreakpoint } from './useBreakpoint';\nimport { breakpoints } from '../theme/grid';\n\nexport const useIsMobileBreakpoint = (): boolean => {\n const breakpoint = useBreakpoint();\n return breakpoint < breakpoints.md;\n};\n"],"mappings":";;;AAGA,IAAa,8BAAuC;CAElD,OADmB,eACZ,GAAa,YAAY"}
1
+ {"version":3,"file":"useIsMobileBreakpoint.js","names":[],"sources":["../../src/hooks/useIsMobileBreakpoint.ts"],"sourcesContent":["import { useBreakpoint } from './useBreakpoint';\nimport { breakpoints } from '../theme/grid';\n\nexport const useIsMobileBreakpoint = (): boolean => {\n const breakpoint = useBreakpoint();\n return breakpoint < breakpoints.md;\n};\n"],"mappings":";;;AAGA,IAAa,8BAAuC;CAElD,OADmB,cACZ,IAAa,YAAY;AAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsServerSide.js","names":[],"sources":["../../src/hooks/useIsServerSide.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nconst emptySubscribe = (): (() => void) => (): void => {};\nconst getClientSnapshot = (): boolean => false;\nconst getServerSnapshot = (): boolean => true;\n\n/**\n * Sjekk om React kjører på server, eller ikke.\n *\n * @returns true dersom koden kjører på server\n */\nexport const useIsServerSide = (): boolean => {\n return useSyncExternalStore(emptySubscribe, getClientSnapshot, getServerSnapshot);\n};\n"],"mappings":";;AAEA,IAAM,6BAAiD;AACvD,IAAM,0BAAmC;AACzC,IAAM,0BAAmC;;;;;;AAOzC,IAAa,wBAAiC;CAC5C,OAAO,qBAAqB,gBAAgB,mBAAmB,kBAAkB"}
1
+ {"version":3,"file":"useIsServerSide.js","names":[],"sources":["../../src/hooks/useIsServerSide.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nconst emptySubscribe = (): (() => void) => (): void => {};\nconst getClientSnapshot = (): boolean => false;\nconst getServerSnapshot = (): boolean => true;\n\n/**\n * Sjekk om React kjører på server, eller ikke.\n *\n * @returns true dersom koden kjører på server\n */\nexport const useIsServerSide = (): boolean => {\n return useSyncExternalStore(emptySubscribe, getClientSnapshot, getServerSnapshot);\n};\n"],"mappings":";;AAEA,IAAM,6BAAiD,CAAC;AACxD,IAAM,0BAAmC;AACzC,IAAM,0BAAmC;;;;;;AAOzC,IAAa,wBAAiC;CAC5C,OAAO,qBAAqB,gBAAgB,mBAAmB,iBAAiB;AAClF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsVisible.js","names":[],"sources":["../../src/hooks/useIsVisible.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useIntersectionObserver } from './useIntersectionObserver';\n\n/**\n * Sjekk om et HTML-element er synlig i vinduet, eller ikke.\n *\n * @param ref Element som skal observeres\n * @param threshold Hvor synlig må elementet være? Default = 1 (helt synlig)\n * @param options Objekt med options for IntersectionObserver, f.eks. threshold for å bestemme når callbacken skal fyres\n * @param initial Om elementet default skal antas å være synlig eller ikke. Default: ikke synlig\n * @returns true hvis objektet er synlig lik threshold eller mer, false hvis ikke\n */\nexport const useIsVisible = (\n ref: React.RefObject<Element | null>,\n threshold = 1,\n options?: IntersectionObserverInit,\n initial = false\n): boolean => {\n const [isVisible, setIsVisible] = useState(initial);\n\n const handleIntersectChange: IntersectionObserverCallback = entries => {\n setIsVisible(threshold === 0 ? entries[0].intersectionRatio !== threshold : entries[0].intersectionRatio >= threshold);\n };\n\n useIntersectionObserver(ref, handleIntersectChange, { threshold, ...options });\n\n return isVisible;\n};\n"],"mappings":";;;;;;;;;;;;AAaA,IAAa,gBACX,KACA,YAAY,GACZ,SACA,UAAU,UACE;CACZ,MAAM,CAAC,WAAW,gBAAgB,SAAS,QAAQ;CAEnD,MAAM,yBAAsD,YAAW;EACrE,aAAa,cAAc,IAAI,QAAQ,GAAG,sBAAsB,YAAY,QAAQ,GAAG,qBAAqB,UAAU;;CAGxH,wBAAwB,KAAK,uBAAuB;EAAE;EAAW,GAAG;EAAS,CAAC;CAE9E,OAAO"}
1
+ {"version":3,"file":"useIsVisible.js","names":[],"sources":["../../src/hooks/useIsVisible.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useIntersectionObserver } from './useIntersectionObserver';\n\n/**\n * Sjekk om et HTML-element er synlig i vinduet, eller ikke.\n *\n * @param ref Element som skal observeres\n * @param threshold Hvor synlig må elementet være? Default = 1 (helt synlig)\n * @param options Objekt med options for IntersectionObserver, f.eks. threshold for å bestemme når callbacken skal fyres\n * @param initial Om elementet default skal antas å være synlig eller ikke. Default: ikke synlig\n * @returns true hvis objektet er synlig lik threshold eller mer, false hvis ikke\n */\nexport const useIsVisible = (\n ref: React.RefObject<Element | null>,\n threshold = 1,\n options?: IntersectionObserverInit,\n initial = false\n): boolean => {\n const [isVisible, setIsVisible] = useState(initial);\n\n const handleIntersectChange: IntersectionObserverCallback = entries => {\n setIsVisible(threshold === 0 ? entries[0].intersectionRatio !== threshold : entries[0].intersectionRatio >= threshold);\n };\n\n useIntersectionObserver(ref, handleIntersectChange, { threshold, ...options });\n\n return isVisible;\n};\n"],"mappings":";;;;;;;;;;;;AAaA,IAAa,gBACX,KACA,YAAY,GACZ,SACA,UAAU,UACE;CACZ,MAAM,CAAC,WAAW,gBAAgB,SAAS,OAAO;CAElD,MAAM,yBAAsD,YAAW;EACrE,aAAa,cAAc,IAAI,QAAQ,GAAG,sBAAsB,YAAY,QAAQ,GAAG,qBAAqB,SAAS;CACvH;CAEA,wBAAwB,KAAK,uBAAuB;EAAE;EAAW,GAAG;CAAQ,CAAC;CAE7E,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useKeyboardEvent.js","names":[],"sources":["../../src/hooks/useKeyboardEvent.ts"],"sourcesContent":["import { useEffect } from 'react';\n\ntype KeyboardEvents = {\n [K in keyof HTMLElementEventMap]: HTMLElementEventMap[K] extends KeyboardEvent ? K : never;\n}[keyof HTMLElementEventMap];\n\n/**\n * Kjør en callback når bruker skriver på tastaturet.\n * @param ref Element som skal lyttes på.\n * @param callback Callback som kjøres når det skjer en event.\n * @param key Knapp, eller liste med knapper, som skal trigge callback\n * @param events Liste med keyboard-events som skal trigge callback. Default: \"keydown\"\n */\nexport const useKeyboardEvent = (\n ref: React.RefObject<HTMLElement | null>,\n callback: (event: KeyboardEvent) => void,\n key: string | string[],\n events: KeyboardEvents[] = ['keydown']\n): void => {\n useEffect(() => {\n const element = ref.current;\n if (!element) {\n return;\n }\n\n const handleKeyboardEvent = (event: KeyboardEvent): void => {\n if (event.key === key || (Array.isArray(key) && key.includes(event.key))) {\n callback(event);\n }\n };\n\n events.forEach(eventName => element.addEventListener(eventName, handleKeyboardEvent));\n\n return (): void => {\n events.forEach(eventName => element.removeEventListener(eventName, handleKeyboardEvent));\n };\n }, [ref, callback, events, key]);\n};\n"],"mappings":";;;;;;;;;AAaA,IAAa,oBACX,KACA,UACA,KACA,SAA2B,CAAC,UAAU,KAC7B;CACT,gBAAgB;EACd,MAAM,UAAU,IAAI;EACpB,IAAI,CAAC,SACH;EAGF,MAAM,uBAAuB,UAA+B;GAC1D,IAAI,MAAM,QAAQ,OAAQ,MAAM,QAAQ,IAAI,IAAI,IAAI,SAAS,MAAM,IAAI,EACrE,SAAS,MAAM;;EAInB,OAAO,SAAQ,cAAa,QAAQ,iBAAiB,WAAW,oBAAoB,CAAC;EAErF,aAAmB;GACjB,OAAO,SAAQ,cAAa,QAAQ,oBAAoB,WAAW,oBAAoB,CAAC;;IAEzF;EAAC;EAAK;EAAU;EAAQ;EAAI,CAAC"}
1
+ {"version":3,"file":"useKeyboardEvent.js","names":[],"sources":["../../src/hooks/useKeyboardEvent.ts"],"sourcesContent":["import { useEffect } from 'react';\n\ntype KeyboardEvents = {\n [K in keyof HTMLElementEventMap]: HTMLElementEventMap[K] extends KeyboardEvent ? K : never;\n}[keyof HTMLElementEventMap];\n\n/**\n * Kjør en callback når bruker skriver på tastaturet.\n * @param ref Element som skal lyttes på.\n * @param callback Callback som kjøres når det skjer en event.\n * @param key Knapp, eller liste med knapper, som skal trigge callback\n * @param events Liste med keyboard-events som skal trigge callback. Default: \"keydown\"\n */\nexport const useKeyboardEvent = (\n ref: React.RefObject<HTMLElement | null>,\n callback: (event: KeyboardEvent) => void,\n key: string | string[],\n events: KeyboardEvents[] = ['keydown']\n): void => {\n useEffect(() => {\n const element = ref.current;\n if (!element) {\n return;\n }\n\n const handleKeyboardEvent = (event: KeyboardEvent): void => {\n if (event.key === key || (Array.isArray(key) && key.includes(event.key))) {\n callback(event);\n }\n };\n\n events.forEach(eventName => element.addEventListener(eventName, handleKeyboardEvent));\n\n return (): void => {\n events.forEach(eventName => element.removeEventListener(eventName, handleKeyboardEvent));\n };\n }, [ref, callback, events, key]);\n};\n"],"mappings":";;;;;;;;;AAaA,IAAa,oBACX,KACA,UACA,KACA,SAA2B,CAAC,SAAS,MAC5B;CACT,gBAAgB;EACd,MAAM,UAAU,IAAI;EACpB,IAAI,CAAC,SACH;EAGF,MAAM,uBAAuB,UAA+B;GAC1D,IAAI,MAAM,QAAQ,OAAQ,MAAM,QAAQ,GAAG,KAAK,IAAI,SAAS,MAAM,GAAG,GACpE,SAAS,KAAK;EAElB;EAEA,OAAO,SAAQ,cAAa,QAAQ,iBAAiB,WAAW,mBAAmB,CAAC;EAEpF,aAAmB;GACjB,OAAO,SAAQ,cAAa,QAAQ,oBAAoB,WAAW,mBAAmB,CAAC;EACzF;CACF,GAAG;EAAC;EAAK;EAAU;EAAQ;CAAG,CAAC;AACjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLanguage.js","names":[],"sources":["../../src/hooks/useLanguage.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { LanguageContextType } from '../utils/language';\n\nexport const LanguageContext = createContext<LanguageContextType | undefined>(undefined);\n\n/**\n * Hent nåværende språk fra context\n * @param fallbackLanguage Språk som brukes som fallback dersom hooken brukes utenfor contexten\n * @returns LanguageContext\n */\nexport const useLanguage = <T extends string>(fallbackLanguage: T): LanguageContextType<T> => {\n const context = useContext(LanguageContext as unknown as React.Context<LanguageContextType<T>>);\n\n if (!context) {\n return { language: fallbackLanguage };\n }\n\n return context;\n};\n"],"mappings":";;AAIA,IAAa,kBAAkB,cAA+C,KAAA,EAAU;;;;;;AAOxF,IAAa,eAAiC,qBAAgD;CAC5F,MAAM,UAAU,WAAW,gBAAoE;CAE/F,IAAI,CAAC,SACH,OAAO,EAAE,UAAU,kBAAkB;CAGvC,OAAO"}
1
+ {"version":3,"file":"useLanguage.js","names":[],"sources":["../../src/hooks/useLanguage.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { LanguageContextType } from '../utils/language';\n\nexport const LanguageContext = createContext<LanguageContextType | undefined>(undefined);\n\n/**\n * Hent nåværende språk fra context\n * @param fallbackLanguage Språk som brukes som fallback dersom hooken brukes utenfor contexten\n * @returns LanguageContext\n */\nexport const useLanguage = <T extends string>(fallbackLanguage: T): LanguageContextType<T> => {\n const context = useContext(LanguageContext as unknown as React.Context<LanguageContextType<T>>);\n\n if (!context) {\n return { language: fallbackLanguage };\n }\n\n return context;\n};\n"],"mappings":";;AAIA,IAAa,kBAAkB,cAA+C,KAAA,CAAS;;;;;;AAOvF,IAAa,eAAiC,qBAAgD;CAC5F,MAAM,UAAU,WAAW,eAAmE;CAE9F,IAAI,CAAC,SACH,OAAO,EAAE,UAAU,iBAAiB;CAGtC,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLayoutEvent.js","names":[],"sources":["../../src/hooks/useLayoutEvent.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { debounce } from '../utils/debounce';\n\n/**\n * Lytt på ulike layout-events som har betydning for rendring og størrelse på elementer.\n *\n * @param callback Kalles for hver event\n * @param events Liste med events som skal lyttes på\n * @param debounceMs Begrens kall til callback til x antall ms\n */\nexport const useLayoutEvent = (callback: () => void, events = ['layoutchange', 'resize', 'orientationchange'], debounceMs = 10): void => {\n useEffect(() => {\n if (typeof window !== 'object') return;\n const [debouncedCallback, teardown] = debounce(callback, debounceMs);\n\n events.forEach(eventName => window.addEventListener(eventName, debouncedCallback));\n\n debouncedCallback();\n\n return (): void => {\n teardown();\n events.forEach(eventName => window.removeEventListener(eventName, debouncedCallback));\n };\n }, []);\n};\n"],"mappings":";;;;;;;;;;AAWA,IAAa,kBAAkB,UAAsB,SAAS;CAAC;CAAgB;CAAU;CAAoB,EAAE,aAAa,OAAa;CACvI,gBAAgB;EACd,IAAI,OAAO,WAAW,UAAU;EAChC,MAAM,CAAC,mBAAmB,YAAY,SAAS,UAAU,WAAW;EAEpE,OAAO,SAAQ,cAAa,OAAO,iBAAiB,WAAW,kBAAkB,CAAC;EAElF,mBAAmB;EAEnB,aAAmB;GACjB,UAAU;GACV,OAAO,SAAQ,cAAa,OAAO,oBAAoB,WAAW,kBAAkB,CAAC;;IAEtF,EAAE,CAAC"}
1
+ {"version":3,"file":"useLayoutEvent.js","names":[],"sources":["../../src/hooks/useLayoutEvent.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { debounce } from '../utils/debounce';\n\n/**\n * Lytt på ulike layout-events som har betydning for rendring og størrelse på elementer.\n *\n * @param callback Kalles for hver event\n * @param events Liste med events som skal lyttes på\n * @param debounceMs Begrens kall til callback til x antall ms\n */\nexport const useLayoutEvent = (callback: () => void, events = ['layoutchange', 'resize', 'orientationchange'], debounceMs = 10): void => {\n useEffect(() => {\n if (typeof window !== 'object') return;\n const [debouncedCallback, teardown] = debounce(callback, debounceMs);\n\n events.forEach(eventName => window.addEventListener(eventName, debouncedCallback));\n\n debouncedCallback();\n\n return (): void => {\n teardown();\n events.forEach(eventName => window.removeEventListener(eventName, debouncedCallback));\n };\n }, []);\n};\n"],"mappings":";;;;;;;;;;AAWA,IAAa,kBAAkB,UAAsB,SAAS;CAAC;CAAgB;CAAU;AAAmB,GAAG,aAAa,OAAa;CACvI,gBAAgB;EACd,IAAI,OAAO,WAAW,UAAU;EAChC,MAAM,CAAC,mBAAmB,YAAY,SAAS,UAAU,UAAU;EAEnE,OAAO,SAAQ,cAAa,OAAO,iBAAiB,WAAW,iBAAiB,CAAC;EAEjF,kBAAkB;EAElB,aAAmB;GACjB,SAAS;GACT,OAAO,SAAQ,cAAa,OAAO,oBAAoB,WAAW,iBAAiB,CAAC;EACtF;CACF,GAAG,CAAC,CAAC;AACP"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOutsideEvent.js","names":[],"sources":["../../src/hooks/useOutsideEvent.ts"],"sourcesContent":["import { useEffect } from 'react';\n\ntype OutsideEvents = {\n [K in keyof DocumentEventMap]: DocumentEventMap[K] extends MouseEvent | FocusEvent ? K : never;\n}[keyof DocumentEventMap];\n\n/**\n * Custom hook for klikk eller fokus utenfor et gitt element (eller flere elementer)\n * @param ref Sjekker om det klikkes utenfor dette elementet/elementene\n * @param callback Callback-funksjon ved klikk utenfor elementet/elementene\n * @param events Type eventer å lytte på. Default: mousedown\n */\nexport const useOutsideEvent = (\n ref: React.RefObject<HTMLElement | null> | React.RefObject<HTMLElement | null>[],\n callback: (event: MouseEvent | FocusEvent) => void,\n events: OutsideEvents[] = ['mousedown']\n): void => {\n const refArray = Array.isArray(ref) ? ref : [ref];\n\n const handleOutsideEvent = (event: MouseEvent | FocusEvent): void => {\n if (refArray.every(r => r.current && !event.composedPath().includes(r.current))) {\n callback(event);\n }\n };\n\n useEffect(() => {\n events.forEach(eventName => document.addEventListener(eventName, handleOutsideEvent));\n\n return (): void => {\n events.forEach(eventName => document.removeEventListener(eventName, handleOutsideEvent));\n };\n }, [refArray, callback, events]);\n};\n"],"mappings":";;;;;;;;AAYA,IAAa,mBACX,KACA,UACA,SAA0B,CAAC,YAAY,KAC9B;CACT,MAAM,WAAW,MAAM,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI;CAEjD,MAAM,sBAAsB,UAAyC;EACnE,IAAI,SAAS,OAAM,MAAK,EAAE,WAAW,CAAC,MAAM,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,EAC7E,SAAS,MAAM;;CAInB,gBAAgB;EACd,OAAO,SAAQ,cAAa,SAAS,iBAAiB,WAAW,mBAAmB,CAAC;EAErF,aAAmB;GACjB,OAAO,SAAQ,cAAa,SAAS,oBAAoB,WAAW,mBAAmB,CAAC;;IAEzF;EAAC;EAAU;EAAU;EAAO,CAAC"}
1
+ {"version":3,"file":"useOutsideEvent.js","names":[],"sources":["../../src/hooks/useOutsideEvent.ts"],"sourcesContent":["import { useEffect } from 'react';\n\ntype OutsideEvents = {\n [K in keyof DocumentEventMap]: DocumentEventMap[K] extends MouseEvent | FocusEvent ? K : never;\n}[keyof DocumentEventMap];\n\n/**\n * Custom hook for klikk eller fokus utenfor et gitt element (eller flere elementer)\n * @param ref Sjekker om det klikkes utenfor dette elementet/elementene\n * @param callback Callback-funksjon ved klikk utenfor elementet/elementene\n * @param events Type eventer å lytte på. Default: mousedown\n */\nexport const useOutsideEvent = (\n ref: React.RefObject<HTMLElement | null> | React.RefObject<HTMLElement | null>[],\n callback: (event: MouseEvent | FocusEvent) => void,\n events: OutsideEvents[] = ['mousedown']\n): void => {\n const refArray = Array.isArray(ref) ? ref : [ref];\n\n const handleOutsideEvent = (event: MouseEvent | FocusEvent): void => {\n if (refArray.every(r => r.current && !event.composedPath().includes(r.current))) {\n callback(event);\n }\n };\n\n useEffect(() => {\n events.forEach(eventName => document.addEventListener(eventName, handleOutsideEvent));\n\n return (): void => {\n events.forEach(eventName => document.removeEventListener(eventName, handleOutsideEvent));\n };\n }, [refArray, callback, events]);\n};\n"],"mappings":";;;;;;;;AAYA,IAAa,mBACX,KACA,UACA,SAA0B,CAAC,WAAW,MAC7B;CACT,MAAM,WAAW,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;CAEhD,MAAM,sBAAsB,UAAyC;EACnE,IAAI,SAAS,OAAM,MAAK,EAAE,WAAW,CAAC,MAAM,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,GAC5E,SAAS,KAAK;CAElB;CAEA,gBAAgB;EACd,OAAO,SAAQ,cAAa,SAAS,iBAAiB,WAAW,kBAAkB,CAAC;EAEpF,aAAmB;GACjB,OAAO,SAAQ,cAAa,SAAS,oBAAoB,WAAW,kBAAkB,CAAC;EACzF;CACF,GAAG;EAAC;EAAU;EAAU;CAAM,CAAC;AACjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePrevious.js","names":[],"sources":["../../src/hooks/usePrevious.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\n/**\n * Brukes f.eks. i forbindelse med useState for å kunne sammenlikne ny verdi med gammel.\n * @param value Verdi du ønsker å ta vare på\n * @returns Forrige verdi\n */\nexport const usePrevious = <T>(value: T): T | null => {\n const ref = useRef<T | null>(null);\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n"],"mappings":";;;;;;;AAOA,IAAa,eAAkB,UAAuB;CACpD,MAAM,MAAM,OAAiB,KAAK;CAElC,gBAAgB;EACd,IAAI,UAAU;IACb,CAAC,MAAM,CAAC;CAEX,OAAO,IAAI"}
1
+ {"version":3,"file":"usePrevious.js","names":[],"sources":["../../src/hooks/usePrevious.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\n/**\n * Brukes f.eks. i forbindelse med useState for å kunne sammenlikne ny verdi med gammel.\n * @param value Verdi du ønsker å ta vare på\n * @returns Forrige verdi\n */\nexport const usePrevious = <T>(value: T): T | null => {\n const ref = useRef<T | null>(null);\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n"],"mappings":";;;;;;;AAOA,IAAa,eAAkB,UAAuB;CACpD,MAAM,MAAM,OAAiB,IAAI;CAEjC,gBAAgB;EACd,IAAI,UAAU;CAChB,GAAG,CAAC,KAAK,CAAC;CAEV,OAAO,IAAI;AACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePseudoClasses.js","names":[],"sources":["../../src/hooks/usePseudoClasses.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useRef, useEffect, useState } from 'react';\n\n/**\n * Få vite når et element hovres over eller mottar fokus.\n * @param ref Element som skal observeres\n * @returns Objekt med ref og om objekt er hovered/focused\n */\nexport const usePseudoClasses = <T extends HTMLElement | SVGElement | null>(\n ref?: RefObject<T> | null\n): { refObject: RefObject<T | null>; isHovered: boolean; isFocused: boolean; isActive: boolean } => {\n const internalRef = useRef<T | null>(null);\n const refObject = ref ?? internalRef;\n const [isHovered, setIsHovered] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [isActive, setIsActive] = useState(false);\n\n useEffect(() => {\n const handleMouseEnter = (): void => setIsHovered(true);\n const handleMouseLeave = (): void => setIsHovered(false);\n const handleFocusIn = (): void => setIsFocused(true);\n const handleFocusOut = (): void => setIsFocused(false);\n const handlePointerDown = (): void => setIsActive(true);\n const handlePointerUp = (): void => setIsActive(false);\n const handlePointerLeave = (): void => setIsActive(false);\n\n refObject.current?.addEventListener('mouseenter', handleMouseEnter);\n refObject.current?.addEventListener('mouseleave', handleMouseLeave);\n refObject.current?.addEventListener('pointerenter', handleMouseEnter);\n refObject.current?.addEventListener('pointerleave', handleMouseLeave);\n refObject.current?.addEventListener('focusin', handleFocusIn);\n refObject.current?.addEventListener('focusout', handleFocusOut);\n refObject.current?.addEventListener('pointerdown', handlePointerDown);\n refObject.current?.addEventListener('pointerup', handlePointerUp);\n refObject.current?.addEventListener('pointerleave', handlePointerLeave);\n\n return (): void => {\n refObject.current?.removeEventListener('mouseenter', handleMouseEnter);\n refObject.current?.removeEventListener('mouseleave', handleMouseLeave);\n refObject.current?.removeEventListener('pointerenter', handleMouseEnter);\n refObject.current?.removeEventListener('pointerleave', handleMouseLeave);\n refObject.current?.removeEventListener('focusin', handleFocusIn);\n refObject.current?.removeEventListener('focusout', handleFocusOut);\n refObject.current?.removeEventListener('pointerdown', handlePointerDown);\n refObject.current?.removeEventListener('pointerup', handlePointerUp);\n refObject.current?.removeEventListener('pointerleave', handlePointerLeave);\n };\n }, [refObject]);\n\n return { refObject, isHovered, isFocused, isActive };\n};\n"],"mappings":";;;;;;;AAQA,IAAa,oBACX,QACkG;CAClG,MAAM,cAAc,OAAiB,KAAK;CAC1C,MAAM,YAAY,OAAO;CACzB,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CACjD,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CACjD,MAAM,CAAC,UAAU,eAAe,SAAS,MAAM;CAE/C,gBAAgB;EACd,MAAM,yBAA+B,aAAa,KAAK;EACvD,MAAM,yBAA+B,aAAa,MAAM;EACxD,MAAM,sBAA4B,aAAa,KAAK;EACpD,MAAM,uBAA6B,aAAa,MAAM;EACtD,MAAM,0BAAgC,YAAY,KAAK;EACvD,MAAM,wBAA8B,YAAY,MAAM;EACtD,MAAM,2BAAiC,YAAY,MAAM;EAEzD,UAAU,SAAS,iBAAiB,cAAc,iBAAiB;EACnE,UAAU,SAAS,iBAAiB,cAAc,iBAAiB;EACnE,UAAU,SAAS,iBAAiB,gBAAgB,iBAAiB;EACrE,UAAU,SAAS,iBAAiB,gBAAgB,iBAAiB;EACrE,UAAU,SAAS,iBAAiB,WAAW,cAAc;EAC7D,UAAU,SAAS,iBAAiB,YAAY,eAAe;EAC/D,UAAU,SAAS,iBAAiB,eAAe,kBAAkB;EACrE,UAAU,SAAS,iBAAiB,aAAa,gBAAgB;EACjE,UAAU,SAAS,iBAAiB,gBAAgB,mBAAmB;EAEvE,aAAmB;GACjB,UAAU,SAAS,oBAAoB,cAAc,iBAAiB;GACtE,UAAU,SAAS,oBAAoB,cAAc,iBAAiB;GACtE,UAAU,SAAS,oBAAoB,gBAAgB,iBAAiB;GACxE,UAAU,SAAS,oBAAoB,gBAAgB,iBAAiB;GACxE,UAAU,SAAS,oBAAoB,WAAW,cAAc;GAChE,UAAU,SAAS,oBAAoB,YAAY,eAAe;GAClE,UAAU,SAAS,oBAAoB,eAAe,kBAAkB;GACxE,UAAU,SAAS,oBAAoB,aAAa,gBAAgB;GACpE,UAAU,SAAS,oBAAoB,gBAAgB,mBAAmB;;IAE3E,CAAC,UAAU,CAAC;CAEf,OAAO;EAAE;EAAW;EAAW;EAAW;EAAU"}
1
+ {"version":3,"file":"usePseudoClasses.js","names":[],"sources":["../../src/hooks/usePseudoClasses.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useRef, useEffect, useState } from 'react';\n\n/**\n * Få vite når et element hovres over eller mottar fokus.\n * @param ref Element som skal observeres\n * @returns Objekt med ref og om objekt er hovered/focused\n */\nexport const usePseudoClasses = <T extends HTMLElement | SVGElement | null>(\n ref?: RefObject<T> | null\n): { refObject: RefObject<T | null>; isHovered: boolean; isFocused: boolean; isActive: boolean } => {\n const internalRef = useRef<T | null>(null);\n const refObject = ref ?? internalRef;\n const [isHovered, setIsHovered] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [isActive, setIsActive] = useState(false);\n\n useEffect(() => {\n const handleMouseEnter = (): void => setIsHovered(true);\n const handleMouseLeave = (): void => setIsHovered(false);\n const handleFocusIn = (): void => setIsFocused(true);\n const handleFocusOut = (): void => setIsFocused(false);\n const handlePointerDown = (): void => setIsActive(true);\n const handlePointerUp = (): void => setIsActive(false);\n const handlePointerLeave = (): void => setIsActive(false);\n\n refObject.current?.addEventListener('mouseenter', handleMouseEnter);\n refObject.current?.addEventListener('mouseleave', handleMouseLeave);\n refObject.current?.addEventListener('pointerenter', handleMouseEnter);\n refObject.current?.addEventListener('pointerleave', handleMouseLeave);\n refObject.current?.addEventListener('focusin', handleFocusIn);\n refObject.current?.addEventListener('focusout', handleFocusOut);\n refObject.current?.addEventListener('pointerdown', handlePointerDown);\n refObject.current?.addEventListener('pointerup', handlePointerUp);\n refObject.current?.addEventListener('pointerleave', handlePointerLeave);\n\n return (): void => {\n refObject.current?.removeEventListener('mouseenter', handleMouseEnter);\n refObject.current?.removeEventListener('mouseleave', handleMouseLeave);\n refObject.current?.removeEventListener('pointerenter', handleMouseEnter);\n refObject.current?.removeEventListener('pointerleave', handleMouseLeave);\n refObject.current?.removeEventListener('focusin', handleFocusIn);\n refObject.current?.removeEventListener('focusout', handleFocusOut);\n refObject.current?.removeEventListener('pointerdown', handlePointerDown);\n refObject.current?.removeEventListener('pointerup', handlePointerUp);\n refObject.current?.removeEventListener('pointerleave', handlePointerLeave);\n };\n }, [refObject]);\n\n return { refObject, isHovered, isFocused, isActive };\n};\n"],"mappings":";;;;;;;AAQA,IAAa,oBACX,QACkG;CAClG,MAAM,cAAc,OAAiB,IAAI;CACzC,MAAM,YAAY,OAAO;CACzB,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAChD,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAChD,MAAM,CAAC,UAAU,eAAe,SAAS,KAAK;CAE9C,gBAAgB;EACd,MAAM,yBAA+B,aAAa,IAAI;EACtD,MAAM,yBAA+B,aAAa,KAAK;EACvD,MAAM,sBAA4B,aAAa,IAAI;EACnD,MAAM,uBAA6B,aAAa,KAAK;EACrD,MAAM,0BAAgC,YAAY,IAAI;EACtD,MAAM,wBAA8B,YAAY,KAAK;EACrD,MAAM,2BAAiC,YAAY,KAAK;EAExD,UAAU,SAAS,iBAAiB,cAAc,gBAAgB;EAClE,UAAU,SAAS,iBAAiB,cAAc,gBAAgB;EAClE,UAAU,SAAS,iBAAiB,gBAAgB,gBAAgB;EACpE,UAAU,SAAS,iBAAiB,gBAAgB,gBAAgB;EACpE,UAAU,SAAS,iBAAiB,WAAW,aAAa;EAC5D,UAAU,SAAS,iBAAiB,YAAY,cAAc;EAC9D,UAAU,SAAS,iBAAiB,eAAe,iBAAiB;EACpE,UAAU,SAAS,iBAAiB,aAAa,eAAe;EAChE,UAAU,SAAS,iBAAiB,gBAAgB,kBAAkB;EAEtE,aAAmB;GACjB,UAAU,SAAS,oBAAoB,cAAc,gBAAgB;GACrE,UAAU,SAAS,oBAAoB,cAAc,gBAAgB;GACrE,UAAU,SAAS,oBAAoB,gBAAgB,gBAAgB;GACvE,UAAU,SAAS,oBAAoB,gBAAgB,gBAAgB;GACvE,UAAU,SAAS,oBAAoB,WAAW,aAAa;GAC/D,UAAU,SAAS,oBAAoB,YAAY,cAAc;GACjE,UAAU,SAAS,oBAAoB,eAAe,iBAAiB;GACvE,UAAU,SAAS,oBAAoB,aAAa,eAAe;GACnE,UAAU,SAAS,oBAAoB,gBAAgB,kBAAkB;EAC3E;CACF,GAAG,CAAC,SAAS,CAAC;CAEd,OAAO;EAAE;EAAW;EAAW;EAAW;CAAS;AACrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useResizeObserver.js","names":[],"sources":["../../src/hooks/useResizeObserver.ts"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\n\n/**\n * Lytt på endringer i størrelse på et element. Bruker ResizeObserver-APIet.\n *\n * @param ref Element som skal observeres.\n * @returns Object med høyde, bredde, x og y til elementet\n */\nexport const useResizeObserver = (ref?: React.RefObject<HTMLElement | null>): DOMRect | undefined => {\n const ticking = useRef(false);\n const [size, setSize] = useState<DOMRect>();\n useEffect(() => {\n const resizeObserver = new ResizeObserver(entries => {\n if (!ticking.current) {\n window.requestAnimationFrame(() => {\n setSize(entries[0].target.getBoundingClientRect());\n ticking.current = false;\n });\n }\n ticking.current = true;\n });\n if (ref?.current) {\n resizeObserver.observe(ref?.current);\n }\n\n return (): void => {\n if (ref?.current) {\n resizeObserver.unobserve(ref.current);\n } else {\n resizeObserver.disconnect();\n }\n };\n }, [ref]);\n\n return size;\n};\n"],"mappings":";;;;;;;;AAQA,IAAa,qBAAqB,QAAmE;CACnG,MAAM,UAAU,OAAO,MAAM;CAC7B,MAAM,CAAC,MAAM,WAAW,UAAmB;CAC3C,gBAAgB;EACd,MAAM,iBAAiB,IAAI,gBAAe,YAAW;GACnD,IAAI,CAAC,QAAQ,SACX,OAAO,4BAA4B;IACjC,QAAQ,QAAQ,GAAG,OAAO,uBAAuB,CAAC;IAClD,QAAQ,UAAU;KAClB;GAEJ,QAAQ,UAAU;IAClB;EACF,IAAI,KAAK,SACP,eAAe,QAAQ,KAAK,QAAQ;EAGtC,aAAmB;GACjB,IAAI,KAAK,SACP,eAAe,UAAU,IAAI,QAAQ;QAErC,eAAe,YAAY;;IAG9B,CAAC,IAAI,CAAC;CAET,OAAO"}
1
+ {"version":3,"file":"useResizeObserver.js","names":[],"sources":["../../src/hooks/useResizeObserver.ts"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\n\n/**\n * Lytt på endringer i størrelse på et element. Bruker ResizeObserver-APIet.\n *\n * @param ref Element som skal observeres.\n * @returns Object med høyde, bredde, x og y til elementet\n */\nexport const useResizeObserver = (ref?: React.RefObject<HTMLElement | null>): DOMRect | undefined => {\n const ticking = useRef(false);\n const [size, setSize] = useState<DOMRect>();\n useEffect(() => {\n const resizeObserver = new ResizeObserver(entries => {\n if (!ticking.current) {\n window.requestAnimationFrame(() => {\n setSize(entries[0].target.getBoundingClientRect());\n ticking.current = false;\n });\n }\n ticking.current = true;\n });\n if (ref?.current) {\n resizeObserver.observe(ref?.current);\n }\n\n return (): void => {\n if (ref?.current) {\n resizeObserver.unobserve(ref.current);\n } else {\n resizeObserver.disconnect();\n }\n };\n }, [ref]);\n\n return size;\n};\n"],"mappings":";;;;;;;;AAQA,IAAa,qBAAqB,QAAmE;CACnG,MAAM,UAAU,OAAO,KAAK;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAkB;CAC1C,gBAAgB;EACd,MAAM,iBAAiB,IAAI,gBAAe,YAAW;GACnD,IAAI,CAAC,QAAQ,SACX,OAAO,4BAA4B;IACjC,QAAQ,QAAQ,GAAG,OAAO,sBAAsB,CAAC;IACjD,QAAQ,UAAU;GACpB,CAAC;GAEH,QAAQ,UAAU;EACpB,CAAC;EACD,IAAI,KAAK,SACP,eAAe,QAAQ,KAAK,OAAO;EAGrC,aAAmB;GACjB,IAAI,KAAK,SACP,eAAe,UAAU,IAAI,OAAO;QAEpC,eAAe,WAAW;EAE9B;CACF,GAAG,CAAC,GAAG,CAAC;CAER,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useReturnFocusOnUnmount.js","names":[],"sources":["../../src/hooks/useReturnFocusOnUnmount.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { deepContains } from '../utils/deepContains';\nimport { getDocumentActiveElement } from '../utils/focus';\n\n/**\n * A hook that stores the currently focused element when the component mounts,\n * and returns focus to it when the component unmounts.\n */\nexport const useReturnFocusOnUnmount = (ref: React.RefObject<HTMLElement | null>): void => {\n const previouslyFocusedElementRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n // Captures which element was focused on mount\n // const activeElement = document.activeElement;\n const activeElement = ref.current ? getDocumentActiveElement(ref.current) : null;\n if (activeElement instanceof HTMLElement) {\n previouslyFocusedElementRef.current = activeElement;\n }\n\n // Restores focus to the stored element on unmount\n return (): void => {\n if (previouslyFocusedElementRef.current instanceof HTMLElement && deepContains(document, previouslyFocusedElementRef.current)) {\n previouslyFocusedElementRef.current.focus();\n }\n };\n }, []);\n};\n"],"mappings":";;;;;;;;AASA,IAAa,2BAA2B,QAAmD;CACzF,MAAM,8BAA8B,OAA2B,KAAK;CAEpE,gBAAgB;EAGd,MAAM,gBAAgB,IAAI,UAAU,yBAAyB,IAAI,QAAQ,GAAG;EAC5E,IAAI,yBAAyB,aAC3B,4BAA4B,UAAU;EAIxC,aAAmB;GACjB,IAAI,4BAA4B,mBAAmB,eAAe,aAAa,UAAU,4BAA4B,QAAQ,EAC3H,4BAA4B,QAAQ,OAAO;;IAG9C,EAAE,CAAC"}
1
+ {"version":3,"file":"useReturnFocusOnUnmount.js","names":[],"sources":["../../src/hooks/useReturnFocusOnUnmount.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { deepContains } from '../utils/deepContains';\nimport { getDocumentActiveElement } from '../utils/focus';\n\n/**\n * A hook that stores the currently focused element when the component mounts,\n * and returns focus to it when the component unmounts.\n */\nexport const useReturnFocusOnUnmount = (ref: React.RefObject<HTMLElement | null>): void => {\n const previouslyFocusedElementRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n // Captures which element was focused on mount\n // const activeElement = document.activeElement;\n const activeElement = ref.current ? getDocumentActiveElement(ref.current) : null;\n if (activeElement instanceof HTMLElement) {\n previouslyFocusedElementRef.current = activeElement;\n }\n\n // Restores focus to the stored element on unmount\n return (): void => {\n if (previouslyFocusedElementRef.current instanceof HTMLElement && deepContains(document, previouslyFocusedElementRef.current)) {\n previouslyFocusedElementRef.current.focus();\n }\n };\n }, []);\n};\n"],"mappings":";;;;;;;;AASA,IAAa,2BAA2B,QAAmD;CACzF,MAAM,8BAA8B,OAA2B,IAAI;CAEnE,gBAAgB;EAGd,MAAM,gBAAgB,IAAI,UAAU,yBAAyB,IAAI,OAAO,IAAI;EAC5E,IAAI,yBAAyB,aAC3B,4BAA4B,UAAU;EAIxC,aAAmB;GACjB,IAAI,4BAA4B,mBAAmB,eAAe,aAAa,UAAU,4BAA4B,OAAO,GAC1H,4BAA4B,QAAQ,MAAM;EAE9C;CACF,GAAG,CAAC,CAAC;AACP"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRovingFocus.js","names":[],"sources":["../../src/hooks/useRovingFocus.tsx"],"sourcesContent":["// Inspiration from https://www.joshuawootonn.com/react-roving-tabindex\nimport { useEffect } from 'react';\n\nimport { useKeyboardEvent } from './useKeyboardEvent';\nimport { KeyboardEventKey } from '../constants';\n\nexport const useRovingFocus = (\n /** Function to run when new index is set */\n handleNewIndex: (index: number) => void,\n /** List of elements that should have rocing focus */\n inputRefList: React.RefObject<React.RefObject<HTMLElement | null>[] | null | undefined>,\n /** Ref of container that should have the keyboard event handler */\n containerRef: React.RefObject<HTMLElement | null>,\n /** Indicated wether right/left or up/down arrows should be used for navigation. Default is up/down. */\n leftRightNavigation?: boolean\n): void => {\n leftRightNavigation = leftRightNavigation ?? false;\n\n // Initialize only first index to be tabbable\n useEffect(() => {\n if (!inputRefList.current) {\n return;\n }\n inputRefList.current.forEach(ref => {\n ref.current?.setAttribute('tabIndex', '-1');\n });\n inputRefList.current[0]?.current?.setAttribute('tabIndex', '0');\n }, []);\n\n const handleKeyboardNavigation = (event: KeyboardEvent): void => {\n if (event.key === KeyboardEventKey.Tab) {\n return;\n }\n event.preventDefault();\n\n if (!inputRefList.current) {\n return;\n }\n const index = inputRefList.current.findIndex(x => x.current === event.target);\n let nextIndex = index;\n\n if (event.key === KeyboardEventKey.Home) {\n nextIndex = 0;\n } else if (event.key === KeyboardEventKey.End) {\n nextIndex = inputRefList.current.length - 1;\n } else if (\n (event.key === KeyboardEventKey.ArrowDown || event.key === KeyboardEventKey.ArrowRight) &&\n index < inputRefList.current.length - 1\n ) {\n nextIndex = index + 1;\n } else if ((event.key === KeyboardEventKey.ArrowUp || event.key === KeyboardEventKey.ArrowLeft) && index > 0) {\n nextIndex = index - 1;\n } else if (event.key === KeyboardEventKey.Enter || event.key === KeyboardEventKey.Space) {\n nextIndex = index;\n }\n\n if (nextIndex !== -1) {\n inputRefList.current?.forEach((ref, i) => {\n if (ref.current) {\n ref.current.tabIndex = i === nextIndex ? 0 : -1;\n }\n });\n inputRefList.current[nextIndex]?.current?.focus();\n inputRefList.current[nextIndex]?.current?.click?.();\n handleNewIndex(nextIndex);\n }\n };\n\n const commonKeys = [KeyboardEventKey.End, KeyboardEventKey.Enter, KeyboardEventKey.Escape, KeyboardEventKey.Home];\n\n const arrowKeys = leftRightNavigation\n ? [KeyboardEventKey.ArrowRight, KeyboardEventKey.ArrowLeft]\n : [KeyboardEventKey.ArrowUp, KeyboardEventKey.ArrowDown];\n\n useKeyboardEvent(containerRef, handleKeyboardNavigation, [...commonKeys, ...arrowKeys]);\n};\n"],"mappings":";;;;AAMA,IAAa,kBAEX,gBAEA,cAEA,cAEA,wBACS;CACT,sBAAsB,uBAAuB;CAG7C,gBAAgB;EACd,IAAI,CAAC,aAAa,SAChB;EAEF,aAAa,QAAQ,SAAQ,QAAO;GAClC,IAAI,SAAS,aAAa,YAAY,KAAK;IAC3C;EACF,aAAa,QAAQ,IAAI,SAAS,aAAa,YAAY,IAAI;IAC9D,EAAE,CAAC;CAEN,MAAM,4BAA4B,UAA+B;EAC/D,IAAI,MAAM,QAAQ,iBAAiB,KACjC;EAEF,MAAM,gBAAgB;EAEtB,IAAI,CAAC,aAAa,SAChB;EAEF,MAAM,QAAQ,aAAa,QAAQ,WAAU,MAAK,EAAE,YAAY,MAAM,OAAO;EAC7E,IAAI,YAAY;EAEhB,IAAI,MAAM,QAAQ,iBAAiB,MACjC,YAAY;OACP,IAAI,MAAM,QAAQ,iBAAiB,KACxC,YAAY,aAAa,QAAQ,SAAS;OACrC,KACJ,MAAM,QAAQ,iBAAiB,aAAa,MAAM,QAAQ,iBAAiB,eAC5E,QAAQ,aAAa,QAAQ,SAAS,GAEtC,YAAY,QAAQ;OACf,KAAK,MAAM,QAAQ,iBAAiB,WAAW,MAAM,QAAQ,iBAAiB,cAAc,QAAQ,GACzG,YAAY,QAAQ;OACf,IAAI,MAAM,QAAQ,iBAAiB,SAAS,MAAM,QAAQ,iBAAiB,OAChF,YAAY;EAGd,IAAI,cAAc,IAAI;GACpB,aAAa,SAAS,SAAS,KAAK,MAAM;IACxC,IAAI,IAAI,SACN,IAAI,QAAQ,WAAW,MAAM,YAAY,IAAI;KAE/C;GACF,aAAa,QAAQ,YAAY,SAAS,OAAO;GACjD,aAAa,QAAQ,YAAY,SAAS,SAAS;GACnD,eAAe,UAAU;;;CAI7B,MAAM,aAAa;EAAC,iBAAiB;EAAK,iBAAiB;EAAO,iBAAiB;EAAQ,iBAAiB;EAAK;CAEjH,MAAM,YAAY,sBACd,CAAC,iBAAiB,YAAY,iBAAiB,UAAU,GACzD,CAAC,iBAAiB,SAAS,iBAAiB,UAAU;CAE1D,iBAAiB,cAAc,0BAA0B,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC"}
1
+ {"version":3,"file":"useRovingFocus.js","names":[],"sources":["../../src/hooks/useRovingFocus.tsx"],"sourcesContent":["// Inspiration from https://www.joshuawootonn.com/react-roving-tabindex\nimport { useEffect } from 'react';\n\nimport { useKeyboardEvent } from './useKeyboardEvent';\nimport { KeyboardEventKey } from '../constants';\n\nexport const useRovingFocus = (\n /** Function to run when new index is set */\n handleNewIndex: (index: number) => void,\n /** List of elements that should have rocing focus */\n inputRefList: React.RefObject<React.RefObject<HTMLElement | null>[] | null | undefined>,\n /** Ref of container that should have the keyboard event handler */\n containerRef: React.RefObject<HTMLElement | null>,\n /** Indicated wether right/left or up/down arrows should be used for navigation. Default is up/down. */\n leftRightNavigation?: boolean\n): void => {\n leftRightNavigation = leftRightNavigation ?? false;\n\n // Initialize only first index to be tabbable\n useEffect(() => {\n if (!inputRefList.current) {\n return;\n }\n inputRefList.current.forEach(ref => {\n ref.current?.setAttribute('tabIndex', '-1');\n });\n inputRefList.current[0]?.current?.setAttribute('tabIndex', '0');\n }, []);\n\n const handleKeyboardNavigation = (event: KeyboardEvent): void => {\n if (event.key === KeyboardEventKey.Tab) {\n return;\n }\n event.preventDefault();\n\n if (!inputRefList.current) {\n return;\n }\n const index = inputRefList.current.findIndex(x => x.current === event.target);\n let nextIndex = index;\n\n if (event.key === KeyboardEventKey.Home) {\n nextIndex = 0;\n } else if (event.key === KeyboardEventKey.End) {\n nextIndex = inputRefList.current.length - 1;\n } else if (\n (event.key === KeyboardEventKey.ArrowDown || event.key === KeyboardEventKey.ArrowRight) &&\n index < inputRefList.current.length - 1\n ) {\n nextIndex = index + 1;\n } else if ((event.key === KeyboardEventKey.ArrowUp || event.key === KeyboardEventKey.ArrowLeft) && index > 0) {\n nextIndex = index - 1;\n } else if (event.key === KeyboardEventKey.Enter || event.key === KeyboardEventKey.Space) {\n nextIndex = index;\n }\n\n if (nextIndex !== -1) {\n inputRefList.current?.forEach((ref, i) => {\n if (ref.current) {\n ref.current.tabIndex = i === nextIndex ? 0 : -1;\n }\n });\n inputRefList.current[nextIndex]?.current?.focus();\n inputRefList.current[nextIndex]?.current?.click?.();\n handleNewIndex(nextIndex);\n }\n };\n\n const commonKeys = [KeyboardEventKey.End, KeyboardEventKey.Enter, KeyboardEventKey.Escape, KeyboardEventKey.Home];\n\n const arrowKeys = leftRightNavigation\n ? [KeyboardEventKey.ArrowRight, KeyboardEventKey.ArrowLeft]\n : [KeyboardEventKey.ArrowUp, KeyboardEventKey.ArrowDown];\n\n useKeyboardEvent(containerRef, handleKeyboardNavigation, [...commonKeys, ...arrowKeys]);\n};\n"],"mappings":";;;;AAMA,IAAa,kBAEX,gBAEA,cAEA,cAEA,wBACS;CACT,sBAAsB,uBAAuB;CAG7C,gBAAgB;EACd,IAAI,CAAC,aAAa,SAChB;EAEF,aAAa,QAAQ,SAAQ,QAAO;GAClC,IAAI,SAAS,aAAa,YAAY,IAAI;EAC5C,CAAC;EACD,aAAa,QAAQ,IAAI,SAAS,aAAa,YAAY,GAAG;CAChE,GAAG,CAAC,CAAC;CAEL,MAAM,4BAA4B,UAA+B;EAC/D,IAAI,MAAM,QAAQ,iBAAiB,KACjC;EAEF,MAAM,eAAe;EAErB,IAAI,CAAC,aAAa,SAChB;EAEF,MAAM,QAAQ,aAAa,QAAQ,WAAU,MAAK,EAAE,YAAY,MAAM,MAAM;EAC5E,IAAI,YAAY;EAEhB,IAAI,MAAM,QAAQ,iBAAiB,MACjC,YAAY;OACP,IAAI,MAAM,QAAQ,iBAAiB,KACxC,YAAY,aAAa,QAAQ,SAAS;OACrC,KACJ,MAAM,QAAQ,iBAAiB,aAAa,MAAM,QAAQ,iBAAiB,eAC5E,QAAQ,aAAa,QAAQ,SAAS,GAEtC,YAAY,QAAQ;OACf,KAAK,MAAM,QAAQ,iBAAiB,WAAW,MAAM,QAAQ,iBAAiB,cAAc,QAAQ,GACzG,YAAY,QAAQ;OACf,IAAI,MAAM,QAAQ,iBAAiB,SAAS,MAAM,QAAQ,iBAAiB,OAChF,YAAY;EAGd,IAAI,cAAc,IAAI;GACpB,aAAa,SAAS,SAAS,KAAK,MAAM;IACxC,IAAI,IAAI,SACN,IAAI,QAAQ,WAAW,MAAM,YAAY,IAAI;GAEjD,CAAC;GACD,aAAa,QAAQ,YAAY,SAAS,MAAM;GAChD,aAAa,QAAQ,YAAY,SAAS,QAAQ;GAClD,eAAe,SAAS;EAC1B;CACF;CAEA,MAAM,aAAa;EAAC,iBAAiB;EAAK,iBAAiB;EAAO,iBAAiB;EAAQ,iBAAiB;CAAI;CAEhH,MAAM,YAAY,sBACd,CAAC,iBAAiB,YAAY,iBAAiB,SAAS,IACxD,CAAC,iBAAiB,SAAS,iBAAiB,SAAS;CAEzD,iBAAiB,cAAc,0BAA0B,CAAC,GAAG,YAAY,GAAG,SAAS,CAAC;AACxF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSize.js","names":[],"sources":["../../src/hooks/useSize.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Lytt på endringer i størrelse på et element\n *\n * @param ref Element som skal observeres.\n * @returns Object med høyde, bredde, x og y til elementet. Merk at objektet bare oppdates når høyde eller bredde endres, ikke når\n * posisjonen (x og y) endres.\n */\nexport const useSize = (ref?: React.RefObject<HTMLElement | null>): DOMRect | undefined => {\n const ticking = useRef(false);\n const [size, setSize] = useState<DOMRect>();\n useEffect(() => {\n const resizeObserver = new ResizeObserver(entries => {\n if (!ticking.current) {\n window.requestAnimationFrame(() => {\n setSize(entries[0].target.getBoundingClientRect());\n ticking.current = false;\n });\n }\n ticking.current = true;\n });\n if (ref?.current) {\n resizeObserver.observe(ref?.current);\n }\n return (): void => {\n if (ref?.current) {\n resizeObserver.unobserve(ref.current);\n } else {\n resizeObserver.disconnect();\n }\n };\n }, [ref?.current]);\n\n return size;\n};\n"],"mappings":";;;;;;;;;AASA,IAAa,WAAW,QAAmE;CACzF,MAAM,UAAU,OAAO,MAAM;CAC7B,MAAM,CAAC,MAAM,WAAW,UAAmB;CAC3C,gBAAgB;EACd,MAAM,iBAAiB,IAAI,gBAAe,YAAW;GACnD,IAAI,CAAC,QAAQ,SACX,OAAO,4BAA4B;IACjC,QAAQ,QAAQ,GAAG,OAAO,uBAAuB,CAAC;IAClD,QAAQ,UAAU;KAClB;GAEJ,QAAQ,UAAU;IAClB;EACF,IAAI,KAAK,SACP,eAAe,QAAQ,KAAK,QAAQ;EAEtC,aAAmB;GACjB,IAAI,KAAK,SACP,eAAe,UAAU,IAAI,QAAQ;QAErC,eAAe,YAAY;;IAG9B,CAAC,KAAK,QAAQ,CAAC;CAElB,OAAO"}
1
+ {"version":3,"file":"useSize.js","names":[],"sources":["../../src/hooks/useSize.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Lytt på endringer i størrelse på et element\n *\n * @param ref Element som skal observeres.\n * @returns Object med høyde, bredde, x og y til elementet. Merk at objektet bare oppdates når høyde eller bredde endres, ikke når\n * posisjonen (x og y) endres.\n */\nexport const useSize = (ref?: React.RefObject<HTMLElement | null>): DOMRect | undefined => {\n const ticking = useRef(false);\n const [size, setSize] = useState<DOMRect>();\n useEffect(() => {\n const resizeObserver = new ResizeObserver(entries => {\n if (!ticking.current) {\n window.requestAnimationFrame(() => {\n setSize(entries[0].target.getBoundingClientRect());\n ticking.current = false;\n });\n }\n ticking.current = true;\n });\n if (ref?.current) {\n resizeObserver.observe(ref?.current);\n }\n return (): void => {\n if (ref?.current) {\n resizeObserver.unobserve(ref.current);\n } else {\n resizeObserver.disconnect();\n }\n };\n }, [ref?.current]);\n\n return size;\n};\n"],"mappings":";;;;;;;;;AASA,IAAa,WAAW,QAAmE;CACzF,MAAM,UAAU,OAAO,KAAK;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAkB;CAC1C,gBAAgB;EACd,MAAM,iBAAiB,IAAI,gBAAe,YAAW;GACnD,IAAI,CAAC,QAAQ,SACX,OAAO,4BAA4B;IACjC,QAAQ,QAAQ,GAAG,OAAO,sBAAsB,CAAC;IACjD,QAAQ,UAAU;GACpB,CAAC;GAEH,QAAQ,UAAU;EACpB,CAAC;EACD,IAAI,KAAK,SACP,eAAe,QAAQ,KAAK,OAAO;EAErC,aAAmB;GACjB,IAAI,KAAK,SACP,eAAe,UAAU,IAAI,OAAO;QAEpC,eAAe,WAAW;EAE9B;CACF,GAAG,CAAC,KAAK,OAAO,CAAC;CAEjB,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useToggle.js","names":[],"sources":["../../src/hooks/useToggle.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nimport { usePrevious } from './usePrevious';\n\n/**\n * Hook for å toggle en boolean og kjøre en callback når verdien endres\n *\n * @param initialValue Initiell verdi for boolean\n * @param callback Funksjon som kalles når value endrer verdi (optional)\n * @returns Objekt med nåværende verdi og funksjon som kan kalles for å toggle verdien\n */\nexport const useToggle = (initialValue: boolean, callback?: (value: boolean) => void): { value: boolean; toggleValue: () => void } => {\n const [value, setValue] = useState(initialValue);\n const [prevInitialValue, setPrevInitialValue] = useState(initialValue);\n const previousValue = usePrevious(value);\n\n if (initialValue !== prevInitialValue) {\n setPrevInitialValue(initialValue);\n setValue(initialValue);\n }\n\n const toggleValue = (): void => {\n setValue(!value);\n };\n\n useEffect(() => {\n if (callback && value !== !!previousValue) {\n callback(value);\n }\n }, [value, callback]);\n\n return { value, toggleValue };\n};\n"],"mappings":";;;;;;;;;;AAWA,IAAa,aAAa,cAAuB,aAAqF;CACpI,MAAM,CAAC,OAAO,YAAY,SAAS,aAAa;CAChD,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,aAAa;CACtE,MAAM,gBAAgB,YAAY,MAAM;CAExC,IAAI,iBAAiB,kBAAkB;EACrC,oBAAoB,aAAa;EACjC,SAAS,aAAa;;CAGxB,MAAM,oBAA0B;EAC9B,SAAS,CAAC,MAAM;;CAGlB,gBAAgB;EACd,IAAI,YAAY,UAAU,CAAC,CAAC,eAC1B,SAAS,MAAM;IAEhB,CAAC,OAAO,SAAS,CAAC;CAErB,OAAO;EAAE;EAAO;EAAa"}
1
+ {"version":3,"file":"useToggle.js","names":[],"sources":["../../src/hooks/useToggle.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nimport { usePrevious } from './usePrevious';\n\n/**\n * Hook for å toggle en boolean og kjøre en callback når verdien endres\n *\n * @param initialValue Initiell verdi for boolean\n * @param callback Funksjon som kalles når value endrer verdi (optional)\n * @returns Objekt med nåværende verdi og funksjon som kan kalles for å toggle verdien\n */\nexport const useToggle = (initialValue: boolean, callback?: (value: boolean) => void): { value: boolean; toggleValue: () => void } => {\n const [value, setValue] = useState(initialValue);\n const [prevInitialValue, setPrevInitialValue] = useState(initialValue);\n const previousValue = usePrevious(value);\n\n if (initialValue !== prevInitialValue) {\n setPrevInitialValue(initialValue);\n setValue(initialValue);\n }\n\n const toggleValue = (): void => {\n setValue(!value);\n };\n\n useEffect(() => {\n if (callback && value !== !!previousValue) {\n callback(value);\n }\n }, [value, callback]);\n\n return { value, toggleValue };\n};\n"],"mappings":";;;;;;;;;;AAWA,IAAa,aAAa,cAAuB,aAAqF;CACpI,MAAM,CAAC,OAAO,YAAY,SAAS,YAAY;CAC/C,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,YAAY;CACrE,MAAM,gBAAgB,YAAY,KAAK;CAEvC,IAAI,iBAAiB,kBAAkB;EACrC,oBAAoB,YAAY;EAChC,SAAS,YAAY;CACvB;CAEA,MAAM,oBAA0B;EAC9B,SAAS,CAAC,KAAK;CACjB;CAEA,gBAAgB;EACd,IAAI,YAAY,UAAU,CAAC,CAAC,eAC1B,SAAS,KAAK;CAElB,GAAG,CAAC,OAAO,QAAQ,CAAC;CAEpB,OAAO;EAAE;EAAO;CAAY;AAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"usestopPropagation.js","names":[],"sources":["../../src/hooks/usestopPropagation.ts"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Stopp eventer fra å boble opp videre i DOMen\n * @param ref Element som skal overvåkes\n * @param events Navn på eventer som ikke skal boble opp\n */\nexport const useStopPropagation = (ref: React.RefObject<HTMLElement | null>, events: string[]): void => {\n const handleEvent = (e: Event): void => e.stopPropagation();\n\n useEffect(() => {\n events.forEach(name => ref?.current?.addEventListener(name, handleEvent));\n\n return (): void => events.forEach(name => ref.current?.removeEventListener(name, handleEvent));\n }, [ref]);\n};\n"],"mappings":";;;;;;;AAOA,IAAa,sBAAsB,KAA0C,WAA2B;CACtG,MAAM,eAAe,MAAmB,EAAE,iBAAiB;CAE3D,gBAAgB;EACd,OAAO,SAAQ,SAAQ,KAAK,SAAS,iBAAiB,MAAM,YAAY,CAAC;EAEzE,aAAmB,OAAO,SAAQ,SAAQ,IAAI,SAAS,oBAAoB,MAAM,YAAY,CAAC;IAC7F,CAAC,IAAI,CAAC"}
1
+ {"version":3,"file":"usestopPropagation.js","names":[],"sources":["../../src/hooks/usestopPropagation.ts"],"sourcesContent":["import { useEffect } from 'react';\n\n/**\n * Stopp eventer fra å boble opp videre i DOMen\n * @param ref Element som skal overvåkes\n * @param events Navn på eventer som ikke skal boble opp\n */\nexport const useStopPropagation = (ref: React.RefObject<HTMLElement | null>, events: string[]): void => {\n const handleEvent = (e: Event): void => e.stopPropagation();\n\n useEffect(() => {\n events.forEach(name => ref?.current?.addEventListener(name, handleEvent));\n\n return (): void => events.forEach(name => ref.current?.removeEventListener(name, handleEvent));\n }, [ref]);\n};\n"],"mappings":";;;;;;;AAOA,IAAa,sBAAsB,KAA0C,WAA2B;CACtG,MAAM,eAAe,MAAmB,EAAE,gBAAgB;CAE1D,gBAAgB;EACd,OAAO,SAAQ,SAAQ,KAAK,SAAS,iBAAiB,MAAM,WAAW,CAAC;EAExE,aAAmB,OAAO,SAAQ,SAAQ,IAAI,SAAS,oBAAoB,MAAM,WAAW,CAAC;CAC/F,GAAG,CAAC,GAAG,CAAC;AACV"}
@@ -1,23 +1,27 @@
1
1
  import { LanguageLocales } from "./constants.js";
2
2
  var HN_Designsystem_Filter_en_GB_default = {
3
- filterButtonText: "Find...",
3
+ filterButtonText: "Find ...",
4
4
  sortLabel: "Sorting",
5
5
  resetButtonText: "Reset",
6
- showButtonText: "Show {0} results",
7
- filterOverviewTitle: "Find...",
6
+ showButtonText: "Show results",
7
+ filterOverviewTitle: "Find ...",
8
8
  searchPlaceholder: "Search the list",
9
9
  searchClearButtonAriaLabel: "Reset",
10
- searchButtonAriaLabel: "Search"
10
+ searchButtonAriaLabel: "Search",
11
+ loadingText: "Loading results",
12
+ resultsText: "{0} results"
11
13
  };
12
14
  var HN_Designsystem_Filter_nb_NO_default = {
13
- filterButtonText: "Finn...",
15
+ filterButtonText: "Finn ...",
14
16
  sortLabel: "Sortering",
15
17
  resetButtonText: "Nullstill",
16
- showButtonText: "Vis {0} treff",
17
- filterOverviewTitle: "Finn...",
18
+ showButtonText: "Vis treff",
19
+ filterOverviewTitle: "Finn ...",
18
20
  searchPlaceholder: "Søk i listen",
19
21
  searchClearButtonAriaLabel: "Nullstill",
20
- searchButtonAriaLabel: "Søk"
22
+ searchButtonAriaLabel: "Søk",
23
+ loadingText: "Henter treff",
24
+ resultsText: "{0} treff"
21
25
  };
22
26
  //#endregion
23
27
  //#region src/components/Filter/resourceHelper.ts
@@ -1 +1 @@
1
- {"version":3,"file":"resourceHelper.js","names":[],"sources":["../src/resources/HN.Designsystem.Filter.en-GB.json","../src/resources/HN.Designsystem.Filter.nb-NO.json","../src/components/Filter/resourceHelper.ts"],"sourcesContent":["{\n \"filterButtonText\": \"Find...\",\n \"sortLabel\": \"Sorting\",\n \"resetButtonText\": \"Reset\",\n \"showButtonText\": \"Show {0} results\",\n \"filterOverviewTitle\": \"Find...\",\n \"searchPlaceholder\": \"Search the list\",\n \"searchClearButtonAriaLabel\": \"Reset\",\n \"searchButtonAriaLabel\": \"Search\"\n}\n","{\n \"filterButtonText\": \"Finn...\",\n \"sortLabel\": \"Sortering\",\n \"resetButtonText\": \"Nullstill\",\n \"showButtonText\": \"Vis {0} treff\",\n \"filterOverviewTitle\": \"Finn...\",\n \"searchPlaceholder\": \"Søk i listen\",\n \"searchClearButtonAriaLabel\": \"Nullstill\",\n \"searchButtonAriaLabel\": \"Søk\"\n}\n","import type { HNDesignsystemFilter } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport enGB from '../../resources/HN.Designsystem.Filter.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.Filter.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemFilter => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AEMA,IAAa,gBAAgB,aAAoD;CAC/E,QAAQ,UAAR;EACE,KAAK,gBAAgB,SACnB,OAAO;EACT,KAAK,gBAAgB;EACrB,SACE,OAAO"}
1
+ {"version":3,"file":"resourceHelper.js","names":[],"sources":["../src/resources/HN.Designsystem.Filter.en-GB.json","../src/resources/HN.Designsystem.Filter.nb-NO.json","../src/components/Filter/resourceHelper.ts"],"sourcesContent":["{\n \"filterButtonText\": \"Find ...\",\n \"sortLabel\": \"Sorting\",\n \"resetButtonText\": \"Reset\",\n \"showButtonText\": \"Show results\",\n \"filterOverviewTitle\": \"Find ...\",\n \"searchPlaceholder\": \"Search the list\",\n \"searchClearButtonAriaLabel\": \"Reset\",\n \"searchButtonAriaLabel\": \"Search\",\n \"loadingText\": \"Loading results\",\n \"resultsText\": \"{0} results\"\n}\n","{\n \"filterButtonText\": \"Finn ...\",\n \"sortLabel\": \"Sortering\",\n \"resetButtonText\": \"Nullstill\",\n \"showButtonText\": \"Vis treff\",\n \"filterOverviewTitle\": \"Finn ...\",\n \"searchPlaceholder\": \"Søk i listen\",\n \"searchClearButtonAriaLabel\": \"Nullstill\",\n \"searchButtonAriaLabel\": \"Søk\",\n \"loadingText\": \"Henter treff\",\n \"resultsText\": \"{0} treff\"\n}\n","import type { HNDesignsystemFilter } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport enGB from '../../resources/HN.Designsystem.Filter.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.Filter.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemFilter => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AEMA,IAAa,gBAAgB,aAAoD;CAC/E,QAAQ,UAAR;EACE,KAAK,gBAAgB,SACnB,OAAO;EACT,KAAK,gBAAgB;EACrB,SACE,OAAO;CACX;AACF"}
@@ -1,6 +1,6 @@
1
1
  declare const _default: {
2
- "ariaLabelBackButton": "Go back",
3
- "ariaLabelCloseBtn": "Close"
2
+ "ariaLabelCloseBtn": "Close",
3
+ "ariaLabelBackButton": "Go back"
4
4
  }
5
5
  ;
6
6
 
@@ -1,12 +1,14 @@
1
1
  declare const _default: {
2
- "filterButtonText": "Find...",
2
+ "filterButtonText": "Find ...",
3
3
  "sortLabel": "Sorting",
4
4
  "resetButtonText": "Reset",
5
- "showButtonText": "Show {0} results",
6
- "filterOverviewTitle": "Find...",
5
+ "showButtonText": "Show results",
6
+ "filterOverviewTitle": "Find ...",
7
7
  "searchPlaceholder": "Search the list",
8
8
  "searchClearButtonAriaLabel": "Reset",
9
- "searchButtonAriaLabel": "Search"
9
+ "searchButtonAriaLabel": "Search",
10
+ "loadingText": "Loading results",
11
+ "resultsText": "{0} results"
10
12
  }
11
13
  ;
12
14
 
@@ -1,12 +1,14 @@
1
1
  declare const _default: {
2
- "filterButtonText": "Finn...",
2
+ "filterButtonText": "Finn ...",
3
3
  "sortLabel": "Sortering",
4
4
  "resetButtonText": "Nullstill",
5
- "showButtonText": "Vis {0} treff",
6
- "filterOverviewTitle": "Finn...",
5
+ "showButtonText": "Vis treff",
6
+ "filterOverviewTitle": "Finn ...",
7
7
  "searchPlaceholder": "Søk i listen",
8
8
  "searchClearButtonAriaLabel": "Nullstill",
9
- "searchButtonAriaLabel": "Søk"
9
+ "searchButtonAriaLabel": "Søk",
10
+ "loadingText": "Henter treff",
11
+ "resultsText": "{0} treff"
10
12
  }
11
13
  ;
12
14
 
@@ -148,7 +148,7 @@ export type HNDesignsystemInput = {
148
148
 
149
149
  export type HNDesignsystemFilter = {
150
150
  /**
151
- * Finn...
151
+ * Finn ...
152
152
  */
153
153
  filterButtonText: string;
154
154
  /**
@@ -160,11 +160,11 @@ export type HNDesignsystemFilter = {
160
160
  */
161
161
  resetButtonText: string;
162
162
  /**
163
- * Vis {0} treff
163
+ * Vis treff
164
164
  */
165
165
  showButtonText: string;
166
166
  /**
167
- * Finn...
167
+ * Finn ...
168
168
  */
169
169
  filterOverviewTitle: string;
170
170
  /**
@@ -179,6 +179,14 @@ export type HNDesignsystemFilter = {
179
179
  * Søk
180
180
  */
181
181
  searchButtonAriaLabel: string;
182
+ /**
183
+ * Henter treff
184
+ */
185
+ loadingText: string;
186
+ /**
187
+ * {0} treff
188
+ */
189
+ resultsText: string;
182
190
  };
183
191
 
184
192
  export type HNDesignsystemChip = {