@jetshop/ui 6.3.8-alpha.20 → 6.3.8-alpha.30

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 (461) hide show
  1. package/Accordion/Accordion.d.ts +33 -0
  2. package/Accordion/Accordion.js +59 -0
  3. package/Accordion/Accordion.js.map +1 -0
  4. package/Auth/FormFields/CountriesInput.d.ts +16 -0
  5. package/Auth/FormFields/CountriesInput.js +28 -0
  6. package/Auth/FormFields/CountriesInput.js.map +1 -0
  7. package/Auth/LogInBehavior.d.ts +22 -0
  8. package/Auth/LogInBehavior.js +24 -0
  9. package/Auth/LogInBehavior.js.map +1 -0
  10. package/Auth/LogInFormProvider.d.ts +7 -0
  11. package/Auth/LogInFormProvider.js +70 -0
  12. package/Auth/LogInFormProvider.js.map +1 -0
  13. package/Auth/LogOut.d.ts +10 -0
  14. package/Auth/LogOut.js +24 -0
  15. package/Auth/LogOut.js.map +1 -0
  16. package/Auth/logInValidator.d.ts +10 -0
  17. package/Auth/logInValidator.js +16 -0
  18. package/Auth/logInValidator.js.map +1 -0
  19. package/Breadcrumbs/Breadcrumbs.d.ts +14 -0
  20. package/Breadcrumbs/Breadcrumbs.js +84 -0
  21. package/Breadcrumbs/Breadcrumbs.js.map +1 -0
  22. package/Breadcrumbs/getParentsOrCanonicalRoute.d.ts +3 -0
  23. package/Breadcrumbs/getParentsOrCanonicalRoute.js +14 -0
  24. package/Breadcrumbs/getParentsOrCanonicalRoute.js.map +1 -0
  25. package/Breadcrumbs/index.d.ts +1 -0
  26. package/Breadcrumbs/index.js +2 -0
  27. package/Breadcrumbs/index.js.map +1 -0
  28. package/Breakpoints.d.ts +12 -0
  29. package/Breakpoints.js +36 -0
  30. package/Breakpoints.js.map +1 -0
  31. package/Button/Button.d.ts +14 -0
  32. package/Button/Button.js +60 -0
  33. package/Button/Button.js.map +1 -0
  34. package/Button/SecondaryButton.d.ts +2 -0
  35. package/Button/SecondaryButton.js +9 -0
  36. package/Button/SecondaryButton.js.map +1 -0
  37. package/Button/TrendButton.d.ts +2 -0
  38. package/Button/TrendButton.js +8 -0
  39. package/Button/TrendButton.js.map +1 -0
  40. package/Button/index.d.ts +4 -0
  41. package/Button/index.js +5 -0
  42. package/Button/index.js.map +1 -0
  43. package/CategoryLink.d.ts +11 -0
  44. package/CategoryLink.js +49 -0
  45. package/CategoryLink.js.map +1 -0
  46. package/ChannelSelector/ChannelListItem.d.ts +10 -0
  47. package/ChannelSelector/ChannelListItem.js +51 -0
  48. package/ChannelSelector/ChannelListItem.js.map +1 -0
  49. package/ChannelSelector/ChannelSelector.d.ts +63 -0
  50. package/ChannelSelector/ChannelSelector.js +80 -0
  51. package/ChannelSelector/ChannelSelector.js.map +1 -0
  52. package/ChannelSelector/ChannelSelectorButtons.d.ts +2 -0
  53. package/ChannelSelector/ChannelSelectorButtons.js +20 -0
  54. package/ChannelSelector/ChannelSelectorButtons.js.map +1 -0
  55. package/ChannelSelector/Channels.d.ts +17 -0
  56. package/ChannelSelector/Channels.js +12 -0
  57. package/ChannelSelector/Channels.js.map +1 -0
  58. package/ChannelSelector/LargeSelector.d.ts +3 -0
  59. package/ChannelSelector/LargeSelector.js +67 -0
  60. package/ChannelSelector/LargeSelector.js.map +1 -0
  61. package/ChannelSelector/MiniSelector.d.ts +4 -0
  62. package/ChannelSelector/MiniSelector.js +58 -0
  63. package/ChannelSelector/MiniSelector.js.map +1 -0
  64. package/ChannelSelector/Region.d.ts +28 -0
  65. package/ChannelSelector/Region.js +21 -0
  66. package/ChannelSelector/Region.js.map +1 -0
  67. package/ChannelSelector/groupBy.d.ts +7 -0
  68. package/ChannelSelector/groupBy.js +16 -0
  69. package/ChannelSelector/groupBy.js.map +1 -0
  70. package/Checkbox/Checkbox.d.ts +14 -0
  71. package/Checkbox/Checkbox.js +70 -0
  72. package/Checkbox/Checkbox.js.map +1 -0
  73. package/Checkbox/CheckboxGroup.d.ts +27 -0
  74. package/Checkbox/CheckboxGroup.js +22 -0
  75. package/Checkbox/CheckboxGroup.js.map +1 -0
  76. package/Checkbox/index.d.ts +2 -0
  77. package/Checkbox/index.js +3 -0
  78. package/Checkbox/index.js.map +1 -0
  79. package/CloudflareImage/BaseImage.d.ts +39 -0
  80. package/CloudflareImage/BaseImage.js +192 -0
  81. package/CloudflareImage/BaseImage.js.map +1 -0
  82. package/CloudflareImage/Fallback.d.ts +5 -0
  83. package/CloudflareImage/Fallback.js +4 -0
  84. package/CloudflareImage/Fallback.js.map +1 -0
  85. package/CloudflareImage/FlightImage.d.ts +51 -0
  86. package/CloudflareImage/FlightImage.js +61 -0
  87. package/CloudflareImage/FlightImage.js.map +1 -0
  88. package/CloudflareImage/FlightImage.test.js +277 -0
  89. package/CloudflareImage/Image.d.ts +2 -0
  90. package/CloudflareImage/Image.js +3 -0
  91. package/CloudflareImage/Image.js.map +1 -0
  92. package/CloudflareImage/index.d.ts +1 -0
  93. package/CloudflareImage/index.js +2 -0
  94. package/CloudflareImage/index.js.map +1 -0
  95. package/CloudflareImage/useConstructImage.d.ts +49 -0
  96. package/CloudflareImage/useConstructImage.js +122 -0
  97. package/CloudflareImage/useConstructImage.js.map +1 -0
  98. package/CloudflareImage/utils/aspectRatioToFraction.d.ts +2 -0
  99. package/CloudflareImage/utils/aspectRatioToFraction.js +11 -0
  100. package/CloudflareImage/utils/aspectRatioToFraction.js.map +1 -0
  101. package/CloudflareImage/utils/getFullUrl.d.ts +6 -0
  102. package/CloudflareImage/utils/getFullUrl.js +18 -0
  103. package/CloudflareImage/utils/getFullUrl.js.map +1 -0
  104. package/CloudflareImage/utils/getImageWidth.d.ts +1 -0
  105. package/CloudflareImage/utils/getImageWidth.js +12 -0
  106. package/CloudflareImage/utils/getImageWidth.js.map +1 -0
  107. package/CloudflareImage/utils/getImageWidths.d.ts +2 -0
  108. package/CloudflareImage/utils/getImageWidths.js +21 -0
  109. package/CloudflareImage/utils/getImageWidths.js.map +1 -0
  110. package/CloudflareImage/utils/getLQIP.d.ts +8 -0
  111. package/CloudflareImage/utils/getLQIP.js +21 -0
  112. package/CloudflareImage/utils/getLQIP.js.map +1 -0
  113. package/CloudflareImage/utils/getLargestSize.d.ts +7 -0
  114. package/CloudflareImage/utils/getLargestSize.js +17 -0
  115. package/CloudflareImage/utils/getLargestSize.js.map +1 -0
  116. package/CloudflareImage/utils/getSizeForBreakpoint.d.ts +2 -0
  117. package/CloudflareImage/utils/getSizeForBreakpoint.js +16 -0
  118. package/CloudflareImage/utils/getSizeForBreakpoint.js.map +1 -0
  119. package/CloudflareImage/utils/getSizesMap.d.ts +2 -0
  120. package/CloudflareImage/utils/getSizesMap.js +35 -0
  121. package/CloudflareImage/utils/getSizesMap.js.map +1 -0
  122. package/CloudflareImage/utils/getSmallestSize.d.ts +2 -0
  123. package/CloudflareImage/utils/getSmallestSize.js +12 -0
  124. package/CloudflareImage/utils/getSmallestSize.js.map +1 -0
  125. package/CloudflareImage/utils/getSrcSetFromWidths.d.ts +10 -0
  126. package/CloudflareImage/utils/getSrcSetFromWidths.js +10 -0
  127. package/CloudflareImage/utils/getSrcSetFromWidths.js.map +1 -0
  128. package/CloudflareImage/utils/getSrcWithParams.d.ts +3 -0
  129. package/CloudflareImage/utils/getSrcWithParams.js +30 -0
  130. package/CloudflareImage/utils/getSrcWithParams.js.map +1 -0
  131. package/CloudflareImage/utils/paddingForAspectRatio.d.ts +1 -0
  132. package/CloudflareImage/utils/paddingForAspectRatio.js +6 -0
  133. package/CloudflareImage/utils/paddingForAspectRatio.js.map +1 -0
  134. package/CloudflareImage/utils/remToPx.d.ts +1 -0
  135. package/CloudflareImage/utils/remToPx.js +2 -0
  136. package/CloudflareImage/utils/remToPx.js.map +1 -0
  137. package/CloudflareImage/utils/sizeToNumber.d.ts +2 -0
  138. package/CloudflareImage/utils/sizeToNumber.js +27 -0
  139. package/CloudflareImage/utils/sizeToNumber.js.map +1 -0
  140. package/ContentPageLink.d.ts +11 -0
  141. package/ContentPageLink.js +46 -0
  142. package/ContentPageLink.js.map +1 -0
  143. package/ContentRenderer.d.ts +9 -0
  144. package/ContentRenderer.js +36 -0
  145. package/ContentRenderer.js.map +1 -0
  146. package/DropdownMenu/Button.d.ts +7 -0
  147. package/DropdownMenu/Button.js +33 -0
  148. package/DropdownMenu/Button.js.map +1 -0
  149. package/DropdownMenu/DropdownMenu.d.ts +21 -0
  150. package/DropdownMenu/DropdownMenu.js +72 -0
  151. package/DropdownMenu/DropdownMenu.js.map +1 -0
  152. package/DropdownMenu/Item.d.ts +13 -0
  153. package/DropdownMenu/Item.js +48 -0
  154. package/DropdownMenu/Item.js.map +1 -0
  155. package/DropdownMenu/Items.d.ts +16 -0
  156. package/DropdownMenu/Items.js +53 -0
  157. package/DropdownMenu/Items.js.map +1 -0
  158. package/DropdownMenu/index.d.ts +4 -0
  159. package/DropdownMenu/index.js +5 -0
  160. package/DropdownMenu/index.js.map +1 -0
  161. package/ErrorBoundary/Generic.d.ts +18 -0
  162. package/ErrorBoundary/Generic.js +65 -0
  163. package/ErrorBoundary/Generic.js.map +1 -0
  164. package/ErrorBoundary/PassThrough.d.ts +3 -0
  165. package/ErrorBoundary/PassThrough.js +7 -0
  166. package/ErrorBoundary/PassThrough.js.map +1 -0
  167. package/Gallery/Gallery.d.ts +39 -0
  168. package/Gallery/Gallery.js +121 -0
  169. package/Gallery/Gallery.js.map +1 -0
  170. package/Gallery/constructGallery.d.ts +15 -0
  171. package/Gallery/constructGallery.js +40 -0
  172. package/Gallery/constructGallery.js.map +1 -0
  173. package/Image/BaseImage.d.ts +39 -0
  174. package/Image/BaseImage.js +192 -0
  175. package/Image/BaseImage.js.map +1 -0
  176. package/Image/Fallback.d.ts +5 -0
  177. package/Image/Fallback.js +4 -0
  178. package/Image/Fallback.js.map +1 -0
  179. package/Image/FlightImage.d.ts +51 -0
  180. package/Image/FlightImage.js +59 -0
  181. package/Image/FlightImage.js.map +1 -0
  182. package/Image/Image.d.ts +2 -0
  183. package/Image/Image.js +3 -0
  184. package/Image/Image.js.map +1 -0
  185. package/Image/index.d.ts +1 -0
  186. package/Image/index.js +2 -0
  187. package/Image/index.js.map +1 -0
  188. package/Image/useConstructImage.d.ts +49 -0
  189. package/Image/useConstructImage.js +122 -0
  190. package/Image/useConstructImage.js.map +1 -0
  191. package/Image/utils/aspectRatioToFraction.d.ts +2 -0
  192. package/Image/utils/aspectRatioToFraction.js +11 -0
  193. package/Image/utils/aspectRatioToFraction.js.map +1 -0
  194. package/Image/utils/getFullUrl.d.ts +6 -0
  195. package/Image/utils/getFullUrl.js +18 -0
  196. package/Image/utils/getFullUrl.js.map +1 -0
  197. package/Image/utils/getImageWidth.d.ts +1 -0
  198. package/Image/utils/getImageWidth.js +12 -0
  199. package/Image/utils/getImageWidth.js.map +1 -0
  200. package/Image/utils/getImageWidths.d.ts +2 -0
  201. package/Image/utils/getImageWidths.js +21 -0
  202. package/Image/utils/getImageWidths.js.map +1 -0
  203. package/Image/utils/getLQIP.d.ts +8 -0
  204. package/Image/utils/getLQIP.js +20 -0
  205. package/Image/utils/getLQIP.js.map +1 -0
  206. package/Image/utils/getLargestSize.d.ts +7 -0
  207. package/Image/utils/getLargestSize.js +17 -0
  208. package/Image/utils/getLargestSize.js.map +1 -0
  209. package/Image/utils/getSizeForBreakpoint.d.ts +2 -0
  210. package/Image/utils/getSizeForBreakpoint.js +16 -0
  211. package/Image/utils/getSizeForBreakpoint.js.map +1 -0
  212. package/Image/utils/getSizesMap.d.ts +2 -0
  213. package/Image/utils/getSizesMap.js +35 -0
  214. package/Image/utils/getSizesMap.js.map +1 -0
  215. package/Image/utils/getSmallestSize.d.ts +2 -0
  216. package/Image/utils/getSmallestSize.js +12 -0
  217. package/Image/utils/getSmallestSize.js.map +1 -0
  218. package/Image/utils/getSrcSetFromWidths.d.ts +10 -0
  219. package/Image/utils/getSrcSetFromWidths.js +9 -0
  220. package/Image/utils/getSrcSetFromWidths.js.map +1 -0
  221. package/Image/utils/getSrcWithParams.d.ts +3 -0
  222. package/Image/utils/getSrcWithParams.js +29 -0
  223. package/Image/utils/getSrcWithParams.js.map +1 -0
  224. package/Image/utils/paddingForAspectRatio.d.ts +1 -0
  225. package/Image/utils/paddingForAspectRatio.js +6 -0
  226. package/Image/utils/paddingForAspectRatio.js.map +1 -0
  227. package/Image/utils/remToPx.d.ts +1 -0
  228. package/Image/utils/remToPx.js +2 -0
  229. package/Image/utils/remToPx.js.map +1 -0
  230. package/Image/utils/sizeToNumber.d.ts +2 -0
  231. package/Image/utils/sizeToNumber.js +27 -0
  232. package/Image/utils/sizeToNumber.js.map +1 -0
  233. package/Input/Input.d.ts +6 -0
  234. package/Input/Input.js +45 -0
  235. package/Input/Input.js.map +1 -0
  236. package/Input/index.d.ts +3 -0
  237. package/Input/index.js +4 -0
  238. package/Input/index.js.map +1 -0
  239. package/JetshopText.d.ts +3 -0
  240. package/JetshopText.js +13 -0
  241. package/JetshopText.js.map +1 -0
  242. package/Loading/LoadingBar.d.ts +8 -0
  243. package/Loading/LoadingBar.js +58 -0
  244. package/Loading/LoadingBar.js.map +1 -0
  245. package/Loading/LoadingLine.d.ts +31 -0
  246. package/Loading/LoadingLine.js +26 -0
  247. package/Loading/LoadingLine.js.map +1 -0
  248. package/Loading/NetworkStatusNotifier.d.ts +6 -0
  249. package/Loading/NetworkStatusNotifier.js +8 -0
  250. package/Loading/NetworkStatusNotifier.js.map +1 -0
  251. package/Menu/MenuContainer.d.ts +28 -0
  252. package/Menu/MenuContainer.js +46 -0
  253. package/Menu/MenuContainer.js.map +1 -0
  254. package/Menu/RecursiveTree.d.ts +28 -0
  255. package/Menu/RecursiveTree.js +91 -0
  256. package/Menu/RecursiveTree.js.map +1 -0
  257. package/Modal/Drawer/Drawer.d.ts +12 -0
  258. package/Modal/Drawer/Drawer.js +31 -0
  259. package/Modal/Drawer/Drawer.js.map +1 -0
  260. package/Modal/Drawer/DrawerTarget.d.ts +6 -0
  261. package/Modal/Drawer/DrawerTarget.js +12 -0
  262. package/Modal/Drawer/DrawerTarget.js.map +1 -0
  263. package/Modal/Drawer/DrawerTrigger.d.ts +11 -0
  264. package/Modal/Drawer/DrawerTrigger.js +16 -0
  265. package/Modal/Drawer/DrawerTrigger.js.map +1 -0
  266. package/Modal/Drawer/index.d.ts +3 -0
  267. package/Modal/Drawer/index.js +4 -0
  268. package/Modal/Drawer/index.js.map +1 -0
  269. package/Modal/Flyout/FlyoutTarget.d.ts +10 -0
  270. package/Modal/Flyout/FlyoutTarget.js +15 -0
  271. package/Modal/Flyout/FlyoutTarget.js.map +1 -0
  272. package/Modal/Flyout/FlyoutTrigger.d.ts +15 -0
  273. package/Modal/Flyout/FlyoutTrigger.js +18 -0
  274. package/Modal/Flyout/FlyoutTrigger.js.map +1 -0
  275. package/Modal/Flyout/index.d.ts +2 -0
  276. package/Modal/Flyout/index.js +3 -0
  277. package/Modal/Flyout/index.js.map +1 -0
  278. package/Modal/ModalContext.d.ts +26 -0
  279. package/Modal/ModalContext.js +9 -0
  280. package/Modal/ModalContext.js.map +1 -0
  281. package/Modal/ModalProvider.d.ts +5 -0
  282. package/Modal/ModalProvider.js +83 -0
  283. package/Modal/ModalProvider.js.map +1 -0
  284. package/Modal/ModalRoot.d.ts +3 -0
  285. package/Modal/ModalRoot.js +44 -0
  286. package/Modal/ModalRoot.js.map +1 -0
  287. package/Modal/ModalTrigger.d.ts +9 -0
  288. package/Modal/ModalTrigger.js +9 -0
  289. package/Modal/ModalTrigger.js.map +1 -0
  290. package/Pagination/Pagination.d.ts +7 -0
  291. package/Pagination/Pagination.js +23 -0
  292. package/Pagination/Pagination.js.map +1 -0
  293. package/Pagination/PaginationBehaviour.d.ts +52 -0
  294. package/Pagination/PaginationBehaviour.js +68 -0
  295. package/Pagination/PaginationBehaviour.js.map +1 -0
  296. package/Pagination/index.d.ts +2 -0
  297. package/Pagination/index.js +3 -0
  298. package/Pagination/index.js.map +1 -0
  299. package/Pagination/usePagination.d.ts +15 -0
  300. package/Pagination/usePagination.js +46 -0
  301. package/Pagination/usePagination.js.map +1 -0
  302. package/PreOrderDateSelector/PreOrderDateSelector.d.ts +23 -0
  303. package/PreOrderDateSelector/PreOrderDateSelector.js +74 -0
  304. package/PreOrderDateSelector/PreOrderDateSelector.js.map +1 -0
  305. package/PreOrderDateSelector/index.d.ts +2 -0
  306. package/PreOrderDateSelector/index.js +3 -0
  307. package/PreOrderDateSelector/index.js.map +1 -0
  308. package/Price/Currency.d.ts +9 -0
  309. package/Price/Currency.js +11 -0
  310. package/Price/Currency.js.map +1 -0
  311. package/Price/Price.d.ts +44 -0
  312. package/Price/Price.js +74 -0
  313. package/Price/Price.js.map +1 -0
  314. package/Price/index.d.ts +1 -0
  315. package/Price/index.js +2 -0
  316. package/Price/index.js.map +1 -0
  317. package/ProductLink.d.ts +23 -0
  318. package/ProductLink.js +88 -0
  319. package/ProductLink.js.map +1 -0
  320. package/ProductList/Badges.d.ts +6 -0
  321. package/ProductList/Badges.js +56 -0
  322. package/ProductList/Badges.js.map +1 -0
  323. package/ProductList/GridProduct.d.ts +24 -0
  324. package/ProductList/GridProduct.js +58 -0
  325. package/ProductList/GridProduct.js.map +1 -0
  326. package/ProductList/ProductGrid.d.ts +16 -0
  327. package/ProductList/ProductGrid.js +30 -0
  328. package/ProductList/ProductGrid.js.map +1 -0
  329. package/ProductList/ProductImage.d.ts +12 -0
  330. package/ProductList/ProductImage.js +21 -0
  331. package/ProductList/ProductImage.js.map +1 -0
  332. package/ProductSpecifications/ProductSpecifications.d.ts +8 -0
  333. package/ProductSpecifications/ProductSpecifications.js +78 -0
  334. package/ProductSpecifications/ProductSpecifications.js.map +1 -0
  335. package/ScrollRestorationHandler/ScrollRestorationHandler.d.ts +8 -0
  336. package/ScrollRestorationHandler/ScrollRestorationHandler.js +17 -0
  337. package/ScrollRestorationHandler/ScrollRestorationHandler.js.map +1 -0
  338. package/ScrollRestorationHandler/index.d.ts +1 -0
  339. package/ScrollRestorationHandler/index.js +2 -0
  340. package/ScrollRestorationHandler/index.js.map +1 -0
  341. package/ScrollRestorationHandler/isInIgnoredRouteTypes.d.ts +8 -0
  342. package/ScrollRestorationHandler/isInIgnoredRouteTypes.js +8 -0
  343. package/ScrollRestorationHandler/isInIgnoredRouteTypes.js.map +1 -0
  344. package/ScrollRestorationHandler/useScrollRestore.d.ts +9 -0
  345. package/ScrollRestorationHandler/useScrollRestore.js +20 -0
  346. package/ScrollRestorationHandler/useScrollRestore.js.map +1 -0
  347. package/Search/SearchAutoCompleteContainer.d.ts +45 -0
  348. package/Search/SearchAutoCompleteContainer.js +172 -0
  349. package/Search/SearchAutoCompleteContainer.js.map +1 -0
  350. package/Search/SearchField.d.ts +26 -0
  351. package/Search/SearchField.js +98 -0
  352. package/Search/SearchField.js.map +1 -0
  353. package/Search/SearchPage/PageOf.d.ts +5 -0
  354. package/Search/SearchPage/PageOf.js +7 -0
  355. package/Search/SearchPage/PageOf.js.map +1 -0
  356. package/Search/SearchPage/SearchMeta.d.ts +16 -0
  357. package/Search/SearchPage/SearchMeta.js +20 -0
  358. package/Search/SearchPage/SearchMeta.js.map +1 -0
  359. package/Search/SearchPage/SearchPageBehaviour.d.ts +19 -0
  360. package/Search/SearchPage/SearchPageBehaviour.js +75 -0
  361. package/Search/SearchPage/SearchPageBehaviour.js.map +1 -0
  362. package/Search/SuggestedTerm.d.ts +16 -0
  363. package/Search/SuggestedTerm.js +35 -0
  364. package/Search/SuggestedTerm.js.map +1 -0
  365. package/Search/index.d.ts +1 -0
  366. package/Search/index.js +2 -0
  367. package/Search/index.js.map +1 -0
  368. package/Select/Components.d.ts +28 -0
  369. package/Select/Components.js +91 -0
  370. package/Select/Components.js.map +1 -0
  371. package/Select/SelectComponents/Quantity.d.ts +5 -0
  372. package/Select/SelectComponents/Quantity.js +8 -0
  373. package/Select/SelectComponents/Quantity.js.map +1 -0
  374. package/Select/index.d.ts +5 -0
  375. package/Select/index.js +2 -0
  376. package/Select/index.js.map +1 -0
  377. package/SortOrder/SortOrder.d.ts +16 -0
  378. package/SortOrder/SortOrder.js +33 -0
  379. package/SortOrder/SortOrder.js.map +1 -0
  380. package/SortOrder/SortOrderDropdown.d.ts +9 -0
  381. package/SortOrder/SortOrderDropdown.js +25 -0
  382. package/SortOrder/SortOrderDropdown.js.map +1 -0
  383. package/SortOrder/SortOrderList.d.ts +7 -0
  384. package/SortOrder/SortOrderList.js +17 -0
  385. package/SortOrder/SortOrderList.js.map +1 -0
  386. package/StartPageRenderer/StartPageRenderer.d.ts +17 -0
  387. package/StartPageRenderer/StartPageRenderer.js +52 -0
  388. package/StartPageRenderer/StartPageRenderer.js.map +1 -0
  389. package/StartPageRenderer/index.d.ts +1 -0
  390. package/StartPageRenderer/index.js +2 -0
  391. package/StartPageRenderer/index.js.map +1 -0
  392. package/Stock/StockStatusContainer.d.ts +21 -0
  393. package/Stock/StockStatusContainer.js +45 -0
  394. package/Stock/StockStatusContainer.js.map +1 -0
  395. package/Text/Text.d.ts +11 -0
  396. package/Text/Text.js +22 -0
  397. package/Text/Text.js.map +1 -0
  398. package/Text/index.d.ts +3 -0
  399. package/Text/index.js +4 -0
  400. package/Text/index.js.map +1 -0
  401. package/Theme/createTheme.d.ts +16 -0
  402. package/Theme/createTheme.js +5 -0
  403. package/Theme/createTheme.js.map +1 -0
  404. package/Theme/cssReset.d.ts +1 -0
  405. package/Theme/cssReset.js +160 -0
  406. package/Theme/cssReset.js.map +1 -0
  407. package/Theme/normalizeCss.d.ts +1 -0
  408. package/Theme/normalizeCss.js +357 -0
  409. package/Theme/normalizeCss.js.map +1 -0
  410. package/Theme/sanitizeCss.d.ts +1 -0
  411. package/Theme/sanitizeCss.js +572 -0
  412. package/Theme/sanitizeCss.js.map +1 -0
  413. package/WindowGrid/WindowGrid.d.ts +11 -0
  414. package/WindowGrid/WindowGrid.js +58 -0
  415. package/WindowGrid/WindowGrid.js.map +1 -0
  416. package/WindowGrid/index.d.ts +1 -0
  417. package/WindowGrid/index.js +2 -0
  418. package/WindowGrid/index.js.map +1 -0
  419. package/WindowGrid/useResizeObserver.d.ts +3 -0
  420. package/WindowGrid/useResizeObserver.js +14 -0
  421. package/WindowGrid/useResizeObserver.js.map +1 -0
  422. package/WindowGrid/useScrollWithWindow.d.ts +12 -0
  423. package/WindowGrid/useScrollWithWindow.js +39 -0
  424. package/WindowGrid/useScrollWithWindow.js.map +1 -0
  425. package/fuzzySearch/fuzzySearch.d.ts +8 -0
  426. package/fuzzySearch/fuzzySearch.js +43 -0
  427. package/fuzzySearch/fuzzySearch.js.map +1 -0
  428. package/fuzzySearch/index.d.ts +1 -0
  429. package/fuzzySearch/index.js +2 -0
  430. package/fuzzySearch/index.js.map +1 -0
  431. package/hooks/index.d.ts +2 -0
  432. package/hooks/index.js +3 -0
  433. package/hooks/index.js.map +1 -0
  434. package/hooks/useOnClickOutside.d.ts +6 -0
  435. package/hooks/useOnClickOutside.js +17 -0
  436. package/hooks/useOnClickOutside.js.map +1 -0
  437. package/hooks/useOnEsc.d.ts +4 -0
  438. package/hooks/useOnEsc.js +17 -0
  439. package/hooks/useOnEsc.js.map +1 -0
  440. package/package.json +2 -2
  441. package/utils/breakpoints.d.ts +23 -0
  442. package/utils/breakpoints.js +94 -0
  443. package/utils/breakpoints.js.map +1 -0
  444. package/utils/callAllEventHandlers.d.ts +5 -0
  445. package/utils/callAllEventHandlers.js +9 -0
  446. package/utils/callAllEventHandlers.js.map +1 -0
  447. package/utils/text.d.ts +1 -0
  448. package/utils/text.js +23 -0
  449. package/utils/text.js.map +1 -0
  450. package/utils/theme.d.ts +3 -0
  451. package/utils/theme.js +5 -0
  452. package/utils/theme.js.map +1 -0
  453. package/utils/useHoverIntent.d.ts +10 -0
  454. package/utils/useHoverIntent.js +78 -0
  455. package/utils/useHoverIntent.js.map +1 -0
  456. package/utils/usePropsOfType.d.ts +11 -0
  457. package/utils/usePropsOfType.js +18 -0
  458. package/utils/usePropsOfType.js.map +1 -0
  459. package/withFlightUI.d.ts +17 -0
  460. package/withFlightUI.js +20 -0
  461. package/withFlightUI.js.map +1 -0
@@ -0,0 +1,277 @@
1
+ import { ChannelProvider } from '@jetshop/core/components/ChannelContext';
2
+ import t from '@jetshop/intl';
3
+ import testImage from '@jetshop/ui/test-utils/fixtures/test-image.png';
4
+ import { fireEvent, queryByText, render } from '@testing-library/react';
5
+ import React from 'react';
6
+ import { useInView } from 'react-intersection-observer';
7
+ import Image from './FlightImage';
8
+ import { ChannelHandler } from '@jetshop/core/ChannelHandler/ChannelHandler';
9
+ import { selectedChannel, channels } from '@jetshop/core/test-utils/variables';
10
+ import { ConfigProvider } from '@jetshop/core/components/ConfigProvider';
11
+ import mockShopConfig from '@jetshop/core/test-utils/mockShopConfig';
12
+
13
+ // Mock intersection observer so we can always return true/false
14
+ jest.mock('react-intersection-observer');
15
+ // Suppress warnings from translations
16
+ jest.mock('@jetshop/intl');
17
+ t.mockImplementation((t) => t);
18
+
19
+ // browser mocks
20
+ global.IntersectionObserver = jest.fn(function () {
21
+ this.observe = jest.fn();
22
+ this.unobserve = jest.fn();
23
+ this.disconnect = jest.fn();
24
+ });
25
+
26
+ const transparent =
27
+ 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';
28
+
29
+ global.__IN_SERVER__ = false;
30
+
31
+ describe('Hooks image component', () => {
32
+ describe('on initial load', () => {
33
+ beforeAll(() => {
34
+ useInView.mockImplementation(() => [null, false]);
35
+ });
36
+ it('renders a lqip version of the image by default', () => {
37
+ const { placeholderImage } = setup();
38
+
39
+ const src = placeholderImage.getAttribute('src');
40
+
41
+ expect(src).toEqual(expect.stringContaining('sigma=2.5'));
42
+ expect(src).toEqual(expect.stringContaining('minampl=0.5'));
43
+ });
44
+
45
+ it('sets the lqip to the smallest of the calculated sizes', () => {
46
+ const { placeholderImage } = setup({ sizes: [0.5, 0.85, 1] });
47
+ // Should be 160
48
+ // The smallest breakpoint is 20rem, which is 360px.
49
+ // 0.5 x 360 = 160
50
+
51
+ const src = placeholderImage.getAttribute('src');
52
+
53
+ expect(src).toEqual(expect.stringContaining('width=160'));
54
+ });
55
+
56
+ it('does not render an lqip if critical is true', () => {
57
+ const { placeholderImage } = setup({ critical: true });
58
+
59
+ const src = placeholderImage.getAttribute('src');
60
+
61
+ // Sets the src to transaprent data image instead
62
+ expect(src).toEqual(expect.stringContaining('data:image'));
63
+ });
64
+
65
+ it('accepts sizes as pixel values', () => {
66
+ const { placeholderImage } = setup({ sizes: [123] });
67
+
68
+ const src = placeholderImage.getAttribute('src');
69
+
70
+ expect(src).toEqual(expect.stringContaining('width=123'));
71
+ });
72
+
73
+ it('sets opacity to 0.6 while image has not loaded', () => {
74
+ const { placeholderImage } = setup();
75
+
76
+ expect(placeholderImage).toHaveStyle('opacity: 0.6');
77
+ });
78
+ });
79
+
80
+ describe('sets the sizing method', () => {
81
+ it('to thumbnail if no aspect ratio is provided', () => {
82
+ const { placeholderImage } = setup();
83
+ });
84
+ it('to fit if an aspect ratio is provided', () => {
85
+ const { placeholderImage } = setup({ aspect: '1:1' });
86
+
87
+ expect(placeholderImage.getAttribute('src')).toEqual(
88
+ expect.stringContaining('&height=320')
89
+ );
90
+ expect(placeholderImage.getAttribute('src')).toEqual(
91
+ expect.stringContaining('&width=320')
92
+ );
93
+ });
94
+ it('to crop if crop prop is true', () => {
95
+ const { placeholderImage } = setup({ aspect: '1:1', crop: true });
96
+
97
+ expect(placeholderImage.getAttribute('src')).toEqual(
98
+ expect.stringContaining('&method=crop')
99
+ );
100
+ });
101
+ it('warns if gravity is provided without crop', () => {
102
+ console.warn = jest.fn();
103
+ setup({ aspect: '1:1', crop: false, gravity: 'north' });
104
+ expect(console.warn).toHaveBeenCalled();
105
+ });
106
+ });
107
+
108
+ describe('when image is in view', () => {
109
+ beforeAll(() => {
110
+ useInView.mockImplementation(() => [null, true]);
111
+ });
112
+
113
+ it('renders full image', () => {
114
+ const { image } = setup({
115
+ imageSrc: testImage
116
+ });
117
+
118
+ expect(image).toHaveAttribute('src', 'test-image.png');
119
+ });
120
+
121
+ it('applies the given alt as an aria-label', () => {
122
+ const { image } = setup({
123
+ alt: 'test alt'
124
+ });
125
+
126
+ expect(image).toHaveAttribute('alt', 'test alt');
127
+ });
128
+
129
+ it('defaults aspect to 1:1', () => {
130
+ const { imageContainer } = setup();
131
+
132
+ expect(imageContainer).toHaveStyle('padding-bottom : 100%');
133
+ });
134
+
135
+ it('sets aspect ratio using padding if aspect is passed', () => {
136
+ const { imageContainer } = setup({ aspect: '3:2' });
137
+
138
+ expect(imageContainer).toHaveStyle('padding-bottom : 66.6667%');
139
+ });
140
+
141
+ it('defaults to background-size contain', () => {
142
+ const { image } = setup();
143
+
144
+ expect(image).toHaveStyle('object-fit : contain');
145
+ });
146
+
147
+ it('sets background-size to cover if `cover` is passed', () => {
148
+ const { image } = setup({ cover: true });
149
+
150
+ expect(image).toHaveStyle('object-fit : cover');
151
+ });
152
+
153
+ it('sets up image to fill available space if `fillAvailableSpace` is passed', () => {
154
+ const { image } = setup({ fillAvailableSpace: true });
155
+
156
+ expect(image).toHaveStyle('object-fit : cover');
157
+ expect(image).toHaveStyle('padding-top : 0');
158
+ });
159
+
160
+ it('sets opacity to 1 when image loads', () => {
161
+ const { image } = setup();
162
+ fireEvent.load(image);
163
+
164
+ expect(image).toHaveStyle('opacity: 1');
165
+ });
166
+
167
+ it('fades lqip when image loads', () => {
168
+ const { image, placeholderImage } = setup();
169
+ fireEvent.load(image);
170
+
171
+ expect(placeholderImage).toHaveStyle('opacity: 0');
172
+ });
173
+
174
+ test('sets quality to quality prop', () => {
175
+ const { image } = setup({ quality: 1 });
176
+
177
+ expect(image.getAttribute('srcSet')).toEqual(
178
+ expect.stringContaining('&quality=1')
179
+ );
180
+ });
181
+ });
182
+
183
+ describe('when there is an image error', () => {
184
+ beforeAll(() => {
185
+ useInView.mockImplementation(() => [null, true]);
186
+ });
187
+
188
+ it('renders default error', () => {
189
+ const { image, getByText } = setup();
190
+ fireEvent.error(image);
191
+
192
+ expect(getByText('Image Not Found'));
193
+ });
194
+
195
+ it('renders error component', () => {
196
+ const { image, getByText, container } = setup({
197
+ error: () => <div>some error found</div>
198
+ });
199
+ fireEvent.error(image);
200
+
201
+ expect(getByText('some error found'));
202
+ expect(queryByText(container, 'Image Not Found')).not.toBeInTheDocument();
203
+ });
204
+ });
205
+
206
+ describe('when image url is falsy', () => {
207
+ it('renders a transparent background image when null', () => {
208
+ const { image } = setup({ falsySrc: true, imageSrc: null });
209
+
210
+ expect(image).toHaveAttribute(`src`, transparent);
211
+ expect(image).toHaveStyle('opacity : 1');
212
+ });
213
+ it('renders a transparent background image when undefined', () => {
214
+ const { image } = setup({ falsySrc: true, imageSrc: undefined });
215
+
216
+ expect(image).toHaveAttribute(`src`, transparent);
217
+ expect(image).toHaveStyle('opacity: 1');
218
+ });
219
+ it('renders nothing and warns if false', () => {
220
+ console.warn = jest.fn();
221
+ const { image } = setup({ falsySrc: true, imageSrc: false });
222
+
223
+ expect(image).not.toBeInTheDocument();
224
+ expect(console.warn).toHaveBeenCalled();
225
+ });
226
+ });
227
+
228
+ it('renders a webp and jpeg source', () => {
229
+ const { imageContainer } = setup();
230
+
231
+ const sources = imageContainer.querySelectorAll('source');
232
+ expect(sources.length).toBe(2);
233
+ expect(sources[0]).toHaveAttribute('type', 'image/webp');
234
+ });
235
+ });
236
+
237
+ function setup({
238
+ imageSrc,
239
+ falsySrc = false,
240
+ error,
241
+ alt,
242
+ sizes,
243
+ aspect,
244
+ cover,
245
+ ...rest
246
+ } = {}) {
247
+ const channelHandler = new ChannelHandler({
248
+ selectedChannel,
249
+ channels
250
+ });
251
+ const utils = render(
252
+ <ChannelProvider channelHandler={channelHandler}>
253
+ <ConfigProvider config={mockShopConfig}>
254
+ <Image
255
+ src={falsySrc ? imageSrc : imageSrc || 'default.png'}
256
+ error={error}
257
+ alt={alt}
258
+ sizes={sizes}
259
+ aspect={aspect}
260
+ cover={cover}
261
+ {...rest}
262
+ />
263
+ </ConfigProvider>
264
+ </ChannelProvider>
265
+ );
266
+
267
+ return {
268
+ ...utils,
269
+ image: utils.container.querySelector('[data-flight-image] img'),
270
+ placeholderImage: utils.container.querySelector(
271
+ '[data-flight-image-placeholder] img'
272
+ ),
273
+ imageContainer: utils.container.querySelector(
274
+ '[data-flight-image-container]'
275
+ )
276
+ };
277
+ }
@@ -0,0 +1,2 @@
1
+ export * from './FlightImage';
2
+ export { default } from './FlightImage';
@@ -0,0 +1,3 @@
1
+ export * from './FlightImage';
2
+ export { default } from './FlightImage';
3
+ //# sourceMappingURL=Image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Image.js","sourceRoot":"","sources":["Image.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ export { default } from './FlightImage';
@@ -0,0 +1,2 @@
1
+ export { default } from './FlightImage';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { ImageValue, ProductImageSize } from '@jetshop/core/types';
2
+ type ImageSrcType = string | ProductImageSize[] | ImageValue;
3
+ export type Gravity = 'north' | 'south' | 'west' | 'east' | 'centre' | 'smart';
4
+ export type ImageBreakpointSize = number | string;
5
+ export type ImageBreakpointSizes = ImageBreakpointSize | ImageBreakpointSize[];
6
+ interface ImageParameters {
7
+ /** The image src
8
+ * Also accepts an array of objects with `url` keys (deprecated image field)
9
+ */
10
+ src: ImageSrcType;
11
+ /**
12
+ * Whether to crop the image instead of resizing it when aspect ratio is provided
13
+ * @default false
14
+ */
15
+ crop?: boolean;
16
+ gravity?: Gravity;
17
+ quality?: number;
18
+ /** An array of image sizes, will be mapped against breakpoints.
19
+ * @see https://docs.dev.jetshop.se/ui/image#the-sizes-prop
20
+ */
21
+ sizes: ImageBreakpointSizes;
22
+ /**
23
+ * The aspect ratio of the image
24
+ * If unknown, use null to preserve original aspect ratio
25
+ */
26
+ aspect?: string;
27
+ critical?: boolean;
28
+ modifiedDate?: string;
29
+ breakpoints: Record<string, string>;
30
+ baseUrl: string;
31
+ focalPointX?: number;
32
+ focalPointY?: number;
33
+ }
34
+ /**
35
+ * Dynamically constructs the query parameters used by ImageMagick to size the image appropriately.
36
+ * Also generates a LQIP using query parameters, to display while the full image loads.
37
+ */
38
+ export declare function useConstructImage({ gravity, crop, src, sizes, aspect, critical, quality, modifiedDate, breakpoints, baseUrl, focalPointX, focalPointY }: ImageParameters): {
39
+ srcset: string;
40
+ webpSrcset: string;
41
+ sizes: string;
42
+ sizesMobile: string;
43
+ lqip: string;
44
+ src: string;
45
+ hasFalsySrc: boolean;
46
+ srcsetMobile: string;
47
+ webpSrcsetMobile: string;
48
+ };
49
+ export {};
@@ -0,0 +1,122 @@
1
+ import useWarningInDev from '@jetshop/core/hooks/useWarningInDev';
2
+ import { getFullUrl } from './utils/getFullUrl';
3
+ import { getImageWidths } from './utils/getImageWidths';
4
+ import { getLargestSize } from './utils/getLargestSize';
5
+ import { getLQIP } from './utils/getLQIP';
6
+ import { getSizesMap } from './utils/getSizesMap';
7
+ import { getSrcSetFromWidths } from './utils/getSrcSetFromWidths';
8
+ import React from 'react';
9
+ /**
10
+ * Dynamically constructs the query parameters used by ImageMagick to size the image appropriately.
11
+ * Also generates a LQIP using query parameters, to display while the full image loads.
12
+ */
13
+ export function useConstructImage({ gravity, crop, src, sizes, aspect, critical, quality, modifiedDate, breakpoints, baseUrl, focalPointX, focalPointY }) {
14
+ // Warn if gravity was provided but crop was not
15
+ useWarningInDev(gravity && !crop, 'You have provided a gravity without setting crop to true. Your image will not be cropped, and the `gravity` prop will do nothing. Please remove the `gravity` prop.');
16
+ // Warn if the src is a falsy value
17
+ useWarningInDev(!!!src, 'You have provided a falsy value to the Image component. If you intentionally want to display a blank Image component, you may import `transparentDataImg` and use it for the src. Otherwise, this is probably a bug.');
18
+ /*
19
+ For backwards-compatibility (and dev convenience) reasons, we accept a
20
+ falsy `src` prop on Image. undefined | null will act just like the normal
21
+ Image component does, except that it will show a transparent image where
22
+ the image would normally load. This may be useful in cases where the end
23
+ user is lazy and wants to do this:
24
+
25
+ const { imageSrc } = someDataRequest();
26
+ <Image src={imageSrc} />
27
+
28
+ Where imageSrc may be undefined | null while the request is occurring. The
29
+ preferred method is to be more explicit:
30
+
31
+ const {imageSrc, loading} = someDataRequest();
32
+ <Image src={loading ? transparentDataImg : imageSrc } />
33
+
34
+ Therefore, whilst we will handle a null | undefined src, we will warn
35
+ against its usage in dev.
36
+ */
37
+ let hasFalsySrc = true;
38
+ let imageSrc = '';
39
+ if (Array.isArray(src)) {
40
+ // maintain support for deprecated image sizes array
41
+ hasFalsySrc = false;
42
+ imageSrc = getFullUrl(getLargestSize(src), baseUrl);
43
+ }
44
+ // When we have a string for the src
45
+ if (!!src && typeof src === 'string') {
46
+ hasFalsySrc = false;
47
+ imageSrc = getFullUrl(src, baseUrl);
48
+ }
49
+ if (!!src && typeof src === 'object' && src.value) {
50
+ hasFalsySrc = false;
51
+ imageSrc = getFullUrl(src.value, baseUrl);
52
+ }
53
+ // useMemo so this runs only if the image props change. It calculates the
54
+ // strings used for `sizes`, `srcset`, and the `lqip`
55
+ const { sizesMap, sizesMapMobile, srcset, lqip, webpSrcset, srcsetMobile, webpSrcsetMobile } = React.useMemo(() => {
56
+ if (hasFalsySrc) {
57
+ return {};
58
+ }
59
+ const widths = getImageWidths(breakpoints, sizes);
60
+ const mobileWidths = getImageWidths(breakpoints, sizes, true);
61
+ const srcSetFromWidths = ({ webp }) => getSrcSetFromWidths(imageSrc, widths, aspect, {
62
+ crop,
63
+ gravity,
64
+ quality,
65
+ webp,
66
+ focalPointX,
67
+ focalPointY
68
+ }, modifiedDate);
69
+ const mobileSrcSetFromWidths = ({ webp }) => getSrcSetFromWidths(imageSrc, mobileWidths, aspect, {
70
+ crop,
71
+ gravity,
72
+ quality,
73
+ webp,
74
+ focalPointX,
75
+ focalPointY
76
+ }, modifiedDate);
77
+ const srcset = srcSetFromWidths({ webp: false });
78
+ const webpSrcset = srcSetFromWidths({ webp: true });
79
+ const srcsetMobile = mobileSrcSetFromWidths({ webp: false });
80
+ const webpSrcsetMobile = mobileSrcSetFromWidths({ webp: true });
81
+ // If this is a critical image, don't calculate LQIP
82
+ const lqip = critical
83
+ ? null
84
+ : getLQIP(imageSrc, widths, aspect, crop, modifiedDate);
85
+ const sizesMap = getSizesMap(breakpoints, sizes);
86
+ const sizesMapMobile = getSizesMap(breakpoints, sizes, true);
87
+ return {
88
+ sizesMap,
89
+ sizesMapMobile,
90
+ srcset,
91
+ lqip,
92
+ webpSrcset,
93
+ srcsetMobile,
94
+ webpSrcsetMobile
95
+ };
96
+ }, [
97
+ aspect,
98
+ breakpoints,
99
+ crop,
100
+ gravity,
101
+ hasFalsySrc,
102
+ imageSrc,
103
+ quality,
104
+ sizes,
105
+ critical,
106
+ modifiedDate,
107
+ focalPointX,
108
+ focalPointY
109
+ ]);
110
+ return {
111
+ srcset,
112
+ webpSrcset,
113
+ sizes: sizesMap,
114
+ sizesMobile: sizesMapMobile,
115
+ lqip,
116
+ src: imageSrc,
117
+ hasFalsySrc,
118
+ srcsetMobile,
119
+ webpSrcsetMobile
120
+ };
121
+ }
122
+ //# sourceMappingURL=useConstructImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConstructImage.js","sourceRoot":"","sources":["useConstructImage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { AspectRatio } from '../Image';
2
+ export declare const aspectRatioToFraction: (aspect: AspectRatio) => number;
@@ -0,0 +1,11 @@
1
+ export const aspectRatioToFraction = (aspect) => {
2
+ if (typeof aspect === 'string' && aspect.indexOf(':') > 0) {
3
+ const [a, b] = aspect.split(':');
4
+ return b / a;
5
+ }
6
+ else if (typeof aspect === 'number') {
7
+ return aspect;
8
+ }
9
+ throw new TypeError('Aspect ratio is not a Number or String with the format n:m');
10
+ };
11
+ //# sourceMappingURL=aspectRatioToFraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspectRatioToFraction.js","sourceRoot":"","sources":["aspectRatioToFraction.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAmB,EAAE,EAAE;IAC3D,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACzD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,CAAC;KACd;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QACrC,OAAO,MAAM,CAAC;KACf;IACD,MAAM,IAAI,SAAS,CACjB,4DAA4D,CAC7D,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Constructs the image url by combining the passed-in url with the selected channel
3
+ * @param url The image url
4
+ * @param baseUrl The baseUrl from the currently-selected channel
5
+ */
6
+ export declare const getFullUrl: (url: string, baseUrl: string) => string;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Constructs the image url by combining the passed-in url with the selected channel
3
+ * @param url The image url
4
+ * @param baseUrl The baseUrl from the currently-selected channel
5
+ */
6
+ export const getFullUrl = (url, baseUrl) => {
7
+ if (!baseUrl || !url) {
8
+ return url;
9
+ }
10
+ url = url.trim();
11
+ if (url.indexOf('/') === 0 &&
12
+ url.indexOf('//:') === -1 &&
13
+ url.indexOf('static/media') === -1) {
14
+ return baseUrl + url;
15
+ }
16
+ return url;
17
+ };
18
+ //# sourceMappingURL=getFullUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFullUrl.js","sourceRoot":"","sources":["getFullUrl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,OAAe,EAAE,EAAE;IACzD,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE;QACpB,OAAO,GAAG,CAAC;KACZ;IACD,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACjB,IACE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAClC;QACA,OAAO,OAAO,GAAG,GAAG,CAAC;KACtB;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const getImageWidth: (size: number | string, vw: number, pixelRatio: number) => number;
@@ -0,0 +1,12 @@
1
+ import { sizeToNumber } from './sizeToNumber';
2
+ export const getImageWidth = (size = 1, vw, pixelRatio) => {
3
+ // Convert input size to fraction or px value
4
+ size = sizeToNumber(size);
5
+ // Size is in px
6
+ if (size > 2) {
7
+ return Math.round(size * pixelRatio);
8
+ }
9
+ // Size is a fraction
10
+ return Math.round(vw * size * pixelRatio);
11
+ };
12
+ //# sourceMappingURL=getImageWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getImageWidth.js","sourceRoot":"","sources":["getImageWidth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAwB,CAAC,EACzB,EAAU,EACV,UAAkB,EAClB,EAAE;IACF,6CAA6C;IAC7C,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1B,gBAAgB;IAChB,IAAI,IAAI,GAAG,CAAC,EAAE;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC;KACtC;IACD,qBAAqB;IACrB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC;AAC5C,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ImageBreakpointSizes } from '../Image';
2
+ export declare const getImageWidths: (breakpoints: Record<string, string>, sizes: ImageBreakpointSizes, mobile?: boolean) => number[];
@@ -0,0 +1,21 @@
1
+ import { getImageWidth } from './getImageWidth';
2
+ import { remToPx } from './remToPx';
3
+ import { getSizeForBreakpoint } from './getSizeForBreakpoint';
4
+ export const getImageWidths = (breakpoints, sizes, mobile = false) => {
5
+ const all = new Set();
6
+ const breakpointArray = Object.entries(breakpoints).map(([key, value]) => ({
7
+ key,
8
+ value
9
+ }));
10
+ for (let i = 0; i < breakpointArray.length; i++) {
11
+ const bpSize = getSizeForBreakpoint(sizes, i);
12
+ const px = remToPx(breakpointArray[i].value);
13
+ all.add(getImageWidth(bpSize, px, 1));
14
+ all.add(getImageWidth(bpSize, px, 2));
15
+ if (mobile && breakpointArray[i].key === 'sm') {
16
+ break;
17
+ }
18
+ }
19
+ return Array.from(all).sort();
20
+ };
21
+ //# sourceMappingURL=getImageWidths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getImageWidths.js","sourceRoot":"","sources":["getImageWidths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,WAAmC,EACnC,KAA2B,EAC3B,MAAM,GAAG,KAAK,EACd,EAAE;IACF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9B,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACzE,GAAG;QACH,KAAK;KACN,CAAC,CAAC,CAAC;IAEJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAE/C,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAE7C,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACtC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEtC,IAAI,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,EAAE;YAC7C,MAAM;SACP;KACF;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Generates a LQIP (Low Quality Image Placeholder) using the Flight image
3
+ * handling API (via query params)
4
+ * @param src The image src
5
+ * @param widths An array of image widths
6
+ * @param aspect The desired aspect ratio of the placeholder
7
+ */
8
+ export declare function getLQIP(src: string, widths: number[], aspect: string, crop: boolean, modifiedDate: string): string;
@@ -0,0 +1,21 @@
1
+ import { createSrcWithProperties } from './getSrcWithParams';
2
+ /**
3
+ * Generates a LQIP (Low Quality Image Placeholder) using the Flight image
4
+ * handling API (via query params)
5
+ * @param src The image src
6
+ * @param widths An array of image widths
7
+ * @param aspect The desired aspect ratio of the placeholder
8
+ */
9
+ export function getLQIP(src, widths, aspect, crop = false, modifiedDate) {
10
+ const transparent = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';
11
+ if (!src)
12
+ return transparent;
13
+ // Use the smallest width for the placeholder, to ensure it is the smallest filesize possible
14
+ const smallestWidth = widths.sort((a, b) => a - b)[0];
15
+ const prop = createSrcWithProperties(smallestWidth, aspect, src, false, {
16
+ crop
17
+ });
18
+ const finalSrc = `/cdn-cgi/image/${prop}/${src}${modifiedDate ? `?timestamp=${modifiedDate}` : ''}`;
19
+ return finalSrc;
20
+ }
21
+ //# sourceMappingURL=getLQIP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLQIP.js","sourceRoot":"","sources":["getLQIP.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CACrB,GAAW,EACX,MAAgB,EAChB,MAAc,EACd,IAAI,GAAG,KAAK,EACZ,YAAoB;IAEpB,MAAM,WAAW,GACf,oHAAoH,CAAC;IACvH,IAAI,CAAC,GAAG;QAAE,OAAO,WAAW,CAAC;IAE7B,6FAA6F;IAC7F,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,MAAM,IAAI,GAAG,uBAAuB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;QACtE,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,kBAAkB,IAAI,IAAI,GAAG,GAC5C,YAAY,CAAC,CAAC,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC,CAAC,EAChD,EAAE,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ProductImageSize } from '@jetshop/core/types';
2
+ /**
3
+ * This exists to handle the deprecated `ProductImageSize` field from the API
4
+ * Takes an array of sizes, and returns the url of the largest one
5
+ * @param sizes Sizes field returned from API
6
+ */
7
+ export declare const getLargestSize: (sizes: string | ProductImageSize[]) => any;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * This exists to handle the deprecated `ProductImageSize` field from the API
3
+ * Takes an array of sizes, and returns the url of the largest one
4
+ * @param sizes Sizes field returned from API
5
+ */
6
+ export const getLargestSize = (sizes) => {
7
+ if (Array.isArray(sizes)) {
8
+ if (sizes.length === 0) {
9
+ throw new Error('Sizes must not be an empty array');
10
+ }
11
+ return sizes[sizes.length - 1].url;
12
+ }
13
+ else {
14
+ return sizes.toString();
15
+ }
16
+ };
17
+ //# sourceMappingURL=getLargestSize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLargestSize.js","sourceRoot":"","sources":["getLargestSize.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAkC,EAAE,EAAE;IACnE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;KACpC;SAAM;QACL,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;KACzB;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ImageBreakpointSizes } from '../Image';
2
+ export declare const getSizeForBreakpoint: (sizes: ImageBreakpointSizes, offset: number) => number;