"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e}; /*! * Copyright (C) Oh!Fuchs, if not stated otherwise * Written by Patrick Paul, Oh!Fuchs, Apparelcuts 2015-2019 */wp.hooks.addAction("sfw.register.plugins","sfw.plugin.basket",function(d,i){function n(e){e.received=e.received||(new Date).getTime();var t=p.equip(e),a=p.$$basket;if(a&&t.received<=a.received)return a;!a&&d.debug("Basket loaded for the first time on this page"),a&&d.debug("Fresh Basket received"),delete(t=wp.hooks.applyFilters("sfw.basket",t)).raw,d.storage.__.set("basket",t),p.$$basket=t,d.Cookies.set("sfw-basket-id",t.id,{expires:30});var s={new:[],modified:[],removed:[]},i=!1;for(var n in t.basketItems){var r=t.basketItems[n];(o=!!a&&a.getItem(r.id))?JSON.stringify(o)!=JSON.stringify(r)&&(i=!0,s.modified.push(r),wp.hooks.doAction("sfw.basket.item.changed",r,o,t)):(i=!0,s.new.push(r),wp.hooks.doAction("sfw.basket.item.added",r,t))}if(a)for(var n in a.basketItems){var o=a.basketItems[n];t.getItem(o.id)||(i=!0,s.removed.push(o),wp.hooks.doAction("sfw.basket.item.removed",o,t))}return i&&wp.hooks.doAction("sfw.basket.change",t,s,a),a||wp.hooks.doAction("basket.initiated",t),t}function t(e){var a=this;for(var t in i.extend(this,e),this.raw=e,this.basketItems)this.basketItems[t]instanceof s||(this.basketItems[t]=new s(this.basketItems[t]));this.getItem=function(e){for(var t in a.basketItems)if(a.basketItems[t].id==e)return a.basketItems[t];return!1},this.totalQuantity=function(){return"undefined"==!_typeof(this._tq)||(this._tq=0,a.basketItems.length&&a.basketItems.forEach(function(e){a._tq+=e.quantity})),this._tq},this.link=function(e){for(var t in this.links)if(this.links[t].type==e)return this.links[t].href},this.isEmpty=function(){return this.totalQuantity()<=0},wp.hooks.doAction("sfw.basket.proto",this)}function s(e){var s=this;i.extend(this,e),this.raw=e,this.prop=function(e){for(var t in this.element.properties)if(this.element.properties[t].key==e)return this.element.properties[t].value},this.link=function(e){for(var t in this.links)if(this.links[t].type==e)return this.links[t].href},this.imageUrl=function(){var e=0'},this.priceTotal=function(){var e=i.extend({},s.priceItem);return e.vatIncluded=s.quantity*e.vatIncluded,e.vatExcluded=s.quantity*e.vatExcluded,e.display=s.quantity*e.display,e},this.remove=function(){var t=i.Deferred();return d.feedback.await(t,"update-basket"),d.spreadshirt({url:s.href,method:"DELETE"}).fail(function(){return t.reject({error:"delete-basketitem"})}).done(function(){p.get(!0).fail(function(){return t.reject({error:"delete-basketitem"})}).done(function(e){return t.resolve(e)}).done(function(e){return wp.hooks.doAction("sfw.basket.item.removed.now")})}),t},this.decrease=function(){return s.updateQuantity(s.quantity-1)},this.increase=function(){return s.updateQuantity(s.quantity+1)},this.updateQuantity=function(e){if(e<=0)return s.remove();var t=i.Deferred();d.feedback.await(t,"update-basket");var a=JSON.stringify(i.extend({},s.raw,{quantity:e}));return d.spreadshirt({url:s.href,contentType:"application/json; charset=utf-8",dataType:"json",data:a,method:"PUT"}).fail(function(){return t.reject({error:"update-basketitem"})}).done(function(){p.get(!0).fail(function(){return t.reject({error:"update-basketitem"})}).done(function(e){return t.resolve(e)}).done(function(e){return wp.hooks.doAction("sfw.basket.item.updated.now")})}),t},wp.hooks.doAction("sfw.basket.item.proto",this)}var p=d.basket={$$basket:!1};p.equip=function(e){return!e||e instanceof t||(e=new t(e)),e},p.request_promise=!1,p.request=function(e,t){if("function"==typeof p.request_promise.state&&"pending"==p.request_promise.state())return p.request_promise;var a=p.request_promise=i.Deferred();return d.debug("Requesting Basket"),d.spreadshirt({url:d.get("shop").baskets.href+"/"+e,dataType:"json",data:{locale:d.get("locale")}}).done(function(e){var t=n(e);a.resolve(t)}).fail(function(){t?a.reject({error:"request-basket"}):p.create().done(function(e){return a.resolve(e)}).fail(function(e){return a.reject(e)})}),a},p.create_promise=!1,p.create=function(){if("function"==typeof p.create_promise.state&&"pending"==p.create_promise.state())return p.create_promise;var t=p.create_promise=i.Deferred(),e=JSON.stringify({basket:{shop:{id:d.get("shop").id}}});return d.spreadshirt({url:d.get("shop").baskets.href+"?locale="+d.get("locale"),contentType:"application/json; charset=utf-8",dataType:"json",data:e,method:"POST"}).fail(function(){return t.reject({error:"create-basket"})}).done(function(e){return wp.hooks.doAction("sfw.basket.created",e)}).done(function(e){p.request(e.id).fail(function(){return t.reject({error:"create-basket"})}).done(function(e){return t.resolve(e)})}),t},p.get=function(e){var t=d.storage.__.get("basket");if(t){if(3e5<(new Date).getTime()-t.received)return d.debug("Basket reached max age"),p.request(t.id);if(e)return d.debug("Basket update forced"),p.request(t.id);var a=n(t);return i.Deferred().resolve(a)}var s=d.Cookies.get("sfw-basket-id");return s?(d.debug("Use Cookie to restore Basket"),p.request(s)):p.create()},p.add=function(t){wp.hooks.doAction("sfw.basket.item.added.before"),(t=i.extend({quantity:1,continueShopping:d.get("continueShoppingLink"),edit:"",editable:!0,type:"sprd:article","article-id":!1,"product-id":!1,"producttype-id":!1,href:!1,size:!1,appearance:!1,origin:"orderform"},t))["article-id"]&&!t.href?(t.href=d.get("shop").articles.href+"/"+t["article-id"],t.type="sprd:article"):t["product-id"]&&!t.href&&(t.href=d.get("shop").products.href+"/"+t["product-id"],t.type="sprd:product");try{!t.edit&&t.editable&&t["product-id"]&&(t.edit=d.get("pages").confomat+"#!P"+t["product-id"])}catch(e){}t=wp.hooks.applyFilters("sfw.basket.item.new",t);var a=i.Deferred();if(d.feedback.await(a,"update-basket"),a.always(function(){return wp.hooks.doAction("sfw.basket.added.after")}),a.done(function(){return wp.hooks.doAction("sfw.basket.item.added.now")}),a.fail(function(e){return wp.hooks.doAction("sfw.basket.added.fail",e)}),!(t["producttype-id"]&&t.appearance&&t.size&&t.href))return a.reject({error:"bad-request"},t);var s={quantity:t.quantity,element:{type:t.type,href:t.href,properties:[{key:"appearance",value:t.appearance},{key:"size",value:t.size}]},links:[{type:"edit",href:t.edit},{type:"continueShopping",href:t.continueShopping}]};return s=wp.hooks.applyFilters("sfw.basket.item.payload",s),s=JSON.stringify(s),d.api.getProductType(t["producttype-id"]).fail(function(e){return a.reject(e)}).done(function(e){if(!e.isAvailable(t.appearance,t.size))return a.reject({error:"out-of-stock"});d.basket.get().done(function(e){d.spreadshirt({url:e.href+"/items",contentType:"application/json; charset=utf-8",dataType:"json",data:s,method:"POST"}).fail(function(e){return a.reject({error:"update-basketitem"},e)}).done(function(e){d.basket.get(!0).fail(function(e){return a.reject(e)}).done(function(e){a.resolve(e)})})}).fail(function(e){return a.reject(e)})}),a},p.item=function(a){var s=i.Deferred();return p.get().fail(function(e){return s.reject(e)}).done(function(e){var t=e.getItem(a);t&&s.resolve(t),s.reject({error:"no-item-found"})}),s},wp.hooks.addAction("sfw.ready","sfw.basket.interval.init",function(){p.get(),i(window).on("focus",function(){return p.get()}),setInterval(function(){d.hidden()||p.get()},5e3)})}),wp.hooks.addAction("sfw.register.plugins","sfw.plugin.confomat",function(s,i){function t(){if(n.$el=i("[data-confomat]").first(),n.$el.length){n.config=n.$el.data("confomat");var t={type:"auto",shopId:s.get("shop").id,platform:"net"==s.get("host")?"EU":"NA",target:n.$el[0],mode:"external",continueShoppingLink:s.get("continueShoppingLink"),shopUrl:s.get("home"),shareUrlTemplate:s.get("home"),locale:s.get("locale"),paramlist:[],parse_from_url:!1,sync_hash:!1};i.extend(t,n.config),t.parse_from_url&&i.extend(t,n.hash.parse(t.paramlist)),n.settings=wp.hooks.applyFilters("sfw.confomat.settings",t),"auto"==t.type&&(n.$el.width()<600?t.type="smartomat":t.type="sketchomat"),"smartomat"!=t.type&&"sketchomat"!=t.type||t.latest||(t.version="3.7.5");var a=function(e,t){e?wp.hooks.doAction("sfw.confomat.failed",e):(n.instance=t,wp.hooks.doAction("sfw.confomat.ready",t))};s.basket.get().done(function(e){t.apiBasketId=e.id,t.addToBasket=function(e,t){var a={quantity:e.quantity,appearance:e.appearance.id,size:e.size.id,"product-id":e.product.id,"producttype-id":e.productType.id};s.basket.add(a).always(function(){t()})},s.debug(t),spreadshirt.create(t.type,t,a)}).fail(function(e){wp.hooks.applyFilters("sfw.confomat.allow_no_basket",!0)?(s.debug(t),spreadshirt.create(t.type,t,a)):a(e)})}}var n=s.confomat={init:0,instance:0};n.load=function(){if(0!=i("[data-confomat]").length&&!n.init){window.spreadshirtLoaded=t,n.init=!0;var e=document.createElement("script");e.type="text/javascript",e.src=s.get("url")+"resources/spreadshirt.min.js",i("body").append(e)}},n.hash={},n.hash.saveToLocation=function(){n.instance&&(s.hidden()||"function"==typeof n.instance.saveProduct&&n.instance.saveProduct(function(e,t){e||(window.location.hash="!P"+t)}))},n.hash.keepSynced=function(){n.settings.sync_hash&&setInterval(n.hash.saveToLocation,15e3)},wp.hooks.addAction("sfw.confomat.ready","sfw",n.hash.keepSynced),n.hash.parse=function(){var e=0'),f.each(t.shippingTypes,function(e,t){var a=t.getRegion(o.id);if(a){var s=f('
').addClass("--"+l.sanitize_class(t.name)).addClass("--shipping-type-"+l.sanitize_class(t.id));f("

").text(t.name).appendTo(s),f("

").addClass("--shipping-type-description").text(t.description).appendTo(s);var i=f('
'),n=f(""),r=f("");f.each(a.shippingCosts,function(e,t){.01!=t.orderValueRange.to&&(f("").html(l.sprintf(l._x("%s and above","%s price min in shipping costs table","apparelcuts-spreadshirt"),l.price.stringify(t.orderValueRange,"from"))).appendTo(n),f("").html(l.price.stringify(t.cost)).appendTo(r))}),f('
').append(i.append(n).append(r)).appendTo(s),d.append(s)}}),d)),l.price.parseAll()};if(t.shippingStates&&t.shippingStates.length){var n="sfw-shippingcalculator-state",r=f("").attr("for",n).text(l.__("State","apparelcuts-spreadshirt")),o=f(''),d=t.shippingStates;d.sort(function(e,t){return e.name.localeCompare(t.name)}),f.each(d,function(e,t){o.append(f("").attr("value",t.id).text(t.name))}),o.find("option").first().attr("selected",!0),r.add(o).insertAfter(e);var p=function(){var e=s.getState(o.val()).getRegion();i(e)};o.on("change",p),p()}else{var c=t.getRegion();i(c)}}function e(){wp.hooks.doAction("sfw.shipping.renderedAll.before");var e=l.api.getShippingTypes();f.when(e).done(function(){for(var e=arguments.length,t=Array(e),a=0;a").attr("for",s).text(l.__("Delivery country","apparelcuts-spreadshirt")),n=f(''),r=e.getCountries(),o=l.objectToArray(r);o.sort(function(e,t){return e.name.localeCompare(t.name)}),f.each(o,function(e,t){n.append(f("").attr("value",t.id).text(t.name))});var d=l.getObjectFromList(r,"isoCode",l.get("country").isoCode);d=!!d&&d.id,(d=wp.hooks.applyFilters("sfw.default_shipping_country",d))&&n.find('option[value="'+d+'"]').attr("selected",!0);var p=f('
');return a.append(i).append(n).append(p),n.on("change",function(){c(a,e)}),c(a,e),t.done(function(){wp.hooks.doAction("sfw.shipping.render",a)}),t}.apply(this,t)),f(this).attr("data-sfw-rendered",!0)}),f.when(s).always(function(){return wp.hooks.doAction("sfw.shipping.renderedAll")})})}l.shipping={init:0},wp.hooks.addAction("sfw.shipping.render.all","sfw.shipping.renderAll",e),wp.hooks.addAction("sfw.refresh","sfw.shipping.renderAll",e)}),wp.hooks.addAction("sfw.register.plugins","sfw.plugin.confomat",function(d,l){function i(e){e.addClass("--disabled").removeClass("--enabled"),e.find("select,input,button,[data-add-to-basket]").attr("disabled",!0),wp.hooks.doAction("sfw.forms.order.disabled",e)}function f(e,a){var t=e.find('[name="appearance"]'),s=e.find('[name="size"]'),i=t.val(),n=s.val(),r=a.isAvailable(i,n);e.find(".--option.--appearance").each(function(){var e=l(this),t=e.data("value");e.toggleClass("--na-config",!a.isAvailable(t,n)).toggleClass("--na",a.isSoldOut("appearance",t)).toggleClass("--selected",i==t)}),e.find(".--option.--size").each(function(){var e=l(this),t=e.data("value");e.toggleClass("--na-config",!a.isAvailable(i,t)).toggleClass("--na",a.isSoldOut("size",t)).toggleClass("--selected",n==t)});var o=r?d.__("available","apparelcuts-spreadshirt"):d.__("currently unavailable","apparelcuts-spreadshirt");r||(a.isSoldOut("appearance",i)?o=d.__("Only available in other colors","apparelcuts-spreadshirt"):a.isSoldOut("size",n)&&(o=d.__("Only available in other sizes","apparelcuts-spreadshirt"))),o=wp.hooks.applyFilters("sfw.stockstate.display","● "+o,r,i,n,a,e),e.find(".--stockstate").toggleClass("--na",!r).html(o),e.find("[data-add-to-basket]").attr("disabled",!r)}function t(){var a=l(this),s=l.Deferred(),e=a.find('input[name="producttype-id"]').val();return wp.hooks.doAction("sfw.forms.order.render.before",a),i(a),e?(d.api.getProductType(e).fail(function(e){return s.reject(a,"product-type-unavailable")}).done(function(e){return e.isSoldOut()?(a.addClass("--out-of-stock"),s.reject(a,"out-of-stock")):(function(e,t){var a=l('
');l.each(t.appearances,function(e,t){l('').append('').appendTo(a)}),e.find('[name="appearance"]').after(a);var s=l('
');l.each(t.sizes,function(e,t){l('').append(t.name).appendTo(s)}),e.find('[name="size"]').after(s);var i=r.utils.getLoader();e.append(i)}(a,e),function(e,t){var a=e.find('[name="appearance"]'),s=e.find('[name="size"]'),i=a.val(),n=s.val();a.on("change",function(){wp.hooks.doAction("sfw.forms.order.appearance.change",e,l(this).val(),t)});var r,o,d=e.find(".--option.--appearance").on("click",function(){i=l(this).data("value"),a.val(i).trigger("change")}),p=e.find(".--option.--size").on("click",function(){n=l(this).data("value"),s.val(n).trigger("change")});wp.hooks.applyFilters("sfw.forms.order.dohover",!0)&&(d.on("mouseenter",function(){var e=this;a.val()!=l(this).data("value")&&(r=setTimeout(function(){a.val(l(e).data("value")).trigger("change")},250))}).on("mouseleave",function(){clearTimeout(r),i&&i!=a.val()&&a.val(i).trigger("change")}),p.on("mouseenter",function(){var e=this;s.val()!=l(this).data("value")&&(o=setTimeout(function(){s.val(l(e).data("value")).trigger("change")},250))}).on("mouseleave",function(){clearTimeout(o),n&&n!=s.val()&&s.val(n).trigger("change")}));var c=e.find("[data-add-to-basket],.sfw-add-to-basket");c.length&&c.on("click",function(){l(this).attr("disabled")||wp.hooks.doAction("sfw.forms.order.addToBasket",e)}),a.add(s).on("change",function(){return f(e,t)}),f(e,t)}(a,e),(t=a).removeClass("--disabled").addClass("--enabled"),t.find("select,input,button,[data-add-to-basket]").removeAttr("disabled"),wp.hooks.doAction("sfw.forms.order.enabled",t),a.addClass("--available"),s.resolve(a,e));var t}),s.fail(function(e,t){i(e),e.addClass("--unavailable"),t&&e.addClass("--"+t)}),s.done(function(e,t){return wp.hooks.doAction("sfw.forms.order.render.done",e,t)}),s.fail(function(e,t){return wp.hooks.doAction("sfw.forms.order.render.fail",e,t)}),s.always(function(e,t){return wp.hooks.doAction("sfw.forms.order.render",e,t)}),s):s.reject(a,"missing-fields")}function n(e){var t=l("
  • ").attr("data-basket-item",e.id);t.append('
    '+e.image()+'
    ");var a=l('
    ').html(d.price.stringify(e.priceTotal())),s=l('
    ').append(''+d.__("Remove","apparelcuts-spreadshirt")+"").append('-').append(""+e.quantity+"").append('+'),i=e.link("edit");return i&&s.append(l(''+d.__("Edit","apparelcuts-spreadshirt")+"").attr("href",i)),t.find(".--sfw-article-meta").append(a).append(s),t.toggleClass("--decreaseable","1"').append('').append('');return wp.hooks.applyFilters("sfw.loader",t,e)},d.forms.order={},wp.hooks.addAction("sfw.refresh","sfw.renderOrderFormAll",function(){wp.hooks.doAction("sfw.forms.order.renderedAll.before");var e=[];l("form[data-article]").not("[data-sfw-rendered]").each(function(){e.push(t.call(this)),l(this).attr("data-sfw-rendered",!0)}),l.when(e).always(function(){return wp.hooks.doAction("sfw.forms.order.renderedAll")})}),wp.hooks.addAction("sfw.forms.order.addToBasket","sfw",function(e){var t=r.utils.serializeObject(e);e.find(".--msg-basket-error").hide();var a=d.basket.add(t);d.feedback.await(a,"add-to-basket",e[0]),a.fail(function(){e.find(".--msg-basket-error").show()})},5),wp.hooks.addAction("sfw.forms.order.renderedAll.before","sfw.initShippingStockState",function(){d.api.deliveryETA().done(function(r){console.log(r),wp.hooks.addFilter("sfw.stockstate.display","sfw.loadShippingStockState",function(e,t,a,s,i,n){return console.log(e),t&&(e="● "+d.sprintf(d._x("Delivery time: %1$s - %2$s working days","estimated shipping, %s$1 min days, %s$2 max days","apparelcuts-spreadshirt"),r.minDays,r.maxDays)),e})})}),wp.hooks.addAction("sfw.basket.item.added","sfw",function(e,t){l("[data-basket-items]").append(n(e)),wp.hooks.doAction("sfw.price.formatAll")}),wp.hooks.addAction("sfw.basket.item.changed","sfw",function(e,t){l('[data-basket-item="'+e.id+'"]').each(function(){l(this).find("[data-basket-item-quantity]").text(e.quantity),l(this).find(".--sfw-item-price").html(d.price.stringify(e.priceTotal())),l(this).toggleClass("--decreaseable","1"'+d.__("Your Basket is currently empty","apparelcuts-spreadshirt")+""),a=l('
      '),s=l('
      ').append('
      '+d.__("Total Items","apparelcuts-spreadshirt")+":
      ").append('
      ').append('
      '+d.__("Shipping","apparelcuts-spreadshirt")+":
      ").append('
      ').append('
      '+d.__("Total","apparelcuts-spreadshirt")+':

      '+d.__("Incl. Vat, incl. Shipping","apparelcuts-spreadshirt")+"

      ").append('
      ');e.append(wp.hooks.applyFilters("sfw.forms.basket.empty",t)).append(wp.hooks.applyFilters("sfw.forms.basket.basketItems",a)).append(wp.hooks.applyFilters("sfw.forms.basket.summary",s)).append(r.utils.getLoader("basket")),d.basket.get().done(function(e){for(var t in e.basketItems)a.append(n(e.basketItems[t]));wp.hooks.doAction("sfw.price.formatAll")}),wp.hooks.doAction("sfw.forms.basket.rendered",e)}.call(this)),l(this).attr("data-sfw-rendered",!0)}),l.when(e).always(function(){d.basket.get().done(a),wp.hooks.doAction("sfw.forms.basket.renderedAll")})},20),l("body").on("click","[data-quantity-control]",function(){if(!l("body").hasClass("sfw-wait-update-basket")){var e=l(this).parents("[data-basket-item]"),t=l(this).data("quantity-control");e.length&&d.basket.item(e.data("basket-item")).done(function(e){"function"==typeof e[t]&&e[t].call()})}}),l("body").on("click","[data-checkout],.sfw-checkout",function(e){l(this).is("a")||(wp.hooks.applyFilters("sfw.checkout.same.window",!0)?(document.location=l(this).data("href"),e.preventDefault()):window.open(l(this).data("href")))})});