@envive-ai/react-hooks 0.3.62 → 0.3.64

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 (105) hide show
  1. package/dist/application/models/featureGates.cjs +2 -1
  2. package/dist/application/models/featureGates.d.cts +2 -1
  3. package/dist/application/models/featureGates.d.ts +2 -1
  4. package/dist/application/models/featureGates.js +2 -1
  5. package/dist/application/utils/widgetTextRequestToApiRequest.cjs +1 -0
  6. package/dist/application/utils/widgetTextRequestToApiRequest.js +1 -1
  7. package/dist/atoms/app/variant.d.cts +6 -6
  8. package/dist/atoms/chat/chatState.d.cts +1 -1
  9. package/dist/atoms/chat/chatState.d.ts +19 -19
  10. package/dist/atoms/chat/form.d.cts +2 -2
  11. package/dist/atoms/chat/form.d.ts +2 -2
  12. package/dist/atoms/chat/index.d.cts +2 -2
  13. package/dist/atoms/chat/index.d.ts +3 -3
  14. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  15. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  16. package/dist/atoms/chat/messageQueue.d.cts +7 -7
  17. package/dist/atoms/chat/messageQueue.d.ts +6 -6
  18. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  19. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  20. package/dist/atoms/chat/renderedWidgetRefs.d.cts +3 -3
  21. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  22. package/dist/atoms/chat/replies.d.cts +3 -3
  23. package/dist/atoms/chat/replies.d.ts +3 -3
  24. package/dist/atoms/chat/suggestions.d.cts +3 -3
  25. package/dist/atoms/chat/suggestions.d.ts +2 -2
  26. package/dist/atoms/envive/enviveConfig.d.cts +13 -13
  27. package/dist/atoms/envive/enviveConfig.d.ts +14 -14
  28. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  29. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  30. package/dist/atoms/org/customerService.d.cts +6 -6
  31. package/dist/atoms/org/customerService.d.ts +6 -6
  32. package/dist/atoms/org/graphqlConfig.d.cts +4 -4
  33. package/dist/atoms/org/graphqlConfig.d.ts +4 -4
  34. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  35. package/dist/atoms/org/orgAnalyticsConfig.d.ts +4 -4
  36. package/dist/atoms/search/chatSearch.d.ts +17 -17
  37. package/dist/atoms/search/searchAPI.d.ts +13 -13
  38. package/dist/atoms/search/utils.d.ts +1 -1
  39. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  40. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  41. package/dist/contexts/types.d.cts +1 -1
  42. package/dist/contexts/types.d.ts +1 -1
  43. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  44. package/dist/hooks/Intersection/useIntersection.cjs +9 -2
  45. package/dist/hooks/Intersection/useIntersection.d.cts +2 -2
  46. package/dist/hooks/Intersection/useIntersection.d.ts +2 -2
  47. package/dist/hooks/Intersection/useIntersection.js +9 -2
  48. package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.cts +2 -2
  49. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +12 -3
  50. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.cts +2 -1
  51. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts +2 -1
  52. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +13 -4
  53. package/dist/hooks/WidgetLoadDiagnostics/index.cjs +4 -0
  54. package/dist/hooks/WidgetLoadDiagnostics/index.d.cts +2 -0
  55. package/dist/hooks/WidgetLoadDiagnostics/index.d.ts +2 -0
  56. package/dist/hooks/WidgetLoadDiagnostics/index.js +3 -0
  57. package/dist/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.cjs +122 -0
  58. package/dist/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.d.cts +48 -0
  59. package/dist/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.d.ts +48 -0
  60. package/dist/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.js +120 -0
  61. package/dist/services/amplitudeService/eventNames.cjs +2 -1
  62. package/dist/services/amplitudeService/eventNames.d.cts +2 -1
  63. package/dist/services/amplitudeService/eventNames.d.ts +2 -1
  64. package/dist/services/amplitudeService/eventNames.js +2 -1
  65. package/dist/services/enviveConfigService/enviveConfigService.cjs +49 -3
  66. package/dist/services/enviveConfigService/enviveConfigService.d.cts +16 -2
  67. package/dist/services/enviveConfigService/enviveConfigService.d.ts +16 -2
  68. package/dist/services/enviveConfigService/enviveConfigService.js +49 -3
  69. package/dist/services/enviveConfigService/fetchBootstrapConfig.cjs +102 -0
  70. package/dist/services/enviveConfigService/fetchBootstrapConfig.js +102 -0
  71. package/dist/services/enviveConfigService/fetchGraphQLConfig.cjs +2 -1
  72. package/dist/services/enviveConfigService/fetchGraphQLConfig.js +2 -2
  73. package/dist/services/ga4ProjectionService/ga4EventSchema.cjs +3 -2
  74. package/dist/services/ga4ProjectionService/ga4EventSchema.js +3 -2
  75. package/dist/services/hardcopyService/hardcopyService.cjs +31 -6
  76. package/dist/services/hardcopyService/hardcopyService.d.cts +5 -2
  77. package/dist/services/hardcopyService/hardcopyService.d.ts +5 -2
  78. package/dist/services/hardcopyService/hardcopyService.js +31 -7
  79. package/dist/services/hardcopyService/index.cjs +1 -0
  80. package/dist/services/hardcopyService/index.d.cts +2 -2
  81. package/dist/services/hardcopyService/index.d.ts +2 -2
  82. package/dist/services/hardcopyService/index.js +2 -2
  83. package/dist/services/urlResolverWarmupService/index.cjs +3 -3
  84. package/dist/services/urlResolverWarmupService/index.d.cts +8 -2
  85. package/dist/services/urlResolverWarmupService/index.d.ts +8 -2
  86. package/dist/services/urlResolverWarmupService/index.js +3 -3
  87. package/package.json +5 -1
  88. package/src/application/models/featureGates.ts +6 -0
  89. package/src/hooks/Intersection/useIntersection.ts +11 -0
  90. package/src/hooks/TrackComponentVisibleEvent/__tests__/useTrackComponentVisibleEvent.test.tsx +64 -0
  91. package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +23 -4
  92. package/src/hooks/WidgetLoadDiagnostics/__tests__/useWidgetLoadDiagnostics.test.ts +161 -0
  93. package/src/hooks/WidgetLoadDiagnostics/index.ts +5 -0
  94. package/src/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.ts +178 -0
  95. package/src/services/amplitudeService/eventNames.ts +4 -0
  96. package/src/services/enviveConfigService/__tests__/enviveConfigService.test.ts +226 -0
  97. package/src/services/enviveConfigService/__tests__/fetchBootstrapConfig.test.ts +271 -0
  98. package/src/services/enviveConfigService/enviveConfigService.ts +124 -5
  99. package/src/services/enviveConfigService/fetchBootstrapConfig.ts +276 -0
  100. package/src/services/enviveConfigService/fetchGraphQLConfig.ts +7 -4
  101. package/src/services/ga4ProjectionService/ga4EventSchema.ts +5 -0
  102. package/src/services/hardcopyService/__tests__/hardcopyService.test.ts +73 -3
  103. package/src/services/hardcopyService/hardcopyService.ts +55 -5
  104. package/src/services/urlResolverWarmupService/__tests__/urlResolverWarmupService.test.ts +55 -0
  105. package/src/services/urlResolverWarmupService/index.ts +18 -1
@@ -11,12 +11,15 @@ const isOnScreen = (node) => {
11
11
  if (rect.width <= 0 || rect.height <= 0) return false;
12
12
  return rect.top < window.innerHeight && rect.bottom > 0 && rect.left < window.innerWidth && rect.right > 0;
13
13
  };
14
- const useIntersection = (element, rootMargin, logContext) => {
14
+ const useIntersection = (element, rootMargin, logContext, onFallbackEngaged) => {
15
15
  const [isVisible, setIsVisible] = useState(false);
16
16
  const observerRef = useRef(null);
17
17
  const observedNodeRef = useRef(null);
18
18
  const logContextRef = useRef(logContext);
19
19
  logContextRef.current = logContext;
20
+ const onFallbackEngagedRef = useRef(onFallbackEngaged);
21
+ onFallbackEngagedRef.current = onFallbackEngaged;
22
+ const fallbackEngagedRef = useRef(false);
20
23
  useEffect(() => {
21
24
  const current = element?.current;
22
25
  if (!current) return;
@@ -39,6 +42,10 @@ const useIntersection = (element, rootMargin, logContext) => {
39
42
  ...logContextRef.current,
40
43
  fallback_interval_ms: VISIBILITY_FALLBACK_INTERVAL_MS
41
44
  });
45
+ if (!fallbackEngagedRef.current) {
46
+ fallbackEngagedRef.current = true;
47
+ onFallbackEngagedRef.current?.();
48
+ }
42
49
  setIsVisible(true);
43
50
  }
44
51
  };
@@ -72,4 +79,4 @@ const useIntersection = (element, rootMargin, logContext) => {
72
79
 
73
80
  //#endregion
74
81
  export { VISIBILITY_FALLBACK_GRACE_MS, VISIBILITY_FALLBACK_INTERVAL_MS, VISIBILITY_FOREGROUND_GRACE_MS, useIntersection };
75
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlSW50ZXJzZWN0aW9uLmpzIiwibmFtZXMiOlsiTG9nZ2VyIiwiaW50ZXJ2YWw6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IHVuZGVmaW5lZCIsImZvcmVncm91bmRDaGVjazogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvSW50ZXJzZWN0aW9uL3VzZUludGVyc2VjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcigndXNlSW50ZXJzZWN0aW9uJyk7XG5cbi8vIEhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIHRoZSBmYWxsYmFjaydzIEZJUlNUIHJlY29uY2lsZS4gTG9uZyBlbm91Z2ggdGhhdCBhIGhlYWx0aHlcbi8vIEludGVyc2VjdGlvbk9ic2VydmVyIGhhcyBkZWxpdmVyZWQgaXRzIGluaXRpYWwgY2FsbGJhY2sgKHNvIHdlIGRvbid0IGZhbHNlbHkgZmxhZyBhXG4vLyBub3JtYWxseS1sb2FkaW5nIHdpZGdldCksIHNob3J0IGVub3VnaCB0byBrZWVwIHRoZSB3b3JzdC1jYXNlIGJsYW5rIHdpbmRvdyBzbWFsbC5cbi8vIEV4cG9ydGVkIGZvciB0ZXN0cy5cbmV4cG9ydCBjb25zdCBWSVNJQklMSVRZX0ZBTExCQUNLX0dSQUNFX01TID0gMTAwMDtcblxuLy8gSG93IG9mdGVuIHRoZSBmYWxsYmFjayByZS1jaGVja3MgYWZ0ZXIgdGhlIGluaXRpYWwgZ3JhY2UuIEEgZ2VudWluZWx5IHN0dWNrIHdpZGdldFxuLy8gcmVjb3ZlcnMgd2l0aGluIGdyYWNlICsgb25lIGludGVydmFsICh+MS4zcykuIEV4cG9ydGVkIGZvciB0ZXN0cy5cbmV4cG9ydCBjb25zdCBWSVNJQklMSVRZX0ZBTExCQUNLX0lOVEVSVkFMX01TID0gMzAwO1xuXG4vLyBBZnRlciB0aGUgdGFiIHJldHVybnMgdG8gdGhlIGZvcmVncm91bmQsIGhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIHRoZSBmYXN0LXBhdGggcmVjb25jaWxlIOKAlFxuLy8gbG9uZyBlbm91Z2ggZm9yIGEgaGVhbHRoeSBvYnNlcnZlciB0byByZS1maXJlIG9uIGl0cyBvd24gKHNvIHdlIGRvbid0IGZhbHNlbHkgZmxhZyBpdCksXG4vLyBzaG9ydCBlbm91Z2ggdGhhdCByZWNvdmVyeSBpcyBuZWFyLWluc3RhbnQuIEV4cG9ydGVkIGZvciB0ZXN0cy5cbmV4cG9ydCBjb25zdCBWSVNJQklMSVRZX0ZPUkVHUk9VTkRfR1JBQ0VfTVMgPSAyMDA7XG5cbmNvbnN0IGlzT25TY3JlZW4gPSAobm9kZTogSFRNTEVsZW1lbnQpOiBib29sZWFuID0+IHtcbiAgY29uc3QgcmVjdCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIC8vIFJlcXVpcmUgcmVhbCBhcmVhOiBhbiBlbGVtZW50IHRoYXQgaGFzIG5vdCBsYWlkIG91dCB5ZXQgKGEgMMOXMCBpbmxpbmUgd3JhcHBlciBtaWQtbW91bnQpXG4gIC8vIG9yIGlzIGNvbGxhcHNlZCB0byB6ZXJvIGJ5IGFuIG92ZXJmbG93LWNsaXBwaW5nIGFuY2VzdG9yIGlzIG5vdCBzb21ldGhpbmcgdGhlIG9ic2VydmVyXG4gIC8vIHdyb25nbHkgbWlzc2VkIOKAlCBpdCBpcyBnZW51aW5lbHkgbm90IHZpc2libGUuIGRpc3BsYXk6bm9uZSBzdWJ0cmVlcyByZXBvcnQgYW4gYWxsLXplcm9cbiAgLy8gcmVjdCBhbmQgYXJlIGV4Y2x1ZGVkIGhlcmUgdG9vLlxuICBpZiAocmVjdC53aWR0aCA8PSAwIHx8IHJlY3QuaGVpZ2h0IDw9IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICByZWN0LnRvcCA8IHdpbmRvdy5pbm5lckhlaWdodCAmJlxuICAgIHJlY3QuYm90dG9tID4gMCAmJlxuICAgIHJlY3QubGVmdCA8IHdpbmRvdy5pbm5lcldpZHRoICYmXG4gICAgcmVjdC5yaWdodCA+IDBcbiAgKTtcbn07XG5cbi8vIGh0dHBzOi8vcmFzaWxiYWlkYXIubWVkaXVtLmNvbS90cmlnZ2VyLWV2ZW50LXdoZW4tZWxlbWVudC1lbnRlcnMtdmlld3BvcnQtdGhlLXJlYWN0LXdheS0xNjg1MDlkYTJlMjNcbmV4cG9ydCBjb25zdCB1c2VJbnRlcnNlY3Rpb24gPSAoXG4gIGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gIHJvb3RNYXJnaW46IHN0cmluZyxcbiAgbG9nQ29udGV4dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKSA9PiB7XG4gIGNvbnN0IFtpc1Zpc2libGUsIHNldElzVmlzaWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IG9ic2VydmVyUmVmID0gdXNlUmVmPEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IG9ic2VydmVkTm9kZVJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBsb2dDb250ZXh0UmVmID0gdXNlUmVmKGxvZ0NvbnRleHQpO1xuICBsb2dDb250ZXh0UmVmLmN1cnJlbnQgPSBsb2dDb250ZXh0O1xuXG4gIC8vIFJ1bnMgYWZ0ZXIgZXZlcnkgcmVuZGVyIHNvIGl0IGNhdGNoZXMgd2hlbiBlbGVtZW50LmN1cnJlbnQgdHJhbnNpdGlvbnMgZnJvbSBudWxsIHRvIGFcbiAgLy8gbW91bnRlZCBET00gbm9kZSwgQU5EIHdoZW4gdGhlIG5vZGUgdW5kZXIgdGhlIHJlZiBpcyByZXBsYWNlZC4gVGhlIHJlcGxhY2VtZW50IGNhc2UgaXNcbiAgLy8gbG9hZC1iZWFyaW5nOiBtb3VudCBjaHVybiAoZS5nLiB0aGUgc2hhZG93LXJvb3QgcG9ydGFsIHJlLWNyZWF0aW5nIHRoZSB3aWRnZXQgc3VidHJlZSlcbiAgLy8gY2FuIHN3YXAgdGhlIERPTSBub2RlIHdoaWxlIHRoaXMgaG9vayBpbnN0YW5jZSBzdXJ2aXZlcywgYW5kIGFuIG9ic2VydmVyIGxlZnQgb24gdGhlXG4gIC8vIGRldGFjaGVkIG9sZCBub2RlIG5ldmVyIGZpcmVzIGFnYWluIOKAlCB0aGUgd2lkZ2V0IHRoZW4gcmVhZHMgYXMgcGVybWFuZW50bHkgbm90LXZpc2libGVcbiAgLy8gYW5kIG5ldmVyIHN0YXJ0cyBsb2FkaW5nLiBCYWlscyBvbmNlIHRoZSBjdXJyZW50IG5vZGUgaXMgdGhlIG9uZSBiZWluZyBvYnNlcnZlZCxcbiAgLy8ga2VlcGluZyBwZXItcmVuZGVyIGNvc3QgTygxKS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50ID0gZWxlbWVudD8uY3VycmVudDtcbiAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG9ic2VydmVkTm9kZVJlZi5jdXJyZW50ID09PSBjdXJyZW50KSByZXR1cm47IC8vIGFscmVhZHkgb2JzZXJ2aW5nIHRoaXMgZXhhY3Qgbm9kZVxuXG4gICAgaWYgKG9ic2VydmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIE5vZGUgdW5kZXIgdGhlIHJlZiB3YXMgcmVwbGFjZWQg4oCUIGRyb3AgdGhlIG9ic2VydmVyIG9uIHRoZSBkZXRhY2hlZCBub2RlLlxuICAgICAgb2JzZXJ2ZXJSZWYuY3VycmVudC5kaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgICBzZXRJc1Zpc2libGUoZW50cnkuaXNJbnRlcnNlY3RpbmcpO1xuICAgICAgfSxcbiAgICAgIHsgcm9vdE1hcmdpbiB9LFxuICAgICk7XG5cbiAgICBvYnNlcnZlci5vYnNlcnZlKGN1cnJlbnQpO1xuICAgIG9ic2VydmVyUmVmLmN1cnJlbnQgPSBvYnNlcnZlcjtcbiAgICBvYnNlcnZlZE5vZGVSZWYuY3VycmVudCA9IGN1cnJlbnQ7XG4gIH0pO1xuXG4gIC8vIFNhZmV0eSBuZXQ6IHZpc2liaWxpdHkgZGV0ZWN0aW9uIG11c3Qgbm90IGJlIGEgc2luZ2xlIHBvaW50IG9mIGZhaWx1cmUuIFdoaWxlIHRoZVxuICAvLyBvYnNlcnZlciByZXBvcnRzIG5vdC12aXNpYmxlLCBwZXJpb2RpY2FsbHkgcmVjb25jaWxlIGFnYWluc3QgdGhlIGVsZW1lbnQncyBhY3R1YWxcbiAgLy8gcG9zaXRpb247IGFuIGVsZW1lbnQgdGhhdCBpcyBvbiBzY3JlZW4gd2hpbGUgdGhlIG9ic2VydmVyIHN0YXllZCBzaWxlbnQgbWVhbnNcbiAgLy8gb2JzZXJ2YXRpb24gaXMgYnJva2VuIGZvciBhIHJlYXNvbiB3ZSBoYXZlbid0IG1ldCB5ZXQgKHdyYXBwZWQvb3ZlcnJpZGRlblxuICAvLyBJbnRlcnNlY3Rpb25PYnNlcnZlciwgZW5naW5lIHF1aXJrLCBhIGZhaWx1cmUgbW9kZSBsaWtlIHRoZSBzdGFsZS1ub2RlIGJ1ZykuIFJlcG9ydCBpdFxuICAvLyBhcyBhIGNvbnNvbGUgZXJyb3IgKHNvIHNlc3Npb24gdG9vbHMgY2FuIGNvdW50IGFmZmVjdGVkIHNlc3Npb25zKSBhbmQgdHJlYXQgdGhlXG4gIC8vIGVsZW1lbnQgYXMgdmlzaWJsZSBzbyBpdCBzdGlsbCBsb2Fkcy5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHJlY29uY2lsZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBlbGVtZW50Py5jdXJyZW50O1xuICAgICAgaWYgKCFub2RlIHx8ICFub2RlLmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpc09uU2NyZWVuKG5vZGUpKSB7XG4gICAgICAgIC8vIFJlY292ZXIgdGhlIHdpZGdldCByZWdhcmRsZXNzIG9mIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZS4gVGhlIGVudmlyb25tZW50cyB0aGlzXG4gICAgICAgIC8vIGZhbGxiYWNrIGV4aXN0cyBmb3Ig4oCUIGlPUy9XZWJLaXQgaW4tYXBwIHdlYnZpZXdzIGFuZCBiZmNhY2hlIHJlc3RvcmVzIOKAlCBjYW4gcmVwb3J0XG4gICAgICAgIC8vIHRoZSBkb2N1bWVudCBhcyBoaWRkZW4gZXZlbiB3aGlsZSB0aGUgc2hvcHBlciBpcyBsb29raW5nIGF0IGl0LCBzbyBnYXRpbmcgcmVjb3ZlcnlcbiAgICAgICAgLy8gb24gdmlzaWJpbGl0eSB3b3VsZCBkZWZlYXQgdGhlIGZpeCBpbiBleGFjdGx5IHRob3NlIGNhc2VzLiBPbmx5IExPRyBhIGdlbnVpbmVcbiAgICAgICAgLy8gZmFpbHVyZSB3aGVuIHRoZSBwYWdlIGlzIGFjdHVhbGx5IHZpc2libGUsIHNvIGEgbGVnaXRpbWF0ZWx5IHN1cHByZXNzZWQgb2JzZXJ2ZXIgaW5cbiAgICAgICAgLy8gYSBoaWRkZW4vYmFja2dyb3VuZCB0YWIgZG9lcyBub3QgZmxvb2QgZXJyb3IgdGVsZW1ldHJ5IHdpdGggZmFsc2UgcG9zaXRpdmVzLlxuICAgICAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAndmlzaWJsZScpIHtcbiAgICAgICAgICBsb2dnZXIubG9nRXJyb3IoXG4gICAgICAgICAgICAnVmlzaWJpbGl0eSBmYWxsYmFjayBlbmdhZ2VkIOKAlCBlbGVtZW50IGlzIG9uIHNjcmVlbiBidXQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgbmV2ZXIgcmVwb3J0ZWQgaXQnLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAuLi5sb2dDb250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAgIGZhbGxiYWNrX2ludGVydmFsX21zOiBWSVNJQklMSVRZX0ZBTExCQUNLX0lOVEVSVkFMX01TLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHNldElzVmlzaWJsZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gR2l2ZSB0aGUgcmVhbCBvYnNlcnZlciBhIGdyYWNlIHdpbmRvdyB0byBkZWxpdmVyIGl0cyBpbml0aWFsIGNhbGxiYWNrLCB0aGVuIHBvbGwgb24gYVxuICAgIC8vIHNob3J0ZXIgY2FkZW5jZSBzbyBhIGdlbnVpbmVseSBzdHVjayB3aWRnZXQgcmVjb3ZlcnMgcXVpY2tseS5cbiAgICBsZXQgaW50ZXJ2YWw6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBncmFjZSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcmVjb25jaWxlKCk7XG4gICAgICBpbnRlcnZhbCA9IHNldEludGVydmFsKHJlY29uY2lsZSwgVklTSUJJTElUWV9GQUxMQkFDS19JTlRFUlZBTF9NUyk7XG4gICAgfSwgVklTSUJJTElUWV9GQUxMQkFDS19HUkFDRV9NUyk7XG5cbiAgICAvLyBGYXN0IHBhdGg6IGEgd2lkZ2V0IGNvbXBvc2l0ZWQgd2hpbGUgdGhlIHRhYiB3YXMgaGlkZGVuIGNhbiBoYXZlIGl0c1xuICAgIC8vIEludGVyc2VjdGlvbk9ic2VydmVyIHN1cHByZXNzZWQsIGFuZCBzb21lIGVuZ2luZXMgZmFpbCB0byByZS1maXJlIGl0IHdoZW4gdGhlIHRhYlxuICAgIC8vIHJldHVybnMgdG8gdGhlIGZvcmVncm91bmQgZm9yIGFuIGVsZW1lbnQgYWxyZWFkeSBpbiB0aGUgdmlld3BvcnQuIE9uIHZpc2liaWxpdHlcbiAgICAvLyBjaGFuZ2UsIHJlY29uY2lsZSBhZnRlciBhIHNob3J0IGdyYWNlIOKAlCBpZiBhIGhlYWx0aHkgb2JzZXJ2ZXIgcmUtZmlyZXMgZmlyc3QsXG4gICAgLy8gaXNWaXNpYmxlIGZsaXBzIGFuZCB0aGlzIGVmZmVjdCB0ZWFycyB0aGUgdGltZXIgZG93biBiZWZvcmUgaXQgcnVucy5cbiAgICBsZXQgZm9yZWdyb3VuZENoZWNrOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvblZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBpZiAoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlICE9PSAndmlzaWJsZScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yZWdyb3VuZENoZWNrID0gc2V0VGltZW91dChyZWNvbmNpbGUsIFZJU0lCSUxJVFlfRk9SRUdST1VORF9HUkFDRV9NUyk7XG4gICAgfTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgb25WaXNpYmlsaXR5Q2hhbmdlKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQoZ3JhY2UpO1xuICAgICAgaWYgKGludGVydmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICB9XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgb25WaXNpYmlsaXR5Q2hhbmdlKTtcbiAgICAgIGlmIChmb3JlZ3JvdW5kQ2hlY2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoZm9yZWdyb3VuZENoZWNrKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbaXNWaXNpYmxlLCBlbGVtZW50XSk7XG5cbiAgLy8gRGlzY29ubmVjdCBvbiB1bm1vdW50IG9ubHkg4oCUIGludGVudGlvbmFsbHkgc2VwYXJhdGUgZnJvbSB0aGUgc2V0dXAgZWZmZWN0IGFib3ZlLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBvYnNlcnZlclJlZi5jdXJyZW50Py5kaXNjb25uZWN0KCk7XG4gICAgICBvYnNlcnZlclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgIG9ic2VydmVkTm9kZVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIGlzVmlzaWJsZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFHQSxNQUFNLFNBQVMsSUFBSUEsZUFBTyxrQkFBa0I7QUFNNUMsTUFBYSwrQkFBK0I7QUFJNUMsTUFBYSxrQ0FBa0M7QUFLL0MsTUFBYSxpQ0FBaUM7QUFFOUMsTUFBTSxjQUFjLFNBQStCO0NBQ2pELE1BQU0sT0FBTyxLQUFLLHVCQUF1QjtBQUt6QyxLQUFJLEtBQUssU0FBUyxLQUFLLEtBQUssVUFBVSxFQUNwQyxRQUFPO0FBRVQsUUFDRSxLQUFLLE1BQU0sT0FBTyxlQUNsQixLQUFLLFNBQVMsS0FDZCxLQUFLLE9BQU8sT0FBTyxjQUNuQixLQUFLLFFBQVE7O0FBS2pCLE1BQWEsbUJBQ1gsU0FDQSxZQUNBLGVBQ0c7Q0FDSCxNQUFNLENBQUMsV0FBVyxnQkFBZ0IsU0FBUyxNQUFNO0NBQ2pELE1BQU0sY0FBYyxPQUFvQyxLQUFLO0NBQzdELE1BQU0sa0JBQWtCLE9BQTJCLEtBQUs7Q0FDeEQsTUFBTSxnQkFBZ0IsT0FBTyxXQUFXO0FBQ3hDLGVBQWMsVUFBVTtBQVN4QixpQkFBZ0I7RUFDZCxNQUFNLFVBQVUsU0FBUztBQUN6QixNQUFJLENBQUMsUUFDSDtBQUVGLE1BQUksZ0JBQWdCLFlBQVksUUFBUztBQUV6QyxNQUFJLFlBQVksUUFFZCxhQUFZLFFBQVEsWUFBWTtFQUdsQyxNQUFNLFdBQVcsSUFBSSxzQkFDbEIsQ0FBQyxXQUFXO0FBQ1gsZ0JBQWEsTUFBTSxlQUFlO0tBRXBDLEVBQUUsWUFBWSxDQUNmO0FBRUQsV0FBUyxRQUFRLFFBQVE7QUFDekIsY0FBWSxVQUFVO0FBQ3RCLGtCQUFnQixVQUFVO0dBQzFCO0FBU0YsaUJBQWdCO0FBQ2QsTUFBSSxVQUNGO0VBR0YsTUFBTSxrQkFBa0I7R0FDdEIsTUFBTSxPQUFPLFNBQVM7QUFDdEIsT0FBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFlBQ2pCO0FBRUYsT0FBSSxXQUFXLEtBQUssRUFBRTtBQU9wQixRQUFJLFNBQVMsb0JBQW9CLFVBQy9CLFFBQU8sU0FDTCxpR0FDQSxRQUNBO0tBQ0UsR0FBRyxjQUFjO0tBQ2pCLHNCQUFzQjtLQUN2QixDQUNGO0FBRUgsaUJBQWEsS0FBSzs7O0VBTXRCLElBQUlDO0VBQ0osTUFBTSxRQUFRLGlCQUFpQjtBQUM3QixjQUFXO0FBQ1gsY0FBVyxZQUFZLFdBQVcsZ0NBQWdDO0tBQ2pFLDZCQUE2QjtFQU9oQyxJQUFJQztFQUNKLE1BQU0sMkJBQTJCO0FBQy9CLE9BQUksU0FBUyxvQkFBb0IsVUFDL0I7QUFFRixxQkFBa0IsV0FBVyxXQUFXLCtCQUErQjs7QUFFekUsV0FBUyxpQkFBaUIsb0JBQW9CLG1CQUFtQjtBQUVqRSxlQUFhO0FBQ1gsZ0JBQWEsTUFBTTtBQUNuQixPQUFJLGFBQWEsT0FDZixlQUFjLFNBQVM7QUFFekIsWUFBUyxvQkFBb0Isb0JBQW9CLG1CQUFtQjtBQUNwRSxPQUFJLG9CQUFvQixPQUN0QixjQUFhLGdCQUFnQjs7SUFHaEMsQ0FBQyxXQUFXLFFBQVEsQ0FBQztBQUd4QixpQkFBZ0I7QUFDZCxlQUFhO0FBQ1gsZUFBWSxTQUFTLFlBQVk7QUFDakMsZUFBWSxVQUFVO0FBQ3RCLG1CQUFnQixVQUFVOztJQUUzQixFQUFFLENBQUM7QUFFTixRQUFPIn0=
82
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlSW50ZXJzZWN0aW9uLmpzIiwibmFtZXMiOlsiTG9nZ2VyIiwiaW50ZXJ2YWw6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IHVuZGVmaW5lZCIsImZvcmVncm91bmRDaGVjazogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvSW50ZXJzZWN0aW9uL3VzZUludGVyc2VjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcigndXNlSW50ZXJzZWN0aW9uJyk7XG5cbi8vIEhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIHRoZSBmYWxsYmFjaydzIEZJUlNUIHJlY29uY2lsZS4gTG9uZyBlbm91Z2ggdGhhdCBhIGhlYWx0aHlcbi8vIEludGVyc2VjdGlvbk9ic2VydmVyIGhhcyBkZWxpdmVyZWQgaXRzIGluaXRpYWwgY2FsbGJhY2sgKHNvIHdlIGRvbid0IGZhbHNlbHkgZmxhZyBhXG4vLyBub3JtYWxseS1sb2FkaW5nIHdpZGdldCksIHNob3J0IGVub3VnaCB0byBrZWVwIHRoZSB3b3JzdC1jYXNlIGJsYW5rIHdpbmRvdyBzbWFsbC5cbi8vIEV4cG9ydGVkIGZvciB0ZXN0cy5cbmV4cG9ydCBjb25zdCBWSVNJQklMSVRZX0ZBTExCQUNLX0dSQUNFX01TID0gMTAwMDtcblxuLy8gSG93IG9mdGVuIHRoZSBmYWxsYmFjayByZS1jaGVja3MgYWZ0ZXIgdGhlIGluaXRpYWwgZ3JhY2UuIEEgZ2VudWluZWx5IHN0dWNrIHdpZGdldFxuLy8gcmVjb3ZlcnMgd2l0aGluIGdyYWNlICsgb25lIGludGVydmFsICh+MS4zcykuIEV4cG9ydGVkIGZvciB0ZXN0cy5cbmV4cG9ydCBjb25zdCBWSVNJQklMSVRZX0ZBTExCQUNLX0lOVEVSVkFMX01TID0gMzAwO1xuXG4vLyBBZnRlciB0aGUgdGFiIHJldHVybnMgdG8gdGhlIGZvcmVncm91bmQsIGhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIHRoZSBmYXN0LXBhdGggcmVjb25jaWxlIOKAlFxuLy8gbG9uZyBlbm91Z2ggZm9yIGEgaGVhbHRoeSBvYnNlcnZlciB0byByZS1maXJlIG9uIGl0cyBvd24gKHNvIHdlIGRvbid0IGZhbHNlbHkgZmxhZyBpdCksXG4vLyBzaG9ydCBlbm91Z2ggdGhhdCByZWNvdmVyeSBpcyBuZWFyLWluc3RhbnQuIEV4cG9ydGVkIGZvciB0ZXN0cy5cbmV4cG9ydCBjb25zdCBWSVNJQklMSVRZX0ZPUkVHUk9VTkRfR1JBQ0VfTVMgPSAyMDA7XG5cbmNvbnN0IGlzT25TY3JlZW4gPSAobm9kZTogSFRNTEVsZW1lbnQpOiBib29sZWFuID0+IHtcbiAgY29uc3QgcmVjdCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIC8vIFJlcXVpcmUgcmVhbCBhcmVhOiBhbiBlbGVtZW50IHRoYXQgaGFzIG5vdCBsYWlkIG91dCB5ZXQgKGEgMMOXMCBpbmxpbmUgd3JhcHBlciBtaWQtbW91bnQpXG4gIC8vIG9yIGlzIGNvbGxhcHNlZCB0byB6ZXJvIGJ5IGFuIG92ZXJmbG93LWNsaXBwaW5nIGFuY2VzdG9yIGlzIG5vdCBzb21ldGhpbmcgdGhlIG9ic2VydmVyXG4gIC8vIHdyb25nbHkgbWlzc2VkIOKAlCBpdCBpcyBnZW51aW5lbHkgbm90IHZpc2libGUuIGRpc3BsYXk6bm9uZSBzdWJ0cmVlcyByZXBvcnQgYW4gYWxsLXplcm9cbiAgLy8gcmVjdCBhbmQgYXJlIGV4Y2x1ZGVkIGhlcmUgdG9vLlxuICBpZiAocmVjdC53aWR0aCA8PSAwIHx8IHJlY3QuaGVpZ2h0IDw9IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICByZWN0LnRvcCA8IHdpbmRvdy5pbm5lckhlaWdodCAmJlxuICAgIHJlY3QuYm90dG9tID4gMCAmJlxuICAgIHJlY3QubGVmdCA8IHdpbmRvdy5pbm5lcldpZHRoICYmXG4gICAgcmVjdC5yaWdodCA+IDBcbiAgKTtcbn07XG5cbi8vIGh0dHBzOi8vcmFzaWxiYWlkYXIubWVkaXVtLmNvbS90cmlnZ2VyLWV2ZW50LXdoZW4tZWxlbWVudC1lbnRlcnMtdmlld3BvcnQtdGhlLXJlYWN0LXdheS0xNjg1MDlkYTJlMjNcbmV4cG9ydCBjb25zdCB1c2VJbnRlcnNlY3Rpb24gPSAoXG4gIGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gIHJvb3RNYXJnaW46IHN0cmluZyxcbiAgbG9nQ29udGV4dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAvLyBDYWxsZWQgdGhlIGZpcnN0IHRpbWUgdmlzaWJpbGl0eSBpcyBmb3JjZWQgYnkgdGhlIHJlY29uY2lsZSBmYWxsYmFjayAob2JzZXJ2ZXIgc3RheWVkXG4gIC8vIHNpbGVudCBmb3IgYW4gb24tc2NyZWVuIGVsZW1lbnQpLiBMZXRzIGNhbGxlcnMgcmVjb3JkIHRoYXQgdGhpcyB3aWRnZXQncyB2aXNpYmlsaXR5IGNhbWVcbiAgLy8gZnJvbSB0aGUgZmFsbGJhY2sgcmF0aGVyIHRoYW4gdGhlIG9ic2VydmVyIOKAlCB0aGUgZGlhZ25vc3RpYyBmb3Igb2JzZXJ2ZXIgZmFpbHVyZXMuXG4gIG9uRmFsbGJhY2tFbmdhZ2VkPzogKCkgPT4gdm9pZCxcbikgPT4ge1xuICBjb25zdCBbaXNWaXNpYmxlLCBzZXRJc1Zpc2libGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBvYnNlcnZlclJlZiA9IHVzZVJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBvYnNlcnZlZE5vZGVSZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgbG9nQ29udGV4dFJlZiA9IHVzZVJlZihsb2dDb250ZXh0KTtcbiAgbG9nQ29udGV4dFJlZi5jdXJyZW50ID0gbG9nQ29udGV4dDtcbiAgY29uc3Qgb25GYWxsYmFja0VuZ2FnZWRSZWYgPSB1c2VSZWYob25GYWxsYmFja0VuZ2FnZWQpO1xuICBvbkZhbGxiYWNrRW5nYWdlZFJlZi5jdXJyZW50ID0gb25GYWxsYmFja0VuZ2FnZWQ7XG4gIGNvbnN0IGZhbGxiYWNrRW5nYWdlZFJlZiA9IHVzZVJlZihmYWxzZSk7XG5cbiAgLy8gUnVucyBhZnRlciBldmVyeSByZW5kZXIgc28gaXQgY2F0Y2hlcyB3aGVuIGVsZW1lbnQuY3VycmVudCB0cmFuc2l0aW9ucyBmcm9tIG51bGwgdG8gYVxuICAvLyBtb3VudGVkIERPTSBub2RlLCBBTkQgd2hlbiB0aGUgbm9kZSB1bmRlciB0aGUgcmVmIGlzIHJlcGxhY2VkLiBUaGUgcmVwbGFjZW1lbnQgY2FzZSBpc1xuICAvLyBsb2FkLWJlYXJpbmc6IG1vdW50IGNodXJuIChlLmcuIHRoZSBzaGFkb3ctcm9vdCBwb3J0YWwgcmUtY3JlYXRpbmcgdGhlIHdpZGdldCBzdWJ0cmVlKVxuICAvLyBjYW4gc3dhcCB0aGUgRE9NIG5vZGUgd2hpbGUgdGhpcyBob29rIGluc3RhbmNlIHN1cnZpdmVzLCBhbmQgYW4gb2JzZXJ2ZXIgbGVmdCBvbiB0aGVcbiAgLy8gZGV0YWNoZWQgb2xkIG5vZGUgbmV2ZXIgZmlyZXMgYWdhaW4g4oCUIHRoZSB3aWRnZXQgdGhlbiByZWFkcyBhcyBwZXJtYW5lbnRseSBub3QtdmlzaWJsZVxuICAvLyBhbmQgbmV2ZXIgc3RhcnRzIGxvYWRpbmcuIEJhaWxzIG9uY2UgdGhlIGN1cnJlbnQgbm9kZSBpcyB0aGUgb25lIGJlaW5nIG9ic2VydmVkLFxuICAvLyBrZWVwaW5nIHBlci1yZW5kZXIgY29zdCBPKDEpLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBlbGVtZW50Py5jdXJyZW50O1xuICAgIGlmICghY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAob2JzZXJ2ZWROb2RlUmVmLmN1cnJlbnQgPT09IGN1cnJlbnQpIHJldHVybjsgLy8gYWxyZWFkeSBvYnNlcnZpbmcgdGhpcyBleGFjdCBub2RlXG5cbiAgICBpZiAob2JzZXJ2ZXJSZWYuY3VycmVudCkge1xuICAgICAgLy8gTm9kZSB1bmRlciB0aGUgcmVmIHdhcyByZXBsYWNlZCDigJQgZHJvcCB0aGUgb2JzZXJ2ZXIgb24gdGhlIGRldGFjaGVkIG5vZGUuXG4gICAgICBvYnNlcnZlclJlZi5jdXJyZW50LmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgIChbZW50cnldKSA9PiB7XG4gICAgICAgIHNldElzVmlzaWJsZShlbnRyeS5pc0ludGVyc2VjdGluZyk7XG4gICAgICB9LFxuICAgICAgeyByb290TWFyZ2luIH0sXG4gICAgKTtcblxuICAgIG9ic2VydmVyLm9ic2VydmUoY3VycmVudCk7XG4gICAgb2JzZXJ2ZXJSZWYuY3VycmVudCA9IG9ic2VydmVyO1xuICAgIG9ic2VydmVkTm9kZVJlZi5jdXJyZW50ID0gY3VycmVudDtcbiAgfSk7XG5cbiAgLy8gU2FmZXR5IG5ldDogdmlzaWJpbGl0eSBkZXRlY3Rpb24gbXVzdCBub3QgYmUgYSBzaW5nbGUgcG9pbnQgb2YgZmFpbHVyZS4gV2hpbGUgdGhlXG4gIC8vIG9ic2VydmVyIHJlcG9ydHMgbm90LXZpc2libGUsIHBlcmlvZGljYWxseSByZWNvbmNpbGUgYWdhaW5zdCB0aGUgZWxlbWVudCdzIGFjdHVhbFxuICAvLyBwb3NpdGlvbjsgYW4gZWxlbWVudCB0aGF0IGlzIG9uIHNjcmVlbiB3aGlsZSB0aGUgb2JzZXJ2ZXIgc3RheWVkIHNpbGVudCBtZWFuc1xuICAvLyBvYnNlcnZhdGlvbiBpcyBicm9rZW4gZm9yIGEgcmVhc29uIHdlIGhhdmVuJ3QgbWV0IHlldCAod3JhcHBlZC9vdmVycmlkZGVuXG4gIC8vIEludGVyc2VjdGlvbk9ic2VydmVyLCBlbmdpbmUgcXVpcmssIGEgZmFpbHVyZSBtb2RlIGxpa2UgdGhlIHN0YWxlLW5vZGUgYnVnKS4gUmVwb3J0IGl0XG4gIC8vIGFzIGEgY29uc29sZSBlcnJvciAoc28gc2Vzc2lvbiB0b29scyBjYW4gY291bnQgYWZmZWN0ZWQgc2Vzc2lvbnMpIGFuZCB0cmVhdCB0aGVcbiAgLy8gZWxlbWVudCBhcyB2aXNpYmxlIHNvIGl0IHN0aWxsIGxvYWRzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmVjb25jaWxlID0gKCkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IGVsZW1lbnQ/LmN1cnJlbnQ7XG4gICAgICBpZiAoIW5vZGUgfHwgIW5vZGUuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzT25TY3JlZW4obm9kZSkpIHtcbiAgICAgICAgLy8gUmVjb3ZlciB0aGUgd2lkZ2V0IHJlZ2FyZGxlc3Mgb2YgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlLiBUaGUgZW52aXJvbm1lbnRzIHRoaXNcbiAgICAgICAgLy8gZmFsbGJhY2sgZXhpc3RzIGZvciDigJQgaU9TL1dlYktpdCBpbi1hcHAgd2Vidmlld3MgYW5kIGJmY2FjaGUgcmVzdG9yZXMg4oCUIGNhbiByZXBvcnRcbiAgICAgICAgLy8gdGhlIGRvY3VtZW50IGFzIGhpZGRlbiBldmVuIHdoaWxlIHRoZSBzaG9wcGVyIGlzIGxvb2tpbmcgYXQgaXQsIHNvIGdhdGluZyByZWNvdmVyeVxuICAgICAgICAvLyBvbiB2aXNpYmlsaXR5IHdvdWxkIGRlZmVhdCB0aGUgZml4IGluIGV4YWN0bHkgdGhvc2UgY2FzZXMuIE9ubHkgTE9HIGEgZ2VudWluZVxuICAgICAgICAvLyBmYWlsdXJlIHdoZW4gdGhlIHBhZ2UgaXMgYWN0dWFsbHkgdmlzaWJsZSwgc28gYSBsZWdpdGltYXRlbHkgc3VwcHJlc3NlZCBvYnNlcnZlciBpblxuICAgICAgICAvLyBhIGhpZGRlbi9iYWNrZ3JvdW5kIHRhYiBkb2VzIG5vdCBmbG9vZCBlcnJvciB0ZWxlbWV0cnkgd2l0aCBmYWxzZSBwb3NpdGl2ZXMuXG4gICAgICAgIGlmIChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykge1xuICAgICAgICAgIGxvZ2dlci5sb2dFcnJvcihcbiAgICAgICAgICAgICdWaXNpYmlsaXR5IGZhbGxiYWNrIGVuZ2FnZWQg4oCUIGVsZW1lbnQgaXMgb24gc2NyZWVuIGJ1dCBJbnRlcnNlY3Rpb25PYnNlcnZlciBuZXZlciByZXBvcnRlZCBpdCcsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLmxvZ0NvbnRleHRSZWYuY3VycmVudCxcbiAgICAgICAgICAgICAgZmFsbGJhY2tfaW50ZXJ2YWxfbXM6IFZJU0lCSUxJVFlfRkFMTEJBQ0tfSU5URVJWQUxfTVMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmYWxsYmFja0VuZ2FnZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgIGZhbGxiYWNrRW5nYWdlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICBvbkZhbGxiYWNrRW5nYWdlZFJlZi5jdXJyZW50Py4oKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRJc1Zpc2libGUodHJ1ZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIEdpdmUgdGhlIHJlYWwgb2JzZXJ2ZXIgYSBncmFjZSB3aW5kb3cgdG8gZGVsaXZlciBpdHMgaW5pdGlhbCBjYWxsYmFjaywgdGhlbiBwb2xsIG9uIGFcbiAgICAvLyBzaG9ydGVyIGNhZGVuY2Ugc28gYSBnZW51aW5lbHkgc3R1Y2sgd2lkZ2V0IHJlY292ZXJzIHF1aWNrbHkuXG4gICAgbGV0IGludGVydmFsOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgZ3JhY2UgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHJlY29uY2lsZSgpO1xuICAgICAgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChyZWNvbmNpbGUsIFZJU0lCSUxJVFlfRkFMTEJBQ0tfSU5URVJWQUxfTVMpO1xuICAgIH0sIFZJU0lCSUxJVFlfRkFMTEJBQ0tfR1JBQ0VfTVMpO1xuXG4gICAgLy8gRmFzdCBwYXRoOiBhIHdpZGdldCBjb21wb3NpdGVkIHdoaWxlIHRoZSB0YWIgd2FzIGhpZGRlbiBjYW4gaGF2ZSBpdHNcbiAgICAvLyBJbnRlcnNlY3Rpb25PYnNlcnZlciBzdXBwcmVzc2VkLCBhbmQgc29tZSBlbmdpbmVzIGZhaWwgdG8gcmUtZmlyZSBpdCB3aGVuIHRoZSB0YWJcbiAgICAvLyByZXR1cm5zIHRvIHRoZSBmb3JlZ3JvdW5kIGZvciBhbiBlbGVtZW50IGFscmVhZHkgaW4gdGhlIHZpZXdwb3J0LiBPbiB2aXNpYmlsaXR5XG4gICAgLy8gY2hhbmdlLCByZWNvbmNpbGUgYWZ0ZXIgYSBzaG9ydCBncmFjZSDigJQgaWYgYSBoZWFsdGh5IG9ic2VydmVyIHJlLWZpcmVzIGZpcnN0LFxuICAgIC8vIGlzVmlzaWJsZSBmbGlwcyBhbmQgdGhpcyBlZmZlY3QgdGVhcnMgdGhlIHRpbWVyIGRvd24gYmVmb3JlIGl0IHJ1bnMuXG4gICAgbGV0IGZvcmVncm91bmRDaGVjazogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb25WaXNpYmlsaXR5Q2hhbmdlID0gKCkgPT4ge1xuICAgICAgaWYgKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSAhPT0gJ3Zpc2libGUnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvcmVncm91bmRDaGVjayA9IHNldFRpbWVvdXQocmVjb25jaWxlLCBWSVNJQklMSVRZX0ZPUkVHUk9VTkRfR1JBQ0VfTVMpO1xuICAgIH07XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzaWJpbGl0eUNoYW5nZSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KGdyYWNlKTtcbiAgICAgIGlmIChpbnRlcnZhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgfVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzaWJpbGl0eUNoYW5nZSk7XG4gICAgICBpZiAoZm9yZWdyb3VuZENoZWNrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGZvcmVncm91bmRDaGVjayk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2lzVmlzaWJsZSwgZWxlbWVudF0pO1xuXG4gIC8vIERpc2Nvbm5lY3Qgb24gdW5tb3VudCBvbmx5IOKAlCBpbnRlbnRpb25hbGx5IHNlcGFyYXRlIGZyb20gdGhlIHNldHVwIGVmZmVjdCBhYm92ZS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgb2JzZXJ2ZXJSZWYuY3VycmVudD8uZGlzY29ubmVjdCgpO1xuICAgICAgb2JzZXJ2ZXJSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICBvYnNlcnZlZE5vZGVSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiBpc1Zpc2libGU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBR0EsTUFBTSxTQUFTLElBQUlBLGVBQU8sa0JBQWtCO0FBTTVDLE1BQWEsK0JBQStCO0FBSTVDLE1BQWEsa0NBQWtDO0FBSy9DLE1BQWEsaUNBQWlDO0FBRTlDLE1BQU0sY0FBYyxTQUErQjtDQUNqRCxNQUFNLE9BQU8sS0FBSyx1QkFBdUI7QUFLekMsS0FBSSxLQUFLLFNBQVMsS0FBSyxLQUFLLFVBQVUsRUFDcEMsUUFBTztBQUVULFFBQ0UsS0FBSyxNQUFNLE9BQU8sZUFDbEIsS0FBSyxTQUFTLEtBQ2QsS0FBSyxPQUFPLE9BQU8sY0FDbkIsS0FBSyxRQUFROztBQUtqQixNQUFhLG1CQUNYLFNBQ0EsWUFDQSxZQUlBLHNCQUNHO0NBQ0gsTUFBTSxDQUFDLFdBQVcsZ0JBQWdCLFNBQVMsTUFBTTtDQUNqRCxNQUFNLGNBQWMsT0FBb0MsS0FBSztDQUM3RCxNQUFNLGtCQUFrQixPQUEyQixLQUFLO0NBQ3hELE1BQU0sZ0JBQWdCLE9BQU8sV0FBVztBQUN4QyxlQUFjLFVBQVU7Q0FDeEIsTUFBTSx1QkFBdUIsT0FBTyxrQkFBa0I7QUFDdEQsc0JBQXFCLFVBQVU7Q0FDL0IsTUFBTSxxQkFBcUIsT0FBTyxNQUFNO0FBU3hDLGlCQUFnQjtFQUNkLE1BQU0sVUFBVSxTQUFTO0FBQ3pCLE1BQUksQ0FBQyxRQUNIO0FBRUYsTUFBSSxnQkFBZ0IsWUFBWSxRQUFTO0FBRXpDLE1BQUksWUFBWSxRQUVkLGFBQVksUUFBUSxZQUFZO0VBR2xDLE1BQU0sV0FBVyxJQUFJLHNCQUNsQixDQUFDLFdBQVc7QUFDWCxnQkFBYSxNQUFNLGVBQWU7S0FFcEMsRUFBRSxZQUFZLENBQ2Y7QUFFRCxXQUFTLFFBQVEsUUFBUTtBQUN6QixjQUFZLFVBQVU7QUFDdEIsa0JBQWdCLFVBQVU7R0FDMUI7QUFTRixpQkFBZ0I7QUFDZCxNQUFJLFVBQ0Y7RUFHRixNQUFNLGtCQUFrQjtHQUN0QixNQUFNLE9BQU8sU0FBUztBQUN0QixPQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssWUFDakI7QUFFRixPQUFJLFdBQVcsS0FBSyxFQUFFO0FBT3BCLFFBQUksU0FBUyxvQkFBb0IsVUFDL0IsUUFBTyxTQUNMLGlHQUNBLFFBQ0E7S0FDRSxHQUFHLGNBQWM7S0FDakIsc0JBQXNCO0tBQ3ZCLENBQ0Y7QUFFSCxRQUFJLENBQUMsbUJBQW1CLFNBQVM7QUFDL0Isd0JBQW1CLFVBQVU7QUFDN0IsMEJBQXFCLFdBQVc7O0FBRWxDLGlCQUFhLEtBQUs7OztFQU10QixJQUFJQztFQUNKLE1BQU0sUUFBUSxpQkFBaUI7QUFDN0IsY0FBVztBQUNYLGNBQVcsWUFBWSxXQUFXLGdDQUFnQztLQUNqRSw2QkFBNkI7RUFPaEMsSUFBSUM7RUFDSixNQUFNLDJCQUEyQjtBQUMvQixPQUFJLFNBQVMsb0JBQW9CLFVBQy9CO0FBRUYscUJBQWtCLFdBQVcsV0FBVywrQkFBK0I7O0FBRXpFLFdBQVMsaUJBQWlCLG9CQUFvQixtQkFBbUI7QUFFakUsZUFBYTtBQUNYLGdCQUFhLE1BQU07QUFDbkIsT0FBSSxhQUFhLE9BQ2YsZUFBYyxTQUFTO0FBRXpCLFlBQVMsb0JBQW9CLG9CQUFvQixtQkFBbUI7QUFDcEUsT0FBSSxvQkFBb0IsT0FDdEIsY0FBYSxnQkFBZ0I7O0lBR2hDLENBQUMsV0FBVyxRQUFRLENBQUM7QUFHeEIsaUJBQWdCO0FBQ2QsZUFBYTtBQUNYLGVBQVksU0FBUyxZQUFZO0FBQ2pDLGVBQVksVUFBVTtBQUN0QixtQkFBZ0IsVUFBVTs7SUFFM0IsRUFBRSxDQUFDO0FBRU4sUUFBTyJ9
@@ -1,12 +1,12 @@
1
1
  import { GenerationParams } from "../../application/models/api/generationParams.cjs";
2
- import * as react1 from "react";
2
+ import * as react0 from "react";
3
3
 
4
4
  //#region src/hooks/SystemSettingsContext/useSystemSettingsContext.d.ts
5
5
  declare const useSystemSettingsContext: () => {
6
6
  generationParams?: GenerationParams;
7
7
  showDebugBar?: boolean;
8
8
  endpointURL?: string;
9
- setGenerationParams: react1.Dispatch<react1.SetStateAction<GenerationParams | undefined>>;
9
+ setGenerationParams: react0.Dispatch<react0.SetStateAction<GenerationParams | undefined>>;
10
10
  };
11
11
  //#endregion
12
12
  export { useSystemSettingsContext };
@@ -28,7 +28,13 @@ const safeNow = () => {
28
28
  }
29
29
  };
30
30
  const useTrackComponentVisibleEvent = (element, eventProps, rootMargin = "0px", enabled = true) => {
31
- const isVisible = require_useIntersection.useIntersection(element, rootMargin, eventProps);
31
+ const [visibilitySource, setVisibilitySource] = (0, react.useState)("pending");
32
+ const isVisible = require_useIntersection.useIntersection(element, rootMargin, eventProps, () => {
33
+ setVisibilitySource((prev) => prev === "pending" ? "fallback" : prev);
34
+ });
35
+ (0, react.useEffect)(() => {
36
+ if (isVisible) setVisibilitySource((prev) => prev === "pending" ? "observer" : prev);
37
+ }, [isVisible]);
32
38
  const hasTrackedEvent = (0, react.useRef)(false);
33
39
  const { trackEvent } = require_amplitudeContext.useAmplitude();
34
40
  const variantInfo = (0, jotai.useAtomValue)(require_variant.pageVariantInfoAtom);
@@ -73,9 +79,12 @@ const useTrackComponentVisibleEvent = (element, eventProps, rootMargin = "0px",
73
79
  eventProps,
74
80
  trackEvent
75
81
  ]);
76
- return { isVisible };
82
+ return {
83
+ isVisible,
84
+ visibilitySource
85
+ };
77
86
  };
78
87
 
79
88
  //#endregion
80
89
  exports.useTrackComponentVisibleEvent = useTrackComponentVisibleEvent;
81
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuY2pzIiwibmFtZXMiOlsiTG9nZ2VyIiwidXNlSW50ZXJzZWN0aW9uIiwidXNlQW1wbGl0dWRlIiwicGFnZVZhcmlhbnRJbmZvQXRvbSIsIlNwaWZmeU1ldHJpY3NFdmVudE5hbWUiLCJFbnZpdmVNZXRyaWNzRXZlbnROYW1lIiwiZXh0cmFjdFBhZ2VDb250ZXh0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50L3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IFJlZk9iamVjdCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBwYWdlVmFyaWFudEluZm9BdG9tIH0gZnJvbSAnc3JjL2F0b21zL2FwcCc7XG5pbXBvcnQgeyB1c2VBbXBsaXR1ZGUgfSBmcm9tICdzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0JztcbmltcG9ydCB7IFBhZ2VWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9jb250ZXh0cy9wYWdlQ29udGV4dC90eXBlcyc7XG5pbXBvcnQgeyB1c2VJbnRlcnNlY3Rpb24gfSBmcm9tICdzcmMvaG9va3MvSW50ZXJzZWN0aW9uL3VzZUludGVyc2VjdGlvbic7XG5pbXBvcnQgeyBleHRyYWN0UGFnZUNvbnRleHQgfSBmcm9tICdzcmMvaG9va3MvV2lkZ2V0SW50ZXJhY3Rpb24vdXRpbHMnO1xuaW1wb3J0IHtcbiAgRW52aXZlTWV0cmljc0V2ZW50TmFtZSxcbiAgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSxcbn0gZnJvbSAnc3JjL3NlcnZpY2VzL2FtcGxpdHVkZVNlcnZpY2UvYW1wbGl0dWRlU2VydmljZSc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50Jyk7XG5cbi8qKlxuICogVHJhY2tzIGEgY29tcG9uZW50IGFuZCBsb2dzIGBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRDb21wb25lbnRWaXNpYmxlYCB3aGVuIHZpc2libGUuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byB0cmFjayB2aXNpYmlsaXR5IG9mLlxuICogQHBhcmFtIGV2ZW50UHJvcHMgLSBQcm9wZXJ0aWVzIHRvIGluY2x1ZGUgd2l0aCB0aGUgZXZlbnQuXG4gKiBAcGFyYW0gcm9vdE1hcmdpbiAtIFJvb3QgbWFyZ2luIGZvciB0aGUgaW50ZXJzZWN0aW9uIG9ic2VydmVyIChkZWZhdWx0cyB0byAwcHgpLlxuICogQHBhcmFtIGVuYWJsZWQgLSBXaGV0aGVyIHRyYWNraW5nIGlzIGVuYWJsZWQgKGRlZmF1bHRzIHRvIHRydWUpLlxuICovXG5jb25zdCBzYWZlTm93ID0gKCk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnBlcmZvcm1hbmNlPy5ub3c/LigpIDogdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQgPSAoXG4gIGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgcm9vdE1hcmdpbjogc3RyaW5nID0gJzBweCcsXG4gIGVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlLFxuKTogeyBpc1Zpc2libGU6IGJvb2xlYW4gfSA9PiB7XG4gIC8vIGV2ZW50UHJvcHMgKHdpZGdldF9jb25maWdfaWQsIHdpZGdldF90eXBlLCDigKYpIGRvdWJsZSBhcyBsb2cgY29udGV4dCBzbyB0aGUgaG9vaydzXG4gIC8vIHZpc2liaWxpdHktZmFsbGJhY2sgZXJyb3IgaWRlbnRpZmllcyB3aGljaCB3aWRnZXQgaXQgcmVzY3VlZC5cbiAgY29uc3QgaXNWaXNpYmxlID0gdXNlSW50ZXJzZWN0aW9uKGVsZW1lbnQsIHJvb3RNYXJnaW4sIGV2ZW50UHJvcHMpO1xuICBjb25zdCBoYXNUcmFja2VkRXZlbnQgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCB7IHRyYWNrRXZlbnQgfSA9IHVzZUFtcGxpdHVkZSgpO1xuICBjb25zdCB2YXJpYW50SW5mbyA9IHVzZUF0b21WYWx1ZShwYWdlVmFyaWFudEluZm9BdG9tKTtcbiAgLy8gQ2FwdHVyZWQgb24gZmlyc3QgcmVuZGVyLCBub3Qgd2hlbiB0aGUgZXZlbnQgZmlyZXM6IFdpZGdldCBSZW5kZXJlZCBpc1xuICAvLyBlbWl0dGVkIGF0IHZpc2liaWxpdHksIHdoaWNoIGZvciBiZWxvdy10aGUtZm9sZCB3aWRnZXRzIGNhbiBiZSBsb25nXG4gIC8vIGFmdGVyIHRoZSB3aWRnZXQgYWN0dWFsbHkgcmVuZGVyZWQuIHBlcmZvcm1hbmNlLm5vdygpIGlzIHJlbGF0aXZlIHRvXG4gIC8vIG5hdmlnYXRpb24gc3RhcnQsIHNvIHRoaXMgcmVhZHMgYXMgXCJtcyBmcm9tIGluaXRpYWwgcGFnZSBsb2FkIHRvXG4gIC8vIHdpZGdldCByZW5kZXJcIi5cbiAgY29uc3QgcmVuZGVyT2Zmc2V0TXMgPSB1c2VSZWYoc2FmZU5vdygpKS5jdXJyZW50O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCdlZmZlY3QgcmFuJywge1xuICAgICAgZW5hYmxlZCxcbiAgICAgIGlzVmlzaWJsZSxcbiAgICAgIGhhc1RyYWNrZWRFdmVudDogaGFzVHJhY2tlZEV2ZW50LmN1cnJlbnQsXG4gICAgICBldmVudFByb3BzLFxuICAgIH0pO1xuXG4gICAgaWYgKCFlbmFibGVkKSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoJ3NraXBwZWQg4oCUIGVuYWJsZWQgaXMgZmFsc2UnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGhhc1RyYWNrZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoJ3NraXBwZWQg4oCUIGV2ZW50IGFscmVhZHkgdHJhY2tlZCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWlzVmlzaWJsZSkge1xuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdza2lwcGVkIOKAlCBlbGVtZW50IG5vdCB2aXNpYmxlJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCdmaXJpbmcgdHJhY2tpbmcgZXZlbnRzJywgZXZlbnRQcm9wcyk7XG4gICAgdHJhY2tFdmVudCh7XG4gICAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGUsXG4gICAgICBldmVudFByb3BzLFxuICAgIH0pO1xuICAgIHRyYWNrRXZlbnQoe1xuICAgICAgZXZlbnROYW1lOiBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLldpZGdldFJlbmRlcmVkLFxuICAgICAgZXZlbnRQcm9wczoge1xuICAgICAgICAuLi5ldmVudFByb3BzLFxuICAgICAgICB0cmlnZ2VyOiB7XG4gICAgICAgICAgd2lkZ2V0OiBldmVudFByb3BzPy53aWRnZXRfdHlwZSxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGV4dDogdmFyaWFudEluZm8gPyBleHRyYWN0UGFnZUNvbnRleHQodmFyaWFudEluZm8gYXMgUGFnZVZhcmlhbnRJbmZvKSA6IG51bGwsXG4gICAgICAgICdwZXJmb3JtYW5jZS5yZW5kZXJfb2Zmc2V0X21zJzogcmVuZGVyT2Zmc2V0TXMsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGhhc1RyYWNrZWRFdmVudC5jdXJyZW50ID0gdHJ1ZTtcbiAgfSwgW2VuYWJsZWQsIGlzVmlzaWJsZSwgZXZlbnRQcm9wcywgdHJhY2tFdmVudF0pO1xuICByZXR1cm4geyBpc1Zpc2libGUgfTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFhQSxNQUFNLFNBQVMsSUFBSUEsdUJBQU8sZ0NBQWdDOzs7Ozs7Ozs7QUFVMUQsTUFBTSxnQkFBb0M7QUFDeEMsS0FBSTtBQUNGLFNBQU8sT0FBTyxXQUFXLGNBQWMsT0FBTyxhQUFhLE9BQU8sR0FBRztTQUMvRDtBQUNOOzs7QUFJSixNQUFhLGlDQUNYLFNBQ0EsWUFDQSxhQUFxQixPQUNyQixVQUFtQixTQUNRO0NBRzNCLE1BQU0sWUFBWUMsd0NBQWdCLFNBQVMsWUFBWSxXQUFXO0NBQ2xFLE1BQU0sb0NBQXlCLE1BQU07Q0FDckMsTUFBTSxFQUFFLGVBQWVDLHVDQUFjO0NBQ3JDLE1BQU0sc0NBQTJCQyxvQ0FBb0I7Q0FNckQsTUFBTSxtQ0FBd0IsU0FBUyxDQUFDLENBQUM7QUFFekMsNEJBQWdCO0FBQ2QsU0FBTyxTQUFTLGNBQWM7R0FDNUI7R0FDQTtHQUNBLGlCQUFpQixnQkFBZ0I7R0FDakM7R0FDRCxDQUFDO0FBRUYsTUFBSSxDQUFDLFNBQVM7QUFDWixVQUFPLFNBQVMsNkJBQTZCO0FBQzdDOztBQUVGLE1BQUksZ0JBQWdCLFNBQVM7QUFDM0IsVUFBTyxTQUFTLGtDQUFrQztBQUNsRDs7QUFFRixNQUFJLENBQUMsV0FBVztBQUNkLFVBQU8sU0FBUyxnQ0FBZ0M7QUFDaEQ7O0FBR0YsU0FBTyxTQUFTLDBCQUEwQixXQUFXO0FBQ3JELGFBQVc7R0FDVCxXQUFXQywwQ0FBdUI7R0FDbEM7R0FDRCxDQUFDO0FBQ0YsYUFBVztHQUNULFdBQVdDLDBDQUF1QjtHQUNsQyxZQUFZO0lBQ1YsR0FBRztJQUNILFNBQVMsRUFDUCxRQUFRLFlBQVksYUFDckI7SUFDRCxTQUFTLGNBQWNDLHlEQUFtQixZQUErQixHQUFHO0lBQzVFLGdDQUFnQztJQUNqQztHQUNGLENBQUM7QUFDRixrQkFBZ0IsVUFBVTtJQUN6QjtFQUFDO0VBQVM7RUFBVztFQUFZO0VBQVcsQ0FBQztBQUNoRCxRQUFPLEVBQUUsV0FBVyJ9
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuY2pzIiwibmFtZXMiOlsiTG9nZ2VyIiwidXNlSW50ZXJzZWN0aW9uIiwidXNlQW1wbGl0dWRlIiwicGFnZVZhcmlhbnRJbmZvQXRvbSIsIlNwaWZmeU1ldHJpY3NFdmVudE5hbWUiLCJFbnZpdmVNZXRyaWNzRXZlbnROYW1lIiwiZXh0cmFjdFBhZ2VDb250ZXh0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50L3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IFJlZk9iamVjdCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgcGFnZVZhcmlhbnRJbmZvQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9hcHAnO1xuaW1wb3J0IHsgdXNlQW1wbGl0dWRlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2FtcGxpdHVkZUNvbnRleHQvYW1wbGl0dWRlQ29udGV4dCc7XG5pbXBvcnQgeyBQYWdlVmFyaWFudEluZm8gfSBmcm9tICdzcmMvY29udGV4dHMvcGFnZUNvbnRleHQvdHlwZXMnO1xuaW1wb3J0IHsgdXNlSW50ZXJzZWN0aW9uIH0gZnJvbSAnc3JjL2hvb2tzL0ludGVyc2VjdGlvbi91c2VJbnRlcnNlY3Rpb24nO1xuaW1wb3J0IHsgZXh0cmFjdFBhZ2VDb250ZXh0IH0gZnJvbSAnc3JjL2hvb2tzL1dpZGdldEludGVyYWN0aW9uL3V0aWxzJztcbmltcG9ydCB7XG4gIEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUsXG59IGZyb20gJ3NyYy9zZXJ2aWNlcy9hbXBsaXR1ZGVTZXJ2aWNlL2FtcGxpdHVkZVNlcnZpY2UnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCd1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudCcpO1xuXG4vKipcbiAqIFRyYWNrcyBhIGNvbXBvbmVudCBhbmQgbG9ncyBgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZWAgd2hlbiB2aXNpYmxlLlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gdHJhY2sgdmlzaWJpbGl0eSBvZi5cbiAqIEBwYXJhbSBldmVudFByb3BzIC0gUHJvcGVydGllcyB0byBpbmNsdWRlIHdpdGggdGhlIGV2ZW50LlxuICogQHBhcmFtIHJvb3RNYXJnaW4gLSBSb290IG1hcmdpbiBmb3IgdGhlIGludGVyc2VjdGlvbiBvYnNlcnZlciAoZGVmYXVsdHMgdG8gMHB4KS5cbiAqIEBwYXJhbSBlbmFibGVkIC0gV2hldGhlciB0cmFja2luZyBpcyBlbmFibGVkIChkZWZhdWx0cyB0byB0cnVlKS5cbiAqL1xuY29uc3Qgc2FmZU5vdyA9ICgpOiBudW1iZXIgfCB1bmRlZmluZWQgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5wZXJmb3JtYW5jZT8ubm93Py4oKSA6IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHVzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50ID0gKFxuICBlbGVtZW50OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+LFxuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHJvb3RNYXJnaW46IHN0cmluZyA9ICcwcHgnLFxuICBlbmFibGVkOiBib29sZWFuID0gdHJ1ZSxcbik6IHsgaXNWaXNpYmxlOiBib29sZWFuOyB2aXNpYmlsaXR5U291cmNlOiAnb2JzZXJ2ZXInIHwgJ2ZhbGxiYWNrJyB8ICdwZW5kaW5nJyB9ID0+IHtcbiAgLy8gSG93IHZpc2liaWxpdHkgd2FzIGVzdGFibGlzaGVkLCBmb3Igd2lkZ2V0LWxvYWQgZGlhZ25vc3RpY3M6XG4gIC8vICAtICdwZW5kaW5nJyAg4oCUIG5vdCBjb25maXJtZWQgYnkgZWl0aGVyIHBhdGggeWV0LiBTdGF5cyB0aGlzIHdheSBmb3IgYSBgZGVmZXJMb2FkaW5nOiBmYWxzZWBcbiAgLy8gICAgICAgICAgICAgICAgIHdpZGdldCB3aG9zZSByZXF1ZXN0cyBzZXR0bGUgYmVmb3JlIHRoZSBvYnNlcnZlciBldmVyIHJlcG9ydHMsIHNvIHdlIGRvbid0XG4gIC8vICAgICAgICAgICAgICAgICBmYWxzZWx5IGNsYWltICdvYnNlcnZlcicgZm9yIGEgbG9hZCB0aGF0IG5ldmVyIHdhaXRlZCBvbiB2aXNpYmlsaXR5LlxuICAvLyAgLSAnb2JzZXJ2ZXInIOKAlCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgcmVwb3J0ZWQgdGhlIGVsZW1lbnQgdmlzaWJsZS5cbiAgLy8gIC0gJ2ZhbGxiYWNrJyDigJQgdGhlIHJlY29uY2lsZSBmYWxsYmFjayBoYWQgdG8gZm9yY2UgaXQgKG9ic2VydmVyIHN0YXllZCBzaWxlbnQgb24tc2NyZWVuKS5cbiAgLy8gU3RhdGUgKG5vdCBhIHJlZikgc28gY29uc3VtZXJzIHJlbGlhYmx5IHJlLXJlbmRlciB3aGVuIHRoZSBzb3VyY2UgcmVzb2x2ZXMuXG4gIGNvbnN0IFt2aXNpYmlsaXR5U291cmNlLCBzZXRWaXNpYmlsaXR5U291cmNlXSA9IHVzZVN0YXRlPCdvYnNlcnZlcicgfCAnZmFsbGJhY2snIHwgJ3BlbmRpbmcnPihcbiAgICAncGVuZGluZycsXG4gICk7XG4gIC8vIGV2ZW50UHJvcHMgKHdpZGdldF9jb25maWdfaWQsIHdpZGdldF90eXBlLCDigKYpIGRvdWJsZSBhcyBsb2cgY29udGV4dCBzbyB0aGUgaG9vaydzXG4gIC8vIHZpc2liaWxpdHktZmFsbGJhY2sgZXJyb3IgaWRlbnRpZmllcyB3aGljaCB3aWRnZXQgaXQgcmVzY3VlZC5cbiAgY29uc3QgaXNWaXNpYmxlID0gdXNlSW50ZXJzZWN0aW9uKGVsZW1lbnQsIHJvb3RNYXJnaW4sIGV2ZW50UHJvcHMsICgpID0+IHtcbiAgICAvLyBUaGUgb2JzZXJ2ZXIgc3RheWVkIHNpbGVudCBvbi1zY3JlZW4gYW5kIHRoZSBmYWxsYmFjayBmb3JjZWQgdmlzaWJpbGl0eS4gVGhpcyBpcyByZWNvcmRlZFxuICAgIC8vIGJlZm9yZSB1c2VJbnRlcnNlY3Rpb24ncyBvd24gc2V0SXNWaXNpYmxlLCBzbyBpdCB3aW5zIG92ZXIgdGhlICdvYnNlcnZlcicgcmVzb2x1dGlvbiBiZWxvdy5cbiAgICBzZXRWaXNpYmlsaXR5U291cmNlKHByZXYgPT4gKHByZXYgPT09ICdwZW5kaW5nJyA/ICdmYWxsYmFjaycgOiBwcmV2KSk7XG4gIH0pO1xuICAvLyBSZXNvbHZlICdwZW5kaW5nJyDihpIgJ29ic2VydmVyJyBvbmNlIHRoZSBvYnNlcnZlciBlc3RhYmxpc2hlcyB2aXNpYmlsaXR5OyBhICdmYWxsYmFjaydcbiAgLy8gYWxyZWFkeSByZWNvcmRlZCBhYm92ZSBpcyBwcmVzZXJ2ZWQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmlzaWJsZSkgc2V0VmlzaWJpbGl0eVNvdXJjZShwcmV2ID0+IChwcmV2ID09PSAncGVuZGluZycgPyAnb2JzZXJ2ZXInIDogcHJldikpO1xuICB9LCBbaXNWaXNpYmxlXSk7XG4gIGNvbnN0IGhhc1RyYWNrZWRFdmVudCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHsgdHJhY2tFdmVudCB9ID0gdXNlQW1wbGl0dWRlKCk7XG4gIGNvbnN0IHZhcmlhbnRJbmZvID0gdXNlQXRvbVZhbHVlKHBhZ2VWYXJpYW50SW5mb0F0b20pO1xuICAvLyBDYXB0dXJlZCBvbiBmaXJzdCByZW5kZXIsIG5vdCB3aGVuIHRoZSBldmVudCBmaXJlczogV2lkZ2V0IFJlbmRlcmVkIGlzXG4gIC8vIGVtaXR0ZWQgYXQgdmlzaWJpbGl0eSwgd2hpY2ggZm9yIGJlbG93LXRoZS1mb2xkIHdpZGdldHMgY2FuIGJlIGxvbmdcbiAgLy8gYWZ0ZXIgdGhlIHdpZGdldCBhY3R1YWxseSByZW5kZXJlZC4gcGVyZm9ybWFuY2Uubm93KCkgaXMgcmVsYXRpdmUgdG9cbiAgLy8gbmF2aWdhdGlvbiBzdGFydCwgc28gdGhpcyByZWFkcyBhcyBcIm1zIGZyb20gaW5pdGlhbCBwYWdlIGxvYWQgdG9cbiAgLy8gd2lkZ2V0IHJlbmRlclwiLlxuICBjb25zdCByZW5kZXJPZmZzZXRNcyA9IHVzZVJlZihzYWZlTm93KCkpLmN1cnJlbnQ7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2dnZXIubG9nRGVidWcoJ2VmZmVjdCByYW4nLCB7XG4gICAgICBlbmFibGVkLFxuICAgICAgaXNWaXNpYmxlLFxuICAgICAgaGFzVHJhY2tlZEV2ZW50OiBoYXNUcmFja2VkRXZlbnQuY3VycmVudCxcbiAgICAgIGV2ZW50UHJvcHMsXG4gICAgfSk7XG5cbiAgICBpZiAoIWVuYWJsZWQpIHtcbiAgICAgIGxvZ2dlci5sb2dEZWJ1Zygnc2tpcHBlZCDigJQgZW5hYmxlZCBpcyBmYWxzZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaGFzVHJhY2tlZEV2ZW50LmN1cnJlbnQpIHtcbiAgICAgIGxvZ2dlci5sb2dEZWJ1Zygnc2tpcHBlZCDigJQgZXZlbnQgYWxyZWFkeSB0cmFja2VkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNWaXNpYmxlKSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoJ3NraXBwZWQg4oCUIGVsZW1lbnQgbm90IHZpc2libGUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2dnZXIubG9nRGVidWcoJ2ZpcmluZyB0cmFja2luZyBldmVudHMnLCBldmVudFByb3BzKTtcbiAgICB0cmFja0V2ZW50KHtcbiAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZSxcbiAgICAgIGV2ZW50UHJvcHMsXG4gICAgfSk7XG4gICAgdHJhY2tFdmVudCh7XG4gICAgICBldmVudE5hbWU6IEVudml2ZU1ldHJpY3NFdmVudE5hbWUuV2lkZ2V0UmVuZGVyZWQsXG4gICAgICBldmVudFByb3BzOiB7XG4gICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICAgIHRyaWdnZXI6IHtcbiAgICAgICAgICB3aWRnZXQ6IGV2ZW50UHJvcHM/LndpZGdldF90eXBlLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZXh0OiB2YXJpYW50SW5mbyA/IGV4dHJhY3RQYWdlQ29udGV4dCh2YXJpYW50SW5mbyBhcyBQYWdlVmFyaWFudEluZm8pIDogbnVsbCxcbiAgICAgICAgJ3BlcmZvcm1hbmNlLnJlbmRlcl9vZmZzZXRfbXMnOiByZW5kZXJPZmZzZXRNcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgaGFzVHJhY2tlZEV2ZW50LmN1cnJlbnQgPSB0cnVlO1xuICB9LCBbZW5hYmxlZCwgaXNWaXNpYmxlLCBldmVudFByb3BzLCB0cmFja0V2ZW50XSk7XG4gIHJldHVybiB7IGlzVmlzaWJsZSwgdmlzaWJpbGl0eVNvdXJjZSB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQWFBLE1BQU0sU0FBUyxJQUFJQSx1QkFBTyxnQ0FBZ0M7Ozs7Ozs7OztBQVUxRCxNQUFNLGdCQUFvQztBQUN4QyxLQUFJO0FBQ0YsU0FBTyxPQUFPLFdBQVcsY0FBYyxPQUFPLGFBQWEsT0FBTyxHQUFHO1NBQy9EO0FBQ047OztBQUlKLE1BQWEsaUNBQ1gsU0FDQSxZQUNBLGFBQXFCLE9BQ3JCLFVBQW1CLFNBQytEO0NBUWxGLE1BQU0sQ0FBQyxrQkFBa0IsMkNBQ3ZCLFVBQ0Q7Q0FHRCxNQUFNLFlBQVlDLHdDQUFnQixTQUFTLFlBQVksa0JBQWtCO0FBR3ZFLHVCQUFvQixTQUFTLFNBQVMsWUFBWSxhQUFhLEtBQU07R0FDckU7QUFHRiw0QkFBZ0I7QUFDZCxNQUFJLFVBQVcsc0JBQW9CLFNBQVMsU0FBUyxZQUFZLGFBQWEsS0FBTTtJQUNuRixDQUFDLFVBQVUsQ0FBQztDQUNmLE1BQU0sb0NBQXlCLE1BQU07Q0FDckMsTUFBTSxFQUFFLGVBQWVDLHVDQUFjO0NBQ3JDLE1BQU0sc0NBQTJCQyxvQ0FBb0I7Q0FNckQsTUFBTSxtQ0FBd0IsU0FBUyxDQUFDLENBQUM7QUFFekMsNEJBQWdCO0FBQ2QsU0FBTyxTQUFTLGNBQWM7R0FDNUI7R0FDQTtHQUNBLGlCQUFpQixnQkFBZ0I7R0FDakM7R0FDRCxDQUFDO0FBRUYsTUFBSSxDQUFDLFNBQVM7QUFDWixVQUFPLFNBQVMsNkJBQTZCO0FBQzdDOztBQUVGLE1BQUksZ0JBQWdCLFNBQVM7QUFDM0IsVUFBTyxTQUFTLGtDQUFrQztBQUNsRDs7QUFFRixNQUFJLENBQUMsV0FBVztBQUNkLFVBQU8sU0FBUyxnQ0FBZ0M7QUFDaEQ7O0FBR0YsU0FBTyxTQUFTLDBCQUEwQixXQUFXO0FBQ3JELGFBQVc7R0FDVCxXQUFXQywwQ0FBdUI7R0FDbEM7R0FDRCxDQUFDO0FBQ0YsYUFBVztHQUNULFdBQVdDLDBDQUF1QjtHQUNsQyxZQUFZO0lBQ1YsR0FBRztJQUNILFNBQVMsRUFDUCxRQUFRLFlBQVksYUFDckI7SUFDRCxTQUFTLGNBQWNDLHlEQUFtQixZQUErQixHQUFHO0lBQzVFLGdDQUFnQztJQUNqQztHQUNGLENBQUM7QUFDRixrQkFBZ0IsVUFBVTtJQUN6QjtFQUFDO0VBQVM7RUFBVztFQUFZO0VBQVcsQ0FBQztBQUNoRCxRQUFPO0VBQUU7RUFBVztFQUFrQiJ9
@@ -3,7 +3,8 @@ import { RefObject } from "react";
3
3
  //#region src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts
4
4
  declare const useTrackComponentVisibleEvent: (element: RefObject<HTMLElement>, eventProps?: Record<string, unknown>, rootMargin?: string, enabled?: boolean) => {
5
5
  isVisible: boolean;
6
+ visibilitySource: "observer" | "fallback" | "pending";
6
7
  };
7
8
  //#endregion
8
9
  export { useTrackComponentVisibleEvent };
9
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50L3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQ6IChlbGVtZW50OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+LCBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJvb3RNYXJnaW4/OiBzdHJpbmcsIGVuYWJsZWQ/OiBib29sZWFuKSA9PiB7XG4gICAgaXNWaXNpYmxlOiBib29sZWFuO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBVyxnQ0FBZ0M7Q0FBQztPQUFXO09BQW1CO09BQWlCO0NBQU8ifQ==
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1RyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50L3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVmT2JqZWN0IH0gZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQ6IChlbGVtZW50OiBSZWZPYmplY3Q8SFRNTEVsZW1lbnQ+LCBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJvb3RNYXJnaW4/OiBzdHJpbmcsIGVuYWJsZWQ/OiBib29sZWFuKSA9PiB7XG4gICAgaXNWaXNpYmxlOiBib29sZWFuO1xuICAgIHZpc2liaWxpdHlTb3VyY2U6IFwib2JzZXJ2ZXJcIiB8IFwiZmFsbGJhY2tcIiB8IFwicGVuZGluZ1wiO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBVyxnQ0FBZ0M7Q0FBQztPQUFXO09BQW1CO09BQWlCO0NBQU8ifQ==
@@ -3,7 +3,8 @@ import { RefObject } from "react";
3
3
  //#region src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts
4
4
  declare const useTrackComponentVisibleEvent: (element: RefObject<HTMLElement>, eventProps?: Record<string, unknown>, rootMargin?: string, enabled?: boolean) => {
5
5
  isVisible: boolean;
6
+ visibilitySource: "observer" | "fallback" | "pending";
6
7
  };
7
8
  //#endregion
8
9
  export { useTrackComponentVisibleEvent };
9
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQvdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZPYmplY3QgfSBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudDogKGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcm9vdE1hcmdpbj86IHN0cmluZywgZW5hYmxlZD86IGJvb2xlYW4pID0+IHtcbiAgICBpc1Zpc2libGU6IGJvb2xlYW47XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFXLGdDQUFnQztDQUFDO09BQVc7T0FBbUI7T0FBaUI7Q0FBTyJ9
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQvdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWZPYmplY3QgfSBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudDogKGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcm9vdE1hcmdpbj86IHN0cmluZywgZW5hYmxlZD86IGJvb2xlYW4pID0+IHtcbiAgICBpc1Zpc2libGU6IGJvb2xlYW47XG4gICAgdmlzaWJpbGl0eVNvdXJjZTogXCJvYnNlcnZlclwiIHwgXCJmYWxsYmFja1wiIHwgXCJwZW5kaW5nXCI7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFXLGdDQUFnQztDQUFDO09BQVc7T0FBbUI7T0FBaUI7Q0FBTyJ9
@@ -6,7 +6,7 @@ import "../../atoms/app/index.js";
6
6
  import { useAmplitude } from "../../contexts/amplitudeContext/amplitudeContext.js";
7
7
  import { extractPageContext } from "../WidgetInteraction/utils.js";
8
8
  import { useIntersection } from "../Intersection/useIntersection.js";
9
- import { useEffect, useRef } from "react";
9
+ import { useEffect, useRef, useState } from "react";
10
10
  import { useAtomValue } from "jotai";
11
11
 
12
12
  //#region src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts
@@ -27,7 +27,13 @@ const safeNow = () => {
27
27
  }
28
28
  };
29
29
  const useTrackComponentVisibleEvent = (element, eventProps, rootMargin = "0px", enabled = true) => {
30
- const isVisible = useIntersection(element, rootMargin, eventProps);
30
+ const [visibilitySource, setVisibilitySource] = useState("pending");
31
+ const isVisible = useIntersection(element, rootMargin, eventProps, () => {
32
+ setVisibilitySource((prev) => prev === "pending" ? "fallback" : prev);
33
+ });
34
+ useEffect(() => {
35
+ if (isVisible) setVisibilitySource((prev) => prev === "pending" ? "observer" : prev);
36
+ }, [isVisible]);
31
37
  const hasTrackedEvent = useRef(false);
32
38
  const { trackEvent } = useAmplitude();
33
39
  const variantInfo = useAtomValue(pageVariantInfoAtom);
@@ -72,9 +78,12 @@ const useTrackComponentVisibleEvent = (element, eventProps, rootMargin = "0px",
72
78
  eventProps,
73
79
  trackEvent
74
80
  ]);
75
- return { isVisible };
81
+ return {
82
+ isVisible,
83
+ visibilitySource
84
+ };
76
85
  };
77
86
 
78
87
  //#endregion
79
88
  export { useTrackComponentVisibleEvent };
80
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuanMiLCJuYW1lcyI6WyJMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQvdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQXRvbVZhbHVlIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgUmVmT2JqZWN0LCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IHBhZ2VWYXJpYW50SW5mb0F0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7IHVzZUFtcGxpdHVkZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgUGFnZVZhcmlhbnRJbmZvIH0gZnJvbSAnc3JjL2NvbnRleHRzL3BhZ2VDb250ZXh0L3R5cGVzJztcbmltcG9ydCB7IHVzZUludGVyc2VjdGlvbiB9IGZyb20gJ3NyYy9ob29rcy9JbnRlcnNlY3Rpb24vdXNlSW50ZXJzZWN0aW9uJztcbmltcG9ydCB7IGV4dHJhY3RQYWdlQ29udGV4dCB9IGZyb20gJ3NyYy9ob29rcy9XaWRnZXRJbnRlcmFjdGlvbi91dGlscyc7XG5pbXBvcnQge1xuICBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLFxuICBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLFxufSBmcm9tICdzcmMvc2VydmljZXMvYW1wbGl0dWRlU2VydmljZS9hbXBsaXR1ZGVTZXJ2aWNlJztcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcigndXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQnKTtcblxuLyoqXG4gKiBUcmFja3MgYSBjb21wb25lbnQgYW5kIGxvZ3MgYFNwaWZmeU1ldHJpY3NFdmVudE5hbWUuQ2hhdENvbXBvbmVudFZpc2libGVgIHdoZW4gdmlzaWJsZS5cbiAqXG4gKiBAcGFyYW0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIHRyYWNrIHZpc2liaWxpdHkgb2YuXG4gKiBAcGFyYW0gZXZlbnRQcm9wcyAtIFByb3BlcnRpZXMgdG8gaW5jbHVkZSB3aXRoIHRoZSBldmVudC5cbiAqIEBwYXJhbSByb290TWFyZ2luIC0gUm9vdCBtYXJnaW4gZm9yIHRoZSBpbnRlcnNlY3Rpb24gb2JzZXJ2ZXIgKGRlZmF1bHRzIHRvIDBweCkuXG4gKiBAcGFyYW0gZW5hYmxlZCAtIFdoZXRoZXIgdHJhY2tpbmcgaXMgZW5hYmxlZCAoZGVmYXVsdHMgdG8gdHJ1ZSkuXG4gKi9cbmNvbnN0IHNhZmVOb3cgPSAoKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cucGVyZm9ybWFuY2U/Lm5vdz8uKCkgOiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB1c2VUcmFja0NvbXBvbmVudFZpc2libGVFdmVudCA9IChcbiAgZWxlbWVudDogUmVmT2JqZWN0PEhUTUxFbGVtZW50PixcbiAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICByb290TWFyZ2luOiBzdHJpbmcgPSAnMHB4JyxcbiAgZW5hYmxlZDogYm9vbGVhbiA9IHRydWUsXG4pOiB7IGlzVmlzaWJsZTogYm9vbGVhbiB9ID0+IHtcbiAgLy8gZXZlbnRQcm9wcyAod2lkZ2V0X2NvbmZpZ19pZCwgd2lkZ2V0X3R5cGUsIOKApikgZG91YmxlIGFzIGxvZyBjb250ZXh0IHNvIHRoZSBob29rJ3NcbiAgLy8gdmlzaWJpbGl0eS1mYWxsYmFjayBlcnJvciBpZGVudGlmaWVzIHdoaWNoIHdpZGdldCBpdCByZXNjdWVkLlxuICBjb25zdCBpc1Zpc2libGUgPSB1c2VJbnRlcnNlY3Rpb24oZWxlbWVudCwgcm9vdE1hcmdpbiwgZXZlbnRQcm9wcyk7XG4gIGNvbnN0IGhhc1RyYWNrZWRFdmVudCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHsgdHJhY2tFdmVudCB9ID0gdXNlQW1wbGl0dWRlKCk7XG4gIGNvbnN0IHZhcmlhbnRJbmZvID0gdXNlQXRvbVZhbHVlKHBhZ2VWYXJpYW50SW5mb0F0b20pO1xuICAvLyBDYXB0dXJlZCBvbiBmaXJzdCByZW5kZXIsIG5vdCB3aGVuIHRoZSBldmVudCBmaXJlczogV2lkZ2V0IFJlbmRlcmVkIGlzXG4gIC8vIGVtaXR0ZWQgYXQgdmlzaWJpbGl0eSwgd2hpY2ggZm9yIGJlbG93LXRoZS1mb2xkIHdpZGdldHMgY2FuIGJlIGxvbmdcbiAgLy8gYWZ0ZXIgdGhlIHdpZGdldCBhY3R1YWxseSByZW5kZXJlZC4gcGVyZm9ybWFuY2Uubm93KCkgaXMgcmVsYXRpdmUgdG9cbiAgLy8gbmF2aWdhdGlvbiBzdGFydCwgc28gdGhpcyByZWFkcyBhcyBcIm1zIGZyb20gaW5pdGlhbCBwYWdlIGxvYWQgdG9cbiAgLy8gd2lkZ2V0IHJlbmRlclwiLlxuICBjb25zdCByZW5kZXJPZmZzZXRNcyA9IHVzZVJlZihzYWZlTm93KCkpLmN1cnJlbnQ7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2dnZXIubG9nRGVidWcoJ2VmZmVjdCByYW4nLCB7XG4gICAgICBlbmFibGVkLFxuICAgICAgaXNWaXNpYmxlLFxuICAgICAgaGFzVHJhY2tlZEV2ZW50OiBoYXNUcmFja2VkRXZlbnQuY3VycmVudCxcbiAgICAgIGV2ZW50UHJvcHMsXG4gICAgfSk7XG5cbiAgICBpZiAoIWVuYWJsZWQpIHtcbiAgICAgIGxvZ2dlci5sb2dEZWJ1Zygnc2tpcHBlZCDigJQgZW5hYmxlZCBpcyBmYWxzZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaGFzVHJhY2tlZEV2ZW50LmN1cnJlbnQpIHtcbiAgICAgIGxvZ2dlci5sb2dEZWJ1Zygnc2tpcHBlZCDigJQgZXZlbnQgYWxyZWFkeSB0cmFja2VkJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNWaXNpYmxlKSB7XG4gICAgICBsb2dnZXIubG9nRGVidWcoJ3NraXBwZWQg4oCUIGVsZW1lbnQgbm90IHZpc2libGUnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2dnZXIubG9nRGVidWcoJ2ZpcmluZyB0cmFja2luZyBldmVudHMnLCBldmVudFByb3BzKTtcbiAgICB0cmFja0V2ZW50KHtcbiAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0Q29tcG9uZW50VmlzaWJsZSxcbiAgICAgIGV2ZW50UHJvcHMsXG4gICAgfSk7XG4gICAgdHJhY2tFdmVudCh7XG4gICAgICBldmVudE5hbWU6IEVudml2ZU1ldHJpY3NFdmVudE5hbWUuV2lkZ2V0UmVuZGVyZWQsXG4gICAgICBldmVudFByb3BzOiB7XG4gICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICAgIHRyaWdnZXI6IHtcbiAgICAgICAgICB3aWRnZXQ6IGV2ZW50UHJvcHM/LndpZGdldF90eXBlLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZXh0OiB2YXJpYW50SW5mbyA/IGV4dHJhY3RQYWdlQ29udGV4dCh2YXJpYW50SW5mbyBhcyBQYWdlVmFyaWFudEluZm8pIDogbnVsbCxcbiAgICAgICAgJ3BlcmZvcm1hbmNlLnJlbmRlcl9vZmZzZXRfbXMnOiByZW5kZXJPZmZzZXRNcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgaGFzVHJhY2tlZEV2ZW50LmN1cnJlbnQgPSB0cnVlO1xuICB9LCBbZW5hYmxlZCwgaXNWaXNpYmxlLCBldmVudFByb3BzLCB0cmFja0V2ZW50XSk7XG4gIHJldHVybiB7IGlzVmlzaWJsZSB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBYUEsTUFBTSxTQUFTLElBQUlBLGVBQU8sZ0NBQWdDOzs7Ozs7Ozs7QUFVMUQsTUFBTSxnQkFBb0M7QUFDeEMsS0FBSTtBQUNGLFNBQU8sT0FBTyxXQUFXLGNBQWMsT0FBTyxhQUFhLE9BQU8sR0FBRztTQUMvRDtBQUNOOzs7QUFJSixNQUFhLGlDQUNYLFNBQ0EsWUFDQSxhQUFxQixPQUNyQixVQUFtQixTQUNRO0NBRzNCLE1BQU0sWUFBWSxnQkFBZ0IsU0FBUyxZQUFZLFdBQVc7Q0FDbEUsTUFBTSxrQkFBa0IsT0FBTyxNQUFNO0NBQ3JDLE1BQU0sRUFBRSxlQUFlLGNBQWM7Q0FDckMsTUFBTSxjQUFjLGFBQWEsb0JBQW9CO0NBTXJELE1BQU0saUJBQWlCLE9BQU8sU0FBUyxDQUFDLENBQUM7QUFFekMsaUJBQWdCO0FBQ2QsU0FBTyxTQUFTLGNBQWM7R0FDNUI7R0FDQTtHQUNBLGlCQUFpQixnQkFBZ0I7R0FDakM7R0FDRCxDQUFDO0FBRUYsTUFBSSxDQUFDLFNBQVM7QUFDWixVQUFPLFNBQVMsNkJBQTZCO0FBQzdDOztBQUVGLE1BQUksZ0JBQWdCLFNBQVM7QUFDM0IsVUFBTyxTQUFTLGtDQUFrQztBQUNsRDs7QUFFRixNQUFJLENBQUMsV0FBVztBQUNkLFVBQU8sU0FBUyxnQ0FBZ0M7QUFDaEQ7O0FBR0YsU0FBTyxTQUFTLDBCQUEwQixXQUFXO0FBQ3JELGFBQVc7R0FDVCxXQUFXLHVCQUF1QjtHQUNsQztHQUNELENBQUM7QUFDRixhQUFXO0dBQ1QsV0FBVyx1QkFBdUI7R0FDbEMsWUFBWTtJQUNWLEdBQUc7SUFDSCxTQUFTLEVBQ1AsUUFBUSxZQUFZLGFBQ3JCO0lBQ0QsU0FBUyxjQUFjLG1CQUFtQixZQUErQixHQUFHO0lBQzVFLGdDQUFnQztJQUNqQztHQUNGLENBQUM7QUFDRixrQkFBZ0IsVUFBVTtJQUN6QjtFQUFDO0VBQVM7RUFBVztFQUFZO0VBQVcsQ0FBQztBQUNoRCxRQUFPLEVBQUUsV0FBVyJ9
89
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQuanMiLCJuYW1lcyI6WyJMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQvdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQXRvbVZhbHVlIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgUmVmT2JqZWN0LCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBwYWdlVmFyaWFudEluZm9BdG9tIH0gZnJvbSAnc3JjL2F0b21zL2FwcCc7XG5pbXBvcnQgeyB1c2VBbXBsaXR1ZGUgfSBmcm9tICdzcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0JztcbmltcG9ydCB7IFBhZ2VWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9jb250ZXh0cy9wYWdlQ29udGV4dC90eXBlcyc7XG5pbXBvcnQgeyB1c2VJbnRlcnNlY3Rpb24gfSBmcm9tICdzcmMvaG9va3MvSW50ZXJzZWN0aW9uL3VzZUludGVyc2VjdGlvbic7XG5pbXBvcnQgeyBleHRyYWN0UGFnZUNvbnRleHQgfSBmcm9tICdzcmMvaG9va3MvV2lkZ2V0SW50ZXJhY3Rpb24vdXRpbHMnO1xuaW1wb3J0IHtcbiAgRW52aXZlTWV0cmljc0V2ZW50TmFtZSxcbiAgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSxcbn0gZnJvbSAnc3JjL3NlcnZpY2VzL2FtcGxpdHVkZVNlcnZpY2UvYW1wbGl0dWRlU2VydmljZSc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ3VzZVRyYWNrQ29tcG9uZW50VmlzaWJsZUV2ZW50Jyk7XG5cbi8qKlxuICogVHJhY2tzIGEgY29tcG9uZW50IGFuZCBsb2dzIGBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRDb21wb25lbnRWaXNpYmxlYCB3aGVuIHZpc2libGUuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byB0cmFjayB2aXNpYmlsaXR5IG9mLlxuICogQHBhcmFtIGV2ZW50UHJvcHMgLSBQcm9wZXJ0aWVzIHRvIGluY2x1ZGUgd2l0aCB0aGUgZXZlbnQuXG4gKiBAcGFyYW0gcm9vdE1hcmdpbiAtIFJvb3QgbWFyZ2luIGZvciB0aGUgaW50ZXJzZWN0aW9uIG9ic2VydmVyIChkZWZhdWx0cyB0byAwcHgpLlxuICogQHBhcmFtIGVuYWJsZWQgLSBXaGV0aGVyIHRyYWNraW5nIGlzIGVuYWJsZWQgKGRlZmF1bHRzIHRvIHRydWUpLlxuICovXG5jb25zdCBzYWZlTm93ID0gKCk6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnBlcmZvcm1hbmNlPy5ub3c/LigpIDogdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXNlVHJhY2tDb21wb25lbnRWaXNpYmxlRXZlbnQgPSAoXG4gIGVsZW1lbnQ6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4sXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgcm9vdE1hcmdpbjogc3RyaW5nID0gJzBweCcsXG4gIGVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlLFxuKTogeyBpc1Zpc2libGU6IGJvb2xlYW47IHZpc2liaWxpdHlTb3VyY2U6ICdvYnNlcnZlcicgfCAnZmFsbGJhY2snIHwgJ3BlbmRpbmcnIH0gPT4ge1xuICAvLyBIb3cgdmlzaWJpbGl0eSB3YXMgZXN0YWJsaXNoZWQsIGZvciB3aWRnZXQtbG9hZCBkaWFnbm9zdGljczpcbiAgLy8gIC0gJ3BlbmRpbmcnICDigJQgbm90IGNvbmZpcm1lZCBieSBlaXRoZXIgcGF0aCB5ZXQuIFN0YXlzIHRoaXMgd2F5IGZvciBhIGBkZWZlckxvYWRpbmc6IGZhbHNlYFxuICAvLyAgICAgICAgICAgICAgICAgd2lkZ2V0IHdob3NlIHJlcXVlc3RzIHNldHRsZSBiZWZvcmUgdGhlIG9ic2VydmVyIGV2ZXIgcmVwb3J0cywgc28gd2UgZG9uJ3RcbiAgLy8gICAgICAgICAgICAgICAgIGZhbHNlbHkgY2xhaW0gJ29ic2VydmVyJyBmb3IgYSBsb2FkIHRoYXQgbmV2ZXIgd2FpdGVkIG9uIHZpc2liaWxpdHkuXG4gIC8vICAtICdvYnNlcnZlcicg4oCUIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlciByZXBvcnRlZCB0aGUgZWxlbWVudCB2aXNpYmxlLlxuICAvLyAgLSAnZmFsbGJhY2snIOKAlCB0aGUgcmVjb25jaWxlIGZhbGxiYWNrIGhhZCB0byBmb3JjZSBpdCAob2JzZXJ2ZXIgc3RheWVkIHNpbGVudCBvbi1zY3JlZW4pLlxuICAvLyBTdGF0ZSAobm90IGEgcmVmKSBzbyBjb25zdW1lcnMgcmVsaWFibHkgcmUtcmVuZGVyIHdoZW4gdGhlIHNvdXJjZSByZXNvbHZlcy5cbiAgY29uc3QgW3Zpc2liaWxpdHlTb3VyY2UsIHNldFZpc2liaWxpdHlTb3VyY2VdID0gdXNlU3RhdGU8J29ic2VydmVyJyB8ICdmYWxsYmFjaycgfCAncGVuZGluZyc+KFxuICAgICdwZW5kaW5nJyxcbiAgKTtcbiAgLy8gZXZlbnRQcm9wcyAod2lkZ2V0X2NvbmZpZ19pZCwgd2lkZ2V0X3R5cGUsIOKApikgZG91YmxlIGFzIGxvZyBjb250ZXh0IHNvIHRoZSBob29rJ3NcbiAgLy8gdmlzaWJpbGl0eS1mYWxsYmFjayBlcnJvciBpZGVudGlmaWVzIHdoaWNoIHdpZGdldCBpdCByZXNjdWVkLlxuICBjb25zdCBpc1Zpc2libGUgPSB1c2VJbnRlcnNlY3Rpb24oZWxlbWVudCwgcm9vdE1hcmdpbiwgZXZlbnRQcm9wcywgKCkgPT4ge1xuICAgIC8vIFRoZSBvYnNlcnZlciBzdGF5ZWQgc2lsZW50IG9uLXNjcmVlbiBhbmQgdGhlIGZhbGxiYWNrIGZvcmNlZCB2aXNpYmlsaXR5LiBUaGlzIGlzIHJlY29yZGVkXG4gICAgLy8gYmVmb3JlIHVzZUludGVyc2VjdGlvbidzIG93biBzZXRJc1Zpc2libGUsIHNvIGl0IHdpbnMgb3ZlciB0aGUgJ29ic2VydmVyJyByZXNvbHV0aW9uIGJlbG93LlxuICAgIHNldFZpc2liaWxpdHlTb3VyY2UocHJldiA9PiAocHJldiA9PT0gJ3BlbmRpbmcnID8gJ2ZhbGxiYWNrJyA6IHByZXYpKTtcbiAgfSk7XG4gIC8vIFJlc29sdmUgJ3BlbmRpbmcnIOKGkiAnb2JzZXJ2ZXInIG9uY2UgdGhlIG9ic2VydmVyIGVzdGFibGlzaGVzIHZpc2liaWxpdHk7IGEgJ2ZhbGxiYWNrJ1xuICAvLyBhbHJlYWR5IHJlY29yZGVkIGFib3ZlIGlzIHByZXNlcnZlZC5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlKSBzZXRWaXNpYmlsaXR5U291cmNlKHByZXYgPT4gKHByZXYgPT09ICdwZW5kaW5nJyA/ICdvYnNlcnZlcicgOiBwcmV2KSk7XG4gIH0sIFtpc1Zpc2libGVdKTtcbiAgY29uc3QgaGFzVHJhY2tlZEV2ZW50ID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgeyB0cmFja0V2ZW50IH0gPSB1c2VBbXBsaXR1ZGUoKTtcbiAgY29uc3QgdmFyaWFudEluZm8gPSB1c2VBdG9tVmFsdWUocGFnZVZhcmlhbnRJbmZvQXRvbSk7XG4gIC8vIENhcHR1cmVkIG9uIGZpcnN0IHJlbmRlciwgbm90IHdoZW4gdGhlIGV2ZW50IGZpcmVzOiBXaWRnZXQgUmVuZGVyZWQgaXNcbiAgLy8gZW1pdHRlZCBhdCB2aXNpYmlsaXR5LCB3aGljaCBmb3IgYmVsb3ctdGhlLWZvbGQgd2lkZ2V0cyBjYW4gYmUgbG9uZ1xuICAvLyBhZnRlciB0aGUgd2lkZ2V0IGFjdHVhbGx5IHJlbmRlcmVkLiBwZXJmb3JtYW5jZS5ub3coKSBpcyByZWxhdGl2ZSB0b1xuICAvLyBuYXZpZ2F0aW9uIHN0YXJ0LCBzbyB0aGlzIHJlYWRzIGFzIFwibXMgZnJvbSBpbml0aWFsIHBhZ2UgbG9hZCB0b1xuICAvLyB3aWRnZXQgcmVuZGVyXCIuXG4gIGNvbnN0IHJlbmRlck9mZnNldE1zID0gdXNlUmVmKHNhZmVOb3coKSkuY3VycmVudDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvZ2dlci5sb2dEZWJ1ZygnZWZmZWN0IHJhbicsIHtcbiAgICAgIGVuYWJsZWQsXG4gICAgICBpc1Zpc2libGUsXG4gICAgICBoYXNUcmFja2VkRXZlbnQ6IGhhc1RyYWNrZWRFdmVudC5jdXJyZW50LFxuICAgICAgZXZlbnRQcm9wcyxcbiAgICB9KTtcblxuICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdza2lwcGVkIOKAlCBlbmFibGVkIGlzIGZhbHNlJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChoYXNUcmFja2VkRXZlbnQuY3VycmVudCkge1xuICAgICAgbG9nZ2VyLmxvZ0RlYnVnKCdza2lwcGVkIOKAlCBldmVudCBhbHJlYWR5IHRyYWNrZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFpc1Zpc2libGUpIHtcbiAgICAgIGxvZ2dlci5sb2dEZWJ1Zygnc2tpcHBlZCDigJQgZWxlbWVudCBub3QgdmlzaWJsZScpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZ2dlci5sb2dEZWJ1ZygnZmlyaW5nIHRyYWNraW5nIGV2ZW50cycsIGV2ZW50UHJvcHMpO1xuICAgIHRyYWNrRXZlbnQoe1xuICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRDb21wb25lbnRWaXNpYmxlLFxuICAgICAgZXZlbnRQcm9wcyxcbiAgICB9KTtcbiAgICB0cmFja0V2ZW50KHtcbiAgICAgIGV2ZW50TmFtZTogRW52aXZlTWV0cmljc0V2ZW50TmFtZS5XaWRnZXRSZW5kZXJlZCxcbiAgICAgIGV2ZW50UHJvcHM6IHtcbiAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgICAgdHJpZ2dlcjoge1xuICAgICAgICAgIHdpZGdldDogZXZlbnRQcm9wcz8ud2lkZ2V0X3R5cGUsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRleHQ6IHZhcmlhbnRJbmZvID8gZXh0cmFjdFBhZ2VDb250ZXh0KHZhcmlhbnRJbmZvIGFzIFBhZ2VWYXJpYW50SW5mbykgOiBudWxsLFxuICAgICAgICAncGVyZm9ybWFuY2UucmVuZGVyX29mZnNldF9tcyc6IHJlbmRlck9mZnNldE1zLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBoYXNUcmFja2VkRXZlbnQuY3VycmVudCA9IHRydWU7XG4gIH0sIFtlbmFibGVkLCBpc1Zpc2libGUsIGV2ZW50UHJvcHMsIHRyYWNrRXZlbnRdKTtcbiAgcmV0dXJuIHsgaXNWaXNpYmxlLCB2aXNpYmlsaXR5U291cmNlIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFhQSxNQUFNLFNBQVMsSUFBSUEsZUFBTyxnQ0FBZ0M7Ozs7Ozs7OztBQVUxRCxNQUFNLGdCQUFvQztBQUN4QyxLQUFJO0FBQ0YsU0FBTyxPQUFPLFdBQVcsY0FBYyxPQUFPLGFBQWEsT0FBTyxHQUFHO1NBQy9EO0FBQ047OztBQUlKLE1BQWEsaUNBQ1gsU0FDQSxZQUNBLGFBQXFCLE9BQ3JCLFVBQW1CLFNBQytEO0NBUWxGLE1BQU0sQ0FBQyxrQkFBa0IsdUJBQXVCLFNBQzlDLFVBQ0Q7Q0FHRCxNQUFNLFlBQVksZ0JBQWdCLFNBQVMsWUFBWSxrQkFBa0I7QUFHdkUsdUJBQW9CLFNBQVMsU0FBUyxZQUFZLGFBQWEsS0FBTTtHQUNyRTtBQUdGLGlCQUFnQjtBQUNkLE1BQUksVUFBVyxzQkFBb0IsU0FBUyxTQUFTLFlBQVksYUFBYSxLQUFNO0lBQ25GLENBQUMsVUFBVSxDQUFDO0NBQ2YsTUFBTSxrQkFBa0IsT0FBTyxNQUFNO0NBQ3JDLE1BQU0sRUFBRSxlQUFlLGNBQWM7Q0FDckMsTUFBTSxjQUFjLGFBQWEsb0JBQW9CO0NBTXJELE1BQU0saUJBQWlCLE9BQU8sU0FBUyxDQUFDLENBQUM7QUFFekMsaUJBQWdCO0FBQ2QsU0FBTyxTQUFTLGNBQWM7R0FDNUI7R0FDQTtHQUNBLGlCQUFpQixnQkFBZ0I7R0FDakM7R0FDRCxDQUFDO0FBRUYsTUFBSSxDQUFDLFNBQVM7QUFDWixVQUFPLFNBQVMsNkJBQTZCO0FBQzdDOztBQUVGLE1BQUksZ0JBQWdCLFNBQVM7QUFDM0IsVUFBTyxTQUFTLGtDQUFrQztBQUNsRDs7QUFFRixNQUFJLENBQUMsV0FBVztBQUNkLFVBQU8sU0FBUyxnQ0FBZ0M7QUFDaEQ7O0FBR0YsU0FBTyxTQUFTLDBCQUEwQixXQUFXO0FBQ3JELGFBQVc7R0FDVCxXQUFXLHVCQUF1QjtHQUNsQztHQUNELENBQUM7QUFDRixhQUFXO0dBQ1QsV0FBVyx1QkFBdUI7R0FDbEMsWUFBWTtJQUNWLEdBQUc7SUFDSCxTQUFTLEVBQ1AsUUFBUSxZQUFZLGFBQ3JCO0lBQ0QsU0FBUyxjQUFjLG1CQUFtQixZQUErQixHQUFHO0lBQzVFLGdDQUFnQztJQUNqQztHQUNGLENBQUM7QUFDRixrQkFBZ0IsVUFBVTtJQUN6QjtFQUFDO0VBQVM7RUFBVztFQUFZO0VBQVcsQ0FBQztBQUNoRCxRQUFPO0VBQUU7RUFBVztFQUFrQiJ9
@@ -0,0 +1,4 @@
1
+ const require_useWidgetLoadDiagnostics = require('./useWidgetLoadDiagnostics.cjs');
2
+
3
+ exports.WIDGET_LOAD_STALL_MS = require_useWidgetLoadDiagnostics.WIDGET_LOAD_STALL_MS;
4
+ exports.useWidgetLoadDiagnostics = require_useWidgetLoadDiagnostics.useWidgetLoadDiagnostics;
@@ -0,0 +1,2 @@
1
+ import { WIDGET_LOAD_STALL_MS, WidgetLoadDiagnosticsInput, WidgetVisibilitySource, useWidgetLoadDiagnostics } from "./useWidgetLoadDiagnostics.cjs";
2
+ export { WIDGET_LOAD_STALL_MS, type WidgetLoadDiagnosticsInput, type WidgetVisibilitySource, useWidgetLoadDiagnostics };
@@ -0,0 +1,2 @@
1
+ import { WIDGET_LOAD_STALL_MS, WidgetLoadDiagnosticsInput, WidgetVisibilitySource, useWidgetLoadDiagnostics } from "./useWidgetLoadDiagnostics.js";
2
+ export { WIDGET_LOAD_STALL_MS, type WidgetLoadDiagnosticsInput, type WidgetVisibilitySource, useWidgetLoadDiagnostics };
@@ -0,0 +1,3 @@
1
+ import { WIDGET_LOAD_STALL_MS, useWidgetLoadDiagnostics } from "./useWidgetLoadDiagnostics.js";
2
+
3
+ export { WIDGET_LOAD_STALL_MS, useWidgetLoadDiagnostics };
@@ -0,0 +1,122 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_eventNames = require('../../services/amplitudeService/eventNames.cjs');
3
+ require('../../services/amplitudeService/amplitudeService.cjs');
4
+ const require_variant = require('../../atoms/app/variant.cjs');
5
+ require('../../atoms/app/index.cjs');
6
+ const require_amplitudeContext = require('../../contexts/amplitudeContext/amplitudeContext.cjs');
7
+ const require_hooks_WidgetInteraction_utils = require('../WidgetInteraction/utils.cjs');
8
+ let react = require("react");
9
+ let jotai = require("jotai");
10
+
11
+ //#region src/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.ts
12
+ const WIDGET_LOAD_STALL_MS = 5e3;
13
+ const connectionType = () => {
14
+ try {
15
+ return navigator.connection?.effectiveType;
16
+ } catch {
17
+ return;
18
+ }
19
+ };
20
+ const now = () => {
21
+ try {
22
+ return typeof window !== "undefined" && window.performance?.now ? window.performance.now() : Date.now();
23
+ } catch {
24
+ return Date.now();
25
+ }
26
+ };
27
+ /**
28
+ * Emits the layered `[Envive] Diagnostics` widget-load net so eng can measure not just what
29
+ * loads, but the negative space between layers — the failures that fire nothing today:
30
+ *
31
+ * widget_mounted (ungated) → [Envive] Widget Rendered (visible) → widget_load_outcome
32
+ *
33
+ * - `widget_mounted` fires on mount regardless of visibility, so a widget that mounts but never
34
+ * becomes visible (the suspected infinite-load crux) shows up as a *mounted with no rendered*
35
+ * gap instead of being invisible to analytics entirely.
36
+ * - `widget_load_outcome` fires once the widget's own requests settle
37
+ * (content_loaded / static_fallback / error).
38
+ * - `widget_load_stalled` fires if it's still loading at WIDGET_LOAD_STALL_MS AND still mounted.
39
+ * The timer is cleared on unmount, so a shopper who navigates away first never trips it —
40
+ * "stalled with no later outcome" is therefore a clean stuck signal, undiluted by abandonment.
41
+ *
42
+ * `load_id` correlates all of the above (and is threaded onto `[Envive] Widget Rendered`) so
43
+ * the gaps are joinable per load.
44
+ */
45
+ const useWidgetLoadDiagnostics = (input) => {
46
+ const { enabled, loadId, widgetType, widgetConfigId, startLoading, ownRequestsSettled, hardcopyContent } = input;
47
+ const { trackEvent } = require_amplitudeContext.useAmplitude();
48
+ const variantInfo = (0, jotai.useAtomValue)(require_variant.pageVariantInfoAtom);
49
+ const inputRef = (0, react.useRef)(input);
50
+ inputRef.current = input;
51
+ const emit = (props) => {
52
+ trackEvent({
53
+ eventName: require_eventNames.EnviveMetricsEventName.Diagnostics,
54
+ eventProps: {
55
+ load_id: loadId,
56
+ widget_type: widgetType,
57
+ widget_config_id: widgetConfigId,
58
+ connection_type: connectionType(),
59
+ context: variantInfo ? require_hooks_WidgetInteraction_utils.extractPageContext(variantInfo) : null,
60
+ ...props
61
+ }
62
+ });
63
+ };
64
+ const mountFiredRef = (0, react.useRef)(false);
65
+ (0, react.useEffect)(() => {
66
+ if (!enabled || mountFiredRef.current) return;
67
+ mountFiredRef.current = true;
68
+ emit({ type: "widget_mounted" });
69
+ }, [enabled]);
70
+ const visibleAtRef = (0, react.useRef)(null);
71
+ (0, react.useEffect)(() => {
72
+ if (startLoading && visibleAtRef.current === null) visibleAtRef.current = now();
73
+ }, [startLoading]);
74
+ const outcomeFiredRef = (0, react.useRef)(false);
75
+ (0, react.useEffect)(() => {
76
+ if (!enabled || !startLoading || !ownRequestsSettled || outcomeFiredRef.current) return;
77
+ outcomeFiredRef.current = true;
78
+ const elapsed_ms = visibleAtRef.current !== null ? Math.round(now() - visibleAtRef.current) : void 0;
79
+ let outcome;
80
+ let reason;
81
+ if (!hardcopyContent) {
82
+ outcome = "error";
83
+ reason = inputRef.current.hardcopyErrorReason ?? "no_content";
84
+ } else if (hardcopyContent.servedFrom === "static") {
85
+ outcome = "static_fallback";
86
+ reason = hardcopyContent.fallbackReason;
87
+ } else outcome = "content_loaded";
88
+ emit({
89
+ type: "widget_load_outcome",
90
+ outcome,
91
+ reason,
92
+ elapsed_ms,
93
+ visibility_source: inputRef.current.visibilitySource
94
+ });
95
+ }, [
96
+ enabled,
97
+ startLoading,
98
+ ownRequestsSettled,
99
+ hardcopyContent
100
+ ]);
101
+ (0, react.useEffect)(() => {
102
+ if (!enabled || !startLoading || ownRequestsSettled) return void 0;
103
+ const timer = setTimeout(() => {
104
+ emit({
105
+ type: "widget_load_stalled",
106
+ elapsed_ms: visibleAtRef.current !== null ? Math.round(now() - visibleAtRef.current) : WIDGET_LOAD_STALL_MS,
107
+ pending_requests: inputRef.current.pendingRequests,
108
+ visibility_source: inputRef.current.visibilitySource
109
+ });
110
+ }, WIDGET_LOAD_STALL_MS);
111
+ return () => clearTimeout(timer);
112
+ }, [
113
+ enabled,
114
+ startLoading,
115
+ ownRequestsSettled
116
+ ]);
117
+ };
118
+
119
+ //#endregion
120
+ exports.WIDGET_LOAD_STALL_MS = WIDGET_LOAD_STALL_MS;
121
+ exports.useWidgetLoadDiagnostics = useWidgetLoadDiagnostics;
122
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlV2lkZ2V0TG9hZERpYWdub3N0aWNzLmNqcyIsIm5hbWVzIjpbInVzZUFtcGxpdHVkZSIsInBhZ2VWYXJpYW50SW5mb0F0b20iLCJFbnZpdmVNZXRyaWNzRXZlbnROYW1lIiwiZXh0cmFjdFBhZ2VDb250ZXh0Iiwib3V0Y29tZTogc3RyaW5nIiwicmVhc29uOiBzdHJpbmcgfCB1bmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvV2lkZ2V0TG9hZERpYWdub3N0aWNzL3VzZVdpZGdldExvYWREaWFnbm9zdGljcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VBdG9tVmFsdWUgfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHBhZ2VWYXJpYW50SW5mb0F0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7IHVzZUFtcGxpdHVkZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgSGFyZGNvcHlSZXNwb25zZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9oYXJkY29weUNvbnRleHQnO1xuaW1wb3J0IHsgUGFnZVZhcmlhbnRJbmZvIH0gZnJvbSAnc3JjL2NvbnRleHRzL3BhZ2VDb250ZXh0L3R5cGVzJztcbmltcG9ydCB7IFdpZGdldFR5cGVWMyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlc1YzJztcbmltcG9ydCB7IGV4dHJhY3RQYWdlQ29udGV4dCB9IGZyb20gJ3NyYy9ob29rcy9XaWRnZXRJbnRlcmFjdGlvbi91dGlscyc7XG5pbXBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSAnc3JjL3NlcnZpY2VzL2FtcGxpdHVkZVNlcnZpY2UvYW1wbGl0dWRlU2VydmljZSc7XG5cbi8vIEZpcmVkIGlmIGEgd2lkZ2V0IGlzIHN0aWxsIGxvYWRpbmcgdGhpcyBsb25nIGFmdGVyIGl0IGJlY2FtZSB2aXNpYmxlLiBLZXB0IGF0L2p1c3QgYWJvdmVcbi8vIHRoZSBoYXJkY29weSB0aW1lb3V0IChIQVJEQ09QWV9USU1FT1VUX01TLCA0cykgc28gYSBub3JtYWwgdGltZW91dCDihpIgc3RhdGljLWZhbGxiYWNrIHNldHRsZXNcbi8vIGZpcnN0IGFuZCBkb2VzIE5PVCB0cmlwIGEgc3RhbGw7IGEgc3RhbGwgaGVyZSBpcyBhIGdlbnVpbmUgYW5vbWFseSAoZS5nLiBhIGNvbmZpZyBoYW5nKS5cbi8vIE1pcnJvcnMgV0lER0VUX0xPQURJTkdfV0FUQ0hET0dfTVMgKHRoZSBjb25zb2xlLW9ubHkgd2F0Y2hkb2cgaW4gd2l0aEJhc2VXaWRnZXQpLlxuZXhwb3J0IGNvbnN0IFdJREdFVF9MT0FEX1NUQUxMX01TID0gNTAwMDtcblxuLy8gJ3BlbmRpbmcnID0gdmlzaWJpbGl0eSBub3QgY29uZmlybWVkIGJ5IGVpdGhlciBwYXRoIHdoZW4gdGhlIGV2ZW50IGZpcmVkIChlLmcuIGFcbi8vIGRlZmVyTG9hZGluZzpmYWxzZSB3aWRnZXQgdGhhdCBsb2FkZWQgZWFnZXJseSwgYmVmb3JlIHRoZSBvYnNlcnZlciByZXBvcnRlZCkuXG5leHBvcnQgdHlwZSBXaWRnZXRWaXNpYmlsaXR5U291cmNlID0gJ29ic2VydmVyJyB8ICdmYWxsYmFjaycgfCAncGVuZGluZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0TG9hZERpYWdub3N0aWNzSW5wdXQge1xuICAvKiogR2F0ZS4gTm8gZXZlbnRzIGFyZSBlbWl0dGVkIHVubGVzcyB0cnVlLiBPbiBieSBkZWZhdWx0OyBhIFN0YXRzaWcga2lsbCBzd2l0Y2ggY2FuIGRpc2FibGUgaXQuICovXG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIC8qKiBDb3JyZWxhdGVzIHRoaXMgd2lkZ2V0J3MgbW91bnQgLyByZW5kZXJlZCAvIG91dGNvbWUgLyBzdGFsbCBldmVudHMgZm9yIGEgc2luZ2xlIGxvYWQuICovXG4gIGxvYWRJZDogc3RyaW5nO1xuICB3aWRnZXRUeXBlOiBXaWRnZXRUeXBlVjM7XG4gIHdpZGdldENvbmZpZ0lkPzogc3RyaW5nO1xuICAvKiogVGhlIHdpZGdldCBiZWNhbWUgdmlzaWJsZSBhbmQgc3RhcnRlZCBsb2FkaW5nIGl0cyBvd24gcmVxdWVzdHMuICovXG4gIHN0YXJ0TG9hZGluZzogYm9vbGVhbjtcbiAgLyoqIFRoaXMgd2lkZ2V0J3Mgb3duIGhhcmRjb3B5IC8gd2lkZ2V0Q29uZmlnIC8gdWlDb25maWcgcmVxdWVzdHMgaGF2ZSBhbGwgc2V0dGxlZC4gKi9cbiAgb3duUmVxdWVzdHNTZXR0bGVkOiBib29sZWFuO1xuICAvKiogUHJlc2VudCBvbmNlIGhhcmRjb3B5IHJlc29sdmVzOyBjYXJyaWVzIGBzZXJ2ZWRGcm9tYCAoY29udGVudF9sb2FkZWQgdnMgc3RhdGljX2ZhbGxiYWNrKS4gKi9cbiAgaGFyZGNvcHlDb250ZW50PzogSGFyZGNvcHlSZXNwb25zZTtcbiAgLyoqIFdoZXRoZXIgdmlzaWJpbGl0eSBjYW1lIGZyb20gdGhlIG9ic2VydmVyIG9yIHRoZSByZWNvbmNpbGUgZmFsbGJhY2suICovXG4gIHZpc2liaWxpdHlTb3VyY2U6IFdpZGdldFZpc2liaWxpdHlTb3VyY2U7XG4gIC8qKiBOYW1lcyBvZiB0aGlzIHdpZGdldCdzIHN0aWxsLXVuc2V0dGxlZCByZXF1ZXN0cywgcmVwb3J0ZWQgb24gYSBzdGFsbC4gKi9cbiAgcGVuZGluZ1JlcXVlc3RzOiBzdHJpbmdbXTtcbiAgLyoqIFNldCB3aGVuIHRoaXMgd2lkZ2V0J3Mgb3duIGhhcmRjb3B5IHJlcXVlc3QgcmVqZWN0ZWQgKG5vIGNvbnRlbnQg4oCUIG5vdCBhIHN0YXRpYyBmYWxsYmFjaykuICovXG4gIGhhcmRjb3B5RXJyb3JSZWFzb24/OiBzdHJpbmc7XG59XG5cbmNvbnN0IGNvbm5lY3Rpb25UeXBlID0gKCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIHRyeSB7XG4gICAgLy8gTmV0d29yayBJbmZvcm1hdGlvbiBBUEkg4oCUIENocm9taXVtL0FuZHJvaWQgb25seSwgdW5kZWZpbmVkIG9uIGlPUyBTYWZhcmkgKG91ciBrZXkgcG9wdWxhdGlvbikuXG4gICAgcmV0dXJuIChuYXZpZ2F0b3IgYXMgTmF2aWdhdG9yICYgeyBjb25uZWN0aW9uPzogeyBlZmZlY3RpdmVUeXBlPzogc3RyaW5nIH0gfSkuY29ubmVjdGlvblxuICAgICAgPy5lZmZlY3RpdmVUeXBlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuXG5jb25zdCBub3cgPSAoKTogbnVtYmVyID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnBlcmZvcm1hbmNlPy5ub3dcbiAgICAgID8gd2luZG93LnBlcmZvcm1hbmNlLm5vdygpXG4gICAgICA6IERhdGUubm93KCk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBEYXRlLm5vdygpO1xuICB9XG59O1xuXG4vKipcbiAqIEVtaXRzIHRoZSBsYXllcmVkIGBbRW52aXZlXSBEaWFnbm9zdGljc2Agd2lkZ2V0LWxvYWQgbmV0IHNvIGVuZyBjYW4gbWVhc3VyZSBub3QganVzdCB3aGF0XG4gKiBsb2FkcywgYnV0IHRoZSBuZWdhdGl2ZSBzcGFjZSBiZXR3ZWVuIGxheWVycyDigJQgdGhlIGZhaWx1cmVzIHRoYXQgZmlyZSBub3RoaW5nIHRvZGF5OlxuICpcbiAqICAgd2lkZ2V0X21vdW50ZWQgKHVuZ2F0ZWQpIOKGkiBbRW52aXZlXSBXaWRnZXQgUmVuZGVyZWQgKHZpc2libGUpIOKGkiB3aWRnZXRfbG9hZF9vdXRjb21lXG4gKlxuICogLSBgd2lkZ2V0X21vdW50ZWRgIGZpcmVzIG9uIG1vdW50IHJlZ2FyZGxlc3Mgb2YgdmlzaWJpbGl0eSwgc28gYSB3aWRnZXQgdGhhdCBtb3VudHMgYnV0IG5ldmVyXG4gKiAgIGJlY29tZXMgdmlzaWJsZSAodGhlIHN1c3BlY3RlZCBpbmZpbml0ZS1sb2FkIGNydXgpIHNob3dzIHVwIGFzIGEgKm1vdW50ZWQgd2l0aCBubyByZW5kZXJlZCpcbiAqICAgZ2FwIGluc3RlYWQgb2YgYmVpbmcgaW52aXNpYmxlIHRvIGFuYWx5dGljcyBlbnRpcmVseS5cbiAqIC0gYHdpZGdldF9sb2FkX291dGNvbWVgIGZpcmVzIG9uY2UgdGhlIHdpZGdldCdzIG93biByZXF1ZXN0cyBzZXR0bGVcbiAqICAgKGNvbnRlbnRfbG9hZGVkIC8gc3RhdGljX2ZhbGxiYWNrIC8gZXJyb3IpLlxuICogLSBgd2lkZ2V0X2xvYWRfc3RhbGxlZGAgZmlyZXMgaWYgaXQncyBzdGlsbCBsb2FkaW5nIGF0IFdJREdFVF9MT0FEX1NUQUxMX01TIEFORCBzdGlsbCBtb3VudGVkLlxuICogICBUaGUgdGltZXIgaXMgY2xlYXJlZCBvbiB1bm1vdW50LCBzbyBhIHNob3BwZXIgd2hvIG5hdmlnYXRlcyBhd2F5IGZpcnN0IG5ldmVyIHRyaXBzIGl0IOKAlFxuICogICBcInN0YWxsZWQgd2l0aCBubyBsYXRlciBvdXRjb21lXCIgaXMgdGhlcmVmb3JlIGEgY2xlYW4gc3R1Y2sgc2lnbmFsLCB1bmRpbHV0ZWQgYnkgYWJhbmRvbm1lbnQuXG4gKlxuICogYGxvYWRfaWRgIGNvcnJlbGF0ZXMgYWxsIG9mIHRoZSBhYm92ZSAoYW5kIGlzIHRocmVhZGVkIG9udG8gYFtFbnZpdmVdIFdpZGdldCBSZW5kZXJlZGApIHNvXG4gKiB0aGUgZ2FwcyBhcmUgam9pbmFibGUgcGVyIGxvYWQuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VXaWRnZXRMb2FkRGlhZ25vc3RpY3MgPSAoaW5wdXQ6IFdpZGdldExvYWREaWFnbm9zdGljc0lucHV0KTogdm9pZCA9PiB7XG4gIGNvbnN0IHtcbiAgICBlbmFibGVkLFxuICAgIGxvYWRJZCxcbiAgICB3aWRnZXRUeXBlLFxuICAgIHdpZGdldENvbmZpZ0lkLFxuICAgIHN0YXJ0TG9hZGluZyxcbiAgICBvd25SZXF1ZXN0c1NldHRsZWQsXG4gICAgaGFyZGNvcHlDb250ZW50LFxuICB9ID0gaW5wdXQ7XG5cbiAgY29uc3QgeyB0cmFja0V2ZW50IH0gPSB1c2VBbXBsaXR1ZGUoKTtcbiAgY29uc3QgdmFyaWFudEluZm8gPSB1c2VBdG9tVmFsdWUocGFnZVZhcmlhbnRJbmZvQXRvbSk7XG5cbiAgLy8gTGF0ZXN0IGlucHV0LCByZWFkIGluc2lkZSB0aGUgZGVmZXJyZWQgc3RhbGwvb3V0Y29tZSBjYWxsYmFja3MgKHBlbmRpbmdSZXF1ZXN0cyBhbmRcbiAgLy8gdmlzaWJpbGl0eVNvdXJjZSBjaHVybiBhcyByZXF1ZXN0cyBzZXR0bGUgLyB0aGUgZmFsbGJhY2sgZW5nYWdlcykuXG4gIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKGlucHV0KTtcbiAgaW5wdXRSZWYuY3VycmVudCA9IGlucHV0O1xuXG4gIGNvbnN0IGVtaXQgPSAocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgdHJhY2tFdmVudCh7XG4gICAgICBldmVudE5hbWU6IEVudml2ZU1ldHJpY3NFdmVudE5hbWUuRGlhZ25vc3RpY3MsXG4gICAgICBldmVudFByb3BzOiB7XG4gICAgICAgIGxvYWRfaWQ6IGxvYWRJZCxcbiAgICAgICAgd2lkZ2V0X3R5cGU6IHdpZGdldFR5cGUsXG4gICAgICAgIHdpZGdldF9jb25maWdfaWQ6IHdpZGdldENvbmZpZ0lkLFxuICAgICAgICBjb25uZWN0aW9uX3R5cGU6IGNvbm5lY3Rpb25UeXBlKCksXG4gICAgICAgIGNvbnRleHQ6IHZhcmlhbnRJbmZvID8gZXh0cmFjdFBhZ2VDb250ZXh0KHZhcmlhbnRJbmZvIGFzIFBhZ2VWYXJpYW50SW5mbykgOiBudWxsLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG5cbiAgLy8gTGF5ZXIgMCDigJQgbW91bnQuIFVuZ2F0ZWQgYnkgdmlzaWJpbGl0eTogdGhlIGJhc2VsaW5lIHRoYXQgZmlyZXMgZXZlbiB3aGVuIHRoZSB3aWRnZXQgbmV2ZXJcbiAgLy8gYmVjb21lcyB2aXNpYmxlLCBzbyBuZXZlci12aXNpYmxlIGZhaWx1cmVzIGFyZSBhIG1lYXN1cmFibGUgZ2FwIHJhdGhlciB0aGFuIHNpbGVuY2UuXG4gIGNvbnN0IG1vdW50RmlyZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCB8fCBtb3VudEZpcmVkUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICBtb3VudEZpcmVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIGVtaXQoeyB0eXBlOiAnd2lkZ2V0X21vdW50ZWQnIH0pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2VuYWJsZWRdKTtcblxuICAvLyB0MCDigJQgd2hlbiB0aGUgd2lkZ2V0IGJlY2FtZSB2aXNpYmxlIC8gc3RhcnRlZCBsb2FkaW5nLlxuICBjb25zdCB2aXNpYmxlQXRSZWYgPSB1c2VSZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXJ0TG9hZGluZyAmJiB2aXNpYmxlQXRSZWYuY3VycmVudCA9PT0gbnVsbCkgdmlzaWJsZUF0UmVmLmN1cnJlbnQgPSBub3coKTtcbiAgfSwgW3N0YXJ0TG9hZGluZ10pO1xuXG4gIC8vIExheWVyIDIg4oCUIHRlcm1pbmFsIG91dGNvbWUsIG9uY2UsIHdoZW4gdGhpcyB3aWRnZXQncyBvd24gcmVxdWVzdHMgc2V0dGxlLlxuICBjb25zdCBvdXRjb21lRmlyZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCB8fCAhc3RhcnRMb2FkaW5nIHx8ICFvd25SZXF1ZXN0c1NldHRsZWQgfHwgb3V0Y29tZUZpcmVkUmVmLmN1cnJlbnQpIHJldHVybjtcbiAgICBvdXRjb21lRmlyZWRSZWYuY3VycmVudCA9IHRydWU7XG5cbiAgICBjb25zdCBlbGFwc2VkX21zID1cbiAgICAgIHZpc2libGVBdFJlZi5jdXJyZW50ICE9PSBudWxsID8gTWF0aC5yb3VuZChub3coKSAtIHZpc2libGVBdFJlZi5jdXJyZW50KSA6IHVuZGVmaW5lZDtcblxuICAgIGxldCBvdXRjb21lOiBzdHJpbmc7XG4gICAgbGV0IHJlYXNvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICghaGFyZGNvcHlDb250ZW50KSB7XG4gICAgICBvdXRjb21lID0gJ2Vycm9yJztcbiAgICAgIHJlYXNvbiA9IGlucHV0UmVmLmN1cnJlbnQuaGFyZGNvcHlFcnJvclJlYXNvbiA/PyAnbm9fY29udGVudCc7XG4gICAgfSBlbHNlIGlmIChoYXJkY29weUNvbnRlbnQuc2VydmVkRnJvbSA9PT0gJ3N0YXRpYycpIHtcbiAgICAgIG91dGNvbWUgPSAnc3RhdGljX2ZhbGxiYWNrJztcbiAgICAgIHJlYXNvbiA9IGhhcmRjb3B5Q29udGVudC5mYWxsYmFja1JlYXNvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Y29tZSA9ICdjb250ZW50X2xvYWRlZCc7XG4gICAgfVxuXG4gICAgZW1pdCh7XG4gICAgICB0eXBlOiAnd2lkZ2V0X2xvYWRfb3V0Y29tZScsXG4gICAgICBvdXRjb21lLFxuICAgICAgcmVhc29uLFxuICAgICAgZWxhcHNlZF9tcyxcbiAgICAgIHZpc2liaWxpdHlfc291cmNlOiBpbnB1dFJlZi5jdXJyZW50LnZpc2liaWxpdHlTb3VyY2UsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbZW5hYmxlZCwgc3RhcnRMb2FkaW5nLCBvd25SZXF1ZXN0c1NldHRsZWQsIGhhcmRjb3B5Q29udGVudF0pO1xuXG4gIC8vIExheWVyIDEuNSDigJQgc3RhbGwuIE9ubHkgYXJtcyB3aGlsZSBsb2FkaW5nOyBjbGVhcmVkIG9uIHVubW91bnQsIHNvIGFiYW5kb25tZW50IG5ldmVyIHRyaXBzIGl0LlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlZCB8fCAhc3RhcnRMb2FkaW5nIHx8IG93blJlcXVlc3RzU2V0dGxlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZWxhcHNlZF9tcyA9XG4gICAgICAgIHZpc2libGVBdFJlZi5jdXJyZW50ICE9PSBudWxsXG4gICAgICAgICAgPyBNYXRoLnJvdW5kKG5vdygpIC0gdmlzaWJsZUF0UmVmLmN1cnJlbnQpXG4gICAgICAgICAgOiBXSURHRVRfTE9BRF9TVEFMTF9NUztcbiAgICAgIGVtaXQoe1xuICAgICAgICB0eXBlOiAnd2lkZ2V0X2xvYWRfc3RhbGxlZCcsXG4gICAgICAgIGVsYXBzZWRfbXMsXG4gICAgICAgIHBlbmRpbmdfcmVxdWVzdHM6IGlucHV0UmVmLmN1cnJlbnQucGVuZGluZ1JlcXVlc3RzLFxuICAgICAgICB2aXNpYmlsaXR5X3NvdXJjZTogaW5wdXRSZWYuY3VycmVudC52aXNpYmlsaXR5U291cmNlLFxuICAgICAgfSk7XG4gICAgfSwgV0lER0VUX0xPQURfU1RBTExfTVMpO1xuICAgIHJldHVybiAoKSA9PiBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2VuYWJsZWQsIHN0YXJ0TG9hZGluZywgb3duUmVxdWVzdHNTZXR0bGVkXSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWNBLE1BQWEsdUJBQXVCO0FBMkJwQyxNQUFNLHVCQUEyQztBQUMvQyxLQUFJO0FBRUYsU0FBUSxVQUFzRSxZQUMxRTtTQUNFO0FBQ047OztBQUlKLE1BQU0sWUFBb0I7QUFDeEIsS0FBSTtBQUNGLFNBQU8sT0FBTyxXQUFXLGVBQWUsT0FBTyxhQUFhLE1BQ3hELE9BQU8sWUFBWSxLQUFLLEdBQ3hCLEtBQUssS0FBSztTQUNSO0FBQ04sU0FBTyxLQUFLLEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCckIsTUFBYSw0QkFBNEIsVUFBNEM7Q0FDbkYsTUFBTSxFQUNKLFNBQ0EsUUFDQSxZQUNBLGdCQUNBLGNBQ0Esb0JBQ0Esb0JBQ0U7Q0FFSixNQUFNLEVBQUUsZUFBZUEsdUNBQWM7Q0FDckMsTUFBTSxzQ0FBMkJDLG9DQUFvQjtDQUlyRCxNQUFNLDZCQUFrQixNQUFNO0FBQzlCLFVBQVMsVUFBVTtDQUVuQixNQUFNLFFBQVEsVUFBbUM7QUFDL0MsYUFBVztHQUNULFdBQVdDLDBDQUF1QjtHQUNsQyxZQUFZO0lBQ1YsU0FBUztJQUNULGFBQWE7SUFDYixrQkFBa0I7SUFDbEIsaUJBQWlCLGdCQUFnQjtJQUNqQyxTQUFTLGNBQWNDLHlEQUFtQixZQUErQixHQUFHO0lBQzVFLEdBQUc7SUFDSjtHQUNGLENBQUM7O0NBS0osTUFBTSxrQ0FBdUIsTUFBTTtBQUNuQyw0QkFBZ0I7QUFDZCxNQUFJLENBQUMsV0FBVyxjQUFjLFFBQVM7QUFDdkMsZ0JBQWMsVUFBVTtBQUN4QixPQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztJQUUvQixDQUFDLFFBQVEsQ0FBQztDQUdiLE1BQU0saUNBQXFDLEtBQUs7QUFDaEQsNEJBQWdCO0FBQ2QsTUFBSSxnQkFBZ0IsYUFBYSxZQUFZLEtBQU0sY0FBYSxVQUFVLEtBQUs7SUFDOUUsQ0FBQyxhQUFhLENBQUM7Q0FHbEIsTUFBTSxvQ0FBeUIsTUFBTTtBQUNyQyw0QkFBZ0I7QUFDZCxNQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixnQkFBZ0IsUUFBUztBQUNqRixrQkFBZ0IsVUFBVTtFQUUxQixNQUFNLGFBQ0osYUFBYSxZQUFZLE9BQU8sS0FBSyxNQUFNLEtBQUssR0FBRyxhQUFhLFFBQVEsR0FBRztFQUU3RSxJQUFJQztFQUNKLElBQUlDO0FBQ0osTUFBSSxDQUFDLGlCQUFpQjtBQUNwQixhQUFVO0FBQ1YsWUFBUyxTQUFTLFFBQVEsdUJBQXVCO2FBQ3hDLGdCQUFnQixlQUFlLFVBQVU7QUFDbEQsYUFBVTtBQUNWLFlBQVMsZ0JBQWdCO1FBRXpCLFdBQVU7QUFHWixPQUFLO0dBQ0gsTUFBTTtHQUNOO0dBQ0E7R0FDQTtHQUNBLG1CQUFtQixTQUFTLFFBQVE7R0FDckMsQ0FBQztJQUVEO0VBQUM7RUFBUztFQUFjO0VBQW9CO0VBQWdCLENBQUM7QUFHaEUsNEJBQWdCO0FBQ2QsTUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsbUJBQW9CLFFBQU87RUFDNUQsTUFBTSxRQUFRLGlCQUFpQjtBQUs3QixRQUFLO0lBQ0gsTUFBTTtJQUNOLFlBTEEsYUFBYSxZQUFZLE9BQ3JCLEtBQUssTUFBTSxLQUFLLEdBQUcsYUFBYSxRQUFRLEdBQ3hDO0lBSUosa0JBQWtCLFNBQVMsUUFBUTtJQUNuQyxtQkFBbUIsU0FBUyxRQUFRO0lBQ3JDLENBQUM7S0FDRCxxQkFBcUI7QUFDeEIsZUFBYSxhQUFhLE1BQU07SUFFL0I7RUFBQztFQUFTO0VBQWM7RUFBbUIsQ0FBQyJ9
@@ -0,0 +1,48 @@
1
+ import { WidgetTypeV3 } from "../../contexts/typesV3.cjs";
2
+ import { HardcopyResponse } from "../../services/hardcopyService/hardcopyService.cjs";
3
+
4
+ //#region src/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.d.ts
5
+ declare const WIDGET_LOAD_STALL_MS = 5000;
6
+ type WidgetVisibilitySource = 'observer' | 'fallback' | 'pending';
7
+ interface WidgetLoadDiagnosticsInput {
8
+ /** Gate. No events are emitted unless true. On by default; a Statsig kill switch can disable it. */
9
+ enabled: boolean;
10
+ /** Correlates this widget's mount / rendered / outcome / stall events for a single load. */
11
+ loadId: string;
12
+ widgetType: WidgetTypeV3;
13
+ widgetConfigId?: string;
14
+ /** The widget became visible and started loading its own requests. */
15
+ startLoading: boolean;
16
+ /** This widget's own hardcopy / widgetConfig / uiConfig requests have all settled. */
17
+ ownRequestsSettled: boolean;
18
+ /** Present once hardcopy resolves; carries `servedFrom` (content_loaded vs static_fallback). */
19
+ hardcopyContent?: HardcopyResponse;
20
+ /** Whether visibility came from the observer or the reconcile fallback. */
21
+ visibilitySource: WidgetVisibilitySource;
22
+ /** Names of this widget's still-unsettled requests, reported on a stall. */
23
+ pendingRequests: string[];
24
+ /** Set when this widget's own hardcopy request rejected (no content — not a static fallback). */
25
+ hardcopyErrorReason?: string;
26
+ }
27
+ /**
28
+ * Emits the layered `[Envive] Diagnostics` widget-load net so eng can measure not just what
29
+ * loads, but the negative space between layers — the failures that fire nothing today:
30
+ *
31
+ * widget_mounted (ungated) → [Envive] Widget Rendered (visible) → widget_load_outcome
32
+ *
33
+ * - `widget_mounted` fires on mount regardless of visibility, so a widget that mounts but never
34
+ * becomes visible (the suspected infinite-load crux) shows up as a *mounted with no rendered*
35
+ * gap instead of being invisible to analytics entirely.
36
+ * - `widget_load_outcome` fires once the widget's own requests settle
37
+ * (content_loaded / static_fallback / error).
38
+ * - `widget_load_stalled` fires if it's still loading at WIDGET_LOAD_STALL_MS AND still mounted.
39
+ * The timer is cleared on unmount, so a shopper who navigates away first never trips it —
40
+ * "stalled with no later outcome" is therefore a clean stuck signal, undiluted by abandonment.
41
+ *
42
+ * `load_id` correlates all of the above (and is threaded onto `[Envive] Widget Rendered`) so
43
+ * the gaps are joinable per load.
44
+ */
45
+ declare const useWidgetLoadDiagnostics: (input: WidgetLoadDiagnosticsInput) => void;
46
+ //#endregion
47
+ export { WIDGET_LOAD_STALL_MS, WidgetLoadDiagnosticsInput, WidgetVisibilitySource, useWidgetLoadDiagnostics };
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlV2lkZ2V0TG9hZERpYWdub3N0aWNzLmQuY3RzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy9XaWRnZXRMb2FkRGlhZ25vc3RpY3MvdXNlV2lkZ2V0TG9hZERpYWdub3N0aWNzLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFyZGNvcHlSZXNwb25zZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9oYXJkY29weUNvbnRleHQnO1xuaW1wb3J0IHsgV2lkZ2V0VHlwZVYzIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzVjMnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgV0lER0VUX0xPQURfU1RBTExfTVMgPSA1MDAwO1xuZXhwb3J0IHR5cGUgV2lkZ2V0VmlzaWJpbGl0eVNvdXJjZSA9ICdvYnNlcnZlcicgfCAnZmFsbGJhY2snIHwgJ3BlbmRpbmcnO1xuZXhwb3J0IGludGVyZmFjZSBXaWRnZXRMb2FkRGlhZ25vc3RpY3NJbnB1dCB7XG4gICAgLyoqIEdhdGUuIE5vIGV2ZW50cyBhcmUgZW1pdHRlZCB1bmxlc3MgdHJ1ZS4gT24gYnkgZGVmYXVsdDsgYSBTdGF0c2lnIGtpbGwgc3dpdGNoIGNhbiBkaXNhYmxlIGl0LiAqL1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqIENvcnJlbGF0ZXMgdGhpcyB3aWRnZXQncyBtb3VudCAvIHJlbmRlcmVkIC8gb3V0Y29tZSAvIHN0YWxsIGV2ZW50cyBmb3IgYSBzaW5nbGUgbG9hZC4gKi9cbiAgICBsb2FkSWQ6IHN0cmluZztcbiAgICB3aWRnZXRUeXBlOiBXaWRnZXRUeXBlVjM7XG4gICAgd2lkZ2V0Q29uZmlnSWQ/OiBzdHJpbmc7XG4gICAgLyoqIFRoZSB3aWRnZXQgYmVjYW1lIHZpc2libGUgYW5kIHN0YXJ0ZWQgbG9hZGluZyBpdHMgb3duIHJlcXVlc3RzLiAqL1xuICAgIHN0YXJ0TG9hZGluZzogYm9vbGVhbjtcbiAgICAvKiogVGhpcyB3aWRnZXQncyBvd24gaGFyZGNvcHkgLyB3aWRnZXRDb25maWcgLyB1aUNvbmZpZyByZXF1ZXN0cyBoYXZlIGFsbCBzZXR0bGVkLiAqL1xuICAgIG93blJlcXVlc3RzU2V0dGxlZDogYm9vbGVhbjtcbiAgICAvKiogUHJlc2VudCBvbmNlIGhhcmRjb3B5IHJlc29sdmVzOyBjYXJyaWVzIGBzZXJ2ZWRGcm9tYCAoY29udGVudF9sb2FkZWQgdnMgc3RhdGljX2ZhbGxiYWNrKS4gKi9cbiAgICBoYXJkY29weUNvbnRlbnQ/OiBIYXJkY29weVJlc3BvbnNlO1xuICAgIC8qKiBXaGV0aGVyIHZpc2liaWxpdHkgY2FtZSBmcm9tIHRoZSBvYnNlcnZlciBvciB0aGUgcmVjb25jaWxlIGZhbGxiYWNrLiAqL1xuICAgIHZpc2liaWxpdHlTb3VyY2U6IFdpZGdldFZpc2liaWxpdHlTb3VyY2U7XG4gICAgLyoqIE5hbWVzIG9mIHRoaXMgd2lkZ2V0J3Mgc3RpbGwtdW5zZXR0bGVkIHJlcXVlc3RzLCByZXBvcnRlZCBvbiBhIHN0YWxsLiAqL1xuICAgIHBlbmRpbmdSZXF1ZXN0czogc3RyaW5nW107XG4gICAgLyoqIFNldCB3aGVuIHRoaXMgd2lkZ2V0J3Mgb3duIGhhcmRjb3B5IHJlcXVlc3QgcmVqZWN0ZWQgKG5vIGNvbnRlbnQg4oCUIG5vdCBhIHN0YXRpYyBmYWxsYmFjaykuICovXG4gICAgaGFyZGNvcHlFcnJvclJlYXNvbj86IHN0cmluZztcbn1cbi8qKlxuICogRW1pdHMgdGhlIGxheWVyZWQgYFtFbnZpdmVdIERpYWdub3N0aWNzYCB3aWRnZXQtbG9hZCBuZXQgc28gZW5nIGNhbiBtZWFzdXJlIG5vdCBqdXN0IHdoYXRcbiAqIGxvYWRzLCBidXQgdGhlIG5lZ2F0aXZlIHNwYWNlIGJldHdlZW4gbGF5ZXJzIOKAlCB0aGUgZmFpbHVyZXMgdGhhdCBmaXJlIG5vdGhpbmcgdG9kYXk6XG4gKlxuICogICB3aWRnZXRfbW91bnRlZCAodW5nYXRlZCkg4oaSIFtFbnZpdmVdIFdpZGdldCBSZW5kZXJlZCAodmlzaWJsZSkg4oaSIHdpZGdldF9sb2FkX291dGNvbWVcbiAqXG4gKiAtIGB3aWRnZXRfbW91bnRlZGAgZmlyZXMgb24gbW91bnQgcmVnYXJkbGVzcyBvZiB2aXNpYmlsaXR5LCBzbyBhIHdpZGdldCB0aGF0IG1vdW50cyBidXQgbmV2ZXJcbiAqICAgYmVjb21lcyB2aXNpYmxlICh0aGUgc3VzcGVjdGVkIGluZmluaXRlLWxvYWQgY3J1eCkgc2hvd3MgdXAgYXMgYSAqbW91bnRlZCB3aXRoIG5vIHJlbmRlcmVkKlxuICogICBnYXAgaW5zdGVhZCBvZiBiZWluZyBpbnZpc2libGUgdG8gYW5hbHl0aWNzIGVudGlyZWx5LlxuICogLSBgd2lkZ2V0X2xvYWRfb3V0Y29tZWAgZmlyZXMgb25jZSB0aGUgd2lkZ2V0J3Mgb3duIHJlcXVlc3RzIHNldHRsZVxuICogICAoY29udGVudF9sb2FkZWQgLyBzdGF0aWNfZmFsbGJhY2sgLyBlcnJvcikuXG4gKiAtIGB3aWRnZXRfbG9hZF9zdGFsbGVkYCBmaXJlcyBpZiBpdCdzIHN0aWxsIGxvYWRpbmcgYXQgV0lER0VUX0xPQURfU1RBTExfTVMgQU5EIHN0aWxsIG1vdW50ZWQuXG4gKiAgIFRoZSB0aW1lciBpcyBjbGVhcmVkIG9uIHVubW91bnQsIHNvIGEgc2hvcHBlciB3aG8gbmF2aWdhdGVzIGF3YXkgZmlyc3QgbmV2ZXIgdHJpcHMgaXQg4oCUXG4gKiAgIFwic3RhbGxlZCB3aXRoIG5vIGxhdGVyIG91dGNvbWVcIiBpcyB0aGVyZWZvcmUgYSBjbGVhbiBzdHVjayBzaWduYWwsIHVuZGlsdXRlZCBieSBhYmFuZG9ubWVudC5cbiAqXG4gKiBgbG9hZF9pZGAgY29ycmVsYXRlcyBhbGwgb2YgdGhlIGFib3ZlIChhbmQgaXMgdGhyZWFkZWQgb250byBgW0Vudml2ZV0gV2lkZ2V0IFJlbmRlcmVkYCkgc29cbiAqIHRoZSBnYXBzIGFyZSBqb2luYWJsZSBwZXIgbG9hZC5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlV2lkZ2V0TG9hZERpYWdub3N0aWNzOiAoaW5wdXQ6IFdpZGdldExvYWREaWFnbm9zdGljc0lucHV0KSA9PiB2b2lkO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBRUEsSUFBVyx1QkFBdUIsQ0FBQyxJQUFJO0FBQ3ZDLElBQVcseUJBQXlCLENBQUMsSUFBSTtBQUN6QyxJQUFXLDZCQUE2QjtDQUFDO09BQUc7T0FBQTtPQUFBO0NBQUE7QUFDNUMsSUFBVywyQkFBMkIsQ0FBQyxXQUFXLDJCQUEyQiJ9
@@ -0,0 +1,48 @@
1
+ import { WidgetTypeV3 } from "../../contexts/typesV3.js";
2
+ import { HardcopyResponse } from "../../services/hardcopyService/hardcopyService.js";
3
+
4
+ //#region src/hooks/WidgetLoadDiagnostics/useWidgetLoadDiagnostics.d.ts
5
+ declare const WIDGET_LOAD_STALL_MS = 5000;
6
+ type WidgetVisibilitySource = 'observer' | 'fallback' | 'pending';
7
+ interface WidgetLoadDiagnosticsInput {
8
+ /** Gate. No events are emitted unless true. On by default; a Statsig kill switch can disable it. */
9
+ enabled: boolean;
10
+ /** Correlates this widget's mount / rendered / outcome / stall events for a single load. */
11
+ loadId: string;
12
+ widgetType: WidgetTypeV3;
13
+ widgetConfigId?: string;
14
+ /** The widget became visible and started loading its own requests. */
15
+ startLoading: boolean;
16
+ /** This widget's own hardcopy / widgetConfig / uiConfig requests have all settled. */
17
+ ownRequestsSettled: boolean;
18
+ /** Present once hardcopy resolves; carries `servedFrom` (content_loaded vs static_fallback). */
19
+ hardcopyContent?: HardcopyResponse;
20
+ /** Whether visibility came from the observer or the reconcile fallback. */
21
+ visibilitySource: WidgetVisibilitySource;
22
+ /** Names of this widget's still-unsettled requests, reported on a stall. */
23
+ pendingRequests: string[];
24
+ /** Set when this widget's own hardcopy request rejected (no content — not a static fallback). */
25
+ hardcopyErrorReason?: string;
26
+ }
27
+ /**
28
+ * Emits the layered `[Envive] Diagnostics` widget-load net so eng can measure not just what
29
+ * loads, but the negative space between layers — the failures that fire nothing today:
30
+ *
31
+ * widget_mounted (ungated) → [Envive] Widget Rendered (visible) → widget_load_outcome
32
+ *
33
+ * - `widget_mounted` fires on mount regardless of visibility, so a widget that mounts but never
34
+ * becomes visible (the suspected infinite-load crux) shows up as a *mounted with no rendered*
35
+ * gap instead of being invisible to analytics entirely.
36
+ * - `widget_load_outcome` fires once the widget's own requests settle
37
+ * (content_loaded / static_fallback / error).
38
+ * - `widget_load_stalled` fires if it's still loading at WIDGET_LOAD_STALL_MS AND still mounted.
39
+ * The timer is cleared on unmount, so a shopper who navigates away first never trips it —
40
+ * "stalled with no later outcome" is therefore a clean stuck signal, undiluted by abandonment.
41
+ *
42
+ * `load_id` correlates all of the above (and is threaded onto `[Envive] Widget Rendered`) so
43
+ * the gaps are joinable per load.
44
+ */
45
+ declare const useWidgetLoadDiagnostics: (input: WidgetLoadDiagnosticsInput) => void;
46
+ //#endregion
47
+ export { WIDGET_LOAD_STALL_MS, WidgetLoadDiagnosticsInput, WidgetVisibilitySource, useWidgetLoadDiagnostics };
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlV2lkZ2V0TG9hZERpYWdub3N0aWNzLmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL1dpZGdldExvYWREaWFnbm9zdGljcy91c2VXaWRnZXRMb2FkRGlhZ25vc3RpY3MuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJkY29weVJlc3BvbnNlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2hhcmRjb3B5Q29udGV4dCc7XG5pbXBvcnQgeyBXaWRnZXRUeXBlVjMgfSBmcm9tICdzcmMvY29udGV4dHMvdHlwZXNWMyc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBXSURHRVRfTE9BRF9TVEFMTF9NUyA9IDUwMDA7XG5leHBvcnQgdHlwZSBXaWRnZXRWaXNpYmlsaXR5U291cmNlID0gJ29ic2VydmVyJyB8ICdmYWxsYmFjaycgfCAncGVuZGluZyc7XG5leHBvcnQgaW50ZXJmYWNlIFdpZGdldExvYWREaWFnbm9zdGljc0lucHV0IHtcbiAgICAvKiogR2F0ZS4gTm8gZXZlbnRzIGFyZSBlbWl0dGVkIHVubGVzcyB0cnVlLiBPbiBieSBkZWZhdWx0OyBhIFN0YXRzaWcga2lsbCBzd2l0Y2ggY2FuIGRpc2FibGUgaXQuICovXG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAvKiogQ29ycmVsYXRlcyB0aGlzIHdpZGdldCdzIG1vdW50IC8gcmVuZGVyZWQgLyBvdXRjb21lIC8gc3RhbGwgZXZlbnRzIGZvciBhIHNpbmdsZSBsb2FkLiAqL1xuICAgIGxvYWRJZDogc3RyaW5nO1xuICAgIHdpZGdldFR5cGU6IFdpZGdldFR5cGVWMztcbiAgICB3aWRnZXRDb25maWdJZD86IHN0cmluZztcbiAgICAvKiogVGhlIHdpZGdldCBiZWNhbWUgdmlzaWJsZSBhbmQgc3RhcnRlZCBsb2FkaW5nIGl0cyBvd24gcmVxdWVzdHMuICovXG4gICAgc3RhcnRMb2FkaW5nOiBib29sZWFuO1xuICAgIC8qKiBUaGlzIHdpZGdldCdzIG93biBoYXJkY29weSAvIHdpZGdldENvbmZpZyAvIHVpQ29uZmlnIHJlcXVlc3RzIGhhdmUgYWxsIHNldHRsZWQuICovXG4gICAgb3duUmVxdWVzdHNTZXR0bGVkOiBib29sZWFuO1xuICAgIC8qKiBQcmVzZW50IG9uY2UgaGFyZGNvcHkgcmVzb2x2ZXM7IGNhcnJpZXMgYHNlcnZlZEZyb21gIChjb250ZW50X2xvYWRlZCB2cyBzdGF0aWNfZmFsbGJhY2spLiAqL1xuICAgIGhhcmRjb3B5Q29udGVudD86IEhhcmRjb3B5UmVzcG9uc2U7XG4gICAgLyoqIFdoZXRoZXIgdmlzaWJpbGl0eSBjYW1lIGZyb20gdGhlIG9ic2VydmVyIG9yIHRoZSByZWNvbmNpbGUgZmFsbGJhY2suICovXG4gICAgdmlzaWJpbGl0eVNvdXJjZTogV2lkZ2V0VmlzaWJpbGl0eVNvdXJjZTtcbiAgICAvKiogTmFtZXMgb2YgdGhpcyB3aWRnZXQncyBzdGlsbC11bnNldHRsZWQgcmVxdWVzdHMsIHJlcG9ydGVkIG9uIGEgc3RhbGwuICovXG4gICAgcGVuZGluZ1JlcXVlc3RzOiBzdHJpbmdbXTtcbiAgICAvKiogU2V0IHdoZW4gdGhpcyB3aWRnZXQncyBvd24gaGFyZGNvcHkgcmVxdWVzdCByZWplY3RlZCAobm8gY29udGVudCDigJQgbm90IGEgc3RhdGljIGZhbGxiYWNrKS4gKi9cbiAgICBoYXJkY29weUVycm9yUmVhc29uPzogc3RyaW5nO1xufVxuLyoqXG4gKiBFbWl0cyB0aGUgbGF5ZXJlZCBgW0Vudml2ZV0gRGlhZ25vc3RpY3NgIHdpZGdldC1sb2FkIG5ldCBzbyBlbmcgY2FuIG1lYXN1cmUgbm90IGp1c3Qgd2hhdFxuICogbG9hZHMsIGJ1dCB0aGUgbmVnYXRpdmUgc3BhY2UgYmV0d2VlbiBsYXllcnMg4oCUIHRoZSBmYWlsdXJlcyB0aGF0IGZpcmUgbm90aGluZyB0b2RheTpcbiAqXG4gKiAgIHdpZGdldF9tb3VudGVkICh1bmdhdGVkKSDihpIgW0Vudml2ZV0gV2lkZ2V0IFJlbmRlcmVkICh2aXNpYmxlKSDihpIgd2lkZ2V0X2xvYWRfb3V0Y29tZVxuICpcbiAqIC0gYHdpZGdldF9tb3VudGVkYCBmaXJlcyBvbiBtb3VudCByZWdhcmRsZXNzIG9mIHZpc2liaWxpdHksIHNvIGEgd2lkZ2V0IHRoYXQgbW91bnRzIGJ1dCBuZXZlclxuICogICBiZWNvbWVzIHZpc2libGUgKHRoZSBzdXNwZWN0ZWQgaW5maW5pdGUtbG9hZCBjcnV4KSBzaG93cyB1cCBhcyBhICptb3VudGVkIHdpdGggbm8gcmVuZGVyZWQqXG4gKiAgIGdhcCBpbnN0ZWFkIG9mIGJlaW5nIGludmlzaWJsZSB0byBhbmFseXRpY3MgZW50aXJlbHkuXG4gKiAtIGB3aWRnZXRfbG9hZF9vdXRjb21lYCBmaXJlcyBvbmNlIHRoZSB3aWRnZXQncyBvd24gcmVxdWVzdHMgc2V0dGxlXG4gKiAgIChjb250ZW50X2xvYWRlZCAvIHN0YXRpY19mYWxsYmFjayAvIGVycm9yKS5cbiAqIC0gYHdpZGdldF9sb2FkX3N0YWxsZWRgIGZpcmVzIGlmIGl0J3Mgc3RpbGwgbG9hZGluZyBhdCBXSURHRVRfTE9BRF9TVEFMTF9NUyBBTkQgc3RpbGwgbW91bnRlZC5cbiAqICAgVGhlIHRpbWVyIGlzIGNsZWFyZWQgb24gdW5tb3VudCwgc28gYSBzaG9wcGVyIHdobyBuYXZpZ2F0ZXMgYXdheSBmaXJzdCBuZXZlciB0cmlwcyBpdCDigJRcbiAqICAgXCJzdGFsbGVkIHdpdGggbm8gbGF0ZXIgb3V0Y29tZVwiIGlzIHRoZXJlZm9yZSBhIGNsZWFuIHN0dWNrIHNpZ25hbCwgdW5kaWx1dGVkIGJ5IGFiYW5kb25tZW50LlxuICpcbiAqIGBsb2FkX2lkYCBjb3JyZWxhdGVzIGFsbCBvZiB0aGUgYWJvdmUgKGFuZCBpcyB0aHJlYWRlZCBvbnRvIGBbRW52aXZlXSBXaWRnZXQgUmVuZGVyZWRgKSBzb1xuICogdGhlIGdhcHMgYXJlIGpvaW5hYmxlIHBlciBsb2FkLlxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VXaWRnZXRMb2FkRGlhZ25vc3RpY3M6IChpbnB1dDogV2lkZ2V0TG9hZERpYWdub3N0aWNzSW5wdXQpID0+IHZvaWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxJQUFXLHVCQUF1QixDQUFDLElBQUk7QUFDdkMsSUFBVyx5QkFBeUIsQ0FBQyxJQUFJO0FBQ3pDLElBQVcsNkJBQTZCO0NBQUM7T0FBRztPQUFBO09BQUE7Q0FBQTtBQUM1QyxJQUFXLDJCQUEyQixDQUFDLFdBQVcsMkJBQTJCIn0=