@imtbl/checkout-widgets 2.24.8 → 2.24.9-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/browser/{AddTokensWidget-BQfrLKCo.js → AddTokensWidget-CIR8BF_I.js} +24 -297
  2. package/dist/browser/{BridgeWidget-6KlgTXwZ.js → BridgeWidget-C5Uljhhx.js} +13 -294
  3. package/dist/browser/{CommerceWidget-CcCuv661.js → CommerceWidget-CeBBYCbK.js} +17 -47
  4. package/dist/browser/{FeesBreakdown-DvoQJlP-.js → FeesBreakdown-BU4haotD.js} +1 -1
  5. package/dist/browser/{OnRampWidget-DaL34PiA.js → OnRampWidget-Ccvb3QkT.js} +5 -80
  6. package/dist/browser/{SaleWidget-D-IBBRTL.js → SaleWidget-CPARFlzv.js} +61 -219
  7. package/dist/browser/{SpendingCapHero-Z5NIcrWw.js → SpendingCapHero-B-0YYZho.js} +1 -1
  8. package/dist/browser/{SwapWidget-C4B2Answ.js → SwapWidget-ujE6uX-N.js} +12 -206
  9. package/dist/browser/{TokenImage-DucOedrZ.js → TokenImage-BeUf_Ulv.js} +1 -1
  10. package/dist/browser/{TopUpView-BIvdNYib.js → TopUpView-GMv3360Q.js} +3 -54
  11. package/dist/browser/{WalletApproveHero-ge2JSOYk.js → WalletApproveHero-BJi7ufqM.js} +4 -12
  12. package/dist/browser/{WalletWidget-hiUotMuQ.js → WalletWidget-BABrqsfd.js} +4 -96
  13. package/dist/browser/{index-2esq4Cem.js → index-CcxHW36j.js} +1275 -9717
  14. package/dist/browser/{index-DWNAmu0n.js → index-Cp1w6map.js} +1 -1
  15. package/dist/browser/index.js +1 -1
  16. package/dist/browser/{useInterval-1gu4cbu3.js → useInterval-DbCsm_gG.js} +1 -1
  17. package/dist/types/components/FormComponents/SelectForm/SelectForm.d.ts +1 -5
  18. package/dist/types/components/FormComponents/SelectInput/SelectInput.d.ts +1 -5
  19. package/dist/types/components/Transak/TransakIframe.d.ts +0 -1
  20. package/dist/types/components/Transak/useTransakEvents.d.ts +0 -4
  21. package/dist/types/components/WalletDrawer/ConnectWalletDrawer.d.ts +1 -2
  22. package/dist/types/lib/squid/hooks/useExecute.d.ts +1 -2
  23. package/dist/types/views/top-up/TopUpView.d.ts +1 -5
  24. package/dist/types/widgets/add-tokens/hooks/useError.d.ts +1 -1
  25. package/dist/types/widgets/purchase/components/PurchaseConnectWalletDrawer.d.ts +1 -3
  26. package/dist/types/widgets/sale/hooks/useSaleEvents.d.ts +5 -31
  27. package/dist/types/widgets/swap/components/Fees.d.ts +1 -1
  28. package/package.json +7 -9
  29. package/src/components/ConnectLoader/ConnectLoader.tsx +0 -16
  30. package/src/components/FormComponents/SelectForm/SelectForm.tsx +2 -18
  31. package/src/components/FormComponents/SelectInput/SelectInput.tsx +1 -12
  32. package/src/components/RouteOptionsDrawer/RouteOptionsDrawer.tsx +2 -26
  33. package/src/components/Transactions/ChangeWallet.tsx +1 -12
  34. package/src/components/Transactions/ClaimWithdrawalInProgress.tsx +0 -11
  35. package/src/components/Transactions/NoTransactions.tsx +0 -10
  36. package/src/components/Transactions/TransactionItemWithdrawPending.tsx +1 -13
  37. package/src/components/Transactions/Transactions.tsx +2 -28
  38. package/src/components/Transak/TransakIframe.tsx +0 -6
  39. package/src/components/Transak/useTransakEvents.ts +1 -70
  40. package/src/components/WalletDrawer/ConnectWalletDrawer.tsx +2 -35
  41. package/src/components/WalletDrawer/PayWithWalletDrawer.tsx +0 -1
  42. package/src/context/view-context/test-components/ViewContextTestComponent.tsx +14 -15
  43. package/src/lib/squid/hooks/useExecute.ts +5 -18
  44. package/src/views/top-up/TopUpView.tsx +5 -56
  45. package/src/widgets/add-tokens/AddTokensRoot.tsx +28 -29
  46. package/src/widgets/add-tokens/AddTokensWidget.tsx +2 -17
  47. package/src/widgets/add-tokens/components/TokenDrawerMenu.tsx +2 -18
  48. package/src/widgets/add-tokens/hooks/useError.tsx +1 -18
  49. package/src/widgets/add-tokens/hooks/useErrorHandler.ts +2 -12
  50. package/src/widgets/add-tokens/views/AddTokens.tsx +8 -154
  51. package/src/widgets/add-tokens/views/Review.tsx +6 -94
  52. package/src/widgets/bridge/BridgeWidget.tsx +0 -35
  53. package/src/widgets/bridge/BridgeWidgetRoot.tsx +17 -18
  54. package/src/widgets/bridge/components/BridgeForm.tsx +0 -20
  55. package/src/widgets/bridge/components/BridgeReviewSummary.tsx +1 -49
  56. package/src/widgets/bridge/components/WalletAndNetworkSelector.tsx +3 -122
  57. package/src/widgets/bridge/views/ApproveTransaction.tsx +1 -15
  58. package/src/widgets/bridge/views/Bridge.tsx +1 -16
  59. package/src/widgets/bridge/views/BridgeReview.tsx +1 -12
  60. package/src/widgets/bridge/views/ClaimWithdrawal.tsx +0 -11
  61. package/src/widgets/bridge/views/MoveInProgress.tsx +0 -24
  62. package/src/widgets/bridge/views/WalletNetworkSelectionView.tsx +1 -12
  63. package/src/widgets/connect/ConnectWidget.tsx +2 -18
  64. package/src/widgets/connect/ConnectWidgetRoot.tsx +15 -16
  65. package/src/widgets/connect/components/WalletList.tsx +6 -55
  66. package/src/widgets/connect/views/ConnectWallet.tsx +1 -12
  67. package/src/widgets/connect/views/ReadyToConnect.tsx +2 -29
  68. package/src/widgets/connect/views/SwitchNetworkEth.tsx +3 -22
  69. package/src/widgets/connect/views/SwitchNetworkZkEVM.tsx +0 -18
  70. package/src/widgets/immutable-commerce/CommerceWidgetRoot.tsx +17 -19
  71. package/src/widgets/on-ramp/OnRampWidget.tsx +0 -2
  72. package/src/widgets/on-ramp/OnRampWidgetRoot.tsx +23 -24
  73. package/src/widgets/on-ramp/views/OnRampMain.tsx +1 -91
  74. package/src/widgets/purchase/PurchaseWidgetRoot.tsx +22 -23
  75. package/src/widgets/purchase/components/PurchaseConnectWalletDrawer.tsx +2 -34
  76. package/src/widgets/purchase/components/PurchaseDeliverToWalletDrawer.tsx +0 -1
  77. package/src/widgets/purchase/components/PurchasePayWithWalletDrawer.tsx +0 -2
  78. package/src/widgets/purchase/components/PurchaseRouteOptionsDrawer/RouteOptionsDrawer.tsx +1 -30
  79. package/src/widgets/purchase/components/WithCard.tsx +0 -4
  80. package/src/widgets/purchase/views/Purchase.tsx +1 -2
  81. package/src/widgets/sale/SaleWidget.tsx +0 -2
  82. package/src/widgets/sale/SaleWidgetRoot.tsx +32 -33
  83. package/src/widgets/sale/components/OrderReview.tsx +2 -29
  84. package/src/widgets/sale/components/WithCard.tsx +0 -2
  85. package/src/widgets/sale/hooks/useSaleEvents.ts +3 -185
  86. package/src/widgets/sale/views/OrderSummary.tsx +2 -15
  87. package/src/widgets/sale/views/PayWithCard.tsx +4 -46
  88. package/src/widgets/sale/views/PayWithCoins.tsx +4 -9
  89. package/src/widgets/sale/views/PaymentMethods.tsx +3 -6
  90. package/src/widgets/sale/views/SaleErrorView.tsx +1 -1
  91. package/src/widgets/swap/SwapWidget.tsx +0 -24
  92. package/src/widgets/swap/SwapWidgetRoot.tsx +29 -30
  93. package/src/widgets/swap/components/Fees.tsx +1 -1
  94. package/src/widgets/swap/components/SwapForm.tsx +2 -140
  95. package/src/widgets/swap/views/ApproveERC20Onboarding.tsx +1 -36
  96. package/src/widgets/swap/views/SwapCoins.tsx +0 -17
  97. package/src/widgets/swap/views/SwapInProgress.tsx +0 -14
  98. package/src/widgets/transfer/TransferForm.tsx +3 -25
  99. package/src/widgets/transfer/TransferWidget.tsx +1 -23
  100. package/src/widgets/wallet/WalletWidgetRoot.tsx +24 -25
  101. package/src/widgets/wallet/components/BalanceItem/BalanceItem.tsx +1 -50
  102. package/src/widgets/wallet/components/NetworkMenu/NetworkMenu.tsx +0 -13
  103. package/src/widgets/wallet/components/WalletAddress/WalletAddress.tsx +0 -13
  104. package/src/widgets/wallet/views/CoinInfo.tsx +1 -12
  105. package/src/widgets/wallet/views/Settings.tsx +1 -15
  106. package/src/widgets/wallet/views/WalletBalances.tsx +0 -24
  107. package/tsconfig.json +0 -1
  108. package/dist/browser/auto-track-C-H4NHVE.js +0 -105
  109. package/dist/browser/index-CcQ-5rAF.js +0 -446
  110. package/dist/browser/index-CvpdSuud.js +0 -5634
  111. package/dist/browser/index-D3m5uC9C.js +0 -60
  112. package/dist/browser/index-DJEaNohG.js +0 -65
  113. package/dist/browser/index-DPz4F2rf.js +0 -27
  114. package/dist/browser/index-DQZhPkHy.js +0 -65
  115. package/dist/browser/index.umd-brf0Qwxh.js +0 -32
  116. package/dist/browser/is-plan-event-enabled-mXX0dwl-.js +0 -17
  117. package/dist/types/context/analytics-provider/CustomAnalyticsProvider.d.ts +0 -7
  118. package/dist/types/context/analytics-provider/SegmentAnalyticsProvider.d.ts +0 -42
  119. package/dist/types/context/analytics-provider/SetupAnalytics.d.ts +0 -7
  120. package/dist/types/lib/analytics/identifyUser.d.ts +0 -8
  121. package/dist/types/lib/analytics/identifyUser.test.d.ts +0 -1
  122. package/src/context/analytics-provider/CustomAnalyticsProvider.tsx +0 -22
  123. package/src/context/analytics-provider/SegmentAnalyticsProvider.ts +0 -41
  124. package/src/context/analytics-provider/SetupAnalytics.tsx +0 -35
  125. package/src/lib/analytics/identifyUser.test.ts +0 -44
  126. package/src/lib/analytics/identifyUser.ts +0 -26
@@ -1,60 +0,0 @@
1
- import { er as gracefulDecodeURIComponent, ej as isPlainObject } from './index-2esq4Cem.js';
2
-
3
- /**
4
- * Returns an object containing only the properties prefixed by the input
5
- * string.
6
- * Ex: prefix('ajs_traits_', { ajs_traits_address: '123 St' })
7
- * will return { address: '123 St' }
8
- **/
9
- function pickPrefix(prefix, object) {
10
- return Object.keys(object).reduce(function (acc, key) {
11
- if (key.startsWith(prefix)) {
12
- var field = key.substr(prefix.length);
13
- acc[field] = object[key];
14
- }
15
- return acc;
16
- }, {});
17
- }
18
-
19
- function queryString(analytics, query) {
20
- var a = document.createElement('a');
21
- a.href = query;
22
- var parsed = a.search.slice(1);
23
- var params = parsed.split('&').reduce(function (acc, str) {
24
- var _a = str.split('='), k = _a[0], v = _a[1];
25
- acc[k] = gracefulDecodeURIComponent(v);
26
- return acc;
27
- }, {});
28
- var calls = [];
29
- var ajs_uid = params.ajs_uid, ajs_event = params.ajs_event, ajs_aid = params.ajs_aid;
30
- var _a = isPlainObject(analytics.options.useQueryString)
31
- ? analytics.options.useQueryString
32
- : {}, _b = _a.aid, aidPattern = _b === void 0 ? /.+/ : _b, _c = _a.uid, uidPattern = _c === void 0 ? /.+/ : _c;
33
- if (ajs_aid) {
34
- var anonId = Array.isArray(params.ajs_aid)
35
- ? params.ajs_aid[0]
36
- : params.ajs_aid;
37
- if (aidPattern.test(anonId)) {
38
- analytics.setAnonymousId(anonId);
39
- }
40
- }
41
- if (ajs_uid) {
42
- var uid = Array.isArray(params.ajs_uid)
43
- ? params.ajs_uid[0]
44
- : params.ajs_uid;
45
- if (uidPattern.test(uid)) {
46
- var traits = pickPrefix('ajs_trait_', params);
47
- calls.push(analytics.identify(uid, traits));
48
- }
49
- }
50
- if (ajs_event) {
51
- var event_1 = Array.isArray(params.ajs_event)
52
- ? params.ajs_event[0]
53
- : params.ajs_event;
54
- var props = pickPrefix('ajs_prop_', params);
55
- calls.push(analytics.track(event_1, props));
56
- }
57
- return Promise.all(calls);
58
- }
59
-
60
- export { queryString };
@@ -1,65 +0,0 @@
1
- import { ed as __assign } from './index-2esq4Cem.js';
2
- import { i as isPlanEventEnabled } from './is-plan-event-enabled-mXX0dwl-.js';
3
-
4
- function disabledActionDestinations(plan, settings) {
5
- var _a, _b;
6
- if (!plan || !Object.keys(plan)) {
7
- return {};
8
- }
9
- var disabledIntegrations = plan.integrations
10
- ? Object.keys(plan.integrations).filter(function (i) { return plan.integrations[i] === false; })
11
- : [];
12
- // This accounts for cases like Fullstory, where the settings.integrations
13
- // contains a "Fullstory" object but settings.remotePlugins contains "Fullstory (Actions)"
14
- var disabledRemotePlugins = [];
15
- ((_a = settings.remotePlugins) !== null && _a !== void 0 ? _a : []).forEach(function (p) {
16
- disabledIntegrations.forEach(function (int) {
17
- if (p.name.includes(int) || int.includes(p.name)) {
18
- disabledRemotePlugins.push(p.name);
19
- }
20
- });
21
- });
22
- return ((_b = settings.remotePlugins) !== null && _b !== void 0 ? _b : []).reduce(function (acc, p) {
23
- if (p.settings['subscriptions']) {
24
- if (disabledRemotePlugins.includes(p.name)) {
25
- // @ts-expect-error element implicitly has an 'any' type because p.settings is a JSONObject
26
- p.settings['subscriptions'].forEach(
27
- // @ts-expect-error parameter 'sub' implicitly has an 'any' type
28
- function (sub) { return (acc["".concat(p.name, " ").concat(sub.partnerAction)] = false); });
29
- }
30
- }
31
- return acc;
32
- }, {});
33
- }
34
- function schemaFilter(track, settings) {
35
- function filter(ctx) {
36
- var plan = track;
37
- var ev = ctx.event.event;
38
- if (plan && ev) {
39
- var planEvent = plan[ev];
40
- if (!isPlanEventEnabled(plan, planEvent)) {
41
- ctx.updateEvent('integrations', __assign(__assign({}, ctx.event.integrations), { All: false, 'Segment.io': true }));
42
- return ctx;
43
- }
44
- else {
45
- var disabledActions = disabledActionDestinations(planEvent, settings);
46
- ctx.updateEvent('integrations', __assign(__assign(__assign({}, ctx.event.integrations), planEvent === null || planEvent === void 0 ? void 0 : planEvent.integrations), disabledActions));
47
- }
48
- }
49
- return ctx;
50
- }
51
- return {
52
- name: 'Schema Filter',
53
- version: '0.1.0',
54
- isLoaded: function () { return true; },
55
- load: function () { return Promise.resolve(); },
56
- type: 'before',
57
- page: filter,
58
- alias: filter,
59
- track: filter,
60
- identify: filter,
61
- group: filter,
62
- };
63
- }
64
-
65
- export { schemaFilter };
@@ -1,27 +0,0 @@
1
- import { e6 as __awaiter, e7 as __generator } from './index-2esq4Cem.js';
2
-
3
- function loadLegacyVideoPlugins(analytics) {
4
- return __awaiter(this, void 0, void 0, function () {
5
- var plugins;
6
- return __generator(this, function (_a) {
7
- switch (_a.label) {
8
- case 0: return [4 /*yield*/, import(
9
- // @ts-expect-error
10
- './index.umd-brf0Qwxh.js').then(function (n) { return n.i; })
11
- // This is super gross, but we need to support the `window.analytics.plugins` namespace
12
- // that is linked in the segment docs in order to be backwards compatible with ajs-classic
13
- // @ts-expect-error
14
- ];
15
- case 1:
16
- plugins = _a.sent();
17
- // This is super gross, but we need to support the `window.analytics.plugins` namespace
18
- // that is linked in the segment docs in order to be backwards compatible with ajs-classic
19
- // @ts-expect-error
20
- analytics._plugins = plugins;
21
- return [2 /*return*/];
22
- }
23
- });
24
- });
25
- }
26
-
27
- export { loadLegacyVideoPlugins };
@@ -1,65 +0,0 @@
1
- import { e6 as __awaiter, e7 as __generator, eh as isServer, e9 as getNextIntegrationsURL, e8 as loadScript } from './index-2esq4Cem.js';
2
-
3
- function remoteMiddlewares(ctx, settings, obfuscate) {
4
- var _a;
5
- return __awaiter(this, void 0, void 0, function () {
6
- var path, remoteMiddleware, names, scripts, middleware;
7
- var _this = this;
8
- return __generator(this, function (_b) {
9
- switch (_b.label) {
10
- case 0:
11
- if (isServer()) {
12
- return [2 /*return*/, []];
13
- }
14
- path = getNextIntegrationsURL();
15
- remoteMiddleware = (_a = settings.enabledMiddleware) !== null && _a !== void 0 ? _a : {};
16
- names = Object.entries(remoteMiddleware)
17
- .filter(function (_a) {
18
- var enabled = _a[1];
19
- return enabled;
20
- })
21
- .map(function (_a) {
22
- var name = _a[0];
23
- return name;
24
- });
25
- scripts = names.map(function (name) { return __awaiter(_this, void 0, void 0, function () {
26
- var nonNamespaced, bundleName, fullPath, error_1;
27
- return __generator(this, function (_a) {
28
- switch (_a.label) {
29
- case 0:
30
- nonNamespaced = name.replace('@segment/', '');
31
- bundleName = nonNamespaced;
32
- if (obfuscate) {
33
- bundleName = btoa(nonNamespaced).replace(/=/g, '');
34
- }
35
- fullPath = "".concat(path, "/middleware/").concat(bundleName, "/latest/").concat(bundleName, ".js.gz");
36
- _a.label = 1;
37
- case 1:
38
- _a.trys.push([1, 3, , 4]);
39
- return [4 /*yield*/, loadScript(fullPath)
40
- // @ts-ignore
41
- ];
42
- case 2:
43
- _a.sent();
44
- // @ts-ignore
45
- return [2 /*return*/, window["".concat(nonNamespaced, "Middleware")]];
46
- case 3:
47
- error_1 = _a.sent();
48
- ctx.log('error', error_1);
49
- ctx.stats.increment('failed_remote_middleware');
50
- return [3 /*break*/, 4];
51
- case 4: return [2 /*return*/];
52
- }
53
- });
54
- }); });
55
- return [4 /*yield*/, Promise.all(scripts)];
56
- case 1:
57
- middleware = _b.sent();
58
- middleware = middleware.filter(Boolean);
59
- return [2 /*return*/, middleware];
60
- }
61
- });
62
- });
63
- }
64
-
65
- export { remoteMiddlewares };
@@ -1,32 +0,0 @@
1
- import { ay as getDefaultExportFromCjs } from './index-2esq4Cem.js';
2
-
3
- function _mergeNamespaces(n, m) {
4
- m.forEach(function (e) {
5
- e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) {
6
- if (k !== 'default' && !(k in n)) {
7
- var d = Object.getOwnPropertyDescriptor(e, k);
8
- Object.defineProperty(n, k, d.get ? d : {
9
- enumerable: true,
10
- get: function () { return e[k]; }
11
- });
12
- }
13
- });
14
- });
15
- return Object.freeze(n);
16
- }
17
-
18
- var index_umd$2 = {exports: {}};
19
-
20
- (function (module, exports) {
21
- !function(e,t){module.exports=t();}(window,(function(){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,a),i.l=!0,i.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n});},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0});},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)a.d(n,i,function(t){return e[t]}.bind(null,i));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="",a(a.s=2)}([function(e,t,a){a.r(t);var n="function"==typeof fetch?fetch.bind():function(e,t){return t=t||{},new Promise((function(a,n){var i=new XMLHttpRequest;for(var r in i.open(t.method||"get",e,!0),t.headers)i.setRequestHeader(r,t.headers[r]);function o(){var e,t=[],a=[],n={};return i.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,(function(i,r,o){t.push(r=r.toLowerCase()),a.push([r,o]),e=n[r],n[r]=e?e+","+o:o;})),{ok:2==(i.status/100|0),status:i.status,statusText:i.statusText,url:i.responseURL,clone:o,text:function(){return Promise.resolve(i.responseText)},json:function(){return Promise.resolve(i.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([i.response]))},headers:{keys:function(){return t},entries:function(){return a},get:function(e){return n[e.toLowerCase()]},has:function(e){return e.toLowerCase()in n}}}}i.withCredentials="include"==t.credentials,i.onload=function(){a(o());},i.onerror=n,i.send(t.body);}))};t.default=n;},function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}();var i=function(){function e(t,a){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.pluginName=t;}return n(e,[{key:"track",value:function(e,t){window.analytics.track(e,t,{integration:{name:this.pluginName}});}}]),e}();t.default=i;},function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0}),t.YouTubeAnalytics=t.VimeoAnalytics=void 0;var n=r(a(3)),i=r(a(4));function r(e){return e&&e.__esModule?e:{default:e}}t.VimeoAnalytics=n.default,t.YouTubeAnalytics=i.default;},function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}(),i=r(a(0));function r(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(e,a){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return !t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"VimeoAnalytics"));return n.authToken=a,n.player=e,n.metadata={content:{},playback:{videoPlayer:"Vimeo"}},n.mostRecentHeartbeat=0,n.isPaused=!1,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t);}(t,e),n(t,[{key:"initialize",value:function(){var e=this,t={loaded:this.retrieveMetadata,play:this.trackPlay,pause:this.trackPause,ended:this.trackEnded,timeupdate:this.trackHeartbeat};for(var a in t)this.registerHandler(a,t[a]);this.player.getVideoId().then((function(t){e.retrieveMetadata({id:t});})).catch(console.error);}},{key:"registerHandler",value:function(e,t){var a=this;this.player.on(e,(function(e){a.updateMetadata(e),t.call(a,e);}));}},{key:"trackPlay",value:function(){this.isPaused?(this.track("Video Playback Resumed",this.metadata.playback),this.isPaused=!1):(this.track("Video Playback Started",this.metadata.playback),this.track("Video Content Started",this.metadata.content));}},{key:"trackEnded",value:function(){this.track("Video Playback Completed",this.metadata.playback),this.track("Video Content Completed",this.metadata.content);}},{key:"trackHeartbeat",value:function(){var e=this.mostRecentHeartbeat,t=this.metadata.playback.position;t!==e&&t-e>=10&&(this.track("Video Content Playing",this.metadata.content),this.mostRecentHeartbeat=Math.floor(t));}},{key:"trackPause",value:function(){this.isPaused=!0,this.track("Video Playback Paused",this.metadata.playback);}},{key:"retrieveMetadata",value:function(e){var t=this;return new Promise((function(a,n){var r=e.id;(0, i.default)("https://api.vimeo.com/videos/"+r,{headers:{Authorization:"Bearer "+t.authToken}}).then((function(e){return e.ok?e.json():n(e)})).then((function(e){t.metadata.content.title=e.name,t.metadata.content.description=e.description,t.metadata.content.publisher=e.user.name,t.metadata.playback.position=0,t.metadata.playback.totalLength=e.duration;})).catch((function(e){return console.error("Request to Vimeo API Failed with: ",e),n(e)}));}))}},{key:"updateMetadata",value:function(e){var t=this;return new Promise((function(a,n){t.player.getVolume().then((function(n){n&&(t.metadata.playback.sound=100*n),t.metadata.playback.position=e.seconds,a();})).catch(n);}))}}]),t}(r(a(1)).default);t.default=o;},function(e,t,a){Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}return function(t,a,n){return a&&e(t.prototype,a),n&&e(t,n),t}}(),i=o(a(0)),r=o(a(1));function o(e){return e&&e.__esModule?e:{default:e}}var s=function(e){function t(e,a){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return !t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"YoutubeAnalytics"));return n.player=e,n.apiKey=a,n.playerLoaded=!1,n.playbackStarted=!1,n.contentStarted=!1,n.isPaused=!1,n.isBuffering=!1,n.isSeeking=!1,n.lastRecordedTime={timeReported:Date.now(),timeElapsed:0},n.metadata=[{playback:{video_player:"youtube"},content:{}}],n.playlistIndex=0,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t);}(t,e),n(t,[{key:"initialize",value:function(){window.segmentYoutubeOnStateChange=this.onPlayerStateChange.bind(this),window.segmentYoutubeOnReady=this.onPlayerReady.bind(this),this.player.addEventListener("onReady","segmentYoutubeOnReady"),this.player.addEventListener("onStateChange","segmentYoutubeOnStateChange");}},{key:"onPlayerReady",value:function(e){this.retrieveMetadata();}},{key:"onPlayerStateChange",value:function(e){var t=this.player.getCurrentTime();switch(this.metadata[this.playlistIndex]&&(this.metadata[this.playlistIndex].playback.position=this.metadata[this.playlistIndex].content.position=t,this.metadata[this.playlistIndex].playback.quality=this.player.getPlaybackQuality(),this.metadata[this.playlistIndex].playback.sound=this.player.isMuted()?0:this.player.getVolume()),e.data){case-1:if(this.playerLoaded)break;this.retrieveMetadata(),this.playerLoaded=!0;break;case YT.PlayerState.BUFFERING:this.handleBuffer();break;case YT.PlayerState.PLAYING:this.handlePlay();break;case YT.PlayerState.PAUSED:this.handlePause();break;case YT.PlayerState.ENDED:this.handleEnd();}this.lastRecordedTime={timeReported:Date.now(),timeElapsed:1e3*this.player.getCurrentTime()};}},{key:"retrieveMetadata",value:function(){var e=this;return new Promise((function(t,a){var n=e.player.getVideoData(),r=e.player.getPlaylist()||[n.video_id],o=r.join();(0, i.default)("https://www.googleapis.com/youtube/v3/videos?id="+o+"&part=snippet,contentDetails&key="+e.apiKey).then((function(e){if(!e.ok){var t=new Error("Segment request to Youtube API failed (likely due to a bad API Key. Events will still be sent but will not contain video metadata)");throw t.response=e,t}return e.json()})).then((function(a){e.metadata=[];for(var n=0,i=0;i<r.length;i++){var o=a.items[i];e.metadata.push({content:{title:o.snippet.title,description:o.snippet.description,keywords:o.snippet.tags,channel:o.snippet.channelTitle,airdate:o.snippet.publishedAt}}),n+=l(o.contentDetails.duration);}for(i=0;i<r.length;i++)e.metadata[i].playback={total_length:n,video_player:"youtube"};t();})).catch((function(t){e.metadata=r.map((function(e){return {playback:{video_player:"youtube"},content:{}}})),a(t);}));}))}},{key:"handleBuffer",value:function(){var e=this.determineSeek();this.playbackStarted||(this.playbackStarted=!0,this.track("Video Playback Started",this.metadata[this.playlistIndex].playback)),e&&!this.isSeeking&&(this.isSeeking=!0,this.track("Video Playback Seek Started",this.metadata[this.playlistIndex].playback)),this.isSeeking&&(this.track("Video Playback Seek Completed",this.metadata[this.playlistIndex].playback),this.isSeeking=!1);var t=this.player.getPlaylist();t&&0===this.player.getCurrentTime()&&this.player.getPlaylistIndex()!==this.playlistIndex&&(this.contentStarted=!1,this.playlistIndex===t.length-1&&0===this.player.getPlaylistIndex()&&(this.track("Video Playback Completed",this.metadata[this.player.getPlaylistIndex()].playback),this.track("Video Playback Started",this.metadata[this.player.getPlaylistIndex()].playback))),this.track("Video Playback Buffer Started",this.metadata[this.playlistIndex].playback),this.isBuffering=!0;}},{key:"handlePlay",value:function(){this.contentStarted||(this.playlistIndex=this.player.getPlaylistIndex(),-1===this.playlistIndex&&(this.playlistIndex=0),this.track("Video Content Started",this.metadata[this.playlistIndex].content),this.contentStarted=!0),this.isBuffering&&(this.track("Video Playback Buffer Completed",this.metadata[this.playlistIndex].playback),this.isBuffering=!1),this.isPaused&&(this.track("Video Playback Resumed",this.metadata[this.playlistIndex].playback),this.isPaused=!1);}},{key:"handlePause",value:function(){var e=this.determineSeek();this.isBuffering&&(this.track("Video Playback Buffer Completed",this.metadata[this.playlistIndex].playback),this.isBuffering=!1),this.isPaused||(e?(this.track("Video Playback Seek Started",this.metadata[this.playlistIndex].playback),this.isSeeking=!0):(this.track("Video Playback Paused",this.metadata[this.playlistIndex].playback),this.isPaused=!0));}},{key:"handleEnd",value:function(){this.track("Video Content Completed",this.metadata[this.playlistIndex].content),this.contentStarted=!1;var e=this.player.getPlaylistIndex(),t=this.player.getPlaylist();(t&&e===t.length-1||-1===e)&&(this.track("Video Playback Completed",this.metadata[this.playlistIndex].playback),this.playbackStarted=!1);}},{key:"determineSeek",value:function(){var e=this.isPaused||this.isBuffering?0:Date.now()-this.lastRecordedTime.timeReported,t=1e3*this.player.getCurrentTime()-this.lastRecordedTime.timeElapsed;return Math.abs(e-t)>2e3}}]),t}(r.default);function l(e){var t=e.match(/PT(\d+H)?(\d+M)?(\d+S)?/);return t=t.slice(1).map((function(e){if(null!=e)return e.replace(/\D/,"")})),3600*(parseInt(t[0])||0)+60*(parseInt(t[1])||0)+(parseInt(t[2])||0)}t.default=s;}])}));
22
- } (index_umd$2));
23
-
24
- var index_umdExports = index_umd$2.exports;
25
- var index_umd = /*@__PURE__*/getDefaultExportFromCjs(index_umdExports);
26
-
27
- var index_umd$1 = /*#__PURE__*/_mergeNamespaces({
28
- __proto__: null,
29
- default: index_umd
30
- }, [index_umdExports]);
31
-
32
- export { index_umd$1 as i };
@@ -1,17 +0,0 @@
1
- /**
2
- * Determines whether a track event is allowed to be sent based on the
3
- * user's tracking plan.
4
- * If the user does not have a tracking plan or the event is allowed based
5
- * on the tracking plan configuration, returns true.
6
- */
7
- function isPlanEventEnabled(plan, planEvent) {
8
- var _a, _b;
9
- // Always prioritize the event's `enabled` status
10
- if (typeof (planEvent === null || planEvent === void 0 ? void 0 : planEvent.enabled) === 'boolean') {
11
- return planEvent.enabled;
12
- }
13
- // Assume absence of a tracking plan means events are enabled
14
- return (_b = (_a = plan === null || plan === void 0 ? void 0 : plan.__default) === null || _a === void 0 ? void 0 : _a.enabled) !== null && _b !== void 0 ? _b : true;
15
- }
16
-
17
- export { isPlanEventEnabled as i };
@@ -1,7 +0,0 @@
1
- import { Checkout } from '@imtbl/checkout-sdk';
2
- type CustomAnalyticsProps = {
3
- children: React.ReactNode;
4
- checkout: Checkout;
5
- };
6
- export declare function CustomAnalyticsProvider({ children, checkout }: CustomAnalyticsProps): import("@emotion/react/jsx-runtime").JSX.Element;
7
- export {};
@@ -1,42 +0,0 @@
1
- import { StandardAnalyticsControlTypes } from '@imtbl/react-analytics';
2
- import type { PropsWithChildren, ReactElement } from 'react';
3
- export declare enum UserJourney {
4
- CONNECT = "Connect",
5
- WALLET = "Wallet",
6
- ON_RAMP = "OnRamp",
7
- SWAP = "Swap",
8
- BRIDGE = "Bridge",
9
- SALE = "PrimarySale",
10
- ADD_TOKENS = "AddTokens",
11
- PURCHASE = "Purchase",
12
- TRANSFER = "Transfer"
13
- }
14
- export type AnalyticsControlTypes = StandardAnalyticsControlTypes | 'IframeEvent' | 'Event';
15
- export declare const AnalyticsProvider: (props: PropsWithChildren) => ReactElement;
16
- export declare const useAnalytics: () => {
17
- page: (props: {
18
- screen: string;
19
- userJourney: UserJourney;
20
- action?: import("@imtbl/react-analytics").StandardAnalyticsActions | undefined;
21
- extras?: Record<string, unknown> | undefined;
22
- }) => Promise<import("@segment/analytics-next").Context>;
23
- track: (props: {
24
- screen: string;
25
- userJourney: UserJourney;
26
- extras?: Record<string, unknown> | undefined;
27
- } & ({
28
- action: import("@imtbl/react-analytics").StandardAnalyticsActions;
29
- control?: undefined;
30
- controlType?: undefined;
31
- } | {
32
- control: string;
33
- controlType: AnalyticsControlTypes;
34
- action?: import("@imtbl/react-analytics").StandardAnalyticsActions | undefined;
35
- })) => Promise<import("@segment/analytics-next").Context>;
36
- identify: import("@segment/analytics-next/dist/types/core/buffer").AnalyticsBuffered["identify"];
37
- group(traits: import("@segment/analytics-next").GroupTraits): Promise<import("@segment/analytics-next").Context>;
38
- alias: import("@segment/analytics-next/dist/types/core/buffer").AnalyticsBuffered["alias"];
39
- identifyFromCookie: () => Promise<import("@segment/analytics-next").Context>;
40
- updateWriteKey: (writeKey: string) => void;
41
- user: import("@segment/analytics-next/dist/types/core/buffer").AnalyticsBuffered["user"];
42
- };
@@ -1,7 +0,0 @@
1
- import { Checkout } from '@imtbl/checkout-sdk';
2
- type SetupAnalyticsProps = {
3
- children: React.ReactNode;
4
- checkout: Checkout;
5
- };
6
- export declare function SetupAnalytics({ children, checkout }: SetupAnalyticsProps): import("@emotion/react/jsx-runtime").JSX.Element;
7
- export {};
@@ -1,8 +0,0 @@
1
- import { WrappedBrowserProvider } from '@imtbl/checkout-sdk';
2
- /**
3
- * identifyUser - function to identify a user by their wallet address and call the function to raise analytics
4
- * @param identify - The identify function from the useAnalytics() hook
5
- * @param provider - the WrappedBrowserProvider used to find the user's walletAddress
6
- * @param options - additional options to pass to the identify function
7
- */
8
- export declare function identifyUser(identify: (id: string, attributes: Record<string, any>, options?: Record<string, any>) => void, provider: WrappedBrowserProvider, options?: Record<string, any>): Promise<void>;
@@ -1 +0,0 @@
1
- export {};
@@ -1,22 +0,0 @@
1
- import { Checkout } from '@imtbl/checkout-sdk';
2
- import {
3
- AnalyticsProvider,
4
- } from './SegmentAnalyticsProvider';
5
- import { SetupAnalytics } from './SetupAnalytics';
6
-
7
- type CustomAnalyticsProps = {
8
- children: React.ReactNode;
9
- checkout: Checkout;
10
- };
11
-
12
- export function CustomAnalyticsProvider(
13
- { children, checkout }: CustomAnalyticsProps,
14
- ) {
15
- return (
16
- <AnalyticsProvider>
17
- <SetupAnalytics checkout={checkout}>
18
- {children}
19
- </SetupAnalytics>
20
- </AnalyticsProvider>
21
- );
22
- }
@@ -1,41 +0,0 @@
1
- import {
2
- createAnalytics,
3
- StandardAnalyticsControlTypes,
4
- } from '@imtbl/react-analytics';
5
- import type { PropsWithChildren, ReactElement } from 'react';
6
-
7
- export enum UserJourney {
8
- CONNECT = 'Connect',
9
- WALLET = 'Wallet',
10
- ON_RAMP = 'OnRamp',
11
- SWAP = 'Swap',
12
- BRIDGE = 'Bridge',
13
- SALE = 'PrimarySale',
14
- ADD_TOKENS = 'AddTokens',
15
- PURCHASE = 'Purchase',
16
- TRANSFER = 'Transfer',
17
- }
18
-
19
- export type AnalyticsControlTypes =
20
- | StandardAnalyticsControlTypes
21
- | 'IframeEvent'
22
- | 'Event';
23
-
24
- const productName = 'checkout';
25
-
26
- const analytics = createAnalytics<
27
- UserJourney,
28
- string,
29
- string,
30
- AnalyticsControlTypes
31
- >({
32
- writeKey: '',
33
- appName: productName,
34
- storageKeyPrefix: 'checkoutWidgets',
35
- });
36
-
37
- // Explicit annotation: createAnalytics returns emotion JSX.Element, which is not portable
38
- export const AnalyticsProvider = analytics.AnalyticsProvider as (
39
- props: PropsWithChildren,
40
- ) => ReactElement;
41
- export const useAnalytics = analytics.useAnalytics;
@@ -1,35 +0,0 @@
1
- import { useCallback, useEffect } from 'react';
2
- import { Checkout, TelemetryConfig } from '@imtbl/checkout-sdk';
3
- import { useAnalytics } from './SegmentAnalyticsProvider';
4
-
5
- type SetupAnalyticsProps = {
6
- children: React.ReactNode;
7
- checkout: Checkout
8
- };
9
-
10
- export function SetupAnalytics(
11
- { children, checkout }: SetupAnalyticsProps,
12
- ) {
13
- const { updateWriteKey } = useAnalytics();
14
-
15
- const telemetry = useCallback(async () => {
16
- try {
17
- return await checkout?.config?.remote.getConfig('telemetry');
18
- } catch (err: any) {
19
- // eslint-disable-next-line no-console
20
- console.error('unable to fetch telemetry config: ', err);
21
- }
22
- return undefined;
23
- }, [checkout]);
24
-
25
- useEffect(() => {
26
- (async () => {
27
- const config = await telemetry() as TelemetryConfig;
28
- if (!config) return;
29
- updateWriteKey(config.segmentPublishableKey);
30
- })();
31
- }, [telemetry]);
32
-
33
- // eslint-disable-next-line react/jsx-no-useless-fragment
34
- return (<>{children}</>);
35
- }
@@ -1,44 +0,0 @@
1
- import { WrappedBrowserProvider } from '@imtbl/checkout-sdk';
2
- import { identifyUser } from './identifyUser';
3
-
4
- describe('identifyUser', () => {
5
- let provider;
6
- let identify;
7
- beforeEach(() => {
8
- jest.resetAllMocks();
9
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
10
- identify = jest.fn().mockReturnValue({});
11
- });
12
-
13
- it('should identify a user by their wallet address and add properties isMetaMask and isPassportWallet', async () => {
14
- provider = {
15
- getSigner: jest.fn().mockReturnValue({
16
- getAddress: jest.fn().mockResolvedValue('0xtest'),
17
- }),
18
- ethereumProvider: {
19
- isMetaMask: true,
20
- request: jest.fn(),
21
- },
22
- } as any as WrappedBrowserProvider;
23
-
24
- await identifyUser(identify, provider);
25
- expect(identify).toBeCalledWith('0xtest', { isMetaMask: true, isPassportWallet: false }, undefined);
26
- });
27
-
28
- it('should correctly identify users wallet as Passport', async () => {
29
- const options = { foo: 'bar' };
30
-
31
- provider = {
32
- getSigner: jest.fn().mockReturnValue({
33
- getAddress: jest.fn().mockResolvedValue('0xtest'),
34
- }),
35
- send: jest.fn(),
36
- ethereumProvider: {
37
- isPassport: true,
38
- request: jest.fn(),
39
- },
40
- } as any as WrappedBrowserProvider;
41
- await identifyUser(identify, provider, options);
42
- expect(identify).toBeCalledWith('0xtest', { isMetaMask: false, isPassportWallet: true }, options);
43
- });
44
- });
@@ -1,26 +0,0 @@
1
- import { WrappedBrowserProvider } from '@imtbl/checkout-sdk';
2
- import { isMetaMaskProvider, isPassportProvider } from '../provider';
3
-
4
- /**
5
- * identifyUser - function to identify a user by their wallet address and call the function to raise analytics
6
- * @param identify - The identify function from the useAnalytics() hook
7
- * @param provider - the WrappedBrowserProvider used to find the user's walletAddress
8
- * @param options - additional options to pass to the identify function
9
- */
10
- export async function identifyUser(
11
- identify: (id: string, attributes: Record<string, any>, options?: Record<string, any>) => void,
12
- provider: WrappedBrowserProvider,
13
- options?: Record<string, any>,
14
- ) {
15
- // WT-1698 Analytics - Identify user here then progress to widget
16
- const walletAddress = (await (await provider.getSigner()).getAddress()).toLowerCase();
17
- const isMetaMask = isMetaMaskProvider(provider);
18
- const isPassport = isPassportProvider(provider);
19
- try {
20
- identify(walletAddress, {
21
- isMetaMask,
22
- isPassportWallet: isPassport,
23
- }, options);
24
- // eslint-disable-next-line no-console
25
- } catch (error: any) { console.error('analytics: unable to identify user: ', error); }
26
- }