@envive-ai/react-hooks 0.2.6-alpha-7 → 0.2.6-alpha-9

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 (412) hide show
  1. package/dist/{AmplitudeOperations-DjqOM3uE.js → AmplitudeOperations-D2r56Ptr.js} +2 -2
  2. package/dist/{AmplitudeOperations-DbUiR0N_.cjs → AmplitudeOperations-SkndCrhj.cjs} +2 -2
  3. package/dist/{NewOrgConfig-C_1T1iOt.js → NewOrgConfig-C9aQqGsb.js} +2 -2
  4. package/dist/{NewOrgConfig-D2Kvqa1z.cjs → NewOrgConfig-CHkHRqHx.cjs} +2 -2
  5. package/dist/{TrackComponentVisibleEvent-BxOhr9Da.js → TrackComponentVisibleEvent-BIGvzk4f.js} +2 -2
  6. package/dist/{TrackComponentVisibleEvent-CDbecFPM.cjs → TrackComponentVisibleEvent-DjZUt7LR.cjs} +2 -2
  7. package/dist/amplitudeContext-B3DsV6IO.cjs +248 -0
  8. package/dist/amplitudeContext-S3JYCxr4.js +232 -0
  9. package/dist/{app-Bs2KxG_8.js → app-BT3g-mDp.js} +5 -5
  10. package/dist/{app-DSnDDqcW.cjs → app-DxwdFQlv.cjs} +5 -5
  11. package/dist/application/utils/index.cjs +4 -4
  12. package/dist/application/utils/index.d.cts +2 -2
  13. package/dist/application/utils/index.js +4 -4
  14. package/dist/{atomStore-CfzCqWB9.js → atomStore-BuopbV9k.js} +1 -1
  15. package/dist/{atomStore-BQVO5haU.cjs → atomStore-CZKe3itM.cjs} +1 -1
  16. package/dist/atoms/app/index.cjs +9 -9
  17. package/dist/atoms/app/index.d.cts +7 -7
  18. package/dist/atoms/app/index.d.ts +7 -7
  19. package/dist/atoms/app/index.js +9 -9
  20. package/dist/atoms/atomStore/index.cjs +1 -1
  21. package/dist/atoms/atomStore/index.d.ts +1 -1
  22. package/dist/atoms/atomStore/index.js +1 -1
  23. package/dist/atoms/chat/index.cjs +10 -10
  24. package/dist/atoms/chat/index.d.cts +32 -32
  25. package/dist/atoms/chat/index.d.ts +32 -32
  26. package/dist/atoms/chat/index.js +10 -10
  27. package/dist/atoms/globalSearch/index.d.cts +6 -6
  28. package/dist/atoms/globalSearch/index.d.ts +6 -6
  29. package/dist/atoms/org/index.cjs +2 -2
  30. package/dist/atoms/org/index.d.cts +15 -15
  31. package/dist/atoms/org/index.d.ts +16 -16
  32. package/dist/atoms/org/index.js +2 -2
  33. package/dist/atoms/search/index.cjs +3 -3
  34. package/dist/atoms/search/index.d.cts +15 -15
  35. package/dist/atoms/search/index.d.ts +14 -14
  36. package/dist/atoms/search/index.js +3 -3
  37. package/dist/atoms/search/utils.d.cts +1 -1
  38. package/dist/cdnContext-i5iYA8ig.cjs +53 -0
  39. package/dist/cdnContext-td-gAam0.js +38 -0
  40. package/dist/{chat-EJbfGWRr.js → chat-ClvJ9xEj.js} +1 -1
  41. package/dist/{chat-CJ9D8n7g.cjs → chat-DCGriB7h.cjs} +1 -1
  42. package/dist/{chat-C5afTKUY.js → chat-ZaY3KY-R.js} +3 -3
  43. package/dist/{chat-CCjM6fS_.cjs → chat-rhEjVfrd.cjs} +3 -3
  44. package/dist/{common-CuwWqIJ1.cjs → common-DQPvV_S_.cjs} +1 -1
  45. package/dist/{common-Df2bwzd2.js → common-c_4eX0qn.js} +1 -1
  46. package/dist/{components-QGCWJ26c.js → components-CDpaMUjK.js} +1 -1
  47. package/dist/{components-BCfFLf9X.cjs → components-DKwVHIjq.cjs} +1 -1
  48. package/dist/config/index.cjs +4 -4
  49. package/dist/config/index.js +4 -4
  50. package/dist/config/locators/components/chat/index.cjs +1 -1
  51. package/dist/config/locators/components/chat/index.js +1 -1
  52. package/dist/config/locators/components/common/index.cjs +1 -1
  53. package/dist/config/locators/components/common/index.js +1 -1
  54. package/dist/config/locators/components/index.cjs +1 -1
  55. package/dist/config/locators/components/index.js +1 -1
  56. package/dist/config/locators/index.cjs +4 -4
  57. package/dist/config/locators/index.js +4 -4
  58. package/dist/contexts/amplitudeContext/index.cjs +12 -12
  59. package/dist/contexts/amplitudeContext/index.d.cts +1 -1
  60. package/dist/contexts/amplitudeContext/index.js +12 -12
  61. package/dist/contexts/cdnContext/index.cjs +2 -2
  62. package/dist/contexts/cdnContext/index.d.cts +1 -1
  63. package/dist/contexts/cdnContext/index.d.ts +1 -1
  64. package/dist/contexts/cdnContext/index.js +2 -2
  65. package/dist/contexts/enviveConfigContext/index.cjs +2 -2
  66. package/dist/contexts/enviveConfigContext/index.d.cts +1 -1
  67. package/dist/contexts/enviveConfigContext/index.js +2 -2
  68. package/dist/contexts/enviveCssContext/index.cjs +6 -6
  69. package/dist/contexts/enviveCssContext/index.js +6 -6
  70. package/dist/contexts/featureFlagContext/index.cjs +2 -2
  71. package/dist/contexts/featureFlagContext/index.js +2 -2
  72. package/dist/contexts/graphqlContext/index.cjs +2 -2
  73. package/dist/contexts/graphqlContext/index.js +2 -2
  74. package/dist/contexts/localStorageContext/index.d.cts +1 -1
  75. package/dist/contexts/newOrgConfigContext/index.cjs +5 -5
  76. package/dist/contexts/newOrgConfigContext/index.js +5 -5
  77. package/dist/contexts/searchContext/index.cjs +14 -14
  78. package/dist/contexts/searchContext/index.js +14 -14
  79. package/dist/contexts/shopifyUrlContext/index.cjs +2 -2
  80. package/dist/contexts/shopifyUrlContext/index.d.cts +1 -1
  81. package/dist/contexts/shopifyUrlContext/index.js +2 -2
  82. package/dist/contexts/systemSettingsContext/index.cjs +2 -2
  83. package/dist/contexts/systemSettingsContext/index.d.cts +1 -1
  84. package/dist/contexts/systemSettingsContext/index.d.ts +2 -2
  85. package/dist/contexts/systemSettingsContext/index.js +2 -2
  86. package/dist/contexts/userIdentityContext/index.cjs +9 -9
  87. package/dist/contexts/userIdentityContext/index.js +9 -9
  88. package/dist/{domObserver-DNeeSh1F.js → domObserver-CVhsCSkS.js} +1 -1
  89. package/dist/{domObserver-C2oQO8vi.cjs → domObserver-LCBj1xw4.cjs} +1 -1
  90. package/dist/{enviveConfig-Dp80h9yu.cjs → enviveConfig-CQ_8mT-g.cjs} +1 -1
  91. package/dist/{enviveConfig-Ciq4ASoV.js → enviveConfig-Cwlp7-Qz.js} +1 -1
  92. package/dist/{enviveConfigContext-CCjJUmwp.js → enviveConfigContext-BZbGEgOW.js} +2 -2
  93. package/dist/{enviveConfigContext-DoYP8KSw.cjs → enviveConfigContext-BinpxTCy.cjs} +2 -2
  94. package/dist/events/index.cjs +1 -1
  95. package/dist/events/index.js +1 -1
  96. package/dist/{events-DBin1Z7o.cjs → events-CgFGtanE.cjs} +1 -1
  97. package/dist/{events-CXiS1aTc.js → events-WOOrnUAx.js} +1 -1
  98. package/dist/exceptions/index.d.ts +1 -1
  99. package/dist/{graphqlContext-ChXlE8Ul.cjs → graphqlContext-B8wuRZcp.cjs} +2 -2
  100. package/dist/{graphqlContext-0cg9fEUw.js → graphqlContext-CpHMbKoX.js} +2 -2
  101. package/dist/hooks/AmplitudeOperations/index.cjs +13 -13
  102. package/dist/hooks/AmplitudeOperations/index.d.cts +1 -1
  103. package/dist/hooks/AmplitudeOperations/index.js +13 -13
  104. package/dist/hooks/AppDetails/index.cjs +12 -12
  105. package/dist/hooks/AppDetails/index.d.cts +1 -1
  106. package/dist/hooks/AppDetails/index.js +12 -12
  107. package/dist/hooks/BlockBackButton/index.d.cts +1 -1
  108. package/dist/hooks/CdnOperations/index.cjs +2 -2
  109. package/dist/hooks/CdnOperations/index.d.ts +1 -1
  110. package/dist/hooks/CdnOperations/index.js +2 -2
  111. package/dist/hooks/ChatToggle/index.cjs +13 -13
  112. package/dist/hooks/ChatToggle/index.d.cts +1 -1
  113. package/dist/hooks/ChatToggle/index.js +13 -13
  114. package/dist/hooks/ChatToggleAnalytics/index.cjs +13 -13
  115. package/dist/hooks/ChatToggleAnalytics/index.d.cts +1 -1
  116. package/dist/hooks/ChatToggleAnalytics/index.js +13 -13
  117. package/dist/hooks/Debounce/index.d.cts +1 -1
  118. package/dist/hooks/ElementObserver/index.cjs +1 -1
  119. package/dist/hooks/ElementObserver/index.js +1 -1
  120. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  121. package/dist/hooks/GraphQLConfig/index.cjs +3 -3
  122. package/dist/hooks/GraphQLConfig/index.d.cts +1 -1
  123. package/dist/hooks/GraphQLConfig/index.js +3 -3
  124. package/dist/hooks/IdentifyUser/index.cjs +9 -9
  125. package/dist/hooks/IdentifyUser/index.d.cts +1 -1
  126. package/dist/hooks/IdentifyUser/index.js +9 -9
  127. package/dist/hooks/ImageResolver/index.cjs +1 -1
  128. package/dist/hooks/ImageResolver/index.d.cts +1 -1
  129. package/dist/hooks/ImageResolver/index.js +1 -1
  130. package/dist/hooks/LocalStorageOperations/index.d.cts +1 -1
  131. package/dist/hooks/MessageFilter/index.d.cts +1 -1
  132. package/dist/hooks/MessageScrollObserver/index.d.cts +1 -1
  133. package/dist/hooks/NewOrgConfig/index.cjs +6 -6
  134. package/dist/hooks/NewOrgConfig/index.d.cts +2 -2
  135. package/dist/hooks/NewOrgConfig/index.d.ts +2 -2
  136. package/dist/hooks/NewOrgConfig/index.js +6 -6
  137. package/dist/hooks/Search/index.cjs +15 -15
  138. package/dist/hooks/Search/index.js +15 -15
  139. package/dist/hooks/SearchOperations/index.cjs +14 -14
  140. package/dist/hooks/SearchOperations/index.js +14 -14
  141. package/dist/hooks/ShopifyUrlOperations/index.cjs +2 -2
  142. package/dist/hooks/ShopifyUrlOperations/index.js +2 -2
  143. package/dist/hooks/SystemSettingsContext/index.cjs +2 -2
  144. package/dist/hooks/SystemSettingsContext/index.d.cts +3 -3
  145. package/dist/hooks/SystemSettingsContext/index.d.ts +4 -4
  146. package/dist/hooks/SystemSettingsContext/index.js +2 -2
  147. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +13 -13
  148. package/dist/hooks/TrackComponentVisibleEvent/index.js +13 -13
  149. package/dist/hooks/UpdateAnalyticsProps/index.cjs +12 -12
  150. package/dist/hooks/UpdateAnalyticsProps/index.js +12 -12
  151. package/dist/hooks/utils.cjs +1 -1
  152. package/dist/hooks/utils.d.cts +1 -1
  153. package/dist/hooks/utils.js +1 -1
  154. package/dist/index-CMZcE7pk.d.cts +1 -1
  155. package/dist/index-ChiZg0yw.d.cts +1 -1
  156. package/dist/index-CsmO1rDH.d.ts +1 -1
  157. package/dist/index-DtzPIcQp.d.ts +1 -1
  158. package/dist/index-bEjLKG_Q.d.ts +1 -1
  159. package/dist/index-mv7KvWDq.d.ts +1 -1
  160. package/dist/{locators-C2fWd-74.js → locators-BMQGmGLq.js} +1 -1
  161. package/dist/{locators-Cx3q6Z_h.cjs → locators-DxYdak1F.cjs} +1 -1
  162. package/dist/{newOrgConfigAtom-BuQE_zPK.js → newOrgConfigAtom-C8h3w_Ji.js} +1 -1
  163. package/dist/{newOrgConfigAtom-rrYHmp1b.cjs → newOrgConfigAtom-CDttTiuu.cjs} +1 -1
  164. package/dist/{newOrgConfigContext-d3RHl430.cjs → newOrgConfigContext-Brsggue9.cjs} +4 -4
  165. package/dist/{newOrgConfigContext-D-gU5ppl.js → newOrgConfigContext-Dt_W-wlK.js} +4 -4
  166. package/dist/{org-CIFgIcO4.cjs → org-BNs_maoW.cjs} +1 -1
  167. package/dist/{org-15F128Ah.js → org-CScQqL4k.js} +1 -1
  168. package/dist/{search-Ch6LKNh4.cjs → search-CWkDtqQV.cjs} +2 -2
  169. package/dist/{search--80x6CfL.js → search-OWKKaQQj.js} +2 -2
  170. package/dist/{searchContext-BkPoTq1o.js → searchContext-B-rEZixl.js} +4 -4
  171. package/dist/{searchContext-B0qEUoKb.cjs → searchContext-JCUBg-lA.cjs} +4 -4
  172. package/dist/{shopifyUrlContext-Bw1kAZ2P.cjs → shopifyUrlContext-COc1eDR_.cjs} +2 -2
  173. package/dist/{shopifyUrlContext-DnJiUmMA.js → shopifyUrlContext-CToAt_98.js} +2 -2
  174. package/dist/{systemSettingsContext-DPdDfVhj.js → systemSettingsContext-D9iNGz5v.js} +2 -2
  175. package/dist/{systemSettingsContext-068vQuP2.cjs → systemSettingsContext-DdV7Yte8.cjs} +2 -2
  176. package/dist/types/index.cjs +1 -1
  177. package/dist/types/index.js +1 -1
  178. package/dist/{types-B8HZYWV3.cjs → types-1iJ_FnQQ.cjs} +1 -1
  179. package/dist/{types-y3mhxOUA.js → types-D5du68Vp.js} +1 -1
  180. package/dist/{urlsParser-bb8ciRFg.cjs → urlsParser-Dax4iVNC.cjs} +1 -1
  181. package/dist/{urlsParser-v_1DKvyf.js → urlsParser-NAp2LwWP.js} +1 -1
  182. package/dist/{useAppDetails-eP2hBuid.cjs → useAppDetails-D3T6kJY_.cjs} +4 -4
  183. package/dist/{useAppDetails-BPXln8UE.js → useAppDetails-xPVs6fW7.js} +4 -4
  184. package/dist/{useGraphQLConfig-v9veUbvJ.cjs → useGraphQLConfig-B1DaVvFx.cjs} +2 -2
  185. package/dist/{useGraphQLConfig-Btszi6cG.js → useGraphQLConfig-BtPxjtxw.js} +2 -2
  186. package/dist/{utils-D_nGHczN.js → utils-BZT_oZ3n.js} +1 -1
  187. package/dist/{utils-SjlIHajO.cjs → utils-D3MjNkd3.cjs} +2 -2
  188. package/dist/{utils-CWzuvlOR.js → utils-DMwh3QbT.js} +2 -2
  189. package/dist/{utils-CJk5iwQI.cjs → utils-qtHPLFby.cjs} +1 -1
  190. package/package.json +1 -1
  191. package/src/contexts/amplitudeContext/amplitudeContext.tsx +11 -3
  192. package/src/contexts/cdnContext/cdnContext.tsx +11 -9
  193. package/dist/amplitudeContext-BWmXliMI.cjs +0 -243
  194. package/dist/amplitudeContext-BjMlg5RV.js +0 -227
  195. package/dist/cdnContext-CJ2BNLAD.js +0 -38
  196. package/dist/cdnContext-lkC-AE6A.cjs +0 -53
  197. package/dist/src/application/commerce-api.js +0 -408
  198. package/dist/src/application/logging/logger.js +0 -16
  199. package/dist/src/application/models/graphql/index.js +0 -3
  200. package/dist/src/application/models/graphql/queries/getMerchantColorsQuery.js +0 -13
  201. package/dist/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.js +0 -13
  202. package/dist/src/application/models/graphql/queries/getMerchantOrgIdQuery.js +0 -10
  203. package/dist/src/application/models/guards/api/index.js +0 -12
  204. package/dist/src/application/models/guards/api/isApiFormResponse.js +0 -59
  205. package/dist/src/application/models/guards/api/isApiFormSubmittedResponseAttributes.js +0 -22
  206. package/dist/src/application/models/guards/api/isApiOrderResponseAttributes.js +0 -91
  207. package/dist/src/application/models/guards/api/isApiOrgConfigResults.js +0 -188
  208. package/dist/src/application/models/guards/api/isApiOrganizationConfig.js +0 -115
  209. package/dist/src/application/models/guards/api/isApiPDPEventAttributes.js +0 -16
  210. package/dist/src/application/models/guards/api/isApiPLPEventAttributes.js +0 -26
  211. package/dist/src/application/models/guards/api/isApiPageResponseAttributes.js +0 -15
  212. package/dist/src/application/models/guards/api/isApiProductResponseAttributes.js +0 -65
  213. package/dist/src/application/models/guards/api/isApiProductSearchAttributes.js +0 -15
  214. package/dist/src/application/models/guards/api/isApiProductSearchFilterAttributes.js +0 -10
  215. package/dist/src/application/models/guards/api/isApiQueryTypedEventAttributes.js +0 -4
  216. package/dist/src/application/models/guards/api/isApiResponse.js +0 -33
  217. package/dist/src/application/models/guards/api/isApiReviewResponseAttributes.js +0 -22
  218. package/dist/src/application/models/guards/api/isApiReviewRichInformation.js +0 -23
  219. package/dist/src/application/models/guards/api/isApiSearchEventAttributes.js +0 -20
  220. package/dist/src/application/models/guards/api/isApiSuggestion.js +0 -24
  221. package/dist/src/application/models/guards/api/isApiSuggestionClickedEventAttributes.js +0 -4
  222. package/dist/src/application/models/guards/api/isApiTextResponseAttributes.js +0 -4
  223. package/dist/src/application/models/guards/api/isApiUserEvent.js +0 -18
  224. package/dist/src/application/models/guards/graphQL/isGraphQLColorsConfig.js +0 -41
  225. package/dist/src/application/models/guards/isBaseEcommerceEvent.js +0 -14
  226. package/dist/src/application/models/guards/isGA4EcommerceEvent.js +0 -14
  227. package/dist/src/application/models/guards/isLegacyUAEcommerceEvent.js +0 -14
  228. package/dist/src/application/models/guards/isMobilePLPChatPlacementParameter.js +0 -4
  229. package/dist/src/application/models/guards/isSpanxTakeAQuizCtaParameter.js +0 -1
  230. package/dist/src/application/models/guards/isVariantInfo.js +0 -28
  231. package/dist/src/application/models/guards/utils.js +0 -34
  232. package/dist/src/application/models/index.js +0 -34
  233. package/dist/src/application/models/utils/snakeToCamelTransformer.js +0 -71
  234. package/dist/src/application/models/utils/stringToFulfillmentDisplayStatusEnumValue.js +0 -65
  235. package/dist/src/application/models/validators/validateGraphQLColorsConfig.js +0 -9
  236. package/dist/src/application/models/validators/validateGraphQLFrontendConfig.js +0 -420
  237. package/dist/src/application/models/validators/validateGraphQLOrgId.js +0 -6
  238. package/dist/src/application/models/validators/validateMobilePLPChatPlacementParameter.js +0 -9
  239. package/dist/src/application/models/validators/validateOrgConfigResults.js +0 -44
  240. package/dist/src/application/models/validators/validateOrganizationConfig.js +0 -34
  241. package/dist/src/application/models/validators/validateResponse.js +0 -173
  242. package/dist/src/application/models/validators/validateSuggestion.js +0 -13
  243. package/dist/src/application/models/validators/validateUserEvent.js +0 -91
  244. package/dist/src/application/utils/analyticsUtils.js +0 -95
  245. package/dist/src/application/utils/coreContextToApiContext.js +0 -8
  246. package/dist/src/application/utils/coreUserEventToApiUserEvent.js +0 -90
  247. package/dist/src/application/utils/divideArray.js +0 -7
  248. package/dist/src/application/utils/domObserver.js +0 -85
  249. package/dist/src/application/utils/elementObserver.js +0 -186
  250. package/dist/src/application/utils/imageFilter.js +0 -11
  251. package/dist/src/application/utils/index.js +0 -21
  252. package/dist/src/application/utils/merchantUtils.js +0 -15
  253. package/dist/src/application/utils/messageFromFormSubmittedEvent.js +0 -19
  254. package/dist/src/application/utils/messageFromQueryEvent.js +0 -35
  255. package/dist/src/application/utils/messageFromResponse.js +0 -123
  256. package/dist/src/application/utils/messageFromSuggestionEvent.js +0 -27
  257. package/dist/src/application/utils/mouseEventTypes.js +0 -1
  258. package/dist/src/application/utils/mutationHelper.js +0 -33
  259. package/dist/src/application/utils/nextMessageRequestToApiRequest.js +0 -29
  260. package/dist/src/application/utils/nodeSelector.js +0 -101
  261. package/dist/src/application/utils/overrides.js +0 -144
  262. package/dist/src/application/utils/stringUtils.js +0 -47
  263. package/dist/src/application/utils/supportedEventRequestToApiRequest.js +0 -7
  264. package/dist/src/application/utils/urlsParser.js +0 -33
  265. package/dist/src/application/utils/validation.js +0 -5
  266. package/dist/src/atoms/amplitude/amplitudeTrackEventAtom.js +0 -4
  267. package/dist/src/atoms/app/index.js +0 -23
  268. package/dist/src/atoms/app/variant.js +0 -102
  269. package/dist/src/atoms/atomStore/atomStore.js +0 -28
  270. package/dist/src/atoms/atomStore/index.js +0 -1
  271. package/dist/src/atoms/chat/chatState.js +0 -32
  272. package/dist/src/atoms/chat/form.js +0 -16
  273. package/dist/src/atoms/chat/index.js +0 -23
  274. package/dist/src/atoms/chat/lastMessage.js +0 -10
  275. package/dist/src/atoms/chat/messageQueue.js +0 -68
  276. package/dist/src/atoms/chat/performanceMetrics.js +0 -70
  277. package/dist/src/atoms/chat/renderedWidgetRefs.js +0 -24
  278. package/dist/src/atoms/chat/replies.js +0 -42
  279. package/dist/src/atoms/chat/suggestions.js +0 -29
  280. package/dist/src/atoms/envive/enviveConfig.js +0 -67
  281. package/dist/src/atoms/globalSearch/globalSearch.js +0 -8
  282. package/dist/src/atoms/globalSearch/index.js +0 -1
  283. package/dist/src/atoms/org/customerService.js +0 -6
  284. package/dist/src/atoms/org/graphqlConfig.js +0 -8
  285. package/dist/src/atoms/org/index.js +0 -4
  286. package/dist/src/atoms/org/newOrgConfigAtom.js +0 -2
  287. package/dist/src/atoms/org/orgAnalyticsConfig.js +0 -8
  288. package/dist/src/atoms/search/index.js +0 -1
  289. package/dist/src/atoms/search/productFilters.js +0 -163
  290. package/dist/src/atoms/search/productRetrievalAPI.js +0 -50
  291. package/dist/src/atoms/search/productRetrievalAdapter.js +0 -14
  292. package/dist/src/atoms/search/productSorter.js +0 -13
  293. package/dist/src/atoms/search/searchAPI.js +0 -140
  294. package/dist/src/atoms/search/searchServiceAdapter.js +0 -14
  295. package/dist/src/atoms/search/utils.js +0 -15
  296. package/dist/src/config/index.js +0 -1
  297. package/dist/src/config/locators/components/chat/entrypoints.js +0 -10
  298. package/dist/src/config/locators/components/chat/index.js +0 -21
  299. package/dist/src/config/locators/components/chat/preview.js +0 -11
  300. package/dist/src/config/locators/components/chat/variants/index.js +0 -12
  301. package/dist/src/config/locators/components/common/buttons.js +0 -6
  302. package/dist/src/config/locators/components/common/cards.js +0 -17
  303. package/dist/src/config/locators/components/common/index.js +0 -4
  304. package/dist/src/config/locators/components/common/links.js +0 -1
  305. package/dist/src/config/locators/components/common/tables.js +0 -1
  306. package/dist/src/config/locators/components/floating-button.js +0 -2
  307. package/dist/src/config/locators/components/index.js +0 -3
  308. package/dist/src/config/locators/components/report-issue.js +0 -13
  309. package/dist/src/config/locators/components/search/index.js +0 -5
  310. package/dist/src/config/locators/components/shadow-dom.js +0 -1
  311. package/dist/src/config/locators/embedded.js +0 -20
  312. package/dist/src/config/locators/index.js +0 -4
  313. package/dist/src/contexts/amplitudeContext/amplitudeContext.js +0 -271
  314. package/dist/src/contexts/amplitudeContext/index.js +0 -1
  315. package/dist/src/contexts/cdnContext/cdnContext.js +0 -28
  316. package/dist/src/contexts/cdnContext/index.js +0 -1
  317. package/dist/src/contexts/enviveConfigContext/enviveConfigContext.js +0 -37
  318. package/dist/src/contexts/enviveConfigContext/index.js +0 -1
  319. package/dist/src/contexts/enviveCssContext/enviveCssContext.js +0 -31
  320. package/dist/src/contexts/enviveCssContext/index.js +0 -1
  321. package/dist/src/contexts/featureFlagContext/featureFlagContext.js +0 -109
  322. package/dist/src/contexts/featureFlagContext/index.js +0 -1
  323. package/dist/src/contexts/featureFlagServiceContext/featureFlagServiceContext.js +0 -47
  324. package/dist/src/contexts/featureFlagServiceContext/index.js +0 -1
  325. package/dist/src/contexts/graphqlContext/graphqlContext.js +0 -87
  326. package/dist/src/contexts/graphqlContext/index.js +0 -1
  327. package/dist/src/contexts/localStorageContext/index.js +0 -1
  328. package/dist/src/contexts/localStorageContext/localStorageContext.js +0 -95
  329. package/dist/src/contexts/newOrgConfigContext/index.js +0 -1
  330. package/dist/src/contexts/newOrgConfigContext/newOrgConfigContext.js +0 -33
  331. package/dist/src/contexts/searchContext/index.js +0 -1
  332. package/dist/src/contexts/searchContext/searchContext.js +0 -131
  333. package/dist/src/contexts/sessionStorageContext/index.js +0 -1
  334. package/dist/src/contexts/sessionStorageContext/sessionStorageContext.js +0 -43
  335. package/dist/src/contexts/shopifyUrlContext/index.js +0 -1
  336. package/dist/src/contexts/shopifyUrlContext/shopifyUrlContext.js +0 -62
  337. package/dist/src/contexts/systemSettingsContext/index.js +0 -1
  338. package/dist/src/contexts/systemSettingsContext/systemSettingsContext.js +0 -29
  339. package/dist/src/contexts/userIdentityContext/index.js +0 -1
  340. package/dist/src/contexts/userIdentityContext/userIdentityContext.js +0 -118
  341. package/dist/src/events/index.js +0 -51
  342. package/dist/src/events/registerAnalyticsListeners.js +0 -32
  343. package/dist/src/exceptions/index.js +0 -2
  344. package/dist/src/exceptions/sessionExceptions.js +0 -6
  345. package/dist/src/exceptions/unsupportedProductExceptions.js +0 -6
  346. package/dist/src/hooks/AmplitudeOperations/index.js +0 -1
  347. package/dist/src/hooks/AmplitudeOperations/useAmplitudeOperations.js +0 -24
  348. package/dist/src/hooks/AppDetails/index.js +0 -1
  349. package/dist/src/hooks/AppDetails/useAppDetails.js +0 -26
  350. package/dist/src/hooks/BlockBackButton/index.js +0 -1
  351. package/dist/src/hooks/BlockBackButton/useBlockBackButton.js +0 -23
  352. package/dist/src/hooks/CdnOperations/index.js +0 -1
  353. package/dist/src/hooks/CdnOperations/useCdnOperations.js +0 -13
  354. package/dist/src/hooks/ChatToggle/index.js +0 -1
  355. package/dist/src/hooks/ChatToggle/useChatToggle.js +0 -50
  356. package/dist/src/hooks/ChatToggleAnalytics/index.js +0 -1
  357. package/dist/src/hooks/ChatToggleAnalytics/useChatToggleAnalytics.js +0 -11
  358. package/dist/src/hooks/CustomerSupportHandoff/index.js +0 -1
  359. package/dist/src/hooks/CustomerSupportHandoff/useCustomerSupportHandoff.js +0 -32
  360. package/dist/src/hooks/Debounce/index.js +0 -1
  361. package/dist/src/hooks/Debounce/useDebounce.js +0 -13
  362. package/dist/src/hooks/ElementObserver/index.js +0 -1
  363. package/dist/src/hooks/ElementObserver/useElementObserver.js +0 -208
  364. package/dist/src/hooks/GrabAndScroll/index.js +0 -1
  365. package/dist/src/hooks/GrabAndScroll/useGrabAndScroll.js +0 -105
  366. package/dist/src/hooks/GraphQLConfig/index.js +0 -1
  367. package/dist/src/hooks/GraphQLConfig/useGraphQLConfig.js +0 -54
  368. package/dist/src/hooks/IdentifyUser/index.js +0 -1
  369. package/dist/src/hooks/IdentifyUser/useIdentifyUser.js +0 -28
  370. package/dist/src/hooks/ImageResolver/index.js +0 -1
  371. package/dist/src/hooks/ImageResolver/useImageResolver.js +0 -45
  372. package/dist/src/hooks/Intersection/index.js +0 -1
  373. package/dist/src/hooks/Intersection/useIntersection.js +0 -20
  374. package/dist/src/hooks/IsSmallScreen/index.js +0 -1
  375. package/dist/src/hooks/IsSmallScreen/useIsSmallScreen.js +0 -16
  376. package/dist/src/hooks/LocalStorageOperations/index.js +0 -1
  377. package/dist/src/hooks/LocalStorageOperations/useLocalStorageOperations.js +0 -64
  378. package/dist/src/hooks/MessageFilter/index.js +0 -1
  379. package/dist/src/hooks/MessageFilter/useMessageFilter.js +0 -37
  380. package/dist/src/hooks/MessageScrollObserver/index.js +0 -1
  381. package/dist/src/hooks/MessageScrollObserver/useMessageScrollObserver.js +0 -35
  382. package/dist/src/hooks/NewOrgConfig/index.js +0 -1
  383. package/dist/src/hooks/NewOrgConfig/useNewOrgConfig.js +0 -5
  384. package/dist/src/hooks/Search/index.js +0 -1
  385. package/dist/src/hooks/Search/useRecommendedProducts.js +0 -35
  386. package/dist/src/hooks/Search/useSearch.js +0 -224
  387. package/dist/src/hooks/Search/useSearchInput.js +0 -192
  388. package/dist/src/hooks/SearchOperations/index.js +0 -1
  389. package/dist/src/hooks/SearchOperations/useSearchOperations.js +0 -78
  390. package/dist/src/hooks/SessionStorageOperations/index.js +0 -1
  391. package/dist/src/hooks/SessionStorageOperations/useSessionStorageOperations.js +0 -20
  392. package/dist/src/hooks/ShopifyUrlOperations/index.js +0 -1
  393. package/dist/src/hooks/ShopifyUrlOperations/useShopifyUrlOperations.js +0 -34
  394. package/dist/src/hooks/SnapCalculator/index.js +0 -1
  395. package/dist/src/hooks/SnapCalculator/useSnapCalculator.js +0 -22
  396. package/dist/src/hooks/SystemSettingsContext/index.js +0 -1
  397. package/dist/src/hooks/SystemSettingsContext/useSystemSettingsContext.js +0 -9
  398. package/dist/src/hooks/TrackComponentVisibleEvent/index.js +0 -1
  399. package/dist/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +0 -45
  400. package/dist/src/hooks/UpdateAnalyticsProps/index.js +0 -1
  401. package/dist/src/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.js +0 -43
  402. package/dist/src/hooks/utils.js +0 -116
  403. package/dist/src/interceptors/index.js +0 -1
  404. package/dist/src/interceptors/useMessageInterceptor.js +0 -24
  405. package/dist/src/types/ApiResponse.js +0 -1
  406. package/dist/src/types/FilterAttribute.js +0 -3
  407. package/dist/src/types/Message.js +0 -24
  408. package/dist/src/types/Suggestion.js +0 -3
  409. package/dist/src/types/index.js +0 -4
  410. package/dist/src/util/colorVar.js +0 -3
  411. package/dist/src/util/configVersion.js +0 -4
  412. package/dist/src/util/domInsertion.js +0 -16
@@ -1,243 +0,0 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_events = require('./events-DBin1Z7o.cjs');
3
- const require_dist = require('./dist-VxRI6eQv.cjs');
4
- const require_logger = require('./logger-BqHq67zN.cjs');
5
- const require_enviveConfig = require('./enviveConfig-Dp80h9yu.cjs');
6
- const require_org = require('./org-CIFgIcO4.cjs');
7
- const require_app = require('./app-DSnDDqcW.cjs');
8
- const require_localStorageContext = require('./localStorageContext-CWc5xJ6U.cjs');
9
- const require_enviveConfigContext = require('./enviveConfigContext-DoYP8KSw.cjs');
10
- const require_featureFlagServiceContext = require('./featureFlagServiceContext-DHtkQAtq.cjs');
11
- let react = require("react");
12
- react = require_chunk.__toESM(react);
13
- let jotai = require("jotai");
14
- jotai = require_chunk.__toESM(jotai);
15
- let react_jsx_runtime = require("react/jsx-runtime");
16
- react_jsx_runtime = require_chunk.__toESM(react_jsx_runtime);
17
- let __amplitude_analytics_browser = require("@amplitude/analytics-browser");
18
- __amplitude_analytics_browser = require_chunk.__toESM(__amplitude_analytics_browser);
19
-
20
- //#region src/contexts/amplitudeContext/amplitudeContext.tsx
21
- const AmplitudeContext = (0, react.createContext)(null);
22
- const AmplitudeProvider = ({ children }) => {
23
- const userId = (0, jotai.useAtomValue)(require_app.userIdAtom);
24
- const amplitudeApiKey = (0, jotai.useAtomValue)(require_enviveConfig.amplitudeApiKeyAtom);
25
- const dataResidency = (0, jotai.useAtomValue)(require_enviveConfig.dataResidencyAtom);
26
- const orgGaConfig = (0, jotai.useAtomValue)(require_org.orgAnalyticsGoogleAnalyticsConfigAtom);
27
- const env = (0, jotai.useAtomValue)(require_enviveConfig.envAtom);
28
- const contextSource = (0, jotai.useAtomValue)(require_enviveConfig.contextSourceAtom);
29
- (0, jotai.useAtomValue)(require_enviveConfig.identifyingPrefixAtom);
30
- const { getItem } = require_localStorageContext.useLocalStorage();
31
- const { publicKey, featureOverrides, variantUrlOverride, variantInfoOverride, show, orgShortName, featureGates } = require_enviveConfigContext.useEnviveConfig();
32
- const { featureFlagService } = require_featureFlagServiceContext.useFeatureFlagService();
33
- const [amplitudeClient, setAmplitudeClient] = react.default.useState(void 0);
34
- const [supplementalDefaultProps, setSupplementalDefaultProps] = react.default.useState({});
35
- const isReady = Boolean(userId && featureFlagService && amplitudeApiKey && userId);
36
- const getDefaultTrackingProps = (0, react.useCallback)(() => {
37
- const gatesProps = featureGates ? featureGates.reduce((acc, curr) => {
38
- if (curr.name && curr.value != null) return {
39
- ...acc,
40
- [`feature_gate.${curr.name}`]: curr.value
41
- };
42
- return acc;
43
- }, {}) : {};
44
- const experimentProps = {};
45
- return {
46
- ...gatesProps,
47
- ...experimentProps,
48
- ...supplementalDefaultProps,
49
- app_id: "commerce-chat-react-component",
50
- chat_id: getItem(require_dist.LocalStorageKeys.ChatId),
51
- env: env || "unknown",
52
- app_source: contextSource,
53
- "org.short_name": orgShortName,
54
- "user.id": userId,
55
- "cdp.user_id": null,
56
- "cdp.provider": null,
57
- "event.source": "web-browser",
58
- "event.type": "user-activity",
59
- "event.id": null,
60
- "event.channel": "web",
61
- "event.timestamp": null
62
- };
63
- }, [
64
- featureGates,
65
- supplementalDefaultProps,
66
- env,
67
- contextSource,
68
- orgShortName,
69
- userId
70
- ]);
71
- const eventPropsToPrefixedEventProps = (0, react.useCallback)((eventName, eventProps) => {
72
- const prefix = eventName.toLowerCase().replace(/\s+/g, "_");
73
- return Object.entries(eventProps).reduce((acc, [key, value$1]) => {
74
- acc[`${prefix}.${key}`] = value$1;
75
- return acc;
76
- }, {});
77
- }, []);
78
- const amplitudeSessionReplayInit = (0, react.useCallback)(() => {
79
- const isEnabled = Boolean(orgShortName === require_dist.OrgShortName.UniqueVintage && featureFlagService?.isClientSessionEnabled() && featureFlagService?.isFeatureGateEnabled(require_dist.FeatureGates.IsNewFeatureEnabled));
80
- const sampleRate = 1;
81
- try {
82
- require_logger.logger_default.logDebug(`[spiffy-ai] amplitude session-replay initializing isEnabled=${isEnabled} sampleRate=${sampleRate}`);
83
- if (!isEnabled) return isEnabled;
84
- return isEnabled;
85
- } catch (e) {
86
- require_logger.logger_default.logError("[spiffy-ai] Error initializing amplitude session-replay", e);
87
- return false;
88
- }
89
- }, [orgShortName, featureFlagService]);
90
- const eventTrackingEnrichment = (0, react.useMemo)(() => {
91
- return {
92
- name: "page-view-tracking-enrichment",
93
- type: "enrichment",
94
- setup: async () => void 0,
95
- execute: async (event) => {
96
- let enrichedEvent;
97
- if (["[Amplitude] Page Viewed", `[Spiffy] ${require_dist.SpiffyMetricsEventName.BundleLoaded}`].includes(event.event_type)) {
98
- const globalProperties = {};
99
- if (publicKey) globalProperties["globalProperties.publicKey"] = publicKey;
100
- if (featureOverrides) Object.entries(featureOverrides).forEach(([key, value$1]) => {
101
- globalProperties[`globalProperties.featureOverrides.${key}`] = String(value$1);
102
- });
103
- if (variantUrlOverride) globalProperties["globalProperties.variantUrlOverride"] = variantUrlOverride;
104
- if (variantInfoOverride) globalProperties["globalProperties.variantInfoOverride"] = JSON.stringify(variantInfoOverride);
105
- if (show != null) globalProperties["globalProperties.show"] = String(show);
106
- const enabledFeatures = featureFlagService.getFeatureFlags();
107
- const enabledFeaturesProperties = Object.entries(enabledFeatures).reduce((acc, [key, value$1]) => ({
108
- ...acc,
109
- [`enabledFeatures.${key}`]: `${value$1}`
110
- }), {});
111
- const timingProperties = { "timing.enriched_at_ms": window.performance?.now() };
112
- enrichedEvent = {
113
- ...event,
114
- event_properties: {
115
- ...event.event_properties,
116
- ...getDefaultTrackingProps(),
117
- ...globalProperties,
118
- ...enabledFeaturesProperties,
119
- ...timingProperties
120
- }
121
- };
122
- } else enrichedEvent = event;
123
- require_events.EventsDispatcher.dispatch(require_dist.SpiffyEvent.AMPLITUDE_EVENT, enrichedEvent);
124
- return enrichedEvent;
125
- }
126
- };
127
- }, [
128
- getDefaultTrackingProps,
129
- featureFlagService,
130
- publicKey,
131
- featureOverrides,
132
- variantUrlOverride,
133
- variantInfoOverride,
134
- show
135
- ]);
136
- (0, react.useEffect)(() => {
137
- if (isReady && !amplitudeClient) {
138
- const currentAmplitudeInstance = (0, __amplitude_analytics_browser.createInstance)();
139
- const isSessionsEnabled = amplitudeSessionReplayInit();
140
- currentAmplitudeInstance.add(eventTrackingEnrichment);
141
- currentAmplitudeInstance.init(amplitudeApiKey, userId, {
142
- serverZone: dataResidency,
143
- trackingOptions: { ipAddress: true },
144
- autocapture: {
145
- attribution: true,
146
- pageViews: { trackHistoryChanges: "pathOnly" },
147
- sessions: isSessionsEnabled,
148
- formInteractions: false,
149
- fileDownloads: false
150
- }
151
- });
152
- setAmplitudeClient(currentAmplitudeInstance);
153
- }
154
- }, [
155
- isReady,
156
- amplitudeClient,
157
- amplitudeApiKey,
158
- userId,
159
- dataResidency,
160
- amplitudeSessionReplayInit,
161
- eventTrackingEnrichment
162
- ]);
163
- const trackEvent = (0, react.useCallback)(async ({ eventName, eventProps, eventGroups, alsoSendToGoogleAnalytics = false }) => {
164
- require_logger.logger_default.logDebug("Submitting event", eventName);
165
- try {
166
- const decoratedEventName = `[Spiffy] ${eventName}`;
167
- if (!amplitudeClient) {
168
- require_logger.logger_default.logWarn("amplitude client undefined", void 0, { event_name: decoratedEventName });
169
- return;
170
- }
171
- const eventData = JSON.stringify({
172
- eventName,
173
- eventProps,
174
- created_at: (/* @__PURE__ */ new Date()).toISOString()
175
- });
176
- const data = new TextEncoder().encode(eventData);
177
- const hashBuffer = await crypto.subtle.digest("SHA-256", data);
178
- const currentInsertId = Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, "0")).join("");
179
- require_logger.logger_default.logDebug(`amplitude tracking ${decoratedEventName}`, null, {
180
- event_name: decoratedEventName,
181
- props: eventProps
182
- });
183
- amplitudeClient.track(decoratedEventName, {
184
- ...getDefaultTrackingProps(),
185
- ...eventProps,
186
- ...eventProps ? eventPropsToPrefixedEventProps(eventName, eventProps) : {}
187
- }, {
188
- ...eventGroups,
189
- insert_id: currentInsertId
190
- });
191
- if (alsoSendToGoogleAnalytics && orgGaConfig) {
192
- require_logger.logger_default.logDebug("[spiffy-ai] GA tracking", decoratedEventName);
193
- if (window.dataLayer) window.dataLayer.push({
194
- event: decoratedEventName,
195
- eventProps
196
- });
197
- }
198
- } catch (err) {
199
- require_logger.logger_default.logError("[spiffy-ai] Error tracking event", err, {
200
- eventName,
201
- eventProps
202
- });
203
- }
204
- }, [
205
- amplitudeClient,
206
- getDefaultTrackingProps,
207
- eventPropsToPrefixedEventProps,
208
- orgGaConfig
209
- ]);
210
- const value = (0, react.useMemo)(() => ({
211
- trackEvent,
212
- isReady,
213
- setSupplementalDefaultProps: (props) => setSupplementalDefaultProps(props)
214
- }), [
215
- trackEvent,
216
- isReady,
217
- setSupplementalDefaultProps
218
- ]);
219
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AmplitudeContext.Provider, {
220
- value,
221
- children
222
- });
223
- };
224
- const useAmplitude = () => {
225
- const context = (0, react.useContext)(AmplitudeContext);
226
- if (!context) throw new Error("useAmplitude must be used within AmplitudeProvider");
227
- return context;
228
- };
229
-
230
- //#endregion
231
- Object.defineProperty(exports, 'AmplitudeProvider', {
232
- enumerable: true,
233
- get: function () {
234
- return AmplitudeProvider;
235
- }
236
- });
237
- Object.defineProperty(exports, 'useAmplitude', {
238
- enumerable: true,
239
- get: function () {
240
- return useAmplitude;
241
- }
242
- });
243
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC1CV21YbGlNSS5janMiLCJuYW1lcyI6WyJBbXBsaXR1ZGVQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+IiwidXNlcklkQXRvbSIsImFtcGxpdHVkZUFwaUtleUF0b20iLCJkYXRhUmVzaWRlbmN5QXRvbSIsIm9yZ0FuYWx5dGljc0dvb2dsZUFuYWx5dGljc0NvbmZpZ0F0b20iLCJlbnZBdG9tIiwiY29udGV4dFNvdXJjZUF0b20iLCJpZGVudGlmeWluZ1ByZWZpeEF0b20iLCJ1c2VMb2NhbFN0b3JhZ2UiLCJ1c2VFbnZpdmVDb25maWciLCJ1c2VGZWF0dXJlRmxhZ1NlcnZpY2UiLCJSZWFjdCIsIkxvY2FsU3RvcmFnZUtleXMiLCJ2YWx1ZSIsIk9yZ1Nob3J0TmFtZSIsIkZlYXR1cmVHYXRlcyIsImVucmljaGVkRXZlbnQ6IEV2ZW50IiwiU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJTcGlmZnlFdmVudCIsImN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbiAgdXNlRWZmZWN0LFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IHsgY3JlYXRlSW5zdGFuY2UgfSBmcm9tIFwiQGFtcGxpdHVkZS9hbmFseXRpY3MtYnJvd3NlclwiO1xuaW1wb3J0IHtcbiAgRmVhdHVyZUdhdGVzLFxuICBPcmdTaG9ydE5hbWUsXG4gIExvY2FsU3RvcmFnZUtleXMsXG4gIFNwaWZmeUV2ZW50LFxuICBBbXBsaXR1ZGVDb250ZXh0VHlwZSxcbiAgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSxcbiAgVHJhY2tFdmVudFBhcmFtcyxcbn0gZnJvbSBcIkBlbnZpdmUtYWkvdHlwZXNcIjtcbmltcG9ydCB7XG4gIGFtcGxpdHVkZUFwaUtleUF0b20sXG4gIGNvbnRleHRTb3VyY2VBdG9tLFxuICBkYXRhUmVzaWRlbmN5QXRvbSxcbiAgaWRlbnRpZnlpbmdQcmVmaXhBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcbmltcG9ydCB7IHVzZUxvY2FsU3RvcmFnZSB9IGZyb20gXCJzcmMvY29udGV4dHMvbG9jYWxTdG9yYWdlQ29udGV4dFwiO1xuaW1wb3J0IHsgb3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvb3JnL29yZ0FuYWx5dGljc0NvbmZpZ1wiO1xuaW1wb3J0IHsgdXNlcklkQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvYXBwXCI7XG5pbXBvcnQgeyBlbnZBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnXCI7XG5pbXBvcnQgTG9nZ2VyIGZyb20gXCJzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXJcIjtcbmltcG9ydCB0eXBlIHtcbiAgQnJvd3NlckNsaWVudCxcbiAgRW5yaWNobWVudFBsdWdpbixcbiAgRXZlbnQsXG4gIFNlcnZlclpvbmVUeXBlLFxufSBmcm9tIFwiQGFtcGxpdHVkZS9hbmFseXRpY3MtdHlwZXNcIjtcbmltcG9ydCB7IHVzZUVudml2ZUNvbmZpZyB9IGZyb20gXCJzcmMvY29udGV4dHMvZW52aXZlQ29uZmlnQ29udGV4dC9lbnZpdmVDb25maWdDb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tIFwic3JjL2NvbnRleHRzL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dFwiO1xuaW1wb3J0IHsgRXZlbnRzRGlzcGF0Y2hlciB9IGZyb20gXCJzcmMvZXZlbnRzXCI7XG5cbmNvbnN0IEFtcGxpdHVkZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PEFtcGxpdHVkZUNvbnRleHRUeXBlIHwgbnVsbD4obnVsbCk7XG5cbmV4cG9ydCBjb25zdCBBbXBsaXR1ZGVQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHtcbiAgY2hpbGRyZW4sXG59KSA9PiB7XG4gIGNvbnN0IHVzZXJJZCA9IHVzZUF0b21WYWx1ZSh1c2VySWRBdG9tKTtcbiAgY29uc3QgYW1wbGl0dWRlQXBpS2V5ID0gdXNlQXRvbVZhbHVlKGFtcGxpdHVkZUFwaUtleUF0b20pO1xuICBjb25zdCBkYXRhUmVzaWRlbmN5ID0gdXNlQXRvbVZhbHVlKGRhdGFSZXNpZGVuY3lBdG9tKTtcbiAgY29uc3Qgb3JnR2FDb25maWcgPSB1c2VBdG9tVmFsdWUob3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnQXRvbSk7XG4gIGNvbnN0IGVudiA9IHVzZUF0b21WYWx1ZShlbnZBdG9tKTtcbiAgY29uc3QgY29udGV4dFNvdXJjZSA9IHVzZUF0b21WYWx1ZShjb250ZXh0U291cmNlQXRvbSk7XG4gIGNvbnN0IGlkZW50aWZ5aW5nUHJlZml4ID0gdXNlQXRvbVZhbHVlKGlkZW50aWZ5aW5nUHJlZml4QXRvbSk7XG4gIGNvbnN0IHsgZ2V0SXRlbSB9ID0gdXNlTG9jYWxTdG9yYWdlKCk7XG4gIGNvbnN0IHtcbiAgICBwdWJsaWNLZXksXG4gICAgZmVhdHVyZU92ZXJyaWRlcyxcbiAgICB2YXJpYW50VXJsT3ZlcnJpZGUsXG4gICAgdmFyaWFudEluZm9PdmVycmlkZSxcbiAgICBzaG93LFxuICAgIG9yZ1Nob3J0TmFtZSxcbiAgICBmZWF0dXJlR2F0ZXMsXG4gIH0gPSB1c2VFbnZpdmVDb25maWcoKTtcblxuICBjb25zdCB7IGZlYXR1cmVGbGFnU2VydmljZSB9ID0gdXNlRmVhdHVyZUZsYWdTZXJ2aWNlKCk7XG5cbiAgY29uc3QgW2FtcGxpdHVkZUNsaWVudCwgc2V0QW1wbGl0dWRlQ2xpZW50XSA9IFJlYWN0LnVzZVN0YXRlPFxuICAgIEJyb3dzZXJDbGllbnQgfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpO1xuICBjb25zdCBbc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLCBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHNdID1cbiAgICBSZWFjdC51c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30pO1xuXG4gIGNvbnN0IGlzUmVhZHkgPSBCb29sZWFuKFxuICAgIHVzZXJJZCAmJiBmZWF0dXJlRmxhZ1NlcnZpY2UgJiYgYW1wbGl0dWRlQXBpS2V5ICYmIHVzZXJJZFxuICApO1xuXG4gIGNvbnN0IGdldERlZmF1bHRUcmFja2luZ1Byb3BzID0gdXNlQ2FsbGJhY2soKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgICBjb25zdCBnYXRlc1Byb3BzID0gZmVhdHVyZUdhdGVzXG4gICAgICA/IGZlYXR1cmVHYXRlcy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgICBpZiAoY3Vyci5uYW1lICYmIGN1cnIudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbYGZlYXR1cmVfZ2F0ZS4ke2N1cnIubmFtZX1gXTogY3Vyci52YWx1ZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSlcbiAgICAgIDoge307XG4gICAgY29uc3QgZXhwZXJpbWVudFByb3BzID0ge307IC8vIE5vIGRpcmVjdCBlcXVpdmFsZW50IGZvciBleHBlcmltZW50cyBpbiBFbnZpdmVDb25maWcgeWV0XG5cbiAgICBjb25zdCBvcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMgPSB7XG4gICAgICAuLi5nYXRlc1Byb3BzLFxuICAgICAgLi4uZXhwZXJpbWVudFByb3BzLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzLFxuICAgICAgLi4uc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLFxuICAgICAgLy8gVE9ETzogb3JnX2lkIGlzIG5vdCBkaXJlY3RseSBhdmFpbGFibGUgaW4gRW52aXZlQ29uZmlnLiBOZWVkIHRvIGZpbmQgYSBuZXcgc291cmNlIG9yIGRlcml2ZSBpdC5cbiAgICAgIC8vIG9yZ19pZDogb3JnQ29uZmlnPy5vcmc/Lm9yZz8uaWQsXG4gICAgICBhcHBfaWQ6IFwiY29tbWVyY2UtY2hhdC1yZWFjdC1jb21wb25lbnRcIixcbiAgICAgIGNoYXRfaWQ6IGdldEl0ZW0oTG9jYWxTdG9yYWdlS2V5cy5DaGF0SWQpLFxuICAgICAgZW52OiBlbnYgfHwgXCJ1bmtub3duXCIsXG4gICAgICBhcHBfc291cmNlOiBjb250ZXh0U291cmNlLFxuICAgICAgXCJvcmcuc2hvcnRfbmFtZVwiOiBvcmdTaG9ydE5hbWUsXG4gICAgICBcInVzZXIuaWRcIjogdXNlcklkLFxuICAgICAgXCJjZHAudXNlcl9pZFwiOiBudWxsLFxuICAgICAgXCJjZHAucHJvdmlkZXJcIjogbnVsbCxcbiAgICAgIFwiZXZlbnQuc291cmNlXCI6IFwid2ViLWJyb3dzZXJcIixcbiAgICAgIFwiZXZlbnQudHlwZVwiOiBcInVzZXItYWN0aXZpdHlcIixcbiAgICAgIFwiZXZlbnQuaWRcIjogbnVsbCxcbiAgICAgIFwiZXZlbnQuY2hhbm5lbFwiOiBcIndlYlwiLFxuICAgICAgXCJldmVudC50aW1lc3RhbXBcIjogbnVsbCxcbiAgICB9O1xuICB9LCBbXG4gICAgZmVhdHVyZUdhdGVzLFxuICAgIHN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyxcbiAgICBlbnYsXG4gICAgY29udGV4dFNvdXJjZSxcbiAgICBvcmdTaG9ydE5hbWUsXG4gICAgdXNlcklkLFxuICBdKTtcblxuICBjb25zdCBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUsXG4gICAgICBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgXCJfXCIpO1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGV2ZW50UHJvcHMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgYWNjW2Ake3ByZWZpeH0uJHtrZXl9YF0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgY29uc3QgYW1wbGl0dWRlU2Vzc2lvblJlcGxheUluaXQgPSB1c2VDYWxsYmFjaygoKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNFbmFibGVkID0gQm9vbGVhbihcbiAgICAgIG9yZ1Nob3J0TmFtZSA9PT0gT3JnU2hvcnROYW1lLlVuaXF1ZVZpbnRhZ2UgJiZcbiAgICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5pc0NsaWVudFNlc3Npb25FbmFibGVkKCkgJiZcbiAgICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5pc0ZlYXR1cmVHYXRlRW5hYmxlZChcbiAgICAgICAgICBGZWF0dXJlR2F0ZXMuSXNOZXdGZWF0dXJlRW5hYmxlZFxuICAgICAgICApXG4gICAgKTtcbiAgICBjb25zdCBzYW1wbGVSYXRlID0gMTtcblxuICAgIHRyeSB7XG4gICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBbc3BpZmZ5LWFpXSBhbXBsaXR1ZGUgc2Vzc2lvbi1yZXBsYXkgaW5pdGlhbGl6aW5nIGlzRW5hYmxlZD0ke2lzRW5hYmxlZH0gc2FtcGxlUmF0ZT0ke3NhbXBsZVJhdGV9YFxuICAgICAgKTtcblxuICAgICAgaWYgKCFpc0VuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGlzRW5hYmxlZDtcbiAgICAgIH1cblxuICAgICAgLy8gYW1wbGl0dWRlSW5zdGFuY2UuYWRkKHNlc3Npb25SZXBsYXlQbHVnaW4oeyBzYW1wbGVSYXRlIH0pKTtcblxuICAgICAgcmV0dXJuIGlzRW5hYmxlZDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoXG4gICAgICAgIFwiW3NwaWZmeS1haV0gRXJyb3IgaW5pdGlhbGl6aW5nIGFtcGxpdHVkZSBzZXNzaW9uLXJlcGxheVwiLFxuICAgICAgICBlXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSwgW29yZ1Nob3J0TmFtZSwgZmVhdHVyZUZsYWdTZXJ2aWNlXSk7XG5cbiAgY29uc3QgZXZlbnRUcmFja2luZ0VucmljaG1lbnQgPSB1c2VNZW1vKCgpOiBFbnJpY2htZW50UGx1Z2luID0+IHtcbiAgICBjb25zdCBlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luID0ge1xuICAgICAgbmFtZTogXCJwYWdlLXZpZXctdHJhY2tpbmctZW5yaWNobWVudFwiLFxuICAgICAgdHlwZTogXCJlbnJpY2htZW50XCIsXG4gICAgICBzZXR1cDogYXN5bmMgKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGV2ZW50OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+ID0+IHtcbiAgICAgICAgbGV0IGVucmljaGVkRXZlbnQ6IEV2ZW50O1xuXG4gICAgICAgIGNvbnN0IGV2ZW50c1RvRW5yaWNoID0gW1xuICAgICAgICAgIFwiW0FtcGxpdHVkZV0gUGFnZSBWaWV3ZWRcIixcbiAgICAgICAgICBgW1NwaWZmeV0gJHtTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkJ1bmRsZUxvYWRlZH1gLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChldmVudHNUb0VucmljaC5pbmNsdWRlcyhldmVudC5ldmVudF90eXBlKSkge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICAgIGlmIChwdWJsaWNLZXkpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbXCJnbG9iYWxQcm9wZXJ0aWVzLnB1YmxpY0tleVwiXSA9IHB1YmxpY0tleTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZlYXR1cmVPdmVycmlkZXMpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGZlYXR1cmVPdmVycmlkZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzW2BnbG9iYWxQcm9wZXJ0aWVzLmZlYXR1cmVPdmVycmlkZXMuJHtrZXl9YF0gPVxuICAgICAgICAgICAgICAgIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhcmlhbnRVcmxPdmVycmlkZSkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1tcImdsb2JhbFByb3BlcnRpZXMudmFyaWFudFVybE92ZXJyaWRlXCJdID1cbiAgICAgICAgICAgICAgdmFyaWFudFVybE92ZXJyaWRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFyaWFudEluZm9PdmVycmlkZSkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1tcImdsb2JhbFByb3BlcnRpZXMudmFyaWFudEluZm9PdmVycmlkZVwiXSA9XG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHZhcmlhbnRJbmZvT3ZlcnJpZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2hvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzW1wiZ2xvYmFsUHJvcGVydGllcy5zaG93XCJdID0gU3RyaW5nKHNob3cpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVuYWJsZWRGZWF0dXJlcyA9IGZlYXR1cmVGbGFnU2VydmljZSEuZ2V0RmVhdHVyZUZsYWdzKCk7XG4gICAgICAgICAgY29uc3QgZW5hYmxlZEZlYXR1cmVzUHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgZW5hYmxlZEZlYXR1cmVzXG4gICAgICAgICAgKS5yZWR1Y2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgW2BlbmFibGVkRmVhdHVyZXMuJHtrZXl9YF06IGAke3ZhbHVlfWAsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHRpbWluZ1Byb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICBcInRpbWluZy5lbnJpY2hlZF9hdF9tc1wiOiB3aW5kb3cucGVyZm9ybWFuY2U/Lm5vdygpLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBlbnJpY2hlZEV2ZW50ID0ge1xuICAgICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgICBldmVudF9wcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIC4uLmV2ZW50LmV2ZW50X3Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKCksXG4gICAgICAgICAgICAgIC4uLmdsb2JhbFByb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmVuYWJsZWRGZWF0dXJlc1Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLnRpbWluZ1Byb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgRXZlbnRzRGlzcGF0Y2hlci5kaXNwYXRjaChTcGlmZnlFdmVudC5BTVBMSVRVREVfRVZFTlQsIGVucmljaGVkRXZlbnQpO1xuXG4gICAgICAgIHJldHVybiBlbnJpY2hlZEV2ZW50O1xuICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBlbnJpY2htZW50O1xuICB9LCBbXG4gICAgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMsXG4gICAgZmVhdHVyZUZsYWdTZXJ2aWNlLFxuICAgIHB1YmxpY0tleSxcbiAgICBmZWF0dXJlT3ZlcnJpZGVzLFxuICAgIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgICB2YXJpYW50SW5mb092ZXJyaWRlLFxuICAgIHNob3csXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzUmVhZHkgJiYgIWFtcGxpdHVkZUNsaWVudCkge1xuICAgICAgY29uc3QgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlOiBCcm93c2VyQ2xpZW50ID0gY3JlYXRlSW5zdGFuY2UoKTtcbiAgICAgIGNvbnN0IGlzU2Vzc2lvbnNFbmFibGVkID0gYW1wbGl0dWRlU2Vzc2lvblJlcGxheUluaXQoKTtcbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5hZGQoZXZlbnRUcmFja2luZ0VucmljaG1lbnQpO1xuICAgICAgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlLmluaXQoYW1wbGl0dWRlQXBpS2V5ISwgdXNlcklkISwge1xuICAgICAgICBzZXJ2ZXJab25lOiBkYXRhUmVzaWRlbmN5IGFzIFNlcnZlclpvbmVUeXBlLFxuICAgICAgICB0cmFja2luZ09wdGlvbnM6IHtcbiAgICAgICAgICBpcEFkZHJlc3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGF1dG9jYXB0dXJlOiB7XG4gICAgICAgICAgYXR0cmlidXRpb246IHRydWUsXG4gICAgICAgICAgcGFnZVZpZXdzOiB7XG4gICAgICAgICAgICB0cmFja0hpc3RvcnlDaGFuZ2VzOiBcInBhdGhPbmx5XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXNzaW9uczogaXNTZXNzaW9uc0VuYWJsZWQsXG4gICAgICAgICAgZm9ybUludGVyYWN0aW9uczogZmFsc2UsXG4gICAgICAgICAgZmlsZURvd25sb2FkczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHNldEFtcGxpdHVkZUNsaWVudChjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UpO1xuICAgIH1cbiAgfSwgW1xuICAgIGlzUmVhZHksXG4gICAgYW1wbGl0dWRlQ2xpZW50LFxuICAgIGFtcGxpdHVkZUFwaUtleSxcbiAgICB1c2VySWQsXG4gICAgZGF0YVJlc2lkZW5jeSxcbiAgICBhbXBsaXR1ZGVTZXNzaW9uUmVwbGF5SW5pdCxcbiAgICBldmVudFRyYWNraW5nRW5yaWNobWVudCxcbiAgXSk7XG5cbiAgY29uc3QgdHJhY2tFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7XG4gICAgICBldmVudE5hbWUsXG4gICAgICBldmVudFByb3BzLFxuICAgICAgZXZlbnRHcm91cHMsXG4gICAgICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzID0gZmFsc2UsXG4gICAgfTogVHJhY2tFdmVudFBhcmFtcyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFwiU3VibWl0dGluZyBldmVudFwiLCBldmVudE5hbWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVjb3JhdGVkRXZlbnROYW1lID0gYFtTcGlmZnldICR7ZXZlbnROYW1lfWA7XG5cbiAgICAgICAgaWYgKCFhbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgICAgICBMb2dnZXIubG9nV2FybihcImFtcGxpdHVkZSBjbGllbnQgdW5kZWZpbmVkXCIsIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBlbmNvZGVyLmVuY29kZShldmVudERhdGEpO1xuICAgICAgICAvLyBjYWxjdWxhdGUgYSBoYXNoIG9mIHRoZSBldmVudCBwcm9wZXJ0aWVzIHRvIHVzZSBhcyB0aGUgaW5zZXJ0X2lkIHNvIHRoYXQgZHVwbGljYXRlIGV2ZW50c1xuICAgICAgICAvLyBhcmUgYXV0b21hdGljYWxseSBkcm9wcGVkIGJ5IEFtcGxpdHVkZVxuICAgICAgICBjb25zdCBoYXNoQnVmZmVyID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJTSEEtMjU2XCIsIGRhdGEpO1xuICAgICAgICBjb25zdCBoYXNoQXJyYXkgPSBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGhhc2hCdWZmZXIpKTtcbiAgICAgICAgY29uc3QgY3VycmVudEluc2VydElkID0gaGFzaEFycmF5XG4gICAgICAgICAgLm1hcCgoYikgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKVxuICAgICAgICAgIC5qb2luKFwiXCIpO1xuXG4gICAgICAgIExvZ2dlci5sb2dEZWJ1ZyhgYW1wbGl0dWRlIHRyYWNraW5nICR7ZGVjb3JhdGVkRXZlbnROYW1lfWAsIG51bGwsIHtcbiAgICAgICAgICBldmVudF9uYW1lOiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAgcHJvcHM6IGV2ZW50UHJvcHMsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFtcGxpdHVkZUNsaWVudC50cmFjayhcbiAgICAgICAgICBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoKSxcbiAgICAgICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICAgICAgICAuLi4oZXZlbnRQcm9wc1xuICAgICAgICAgICAgICA/IGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyhldmVudE5hbWUsIGV2ZW50UHJvcHMpXG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZXZlbnRHcm91cHMsXG4gICAgICAgICAgICBpbnNlcnRfaWQ6IGN1cnJlbnRJbnNlcnRJZCxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgJiYgb3JnR2FDb25maWcpIHtcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgaW4gd2luZG93RGF0YUxheWVyU2VydmljZSBvciBjb250ZXh0IGFsdGVybmF0aXZlIGFuZCBob29rIGl0IHVwIGhlcmVcbiAgICAgICAgICBMb2dnZXIubG9nRGVidWcoXCJbc3BpZmZ5LWFpXSBHQSB0cmFja2luZ1wiLCBkZWNvcmF0ZWRFdmVudE5hbWUpO1xuICAgICAgICAgIGlmICh3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgICAgICAgICAod2luZG93LmRhdGFMYXllciBhcyBhbnlbXSkucHVzaCh7XG4gICAgICAgICAgICAgIGV2ZW50OiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAgICAgIGV2ZW50UHJvcHM6IGV2ZW50UHJvcHMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBMb2dnZXIubG9nRXJyb3IoXCJbc3BpZmZ5LWFpXSBFcnJvciB0cmFja2luZyBldmVudFwiLCBlcnIsIHtcbiAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhbXBsaXR1ZGVDbGllbnQsXG4gICAgICBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcyxcbiAgICAgIGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyxcbiAgICAgIG9yZ0dhQ29uZmlnLFxuICAgIF1cbiAgKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHRyYWNrRXZlbnQsXG4gICAgICBpc1JlYWR5LFxuICAgICAgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiAocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PlxuICAgICAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMocHJvcHMpLFxuICAgIH0pLFxuICAgIFt0cmFja0V2ZW50LCBpc1JlYWR5LCBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHNdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8QW1wbGl0dWRlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQW1wbGl0dWRlQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VBbXBsaXR1ZGUgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEFtcGxpdHVkZUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBbXBsaXR1ZGUgbXVzdCBiZSB1c2VkIHdpdGhpbiBBbXBsaXR1ZGVQcm92aWRlclwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUNBLE1BQU0sNENBQThELEtBQUs7QUFFekUsTUFBYUEscUJBQThELEVBQ3pFLGVBQ0k7Q0FDSixNQUFNLGlDQUFzQkMsdUJBQVc7Q0FDdkMsTUFBTSwwQ0FBK0JDLHlDQUFvQjtDQUN6RCxNQUFNLHdDQUE2QkMsdUNBQWtCO0NBQ3JELE1BQU0sc0NBQTJCQyxrREFBc0M7Q0FDdkUsTUFBTSw4QkFBbUJDLDZCQUFRO0NBQ2pDLE1BQU0sd0NBQTZCQyx1Q0FBa0I7QUFDM0IseUJBQWFDLDJDQUFzQjtDQUM3RCxNQUFNLEVBQUUsWUFBWUMsNkNBQWlCO0NBQ3JDLE1BQU0sRUFDSixXQUNBLGtCQUNBLG9CQUNBLHFCQUNBLE1BQ0EsY0FDQSxpQkFDRUMsNkNBQWlCO0NBRXJCLE1BQU0sRUFBRSx1QkFBdUJDLHlEQUF1QjtDQUV0RCxNQUFNLENBQUMsaUJBQWlCLHNCQUFzQkMsY0FBTSxTQUVsRCxPQUFVO0NBQ1osTUFBTSxDQUFDLDBCQUEwQiwrQkFDL0JBLGNBQU0sU0FBa0MsRUFBRSxDQUFDO0NBRTdDLE1BQU0sVUFBVSxRQUNkLFVBQVUsc0JBQXNCLG1CQUFtQixPQUNwRDtDQUVELE1BQU0sdURBQXFFO0VBQ3pFLE1BQU0sYUFBYSxlQUNmLGFBQWEsUUFBaUMsS0FBSyxTQUFTO0FBQzFELE9BQUksS0FBSyxRQUFRLEtBQUssU0FBUyxLQUM3QixRQUFPO0lBQUUsR0FBRztLQUFNLGdCQUFnQixLQUFLLFNBQVMsS0FBSztJQUFPO0FBRTlELFVBQU87S0FDTixFQUFFLENBQUMsR0FDTixFQUFFO0VBQ04sTUFBTSxrQkFBa0IsRUFBRTtBQU8xQixTQUFPO0dBSkwsR0FBRztHQUNILEdBQUc7R0FLSCxHQUFHO0dBR0gsUUFBUTtHQUNSLFNBQVMsUUFBUUMsOEJBQWlCLE9BQU87R0FDekMsS0FBSyxPQUFPO0dBQ1osWUFBWTtHQUNaLGtCQUFrQjtHQUNsQixXQUFXO0dBQ1gsZUFBZTtHQUNmLGdCQUFnQjtHQUNoQixnQkFBZ0I7R0FDaEIsY0FBYztHQUNkLFlBQVk7R0FDWixpQkFBaUI7R0FDakIsbUJBQW1CO0dBQ3BCO0lBQ0E7RUFDRDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRCxDQUFDO0NBRUYsTUFBTSx5REFFRixXQUNBLGVBQzRCO0VBQzVCLE1BQU0sU0FBUyxVQUFVLGFBQWEsQ0FBQyxRQUFRLFFBQVEsSUFBSTtBQUMzRCxTQUFPLE9BQU8sUUFBUSxXQUFXLENBQUMsUUFBUSxLQUFLLENBQUMsS0FBS0MsYUFBVztBQUM5RCxPQUFJLEdBQUcsT0FBTyxHQUFHLFNBQVNBO0FBQzFCLFVBQU87S0FDTixFQUFFLENBQTRCO0lBRW5DLEVBQUUsQ0FDSDtDQUVELE1BQU0sMERBQXdEO0VBQzVELE1BQU0sWUFBWSxRQUNoQixpQkFBaUJDLDBCQUFhLGlCQUM1QixvQkFBb0Isd0JBQXdCLElBQzVDLG9CQUFvQixxQkFDbEJDLDBCQUFhLG9CQUNkLENBQ0o7RUFDRCxNQUFNLGFBQWE7QUFFbkIsTUFBSTtBQUNGLGlDQUFPLFNBQ0wsK0RBQStELFVBQVUsY0FBYyxhQUN4RjtBQUVELE9BQUksQ0FBQyxVQUNILFFBQU87QUFLVCxVQUFPO1dBQ0EsR0FBRztBQUNWLGlDQUFPLFNBQ0wsMkRBQ0EsRUFDRDtBQUNELFVBQU87O0lBRVIsQ0FBQyxjQUFjLG1CQUFtQixDQUFDO0NBRXRDLE1BQU0sbURBQTBEO0FBdUU5RCxTQXRFcUM7R0FDbkMsTUFBTTtHQUNOLE1BQU07R0FDTixPQUFPLFlBQVk7R0FDbkIsU0FBUyxPQUFPLFVBQWlDO0lBQy9DLElBQUlDO0FBT0osUUFMdUIsQ0FDckIsMkJBQ0EsWUFBWUMsb0NBQXVCLGVBQ3BDLENBRWtCLFNBQVMsTUFBTSxXQUFXLEVBQUU7S0FDN0MsTUFBTUMsbUJBQTJDLEVBQUU7QUFFbkQsU0FBSSxVQUNGLGtCQUFpQixnQ0FBZ0M7QUFFbkQsU0FBSSxpQkFDRixRQUFPLFFBQVEsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUtMLGFBQVc7QUFDekQsdUJBQWlCLHFDQUFxQyxTQUNwRCxPQUFPQSxRQUFNO09BQ2Y7QUFFSixTQUFJLG1CQUNGLGtCQUFpQix5Q0FDZjtBQUVKLFNBQUksb0JBQ0Ysa0JBQWlCLDBDQUNmLEtBQUssVUFBVSxvQkFBb0I7QUFFdkMsU0FBSSxRQUFRLEtBQ1Ysa0JBQWlCLDJCQUEyQixPQUFPLEtBQUs7S0FHMUQsTUFBTSxrQkFBa0IsbUJBQW9CLGlCQUFpQjtLQUM3RCxNQUFNLDRCQUE0QixPQUFPLFFBQ3ZDLGdCQUNELENBQUMsUUFDQyxLQUFLLENBQUMsS0FBS0EsY0FBWTtNQUN0QixHQUFHO09BQ0YsbUJBQW1CLFFBQVEsR0FBR0E7TUFDaEMsR0FDRCxFQUFFLENBQ0g7S0FFRCxNQUFNLG1CQUFtQixFQUN2Qix5QkFBeUIsT0FBTyxhQUFhLEtBQUssRUFDbkQ7QUFFRCxxQkFBZ0I7TUFDZCxHQUFHO01BQ0gsa0JBQWtCO09BQ2hCLEdBQUcsTUFBTTtPQUNULEdBQUcseUJBQXlCO09BQzVCLEdBQUc7T0FDSCxHQUFHO09BQ0gsR0FBRztPQUNKO01BQ0Y7VUFFRCxpQkFBZ0I7QUFHbEIsb0NBQWlCLFNBQVNNLHlCQUFZLGlCQUFpQixjQUFjO0FBRXJFLFdBQU87O0dBRVY7SUFFQTtFQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0QsQ0FBQztBQUVGLDRCQUFnQjtBQUNkLE1BQUksV0FBVyxDQUFDLGlCQUFpQjtHQUMvQixNQUFNQyw4RUFBMEQ7R0FDaEUsTUFBTSxvQkFBb0IsNEJBQTRCO0FBQ3RELDRCQUF5QixJQUFJLHdCQUF3QjtBQUNyRCw0QkFBeUIsS0FBSyxpQkFBa0IsUUFBUztJQUN2RCxZQUFZO0lBQ1osaUJBQWlCLEVBQ2YsV0FBVyxNQUNaO0lBQ0QsYUFBYTtLQUNYLGFBQWE7S0FDYixXQUFXLEVBQ1QscUJBQXFCLFlBQ3RCO0tBQ0QsVUFBVTtLQUNWLGtCQUFrQjtLQUNsQixlQUFlO0tBQ2hCO0lBQ0YsQ0FBQztBQUNGLHNCQUFtQix5QkFBeUI7O0lBRTdDO0VBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRCxDQUFDO0NBRUYsTUFBTSxvQ0FDSixPQUFPLEVBQ0wsV0FDQSxZQUNBLGFBQ0EsNEJBQTRCLFlBQ1M7QUFDckMsZ0NBQU8sU0FBUyxvQkFBb0IsVUFBVTtBQUM5QyxNQUFJO0dBQ0YsTUFBTSxxQkFBcUIsWUFBWTtBQUV2QyxPQUFJLENBQUMsaUJBQWlCO0FBQ3BCLGtDQUFPLFFBQVEsOEJBQThCLFFBQVcsRUFDdEQsWUFBWSxvQkFDYixDQUFDO0FBQ0Y7O0dBR0YsTUFBTSxZQUFZLEtBQUssVUFBVTtJQUMvQjtJQUNBO0lBQ0EsNkJBQVksSUFBSSxNQUFNLEVBQUMsYUFBYTtJQUNyQyxDQUFDO0dBRUYsTUFBTSxPQURVLElBQUksYUFBYSxDQUNaLE9BQU8sVUFBVTtHQUd0QyxNQUFNLGFBQWEsTUFBTSxPQUFPLE9BQU8sT0FBTyxXQUFXLEtBQUs7R0FFOUQsTUFBTSxrQkFEWSxNQUFNLEtBQUssSUFBSSxXQUFXLFdBQVcsQ0FBQyxDQUVyRCxLQUFLLE1BQU0sRUFBRSxTQUFTLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQzNDLEtBQUssR0FBRztBQUVYLGlDQUFPLFNBQVMsc0JBQXNCLHNCQUFzQixNQUFNO0lBQ2hFLFlBQVk7SUFDWixPQUFPO0lBQ1IsQ0FBQztBQUVGLG1CQUFnQixNQUNkLG9CQUNBO0lBQ0UsR0FBRyx5QkFBeUI7SUFDNUIsR0FBRztJQUNILEdBQUksYUFDQSwrQkFBK0IsV0FBVyxXQUFXLEdBQ3JELEVBQUU7SUFDUCxFQUNEO0lBQ0UsR0FBRztJQUNILFdBQVc7SUFDWixDQUNGO0FBRUQsT0FBSSw2QkFBNkIsYUFBYTtBQUU1QyxrQ0FBTyxTQUFTLDJCQUEyQixtQkFBbUI7QUFDOUQsUUFBSSxPQUFPLFVBQ1QsQ0FBQyxPQUFPLFVBQW9CLEtBQUs7S0FDL0IsT0FBTztLQUNLO0tBQ2IsQ0FBQzs7V0FHQyxLQUFLO0FBQ1osaUNBQU8sU0FBUyxvQ0FBb0MsS0FBSztJQUN2RDtJQUNBO0lBQ0QsQ0FBQzs7SUFHTjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0QsQ0FDRjtDQUVELE1BQU0sa0NBQ0c7RUFDTDtFQUNBO0VBQ0EsOEJBQThCLFVBQzVCLDRCQUE0QixNQUFNO0VBQ3JDLEdBQ0Q7RUFBQztFQUFZO0VBQVM7RUFBNEIsQ0FDbkQ7QUFFRCxRQUNFLDJDQUFDLGlCQUFpQjtFQUFnQjtFQUMvQjtHQUN5Qjs7QUFJaEMsTUFBYSxxQkFBcUI7Q0FDaEMsTUFBTSxnQ0FBcUIsaUJBQWlCO0FBQzVDLEtBQUksQ0FBQyxRQUNILE9BQU0sSUFBSSxNQUFNLHFEQUFxRDtBQUV2RSxRQUFPIn0=
@@ -1,227 +0,0 @@
1
- import { EventsDispatcher } from "./events-CXiS1aTc.js";
2
- import { FeatureGates, LocalStorageKeys, OrgShortName, SpiffyEvent, SpiffyMetricsEventName } from "./dist-C38adNK1.js";
3
- import { logger_default } from "./logger-BMVdhQOV.js";
4
- import { amplitudeApiKeyAtom, contextSourceAtom, dataResidencyAtom, envAtom, identifyingPrefixAtom } from "./enviveConfig-Ciq4ASoV.js";
5
- import { orgAnalyticsGoogleAnalyticsConfigAtom } from "./org-15F128Ah.js";
6
- import { userIdAtom } from "./app-Bs2KxG_8.js";
7
- import { useLocalStorage } from "./localStorageContext-BFwvuEcf.js";
8
- import { useEnviveConfig } from "./enviveConfigContext-CCjJUmwp.js";
9
- import { useFeatureFlagService } from "./featureFlagServiceContext-Cvp7NlpC.js";
10
- import React, { createContext, useCallback, useContext, useEffect, useMemo } from "react";
11
- import { useAtomValue } from "jotai";
12
- import { jsx } from "react/jsx-runtime";
13
- import { createInstance } from "@amplitude/analytics-browser";
14
-
15
- //#region src/contexts/amplitudeContext/amplitudeContext.tsx
16
- const AmplitudeContext = createContext(null);
17
- const AmplitudeProvider = ({ children }) => {
18
- const userId = useAtomValue(userIdAtom);
19
- const amplitudeApiKey = useAtomValue(amplitudeApiKeyAtom);
20
- const dataResidency = useAtomValue(dataResidencyAtom);
21
- const orgGaConfig = useAtomValue(orgAnalyticsGoogleAnalyticsConfigAtom);
22
- const env = useAtomValue(envAtom);
23
- const contextSource = useAtomValue(contextSourceAtom);
24
- useAtomValue(identifyingPrefixAtom);
25
- const { getItem } = useLocalStorage();
26
- const { publicKey, featureOverrides, variantUrlOverride, variantInfoOverride, show, orgShortName, featureGates } = useEnviveConfig();
27
- const { featureFlagService } = useFeatureFlagService();
28
- const [amplitudeClient, setAmplitudeClient] = React.useState(void 0);
29
- const [supplementalDefaultProps, setSupplementalDefaultProps] = React.useState({});
30
- const isReady = Boolean(userId && featureFlagService && amplitudeApiKey && userId);
31
- const getDefaultTrackingProps = useCallback(() => {
32
- const gatesProps = featureGates ? featureGates.reduce((acc, curr) => {
33
- if (curr.name && curr.value != null) return {
34
- ...acc,
35
- [`feature_gate.${curr.name}`]: curr.value
36
- };
37
- return acc;
38
- }, {}) : {};
39
- const experimentProps = {};
40
- return {
41
- ...gatesProps,
42
- ...experimentProps,
43
- ...supplementalDefaultProps,
44
- app_id: "commerce-chat-react-component",
45
- chat_id: getItem(LocalStorageKeys.ChatId),
46
- env: env || "unknown",
47
- app_source: contextSource,
48
- "org.short_name": orgShortName,
49
- "user.id": userId,
50
- "cdp.user_id": null,
51
- "cdp.provider": null,
52
- "event.source": "web-browser",
53
- "event.type": "user-activity",
54
- "event.id": null,
55
- "event.channel": "web",
56
- "event.timestamp": null
57
- };
58
- }, [
59
- featureGates,
60
- supplementalDefaultProps,
61
- env,
62
- contextSource,
63
- orgShortName,
64
- userId
65
- ]);
66
- const eventPropsToPrefixedEventProps = useCallback((eventName, eventProps) => {
67
- const prefix = eventName.toLowerCase().replace(/\s+/g, "_");
68
- return Object.entries(eventProps).reduce((acc, [key, value$1]) => {
69
- acc[`${prefix}.${key}`] = value$1;
70
- return acc;
71
- }, {});
72
- }, []);
73
- const amplitudeSessionReplayInit = useCallback(() => {
74
- const isEnabled = Boolean(orgShortName === OrgShortName.UniqueVintage && featureFlagService?.isClientSessionEnabled() && featureFlagService?.isFeatureGateEnabled(FeatureGates.IsNewFeatureEnabled));
75
- const sampleRate = 1;
76
- try {
77
- logger_default.logDebug(`[spiffy-ai] amplitude session-replay initializing isEnabled=${isEnabled} sampleRate=${sampleRate}`);
78
- if (!isEnabled) return isEnabled;
79
- return isEnabled;
80
- } catch (e) {
81
- logger_default.logError("[spiffy-ai] Error initializing amplitude session-replay", e);
82
- return false;
83
- }
84
- }, [orgShortName, featureFlagService]);
85
- const eventTrackingEnrichment = useMemo(() => {
86
- return {
87
- name: "page-view-tracking-enrichment",
88
- type: "enrichment",
89
- setup: async () => void 0,
90
- execute: async (event) => {
91
- let enrichedEvent;
92
- if (["[Amplitude] Page Viewed", `[Spiffy] ${SpiffyMetricsEventName.BundleLoaded}`].includes(event.event_type)) {
93
- const globalProperties = {};
94
- if (publicKey) globalProperties["globalProperties.publicKey"] = publicKey;
95
- if (featureOverrides) Object.entries(featureOverrides).forEach(([key, value$1]) => {
96
- globalProperties[`globalProperties.featureOverrides.${key}`] = String(value$1);
97
- });
98
- if (variantUrlOverride) globalProperties["globalProperties.variantUrlOverride"] = variantUrlOverride;
99
- if (variantInfoOverride) globalProperties["globalProperties.variantInfoOverride"] = JSON.stringify(variantInfoOverride);
100
- if (show != null) globalProperties["globalProperties.show"] = String(show);
101
- const enabledFeatures = featureFlagService.getFeatureFlags();
102
- const enabledFeaturesProperties = Object.entries(enabledFeatures).reduce((acc, [key, value$1]) => ({
103
- ...acc,
104
- [`enabledFeatures.${key}`]: `${value$1}`
105
- }), {});
106
- const timingProperties = { "timing.enriched_at_ms": window.performance?.now() };
107
- enrichedEvent = {
108
- ...event,
109
- event_properties: {
110
- ...event.event_properties,
111
- ...getDefaultTrackingProps(),
112
- ...globalProperties,
113
- ...enabledFeaturesProperties,
114
- ...timingProperties
115
- }
116
- };
117
- } else enrichedEvent = event;
118
- EventsDispatcher.dispatch(SpiffyEvent.AMPLITUDE_EVENT, enrichedEvent);
119
- return enrichedEvent;
120
- }
121
- };
122
- }, [
123
- getDefaultTrackingProps,
124
- featureFlagService,
125
- publicKey,
126
- featureOverrides,
127
- variantUrlOverride,
128
- variantInfoOverride,
129
- show
130
- ]);
131
- useEffect(() => {
132
- if (isReady && !amplitudeClient) {
133
- const currentAmplitudeInstance = createInstance();
134
- const isSessionsEnabled = amplitudeSessionReplayInit();
135
- currentAmplitudeInstance.add(eventTrackingEnrichment);
136
- currentAmplitudeInstance.init(amplitudeApiKey, userId, {
137
- serverZone: dataResidency,
138
- trackingOptions: { ipAddress: true },
139
- autocapture: {
140
- attribution: true,
141
- pageViews: { trackHistoryChanges: "pathOnly" },
142
- sessions: isSessionsEnabled,
143
- formInteractions: false,
144
- fileDownloads: false
145
- }
146
- });
147
- setAmplitudeClient(currentAmplitudeInstance);
148
- }
149
- }, [
150
- isReady,
151
- amplitudeClient,
152
- amplitudeApiKey,
153
- userId,
154
- dataResidency,
155
- amplitudeSessionReplayInit,
156
- eventTrackingEnrichment
157
- ]);
158
- const trackEvent = useCallback(async ({ eventName, eventProps, eventGroups, alsoSendToGoogleAnalytics = false }) => {
159
- logger_default.logDebug("Submitting event", eventName);
160
- try {
161
- const decoratedEventName = `[Spiffy] ${eventName}`;
162
- if (!amplitudeClient) {
163
- logger_default.logWarn("amplitude client undefined", void 0, { event_name: decoratedEventName });
164
- return;
165
- }
166
- const eventData = JSON.stringify({
167
- eventName,
168
- eventProps,
169
- created_at: (/* @__PURE__ */ new Date()).toISOString()
170
- });
171
- const data = new TextEncoder().encode(eventData);
172
- const hashBuffer = await crypto.subtle.digest("SHA-256", data);
173
- const currentInsertId = Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, "0")).join("");
174
- logger_default.logDebug(`amplitude tracking ${decoratedEventName}`, null, {
175
- event_name: decoratedEventName,
176
- props: eventProps
177
- });
178
- amplitudeClient.track(decoratedEventName, {
179
- ...getDefaultTrackingProps(),
180
- ...eventProps,
181
- ...eventProps ? eventPropsToPrefixedEventProps(eventName, eventProps) : {}
182
- }, {
183
- ...eventGroups,
184
- insert_id: currentInsertId
185
- });
186
- if (alsoSendToGoogleAnalytics && orgGaConfig) {
187
- logger_default.logDebug("[spiffy-ai] GA tracking", decoratedEventName);
188
- if (window.dataLayer) window.dataLayer.push({
189
- event: decoratedEventName,
190
- eventProps
191
- });
192
- }
193
- } catch (err) {
194
- logger_default.logError("[spiffy-ai] Error tracking event", err, {
195
- eventName,
196
- eventProps
197
- });
198
- }
199
- }, [
200
- amplitudeClient,
201
- getDefaultTrackingProps,
202
- eventPropsToPrefixedEventProps,
203
- orgGaConfig
204
- ]);
205
- const value = useMemo(() => ({
206
- trackEvent,
207
- isReady,
208
- setSupplementalDefaultProps: (props) => setSupplementalDefaultProps(props)
209
- }), [
210
- trackEvent,
211
- isReady,
212
- setSupplementalDefaultProps
213
- ]);
214
- return /* @__PURE__ */ jsx(AmplitudeContext.Provider, {
215
- value,
216
- children
217
- });
218
- };
219
- const useAmplitude = () => {
220
- const context = useContext(AmplitudeContext);
221
- if (!context) throw new Error("useAmplitude must be used within AmplitudeProvider");
222
- return context;
223
- };
224
-
225
- //#endregion
226
- export { AmplitudeProvider, useAmplitude };
227
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC1Cak1sZzVSVi5qcyIsIm5hbWVzIjpbIkFtcGxpdHVkZVByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4iLCJ2YWx1ZSIsImVucmljaGVkRXZlbnQ6IEV2ZW50IiwiZ2xvYmFsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiIsImN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbiAgdXNlRWZmZWN0LFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IHsgY3JlYXRlSW5zdGFuY2UgfSBmcm9tIFwiQGFtcGxpdHVkZS9hbmFseXRpY3MtYnJvd3NlclwiO1xuaW1wb3J0IHtcbiAgRmVhdHVyZUdhdGVzLFxuICBPcmdTaG9ydE5hbWUsXG4gIExvY2FsU3RvcmFnZUtleXMsXG4gIFNwaWZmeUV2ZW50LFxuICBBbXBsaXR1ZGVDb250ZXh0VHlwZSxcbiAgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSxcbiAgVHJhY2tFdmVudFBhcmFtcyxcbn0gZnJvbSBcIkBlbnZpdmUtYWkvdHlwZXNcIjtcbmltcG9ydCB7XG4gIGFtcGxpdHVkZUFwaUtleUF0b20sXG4gIGNvbnRleHRTb3VyY2VBdG9tLFxuICBkYXRhUmVzaWRlbmN5QXRvbSxcbiAgaWRlbnRpZnlpbmdQcmVmaXhBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcbmltcG9ydCB7IHVzZUxvY2FsU3RvcmFnZSB9IGZyb20gXCJzcmMvY29udGV4dHMvbG9jYWxTdG9yYWdlQ29udGV4dFwiO1xuaW1wb3J0IHsgb3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvb3JnL29yZ0FuYWx5dGljc0NvbmZpZ1wiO1xuaW1wb3J0IHsgdXNlcklkQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvYXBwXCI7XG5pbXBvcnQgeyBlbnZBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnXCI7XG5pbXBvcnQgTG9nZ2VyIGZyb20gXCJzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXJcIjtcbmltcG9ydCB0eXBlIHtcbiAgQnJvd3NlckNsaWVudCxcbiAgRW5yaWNobWVudFBsdWdpbixcbiAgRXZlbnQsXG4gIFNlcnZlclpvbmVUeXBlLFxufSBmcm9tIFwiQGFtcGxpdHVkZS9hbmFseXRpY3MtdHlwZXNcIjtcbmltcG9ydCB7IHVzZUVudml2ZUNvbmZpZyB9IGZyb20gXCJzcmMvY29udGV4dHMvZW52aXZlQ29uZmlnQ29udGV4dC9lbnZpdmVDb25maWdDb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tIFwic3JjL2NvbnRleHRzL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dFwiO1xuaW1wb3J0IHsgRXZlbnRzRGlzcGF0Y2hlciB9IGZyb20gXCJzcmMvZXZlbnRzXCI7XG5cbmNvbnN0IEFtcGxpdHVkZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PEFtcGxpdHVkZUNvbnRleHRUeXBlIHwgbnVsbD4obnVsbCk7XG5cbmV4cG9ydCBjb25zdCBBbXBsaXR1ZGVQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHtcbiAgY2hpbGRyZW4sXG59KSA9PiB7XG4gIGNvbnN0IHVzZXJJZCA9IHVzZUF0b21WYWx1ZSh1c2VySWRBdG9tKTtcbiAgY29uc3QgYW1wbGl0dWRlQXBpS2V5ID0gdXNlQXRvbVZhbHVlKGFtcGxpdHVkZUFwaUtleUF0b20pO1xuICBjb25zdCBkYXRhUmVzaWRlbmN5ID0gdXNlQXRvbVZhbHVlKGRhdGFSZXNpZGVuY3lBdG9tKTtcbiAgY29uc3Qgb3JnR2FDb25maWcgPSB1c2VBdG9tVmFsdWUob3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnQXRvbSk7XG4gIGNvbnN0IGVudiA9IHVzZUF0b21WYWx1ZShlbnZBdG9tKTtcbiAgY29uc3QgY29udGV4dFNvdXJjZSA9IHVzZUF0b21WYWx1ZShjb250ZXh0U291cmNlQXRvbSk7XG4gIGNvbnN0IGlkZW50aWZ5aW5nUHJlZml4ID0gdXNlQXRvbVZhbHVlKGlkZW50aWZ5aW5nUHJlZml4QXRvbSk7XG4gIGNvbnN0IHsgZ2V0SXRlbSB9ID0gdXNlTG9jYWxTdG9yYWdlKCk7XG4gIGNvbnN0IHtcbiAgICBwdWJsaWNLZXksXG4gICAgZmVhdHVyZU92ZXJyaWRlcyxcbiAgICB2YXJpYW50VXJsT3ZlcnJpZGUsXG4gICAgdmFyaWFudEluZm9PdmVycmlkZSxcbiAgICBzaG93LFxuICAgIG9yZ1Nob3J0TmFtZSxcbiAgICBmZWF0dXJlR2F0ZXMsXG4gIH0gPSB1c2VFbnZpdmVDb25maWcoKTtcblxuICBjb25zdCB7IGZlYXR1cmVGbGFnU2VydmljZSB9ID0gdXNlRmVhdHVyZUZsYWdTZXJ2aWNlKCk7XG5cbiAgY29uc3QgW2FtcGxpdHVkZUNsaWVudCwgc2V0QW1wbGl0dWRlQ2xpZW50XSA9IFJlYWN0LnVzZVN0YXRlPFxuICAgIEJyb3dzZXJDbGllbnQgfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpO1xuICBjb25zdCBbc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLCBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHNdID1cbiAgICBSZWFjdC51c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30pO1xuXG4gIGNvbnN0IGlzUmVhZHkgPSBCb29sZWFuKFxuICAgIHVzZXJJZCAmJiBmZWF0dXJlRmxhZ1NlcnZpY2UgJiYgYW1wbGl0dWRlQXBpS2V5ICYmIHVzZXJJZFxuICApO1xuXG4gIGNvbnN0IGdldERlZmF1bHRUcmFja2luZ1Byb3BzID0gdXNlQ2FsbGJhY2soKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgICBjb25zdCBnYXRlc1Byb3BzID0gZmVhdHVyZUdhdGVzXG4gICAgICA/IGZlYXR1cmVHYXRlcy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgICBpZiAoY3Vyci5uYW1lICYmIGN1cnIudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbYGZlYXR1cmVfZ2F0ZS4ke2N1cnIubmFtZX1gXTogY3Vyci52YWx1ZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSlcbiAgICAgIDoge307XG4gICAgY29uc3QgZXhwZXJpbWVudFByb3BzID0ge307IC8vIE5vIGRpcmVjdCBlcXVpdmFsZW50IGZvciBleHBlcmltZW50cyBpbiBFbnZpdmVDb25maWcgeWV0XG5cbiAgICBjb25zdCBvcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMgPSB7XG4gICAgICAuLi5nYXRlc1Byb3BzLFxuICAgICAgLi4uZXhwZXJpbWVudFByb3BzLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzLFxuICAgICAgLi4uc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLFxuICAgICAgLy8gVE9ETzogb3JnX2lkIGlzIG5vdCBkaXJlY3RseSBhdmFpbGFibGUgaW4gRW52aXZlQ29uZmlnLiBOZWVkIHRvIGZpbmQgYSBuZXcgc291cmNlIG9yIGRlcml2ZSBpdC5cbiAgICAgIC8vIG9yZ19pZDogb3JnQ29uZmlnPy5vcmc/Lm9yZz8uaWQsXG4gICAgICBhcHBfaWQ6IFwiY29tbWVyY2UtY2hhdC1yZWFjdC1jb21wb25lbnRcIixcbiAgICAgIGNoYXRfaWQ6IGdldEl0ZW0oTG9jYWxTdG9yYWdlS2V5cy5DaGF0SWQpLFxuICAgICAgZW52OiBlbnYgfHwgXCJ1bmtub3duXCIsXG4gICAgICBhcHBfc291cmNlOiBjb250ZXh0U291cmNlLFxuICAgICAgXCJvcmcuc2hvcnRfbmFtZVwiOiBvcmdTaG9ydE5hbWUsXG4gICAgICBcInVzZXIuaWRcIjogdXNlcklkLFxuICAgICAgXCJjZHAudXNlcl9pZFwiOiBudWxsLFxuICAgICAgXCJjZHAucHJvdmlkZXJcIjogbnVsbCxcbiAgICAgIFwiZXZlbnQuc291cmNlXCI6IFwid2ViLWJyb3dzZXJcIixcbiAgICAgIFwiZXZlbnQudHlwZVwiOiBcInVzZXItYWN0aXZpdHlcIixcbiAgICAgIFwiZXZlbnQuaWRcIjogbnVsbCxcbiAgICAgIFwiZXZlbnQuY2hhbm5lbFwiOiBcIndlYlwiLFxuICAgICAgXCJldmVudC50aW1lc3RhbXBcIjogbnVsbCxcbiAgICB9O1xuICB9LCBbXG4gICAgZmVhdHVyZUdhdGVzLFxuICAgIHN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyxcbiAgICBlbnYsXG4gICAgY29udGV4dFNvdXJjZSxcbiAgICBvcmdTaG9ydE5hbWUsXG4gICAgdXNlcklkLFxuICBdKTtcblxuICBjb25zdCBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUsXG4gICAgICBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgXCJfXCIpO1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGV2ZW50UHJvcHMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgYWNjW2Ake3ByZWZpeH0uJHtrZXl9YF0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG5cbiAgY29uc3QgYW1wbGl0dWRlU2Vzc2lvblJlcGxheUluaXQgPSB1c2VDYWxsYmFjaygoKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNFbmFibGVkID0gQm9vbGVhbihcbiAgICAgIG9yZ1Nob3J0TmFtZSA9PT0gT3JnU2hvcnROYW1lLlVuaXF1ZVZpbnRhZ2UgJiZcbiAgICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5pc0NsaWVudFNlc3Npb25FbmFibGVkKCkgJiZcbiAgICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5pc0ZlYXR1cmVHYXRlRW5hYmxlZChcbiAgICAgICAgICBGZWF0dXJlR2F0ZXMuSXNOZXdGZWF0dXJlRW5hYmxlZFxuICAgICAgICApXG4gICAgKTtcbiAgICBjb25zdCBzYW1wbGVSYXRlID0gMTtcblxuICAgIHRyeSB7XG4gICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBbc3BpZmZ5LWFpXSBhbXBsaXR1ZGUgc2Vzc2lvbi1yZXBsYXkgaW5pdGlhbGl6aW5nIGlzRW5hYmxlZD0ke2lzRW5hYmxlZH0gc2FtcGxlUmF0ZT0ke3NhbXBsZVJhdGV9YFxuICAgICAgKTtcblxuICAgICAgaWYgKCFpc0VuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGlzRW5hYmxlZDtcbiAgICAgIH1cblxuICAgICAgLy8gYW1wbGl0dWRlSW5zdGFuY2UuYWRkKHNlc3Npb25SZXBsYXlQbHVnaW4oeyBzYW1wbGVSYXRlIH0pKTtcblxuICAgICAgcmV0dXJuIGlzRW5hYmxlZDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoXG4gICAgICAgIFwiW3NwaWZmeS1haV0gRXJyb3IgaW5pdGlhbGl6aW5nIGFtcGxpdHVkZSBzZXNzaW9uLXJlcGxheVwiLFxuICAgICAgICBlXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSwgW29yZ1Nob3J0TmFtZSwgZmVhdHVyZUZsYWdTZXJ2aWNlXSk7XG5cbiAgY29uc3QgZXZlbnRUcmFja2luZ0VucmljaG1lbnQgPSB1c2VNZW1vKCgpOiBFbnJpY2htZW50UGx1Z2luID0+IHtcbiAgICBjb25zdCBlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luID0ge1xuICAgICAgbmFtZTogXCJwYWdlLXZpZXctdHJhY2tpbmctZW5yaWNobWVudFwiLFxuICAgICAgdHlwZTogXCJlbnJpY2htZW50XCIsXG4gICAgICBzZXR1cDogYXN5bmMgKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGV2ZW50OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+ID0+IHtcbiAgICAgICAgbGV0IGVucmljaGVkRXZlbnQ6IEV2ZW50O1xuXG4gICAgICAgIGNvbnN0IGV2ZW50c1RvRW5yaWNoID0gW1xuICAgICAgICAgIFwiW0FtcGxpdHVkZV0gUGFnZSBWaWV3ZWRcIixcbiAgICAgICAgICBgW1NwaWZmeV0gJHtTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkJ1bmRsZUxvYWRlZH1gLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChldmVudHNUb0VucmljaC5pbmNsdWRlcyhldmVudC5ldmVudF90eXBlKSkge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICAgIGlmIChwdWJsaWNLZXkpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbXCJnbG9iYWxQcm9wZXJ0aWVzLnB1YmxpY0tleVwiXSA9IHB1YmxpY0tleTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZlYXR1cmVPdmVycmlkZXMpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGZlYXR1cmVPdmVycmlkZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzW2BnbG9iYWxQcm9wZXJ0aWVzLmZlYXR1cmVPdmVycmlkZXMuJHtrZXl9YF0gPVxuICAgICAgICAgICAgICAgIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhcmlhbnRVcmxPdmVycmlkZSkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1tcImdsb2JhbFByb3BlcnRpZXMudmFyaWFudFVybE92ZXJyaWRlXCJdID1cbiAgICAgICAgICAgICAgdmFyaWFudFVybE92ZXJyaWRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFyaWFudEluZm9PdmVycmlkZSkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1tcImdsb2JhbFByb3BlcnRpZXMudmFyaWFudEluZm9PdmVycmlkZVwiXSA9XG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHZhcmlhbnRJbmZvT3ZlcnJpZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2hvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzW1wiZ2xvYmFsUHJvcGVydGllcy5zaG93XCJdID0gU3RyaW5nKHNob3cpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVuYWJsZWRGZWF0dXJlcyA9IGZlYXR1cmVGbGFnU2VydmljZSEuZ2V0RmVhdHVyZUZsYWdzKCk7XG4gICAgICAgICAgY29uc3QgZW5hYmxlZEZlYXR1cmVzUHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgZW5hYmxlZEZlYXR1cmVzXG4gICAgICAgICAgKS5yZWR1Y2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgW2BlbmFibGVkRmVhdHVyZXMuJHtrZXl9YF06IGAke3ZhbHVlfWAsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHRpbWluZ1Byb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICBcInRpbWluZy5lbnJpY2hlZF9hdF9tc1wiOiB3aW5kb3cucGVyZm9ybWFuY2U/Lm5vdygpLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBlbnJpY2hlZEV2ZW50ID0ge1xuICAgICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgICBldmVudF9wcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIC4uLmV2ZW50LmV2ZW50X3Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKCksXG4gICAgICAgICAgICAgIC4uLmdsb2JhbFByb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmVuYWJsZWRGZWF0dXJlc1Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLnRpbWluZ1Byb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgRXZlbnRzRGlzcGF0Y2hlci5kaXNwYXRjaChTcGlmZnlFdmVudC5BTVBMSVRVREVfRVZFTlQsIGVucmljaGVkRXZlbnQpO1xuXG4gICAgICAgIHJldHVybiBlbnJpY2hlZEV2ZW50O1xuICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBlbnJpY2htZW50O1xuICB9LCBbXG4gICAgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMsXG4gICAgZmVhdHVyZUZsYWdTZXJ2aWNlLFxuICAgIHB1YmxpY0tleSxcbiAgICBmZWF0dXJlT3ZlcnJpZGVzLFxuICAgIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgICB2YXJpYW50SW5mb092ZXJyaWRlLFxuICAgIHNob3csXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzUmVhZHkgJiYgIWFtcGxpdHVkZUNsaWVudCkge1xuICAgICAgY29uc3QgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlOiBCcm93c2VyQ2xpZW50ID0gY3JlYXRlSW5zdGFuY2UoKTtcbiAgICAgIGNvbnN0IGlzU2Vzc2lvbnNFbmFibGVkID0gYW1wbGl0dWRlU2Vzc2lvblJlcGxheUluaXQoKTtcbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5hZGQoZXZlbnRUcmFja2luZ0VucmljaG1lbnQpO1xuICAgICAgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlLmluaXQoYW1wbGl0dWRlQXBpS2V5ISwgdXNlcklkISwge1xuICAgICAgICBzZXJ2ZXJab25lOiBkYXRhUmVzaWRlbmN5IGFzIFNlcnZlclpvbmVUeXBlLFxuICAgICAgICB0cmFja2luZ09wdGlvbnM6IHtcbiAgICAgICAgICBpcEFkZHJlc3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGF1dG9jYXB0dXJlOiB7XG4gICAgICAgICAgYXR0cmlidXRpb246IHRydWUsXG4gICAgICAgICAgcGFnZVZpZXdzOiB7XG4gICAgICAgICAgICB0cmFja0hpc3RvcnlDaGFuZ2VzOiBcInBhdGhPbmx5XCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXNzaW9uczogaXNTZXNzaW9uc0VuYWJsZWQsXG4gICAgICAgICAgZm9ybUludGVyYWN0aW9uczogZmFsc2UsXG4gICAgICAgICAgZmlsZURvd25sb2FkczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHNldEFtcGxpdHVkZUNsaWVudChjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UpO1xuICAgIH1cbiAgfSwgW1xuICAgIGlzUmVhZHksXG4gICAgYW1wbGl0dWRlQ2xpZW50LFxuICAgIGFtcGxpdHVkZUFwaUtleSxcbiAgICB1c2VySWQsXG4gICAgZGF0YVJlc2lkZW5jeSxcbiAgICBhbXBsaXR1ZGVTZXNzaW9uUmVwbGF5SW5pdCxcbiAgICBldmVudFRyYWNraW5nRW5yaWNobWVudCxcbiAgXSk7XG5cbiAgY29uc3QgdHJhY2tFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7XG4gICAgICBldmVudE5hbWUsXG4gICAgICBldmVudFByb3BzLFxuICAgICAgZXZlbnRHcm91cHMsXG4gICAgICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzID0gZmFsc2UsXG4gICAgfTogVHJhY2tFdmVudFBhcmFtcyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFwiU3VibWl0dGluZyBldmVudFwiLCBldmVudE5hbWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVjb3JhdGVkRXZlbnROYW1lID0gYFtTcGlmZnldICR7ZXZlbnROYW1lfWA7XG5cbiAgICAgICAgaWYgKCFhbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgICAgICBMb2dnZXIubG9nV2FybihcImFtcGxpdHVkZSBjbGllbnQgdW5kZWZpbmVkXCIsIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBlbmNvZGVyLmVuY29kZShldmVudERhdGEpO1xuICAgICAgICAvLyBjYWxjdWxhdGUgYSBoYXNoIG9mIHRoZSBldmVudCBwcm9wZXJ0aWVzIHRvIHVzZSBhcyB0aGUgaW5zZXJ0X2lkIHNvIHRoYXQgZHVwbGljYXRlIGV2ZW50c1xuICAgICAgICAvLyBhcmUgYXV0b21hdGljYWxseSBkcm9wcGVkIGJ5IEFtcGxpdHVkZVxuICAgICAgICBjb25zdCBoYXNoQnVmZmVyID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJTSEEtMjU2XCIsIGRhdGEpO1xuICAgICAgICBjb25zdCBoYXNoQXJyYXkgPSBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGhhc2hCdWZmZXIpKTtcbiAgICAgICAgY29uc3QgY3VycmVudEluc2VydElkID0gaGFzaEFycmF5XG4gICAgICAgICAgLm1hcCgoYikgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgXCIwXCIpKVxuICAgICAgICAgIC5qb2luKFwiXCIpO1xuXG4gICAgICAgIExvZ2dlci5sb2dEZWJ1ZyhgYW1wbGl0dWRlIHRyYWNraW5nICR7ZGVjb3JhdGVkRXZlbnROYW1lfWAsIG51bGwsIHtcbiAgICAgICAgICBldmVudF9uYW1lOiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAgcHJvcHM6IGV2ZW50UHJvcHMsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFtcGxpdHVkZUNsaWVudC50cmFjayhcbiAgICAgICAgICBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoKSxcbiAgICAgICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICAgICAgICAuLi4oZXZlbnRQcm9wc1xuICAgICAgICAgICAgICA/IGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyhldmVudE5hbWUsIGV2ZW50UHJvcHMpXG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZXZlbnRHcm91cHMsXG4gICAgICAgICAgICBpbnNlcnRfaWQ6IGN1cnJlbnRJbnNlcnRJZCxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgJiYgb3JnR2FDb25maWcpIHtcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgaW4gd2luZG93RGF0YUxheWVyU2VydmljZSBvciBjb250ZXh0IGFsdGVybmF0aXZlIGFuZCBob29rIGl0IHVwIGhlcmVcbiAgICAgICAgICBMb2dnZXIubG9nRGVidWcoXCJbc3BpZmZ5LWFpXSBHQSB0cmFja2luZ1wiLCBkZWNvcmF0ZWRFdmVudE5hbWUpO1xuICAgICAgICAgIGlmICh3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgICAgICAgICAod2luZG93LmRhdGFMYXllciBhcyBhbnlbXSkucHVzaCh7XG4gICAgICAgICAgICAgIGV2ZW50OiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAgICAgIGV2ZW50UHJvcHM6IGV2ZW50UHJvcHMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBMb2dnZXIubG9nRXJyb3IoXCJbc3BpZmZ5LWFpXSBFcnJvciB0cmFja2luZyBldmVudFwiLCBlcnIsIHtcbiAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhbXBsaXR1ZGVDbGllbnQsXG4gICAgICBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcyxcbiAgICAgIGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyxcbiAgICAgIG9yZ0dhQ29uZmlnLFxuICAgIF1cbiAgKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHRyYWNrRXZlbnQsXG4gICAgICBpc1JlYWR5LFxuICAgICAgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiAocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PlxuICAgICAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMocHJvcHMpLFxuICAgIH0pLFxuICAgIFt0cmFja0V2ZW50LCBpc1JlYWR5LCBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHNdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8QW1wbGl0dWRlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQW1wbGl0dWRlQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VBbXBsaXR1ZGUgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEFtcGxpdHVkZUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBbXBsaXR1ZGUgbXVzdCBiZSB1c2VkIHdpdGhpbiBBbXBsaXR1ZGVQcm92aWRlclwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQXVDQSxNQUFNLG1CQUFtQixjQUEyQyxLQUFLO0FBRXpFLE1BQWFBLHFCQUE4RCxFQUN6RSxlQUNJO0NBQ0osTUFBTSxTQUFTLGFBQWEsV0FBVztDQUN2QyxNQUFNLGtCQUFrQixhQUFhLG9CQUFvQjtDQUN6RCxNQUFNLGdCQUFnQixhQUFhLGtCQUFrQjtDQUNyRCxNQUFNLGNBQWMsYUFBYSxzQ0FBc0M7Q0FDdkUsTUFBTSxNQUFNLGFBQWEsUUFBUTtDQUNqQyxNQUFNLGdCQUFnQixhQUFhLGtCQUFrQjtBQUMzQixjQUFhLHNCQUFzQjtDQUM3RCxNQUFNLEVBQUUsWUFBWSxpQkFBaUI7Q0FDckMsTUFBTSxFQUNKLFdBQ0Esa0JBQ0Esb0JBQ0EscUJBQ0EsTUFDQSxjQUNBLGlCQUNFLGlCQUFpQjtDQUVyQixNQUFNLEVBQUUsdUJBQXVCLHVCQUF1QjtDQUV0RCxNQUFNLENBQUMs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
@@ -1,38 +0,0 @@
1
- import { cdnUrlAtom } from "./enviveConfig-Ciq4ASoV.js";
2
- import React, { createContext, useCallback, useContext, useMemo } from "react";
3
- import { useAtomValue } from "jotai";
4
- import { jsx } from "react/jsx-runtime";
5
-
6
- //#region src/contexts/cdnContext/cdnContext.tsx
7
- const CdnContext = createContext(null);
8
- const CdnProvider = ({ children }) => {
9
- const cdnUrl = useAtomValue(cdnUrlAtom) || "https://cdn.spiffy.ai/other";
10
- const getCdnBasePath = useCallback(() => {
11
- return cdnUrl;
12
- }, [cdnUrl]);
13
- const getAssetURL = useCallback((assetName, orgShortName) => {
14
- return `${getCdnBasePath()}/assets/${orgShortName}/${assetName}`;
15
- }, [getCdnBasePath]);
16
- const value = useMemo(() => ({
17
- cdnUrl,
18
- getCdnBasePath,
19
- getAssetURL
20
- }), [
21
- cdnUrl,
22
- getCdnBasePath,
23
- getAssetURL
24
- ]);
25
- return /* @__PURE__ */ jsx(CdnContext.Provider, {
26
- value,
27
- children
28
- });
29
- };
30
- const useCdn = () => {
31
- const context = useContext(CdnContext);
32
- if (!context) throw new Error("useCdn must be used within a CdnProvider");
33
- return context;
34
- };
35
-
36
- //#endregion
37
- export { CdnProvider, useCdn };
38
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuQ29udGV4dC1DSjJCTkxBRC5qcyIsIm5hbWVzIjpbIkNkblByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4iXSwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dHMvY2RuQ29udGV4dC9jZG5Db250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VBdG9tVmFsdWUgfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBjZG5VcmxBdG9tIH0gZnJvbSAnLi4vLi4vYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZyc7XG5pbXBvcnQgeyBDZG5Db250ZXh0VHlwZSB9IGZyb20gJ0BlbnZpdmUtYWkvdHlwZXMnO1xuXG5jb25zdCBDZG5Db250ZXh0ID0gY3JlYXRlQ29udGV4dDxDZG5Db250ZXh0VHlwZSB8IG51bGw+KG51bGwpO1xuXG5leHBvcnQgY29uc3QgQ2RuUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgY2RuVXJsQXRvbVZhbHVlID0gdXNlQXRvbVZhbHVlKGNkblVybEF0b20pO1xuICBjb25zdCBjZG5VcmwgPSBjZG5VcmxBdG9tVmFsdWUgfHwgJ2h0dHBzOi8vY2RuLnNwaWZmeS5haS9vdGhlcic7XG5cbiAgY29uc3QgZ2V0Q2RuQmFzZVBhdGggPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgcmV0dXJuIGNkblVybDtcbiAgfSwgW2NkblVybF0pO1xuXG4gIGNvbnN0IGdldEFzc2V0VVJMID0gdXNlQ2FsbGJhY2soXG4gICAgKGFzc2V0TmFtZTogc3RyaW5nLCBvcmdTaG9ydE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGAke2dldENkbkJhc2VQYXRoKCl9L2Fzc2V0cy8ke29yZ1Nob3J0TmFtZX0vJHthc3NldE5hbWV9YDtcbiAgICB9LFxuICAgIFtnZXRDZG5CYXNlUGF0aF0sXG4gICk7XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBjZG5VcmwsXG4gICAgICBnZXRDZG5CYXNlUGF0aCxcbiAgICAgIGdldEFzc2V0VVJMLFxuICAgIH0pLFxuICAgIFtjZG5VcmwsIGdldENkbkJhc2VQYXRoLCBnZXRBc3NldFVSTF0sXG4gICk7XG5cbiAgcmV0dXJuIDxDZG5Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvQ2RuQ29udGV4dC5Qcm92aWRlcj47XG59O1xuXG5leHBvcnQgY29uc3QgdXNlQ2RuID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChDZG5Db250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VDZG4gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIENkblByb3ZpZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQSxNQUFNLGFBQWEsY0FBcUMsS0FBSztBQUU3RCxNQUFhQSxlQUF3RCxFQUFFLGVBQWU7Q0FFcEYsTUFBTSxTQURrQixhQUFhLFdBQVcsSUFDZDtDQUVsQyxNQUFNLGlCQUFpQixrQkFBa0I7QUFDdkMsU0FBTztJQUNOLENBQUMsT0FBTyxDQUFDO0NBRVosTUFBTSxjQUFjLGFBQ2pCLFdBQW1CLGlCQUF5QjtBQUMzQyxTQUFPLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxhQUFhLEdBQUc7SUFFdkQsQ0FBQyxlQUFlLENBQ2pCO0NBRUQsTUFBTSxRQUFRLGVBQ0w7RUFDTDtFQUNBO0VBQ0E7RUFDRCxHQUNEO0VBQUM7RUFBUTtFQUFnQjtFQUFZLENBQ3RDO0FBRUQsUUFBTyxvQkFBQyxXQUFXO0VBQWdCO0VBQVE7R0FBK0I7O0FBRzVFLE1BQWEsZUFBZTtDQUMxQixNQUFNLFVBQVUsV0FBVyxXQUFXO0FBQ3RDLEtBQUksQ0FBQyxRQUNILE9BQU0sSUFBSSxNQUFNLDJDQUEyQztBQUU3RCxRQUFPIn0=
@@ -1,53 +0,0 @@
1
- const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_enviveConfig = require('./enviveConfig-Dp80h9yu.cjs');
3
- let react = require("react");
4
- react = require_chunk.__toESM(react);
5
- let jotai = require("jotai");
6
- jotai = require_chunk.__toESM(jotai);
7
- let react_jsx_runtime = require("react/jsx-runtime");
8
- react_jsx_runtime = require_chunk.__toESM(react_jsx_runtime);
9
-
10
- //#region src/contexts/cdnContext/cdnContext.tsx
11
- const CdnContext = (0, react.createContext)(null);
12
- const CdnProvider = ({ children }) => {
13
- const cdnUrl = (0, jotai.useAtomValue)(require_enviveConfig.cdnUrlAtom) || "https://cdn.spiffy.ai/other";
14
- const getCdnBasePath = (0, react.useCallback)(() => {
15
- return cdnUrl;
16
- }, [cdnUrl]);
17
- const getAssetURL = (0, react.useCallback)((assetName, orgShortName) => {
18
- return `${getCdnBasePath()}/assets/${orgShortName}/${assetName}`;
19
- }, [getCdnBasePath]);
20
- const value = (0, react.useMemo)(() => ({
21
- cdnUrl,
22
- getCdnBasePath,
23
- getAssetURL
24
- }), [
25
- cdnUrl,
26
- getCdnBasePath,
27
- getAssetURL
28
- ]);
29
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CdnContext.Provider, {
30
- value,
31
- children
32
- });
33
- };
34
- const useCdn = () => {
35
- const context = (0, react.useContext)(CdnContext);
36
- if (!context) throw new Error("useCdn must be used within a CdnProvider");
37
- return context;
38
- };
39
-
40
- //#endregion
41
- Object.defineProperty(exports, 'CdnProvider', {
42
- enumerable: true,
43
- get: function () {
44
- return CdnProvider;
45
- }
46
- });
47
- Object.defineProperty(exports, 'useCdn', {
48
- enumerable: true,
49
- get: function () {
50
- return useCdn;
51
- }
52
- });
53
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuQ29udGV4dC1sa0MtQUU2QS5janMiLCJuYW1lcyI6WyJDZG5Qcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+IiwiY2RuVXJsQXRvbSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0cy9jZG5Db250ZXh0L2NkbkNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IGNkblVybEF0b20gfSBmcm9tICcuLi8uLi9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnJztcbmltcG9ydCB7IENkbkNvbnRleHRUeXBlIH0gZnJvbSAnQGVudml2ZS1haS90eXBlcyc7XG5cbmNvbnN0IENkbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0PENkbkNvbnRleHRUeXBlIHwgbnVsbD4obnVsbCk7XG5cbmV4cG9ydCBjb25zdCBDZG5Qcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCBjZG5VcmxBdG9tVmFsdWUgPSB1c2VBdG9tVmFsdWUoY2RuVXJsQXRvbSk7XG4gIGNvbnN0IGNkblVybCA9IGNkblVybEF0b21WYWx1ZSB8fCAnaHR0cHM6Ly9jZG4uc3BpZmZ5LmFpL290aGVyJztcblxuICBjb25zdCBnZXRDZG5CYXNlUGF0aCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICByZXR1cm4gY2RuVXJsO1xuICB9LCBbY2RuVXJsXSk7XG5cbiAgY29uc3QgZ2V0QXNzZXRVUkwgPSB1c2VDYWxsYmFjayhcbiAgICAoYXNzZXROYW1lOiBzdHJpbmcsIG9yZ1Nob3J0TmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gYCR7Z2V0Q2RuQmFzZVBhdGgoKX0vYXNzZXRzLyR7b3JnU2hvcnROYW1lfS8ke2Fzc2V0TmFtZX1gO1xuICAgIH0sXG4gICAgW2dldENkbkJhc2VQYXRoXSxcbiAgKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGNkblVybCxcbiAgICAgIGdldENkbkJhc2VQYXRoLFxuICAgICAgZ2V0QXNzZXRVUkwsXG4gICAgfSksXG4gICAgW2NkblVybCwgZ2V0Q2RuQmFzZVBhdGgsIGdldEFzc2V0VVJMXSxcbiAgKTtcblxuICByZXR1cm4gPENkbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9DZG5Db250ZXh0LlByb3ZpZGVyPjtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VDZG4gPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KENkbkNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUNkbiBtdXN0IGJlIHVzZWQgd2l0aGluIGEgQ2RuUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFLQSxNQUFNLHNDQUFrRCxLQUFLO0FBRTdELE1BQWFBLGVBQXdELEVBQUUsZUFBZTtDQUVwRixNQUFNLGlDQUQrQkMsZ0NBQVcsSUFDZDtDQUVsQyxNQUFNLDhDQUFtQztBQUN2QyxTQUFPO0lBQ04sQ0FBQyxPQUFPLENBQUM7Q0FFWixNQUFNLHNDQUNILFdBQW1CLGlCQUF5QjtBQUMzQyxTQUFPLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxhQUFhLEdBQUc7SUFFdkQsQ0FBQyxlQUFlLENBQ2pCO0NBRUQsTUFBTSxrQ0FDRztFQUNMO0VBQ0E7RUFDQTtFQUNELEdBQ0Q7RUFBQztFQUFRO0VBQWdCO0VBQVksQ0FDdEM7QUFFRCxRQUFPLDJDQUFDLFdBQVc7RUFBZ0I7RUFBUTtHQUErQjs7QUFHNUUsTUFBYSxlQUFlO0NBQzFCLE1BQU0sZ0NBQXFCLFdBQVc7QUFDdEMsS0FBSSxDQUFDLFFBQ0gsT0FBTSxJQUFJLE1BQU0sMkNBQTJDO0FBRTdELFFBQU8ifQ==