@plasmicpkgs/commerce-shopify 0.0.166 → 0.0.168
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commerce-shopify.cjs.development.js +59 -49
- package/dist/commerce-shopify.cjs.development.js.map +1 -1
- package/dist/commerce-shopify.cjs.production.min.js +1 -1
- package/dist/commerce-shopify.cjs.production.min.js.map +1 -1
- package/dist/commerce-shopify.esm.js +59 -49
- package/dist/commerce-shopify.esm.js.map +1 -1
- package/dist/utils/normalize.d.ts +1 -1
- package/package.json +4 -4
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function n(n){return n&&"object"==typeof n&&"default"in n?n.default:n}Object.defineProperty(exports,"__esModule",{value:!0});var e,t,r=n(require("@plasmicapp/host/registerGlobalContext")),o=require("react"),i=n(o),a=require("@plasmicpkgs/commerce"),u=n(require("js-cookie")),c=n(require("debounce"));function s(){s=function(){return e};var n,e={},t=Object.prototype,r=t.hasOwnProperty,o=Object.defineProperty||function(n,e,t){n[e]=t.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",u=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function l(n,e,t){return Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}),n[e]}try{l({},"")}catch(n){l=function(n,e,t){return n[e]=t}}function d(n,e,t,r){var i=Object.create((e&&e.prototype instanceof v?e:v).prototype),a=new q(r||[]);return o(i,"_invoke",{value:P(n,t,a)}),i}function p(n,e,t){try{return{type:"normal",arg:n.call(e,t)}}catch(n){return{type:"throw",arg:n}}}e.wrap=d;var h="suspendedStart",f="executing",m="completed",g={};function v(){}function y(){}function F(){}var b={};l(b,a,(function(){return this}));var k=Object.getPrototypeOf,w=k&&k(k(O([])));w&&w!==t&&r.call(w,a)&&(b=w);var C=F.prototype=v.prototype=Object.create(b);function I(n){["next","throw","return"].forEach((function(e){l(n,e,(function(n){return this._invoke(e,n)}))}))}function x(n,e){function t(o,i,a,u){var c=p(n[o],n,i);if("throw"!==c.type){var s=c.arg,l=s.value;return l&&"object"==typeof l&&r.call(l,"__await")?e.resolve(l.__await).then((function(n){t("next",n,a,u)}),(function(n){t("throw",n,a,u)})):e.resolve(l).then((function(n){s.value=n,a(s)}),(function(n){return t("throw",n,a,u)}))}u(c.arg)}var i;o(this,"_invoke",{value:function(n,r){function o(){return new e((function(e,o){t(n,r,e,o)}))}return i=i?i.then(o,o):o()}})}function P(e,t,r){var o=h;return function(i,a){if(o===f)throw new Error("Generator is already running");if(o===m){if("throw"===i)throw a;return{value:n,done:!0}}for(r.method=i,r.arg=a;;){var u=r.delegate;if(u){var c=E(u,r);if(c){if(c===g)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===h)throw o=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=f;var s=p(e,t,r);if("normal"===s.type){if(o=r.done?m:"suspendedYield",s.arg===g)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(o=m,r.method="throw",r.arg=s.arg)}}}function E(e,t){var r=t.method,o=e.iterator[r];if(o===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=n,E(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),g;var i=p(o,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,g;var a=i.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=n),t.delegate=null,g):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,g)}function A(n){var e={tryLoc:n[0]};1 in n&&(e.catchLoc=n[1]),2 in n&&(e.finallyLoc=n[2],e.afterLoc=n[3]),this.tryEntries.push(e)}function D(n){var e=n.completion||{};e.type="normal",delete e.arg,n.completion=e}function q(n){this.tryEntries=[{tryLoc:"root"}],n.forEach(A,this),this.reset(!0)}function O(e){if(e||""===e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function t(){for(;++o<e.length;)if(r.call(e,o))return t.value=e[o],t.done=!1,t;return t.value=n,t.done=!0,t};return i.next=i}}throw new TypeError(typeof e+" is not iterable")}return y.prototype=F,o(C,"constructor",{value:F,configurable:!0}),o(F,"constructor",{value:y,configurable:!0}),y.displayName=l(F,c,"GeneratorFunction"),e.isGeneratorFunction=function(n){var e="function"==typeof n&&n.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,F):(n.__proto__=F,l(n,c,"GeneratorFunction")),n.prototype=Object.create(C),n},e.awrap=function(n){return{__await:n}},I(x.prototype),l(x.prototype,u,(function(){return this})),e.AsyncIterator=x,e.async=function(n,t,r,o,i){void 0===i&&(i=Promise);var a=new x(d(n,t,r,o),i);return e.isGeneratorFunction(t)?a:a.next().then((function(n){return n.done?n.value:a.next()}))},I(C),l(C,c,"Generator"),l(C,a,(function(){return this})),l(C,"toString",(function(){return"[object Generator]"})),e.keys=function(n){var e=Object(n),t=[];for(var r in e)t.push(r);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=O,q.prototype={constructor:q,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(D),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},stop:function(){this.done=!0;var n=this.tryEntries[0].completion;if("throw"===n.type)throw n.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function o(r,o){return u.type="throw",u.arg=e,t.next=r,o&&(t.method="next",t.arg=n),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),s=r.call(a,"finallyLoc");if(c&&s){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(n,e){for(var t=this.tryEntries.length-1;t>=0;--t){var o=this.tryEntries[t];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===n||"continue"===n)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=n,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,g):this.complete(a)},complete:function(n,e){if("throw"===n.type)throw n.arg;return"break"===n.type||"continue"===n.type?this.next=n.arg:"return"===n.type?(this.rval=this.arg=n.arg,this.method="return",this.next="end"):"normal"===n.type&&e&&(this.next=e),g},finish:function(n){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.finallyLoc===n)return this.complete(t.completion,t.afterLoc),D(t),g}},catch:function(n){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.tryLoc===n){var r=t.completion;if("throw"===r.type){var o=r.arg;D(t)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:O(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=n),g}},e}function l(n,e,t,r,o,i,a){try{var u=n[i](a),c=u.value}catch(n){return void t(n)}u.done?e(c):Promise.resolve(c).then(r,o)}function d(n){return function(){var e=this,t=arguments;return new Promise((function(r,o){var i=n.apply(e,t);function a(n){l(i,r,o,a,u,"next",n)}function u(n){l(i,r,o,a,u,"throw",n)}a(void 0)}))}}function p(){return(p=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n}).apply(this,arguments)}function h(n,e){if(null==n)return{};var t,r,o={},i=Object.keys(n);for(r=0;r<i.length;r++)e.indexOf(t=i[r])>=0||(o[t]=n[t]);return o}function f(n,e){var t;return n=null!=(t=n)?t:[{message:"Failed to fetch Shopify API"}],new a.FetcherError({errors:n,status:e})}function m(n){return(e=e||d(s().mark((function n(e){return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e.json();case 2:return n.abrupt("return",f(n.sent.errors,e.status));case 4:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var g,v=function(n){return(t=t||d(s().mark((function n(e){var t,r,o;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!e.ok){n.next=9;break}return n.next=3,e.json();case 3:if(r=(t=n.sent).data,!(o=t.errors)||!o.length){n.next=8;break}throw f(o,e.status);case 8:return n.abrupt("return",r);case 9:return n.next=11,m(e);case 11:throw n.sent;case 12:case"end":return n.stop()}}),n)})))).apply(this,arguments)},y=function(n){var e=n.brandId,t=n.search,r=n.categoryId,o=n.locale,i=n.count,a="",u=t+"*";return t&&(a+="product_type:"+u+" OR title:"+u+" OR tag:"+u),e&&(a+=(t?"AND ":"")+"vendor:"+e),p({categoryId:r,query:a},function(n,e){void 0===e&&(e=!1);var t={};switch(n){case"price-asc":t={sortKey:"PRICE",reverse:!1};break;case"price-desc":t={sortKey:"PRICE",reverse:!0};break;case"trending-desc":t={sortKey:"BEST_SELLING",reverse:!1};break;case"latest-desc":t={sortKey:e?"CREATED":"CREATED_AT",reverse:!0}}return t}(n.sort,!!r),o&&{locale:o},{first:i})},F=function(n){return null!=n?n:u.get("shopify_checkoutId")},b="\n mutation checkoutCreate($input: CheckoutCreateInput = {}) {\n checkoutCreate(input: $input) {\n checkoutUserErrors {\n code\n field\n message\n }\n checkout {\n ...checkoutDetails\n }\n }\n }\n\n \n fragment checkoutDetails on Checkout {\n id\n webUrl\n subtotalPriceV2 {\n amount\n currencyCode\n }\n totalTaxV2 {\n amount\n currencyCode\n }\n totalPriceV2 {\n amount\n currencyCode\n }\n completedAt\n createdAt\n taxesIncluded\n lineItems(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n variant {\n id\n sku\n title\n selectedOptions {\n name\n value\n }\n image {\n originalSrc\n altText\n width\n height\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n product {\n id\n handle\n }\n }\n quantity\n }\n }\n }\n }\n\n",k=function(n,e){return(g=g||d(s().mark((function n(e,t){var r,o,i;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e({query:b,variables:{input:{lineItems:t}}});case 2:return(o=null==(r=n.sent.checkoutCreate)?void 0:r.checkout)&&(u.set("shopify_checkoutId",null==o?void 0:o.id,i={expires:30,sameSite:"none",secure:!0}),null!=o&&o.webUrl&&u.set("shopify_checkoutUrl",o.webUrl,i)),n.abrupt("return",r);case 7:case"end":return n.stop()}}),n)})))).apply(this,arguments)},w={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",burgandy:"#800020",burgundy:"#800020",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",green:"#008000",greenyellow:"#ADFF2F",grey:"#808080",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",spacegrey:"#65737e",spacegray:"#65737e",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"},C=["originalSrc"],I=["id","title","vendor","images","variants","description","descriptionHtml","handle","priceRange","options","metafields"],x=function(n){return{value:+n.amount,currencyCode:n.currencyCode}},P=function(n){return"Title"===n.name},E=function(n){var e=n.name,t=n.values;return{__typename:"MultipleChoiceOption",id:n.id,displayName:e.toLowerCase(),values:t.map((function(n){var t={label:n};if(e.match(/colou?r/gi)){var r=w[n.toLowerCase().replace(/ /g,"")];r&&(t=p({},t,{hexColors:[r]}))}return t}))}},A=function(n){var e=n.edges;return null==e?void 0:e.map((function(n){var e=n.node,t=e.id,r=e.selectedOptions,o=e.sku,i=e.title,a=e.priceV2,u=e.compareAtPriceV2,c=e.requiresShipping,s=e.availableForSale;return{id:t,name:r.some((function(n){return!P(n)}))?i:"Default variant",sku:null!=o?o:t,price:+a.amount,listPrice:+(null==u?void 0:u.amount),requiresShipping:c,availableForSale:s,options:r.map((function(n){return E({id:t,name:n.name,values:[n.value]})}))}}))};function D(n){var e,t,r=n.id,o=n.title,i=n.vendor,a=n.images,u=n.variants,c=n.description,s=n.descriptionHtml,l=n.handle,d=n.priceRange,f=n.options,m=h(n,I);return p({id:r,name:o,vendor:i,path:"/"+l,slug:null==l?void 0:l.replace(/^\/+|\/+$/g,""),price:x(null==d?void 0:d.minVariantPrice),images:(e=a,t=e.edges,null==t?void 0:t.map((function(n){var e=n.node;return p({url:e.originalSrc},h(e,C))}))),variants:u?A(u):[],options:f?f.filter((function(n){return!P(n)})).map((function(n){return E(n)})):[]},c&&{description:c},s&&{descriptionHtml:s},m)}function q(n){var e,t,r,o,i,a,u=n.node,c=u.title,s=u.variant,l=u.quantity;return{id:u.id,variantId:String(null==s?void 0:s.id),productId:String(null==s?void 0:s.product.id),name:""+c,quantity:l,variant:{id:String(null==s?void 0:s.id),sku:null!=(e=null==s?void 0:s.sku)?e:"",name:null==s?void 0:s.title,image:{url:(null==s||null==(t=s.image)?void 0:t.originalSrc)||"/product-img-placeholder.svg"},requiresShipping:null!=(r=null==s?void 0:s.requiresShipping)&&r,price:null==s||null==(o=s.priceV2)?void 0:o.amount,listPrice:null==s||null==(i=s.compareAtPriceV2)?void 0:i.amount},path:String(null==s||null==(a=s.product)?void 0:a.handle),discounts:[],options:"Default Title"==(null==s?void 0:s.title)?[]:null==s?void 0:s.selectedOptions}}var O=function(n){var e=n.handle;return{id:n.id,name:n.title,slug:e,path:"/"+e,isEmpty:0===n.products.edges.length}},S=function(n,e){switch(n){case"UNIDENTIFIED_CUSTOMER":e="Cannot find an account that matches the provided credentials"}return e},V=function(n){if(function(n){if(n&&n.length)throw new a.ValidationError({errors:n.map((function(n){var e=n.code;return{code:null!=e?e:"validation_error",message:S(e,n.message)}}))})}(null==n?void 0:n.checkoutUserErrors),null==n||!n.checkout)throw new a.CommerceError({message:"Missing checkout object from response"});return{id:(e=null==n?void 0:n.checkout).id,url:e.webUrl,customerId:"",email:"",createdAt:e.createdAt,currency:{code:null==(t=e.totalPriceV2)?void 0:t.currencyCode},taxesIncluded:e.taxesIncluded,lineItems:null==(r=e.lineItems)?void 0:r.edges.map(q),lineItemsSubtotalPrice:+(null==(o=e.subtotalPriceV2)?void 0:o.amount),subtotalPrice:+(null==(i=e.subtotalPriceV2)?void 0:i.amount),totalPrice:+(null==(u=e.totalPriceV2)?void 0:u.amount),discounts:[]};var e,t,r,o,i,u},B="\n query getAllProductVendors($first: Int = 250, $cursor: String) {\n products(first: $first, after: $cursor) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n vendor\n }\n cursor\n }\n }\n }\n",$={fetchOptions:{query:'\n query getAllProducts(\n $first: Int = 250\n $query: String = ""\n $sortKey: ProductSortKeys = RELEVANCE\n $reverse: Boolean = false\n ) {\n products(\n first: $first\n sortKey: $sortKey\n reverse: $reverse\n query: $query\n ) {\n ...productConnection\n }\n }\n\n \n fragment productConnection on ProductConnection {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n handle\n title\n vendor\n handle\n description\n descriptionHtml\n priceRange {\n minVariantPrice {\n amount\n currencyCode\n }\n }\n options {\n id\n name\n values\n }\n variants(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n sku\n availableForSale\n requiresShipping\n selectedOptions {\n name\n value\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n }\n }\n }\n images(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n originalSrc\n altText\n width\n height\n }\n }\n }\n }\n }\n }\n\n'},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i,a,u,c,l,d,h,f,m,g,v;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n.fetch,u=(o=n.input).categoryId,c=o.brandId,l=null==(i=n.options)?void 0:i.method,d=y(o),!u){e.next=11;break}return e.next=7,a({query:"\n query getProductsFromCollection(\n $categoryId: ID!\n $first: Int = 250\n $sortKey: ProductCollectionSortKeys = RELEVANCE\n $reverse: Boolean = false\n ) {\n node(id: $categoryId) {\n id\n ... on Collection {\n products(first: $first, sortKey: $sortKey, reverse: $reverse) {\n ...productConnection\n }\n }\n }\n }\n \n fragment productConnection on ProductConnection {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n handle\n title\n vendor\n handle\n description\n descriptionHtml\n priceRange {\n minVariantPrice {\n amount\n currencyCode\n }\n }\n options {\n id\n name\n values\n }\n variants(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n sku\n availableForSale\n requiresShipping\n selectedOptions {\n name\n value\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n }\n }\n }\n images(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n originalSrc\n altText\n width\n height\n }\n }\n }\n }\n }\n }\n\n",method:l,variables:p({},d,{first:void 0})});case 7:g=e.sent,h=c?null==(f=g.node)||null==(f=f.products)||null==(f=f.edges)?void 0:f.filter((function(n){return n.node.vendor.replace(/\s+/g,"-").toLowerCase()===(""+c).toLowerCase()})).slice(0,o.count):null==(m=g.node)||null==(m=m.products)?void 0:m.edges.slice(0,o.count),e.next=15;break;case 11:return e.next=13,a({query:i.query,method:l,variables:d});case 13:h=null==(v=e.sent.products)?void 0:v.edges;case 15:return e.abrupt("return",{products:null==(t=h)?void 0:t.map((function(n){return D(n.node)})),found:!(null==(r=h)||!r.length)});case 16:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.useData;return function(n){return void 0===n&&(n={}),e({input:[["search",n.search],["categoryId",n.categoryId],["brandId",n.brandId],["sort",n.sort],["locale",n.locale],["count",n.count]],swrOptions:p({revalidateOnFocus:!1},n.swrOptions)})}}},L={fetchOptions:{query:"\n query getProductBySlug($slug: String!) {\n productByHandle(handle: $slug) {\n ...productFields\n }\n }\n\n \n fragment productFields on Product {\n id\n handle\n availableForSale\n title\n productType\n vendor\n description\n descriptionHtml\n options {\n id\n name\n values\n }\n priceRange {\n maxVariantPrice {\n amount\n currencyCode\n }\n minVariantPrice {\n amount\n currencyCode\n }\n }\n variants(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n sku\n availableForSale\n requiresShipping\n selectedOptions {\n name\n value\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n }\n }\n }\n images(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n originalSrc\n altText\n width\n height\n }\n }\n }\n }\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i,a;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=n.options,r=n.fetch,o=n.input.id){e.next=4;break}return e.abrupt("return",null);case 4:if(i=null,!o.startsWith("gid://shopify")){e.next=12;break}return e.next=8,r({query:"\n query getProductById($id: ID!) {\n product(id: $id) {\n ...productFields\n }\n }\n\n \n fragment productFields on Product {\n id\n handle\n availableForSale\n title\n productType\n vendor\n description\n descriptionHtml\n options {\n id\n name\n values\n }\n priceRange {\n maxVariantPrice {\n amount\n currencyCode\n }\n minVariantPrice {\n amount\n currencyCode\n }\n }\n variants(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n sku\n availableForSale\n requiresShipping\n selectedOptions {\n name\n value\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n }\n }\n }\n images(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n originalSrc\n altText\n width\n height\n }\n }\n }\n }\n\n",variables:{id:o}});case 8:i=e.sent.product,e.next=16;break;case 12:return e.next=14,r({query:t.query,variables:{slug:o}});case 14:(a=e.sent).productByHandle&&(i=a.productByHandle);case 16:return e.abrupt("return",i?D(i):null);case 17:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.useData;return function(n){return void 0===n&&(n={}),e({input:[["id",n.id]],swrOptions:p({revalidateOnFocus:!1},n.swrOptions)})}}},N={fetchOptions:{query:"\n query getCheckout($checkoutId: ID!) {\n node(id: $checkoutId) {\n ...checkoutDetails\n }\n }\n \n fragment checkoutDetails on Checkout {\n id\n webUrl\n subtotalPriceV2 {\n amount\n currencyCode\n }\n totalTaxV2 {\n amount\n currencyCode\n }\n totalPriceV2 {\n amount\n currencyCode\n }\n completedAt\n createdAt\n taxesIncluded\n lineItems(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n variant {\n id\n sku\n title\n selectedOptions {\n name\n value\n }\n image {\n originalSrc\n altText\n width\n height\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n product {\n id\n handle\n }\n }\n quantity\n }\n }\n }\n }\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.options,o=n.fetch,!(t=n.input.cartId)){e.next=13;break}return e.next=4,o(p({},r,{variables:{checkoutId:t}}));case 4:if(null==(i=e.sent.node)||!i.completedAt){e.next=12;break}return u.remove("shopify_checkoutId"),u.remove("shopify_checkoutUrl"),e.abrupt("return",null);case 12:return e.abrupt("return",V({checkout:i}));case 13:return e.abrupt("return",null);case 14:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.useData;return function(n){var t=e({swrOptions:p({revalidateOnFocus:!1},null==n?void 0:n.swrOptions)});return o.useMemo((function(){return Object.create(t,{isEmpty:{get:function(){var n,e;return(null!=(n=null==(e=t.data)?void 0:e.lineItems.length)?n:0)<=0},enumerable:!0}})}),[t])}}},T={fetchOptions:{query:"\n mutation checkoutLineItemAdd(\n $checkoutId: ID!\n $lineItems: [CheckoutLineItemInput!]!\n ) {\n checkoutLineItemsAdd(checkoutId: $checkoutId, lineItems: $lineItems) {\n checkoutUserErrors {\n code\n field\n message\n }\n checkout {\n ...checkoutDetails\n }\n }\n }\n\n \n fragment checkoutDetails on Checkout {\n id\n webUrl\n subtotalPriceV2 {\n amount\n currencyCode\n }\n totalTaxV2 {\n amount\n currencyCode\n }\n totalPriceV2 {\n amount\n currencyCode\n }\n completedAt\n createdAt\n taxesIncluded\n lineItems(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n variant {\n id\n sku\n title\n selectedOptions {\n name\n value\n }\n image {\n originalSrc\n altText\n width\n height\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n product {\n id\n handle\n }\n }\n quantity\n }\n }\n }\n }\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i,u,c;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=n.options,i=n.fetch,!(r=n.input).quantity||Number.isInteger(r.quantity)&&!(r.quantity<1)){e.next=3;break}throw new a.CommerceError({message:"The item quantity has to be a valid integer greater than 0"});case 3:if(u=[{variantId:r.variantId,quantity:null!=(t=r.quantity)?t:1}],c=F()){e.next=13;break}return e.t0=V,e.next=9,k(i,u);case 9:return e.t1=e.sent,e.abrupt("return",(0,e.t0)(e.t1));case 13:return e.next=15,i(p({},o,{variables:{checkoutId:c,lineItems:u}}));case 15:return e.abrupt("return",V(e.sent.checkoutLineItemsAdd));case 18:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.fetch;return function(){var n,t=a.useCart().mutate;return o.useCallback((function(r){return(n=n||d(s().mark((function n(r){var o;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e({input:r});case 2:return o=n.sent,n.next=5,t(o,!1);case 5:return n.abrupt("return",o);case 6:case"end":return n.stop()}}),n)})))).apply(this,arguments)}),[e,t])}}},_={fetchOptions:{query:"\n mutation checkoutLineItemRemove($checkoutId: ID!, $lineItemIds: [ID!]!) {\n checkoutLineItemsRemove(\n checkoutId: $checkoutId\n lineItemIds: $lineItemIds\n ) {\n checkoutUserErrors {\n code\n field\n message\n }\n checkout {\n ...checkoutDetails\n }\n }\n }\n \n fragment checkoutDetails on Checkout {\n id\n webUrl\n subtotalPriceV2 {\n amount\n currencyCode\n }\n totalTaxV2 {\n amount\n currencyCode\n }\n totalPriceV2 {\n amount\n currencyCode\n }\n completedAt\n createdAt\n taxesIncluded\n lineItems(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n variant {\n id\n sku\n title\n selectedOptions {\n name\n value\n }\n image {\n originalSrc\n altText\n width\n height\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n product {\n id\n handle\n }\n }\n quantity\n }\n }\n }\n }\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=n.input.itemId,r=n.options,o=n.fetch,e.next=3,o(p({},r,{variables:{checkoutId:F(),lineItemIds:[t]}}));case 3:return e.abrupt("return",V(e.sent.checkoutLineItemsRemove));case 5:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.fetch;return function(n){var t;void 0===n&&(n={});var r=n.item,i=a.useCart().mutate;return o.useCallback((function(n){return(t=t||d(s().mark((function n(t){var o,u,c;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(u=null!=(o=null==t?void 0:t.id)?o:null==r?void 0:r.id){n.next=3;break}throw new a.ValidationError({message:"Invalid input used for this operation"});case 3:return n.next=5,e({input:{itemId:u}});case 5:return c=n.sent,n.next=8,i(c,!1);case 8:return n.abrupt("return",c);case 9:case"end":return n.stop()}}),n)})))).apply(this,arguments)}),[e,i])}}},j={fetchOptions:{query:"\n mutation checkoutLineItemUpdate(\n $checkoutId: ID!\n $lineItems: [CheckoutLineItemUpdateInput!]!\n ) {\n checkoutLineItemsUpdate(checkoutId: $checkoutId, lineItems: $lineItems) {\n checkoutUserErrors {\n code\n field\n message\n }\n checkout {\n ...checkoutDetails\n }\n }\n }\n\n \n fragment checkoutDetails on Checkout {\n id\n webUrl\n subtotalPriceV2 {\n amount\n currencyCode\n }\n totalTaxV2 {\n amount\n currencyCode\n }\n totalPriceV2 {\n amount\n currencyCode\n }\n completedAt\n createdAt\n taxesIncluded\n lineItems(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n variant {\n id\n sku\n title\n selectedOptions {\n name\n value\n }\n image {\n originalSrc\n altText\n width\n height\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n product {\n id\n handle\n }\n }\n quantity\n }\n }\n }\n }\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i,u;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=(t=n.input).itemId,o=t.item,i=n.options,u=n.fetch,!Number.isInteger(o.quantity)){e.next=6;break}if(!(o.quantity<1)){e.next=4;break}return e.abrupt("return",_.fetcher({options:_.fetchOptions,input:{itemId:r},fetch:u}));case 4:e.next=8;break;case 6:if(!o.quantity){e.next=8;break}throw new a.ValidationError({message:"The item quantity has to be a valid integer"});case 8:return e.next=10,u(p({},i,{variables:{checkoutId:F(),lineItems:[{id:r,quantity:o.quantity}]}}));case 10:return e.abrupt("return",V(e.sent.checkoutLineItemsUpdate));case 13:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.fetch;return function(n){var t,r;void 0===n&&(n={});var i=n.item,u=a.useCart().mutate;return o.useCallback(c((function(n){return(t=t||d(s().mark((function n(t){var r,o,c;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((o=null!=(r=t.id)?r:null==i?void 0:i.id)&&null!=t.quantity){n.next=3;break}throw new a.ValidationError({message:"Invalid input used for this operation"});case 3:return n.next=5,e({input:{item:{quantity:t.quantity},itemId:o}});case 5:return c=n.sent,n.next=8,u(c,!1);case 8:return n.abrupt("return",c);case 9:case"end":return n.stop()}}),n)})))).apply(this,arguments)}),null!=(r=n.wait)?r:500),[e,u])}}},U={fetchOptions:{query:"\n query getSiteCollections($first: Int!) {\n collections(first: $first) {\n edges {\n node {\n ...collectionFieldsFragment\n }\n }\n }\n }\n\n \n fragment collectionFieldsFragment on Collection {\n id\n title\n handle,\n products(first: $first) {\n ...simpleProductConnection\n }\n }\n \nfragment simpleProductConnection on ProductConnection {\n edges {\n node {\n id\n }\n }\n}\n\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i,a,u,c;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=n.options,r=n.fetch,o=n.input.categoryId){e.next=9;break}return e.next=5,r({query:t.query,variables:{first:250}});case 5:return e.abrupt("return",null!=(i=null==(u=e.sent)||null==(a=u.collections)||null==(a=a.edges)?void 0:a.map((function(n){return O(n.node)})))?i:[]);case 9:return e.next=11,r({query:"\n query getSiteCollection($id: ID, $handle: String, $first: Int = 1) {\n collection(id: $id, handle: $handle) {\n ...collectionFieldsFragment\n }\n }\n \n fragment collectionFieldsFragment on Collection {\n id\n title\n handle,\n products(first: $first) {\n ...simpleProductConnection\n }\n }\n \nfragment simpleProductConnection on ProductConnection {\n edges {\n node {\n id\n }\n }\n}\n\n\n",variables:p({},o.startsWith("gid://")?{id:o}:{handle:o})});case 11:return e.abrupt("return",null!=(c=e.sent)&&c.collection?[O(null==c?void 0:c.collection)]:[]);case 13:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.useData;return function(n){var t=e({input:[["categoryId",null==n?void 0:n.categoryId]],swrOptions:p({revalidateOnFocus:!1},null==n?void 0:n.swrOptions)});return o.useMemo((function(){return Object.create(t,{isEmpty:{get:function(){var n,e;return(null!=(n=null==(e=t.data)?void 0:e.length)?n:0)<=0},enumerable:!0}})}),[t])}}},R={fetchOptions:{query:B},fetcher:function(n){return d(s().mark((function e(){var t,r;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=n.fetch,e.next=3,t({query:B,variables:{first:250}});case 3:return r=e.sent.products.edges.map((function(n){return n.node.vendor})),e.abrupt("return",Array.from(new Set(r).values()).map((function(n){var e=n.replace(/\s+/g,"-").toLowerCase();return{entityId:e,name:n,path:"brands/"+e}})));case 6:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.useData;return function(n){var t=e({swrOptions:p({revalidateOnFocus:!1},null==n?void 0:n.swrOptions)});return o.useMemo((function(){return Object.create(t,{isEmpty:{get:function(){var n,e;return(null!=(n=null==(e=t.data)?void 0:e.length)?n:0)<=0},enumerable:!0}})}),[t])}}},H=["locale"],K=function(n,e){var t;return function(r){return(t=t||d(s().mark((function t(r){var o,i,a,u,c,l,d,f,m;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=void 0===(o=r.url)?"https://"+n+"/api/2022-04/graphql.json":o,u=void 0===(a=r.method)?"POST":a,l=r.query,f=(d=null!=(c=r.variables)?c:{}).locale,m=h(d,H),t.t0=v,t.next=5,fetch(i,{method:u,body:JSON.stringify({query:l,variables:m}),headers:p({"X-Shopify-Storefront-Access-Token":e,"Content-Type":"application/json"},f&&{"Accept-Language":f})});case 5:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}},G=function(n,e){return a.getCommerceProvider(function(n,e){return{locale:"en-us",cartCookie:"shopify_checkoutId",cart:{useCart:N,useAddItem:T,useUpdateItem:j,useRemoveItem:_},fetcher:K(n,e),products:{useSearch:$,useProduct:L},site:{useCategories:U,useBrands:R}}}(n,e))},M={name:"plasmic-commerce-shopify-provider",displayName:"Shopify Provider",props:{storeDomain:{type:"string",defaultValue:"next-js-store.myshopify.com"},accessToken:{type:"string",defaultValue:"ef7d41c7bf7e1c214074d0d3047bcd7b"}},unstable__globalActions:a.globalActionsRegistrations,description:"Your store domain usually looks like **storename.myshopify.com**.\n\nFor your access token, get it by following [this video](https://www.youtube.com/watch?v=wB_6cM7tdv4).\n\nSee also the [getting started video](https://www.youtube.com/watch?v=1OJ_gXmta2Q).",importPath:"@plasmicpkgs/commerce-shopify",importName:"CommerceProviderComponent"};function Y(n){var e=n.storeDomain,t=n.accessToken,r=n.children,o=i.useMemo((function(){return G(e,t)}),[e,t]);return i.createElement(o,null,i.createElement(a.CartActionsProvider,{globalContextName:"plasmic-commerce-shopify-provider"},r))}function J(n,e){!function(){n?n.registerGlobalContext.apply(n,arguments):r.apply(void 0,arguments)}(Y,null!=e?e:M)}exports.CommerceProviderComponent=Y,exports.commerceProviderMeta=M,exports.getCommerceProvider=G,exports.registerAll=function(n){J(n)},exports.registerCommerceProvider=J,exports.useCommerce=function(){return a.useCommerce()};
|
|
1
|
+
"use strict";function n(n){return n&&"object"==typeof n&&"default"in n?n.default:n}Object.defineProperty(exports,"__esModule",{value:!0});var e,t,r=n(require("@plasmicapp/host/registerGlobalContext")),o=require("react"),i=n(o),a=require("@plasmicpkgs/commerce"),u=n(require("js-cookie")),c=n(require("debounce"));function s(){s=function(){return e};var n,e={},t=Object.prototype,r=t.hasOwnProperty,o=Object.defineProperty||function(n,e,t){n[e]=t.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",u=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function l(n,e,t){return Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}),n[e]}try{l({},"")}catch(n){l=function(n,e,t){return n[e]=t}}function d(n,e,t,r){var i=Object.create((e&&e.prototype instanceof v?e:v).prototype),a=new q(r||[]);return o(i,"_invoke",{value:P(n,t,a)}),i}function p(n,e,t){try{return{type:"normal",arg:n.call(e,t)}}catch(n){return{type:"throw",arg:n}}}e.wrap=d;var h="suspendedStart",f="executing",m="completed",g={};function v(){}function y(){}function F(){}var b={};l(b,a,(function(){return this}));var k=Object.getPrototypeOf,w=k&&k(k(O([])));w&&w!==t&&r.call(w,a)&&(b=w);var C=F.prototype=v.prototype=Object.create(b);function I(n){["next","throw","return"].forEach((function(e){l(n,e,(function(n){return this._invoke(e,n)}))}))}function x(n,e){function t(o,i,a,u){var c=p(n[o],n,i);if("throw"!==c.type){var s=c.arg,l=s.value;return l&&"object"==typeof l&&r.call(l,"__await")?e.resolve(l.__await).then((function(n){t("next",n,a,u)}),(function(n){t("throw",n,a,u)})):e.resolve(l).then((function(n){s.value=n,a(s)}),(function(n){return t("throw",n,a,u)}))}u(c.arg)}var i;o(this,"_invoke",{value:function(n,r){function o(){return new e((function(e,o){t(n,r,e,o)}))}return i=i?i.then(o,o):o()}})}function P(e,t,r){var o=h;return function(i,a){if(o===f)throw new Error("Generator is already running");if(o===m){if("throw"===i)throw a;return{value:n,done:!0}}for(r.method=i,r.arg=a;;){var u=r.delegate;if(u){var c=E(u,r);if(c){if(c===g)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===h)throw o=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=f;var s=p(e,t,r);if("normal"===s.type){if(o=r.done?m:"suspendedYield",s.arg===g)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(o=m,r.method="throw",r.arg=s.arg)}}}function E(e,t){var r=t.method,o=e.iterator[r];if(o===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=n,E(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),g;var i=p(o,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,g;var a=i.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=n),t.delegate=null,g):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,g)}function A(n){var e={tryLoc:n[0]};1 in n&&(e.catchLoc=n[1]),2 in n&&(e.finallyLoc=n[2],e.afterLoc=n[3]),this.tryEntries.push(e)}function D(n){var e=n.completion||{};e.type="normal",delete e.arg,n.completion=e}function q(n){this.tryEntries=[{tryLoc:"root"}],n.forEach(A,this),this.reset(!0)}function O(e){if(e||""===e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function t(){for(;++o<e.length;)if(r.call(e,o))return t.value=e[o],t.done=!1,t;return t.value=n,t.done=!0,t};return i.next=i}}throw new TypeError(typeof e+" is not iterable")}return y.prototype=F,o(C,"constructor",{value:F,configurable:!0}),o(F,"constructor",{value:y,configurable:!0}),y.displayName=l(F,c,"GeneratorFunction"),e.isGeneratorFunction=function(n){var e="function"==typeof n&&n.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,F):(n.__proto__=F,l(n,c,"GeneratorFunction")),n.prototype=Object.create(C),n},e.awrap=function(n){return{__await:n}},I(x.prototype),l(x.prototype,u,(function(){return this})),e.AsyncIterator=x,e.async=function(n,t,r,o,i){void 0===i&&(i=Promise);var a=new x(d(n,t,r,o),i);return e.isGeneratorFunction(t)?a:a.next().then((function(n){return n.done?n.value:a.next()}))},I(C),l(C,c,"Generator"),l(C,a,(function(){return this})),l(C,"toString",(function(){return"[object Generator]"})),e.keys=function(n){var e=Object(n),t=[];for(var r in e)t.push(r);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=O,q.prototype={constructor:q,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(D),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},stop:function(){this.done=!0;var n=this.tryEntries[0].completion;if("throw"===n.type)throw n.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function o(r,o){return u.type="throw",u.arg=e,t.next=r,o&&(t.method="next",t.arg=n),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),s=r.call(a,"finallyLoc");if(c&&s){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(n,e){for(var t=this.tryEntries.length-1;t>=0;--t){var o=this.tryEntries[t];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===n||"continue"===n)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=n,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,g):this.complete(a)},complete:function(n,e){if("throw"===n.type)throw n.arg;return"break"===n.type||"continue"===n.type?this.next=n.arg:"return"===n.type?(this.rval=this.arg=n.arg,this.method="return",this.next="end"):"normal"===n.type&&e&&(this.next=e),g},finish:function(n){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.finallyLoc===n)return this.complete(t.completion,t.afterLoc),D(t),g}},catch:function(n){for(var e=this.tryEntries.length-1;e>=0;--e){var t=this.tryEntries[e];if(t.tryLoc===n){var r=t.completion;if("throw"===r.type){var o=r.arg;D(t)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:O(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=n),g}},e}function l(n,e,t,r,o,i,a){try{var u=n[i](a),c=u.value}catch(n){return void t(n)}u.done?e(c):Promise.resolve(c).then(r,o)}function d(n){return function(){var e=this,t=arguments;return new Promise((function(r,o){var i=n.apply(e,t);function a(n){l(i,r,o,a,u,"next",n)}function u(n){l(i,r,o,a,u,"throw",n)}a(void 0)}))}}function p(){return(p=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n}).apply(this,arguments)}function h(n,e){if(null==n)return{};var t,r,o={},i=Object.keys(n);for(r=0;r<i.length;r++)e.indexOf(t=i[r])>=0||(o[t]=n[t]);return o}function f(n,e){var t;return n=null!=(t=n)?t:[{message:"Failed to fetch Shopify API"}],new a.FetcherError({errors:n,status:e})}function m(n){return(e=e||d(s().mark((function n(e){return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e.json();case 2:return n.abrupt("return",f(n.sent.errors,e.status));case 4:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var g,v=function(n){return(t=t||d(s().mark((function n(e){var t,r,o;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!e.ok){n.next=9;break}return n.next=3,e.json();case 3:if(r=(t=n.sent).data,!(o=t.errors)||!o.length){n.next=8;break}throw f(o,e.status);case 8:return n.abrupt("return",r);case 9:return n.next=11,m(e);case 11:throw n.sent;case 12:case"end":return n.stop()}}),n)})))).apply(this,arguments)},y=function(n){var e=n.brandId,t=n.search,r=n.categoryId,o=n.locale,i=n.count,a="",u=t+"*";return t&&(a+="product_type:"+u+" OR title:"+u+" OR tag:"+u),e&&(a+=(t?"AND ":"")+"vendor:"+e),p({categoryId:r,query:a},function(n,e){void 0===e&&(e=!1);var t={};switch(n){case"price-asc":t={sortKey:"PRICE",reverse:!1};break;case"price-desc":t={sortKey:"PRICE",reverse:!0};break;case"trending-desc":t={sortKey:"BEST_SELLING",reverse:!1};break;case"latest-desc":t={sortKey:e?"CREATED":"CREATED_AT",reverse:!0}}return t}(n.sort,!!r),o&&{locale:o},{first:i})},F=function(n){return null!=n?n:u.get("shopify_checkoutId")},b="\n mutation checkoutCreate($input: CheckoutCreateInput = {}) {\n checkoutCreate(input: $input) {\n checkoutUserErrors {\n code\n field\n message\n }\n checkout {\n ...checkoutDetails\n }\n }\n }\n\n \n fragment checkoutDetails on Checkout {\n id\n webUrl\n subtotalPriceV2 {\n amount\n currencyCode\n }\n totalTaxV2 {\n amount\n currencyCode\n }\n totalPriceV2 {\n amount\n currencyCode\n }\n completedAt\n createdAt\n taxesIncluded\n lineItems(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n variant {\n id\n sku\n title\n selectedOptions {\n name\n value\n }\n image {\n originalSrc\n altText\n width\n height\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n product {\n id\n handle\n }\n }\n quantity\n }\n }\n }\n }\n\n",k=function(n,e){return(g=g||d(s().mark((function n(e,t){var r,o,i;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e({query:b,variables:{input:{lineItems:t}}});case 2:return(o=null==(r=n.sent.checkoutCreate)?void 0:r.checkout)&&(u.set("shopify_checkoutId",null==o?void 0:o.id,i={expires:30,sameSite:"none",secure:!0}),null!=o&&o.webUrl&&u.set("shopify_checkoutUrl",o.webUrl,i)),n.abrupt("return",r);case 7:case"end":return n.stop()}}),n)})))).apply(this,arguments)},w={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#00FFFF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blue:"#0000FF",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",burgandy:"#800020",burgundy:"#800020",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#FF00FF",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",green:"#008000",greenyellow:"#ADFF2F",grey:"#808080",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#00FF00",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#FF0000",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",spacegrey:"#65737e",spacegray:"#65737e",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFFFFF",whitesmoke:"#F5F5F5",yellow:"#FFFF00",yellowgreen:"#9ACD32"},C=["originalSrc"],I=["id","title","vendor","images","variants","description","descriptionHtml","handle","priceRange","options","metafields"],x=function(n){return{value:+n.amount,currencyCode:n.currencyCode}},P=function(n){return"Title"===n.name},E=function(n){var e=n.name,t=n.values;return{__typename:"MultipleChoiceOption",id:n.id,displayName:e.toLowerCase(),values:t.map((function(n){var t={label:n};if(e.match(/colou?r/gi)){var r=w[n.toLowerCase().replace(/ /g,"")];r&&(t=p({},t,{hexColors:[r]}))}return t}))}},A=function(n){return p({url:n.originalSrc},h(n,C))},D=function(n){var e=n.edges;return null==e?void 0:e.map((function(n){var e=n.node,t=e.id,r=e.selectedOptions,o=e.sku,i=e.title,a=e.priceV2,u=e.compareAtPriceV2,c=e.requiresShipping,s=e.availableForSale;return{id:t,name:r.some((function(n){return!P(n)}))?i:"Default variant",sku:null!=o?o:t,price:+a.amount,listPrice:+(null==u?void 0:u.amount),requiresShipping:c,availableForSale:s,options:r.map((function(n){return E({id:t,name:n.name,values:[n.value]})}))}}))};function q(n){var e,t,r=n.id,o=n.title,i=n.vendor,a=n.images,u=n.variants,c=n.description,s=n.descriptionHtml,l=n.handle,d=n.priceRange,f=n.options,m=h(n,I);return p({id:r,name:o,vendor:i,path:"/"+l,slug:null==l?void 0:l.replace(/^\/+|\/+$/g,""),price:x(null==d?void 0:d.minVariantPrice),images:(e=a,t=e.edges,null==t?void 0:t.map((function(n){return A(n.node)}))),variants:u?D(u):[],options:f?f.filter((function(n){return!P(n)})).map((function(n){return E(n)})):[]},c&&{description:c},s&&{descriptionHtml:s},m)}function O(n){var e,t,r,o,i,a,u=n.node,c=u.title,s=u.variant,l=u.quantity;return{id:u.id,variantId:String(null==s?void 0:s.id),productId:String(null==s?void 0:s.product.id),name:""+c,quantity:l,variant:{id:String(null==s?void 0:s.id),sku:null!=(e=null==s?void 0:s.sku)?e:"",name:null==s?void 0:s.title,image:{url:(null==s||null==(t=s.image)?void 0:t.originalSrc)||"/product-img-placeholder.svg"},requiresShipping:null!=(r=null==s?void 0:s.requiresShipping)&&r,price:null==s||null==(o=s.priceV2)?void 0:o.amount,listPrice:null==s||null==(i=s.compareAtPriceV2)?void 0:i.amount},path:String(null==s||null==(a=s.product)?void 0:a.handle),discounts:[],options:"Default Title"==(null==s?void 0:s.title)?[]:null==s?void 0:s.selectedOptions}}var S=function(n){var e=n.handle,t=n.image;return{id:n.id,name:n.title,slug:e,path:"/"+e,isEmpty:0===n.products.edges.length,images:t?[A(t)]:void 0}},V=function(n,e){switch(n){case"UNIDENTIFIED_CUSTOMER":e="Cannot find an account that matches the provided credentials"}return e},B=function(n){if(function(n){if(n&&n.length)throw new a.ValidationError({errors:n.map((function(n){var e=n.code;return{code:null!=e?e:"validation_error",message:V(e,n.message)}}))})}(null==n?void 0:n.checkoutUserErrors),null==n||!n.checkout)throw new a.CommerceError({message:"Missing checkout object from response"});return{id:(e=null==n?void 0:n.checkout).id,url:e.webUrl,customerId:"",email:"",createdAt:e.createdAt,currency:{code:null==(t=e.totalPriceV2)?void 0:t.currencyCode},taxesIncluded:e.taxesIncluded,lineItems:null==(r=e.lineItems)?void 0:r.edges.map(O),lineItemsSubtotalPrice:+(null==(o=e.subtotalPriceV2)?void 0:o.amount),subtotalPrice:+(null==(i=e.subtotalPriceV2)?void 0:i.amount),totalPrice:+(null==(u=e.totalPriceV2)?void 0:u.amount),discounts:[]};var e,t,r,o,i,u},$="\n query getAllProductVendors($first: Int = 250, $cursor: String) {\n products(first: $first, after: $cursor) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n vendor\n }\n cursor\n }\n }\n }\n",L={fetchOptions:{query:'\n query getAllProducts(\n $first: Int = 250\n $query: String = ""\n $sortKey: ProductSortKeys = RELEVANCE\n $reverse: Boolean = false\n ) {\n products(\n first: $first\n sortKey: $sortKey\n reverse: $reverse\n query: $query\n ) {\n ...productConnection\n }\n }\n\n \n fragment productConnection on ProductConnection {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n handle\n title\n vendor\n handle\n description\n descriptionHtml\n priceRange {\n minVariantPrice {\n amount\n currencyCode\n }\n }\n options {\n id\n name\n values\n }\n variants(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n sku\n availableForSale\n requiresShipping\n selectedOptions {\n name\n value\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n }\n }\n }\n images(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n originalSrc\n altText\n width\n height\n }\n }\n }\n }\n }\n }\n\n'},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i,a,u,c,l,d,h,f,m,g,v;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=n.fetch,u=(o=n.input).categoryId,c=o.brandId,l=null==(i=n.options)?void 0:i.method,d=y(o),!u){e.next=11;break}return e.next=7,a({query:"\n query getProductsFromCollection(\n $categoryId: ID!\n $first: Int = 250\n $sortKey: ProductCollectionSortKeys = RELEVANCE\n $reverse: Boolean = false\n ) {\n node(id: $categoryId) {\n id\n ... on Collection {\n products(first: $first, sortKey: $sortKey, reverse: $reverse) {\n ...productConnection\n }\n }\n }\n }\n \n fragment productConnection on ProductConnection {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n handle\n title\n vendor\n handle\n description\n descriptionHtml\n priceRange {\n minVariantPrice {\n amount\n currencyCode\n }\n }\n options {\n id\n name\n values\n }\n variants(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n sku\n availableForSale\n requiresShipping\n selectedOptions {\n name\n value\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n }\n }\n }\n images(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n originalSrc\n altText\n width\n height\n }\n }\n }\n }\n }\n }\n\n",method:l,variables:p({},d,{first:void 0})});case 7:g=e.sent,h=c?null==(f=g.node)||null==(f=f.products)||null==(f=f.edges)?void 0:f.filter((function(n){return n.node.vendor.replace(/\s+/g,"-").toLowerCase()===(""+c).toLowerCase()})).slice(0,o.count):null==(m=g.node)||null==(m=m.products)?void 0:m.edges.slice(0,o.count),e.next=15;break;case 11:return e.next=13,a({query:i.query,method:l,variables:d});case 13:h=null==(v=e.sent.products)?void 0:v.edges;case 15:return e.abrupt("return",{products:null==(t=h)?void 0:t.map((function(n){return q(n.node)})),found:!(null==(r=h)||!r.length)});case 16:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.useData;return function(n){return void 0===n&&(n={}),e({input:[["search",n.search],["categoryId",n.categoryId],["brandId",n.brandId],["sort",n.sort],["locale",n.locale],["count",n.count]],swrOptions:p({revalidateOnFocus:!1},n.swrOptions)})}}},T={fetchOptions:{query:"\n query getProductBySlug($slug: String!) {\n productByHandle(handle: $slug) {\n ...productFields\n }\n }\n\n \n fragment productFields on Product {\n id\n handle\n availableForSale\n title\n productType\n vendor\n description\n descriptionHtml\n options {\n id\n name\n values\n }\n priceRange {\n maxVariantPrice {\n amount\n currencyCode\n }\n minVariantPrice {\n amount\n currencyCode\n }\n }\n variants(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n sku\n availableForSale\n requiresShipping\n selectedOptions {\n name\n value\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n }\n }\n }\n images(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n originalSrc\n altText\n width\n height\n }\n }\n }\n }\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i,a;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=n.options,r=n.fetch,o=n.input.id){e.next=4;break}return e.abrupt("return",null);case 4:if(i=null,!o.startsWith("gid://shopify")){e.next=12;break}return e.next=8,r({query:"\n query getProductById($id: ID!) {\n product(id: $id) {\n ...productFields\n }\n }\n\n \n fragment productFields on Product {\n id\n handle\n availableForSale\n title\n productType\n vendor\n description\n descriptionHtml\n options {\n id\n name\n values\n }\n priceRange {\n maxVariantPrice {\n amount\n currencyCode\n }\n minVariantPrice {\n amount\n currencyCode\n }\n }\n variants(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n sku\n availableForSale\n requiresShipping\n selectedOptions {\n name\n value\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n }\n }\n }\n images(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n originalSrc\n altText\n width\n height\n }\n }\n }\n }\n\n",variables:{id:o}});case 8:i=e.sent.product,e.next=16;break;case 12:return e.next=14,r({query:t.query,variables:{slug:o}});case 14:(a=e.sent).productByHandle&&(i=a.productByHandle);case 16:return e.abrupt("return",i?q(i):null);case 17:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.useData;return function(n){return void 0===n&&(n={}),e({input:[["id",n.id]],swrOptions:p({revalidateOnFocus:!1},n.swrOptions)})}}},N={fetchOptions:{query:"\n query getCheckout($checkoutId: ID!) {\n node(id: $checkoutId) {\n ...checkoutDetails\n }\n }\n \n fragment checkoutDetails on Checkout {\n id\n webUrl\n subtotalPriceV2 {\n amount\n currencyCode\n }\n totalTaxV2 {\n amount\n currencyCode\n }\n totalPriceV2 {\n amount\n currencyCode\n }\n completedAt\n createdAt\n taxesIncluded\n lineItems(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n variant {\n id\n sku\n title\n selectedOptions {\n name\n value\n }\n image {\n originalSrc\n altText\n width\n height\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n product {\n id\n handle\n }\n }\n quantity\n }\n }\n }\n }\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n.options,o=n.fetch,!(t=n.input.cartId)){e.next=13;break}return e.next=4,o(p({},r,{variables:{checkoutId:t}}));case 4:if(null==(i=e.sent.node)||!i.completedAt){e.next=12;break}return u.remove("shopify_checkoutId"),u.remove("shopify_checkoutUrl"),e.abrupt("return",null);case 12:return e.abrupt("return",B({checkout:i}));case 13:return e.abrupt("return",null);case 14:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.useData;return function(n){var t=e({swrOptions:p({revalidateOnFocus:!1},null==n?void 0:n.swrOptions)});return o.useMemo((function(){return Object.create(t,{isEmpty:{get:function(){var n,e;return(null!=(n=null==(e=t.data)?void 0:e.lineItems.length)?n:0)<=0},enumerable:!0}})}),[t])}}},_={fetchOptions:{query:"\n mutation checkoutLineItemAdd(\n $checkoutId: ID!\n $lineItems: [CheckoutLineItemInput!]!\n ) {\n checkoutLineItemsAdd(checkoutId: $checkoutId, lineItems: $lineItems) {\n checkoutUserErrors {\n code\n field\n message\n }\n checkout {\n ...checkoutDetails\n }\n }\n }\n\n \n fragment checkoutDetails on Checkout {\n id\n webUrl\n subtotalPriceV2 {\n amount\n currencyCode\n }\n totalTaxV2 {\n amount\n currencyCode\n }\n totalPriceV2 {\n amount\n currencyCode\n }\n completedAt\n createdAt\n taxesIncluded\n lineItems(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n variant {\n id\n sku\n title\n selectedOptions {\n name\n value\n }\n image {\n originalSrc\n altText\n width\n height\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n product {\n id\n handle\n }\n }\n quantity\n }\n }\n }\n }\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i,u,c;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=n.options,i=n.fetch,!(r=n.input).quantity||Number.isInteger(r.quantity)&&!(r.quantity<1)){e.next=3;break}throw new a.CommerceError({message:"The item quantity has to be a valid integer greater than 0"});case 3:if(u=[{variantId:r.variantId,quantity:null!=(t=r.quantity)?t:1}],c=F()){e.next=13;break}return e.t0=B,e.next=9,k(i,u);case 9:return e.t1=e.sent,e.abrupt("return",(0,e.t0)(e.t1));case 13:return e.next=15,i(p({},o,{variables:{checkoutId:c,lineItems:u}}));case 15:return e.abrupt("return",B(e.sent.checkoutLineItemsAdd));case 18:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.fetch;return function(){var n,t=a.useCart().mutate;return o.useCallback((function(r){return(n=n||d(s().mark((function n(r){var o;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e({input:r});case 2:return o=n.sent,n.next=5,t(o,!1);case 5:return n.abrupt("return",o);case 6:case"end":return n.stop()}}),n)})))).apply(this,arguments)}),[e,t])}}},j={fetchOptions:{query:"\n mutation checkoutLineItemRemove($checkoutId: ID!, $lineItemIds: [ID!]!) {\n checkoutLineItemsRemove(\n checkoutId: $checkoutId\n lineItemIds: $lineItemIds\n ) {\n checkoutUserErrors {\n code\n field\n message\n }\n checkout {\n ...checkoutDetails\n }\n }\n }\n \n fragment checkoutDetails on Checkout {\n id\n webUrl\n subtotalPriceV2 {\n amount\n currencyCode\n }\n totalTaxV2 {\n amount\n currencyCode\n }\n totalPriceV2 {\n amount\n currencyCode\n }\n completedAt\n createdAt\n taxesIncluded\n lineItems(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n variant {\n id\n sku\n title\n selectedOptions {\n name\n value\n }\n image {\n originalSrc\n altText\n width\n height\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n product {\n id\n handle\n }\n }\n quantity\n }\n }\n }\n }\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=n.input.itemId,r=n.options,o=n.fetch,e.next=3,o(p({},r,{variables:{checkoutId:F(),lineItemIds:[t]}}));case 3:return e.abrupt("return",B(e.sent.checkoutLineItemsRemove));case 5:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.fetch;return function(n){var t;void 0===n&&(n={});var r=n.item,i=a.useCart().mutate;return o.useCallback((function(n){return(t=t||d(s().mark((function n(t){var o,u,c;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(u=null!=(o=null==t?void 0:t.id)?o:null==r?void 0:r.id){n.next=3;break}throw new a.ValidationError({message:"Invalid input used for this operation"});case 3:return n.next=5,e({input:{itemId:u}});case 5:return c=n.sent,n.next=8,i(c,!1);case 8:return n.abrupt("return",c);case 9:case"end":return n.stop()}}),n)})))).apply(this,arguments)}),[e,i])}}},U={fetchOptions:{query:"\n mutation checkoutLineItemUpdate(\n $checkoutId: ID!\n $lineItems: [CheckoutLineItemUpdateInput!]!\n ) {\n checkoutLineItemsUpdate(checkoutId: $checkoutId, lineItems: $lineItems) {\n checkoutUserErrors {\n code\n field\n message\n }\n checkout {\n ...checkoutDetails\n }\n }\n }\n\n \n fragment checkoutDetails on Checkout {\n id\n webUrl\n subtotalPriceV2 {\n amount\n currencyCode\n }\n totalTaxV2 {\n amount\n currencyCode\n }\n totalPriceV2 {\n amount\n currencyCode\n }\n completedAt\n createdAt\n taxesIncluded\n lineItems(first: 250) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n id\n title\n variant {\n id\n sku\n title\n selectedOptions {\n name\n value\n }\n image {\n originalSrc\n altText\n width\n height\n }\n priceV2 {\n amount\n currencyCode\n }\n compareAtPriceV2 {\n amount\n currencyCode\n }\n product {\n id\n handle\n }\n }\n quantity\n }\n }\n }\n }\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i,u;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=(t=n.input).itemId,o=t.item,i=n.options,u=n.fetch,!Number.isInteger(o.quantity)){e.next=6;break}if(!(o.quantity<1)){e.next=4;break}return e.abrupt("return",j.fetcher({options:j.fetchOptions,input:{itemId:r},fetch:u}));case 4:e.next=8;break;case 6:if(!o.quantity){e.next=8;break}throw new a.ValidationError({message:"The item quantity has to be a valid integer"});case 8:return e.next=10,u(p({},i,{variables:{checkoutId:F(),lineItems:[{id:r,quantity:o.quantity}]}}));case 10:return e.abrupt("return",B(e.sent.checkoutLineItemsUpdate));case 13:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.fetch;return function(n){var t,r;void 0===n&&(n={});var i=n.item,u=a.useCart().mutate;return o.useCallback(c((function(n){return(t=t||d(s().mark((function n(t){var r,o,c;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((o=null!=(r=t.id)?r:null==i?void 0:i.id)&&null!=t.quantity){n.next=3;break}throw new a.ValidationError({message:"Invalid input used for this operation"});case 3:return n.next=5,e({input:{item:{quantity:t.quantity},itemId:o}});case 5:return c=n.sent,n.next=8,u(c,!1);case 8:return n.abrupt("return",c);case 9:case"end":return n.stop()}}),n)})))).apply(this,arguments)}),null!=(r=n.wait)?r:500),[e,u])}}},R={fetchOptions:{query:"\n query getSiteCollections($first: Int!) {\n collections(first: $first) {\n edges {\n node {\n ...collectionFieldsFragment\n }\n }\n }\n }\n\n \n fragment collectionFieldsFragment on Collection {\n id\n title\n handle\n image {\n originalSrc\n altText\n width\n height\n }\n products(first: $first) {\n ...simpleProductConnection\n }\n }\n \nfragment simpleProductConnection on ProductConnection {\n edges {\n node {\n id\n }\n }\n}\n\n\n"},fetcher:function(n){return d(s().mark((function e(){var t,r,o,i,a,u,c;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=n.options,r=n.fetch,o=n.input.categoryId){e.next=9;break}return e.next=5,r({query:t.query,variables:{first:250}});case 5:return e.abrupt("return",null!=(i=null==(u=e.sent)||null==(a=u.collections)||null==(a=a.edges)?void 0:a.map((function(n){return S(n.node)})))?i:[]);case 9:return e.next=11,r({query:"\n query getSiteCollection($id: ID, $handle: String, $first: Int = 1) {\n collection(id: $id, handle: $handle) {\n ...collectionFieldsFragment\n }\n }\n \n fragment collectionFieldsFragment on Collection {\n id\n title\n handle\n image {\n originalSrc\n altText\n width\n height\n }\n products(first: $first) {\n ...simpleProductConnection\n }\n }\n \nfragment simpleProductConnection on ProductConnection {\n edges {\n node {\n id\n }\n }\n}\n\n\n",variables:p({},o.startsWith("gid://")?{id:o}:{handle:o})});case 11:return e.abrupt("return",null!=(c=e.sent)&&c.collection?[S(null==c?void 0:c.collection)]:[]);case 13:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.useData;return function(n){var t=e({input:[["categoryId",null==n?void 0:n.categoryId]],swrOptions:p({revalidateOnFocus:!1},null==n?void 0:n.swrOptions)});return o.useMemo((function(){return Object.create(t,{isEmpty:{get:function(){var n,e;return(null!=(n=null==(e=t.data)?void 0:e.length)?n:0)<=0},enumerable:!0}})}),[t])}}},H={fetchOptions:{query:$},fetcher:function(n){return d(s().mark((function e(){var t,r;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=n.fetch,e.next=3,t({query:$,variables:{first:250}});case 3:return r=e.sent.products.edges.map((function(n){return n.node.vendor})),e.abrupt("return",Array.from(new Set(r).values()).map((function(n){var e=n.replace(/\s+/g,"-").toLowerCase();return{entityId:e,name:n,path:"brands/"+e}})));case 6:case"end":return e.stop()}}),e)})))()},useHook:function(n){var e=n.useData;return function(n){var t=e({swrOptions:p({revalidateOnFocus:!1},null==n?void 0:n.swrOptions)});return o.useMemo((function(){return Object.create(t,{isEmpty:{get:function(){var n,e;return(null!=(n=null==(e=t.data)?void 0:e.length)?n:0)<=0},enumerable:!0}})}),[t])}}},K=["locale"],G=function(n,e){var t;return function(r){return(t=t||d(s().mark((function t(r){var o,i,a,u,c,l,d,f,m;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=void 0===(o=r.url)?"https://"+n+"/api/2022-04/graphql.json":o,u=void 0===(a=r.method)?"POST":a,l=r.query,f=(d=null!=(c=r.variables)?c:{}).locale,m=h(d,K),t.t0=v,t.next=5,fetch(i,{method:u,body:JSON.stringify({query:l,variables:m}),headers:p({"X-Shopify-Storefront-Access-Token":e,"Content-Type":"application/json"},f&&{"Accept-Language":f})});case 5:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}},M=function(n,e){return a.getCommerceProvider(function(n,e){return{locale:"en-us",cartCookie:"shopify_checkoutId",cart:{useCart:N,useAddItem:_,useUpdateItem:U,useRemoveItem:j},fetcher:G(n,e),products:{useSearch:L,useProduct:T},site:{useCategories:R,useBrands:H}}}(n,e))},Y={name:"plasmic-commerce-shopify-provider",displayName:"Shopify Provider",props:{storeDomain:{type:"string",defaultValue:"next-js-store.myshopify.com"},accessToken:{type:"string",defaultValue:"ef7d41c7bf7e1c214074d0d3047bcd7b"}},unstable__globalActions:a.globalActionsRegistrations,description:"Your store domain usually looks like **storename.myshopify.com**.\n\nFor your access token, get it by following [this video](https://www.youtube.com/watch?v=wB_6cM7tdv4).\n\nSee also the [getting started video](https://www.youtube.com/watch?v=1OJ_gXmta2Q).",importPath:"@plasmicpkgs/commerce-shopify",importName:"CommerceProviderComponent"};function J(n){var e=n.storeDomain,t=n.accessToken,r=n.children,o=i.useMemo((function(){return M(e,t)}),[e,t]);return i.createElement(o,null,i.createElement(a.CartActionsProvider,{globalContextName:"plasmic-commerce-shopify-provider"},r))}function W(n,e){!function(){n?n.registerGlobalContext.apply(n,arguments):r.apply(void 0,arguments)}(J,null!=e?e:Y)}exports.CommerceProviderComponent=J,exports.commerceProviderMeta=Y,exports.getCommerceProvider=M,exports.registerAll=function(n){W(n)},exports.registerCommerceProvider=W,exports.useCommerce=function(){return a.useCommerce()};
|
|
2
2
|
//# sourceMappingURL=commerce-shopify.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commerce-shopify.cjs.production.min.js","sources":["../src/utils/handle-fetch-response.ts","../src/utils/get-search-variables.ts","../src/utils/get-sort-variables.ts","../src/utils/get-checkout-id.ts","../src/const.ts","../src/utils/mutations/checkout-create.ts","../src/utils/checkout-create.ts","../src/utils/colors.ts","../src/utils/normalize.ts","../src/utils/throw-user-errors.ts","../src/utils/checkout-to-cart.ts","../src/utils/queries/get-all-product-vendors-query.ts","../src/product/use-search.tsx","../src/product/use-product.tsx","../src/cart/use-cart.tsx","../src/cart/use-add-item.tsx","../src/cart/use-remove-item.tsx","../src/cart/use-update-item.tsx","../src/site/use-categories.tsx","../src/site/use-brands.tsx","../src/fetcher.ts","../src/shopify.tsx","../src/provider.ts","../src/registerCommerceProvider.tsx","../src/index.tsx"],"sourcesContent":["/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { FetcherError } from '@plasmicpkgs/commerce'\n\nexport function getError(errors: any[] | null, status: number) {\n errors = errors ?? [{ message: 'Failed to fetch Shopify API' }]\n return new FetcherError({ errors, status })\n}\n\nexport async function getAsyncError(res: Response) {\n const data = await res.json()\n return getError(data.errors, res.status)\n}\n\nconst handleFetchResponse = async (res: Response) => {\n if (res.ok) {\n const { data, errors } = await res.json()\n\n if (errors && errors.length) {\n throw getError(errors, res.status)\n }\n\n return data\n }\n\n throw await getAsyncError(res)\n}\n\nexport default handleFetchResponse\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes:\n - Added count as a parameter\n*/\nimport { SearchProductsBody } from \"@plasmicpkgs/commerce\";\nimport getSortVariables from \"./get-sort-variables\";\n\nexport const getSearchVariables = ({\n brandId,\n search,\n categoryId,\n sort,\n locale,\n count,\n}: SearchProductsBody) => {\n let query = \"\";\n\n const searchQuery = `${search}*`;\n if (search) {\n query += `product_type:${searchQuery} OR title:${searchQuery} OR tag:${searchQuery}`;\n }\n\n if (brandId) {\n query += `${search ? \"AND \" : \"\"}vendor:${brandId}`;\n }\n\n return {\n categoryId,\n query,\n ...getSortVariables(sort, !!categoryId),\n ...(locale && {\n locale,\n }),\n first: count,\n };\n};\n\nexport default getSearchVariables;\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nconst getSortVariables = (sort?: string, isCategory: boolean = false) => {\n let output = {}\n switch (sort) {\n case 'price-asc':\n output = {\n sortKey: 'PRICE',\n reverse: false,\n }\n break\n case 'price-desc':\n output = {\n sortKey: 'PRICE',\n reverse: true,\n }\n break\n case 'trending-desc':\n output = {\n sortKey: 'BEST_SELLING',\n reverse: false,\n }\n break\n case 'latest-desc':\n output = {\n sortKey: isCategory ? 'CREATED' : 'CREATED_AT',\n reverse: true,\n }\n break\n }\n return output\n}\n\nexport default getSortVariables\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport Cookies from 'js-cookie'\nimport { SHOPIFY_CHECKOUT_ID_COOKIE } from '../const'\n\nconst getCheckoutId = (id?: string) => {\n return id ?? Cookies.get(SHOPIFY_CHECKOUT_ID_COOKIE);\n}\n\nexport default getCheckoutId\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: Removed store domain and api token\n*/\nexport const SHOPIFY_CHECKOUT_ID_COOKIE = 'shopify_checkoutId'\n\nexport const SHOPIFY_CHECKOUT_URL_COOKIE = 'shopify_checkoutUrl'\n\nexport const SHOPIFY_CUSTOMER_TOKEN_COOKIE = 'shopify_customerToken'\n\nexport const SHOPIFY_COOKIE_EXPIRE = 30\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { checkoutDetailsFragment } from '../queries/get-checkout-query'\n\nconst checkoutCreateMutation = /* GraphQL */ `\n mutation checkoutCreate($input: CheckoutCreateInput = {}) {\n checkoutCreate(input: $input) {\n checkoutUserErrors {\n code\n field\n message\n }\n checkout {\n ...checkoutDetails\n }\n }\n }\n\n ${checkoutDetailsFragment}\n`\nexport default checkoutCreateMutation\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: \n - Added sameSite and secure to the cookie options to allow third-party cookies.\n\t We need this to make work on the studio\n*/\nimport Cookies from 'js-cookie'\n\nimport {\n SHOPIFY_CHECKOUT_ID_COOKIE,\n SHOPIFY_CHECKOUT_URL_COOKIE,\n SHOPIFY_COOKIE_EXPIRE,\n} from '../const'\n\nimport checkoutCreateMutation from './mutations/checkout-create'\nimport {\n CheckoutCreatePayload,\n CheckoutLineItemInput,\n Mutation,\n MutationCheckoutCreateArgs,\n} from '../schema'\nimport { FetcherOptions } from '@plasmicpkgs/commerce'\n\nexport const checkoutCreate = async (\n fetch: <T = any, B = Body>(options: FetcherOptions<B>) => Promise<T>,\n lineItems: CheckoutLineItemInput[]\n): Promise<CheckoutCreatePayload> => {\n const { checkoutCreate } = await fetch<Mutation, MutationCheckoutCreateArgs>({\n query: checkoutCreateMutation,\n variables: {\n input: { lineItems },\n },\n })\n\n const checkout = checkoutCreate?.checkout\n if (checkout) {\n const checkoutId = checkout?.id\n const options: Cookies.CookieAttributes = {\n expires: SHOPIFY_COOKIE_EXPIRE,\n sameSite: \"none\",\n secure: true\n }\n Cookies.set(SHOPIFY_CHECKOUT_ID_COOKIE, checkoutId, options);\n if (checkout?.webUrl) {\n Cookies.set(SHOPIFY_CHECKOUT_URL_COOKIE, checkout.webUrl, options)\n }\n }\n\n return checkoutCreate!\n}\n\nexport default checkoutCreate\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nexport const colorMap: Record<string, string> = {\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n burgandy: '#800020',\n burgundy: '#800020',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgreen: '#006400',\n darkgrey: '#A9A9A9',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n grey: '#808080',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgreen: '#90EE90',\n lightgrey: '#D3D3D3',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n spacegrey: '#65737e',\n spacegray: '#65737e',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32',\n}\n","/* eslint-disable */\n/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes:\n - When a product doesn't have a variant, Shopify sets the default variant title as \"Default Title\"\n Changed to \"Default Variant\" to have the same default title as the Swell provider.\n*/\nimport type { Page } from \"../types/page\";\nimport type { Product } from \"@plasmicpkgs/commerce\";\nimport type { Cart, LineItem } from \"../types/cart\";\n\nimport {\n Product as ShopifyProduct,\n Checkout,\n CheckoutLineItemEdge,\n SelectedOption,\n ImageConnection,\n ProductVariantConnection,\n MoneyV2,\n ProductOption,\n Page as ShopifyPage,\n PageEdge,\n Collection,\n} from \"../schema\";\nimport { colorMap } from \"./colors\";\nimport { Category } from \"../types/site\";\n\nconst money = ({ amount, currencyCode }: MoneyV2) => {\n return {\n value: +amount,\n currencyCode,\n };\n};\n\nconst isDefaultOption = (selectedOption: SelectedOption) =>\n selectedOption.name === \"Title\";\n\nconst normalizeProductOption = ({\n id,\n name: displayName,\n values,\n}: ProductOption) => {\n return {\n __typename: \"MultipleChoiceOption\",\n id,\n displayName: displayName.toLowerCase(),\n values: values.map((value) => {\n let output: any = {\n label: value,\n };\n if (displayName.match(/colou?r/gi)) {\n const mapedColor = colorMap[value.toLowerCase().replace(/ /g, \"\")];\n if (mapedColor) {\n output = {\n ...output,\n hexColors: [mapedColor],\n };\n }\n }\n return output;\n }),\n };\n};\n\nconst normalizeProductImages = ({ edges }: ImageConnection) =>\n edges?.map(({ node: { originalSrc: url, ...rest } }) => ({\n url,\n ...rest,\n }));\n\nconst normalizeProductVariants = ({ edges }: ProductVariantConnection) => {\n return edges?.map(\n ({\n node: {\n id,\n selectedOptions,\n sku,\n title,\n priceV2,\n compareAtPriceV2,\n requiresShipping,\n availableForSale,\n },\n }) => {\n return {\n id,\n name: selectedOptions.some((o) => !isDefaultOption(o))\n ? title\n : \"Default variant\",\n sku: sku ?? id,\n price: +priceV2.amount,\n listPrice: +compareAtPriceV2?.amount,\n requiresShipping,\n availableForSale,\n options: selectedOptions.map(({ name, value }: SelectedOption) => {\n const options = normalizeProductOption({\n id,\n name,\n values: [value],\n });\n\n return options;\n }),\n };\n }\n );\n};\n\nexport function normalizeProduct({\n id,\n title: name,\n vendor,\n images,\n variants,\n description,\n descriptionHtml,\n handle,\n priceRange,\n options,\n metafields,\n ...rest\n}: any): Product {\n return {\n id,\n name,\n vendor,\n path: `/${handle}`,\n slug: handle?.replace(/^\\/+|\\/+$/g, \"\"),\n price: money(priceRange?.minVariantPrice),\n images: normalizeProductImages(images),\n variants: variants ? normalizeProductVariants(variants) : [],\n options: options\n ? options\n .filter((o: any) => !isDefaultOption(o)) // By default Shopify adds a 'Title' name when there's only one option. We don't need it. https://community.shopify.com/c/Shopify-APIs-SDKs/Adding-new-product-variant-is-automatically-adding-quot-Default/td-p/358095\n .map((o: any) => normalizeProductOption(o))\n : [],\n ...(description && { description }),\n ...(descriptionHtml && { descriptionHtml }),\n ...rest,\n };\n}\n\nexport function normalizeCart(checkout: any): Cart {\n return {\n id: checkout.id,\n url: checkout.webUrl,\n customerId: \"\",\n email: \"\",\n createdAt: checkout.createdAt,\n currency: {\n code: checkout.totalPriceV2?.currencyCode,\n },\n taxesIncluded: checkout.taxesIncluded,\n lineItems: checkout.lineItems?.edges.map(normalizeLineItem),\n lineItemsSubtotalPrice: +checkout.subtotalPriceV2?.amount,\n subtotalPrice: +checkout.subtotalPriceV2?.amount,\n totalPrice: +checkout.totalPriceV2?.amount,\n discounts: [],\n };\n}\n\nfunction normalizeLineItem({\n node: { id, title, variant, quantity },\n}: CheckoutLineItemEdge): LineItem {\n return {\n id,\n variantId: String(variant?.id),\n productId: String(variant?.product.id),\n name: `${title}`,\n quantity,\n variant: {\n id: String(variant?.id),\n sku: variant?.sku ?? \"\",\n name: variant?.title!,\n image: {\n url: variant?.image?.originalSrc || \"/product-img-placeholder.svg\",\n },\n requiresShipping: variant?.requiresShipping ?? false,\n price: variant?.priceV2?.amount,\n listPrice: variant?.compareAtPriceV2?.amount,\n },\n path: String(variant?.product?.handle),\n discounts: [],\n options: variant?.title == \"Default Title\" ? [] : variant?.selectedOptions,\n };\n}\n/*\nexport const normalizePage = (\n { title: name, handle, ...page }: ShopifyPage,\n locale: string = 'en-US'\n): Page => ({\n ...page,\n url: `/${locale}/${handle}`,\n name,\n})\n\nexport const normalizePages = (edges: PageEdge[], locale?: string): Page[] =>\n edges?.map((edge) => normalizePage(edge.node, locale))\n*/\nexport const normalizeCategory = ({\n title: name,\n handle,\n id,\n products,\n}: Collection): Category => ({\n id,\n name,\n slug: handle,\n path: `/${handle}`,\n isEmpty: products.edges.length === 0,\n});\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { ValidationError } from '@plasmicpkgs/commerce'\n\nimport {\n CheckoutErrorCode,\n CheckoutUserError,\n CustomerErrorCode,\n CustomerUserError,\n} from '../schema'\n\nexport type UserErrors = Array<CheckoutUserError | CustomerUserError>\n\nexport type UserErrorCode =\n | CustomerErrorCode\n | CheckoutErrorCode\n | null\n | undefined\n\nconst getCustomMessage = (code: UserErrorCode, message: string) => {\n switch (code) {\n case 'UNIDENTIFIED_CUSTOMER':\n message = 'Cannot find an account that matches the provided credentials'\n break\n }\n return message\n}\n\nexport const throwUserErrors = (errors?: UserErrors) => {\n if (errors && errors.length) {\n throw new ValidationError({\n errors: errors.map(({ code, message }) => ({\n code: code ?? 'validation_error',\n message: getCustomMessage(code, message),\n })),\n })\n }\n}\n\nexport default throwUserErrors\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport type { Cart } from '../types/cart'\nimport { CommerceError } from '@plasmicpkgs/commerce'\n\nimport {\n CheckoutLineItemsAddPayload,\n CheckoutLineItemsRemovePayload,\n CheckoutLineItemsUpdatePayload,\n CheckoutCreatePayload,\n CheckoutUserError,\n Checkout,\n Maybe,\n} from '../schema'\n\nimport { normalizeCart } from './normalize'\nimport throwUserErrors from './throw-user-errors'\n\nexport type CheckoutQuery = {\n checkout: Checkout\n checkoutUserErrors?: Array<CheckoutUserError>\n}\n\nexport type CheckoutPayload =\n | CheckoutLineItemsAddPayload\n | CheckoutLineItemsUpdatePayload\n | CheckoutLineItemsRemovePayload\n | CheckoutCreatePayload\n | CheckoutQuery\n\nconst checkoutToCart = (checkoutPayload?: Maybe<CheckoutPayload>): Cart => {\n throwUserErrors(checkoutPayload?.checkoutUserErrors)\n\n if (!checkoutPayload?.checkout) {\n throw new CommerceError({\n message: 'Missing checkout object from response',\n })\n }\n\n return normalizeCart(checkoutPayload?.checkout)\n}\n\nexport default checkoutToCart\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nconst getAllProductVendors = /* GraphQL */ `\n query getAllProductVendors($first: Int = 250, $cursor: String) {\n products(first: $first, after: $cursor) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n vendor\n }\n cursor\n }\n }\n }\n`\nexport default getAllProductVendors\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes:\n - Added count as a parameter to input\n*/\nimport { SWRHook, useSearch, UseSearch } from \"@plasmicpkgs/commerce\";\n\nimport {\n CollectionEdge,\n GetAllProductsQuery,\n GetProductsFromCollectionQueryVariables,\n Product as ShopifyProduct,\n ProductEdge,\n} from \"../schema\";\n\nimport {\n getAllProductsQuery,\n getCollectionProductsQuery,\n getSearchVariables,\n normalizeProduct,\n} from \"../utils\";\n\nimport type { SearchProductsHook } from \"@plasmicpkgs/commerce\";\n\nexport type SearchProductsInput = {\n search?: string;\n categoryId?: number;\n brandId?: number;\n sort?: string;\n locale?: string;\n count?: number;\n};\n\nconst useSearchTyped: UseSearch<typeof handler> = useSearch;\nexport default useSearchTyped;\n\nexport const handler: SWRHook<SearchProductsHook> = {\n fetchOptions: {\n query: getAllProductsQuery,\n },\n async fetcher({ input, options, fetch }) {\n const { categoryId, brandId } = input;\n const method = options?.method;\n const variables = getSearchVariables(input);\n let products;\n\n // change the query to getCollectionProductsQuery when categoryId is set\n if (categoryId) {\n const data = await fetch<\n CollectionEdge,\n GetProductsFromCollectionQueryVariables\n >({\n query: getCollectionProductsQuery,\n method,\n variables: {\n ...variables,\n first: undefined,\n },\n });\n // filter on client when brandId & categoryId are set since is not available on collection product query\n products = brandId\n ? data.node?.products?.edges\n ?.filter(\n ({ node: { vendor } }: ProductEdge) =>\n vendor.replace(/\\s+/g, \"-\").toLowerCase() ===\n `${brandId}`.toLowerCase()\n )\n .slice(0, input.count)\n : data.node?.products?.edges.slice(0, input.count);\n } else {\n const data = await fetch<GetAllProductsQuery>({\n query: options.query,\n method,\n variables,\n });\n products = data.products?.edges;\n }\n\n return {\n products: products?.map(({ node }) =>\n normalizeProduct(node as ShopifyProduct)\n ),\n found: !!products?.length,\n };\n },\n useHook:\n ({ useData }) =>\n (input = {}) => {\n return useData({\n input: [\n [\"search\", input.search],\n [\"categoryId\", input.categoryId],\n [\"brandId\", input.brandId],\n [\"sort\", input.sort],\n [\"locale\", input.locale],\n [\"count\", input.count],\n ],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n });\n },\n};\n","import { SWRHook } from '@plasmicpkgs/commerce'\nimport { useProduct, UseProduct } from '@plasmicpkgs/commerce'\n\nimport {\n GetProductByIdQuery,\n GetProductBySlugQuery,\n} from '../schema'\n\nimport {\n getProductQuery,\n normalizeProduct,\n} from '../utils'\n\nimport type { GetProductHook } from '@plasmicpkgs/commerce'\nimport { getProductQueryById } from '../utils/queries/get-product-query'\n\nexport type GetProductInput = {\n id?: string\n}\n\nexport default useProduct as UseProduct<typeof handler>\n\nexport const handler: SWRHook<GetProductHook> = {\n fetchOptions: {\n query: getProductQuery,\n },\n async fetcher({ input, options, fetch }) {\n const { id } = input\n if (!id) {\n return null\n }\n\n let product = null;\n if (id.startsWith(\"gid://shopify\")) {\n const data = await fetch<GetProductByIdQuery>({\n query: getProductQueryById,\n variables: { id }\n });\n product = data.product;\n } else {\n const data = await fetch<GetProductBySlugQuery>({\n query: options.query,\n variables: { slug: id }\n });\n\n if (data.productByHandle) {\n product = data.productByHandle;\n }\n }\n\n return product ? normalizeProduct(product) : null;\n },\n useHook:\n ({ useData }) =>\n (input = {}) => {\n return useData({\n input: [\n ['id', input.id],\n ],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n })\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { useMemo } from 'react'\nimport { useCart as useCommerceCart, UseCart } from '@plasmicpkgs/commerce'\n\nimport { SWRHook } from '@plasmicpkgs/commerce'\nimport { checkoutToCart } from '../utils'\nimport getCheckoutQuery from '../utils/queries/get-checkout-query'\nimport { GetCartHook } from '../types/cart'\nimport Cookies from 'js-cookie'\n\nimport {\n SHOPIFY_CHECKOUT_ID_COOKIE,\n SHOPIFY_CHECKOUT_URL_COOKIE,\n} from '../const'\n\nexport default useCommerceCart as UseCart<typeof handler>\n\nexport const handler: SWRHook<GetCartHook> = {\n fetchOptions: {\n query: getCheckoutQuery,\n },\n async fetcher({ input: { cartId }, options, fetch }) {\n if (cartId) {\n const { node: checkout } = await fetch({\n ...options,\n variables: {\n checkoutId: cartId,\n },\n })\n if (checkout?.completedAt) {\n Cookies.remove(SHOPIFY_CHECKOUT_ID_COOKIE)\n Cookies.remove(SHOPIFY_CHECKOUT_URL_COOKIE)\n return null\n } else {\n return checkoutToCart({\n checkout,\n })\n }\n }\n return null\n },\n useHook:\n ({ useData }) =>\n (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n })\n return useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.lineItems.length ?? 0) <= 0\n },\n enumerable: true,\n },\n }),\n [response]\n )\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { useCallback } from 'react'\nimport type { MutationHook } from '@plasmicpkgs/commerce';\nimport { CommerceError } from '@plasmicpkgs/commerce';\nimport { useAddItem, UseAddItem } from '@plasmicpkgs/commerce';\nimport type { AddItemHook } from '../types/cart'\nimport useCart from './use-cart'\n\nimport {\n checkoutLineItemAddMutation,\n getCheckoutId,\n checkoutToCart,\n checkoutCreate,\n} from '../utils'\nimport { Mutation, MutationCheckoutLineItemsAddArgs } from '../schema'\n\nexport default useAddItem as UseAddItem<typeof handler>\n\nexport const handler: MutationHook<AddItemHook> = {\n fetchOptions: {\n query: checkoutLineItemAddMutation,\n },\n async fetcher({ input: item, options, fetch }) {\n if (\n item.quantity &&\n (!Number.isInteger(item.quantity) || item.quantity! < 1)\n ) {\n throw new CommerceError({\n message: 'The item quantity has to be a valid integer greater than 0',\n })\n }\n\n const lineItems = [\n {\n variantId: item.variantId,\n quantity: item.quantity ?? 1,\n },\n ]\n\n let checkoutId = getCheckoutId()\n if (!checkoutId) {\n return checkoutToCart(await checkoutCreate(fetch, lineItems))\n } else {\n const { checkoutLineItemsAdd } = await fetch<\n Mutation,\n MutationCheckoutLineItemsAddArgs\n >({\n ...options,\n variables: {\n checkoutId,\n lineItems,\n },\n })\n return checkoutToCart(checkoutLineItemsAdd)\n }\n },\n useHook:\n ({ fetch }) =>\n () => {\n const { mutate } = useCart()\n return useCallback(\n async function addItem(input) {\n const data = await fetch({ input })\n await mutate(data, false)\n return data\n },\n [fetch, mutate]\n )\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { useCallback } from 'react'\nimport type {\n MutationHookContext,\n HookFetcherContext,\n} from '@plasmicpkgs/commerce'\nimport { ValidationError } from '@plasmicpkgs/commerce'\nimport { useRemoveItem, \n UseRemoveItem,\n} from '@plasmicpkgs/commerce'\nimport type { Cart, LineItem, RemoveItemHook } from '../types/cart'\nimport useCart from './use-cart'\n\nexport type RemoveItemFn<T = any> = T extends LineItem\n ? (input?: RemoveItemActionInput<T>) => Promise<Cart | null | undefined>\n : (input: RemoveItemActionInput<T>) => Promise<Cart | null>\n\nexport type RemoveItemActionInput<T = any> = T extends LineItem\n ? Partial<RemoveItemHook['actionInput']>\n : RemoveItemHook['actionInput']\n\nexport default useRemoveItem as UseRemoveItem<typeof handler>\n\nimport {\n checkoutLineItemRemoveMutation,\n getCheckoutId,\n checkoutToCart,\n} from '../utils'\n\nimport { Mutation, MutationCheckoutLineItemsRemoveArgs } from '../schema'\n\nexport const handler = {\n fetchOptions: {\n query: checkoutLineItemRemoveMutation,\n },\n async fetcher({\n input: { itemId },\n options,\n fetch,\n }: HookFetcherContext<RemoveItemHook>) {\n const data = await fetch<Mutation, MutationCheckoutLineItemsRemoveArgs>({\n ...options,\n variables: { checkoutId: getCheckoutId(), lineItemIds: [itemId] },\n })\n return checkoutToCart(data.checkoutLineItemsRemove)\n },\n useHook:\n ({ fetch }: MutationHookContext<RemoveItemHook>) =>\n <T extends LineItem | undefined = undefined>(ctx: { item?: T } = {}) => {\n const { item } = ctx\n const { mutate } = useCart()\n const removeItem: RemoveItemFn<LineItem> = async (input) => {\n const itemId = input?.id ?? item?.id\n\n if (!itemId) {\n throw new ValidationError({\n message: 'Invalid input used for this operation',\n })\n }\n\n const data = await fetch({ input: { itemId } })\n await mutate(data, false)\n return data\n }\n\n return useCallback(removeItem as RemoveItemFn<T>, [fetch, mutate])\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport type {\n HookFetcherContext,\n MutationHookContext,\n} from \"@plasmicpkgs/commerce\";\nimport {\n useUpdateItem,\n UseUpdateItem,\n ValidationError,\n} from \"@plasmicpkgs/commerce\";\nimport debounce from \"debounce\";\nimport { useCallback } from \"react\";\n\nimport { Mutation, MutationCheckoutLineItemsUpdateArgs } from \"../schema\";\nimport type { LineItem, UpdateItemHook } from \"../types/cart\";\nimport {\n checkoutLineItemUpdateMutation,\n checkoutToCart,\n getCheckoutId,\n} from \"../utils\";\nimport useCart from \"./use-cart\";\nimport { handler as removeItemHandler } from \"./use-remove-item\";\n\nexport type UpdateItemActionInput<T = any> = T extends LineItem\n ? Partial<UpdateItemHook[\"actionInput\"]>\n : UpdateItemHook[\"actionInput\"];\n\nexport default useUpdateItem as UseUpdateItem<typeof handler>;\n\nexport const handler = {\n fetchOptions: {\n query: checkoutLineItemUpdateMutation,\n },\n async fetcher({\n input: { itemId, item },\n options,\n fetch,\n }: HookFetcherContext<UpdateItemHook>) {\n if (Number.isInteger(item.quantity)) {\n // Also allow the update hook to remove an item if the quantity is lower than 1\n if (item.quantity! < 1) {\n return removeItemHandler.fetcher({\n options: removeItemHandler.fetchOptions,\n input: { itemId },\n fetch,\n });\n }\n } else if (item.quantity) {\n throw new ValidationError({\n message: \"The item quantity has to be a valid integer\",\n });\n }\n const { checkoutLineItemsUpdate } = await fetch<\n Mutation,\n MutationCheckoutLineItemsUpdateArgs\n >({\n ...options,\n variables: {\n checkoutId: getCheckoutId(),\n lineItems: [\n {\n id: itemId,\n quantity: item.quantity,\n },\n ],\n },\n });\n\n return checkoutToCart(checkoutLineItemsUpdate);\n },\n useHook:\n ({ fetch }: MutationHookContext<UpdateItemHook>) =>\n <T extends LineItem | undefined = undefined>(\n ctx: {\n item?: T;\n wait?: number;\n } = {}\n ) => {\n const { item } = ctx;\n const { mutate } = useCart() as any;\n\n return useCallback(\n debounce(async (input: UpdateItemActionInput<T>) => {\n const itemId = input.id ?? item?.id;\n if (!itemId || input.quantity == null) {\n throw new ValidationError({\n message: \"Invalid input used for this operation\",\n });\n }\n\n const data = await fetch({\n input: {\n item: {\n quantity: input.quantity,\n },\n itemId,\n },\n });\n await mutate(data, false);\n return data;\n }, ctx.wait ?? 500),\n [fetch, mutate]\n );\n },\n};\n","import { SWRHook, UseCategories, useCategories } from \"@plasmicpkgs/commerce\";\nimport { useMemo } from \"react\";\nimport { CollectionEdge } from \"../schema\";\nimport { GetCategoriesHook } from \"../types/site\";\nimport { getSiteCollectionsQuery, normalizeCategory } from \"../utils\";\nimport { getCollectionQueryById } from \"../utils/queries/get-collection-query\";\n\nexport default useCategories as UseCategories<typeof handler>;\n\nexport const handler: SWRHook<GetCategoriesHook> = {\n fetchOptions: {\n query: getSiteCollectionsQuery,\n },\n async fetcher({ input, options, fetch }) {\n const { categoryId } = input;\n\n if (!categoryId) {\n const data = await fetch({\n query: options.query,\n variables: {\n first: 250,\n },\n });\n return (\n data?.collections?.edges?.map(({ node }: CollectionEdge) =>\n normalizeCategory(node)\n ) ?? []\n );\n } else {\n const data = await fetch({\n query: getCollectionQueryById,\n variables: {\n ...(categoryId.startsWith(\"gid://\")\n ? { id: categoryId }\n : { handle: categoryId }),\n },\n });\n return !!data?.collection ? [normalizeCategory(data?.collection)] : [];\n }\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n input: [[\"categoryId\", input?.categoryId]],\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","import { SWRHook } from '@plasmicpkgs/commerce'\nimport { UseBrands, useBrands } from '@plasmicpkgs/commerce'\nimport { useMemo } from \"react\";\nimport { CollectionEdge, GetAllProductVendorsQuery, GetAllProductVendorsQueryVariables } from \"../schema\";\nimport { GetBrandsHook } from \"../types/site\"\nimport { getAllProductVendors, normalizeCategory } from \"../utils\"\n\nexport default useBrands as UseBrands<typeof handler>\n\nexport const handler: SWRHook<GetBrandsHook> = {\n fetchOptions: {\n query: getAllProductVendors,\n },\n async fetcher({ input, options, fetch }) {\n const data = await fetch<\n GetAllProductVendorsQuery,\n GetAllProductVendorsQueryVariables\n >({\n query: getAllProductVendors,\n variables: {\n first: 250,\n },\n });\n\n let vendorsStrings = data.products.edges.map(({ node: { vendor } }) => vendor)\n return Array.from((new Set(vendorsStrings)).values()).map((v) => {\n const id = v.replace(/\\s+/g, '-').toLowerCase()\n return {\n entityId: id,\n name: v,\n path: `brands/${id}`,\n }\n })\n },\n useHook:\n ({ useData }) =>\n (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n })\n return useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0\n },\n enumerable: true,\n },\n }),\n [response]\n )\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: \n - Before: The storeDomain and accessToken were defined at build time. \n So this file just implemented a fetcher with these parameters defined.\n - Now: The storeDomain and accessToken are defined at runtime. \n So we have to get the fetcher using these parameters.\n*/\nimport { Fetcher } from '@plasmicpkgs/commerce'\nimport { handleFetchResponse } from './utils'\n\nexport const getFetcher: \n (storeDomain: string, accessToken: string) => Fetcher =\n (storeDomain, accessToken) => {\n return async ({\n url = `https://${storeDomain}/api/2022-04/graphql.json`,\n method = 'POST',\n variables,\n query,\n }) => {\n const { locale, ...vars } = variables ?? {}\n return handleFetchResponse(\n await fetch(url, {\n method,\n body: JSON.stringify({ query, variables: vars }),\n headers: {\n 'X-Shopify-Storefront-Access-Token': accessToken,\n 'Content-Type': 'application/json',\n ...(locale && {\n 'Accept-Language': locale,\n }),\n },\n })\n )\n }\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: \n - Added storeDomain and accessToken parameters.\n*/\nimport {\n getCommerceProvider as getCoreCommerceProvider,\n useCommerce as useCoreCommerce,\n} from '@plasmicpkgs/commerce'\nimport { getShopifyProvider, ShopifyProvider } from './provider'\n\nexport type { ShopifyProvider }\n\nexport const useCommerce = () => useCoreCommerce<ShopifyProvider>()\n\nexport const getCommerceProvider = (storeDomain: string, accessToken: string) => \n getCoreCommerceProvider(getShopifyProvider(storeDomain, accessToken))\n\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes:\n - Removed authentication, customer and wishlist hooks.\n - Added storeDomain and accessToken parameters.\n*/\nimport { SHOPIFY_CHECKOUT_ID_COOKIE } from './const'\nimport { handler as useSearch } from './product/use-search'\nimport { handler as useProduct } from './product/use-product'\nimport { handler as useCart } from './cart/use-cart'\nimport { handler as useAddItem } from './cart/use-add-item'\nimport { handler as useUpdateItem } from './cart/use-update-item'\nimport { handler as useRemoveItem } from './cart/use-remove-item'\nimport { handler as useCategories } from './site/use-categories'\nimport { handler as useBrands } from './site/use-brands'\nimport { getFetcher } from './fetcher'\nimport { Fetcher } from '@plasmicpkgs/commerce'\n\nexport const getShopifyProvider = (storeDomain: string, accessToken: string) => (\n {\n locale: 'en-us',\n cartCookie: SHOPIFY_CHECKOUT_ID_COOKIE,\n cart: { useCart, useAddItem, useUpdateItem, useRemoveItem },\n fetcher: getFetcher(storeDomain, accessToken),\n products: { useSearch, useProduct },\n site: { useCategories, useBrands }\n }\n)\n\nexport type ShopifyProvider = {\n locale: string;\n cartCookie: string;\n fetcher: Fetcher;\n cart: {\n useCart: typeof useCart;\n useAddItem: typeof useAddItem;\n useUpdateItem: typeof useUpdateItem;\n useRemoveItem: typeof useRemoveItem\n };\n products: {\n useSearch: typeof useSearch\n useProduct: typeof useProduct\n };\n site: {\n useCategories: typeof useCategories\n useBrands: typeof useBrands\n }\n}\n","import { GlobalContextMeta } from \"@plasmicapp/host\";\nimport registerGlobalContext from \"@plasmicapp/host/registerGlobalContext\";\nimport React from \"react\";\nimport { Registerable } from \"./registerable\";\nimport { getCommerceProvider } from \"./shopify\";\nimport {\n CartActionsProvider,\n globalActionsRegistrations,\n} from \"@plasmicpkgs/commerce\";\n\ninterface CommerceProviderProps {\n children?: React.ReactNode;\n storeDomain: string;\n accessToken: string;\n}\n\nconst globalContextName = \"plasmic-commerce-shopify-provider\";\n\nexport const commerceProviderMeta: GlobalContextMeta<CommerceProviderProps> = {\n name: globalContextName,\n displayName: \"Shopify Provider\",\n props: {\n storeDomain: {\n type: \"string\",\n defaultValue: \"next-js-store.myshopify.com\",\n },\n accessToken: {\n type: \"string\",\n defaultValue: \"ef7d41c7bf7e1c214074d0d3047bcd7b\",\n },\n },\n unstable__globalActions: globalActionsRegistrations as any,\n description: `Your store domain usually looks like **storename.myshopify.com**.\n\nFor your access token, get it by following [this video](https://www.youtube.com/watch?v=wB_6cM7tdv4).\n\nSee also the [getting started video](https://www.youtube.com/watch?v=1OJ_gXmta2Q).`,\n importPath: \"@plasmicpkgs/commerce-shopify\",\n importName: \"CommerceProviderComponent\",\n};\n\nexport function CommerceProviderComponent(props: CommerceProviderProps) {\n const { storeDomain, accessToken, children } = props;\n\n const CommerceProvider = React.useMemo(\n () => getCommerceProvider(storeDomain, accessToken),\n [storeDomain, accessToken]\n );\n\n return (\n <CommerceProvider>\n <CartActionsProvider globalContextName={globalContextName}>\n {children}\n </CartActionsProvider>\n </CommerceProvider>\n );\n}\n\nexport function registerCommerceProvider(\n loader?: Registerable,\n customCommerceProviderMeta?: GlobalContextMeta<CommerceProviderProps>\n) {\n const doRegisterComponent: typeof registerGlobalContext = (...args) =>\n loader\n ? loader.registerGlobalContext(...args)\n : registerGlobalContext(...args);\n doRegisterComponent(\n CommerceProviderComponent,\n customCommerceProviderMeta ?? commerceProviderMeta\n );\n}\n","import { Registerable } from \"./registerable\";\nimport { registerCommerceProvider } from \"./registerCommerceProvider\";\nexport * from \"./registerable\";\nexport * from \"./registerCommerceProvider\";\nexport * from \"./shopify\";\n\nexport function registerAll(loader?: Registerable) {\n registerCommerceProvider(loader);\n}\n"],"names":["getError","errors","status","_errors","message","FetcherError","getAsyncError","_x","_getAsyncError","_asyncToGenerator","_regeneratorRuntime","mark","_callee","res","wrap","_context","prev","next","json","abrupt","sent","stop","apply","arguments","handleFetchResponse","_x2","_ref","_callee2","_yield$res$json","data","_context2","ok","length","getSearchVariables","brandId","search","categoryId","locale","count","query","searchQuery","_extends","sort","isCategory","output","sortKey","reverse","getSortVariables","first","getCheckoutId","id","Cookies","get","checkoutCreateMutation","checkoutCreate","fetch","lineItems","checkout","options","variables","input","set","expires","sameSite","secure","webUrl","colorMap","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burgandy","burgundy","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","spacegrey","spacegray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","money","value","amount","currencyCode","isDefaultOption","selectedOption","name","normalizeProductOption","_ref2","displayName","values","__typename","toLowerCase","map","label","match","mapedColor","replace","hexColors","normalizeProductVariants","_ref5","edges","_ref6","node","_ref6$node","selectedOptions","sku","title","priceV2","compareAtPriceV2","requiresShipping","availableForSale","some","o","price","listPrice","_ref7","normalizeProduct","_ref8","_ref3","vendor","images","variants","description","descriptionHtml","handle","priceRange","rest","_objectWithoutPropertiesLoose","_excluded2","path","slug","minVariantPrice","_ref4","_ref4$node","url","originalSrc","_excluded","filter","normalizeLineItem","_ref9","_ref9$node","variant","quantity","variantId","String","productId","product","_variant$sku","image","_variant$image","_variant$requiresShip","_variant$priceV","_variant$compareAtPri","_variant$product","discounts","normalizeCategory","_ref10","isEmpty","products","getCustomMessage","code","checkoutToCart","checkoutPayload","ValidationError","throwUserErrors","checkoutUserErrors","CommerceError","customerId","email","createdAt","currency","_checkout$totalPriceV","totalPriceV2","taxesIncluded","_checkout$lineItems","lineItemsSubtotalPrice","_checkout$subtotalPri","subtotalPriceV2","subtotalPrice","_checkout$subtotalPri2","totalPrice","_checkout$totalPriceV2","getAllProductVendors","handler","fetchOptions","fetcher","method","undefined","_data$node","slice","_data$node2","_data$products","_products","found","_products2","useHook","useData","swrOptions","revalidateOnFocus","startsWith","productByHandle","cartId","checkoutId","completedAt","remove","response","useMemo","Object","create","_response$data$lineIt","_response$data","enumerable","item","Number","isInteger","_item$quantity","t0","t1","checkoutLineItemsAdd","mutate","useCart","useCallback","_addItem","itemId","lineItemIds","checkoutLineItemsRemove","ctx","_input$id","_ref$input","removeItemHandler","checkoutLineItemsUpdate","debounce","_ctx$wait","wait","_data$collections$edg","_data$collections","collections","collection","_response$data$length","vendorsStrings","Array","from","Set","v","entityId","getFetcher","storeDomain","accessToken","_ref$url","_ref$method","vars","body","JSON","stringify","headers","X-Shopify-Storefront-Access-Token","Content-Type","Accept-Language","getCommerceProvider","getCoreCommerceProvider","cartCookie","cart","useAddItem","useUpdateItem","useRemoveItem","useSearch","useProduct","site","useCategories","useBrands","getShopifyProvider","commerceProviderMeta","props","type","defaultValue","unstable__globalActions","globalActionsRegistrations","importPath","importName","CommerceProviderComponent","children","CommerceProvider","React","CartActionsProvider","globalContextName","registerCommerceProvider","loader","customCommerceProviderMeta","registerGlobalContext","doRegisterComponent","useCoreCommerce"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commerce-shopify.cjs.production.min.js","sources":["../src/utils/handle-fetch-response.ts","../src/utils/get-search-variables.ts","../src/utils/get-sort-variables.ts","../src/utils/get-checkout-id.ts","../src/const.ts","../src/utils/mutations/checkout-create.ts","../src/utils/checkout-create.ts","../src/utils/colors.ts","../src/utils/normalize.ts","../src/utils/throw-user-errors.ts","../src/utils/checkout-to-cart.ts","../src/utils/queries/get-all-product-vendors-query.ts","../src/product/use-search.tsx","../src/product/use-product.tsx","../src/cart/use-cart.tsx","../src/cart/use-add-item.tsx","../src/cart/use-remove-item.tsx","../src/cart/use-update-item.tsx","../src/site/use-categories.tsx","../src/site/use-brands.tsx","../src/fetcher.ts","../src/shopify.tsx","../src/provider.ts","../src/registerCommerceProvider.tsx","../src/index.tsx"],"sourcesContent":["/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { FetcherError } from '@plasmicpkgs/commerce'\n\nexport function getError(errors: any[] | null, status: number) {\n errors = errors ?? [{ message: 'Failed to fetch Shopify API' }]\n return new FetcherError({ errors, status })\n}\n\nexport async function getAsyncError(res: Response) {\n const data = await res.json()\n return getError(data.errors, res.status)\n}\n\nconst handleFetchResponse = async (res: Response) => {\n if (res.ok) {\n const { data, errors } = await res.json()\n\n if (errors && errors.length) {\n throw getError(errors, res.status)\n }\n\n return data\n }\n\n throw await getAsyncError(res)\n}\n\nexport default handleFetchResponse\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes:\n - Added count as a parameter\n*/\nimport { SearchProductsBody } from \"@plasmicpkgs/commerce\";\nimport getSortVariables from \"./get-sort-variables\";\n\nexport const getSearchVariables = ({\n brandId,\n search,\n categoryId,\n sort,\n locale,\n count,\n}: SearchProductsBody) => {\n let query = \"\";\n\n const searchQuery = `${search}*`;\n if (search) {\n query += `product_type:${searchQuery} OR title:${searchQuery} OR tag:${searchQuery}`;\n }\n\n if (brandId) {\n query += `${search ? \"AND \" : \"\"}vendor:${brandId}`;\n }\n\n return {\n categoryId,\n query,\n ...getSortVariables(sort, !!categoryId),\n ...(locale && {\n locale,\n }),\n first: count,\n };\n};\n\nexport default getSearchVariables;\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nconst getSortVariables = (sort?: string, isCategory: boolean = false) => {\n let output = {}\n switch (sort) {\n case 'price-asc':\n output = {\n sortKey: 'PRICE',\n reverse: false,\n }\n break\n case 'price-desc':\n output = {\n sortKey: 'PRICE',\n reverse: true,\n }\n break\n case 'trending-desc':\n output = {\n sortKey: 'BEST_SELLING',\n reverse: false,\n }\n break\n case 'latest-desc':\n output = {\n sortKey: isCategory ? 'CREATED' : 'CREATED_AT',\n reverse: true,\n }\n break\n }\n return output\n}\n\nexport default getSortVariables\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport Cookies from 'js-cookie'\nimport { SHOPIFY_CHECKOUT_ID_COOKIE } from '../const'\n\nconst getCheckoutId = (id?: string) => {\n return id ?? Cookies.get(SHOPIFY_CHECKOUT_ID_COOKIE);\n}\n\nexport default getCheckoutId\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: Removed store domain and api token\n*/\nexport const SHOPIFY_CHECKOUT_ID_COOKIE = 'shopify_checkoutId'\n\nexport const SHOPIFY_CHECKOUT_URL_COOKIE = 'shopify_checkoutUrl'\n\nexport const SHOPIFY_CUSTOMER_TOKEN_COOKIE = 'shopify_customerToken'\n\nexport const SHOPIFY_COOKIE_EXPIRE = 30\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { checkoutDetailsFragment } from '../queries/get-checkout-query'\n\nconst checkoutCreateMutation = /* GraphQL */ `\n mutation checkoutCreate($input: CheckoutCreateInput = {}) {\n checkoutCreate(input: $input) {\n checkoutUserErrors {\n code\n field\n message\n }\n checkout {\n ...checkoutDetails\n }\n }\n }\n\n ${checkoutDetailsFragment}\n`\nexport default checkoutCreateMutation\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: \n - Added sameSite and secure to the cookie options to allow third-party cookies.\n\t We need this to make work on the studio\n*/\nimport Cookies from 'js-cookie'\n\nimport {\n SHOPIFY_CHECKOUT_ID_COOKIE,\n SHOPIFY_CHECKOUT_URL_COOKIE,\n SHOPIFY_COOKIE_EXPIRE,\n} from '../const'\n\nimport checkoutCreateMutation from './mutations/checkout-create'\nimport {\n CheckoutCreatePayload,\n CheckoutLineItemInput,\n Mutation,\n MutationCheckoutCreateArgs,\n} from '../schema'\nimport { FetcherOptions } from '@plasmicpkgs/commerce'\n\nexport const checkoutCreate = async (\n fetch: <T = any, B = Body>(options: FetcherOptions<B>) => Promise<T>,\n lineItems: CheckoutLineItemInput[]\n): Promise<CheckoutCreatePayload> => {\n const { checkoutCreate } = await fetch<Mutation, MutationCheckoutCreateArgs>({\n query: checkoutCreateMutation,\n variables: {\n input: { lineItems },\n },\n })\n\n const checkout = checkoutCreate?.checkout\n if (checkout) {\n const checkoutId = checkout?.id\n const options: Cookies.CookieAttributes = {\n expires: SHOPIFY_COOKIE_EXPIRE,\n sameSite: \"none\",\n secure: true\n }\n Cookies.set(SHOPIFY_CHECKOUT_ID_COOKIE, checkoutId, options);\n if (checkout?.webUrl) {\n Cookies.set(SHOPIFY_CHECKOUT_URL_COOKIE, checkout.webUrl, options)\n }\n }\n\n return checkoutCreate!\n}\n\nexport default checkoutCreate\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nexport const colorMap: Record<string, string> = {\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n burgandy: '#800020',\n burgundy: '#800020',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgreen: '#006400',\n darkgrey: '#A9A9A9',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n grey: '#808080',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgreen: '#90EE90',\n lightgrey: '#D3D3D3',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n spacegrey: '#65737e',\n spacegray: '#65737e',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32',\n}\n","/* eslint-disable */\n/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes:\n - When a product doesn't have a variant, Shopify sets the default variant title as \"Default Title\"\n Changed to \"Default Variant\" to have the same default title as the Swell provider.\n*/\nimport type { Page } from \"../types/page\";\nimport type { Product } from \"@plasmicpkgs/commerce\";\nimport type { Cart, LineItem } from \"../types/cart\";\n\nimport {\n Product as ShopifyProduct,\n Checkout,\n CheckoutLineItemEdge,\n SelectedOption,\n Image,\n ImageConnection,\n ProductVariantConnection,\n MoneyV2,\n ProductOption,\n Page as ShopifyPage,\n PageEdge,\n Collection,\n} from \"../schema\";\nimport { colorMap } from \"./colors\";\nimport { Category } from \"../types/site\";\n\nconst money = ({ amount, currencyCode }: MoneyV2) => {\n return {\n value: +amount,\n currencyCode,\n };\n};\n\nconst isDefaultOption = (selectedOption: SelectedOption) =>\n selectedOption.name === \"Title\";\n\nconst normalizeProductOption = ({\n id,\n name: displayName,\n values,\n}: ProductOption) => {\n return {\n __typename: \"MultipleChoiceOption\",\n id,\n displayName: displayName.toLowerCase(),\n values: values.map((value) => {\n let output: any = {\n label: value,\n };\n if (displayName.match(/colou?r/gi)) {\n const mapedColor = colorMap[value.toLowerCase().replace(/ /g, \"\")];\n if (mapedColor) {\n output = {\n ...output,\n hexColors: [mapedColor],\n };\n }\n }\n return output;\n }),\n };\n};\n\nconst normalizeImage = ({ originalSrc: url, ...rest }: Image) => ({\n url,\n ...rest,\n});\n\nconst normalizeProductImages = ({ edges }: ImageConnection) =>\n edges?.map(({ node }) => normalizeImage(node));\n\nconst normalizeProductVariants = ({ edges }: ProductVariantConnection) => {\n return edges?.map(\n ({\n node: {\n id,\n selectedOptions,\n sku,\n title,\n priceV2,\n compareAtPriceV2,\n requiresShipping,\n availableForSale,\n },\n }) => {\n return {\n id,\n name: selectedOptions.some((o) => !isDefaultOption(o))\n ? title\n : \"Default variant\",\n sku: sku ?? id,\n price: +priceV2.amount,\n listPrice: +compareAtPriceV2?.amount,\n requiresShipping,\n availableForSale,\n options: selectedOptions.map(({ name, value }: SelectedOption) => {\n const options = normalizeProductOption({\n id,\n name,\n values: [value],\n });\n\n return options;\n }),\n };\n }\n );\n};\n\nexport function normalizeProduct({\n id,\n title: name,\n vendor,\n images,\n variants,\n description,\n descriptionHtml,\n handle,\n priceRange,\n options,\n metafields,\n ...rest\n}: any): Product {\n return {\n id,\n name,\n vendor,\n path: `/${handle}`,\n slug: handle?.replace(/^\\/+|\\/+$/g, \"\"),\n price: money(priceRange?.minVariantPrice),\n images: normalizeProductImages(images),\n variants: variants ? normalizeProductVariants(variants) : [],\n options: options\n ? options\n .filter((o: any) => !isDefaultOption(o)) // By default Shopify adds a 'Title' name when there's only one option. We don't need it. https://community.shopify.com/c/Shopify-APIs-SDKs/Adding-new-product-variant-is-automatically-adding-quot-Default/td-p/358095\n .map((o: any) => normalizeProductOption(o))\n : [],\n ...(description && { description }),\n ...(descriptionHtml && { descriptionHtml }),\n ...rest,\n };\n}\n\nexport function normalizeCart(checkout: any): Cart {\n return {\n id: checkout.id,\n url: checkout.webUrl,\n customerId: \"\",\n email: \"\",\n createdAt: checkout.createdAt,\n currency: {\n code: checkout.totalPriceV2?.currencyCode,\n },\n taxesIncluded: checkout.taxesIncluded,\n lineItems: checkout.lineItems?.edges.map(normalizeLineItem),\n lineItemsSubtotalPrice: +checkout.subtotalPriceV2?.amount,\n subtotalPrice: +checkout.subtotalPriceV2?.amount,\n totalPrice: +checkout.totalPriceV2?.amount,\n discounts: [],\n };\n}\n\nfunction normalizeLineItem({\n node: { id, title, variant, quantity },\n}: CheckoutLineItemEdge): LineItem {\n return {\n id,\n variantId: String(variant?.id),\n productId: String(variant?.product.id),\n name: `${title}`,\n quantity,\n variant: {\n id: String(variant?.id),\n sku: variant?.sku ?? \"\",\n name: variant?.title!,\n image: {\n url: variant?.image?.originalSrc || \"/product-img-placeholder.svg\",\n },\n requiresShipping: variant?.requiresShipping ?? false,\n price: variant?.priceV2?.amount,\n listPrice: variant?.compareAtPriceV2?.amount,\n },\n path: String(variant?.product?.handle),\n discounts: [],\n options: variant?.title == \"Default Title\" ? [] : variant?.selectedOptions,\n };\n}\n/*\nexport const normalizePage = (\n { title: name, handle, ...page }: ShopifyPage,\n locale: string = 'en-US'\n): Page => ({\n ...page,\n url: `/${locale}/${handle}`,\n name,\n})\n\nexport const normalizePages = (edges: PageEdge[], locale?: string): Page[] =>\n edges?.map((edge) => normalizePage(edge.node, locale))\n*/\nexport const normalizeCategory = ({\n title: name,\n handle,\n id,\n products,\n image,\n}: Collection): Category => ({\n id,\n name,\n slug: handle,\n path: `/${handle}`,\n isEmpty: products.edges.length === 0,\n images: image ? [normalizeImage(image)] : undefined,\n});\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { ValidationError } from '@plasmicpkgs/commerce'\n\nimport {\n CheckoutErrorCode,\n CheckoutUserError,\n CustomerErrorCode,\n CustomerUserError,\n} from '../schema'\n\nexport type UserErrors = Array<CheckoutUserError | CustomerUserError>\n\nexport type UserErrorCode =\n | CustomerErrorCode\n | CheckoutErrorCode\n | null\n | undefined\n\nconst getCustomMessage = (code: UserErrorCode, message: string) => {\n switch (code) {\n case 'UNIDENTIFIED_CUSTOMER':\n message = 'Cannot find an account that matches the provided credentials'\n break\n }\n return message\n}\n\nexport const throwUserErrors = (errors?: UserErrors) => {\n if (errors && errors.length) {\n throw new ValidationError({\n errors: errors.map(({ code, message }) => ({\n code: code ?? 'validation_error',\n message: getCustomMessage(code, message),\n })),\n })\n }\n}\n\nexport default throwUserErrors\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport type { Cart } from '../types/cart'\nimport { CommerceError } from '@plasmicpkgs/commerce'\n\nimport {\n CheckoutLineItemsAddPayload,\n CheckoutLineItemsRemovePayload,\n CheckoutLineItemsUpdatePayload,\n CheckoutCreatePayload,\n CheckoutUserError,\n Checkout,\n Maybe,\n} from '../schema'\n\nimport { normalizeCart } from './normalize'\nimport throwUserErrors from './throw-user-errors'\n\nexport type CheckoutQuery = {\n checkout: Checkout\n checkoutUserErrors?: Array<CheckoutUserError>\n}\n\nexport type CheckoutPayload =\n | CheckoutLineItemsAddPayload\n | CheckoutLineItemsUpdatePayload\n | CheckoutLineItemsRemovePayload\n | CheckoutCreatePayload\n | CheckoutQuery\n\nconst checkoutToCart = (checkoutPayload?: Maybe<CheckoutPayload>): Cart => {\n throwUserErrors(checkoutPayload?.checkoutUserErrors)\n\n if (!checkoutPayload?.checkout) {\n throw new CommerceError({\n message: 'Missing checkout object from response',\n })\n }\n\n return normalizeCart(checkoutPayload?.checkout)\n}\n\nexport default checkoutToCart\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nconst getAllProductVendors = /* GraphQL */ `\n query getAllProductVendors($first: Int = 250, $cursor: String) {\n products(first: $first, after: $cursor) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n }\n edges {\n node {\n vendor\n }\n cursor\n }\n }\n }\n`\nexport default getAllProductVendors\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes:\n - Added count as a parameter to input\n*/\nimport { SWRHook, useSearch, UseSearch } from \"@plasmicpkgs/commerce\";\n\nimport {\n CollectionEdge,\n GetAllProductsQuery,\n GetProductsFromCollectionQueryVariables,\n Product as ShopifyProduct,\n ProductEdge,\n} from \"../schema\";\n\nimport {\n getAllProductsQuery,\n getCollectionProductsQuery,\n getSearchVariables,\n normalizeProduct,\n} from \"../utils\";\n\nimport type { SearchProductsHook } from \"@plasmicpkgs/commerce\";\n\nexport type SearchProductsInput = {\n search?: string;\n categoryId?: number;\n brandId?: number;\n sort?: string;\n locale?: string;\n count?: number;\n};\n\nconst useSearchTyped: UseSearch<typeof handler> = useSearch;\nexport default useSearchTyped;\n\nexport const handler: SWRHook<SearchProductsHook> = {\n fetchOptions: {\n query: getAllProductsQuery,\n },\n async fetcher({ input, options, fetch }) {\n const { categoryId, brandId } = input;\n const method = options?.method;\n const variables = getSearchVariables(input);\n let products;\n\n // change the query to getCollectionProductsQuery when categoryId is set\n if (categoryId) {\n const data = await fetch<\n CollectionEdge,\n GetProductsFromCollectionQueryVariables\n >({\n query: getCollectionProductsQuery,\n method,\n variables: {\n ...variables,\n first: undefined,\n },\n });\n // filter on client when brandId & categoryId are set since is not available on collection product query\n products = brandId\n ? data.node?.products?.edges\n ?.filter(\n ({ node: { vendor } }: ProductEdge) =>\n vendor.replace(/\\s+/g, \"-\").toLowerCase() ===\n `${brandId}`.toLowerCase()\n )\n .slice(0, input.count)\n : data.node?.products?.edges.slice(0, input.count);\n } else {\n const data = await fetch<GetAllProductsQuery>({\n query: options.query,\n method,\n variables,\n });\n products = data.products?.edges;\n }\n\n return {\n products: products?.map(({ node }) =>\n normalizeProduct(node as ShopifyProduct)\n ),\n found: !!products?.length,\n };\n },\n useHook:\n ({ useData }) =>\n (input = {}) => {\n return useData({\n input: [\n [\"search\", input.search],\n [\"categoryId\", input.categoryId],\n [\"brandId\", input.brandId],\n [\"sort\", input.sort],\n [\"locale\", input.locale],\n [\"count\", input.count],\n ],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n });\n },\n};\n","import { SWRHook } from '@plasmicpkgs/commerce'\nimport { useProduct, UseProduct } from '@plasmicpkgs/commerce'\n\nimport {\n GetProductByIdQuery,\n GetProductBySlugQuery,\n} from '../schema'\n\nimport {\n getProductQuery,\n normalizeProduct,\n} from '../utils'\n\nimport type { GetProductHook } from '@plasmicpkgs/commerce'\nimport { getProductQueryById } from '../utils/queries/get-product-query'\n\nexport type GetProductInput = {\n id?: string\n}\n\nexport default useProduct as UseProduct<typeof handler>\n\nexport const handler: SWRHook<GetProductHook> = {\n fetchOptions: {\n query: getProductQuery,\n },\n async fetcher({ input, options, fetch }) {\n const { id } = input\n if (!id) {\n return null\n }\n\n let product = null;\n if (id.startsWith(\"gid://shopify\")) {\n const data = await fetch<GetProductByIdQuery>({\n query: getProductQueryById,\n variables: { id }\n });\n product = data.product;\n } else {\n const data = await fetch<GetProductBySlugQuery>({\n query: options.query,\n variables: { slug: id }\n });\n\n if (data.productByHandle) {\n product = data.productByHandle;\n }\n }\n\n return product ? normalizeProduct(product) : null;\n },\n useHook:\n ({ useData }) =>\n (input = {}) => {\n return useData({\n input: [\n ['id', input.id],\n ],\n swrOptions: {\n revalidateOnFocus: false,\n ...input.swrOptions,\n },\n })\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { useMemo } from 'react'\nimport { useCart as useCommerceCart, UseCart } from '@plasmicpkgs/commerce'\n\nimport { SWRHook } from '@plasmicpkgs/commerce'\nimport { checkoutToCart } from '../utils'\nimport getCheckoutQuery from '../utils/queries/get-checkout-query'\nimport { GetCartHook } from '../types/cart'\nimport Cookies from 'js-cookie'\n\nimport {\n SHOPIFY_CHECKOUT_ID_COOKIE,\n SHOPIFY_CHECKOUT_URL_COOKIE,\n} from '../const'\n\nexport default useCommerceCart as UseCart<typeof handler>\n\nexport const handler: SWRHook<GetCartHook> = {\n fetchOptions: {\n query: getCheckoutQuery,\n },\n async fetcher({ input: { cartId }, options, fetch }) {\n if (cartId) {\n const { node: checkout } = await fetch({\n ...options,\n variables: {\n checkoutId: cartId,\n },\n })\n if (checkout?.completedAt) {\n Cookies.remove(SHOPIFY_CHECKOUT_ID_COOKIE)\n Cookies.remove(SHOPIFY_CHECKOUT_URL_COOKIE)\n return null\n } else {\n return checkoutToCart({\n checkout,\n })\n }\n }\n return null\n },\n useHook:\n ({ useData }) =>\n (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n })\n return useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.lineItems.length ?? 0) <= 0\n },\n enumerable: true,\n },\n }),\n [response]\n )\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { useCallback } from 'react'\nimport type { MutationHook } from '@plasmicpkgs/commerce';\nimport { CommerceError } from '@plasmicpkgs/commerce';\nimport { useAddItem, UseAddItem } from '@plasmicpkgs/commerce';\nimport type { AddItemHook } from '../types/cart'\nimport useCart from './use-cart'\n\nimport {\n checkoutLineItemAddMutation,\n getCheckoutId,\n checkoutToCart,\n checkoutCreate,\n} from '../utils'\nimport { Mutation, MutationCheckoutLineItemsAddArgs } from '../schema'\n\nexport default useAddItem as UseAddItem<typeof handler>\n\nexport const handler: MutationHook<AddItemHook> = {\n fetchOptions: {\n query: checkoutLineItemAddMutation,\n },\n async fetcher({ input: item, options, fetch }) {\n if (\n item.quantity &&\n (!Number.isInteger(item.quantity) || item.quantity! < 1)\n ) {\n throw new CommerceError({\n message: 'The item quantity has to be a valid integer greater than 0',\n })\n }\n\n const lineItems = [\n {\n variantId: item.variantId,\n quantity: item.quantity ?? 1,\n },\n ]\n\n let checkoutId = getCheckoutId()\n if (!checkoutId) {\n return checkoutToCart(await checkoutCreate(fetch, lineItems))\n } else {\n const { checkoutLineItemsAdd } = await fetch<\n Mutation,\n MutationCheckoutLineItemsAddArgs\n >({\n ...options,\n variables: {\n checkoutId,\n lineItems,\n },\n })\n return checkoutToCart(checkoutLineItemsAdd)\n }\n },\n useHook:\n ({ fetch }) =>\n () => {\n const { mutate } = useCart()\n return useCallback(\n async function addItem(input) {\n const data = await fetch({ input })\n await mutate(data, false)\n return data\n },\n [fetch, mutate]\n )\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport { useCallback } from 'react'\nimport type {\n MutationHookContext,\n HookFetcherContext,\n} from '@plasmicpkgs/commerce'\nimport { ValidationError } from '@plasmicpkgs/commerce'\nimport { useRemoveItem, \n UseRemoveItem,\n} from '@plasmicpkgs/commerce'\nimport type { Cart, LineItem, RemoveItemHook } from '../types/cart'\nimport useCart from './use-cart'\n\nexport type RemoveItemFn<T = any> = T extends LineItem\n ? (input?: RemoveItemActionInput<T>) => Promise<Cart | null | undefined>\n : (input: RemoveItemActionInput<T>) => Promise<Cart | null>\n\nexport type RemoveItemActionInput<T = any> = T extends LineItem\n ? Partial<RemoveItemHook['actionInput']>\n : RemoveItemHook['actionInput']\n\nexport default useRemoveItem as UseRemoveItem<typeof handler>\n\nimport {\n checkoutLineItemRemoveMutation,\n getCheckoutId,\n checkoutToCart,\n} from '../utils'\n\nimport { Mutation, MutationCheckoutLineItemsRemoveArgs } from '../schema'\n\nexport const handler = {\n fetchOptions: {\n query: checkoutLineItemRemoveMutation,\n },\n async fetcher({\n input: { itemId },\n options,\n fetch,\n }: HookFetcherContext<RemoveItemHook>) {\n const data = await fetch<Mutation, MutationCheckoutLineItemsRemoveArgs>({\n ...options,\n variables: { checkoutId: getCheckoutId(), lineItemIds: [itemId] },\n })\n return checkoutToCart(data.checkoutLineItemsRemove)\n },\n useHook:\n ({ fetch }: MutationHookContext<RemoveItemHook>) =>\n <T extends LineItem | undefined = undefined>(ctx: { item?: T } = {}) => {\n const { item } = ctx\n const { mutate } = useCart()\n const removeItem: RemoveItemFn<LineItem> = async (input) => {\n const itemId = input?.id ?? item?.id\n\n if (!itemId) {\n throw new ValidationError({\n message: 'Invalid input used for this operation',\n })\n }\n\n const data = await fetch({ input: { itemId } })\n await mutate(data, false)\n return data\n }\n\n return useCallback(removeItem as RemoveItemFn<T>, [fetch, mutate])\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: None\n*/\nimport type {\n HookFetcherContext,\n MutationHookContext,\n} from \"@plasmicpkgs/commerce\";\nimport {\n useUpdateItem,\n UseUpdateItem,\n ValidationError,\n} from \"@plasmicpkgs/commerce\";\nimport debounce from \"debounce\";\nimport { useCallback } from \"react\";\n\nimport { Mutation, MutationCheckoutLineItemsUpdateArgs } from \"../schema\";\nimport type { LineItem, UpdateItemHook } from \"../types/cart\";\nimport {\n checkoutLineItemUpdateMutation,\n checkoutToCart,\n getCheckoutId,\n} from \"../utils\";\nimport useCart from \"./use-cart\";\nimport { handler as removeItemHandler } from \"./use-remove-item\";\n\nexport type UpdateItemActionInput<T = any> = T extends LineItem\n ? Partial<UpdateItemHook[\"actionInput\"]>\n : UpdateItemHook[\"actionInput\"];\n\nexport default useUpdateItem as UseUpdateItem<typeof handler>;\n\nexport const handler = {\n fetchOptions: {\n query: checkoutLineItemUpdateMutation,\n },\n async fetcher({\n input: { itemId, item },\n options,\n fetch,\n }: HookFetcherContext<UpdateItemHook>) {\n if (Number.isInteger(item.quantity)) {\n // Also allow the update hook to remove an item if the quantity is lower than 1\n if (item.quantity! < 1) {\n return removeItemHandler.fetcher({\n options: removeItemHandler.fetchOptions,\n input: { itemId },\n fetch,\n });\n }\n } else if (item.quantity) {\n throw new ValidationError({\n message: \"The item quantity has to be a valid integer\",\n });\n }\n const { checkoutLineItemsUpdate } = await fetch<\n Mutation,\n MutationCheckoutLineItemsUpdateArgs\n >({\n ...options,\n variables: {\n checkoutId: getCheckoutId(),\n lineItems: [\n {\n id: itemId,\n quantity: item.quantity,\n },\n ],\n },\n });\n\n return checkoutToCart(checkoutLineItemsUpdate);\n },\n useHook:\n ({ fetch }: MutationHookContext<UpdateItemHook>) =>\n <T extends LineItem | undefined = undefined>(\n ctx: {\n item?: T;\n wait?: number;\n } = {}\n ) => {\n const { item } = ctx;\n const { mutate } = useCart() as any;\n\n return useCallback(\n debounce(async (input: UpdateItemActionInput<T>) => {\n const itemId = input.id ?? item?.id;\n if (!itemId || input.quantity == null) {\n throw new ValidationError({\n message: \"Invalid input used for this operation\",\n });\n }\n\n const data = await fetch({\n input: {\n item: {\n quantity: input.quantity,\n },\n itemId,\n },\n });\n await mutate(data, false);\n return data;\n }, ctx.wait ?? 500),\n [fetch, mutate]\n );\n },\n};\n","import { SWRHook, UseCategories, useCategories } from \"@plasmicpkgs/commerce\";\nimport { useMemo } from \"react\";\nimport { CollectionEdge } from \"../schema\";\nimport { GetCategoriesHook } from \"../types/site\";\nimport { getSiteCollectionsQuery, normalizeCategory } from \"../utils\";\nimport { getCollectionQueryById } from \"../utils/queries/get-collection-query\";\n\nexport default useCategories as UseCategories<typeof handler>;\n\nexport const handler: SWRHook<GetCategoriesHook> = {\n fetchOptions: {\n query: getSiteCollectionsQuery,\n },\n async fetcher({ input, options, fetch }) {\n const { categoryId } = input;\n\n if (!categoryId) {\n const data = await fetch({\n query: options.query,\n variables: {\n first: 250,\n },\n });\n return (\n data?.collections?.edges?.map(({ node }: CollectionEdge) =>\n normalizeCategory(node)\n ) ?? []\n );\n } else {\n const data = await fetch({\n query: getCollectionQueryById,\n variables: {\n ...(categoryId.startsWith(\"gid://\")\n ? { id: categoryId }\n : { handle: categoryId }),\n },\n });\n return !!data?.collection ? [normalizeCategory(data?.collection)] : [];\n }\n },\n useHook: ({ useData }) => (input) => {\n const response = useData({\n input: [[\"categoryId\", input?.categoryId]],\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n });\n return useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0;\n },\n enumerable: true,\n },\n }),\n [response]\n );\n },\n};\n","import { SWRHook } from '@plasmicpkgs/commerce'\nimport { UseBrands, useBrands } from '@plasmicpkgs/commerce'\nimport { useMemo } from \"react\";\nimport { CollectionEdge, GetAllProductVendorsQuery, GetAllProductVendorsQueryVariables } from \"../schema\";\nimport { GetBrandsHook } from \"../types/site\"\nimport { getAllProductVendors, normalizeCategory } from \"../utils\"\n\nexport default useBrands as UseBrands<typeof handler>\n\nexport const handler: SWRHook<GetBrandsHook> = {\n fetchOptions: {\n query: getAllProductVendors,\n },\n async fetcher({ input, options, fetch }) {\n const data = await fetch<\n GetAllProductVendorsQuery,\n GetAllProductVendorsQueryVariables\n >({\n query: getAllProductVendors,\n variables: {\n first: 250,\n },\n });\n\n let vendorsStrings = data.products.edges.map(({ node: { vendor } }) => vendor)\n return Array.from((new Set(vendorsStrings)).values()).map((v) => {\n const id = v.replace(/\\s+/g, '-').toLowerCase()\n return {\n entityId: id,\n name: v,\n path: `brands/${id}`,\n }\n })\n },\n useHook:\n ({ useData }) =>\n (input) => {\n const response = useData({\n swrOptions: { revalidateOnFocus: false, ...input?.swrOptions },\n })\n return useMemo(\n () =>\n Object.create(response, {\n isEmpty: {\n get() {\n return (response.data?.length ?? 0) <= 0\n },\n enumerable: true,\n },\n }),\n [response]\n )\n },\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: \n - Before: The storeDomain and accessToken were defined at build time. \n So this file just implemented a fetcher with these parameters defined.\n - Now: The storeDomain and accessToken are defined at runtime. \n So we have to get the fetcher using these parameters.\n*/\nimport { Fetcher } from '@plasmicpkgs/commerce'\nimport { handleFetchResponse } from './utils'\n\nexport const getFetcher: \n (storeDomain: string, accessToken: string) => Fetcher =\n (storeDomain, accessToken) => {\n return async ({\n url = `https://${storeDomain}/api/2022-04/graphql.json`,\n method = 'POST',\n variables,\n query,\n }) => {\n const { locale, ...vars } = variables ?? {}\n return handleFetchResponse(\n await fetch(url, {\n method,\n body: JSON.stringify({ query, variables: vars }),\n headers: {\n 'X-Shopify-Storefront-Access-Token': accessToken,\n 'Content-Type': 'application/json',\n ...(locale && {\n 'Accept-Language': locale,\n }),\n },\n })\n )\n }\n}\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes: \n - Added storeDomain and accessToken parameters.\n*/\nimport {\n getCommerceProvider as getCoreCommerceProvider,\n useCommerce as useCoreCommerce,\n} from '@plasmicpkgs/commerce'\nimport { getShopifyProvider, ShopifyProvider } from './provider'\n\nexport type { ShopifyProvider }\n\nexport const useCommerce = () => useCoreCommerce<ShopifyProvider>()\n\nexport const getCommerceProvider = (storeDomain: string, accessToken: string) => \n getCoreCommerceProvider(getShopifyProvider(storeDomain, accessToken))\n\n","/*\n Forked from https://github.com/vercel/commerce/tree/main/packages/shopify/src\n Changes:\n - Removed authentication, customer and wishlist hooks.\n - Added storeDomain and accessToken parameters.\n*/\nimport { SHOPIFY_CHECKOUT_ID_COOKIE } from './const'\nimport { handler as useSearch } from './product/use-search'\nimport { handler as useProduct } from './product/use-product'\nimport { handler as useCart } from './cart/use-cart'\nimport { handler as useAddItem } from './cart/use-add-item'\nimport { handler as useUpdateItem } from './cart/use-update-item'\nimport { handler as useRemoveItem } from './cart/use-remove-item'\nimport { handler as useCategories } from './site/use-categories'\nimport { handler as useBrands } from './site/use-brands'\nimport { getFetcher } from './fetcher'\nimport { Fetcher } from '@plasmicpkgs/commerce'\n\nexport const getShopifyProvider = (storeDomain: string, accessToken: string) => (\n {\n locale: 'en-us',\n cartCookie: SHOPIFY_CHECKOUT_ID_COOKIE,\n cart: { useCart, useAddItem, useUpdateItem, useRemoveItem },\n fetcher: getFetcher(storeDomain, accessToken),\n products: { useSearch, useProduct },\n site: { useCategories, useBrands }\n }\n)\n\nexport type ShopifyProvider = {\n locale: string;\n cartCookie: string;\n fetcher: Fetcher;\n cart: {\n useCart: typeof useCart;\n useAddItem: typeof useAddItem;\n useUpdateItem: typeof useUpdateItem;\n useRemoveItem: typeof useRemoveItem\n };\n products: {\n useSearch: typeof useSearch\n useProduct: typeof useProduct\n };\n site: {\n useCategories: typeof useCategories\n useBrands: typeof useBrands\n }\n}\n","import { GlobalContextMeta } from \"@plasmicapp/host\";\nimport registerGlobalContext from \"@plasmicapp/host/registerGlobalContext\";\nimport React from \"react\";\nimport { Registerable } from \"./registerable\";\nimport { getCommerceProvider } from \"./shopify\";\nimport {\n CartActionsProvider,\n globalActionsRegistrations,\n} from \"@plasmicpkgs/commerce\";\n\ninterface CommerceProviderProps {\n children?: React.ReactNode;\n storeDomain: string;\n accessToken: string;\n}\n\nconst globalContextName = \"plasmic-commerce-shopify-provider\";\n\nexport const commerceProviderMeta: GlobalContextMeta<CommerceProviderProps> = {\n name: globalContextName,\n displayName: \"Shopify Provider\",\n props: {\n storeDomain: {\n type: \"string\",\n defaultValue: \"next-js-store.myshopify.com\",\n },\n accessToken: {\n type: \"string\",\n defaultValue: \"ef7d41c7bf7e1c214074d0d3047bcd7b\",\n },\n },\n unstable__globalActions: globalActionsRegistrations as any,\n description: `Your store domain usually looks like **storename.myshopify.com**.\n\nFor your access token, get it by following [this video](https://www.youtube.com/watch?v=wB_6cM7tdv4).\n\nSee also the [getting started video](https://www.youtube.com/watch?v=1OJ_gXmta2Q).`,\n importPath: \"@plasmicpkgs/commerce-shopify\",\n importName: \"CommerceProviderComponent\",\n};\n\nexport function CommerceProviderComponent(props: CommerceProviderProps) {\n const { storeDomain, accessToken, children } = props;\n\n const CommerceProvider = React.useMemo(\n () => getCommerceProvider(storeDomain, accessToken),\n [storeDomain, accessToken]\n );\n\n return (\n <CommerceProvider>\n <CartActionsProvider globalContextName={globalContextName}>\n {children}\n </CartActionsProvider>\n </CommerceProvider>\n );\n}\n\nexport function registerCommerceProvider(\n loader?: Registerable,\n customCommerceProviderMeta?: GlobalContextMeta<CommerceProviderProps>\n) {\n const doRegisterComponent: typeof registerGlobalContext = (...args) =>\n loader\n ? loader.registerGlobalContext(...args)\n : registerGlobalContext(...args);\n doRegisterComponent(\n CommerceProviderComponent,\n customCommerceProviderMeta ?? commerceProviderMeta\n );\n}\n","import { Registerable } from \"./registerable\";\nimport { registerCommerceProvider } from \"./registerCommerceProvider\";\nexport * from \"./registerable\";\nexport * from \"./registerCommerceProvider\";\nexport * from \"./shopify\";\n\nexport function registerAll(loader?: Registerable) {\n registerCommerceProvider(loader);\n}\n"],"names":["getError","errors","status","_errors","message","FetcherError","getAsyncError","_x","_getAsyncError","_asyncToGenerator","_regeneratorRuntime","mark","_callee","res","wrap","_context","prev","next","json","abrupt","sent","stop","apply","arguments","handleFetchResponse","_x2","_ref","_callee2","_yield$res$json","data","_context2","ok","length","getSearchVariables","brandId","search","categoryId","locale","count","query","searchQuery","_extends","sort","isCategory","output","sortKey","reverse","getSortVariables","first","getCheckoutId","id","Cookies","get","checkoutCreateMutation","checkoutCreate","fetch","lineItems","checkout","options","variables","input","set","expires","sameSite","secure","webUrl","colorMap","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burgandy","burgundy","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","spacegrey","spacegray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","money","value","amount","currencyCode","isDefaultOption","selectedOption","name","normalizeProductOption","_ref2","displayName","values","__typename","toLowerCase","map","label","match","mapedColor","replace","hexColors","normalizeImage","_ref3","url","originalSrc","_objectWithoutPropertiesLoose","_excluded","normalizeProductVariants","_ref6","edges","_ref7","node","_ref7$node","selectedOptions","sku","title","priceV2","compareAtPriceV2","requiresShipping","availableForSale","some","o","price","listPrice","_ref8","normalizeProduct","_ref9","_ref4","vendor","images","variants","description","descriptionHtml","handle","priceRange","rest","_excluded2","path","slug","minVariantPrice","_ref5","filter","normalizeLineItem","_ref10","_ref10$node","variant","quantity","variantId","String","productId","product","_variant$sku","image","_variant$image","_variant$requiresShip","_variant$priceV","_variant$compareAtPri","_variant$product","discounts","normalizeCategory","_ref11","isEmpty","products","undefined","getCustomMessage","code","checkoutToCart","checkoutPayload","ValidationError","throwUserErrors","checkoutUserErrors","CommerceError","customerId","email","createdAt","currency","_checkout$totalPriceV","totalPriceV2","taxesIncluded","_checkout$lineItems","lineItemsSubtotalPrice","_checkout$subtotalPri","subtotalPriceV2","subtotalPrice","_checkout$subtotalPri2","totalPrice","_checkout$totalPriceV2","getAllProductVendors","handler","fetchOptions","fetcher","method","_data$node","slice","_data$node2","_data$products","_products","found","_products2","useHook","useData","swrOptions","revalidateOnFocus","startsWith","productByHandle","cartId","checkoutId","completedAt","remove","response","useMemo","Object","create","_response$data$lineIt","_response$data","enumerable","item","Number","isInteger","_item$quantity","t0","t1","checkoutLineItemsAdd","mutate","useCart","useCallback","_addItem","itemId","lineItemIds","checkoutLineItemsRemove","ctx","_input$id","_ref$input","removeItemHandler","checkoutLineItemsUpdate","debounce","_ctx$wait","wait","_data$collections$edg","_data$collections","collections","collection","_response$data$length","vendorsStrings","Array","from","Set","v","entityId","getFetcher","storeDomain","accessToken","_ref$url","_ref$method","vars","body","JSON","stringify","headers","X-Shopify-Storefront-Access-Token","Content-Type","Accept-Language","getCommerceProvider","getCoreCommerceProvider","cartCookie","cart","useAddItem","useUpdateItem","useRemoveItem","useSearch","useProduct","site","useCategories","useBrands","getShopifyProvider","commerceProviderMeta","props","type","defaultValue","unstable__globalActions","globalActionsRegistrations","importPath","importName","CommerceProviderComponent","children","CommerceProvider","React","CartActionsProvider","globalContextName","registerCommerceProvider","loader","customCommerceProviderMeta","registerGlobalContext","doRegisterComponent","useCoreCommerce"],"mappings":"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"}
|