@redotech/redo-hydrogen 1.4.5 → 1.4.6
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/CHANGELOG.md +8 -0
- package/dist/cjs/index.js +11 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/types.d.ts +81 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../node_modules/tslib/tslib.es6.js","../../node_modules/react/cjs/react-jsx-runtime.development.js","../../src/types.ts","../../node_modules/react/jsx-runtime.js","../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../src/utils/security.ts","../../src/utils/cart.ts","../../src/utils/circle-spinner.svg","../../src/providers/redo-coverage-client.tsx","../../src/utils/timeout.ts","../../src/components/redo-checkout-buttons.tsx","../../src/components/icons/info.svg","../../src/utils/react-utils.ts","../../src/components/icons/shield-tick.svg","../../src/components/icons/featured-package-check.svg","../../src/components/icons/featured-laptop-2.svg","../../src/components/icons/featured-refresh-cw-3.svg","../../src/components/icons/logo.svg","../../src/components/icons/modal-close-button.svg","../../src/components/redo-info-modal.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('<anonymous>')) {\n _frame = _frame.replace('<anonymous>', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n // but as an intermediary step, we will use jsxDEV for everything except\n // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n // key is explicitly declared to be undefined or not.\n\n if (maybeKey !== undefined) {\n {\n checkKeyStringCoercion(maybeKey);\n }\n\n key = '' + maybeKey;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n if (hasValidRef(config)) {\n ref = config.ref;\n warnIfStringRefCannotBeAutoConverted(config, self);\n } // Remaining properties are added to a new props object\n\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n}\n\nfunction getDeclarationErrorAddendum() {\n {\n if (ReactCurrentOwner$1.current) {\n var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\n\nvar didWarnAboutKeySpread = {};\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(source);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n var children = props.children;\n\n if (children !== undefined) {\n if (isStaticChildren) {\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n validateChildKeys(children[i], type);\n }\n\n if (Object.freeze) {\n Object.freeze(children);\n }\n } else {\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n }\n } else {\n validateChildKeys(children, type);\n }\n }\n }\n\n {\n if (hasOwnProperty.call(props, 'key')) {\n var componentName = getComponentNameFromType(type);\n var keys = Object.keys(props).filter(function (k) {\n return k !== 'key';\n });\n var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\n\n if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\n\n error('A props object containing a \"key\" prop is being spread into JSX:\\n' + ' let props = %s;\\n' + ' <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + ' let props = %s;\\n' + ' <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n\n didWarnAboutKeySpread[componentName + beforeExample] = true;\n }\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, true);\n }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n {\n return jsxWithValidation(type, props, key, false);\n }\n}\n\nvar jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs = jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n })();\n}\n","import { CartReturn, OptimisticCart } from \"@shopify/hydrogen\";\nimport { CartWithActionsDocs } from \"@shopify/hydrogen-react/dist/types/cart-types\";\nimport { ProductVariant } from \"@shopify/hydrogen-react/storefront-api-types\";\n\ntype CartProductVariantFragment = Omit<ProductVariant, \n \"components\" | \"metafields\" | \"quantityPriceBreaks\" | \"quantityRule\" | \"requiresComponents\" | \"requiresShipping\" | \"storeAvailability\" | \"taxable\" | \"weightUnit\"\n>;\n\ntype CartAttributeKey = string;\n\ninterface RedoCoverageClient {\n enable(): Promise<boolean>;\n disable(): Promise<boolean>;\n get loading(): boolean;\n get enabled(): boolean;\n get eligible(): boolean;\n get price(): number | undefined;\n get storeId(): string | undefined;\n get cart(): CartReturn | CartWithActionsDocs | OptimisticCart | undefined;\n get cartProduct(): CartProductVariantFragment | undefined;\n get cartAttribute(): CartAttributeKey | undefined;\n get errors(): RedoError[] | undefined;\n}\n\ntype CartInfoToEnable = {\n productId: string,\n variantId: string,\n cartAttribute: CartAttributeKey,\n selectedVariant: CartProductVariantFragment\n}\n\ntype RedoContextValue = {\n enabled: boolean,\n loading: boolean,\n storeId?: string,\n cartInfoToEnable?: CartInfoToEnable,\n cart?: CartReturn | CartWithActionsDocs | OptimisticCart,\n errors?: RedoError[],\n};\n\nenum RedoErrorType {\n ApiBadRequest = \"API_BAD_REQUEST\",\n ApiServerError = \"API_SERVER_ERROR\",\n ApiUnknownError = \"API_UNKNOWN_ERROR\"\n};\n\ntype RedoError = {\n type: RedoErrorType,\n message: string,\n context: any\n};\n\nexport {\n RedoErrorType,\n}\n\nexport type {\n CartAttributeKey,\n CartInfoToEnable,\n RedoContextValue,\n RedoCoverageClient,\n CartProductVariantFragment,\n RedoError\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","const REDO_PUBLIC_API_HOSTNAME = 'api.getredo.com';\n\nconst REDO_REQUIRED_HOSTNAMES = [\n REDO_PUBLIC_API_HOSTNAME\n];\n\nexport {\n REDO_REQUIRED_HOSTNAMES,\n REDO_PUBLIC_API_HOSTNAME\n};","import { FetcherWithComponents, useFetcher } from \"@remix-run/react\";\nimport { CartInfoToEnable } from \"../types\";\nimport { CartForm, CartReturn, OptimisticCart, OptimisticCartLine } from \"@shopify/hydrogen\";\nimport type { AppData } from '@remix-run/react/dist/data';\nimport React, { useCallback, useEffect, useRef } from 'react'\nimport { CartWithActionsDocs } from \"@shopify/hydrogen-react/dist/types/cart-types\";\nimport { CartLine, ComponentizableCartLine } from \"@shopify/hydrogen-react/storefront-api-types\";\n\nconst DEFAULT_REDO_ENABLED_CART_ATTRIBUTE = 'redo_opted_in_from_cart';\nconst CONCIERGE_ATTRIBUTION_CART_ATTRIBUTE_KEY = \"redo.conciergeAssisted\";\nconst CONCIERGE_CONVERSATION_IDS_STORAGE_KEY = \"redoConciergeConversationIds\";\n\nconst isCartWithActionsDocs = (cart: CartReturn | CartWithActionsDocs| OptimisticCart): cart is CartWithActionsDocs => {\n return (Array.isArray(cart.lines) && 'linesAdd' in cart && typeof cart.linesAdd === 'function');\n}\n\nconst getCartLines = (cart: CartReturn | CartWithActionsDocs | OptimisticCart): Array<CartLine | ComponentizableCartLine> => {\n if (isOptimisticCart(cart)) {\n return cart.lines.nodes;\n } else if (isCartWithActionsDocs(cart)) {\n return cart.lines;\n } else {\n return cart.lines.nodes ?? cart.lines.edges.map((edge) => edge.node);\n }\n}\n\n// https://shopify.dev/docs/api/hydrogen/2025-01/hooks/useoptimisticcart\nconst isOptimisticCart = (cart: CartReturn | CartWithActionsDocs | OptimisticCart): cart is OptimisticCart => {\n return 'isOptimistic' in cart && (cart.isOptimistic ?? false);\n}\n\nconst isRedoInCart = ({\n cart\n}: {\n cart: CartReturn | CartWithActionsDocs | OptimisticCart\n}): boolean => {\n if(!cart) {\n return false;\n }\n\n return getCartLines(cart).some((cartLine) => {\n return cartLine.merchandise.product.vendor === 're:do';\n });\n}\n\nconst waitForConditionsMetOrTimeout = ({\n conditions,\n timeoutMs\n}: {\n conditions: (() => boolean)[];\n timeoutMs: number;\n}): Promise<boolean> => {\n return new Promise((resolve, reject) => {\n let start = Date.now();\n let interval = setInterval(() => {\n if((Date.now() - start) > timeoutMs) {\n clearInterval(interval);\n return resolve(false);\n }\n\n let conditionsMet = conditions.every((conditionCallback) => conditionCallback());\n\n if(conditionsMet) {\n clearInterval(interval);\n return resolve(true);\n }\n }, 100);\n })\n}\n\nconst addProductToCartIfNeeded = async ({\n cart,\n fetcher,\n waitCartIdle,\n cartInfoToEnable\n}: {\n cart: CartReturn | CartWithActionsDocs | OptimisticCart | undefined,\n fetcher: FetcherWithComponents<unknown>,\n waitCartIdle: WaitCartIdleCallback;\n cartInfoToEnable: CartInfoToEnable\n}) => {\n if(!cart) {\n return await addProductToCart({ cart, fetcher, waitCartIdle, cartInfoToEnable });\n }\n\n const redoProductsInCart = getCartLines(cart).filter((cartLine) => {\n return cartLine.merchandise.product.vendor === 're:do';\n });\n const correctRedoProductInCart = redoProductsInCart?.filter((cartLine) => {\n return cartLine.merchandise.id === `gid://shopify/ProductVariant/${cartInfoToEnable.variantId}`;\n });\n if(redoProductsInCart.length === 0) {\n return await addProductToCart({ cart, fetcher, waitCartIdle, cartInfoToEnable });\n } else if (redoProductsInCart.length === 1 && correctRedoProductInCart.length === 1 && correctRedoProductInCart[0].quantity === 1) {\n // No action needed\n return;\n } else {\n let isSuccess = true;\n\n await removeLinesFromCart({ cart, fetcher, waitCartIdle, lineIds: redoProductsInCart.map((cartLine) => cartLine.id) });\n await addProductToCart({ cart, fetcher, waitCartIdle, cartInfoToEnable });\n\n return;\n }\n};\n\nconst removeLinesFromCart = async ({\n cart,\n fetcher,\n waitCartIdle,\n lineIds\n}: {\n cart: CartReturn | CartWithActionsDocs | OptimisticCart | undefined;\n fetcher: FetcherWithComponents<unknown>;\n waitCartIdle: WaitCartIdleCallback;\n lineIds: string[];\n}) => {\n const formInput = {\n action: CartForm.ACTIONS.LinesRemove,\n inputs: {\n lineIds\n }\n }\n\n if(cart && isCartWithActionsDocs(cart)) {\n cart.linesRemove(lineIds);\n await waitCartIdle();\n } else {\n await fetcher.submit(\n {\n [CartForm.INPUT_NAME]: JSON.stringify(formInput),\n },\n {method: 'POST', action: '/cart'},\n );\n }\n};\n\nconst removeProductFromCartIfNeeded = async ({\n cart,\n fetcher,\n waitCartIdle,\n cartInfoToEnable\n}: {\n cart: CartReturn | CartWithActionsDocs | OptimisticCart | undefined,\n fetcher: FetcherWithComponents<unknown>,\n waitCartIdle: WaitCartIdleCallback\n cartInfoToEnable: CartInfoToEnable\n}) => {\n if(!cart) {\n console.error('No cart');\n return;\n }\n\n const redoProductsInCart = getCartLines(cart).filter((cartLine) => {\n return cartLine.merchandise.product.vendor === 're:do';\n });\n\n if(redoProductsInCart.length !== 0) {\n await removeLinesFromCart({ cart, fetcher, waitCartIdle, lineIds: redoProductsInCart.map((cartLine) => cartLine.id) });\n } else {\n }\n};\n\nconst addProductToCart = async ({\n waitCartIdle,\n cart,\n fetcher,\n cartInfoToEnable,\n}: {\n waitCartIdle: WaitCartIdleCallback;\n cart: CartReturn | CartWithActionsDocs | OptimisticCart | undefined,\n fetcher: FetcherWithComponents<unknown>,\n cartInfoToEnable: CartInfoToEnable\n}) => {\n const redoProductLine = {\n \"merchandiseId\": `gid://shopify/ProductVariant/${cartInfoToEnable.variantId}`,\n \"quantity\": 1,\n };\n\n const formInput = {\n action: CartForm.ACTIONS.LinesAdd,\n inputs: {\n lines: [\n redoProductLine\n ]\n }\n }\n\n if(cart && isCartWithActionsDocs(cart)) {\n cart.linesAdd([redoProductLine]);\n await waitCartIdle();\n } else {\n await fetcher.submit(\n {\n [CartForm.INPUT_NAME]: JSON.stringify(formInput),\n },\n {method: 'POST', action: '/cart'},\n );\n }\n};\n\ninterface ConversationIdWithExpiry {\n conversationId: string;\n expiresAt: number;\n}\n\nfunction getConciergeConversationIdsFromStorage(): string[] | null {\n try {\n const stored = localStorage.getItem(CONCIERGE_CONVERSATION_IDS_STORAGE_KEY);\n if (!stored) {\n return null;\n }\n\n const conversationIdsWithExpiry: ConversationIdWithExpiry[] =\n JSON.parse(stored);\n const now = Date.now();\n\n const validConversationIds = conversationIdsWithExpiry\n .filter((item) => item.expiresAt > now)\n .map((item) => item.conversationId);\n\n return validConversationIds.length > 0 ? validConversationIds : null;\n } catch (error) {\n return null;\n }\n}\n\nconst setCartRedoEnabledAttribute = async ({\n cart,\n fetcher,\n waitCartIdle,\n cartInfoToEnable,\n enabled\n}: {\n cart: CartReturn | CartWithActionsDocs | OptimisticCart | undefined;\n fetcher: FetcherWithComponents<unknown>;\n waitCartIdle: WaitCartIdleCallback;\n cartInfoToEnable: CartInfoToEnable | null;\n enabled: boolean;\n}) => {\n const redoCartAttribute = {\n key: cartInfoToEnable?.cartAttribute || DEFAULT_REDO_ENABLED_CART_ATTRIBUTE,\n value: enabled.toString()\n };\n\n const existingAttributes = cart?.attributes || [];\n \n const existingAttributesMap = new Map(\n existingAttributes.map(attr => [attr.key, attr.value])\n );\n \n existingAttributesMap.set(redoCartAttribute.key, redoCartAttribute.value);\n const conciergeConversationIds = getConciergeConversationIdsFromStorage();\n if (conciergeConversationIds && conciergeConversationIds.length > 0) {\n existingAttributesMap.set(\n CONCIERGE_ATTRIBUTION_CART_ATTRIBUTE_KEY,\n JSON.stringify({\n conciergeConversationIds: conciergeConversationIds,\n })\n );\n }\n\n const updatedAttributes = Array.from(existingAttributesMap.entries()).map(([key, value]) => ({\n key,\n value: value ?? \"\"\n }));\n\n const formInput = {\n action: CartForm.ACTIONS.AttributesUpdateInput,\n inputs: {\n attributes: updatedAttributes\n }\n }\n\n if(cart && isCartWithActionsDocs(cart)) {\n cart.cartAttributesUpdate(updatedAttributes);\n await waitCartIdle();\n } else {\n await fetcher.submit(\n {\n [CartForm.INPUT_NAME]: JSON.stringify(formInput),\n },\n {method: 'POST', action: '/cart'},\n );\n }\n};\n\ntype FetcherData<T> = NonNullable<T | unknown> // FIXME: used to use SerializeFrom which is deprecated. Can this be better typed?\ntype ResolveFunction<T> = (value: FetcherData<T>) => void\n\nfunction useFetcherWithPromise<TData = AppData>(opts?: Parameters<typeof useFetcher>[0]) {\n const fetcher = useFetcher<TData>(opts)\n const resolveRef = React.useRef<ResolveFunction<TData>>(null)\n const promiseRef = React.useRef<Promise<FetcherData<TData>>>(null)\n\n if (!promiseRef.current) {\n promiseRef.current = new Promise<FetcherData<TData>>((resolve) => {\n resolveRef.current = resolve\n })\n }\n\n const resetResolver = React.useCallback(() => {\n promiseRef.current = new Promise((resolve) => {\n resolveRef.current = resolve\n })\n }, [promiseRef, resolveRef])\n\n const submit = React.useCallback(\n async (...args: Parameters<typeof fetcher.submit>) => {\n fetcher.submit(...args);\n return promiseRef.current\n },\n [fetcher, promiseRef]\n )\n\n React.useEffect(() => {\n if (fetcher.state === 'idle') {\n if (fetcher.data) {\n resolveRef.current?.(fetcher.data)\n }\n resetResolver()\n }\n }, [fetcher, resetResolver])\n\n return { ...fetcher, submit }\n}\n\ntype WaitCartIdleCallback = () => Promise<CartReturn | CartWithActionsDocs | OptimisticCart>;\n\n// This function allows us to await a cart idle state without breaking React rules.\n// It returns a function, which returns a promise, which will resolve once the cart value passed in reaches an idle state.\n// Not intended for use with CartReturn, but will accept that value if passed in to avoid breaking rules of hooks\nconst useWaitCartIdle = (cart: CartReturn | CartWithActionsDocs | OptimisticCart | undefined) => {\n const resolveRef = useRef<any>(null)\n const promiseRef = useRef<any>(null)\n\n if (!promiseRef.current) {\n promiseRef.current = new Promise<CartReturn | CartWithActionsDocs | OptimisticCart>((resolve) => {\n resolveRef.current = resolve\n })\n }\n\n const resetResolver = useCallback(() => {\n promiseRef.current = new Promise((resolve) => {\n resolveRef.current = resolve\n })\n }, [promiseRef, resolveRef]);\n\n const waitCartIdle = useCallback(\n async () => {\n return promiseRef.current\n },\n [cart, promiseRef]\n )\n\n useEffect(() => {\n if(!cart) {\n return;\n }\n if(!isCartWithActionsDocs(cart)) {\n // Wrong type of cart. Just resolve.\n resolveRef.current?.(cart);\n resetResolver();\n } else if(cart.status === 'idle') {\n resolveRef.current?.(cart)\n resetResolver();\n }\n }, [cart, resetResolver]);\n\n return waitCartIdle;\n}\n\nexport type {\n WaitCartIdleCallback\n}\n\nexport {\n DEFAULT_REDO_ENABLED_CART_ATTRIBUTE,\n addProductToCartIfNeeded,\n removeProductFromCartIfNeeded,\n setCartRedoEnabledAttribute,\n useFetcherWithPromise,\n useWaitCartIdle,\n isCartWithActionsDocs,\n getCartLines,\n isOptimisticCart\n};","<svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <path\n d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\n fill=\"currentColor\"\n opacity=\".25\"\n />\n <path\n d=\"M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z\"\n fill=\"currentColor\"\n >\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n dur=\"0.75s\"\n values=\"0 12 12;360 12 12\"\n repeatCount=\"indefinite\"\n />\n </path>\n</svg>\n","import { useFetcher } from \"@remix-run/react\";\nimport { CartReturn, OptimisticCart } from \"@shopify/hydrogen\";\nimport { createContext, ReactNode, useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { CartProductVariantFragment, CartAttributeKey, CartInfoToEnable, RedoContextValue, RedoCoverageClient, RedoError, RedoErrorType } from \"../types\";\nimport { REDO_PUBLIC_API_HOSTNAME } from \"../utils/security\";\nimport { addProductToCartIfNeeded, removeProductFromCartIfNeeded, setCartRedoEnabledAttribute, useFetcherWithPromise, isCartWithActionsDocs, getCartLines, useWaitCartIdle, isOptimisticCart } from \"../utils/cart\";\nimport { CartWithActionsDocs } from \"@shopify/hydrogen-react/dist/types/cart-types\";\n\nconst DEFAULT_REDO_CONTEXT_VALUE: RedoContextValue = {\n enabled: false,\n loading: true,\n}\n\nconst RedoContext = createContext<RedoContextValue>(DEFAULT_REDO_CONTEXT_VALUE);\n\nconst RedoProvider = ({\n cart,\n storeId,\n children\n}: {\n cart: CartReturn | CartWithActionsDocs | OptimisticCart,\n storeId: string,\n children: ReactNode,\n}): ReactNode => {\n const [cartProduct, setCartProduct] = useState();\n const [cartAttribute, setCartAttribute] = useState<CartAttributeKey>();\n const [cartInfoToEnable, setCartInfoToEnable] = useState<CartInfoToEnable>();\n const [loading, setLoading] = useState<boolean>(true);\n const [errors, setErrors] = useState<RedoError[]>([]);\n\n const logUniqueError = (newError: RedoError) => {\n if(errors.find((err) => err.type === newError.type)) {\n } else {\n setErrors([...errors, newError]);\n }\n return newError;\n }\n\n useEffect(() => {\n if(!cart || !storeId || isOptimisticCart(cart)) {\n return;\n }\n\n let cartLines = getCartLines(cart);\n\n fetch(`https://${REDO_PUBLIC_API_HOSTNAME}/v2.2/stores/${storeId}/coverage-products`, {\n method: 'POST',\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n cart: {\n lineItems: cartLines.map((cartLine) => ({\n id: cartLine.id,\n originalPrice: {\n amount: cartLine.merchandise?.price?.amount,\n currency: cartLine.merchandise?.price?.currencyCode\n },\n priceTotal: {\n amount: cartLine.cost?.totalAmount?.amount,\n currency: cartLine.cost?.totalAmount?.currencyCode\n },\n product: {\n id: cartLine.merchandise?.product?.id\n },\n variant: {\n id: cartLine.merchandise?.id\n },\n quantity: cartLine.quantity,\n })),\n priceTotal: {\n amount: cart.cost?.totalAmount?.amount,\n currency: cart.cost?.totalAmount?.currencyCode\n },\n },\n customer: {\n id: cart.buyerIdentity?.customer?.id || '',\n country: cart.buyerIdentity?.countryCode\n }\n })\n })\n .then(async (res) => {\n if(res.status === 500) {\n logUniqueError({\n type: RedoErrorType.ApiServerError,\n message: \"Internal server error occured when getting available coverage products from Redo API.. Check your inputs are correct and storeId have been configured. Reach out to Redo support if the issue persists.\",\n context: {\n json: await res.json()\n }\n });\n return;\n } else if(res.status === 400) {\n logUniqueError({\n type: RedoErrorType.ApiBadRequest,\n message: \"Bad request when getting available coverage products from Redo API. Check that the passed in cart is of the correct type Cart/CartReturn and includes all of the correct cart information.\",\n context: {\n json: await res.json()\n }\n });\n return;\n } else if(res.status !== 200) {\n logUniqueError({\n type: RedoErrorType.ApiUnknownError,\n message: \"Unkown error occured while getting available coverage products from Redo API.\",\n context: {\n status: res.status,\n json: await res.json()\n }\n });\n return;\n }\n\n let json = await res.json();\n\n setLoading(false);\n \n if(!json?.coverageProducts?.[0]?.cartInfoToEnable) {\n return;\n }\n\n setCartInfoToEnable(json.coverageProducts[0].cartInfoToEnable);\n })\n }, [cart, storeId]);\n \n const contextVal: RedoContextValue = {\n enabled: true,\n loading,\n storeId,\n cartInfoToEnable,\n cart,\n errors: (errors?.length && errors.length > 0) ? errors : undefined\n };\n\n return (\n <RedoContext.Provider value={contextVal}>\n {children}\n </RedoContext.Provider>\n );\n};\n\nconst useRedoCoverageClient = (): RedoCoverageClient => {\n const redoContext = useContext(RedoContext);\n const fetcher = useFetcherWithPromise();\n const waitCartIdle = useWaitCartIdle(redoContext.cart);\n\n useEffect(() => {\n if(redoContext.loading || !redoContext.cartInfoToEnable) {\n return;\n }\n removeProductFromCartIfNeeded({\n cart: redoContext.cart,\n fetcher,\n waitCartIdle,\n cartInfoToEnable: redoContext.cartInfoToEnable\n });\n }, [redoContext.loading]);\n \n return {\n enable: async () => {\n if(redoContext.loading || !redoContext.cartInfoToEnable) {\n return false;\n }\n let addProductResult = await addProductToCartIfNeeded({\n fetcher,\n waitCartIdle,\n cart: redoContext.cart,\n cartInfoToEnable: redoContext.cartInfoToEnable,\n });\n await setCartRedoEnabledAttribute({\n cart: redoContext.cart,\n fetcher,\n waitCartIdle,\n cartInfoToEnable: redoContext.cartInfoToEnable,\n enabled: true\n });\n return true;\n },\n disable: async () => {\n if(!redoContext.cartInfoToEnable) {\n return false;\n }\n await removeProductFromCartIfNeeded({\n fetcher,\n waitCartIdle,\n cart: redoContext.cart,\n cartInfoToEnable: redoContext.cartInfoToEnable\n });\n await setCartRedoEnabledAttribute({\n cart: redoContext.cart,\n fetcher,\n waitCartIdle,\n cartInfoToEnable: redoContext.cartInfoToEnable,\n enabled: false\n });\n return true;\n },\n get loading() {\n return redoContext.loading;\n },\n get eligible() {\n return !this.loading && !!this.price && !!this.cartProduct && !!this.cart?.cost;\n },\n get enabled() {\n return redoContext.enabled;\n },\n get price() {\n let priceToEnable = redoContext.cartInfoToEnable?.selectedVariant?.price?.amount;\n if(!priceToEnable || Number(priceToEnable).toString() === 'NaN') {\n return undefined;\n }\n\n return Number(priceToEnable);\n },\n get cart() {\n return redoContext.cart;\n },\n get cartProduct() {\n return redoContext.cartInfoToEnable?.selectedVariant;\n },\n get cartAttribute() {\n return redoContext.cartInfoToEnable?.cartAttribute\n },\n get storeId() {\n return redoContext.storeId;\n },\n get errors() {\n return redoContext.errors;\n }\n }\n};\n\nexport {\n RedoProvider,\n useRedoCoverageClient\n}","export async function executeWithTimeout<T, E extends Error>(\n promise: Promise<T>,\n timeoutMs: number,\n error: E = new Error(\"timeout\") as E,\n): Promise<T> {\n return Promise.race([\n promise,\n new Promise<never>((_, reject) =>\n setTimeout(() => reject(error), timeoutMs),\n ),\n ]);\n}\n","import React, { MouseEvent, ReactNode, useEffect, useState } from \"react\";\nimport { CartForm, CartActionInput, CartReturn, OptimisticCart } from \"@shopify/hydrogen\";\nimport { useRedoCoverageClient } from \"../providers/redo-coverage-client\";\nimport { CartInfoToEnable, RedoCoverageClient } from \"../types\";\nimport { REDO_PUBLIC_API_HOSTNAME } from \"../utils/security\";\nimport { CurrencyCode } from \"@shopify/hydrogen-react/storefront-api-types\";\nimport { CartWithActionsDocs } from \"@shopify/hydrogen-react/dist/types/cart-types\";\nimport { getCartLines, isCartWithActionsDocs } from \"../utils/cart\";\n\nimport CircleSpinner from \"../utils/circle-spinner.svg\";\nimport { executeWithTimeout } from \"../utils/timeout\";\n\ntype CheckoutButtonUIResponse = {\n html: string;\n css: string;\n};\n\nconst getButtonsToShow = ({\n redoCoverageClient,\n cart,\n storeId\n}: {\n redoCoverageClient: RedoCoverageClient,\n cart: CartReturn | CartWithActionsDocs | OptimisticCart,\n storeId: string;\n}): Promise<CheckoutButtonUIResponse | null> => {\n return new Promise<CheckoutButtonUIResponse | null>((resolve, reject) => {\n fetch(\n `https://${REDO_PUBLIC_API_HOSTNAME}/v2.2/stores/${storeId}/checkout-buttons-ui`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n ).then(async (res) => {\n let json = await res.json();\n\n if (!json.html) {\n return resolve(null);\n }\n\n const ui = applyButtonVariables({\n redoCoverageClient,\n cart,\n ui: json\n });\n\n if (!ui) {\n return reject(null);\n }\n\n return resolve(ui);\n });\n });\n};\n\nconst applyButtonVariables = ({\n redoCoverageClient,\n cart,\n ui\n}: {\n redoCoverageClient: RedoCoverageClient,\n cart: CartReturn | CartWithActionsDocs | OptimisticCart,\n ui: CheckoutButtonUIResponse\n}): CheckoutButtonUIResponse | null => {\n if (!redoCoverageClient.eligible || !redoCoverageClient.price || !cart?.cost) {\n return null;\n }\n\n let currencyCode: CurrencyCode = cart.cost.subtotalAmount.currencyCode;\n if (currencyCode === 'XXX') {\n currencyCode = 'USD';\n }\n\n const cartContainsRedo = !!(getCartLines(cart).some((cartItem) => cartItem.merchandise?.product?.vendor === 're:do'));\n const combinedPrice = new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: currencyCode\n }).format(Number(cart.cost.subtotalAmount.amount) + (cartContainsRedo ? 0 : redoCoverageClient.price));\n\n if (!combinedPrice || !combinedPrice.length || combinedPrice.includes('NaN')) {\n return null;\n }\n\n ui.html = ui.html.replaceAll('%combinedPrice%', combinedPrice);\n\n return ui;\n}\n\nconst findAncestor = (\n searchEl: HTMLElement | null,\n findFn: (el: HTMLElement) => boolean\n) => {\n if (searchEl == null) {\n return null;\n } else if (findFn(searchEl)) {\n return searchEl;\n } else {\n return findAncestor(searchEl.parentElement, findFn);\n }\n};\n\nconst RedoCheckoutButtons = (props: {\n children?: ReactNode;\n onClick?: (enabled: boolean) => void;\n}) => {\n const redoCoverageClient = useRedoCoverageClient();\n let cart = redoCoverageClient.cart;\n let checkoutUrl = redoCoverageClient.cart?.checkoutUrl || '/checkout';\n let [redoProductToAdd, setRedoProductToAdd] =\n useState<CartInfoToEnable | null>(null);\n let [checkoutButtonsUI, setCheckoutButtonsUI] =\n useState<CheckoutButtonUIResponse | null>(null);\n \n const [buttonPending, setButtonPending] = useState(false);\n\n useEffect(() => {\n (async () => {\n if (!redoCoverageClient.eligible || !cart || !redoCoverageClient.storeId) {\n return;\n }\n\n const buttons = await getButtonsToShow({ redoCoverageClient, cart, storeId: redoCoverageClient.storeId });\n if (buttons) {\n setCheckoutButtonsUI(buttons);\n }\n })();\n }, [cart, redoCoverageClient.eligible, redoCoverageClient.price, redoCoverageClient.storeId]);\n\n /** To avoid the inevitable spammers trying to checkout faster by clicking over and over, between the time the promise resolves and the new tab opens (or errors) */\n const DELAY_TO_ALLOW_CLICKING_AGAIN = 2000;\n const TIMEOUT_FOR_CHECKOUTS = 8000;\n \n const handleCoverageCheckoutClick = async (isCoverage: boolean) => {\n if (!redoCoverageClient || !redoCoverageClient.enable || !redoCoverageClient.disable) {\n console.error('Required redoCoverageClient methods not available');\n return;\n }\n\n setButtonPending(true);\n try {\n const functionToCall = isCoverage ? redoCoverageClient.enable : redoCoverageClient.disable;\n const result = await executeWithTimeout(\n functionToCall(),\n TIMEOUT_FOR_CHECKOUTS\n );\n \n if (props.onClick) {\n await props.onClick(result);\n }\n } catch (e) {\n console.error(e);\n } finally {\n setTimeout(() => {\n setButtonPending(false);\n }, DELAY_TO_ALLOW_CLICKING_AGAIN);\n }\n };\n\n const wrapperClickHandler = async (e: MouseEvent) => {\n let clickedElement = e.target as HTMLElement;\n\n if (!clickedElement.dataset) {\n return;\n }\n\n const isCoverageButton = findAncestor(\n clickedElement,\n (el) => el.dataset?.target == \"coverage-button\"\n );\n\n const isNonCoverageButton = findAncestor(\n clickedElement,\n (el) => el.dataset?.target == \"non-coverage-button\",\n );\n\n if (isCoverageButton || isNonCoverageButton) {\n try {\n await handleCoverageCheckoutClick(isCoverageButton ? true : false);\n } catch (error) {\n console.error('Failed to update coverage state:', error);\n }\n window.location.href = checkoutUrl;\n }\n };\n\n return (\n <div>\n {checkoutButtonsUI ? (\n <div onClick={wrapperClickHandler} style={{ position: \"relative\" }}>\n {checkoutButtonsUI.css ? <style>{checkoutButtonsUI.css}</style> : ''}\n <div\n dangerouslySetInnerHTML={{ __html: checkoutButtonsUI.html }}\n style={{ \n opacity: (buttonPending) ? 0.25 : 1,\n transition: 'opacity 0.2s ease-in-out'\n }}\n />\n {(buttonPending) && ( \n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n zIndex: 1,\n }}\n >\n <CircleSpinner />\n </div>\n )} \n </div>\n ) : (\n props.children\n )}\n </div>\n );\n};\n\nexport { RedoCheckoutButtons };\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\">\n <defs />\n <g id=\"Redo_Layer_2\" data-name=\"Layer 2\">\n <g id=\"Layer_1-2\" data-name=\"Layer 1\">\n <circle\n class=\"cls-1\"\n cx=\"50\"\n cy=\"50\"\n r=\"46.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n style=\"stroke-miterlimit: 10; stroke-width: 7px;\"\n />\n <path\n d=\"M50,25a4.49,4.49,0,0,1,4.51,4.5A4.43,4.43,0,0,1,50,33.92a4.36,4.36,0,0,1-4.43-4.43A4.42,4.42,0,0,1,50,25ZM46.61,41.43h6.78V75H46.61Z\"\n fill=\"currentColor\"\n />\n </g>\n </g>\n</svg>\n","import {\n DependencyList,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nexport interface Loader<T> {\n (abort: AbortSignal): Promise<T>;\n}\n\nexport interface LoadState<T> {\n error?: any;\n pending: boolean;\n value?: T;\n}\n\nexport function useLoad<T>(fn: Loader<T>, deps: DependencyList): LoadState<T> {\n const [state, setState] = useState<LoadState<T>>({ pending: false });\n\n useEffect(() => {\n const abortController = new AbortController();\n setState((state) => ({ ...state, pending: true }));\n fn(abortController.signal).then(\n (value) => setState({ pending: false, value }),\n (error) => {\n if (\n !(\n error.message.includes(\"Request aborted for RPC method\") ||\n error.code === \"ERR_CANCELED\" ||\n error.message === \"Another request is in flight\"\n )\n ) {\n setState({ pending: false, error });\n }\n },\n );\n return () => {\n abortController.abort();\n setState((state) => ({ ...state, pending: false }));\n };\n // The way useLoad() is designed, we have no choice but to trust that the user gave us the correct deps for fn().\n // We could fix this by marking useLoad() as a custom hook, and then exhaustive-deps would enforce that for us.\n // https://www.npmjs.com/package/eslint-plugin-react-hooks#advanced-configuration\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n\n return state;\n}","<svg\n viewBox=\"0 0 25 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <path\n d=\"M9.6665 11.4999L11.6665 13.4999L16.1665 8.99987M20.6665 11.9999C20.6665 16.9083 15.3125 20.4783 13.3645 21.6147C13.1431 21.7439 13.0324 21.8085 12.8762 21.842C12.7549 21.868 12.5781 21.868 12.4568 21.842C12.3006 21.8085 12.1899 21.7439 11.9685 21.6147C10.0205 20.4783 4.6665 16.9083 4.6665 11.9999V7.21747C4.6665 6.41796 4.6665 6.0182 4.79726 5.67457C4.91278 5.37101 5.10049 5.10015 5.34416 4.8854C5.62 4.64231 5.9943 4.50195 6.74291 4.22122L12.1047 2.21054C12.3126 2.13258 12.4165 2.0936 12.5235 2.07815C12.6183 2.06444 12.7147 2.06444 12.8095 2.07815C12.9165 2.0936 13.0204 2.13258 13.2283 2.21054L18.5901 4.22122C19.3387 4.50195 19.713 4.64231 19.9888 4.8854C20.2325 5.10015 20.4202 5.37101 20.5357 5.67457C20.6665 6.0182 20.6665 6.41796 20.6665 7.21747V11.9999Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n</svg>\n","<svg\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g filter=\"url(#filter0_d_632_1403)\">\n <path\n d=\"M2.5 7C2.5 3.96243 4.96243 1.5 8 1.5H28C31.0376 1.5 33.5 3.96243 33.5 7V27C33.5 30.0376 31.0376 32.5 28 32.5H8C4.96243 32.5 2.5 30.0376 2.5 27V7Z\"\n stroke=\"#D6D6D6\"\n shape-rendering=\"crispEdges\"\n />\n <path\n d=\"M23.6666 13.8518L18 17M18 17L12.3333 13.8518M18 17L18 23.3333M19.3333 22.9259L18.518 23.3789C18.329 23.4839 18.2344 23.5364 18.1343 23.557C18.0457 23.5753 17.9543 23.5753 17.8657 23.557C17.7656 23.5364 17.6711 23.4839 17.482 23.3789L12.5486 20.6381C12.349 20.5272 12.2491 20.4717 12.1764 20.3928C12.1121 20.3231 12.0634 20.2403 12.0337 20.1502C12 20.0483 12 19.9341 12 19.7057V14.2943C12 14.0659 12 13.9517 12.0337 13.8498C12.0634 13.7597 12.1121 13.677 12.1764 13.6072C12.2491 13.5283 12.349 13.4728 12.5486 13.3619L17.482 10.6211C17.671 10.5161 17.7656 10.4636 17.8657 10.443C17.9543 10.4248 18.0457 10.4248 18.1343 10.443C18.2344 10.4636 18.329 10.5161 18.518 10.6211L23.4514 13.3619C23.651 13.4728 23.7509 13.5283 23.8236 13.6072C23.8879 13.6769 23.9366 13.7597 23.9663 13.8498C24 13.9517 24 14.0659 24 14.2943L24 17.3333M15 12L21 15.3333M20.6667 21L22 22.3333L24.6667 19.6667\"\n stroke=\"#424242\"\n stroke-width=\"1.33333\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_632_1403\"\n x=\"0\"\n y=\"0\"\n width=\"36\"\n height=\"36\"\n filterUnits=\"userSpaceOnUse\"\n color-interpolation-filters=\"sRGB\"\n >\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_632_1403\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_632_1403\"\n result=\"shape\"\n />\n </filter>\n </defs>\n</svg>\n","<svg\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g filter=\"url(#filter0_d_635_1424)\">\n <path\n d=\"M2.5 7C2.5 3.96243 4.96243 1.5 8 1.5H28C31.0376 1.5 33.5 3.96243 33.5 7V27C33.5 30.0376 31.0376 32.5 28 32.5H8C4.96243 32.5 2.5 30.0376 2.5 27V7Z\"\n stroke=\"#D6D6D6\"\n shape-rendering=\"crispEdges\"\n />\n <path\n d=\"M23.9999 19.6667V13.8C23.9999 13.0533 23.9999 12.6799 23.8546 12.3947C23.7268 12.1438 23.5228 11.9398 23.2719 11.812C22.9867 11.6667 22.6133 11.6667 21.8666 11.6667H14.1333C13.3865 11.6667 13.0131 11.6667 12.7279 11.812C12.477 11.9398 12.2731 12.1438 12.1452 12.3947C11.9999 12.6799 11.9999 13.0533 11.9999 13.8V19.6667M13.111 22.3333H22.8888C23.3021 22.3333 23.5088 22.3333 23.6783 22.2879C24.1385 22.1646 24.4979 21.8052 24.6212 21.3451C24.6666 21.1755 24.6666 20.9689 24.6666 20.5556C24.6666 20.3489 24.6666 20.2456 24.6439 20.1608C24.5822 19.9307 24.4025 19.751 24.1725 19.6894C24.0877 19.6667 23.9844 19.6667 23.7777 19.6667H12.2221C12.0155 19.6667 11.9122 19.6667 11.8274 19.6894C11.5973 19.751 11.4176 19.9307 11.356 20.1608C11.3333 20.2456 11.3333 20.3489 11.3333 20.5556C11.3333 20.9689 11.3333 21.1755 11.3787 21.3451C11.502 21.8052 11.8614 22.1646 12.3215 22.2879C12.491 22.3333 12.6977 22.3333 13.111 22.3333Z\"\n stroke=\"#424242\"\n stroke-width=\"1.33333\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_635_1424\"\n x=\"0\"\n y=\"0\"\n width=\"36\"\n height=\"36\"\n filterUnits=\"userSpaceOnUse\"\n color-interpolation-filters=\"sRGB\"\n >\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_635_1424\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_635_1424\"\n result=\"shape\"\n />\n </filter>\n </defs>\n</svg>\n","<svg\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g filter=\"url(#filter0_d_632_1398)\">\n <path\n d=\"M2.5 7C2.5 3.96243 4.96243 1.5 8 1.5H28C31.0376 1.5 33.5 3.96243 33.5 7V27C33.5 30.0376 31.0376 32.5 28 32.5H8C4.96243 32.5 2.5 30.0376 2.5 27V7Z\"\n stroke=\"#D6D6D6\"\n shape-rendering=\"crispEdges\"\n />\n <path\n d=\"M19.3333 23.6667C19.3333 23.6667 19.8995 23.5858 22.2426 21.2426C24.5858 18.8995 24.5858 15.1005 22.2426 12.7574C21.4125 11.9272 20.3995 11.3911 19.3333 11.1492M19.3333 23.6667H23.3333M19.3333 23.6667L19.3333 19.6667M16.6667 10.3335C16.6667 10.3335 16.1005 10.4143 13.7574 12.7575C11.4142 15.1006 11.4142 18.8996 13.7574 21.2428C14.5875 22.073 15.6005 22.609 16.6667 22.8509M16.6667 10.3335L12.6667 10.3333M16.6667 10.3335L16.6667 14.3333\"\n stroke=\"#424242\"\n stroke-width=\"1.33333\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_632_1398\"\n x=\"0\"\n y=\"0\"\n width=\"36\"\n height=\"36\"\n filterUnits=\"userSpaceOnUse\"\n color-interpolation-filters=\"sRGB\"\n >\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"1\" />\n <feGaussianBlur stdDeviation=\"1\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.0627451 0 0 0 0 0.0941176 0 0 0 0 0.156863 0 0 0 0.05 0\"\n />\n <feBlend\n mode=\"normal\"\n in2=\"BackgroundImageFix\"\n result=\"effect1_dropShadow_632_1398\"\n />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_632_1398\"\n result=\"shape\"\n />\n </filter>\n </defs>\n</svg>\n","<svg\n viewBox=\"0 0 800 255\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <rect width=\"800\" height=\"255\" fill=\"#141414\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M715.79 184.078C743.088 165.472 745.57 138.234 745.57 126.149C745.57 105.625 737.743 91.6218 733.353 85.1C723.999 71.6726 707.391 57.478 671.693 54.6008C665.585 54.0253 659.667 54.0253 653.558 54.0253C623.397 54.4089 606.979 61.3144 595.526 69.179C584.454 76.6599 566.319 93.7318 566.319 127.876C566.319 136.507 566.891 154.155 581.209 171.61C587.89 179.667 594.571 184.078 598.198 186.188C609.079 192.71 626.451 199.04 655.085 199.04C674.175 199.04 686.011 196.739 693.837 194.437C701.855 192.135 708.727 188.874 715.79 184.078ZM683.72 93.9236C688.683 98.3355 695.937 109.269 695.937 126.533C695.937 141.878 689.828 159.142 674.748 165.856C667.494 169.117 658.903 169.117 656.612 169.117C648.404 169.117 626.642 167.39 618.624 143.221C616.142 136.124 615.952 129.218 615.952 126.725C615.952 110.228 623.206 93.9236 639.05 87.21C644.968 84.7163 650.122 84.1409 656.422 84.1409C663.676 84.1409 667.303 85.1 670.739 86.2509C677.229 88.5527 681.811 92.0054 683.72 93.9236ZM538.789 172.569C552.533 156.457 553.106 134.397 553.106 128.259C553.106 120.97 552.724 103.706 541.27 87.21C533.253 75.5091 519.508 62.2736 488.201 59.5881C482.856 59.2045 477.511 59.0127 472.166 59.0127H395.617V194.437H481.138C494.692 194.437 499.655 193.478 506.527 191.751C514.736 189.641 520.844 186.38 523.708 184.846C531.725 180.242 536.498 175.447 538.789 172.569ZM493.546 98.5274C505.382 107.735 505.954 122.888 505.954 127.108C505.954 130.753 505.763 138.042 501.564 146.674C498.319 153.579 492.401 161.06 475.793 163.17C472.929 163.554 470.066 163.746 467.393 163.746H442.768V91.2382H465.866C465.997 91.2382 466.146 91.2376 466.311 91.2369C470.258 91.2204 483.836 91.1636 493.546 98.5274ZM372.621 194.437H228.685V59.0127H370.903V89.32H276.982V111.571H363.839V142.07H276.982V163.746H372.621V194.437ZM155.847 194.437H209.107L175.509 140.344C182.381 138.617 184.863 137.658 188.108 135.74C205.098 126.341 206.434 108.31 206.434 101.98C206.434 89.7037 202.044 81.6473 199.562 77.6191C188.681 60.3554 171.309 59.0127 153.174 59.0127H53.9082V194.437H102.396V145.139H127.976L155.847 194.437ZM156.228 95.2664C158.137 97.9519 158.328 101.021 158.328 102.172C158.328 103.706 158.137 106.776 155.656 109.845C152.601 113.489 147.829 114.64 138.666 114.64H102.396V89.7037H142.484C147.638 89.7037 152.983 90.4709 156.228 95.2664Z\"\n fill=\"white\"\n />\n</svg>\n","<svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <circle opacity=\"0.2\" cx=\"12\" cy=\"12\" r=\"12\" fill=\"#A6A9BA\" />\n <g clip-path=\"url(#clip0_1503_61903)\">\n <path\n d=\"M15.5999 15.5984L8.3999 8.39844\"\n stroke=\"#14181F\"\n stroke-opacity=\"0.5\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M15.5999 8.39844L8.3999 15.5985\"\n stroke=\"#14181F\"\n stroke-opacity=\"0.5\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_1503_61903\">\n <rect\n width=\"9.6\"\n height=\"9.6\"\n fill=\"white\"\n transform=\"translate(7.19995 7.19922)\"\n />\n </clipPath>\n </defs>\n</svg>\n","import { ReactNode, useState, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport InfoIcon from \"./icons/info.svg\";\nimport ShieldIcon from \"./icons/shield-tick.svg\";\nimport { useRedoCoverageClient } from \"../providers/redo-coverage-client\";\nimport FeaturedPackageCheckIcon from \"./icons/featured-package-check.svg\";\nimport FeaturedLaptopIcon from \"./icons/featured-laptop-2.svg\";\nimport FeaturedRefreshIcon from \"./icons/featured-refresh-cw-3.svg\";\nimport RedoLogo from \"./icons/logo.svg\";\nimport CloseIcon from \"./icons/modal-close-button.svg\"\n\n\ninterface RedoInfoModalProps {\n showInfoIcon?: boolean;\n onInfoClick?: () => void;\n infoCardImageUrl?: string;\n infoModalLogoUrl?: string;\n infoModalImageUrl?: string;\n infoModalContent?: ReactNode;\n}\n\nfunction useInjectStyle(styleContent: string) {\n useEffect(() => {\n const styleTag = document.createElement('style');\n styleTag.textContent = styleContent;\n document.head.appendChild(styleTag);\n return () => {\n if(styleTag?.parentElement) {\n styleTag.parentElement.removeChild(styleTag);\n }\n };\n }, [styleContent]);\n}\n\nconst Modal = ({ open, onClose, infoModalLogoUrl, infoModalImageUrl, modalContent }: \n{ \n open: boolean; \n onClose: () => void; \n infoModalLogoUrl?: string; \n infoModalImageUrl?: string;\n modalContent?: ReactNode;\n}) => {\n useInjectStyle( `\n ${fadeInKeyframes}\n ${slideInKeyframes}\n \n @media (max-width: 768px) {\n .redo-info-modal__container {\n flex-direction: column !important;\n align-items: stretch !important;\n overflow: auto !important;\n width: 95% !important;\n }\n \n .redo-info-modal__sideImageContainer {\n width: 100% !important;\n min-width: unset !important;\n max-height: 140px !important;\n overflow: hidden !important;\n }\n \n .redo-info-modal__sideImageContainer img {\n height: 140px !important;\n max-height: 140px !important;\n }\n \n .redo-info-modal__contentContainer {\n width: 100% !important;\n box-sizing: border-box !important;\n }\n }\n `);\n\n if (!open) return <></>;\n\n const fullModalContent = (\n <div className=\"redo-info-modal__backgroundContainer\" style={{\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 99999,\n transform: 'translateZ(0)',\n opacity: 1,\n transition: 'opacity 0.2s ease-in-out',\n animation: 'fadeIn 0.2s ease-in-out'\n }} onClick={onClose}>\n <div className=\"redo-info-modal__container\" style={{\n backgroundColor: 'white',\n borderRadius: '8px',\n width: '700px',\n maxWidth: '900px',\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n zIndex: 100000,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'left',\n maxHeight: '95%',\n boxShadow: '0 4px 8px 0 rgba(0, 0, 0, 0.2)',\n opacity: 1,\n transition: 'opacity 0.2s ease-in-out, transform 0.2s ease-in-out',\n animation: 'slideIn 0.2s ease-in-out forwards',\n minHeight: '100px',\n }} onClick={e => e.stopPropagation()}>\n <button\n className=\"redo-info-modal__closeButton\"\n onClick={onClose}\n style={{\n position: 'absolute',\n right: '16px',\n top: '16px',\n border: 'none',\n background: 'none',\n fontSize: '20px',\n cursor: 'pointer',\n padding: '4px',\n zIndex: 1\n }}\n >\n <CloseIcon />\n </button>\n {infoModalImageUrl ? (\n <div className=\"redo-info-modal__sideImageContainer\" style={{\n minWidth: '200px',\n width: '200px',\n backgroundImage: `url(${infoModalImageUrl})`,\n backgroundSize: 'cover',\n backgroundPosition: 'center center',\n borderTopLeftRadius: '8px',\n borderBottomLeftRadius: '8px',\n alignSelf: 'stretch',\n }}>\n </div> \n ) : null}\n {modalContent ? modalContent : (\n <div className=\"redo-info-modal__contentContainer\" style={{\n padding: '24px',\n fontFamily: 'Inter, \"Helvetica Neue\", Arial, sans-serif',\n }}>\n <div className=\"redo-info-modal__logoContainer\" style={{\n width: '100%',\n height: '100%',\n display: 'block',\n marginBottom: '8px'\n }}>\n {infoModalLogoUrl ? (\n <img src={infoModalLogoUrl} className=\"redo-info-modal__logo\" style={{\n width: 'auto',\n height: '112px',\n display: 'block',\n }}/>\n ) : <RedoLogo width=\"112px\" height=\"112px\" display=\"block\"/>}\n </div>\n <p style={{ \n fontSize: '20px', \n fontWeight: '600'\n }} className=\"redo-info-modal__title\">\n Checkout with confidence\n </p>\n \n <p style={{ \n fontSize: '14px',\n color: '#666',\n marginBottom: '24px'\n }} className=\"redo-info-modal__description\">\n Shop with confidence, knowing your purchases are protected every step of the way.\n </p>\n\n <div className=\"redo-info-modal__benefitsContainer\" style={{ marginBottom: '24px' }}>\n <div className=\"redo-info-modal__benefit\" style={{ marginBottom: '16px' }}>\n <div className=\"redo-info-modal__benefitIconContainer\" style={{ display: 'flex', flexDirection: 'row', alignItems: 'flex-start', justifyContent: 'flex-start', gap: '10px' }}>\n <div className=\"redo-info-modal__benefitIcon\" style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', width: '36px', height: '36px' }}>\n <FeaturedRefreshIcon height=\"32\" width=\"32\" />\n </div>\n <div className=\"redo-info-modal__benefitTextContainer\" style={{ display: 'flex', flexDirection: 'column', alignItems: 'flex-start' }}>\n <p className=\"redo-info-modal__benefitText\" style={{ fontSize: '16px', fontWeight: '600', marginBottom: '4px' }}>\n Free returns & exchanges\n </p>\n <p className=\"redo-info-modal__benefitSmallText\" style={{ fontSize: '12px', color: '#666' }}>\n Return or exchange your items for free. If you're not completely satisfied, we've got you covered.\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"redo-info-modal__benefit\" style={{ marginBottom: '16px' }}>\n <div className=\"redo-info-modal__benefitIconContainer\" style={{ display: 'flex', flexDirection: 'row', alignItems: 'flex-start', gap: '10px' }}>\n <div className=\"redo-info-modal__benefitIcon\" style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', width: '36px', height: '36px' }}>\n <FeaturedPackageCheckIcon height=\"32\" width=\"32\" />\n </div>\n <div className=\"redo-info-modal__benefitTextContainer\" style={{ display: 'flex', flexDirection: 'column', alignItems: 'flex-start' }}>\n <p className=\"redo-info-modal__benefitText\" style={{ \n fontSize: '16px',\n fontWeight: '600',\n marginBottom: '4px'\n }}>\n Package protection\n </p>\n <p className=\"redo-info-modal__benefitSmallText\" style={{ \n fontSize: '12px',\n color: '#666'\n }}>\n Rest assured, if your package is lost, stolen, or damaged, we've got you covered.\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"redo-info-modal__benefit\" style={{ marginBottom: '16px' }}>\n <div className=\"redo-info-modal__benefitIconContainer\" style={{ display: 'flex', flexDirection: 'row', alignItems: 'flex-start', gap: '10px' }}>\n <div className=\"redo-info-modal__benefitIcon\" style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', width: '36px', height: '36px' }}>\n <FeaturedLaptopIcon height=\"32\" width=\"32\" />\n </div>\n <div className=\"redo-info-modal__benefitTextContainer\" style={{ display: 'flex', flexDirection: 'column', alignItems: 'flex-start' }}>\n <p className=\"redo-info-modal__benefitText\" style={{ \n fontSize: '16px',\n fontWeight: '600',\n marginBottom: '4px'\n }}>\n Easy return portal\n </p>\n <p className=\"redo-info-modal__benefitSmallText\" style={{ \n fontSize: '12px',\n color: '#666'\n }}> \n Skip all the back and forth, and submit your return in a few clicks.\n </p>\n </div>\n </div>\n </div>\n </div>\n\n <p className=\"redo-info-modal__footerText\" style={{ \n fontSize: '12px',\n color: '#666',\n }}>\n By purchasing Redo, you agree and have read the{' '}\n <a \n href=\"https://www.getredo.com/privacy-policy\" \n target=\"_blank\" \n rel=\"noopener noreferrer\" \n style={{ color: '#000', textDecoration: 'underline' }}\n >Privacy Policy</a> and{' '}\n <a \n href=\"https://www.getredo.com/terms-conditions\" \n target=\"_blank\" \n rel=\"noopener noreferrer\" \n style={{ color: '#000', textDecoration: 'underline' }}\n >Terms and Conditions</a>.\n {' '}Redo is subject to Merchant's Return Policy.\n </p>\n </div>\n )}\n </div>\n </div>\n );\n\n return createPortal(fullModalContent, document.body);\n};\n\nconst RedoInfoCard = ({ \n showInfoIcon = true, \n onInfoClick,\n infoCardImageUrl,\n infoModalLogoUrl,\n infoModalImageUrl,\n infoModalContent,\n}: RedoInfoModalProps) => {\n const { price, eligible } = useRedoCoverageClient();\n const [isModalOpen, setIsModalOpen] = useState(false);\n\n const handleInfoClick = () => {\n if (onInfoClick) {\n onInfoClick();\n } else {\n setIsModalOpen(true);\n }\n };\n\n if (!eligible) { \n return <></>;\n }\n\n return (\n <>\n <div className=\"redo-info-card__container\" data-target=\"info-card-container\" style={{\n display: 'flex',\n borderRadius: '4px',\n padding: '12px',\n alignItems: 'center',\n gap: '12px',\n marginTop: '8px'\n }}>\n <div className=\"redo-info-card__imageContainer\" style={{\n width: '44px',\n height: '44px',\n borderRadius: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexShrink: 0,\n }}>\n {infoCardImageUrl ? (\n <img src={infoCardImageUrl} alt=\"Redo Info\" className=\"redo-info-card__image\" style={{\n width: '100%',\n height: '100%',\n objectFit: 'contain'\n }} />\n ) : (\n <ShieldIcon style={{\n width: '100%',\n height: '100%',\n color: 'black',\n display: 'block',\n viewBox: '0 0 24 24',\n }}/>\n )}\n </div>\n \n <div className=\"redo-info-card__content\" data-target=\"text-and-buttons-container\" style={{\n flex: 1\n }}>\n <div className=\"redo-info-card__textWrapper\" style={{\n display: 'flex',\n flexDirection: 'column',\n }}>\n <span className=\"redo-info-card__title\" data-target=\"toggle-label\" style={{\n color: '#000000',\n fontSize: '14px',\n fontWeight: 600,\n display: 'flex',\n alignItems: 'center',\n gap: '5px',\n verticalAlign: 'middle'\n }}>\n Checkout+\n {showInfoIcon && (\n <span className=\"redo-info-card__infoIconWrapper\" data-target=\"toggle-info\">\n <button\n className=\"redo-info-card__infoButton\"\n data-target=\"toggle-info-button\"\n onClick={handleInfoClick}\n type=\"button\"\n style={{\n border: 'none',\n background: 'none',\n padding: 0,\n cursor: 'pointer',\n color: '#969696',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }}\n >\n <InfoIcon \n style={{\n width: '16px',\n height: '16px',\n verticalAlign: 'middle'\n }}\n className=\"redo-info-card__infoIcon\"\n />\n </button>\n </span>\n )}\n </span>\n <p className=\"redo-info-card__subtext\" data-target=\"toggle-subtext\" style={{\n color: '#000000',\n fontSize: '12px',\n lineHeight: '16px'\n }}>\n Free Returns + Package Protection\n </p>\n </div>\n </div>\n \n <div className=\"redo-info-card__priceContainer\">\n <p style={{\n color: '#000000',\n fontSize: '14px',\n fontWeight: 400,\n }} className=\"redo-info-card__price\" data-target=\"price\">${price}</p>\n </div>\n </div>\n \n {!onInfoClick && (\n <Modal\n open={isModalOpen}\n onClose={() => setIsModalOpen(false)}\n infoModalLogoUrl={infoModalLogoUrl}\n infoModalImageUrl={infoModalImageUrl}\n modalContent={infoModalContent}\n />\n )}\n </>\n );\n};\n\nconst fadeInKeyframes = `\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n`;\n\nconst slideInKeyframes = `\n @keyframes slideIn {\n from {\n opacity: 0;\n transform: translate(-50%, -48%);\n }\n to {\n opacity: 1;\n transform: translate(-50%, -50%);\n }\n }\n`;\n\n\n\nexport { RedoInfoCard };"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","create","Iterator","verb","Symbol","iterator","v","op","TypeError","pop","push","__spreadArray","to","from","pack","ar","l","Array","slice","concat","SuppressedError","process","env","NODE_ENV","React","require$$0","REACT_ELEMENT_TYPE","for","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_OFFSCREEN_TYPE","MAYBE_ITERATOR_SYMBOL","ReactSharedInternals","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","error","format","_len2","args","_key2","level","ReactDebugCurrentFrame","stack","getStackAddendum","argsWithFormat","map","item","String","unshift","Function","console","printWarning","REACT_MODULE_REFERENCE","getContextName","type","displayName","getComponentNameFromType","tag","name","$$typeof","_context","outerType","innerType","wrapperName","functionName","getWrappedName","render","outerName","lazyComponent","payload","_payload","init","_init","x","prevLog","prevInfo","prevWarn","prevError","prevGroup","prevGroupCollapsed","prevGroupEnd","disabledDepth","disabledLog","__reactDisabledLog","prefix","ReactCurrentDispatcher","describeBuiltInComponentFrame","source","ownerFn","undefined","Error","match","trim","componentFrameCache","reentry","PossiblyWeakMap","WeakMap","Map","describeNativeComponentFrame","fn","construct","control","frame","get","previousDispatcher","previousPrepareStackTrace","prepareStackTrace","current","log","info","warn","group","groupCollapsed","groupEnd","props","configurable","enumerable","writable","defineProperties","disableLogs","Fake","defineProperty","set","Reflect","sample","sampleLines","split","controlLines","c","_frame","replace","includes","reenableLogs","syntheticFrame","describeUnknownElementTypeFrameInDEV","isReactComponent","loggedTypeFailures","setCurrentlyValidatingElement","element","owner","_owner","_source","setExtraStackFrame","isArrayImpl","isArray","a","testStringCoercion","checkKeyStringCoercion","willCoercionThrow","toStringTag","constructor","typeName","specialPropKeyWarningShown","specialPropRefWarningShown","ReactCurrentOwner","RESERVED_PROPS","key","ref","__self","__source","jsxDEV","config","maybeKey","self","propName","getter","getOwnPropertyDescriptor","isReactWarning","hasValidKey","hasValidRef","warnIfStringRefCannotBeAutoConverted","defaultProps","warnAboutAccessingKey","defineKeyPropWarningGetter","warnAboutAccessingRef","defineRefPropWarningGetter","_store","freeze","ReactElement","propTypesMisspellWarningShown","ReactCurrentOwner$1","ReactDebugCurrentFrame$1","setCurrentlyValidatingElement$1","isValidElement","object","getDeclarationErrorAddendum","ownerHasKeyUseWarning","validateExplicitKey","parentType","validated","currentComponentErrorInfo","parentName","getCurrentComponentErrorInfo","childOwner","validateChildKeys","node","child","iteratorFn","maybeIterable","maybeIterator","getIteratorFn","entries","validatePropTypes","propTypes","typeSpecs","values","location","componentName","has","bind","typeSpecName","error$1","err","ex","message","checkPropTypes","PropTypes","getDefaultProps","isReactClassApproved","didWarnAboutKeySpread","jsxWithValidation","isStaticChildren","validType","getModuleId","isValidElementType","keys","typeString","children","filter","k","beforeExample","join","fragment","validateFragmentProps","jsx","jsxs","reactJsxRuntime_development","Fragment","RedoErrorType","jsxRuntimeModule","exports","m","q","b","d","h","reactJsxRuntime_production_min","require$$1","REDO_PUBLIC_API_HOSTNAME","REDO_REQUIRED_HOSTNAMES","isCartWithActionsDocs","cart","lines","linesAdd","getCartLines","isOptimisticCart","nodes","_a","edges","edge","isOptimistic","addProductToCartIfNeeded","_b","fetcher","waitCartIdle","cartInfoToEnable","addProductToCart","_c","redoProductsInCart","cartLine","merchandise","product","vendor","correctRedoProductInCart","id","variantId","quantity","removeLinesFromCart","lineIds","formInput","action","CartForm","ACTIONS","LinesRemove","inputs","linesRemove","_d","submit","INPUT_NAME","JSON","stringify","method","removeProductFromCartIfNeeded","redoProductLine","merchandiseId","LinesAdd","setCartRedoEnabledAttribute","enabled","redoCartAttribute","cartAttribute","toString","existingAttributes","attributes","existingAttributesMap","attr","conciergeConversationIds","stored","localStorage","getItem","conversationIdsWithExpiry","parse","now_1","Date","now","validConversationIds","expiresAt","conversationId","getConciergeConversationIdsFromStorage","updatedAttributes","AttributesUpdateInput","cartAttributesUpdate","_path","_path2","RedoContext","createContext","loading","RedoProvider","storeId","useState","setCartInfoToEnable","_e","setLoading","_f","errors","setErrors","logUniqueError","newError","find","useEffect","cartLines","fetch","headers","lineItems","originalPrice","amount","price","currency","currencyCode","priceTotal","cost","totalAmount","_g","_h","_j","_k","variant","_l","customer","buyerIdentity","country","countryCode","res","status","ApiServerError","json","context","_m","ApiBadRequest","ApiUnknownError","coverageProducts","contextVal","_jsx","Provider","useRedoCoverageClient","redoContext","useContext","opts","_this","useFetcher","resolveRef","useRef","promiseRef","resetResolver","useCallback","_i","state","data","useFetcherWithPromise","useWaitCartIdle","enable","disable","eligible","cartProduct","priceToEnable","selectedVariant","Number","_extends","r","SvgCircleSpinner","createElement","xmlns","width","height","fill","opacity","attributeName","dur","repeatCount","executeWithTimeout","promise_1","timeoutMs_1","promise","timeoutMs","race","setTimeout","getButtonsToShow","redoCoverageClient","html","ui","applyButtonVariables","subtotalAmount","cartContainsRedo","some","cartItem","combinedPrice","Intl","NumberFormat","style","replaceAll","findAncestor","searchEl","findFn","parentElement","RedoCheckoutButtons","checkoutUrl","checkoutButtonsUI","setCheckoutButtonsUI","buttonPending","setButtonPending","buttons","_jsxs","onClick","clickedElement","target","dataset","isCoverageButton","el","isNonCoverageButton","isCoverage","e_1","error_1","window","href","position","css","dangerouslySetInnerHTML","__html","transition","top","left","display","justifyContent","alignItems","zIndex","CircleSpinner","useLoad","deps","pending","setState","abortController","AbortController","signal","code","abort","SvgInfo","viewBox","cx","cy","stroke","className","strokeMiterlimit","strokeWidth","_defs","SvgShieldTick","strokeLinecap","strokeLinejoin","SvgFeaturedPackageCheck","shapeRendering","colorInterpolationFilters","filterUnits","floodOpacity","in","dy","stdDeviation","in2","operator","SvgFeaturedLaptop2","SvgFeaturedRefreshCw3","_circle","SvgLogo","fillRule","clipRule","SvgModalCloseButton","strokeOpacity","clipPath","Modal","styleContent","open","onClose","infoModalLogoUrl","infoModalImageUrl","modalContent","fadeInKeyframes","slideInKeyframes","styleTag","document","textContent","head","appendChild","removeChild","fullModalContent","right","bottom","backgroundColor","transform","animation","borderRadius","maxWidth","flexDirection","maxHeight","boxShadow","minHeight","stopPropagation","border","background","fontSize","cursor","padding","CloseIcon","minWidth","backgroundImage","backgroundSize","backgroundPosition","borderTopLeftRadius","borderBottomLeftRadius","alignSelf","fontFamily","marginBottom","src","RedoLogo","fontWeight","color","gap","FeaturedRefreshIcon","FeaturedPackageCheckIcon","FeaturedLaptopIcon","rel","textDecoration","createPortal","RedoInfoCard","showInfoIcon","onInfoClick","infoCardImageUrl","infoModalContent","isModalOpen","setIsModalOpen","_Fragment","marginTop","flexShrink","alt","objectFit","ShieldIcon","flex","verticalAlign","InfoIcon","lineHeight"],"mappings":"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","x_google_ignoreList":[0,1,3,4]}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { CartReturn, OptimisticCart } from '@shopify/hydrogen';
|
|
2
|
+
import { ReactNode, DependencyList } from 'react';
|
|
3
|
+
import { CartWithActionsDocs } from '@shopify/hydrogen-react/dist/types/cart-types';
|
|
4
|
+
import { ProductVariant } from '@shopify/hydrogen-react/storefront-api-types';
|
|
5
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
type CartProductVariantFragment = Omit<ProductVariant, "components" | "metafields" | "quantityPriceBreaks" | "quantityRule" | "requiresComponents" | "requiresShipping" | "storeAvailability" | "taxable" | "weightUnit">;
|
|
8
|
+
type CartAttributeKey = string;
|
|
9
|
+
interface RedoCoverageClient {
|
|
10
|
+
enable(): Promise<boolean>;
|
|
11
|
+
disable(): Promise<boolean>;
|
|
12
|
+
get loading(): boolean;
|
|
13
|
+
get enabled(): boolean;
|
|
14
|
+
get eligible(): boolean;
|
|
15
|
+
get price(): number | undefined;
|
|
16
|
+
get storeId(): string | undefined;
|
|
17
|
+
get cart(): CartReturn | CartWithActionsDocs | OptimisticCart | undefined;
|
|
18
|
+
get cartProduct(): CartProductVariantFragment | undefined;
|
|
19
|
+
get cartAttribute(): CartAttributeKey | undefined;
|
|
20
|
+
get errors(): RedoError[] | undefined;
|
|
21
|
+
}
|
|
22
|
+
type CartInfoToEnable = {
|
|
23
|
+
productId: string;
|
|
24
|
+
variantId: string;
|
|
25
|
+
cartAttribute: CartAttributeKey;
|
|
26
|
+
selectedVariant: CartProductVariantFragment;
|
|
27
|
+
};
|
|
28
|
+
type RedoContextValue = {
|
|
29
|
+
enabled: boolean;
|
|
30
|
+
loading: boolean;
|
|
31
|
+
storeId?: string;
|
|
32
|
+
cartInfoToEnable?: CartInfoToEnable;
|
|
33
|
+
cart?: CartReturn | CartWithActionsDocs | OptimisticCart;
|
|
34
|
+
errors?: RedoError[];
|
|
35
|
+
};
|
|
36
|
+
declare enum RedoErrorType {
|
|
37
|
+
ApiBadRequest = "API_BAD_REQUEST",
|
|
38
|
+
ApiServerError = "API_SERVER_ERROR",
|
|
39
|
+
ApiUnknownError = "API_UNKNOWN_ERROR"
|
|
40
|
+
}
|
|
41
|
+
type RedoError = {
|
|
42
|
+
type: RedoErrorType;
|
|
43
|
+
message: string;
|
|
44
|
+
context: any;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
declare const RedoProvider: ({ cart, storeId, children }: {
|
|
48
|
+
cart: CartReturn | CartWithActionsDocs | OptimisticCart;
|
|
49
|
+
storeId: string;
|
|
50
|
+
children: ReactNode;
|
|
51
|
+
}) => ReactNode;
|
|
52
|
+
declare const useRedoCoverageClient: () => RedoCoverageClient;
|
|
53
|
+
|
|
54
|
+
declare const RedoCheckoutButtons: (props: {
|
|
55
|
+
children?: ReactNode;
|
|
56
|
+
onClick?: (enabled: boolean) => void;
|
|
57
|
+
}) => react_jsx_runtime.JSX.Element;
|
|
58
|
+
|
|
59
|
+
declare const REDO_REQUIRED_HOSTNAMES: string[];
|
|
60
|
+
|
|
61
|
+
interface Loader<T> {
|
|
62
|
+
(abort: AbortSignal): Promise<T>;
|
|
63
|
+
}
|
|
64
|
+
interface LoadState<T> {
|
|
65
|
+
error?: any;
|
|
66
|
+
pending: boolean;
|
|
67
|
+
value?: T;
|
|
68
|
+
}
|
|
69
|
+
declare function useLoad<T>(fn: Loader<T>, deps: DependencyList): LoadState<T>;
|
|
70
|
+
|
|
71
|
+
interface RedoInfoModalProps {
|
|
72
|
+
showInfoIcon?: boolean;
|
|
73
|
+
onInfoClick?: () => void;
|
|
74
|
+
infoCardImageUrl?: string;
|
|
75
|
+
infoModalLogoUrl?: string;
|
|
76
|
+
infoModalImageUrl?: string;
|
|
77
|
+
infoModalContent?: ReactNode;
|
|
78
|
+
}
|
|
79
|
+
declare const RedoInfoCard: ({ showInfoIcon, onInfoClick, infoCardImageUrl, infoModalLogoUrl, infoModalImageUrl, infoModalContent, }: RedoInfoModalProps) => react_jsx_runtime.JSX.Element;
|
|
80
|
+
|
|
81
|
+
export { type CartAttributeKey, type CartInfoToEnable, type CartProductVariantFragment, type LoadState, type Loader, REDO_REQUIRED_HOSTNAMES, RedoCheckoutButtons, type RedoContextValue, type RedoCoverageClient, type RedoError, RedoErrorType, RedoInfoCard, RedoProvider, useLoad, useRedoCoverageClient };
|