You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
6.5 KiB
1 lines
6.5 KiB
(()=>{"use strict";var e={n:t=>{var c=t&&t.__esModule?()=>t.default:()=>t;return e.d(c,{a:c}),c},d:(t,c)=>{for(var o in c)e.o(c,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:c[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,c=window.jQuery;var o=e.n(c);const n=window.CDEKWidget;var a=e.n(n);const l=window.wp.element,i=window.lodash,r=window.wp.i18n,d=window.wc.wcSettings,s=({rules:e,onRulesUpdate:c})=>{const o=(t,o)=>{e[o].to=parseInt(t.target.value),e.forEach(((t,c)=>{0!==c&&null!==t.to&&t.to<=e[c-1].to&&(e[c].to=e[c-1].to+1)})),c([...e])},n=(0,l.useCallback)((0,i.debounce)(o,4e3),[e]),a=(t,o)=>{e[o].value=t.target.value,c([...e])},s=(0,l.useCallback)((0,i.debounce)(a,4e3),[e]);return e.map(((l,i)=>(0,t.createElement)("div",{key:l.to+l.value+l.type+i},(0,r.__)("Сумма заказа","cdek-official")," ",e[i-1]&&(0,t.createElement)(t.Fragment,null,(0,r.__)("от","cdek-official")," ",e[i-1].to,d.CURRENCY.symbol)," ",l.to&&(0,t.createElement)(t.Fragment,null,(0,r.__)("меньше или равно","cdek-official"),(0,t.createElement)("input",{defaultValue:l.to,min:e[i-1]?e[i-1].to+1:0,type:"number",onBlur:e=>o(e,i),onInput:e=>n(e,i)}),d.CURRENCY.symbol)," ",1===e.length&&(0,t.createElement)(t.Fragment,null,(0,r.__)("любая","cdek-official")),", ",(0,r.__)("стоимость доставки","cdek-official"),(0,t.createElement)("select",{onChange:t=>((t,o)=>{e[o].type=t.target.value,c([...e])})(t,i),className:"cdek-selector",defaultValue:l.type},(0,t.createElement)("option",{value:"free"},(0,r.__)("бесплатно","cdek-official")),(0,t.createElement)("option",{value:"percentage"},(0,r.__)("взять в процентах","cdek-official")),(0,t.createElement)("option",{value:"fixed"},(0,r.__)("фиксировать на","cdek-official")),(0,t.createElement)("option",{value:"amount"},(0,r.__)("изменить на","cdek-official"))),"free"!==l.type&&(0,t.createElement)("input",{defaultValue:l.value,type:"number",min:"amount"===l.type?null:0,onBlur:e=>a(e,i),onInput:e=>s(e,i)}),"percentage"===l.type&&(0,t.createElement)(t.Fragment,null,"%"),("amount"===l.type||"fixed"===l.type)&&(0,t.createElement)(t.Fragment,null,d.CURRENCY.symbol),0!==i&&(0,t.createElement)("span",{className:"button button-link-delete",onClick:()=>(t=>{t===e.length-1&&(e[t-1].to=null),c(e.filter(((e,c)=>c!==t)))})(i)},"-"))))},u=({input:e})=>{const[c,o]=(0,l.useState)([]),[n,a]=(0,l.useState)([]),d=(0,l.useCallback)((0,i.debounce)(((t,c)=>{e.val(JSON.stringify({door:t,office:c}))}),300),[]);return(0,l.useEffect)((()=>{d(c,n)}),[c,n]),(0,l.useEffect)((()=>{try{const t=JSON.parse(e.val());o(t.door),a(t.office)}catch(e){o([{to:null,type:"percentage",value:100}]),a([{to:null,type:"percentage",value:100}])}}),[]),(0,t.createElement)(t.Fragment,null,(0,t.createElement)("div",{className:"cdek-delivery-rules"},(0,t.createElement)("div",{className:"cdek-header"},(0,t.createElement)("h4",null,(0,r.__)("Правила для доставки курьером","cdek-official")),(0,t.createElement)("span",{className:"button",onClick:()=>{c[c.length-1].to=(c[c.length-2]||{to:0}).to+1,o([...c,{to:null,type:"percentage",value:100}])}},"+")),(0,t.createElement)(s,{rules:c,onRulesUpdate:o}),(0,t.createElement)("div",{className:"cdek-header"},(0,t.createElement)("h4",null,(0,r.__)("Правила для доставки до ПВЗ/Постаматов","cdek-official")),(0,t.createElement)("span",{className:"button",onClick:()=>{n[n.length-1].to=(n[n.length-2]||{to:0}).to+1,a([...n,{to:null,type:"percentage",value:100}])}},"+")),(0,t.createElement)(s,{rules:n,onRulesUpdate:a})))};o().getJSON(window.cdek_admin_settings.api.check_auth).done((()=>o()(".token-wrong").remove())).fail((e=>{console.error(e),o()("p:contains('Custom Shipping Method for Cdek')").after('<div class="cdek-error token-wrong">[CDEKDelivery] Ошибка при получении токена. Убедитесь, что ключи интеграции верны</div>')})),o()("input#woocommerce_official_cdek_map").length&&(()=>{o()("input#woocommerce_official_cdek_map").after('<div id="cdek-map-results"></div><div id="cdek-map"></div>'),o()("#cdek-map-results").append('<div id="selected_office"><span class="icon office"></span><div><h5>Выбранный ПВЗ</h5><div class="result"></div></div></div>').append('<div id="selected_address"><div><h5>Выбранный адрес</h5><div class="result">Не выбран</div></div><span class="icon door"></span></div>');const e=o()("input[name=woocommerce_official_cdek_pvz_code]"),t=o()("input[name=woocommerce_official_cdek_address]");let c="",n="",l="";const i=()=>{const t=e.val(),a=o()("#selected_office");if(t)try{const e=JSON.parse(t);return a.addClass("selected").find(".result").html(`${e.country}; ${e.postal}; ${e.city}; ${e.address}`),c=e.city,void(n=e.address)}catch(e){}a.removeClass("selected").find(".result").html("Не выбран")},r=()=>{const e=t.val(),n=o()("#selected_address");if(e)try{const t=JSON.parse(e);return n.addClass("selected").find(".result").html(`${t.country}; ${t.postal}; ${t.city}; ${t.address}`),c=t.city,void(l=t.address)}catch(e){}n.removeClass("selected").find(".result").html("Не выбран")};i(),r(),new(a())({apiKey:window.cdek.apiKey,sender:!0,debug:!0,requirePostcode:!0,defaultLocation:c||"Новосибирск",servicePath:window.cdek_admin_settings.api.offices,hideFilters:{type:!0,have_cash:!0,have_cashless:!0,is_dressing_room:!0},selected:{office:n||null,door:l||null},onChoose(c,o,n){"office"===c?(e.val(JSON.stringify({country:n.country_code,postal:n.postal_code,city:n.city,address:n.code})),i()):"door"===c&&(t.val(JSON.stringify({country:n.country_code,postal:n.postal_code,city:n.city,address:n.formatted})),r())}})})();const p=o()("input#woocommerce_official_cdek_delivery_price_rules");if(p.length){const e=window.document.createElement("div");p.after(e),"function"==typeof l.render?(0,l.render)((0,t.createElement)(u,{input:p}),e):(0,l.createRoot)(e).render((0,t.createElement)(u,{input:p}))}!function(){const e=o()("#woocommerce_official_cdek_services_ban_attachment_inspection"),t=o()("#woocommerce_official_cdek_services_trying_on"),c=o()("#woocommerce_official_cdek_services_part_deliv");function n(e,t){e.prop("checked")?(t.prop("checked",!1),t.prop("disabled",!0)):t.prop("disabled",!1)}function a(e,t){e[0].prop("checked")||e[1].prop("checked")?(t.prop("checked",!1),t.prop("disabled",!0)):t.prop("disabled",!1)}n(e,t.add(c)),a([t,c],e),e.change((function(){n(o()(this),t.add(c))})),t.change((function(){a([o()(this),c],e)})),c.change((function(){a([o()(this),t],e)}))}()})(); |