@envive-ai/react-hooks 0.3.46 → 0.3.48

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 (243) hide show
  1. package/dist/application/commerce-api.cjs +73 -3
  2. package/dist/application/commerce-api.d.cts +16 -1
  3. package/dist/application/commerce-api.d.ts +16 -1
  4. package/dist/application/commerce-api.js +73 -3
  5. package/dist/application/models/api/userEvent.d.cts +9 -2
  6. package/dist/application/models/api/userEvent.d.ts +9 -2
  7. package/dist/application/models/featureGates.cjs +2 -1
  8. package/dist/application/models/featureGates.d.cts +2 -1
  9. package/dist/application/models/featureGates.d.ts +2 -1
  10. package/dist/application/models/featureGates.js +2 -1
  11. package/dist/application/models/graphql/queries/getProductOptionsQuery.cjs +33 -0
  12. package/dist/application/models/graphql/queries/getProductOptionsQuery.d.cts +28 -0
  13. package/dist/application/models/graphql/queries/getProductOptionsQuery.d.ts +28 -0
  14. package/dist/application/models/graphql/queries/getProductOptionsQuery.js +32 -0
  15. package/dist/application/models/validators/validateResponse.cjs +2 -1
  16. package/dist/application/models/validators/validateResponse.js +2 -1
  17. package/dist/application/models/validators/validateUserEvent.cjs +3 -3
  18. package/dist/application/models/validators/validateUserEvent.js +3 -3
  19. package/dist/application/utils/index.cjs +2 -0
  20. package/dist/application/utils/index.d.cts +2 -1
  21. package/dist/application/utils/index.d.ts +2 -1
  22. package/dist/application/utils/index.js +2 -1
  23. package/dist/application/utils/messageFromAddToCartEvent.cjs +32 -0
  24. package/dist/application/utils/messageFromAddToCartEvent.d.cts +19 -0
  25. package/dist/application/utils/messageFromAddToCartEvent.d.ts +19 -0
  26. package/dist/application/utils/messageFromAddToCartEvent.js +31 -0
  27. package/dist/atoms/app/index.cjs +1 -1
  28. package/dist/atoms/app/index.d.cts +7 -7
  29. package/dist/atoms/app/index.d.ts +7 -7
  30. package/dist/atoms/app/index.js +1 -1
  31. package/dist/atoms/app/variant.d.cts +6 -6
  32. package/dist/atoms/app/variant.d.ts +6 -6
  33. package/dist/atoms/chat/chatState.d.cts +19 -19
  34. package/dist/atoms/chat/chatState.d.ts +19 -19
  35. package/dist/atoms/chat/form.d.cts +2 -2
  36. package/dist/atoms/chat/form.d.ts +3 -3
  37. package/dist/atoms/chat/index.d.cts +2 -2
  38. package/dist/atoms/chat/index.d.ts +3 -3
  39. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  40. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  41. package/dist/atoms/chat/messageQueue.d.cts +6 -6
  42. package/dist/atoms/chat/messageQueue.d.ts +7 -7
  43. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  44. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  45. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  46. package/dist/atoms/chat/renderedWidgetRefs.d.ts +3 -3
  47. package/dist/atoms/chat/replies.d.cts +1 -1
  48. package/dist/atoms/chat/replies.d.ts +3 -3
  49. package/dist/atoms/chat/suggestions.d.cts +2 -2
  50. package/dist/atoms/chat/suggestions.d.ts +3 -3
  51. package/dist/atoms/envive/enviveConfig.cjs +7 -4
  52. package/dist/atoms/envive/enviveConfig.d.cts +16 -14
  53. package/dist/atoms/envive/enviveConfig.d.ts +16 -14
  54. package/dist/atoms/envive/enviveConfig.js +6 -4
  55. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  56. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  57. package/dist/atoms/org/customerService.d.cts +6 -6
  58. package/dist/atoms/org/customerService.d.ts +6 -6
  59. package/dist/atoms/org/graphqlConfig.cjs +1 -1
  60. package/dist/atoms/org/graphqlConfig.d.cts +6 -6
  61. package/dist/atoms/org/graphqlConfig.d.ts +6 -6
  62. package/dist/atoms/org/graphqlConfig.js +1 -1
  63. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  64. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  65. package/dist/atoms/org/orgAnalyticsConfig.d.cts +4 -4
  66. package/dist/atoms/org/orgAnalyticsConfig.d.ts +4 -4
  67. package/dist/atoms/search/chatSearch.d.cts +17 -17
  68. package/dist/atoms/search/chatSearch.d.ts +17 -17
  69. package/dist/atoms/search/searchAPI.d.cts +13 -13
  70. package/dist/atoms/search/searchAPI.d.ts +13 -13
  71. package/dist/atoms/search/types.d.ts +1 -1
  72. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  73. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  74. package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +6 -4
  75. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +3 -1
  76. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +3 -1
  77. package/dist/contexts/enviveConfigContext/enviveConfigContext.js +6 -4
  78. package/dist/contexts/enviveContext/enviveContext.cjs +7 -3
  79. package/dist/contexts/enviveContext/enviveContext.d.cts +5 -1
  80. package/dist/contexts/enviveContext/enviveContext.d.ts +5 -1
  81. package/dist/contexts/enviveContext/enviveContext.js +7 -3
  82. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +2 -97
  83. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +3 -25
  84. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +3 -25
  85. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +3 -97
  86. package/dist/contexts/featureFlagServiceContext/index.cjs +2 -1
  87. package/dist/contexts/featureFlagServiceContext/index.d.cts +2 -1
  88. package/dist/contexts/featureFlagServiceContext/index.d.ts +2 -1
  89. package/dist/contexts/featureFlagServiceContext/index.js +2 -1
  90. package/dist/contexts/graphqlContext/mockV3Config.cjs +1 -1
  91. package/dist/contexts/graphqlContext/mockV3Config.js +1 -1
  92. package/dist/contexts/localStorageContext/index.cjs +2 -1
  93. package/dist/contexts/localStorageContext/index.d.cts +2 -1
  94. package/dist/contexts/localStorageContext/index.d.ts +2 -1
  95. package/dist/contexts/localStorageContext/index.js +2 -1
  96. package/dist/contexts/localStorageContext/localStorageContext.cjs +5 -11
  97. package/dist/contexts/localStorageContext/localStorageContext.d.cts +3 -7
  98. package/dist/contexts/localStorageContext/localStorageContext.d.ts +3 -7
  99. package/dist/contexts/localStorageContext/localStorageContext.js +3 -8
  100. package/dist/contexts/localStorageContext/localStorageKeys.cjs +12 -0
  101. package/dist/contexts/localStorageContext/localStorageKeys.d.cts +9 -0
  102. package/dist/contexts/localStorageContext/localStorageKeys.d.ts +9 -0
  103. package/dist/contexts/localStorageContext/localStorageKeys.js +11 -0
  104. package/dist/contexts/salesAgentContext/chatAPI.cjs +13 -2
  105. package/dist/contexts/salesAgentContext/chatAPI.d.cts +4 -1
  106. package/dist/contexts/salesAgentContext/chatAPI.d.ts +4 -1
  107. package/dist/contexts/salesAgentContext/chatAPI.js +14 -3
  108. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +12 -4
  109. package/dist/contexts/salesAgentContext/salesAgentContext.js +12 -4
  110. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  111. package/dist/contexts/types.cjs +1 -1
  112. package/dist/contexts/types.d.cts +3 -1
  113. package/dist/contexts/types.d.ts +3 -1
  114. package/dist/contexts/types.js +1 -1
  115. package/dist/contexts/typesV3.cjs +1 -1
  116. package/dist/contexts/typesV3.d.cts +11 -2
  117. package/dist/contexts/typesV3.d.ts +12 -3
  118. package/dist/contexts/typesV3.js +1 -1
  119. package/dist/hooks/AddToCart/addToCartErrorMessage.cjs +7 -0
  120. package/dist/hooks/AddToCart/addToCartErrorMessage.d.cts +5 -0
  121. package/dist/hooks/AddToCart/addToCartErrorMessage.d.ts +5 -0
  122. package/dist/hooks/AddToCart/addToCartErrorMessage.js +6 -0
  123. package/dist/hooks/AddToCart/createAddToCartUserEvent.cjs +20 -0
  124. package/dist/hooks/AddToCart/createAddToCartUserEvent.d.cts +17 -0
  125. package/dist/hooks/AddToCart/createAddToCartUserEvent.d.ts +17 -0
  126. package/dist/hooks/AddToCart/createAddToCartUserEvent.js +19 -0
  127. package/dist/hooks/AddToCart/index.cjs +9 -0
  128. package/dist/hooks/AddToCart/index.d.cts +5 -0
  129. package/dist/hooks/AddToCart/index.d.ts +5 -0
  130. package/dist/hooks/AddToCart/index.js +6 -0
  131. package/dist/hooks/AddToCart/parseAddToCartFunction.cjs +27 -0
  132. package/dist/hooks/AddToCart/parseAddToCartFunction.d.cts +13 -0
  133. package/dist/hooks/AddToCart/parseAddToCartFunction.d.ts +13 -0
  134. package/dist/hooks/AddToCart/parseAddToCartFunction.js +27 -0
  135. package/dist/hooks/AddToCart/useAddToCart.cjs +24 -0
  136. package/dist/hooks/AddToCart/useAddToCart.d.cts +14 -0
  137. package/dist/hooks/AddToCart/useAddToCart.d.ts +14 -0
  138. package/dist/hooks/AddToCart/useAddToCart.js +23 -0
  139. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  140. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.cjs +6 -5
  141. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.js +3 -2
  142. package/dist/hooks/PageViewedEvent/usePageViewedEvent.cjs +5 -2
  143. package/dist/hooks/PageViewedEvent/usePageViewedEvent.js +5 -2
  144. package/dist/hooks/ProductDetails/index.cjs +9 -0
  145. package/dist/hooks/ProductDetails/index.d.cts +4 -0
  146. package/dist/hooks/ProductDetails/index.d.ts +4 -0
  147. package/dist/hooks/ProductDetails/index.js +4 -0
  148. package/dist/hooks/ProductDetails/useProductDetails.cjs +53 -0
  149. package/dist/hooks/ProductDetails/useProductDetails.d.cts +20 -0
  150. package/dist/hooks/ProductDetails/useProductDetails.d.ts +20 -0
  151. package/dist/hooks/ProductDetails/useProductDetails.js +52 -0
  152. package/dist/hooks/ProductDetails/variantSelection.cjs +42 -0
  153. package/dist/hooks/ProductDetails/variantSelection.d.cts +35 -0
  154. package/dist/hooks/ProductDetails/variantSelection.d.ts +35 -0
  155. package/dist/hooks/ProductDetails/variantSelection.js +38 -0
  156. package/dist/hooks/Search/useSearch.d.cts +1 -1
  157. package/dist/hooks/Search/useSearch.d.ts +1 -1
  158. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +11 -2
  159. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.cts +1 -10
  160. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts +1 -10
  161. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +11 -2
  162. package/dist/hooks/WidgetInteraction/types.cjs +12 -2
  163. package/dist/hooks/WidgetInteraction/types.d.cts +28 -3
  164. package/dist/hooks/WidgetInteraction/types.d.ts +28 -3
  165. package/dist/hooks/WidgetInteraction/types.js +12 -2
  166. package/dist/hooks/utils.d.cts +1 -1
  167. package/dist/hooks/utils.d.ts +1 -1
  168. package/dist/services/amplitudeService/amplitudeService.cjs +16 -10
  169. package/dist/services/amplitudeService/amplitudeService.d.cts +5 -2
  170. package/dist/services/amplitudeService/amplitudeService.d.ts +5 -2
  171. package/dist/services/amplitudeService/amplitudeService.js +14 -7
  172. package/dist/services/enviveConfigService/enviveConfigService.cjs +3 -4
  173. package/dist/services/enviveConfigService/enviveConfigService.d.cts +1 -1
  174. package/dist/services/enviveConfigService/enviveConfigService.d.ts +1 -1
  175. package/dist/services/enviveConfigService/enviveConfigService.js +2 -3
  176. package/dist/services/enviveConfigService/fetchGraphQLConfig.cjs +8 -7
  177. package/dist/services/enviveConfigService/fetchGraphQLConfig.js +8 -6
  178. package/dist/services/featureFlagService/index.cjs +101 -0
  179. package/dist/services/featureFlagService/index.d.cts +28 -0
  180. package/dist/services/featureFlagService/index.d.ts +28 -0
  181. package/dist/services/featureFlagService/index.js +101 -0
  182. package/dist/services/ga4ProjectionService/ga4EventSchema.cjs +8 -2
  183. package/dist/services/ga4ProjectionService/ga4EventSchema.js +8 -2
  184. package/dist/services/hardcopyService/hardcopyService.d.cts +1 -1
  185. package/dist/services/hardcopyService/hardcopyService.d.ts +1 -1
  186. package/dist/services/urlResolverWarmupService/index.cjs +54 -0
  187. package/dist/services/urlResolverWarmupService/index.d.cts +40 -0
  188. package/dist/services/urlResolverWarmupService/index.d.ts +40 -0
  189. package/dist/services/urlResolverWarmupService/index.js +54 -0
  190. package/dist/types/enviveConfig.d.cts +6 -2
  191. package/dist/types/enviveConfig.d.ts +6 -2
  192. package/dist/types/index.d.cts +2 -2
  193. package/dist/types/index.d.ts +2 -2
  194. package/package.json +17 -1
  195. package/src/application/__tests__/commerceApiAddToCartRehydration.test.ts +126 -0
  196. package/src/application/commerce-api.ts +142 -23
  197. package/src/application/models/api/userEvent.ts +8 -1
  198. package/src/application/models/featureGates.ts +5 -0
  199. package/src/application/models/graphql/queries/getProductOptionsQuery.ts +59 -0
  200. package/src/application/models/validators/__tests__/validateUserEvent.test.ts +41 -0
  201. package/src/application/models/validators/validateResponse.ts +1 -0
  202. package/src/application/models/validators/validateUserEvent.ts +7 -2
  203. package/src/application/utils/__tests__/messageFromAddToCartEvent.test.ts +109 -0
  204. package/src/application/utils/index.ts +1 -0
  205. package/src/application/utils/messageFromAddToCartEvent.ts +32 -0
  206. package/src/atoms/app/index.ts +1 -1
  207. package/src/atoms/envive/enviveConfig.ts +6 -1
  208. package/src/atoms/org/graphqlConfig.ts +1 -1
  209. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +5 -0
  210. package/src/contexts/enviveContext/enviveContext.tsx +10 -0
  211. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +6 -173
  212. package/src/contexts/localStorageContext/localStorageContext.tsx +2 -5
  213. package/src/contexts/localStorageContext/localStorageKeys.ts +8 -0
  214. package/src/contexts/salesAgentContext/__tests__/chatAPI.test.tsx +63 -0
  215. package/src/contexts/salesAgentContext/chatAPI.ts +20 -1
  216. package/src/contexts/salesAgentContext/salesAgentContext.tsx +10 -0
  217. package/src/contexts/types.ts +2 -0
  218. package/src/contexts/typesV3.ts +14 -0
  219. package/src/hooks/AddToCart/__tests__/parseAddToCartFunction.test.ts +31 -0
  220. package/src/hooks/AddToCart/__tests__/useAddToCart.test.tsx +204 -0
  221. package/src/hooks/AddToCart/addToCartErrorMessage.ts +2 -0
  222. package/src/hooks/AddToCart/createAddToCartUserEvent.ts +25 -0
  223. package/src/hooks/AddToCart/index.ts +4 -0
  224. package/src/hooks/AddToCart/parseAddToCartFunction.ts +31 -0
  225. package/src/hooks/AddToCart/useAddToCart.ts +35 -0
  226. package/src/hooks/PageViewedEvent/usePageViewedEvent.ts +4 -0
  227. package/src/hooks/ProductDetails/__tests__/useProductDetails.test.tsx +129 -0
  228. package/src/hooks/ProductDetails/__tests__/variantSelection.test.ts +145 -0
  229. package/src/hooks/ProductDetails/index.ts +2 -0
  230. package/src/hooks/ProductDetails/useProductDetails.ts +62 -0
  231. package/src/hooks/ProductDetails/variantSelection.ts +61 -0
  232. package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +15 -0
  233. package/src/hooks/WidgetInteraction/types.ts +42 -1
  234. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +8 -8
  235. package/src/services/amplitudeService/amplitudeService.ts +42 -23
  236. package/src/services/enviveConfigService/enviveConfigService.ts +2 -2
  237. package/src/services/enviveConfigService/fetchGraphQLConfig.ts +17 -6
  238. package/src/services/featureFlagService/index.ts +176 -0
  239. package/src/services/ga4ProjectionService/__tests__/ga4ProjectionService.test.ts +36 -0
  240. package/src/services/ga4ProjectionService/ga4EventSchema.ts +7 -0
  241. package/src/services/urlResolverWarmupService/__tests__/urlResolverWarmupService.test.ts +85 -0
  242. package/src/services/urlResolverWarmupService/index.ts +89 -0
  243. package/src/types/enviveConfig.ts +3 -0
@@ -1,3 +1,4 @@
1
+ import { getQueryParam } from "../../application/utils/urlsParser.js";
1
2
  import { VariantTypeEnum } from "../../application/models/variantInfo/variantInfo.js";
2
3
  import "../../application/models/index.js";
3
4
  import { EnviveMetricsEventName } from "../../services/amplitudeService/eventNames.js";
@@ -57,6 +58,7 @@ const usePageViewedEvent = () => {
57
58
  const pageContext = extractPageViewedContext(pageVariantInfo);
58
59
  if (!pageContext) return;
59
60
  hasFired.current = true;
61
+ const envivePlacement = getQueryParam("envive_placement");
60
62
  trackEvent({
61
63
  eventName: EnviveMetricsEventName.PageViewed,
62
64
  eventProps: {
@@ -64,7 +66,8 @@ const usePageViewedEvent = () => {
64
66
  "context.page_id": pageContext.page_id,
65
67
  "context.supported": isSupported,
66
68
  "context.ready": isSupported,
67
- "context.page_variant_id": variantInfo.variantId
69
+ "context.page_variant_id": variantInfo.variantId,
70
+ ...envivePlacement ? { "context.envive_placement": envivePlacement } : {}
68
71
  }
69
72
  });
70
73
  }, [
@@ -79,4 +82,4 @@ const usePageViewedEvent = () => {
79
82
 
80
83
  //#endregion
81
84
  export { extractPageViewedContext, usePageViewedEvent };
82
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUGFnZVZpZXdlZEV2ZW50LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9QYWdlVmlld2VkRXZlbnQvdXNlUGFnZVZpZXdlZEV2ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVmFyaWFudFR5cGVFbnVtIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBoYXNQYXJzZWRWYXJpYW50SW5mb0F0b20sIHZhcmlhbnRJbmZvQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9hcHAvdmFyaWFudCc7XG5pbXBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCB1c2VBbXBsaXR1ZGUgfSBmcm9tICdzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VQYWdlIH0gZnJvbSAnc3JjL2NvbnRleHRzL3BhZ2VDb250ZXh0JztcbmltcG9ydCB7XG4gIEZ1bGxQYWdlU2FsZXNBZ2VudFZhcmlhbnRJbmZvLFxuICBIb21lVmFyaWFudEluZm8sXG4gIE90aGVyVmFyaWFudEluZm8sXG4gIFBEUFBhZ2VWYXJpYW50SW5mbyxcbiAgUExQUGFnZVZhcmlhbnRJbmZvLFxuICBQYWdlVmFyaWFudEluZm8sXG4gIFZpc2l0UGFnZVZhcmlhbnRJbmZvLFxufSBmcm9tICdzcmMvY29udGV4dHMvcGFnZUNvbnRleHQvdHlwZXMnO1xuXG5pbnRlcmZhY2UgUGFnZVZpZXdlZENvbnRleHQge1xuICBwYWdlX3R5cGU6IHN0cmluZztcbiAgcGFnZV9pZDogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgZXh0cmFjdFBhZ2VWaWV3ZWRDb250ZXh0ID0gKFxuICBwYWdlVmFyaWFudDogUGFnZVZhcmlhbnRJbmZvLFxuKTogUGFnZVZpZXdlZENvbnRleHQgfCBudWxsID0+IHtcbiAgc3dpdGNoIChwYWdlVmFyaWFudC52YXJpYW50VHlwZSkge1xuICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLlBkcDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhZ2VfdHlwZTogJ3BkcCcsXG4gICAgICAgIHBhZ2VfaWQ6IChwYWdlVmFyaWFudCBhcyBQRFBQYWdlVmFyaWFudEluZm8pLnByb2R1Y3RJZCxcbiAgICAgIH07XG4gICAgY2FzZSBWYXJpYW50VHlwZUVudW0uUGxwOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZV90eXBlOiAncGxwJyxcbiAgICAgICAgcGFnZV9pZDogKHBhZ2VWYXJpYW50IGFzIFBMUFBhZ2VWYXJpYW50SW5mbykucGxwSWQsXG4gICAgICB9O1xuICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLkhvbWU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYWdlX3R5cGU6ICdob21lcGFnZScsXG4gICAgICAgIHBhZ2VfaWQ6IChwYWdlVmFyaWFudCBhcyBIb21lVmFyaWFudEluZm8pLnVybCxcbiAgICAgIH07XG4gICAgY2FzZSBWYXJpYW50VHlwZUVudW0uT3RoZXI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYWdlX3R5cGU6ICdvdGhlcicsXG4gICAgICAgIHBhZ2VfaWQ6IChwYWdlVmFyaWFudCBhcyBPdGhlclZhcmlhbnRJbmZvKS51cmwsXG4gICAgICB9O1xuICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLlBhZ2VWaXNpdDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhZ2VfdHlwZTogJ290aGVyJyxcbiAgICAgICAgcGFnZV9pZDogKHBhZ2VWYXJpYW50IGFzIFZpc2l0UGFnZVZhcmlhbnRJbmZvKS51cmwsXG4gICAgICB9O1xuICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLkZ1bGxQYWdlU2FsZXNBZ2VudDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhZ2VfdHlwZTogJ2FkYXB0aXZlX3N0b3JlZnJvbnQnLFxuICAgICAgICBwYWdlX2lkOiAocGFnZVZhcmlhbnQgYXMgRnVsbFBhZ2VTYWxlc0FnZW50VmFyaWFudEluZm8pLnVybCxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG4vKipcbiAqIEZpcmVzIHRoZSBbRW52aXZlXSBQYWdlIFZpZXdlZCBldmVudCBvbmNlIHBlciBwYWdlIGxvYWQgd2hlbiBwYWdlIGNvbnRleHQgZGF0YSBpcyByZWFkeS5cbiAqXG4gKiBUaGlzIGV2ZW50IGNhcHR1cmVzIHBhZ2UgY29udGV4dCBpbmZvcm1hdGlvbiBhbmQgaXMgaW50ZW5kZWQgdG8gZXZlbnR1YWxseSByZXBsYWNlXG4gKiB0aGUgW0FtcGxpdHVkZV0gUGFnZSBWaWV3ZWQgZXZlbnQuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VQYWdlVmlld2VkRXZlbnQgPSAoKSA9PiB7XG4gIGNvbnN0IGhhc0ZpcmVkID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgeyB0cmFja0V2ZW50IH0gPSB1c2VBbXBsaXR1ZGUoKTtcbiAgY29uc3QgeyB2YXJpYW50SW5mbzogcGFnZVZhcmlhbnRJbmZvLCBpc1N1cHBvcnRlZCwgaXNMb2FkaW5nIH0gPSB1c2VQYWdlKCk7XG4gIGNvbnN0IHZhcmlhbnRJbmZvID0gdXNlQXRvbVZhbHVlKHZhcmlhbnRJbmZvQXRvbSk7XG4gIGNvbnN0IGhhc1BhcnNlZFZhcmlhbnRJbmZvID0gdXNlQXRvbVZhbHVlKGhhc1BhcnNlZFZhcmlhbnRJbmZvQXRvbSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaGFzRmlyZWQuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0xvYWRpbmcgfHwgIWhhc1BhcnNlZFZhcmlhbnRJbmZvIHx8ICFwYWdlVmFyaWFudEluZm8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYWdlQ29udGV4dCA9IGV4dHJhY3RQYWdlVmlld2VkQ29udGV4dChwYWdlVmFyaWFudEluZm8pO1xuICAgIGlmICghcGFnZUNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBoYXNGaXJlZC5jdXJyZW50ID0gdHJ1ZTtcblxuICAgIHRyYWNrRXZlbnQoe1xuICAgICAgZXZlbnROYW1lOiBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLlBhZ2VWaWV3ZWQsXG4gICAgICBldmVudFByb3BzOiB7XG4gICAgICAgICdjb250ZXh0LnBhZ2VfdHlwZSc6IHBhZ2VDb250ZXh0LnBhZ2VfdHlwZSxcbiAgICAgICAgJ2NvbnRleHQucGFnZV9pZCc6IHBhZ2VDb250ZXh0LnBhZ2VfaWQsXG4gICAgICAgIC8vIGNvbnRleHQuc3VwcG9ydGVkIGFuZCBjb250ZXh0LnJlYWR5IGJvdGggZGVyaXZlIGZyb20gaXNTdXBwb3J0ZWQgKHJlc3BvbnNlLnJlYWR5KVxuICAgICAgICAvLyBiZWNhdXNlIHRoZSBzdXBwb3J0ZWRFdmVudEF0b20gaXMgbm90IGN1cnJlbnRseSBwb3B1bGF0ZWQuXG4gICAgICAgICdjb250ZXh0LnN1cHBvcnRlZCc6IGlzU3VwcG9ydGVkLFxuICAgICAgICAnY29udGV4dC5yZWFkeSc6IGlzU3VwcG9ydGVkLFxuICAgICAgICAnY29udGV4dC5wYWdlX3ZhcmlhbnRfaWQnOiB2YXJpYW50SW5mby52YXJpYW50SWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9LCBbaXNMb2FkaW5nLCBpc1N1cHBvcnRlZCwgaGFzUGFyc2VkVmFyaWFudEluZm8sIHBhZ2VWYXJpYW50SW5mbywgdmFyaWFudEluZm8sIHRyYWNrRXZlbnRdKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQXFCQSxNQUFhLDRCQUNYLGdCQUM2QjtBQUM3QixTQUFRLFlBQVksYUFBcEI7RUFDRSxLQUFLLGdCQUFnQixJQUNuQixRQUFPO0dBQ0wsV0FBVztHQUNYLFNBQVUsWUFBbUM7R0FDOUM7RUFDSCxLQUFLLGdCQUFnQixJQUNuQixRQUFPO0dBQ0wsV0FBVztHQUNYLFNBQVUsWUFBbUM7R0FDOUM7RUFDSCxLQUFLLGdCQUFnQixLQUNuQixRQUFPO0dBQ0wsV0FBVztHQUNYLFNBQVUsWUFBZ0M7R0FDM0M7RUFDSCxLQUFLLGdCQUFnQixNQUNuQixRQUFPO0dBQ0wsV0FBVztHQUNYLFNBQVUsWUFBaUM7R0FDNUM7RUFDSCxLQUFLLGdCQUFnQixVQUNuQixRQUFPO0dBQ0wsV0FBVztHQUNYLFNBQVUsWUFBcUM7R0FDaEQ7RUFDSCxLQUFLLGdCQUFnQixtQkFDbkIsUUFBTztHQUNMLFdBQVc7R0FDWCxTQUFVLFlBQThDO0dBQ3pEO0VBQ0gsUUFDRSxRQUFPOzs7Ozs7Ozs7QUFVYixNQUFhLDJCQUEyQjtDQUN0QyxNQUFNLFdBQVcsT0FBTyxNQUFNO0NBQzlCLE1BQU0sRUFBRSxlQUFlLGNBQWM7Q0FDckMsTUFBTSxFQUFFLGFBQWEsaUJBQWlCLGFBQWEsY0FBYyxTQUFTO0NBQzFFLE1BQU0sY0FBYyxhQUFhLGdCQUFnQjtDQUNqRCxNQUFNLHVCQUF1QixhQUFhLHlCQUF5QjtBQUVuRSxpQkFBZ0I7QUFDZCxNQUFJLFNBQVMsUUFDWDtBQUdGLE1BQUksYUFBYSxDQUFDLHdCQUF3QixDQUFDLGdCQUN6QztFQUdGLE1BQU0sY0FBYyx5QkFBeUIsZ0JBQWdCO0FBQzdELE1BQUksQ0FBQyxZQUNIO0FBR0YsV0FBUyxVQUFVO0FBRW5CLGFBQVc7R0FDVCxXQUFXLHVCQUF1QjtHQUNsQyxZQUFZO0lBQ1YscUJBQXFCLFlBQVk7SUFDakMsbUJBQW1CLFlBQVk7SUFHL0IscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQiwyQkFBMkIsWUFBWTtJQUN4QztHQUNGLENBQUM7SUFDRDtFQUFDO0VBQVc7RUFBYTtFQUFzQjtFQUFpQjtFQUFhO0VBQVcsQ0FBQyJ9
85
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUGFnZVZpZXdlZEV2ZW50LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9QYWdlVmlld2VkRXZlbnQvdXNlUGFnZVZpZXdlZEV2ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVmFyaWFudFR5cGVFbnVtIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBnZXRRdWVyeVBhcmFtIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL3V0aWxzL3VybHNQYXJzZXInO1xuaW1wb3J0IHsgaGFzUGFyc2VkVmFyaWFudEluZm9BdG9tLCB2YXJpYW50SW5mb0F0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwL3ZhcmlhbnQnO1xuaW1wb3J0IHsgRW52aXZlTWV0cmljc0V2ZW50TmFtZSwgdXNlQW1wbGl0dWRlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgdXNlUGFnZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9wYWdlQ29udGV4dCc7XG5pbXBvcnQge1xuICBGdWxsUGFnZVNhbGVzQWdlbnRWYXJpYW50SW5mbyxcbiAgSG9tZVZhcmlhbnRJbmZvLFxuICBPdGhlclZhcmlhbnRJbmZvLFxuICBQRFBQYWdlVmFyaWFudEluZm8sXG4gIFBMUFBhZ2VWYXJpYW50SW5mbyxcbiAgUGFnZVZhcmlhbnRJbmZvLFxuICBWaXNpdFBhZ2VWYXJpYW50SW5mbyxcbn0gZnJvbSAnc3JjL2NvbnRleHRzL3BhZ2VDb250ZXh0L3R5cGVzJztcblxuaW50ZXJmYWNlIFBhZ2VWaWV3ZWRDb250ZXh0IHtcbiAgcGFnZV90eXBlOiBzdHJpbmc7XG4gIHBhZ2VfaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RQYWdlVmlld2VkQ29udGV4dCA9IChcbiAgcGFnZVZhcmlhbnQ6IFBhZ2VWYXJpYW50SW5mbyxcbik6IFBhZ2VWaWV3ZWRDb250ZXh0IHwgbnVsbCA9PiB7XG4gIHN3aXRjaCAocGFnZVZhcmlhbnQudmFyaWFudFR5cGUpIHtcbiAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5QZHA6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYWdlX3R5cGU6ICdwZHAnLFxuICAgICAgICBwYWdlX2lkOiAocGFnZVZhcmlhbnQgYXMgUERQUGFnZVZhcmlhbnRJbmZvKS5wcm9kdWN0SWQsXG4gICAgICB9O1xuICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLlBscDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhZ2VfdHlwZTogJ3BscCcsXG4gICAgICAgIHBhZ2VfaWQ6IChwYWdlVmFyaWFudCBhcyBQTFBQYWdlVmFyaWFudEluZm8pLnBscElkLFxuICAgICAgfTtcbiAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5Ib21lOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZV90eXBlOiAnaG9tZXBhZ2UnLFxuICAgICAgICBwYWdlX2lkOiAocGFnZVZhcmlhbnQgYXMgSG9tZVZhcmlhbnRJbmZvKS51cmwsXG4gICAgICB9O1xuICAgIGNhc2UgVmFyaWFudFR5cGVFbnVtLk90aGVyOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFnZV90eXBlOiAnb3RoZXInLFxuICAgICAgICBwYWdlX2lkOiAocGFnZVZhcmlhbnQgYXMgT3RoZXJWYXJpYW50SW5mbykudXJsLFxuICAgICAgfTtcbiAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5QYWdlVmlzaXQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYWdlX3R5cGU6ICdvdGhlcicsXG4gICAgICAgIHBhZ2VfaWQ6IChwYWdlVmFyaWFudCBhcyBWaXNpdFBhZ2VWYXJpYW50SW5mbykudXJsLFxuICAgICAgfTtcbiAgICBjYXNlIFZhcmlhbnRUeXBlRW51bS5GdWxsUGFnZVNhbGVzQWdlbnQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYWdlX3R5cGU6ICdhZGFwdGl2ZV9zdG9yZWZyb250JyxcbiAgICAgICAgcGFnZV9pZDogKHBhZ2VWYXJpYW50IGFzIEZ1bGxQYWdlU2FsZXNBZ2VudFZhcmlhbnRJbmZvKS51cmwsXG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuLyoqXG4gKiBGaXJlcyB0aGUgW0Vudml2ZV0gUGFnZSBWaWV3ZWQgZXZlbnQgb25jZSBwZXIgcGFnZSBsb2FkIHdoZW4gcGFnZSBjb250ZXh0IGRhdGEgaXMgcmVhZHkuXG4gKlxuICogVGhpcyBldmVudCBjYXB0dXJlcyBwYWdlIGNvbnRleHQgaW5mb3JtYXRpb24gYW5kIGlzIGludGVuZGVkIHRvIGV2ZW50dWFsbHkgcmVwbGFjZVxuICogdGhlIFtBbXBsaXR1ZGVdIFBhZ2UgVmlld2VkIGV2ZW50LlxuICovXG5leHBvcnQgY29uc3QgdXNlUGFnZVZpZXdlZEV2ZW50ID0gKCkgPT4ge1xuICBjb25zdCBoYXNGaXJlZCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHsgdHJhY2tFdmVudCB9ID0gdXNlQW1wbGl0dWRlKCk7XG4gIGNvbnN0IHsgdmFyaWFudEluZm86IHBhZ2VWYXJpYW50SW5mbywgaXNTdXBwb3J0ZWQsIGlzTG9hZGluZyB9ID0gdXNlUGFnZSgpO1xuICBjb25zdCB2YXJpYW50SW5mbyA9IHVzZUF0b21WYWx1ZSh2YXJpYW50SW5mb0F0b20pO1xuICBjb25zdCBoYXNQYXJzZWRWYXJpYW50SW5mbyA9IHVzZUF0b21WYWx1ZShoYXNQYXJzZWRWYXJpYW50SW5mb0F0b20pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGhhc0ZpcmVkLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNMb2FkaW5nIHx8ICFoYXNQYXJzZWRWYXJpYW50SW5mbyB8fCAhcGFnZVZhcmlhbnRJbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGFnZUNvbnRleHQgPSBleHRyYWN0UGFnZVZpZXdlZENvbnRleHQocGFnZVZhcmlhbnRJbmZvKTtcbiAgICBpZiAoIXBhZ2VDb250ZXh0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaGFzRmlyZWQuY3VycmVudCA9IHRydWU7XG5cbiAgICBjb25zdCBlbnZpdmVQbGFjZW1lbnQgPSBnZXRRdWVyeVBhcmFtKCdlbnZpdmVfcGxhY2VtZW50Jyk7XG5cbiAgICB0cmFja0V2ZW50KHtcbiAgICAgIGV2ZW50TmFtZTogRW52aXZlTWV0cmljc0V2ZW50TmFtZS5QYWdlVmlld2VkLFxuICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAnY29udGV4dC5wYWdlX3R5cGUnOiBwYWdlQ29udGV4dC5wYWdlX3R5cGUsXG4gICAgICAgICdjb250ZXh0LnBhZ2VfaWQnOiBwYWdlQ29udGV4dC5wYWdlX2lkLFxuICAgICAgICAvLyBjb250ZXh0LnN1cHBvcnRlZCBhbmQgY29udGV4dC5yZWFkeSBib3RoIGRlcml2ZSBmcm9tIGlzU3VwcG9ydGVkIChyZXNwb25zZS5yZWFkeSlcbiAgICAgICAgLy8gYmVjYXVzZSB0aGUgc3VwcG9ydGVkRXZlbnRBdG9tIGlzIG5vdCBjdXJyZW50bHkgcG9wdWxhdGVkLlxuICAgICAgICAnY29udGV4dC5zdXBwb3J0ZWQnOiBpc1N1cHBvcnRlZCxcbiAgICAgICAgJ2NvbnRleHQucmVhZHknOiBpc1N1cHBvcnRlZCxcbiAgICAgICAgJ2NvbnRleHQucGFnZV92YXJpYW50X2lkJzogdmFyaWFudEluZm8udmFyaWFudElkLFxuICAgICAgICAuLi4oZW52aXZlUGxhY2VtZW50ID8geyAnY29udGV4dC5lbnZpdmVfcGxhY2VtZW50JzogZW52aXZlUGxhY2VtZW50IH0gOiB7fSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9LCBbaXNMb2FkaW5nLCBpc1N1cHBvcnRlZCwgaGFzUGFyc2VkVmFyaWFudEluZm8sIHBhZ2VWYXJpYW50SW5mbywgdmFyaWFudEluZm8sIHRyYWNrRXZlbnRdKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFzQkEsTUFBYSw0QkFDWCxnQkFDNkI7QUFDN0IsU0FBUSxZQUFZLGFBQXBCO0VBQ0UsS0FBSyxnQkFBZ0IsSUFDbkIsUUFBTztHQUNMLFdBQVc7R0FDWCxTQUFVLFlBQW1DO0dBQzlDO0VBQ0gsS0FBSyxnQkFBZ0IsSUFDbkIsUUFBTztHQUNMLFdBQVc7R0FDWCxTQUFVLFlBQW1DO0dBQzlDO0VBQ0gsS0FBSyxnQkFBZ0IsS0FDbkIsUUFBTztHQUNMLFdBQVc7R0FDWCxTQUFVLFlBQWdDO0dBQzNDO0VBQ0gsS0FBSyxnQkFBZ0IsTUFDbkIsUUFBTztHQUNMLFdBQVc7R0FDWCxTQUFVLFlBQWlDO0dBQzVDO0VBQ0gsS0FBSyxnQkFBZ0IsVUFDbkIsUUFBTztHQUNMLFdBQVc7R0FDWCxTQUFVLFlBQXFDO0dBQ2hEO0VBQ0gsS0FBSyxnQkFBZ0IsbUJBQ25CLFFBQU87R0FDTCxXQUFXO0dBQ1gsU0FBVSxZQUE4QztHQUN6RDtFQUNILFFBQ0UsUUFBTzs7Ozs7Ozs7O0FBVWIsTUFBYSwyQkFBMkI7Q0FDdEMsTUFBTSxXQUFXLE9BQU8sTUFBTTtDQUM5QixNQUFNLEVBQUUsZUFBZSxjQUFjO0NBQ3JDLE1BQU0sRUFBRSxhQUFhLGlCQUFpQixhQUFhLGNBQWMsU0FBUztDQUMxRSxNQUFNLGNBQWMsYUFBYSxnQkFBZ0I7Q0FDakQsTUFBTSx1QkFBdUIsYUFBYSx5QkFBeUI7QUFFbkUsaUJBQWdCO0FBQ2QsTUFBSSxTQUFTLFFBQ1g7QUFHRixNQUFJLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxnQkFDekM7RUFHRixNQUFNLGNBQWMseUJBQXlCLGdCQUFnQjtBQUM3RCxNQUFJLENBQUMsWUFDSDtBQUdGLFdBQVMsVUFBVTtFQUVuQixNQUFNLGtCQUFrQixjQUFjLG1CQUFtQjtBQUV6RCxhQUFXO0dBQ1QsV0FBVyx1QkFBdUI7R0FDbEMsWUFBWTtJQUNWLHFCQUFxQixZQUFZO0lBQ2pDLG1CQUFtQixZQUFZO0lBRy9CLHFCQUFxQjtJQUNyQixpQkFBaUI7SUFDakIsMkJBQTJCLFlBQVk7SUFDdkMsR0FBSSxrQkFBa0IsRUFBRSw0QkFBNEIsaUJBQWlCLEdBQUcsRUFBRTtJQUMzRTtHQUNGLENBQUM7SUFDRDtFQUFDO0VBQVc7RUFBYTtFQUFzQjtFQUFpQjtFQUFhO0VBQVcsQ0FBQyJ9
@@ -0,0 +1,9 @@
1
+ const require_useProductDetails = require('./useProductDetails.cjs');
2
+ const require_variantSelection = require('./variantSelection.cjs');
3
+
4
+ exports.fetchProductDetails = require_variantSelection.fetchProductDetails;
5
+ exports.findVariantForSelection = require_variantSelection.findVariantForSelection;
6
+ exports.getDefaultVariantSelection = require_variantSelection.getDefaultVariantSelection;
7
+ exports.getSingleVariantId = require_variantSelection.getSingleVariantId;
8
+ exports.needsVariantSelection = require_variantSelection.needsVariantSelection;
9
+ exports.useProductDetails = require_useProductDetails.useProductDetails;
@@ -0,0 +1,4 @@
1
+ import { ProductDetails, ProductOption, ProductVariant, ProductVariantOption } from "../../application/models/graphql/queries/getProductOptionsQuery.cjs";
2
+ import { UseProductDetailsResult, useProductDetails } from "./useProductDetails.cjs";
3
+ import { VariantSelection, fetchProductDetails, findVariantForSelection, getDefaultVariantSelection, getSingleVariantId, needsVariantSelection } from "./variantSelection.cjs";
4
+ export { ProductDetails, ProductOption, ProductVariant, ProductVariantOption, UseProductDetailsResult, VariantSelection, fetchProductDetails, findVariantForSelection, getDefaultVariantSelection, getSingleVariantId, needsVariantSelection, useProductDetails };
@@ -0,0 +1,4 @@
1
+ import { ProductDetails, ProductOption, ProductVariant, ProductVariantOption } from "../../application/models/graphql/queries/getProductOptionsQuery.js";
2
+ import { UseProductDetailsResult, useProductDetails } from "./useProductDetails.js";
3
+ import { VariantSelection, fetchProductDetails, findVariantForSelection, getDefaultVariantSelection, getSingleVariantId, needsVariantSelection } from "./variantSelection.js";
4
+ export { ProductDetails, ProductOption, ProductVariant, ProductVariantOption, UseProductDetailsResult, VariantSelection, fetchProductDetails, findVariantForSelection, getDefaultVariantSelection, getSingleVariantId, needsVariantSelection, useProductDetails };
@@ -0,0 +1,4 @@
1
+ import { useProductDetails } from "./useProductDetails.js";
2
+ import { fetchProductDetails, findVariantForSelection, getDefaultVariantSelection, getSingleVariantId, needsVariantSelection } from "./variantSelection.js";
3
+
4
+ export { fetchProductDetails, findVariantForSelection, getDefaultVariantSelection, getSingleVariantId, needsVariantSelection, useProductDetails };
@@ -0,0 +1,53 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_application_commerce_api = require('../../application/commerce-api.cjs');
3
+ let react = require("react");
4
+
5
+ //#region src/hooks/ProductDetails/useProductDetails.ts
6
+ /**
7
+ * Fetches variant-level product details (options, availability, pricing, images)
8
+ * for the given product ID via CommerceApiClient.retrieveProductDetails (GraphQL
9
+ * `me.productOptions`). Only meaningful for products that offer variations.
10
+ *
11
+ * Returns an idle result ({ data: undefined, isLoading: false, error: undefined })
12
+ * when productId is not provided.
13
+ */
14
+ const useProductDetails = (productId) => {
15
+ const [data, setData] = (0, react.useState)(void 0);
16
+ const [isLoading, setIsLoading] = (0, react.useState)(false);
17
+ const [error, setError] = (0, react.useState)(void 0);
18
+ (0, react.useEffect)(() => {
19
+ if (!productId) {
20
+ setData(void 0);
21
+ setIsLoading(false);
22
+ setError(void 0);
23
+ return;
24
+ }
25
+ let cancelled = false;
26
+ setData(void 0);
27
+ setError(void 0);
28
+ setIsLoading(true);
29
+ require_application_commerce_api.default.retrieveProductDetails(productId).then((result) => {
30
+ if (!cancelled) {
31
+ setData(result);
32
+ setIsLoading(false);
33
+ }
34
+ }, (err) => {
35
+ if (!cancelled) {
36
+ setError(err instanceof Error ? err : new Error(String(err)));
37
+ setIsLoading(false);
38
+ }
39
+ });
40
+ return () => {
41
+ cancelled = true;
42
+ };
43
+ }, [productId]);
44
+ return {
45
+ data,
46
+ isLoading,
47
+ error
48
+ };
49
+ };
50
+
51
+ //#endregion
52
+ exports.useProductDetails = useProductDetails;
53
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUHJvZHVjdERldGFpbHMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9Qcm9kdWN0RGV0YWlscy91c2VQcm9kdWN0RGV0YWlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IENvbW1lcmNlQXBpQ2xpZW50IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9jb21tZXJjZS1hcGknO1xuaW1wb3J0IHsgUHJvZHVjdERldGFpbHMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRQcm9kdWN0T3B0aW9uc1F1ZXJ5JztcblxuZXhwb3J0IHR5cGUge1xuICBQcm9kdWN0RGV0YWlscyxcbiAgUHJvZHVjdE9wdGlvbixcbiAgUHJvZHVjdFZhcmlhbnQsXG4gIFByb2R1Y3RWYXJpYW50T3B0aW9uLFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRQcm9kdWN0T3B0aW9uc1F1ZXJ5JztcblxuZXhwb3J0IGludGVyZmFjZSBVc2VQcm9kdWN0RGV0YWlsc1Jlc3VsdCB7XG4gIGRhdGE6IFByb2R1Y3REZXRhaWxzIHwgdW5kZWZpbmVkO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBGZXRjaGVzIHZhcmlhbnQtbGV2ZWwgcHJvZHVjdCBkZXRhaWxzIChvcHRpb25zLCBhdmFpbGFiaWxpdHksIHByaWNpbmcsIGltYWdlcylcbiAqIGZvciB0aGUgZ2l2ZW4gcHJvZHVjdCBJRCB2aWEgQ29tbWVyY2VBcGlDbGllbnQucmV0cmlldmVQcm9kdWN0RGV0YWlscyAoR3JhcGhRTFxuICogYG1lLnByb2R1Y3RPcHRpb25zYCkuIE9ubHkgbWVhbmluZ2Z1bCBmb3IgcHJvZHVjdHMgdGhhdCBvZmZlciB2YXJpYXRpb25zLlxuICpcbiAqIFJldHVybnMgYW4gaWRsZSByZXN1bHQgKHsgZGF0YTogdW5kZWZpbmVkLCBpc0xvYWRpbmc6IGZhbHNlLCBlcnJvcjogdW5kZWZpbmVkIH0pXG4gKiB3aGVuIHByb2R1Y3RJZCBpcyBub3QgcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VQcm9kdWN0RGV0YWlscyA9IChwcm9kdWN0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFVzZVByb2R1Y3REZXRhaWxzUmVzdWx0ID0+IHtcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGU8UHJvZHVjdERldGFpbHMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8RXJyb3IgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXByb2R1Y3RJZCkge1xuICAgICAgc2V0RGF0YSh1bmRlZmluZWQpO1xuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgIHNldEVycm9yKHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgc2V0RGF0YSh1bmRlZmluZWQpO1xuICAgIHNldEVycm9yKHVuZGVmaW5lZCk7XG4gICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgIENvbW1lcmNlQXBpQ2xpZW50LnJldHJpZXZlUHJvZHVjdERldGFpbHMocHJvZHVjdElkKS50aGVuKFxuICAgICAgcmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICBzZXREYXRhKHJlc3VsdCk7XG4gICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVyciA9PiB7XG4gICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgc2V0RXJyb3IoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpKTtcbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgfTtcbiAgfSwgW3Byb2R1Y3RJZF0pO1xuXG4gIHJldHVybiB7IGRhdGEsIGlzTG9hZGluZywgZXJyb3IgfTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUF5QkEsTUFBYSxxQkFBcUIsY0FBMkQ7Q0FDM0YsTUFBTSxDQUFDLE1BQU0sK0JBQWdELE9BQVU7Q0FDdkUsTUFBTSxDQUFDLFdBQVcsb0NBQXlCLE1BQU07Q0FDakQsTUFBTSxDQUFDLE9BQU8sZ0NBQXdDLE9BQVU7QUFFaEUsNEJBQWdCO0FBQ2QsTUFBSSxDQUFDLFdBQVc7QUFDZCxXQUFRLE9BQVU7QUFDbEIsZ0JBQWEsTUFBTTtBQUNuQixZQUFTLE9BQVU7QUFDbkI7O0VBRUYsSUFBSSxZQUFZO0FBQ2hCLFVBQVEsT0FBVTtBQUNsQixXQUFTLE9BQVU7QUFDbkIsZUFBYSxLQUFLO0FBQ2xCLDJDQUFrQix1QkFBdUIsVUFBVSxDQUFDLE1BQ2xELFdBQVU7QUFDUixPQUFJLENBQUMsV0FBVztBQUNkLFlBQVEsT0FBTztBQUNmLGlCQUFhLE1BQU07O01BR3ZCLFFBQU87QUFDTCxPQUFJLENBQUMsV0FBVztBQUNkLGFBQVMsZUFBZSxRQUFRLE1BQU0sSUFBSSxNQUFNLE9BQU8sSUFBSSxDQUFDLENBQUM7QUFDN0QsaUJBQWEsTUFBTTs7SUFHeEI7QUFDRCxlQUFhO0FBQ1gsZUFBWTs7SUFFYixDQUFDLFVBQVUsQ0FBQztBQUVmLFFBQU87RUFBRTtFQUFNO0VBQVc7RUFBTyJ9
@@ -0,0 +1,20 @@
1
+ import { ProductDetails, ProductOption, ProductVariant, ProductVariantOption } from "../../application/models/graphql/queries/getProductOptionsQuery.cjs";
2
+
3
+ //#region src/hooks/ProductDetails/useProductDetails.d.ts
4
+ interface UseProductDetailsResult {
5
+ data: ProductDetails | undefined;
6
+ isLoading: boolean;
7
+ error: Error | undefined;
8
+ }
9
+ /**
10
+ * Fetches variant-level product details (options, availability, pricing, images)
11
+ * for the given product ID via CommerceApiClient.retrieveProductDetails (GraphQL
12
+ * `me.productOptions`). Only meaningful for products that offer variations.
13
+ *
14
+ * Returns an idle result ({ data: undefined, isLoading: false, error: undefined })
15
+ * when productId is not provided.
16
+ */
17
+ declare const useProductDetails: (productId: string | undefined) => UseProductDetailsResult;
18
+ //#endregion
19
+ export { UseProductDetailsResult, useProductDetails };
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUHJvZHVjdERldGFpbHMuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1Byb2R1Y3REZXRhaWxzL3VzZVByb2R1Y3REZXRhaWxzLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvZHVjdERldGFpbHMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRQcm9kdWN0T3B0aW9uc1F1ZXJ5JztcbmV4cG9ydCB0eXBlIHsgUHJvZHVjdERldGFpbHMsIFByb2R1Y3RPcHRpb24sIFByb2R1Y3RWYXJpYW50LCBQcm9kdWN0VmFyaWFudE9wdGlvbiwgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRQcm9kdWN0T3B0aW9uc1F1ZXJ5JztcbmV4cG9ydCBpbnRlcmZhY2UgVXNlUHJvZHVjdERldGFpbHNSZXN1bHQge1xuICAgIGRhdGE6IFByb2R1Y3REZXRhaWxzIHwgdW5kZWZpbmVkO1xuICAgIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgICBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG59XG4vKipcbiAqIEZldGNoZXMgdmFyaWFudC1sZXZlbCBwcm9kdWN0IGRldGFpbHMgKG9wdGlvbnMsIGF2YWlsYWJpbGl0eSwgcHJpY2luZywgaW1hZ2VzKVxuICogZm9yIHRoZSBnaXZlbiBwcm9kdWN0IElEIHZpYSBDb21tZXJjZUFwaUNsaWVudC5yZXRyaWV2ZVByb2R1Y3REZXRhaWxzIChHcmFwaFFMXG4gKiBgbWUucHJvZHVjdE9wdGlvbnNgKS4gT25seSBtZWFuaW5nZnVsIGZvciBwcm9kdWN0cyB0aGF0IG9mZmVyIHZhcmlhdGlvbnMuXG4gKlxuICogUmV0dXJucyBhbiBpZGxlIHJlc3VsdCAoeyBkYXRhOiB1bmRlZmluZWQsIGlzTG9hZGluZzogZmFsc2UsIGVycm9yOiB1bmRlZmluZWQgfSlcbiAqIHdoZW4gcHJvZHVjdElkIGlzIG5vdCBwcm92aWRlZC5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlUHJvZHVjdERldGFpbHM6IChwcm9kdWN0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4gVXNlUHJvZHVjdERldGFpbHNSZXN1bHQ7XG4iXSwibWFwcGluZ3MiOiI7OztBQUVBLElBQVcsMEJBQTBCO0NBQUM7T0FBRztPQUFBO0NBQUE7QUFDekMsSUFBVyxvQkFBb0IsQ0FBQyxXQUFJLHdCQUFBIn0=
@@ -0,0 +1,20 @@
1
+ import { ProductDetails, ProductOption, ProductVariant, ProductVariantOption } from "../../application/models/graphql/queries/getProductOptionsQuery.js";
2
+
3
+ //#region src/hooks/ProductDetails/useProductDetails.d.ts
4
+ interface UseProductDetailsResult {
5
+ data: ProductDetails | undefined;
6
+ isLoading: boolean;
7
+ error: Error | undefined;
8
+ }
9
+ /**
10
+ * Fetches variant-level product details (options, availability, pricing, images)
11
+ * for the given product ID via CommerceApiClient.retrieveProductDetails (GraphQL
12
+ * `me.productOptions`). Only meaningful for products that offer variations.
13
+ *
14
+ * Returns an idle result ({ data: undefined, isLoading: false, error: undefined })
15
+ * when productId is not provided.
16
+ */
17
+ declare const useProductDetails: (productId: string | undefined) => UseProductDetailsResult;
18
+ //#endregion
19
+ export { UseProductDetailsResult, useProductDetails };
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUHJvZHVjdERldGFpbHMuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvUHJvZHVjdERldGFpbHMvdXNlUHJvZHVjdERldGFpbHMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9kdWN0RGV0YWlscyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldFByb2R1Y3RPcHRpb25zUXVlcnknO1xuZXhwb3J0IHR5cGUgeyBQcm9kdWN0RGV0YWlscywgUHJvZHVjdE9wdGlvbiwgUHJvZHVjdFZhcmlhbnQsIFByb2R1Y3RWYXJpYW50T3B0aW9uLCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldFByb2R1Y3RPcHRpb25zUXVlcnknO1xuZXhwb3J0IGludGVyZmFjZSBVc2VQcm9kdWN0RGV0YWlsc1Jlc3VsdCB7XG4gICAgZGF0YTogUHJvZHVjdERldGFpbHMgfCB1bmRlZmluZWQ7XG4gICAgaXNMb2FkaW5nOiBib29sZWFuO1xuICAgIGVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcbn1cbi8qKlxuICogRmV0Y2hlcyB2YXJpYW50LWxldmVsIHByb2R1Y3QgZGV0YWlscyAob3B0aW9ucywgYXZhaWxhYmlsaXR5LCBwcmljaW5nLCBpbWFnZXMpXG4gKiBmb3IgdGhlIGdpdmVuIHByb2R1Y3QgSUQgdmlhIENvbW1lcmNlQXBpQ2xpZW50LnJldHJpZXZlUHJvZHVjdERldGFpbHMgKEdyYXBoUUxcbiAqIGBtZS5wcm9kdWN0T3B0aW9uc2ApLiBPbmx5IG1lYW5pbmdmdWwgZm9yIHByb2R1Y3RzIHRoYXQgb2ZmZXIgdmFyaWF0aW9ucy5cbiAqXG4gKiBSZXR1cm5zIGFuIGlkbGUgcmVzdWx0ICh7IGRhdGE6IHVuZGVmaW5lZCwgaXNMb2FkaW5nOiBmYWxzZSwgZXJyb3I6IHVuZGVmaW5lZCB9KVxuICogd2hlbiBwcm9kdWN0SWQgaXMgbm90IHByb3ZpZGVkLlxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VQcm9kdWN0RGV0YWlsczogKHByb2R1Y3RJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiBVc2VQcm9kdWN0RGV0YWlsc1Jlc3VsdDtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsSUFBVywwQkFBMEI7Q0FBQztPQUFHO09BQUE7Q0FBQTtBQUN6QyxJQUFXLG9CQUFvQixDQUFDLFdBQUksd0JBQUEifQ==
@@ -0,0 +1,52 @@
1
+ import commerce_api_default from "../../application/commerce-api.js";
2
+ import { useEffect, useState } from "react";
3
+
4
+ //#region src/hooks/ProductDetails/useProductDetails.ts
5
+ /**
6
+ * Fetches variant-level product details (options, availability, pricing, images)
7
+ * for the given product ID via CommerceApiClient.retrieveProductDetails (GraphQL
8
+ * `me.productOptions`). Only meaningful for products that offer variations.
9
+ *
10
+ * Returns an idle result ({ data: undefined, isLoading: false, error: undefined })
11
+ * when productId is not provided.
12
+ */
13
+ const useProductDetails = (productId) => {
14
+ const [data, setData] = useState(void 0);
15
+ const [isLoading, setIsLoading] = useState(false);
16
+ const [error, setError] = useState(void 0);
17
+ useEffect(() => {
18
+ if (!productId) {
19
+ setData(void 0);
20
+ setIsLoading(false);
21
+ setError(void 0);
22
+ return;
23
+ }
24
+ let cancelled = false;
25
+ setData(void 0);
26
+ setError(void 0);
27
+ setIsLoading(true);
28
+ commerce_api_default.retrieveProductDetails(productId).then((result) => {
29
+ if (!cancelled) {
30
+ setData(result);
31
+ setIsLoading(false);
32
+ }
33
+ }, (err) => {
34
+ if (!cancelled) {
35
+ setError(err instanceof Error ? err : new Error(String(err)));
36
+ setIsLoading(false);
37
+ }
38
+ });
39
+ return () => {
40
+ cancelled = true;
41
+ };
42
+ }, [productId]);
43
+ return {
44
+ data,
45
+ isLoading,
46
+ error
47
+ };
48
+ };
49
+
50
+ //#endregion
51
+ export { useProductDetails };
52
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlUHJvZHVjdERldGFpbHMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1Byb2R1Y3REZXRhaWxzL3VzZVByb2R1Y3REZXRhaWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ29tbWVyY2VBcGlDbGllbnQgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2NvbW1lcmNlLWFwaSc7XG5pbXBvcnQgeyBQcm9kdWN0RGV0YWlscyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldFByb2R1Y3RPcHRpb25zUXVlcnknO1xuXG5leHBvcnQgdHlwZSB7XG4gIFByb2R1Y3REZXRhaWxzLFxuICBQcm9kdWN0T3B0aW9uLFxuICBQcm9kdWN0VmFyaWFudCxcbiAgUHJvZHVjdFZhcmlhbnRPcHRpb24sXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldFByb2R1Y3RPcHRpb25zUXVlcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZVByb2R1Y3REZXRhaWxzUmVzdWx0IHtcbiAgZGF0YTogUHJvZHVjdERldGFpbHMgfCB1bmRlZmluZWQ7XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgZXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEZldGNoZXMgdmFyaWFudC1sZXZlbCBwcm9kdWN0IGRldGFpbHMgKG9wdGlvbnMsIGF2YWlsYWJpbGl0eSwgcHJpY2luZywgaW1hZ2VzKVxuICogZm9yIHRoZSBnaXZlbiBwcm9kdWN0IElEIHZpYSBDb21tZXJjZUFwaUNsaWVudC5yZXRyaWV2ZVByb2R1Y3REZXRhaWxzIChHcmFwaFFMXG4gKiBgbWUucHJvZHVjdE9wdGlvbnNgKS4gT25seSBtZWFuaW5nZnVsIGZvciBwcm9kdWN0cyB0aGF0IG9mZmVyIHZhcmlhdGlvbnMuXG4gKlxuICogUmV0dXJucyBhbiBpZGxlIHJlc3VsdCAoeyBkYXRhOiB1bmRlZmluZWQsIGlzTG9hZGluZzogZmFsc2UsIGVycm9yOiB1bmRlZmluZWQgfSlcbiAqIHdoZW4gcHJvZHVjdElkIGlzIG5vdCBwcm92aWRlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVByb2R1Y3REZXRhaWxzID0gKHByb2R1Y3RJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogVXNlUHJvZHVjdERldGFpbHNSZXN1bHQgPT4ge1xuICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSB1c2VTdGF0ZTxQcm9kdWN0RGV0YWlscyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxFcnJvciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcHJvZHVjdElkKSB7XG4gICAgICBzZXREYXRhKHVuZGVmaW5lZCk7XG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgc2V0RXJyb3IodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICBzZXREYXRhKHVuZGVmaW5lZCk7XG4gICAgc2V0RXJyb3IodW5kZWZpbmVkKTtcbiAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgQ29tbWVyY2VBcGlDbGllbnQucmV0cmlldmVQcm9kdWN0RGV0YWlscyhwcm9kdWN0SWQpLnRoZW4oXG4gICAgICByZXN1bHQgPT4ge1xuICAgICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICAgIHNldERhdGEocmVzdWx0KTtcbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyID0+IHtcbiAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICBzZXRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyKSkpO1xuICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICB9O1xuICB9LCBbcHJvZHVjdElkXSk7XG5cbiAgcmV0dXJuIHsgZGF0YSwgaXNMb2FkaW5nLCBlcnJvciB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBeUJBLE1BQWEscUJBQXFCLGNBQTJEO0NBQzNGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsU0FBcUMsT0FBVTtDQUN2RSxNQUFNLENBQUMsV0FBVyxnQkFBZ0IsU0FBUyxNQUFNO0NBQ2pELE1BQU0sQ0FBQyxPQUFPLFlBQVksU0FBNEIsT0FBVTtBQUVoRSxpQkFBZ0I7QUFDZCxNQUFJLENBQUMsV0FBVztBQUNkLFdBQVEsT0FBVTtBQUNsQixnQkFBYSxNQUFNO0FBQ25CLFlBQVMsT0FBVTtBQUNuQjs7RUFFRixJQUFJLFlBQVk7QUFDaEIsVUFBUSxPQUFVO0FBQ2xCLFdBQVMsT0FBVTtBQUNuQixlQUFhLEtBQUs7QUFDbEIsdUJBQWtCLHVCQUF1QixVQUFVLENBQUMsTUFDbEQsV0FBVTtBQUNSLE9BQUksQ0FBQyxXQUFXO0FBQ2QsWUFBUSxPQUFPO0FBQ2YsaUJBQWEsTUFBTTs7TUFHdkIsUUFBTztBQUNMLE9BQUksQ0FBQyxXQUFXO0FBQ2QsYUFBUyxlQUFlLFFBQVEsTUFBTSxJQUFJLE1BQU0sT0FBTyxJQUFJLENBQUMsQ0FBQztBQUM3RCxpQkFBYSxNQUFNOztJQUd4QjtBQUNELGVBQWE7QUFDWCxlQUFZOztJQUViLENBQUMsVUFBVSxDQUFDO0FBRWYsUUFBTztFQUFFO0VBQU07RUFBVztFQUFPIn0=
@@ -0,0 +1,42 @@
1
+ const require_application_commerce_api = require('../../application/commerce-api.cjs');
2
+
3
+ //#region src/hooks/ProductDetails/variantSelection.ts
4
+ /**
5
+ * Imperative variant-details fetch for click-driven flows (the mount-driven
6
+ * useProductDetails hook is a poor fit when the fetch should ride a button's
7
+ * pending state). Resolves undefined when the product has no options data.
8
+ *
9
+ * @throws on network/HTTP failure or GraphQL errors
10
+ */
11
+ const fetchProductDetails = (productId) => require_application_commerce_api.default.retrieveProductDetails(productId);
12
+ /**
13
+ * A product needs the variant selector when there is more than one variant to
14
+ * choose between and at least one option actually offers a choice.
15
+ */
16
+ const needsVariantSelection = (details) => !!details && details.variants.length > 1 && details.options.some((o) => o.values.length > 1);
17
+ /** The variantId to add directly when the product has exactly one variant. */
18
+ const getSingleVariantId = (details) => details && details.variants.length === 1 ? details.variants[0].variantId : void 0;
19
+ /**
20
+ * Initial dropdown state: the options of the first available variant, falling
21
+ * back to the first variant, falling back to the first value of each option —
22
+ * so the selector opens in an addable state whenever possible.
23
+ */
24
+ const getDefaultVariantSelection = (details) => {
25
+ const defaultVariant = details.variants.find((v) => v.available) ?? details.variants[0];
26
+ if (defaultVariant) return Object.fromEntries(defaultVariant.options.map(({ name, value }) => [name, value]));
27
+ return Object.fromEntries(details.options.filter((o) => o.values.length > 0).map((o) => [o.name, o.values[0]]));
28
+ };
29
+ /**
30
+ * The variant whose options exactly match the selection (every option name in
31
+ * the variant agrees with the selected value, and counts match), or undefined
32
+ * when the combination does not exist.
33
+ */
34
+ const findVariantForSelection = (details, selection) => details.variants.find((variant) => variant.options.length === Object.keys(selection).length && variant.options.every(({ name, value }) => selection[name] === value));
35
+
36
+ //#endregion
37
+ exports.fetchProductDetails = fetchProductDetails;
38
+ exports.findVariantForSelection = findVariantForSelection;
39
+ exports.getDefaultVariantSelection = getDefaultVariantSelection;
40
+ exports.getSingleVariantId = getSingleVariantId;
41
+ exports.needsVariantSelection = needsVariantSelection;
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudFNlbGVjdGlvbi5janMiLCJuYW1lcyI6WyJDb21tZXJjZUFwaUNsaWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9Qcm9kdWN0RGV0YWlscy92YXJpYW50U2VsZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21tZXJjZUFwaUNsaWVudCBmcm9tICdzcmMvYXBwbGljYXRpb24vY29tbWVyY2UtYXBpJztcbmltcG9ydCB7XG4gIFByb2R1Y3REZXRhaWxzLFxuICBQcm9kdWN0VmFyaWFudCxcbn0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ncmFwaHFsL3F1ZXJpZXMvZ2V0UHJvZHVjdE9wdGlvbnNRdWVyeSc7XG5cbi8qKiBBIGRyb3Bkb3duIHNlbGVjdGlvbiBzdGF0ZTogb3B0aW9uIG5hbWUg4oaSIGNob3NlbiB2YWx1ZS4gKi9cbmV4cG9ydCB0eXBlIFZhcmlhbnRTZWxlY3Rpb24gPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4vKipcbiAqIEltcGVyYXRpdmUgdmFyaWFudC1kZXRhaWxzIGZldGNoIGZvciBjbGljay1kcml2ZW4gZmxvd3MgKHRoZSBtb3VudC1kcml2ZW5cbiAqIHVzZVByb2R1Y3REZXRhaWxzIGhvb2sgaXMgYSBwb29yIGZpdCB3aGVuIHRoZSBmZXRjaCBzaG91bGQgcmlkZSBhIGJ1dHRvbidzXG4gKiBwZW5kaW5nIHN0YXRlKS4gUmVzb2x2ZXMgdW5kZWZpbmVkIHdoZW4gdGhlIHByb2R1Y3QgaGFzIG5vIG9wdGlvbnMgZGF0YS5cbiAqXG4gKiBAdGhyb3dzIG9uIG5ldHdvcmsvSFRUUCBmYWlsdXJlIG9yIEdyYXBoUUwgZXJyb3JzXG4gKi9cbmV4cG9ydCBjb25zdCBmZXRjaFByb2R1Y3REZXRhaWxzID0gKHByb2R1Y3RJZDogc3RyaW5nKTogUHJvbWlzZTxQcm9kdWN0RGV0YWlscyB8IHVuZGVmaW5lZD4gPT5cbiAgQ29tbWVyY2VBcGlDbGllbnQucmV0cmlldmVQcm9kdWN0RGV0YWlscyhwcm9kdWN0SWQpO1xuXG4vKipcbiAqIEEgcHJvZHVjdCBuZWVkcyB0aGUgdmFyaWFudCBzZWxlY3RvciB3aGVuIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgdmFyaWFudCB0b1xuICogY2hvb3NlIGJldHdlZW4gYW5kIGF0IGxlYXN0IG9uZSBvcHRpb24gYWN0dWFsbHkgb2ZmZXJzIGEgY2hvaWNlLlxuICovXG5leHBvcnQgY29uc3QgbmVlZHNWYXJpYW50U2VsZWN0aW9uID0gKFxuICBkZXRhaWxzOiBQcm9kdWN0RGV0YWlscyB8IHVuZGVmaW5lZCxcbik6IGRldGFpbHMgaXMgUHJvZHVjdERldGFpbHMgPT5cbiAgISFkZXRhaWxzICYmIGRldGFpbHMudmFyaWFudHMubGVuZ3RoID4gMSAmJiBkZXRhaWxzLm9wdGlvbnMuc29tZShvID0+IG8udmFsdWVzLmxlbmd0aCA+IDEpO1xuXG4vKiogVGhlIHZhcmlhbnRJZCB0byBhZGQgZGlyZWN0bHkgd2hlbiB0aGUgcHJvZHVjdCBoYXMgZXhhY3RseSBvbmUgdmFyaWFudC4gKi9cbmV4cG9ydCBjb25zdCBnZXRTaW5nbGVWYXJpYW50SWQgPSAoZGV0YWlsczogUHJvZHVjdERldGFpbHMgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cbiAgZGV0YWlscyAmJiBkZXRhaWxzLnZhcmlhbnRzLmxlbmd0aCA9PT0gMSA/IGRldGFpbHMudmFyaWFudHNbMF0udmFyaWFudElkIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEluaXRpYWwgZHJvcGRvd24gc3RhdGU6IHRoZSBvcHRpb25zIG9mIHRoZSBmaXJzdCBhdmFpbGFibGUgdmFyaWFudCwgZmFsbGluZ1xuICogYmFjayB0byB0aGUgZmlyc3QgdmFyaWFudCwgZmFsbGluZyBiYWNrIHRvIHRoZSBmaXJzdCB2YWx1ZSBvZiBlYWNoIG9wdGlvbiDigJRcbiAqIHNvIHRoZSBzZWxlY3RvciBvcGVucyBpbiBhbiBhZGRhYmxlIHN0YXRlIHdoZW5ldmVyIHBvc3NpYmxlLlxuICovXG5leHBvcnQgY29uc3QgZ2V0RGVmYXVsdFZhcmlhbnRTZWxlY3Rpb24gPSAoZGV0YWlsczogUHJvZHVjdERldGFpbHMpOiBWYXJpYW50U2VsZWN0aW9uID0+IHtcbiAgY29uc3QgZGVmYXVsdFZhcmlhbnQgPSBkZXRhaWxzLnZhcmlhbnRzLmZpbmQodiA9PiB2LmF2YWlsYWJsZSkgPz8gZGV0YWlscy52YXJpYW50c1swXTtcbiAgaWYgKGRlZmF1bHRWYXJpYW50KSB7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhkZWZhdWx0VmFyaWFudC5vcHRpb25zLm1hcCgoeyBuYW1lLCB2YWx1ZSB9KSA9PiBbbmFtZSwgdmFsdWVdKSk7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBkZXRhaWxzLm9wdGlvbnMuZmlsdGVyKG8gPT4gby52YWx1ZXMubGVuZ3RoID4gMCkubWFwKG8gPT4gW28ubmFtZSwgby52YWx1ZXNbMF1dKSxcbiAgKTtcbn07XG5cbi8qKlxuICogVGhlIHZhcmlhbnQgd2hvc2Ugb3B0aW9ucyBleGFjdGx5IG1hdGNoIHRoZSBzZWxlY3Rpb24gKGV2ZXJ5IG9wdGlvbiBuYW1lIGluXG4gKiB0aGUgdmFyaWFudCBhZ3JlZXMgd2l0aCB0aGUgc2VsZWN0ZWQgdmFsdWUsIGFuZCBjb3VudHMgbWF0Y2gpLCBvciB1bmRlZmluZWRcbiAqIHdoZW4gdGhlIGNvbWJpbmF0aW9uIGRvZXMgbm90IGV4aXN0LlxuICovXG5leHBvcnQgY29uc3QgZmluZFZhcmlhbnRGb3JTZWxlY3Rpb24gPSAoXG4gIGRldGFpbHM6IFByb2R1Y3REZXRhaWxzLFxuICBzZWxlY3Rpb246IFZhcmlhbnRTZWxlY3Rpb24sXG4pOiBQcm9kdWN0VmFyaWFudCB8IHVuZGVmaW5lZCA9PlxuICBkZXRhaWxzLnZhcmlhbnRzLmZpbmQoXG4gICAgdmFyaWFudCA9PlxuICAgICAgdmFyaWFudC5vcHRpb25zLmxlbmd0aCA9PT0gT2JqZWN0LmtleXMoc2VsZWN0aW9uKS5sZW5ndGggJiZcbiAgICAgIHZhcmlhbnQub3B0aW9ucy5ldmVyeSgoeyBuYW1lLCB2YWx1ZSB9KSA9PiBzZWxlY3Rpb25bbmFtZV0gPT09IHZhbHVlKSxcbiAgKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQWdCQSxNQUFhLHVCQUF1QixjQUNsQ0EseUNBQWtCLHVCQUF1QixVQUFVOzs7OztBQU1yRCxNQUFhLHlCQUNYLFlBRUEsQ0FBQyxDQUFDLFdBQVcsUUFBUSxTQUFTLFNBQVMsS0FBSyxRQUFRLFFBQVEsTUFBSyxNQUFLLEVBQUUsT0FBTyxTQUFTLEVBQUU7O0FBRzVGLE1BQWEsc0JBQXNCLFlBQ2pDLFdBQVcsUUFBUSxTQUFTLFdBQVcsSUFBSSxRQUFRLFNBQVMsR0FBRyxZQUFZOzs7Ozs7QUFPN0UsTUFBYSw4QkFBOEIsWUFBOEM7Q0FDdkYsTUFBTSxpQkFBaUIsUUFBUSxTQUFTLE1BQUssTUFBSyxFQUFFLFVBQVUsSUFBSSxRQUFRLFNBQVM7QUFDbkYsS0FBSSxlQUNGLFFBQU8sT0FBTyxZQUFZLGVBQWUsUUFBUSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUMsTUFBTSxNQUFNLENBQUMsQ0FBQztBQUUzRixRQUFPLE9BQU8sWUFDWixRQUFRLFFBQVEsUUFBTyxNQUFLLEVBQUUsT0FBTyxTQUFTLEVBQUUsQ0FBQyxLQUFJLE1BQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUNqRjs7Ozs7OztBQVFILE1BQWEsMkJBQ1gsU0FDQSxjQUVBLFFBQVEsU0FBUyxNQUNmLFlBQ0UsUUFBUSxRQUFRLFdBQVcsT0FBTyxLQUFLLFVBQVUsQ0FBQyxVQUNsRCxRQUFRLFFBQVEsT0FBTyxFQUFFLE1BQU0sWUFBWSxVQUFVLFVBQVUsTUFBTSxDQUN4RSJ9
@@ -0,0 +1,35 @@
1
+ import { ProductDetails, ProductVariant } from "../../application/models/graphql/queries/getProductOptionsQuery.cjs";
2
+
3
+ //#region src/hooks/ProductDetails/variantSelection.d.ts
4
+ /** A dropdown selection state: option name → chosen value. */
5
+ type VariantSelection = Record<string, string>;
6
+ /**
7
+ * Imperative variant-details fetch for click-driven flows (the mount-driven
8
+ * useProductDetails hook is a poor fit when the fetch should ride a button's
9
+ * pending state). Resolves undefined when the product has no options data.
10
+ *
11
+ * @throws on network/HTTP failure or GraphQL errors
12
+ */
13
+ declare const fetchProductDetails: (productId: string) => Promise<ProductDetails | undefined>;
14
+ /**
15
+ * A product needs the variant selector when there is more than one variant to
16
+ * choose between and at least one option actually offers a choice.
17
+ */
18
+ declare const needsVariantSelection: (details: ProductDetails | undefined) => details is ProductDetails;
19
+ /** The variantId to add directly when the product has exactly one variant. */
20
+ declare const getSingleVariantId: (details: ProductDetails | undefined) => string | undefined;
21
+ /**
22
+ * Initial dropdown state: the options of the first available variant, falling
23
+ * back to the first variant, falling back to the first value of each option —
24
+ * so the selector opens in an addable state whenever possible.
25
+ */
26
+ declare const getDefaultVariantSelection: (details: ProductDetails) => VariantSelection;
27
+ /**
28
+ * The variant whose options exactly match the selection (every option name in
29
+ * the variant agrees with the selected value, and counts match), or undefined
30
+ * when the combination does not exist.
31
+ */
32
+ declare const findVariantForSelection: (details: ProductDetails, selection: VariantSelection) => ProductVariant | undefined;
33
+ //#endregion
34
+ export { VariantSelection, fetchProductDetails, findVariantForSelection, getDefaultVariantSelection, getSingleVariantId, needsVariantSelection };
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudFNlbGVjdGlvbi5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvUHJvZHVjdERldGFpbHMvdmFyaWFudFNlbGVjdGlvbi5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2R1Y3REZXRhaWxzLCBQcm9kdWN0VmFyaWFudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldFByb2R1Y3RPcHRpb25zUXVlcnknO1xuLyoqIEEgZHJvcGRvd24gc2VsZWN0aW9uIHN0YXRlOiBvcHRpb24gbmFtZSDihpIgY2hvc2VuIHZhbHVlLiAqL1xuZXhwb3J0IHR5cGUgVmFyaWFudFNlbGVjdGlvbiA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4vKipcbiAqIEltcGVyYXRpdmUgdmFyaWFudC1kZXRhaWxzIGZldGNoIGZvciBjbGljay1kcml2ZW4gZmxvd3MgKHRoZSBtb3VudC1kcml2ZW5cbiAqIHVzZVByb2R1Y3REZXRhaWxzIGhvb2sgaXMgYSBwb29yIGZpdCB3aGVuIHRoZSBmZXRjaCBzaG91bGQgcmlkZSBhIGJ1dHRvbidzXG4gKiBwZW5kaW5nIHN0YXRlKS4gUmVzb2x2ZXMgdW5kZWZpbmVkIHdoZW4gdGhlIHByb2R1Y3QgaGFzIG5vIG9wdGlvbnMgZGF0YS5cbiAqXG4gKiBAdGhyb3dzIG9uIG5ldHdvcmsvSFRUUCBmYWlsdXJlIG9yIEdyYXBoUUwgZXJyb3JzXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGZldGNoUHJvZHVjdERldGFpbHM6IChwcm9kdWN0SWQ6IHN0cmluZykgPT4gUHJvbWlzZTxQcm9kdWN0RGV0YWlscyB8IHVuZGVmaW5lZD47XG4vKipcbiAqIEEgcHJvZHVjdCBuZWVkcyB0aGUgdmFyaWFudCBzZWxlY3RvciB3aGVuIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgdmFyaWFudCB0b1xuICogY2hvb3NlIGJldHdlZW4gYW5kIGF0IGxlYXN0IG9uZSBvcHRpb24gYWN0dWFsbHkgb2ZmZXJzIGEgY2hvaWNlLlxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBuZWVkc1ZhcmlhbnRTZWxlY3Rpb246IChkZXRhaWxzOiBQcm9kdWN0RGV0YWlscyB8IHVuZGVmaW5lZCkgPT4gZGV0YWlscyBpcyBQcm9kdWN0RGV0YWlscztcbi8qKiBUaGUgdmFyaWFudElkIHRvIGFkZCBkaXJlY3RseSB3aGVuIHRoZSBwcm9kdWN0IGhhcyBleGFjdGx5IG9uZSB2YXJpYW50LiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgZ2V0U2luZ2xlVmFyaWFudElkOiAoZGV0YWlsczogUHJvZHVjdERldGFpbHMgfCB1bmRlZmluZWQpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbi8qKlxuICogSW5pdGlhbCBkcm9wZG93biBzdGF0ZTogdGhlIG9wdGlvbnMgb2YgdGhlIGZpcnN0IGF2YWlsYWJsZSB2YXJpYW50LCBmYWxsaW5nXG4gKiBiYWNrIHRvIHRoZSBmaXJzdCB2YXJpYW50LCBmYWxsaW5nIGJhY2sgdG8gdGhlIGZpcnN0IHZhbHVlIG9mIGVhY2ggb3B0aW9uIOKAlFxuICogc28gdGhlIHNlbGVjdG9yIG9wZW5zIGluIGFuIGFkZGFibGUgc3RhdGUgd2hlbmV2ZXIgcG9zc2libGUuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGdldERlZmF1bHRWYXJpYW50U2VsZWN0aW9uOiAoZGV0YWlsczogUHJvZHVjdERldGFpbHMpID0+IFZhcmlhbnRTZWxlY3Rpb247XG4vKipcbiAqIFRoZSB2YXJpYW50IHdob3NlIG9wdGlvbnMgZXhhY3RseSBtYXRjaCB0aGUgc2VsZWN0aW9uIChldmVyeSBvcHRpb24gbmFtZSBpblxuICogdGhlIHZhcmlhbnQgYWdyZWVzIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlLCBhbmQgY291bnRzIG1hdGNoKSwgb3IgdW5kZWZpbmVkXG4gKiB3aGVuIHRoZSBjb21iaW5hdGlvbiBkb2VzIG5vdCBleGlzdC5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgZmluZFZhcmlhbnRGb3JTZWxlY3Rpb246IChkZXRhaWxzOiBQcm9kdWN0RGV0YWlscywgc2VsZWN0aW9uOiBWYXJpYW50U2VsZWN0aW9uKSA9PiBQcm9kdWN0VmFyaWFudCB8IHVuZGVmaW5lZDtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBVyxtQkFBbUIsQ0FBQyxXQUFXLE9BQU87QUFDakQsSUFBVyxzQkFBc0I7Q0FBQztPQUFXO09BQVE7Q0FBQTtBQUNyRCxJQUFFLHdCQUFBO0NBQUE7T0FBQTtPQUFBO0NBQUE7QUFDRixJQUFXLHFCQUFxQixDQUFDLFdBQVcsZUFBZTtBQUMzRCxJQUFXLDZCQUE2QjtDQUFDO09BQVc7T0FBc0I7Q0FBRTtBQUM1RSxJQUFXLDBCQUEwQjtDQUFDO09BQVc7T0FBc0I7T0FBRztDQUFBIn0=
@@ -0,0 +1,35 @@
1
+ import { ProductDetails, ProductVariant } from "../../application/models/graphql/queries/getProductOptionsQuery.js";
2
+
3
+ //#region src/hooks/ProductDetails/variantSelection.d.ts
4
+ /** A dropdown selection state: option name → chosen value. */
5
+ type VariantSelection = Record<string, string>;
6
+ /**
7
+ * Imperative variant-details fetch for click-driven flows (the mount-driven
8
+ * useProductDetails hook is a poor fit when the fetch should ride a button's
9
+ * pending state). Resolves undefined when the product has no options data.
10
+ *
11
+ * @throws on network/HTTP failure or GraphQL errors
12
+ */
13
+ declare const fetchProductDetails: (productId: string) => Promise<ProductDetails | undefined>;
14
+ /**
15
+ * A product needs the variant selector when there is more than one variant to
16
+ * choose between and at least one option actually offers a choice.
17
+ */
18
+ declare const needsVariantSelection: (details: ProductDetails | undefined) => details is ProductDetails;
19
+ /** The variantId to add directly when the product has exactly one variant. */
20
+ declare const getSingleVariantId: (details: ProductDetails | undefined) => string | undefined;
21
+ /**
22
+ * Initial dropdown state: the options of the first available variant, falling
23
+ * back to the first variant, falling back to the first value of each option —
24
+ * so the selector opens in an addable state whenever possible.
25
+ */
26
+ declare const getDefaultVariantSelection: (details: ProductDetails) => VariantSelection;
27
+ /**
28
+ * The variant whose options exactly match the selection (every option name in
29
+ * the variant agrees with the selected value, and counts match), or undefined
30
+ * when the combination does not exist.
31
+ */
32
+ declare const findVariantForSelection: (details: ProductDetails, selection: VariantSelection) => ProductVariant | undefined;
33
+ //#endregion
34
+ export { VariantSelection, fetchProductDetails, findVariantForSelection, getDefaultVariantSelection, getSingleVariantId, needsVariantSelection };
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudFNlbGVjdGlvbi5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9Qcm9kdWN0RGV0YWlscy92YXJpYW50U2VsZWN0aW9uLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvZHVjdERldGFpbHMsIFByb2R1Y3RWYXJpYW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ncmFwaHFsL3F1ZXJpZXMvZ2V0UHJvZHVjdE9wdGlvbnNRdWVyeSc7XG4vKiogQSBkcm9wZG93biBzZWxlY3Rpb24gc3RhdGU6IG9wdGlvbiBuYW1lIOKGkiBjaG9zZW4gdmFsdWUuICovXG5leHBvcnQgdHlwZSBWYXJpYW50U2VsZWN0aW9uID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbi8qKlxuICogSW1wZXJhdGl2ZSB2YXJpYW50LWRldGFpbHMgZmV0Y2ggZm9yIGNsaWNrLWRyaXZlbiBmbG93cyAodGhlIG1vdW50LWRyaXZlblxuICogdXNlUHJvZHVjdERldGFpbHMgaG9vayBpcyBhIHBvb3IgZml0IHdoZW4gdGhlIGZldGNoIHNob3VsZCByaWRlIGEgYnV0dG9uJ3NcbiAqIHBlbmRpbmcgc3RhdGUpLiBSZXNvbHZlcyB1bmRlZmluZWQgd2hlbiB0aGUgcHJvZHVjdCBoYXMgbm8gb3B0aW9ucyBkYXRhLlxuICpcbiAqIEB0aHJvd3Mgb24gbmV0d29yay9IVFRQIGZhaWx1cmUgb3IgR3JhcGhRTCBlcnJvcnNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgZmV0Y2hQcm9kdWN0RGV0YWlsczogKHByb2R1Y3RJZDogc3RyaW5nKSA9PiBQcm9taXNlPFByb2R1Y3REZXRhaWxzIHwgdW5kZWZpbmVkPjtcbi8qKlxuICogQSBwcm9kdWN0IG5lZWRzIHRoZSB2YXJpYW50IHNlbGVjdG9yIHdoZW4gdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSB2YXJpYW50IHRvXG4gKiBjaG9vc2UgYmV0d2VlbiBhbmQgYXQgbGVhc3Qgb25lIG9wdGlvbiBhY3R1YWxseSBvZmZlcnMgYSBjaG9pY2UuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IG5lZWRzVmFyaWFudFNlbGVjdGlvbjogKGRldGFpbHM6IFByb2R1Y3REZXRhaWxzIHwgdW5kZWZpbmVkKSA9PiBkZXRhaWxzIGlzIFByb2R1Y3REZXRhaWxzO1xuLyoqIFRoZSB2YXJpYW50SWQgdG8gYWRkIGRpcmVjdGx5IHdoZW4gdGhlIHByb2R1Y3QgaGFzIGV4YWN0bHkgb25lIHZhcmlhbnQuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBnZXRTaW5nbGVWYXJpYW50SWQ6IChkZXRhaWxzOiBQcm9kdWN0RGV0YWlscyB8IHVuZGVmaW5lZCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuLyoqXG4gKiBJbml0aWFsIGRyb3Bkb3duIHN0YXRlOiB0aGUgb3B0aW9ucyBvZiB0aGUgZmlyc3QgYXZhaWxhYmxlIHZhcmlhbnQsIGZhbGxpbmdcbiAqIGJhY2sgdG8gdGhlIGZpcnN0IHZhcmlhbnQsIGZhbGxpbmcgYmFjayB0byB0aGUgZmlyc3QgdmFsdWUgb2YgZWFjaCBvcHRpb24g4oCUXG4gKiBzbyB0aGUgc2VsZWN0b3Igb3BlbnMgaW4gYW4gYWRkYWJsZSBzdGF0ZSB3aGVuZXZlciBwb3NzaWJsZS5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgZ2V0RGVmYXVsdFZhcmlhbnRTZWxlY3Rpb246IChkZXRhaWxzOiBQcm9kdWN0RGV0YWlscykgPT4gVmFyaWFudFNlbGVjdGlvbjtcbi8qKlxuICogVGhlIHZhcmlhbnQgd2hvc2Ugb3B0aW9ucyBleGFjdGx5IG1hdGNoIHRoZSBzZWxlY3Rpb24gKGV2ZXJ5IG9wdGlvbiBuYW1lIGluXG4gKiB0aGUgdmFyaWFudCBhZ3JlZXMgd2l0aCB0aGUgc2VsZWN0ZWQgdmFsdWUsIGFuZCBjb3VudHMgbWF0Y2gpLCBvciB1bmRlZmluZWRcbiAqIHdoZW4gdGhlIGNvbWJpbmF0aW9uIGRvZXMgbm90IGV4aXN0LlxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBmaW5kVmFyaWFudEZvclNlbGVjdGlvbjogKGRldGFpbHM6IFByb2R1Y3REZXRhaWxzLCBzZWxlY3Rpb246IFZhcmlhbnRTZWxlY3Rpb24pID0+IFByb2R1Y3RWYXJpYW50IHwgdW5kZWZpbmVkO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFXLG1CQUFtQixDQUFDLFdBQVcsT0FBTztBQUNqRCxJQUFXLHNCQUFzQjtDQUFDO09BQVc7T0FBUTtDQUFBO0FBQ3JELElBQUUsd0JBQUE7Q0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNGLElBQVcscUJBQXFCLENBQUMsV0FBVyxlQUFlO0FBQzNELElBQVcsNkJBQTZCO0NBQUM7T0FBVztPQUFzQjtDQUFFO0FBQzVFLElBQVcsMEJBQTBCO0NBQUM7T0FBVztPQUFzQjtPQUFHO0NBQUEifQ==
@@ -0,0 +1,38 @@
1
+ import commerce_api_default from "../../application/commerce-api.js";
2
+
3
+ //#region src/hooks/ProductDetails/variantSelection.ts
4
+ /**
5
+ * Imperative variant-details fetch for click-driven flows (the mount-driven
6
+ * useProductDetails hook is a poor fit when the fetch should ride a button's
7
+ * pending state). Resolves undefined when the product has no options data.
8
+ *
9
+ * @throws on network/HTTP failure or GraphQL errors
10
+ */
11
+ const fetchProductDetails = (productId) => commerce_api_default.retrieveProductDetails(productId);
12
+ /**
13
+ * A product needs the variant selector when there is more than one variant to
14
+ * choose between and at least one option actually offers a choice.
15
+ */
16
+ const needsVariantSelection = (details) => !!details && details.variants.length > 1 && details.options.some((o) => o.values.length > 1);
17
+ /** The variantId to add directly when the product has exactly one variant. */
18
+ const getSingleVariantId = (details) => details && details.variants.length === 1 ? details.variants[0].variantId : void 0;
19
+ /**
20
+ * Initial dropdown state: the options of the first available variant, falling
21
+ * back to the first variant, falling back to the first value of each option —
22
+ * so the selector opens in an addable state whenever possible.
23
+ */
24
+ const getDefaultVariantSelection = (details) => {
25
+ const defaultVariant = details.variants.find((v) => v.available) ?? details.variants[0];
26
+ if (defaultVariant) return Object.fromEntries(defaultVariant.options.map(({ name, value }) => [name, value]));
27
+ return Object.fromEntries(details.options.filter((o) => o.values.length > 0).map((o) => [o.name, o.values[0]]));
28
+ };
29
+ /**
30
+ * The variant whose options exactly match the selection (every option name in
31
+ * the variant agrees with the selected value, and counts match), or undefined
32
+ * when the combination does not exist.
33
+ */
34
+ const findVariantForSelection = (details, selection) => details.variants.find((variant) => variant.options.length === Object.keys(selection).length && variant.options.every(({ name, value }) => selection[name] === value));
35
+
36
+ //#endregion
37
+ export { fetchProductDetails, findVariantForSelection, getDefaultVariantSelection, getSingleVariantId, needsVariantSelection };
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudFNlbGVjdGlvbi5qcyIsIm5hbWVzIjpbIkNvbW1lcmNlQXBpQ2xpZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1Byb2R1Y3REZXRhaWxzL3ZhcmlhbnRTZWxlY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbW1lcmNlQXBpQ2xpZW50IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9jb21tZXJjZS1hcGknO1xuaW1wb3J0IHtcbiAgUHJvZHVjdERldGFpbHMsXG4gIFByb2R1Y3RWYXJpYW50LFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRQcm9kdWN0T3B0aW9uc1F1ZXJ5JztcblxuLyoqIEEgZHJvcGRvd24gc2VsZWN0aW9uIHN0YXRlOiBvcHRpb24gbmFtZSDihpIgY2hvc2VuIHZhbHVlLiAqL1xuZXhwb3J0IHR5cGUgVmFyaWFudFNlbGVjdGlvbiA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbi8qKlxuICogSW1wZXJhdGl2ZSB2YXJpYW50LWRldGFpbHMgZmV0Y2ggZm9yIGNsaWNrLWRyaXZlbiBmbG93cyAodGhlIG1vdW50LWRyaXZlblxuICogdXNlUHJvZHVjdERldGFpbHMgaG9vayBpcyBhIHBvb3IgZml0IHdoZW4gdGhlIGZldGNoIHNob3VsZCByaWRlIGEgYnV0dG9uJ3NcbiAqIHBlbmRpbmcgc3RhdGUpLiBSZXNvbHZlcyB1bmRlZmluZWQgd2hlbiB0aGUgcHJvZHVjdCBoYXMgbm8gb3B0aW9ucyBkYXRhLlxuICpcbiAqIEB0aHJvd3Mgb24gbmV0d29yay9IVFRQIGZhaWx1cmUgb3IgR3JhcGhRTCBlcnJvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGZldGNoUHJvZHVjdERldGFpbHMgPSAocHJvZHVjdElkOiBzdHJpbmcpOiBQcm9taXNlPFByb2R1Y3REZXRhaWxzIHwgdW5kZWZpbmVkPiA9PlxuICBDb21tZXJjZUFwaUNsaWVudC5yZXRyaWV2ZVByb2R1Y3REZXRhaWxzKHByb2R1Y3RJZCk7XG5cbi8qKlxuICogQSBwcm9kdWN0IG5lZWRzIHRoZSB2YXJpYW50IHNlbGVjdG9yIHdoZW4gdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSB2YXJpYW50IHRvXG4gKiBjaG9vc2UgYmV0d2VlbiBhbmQgYXQgbGVhc3Qgb25lIG9wdGlvbiBhY3R1YWxseSBvZmZlcnMgYSBjaG9pY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBuZWVkc1ZhcmlhbnRTZWxlY3Rpb24gPSAoXG4gIGRldGFpbHM6IFByb2R1Y3REZXRhaWxzIHwgdW5kZWZpbmVkLFxuKTogZGV0YWlscyBpcyBQcm9kdWN0RGV0YWlscyA9PlxuICAhIWRldGFpbHMgJiYgZGV0YWlscy52YXJpYW50cy5sZW5ndGggPiAxICYmIGRldGFpbHMub3B0aW9ucy5zb21lKG8gPT4gby52YWx1ZXMubGVuZ3RoID4gMSk7XG5cbi8qKiBUaGUgdmFyaWFudElkIHRvIGFkZCBkaXJlY3RseSB3aGVuIHRoZSBwcm9kdWN0IGhhcyBleGFjdGx5IG9uZSB2YXJpYW50LiAqL1xuZXhwb3J0IGNvbnN0IGdldFNpbmdsZVZhcmlhbnRJZCA9IChkZXRhaWxzOiBQcm9kdWN0RGV0YWlscyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxuICBkZXRhaWxzICYmIGRldGFpbHMudmFyaWFudHMubGVuZ3RoID09PSAxID8gZGV0YWlscy52YXJpYW50c1swXS52YXJpYW50SWQgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogSW5pdGlhbCBkcm9wZG93biBzdGF0ZTogdGhlIG9wdGlvbnMgb2YgdGhlIGZpcnN0IGF2YWlsYWJsZSB2YXJpYW50LCBmYWxsaW5nXG4gKiBiYWNrIHRvIHRoZSBmaXJzdCB2YXJpYW50LCBmYWxsaW5nIGJhY2sgdG8gdGhlIGZpcnN0IHZhbHVlIG9mIGVhY2ggb3B0aW9uIOKAlFxuICogc28gdGhlIHNlbGVjdG9yIG9wZW5zIGluIGFuIGFkZGFibGUgc3RhdGUgd2hlbmV2ZXIgcG9zc2libGUuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VmFyaWFudFNlbGVjdGlvbiA9IChkZXRhaWxzOiBQcm9kdWN0RGV0YWlscyk6IFZhcmlhbnRTZWxlY3Rpb24gPT4ge1xuICBjb25zdCBkZWZhdWx0VmFyaWFudCA9IGRldGFpbHMudmFyaWFudHMuZmluZCh2ID0+IHYuYXZhaWxhYmxlKSA/PyBkZXRhaWxzLnZhcmlhbnRzWzBdO1xuICBpZiAoZGVmYXVsdFZhcmlhbnQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGRlZmF1bHRWYXJpYW50Lm9wdGlvbnMubWFwKCh7IG5hbWUsIHZhbHVlIH0pID0+IFtuYW1lLCB2YWx1ZV0pKTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIGRldGFpbHMub3B0aW9ucy5maWx0ZXIobyA9PiBvLnZhbHVlcy5sZW5ndGggPiAwKS5tYXAobyA9PiBbby5uYW1lLCBvLnZhbHVlc1swXV0pLFxuICApO1xufTtcblxuLyoqXG4gKiBUaGUgdmFyaWFudCB3aG9zZSBvcHRpb25zIGV4YWN0bHkgbWF0Y2ggdGhlIHNlbGVjdGlvbiAoZXZlcnkgb3B0aW9uIG5hbWUgaW5cbiAqIHRoZSB2YXJpYW50IGFncmVlcyB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZSwgYW5kIGNvdW50cyBtYXRjaCksIG9yIHVuZGVmaW5lZFxuICogd2hlbiB0aGUgY29tYmluYXRpb24gZG9lcyBub3QgZXhpc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBmaW5kVmFyaWFudEZvclNlbGVjdGlvbiA9IChcbiAgZGV0YWlsczogUHJvZHVjdERldGFpbHMsXG4gIHNlbGVjdGlvbjogVmFyaWFudFNlbGVjdGlvbixcbik6IFByb2R1Y3RWYXJpYW50IHwgdW5kZWZpbmVkID0+XG4gIGRldGFpbHMudmFyaWFudHMuZmluZChcbiAgICB2YXJpYW50ID0+XG4gICAgICB2YXJpYW50Lm9wdGlvbnMubGVuZ3RoID09PSBPYmplY3Qua2V5cyhzZWxlY3Rpb24pLmxlbmd0aCAmJlxuICAgICAgdmFyaWFudC5vcHRpb25zLmV2ZXJ5KCh7IG5hbWUsIHZhbHVlIH0pID0+IHNlbGVjdGlvbltuYW1lXSA9PT0gdmFsdWUpLFxuICApO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBZ0JBLE1BQWEsdUJBQXVCLGNBQ2xDQSxxQkFBa0IsdUJBQXVCLFVBQVU7Ozs7O0FBTXJELE1BQWEseUJBQ1gsWUFFQSxDQUFDLENBQUMsV0FBVyxRQUFRLFNBQVMsU0FBUyxLQUFLLFFBQVEsUUFBUSxNQUFLLE1BQUssRUFBRSxPQUFPLFNBQVMsRUFBRTs7QUFHNUYsTUFBYSxzQkFBc0IsWUFDakMsV0FBVyxRQUFRLFNBQVMsV0FBVyxJQUFJLFFBQVEsU0FBUyxHQUFHLFlBQVk7Ozs7OztBQU83RSxNQUFhLDhCQUE4QixZQUE4QztDQUN2RixNQUFNLGlCQUFpQixRQUFRLFNBQVMsTUFBSyxNQUFLLEVBQUUsVUFBVSxJQUFJLFFBQVEsU0FBUztBQUNuRixLQUFJLGVBQ0YsUUFBTyxPQUFPLFlBQVksZUFBZSxRQUFRLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQyxNQUFNLE1BQU0sQ0FBQyxDQUFDO0FBRTNGLFFBQU8sT0FBTyxZQUNaLFFBQVEsUUFBUSxRQUFPLE1BQUssRUFBRSxPQUFPLFNBQVMsRUFBRSxDQUFDLEtBQUksTUFBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQ2pGOzs7Ozs7O0FBUUgsTUFBYSwyQkFDWCxTQUNBLGNBRUEsUUFBUSxTQUFTLE1BQ2YsWUFDRSxRQUFRLFFBQVEsV0FBVyxPQUFPLEtBQUssVUFBVSxDQUFDLFVBQ2xELFFBQVEsUUFBUSxPQUFPLEVBQUUsTUFBTSxZQUFZLFVBQVUsVUFBVSxNQUFNLENBQ3hFIn0=
@@ -1,8 +1,8 @@
1
1
  import { SearchResponseProductAttributes } from "../../application/models/api/response.cjs";
2
2
  import { ProductCardConfig } from "../../contexts/types.cjs";
3
3
  import { SearchResult } from "../../application/models/api/search.cjs";
4
- import { SelectedFilterOption } from "../../atoms/search/searchAPI.cjs";
5
4
  import { SearchFilterDatum, SelectFilterItem } from "../../types/search-filter-types.cjs";
5
+ import { SelectedFilterOption } from "../../atoms/search/searchAPI.cjs";
6
6
  import { SearchResultsState } from "../utils.cjs";
7
7
  import { SearchResponseProduct } from "@spiffy-ai/commerce-api-client";
8
8
 
@@ -1,8 +1,8 @@
1
1
  import { SearchResponseProductAttributes } from "../../application/models/api/response.js";
2
2
  import { ProductCardConfig } from "../../contexts/types.js";
3
3
  import { SearchResult } from "../../application/models/api/search.js";
4
- import { SelectedFilterOption } from "../../atoms/search/searchAPI.js";
5
4
  import { SearchFilterDatum, SelectFilterItem } from "../../types/search-filter-types.js";
5
+ import { SelectedFilterOption } from "../../atoms/search/searchAPI.js";
6
6
  import { SearchResultsState } from "../utils.js";
7
7
  import { SearchResponseProduct } from "@spiffy-ai/commerce-api-client";
8
8
 
@@ -18,11 +18,19 @@ let jotai = require("jotai");
18
18
  * @param rootMargin - Root margin for the intersection observer (defaults to 0px).
19
19
  * @param enabled - Whether tracking is enabled (defaults to true).
20
20
  */
21
+ const safeNow = () => {
22
+ try {
23
+ return typeof window !== "undefined" ? window.performance?.now?.() : void 0;
24
+ } catch {
25
+ return;
26
+ }
27
+ };
21
28
  const useTrackComponentVisibleEvent = (element, eventProps, rootMargin = "0px", enabled = true) => {
22
29
  const isVisible = require_useIntersection.useIntersection(element, rootMargin);
23
30
  const hasTrackedEvent = (0, react.useRef)(false);
24
31
  const { trackEvent } = require_amplitudeContext.useAmplitude();
25
32
  const variantInfo = (0, jotai.useAtomValue)(require_variant.pageVariantInfoAtom);
33
+ const renderOffsetMs = (0, react.useRef)(safeNow()).current;
26
34
  (0, react.useEffect)(() => {
27
35
  console.debug("[useTrackComponentVisibleEvent] effect ran", {
28
36
  enabled,
@@ -52,7 +60,8 @@ const useTrackComponentVisibleEvent = (element, eventProps, rootMargin = "0px",
52
60
  eventProps: {
53
61
  ...eventProps,
54
62
  trigger: { widget: eventProps?.widget_type },
55
- context: variantInfo ? require_hooks_WidgetInteraction_utils.extractPageContext(variantInfo) : null
63
+ context: variantInfo ? require_hooks_WidgetInteraction_utils.extractPageContext(variantInfo) : null,
64
+ "performance.render_offset_ms": renderOffsetMs
56
65
  }
57
66
  });
58
67
  hasTrackedEvent.current = true;
@@ -67,4 +76,4 @@ const useTrackComponentVisibleEvent = (element, eventProps, rootMargin = "0px",
67
76
 
68
77
  //#endregion
69
78
  exports.useTrackComponentVisibleEvent = useTrackComponentVisibleEvent;
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuY2pzIiwibmFtZXMiOlsidXNlSW50ZXJzZWN0aW9uIiwidXNlQW1wbGl0dWRlIiwicGFnZVZhcmlhbnRJbmZvQXRvbSIsIlNwaWZmeU1ldHJpY3NFdmVudE5hbWUiLCJFbnZpdmVNZXRyaWNzRXZlbnROYW1lIiwiZXh0cmFjdFBhZ2VDb250ZXh0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50L3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IFJlZk9iamVjdCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBwYWdlVmFyaWFudEluZm9BdG9tIH0gZnJvbSAnc3JjL2F0b21zL2FwcCc7XG5pbXBvcnQgeyB1c2VBbXBsaXR1ZGUgfSBmcm9tICdzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0JztcbmltcG9ydCB7IFBhZ2VWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9jb250ZXh0cy9wYWdlQ29udGV4dC90eXBlcyc7XG5pbXBvcnQgeyB1c2VJbnRlcnNlY3Rpb24gfSBmcm9tICdzcmMvaG9va3MvSW50ZXJzZWN0aW9uL3VzZUludGVyc2VjdGlvbic7XG5pbXBvcnQgeyBleHRyYWN0UGFnZUNvbnRleHQgfSBmcm9tICdzcmMvaG9va3MvV2lkZ2V0SW50ZXJhY3Rpb24vdXRpbHMnO1xuaW1wb3J0IHtcbiAgRW52aXZlTWV0cmljc0V2ZW50TmFtZSxcbiAgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSxcbn0gZnJvbSAnc3JjL3NlcnZpY2VzL2FtcGxpdHVkZVNlcnZpY2UvYW1wbGl0dWRlU2VydmljZSc7XG5cbi8qKlxuICogVHJhY2tzIGEgY29tcG9uZW50IGFuZCBsb2dzIGBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRDb21wb25lbnRWaXNpYmxlYCB3aGVuIHZpc2libGUuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byB0cmFjayB2aXNpYmlsaXR5IG9mLlxuICogQHBhcmFtIGV2ZW50UHJvcHMgLSBQcm9wZXJ0aWVzIHRvIGluY2x1ZGUgd2l0aCB0aGUgZXZlbnQuXG4gKiBAcGFyYW0gcm9vdE1hcmdpbiAtIFJvb3QgbWFyZ2luIGZvciB0aGUgaW50ZXJzZWN0aW9uIG9ic2VydmVyIChkZWZhdWx0cyB0byAwcHgpLlxuICogQHBhcmFtIGVuYWJsZWQgLSBXaGV0aGVyIHRyYWNraW5nIGlzIGVuYWJsZWQgKGRlZmF1bHRzIHRvIHRydWUpLlxuICovXG5leHBvcnQgY29uc3QgdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQgPSAoXG4gIGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgcm9vdE1hcmdpbjogc3RyaW5nID0gJzBweCcsXG4gIGVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlLFxuKTogeyBpc1Zpc2libGU6IGJvb2xlYW4gfSA9PiB7XG4gIGNvbnN0IGlzVmlzaWJsZSA9IHVzZUludGVyc2VjdGlvbihlbGVtZW50LCByb290TWFyZ2luKTtcbiAgY29uc3QgaGFzVHJhY2tlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgeyB0cmFja0V2ZW50IH0gPSB1c2VBbXBsaXR1ZGUoKTtcbiAgY29uc3QgdmFyaWFudEluZm8gPSB1c2VBdG9tVmFsdWUocGFnZVZhcmlhbnRJbmZvQXRvbSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnRdIGVmZmVjdCByYW4nLCB7XG4gICAgICBlbmFibGVkLFxuICAgICAgaXNWaXNpYmxlLFxuICAgICAgaGFzVHJhY2tlZEV2ZW50OiBoYXNUcmFja2VkRXZlbnQuY3VycmVudCxcbiAgICAgIGV2ZW50UHJvcHMsXG4gICAgfSk7XG5cbiAgICBpZiAoIWVuYWJsZWQpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1t1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudF0gc2tpcHBlZCDigJQgZW5hYmxlZCBpcyBmYWxzZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaGFzVHJhY2tlZEV2ZW50LmN1cnJlbnQpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1t1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudF0gc2tpcHBlZCDigJQgZXZlbnQgYWxyZWFkeSB0cmFja2VkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNWaXNpYmxlKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnRdIHNraXBwZWQg4oCUIGVsZW1lbnQgbm90IHZpc2libGUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmRlYnVnKCdbdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnRdIGZpcmluZyB0cmFja2luZyBldmVudHMnLCBldmVudFByb3BzKTtcbiAgICB0cmFja0V2ZW50KHtcbiAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZSxcbiAgICAgIGV2ZW50UHJvcHMsXG4gICAgfSk7XG4gICAgdHJhY2tFdmVudCh7XG4gICAgICBldmVudE5hbWU6IEVudml2ZU1ldHJpY3NFdmVudE5hbWUuV2lkZ2V0UmVuZGVyZWQsXG4gICAgICBldmVudFByb3BzOiB7XG4gICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICAgIHRyaWdnZXI6IHtcbiAgICAgICAgICB3aWRnZXQ6IGV2ZW50UHJvcHM/LndpZGdldF90eXBlLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZXh0OiB2YXJpYW50SW5mbyA/IGV4dHJhY3RQYWdlQ29udGV4dCh2YXJpYW50SW5mbyBhcyBQYWdlVmFyaWFudEluZm8pIDogbnVsbCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgaGFzVHJhY2tlZEV2ZW50LmN1cnJlbnQgPSB0cnVlO1xuICB9LCBbZW5hYmxlZCwgaXNWaXNpYmxlLCBldmVudFByb3BzLCB0cmFja0V2ZW50XSk7XG4gIHJldHVybiB7IGlzVmlzaWJsZSB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkEsTUFBYSxpQ0FDWCxTQUNBLFlBQ0EsYUFBcUIsT0FDckIsVUFBbUIsU0FDUTtDQUMzQixNQUFNLFlBQVlBLHdDQUFnQixTQUFTLFdBQVc7Q0FDdEQsTUFBTSxvQ0FBeUIsTUFBTTtDQUNyQyxNQUFNLEVBQUUsZUFBZUMsdUNBQWM7Q0FDckMsTUFBTSxzQ0FBMkJDLG9DQUFvQjtBQUVyRCw0QkFBZ0I7QUFDZCxVQUFRLE1BQU0sOENBQThDO0dBQzFEO0dBQ0E7R0FDQSxpQkFBaUIsZ0JBQWdCO0dBQ2pDO0dBQ0QsQ0FBQztBQUVGLE1BQUksQ0FBQyxTQUFTO0FBQ1osV0FBUSxNQUFNLDZEQUE2RDtBQUMzRTs7QUFFRixNQUFJLGdCQUFnQixTQUFTO0FBQzNCLFdBQVEsTUFBTSxrRUFBa0U7QUFDaEY7O0FBRUYsTUFBSSxDQUFDLFdBQVc7QUFDZCxXQUFRLE1BQU0sZ0VBQWdFO0FBQzlFOztBQUdGLFVBQVEsTUFBTSwwREFBMEQsV0FBVztBQUNuRixhQUFXO0dBQ1QsV0FBV0MsMENBQXVCO0dBQ2xDO0dBQ0QsQ0FBQztBQUNGLGFBQVc7R0FDVCxXQUFXQywwQ0FBdUI7R0FDbEMsWUFBWTtJQUNWLEdBQUc7SUFDSCxTQUFTLEVBQ1AsUUFBUSxZQUFZLGFBQ3JCO0lBQ0QsU0FBUyxjQUFjQyx5REFBbUIsWUFBK0IsR0FBRztJQUM3RTtHQUNGLENBQUM7QUFDRixrQkFBZ0IsVUFBVTtJQUN6QjtFQUFDO0VBQVM7RUFBVztFQUFZO0VBQVcsQ0FBQztBQUNoRCxRQUFPLEVBQUUsV0FBVyJ9
79
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuY2pzIiwibmFtZXMiOlsidXNlSW50ZXJzZWN0aW9uIiwidXNlQW1wbGl0dWRlIiwicGFnZVZhcmlhbnRJbmZvQXRvbSIsIlNwaWZmeU1ldHJpY3NFdmVudE5hbWUiLCJFbnZpdmVNZXRyaWNzRXZlbnROYW1lIiwiZXh0cmFjdFBhZ2VDb250ZXh0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50L3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IFJlZk9iamVjdCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBwYWdlVmFyaWFudEluZm9BdG9tIH0gZnJvbSAnc3JjL2F0b21zL2FwcCc7XG5pbXBvcnQgeyB1c2VBbXBsaXR1ZGUgfSBmcm9tICdzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0JztcbmltcG9ydCB7IFBhZ2VWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9jb250ZXh0cy9wYWdlQ29udGV4dC90eXBlcyc7XG5pbXBvcnQgeyB1c2VJbnRlcnNlY3Rpb24gfSBmcm9tICdzcmMvaG9va3MvSW50ZXJzZWN0aW9uL3VzZUludGVyc2VjdGlvbic7XG5pbXBvcnQgeyBleHRyYWN0UGFnZUNvbnRleHQgfSBmcm9tICdzcmMvaG9va3MvV2lkZ2V0SW50ZXJhY3Rpb24vdXRpbHMnO1xuaW1wb3J0IHtcbiAgRW52aXZlTWV0cmljc0V2ZW50TmFtZSxcbiAgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSxcbn0gZnJvbSAnc3JjL3NlcnZpY2VzL2FtcGxpdHVkZVNlcnZpY2UvYW1wbGl0dWRlU2VydmljZSc7XG5cbi8qKlxuICogVHJhY2tzIGEgY29tcG9uZW50IGFuZCBsb2dzIGBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRDb21wb25lbnRWaXNpYmxlYCB3aGVuIHZpc2libGUuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byB0cmFjayB2aXNpYmlsaXR5IG9mLlxuICogQHBhcmFtIGV2ZW50UHJvcHMgLSBQcm9wZXJ0aWVzIHRvIGluY2x1ZGUgd2l0aCB0aGUgZXZlbnQuXG4gKiBAcGFyYW0gcm9vdE1hcmdpbiAtIFJvb3QgbWFyZ2luIGZvciB0aGUgaW50ZXJzZWN0aW9uIG9ic2VydmVyIChkZWZhdWx0cyB0byAwcHgpLlxuICogQHBhcmFtIGVuYWJsZWQgLSBXaGV0aGVyIHRyYWNraW5nIGlzIGVuYWJsZWQgKGRlZmF1bHRzIHRvIHRydWUpLlxuICovXG5jb25zdCBzYWZlTm93ID0gKCk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnBlcmZvcm1hbmNlPy5ub3c/LigpIDogdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQgPSAoXG4gIGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgcm9vdE1hcmdpbjogc3RyaW5nID0gJzBweCcsXG4gIGVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlLFxuKTogeyBpc1Zpc2libGU6IGJvb2xlYW4gfSA9PiB7XG4gIGNvbnN0IGlzVmlzaWJsZSA9IHVzZUludGVyc2VjdGlvbihlbGVtZW50LCByb290TWFyZ2luKTtcbiAgY29uc3QgaGFzVHJhY2tlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgeyB0cmFja0V2ZW50IH0gPSB1c2VBbXBsaXR1ZGUoKTtcbiAgY29uc3QgdmFyaWFudEluZm8gPSB1c2VBdG9tVmFsdWUocGFnZVZhcmlhbnRJbmZvQXRvbSk7XG4gIC8vIENhcHR1cmVkIG9uIGZpcnN0IHJlbmRlciwgbm90IHdoZW4gdGhlIGV2ZW50IGZpcmVzOiBXaWRnZXQgUmVuZGVyZWQgaXNcbiAgLy8gZW1pdHRlZCBhdCB2aXNpYmlsaXR5LCB3aGljaCBmb3IgYmVsb3ctdGhlLWZvbGQgd2lkZ2V0cyBjYW4gYmUgbG9uZ1xuICAvLyBhZnRlciB0aGUgd2lkZ2V0IGFjdHVhbGx5IHJlbmRlcmVkLiBwZXJmb3JtYW5jZS5ub3coKSBpcyByZWxhdGl2ZSB0b1xuICAvLyBuYXZpZ2F0aW9uIHN0YXJ0LCBzbyB0aGlzIHJlYWRzIGFzIFwibXMgZnJvbSBpbml0aWFsIHBhZ2UgbG9hZCB0b1xuICAvLyB3aWRnZXQgcmVuZGVyXCIuXG4gIGNvbnN0IHJlbmRlck9mZnNldE1zID0gdXNlUmVmKHNhZmVOb3coKSkuY3VycmVudDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUuZGVidWcoJ1t1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudF0gZWZmZWN0IHJhbicsIHtcbiAgICAgIGVuYWJsZWQsXG4gICAgICBpc1Zpc2libGUsXG4gICAgICBoYXNUcmFja2VkRXZlbnQ6IGhhc1RyYWNrZWRFdmVudC5jdXJyZW50LFxuICAgICAgZXZlbnRQcm9wcyxcbiAgICB9KTtcblxuICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50XSBza2lwcGVkIOKAlCBlbmFibGVkIGlzIGZhbHNlJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChoYXNUcmFja2VkRXZlbnQuY3VycmVudCkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50XSBza2lwcGVkIOKAlCBldmVudCBhbHJlYWR5IHRyYWNrZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFpc1Zpc2libGUpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1t1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudF0gc2tpcHBlZCDigJQgZWxlbWVudCBub3QgdmlzaWJsZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZGVidWcoJ1t1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudF0gZmlyaW5nIHRyYWNraW5nIGV2ZW50cycsIGV2ZW50UHJvcHMpO1xuICAgIHRyYWNrRXZlbnQoe1xuICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRDb21wb25lbnRWaXNpYmxlLFxuICAgICAgZXZlbnRQcm9wcyxcbiAgICB9KTtcbiAgICB0cmFja0V2ZW50KHtcbiAgICAgIGV2ZW50TmFtZTogRW52aXZlTWV0cmljc0V2ZW50TmFtZS5XaWRnZXRSZW5kZXJlZCxcbiAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgICAgdHJpZ2dlcjoge1xuICAgICAgICAgIHdpZGdldDogZXZlbnRQcm9wcz8ud2lkZ2V0X3R5cGUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRleHQ6IHZhcmlhbnRJbmZvID8gZXh0cmFjdFBhZ2VDb250ZXh0KHZhcmlhbnRJbmZvIGFzIFBhZ2VWYXJpYW50SW5mbykgOiBudWxsLFxuICAgICAgICAncGVyZm9ybWFuY2UucmVuZGVyX29mZnNldF9tcyc6IHJlbmRlck9mZnNldE1zLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBoYXNUcmFja2VkRXZlbnQuY3VycmVudCA9IHRydWU7XG4gIH0sIFtlbmFibGVkLCBpc1Zpc2libGUsIGV2ZW50UHJvcHMsIHRyYWNrRXZlbnRdKTtcbiAgcmV0dXJuIHsgaXNWaXNpYmxlIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQSxNQUFNLGdCQUFvQztBQUN4QyxLQUFJO0FBQ0YsU0FBTyxPQUFPLFdBQVcsY0FBYyxPQUFPLGFBQWEsT0FBTyxHQUFHO1NBQy9EO0FBQ047OztBQUlKLE1BQWEsaUNBQ1gsU0FDQSxZQUNBLGFBQXFCLE9BQ3JCLFVBQW1CLFNBQ1E7Q0FDM0IsTUFBTSxZQUFZQSx3Q0FBZ0IsU0FBUyxXQUFXO0NBQ3RELE1BQU0sb0NBQXlCLE1BQU07Q0FDckMsTUFBTSxFQUFFLGVBQWVDLHVDQUFjO0NBQ3JDLE1BQU0sc0NBQTJCQyxvQ0FBb0I7Q0FNckQsTUFBTSxtQ0FBd0IsU0FBUyxDQUFDLENBQUM7QUFFekMsNEJBQWdCO0FBQ2QsVUFBUSxNQUFNLDhDQUE4QztHQUMxRDtHQUNBO0dBQ0EsaUJBQWlCLGdCQUFnQjtHQUNqQztHQUNELENBQUM7QUFFRixNQUFJLENBQUMsU0FBUztBQUNaLFdBQVEsTUFBTSw2REFBNkQ7QUFDM0U7O0FBRUYsTUFBSSxnQkFBZ0IsU0FBUztBQUMzQixXQUFRLE1BQU0sa0VBQWtFO0FBQ2hGOztBQUVGLE1BQUksQ0FBQyxXQUFXO0FBQ2QsV0FBUSxNQUFNLGdFQUFnRTtBQUM5RTs7QUFHRixVQUFRLE1BQU0sMERBQTBELFdBQVc7QUFDbkYsYUFBVztHQUNULFdBQVdDLDBDQUF1QjtHQUNsQztHQUNELENBQUM7QUFDRixhQUFXO0dBQ1QsV0FBV0MsMENBQXVCO0dBQ2xDLFlBQVk7SUFDVixHQUFHO0lBQ0gsU0FBUyxFQUNQLFFBQVEsWUFBWSxhQUNyQjtJQUNELFNBQVMsY0FBY0MseURBQW1CLFlBQStCLEdBQUc7SUFDNUUsZ0NBQWdDO0lBQ2pDO0dBQ0YsQ0FBQztBQUNGLGtCQUFnQixVQUFVO0lBQ3pCO0VBQUM7RUFBUztFQUFXO0VBQVk7RUFBVyxDQUFDO0FBQ2hELFFBQU8sRUFBRSxXQUFXIn0=
@@ -1,18 +1,9 @@
1
1
  import { RefObject } from "react";
2
2
 
3
3
  //#region src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts
4
-
5
- /**
6
- * Tracks a component and logs `SpiffyMetricsEventName.ChatComponentVisible` when visible.
7
- *
8
- * @param element - The element to track visibility of.
9
- * @param eventProps - Properties to include with the event.
10
- * @param rootMargin - Root margin for the intersection observer (defaults to 0px).
11
- * @param enabled - Whether tracking is enabled (defaults to true).
12
- */
13
4
  declare const useTrackComponentVisibleEvent: (element: RefObject<HTMLElement>, eventProps?: Record<string, unknown>, rootMargin?: string, enabled?: boolean) => {
14
5
  isVisible: boolean;
15
6
  };
16
7
  //#endregion
17
8
  export { useTrackComponentVisibleEvent };
18
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50L3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBUcmFja3MgYSBjb21wb25lbnQgYW5kIGxvZ3MgYFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGVgIHdoZW4gdmlzaWJsZS5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIHRyYWNrIHZpc2liaWxpdHkgb2YuXG4gKiBAcGFyYW0gZXZlbnRQcm9wcyAtIFByb3BlcnRpZXMgdG8gaW5jbHVkZSB3aXRoIHRoZSBldmVudC5cbiAqIEBwYXJhbSByb290TWFyZ2luIC0gUm9vdCBtYXJnaW4gZm9yIHRoZSBpbnRlcnNlY3Rpb24gb2JzZXJ2ZXIgKGRlZmF1bHRzIHRvIDBweCkuXG4gKiBAcGFyYW0gZW5hYmxlZCAtIFdoZXRoZXIgdHJhY2tpbmcgaXMgZW5hYmxlZCAoZGVmYXVsdHMgdG8gdHJ1ZSkuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50OiAoZWxlbWVudDogUmVmT2JqZWN0PEhUTUxFbGVtZW50PiwgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCByb290TWFyZ2luPzogc3RyaW5nLCBlbmFibGVkPzogYm9vbGVhbikgPT4ge1xuICAgIGlzVmlzaWJsZTogYm9vbGVhbjtcbn07XG4iXSwibWFwcGluZ3MiOiI7OztBQUNBLElBQUUsZ0NBQUE7Q0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBIn0=
9
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50L3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQ6IChlbGVtZW50OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+LCBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJvb3RNYXJnaW4/OiBzdHJpbmcsIGVuYWJsZWQ/OiBib29sZWFuKSA9PiB7XG4gICAgaXNWaXNpYmxlOiBib29sZWFuO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBVyxnQ0FBZ0M7Q0FBQztPQUFXO09BQW1CO09BQWlCO0NBQU8ifQ==
@@ -1,18 +1,9 @@
1
1
  import { RefObject } from "react";
2
2
 
3
3
  //#region src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts
4
-
5
- /**
6
- * Tracks a component and logs `SpiffyMetricsEventName.ChatComponentVisible` when visible.
7
- *
8
- * @param element - The element to track visibility of.
9
- * @param eventProps - Properties to include with the event.
10
- * @param rootMargin - Root margin for the intersection observer (defaults to 0px).
11
- * @param enabled - Whether tracking is enabled (defaults to true).
12
- */
13
4
  declare const useTrackComponentVisibleEvent: (element: RefObject<HTMLElement>, eventProps?: Record<string, unknown>, rootMargin?: string, enabled?: boolean) => {
14
5
  isVisible: boolean;
15
6
  };
16
7
  //#endregion
17
8
  export { useTrackComponentVisibleEvent };
18
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQvdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZPYmplY3QgfSBmcm9tICdyZWFjdCc7XG4vKipcbiAqIFRyYWNrcyBhIGNvbXBvbmVudCBhbmQgbG9ncyBgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZWAgd2hlbiB2aXNpYmxlLlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gdHJhY2sgdmlzaWJpbGl0eSBvZi5cbiAqIEBwYXJhbSBldmVudFByb3BzIC0gUHJvcGVydGllcyB0byBpbmNsdWRlIHdpdGggdGhlIGV2ZW50LlxuICogQHBhcmFtIHJvb3RNYXJnaW4gLSBSb290IG1hcmdpbiBmb3IgdGhlIGludGVyc2VjdGlvbiBvYnNlcnZlciAoZGVmYXVsdHMgdG8gMHB4KS5cbiAqIEBwYXJhbSBlbmFibGVkIC0gV2hldGhlciB0cmFja2luZyBpcyBlbmFibGVkIChkZWZhdWx0cyB0byB0cnVlKS5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQ6IChlbGVtZW50OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+LCBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJvb3RNYXJnaW4/OiBzdHJpbmcsIGVuYWJsZWQ/OiBib29sZWFuKSA9PiB7XG4gICAgaXNWaXNpYmxlOiBib29sZWFuO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBRSxnQ0FBQTtDQUFBO09BQUE7T0FBQTtPQUFBO0NBQUEifQ==
9
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQvdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZPYmplY3QgfSBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudDogKGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcm9vdE1hcmdpbj86IHN0cmluZywgZW5hYmxlZD86IGJvb2xlYW4pID0+IHtcbiAgICBpc1Zpc2libGU6IGJvb2xlYW47XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFXLGdDQUFnQztDQUFDO09BQVc7T0FBbUI7T0FBaUI7Q0FBTyJ9