bitsnap-react 1.0.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.
package/dist/index.js ADDED
@@ -0,0 +1,2087 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ ApplePayButton: () => ApplePay_default,
34
+ Bitsnap: () => Bitsnap,
35
+ BitsnapCheckout: () => BitsnapCart_default,
36
+ GooglePayButton: () => GooglePay_default,
37
+ createCheckout: () => createCheckout,
38
+ createPaymentURL: () => createPaymentURL,
39
+ getReferenceIfPossible: () => getReferenceIfPossible,
40
+ injectReferenceToRequestIfNeeded: () => injectReferenceToRequestIfNeeded,
41
+ setCustomHost: () => setCustomHost,
42
+ setProjectID: () => setProjectID
43
+ });
44
+ module.exports = __toCommonJS(src_exports);
45
+
46
+ // src/components/checkout/ApplePay.tsx
47
+ var import_apple_pay_button = __toESM(require("apple-pay-button"));
48
+
49
+ // src/public.api.client.ts
50
+ var import_connect = require("@connectrpc/connect");
51
+ var import_connect_web = require("@connectrpc/connect-web");
52
+
53
+ // src/gen/proto/public/v1/public_api_pb.ts
54
+ var import_codegenv25 = require("@bufbuild/protobuf/codegenv2");
55
+ var import_wkt3 = require("@bufbuild/protobuf/wkt");
56
+
57
+ // src/gen/proto/common/v1/gateway_pb.ts
58
+ var import_codegenv2 = require("@bufbuild/protobuf/codegenv2");
59
+ var file_common_v1_gateway = /* @__PURE__ */ (0, import_codegenv2.fileDesc)("Chdjb21tb24vdjEvZ2F0ZXdheS5wcm90bxIJY29tbW9uLnYxKrMBCgdHYXRld2F5Eg8KC0dBVEVXQVlfQUxMEAASFwoTR0FURVdBWV9QUlpFTEVXWV8yNBABEhIKDkdBVEVXQVlfU1RSSVBFEAISEAoMR0FURVdBWV9UUEFZEAMSHAoYR0FURVdBWV9DQVNIX09OX0RFTElWRVJZEAQSEAoMR0FURVdBWV9GUkVFEAUSFgoSR0FURVdBWV9JTlBPU1RfUEFZEAYSEAoMR0FURVdBWV9QQVlVEAdCTlpMZ2l0aHViLmNvbS9lbW1lbXMvc3VwZXItY2FydC9hcHBzL3Nydi13b3JrZXIvdXRpbHMvbW9kZWxzL2NvbW1vbi92MTtjb21tb252MWIGcHJvdG8z");
60
+
61
+ // src/gen/proto/common/v1/address_pb.ts
62
+ var import_codegenv22 = require("@bufbuild/protobuf/codegenv2");
63
+ var file_common_v1_address = /* @__PURE__ */ (0, import_codegenv22.fileDesc)("Chdjb21tb24vdjEvYWRkcmVzcy5wcm90bxIJY29tbW9uLnYxIocBCgdBZGRyZXNzEgwKBG5hbWUYASABKAkSDQoFbGluZTEYAiABKAkSEgoFbGluZTIYAyABKAlIAIgBARIMCgRjaXR5GAQgASgJEg8KB2NvdW50cnkYBSABKAkSFQoIemlwX2NvZGUYBiABKAlIAYgBAUIICgZfbGluZTJCCwoJX3ppcF9jb2RlIq4BCg5CaWxsaW5nQWRkcmVzcxIMCgRuYW1lGAEgASgJEg0KBWxpbmUxGAIgASgJEhIKBWxpbmUyGAMgASgJSACIAQESDAoEY2l0eRgEIAEoCRIPCgdjb3VudHJ5GAUgASgJEhUKCHppcF9jb2RlGAYgASgJSAGIAQESEwoGdGF4X2lkGAcgASgJSAKIAQFCCAoGX2xpbmUyQgsKCV96aXBfY29kZUIJCgdfdGF4X2lkQk5aTGdpdGh1Yi5jb20vZW1tZW1zL3N1cGVyLWNhcnQvYXBwcy9zcnYtd29ya2VyL3V0aWxzL21vZGVscy9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw");
64
+ var AddressSchema = /* @__PURE__ */ (0, import_codegenv22.messageDesc)(file_common_v1_address, 0);
65
+ var BillingAddressSchema = /* @__PURE__ */ (0, import_codegenv22.messageDesc)(file_common_v1_address, 1);
66
+
67
+ // src/gen/proto/common/v1/push_notifications_pb.ts
68
+ var import_codegenv23 = require("@bufbuild/protobuf/codegenv2");
69
+ var import_wkt = require("@bufbuild/protobuf/wkt");
70
+ var file_common_v1_push_notifications = /* @__PURE__ */ (0, import_codegenv23.fileDesc)("CiJjb21tb24vdjEvcHVzaF9ub3RpZmljYXRpb25zLnByb3RvEgljb21tb24udjEi9gEKG1B1c2hOb3RpZmljYXRpb25EZXZpY2VUb2tlbhIXCgpwdXNoX3Rva2VuGAIgASgJSACIAQESNAoLZXhwaXJlX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESEwoGcDI1NmRoGAQgASgJSAKIAQESFQoIZW5kcG9pbnQYBSABKAlIA4gBARIlCghwbGF0Zm9ybRgGIAEoDjITLmNvbW1vbi52MS5QbGF0Zm9ybUINCgtfcHVzaF90b2tlbkIOCgxfZXhwaXJlX3RpbWVCCQoHX3AyNTZkaEILCglfZW5kcG9pbnQiZwoXUHVzaE5vdGlmaWNhdGlvblBheWxvYWQSDQoFdGl0bGUYAiABKAkSFQoIb3Blbl91cmwYAyABKAlIAYgBARIOCgRib2R5GAQgASgJSABCCQoHbWVzc2FnZUILCglfb3Blbl91cmwqeAoIUGxhdGZvcm0SGAoUUExBVEZPUk1fVU5TUEVDSUZJRUQQABIQCgxQTEFURk9STV9XRUIQARIYChRQTEFURk9STV9JT1NfU0FOREJPWBACEhAKDFBMQVRGT1JNX0lPUxADEhQKEFBMQVRGT1JNX0FORFJPSUQQBCp0ChFOb3RpZmljYXRpb25FdmVudBIRCg1FVkVOVF9VTktOT1dOEAASEgoORVZFTlRfUkVDRUlWRUQQARIQCgxFVkVOVF9PUEVORUQQAhIRCg1FVkVOVF9DTElDS0VEEAMSEwoPRVZFTlRfRElTTUlTU0VEEAQqmQEKGU5vdGlmaWNhdGlvbkdyb3VwSG93T2Z0ZW4SJwojTk9USUZJQ0FUSU9OX0dST1VQX0hPV19PRlRFTl9SQVJFTFkQABImCiJOT1RJRklDQVRJT05fR1JPVVBfSE9XX09GVEVOX09GVEVOEAESKwonTk9USUZJQ0FUSU9OX0dST1VQX0hPV19PRlRFTl9WRVJZX09GVEVOEAJCTlpMZ2l0aHViLmNvbS9lbW1lbXMvc3VwZXItY2FydC9hcHBzL3Nydi13b3JrZXIvdXRpbHMvbW9kZWxzL2NvbW1vbi92MTtjb21tb252MWIGcHJvdG8z", [import_wkt.file_google_protobuf_timestamp]);
71
+
72
+ // src/gen/proto/dashboard/v1/audiobooks_pb.ts
73
+ var import_codegenv24 = require("@bufbuild/protobuf/codegenv2");
74
+ var import_wkt2 = require("@bufbuild/protobuf/wkt");
75
+ var file_dashboard_v1_audiobooks = /* @__PURE__ */ (0, import_codegenv24.fileDesc)("Ch1kYXNoYm9hcmQvdjEvYXVkaW9ib29rcy5wcm90bxIXZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEiFgoUR2V0QXVkaW9ib29rc1JlcXVlc3QiIQoTR2V0QXVkaW9ib29rUmVxdWVzdBIKCgJpZBgBIAEoCSKrAQoHQ2hhcHRlchIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESGgoNbXVsdGltZWRpYV9pZBgEIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkIQCg5fbXVsdGltZWRpYV9pZCLzAgoJQXVkaW9ib29rEg8KAmlkGAEgASgJSACIAQESEgoKcHJvamVjdF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhMKC2NvdmVyX2ltYWdlGAUgASgJEhcKD3RodW1ibmFpbF9pbWFnZRgGIAEoCRIyCghjaGFwdGVycxgHIAMoCzIgLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkNoYXB0ZXISFwoPaXNfZG93bmxvYWRhYmxlGAggASgIEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiQKF2lzX2Jyb3dzZXJfZG93bmxvYWRhYmxlGAogASgISAGIAQESGQoMYWNjZW50X2NvbG9yGAsgASgJSAKIAQFCBQoDX2lkQhoKGF9pc19icm93c2VyX2Rvd25sb2FkYWJsZUIPCg1fYWNjZW50X2NvbG9yIk8KFUdldEF1ZGlvYm9va3NSZXNwb25zZRI2CgphdWRpb2Jvb2tzGAEgAygLMiIuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQXVkaW9ib29rImAKFEdldEF1ZGlvYm9va1Jlc3BvbnNlEjoKCWF1ZGlvYm9vaxgBIAEoCzIiLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkF1ZGlvYm9va0gAiAEBQgwKCl9hdWRpb2Jvb2siVwoeQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXF1ZXN0EjUKCWF1ZGlvYm9vaxgBIAEoCzIiLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkF1ZGlvYm9vayLRAQofQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXNwb25zZRJSCgdzdWNjZXNzGAEgASgLMj8uZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXNwb25zZS5SZXN1bHRIABI6CgdmYWlsdXJlGAIgASgOMicuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuRmFpbHVyZU1lc3NhZ2VIABoUCgZSZXN1bHQSCgoCaWQYASABKAlCCAoGcmVzdWx0IiQKFkRlbGV0ZUF1ZGlvYm9va1JlcXVlc3QSCgoCaWQYASABKAkiVQofR2V0QXVkaW9ib29rQWNjZXNzRW1haWxzUmVxdWVzdBIUCgxhdWRpb2Jvb2tfaWQYASABKAkSEgoFZW1haWwYAiABKAlIAIgBAUIICgZfZW1haWwi+AIKIEdldEF1ZGlvYm9va0FjY2Vzc0VtYWlsc1Jlc3BvbnNlElMKB3N1Y2Nlc3MYASABKAsyQC5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tBY2Nlc3NFbWFpbHNSZXNwb25zZS5SZXN1bHRIABI6CgdmYWlsdXJlGAIgASgOMicuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuRmFpbHVyZU1lc3NhZ2VIABpYCgtBY2Nlc3NFbWFpbBIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIuCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBpfCgZSZXN1bHQSVQoGZW1haWxzGAEgAygLMkUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuR2V0QXVkaW9ib29rQWNjZXNzRW1haWxzUmVzcG9uc2UuQWNjZXNzRW1haWxCCAoGcmVzdWx0IkMKHENyZWF0ZUF1ZGlvYm9va0FjY2Vzc1JlcXVlc3QSFAoMYXVkaW9ib29rX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJIjgKHERlbGV0ZUF1ZGlvYm9va0FjY2Vzc1JlcXVlc3QSGAoQc3lzdGVtX2FjY2Vzc19pZBgBIAEoCSJ/CgxCb29sUmVzcG9uc2USKQoHc3VjY2VzcxgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjoKB2ZhaWx1cmUYAiABKA4yJy5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5GYWlsdXJlTWVzc2FnZUgAQggKBnJlc3VsdCqpAQoORmFpbHVyZU1lc3NhZ2USGwoXRkFJTFVSRV9NRVNTQUdFX1VOS05PV04QABIlCiFGQUlMVVJFX01FU1NBR0VfUFJPSkVDVF9OT1RfRk9VTkQQARIlCiFGQUlMVVJFX01FU1NBR0VfQ0hBUFRFUl9OT1RfRk9VTkQQAhIsCihGQUlMVVJFX01FU1NBR0VfSU5DT1JSRUNUX0NIQVBURVJfRk9STUFUEAMy6gYKEUF1ZGlvYm9va3NTZXJ2aWNlEm4KDUdldEF1ZGlvYm9va3MSLS5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tzUmVxdWVzdBouLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkdldEF1ZGlvYm9va3NSZXNwb25zZRJrCgxHZXRBdWRpb2Jvb2sSLC5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tSZXF1ZXN0Gi0uZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuR2V0QXVkaW9ib29rUmVzcG9uc2USjAEKF0NyZWF0ZU9yVXBkYXRlQXVkaW9ib29rEjcuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXF1ZXN0GjguZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXNwb25zZRJpCg9EZWxldGVBdWRpb2Jvb2sSLy5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5EZWxldGVBdWRpb2Jvb2tSZXF1ZXN0GiUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQm9vbFJlc3BvbnNlEo8BChhHZXRBdWRpb2Jvb2tBY2Nlc3NFbWFpbHMSOC5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tBY2Nlc3NFbWFpbHNSZXF1ZXN0GjkuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuR2V0QXVkaW9ib29rQWNjZXNzRW1haWxzUmVzcG9uc2USdQoVQ3JlYXRlQXVkaW9ib29rQWNjZXNzEjUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlQXVkaW9ib29rQWNjZXNzUmVxdWVzdBolLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkJvb2xSZXNwb25zZRJ1ChVEZWxldGVBdWRpb2Jvb2tBY2Nlc3MSNS5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5EZWxldGVBdWRpb2Jvb2tBY2Nlc3NSZXF1ZXN0GiUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQm9vbFJlc3BvbnNlYgZwcm90bzM", [import_wkt2.file_google_protobuf_timestamp, import_wkt2.file_google_protobuf_empty]);
76
+
77
+ // src/gen/proto/public/v1/public_api_pb.ts
78
+ var file_public_v1_public_api = /* @__PURE__ */ (0, import_codegenv25.fileDesc)("ChpwdWJsaWMvdjEvcHVibGljX2FwaS5wcm90bxINcHVibGljX2FwaS52MSI3CiFJc09uZUNsaWNrUGF5bWVudEF2YWlsYWJsZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSLFAgoiSXNPbmVDbGlja1BheW1lbnRBdmFpbGFibGVSZXNwb25zZRISCgppbnBvc3RfcGF5GAEgASgIEhEKCWFwcGxlX3BheRgCIAEoCBISCgpnb29nbGVfcGF5GAMgASgIEmEKEWdvb2dsZV9wYXlfY29uZmlnGAQgASgLMkEucHVibGljX2FwaS52MS5Jc09uZUNsaWNrUGF5bWVudEF2YWlsYWJsZVJlc3BvbnNlLkdvb2dsZVBheUNvbmZpZ0gAiAEBGmsKD0dvb2dsZVBheUNvbmZpZxITCgttZXJjaGFudF9pZBgBIAEoCRIVCg1tZXJjaGFudF9uYW1lGAIgASgJEg8KB2dhdGV3YXkYAyABKAkSGwoTZ2F0ZXdheV9tZXJjaGFudF9pZBgEIAEoCUIUChJfZ29vZ2xlX3BheV9jb25maWci0QMKH09uZUNsaWNrQXV0aG9yaXplUGF5bWVudFJlcXVlc3QSRwoHZ2F0ZXdheRgBIAEoDjI2LnB1YmxpY19hcGkudjEuT25lQ2xpY2tBdXRob3JpemVQYXltZW50UmVxdWVzdC5HYXRld2F5EhMKC3BheW1lbnREYXRhGAIgASgJEhUKDXBheW1lbnRNZXRob2QYAyABKAkSHQoVdHJhbnNhY3Rpb25JZGVudGlmaWVyGAQgASgJEjcKBW9yZGVyGAUgASgLMigucHVibGljX2FwaS52MS5HZXRQcmVPcmRlckRldGFpbHNSZXF1ZXN0EjEKEHNoaXBwaW5nX2FkZHJlc3MYBiABKAsyEi5jb21tb24udjEuQWRkcmVzc0gAiAEBEjcKD2JpbGxpbmdfYWRkcmVzcxgHIAEoCzIZLmNvbW1vbi52MS5CaWxsaW5nQWRkcmVzc0gBiAEBEhUKCG1ldGFkYXRhGAggASgJSAKIAQEiKAoHR2F0ZXdheRINCglBUFBMRV9QQVkQABIOCgpHT09HTEVfUEFZEAFCEwoRX3NoaXBwaW5nX2FkZHJlc3NCEgoQX2JpbGxpbmdfYWRkcmVzc0ILCglfbWV0YWRhdGEipAEKIE9uZUNsaWNrQXV0aG9yaXplUGF5bWVudFJlc3BvbnNlEhIKCmlzX3N1Y2Nlc3MYASABKAgSFAoMcmVkaXJlY3RfdXJsGAIgASgJEhYKDnRyYW5zYWN0aW9uX2lkGAMgASgJEiMKFmFwcGxlX3BheV90cmFja2luZ191cmwYBCABKAlIAIgBAUIZChdfYXBwbGVfcGF5X3RyYWNraW5nX3VybCIsCgxQcmVPcmRlckl0ZW0SCgoCaWQYASABKAkSEAoIcXVhbnRpdHkYAiABKAUi1QIKGUdldFByZU9yZGVyRGV0YWlsc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIqCgVpdGVtcxgCIAMoCzIbLnB1YmxpY19hcGkudjEuUHJlT3JkZXJJdGVtEhkKDGNvdW50cnlfY29kZRgDIAEoCUgAiAEBEhYKCXBvc3RfY29kZRgEIAEoCUgBiAEBEhcKCmNvdXBvbkNvZGUYBSABKAlIAogBARISCgVlbWFpbBgGIAEoCUgDiAEBEiUKGHNlbGVjdGVkX2RlbGl2ZXJ5X21ldGhvZBgHIAEoCUgEiAEBEhIKBXBob25lGAggASgJSAWIAQFCDwoNX2NvdW50cnlfY29kZUIMCgpfcG9zdF9jb2RlQg0KC19jb3Vwb25Db2RlQggKBl9lbWFpbEIbChlfc2VsZWN0ZWRfZGVsaXZlcnlfbWV0aG9kQggKBl9waG9uZSKsAQoORGVsaXZlcnlNZXRob2QSCgoCaWQYASABKAkSDgoGYW1vdW50GAIgASgFEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARIVCghtaW5fZGF5cxgFIAEoBUgBiAEBEhUKCG1heF9kYXlzGAYgASgFSAKIAQFCDgoMX2Rlc2NyaXB0aW9uQgsKCV9taW5fZGF5c0ILCglfbWF4X2RheXMiswIKGkdldFByZU9yZGVyRGV0YWlsc1Jlc3BvbnNlEi4KB21ldGhvZHMYASADKAsyHS5wdWJsaWNfYXBpLnYxLkRlbGl2ZXJ5TWV0aG9kEhcKCmNvdXBvbkNvZGUYAiABKAlIAIgBARIlChhzZWxlY3RlZF9kZWxpdmVyeV9tZXRob2QYAyABKAlIAYgBARIZCgx0b3RhbF9hbW91bnQYBCABKAVIAogBARIZCgxjb3Vwb25fdmFsdWUYBSABKAVIA4gBARIQCghjdXJyZW5jeRgGIAEoCRIPCgdjb3VudHJ5GAcgASgJQg0KC19jb3Vwb25Db2RlQhsKGV9zZWxlY3RlZF9kZWxpdmVyeV9tZXRob2RCDwoNX3RvdGFsX2Ftb3VudEIPCg1fY291cG9uX3ZhbHVlImIKKU5vdGlmeVVzZXJBYm91dFByb2R1Y3RBdmFpbGFiaWxpdHlSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEgoKcHJvZHVjdF9pZBgCIAEoCRINCgVlbWFpbBgDIAEoCSJNCh9BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRSZXF1ZXN0EhYKDnZhbGlkYXRpb25fdXJsGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkiPAogQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50UmVzcG9uc2USGAoQbWVyY2hhbnRfc2Vzc2lvbhgBIAEoCSJOCiJHZXRBdmFpbGFibGVDb3VudEZvclByb2R1Y3RSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSFAoMYWxsX3ZhcmlhbnRzGAIgAygJIsIECiNHZXRBdmFpbGFibGVDb3VudEZvclByb2R1Y3RSZXNwb25zZRJhChBhdmFpbGFibGVfY291bnRzGAEgAygLMkcucHVibGljX2FwaS52MS5HZXRBdmFpbGFibGVDb3VudEZvclByb2R1Y3RSZXNwb25zZS5BdmFpbGFibGVDb3VudHNFbnRyeRJMCgVlcnJvchgCIAEoDjI4LnB1YmxpY19hcGkudjEuR2V0QXZhaWxhYmxlQ291bnRGb3JQcm9kdWN0UmVzcG9uc2UuRXJyb3JIAIgBARpRChhBdmFpbGFibGVDb3VudEZvclByb2R1Y3QSIwobYXZhaWxhYmxlX3F1YW50aXR5X3RvX29yZGVyGAEgASgFEhAKCGNhbl9iYWNrGAIgASgIGoMBChRBdmFpbGFibGVDb3VudHNFbnRyeRILCgNrZXkYASABKAkSWgoFdmFsdWUYAiABKAsySy5wdWJsaWNfYXBpLnYxLkdldEF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdFJlc3BvbnNlLkF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdDoCOAEihgEKBUVycm9yEhEKDUVSUk9SX1VOS05PV04QABIbChdFUlJPUl9QUk9KRUNUX05PVF9GT1VORBABEh8KG0VSUk9SX1BST0RVQ1RfTk9UX0FWQUlMQUJMRRACEiwKKEVSUk9SX1BST0RVQ1RfTk9UX0FWQUlMQUJMRV9CVVRfQ0FOX0JBQ0sQA0IICgZfZXJyb3IiNQodVXNlclBhbmVsRGVsZXRlQWNjb3VudFJlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJIkAKFERpZEJ1eVByb2R1Y3RSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRISCgpwcm9kdWN0X2lkGAIgASgJIv4BCiFVcGRhdGVOb3RpZmljYXRpb25TZXR0aW5nc1JlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSTQoNbW9kaWZpY2F0aW9ucxgDIAMoCzI2LnB1YmxpY19hcGkudjEuVXBkYXRlTm90aWZpY2F0aW9uU2V0dGluZ3NSZXF1ZXN0Lkdyb3VwEjoKD2VuYWJsZWRfbWV0aG9kcxgEIAMoDjIhLnB1YmxpY19hcGkudjEuTm90aWZpY2F0aW9uTWV0aG9kGiQKBUdyb3VwEgoKAmlkGAEgASgJEg8KB2VuYWJsZWQYAiABKAgiUQonVXBkYXRlR2xvYmFsTm90aWZpY2F0aW9uU2V0dGluZ3NSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRIQCghpc19tdXRlZBgCIAEoCCJRCiVHZXROb3RpZmljYXRpb25TZXR0aW5nc0RldGFpbHNSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJIqEBChFOb3RpZmljYXRpb25Hcm91cBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDwoHZW5hYmxlZBgEIAEoCBI3Cglob3dfb2Z0ZW4YBSABKA4yJC5jb21tb24udjEuTm90aWZpY2F0aW9uR3JvdXBIb3dPZnRlbkIOCgxfZGVzY3JpcHRpb24isQIKJkdldE5vdGlmaWNhdGlvblNldHRpbmdzRGV0YWlsc1Jlc3BvbnNlEhIKCnByb2plY3RfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIvCgV0aGVtZRgDIAEoCzIbLnB1YmxpY19hcGkudjEuUHJvamVjdFRoZW1lSACIAQESPAoRYXZhaWxhYmxlX21ldGhvZHMYBCADKA4yIS5wdWJsaWNfYXBpLnYxLk5vdGlmaWNhdGlvbk1ldGhvZBI6Cg9lbmFibGVkX21ldGhvZHMYBSADKA4yIS5wdWJsaWNfYXBpLnYxLk5vdGlmaWNhdGlvbk1ldGhvZBIwCgZncm91cHMYBiADKAsyIC5wdWJsaWNfYXBpLnYxLk5vdGlmaWNhdGlvbkdyb3VwQggKBl90aGVtZSJDCh5HZXROb3RpZmljYXRpb25TZXR0aW5nc1JlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEgsKA2FsbBgCIAEoCCLwAgofR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3NSZXNwb25zZRJICghwcm9qZWN0cxgBIAMoCzI2LnB1YmxpY19hcGkudjEuR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3NSZXNwb25zZS5Qcm9qZWN0EhAKCGlzX211dGVkGAIgASgIGqUBCgdQcm9qZWN0EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSRQoGc3RhdHVzGAMgASgOMjUucHVibGljX2FwaS52MS5HZXROb3RpZmljYXRpb25TZXR0aW5nc1Jlc3BvbnNlLlN0YXR1cxIvCgV0aGVtZRgEIAEoCzIbLnB1YmxpY19hcGkudjEuUHJvamVjdFRoZW1lSACIAQFCCAoGX3RoZW1lIkkKBlN0YXR1cxIWChJTVEFUVVNfVU5TUEVDSUZJRUQQABISCg5TVEFUVVNfRU5BQkxFRBABEhMKD1NUQVRVU19ESVNBQkxFRBACIkEKKVVzZXJQYW5lbFB1c2hHZXRBdmFpbGFibGVDb21wYW5pZXNSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCSLrAgoqVXNlclBhbmVsUHVzaEdldEF2YWlsYWJsZUNvbXBhbmllc1Jlc3BvbnNlElQKCWNvbXBhbmllcxgBIAMoCzJBLnB1YmxpY19hcGkudjEuVXNlclBhbmVsUHVzaEdldEF2YWlsYWJsZUNvbXBhbmllc1Jlc3BvbnNlLkNvbXBhbnkacQoFR3JvdXASCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhYKCWhvd19vZnRlbhgEIAEoCUgBiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfaG93X29mdGVuGnQKB0NvbXBhbnkSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRJPCgZncm91cHMYAyADKAsyPy5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbFB1c2hHZXRBdmFpbGFibGVDb21wYW5pZXNSZXNwb25zZS5Hcm91cCIwChpTaG91bGRTaG9wUHJvZHVjdHNSZXNwb25zZRISCgppc192aXNpYmxlGAEgASgIIkQKFkdldFNob3BQcm9kdWN0c1JlcXVlc3QSGQoMYWNjZXNzX3Rva2VuGAEgASgJSACIAQFCDwoNX2FjY2Vzc190b2tlbiLYAQoXR2V0U2hvcFByb2R1Y3RzUmVzcG9uc2USQAoIcHJvZHVjdHMYBSADKAsyLi5wdWJsaWNfYXBpLnYxLkdldFNob3BQcm9kdWN0c1Jlc3BvbnNlLlByb2R1Y3QaewoHUHJvZHVjdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCWltYWdlX3VybBgDIAEoCRINCgVwcmljZRgEIAEoCRIeChFpc19hbHJlYWR5X2JvdWdodBgFIAEoCEgAiAEBQhQKEl9pc19hbHJlYWR5X2JvdWdodCLUAQofVXNlclBhbmVsR2V0RmlsZURldGFpbHNSZXNwb25zZRJICgdzdWNjZXNzGAEgASgLMjUucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRGaWxlRGV0YWlsc1Jlc3BvbnNlLlJlc3VsdEgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSAAaKwoGUmVzdWx0EhIKCnByb2plY3RfaWQYASABKAkSDQoFZmlsZXMYAiADKAlCCAoGcmVzdWx0IkkKHlVzZXJQYW5lbEdldEZpbGVEZXRhaWxzUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkSEQoJYWNjZXNzX2lkGAIgASgJIvkCCiFVc2VyUGFuZWxHZXRUaWNrZXREZXRhaWxzUmVzcG9uc2USSgoHc3VjY2VzcxgBIAEoCzI3LnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0VGlja2V0RGV0YWlsc1Jlc3BvbnNlLlJlc3VsdEgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSAAaywEKBlJlc3VsdBISCgpwcm9qZWN0X2lkGAEgASgJEhIKCnRpY2tldF91cmwYAiABKAkSFAoMcHJvZHVjdF9uYW1lGAMgASgJEhkKEXByb2R1Y3RfaW1hZ2VfdXJsGAQgASgJEh4KEWdvb2dsZV93YWxsZXRfdXJsGAUgASgJSACIAQESHQoQYXBwbGVfd2FsbGV0X3VybBgGIAEoCUgBiAEBQhQKEl9nb29nbGVfd2FsbGV0X3VybEITChFfYXBwbGVfd2FsbGV0X3VybEIICgZyZXN1bHQiSwogVXNlclBhbmVsR2V0VGlja2V0RGV0YWlsc1JlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhEKCWFjY2Vzc19pZBgCIAEoCSKqBAowVXNlclBhbmVsR2V0QXVkaW9ib29rRGV0YWlsc0Rvd25sb2FkVVJMc1Jlc3BvbnNlElkKB3N1Y2Nlc3MYASABKAsyRi5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNEb3dubG9hZFVSTHNSZXNwb25zZS5SZXN1bHRIABIwCgdmYWlsdXJlGAIgASgOMh0ucHVibGljX2FwaS52MS5GYWlsdXJlTWVzc2FnZUgAGnYKGEF1ZGlvYm9va0Rvd25sb2FkRGV0YWlscxISCgpjaGFwdGVyX2lkGAEgASgJEhIKCnB1YmxpY191cmwYAiABKAkSHQoQZG93bmxvYWRhYmxlX3VybBgDIAEoCUgAiAEBQhMKEV9kb3dubG9hZGFibGVfdXJsGuYBCgZSZXN1bHQSfAoaYXVkaW9ib29rX2Rvd25sb2FkX2RldGFpbHMYASADKAsyWC5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNEb3dubG9hZFVSTHNSZXNwb25zZS5BdWRpb2Jvb2tEb3dubG9hZERldGFpbHMSMwomaXNfYXZhaWxhYmxlX3RvX2Rvd25sb2FkX2luX21vYmlsZV9hcHAYAiABKAhIAIgBAUIpCidfaXNfYXZhaWxhYmxlX3RvX2Rvd25sb2FkX2luX21vYmlsZV9hcHBCCAoGcmVzdWx0IoIBCi9Vc2VyUGFuZWxHZXRBdWRpb2Jvb2tEZXRhaWxzRG93bmxvYWRVUkxzUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkSEQoJYWNjZXNzX2lkGAIgASgJEhcKCmlzX2Jyb3dzZXIYAyABKAhIAIgBAUINCgtfaXNfYnJvd3NlciKbAQokVXNlclBhbmVsR2V0QXVkaW9ib29rRGV0YWlsc1Jlc3BvbnNlEjcKCWF1ZGlvYm9vaxgBIAEoCzIiLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkF1ZGlvYm9va0gAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSABCCAoGcmVzdWx0Ik4KI1VzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRIRCglhY2Nlc3NfaWQYAiABKAkiMwobVXNlclBhbmVsR2V0UHJvZHVjdHNSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCSLZAQocVXNlclBhbmVsR2V0UHJvZHVjdHNSZXNwb25zZRJFCgdzdWNjZXNzGAEgASgLMjIucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRQcm9kdWN0c1Jlc3BvbnNlLlJlc3VsdEgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSAAaNgoGUmVzdWx0EiwKCHByb2R1Y3RzGAEgAygLMhoucHVibGljX2FwaS52MS5Vc2VyUHJvZHVjdEIICgZyZXN1bHQiLgoWVXNlclBhbmVsTG9nb3V0UmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkitAEKHlVzZXJQYW5lbExvZ2luV2l0aENvZGVSZXNwb25zZRIWCgxhY2Nlc3NfdG9rZW4YASABKAlIABIwCgdmYWlsdXJlGAIgASgOMh0ucHVibGljX2FwaS52MS5GYWlsdXJlTWVzc2FnZUgAEhIKBWVtYWlsGAMgASgJSAGIAQESFAoHdXNlcl9pZBgEIAEoCUgCiAEBQggKBnJlc3VsdEIICgZfZW1haWxCCgoIX3VzZXJfaWQiLQodVXNlclBhbmVsTG9naW5XaXRoQ29kZVJlcXVlc3QSDAoEY29kZRgBIAEoBSKxAQoWVXNlclBhbmVsTG9naW5SZXNwb25zZRI/CgdzdWNjZXNzGAEgASgLMiwucHVibGljX2FwaS52MS5Vc2VyUGFuZWxMb2dpblJlc3BvbnNlLlJlc3VsdEgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSAAaGgoGUmVzdWx0EhAKCHJldHJ5X2luGAEgASgFQggKBnJlc3VsdCJeChVVc2VyUGFuZWxMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSHwoScmVndWxhdGlvbnNfYWNjZXB0GAIgASgISACIAQFCFQoTX3JlZ3VsYXRpb25zX2FjY2VwdCI5ChdHZXRPcmRlclJldHJ5VXJsUmVxdWVzdBIKCgJpZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJIr8BChhHZXRPcmRlclJldHJ5VXJsUmVzcG9uc2USPgoDdXJsGAEgASgLMi8ucHVibGljX2FwaS52MS5HZXRPcmRlclJldHJ5VXJsUmVzcG9uc2UuU3VjY2Vzc0gAEhEKB2ZhaWx1cmUYAiABKAlIABpGCgdTdWNjZXNzEgsKA3VybBgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIICgZyZXN1bHQiMQoPR2V0T3JkZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkifAoQR2V0T3JkZXJSZXNwb25zZRIPCgJpZBgBIAEoCUgAiAEBEiIKBWl0ZW1zGAIgAygLMhMucHVibGljX2FwaS52MS5JdGVtEiwKB2RldGFpbHMYAyABKAsyGy5wdWJsaWNfYXBpLnYxLk9yZGVyRGV0YWlsc0IFCgNfaWQi+QEKDE9yZGVyRGV0YWlscxI1CgVpdGVtcxgBIAMoCzImLnB1YmxpY19hcGkudjEuT3JkZXJEZXRhaWxzLlNpbmdsZUl0ZW0SIwoHZ2F0ZXdheRgCIAEoDjISLmNvbW1vbi52MS5HYXRld2F5GowBCgpTaW5nbGVJdGVtEgoKAmlkGAEgASgJEhYKCWltYWdlX3VybBgCIAEoCUgAiAEBEgwKBG5hbWUYAyABKAkSEAoIcXVhbnRpdHkYBCABKAUSFAoMcHJpY2VfYW1vdW50GAUgASgDEhYKDnByaWNlX2N1cnJlbmN5GAYgASgJQgwKCl9pbWFnZV91cmwi0QEKBEl0ZW0SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIRCglpbWFnZV91cmwYAyABKAkSPAoRZmlsZV9kb3dubG9hZGFibGUYBCABKAsyHy5wdWJsaWNfYXBpLnYxLkZpbGVEb3dubG9hZGFibGVIABItCglhdWRpb2Jvb2sYBSABKAsyGC5wdWJsaWNfYXBpLnYxLkF1ZGlvYm9va0gAEicKBnRpY2tldBgGIAEoCzIVLnB1YmxpY19hcGkudjEuVGlja2V0SABCBgoEaXRlbSIkChBGaWxlRG93bmxvYWRhYmxlEhAKCGZpbGVfdXJsGAEgASgJIiUKCUF1ZGlvYm9vaxIYChBhcHBfZG93bmxvYWRfdXJsGAEgASgJIoEBCgZUaWNrZXQSEQoJdGlja2V0X2lkGAEgASgJEhsKDmFwcGxlX3Bhc3NfdXJsGAIgASgJSACIAQESHgoRZ29vZ2xlX3RpY2tldF91cmwYAyABKAlIAYgBAUIRCg9fYXBwbGVfcGFzc191cmxCFAoSX2dvb2dsZV90aWNrZXRfdXJsIq0CCgtVc2VyUHJvZHVjdBISCgpwcm9qZWN0X2lkGAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCRISCgpwcm9kdWN0X2lkGAMgASgJEhQKDHByb2R1Y3RfbmFtZRgEIAEoCRIbChNwcm9kdWN0X2Rlc2NyaXB0aW9uGAUgASgJEhkKEXByb2R1Y3RfaW1hZ2VfdXJsGAYgASgJEjQKDHByb2R1Y3RfdHlwZRgHIAEoDjIeLnB1YmxpY19hcGkudjEuVXNlclByb2R1Y3RUeXBlEhEKCWFjY2Vzc19pZBgIIAEoCRI3Cg1wcm9qZWN0X3RoZW1lGAkgASgLMhsucHVibGljX2FwaS52MS5Qcm9qZWN0VGhlbWVIAIgBAUIQCg5fcHJvamVjdF90aGVtZSJ1CgxCb29sUmVzcG9uc2USKQoHc3VjY2VzcxgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSABCCAoGcmVzdWx0Im4KEFB1c2hFdmVudFJlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhcKD25vdGlmaWNhdGlvbl9pZBgCIAEoCRIrCgVldmVudBgDIAEoDjIcLmNvbW1vbi52MS5Ob3RpZmljYXRpb25FdmVudCKtAQoaUHVzaFNlbmREZXZpY2VUb2tlblJlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEjcKB3BheWxvYWQYAiABKAsyJi5jb21tb24udjEuUHVzaE5vdGlmaWNhdGlvbkRldmljZVRva2VuEiQKF2lzX25vdGlmaWNhdGlvbl9ncmFudGVkGAMgASgISACIAQFCGgoYX2lzX25vdGlmaWNhdGlvbl9ncmFudGVkIsIBCgxQcm9qZWN0VGhlbWUSFgoJaW1hZ2VfdXJsGAEgASgJSACIAQESGwoOaW1hZ2VfZGFya191cmwYAiABKAlIAYgBARIYCgticmFuZF9jb2xvchgDIAEoCUgCiAEBEh0KEGJyYW5kX2NvbG9yX2RhcmsYBCABKAlIA4gBAUIMCgpfaW1hZ2VfdXJsQhEKD19pbWFnZV9kYXJrX3VybEIOCgxfYnJhbmRfY29sb3JCEwoRX2JyYW5kX2NvbG9yX2RhcmsqhwEKD1VzZXJQcm9kdWN0VHlwZRIdChlVU0VSX1BST0RVQ1RfVFlQRV9VTktOT1dOEAASGwoXVVNFUl9QUk9EVUNUX1RZUEVfQVVESU8QARIaChZVU0VSX1BST0RVQ1RfVFlQRV9GSUxFEAISHAoYVVNFUl9QUk9EVUNUX1RZUEVfVElDS0VUEAMqsQMKDkZhaWx1cmVNZXNzYWdlEhsKF0ZBSUxVUkVfTUVTU0FHRV9VTktOT1dOEAASIwofRkFJTFVSRV9NRVNTQUdFX0VNQUlMX05PVF9GT1VORBABEiMKH0ZBSUxVUkVfTUVTU0FHRV9JTkNPUlJFQ1RfRU1BSUwQAhIiCh5GQUlMVVJFX01FU1NBR0VfSU5DT1JSRUNUX0NPREUQAxIwCixGQUlMVVJFX01FU1NBR0VfR0VORVJBVEVfQUNDRVNTX1RPS0VOX0ZBSUxFRBAEEiEKHUZBSUxVUkVfTUVTU0FHRV9MT0dPVVRfRkFJTEVEEAUSJQohRkFJTFVSRV9NRVNTQUdFX1BSRFVDVFNfTk9UX0ZPVU5EEAYSJwojRkFJTFVSRV9NRVNTQUdFX0FVRElPQk9PS19OT1RfRk9VTkQQBxInCiNGQUlMVVJFX01FU1NBR0VfSU5DT1JSRUNUX0FVRElPQk9PSxAIEiAKHEZBSUxVUkVfTUVTU0FHRV9VTkFVVEhPUklaRUQQCRIkCiBGQUlMVVJFX01FU1NBR0VfVElDS0VUX05PVF9GT1VORBAKKo8BChJOb3RpZmljYXRpb25NZXRob2QSHwobTk9USUZJQ0FUSU9OX01FVEhPRF9VTktOT1dOEAASHQoZTk9USUZJQ0FUSU9OX01FVEhPRF9FTUFJTBABEhsKF05PVElGSUNBVElPTl9NRVRIT0RfU01TEAISHAoYTk9USUZJQ0FUSU9OX01FVEhPRF9QVVNIEAMy8BYKEFB1YmxpY0FwaVNlcnZpY2USSwoIR2V0T3JkZXISHi5wdWJsaWNfYXBpLnYxLkdldE9yZGVyUmVxdWVzdBofLnB1YmxpY19hcGkudjEuR2V0T3JkZXJSZXNwb25zZRJjChBHZXRPcmRlclJldHJ5VXJsEiYucHVibGljX2FwaS52MS5HZXRPcmRlclJldHJ5VXJsUmVxdWVzdBonLnB1YmxpY19hcGkudjEuR2V0T3JkZXJSZXRyeVVybFJlc3BvbnNlEl0KDlVzZXJQYW5lbExvZ2luEiQucHVibGljX2FwaS52MS5Vc2VyUGFuZWxMb2dpblJlcXVlc3QaJS5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbExvZ2luUmVzcG9uc2USdQoWVXNlclBhbmVsTG9naW5XaXRoQ29kZRIsLnB1YmxpY19hcGkudjEuVXNlclBhbmVsTG9naW5XaXRoQ29kZVJlcXVlc3QaLS5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbExvZ2luV2l0aENvZGVSZXNwb25zZRJVCg9Vc2VyUGFuZWxMb2dvdXQSJS5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbExvZ291dFJlcXVlc3QaGy5wdWJsaWNfYXBpLnYxLkJvb2xSZXNwb25zZRJjChZVc2VyUGFuZWxEZWxldGVBY2NvdW50EiwucHVibGljX2FwaS52MS5Vc2VyUGFuZWxEZWxldGVBY2NvdW50UmVxdWVzdBobLnB1YmxpY19hcGkudjEuQm9vbFJlc3BvbnNlEm8KFFVzZXJQYW5lbEdldFByb2R1Y3RzEioucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRQcm9kdWN0c1JlcXVlc3QaKy5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldFByb2R1Y3RzUmVzcG9uc2UShwEKHFVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHMSMi5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNSZXF1ZXN0GjMucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRBdWRpb2Jvb2tEZXRhaWxzUmVzcG9uc2USqwEKKFVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNEb3dubG9hZFVSTHMSPi5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNEb3dubG9hZFVSTHNSZXF1ZXN0Gj8ucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRBdWRpb2Jvb2tEZXRhaWxzRG93bmxvYWRVUkxzUmVzcG9uc2USeAoXVXNlclBhbmVsR2V0RmlsZURldGFpbHMSLS5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEZpbGVEZXRhaWxzUmVxdWVzdBouLnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0RmlsZURldGFpbHNSZXNwb25zZRJ+ChlVc2VyUGFuZWxHZXRUaWNrZXREZXRhaWxzEi8ucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRUaWNrZXREZXRhaWxzUmVxdWVzdBowLnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0VGlja2V0RGV0YWlsc1Jlc3BvbnNlElgKE1B1c2hTZW5kRGV2aWNlVG9rZW4SKS5wdWJsaWNfYXBpLnYxLlB1c2hTZW5kRGV2aWNlVG9rZW5SZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkQKCVB1c2hFdmVudBIfLnB1YmxpY19hcGkudjEuUHVzaEV2ZW50UmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJXChJTaG91bGRTaG9wUHJvZHVjdHMSFi5nb29nbGUucHJvdG9idWYuRW1wdHkaKS5wdWJsaWNfYXBpLnYxLlNob3VsZFNob3BQcm9kdWN0c1Jlc3BvbnNlEmAKD0dldFNob3BQcm9kdWN0cxIlLnB1YmxpY19hcGkudjEuR2V0U2hvcFByb2R1Y3RzUmVxdWVzdBomLnB1YmxpY19hcGkudjEuR2V0U2hvcFByb2R1Y3RzUmVzcG9uc2USTAoNRGlkQnV5UHJvZHVjdBIjLnB1YmxpY19hcGkudjEuRGlkQnV5UHJvZHVjdFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSeAoXR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3MSLS5wdWJsaWNfYXBpLnYxLkdldE5vdGlmaWNhdGlvblNldHRpbmdzUmVxdWVzdBouLnB1YmxpY19hcGkudjEuR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3NSZXNwb25zZRKNAQoeR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3NEZXRhaWxzEjQucHVibGljX2FwaS52MS5HZXROb3RpZmljYXRpb25TZXR0aW5nc0RldGFpbHNSZXF1ZXN0GjUucHVibGljX2FwaS52MS5HZXROb3RpZmljYXRpb25TZXR0aW5nc0RldGFpbHNSZXNwb25zZRJyCiBVcGRhdGVHbG9iYWxOb3RpZmljYXRpb25TZXR0aW5ncxI2LnB1YmxpY19hcGkudjEuVXBkYXRlR2xvYmFsTm90aWZpY2F0aW9uU2V0dGluZ3NSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EmYKGlVwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmdzEjAucHVibGljX2FwaS52MS5VcGRhdGVOb3RpZmljYXRpb25TZXR0aW5nc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkShAEKG0dldEF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdBIxLnB1YmxpY19hcGkudjEuR2V0QXZhaWxhYmxlQ291bnRGb3JQcm9kdWN0UmVxdWVzdBoyLnB1YmxpY19hcGkudjEuR2V0QXZhaWxhYmxlQ291bnRGb3JQcm9kdWN0UmVzcG9uc2USgQEKGklzT25lQ2xpY2tQYXltZW50QXZhaWxhYmxlEjAucHVibGljX2FwaS52MS5Jc09uZUNsaWNrUGF5bWVudEF2YWlsYWJsZVJlcXVlc3QaMS5wdWJsaWNfYXBpLnYxLklzT25lQ2xpY2tQYXltZW50QXZhaWxhYmxlUmVzcG9uc2USaQoSR2V0UHJlT3JkZXJEZXRhaWxzEigucHVibGljX2FwaS52MS5HZXRQcmVPcmRlckRldGFpbHNSZXF1ZXN0GikucHVibGljX2FwaS52MS5HZXRQcmVPcmRlckRldGFpbHNSZXNwb25zZRJ7ChhBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnQSLi5wdWJsaWNfYXBpLnYxLkFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudFJlcXVlc3QaLy5wdWJsaWNfYXBpLnYxLkFwcGxlUGF5VmFsaWRhdGVNZXJjaGFudFJlc3BvbnNlEnsKGEF1dGhvcml6ZU9uZUNsaWNrUGF5bWVudBIuLnB1YmxpY19hcGkudjEuT25lQ2xpY2tBdXRob3JpemVQYXltZW50UmVxdWVzdBovLnB1YmxpY19hcGkudjEuT25lQ2xpY2tBdXRob3JpemVQYXltZW50UmVzcG9uc2USdgoiTm90aWZ5VXNlckFib3V0UHJvZHVjdEF2YWlsYWJpbGl0eRI4LnB1YmxpY19hcGkudjEuTm90aWZ5VXNlckFib3V0UHJvZHVjdEF2YWlsYWJpbGl0eVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHliBnByb3RvMw", [import_wkt3.file_google_protobuf_timestamp, file_common_v1_gateway, file_common_v1_address, file_common_v1_push_notifications, import_wkt3.file_google_protobuf_empty, file_dashboard_v1_audiobooks]);
79
+ var PreOrderItemSchema = /* @__PURE__ */ (0, import_codegenv25.messageDesc)(file_public_v1_public_api, 4);
80
+ var GetPreOrderDetailsRequestSchema = /* @__PURE__ */ (0, import_codegenv25.messageDesc)(file_public_v1_public_api, 5);
81
+ var PublicApiService = /* @__PURE__ */ (0, import_codegenv25.serviceDesc)(file_public_v1_public_api, 0);
82
+
83
+ // src/public.api.client.ts
84
+ var PublicApiClient;
85
+ ((PublicApiClient2) => {
86
+ function get(host) {
87
+ return (0, import_connect.createClient)(PublicApiService, getTransport(host));
88
+ }
89
+ PublicApiClient2.get = get;
90
+ let transport;
91
+ function getTransport(host) {
92
+ if (transport == null) {
93
+ transport = (0, import_connect_web.createConnectTransport)({
94
+ useBinaryFormat: true,
95
+ baseUrl: host + "/api/rpc"
96
+ });
97
+ }
98
+ return transport;
99
+ }
100
+ })(PublicApiClient || (PublicApiClient = {}));
101
+
102
+ // src/components/checkout/CartProvider.tsx
103
+ var import_protobuf = require("@bufbuild/protobuf");
104
+ var import_react = require("react");
105
+ var import_react_query = require("react-query");
106
+ var import_zod = __toESM(require("zod"));
107
+
108
+ // src/components/checkout/constants.ts
109
+ var HOST = "https://bitsnap.pl";
110
+ function setCustomHost(host) {
111
+ HOST = host;
112
+ }
113
+
114
+ // src/components/checkout/helper.methods.ts
115
+ function buildURL(projectID, path) {
116
+ return `${HOST}/api/integrations/${projectID}/public-commerce${path}`;
117
+ }
118
+
119
+ // src/components/checkout/lib/err.ts
120
+ function isErr(x) {
121
+ return typeof x === "object" && x != null && "ERR" in x;
122
+ }
123
+ function Err(message, type) {
124
+ return { ERR: true, error: message, type };
125
+ }
126
+
127
+ // src/components/checkout/lib/round.number.ts
128
+ function round(num, numberOfDecimals = 2) {
129
+ return Number(
130
+ +(Math.round(Number(num + "e+" + numberOfDecimals)) + "e-" + numberOfDecimals)
131
+ );
132
+ }
133
+ function formatCurrency(amount, currency) {
134
+ const formatter = Intl.NumberFormat(navigator.language, {
135
+ style: "currency",
136
+ currency,
137
+ currencyDisplay: "symbol"
138
+ });
139
+ return formatter.format(amount / 100);
140
+ }
141
+
142
+ // src/components/checkout/state.ts
143
+ var import_zustand = require("zustand");
144
+ var useCheckoutStore = (0, import_zustand.create)((set) => ({
145
+ isCartVisible: false,
146
+ numberOfProductsInCart: 2,
147
+ showCart: () => set((state) => ({ ...state, isCartVisible: true })),
148
+ hideCart: () => set((state) => ({ ...state, isCartVisible: false })),
149
+ setNumberOfProductsInCart: (numberOfProductsInCart) => set((state) => ({ ...state, numberOfProductsInCart }))
150
+ }));
151
+
152
+ // src/components/checkout/methods.ts
153
+ var Bitsnap;
154
+ ((Bitsnap2) => {
155
+ async function addProductToCart(id, quantity = 1, metadata) {
156
+ const projectID = getProjectID();
157
+ if (projectID == null) {
158
+ throw new Error("No project ID found");
159
+ }
160
+ const methods = getCheckoutMethods(projectID);
161
+ const err = await methods.addProduct({
162
+ productID: id,
163
+ quantity,
164
+ metadata
165
+ });
166
+ if (err != null) {
167
+ return err;
168
+ }
169
+ return void 0;
170
+ }
171
+ Bitsnap2.addProductToCart = addProductToCart;
172
+ function showCart() {
173
+ useCheckoutStore.setState({ isCartVisible: true });
174
+ }
175
+ Bitsnap2.showCart = showCart;
176
+ function hideCart() {
177
+ useCheckoutStore.setState({ isCartVisible: false });
178
+ }
179
+ Bitsnap2.hideCart = hideCart;
180
+ })(Bitsnap || (Bitsnap = {}));
181
+ async function createPaymentURL(request) {
182
+ const projectID = getProjectID();
183
+ if (projectID == null) {
184
+ throw new Error("No project ID found");
185
+ }
186
+ request = injectReferenceToRequestIfNeeded(request);
187
+ const result = await fetch(buildURL(projectID, "/buy"), {
188
+ method: "POST",
189
+ headers: {
190
+ "Content-Type": "application/json"
191
+ },
192
+ body: JSON.stringify(request)
193
+ });
194
+ if (result.status != 200) {
195
+ console.warn(
196
+ "result",
197
+ await result.text(),
198
+ result.status,
199
+ result.statusText
200
+ );
201
+ return Err("internal-error", "internal");
202
+ }
203
+ const response = await result.json();
204
+ return {
205
+ url: response.url
206
+ };
207
+ }
208
+ async function createCheckout(request) {
209
+ const projectID = getProjectID();
210
+ if (projectID == null) {
211
+ throw new Error("No project ID found");
212
+ }
213
+ const headers = {
214
+ "Content-Type": "application/json",
215
+ ...request.apiKey != null ? { Authorization: `Bearer ${request.apiKey}` } : {}
216
+ };
217
+ const path = request.testMode ? `/api/payment/link/auto/${projectID}/test` : `/api/payment/link/auto/${projectID}`;
218
+ delete request.apiKey;
219
+ delete request.testMode;
220
+ const response = await fetch(HOST + path, {
221
+ method: "POST",
222
+ headers,
223
+ body: JSON.stringify(request)
224
+ });
225
+ const payload = await response.json();
226
+ return {
227
+ status: "ok",
228
+ redirectURL: payload.url
229
+ };
230
+ }
231
+ function getReferenceIfPossible() {
232
+ if (typeof localStorage == "undefined") {
233
+ return void 0;
234
+ }
235
+ const refLink = localStorage.getItem("bitsnap-ref");
236
+ if (refLink == null) {
237
+ return void 0;
238
+ }
239
+ return refLink;
240
+ }
241
+ function injectReferenceToRequestIfNeeded(request) {
242
+ const ref = getReferenceIfPossible();
243
+ if (ref == null) {
244
+ return request;
245
+ }
246
+ if (request.metadata == null) {
247
+ request.metadata = {};
248
+ }
249
+ request.metadata["ref"] = ref;
250
+ return request;
251
+ }
252
+
253
+ // src/components/checkout/google.pay.mapper.ts
254
+ function mapGooglePayConfiguration(args) {
255
+ var _a;
256
+ const { items, googlePayConfig, checkout, result, cartRequiresShipping } = args;
257
+ if (result.totalAmount == null) {
258
+ return void 0;
259
+ }
260
+ let intents = [];
261
+ if (cartRequiresShipping) {
262
+ intents.push("SHIPPING_ADDRESS");
263
+ intents.push("SHIPPING_OPTION");
264
+ }
265
+ const returnValue = {
266
+ apiVersion: 2,
267
+ apiVersionMinor: 0,
268
+ callbackIntents: intents,
269
+ allowedPaymentMethods: [
270
+ {
271
+ type: "CARD",
272
+ parameters: {
273
+ allowedAuthMethods: ["PAN_ONLY", "CRYPTOGRAM_3DS"],
274
+ allowedCardNetworks: ["MASTERCARD", "VISA"]
275
+ },
276
+ tokenizationSpecification: {
277
+ type: "PAYMENT_GATEWAY",
278
+ parameters: {
279
+ gateway: googlePayConfig.gateway,
280
+ gatewayMerchantId: googlePayConfig.gatewayId
281
+ }
282
+ }
283
+ }
284
+ ],
285
+ emailRequired: true,
286
+ shippingAddressParameters: {
287
+ phoneNumberRequired: cartRequiresShipping
288
+ },
289
+ shippingAddressRequired: cartRequiresShipping,
290
+ shippingOptionRequired: cartRequiresShipping,
291
+ shippingOptionParameters: cartRequiresShipping ? {
292
+ shippingOptions: result.methods.slice(0, 5).map((method) => {
293
+ var _a2;
294
+ return {
295
+ id: method.id,
296
+ label: method.name + ` - ${formatCurrency(method.amount, result.currency)}`,
297
+ description: (_a2 = method.description) != null ? _a2 : ""
298
+ };
299
+ }),
300
+ defaultSelectedOptionId: result.selectedDeliveryMethod
301
+ } : void 0,
302
+ merchantInfo: {
303
+ merchantId: googlePayConfig.merchantId + "",
304
+ merchantName: googlePayConfig.merchantName
305
+ },
306
+ transactionInfo: {
307
+ totalPriceStatus: "FINAL",
308
+ totalPriceLabel: "P\u0142atno\u015B\u0107 za koszyk",
309
+ totalPrice: `${round(result.totalAmount / 100, 2)}`,
310
+ currencyCode: result.currency,
311
+ countryCode: result.country,
312
+ checkoutOption: "COMPLETE_IMMEDIATE_PURCHASE",
313
+ displayItems: mapGooglePayDisplayItems(items, result.methods, (_a = result.selectedDeliveryMethod) != null ? _a : result.methods.length > 0 ? result.methods[0].id : void 0, checkout.couponCode, result.couponValue)
314
+ }
315
+ };
316
+ console.log("returnValue", returnValue);
317
+ return returnValue;
318
+ }
319
+ function mapGooglePayDisplayItems(items, methods, deliveryMethod, couponCode, couponValue) {
320
+ const displayItems = [];
321
+ let subtotalAmount = 0;
322
+ for (const item of items) {
323
+ if (item.details == null) {
324
+ continue;
325
+ }
326
+ subtotalAmount += item.details.price * item.quantity;
327
+ displayItems.push({
328
+ label: item.details.name + " x " + item.quantity,
329
+ price: `${round(item.details.price / 100, 2)}`,
330
+ type: "LINE_ITEM",
331
+ status: "FINAL"
332
+ });
333
+ }
334
+ const selectedDeliveryMethod = methods.find((method) => method.id === deliveryMethod);
335
+ if (selectedDeliveryMethod != null) {
336
+ displayItems.push({
337
+ label: selectedDeliveryMethod.name,
338
+ price: `${round(selectedDeliveryMethod.amount / 100, 2)}`,
339
+ type: "SHIPPING_OPTION",
340
+ status: "FINAL"
341
+ });
342
+ }
343
+ if (couponCode != null && couponValue != null) {
344
+ displayItems.push({
345
+ label: `Kupon ${couponCode}`,
346
+ price: `${round(couponValue / 100, 2)}`,
347
+ type: "DISCOUNT",
348
+ status: "FINAL"
349
+ });
350
+ }
351
+ if (subtotalAmount > 0) {
352
+ displayItems.push({
353
+ label: "Subtotal",
354
+ price: `${round(subtotalAmount / 100, 2)}`,
355
+ type: "SUBTOTAL",
356
+ status: "FINAL"
357
+ });
358
+ }
359
+ return displayItems;
360
+ }
361
+
362
+ // src/components/checkout/CartProvider.tsx
363
+ var import_jsx_runtime = require("react/jsx-runtime");
364
+ var MARKETING_AGREEMENT_ID = "__m_a";
365
+ var CartProviderContext = (0, import_react.createContext)(void 0);
366
+ var bitsnapProjectID = void 0;
367
+ function setProjectID(projectID) {
368
+ bitsnapProjectID = projectID;
369
+ }
370
+ function getProjectID() {
371
+ if (bitsnapProjectID != null) {
372
+ return bitsnapProjectID;
373
+ }
374
+ const me = document.querySelector(
375
+ 'script[data-id][data-name="internal-cart"]'
376
+ );
377
+ const projectID = me == null ? void 0 : me.getAttribute("data-id");
378
+ return projectID != null ? projectID : void 0;
379
+ }
380
+ function getNewHostIfExist() {
381
+ const me = document.querySelector(
382
+ 'script[data-id][data-name="internal-cart"]'
383
+ );
384
+ const customHost = me == null ? void 0 : me.getAttribute("data-custom-host");
385
+ return customHost != null ? customHost : void 0;
386
+ }
387
+ var CartProvider = ({ children }) => {
388
+ const queryClient = new import_react_query.QueryClient();
389
+ const projectID = getProjectID();
390
+ if (projectID == null) {
391
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {});
392
+ }
393
+ const checkoutMethods = getCheckoutMethods(projectID);
394
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_query.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CartProviderContext.Provider, { value: checkoutMethods, children }) });
395
+ };
396
+ var getProducts = async (projectID) => {
397
+ var _a, _b;
398
+ const products = (_b = (_a = getCheckout()) == null ? void 0 : _a.products) != null ? _b : [];
399
+ const productIds = Array.from(
400
+ new Set(products.map((product) => product.productID))
401
+ );
402
+ const params = new URLSearchParams();
403
+ params.set("ids", productIds.join(","));
404
+ const result = await fetch(
405
+ buildURL(projectID, `/products?${params.toString()}`),
406
+ {
407
+ method: "GET"
408
+ }
409
+ );
410
+ if (result.status != 200) {
411
+ return [];
412
+ }
413
+ const payload = await result.json();
414
+ products.forEach((product) => {
415
+ var _a2;
416
+ product["details"] = (_a2 = payload.result) == null ? void 0 : _a2.find((el) => {
417
+ if (el.id === product.productID) {
418
+ return true;
419
+ }
420
+ if (el.variants != null && el.variants.length > 0) {
421
+ const index = el.variants.findIndex(
422
+ (variant) => variant.id === product.productID
423
+ );
424
+ return index !== -1;
425
+ }
426
+ return false;
427
+ });
428
+ });
429
+ return products.filter((el) => "details" in el).map((el) => {
430
+ el.details = resolveProductDetailsFromSingleProduct(
431
+ el.productID,
432
+ el.details
433
+ );
434
+ return el;
435
+ });
436
+ };
437
+ var useCartProvider = () => {
438
+ const context = (0, import_react.useContext)(CartProviderContext);
439
+ if (context === void 0) {
440
+ throw new Error("useCartProvider must be used within a CartProvider");
441
+ }
442
+ return context;
443
+ };
444
+ var CartProvider_default = CartProvider;
445
+ var googlePayConfigSchema = import_zod.default.object({
446
+ isAvailable: import_zod.default.boolean(),
447
+ merchantId: import_zod.default.string(),
448
+ merchantName: import_zod.default.string(),
449
+ gateway: import_zod.default.string(),
450
+ gatewayId: import_zod.default.string()
451
+ });
452
+ var checkoutSchema = import_zod.default.object({
453
+ country: import_zod.default.string().optional(),
454
+ couponCode: import_zod.default.string().optional(),
455
+ selectedDeliveryMethod: import_zod.default.string().optional(),
456
+ postalCode: import_zod.default.string().optional(),
457
+ email: import_zod.default.string().optional(),
458
+ products: import_zod.default.array(
459
+ import_zod.default.object({
460
+ id: import_zod.default.string(),
461
+ productID: import_zod.default.string(),
462
+ quantity: import_zod.default.number(),
463
+ metadata: import_zod.default.record(import_zod.default.string(), import_zod.default.string().optional()).optional()
464
+ })
465
+ ).optional(),
466
+ googlePayConfig: googlePayConfigSchema.optional()
467
+ });
468
+ var emptyCheckout = {
469
+ country: void 0,
470
+ couponCode: void 0,
471
+ email: void 0,
472
+ selectedDeliveryMethod: void 0,
473
+ postalCode: void 0,
474
+ products: [],
475
+ googlePayConfig: void 0
476
+ };
477
+ var checkoutKey = "checkout";
478
+ function getCheckout() {
479
+ try {
480
+ const value = localStorage.getItem(checkoutKey);
481
+ if (value == null) {
482
+ return emptyCheckout;
483
+ }
484
+ return checkoutSchema.parse(JSON.parse(value));
485
+ } catch (e) {
486
+ return emptyCheckout;
487
+ }
488
+ }
489
+ function addProducts(products) {
490
+ const checkout = getCheckout();
491
+ if (checkout.products == null) {
492
+ checkout.products = [];
493
+ }
494
+ checkout.products.push(...products.map((el) => ({
495
+ id: Math.random().toString(36).substring(7),
496
+ productID: el.productID,
497
+ quantity: el.quantity,
498
+ metadata: el.metadata
499
+ })));
500
+ saveCheckout(checkout);
501
+ }
502
+ function removeProductFromCheckout(ids) {
503
+ var _a;
504
+ const checkout = getCheckout();
505
+ const newCheckout = {
506
+ ...checkout,
507
+ products: (_a = checkout == null ? void 0 : checkout.products) == null ? void 0 : _a.filter(
508
+ (product) => !ids.includes(product.productID) && !ids.includes(product.id)
509
+ )
510
+ };
511
+ saveCheckout(newCheckout);
512
+ }
513
+ function saveCheckout(model) {
514
+ localStorage.setItem(checkoutKey, JSON.stringify(model));
515
+ }
516
+ var getCheckoutMethods = (projectID) => {
517
+ const newHost = getNewHostIfExist();
518
+ if (newHost != null) {
519
+ setCustomHost(newHost);
520
+ }
521
+ return {
522
+ async checkIfApplePayIsAvailable() {
523
+ if (typeof window == "undefined" || typeof document == "undefined") {
524
+ return false;
525
+ }
526
+ if ("ApplePaySession" in window === false) {
527
+ return false;
528
+ }
529
+ try {
530
+ const result = await PublicApiClient.get(HOST).isOneClickPaymentAvailable({
531
+ projectId: projectID
532
+ });
533
+ return result.applePay;
534
+ } catch (e) {
535
+ console.error("Error checking if Apple Pay is available", e);
536
+ return false;
537
+ }
538
+ },
539
+ async getGooglePayConfiguration(args) {
540
+ if (typeof window == "undefined" || typeof document == "undefined") {
541
+ return {
542
+ isAvailable: false
543
+ };
544
+ }
545
+ try {
546
+ const googlePayConfig = await resolveGooglePayConfiguration(projectID);
547
+ if ((googlePayConfig == null ? void 0 : googlePayConfig.isAvailable) != true) {
548
+ return {
549
+ isAvailable: false
550
+ };
551
+ }
552
+ const checkout = getCheckout();
553
+ if (checkout == null) {
554
+ console.log("checkout is null");
555
+ return {
556
+ isAvailable: false
557
+ };
558
+ }
559
+ if (args && args.items != null && args.items.length > 0) {
560
+ if (checkout.products) {
561
+ removeProductFromCheckout(checkout.products.map((el) => el.productID));
562
+ }
563
+ addProducts(args.items);
564
+ }
565
+ const products = await getProducts(projectID);
566
+ if (isErr(products)) {
567
+ return {
568
+ isAvailable: false
569
+ };
570
+ }
571
+ const result = await PublicApiClient.get(HOST).getPreOrderDetails({
572
+ items: products.map(
573
+ (el) => (0, import_protobuf.create)(PreOrderItemSchema, { id: el.productID, quantity: el.quantity })
574
+ ),
575
+ projectId: projectID,
576
+ // we can detect 5 the closest inpost pickup point based on shipping address.
577
+ postCode: checkout.postalCode,
578
+ couponCode: checkout.couponCode,
579
+ countryCode: checkout.country,
580
+ selectedDeliveryMethod: checkout.selectedDeliveryMethod
581
+ });
582
+ if (result.totalAmount == null) {
583
+ return {
584
+ isAvailable: false
585
+ };
586
+ }
587
+ const cartRequiresShipping = products.find((el) => {
588
+ var _a;
589
+ return ((_a = el.details) == null ? void 0 : _a.isDeliverable) == true;
590
+ }) != null;
591
+ const mappedPaymentRequest = await mapGooglePayConfiguration({
592
+ items: products,
593
+ googlePayConfig,
594
+ checkout,
595
+ cartRequiresShipping,
596
+ result
597
+ });
598
+ if (mappedPaymentRequest == null) {
599
+ return {
600
+ isAvailable: false
601
+ };
602
+ }
603
+ return {
604
+ isAvailable: true,
605
+ config: mappedPaymentRequest
606
+ };
607
+ } catch (e) {
608
+ console.error("Error resolving Google Pay configuration", e);
609
+ return {
610
+ isAvailable: false
611
+ };
612
+ }
613
+ },
614
+ async clearCart() {
615
+ var _a;
616
+ const empty = structuredClone(emptyCheckout);
617
+ empty.country = (_a = getCheckout()) == null ? void 0 : _a.country;
618
+ saveCheckout(empty);
619
+ },
620
+ async getAvailableCountries() {
621
+ const result = await fetch(buildURL(projectID, "/countries"), {
622
+ method: "GET"
623
+ });
624
+ if (result.status != 200) {
625
+ return [];
626
+ }
627
+ try {
628
+ return import_zod.default.array(
629
+ import_zod.default.object({
630
+ name: import_zod.default.string(),
631
+ code: import_zod.default.string()
632
+ })
633
+ ).parse(await result.json());
634
+ } catch (e) {
635
+ return Err(e.toString(), "internal");
636
+ }
637
+ },
638
+ async getCountry() {
639
+ var _a;
640
+ let country = (_a = getCheckout()) == null ? void 0 : _a.country;
641
+ if (country == null) {
642
+ country = "PL";
643
+ const checkout = getCheckout();
644
+ checkout.country = country;
645
+ saveCheckout(checkout);
646
+ }
647
+ return country;
648
+ },
649
+ async getNumberOfElementsInCart() {
650
+ var _a, _b, _c;
651
+ return (_c = (_b = (_a = getCheckout()) == null ? void 0 : _a.products) == null ? void 0 : _b.reduce(
652
+ (acc, product) => acc + product.quantity,
653
+ 0
654
+ )) != null ? _c : 0;
655
+ },
656
+ async getProducts() {
657
+ return await getProducts(projectID);
658
+ },
659
+ async removeProductFromCart(args) {
660
+ return removeProductFromCheckout([args.id]);
661
+ },
662
+ async setCountry(country) {
663
+ const checkout = getCheckout();
664
+ checkout.country = country;
665
+ saveCheckout(checkout);
666
+ },
667
+ async setCouponCodeIfPossible(couponCode) {
668
+ const checkout = getCheckout();
669
+ checkout.couponCode = couponCode;
670
+ saveCheckout(checkout);
671
+ },
672
+ async setPostalCode(postalCode) {
673
+ const checkout = getCheckout();
674
+ checkout.postalCode = postalCode;
675
+ saveCheckout(checkout);
676
+ },
677
+ async setDeliveryMethod(deliveryMethod) {
678
+ const checkout = getCheckout();
679
+ checkout.selectedDeliveryMethod = deliveryMethod;
680
+ saveCheckout(checkout);
681
+ },
682
+ async setEmail(email) {
683
+ const checkout = getCheckout();
684
+ checkout.email = email;
685
+ saveCheckout(checkout);
686
+ },
687
+ async addProduct(args) {
688
+ return addProducts([args]);
689
+ },
690
+ async updateQuantity(args) {
691
+ var _a;
692
+ const checkout = getCheckout();
693
+ checkout.products = (_a = checkout.products) == null ? void 0 : _a.map((product) => {
694
+ if (product.id === args.id) {
695
+ product.quantity = args.quantity;
696
+ }
697
+ return product;
698
+ });
699
+ saveCheckout(checkout);
700
+ },
701
+ async redirectToNextStep() {
702
+ const checkout = getCheckout();
703
+ if (checkout.products == null || checkout.products.length == 0) {
704
+ return Err("cart-is-empty", "badInput");
705
+ }
706
+ const mergedMetadata = checkout.products.reduce(
707
+ (acc, product) => {
708
+ if (product.metadata != null) {
709
+ Object.keys(product.metadata).forEach((key) => {
710
+ var _a;
711
+ const value = (_a = product.metadata) == null ? void 0 : _a[key];
712
+ if (value != null) {
713
+ acc[key] = value;
714
+ }
715
+ });
716
+ }
717
+ return acc;
718
+ },
719
+ {}
720
+ );
721
+ const payload = {
722
+ items: checkout.products.map((el) => {
723
+ return {
724
+ id: el.productID,
725
+ quantity: el.quantity
726
+ };
727
+ }),
728
+ askForNote: true,
729
+ countries: checkout.country ? [checkout.country] : void 0,
730
+ metadata: mergedMetadata
731
+ };
732
+ const paymentResponse = await createPaymentURL(payload);
733
+ if (isErr(paymentResponse)) {
734
+ console.warn("cannot create payment URL", paymentResponse.error);
735
+ return paymentResponse;
736
+ }
737
+ return {
738
+ url: paymentResponse.url
739
+ };
740
+ },
741
+ async justRedirectToPayment(args) {
742
+ let payload = {
743
+ items: [
744
+ {
745
+ id: args.productID,
746
+ quantity: 1
747
+ }
748
+ ],
749
+ askForNote: false,
750
+ details: args.email || args.name ? {
751
+ name: args.name,
752
+ email: args.email
753
+ } : void 0
754
+ };
755
+ payload = injectReferenceToRequestIfNeeded(payload);
756
+ if (args.country == null) {
757
+ args.country = "pl";
758
+ }
759
+ if (payload.details == null) {
760
+ payload.details = {};
761
+ }
762
+ if (payload.details.address == null) {
763
+ payload.details.address = {};
764
+ }
765
+ payload.details.address.country = args.country;
766
+ if (args.marketingAgreement === true) {
767
+ payload.additionalAgreements = [
768
+ {
769
+ id: MARKETING_AGREEMENT_ID,
770
+ name: "",
771
+ required: true,
772
+ answer: true
773
+ }
774
+ ];
775
+ }
776
+ const result = await fetch(buildURL(projectID, "/buy"), {
777
+ method: "POST",
778
+ headers: {
779
+ "Content-Type": "application/json"
780
+ },
781
+ body: JSON.stringify(payload)
782
+ });
783
+ console.log("CODE", result.status);
784
+ if (result.status != 200) {
785
+ console.warn(
786
+ "result",
787
+ await result.text(),
788
+ result.status,
789
+ result.statusText
790
+ );
791
+ return Err("internal-error", "internal");
792
+ }
793
+ const response = await result.json();
794
+ console.log(response.url);
795
+ return {
796
+ url: response.url
797
+ };
798
+ },
799
+ async completeApplePayPayment(args) {
800
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J;
801
+ const checkout = getCheckout();
802
+ if (checkout == null) {
803
+ return Err("Checkout not found");
804
+ }
805
+ const products = await getProducts(projectID);
806
+ if (isErr(products)) {
807
+ return products;
808
+ }
809
+ try {
810
+ let shippingName = (_a = args.shippingContact) == null ? void 0 : _a.givenName;
811
+ if (((_b = args.shippingContact) == null ? void 0 : _b.familyName) != null) {
812
+ shippingName += " " + ((_c = args.shippingContact) == null ? void 0 : _c.familyName);
813
+ } else if (((_d = args.billingContact) == null ? void 0 : _d.familyName) != null) {
814
+ shippingName += " " + ((_e = args.billingContact) == null ? void 0 : _e.familyName);
815
+ }
816
+ let metadata = {};
817
+ const ref = getReferenceIfPossible();
818
+ if (ref != null) {
819
+ metadata["ref"] = ref;
820
+ }
821
+ const result = await PublicApiClient.get(HOST).authorizeOneClickPayment(
822
+ {
823
+ gateway: 0 /* APPLE_PAY */,
824
+ paymentData: JSON.stringify(args.token.paymentData),
825
+ paymentMethod: JSON.stringify(args.token.paymentMethod),
826
+ transactionIdentifier: args.token.transactionIdentifier,
827
+ order: (0, import_protobuf.create)(GetPreOrderDetailsRequestSchema, {
828
+ items: products.map((el) => ({
829
+ id: el.productID,
830
+ quantity: el.quantity
831
+ })),
832
+ couponCode: checkout.couponCode,
833
+ email: (_j = (_i = (_h = (_f = args.shippingContact) == null ? void 0 : _f.emailAddress) != null ? _h : (_g = args.billingContact) == null ? void 0 : _g.emailAddress) != null ? _i : checkout.email) != null ? _j : void 0,
834
+ phone: (_n = (_m = (_k = args.shippingContact) == null ? void 0 : _k.phoneNumber) != null ? _m : (_l = args.billingContact) == null ? void 0 : _l.phoneNumber) != null ? _n : void 0,
835
+ selectedDeliveryMethod: checkout.selectedDeliveryMethod,
836
+ postCode: checkout.postalCode,
837
+ projectId: projectID
838
+ }),
839
+ shippingAddress: (0, import_protobuf.create)(AddressSchema, {
840
+ line1: (_q = (_p = (_o = args.shippingContact) == null ? void 0 : _o.addressLines) == null ? void 0 : _p[0]) != null ? _q : "",
841
+ city: (_s = (_r = args.shippingContact) == null ? void 0 : _r.locality) != null ? _s : "",
842
+ country: (_u = (_t = args.shippingContact) == null ? void 0 : _t.countryCode) != null ? _u : "",
843
+ zipCode: (_w = (_v = args.shippingContact) == null ? void 0 : _v.postalCode) != null ? _w : "",
844
+ name: shippingName
845
+ }),
846
+ billingAddress: (0, import_protobuf.create)(BillingAddressSchema, {
847
+ name: (_A = (_x = args.billingContact) == null ? void 0 : _x.givenName) != null ? _A : " " + ((_z = (_y = args.billingContact) == null ? void 0 : _y.familyName) != null ? _z : ""),
848
+ line1: (_D = (_C = (_B = args.billingContact) == null ? void 0 : _B.addressLines) == null ? void 0 : _C[0]) != null ? _D : "",
849
+ city: (_F = (_E = args.billingContact) == null ? void 0 : _E.locality) != null ? _F : "",
850
+ country: (_H = (_G = args.billingContact) == null ? void 0 : _G.countryCode) != null ? _H : "",
851
+ zipCode: (_J = (_I = args.billingContact) == null ? void 0 : _I.postalCode) != null ? _J : ""
852
+ }),
853
+ metadata: Object.keys(metadata).length > 0 ? JSON.stringify(metadata) : void 0
854
+ }
855
+ );
856
+ return {
857
+ isSuccess: result.isSuccess,
858
+ redirectURL: result.redirectUrl
859
+ };
860
+ } catch (error) {
861
+ console.error(error);
862
+ return Err("Failed to authorize payment");
863
+ }
864
+ },
865
+ async completeGooglePayPayment(args) {
866
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C;
867
+ const checkout = getCheckout();
868
+ if (checkout == null) {
869
+ return Err("Checkout not found");
870
+ }
871
+ const products = await getProducts(projectID);
872
+ if (isErr(products)) {
873
+ return products;
874
+ }
875
+ try {
876
+ let shippingName = (_a = args.paymentData.shippingAddress) == null ? void 0 : _a.name;
877
+ let metadata = {};
878
+ const ref = getReferenceIfPossible();
879
+ if (ref != null) {
880
+ metadata["ref"] = ref;
881
+ }
882
+ const result = await PublicApiClient.get(HOST).authorizeOneClickPayment(
883
+ {
884
+ gateway: 1 /* GOOGLE_PAY */,
885
+ paymentData: args.paymentData.paymentMethodData.tokenizationData.token,
886
+ paymentMethod: args.paymentData.paymentMethodData.type,
887
+ transactionIdentifier: "",
888
+ order: (0, import_protobuf.create)(GetPreOrderDetailsRequestSchema, {
889
+ items: products.map((el) => ({
890
+ id: el.productID,
891
+ quantity: el.quantity
892
+ })),
893
+ couponCode: checkout.couponCode,
894
+ email: (_b = args.paymentData.email) != null ? _b : void 0,
895
+ phone: (_d = (_c = args.paymentData.shippingAddress) == null ? void 0 : _c.phoneNumber) != null ? _d : void 0,
896
+ selectedDeliveryMethod: (_f = (_e = args.paymentData.shippingOptionData) == null ? void 0 : _e.id) != null ? _f : checkout.selectedDeliveryMethod,
897
+ postCode: (_g = args.paymentData.shippingAddress) == null ? void 0 : _g.postalCode,
898
+ projectId: projectID
899
+ }),
900
+ shippingAddress: (0, import_protobuf.create)(AddressSchema, {
901
+ line1: (_i = (_h = args.paymentData.shippingAddress) == null ? void 0 : _h.address1) != null ? _i : "",
902
+ city: (_k = (_j = args.paymentData.shippingAddress) == null ? void 0 : _j.locality) != null ? _k : "",
903
+ country: (_m = (_l = args.paymentData.shippingAddress) == null ? void 0 : _l.countryCode) != null ? _m : "",
904
+ zipCode: (_o = (_n = args.paymentData.shippingAddress) == null ? void 0 : _n.postalCode) != null ? _o : "",
905
+ name: shippingName
906
+ }),
907
+ billingAddress: (0, import_protobuf.create)(BillingAddressSchema, {
908
+ name: (_q = (_p = args.paymentData.paymentMethodData.info) == null ? void 0 : _p.billingAddress) == null ? void 0 : _q.name,
909
+ line1: (_t = (_s = (_r = args.paymentData.paymentMethodData.info) == null ? void 0 : _r.billingAddress) == null ? void 0 : _s.address1) != null ? _t : "",
910
+ city: (_w = (_v = (_u = args.paymentData.paymentMethodData.info) == null ? void 0 : _u.billingAddress) == null ? void 0 : _v.locality) != null ? _w : "",
911
+ country: (_z = (_y = (_x = args.paymentData.paymentMethodData.info) == null ? void 0 : _x.billingAddress) == null ? void 0 : _y.countryCode) != null ? _z : "",
912
+ zipCode: (_C = (_B = (_A = args.paymentData.paymentMethodData.info) == null ? void 0 : _A.billingAddress) == null ? void 0 : _B.postalCode) != null ? _C : ""
913
+ }),
914
+ metadata: Object.keys(metadata).length > 0 ? JSON.stringify(metadata) : void 0
915
+ }
916
+ );
917
+ return {
918
+ isSuccess: result.isSuccess,
919
+ redirectURL: result.redirectUrl
920
+ };
921
+ } catch (error) {
922
+ console.error(error);
923
+ return Err("Failed to authorize payment");
924
+ }
925
+ return {
926
+ isSuccess: true
927
+ };
928
+ },
929
+ async getApplePayPaymentRequest(args) {
930
+ var _a, _b;
931
+ const checkout = getCheckout();
932
+ if (checkout == null) {
933
+ return Err("Checkout not found");
934
+ }
935
+ if (args && args.expectedItems != null && args.expectedItems.length > 0) {
936
+ if (checkout.products) {
937
+ removeProductFromCheckout(checkout.products.map((el) => el.productID));
938
+ }
939
+ addProducts(args.expectedItems);
940
+ }
941
+ const products = await getProducts(projectID);
942
+ if (isErr(products)) {
943
+ return products;
944
+ }
945
+ const result = await PublicApiClient.get(HOST).getPreOrderDetails({
946
+ items: products.map(
947
+ (el) => (0, import_protobuf.create)(PreOrderItemSchema, { id: el.productID, quantity: el.quantity })
948
+ ),
949
+ projectId: projectID,
950
+ // we can detect 5 the closest inpost pickup point based on shipping address.
951
+ postCode: checkout.postalCode,
952
+ couponCode: checkout.couponCode,
953
+ countryCode: checkout.country,
954
+ selectedDeliveryMethod: checkout.selectedDeliveryMethod
955
+ });
956
+ const items = products.map((el) => {
957
+ var _a2, _b2, _c;
958
+ return {
959
+ amount: `${round(el.quantity * ((_b2 = (_a2 = el.details) == null ? void 0 : _a2.price) != null ? _b2 : 0) / 100, 2)}`,
960
+ label: ((_c = el.details) == null ? void 0 : _c.name) + " - " + el.quantity,
961
+ type: "final"
962
+ };
963
+ });
964
+ if (result.selectedDeliveryMethod != null) {
965
+ const deliveryMethod = result.methods.find((el) => el.id == result.selectedDeliveryMethod);
966
+ if (deliveryMethod != null) {
967
+ items.push({
968
+ amount: `${round(deliveryMethod.amount / 100, 2)}`,
969
+ label: deliveryMethod.name,
970
+ type: "final"
971
+ });
972
+ }
973
+ }
974
+ if (result.couponCode != null && result.couponValue != null) {
975
+ items.push({
976
+ amount: `-${round(result.couponValue / 100, 2)}`,
977
+ label: result.couponCode,
978
+ type: "final"
979
+ });
980
+ }
981
+ return {
982
+ countryCode: (_a = checkout.country) != null ? _a : "PL",
983
+ merchantCapabilities: [
984
+ "supports3DS",
985
+ "supportsCredit",
986
+ "supportsDebit"
987
+ ],
988
+ supportedNetworks: ["visa", "masterCard"],
989
+ total: {
990
+ amount: `${round(((_b = result.totalAmount) != null ? _b : 0) / 100, 2)}`,
991
+ label: "P\u0142atno\u015B\u0107 za koszyk",
992
+ type: "final"
993
+ },
994
+ shippingMethods: result.methods.map((el) => {
995
+ var _a2, _b2, _c;
996
+ return {
997
+ amount: `${round(el.amount / 100, 2)}`,
998
+ detail: (_a2 = el.description) != null ? _a2 : "",
999
+ identifier: el.id,
1000
+ label: el.name,
1001
+ dateComponentsRange: {
1002
+ startDateComponents: {
1003
+ days: (_b2 = el.minDays) != null ? _b2 : 1,
1004
+ hours: 0,
1005
+ months: 0,
1006
+ years: 0
1007
+ },
1008
+ endDateComponents: {
1009
+ days: (_c = el.maxDays) != null ? _c : 14,
1010
+ hours: 0,
1011
+ months: 0,
1012
+ years: 0
1013
+ }
1014
+ }
1015
+ };
1016
+ }),
1017
+ lineItems: items,
1018
+ currencyCode: "PLN"
1019
+ };
1020
+ }
1021
+ };
1022
+ };
1023
+ async function resolveGooglePayConfiguration(projectID) {
1024
+ var _a;
1025
+ const checkout = getCheckout();
1026
+ if (((_a = checkout.googlePayConfig) == null ? void 0 : _a.isAvailable) != true) {
1027
+ const result = await PublicApiClient.get(HOST).isOneClickPaymentAvailable({
1028
+ projectId: projectID
1029
+ });
1030
+ if (result.googlePay == true && result.googlePayConfig != null) {
1031
+ checkout.googlePayConfig = {
1032
+ isAvailable: true,
1033
+ gateway: result.googlePayConfig.gateway,
1034
+ gatewayId: result.googlePayConfig.gatewayMerchantId,
1035
+ merchantName: result.googlePayConfig.merchantName,
1036
+ merchantId: result.googlePayConfig.merchantId
1037
+ };
1038
+ } else {
1039
+ checkout.googlePayConfig = {
1040
+ isAvailable: false,
1041
+ gateway: "",
1042
+ gatewayId: "",
1043
+ merchantName: "",
1044
+ merchantId: ""
1045
+ };
1046
+ }
1047
+ }
1048
+ saveCheckout(checkout);
1049
+ return checkout.googlePayConfig;
1050
+ }
1051
+ function resolveProductDetailsFromSingleProduct(id, product) {
1052
+ var _a, _b, _c, _d;
1053
+ if (id == product.id) {
1054
+ const variantIndex = (_a = product.variants) == null ? void 0 : _a.findIndex((v) => v.id === id);
1055
+ if (variantIndex != null && variantIndex != -1) {
1056
+ const variant2 = product.variants[variantIndex];
1057
+ return {
1058
+ ...product,
1059
+ availableQuantity: variant2.availableQuantity,
1060
+ isDeliverable: variant2.isDeliverable,
1061
+ images: (_b = variant2.images) != null ? _b : product.images,
1062
+ name: product.name + " " + variant2.name,
1063
+ price: variant2.price,
1064
+ currency: variant2.currency
1065
+ };
1066
+ }
1067
+ return product;
1068
+ }
1069
+ const variant = (_c = product.variants) == null ? void 0 : _c.find((v) => v.id === id);
1070
+ if (variant == null) {
1071
+ return product;
1072
+ }
1073
+ return {
1074
+ ...product,
1075
+ id: variant.id,
1076
+ name: product.name + " " + variant.name,
1077
+ price: variant.price,
1078
+ currency: variant.currency,
1079
+ metadata: product.metadata,
1080
+ availableQuantity: variant.availableQuantity,
1081
+ isDeliverable: variant.isDeliverable,
1082
+ images: (_d = variant.images) != null ? _d : product.images
1083
+ };
1084
+ }
1085
+
1086
+ // src/components/checkout/ApplePay.tsx
1087
+ var import_react_query2 = require("react-query");
1088
+ var import_jsx_runtime2 = require("react/jsx-runtime");
1089
+ function ApplePayButtonComponent({ style, buttonType, colorType, items, onClick }) {
1090
+ const {
1091
+ checkIfApplePayIsAvailable,
1092
+ getApplePayPaymentRequest,
1093
+ completeApplePayPayment,
1094
+ setCountry,
1095
+ setCouponCodeIfPossible,
1096
+ setDeliveryMethod,
1097
+ setEmail,
1098
+ setPostalCode,
1099
+ clearCart
1100
+ } = useCartProvider();
1101
+ const { data: isApplePayAvailable } = (0, import_react_query2.useQuery)("is-apple-pay-available", checkIfApplePayIsAvailable);
1102
+ if (isApplePayAvailable != true) {
1103
+ return null;
1104
+ }
1105
+ const expectedItems = items.map((el) => ({
1106
+ productID: el.id,
1107
+ quantity: el.quantity,
1108
+ metadata: el.metadata
1109
+ }));
1110
+ async function beginSession() {
1111
+ const requiresShipping = items.find((el) => el.isDeliverable === true) != null;
1112
+ const session = new ApplePaySession(14, {
1113
+ countryCode: "PL",
1114
+ merchantCapabilities: ["supports3DS"],
1115
+ supportedNetworks: ["visa", "masterCard"],
1116
+ currencyCode: "PLN",
1117
+ total: {
1118
+ amount: `${round(items.reduce((acc, item) => acc + item.price * item.quantity, 0) / 100, 2)}`,
1119
+ label: "P\u0142atno\u015B\u0107 za koszyk",
1120
+ type: "pending"
1121
+ },
1122
+ lineItems: [
1123
+ ...items.map((item) => ({
1124
+ amount: `${round(item.price * item.quantity / 100, 2)}`,
1125
+ label: item.name,
1126
+ type: "final"
1127
+ })),
1128
+ requiresShipping ? {
1129
+ amount: `16.99`,
1130
+ type: "pending",
1131
+ label: "Dostawa"
1132
+ } : void 0
1133
+ ].filter((el) => el != null),
1134
+ ...requiresShipping ? {
1135
+ shippingMethods: [],
1136
+ supportsCouponCode: true,
1137
+ requiredBillingContactFields: ["name", "email", "postalAddress", "phone"],
1138
+ requiredShippingContactFields: ["name", "email", "postalAddress", "phone"]
1139
+ } : {}
1140
+ });
1141
+ await (onClick == null ? void 0 : onClick());
1142
+ const apRequest = await getApplePayPaymentRequest({ expectedItems });
1143
+ if (isErr(apRequest)) {
1144
+ console.error("Error creating ApplePaySession:", apRequest.error);
1145
+ return;
1146
+ }
1147
+ session.oncancel = (event) => {
1148
+ console.log("ApplePaySession cancelled", event);
1149
+ };
1150
+ session.onvalidatemerchant = async (event) => {
1151
+ try {
1152
+ const result = await PublicApiClient.get(HOST).applePayValidateMerchant(
1153
+ {
1154
+ validationUrl: event.validationURL,
1155
+ projectId: getProjectID()
1156
+ }
1157
+ );
1158
+ console.log("merchantSession", result.merchantSession);
1159
+ if (result.merchantSession.length > 0) {
1160
+ console.log("completing merchant session");
1161
+ session.completeMerchantValidation(
1162
+ JSON.parse(result.merchantSession)
1163
+ );
1164
+ } else {
1165
+ session.abort();
1166
+ }
1167
+ } catch (error) {
1168
+ session.abort;
1169
+ }
1170
+ };
1171
+ session.onshippingmethodselected = async (event) => {
1172
+ console.log("shipping method selected", event);
1173
+ await setDeliveryMethod(event.shippingMethod.identifier);
1174
+ const apRequest2 = await getApplePayPaymentRequest({ expectedItems });
1175
+ console.log("apRequest", apRequest2);
1176
+ if (isErr(apRequest2)) {
1177
+ session.abort();
1178
+ throw new Error("Failed to get Apple Pay payment request");
1179
+ }
1180
+ session.completeShippingMethodSelection({
1181
+ newTotal: apRequest2.total,
1182
+ newLineItems: apRequest2.lineItems,
1183
+ newShippingMethods: apRequest2.shippingMethods
1184
+ });
1185
+ };
1186
+ session.onshippingcontactselected = async (event) => {
1187
+ try {
1188
+ if (event.shippingContact.countryCode != null) {
1189
+ await setCountry(event.shippingContact.countryCode);
1190
+ }
1191
+ if (event.shippingContact.postalCode != null) {
1192
+ await setPostalCode(event.shippingContact.postalCode);
1193
+ }
1194
+ if (event.shippingContact.phoneNumber != null) {
1195
+ await setEmail(event.shippingContact.emailAddress);
1196
+ }
1197
+ const apRequest2 = await getApplePayPaymentRequest({ expectedItems });
1198
+ if (isErr(apRequest2)) {
1199
+ session.abort();
1200
+ throw new Error("Failed to get Apple Pay payment request");
1201
+ }
1202
+ console.log("apRequest", apRequest2);
1203
+ session.completeShippingContactSelection({
1204
+ newLineItems: apRequest2.lineItems,
1205
+ newTotal: apRequest2.total,
1206
+ newShippingMethods: apRequest2.shippingMethods
1207
+ });
1208
+ } catch (error) {
1209
+ console.log("shipping contact selected error", error);
1210
+ session.abort();
1211
+ }
1212
+ };
1213
+ session.oncouponcodechanged = async (event) => {
1214
+ try {
1215
+ console.log("coupon code changed", event);
1216
+ const result = await setCouponCodeIfPossible(event.couponCode);
1217
+ const apRequest2 = await getApplePayPaymentRequest({ expectedItems });
1218
+ console.log("apRequest", apRequest2);
1219
+ if (isErr(apRequest2)) {
1220
+ session.abort();
1221
+ throw new Error("Failed to get Apple Pay payment request");
1222
+ }
1223
+ session.completeCouponCodeChange({
1224
+ errors: isErr(result) ? [new ApplePayError("couponCodeInvalid")] : void 0,
1225
+ newTotal: apRequest2.total,
1226
+ newLineItems: apRequest2.lineItems,
1227
+ newShippingMethods: apRequest2.shippingMethods
1228
+ });
1229
+ } catch (error) {
1230
+ console.log("coupon code changed error", error);
1231
+ session.abort();
1232
+ }
1233
+ };
1234
+ session.onpaymentauthorized = async (event) => {
1235
+ try {
1236
+ const result = await completeApplePayPayment({
1237
+ token: event.payment.token,
1238
+ billingContact: event.payment.billingContact,
1239
+ shippingContact: event.payment.shippingContact
1240
+ });
1241
+ if (isErr(result)) {
1242
+ console.log("apple pay error", result);
1243
+ session.completePayment({
1244
+ status: ApplePaySession.STATUS_FAILURE
1245
+ });
1246
+ return;
1247
+ }
1248
+ if (result.redirectURL) {
1249
+ setTimeout(() => {
1250
+ open(result.redirectURL, "_self");
1251
+ }, 2e3);
1252
+ }
1253
+ session.completePayment({
1254
+ status: result.isSuccess ? ApplePaySession.STATUS_SUCCESS : ApplePaySession.STATUS_FAILURE
1255
+ });
1256
+ result.isSuccess && clearCart();
1257
+ } catch (e) {
1258
+ session.completePayment({
1259
+ status: ApplePaySession.STATUS_FAILURE
1260
+ });
1261
+ }
1262
+ };
1263
+ session.begin();
1264
+ }
1265
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_apple_pay_button.default, { style, buttonStyle: colorType, type: buttonType, onClick: beginSession });
1266
+ }
1267
+ function Wrapper(props) {
1268
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CartProvider_default, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ApplePayButtonComponent, { ...props }) }) });
1269
+ }
1270
+ var ApplePay_default = Wrapper;
1271
+
1272
+ // src/components/checkout/GooglePay.tsx
1273
+ var import_button_react = __toESM(require("@google-pay/button-react"));
1274
+ var import_react_query3 = require("react-query");
1275
+ var import_jsx_runtime3 = require("react/jsx-runtime");
1276
+ function GooglePayButtonComponent({ items, style, buttonColor, buttonSizeMode, test }) {
1277
+ const {
1278
+ getGooglePayConfiguration,
1279
+ completeGooglePayPayment,
1280
+ setCountry,
1281
+ setCouponCodeIfPossible,
1282
+ setDeliveryMethod,
1283
+ setEmail,
1284
+ setPostalCode,
1285
+ clearCart
1286
+ } = useCartProvider();
1287
+ const { data: googlePayConfiguration } = (0, import_react_query3.useQuery)(["get-google-pay-configuration", items.map((el) => el.id).join(",")], () => getGooglePayConfiguration({
1288
+ items: items.map((el) => ({
1289
+ ...el,
1290
+ id: void 0,
1291
+ productID: el.id
1292
+ }))
1293
+ }));
1294
+ const { mutateAsync: completeGooglePayPaymentAsync, isLoading } = (0, import_react_query3.useMutation)(completeGooglePayPayment);
1295
+ if (googlePayConfiguration == null || googlePayConfiguration.isAvailable != true) {
1296
+ console.log("google pay configuration is not available", googlePayConfiguration);
1297
+ return null;
1298
+ }
1299
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
1300
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1301
+ import_button_react.default,
1302
+ {
1303
+ buttonSizeMode,
1304
+ buttonColor,
1305
+ style,
1306
+ existingPaymentMethodRequired: true,
1307
+ environment: test === true ? "TEST" : "PRODUCTION",
1308
+ onPaymentDataChanged: async (paymentData) => {
1309
+ var _a, _b, _c, _d, _e;
1310
+ console.log("payment data changed", paymentData);
1311
+ if (((_a = paymentData.shippingAddress) == null ? void 0 : _a.postalCode) != null) {
1312
+ await setPostalCode((_b = paymentData.shippingAddress) == null ? void 0 : _b.postalCode);
1313
+ }
1314
+ if (((_c = paymentData.shippingAddress) == null ? void 0 : _c.countryCode) != null) {
1315
+ await setCountry((_d = paymentData.shippingAddress) == null ? void 0 : _d.countryCode);
1316
+ }
1317
+ if (((_e = paymentData.shippingOptionData) == null ? void 0 : _e.id) != null) {
1318
+ await setDeliveryMethod(paymentData.shippingOptionData.id);
1319
+ }
1320
+ const config = await getGooglePayConfiguration({ items: [] });
1321
+ console.log("PAYMENT DATA CHANGED CONFIG", config);
1322
+ if (config.isAvailable) {
1323
+ return {
1324
+ error: void 0,
1325
+ newShippingOptionParameters: config.config.shippingOptionParameters,
1326
+ newTransactionInfo: config.config.transactionInfo
1327
+ };
1328
+ }
1329
+ return {
1330
+ error: void 0
1331
+ };
1332
+ },
1333
+ paymentRequest: googlePayConfiguration.config,
1334
+ onLoadPaymentData: async (paymentRequest) => {
1335
+ try {
1336
+ const result = await completeGooglePayPaymentAsync({
1337
+ paymentData: paymentRequest
1338
+ });
1339
+ if (isErr(result)) {
1340
+ console.log("apple pay error", result);
1341
+ return;
1342
+ }
1343
+ result.isSuccess && clearCart();
1344
+ if (result.redirectURL) {
1345
+ open(result.redirectURL, "_self");
1346
+ }
1347
+ } catch (e) {
1348
+ console.warn("error completing google pay payment", e);
1349
+ }
1350
+ }
1351
+ }
1352
+ ),
1353
+ isLoading ? "\u0141adowanie..." : null
1354
+ ] });
1355
+ }
1356
+ function Wrapper2(props) {
1357
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(CartProvider_default, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(GooglePayButtonComponent, { ...props }) }) });
1358
+ }
1359
+ var GooglePay_default = Wrapper2;
1360
+
1361
+ // src/components/checkout/BitsnapCart.tsx
1362
+ var import_react7 = require("react");
1363
+ var import_zod2 = __toESM(require("zod"));
1364
+
1365
+ // src/components/checkout/CartComponent.tsx
1366
+ var import_react6 = require("@formkit/auto-animate/react");
1367
+ var import_react_dom = require("react-dom");
1368
+
1369
+ // src/components/checkout/CartComponentContent.tsx
1370
+ var import_react4 = require("@formkit/auto-animate/react");
1371
+ var import_react5 = __toESM(require("react"));
1372
+ var import_react_query4 = require("react-query");
1373
+
1374
+ // src/components/checkout/CountrySelector.tsx
1375
+ var import_framer_motion = require("framer-motion");
1376
+ var import_react2 = require("react");
1377
+ var import_jsx_runtime4 = require("react/jsx-runtime");
1378
+ function CountrySelector({
1379
+ id,
1380
+ open: open2,
1381
+ disabled = false,
1382
+ onToggle,
1383
+ onChange,
1384
+ selectedValue,
1385
+ countries
1386
+ }) {
1387
+ var _a;
1388
+ const ref = (0, import_react2.useRef)(null);
1389
+ (0, import_react2.useEffect)(() => {
1390
+ const mutableRef = ref;
1391
+ const handleClickOutside = (event) => {
1392
+ if (mutableRef.current && // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1393
+ // @ts-expect-error
1394
+ !mutableRef.current.contains(event.target) && open2) {
1395
+ onToggle();
1396
+ setQuery("");
1397
+ }
1398
+ };
1399
+ window.document.addEventListener("mousedown", handleClickOutside);
1400
+ return () => {
1401
+ document.removeEventListener("mousedown", handleClickOutside);
1402
+ };
1403
+ }, [ref]);
1404
+ (0, import_react2.useEffect)(() => {
1405
+ if (selectedValue == null && countries.length > 0) {
1406
+ onChange(countries[0].code);
1407
+ }
1408
+ }, []);
1409
+ const [query, setQuery] = (0, import_react2.useState)("");
1410
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { ref, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "relative", children: [
1411
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
1412
+ "button",
1413
+ {
1414
+ type: "button",
1415
+ className: `${disabled ? "bg-neutral-100" : "bg-extra-light-white"} relative w-full rounded-2xl shadow-sm pl-8 pr-10 py-3 text-left cursor-default focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-blue-500 sm:text-sm`,
1416
+ "aria-haspopup": "listbox",
1417
+ "aria-expanded": "true",
1418
+ "aria-labelledby": "listbox-label",
1419
+ onClick: onToggle,
1420
+ disabled,
1421
+ children: [
1422
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "truncate flex items-center", children: [
1423
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1424
+ "img",
1425
+ {
1426
+ alt: `${selectedValue}`,
1427
+ src: `https://purecatamphetamine.github.io/country-flag-icons/3x2/${selectedValue}.svg`,
1428
+ className: "inline mr-2 h-4 rounded-sm"
1429
+ }
1430
+ ),
1431
+ (_a = countries.find((el) => el.code === selectedValue)) == null ? void 0 : _a.name
1432
+ ] }),
1433
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1434
+ "span",
1435
+ {
1436
+ className: `absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none ${disabled ? "hidden" : ""}`,
1437
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1438
+ "svg",
1439
+ {
1440
+ className: "h-5 w-5 text-light-purple",
1441
+ xmlns: "http://www.w3.org/2000/svg",
1442
+ viewBox: "0 0 20 20",
1443
+ fill: "currentColor",
1444
+ "aria-hidden": "true",
1445
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1446
+ "path",
1447
+ {
1448
+ fillRule: "evenodd",
1449
+ d: "M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z",
1450
+ clipRule: "evenodd"
1451
+ }
1452
+ )
1453
+ }
1454
+ )
1455
+ }
1456
+ )
1457
+ ]
1458
+ }
1459
+ ),
1460
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_framer_motion.AnimatePresence, { children: open2 && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
1461
+ import_framer_motion.motion.ul,
1462
+ {
1463
+ initial: { opacity: 0 },
1464
+ animate: { opacity: 1 },
1465
+ exit: { opacity: 0 },
1466
+ transition: { duration: 0.1 },
1467
+ className: "absolute z-10 -mt-80 w-full dark:bg-neutral-800 bg-white shadow-lg max-h-80 rounded-md text-body-regular ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-body-regular",
1468
+ tabIndex: -1,
1469
+ role: "listbox",
1470
+ "aria-labelledby": "listbox-label",
1471
+ "aria-activedescendant": "listbox-option-3",
1472
+ children: [
1473
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "sticky top-0 z-10 bg-white dark:bg-neutral-800", children: [
1474
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("li", { className: "dark:text-neutral-200 text-neutral-900 cursor-default select-none relative py-2 px-3", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1475
+ "input",
1476
+ {
1477
+ type: "search",
1478
+ name: "search",
1479
+ autoComplete: "off",
1480
+ className: "block w-full outline-none sm:text-body-regular dark:text-neutral-400 text-dark-blue bg-transparent border-light-purple rounded-md placeholder:text-light-purple",
1481
+ placeholder: "Znajd\u017A kraj",
1482
+ onChange: (e) => setQuery(e.target.value)
1483
+ }
1484
+ ) }),
1485
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("hr", {})
1486
+ ] }),
1487
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1488
+ "div",
1489
+ {
1490
+ className: "max-h-64 scrollbar scrollbar-track-gray-100 scrollbar-thumb-gray-300 hover:scrollbar-thumb-gray-600 scrollbar-thumb-rounded scrollbar-thin overflow-y-scroll",
1491
+ children: countries.filter(
1492
+ (country) => country.name.toLowerCase().startsWith(query.toLowerCase())
1493
+ ).length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("li", { className: "text-light-purple cursor-default select-none relative py-2 pl-3 pr-9", children: "No countries found" }) : countries.filter(
1494
+ (country) => country.name.toLowerCase().startsWith(query.toLowerCase())
1495
+ ).map((value, index) => {
1496
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
1497
+ "li",
1498
+ {
1499
+ className: "text-dark-blue cursor-default select-none relative py-2 pl-3 pr-9 flex items-center hover:bg-extra-light-white transition",
1500
+ id: "listbox-option-0",
1501
+ role: "option",
1502
+ onClick: () => {
1503
+ onChange(value.code);
1504
+ setQuery("");
1505
+ onToggle();
1506
+ },
1507
+ children: [
1508
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1509
+ "img",
1510
+ {
1511
+ alt: `${value.code}`,
1512
+ src: `https://purecatamphetamine.github.io/country-flag-icons/3x2/${value.code}.svg`,
1513
+ className: "inline mr-2 h-4 rounded-sm"
1514
+ }
1515
+ ),
1516
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "font-normal truncate", children: value.name }),
1517
+ value.code === selectedValue ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1518
+ "span",
1519
+ {
1520
+ className: "text-blue-600 absolute inset-y-0 right-0 flex items-center pr-8",
1521
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1522
+ "svg",
1523
+ {
1524
+ className: "h-5 w-5",
1525
+ xmlns: "http://www.w3.org/2000/svg",
1526
+ viewBox: "0 0 20 20",
1527
+ fill: "currentColor",
1528
+ "aria-hidden": "true",
1529
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
1530
+ "path",
1531
+ {
1532
+ fillRule: "evenodd",
1533
+ d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",
1534
+ clipRule: "evenodd"
1535
+ }
1536
+ )
1537
+ }
1538
+ )
1539
+ }
1540
+ ) : null
1541
+ ]
1542
+ },
1543
+ `${id}-${index}`
1544
+ );
1545
+ })
1546
+ }
1547
+ )
1548
+ ]
1549
+ }
1550
+ ) })
1551
+ ] }) });
1552
+ }
1553
+ var CountrySelector_default = CountrySelector;
1554
+
1555
+ // src/components/checkout/SingleProduct.tsx
1556
+ var import_react3 = require("react");
1557
+ var import_jsx_runtime5 = require("react/jsx-runtime");
1558
+ var SingleProduct = ({ quantity, details, shouldUpdate }) => {
1559
+ var _a;
1560
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex items-center gap-3", children: [
1561
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", { className: "aspect-auto max-w-[30%] max-w-32 max-h-32", src: (_a = details.image_url) != null ? _a : "", alt: details.name }),
1562
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex flex-col", children: [
1563
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "font-medium", children: details.name }),
1564
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-sm", children: formatCurrency(details.price, details.currency) }),
1565
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex justify-between", children: [
1566
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(QuantityComponent, { className: "", quantity, shouldUpdate }),
1567
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: "text-sm font-medium", onClick: () => shouldUpdate(0), children: "Usu\u0144" })
1568
+ ] })
1569
+ ] })
1570
+ ] });
1571
+ };
1572
+ var SingleProduct_default = SingleProduct;
1573
+ var QuantityComponent = ({
1574
+ quantity,
1575
+ shouldUpdate,
1576
+ className
1577
+ }) => {
1578
+ const [quantityString, setQuantityString] = (0, import_react3.useState)(quantity.toString());
1579
+ const [quantityValue, setQuantityValue] = (0, import_react3.useState)(quantity);
1580
+ (0, import_react3.useEffect)(() => {
1581
+ shouldUpdate(quantityValue);
1582
+ }, [quantityValue]);
1583
+ function setNewQuantity(newQuantity) {
1584
+ setQuantityString(newQuantity);
1585
+ if (newQuantity.length == 0) {
1586
+ return;
1587
+ }
1588
+ const parsedInt = parseInt(newQuantity);
1589
+ if (isNaN(parsedInt)) {
1590
+ setQuantityValue(1);
1591
+ setQuantityString("");
1592
+ return;
1593
+ }
1594
+ if (parsedInt == 0 || parsedInt < 0) {
1595
+ setQuantityValue(1);
1596
+ setQuantityString("1");
1597
+ return;
1598
+ }
1599
+ setQuantityValue(parsedInt);
1600
+ setQuantityString(parsedInt.toString());
1601
+ }
1602
+ function increaseQuantity() {
1603
+ setQuantityValue(quantity + 1);
1604
+ setQuantityString((quantity + 1).toString());
1605
+ }
1606
+ function decreaseQuantity() {
1607
+ if (quantity > 1) {
1608
+ setQuantityString((quantity - 1).toString());
1609
+ setQuantityValue(quantity - 1);
1610
+ return;
1611
+ }
1612
+ setQuantityString(quantity.toString());
1613
+ setQuantityValue(quantity);
1614
+ }
1615
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: `flex ${className} items-center border dark:border-neutral-400 border-neutral-700 rounded-md my-1`, children: [
1616
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { onClick: decreaseQuantity, className: "px-2 py-1", children: "-" }),
1617
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1618
+ "input",
1619
+ {
1620
+ className: "w-8 bg-transparent text-center",
1621
+ value: quantityString,
1622
+ onInput: (e) => {
1623
+ setNewQuantity(e.currentTarget.value);
1624
+ },
1625
+ type: "text"
1626
+ }
1627
+ ),
1628
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { onClick: increaseQuantity, className: "px-2 py-1", children: "+" })
1629
+ ] });
1630
+ };
1631
+
1632
+ // src/components/checkout/Skeleton.tsx
1633
+ var import_jsx_runtime6 = require("react/jsx-runtime");
1634
+ function Skeleton({ className, ...props }) {
1635
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
1636
+ "div",
1637
+ {
1638
+ "data-slot": "skeleton",
1639
+ className: "bg-neutral-700 animate-pulse rounded-md " + className,
1640
+ ...props
1641
+ }
1642
+ );
1643
+ }
1644
+
1645
+ // src/components/checkout/CartComponentContent.tsx
1646
+ var import_jsx_runtime7 = require("react/jsx-runtime");
1647
+ var CartComponentContent = ({ className }) => {
1648
+ var _a, _b, _c, _d, _e;
1649
+ const provider = useCartProvider();
1650
+ const { mutateAsync: removeProduct } = (0, import_react_query4.useMutation)(
1651
+ provider.removeProductFromCart
1652
+ );
1653
+ const { mutateAsync: updateQuantity } = (0, import_react_query4.useMutation)(provider.updateQuantity);
1654
+ const { mutateAsync: setCountryAsync } = (0, import_react_query4.useMutation)(provider.setCountry);
1655
+ const { mutateAsync: clearCart } = (0, import_react_query4.useMutation)(provider.clearCart);
1656
+ const [errMsg, setErrMsg] = import_react5.default.useState("");
1657
+ const [isCountryOpen, setIsCountryOpen] = import_react5.default.useState(false);
1658
+ const {
1659
+ mutateAsync: continueToCheckoutAsync,
1660
+ isLoading: isContinueToCheckoutLoading
1661
+ } = (0, import_react_query4.useMutation)(provider.redirectToNextStep);
1662
+ const { data: availableCountries } = (0, import_react_query4.useQuery)(
1663
+ "cart-available-countries",
1664
+ provider.getAvailableCountries
1665
+ );
1666
+ const { data: isApplePayAvailable } = (0, import_react_query4.useQuery)("cart-one-click-payment", provider.checkIfApplePayIsAvailable);
1667
+ const { data, isLoading, refetch } = (0, import_react_query4.useQuery)("cart", provider.getProducts);
1668
+ const { data: countryData, refetch: refetchCountry } = (0, import_react_query4.useQuery)(
1669
+ "cart-country",
1670
+ provider.getCountry
1671
+ );
1672
+ const [productsParent] = (0, import_react4.useAutoAnimate)(
1673
+ /* optional config */
1674
+ );
1675
+ const products = isErr(data) ? void 0 : data;
1676
+ const countries = isErr(availableCountries) ? [] : availableCountries;
1677
+ const sumOfProducts = (_a = products == null ? void 0 : products.reduce((prev, curr) => {
1678
+ if (curr.details == null) {
1679
+ return prev;
1680
+ }
1681
+ return prev + curr.details.price * curr.quantity;
1682
+ }, 0)) != null ? _a : 0;
1683
+ const currency = (_d = (_c = (_b = products == null ? void 0 : products[0]) == null ? void 0 : _b.details) == null ? void 0 : _c.currency) != null ? _d : "PLN";
1684
+ const isSomeProductDeliverable = (_e = products == null ? void 0 : products.some((product) => {
1685
+ var _a2;
1686
+ return ((_a2 = product.details) == null ? void 0 : _a2.isDeliverable) === true;
1687
+ })) != null ? _e : false;
1688
+ const selectedCountry = countryData != null && !isErr(countryData) && countryData != "" ? countryData : void 0;
1689
+ async function shouldUpdate(id, newQuantity) {
1690
+ if (newQuantity != null) {
1691
+ if (newQuantity <= 0) {
1692
+ await removeProduct({ id });
1693
+ await refetch();
1694
+ return;
1695
+ }
1696
+ await updateQuantity({
1697
+ id,
1698
+ quantity: newQuantity
1699
+ });
1700
+ await refetch();
1701
+ return;
1702
+ }
1703
+ }
1704
+ async function continueToCheckout() {
1705
+ try {
1706
+ setErrMsg("");
1707
+ const response = await continueToCheckoutAsync();
1708
+ if (isErr(response)) {
1709
+ setErrMsg(`${response.error}`);
1710
+ return;
1711
+ }
1712
+ await clearCart();
1713
+ window.location.href = response.url;
1714
+ } catch (e) {
1715
+ setErrMsg(`${e}`);
1716
+ }
1717
+ }
1718
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: `${className} flex flex-col`, ref: productsParent, children: [
1719
+ isLoading && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "relative flex w-full justify-center flex-col gap-4", children: [
1720
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Skeleton, { className: "w-full h-32" }),
1721
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Skeleton, { className: "w-full h-32" })
1722
+ ] }),
1723
+ !isLoading && (products == null || products.length == 0) && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex flex-col gap-4 p-4", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "dark:text-neutral-400 text-neutral-700", children: "Brak produkt\xF3w w koszyku." }) }),
1724
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1725
+ "div",
1726
+ {
1727
+ className: "max-h-[70vh] overflow-clip overflow-y-scroll",
1728
+ children: products != null && products.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("ul", { className: "mt-5", children: products.map((product) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react5.default.Fragment, { children: product.details != null && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("li", { className: "mb-3", children: [
1729
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1730
+ SingleProduct_default,
1731
+ {
1732
+ quantity: product.quantity,
1733
+ details: product.details,
1734
+ shouldUpdate: (newQuantity) => {
1735
+ shouldUpdate(product.id, newQuantity).then().catch();
1736
+ }
1737
+ }
1738
+ ),
1739
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("hr", { className: "h-1 dark:border-neutral-700 border-neutral-400" })
1740
+ ] }) }, product.id)) })
1741
+ }
1742
+ ),
1743
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "grow" }),
1744
+ sumOfProducts > 0 && currency != null && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
1745
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "mx-3 flex flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1746
+ "div",
1747
+ {
1748
+ className: "flex flex-row justify-between text-lg",
1749
+ children: [
1750
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1751
+ "p",
1752
+ {
1753
+ className: "dark:text-neutral-200 text-neutral-800 text-xl",
1754
+ children: "Suma:"
1755
+ }
1756
+ ),
1757
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex flex-col items-end", children: [
1758
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1759
+ "p",
1760
+ {
1761
+ className: "dark:text-neutral-200 text-neutral-800 font-medium",
1762
+ children: formatCurrency(sumOfProducts, currency)
1763
+ }
1764
+ ),
1765
+ isSomeProductDeliverable && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "opacity-70 text-right text-base", children: "+ dostawa" })
1766
+ ] })
1767
+ ]
1768
+ }
1769
+ ) }),
1770
+ countries && (countries == null ? void 0 : countries.length) > 1 && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
1771
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1772
+ "h4",
1773
+ {
1774
+ className: "ml-3 text-sm dark:text-neutral-400 text-neutral-700",
1775
+ children: "Wybierz kraj"
1776
+ }
1777
+ ),
1778
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1779
+ CountrySelector_default,
1780
+ {
1781
+ id: Math.random().toString(),
1782
+ open: isCountryOpen,
1783
+ onToggle: () => {
1784
+ setIsCountryOpen(!isCountryOpen);
1785
+ },
1786
+ onChange: (newValue) => {
1787
+ setCountryAsync(newValue).then(() => {
1788
+ refetchCountry().then().catch();
1789
+ });
1790
+ },
1791
+ selectedValue: selectedCountry != null ? selectedCountry : "",
1792
+ countries
1793
+ }
1794
+ )
1795
+ ] }),
1796
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "mb-3 flex flex-col", children: [
1797
+ isApplePayAvailable && products != null && products.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "w-full px-2", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ApplePay_default, { colorType: "white", style: { width: "100%" }, items: products == null ? void 0 : products.map((el) => {
1798
+ var _a2, _b2, _c2, _d2, _e2, _f;
1799
+ return {
1800
+ name: (_b2 = (_a2 = el.details) == null ? void 0 : _a2.name) != null ? _b2 : "",
1801
+ id: el.productID,
1802
+ price: (_d2 = (_c2 = el.details) == null ? void 0 : _c2.price) != null ? _d2 : 0,
1803
+ quantity: el.quantity,
1804
+ isDeliverable: (_f = (_e2 = el.details) == null ? void 0 : _e2.isDeliverable) != null ? _f : false,
1805
+ metadata: el.metadata
1806
+ };
1807
+ }) }) }),
1808
+ products != null && products.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "w-full px-2", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(GooglePay_default, { buttonSizeMode: "fill", buttonColor: "white", style: { width: "100%" }, items: products == null ? void 0 : products.map((el) => {
1809
+ var _a2, _b2, _c2, _d2, _e2, _f;
1810
+ return {
1811
+ name: (_b2 = (_a2 = el.details) == null ? void 0 : _a2.name) != null ? _b2 : "",
1812
+ id: el.productID,
1813
+ price: (_d2 = (_c2 = el.details) == null ? void 0 : _c2.price) != null ? _d2 : 0,
1814
+ quantity: el.quantity,
1815
+ isDeliverable: (_f = (_e2 = el.details) == null ? void 0 : _e2.isDeliverable) != null ? _f : false,
1816
+ metadata: el.metadata
1817
+ };
1818
+ }) }) }),
1819
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1820
+ "button",
1821
+ {
1822
+ onClick: continueToCheckout,
1823
+ disabled: isLoading || isContinueToCheckoutLoading || selectedCountry == null,
1824
+ className: "px-3 py-2 my-2 mx-2 rounded-md disabled:opacity-40 disabled:cursor-not-allowed dark:bg-neutral-300 dark:hover:bg-neutral-100 dark:text-neutral-800 hover:bg-neutral-900 text-neutral-200 bg-neutral-800 transition font-bold",
1825
+ children: isContinueToCheckoutLoading ? "\u0141adowanie..." : "Nast\u0119pny krok"
1826
+ }
1827
+ ),
1828
+ errMsg.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-red-500 text-sm text-center", children: errMsg })
1829
+ ] })
1830
+ ] })
1831
+ ] });
1832
+ };
1833
+ var CartComponentContent_default = CartComponentContent;
1834
+
1835
+ // src/components/checkout/CartComponent.tsx
1836
+ var import_jsx_runtime8 = require("react/jsx-runtime");
1837
+ function CartComponent({ isVisible, shouldHide }) {
1838
+ const [parent] = (0, import_react6.useAutoAnimate)(
1839
+ /* optional config */
1840
+ );
1841
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { ref: parent, className: "z-[999999]", children: isVisible && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
1842
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1843
+ "div",
1844
+ {
1845
+ className: "fixed top-0 right-0 left-0 bottom-0 bg-black/30 cursor-pointer",
1846
+ onClick: shouldHide
1847
+ }
1848
+ ),
1849
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1850
+ "div",
1851
+ {
1852
+ className: "fixed top-0 right-0 bottom-0 w-full md:w-[350px] xl:w-[420px] dark:bg-neutral-900 bg-neutral-300 dark:text-neutral-200 text-neutral-900 flex flex-col",
1853
+ children: [
1854
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1855
+ "div",
1856
+ {
1857
+ className: "mx-3 mt-7 flex justify-between items-center",
1858
+ children: [
1859
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h1", { className: "text-2xl font-medium", children: "Koszyk" }),
1860
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1861
+ "button",
1862
+ {
1863
+ className: "rounded-full dark:hover:bg-neutral-700 hover:bg-neutral-400 p-2 transition",
1864
+ onClick: shouldHide,
1865
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
1866
+ "svg",
1867
+ {
1868
+ xmlns: "http://www.w3.org/2000/svg",
1869
+ width: "24",
1870
+ height: "24",
1871
+ viewBox: "0 0 24 24",
1872
+ fill: "none",
1873
+ stroke: "currentColor",
1874
+ strokeWidth: "2",
1875
+ strokeLinecap: "round",
1876
+ strokeLinejoin: "round",
1877
+ className: "lucide lucide-x",
1878
+ children: [
1879
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
1880
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
1881
+ ]
1882
+ }
1883
+ )
1884
+ }
1885
+ )
1886
+ ]
1887
+ }
1888
+ ),
1889
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CartComponentContent_default, { className: "grow" })
1890
+ ]
1891
+ }
1892
+ )
1893
+ ] }) });
1894
+ }
1895
+ var WrapperCartComponent = (props) => {
1896
+ if (typeof window === "undefined") {
1897
+ return null;
1898
+ }
1899
+ return (0, import_react_dom.createPortal)(
1900
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CartProvider_default, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CartComponent, { ...props }) }),
1901
+ document.body
1902
+ );
1903
+ };
1904
+ var CartComponent_default = WrapperCartComponent;
1905
+
1906
+ // src/components/checkout/BitsnapCart.tsx
1907
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1908
+ var cartAddToCartSchema = import_zod2.default.object({
1909
+ id: import_zod2.default.string(),
1910
+ isSubscription: import_zod2.default.boolean().default(false),
1911
+ quantity: import_zod2.default.number(),
1912
+ metadata: import_zod2.default.record(import_zod2.default.string(), import_zod2.default.string().optional()).optional()
1913
+ });
1914
+ function BitsnapCart({
1915
+ projectID,
1916
+ children,
1917
+ onVisibleChange,
1918
+ className
1919
+ }) {
1920
+ const { isCartVisible, showCart, hideCart } = useCheckoutStore();
1921
+ function sentPostMessageToIframe(msg) {
1922
+ const iframes = document.querySelectorAll("iframe");
1923
+ iframes.forEach((iframe) => {
1924
+ var _a;
1925
+ (_a = iframe.contentWindow) == null ? void 0 : _a.postMessage(msg, "*");
1926
+ });
1927
+ }
1928
+ (0, import_react7.useEffect)(() => {
1929
+ onVisibleChange == null ? void 0 : onVisibleChange(isCartVisible);
1930
+ }, [isCartVisible]);
1931
+ (0, import_react7.useEffect)(() => {
1932
+ setProjectID(projectID);
1933
+ }, [projectID]);
1934
+ (0, import_react7.useEffect)(() => {
1935
+ if (!("cart" in window)) {
1936
+ const projectID2 = getProjectID();
1937
+ if (projectID2 == null) {
1938
+ console.warn("There is no project ID configured.");
1939
+ return;
1940
+ }
1941
+ window["cart"] = {
1942
+ buyProduct: async (args) => {
1943
+ try {
1944
+ const payload = import_zod2.default.object({
1945
+ productID: import_zod2.default.string(),
1946
+ email: import_zod2.default.string().optional(),
1947
+ name: import_zod2.default.string().optional(),
1948
+ country: import_zod2.default.string().optional(),
1949
+ marketingAgreement: import_zod2.default.boolean().optional()
1950
+ }).parse(args);
1951
+ const methods = getCheckoutMethods(projectID2);
1952
+ const result = await methods.justRedirectToPayment(payload);
1953
+ console.log("result", result);
1954
+ if (isErr(result) == false) {
1955
+ window.location.href = result.url;
1956
+ } else {
1957
+ alert(
1958
+ "Nie uda\u0142o si\u0119 przekierowa\u0107 do p\u0142atno\u015Bci. Spr\xF3buj ponownie p\xF3\u017Aniej."
1959
+ );
1960
+ }
1961
+ } catch (e) {
1962
+ console.warn(e);
1963
+ }
1964
+ }
1965
+ };
1966
+ }
1967
+ }, []);
1968
+ async function handleAddingToCart(id, payload) {
1969
+ const projectID2 = getProjectID();
1970
+ if (projectID2 == null) {
1971
+ console.warn("There is no project ID configured.");
1972
+ return;
1973
+ }
1974
+ try {
1975
+ const data = cartAddToCartSchema.parse(payload);
1976
+ if (data.isSubscription) {
1977
+ await handleAddingSubscriptionToCart(projectID2, data);
1978
+ return;
1979
+ }
1980
+ const methods = getCheckoutMethods(projectID2);
1981
+ await methods.addProduct({
1982
+ productID: data.id,
1983
+ quantity: data.quantity,
1984
+ metadata: data.metadata
1985
+ });
1986
+ sentPostMessageToIframe({
1987
+ id,
1988
+ type: "ADD_TO_CART" /* ADD_TO_CART */,
1989
+ success: true
1990
+ });
1991
+ showCart();
1992
+ } catch (e) {
1993
+ console.warn("cannot add item to cart", e);
1994
+ }
1995
+ }
1996
+ async function handleAddingSubscriptionToCart(projectID2, event) {
1997
+ alert(
1998
+ `TODO, nie jest to jeszcze zrobione ${projectID2} ${event.id} ${event.quantity}`
1999
+ );
2000
+ }
2001
+ function setupEventListener() {
2002
+ if ("__cart_is_listening" in window) {
2003
+ return;
2004
+ }
2005
+ window["__cart_is_listening"] = true;
2006
+ window.addEventListener("message", (event) => {
2007
+ if (typeof event.data["id"] != "undefined" && typeof event.data["type"] != "undefined") {
2008
+ const { id, type } = event.data;
2009
+ switch (type) {
2010
+ case "ADD_TO_CART" /* ADD_TO_CART */.toString():
2011
+ handleAddingToCart(id, event.data["payload"]).then().catch();
2012
+ break;
2013
+ default:
2014
+ break;
2015
+ }
2016
+ }
2017
+ });
2018
+ }
2019
+ (0, import_react7.useEffect)(() => {
2020
+ var _a;
2021
+ setupEventListener();
2022
+ if (typeof window !== "undefined") {
2023
+ try {
2024
+ const parsedParams = new URLSearchParams(window.location.search);
2025
+ const refLink = (_a = parsedParams.get("ref")) != null ? _a : parsedParams.get("utm-source");
2026
+ if (typeof localStorage != "undefined" && refLink && refLink.length > 0) {
2027
+ localStorage.setItem("bitsnap-ref", refLink);
2028
+ }
2029
+ } catch (e) {
2030
+ return;
2031
+ }
2032
+ }
2033
+ }, []);
2034
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: "bitsnap-checkout", children: [
2035
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2036
+ "button",
2037
+ {
2038
+ onClick: () => isCartVisible ? hideCart() : showCart(),
2039
+ className: className != null ? className : "relative rounded-full hover:bg-neutral-300 transition p-1",
2040
+ children: children ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_jsx_runtime9.Fragment, { children }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2041
+ "svg",
2042
+ {
2043
+ xmlns: "http://www.w3.org/2000/svg",
2044
+ width: "24",
2045
+ height: "24",
2046
+ viewBox: "0 0 24 24",
2047
+ fill: "none",
2048
+ stroke: "currentColor",
2049
+ strokeWidth: "2",
2050
+ strokeLinecap: "round",
2051
+ strokeLinejoin: "round",
2052
+ className: "lucide lucide-shopping-cart",
2053
+ children: [
2054
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("circle", { cx: "8", cy: "21", r: "1" }),
2055
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("circle", { cx: "19", cy: "21", r: "1" }),
2056
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12" })
2057
+ ]
2058
+ }
2059
+ )
2060
+ }
2061
+ ),
2062
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2063
+ CartComponent_default,
2064
+ {
2065
+ isVisible: isCartVisible,
2066
+ shouldHide: () => {
2067
+ hideCart();
2068
+ }
2069
+ }
2070
+ )
2071
+ ] });
2072
+ }
2073
+ var BitsnapCart_default = BitsnapCart;
2074
+ // Annotate the CommonJS export names for ESM import in node:
2075
+ 0 && (module.exports = {
2076
+ ApplePayButton,
2077
+ Bitsnap,
2078
+ BitsnapCheckout,
2079
+ GooglePayButton,
2080
+ createCheckout,
2081
+ createPaymentURL,
2082
+ getReferenceIfPossible,
2083
+ injectReferenceToRequestIfNeeded,
2084
+ setCustomHost,
2085
+ setProjectID
2086
+ });
2087
+ //# sourceMappingURL=index.js.map