💎 PREMIUM: Changeset/ - Uncensored 2025

Changeset 3352370


Ignore:
Timestamp:
08/29/2025 01:07:21 AM (4 months ago)
Author:
maurosp91
Message:

new plugin version

Location:
mds-product-bulk-editor-for-woocommerce/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • mds-product-bulk-editor-for-woocommerce/trunk/README.txt

    r3352044 r3352370  
    55Requires PHP: 7.3
    66Tested up to: 6.8
    7 Stable tag: 1.8.3
     7Stable tag: 1.9.0
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    108108== Changelog ==
    109109
     110= 1.9.0 =
     111* Removed: filter for ATUM Purchase Order list, as ATUM fixed the REST API issue
     112* Updated: clear value when disabling elements because of a not met condition (ie. stock quantity when manage stock is off)
     113
    110114= 1.8.3 =
    111115* Fixed: JS error when setting product categories and tags to none
  • mds-product-bulk-editor-for-woocommerce/trunk/admin/js/dist/mds-product-bulk-editor-for-woocommerce-admin.min.js

    r3352044 r3352370  
    1 !function(){"use strict";var t;(t=jQuery)((function(){const e=mdspbeVars.i18n,n={},a={};let o,s=0,i=0,l=!0;function r(t){const e=t.attr("data-id"),n=mdspbeVars.conditionals[e];n&&n.forEach((function(e){!function(t,e){const n=e.closest("tr"),a=n.find(`td[data-id="${t}"]`).find("input, select, textarea"),o=mdspbeVars.attributes[t],s=o.conditionals;if(!s)return;let i=!1;Object.keys(s).some((function(t){let e=s[t];!0===e?e="yes":!1===e&&(e="no");const a=n.find(`td[data-id="${t}"]`).find("input, select, textarea");if(a&&a.val()!==e)return i=!0,!0})),a.prop("disabled",i)}(e,t)}))}t(".js-current-label").fadeOut(),function(){let t=new URL(window.location.href);const n=t.searchParams.get("success");n&&(t.searchParams.delete("success"),b(e[n+"BulkSuccess"],"success"),window.history.pushState({},"",t.toString()))}(),mdspbeVars.atumActive&&(t("#mdspbe-main-table thead").find("th.sticky-col").each((function(){t(this).after(`<th class="table-warning js-purchase-order-cell" style="display: none;">\n\t\t\t\t\t\t\t<div class="th-content-wrapper">\n\t\t\t\t\t\t\t\t<div class="text-center text-nowrap">\n\t\t\t\t\t\t\t\t\t${e.purchaseOrder}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>`)})),t("#mdspbe-main-table tbody").find("td.sticky-col").each((function(){t(this).after('<td class="table-warning js-purchase-order-cell" style="display: none;" data-id="atum_purchase_qty">\n\t\t\t\t\t\t\t<input type="number" class="form-control rounded-3 js-po-qty">\n\t\t\t\t\t\t</td>')}))),t(document).on("change",".js-po-qty",(function(){const e=t(this);""===e.val()?e.closest("td").removeClass("table-danger").addClass("table-warning"):e.closest("td").removeClass("table-warning").addClass("table-danger")})),t("#mdspbe-main-table").on("change","input:not(.js-element-selector, .js-select-all, .js-po-qty), select, textarea",(function(e){const a=t(this);r(a);const o=Number(a.closest("tr").attr("data-id"));if(0===o)return;const s=q(a.attr("data-id")),l=a.closest("td"),d=a.val(),c=q(d);d!==c&&a.val(c);const u=a.val();let p,m=q(a.attr("data-value"));var f,h;Array.isArray(u)&&""==m&&(m="[]"),Array.isArray(u)?(h=m,p=(f=u).length===h.length&&f.sort().join(",")===h.sort().join(",")):p=u===m,p?(l.removeClass("table-danger"),l.find(".js-current-label").fadeOut(),n[o]&&(delete n[o][s],0===Object.keys(n[o]).length&&delete n[o])):(l.addClass("table-danger"),l.find(".js-current-label").fadeIn(),void 0===n[o]&&(n[o]={}),n[o][s]=c),0===Object.keys(n).length&&0===i?t(".js-save-btn").fadeOut():t(".js-save-btn").fadeIn()}));let d=null;function c(e=null){let n,a;null===e&&(e=t(".js-element-selector:checked").length>0),e?(n="btn-light",a="btn-warning"):(n="btn-warning",a="btn-light"),t(".js-bulk-attribute-edit, .js-bulk-action-apply").prop("disabled",!e).removeClass(n).addClass(a)}t("#mdspbe-main-table").find("input:not(.js-element-selector, .js-select-all, .js-po-qty), select, textarea").on("focus",(function(){d=q(t(this).val())})).on("blur",(function(){d=null})).on("change",(function(){null!==d&&function(e){const n=q(e.val()),o=d;if(o!==n){T(),s++;const i=Date.now();void 0===a[i]&&(a[i]={}),void 0===a[i].value&&(a[i].value=[]),a[i].value.push({input:e,old:o,new:n}),t(".js-undo-changes").prop("disabled",!1),t(".js-redo-changes").prop("disabled",!0)}d=n}(t(this))})),t(".js-undo-changes").on("click",(function(){O("undo")})),t(".js-redo-changes").on("click",(function(){O("redo")})),t(document).on("keydown",(function(e){e.ctrlKey&&"z"===e.key.toLowerCase()&&!e.shiftKey&&(e.preventDefault(),t(document.activeElement).blur(),O("undo")),(e.ctrlKey&&"y"===e.key.toLowerCase()||e.ctrlKey&&e.shiftKey&&"z"===e.key.toLowerCase())&&(e.preventDefault(),t(document.activeElement).blur(),O("redo"))})),t(".js-element-selector").on("change",(function(){t(this).closest("tr").toggleClass("table-primary",t(this).prop("checked")),c()})),t(".js-select-all").on("change",(function(){const e=t(this).is(":checked");t("tbody .js-element-selector").prop("checked",e).trigger("change")})),t("#bulk-action").on("change",(function(){const e=["atum-create-po","atum-update-po"].includes(t(this).val());l=!e,e?c(e):c(),t("#mdspbe-main-table").find("td, th").toggle(!e),t(".js-bulk-attribute-edit, .js-no-bulk-action, .js-element-selector, .js-select-all").toggle(!e);const n=t("#mdspbe-main-table td").not(".js-purchase-order-cell");n.find("input").prop("readonly",e),n.find("select").prop("disabled",e),e?t("#mdspbe-main-table").find(".js-purchase-order-cell, .js-po-keep").toggle(e):t("#mdspbe-main-table").find(".js-purchase-order-cell").toggle(e),t(".float-div").toggle(!e)})),t(".js-bulk-action-apply").on("click",(function(n){""===t("#bulk-action").val()&&(n.preventDefault(),b(e.selectAnAction,"warning"))}));let u=!1;function p(e){return e?q(t("#atum-supplier").find(`option[value="${e}"]`).text()):""}function m(n,a=null){j();let o=mdspbeVars.restUrl+"wc/v3/atum/purchase-orders";a&&(o+="/"+a),t.ajax({url:o,method:"POST",contentType:"application/json",data:JSON.stringify(n),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(n){t(".js-po-qty").val("").trigger("change").closest("td").removeClass("table-danger").addClass("table-warning"),b(`${a?e.poUpdatedSuccesfully:e.poCreatedSuccesfully}. <a href="${mdspbeVars.adminUrl}post.php?post=${n.id}&action=edit" target="_blank">${e.viewPurchaseOrder}</a>`,"success"),$()},error:function(t){b(e.errorCreatingPO,"danger"),$()}})}function f(){const e=[];return t("#mdspbe-main-table .js-po-qty").each((function(){const n=t(this),a=n.closest("tr"),o=isFinite(a.attr("data-id"))?parseInt(a.attr("data-id")):null,s=isFinite(n.val())?parseInt(n.val()):null;o&&s&&e.push({product_id:o,quantity:s})})),e}async function h(n,a,o=null,s=!1){if(!l)return;const i=n[0].tagName.toLowerCase(),r="select"===i?q(n.html()):"";let d,c="";n.hasClass("js-wp-editor")?d="wp-editor":n.hasClass("js-tom-select")?(c=q(n.attr("data-id")),d=n.prop("multiple")?"tom-select-multiple":"tom-select"):n.hasClass("js-input-image")?d="image":"input"===i?d=n.attr("type"):("textarea"===i||"select"===i)&&(d=i);const u={message:n.attr("data-name"),submitText:e.save,type:d,selectOpts:r,defaultValue:o,attrId:c,remoteData:n.hasClass("js-remote-data")},p=await g(u);if(null!==p){const e=!0===s?t(".js-element-selector:checked").closest("tr"):n.closest("tr");if("wp-editor"===d)e.each((function(){const e=t(this),n=e.find(`[data-id="${a}"]`).find(".js-wp-edit-content"),o=e.find(`textarea[data-id="${a}"]`),s=k(q(o.val()),p);_(n,s),x(o,s)}));else if("tom-select"===d){const n=k(null,p),o=q(t("#form-prompt .js-value-1").find(`option[value="${n}"]`).text());e.each((function(){const e=t(this),s=e.find(`[data-id="${a}"]`).find(".js-tom-select-content"),i=e.find(`select[data-id="${a}"]`),l=i.val();i.hasClass("js-remote-data")&&_(i,""!==n?`<option value="0"></option><option value="${n}" selected>${o}</option>`:'<option value="0"></option>'),_(s,o),x(i,n,l)}))}else"tom-select-multiple"===d?e.each((function(){const e=t(this),n=e.find(`[data-id="${a}"]`).find(".js-tom-select-content"),o=e.find(`select[data-id="${a}"]`),s=[...o.val()],i=k(o.val(),p);o.hasClass("js-remote-data")?function(e,n){const a=t("#form-prompt .js-value-1"),o=n.value_1;let s;switch(void 0!==n.action?n.action:"set"){case"set":s='<option value="0"></option>',o.forEach((function(t){const e=q(a.find(`option[value="${t}"]`).text());s+=`<option value="${t}" selected>${e}</option>`})),_(e,s);break;case"add":s=e.html(),o.forEach((function(t){if(0===e.find(`option[value="${t}"]`).length){const e=q(a.find(`option[value="${t}"]`).text());s+=`<option value="${t}" selected>${e}</option>`}})),_(e,s);break;case"remove":s="",e.find("option").each((function(){const e=t(this).val();o.includes(e)||(s+=t(this)[0].outerHTML)})),_(e,s)}}(o,p):function(e,n){let a="";e.find("option").each((function(){const e=t(this).val(),o=n&&n.includes(e)?"selected":"";a+=`<option value="${e}" ${o}>${t(this).text()}</option>`})),_(e,a)}(o,i);let l=[];o.find("option:selected").each((function(){const e=t(this).text();""!==e&&l.push(e)})),l=l.join(", "),_(n,l),x(o,i,s)})):"image"===d?e.each((function(){const e=t(this),n=e.find(`td [data-id="${a}"]`),o=e.find(".js-image-preview"),s=p.src;x(n,p.value_1),_(o,""!=s?`\n\t\t\t\t\t\t\t\t<div class="d-flex flex-column justify-content-center gap-1">\n\t\t\t\t\t\t\t\t\t<span class="cursor-pointer js-set-image dashicons dashicons-edit"></span>\n\t\t\t\t\t\t\t\t\t<span class="cursor-pointer js-remove-image dashicons dashicons-trash"></span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<img src="${s}" style="height: 60px; width: auto;" class="cursor-pointer rounded-3 js-set-image">`:'<div class="mt-1"><span class="cursor-pointer js-set-image dashicons dashicons-plus-alt"></span></div>')})):e.find(`td [data-id="${a}"]`).each((function(){const e=t(this),n=q(e.val());x(e,k(n,p))}))}}function v(e,a,o,s=!1,l=!1){return e.find("td").each((function(){const e=t(this).find("input:not(.js-element-selector, .js-select-all), select, textarea").first(),r=q(e.attr("data-id"));if(!0===o.updated[r]){let o;e.attr("data-value",q(e.val())),o="select"===e[0].tagName.toLowerCase()?e.hasClass("multiple")?e.find("option:selected").map((function(){return q(t(this).text())})).get().join(", "):q(e.find("option:selected").text()):q(e.val()),t(this).find(".js-current-label").fadeOut(),t(this).find(".js-current-label span").text(o),t(this).removeClass("table-danger").addClass("table-success"),void 0!==n[a]&&void 0!==n[a][r]&&delete n[a][r],s&&i--}else!1===o.updated[r]&&(t(this).addClass("table-danger"),l=!0)})),void 0!==n[a]&&0===Object.keys(n[a]).length&&delete n[a],l}function b(t,e="primary",n=1e4){const a=document.getElementById("da-alert-container"),o=document.createElement("div"),s=n>0?'<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>':"";o.className=`alert alert-${e} fade show shadow-lg`,o.role="alert",o.innerHTML=`\n\t\t\t\t${t}\n\t\t\t\t${s}\n\t\t\t`,a.appendChild(o),n>=0&&setTimeout((()=>{o.classList.remove("show"),setTimeout((()=>o.remove()),150)}),n)}function g(n){return new Promise((a=>{t("#customFormPromptLabel").text(n.message),t("#formPromptSubmit").text(n.submitText);const o=t("#daFormPromptModal"),s=t("#form-prompt"),i=n.htmlCallback;if(void 0!==i)s.html(i());else{const a=n.type,o=void 0!==n.defaultValue?n.defaultValue:"",i=void 0!==n.selectOpts?n.selectOpts:"",r=void 0!==n.remoteData&&n.remoteData,d=void 0===n.showMagicSelector||n.showMagicSelector;if(s.html(function(t,n="",a=!1,o=!0){const s=!0===a?"js-remote-data":"";let i="";switch(t){case"text":i=`\n\t\t\t\t\t\t${w("text",o)}\n\t\t\t\t\t\t<input type="text" class="form-control rounded-3 shadow-sm mt-3 js-value-1" name="value_1">\n\t\t\t\t\t\t<input type="text" class="form-control rounded-3 shadow-sm mt-3 js-value-2" name="value_2" style="display: none;">`;break;case"number":i=`\n\t\t\t\t\t\t${w("number",o)}\n\t\t\t\t\t\t<input type="number" class="form-control rounded-3 shadow-sm mt-3 js-value-1" name="value_1" step="0.01">\n\t\t\t\t\t\t\n\t\t\t\t<select class="rounded-3 shadow-sm mt-3 w-100 js-round-selector" name="round_to">\n\t\t\t\t\t<option value="0.01">${e.roundTo} 0.01</option>\n\t\t\t\t\t<option value="0.1">${e.roundTo} 0.1</option>\n\t\t\t\t\t<option value="" selected>${e.doNotRound}</option>\n\t\t\t\t\t<option value="10">${e.roundTo} 10</option>\n\t\t\t\t\t<option value="20">${e.roundTo} 20</option>\n\t\t\t\t\t<option value="50">${e.roundTo} 50</option>\n\t\t\t\t\t<option value="100">${e.roundTo} 100</option>\n\t\t\t\t\t<option value="200">${e.roundTo} 200</option>\n\t\t\t\t\t<option value="500">${e.roundTo} 500</option>\n\t\t\t\t\t<option value="1000">${e.roundTo} 1000</option>\n\t\t\t\t</select>`;break;case"date":i=`\n\t\t\t\t\t\t${w("date",o)}\n\t\t\t\t\t\t<input type="date" class="form-control rounded-3 shadow-sm mt-3 js-value-1" name="value_1">`;break;case"textarea":i=`\n\t\t\t\t\t\t${w("text",o)}\n\t\t\t\t\t\t<textarea class="form-control rounded-3 shadow-sm mt-3 js-value-1" name="value_1" rows="10"></textarea>\n\t\t\t\t\t\t<textarea class="form-control rounded-3 shadow-sm mt-3 js-value-2" name="value_2" rows="10" style="display: none;"></textarea>`;break;case"wp-editor":i=`\n\t\t\t\t\t\t${w("wp-editor",o)}\n\t\t\t\t\t\t<textarea id="wp-editor-1" class="js-value-1" name="value_1" rows="10" hidden></textarea>`;break;case"tom-select":i=`\n\t\t\t\t\t\t${w(t,o)}\n\t\t\t\t\t\t<select class="rounded-3 shadow-sm mt-3 js-value-1 ${s}" name="value_1">${n}</select>`;break;case"tom-select-multiple":i=`\n\t\t\t\t\t\t${w(t,o)}\n\t\t\t\t\t\t<select class="rounded-3 shadow-sm mt-3 js-value-1 ${s}" name="value_1" multiple>${n}</select>`;break;case"select":i=`\n\t\t\t\t\t\t<select class="form-select rounded-3 shadow-sm mt-3 js-value-1" name="value_1">\n\t\t\t\t\t\t\t${n}\n\t\t\t\t\t\t</select>`;break;case"image":i=`\n\t\t\t\t\t${w("image",o)}\n\t\t\t\t\t<div class="js-image-preview">\n\t\t\t\t\t\t<div class="no-image-container cursor-pointer js-bulk-set-image mx-auto mt-3">\n\t\t\t\t\t\t\t<span class="dashicons dashicons-plus-alt"></span> \n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<input type="hidden" class="js-value-1" name="value_1">\n\t\t\t\t\t<input type="hidden" class="js-value-src" name="src">`}return i}(a,i,r,d)),"tom-select"===a||"tom-select-multiple"===a){const e=n.attrId?n.attrId:"";document.querySelectorAll(".js-value-1, .js-value-2").forEach((n=>{!function(e,n){const a=e.tomselect;void 0!==a&&a.destroy(),new TomSelect(e,{plugins:["remove_button"],valueField:"id",labelField:"name",searchField:"name",onInitialize:function(){this.control.classList.add("rounded-3"),this.control.classList.add("border-secondary"),t(e).hasClass("js-hidden")&&(this.wrapper.style.display="none")},shouldLoad:function(t){return t.length>2},load:function(a,o){if(t(e).hasClass("js-remote-data")){const t=mdspbeVars.restUrl+"mdspbe/v1/get_ajax_options?term="+encodeURIComponent(a)+"&attrId="+encodeURIComponent(n);fetch(t,{method:"GET",headers:{"X-WP-Nonce":mdspbeVars.nonce}}).then((t=>t.json())).then((t=>{o(t)})).catch((()=>{o()}))}else o()},render:{option:function(t,e){return`<div>${e(t.name)}</div>`},item:function(t,e){return`<div>${e(t.name)}</div>`}}})}(n,e)}))}else"select"===a?o?s.find(".js-value-1").val(o):s.find(".js-value-1").val(""):"wp-editor"===a?(l=["wp-editor-1"],"undefined"!=typeof wp&&wp.editor&&wp.editor.initialize&&l.forEach((function(t){wp.editor.remove&&wp.editor.remove(t),wp.editor.initialize(t,{tinymce:{wpautop:!0,toolbar1:"bold italic underline | bullist numlist | link",plugins:"lists link"},quicktags:!0,mediaButtons:!1})})),o&&tinymce.get("wp-editor-1").setContent(o)):"tom-select"===a?o?s.find(".js-value-1").val(o):s.find(".js-value-1").val(""):"tom-select-multiple"===a?o?s.find(".js-value-1").val(o):s.find(".js-value-1").val([]):o&&s.find(".js-value-1").val(o)}var l;function r(){if(s[0].checkValidity()){"wp-editor"===n.type&&s.find(".js-value-1").val(function(){const e=tinymce.get("wp-editor-1");return e&&!e.isHidden()?e.getContent():q(t("#wp-editor-1").val())}());const e="tom-select-multiple"===n.type,i=function(t,e=!1){return t.reduce(((t,{name:n,value:a})=>(e&&["value_1","value_2"].includes(n)?(t[n]||(t[n]=[]),t[n].push(a)):t[n]=a,t)),{})}(s.serializeArray(),e);o.modal("hide"),a(i)}else s[0].reportValidity()}!0===n.scrollable?o.find(".modal-dialog").addClass("modal-dialog-scrollable"):o.find(".modal-dialog").removeClass("modal-dialog-scrollable"),o.modal("show"),t("#formPromptSubmit").off("click").on("click",r),s.off("submit").on("submit",(function(e){e.preventDefault(),t("#formPromptSubmit").trigger("click")})),o.find(".js-magic-selector, .js-value-1, .js-value-2").off("keydown").on("keydown",(function(t){"Enter"===t.key&&(t.preventDefault(),r())})),t("#daFormPromptModal").off("hidden.bs.modal").on("hidden.bs.modal",(function(){a(null)}))}))}function y(e){return new Promise((n=>{const a=t("#daConfirmModal");document.getElementById("daConfirmModalMessage").innerText=e,document.getElementById("daConfirmModalYes").onclick=function(){n(!0),a.modal("hide")},document.querySelector("#daConfirmModal .btn-close, #daConfirmModal .btn-secondary").onclick=function(){n(!1),a.modal("hide")},a.modal("show"),jQuery("#daConfirmModal").off("keydown").on("keydown",(function(t){"Enter"===t.key&&(t.preventDefault(),jQuery("#daConfirmModalYes").trigger("click"))}))}))}function w(t,n=!0){if(!n)return"";let a="";return"text"===t?a=`\n\t\t\t\t\t<option value="set">${e.setNew}</option>\n\t\t\t\t\t<option value="add-start">${e.addAtTheStart}</option>\n\t\t\t\t\t<option value="add-end">${e.addAtTheEnd}</option>\n\t\t\t\t\t<option value="substract">${e.substractValue}</option>\n\t\t\t\t\t<option value="replace">${e.replaceValue}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`:"number"===t?a=`\n\t\t\t\t\t<option value="set">${e.setAmount}</option>\n\t\t\t\t\t<option value="add-perc">${e.addPercentage}</option>\n\t\t\t\t\t<option value="subs-perc">${e.substractPercentage}</option>\n\t\t\t\t\t<option value="add-amount">${e.addAmount}</option>\n\t\t\t\t\t<option value="subs-amount">${e.substractAmount}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`:"image"===t||"date"===t||"tom-select"===t?a=`\n\t\t\t\t\t<option value="set">${e.setNew}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`:"multiple_images"===t?a=`\n\t\t\t\t\t<option value="set">${e.setNew}</option>\n\t\t\t\t\t<option value="add-start">${e.addAtTheStart}</option>\n\t\t\t\t\t<option value="add-end">${e.addAtTheEnd}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`:"array"===t||"tom-select-multiple"===t?a=`\n\t\t\t\t\t<option value="set">${e.setNew}</option>\n\t\t\t\t\t<option value="add">${e.addValue}</option>\n\t\t\t\t\t<option value="remove">${e.removeValue}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`:"wp-editor"===t&&(a=`\n\t\t\t\t\t<option value="set">${e.setNew}</option>\n\t\t\t\t\t<option value="add-start">${e.addAtTheStart}</option>\n\t\t\t\t\t<option value="add-end">${e.addAtTheEnd}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`),`\n\t\t\t\t<select class="rounded-3 shadow-sm w-100 js-magic-selector" name="action">\n\t\t\t\t\t${a}\n\t\t\t\t</select>`}function j(){t(".js-save-btn, .js-new-btn, .js-undo-changes, .js-redo-changes").fadeOut(),t("#mdspbe-container").addClass("blocked"),t(".floating-loader").show()}function $(e=!0){e&&(Object.keys(n).length>0||i>0)&&t(".js-save-btn").fadeIn(),t(".js-new-btn, .js-undo-changes, .js-redo-changes").fadeIn(),t("#mdspbe-container").removeClass("blocked"),t(".floating-loader").hide()}function k(t,e){let n;switch(void 0!==e.action?e.action:"set"){case"set":n=e.value_1;break;case"add":case"add-start":n=Array.isArray(t)?t.concat(e.value_1):e.value_1+t;break;case"add-end":n=Array.isArray(t)?e.value_1.concat(t):t+e.value_1;break;case"substract":case"remove":n=Array.isArray(t)?t.filter((t=>!e.value_1.includes(t))):t.replace(e.value_1,"");break;case"replace":Array.isArray(t)?(n=t.filter((t=>!e.value_1.includes(t))),n=n.concat(e.value_2)):n=t.replace(e.value_1,e.value_2);break;case"add-perc":t=""==t?0:t,n=parseFloat(t)*(100+parseFloat(e.value_1))/100;break;case"subs-perc":t=""==t?0:t,n=parseFloat(t)*(100-parseFloat(e.value_1))/100;break;case"add-amount":t=""==t?0:t,n=parseFloat(t)+parseFloat(e.value_1);break;case"subs-amount":t=""==t?0:t,n=parseFloat(t)-parseFloat(e.value_1);break;case"clear-out":n=Array.isArray(t)?[]:""}if(Number.isFinite(parseFloat(n))){const t=e.round_to?parseFloat(e.round_to):null;t&&(n=function(t,e){switch(e=Number.isFinite(e)?e:1){case.01:t=Math.round(100*t)/100;break;case.1:t=Math.round(10*t)/10;break;case 1:t=Math.round(t);break;default:[5,10,20,50,100,200,500,1e3].includes(e)&&(t=Math.round(t/e)*e)}return t}(n,t))}return n}function x(t,e,n=null){t.is("input, select, textarea")&&(n=null===n?q(t.val()):n)!==e&&(o||C(),void 0===a[o]&&(a[o]={}),void 0===a[o].value&&(a[o].value=[]),a[o].value.push({input:t,old:n,new:e}),t.val(e).trigger("change"))}function _(t,e){o||C();const n=q(t.html());n!==e&&(void 0===a[o]&&(a[o]={}),void 0===a[o].html&&(a[o].html=[]),a[o].html.push({element:t,old:n,new:e}),t.html(e))}function O(e="undo"){if(!l)return;const n=Object.keys(a);let o,i;if("undo"===e&&s>0)s--,o=n[s],i="old",0===s&&t(".js-undo-changes").prop("disabled",!0),t(".js-redo-changes").prop("disabled",!1);else{if(!("redo"===e&&s<n.length))return;s++,o=n[s-1],i="new",s===n.length&&t(".js-redo-changes").prop("disabled",!0),t(".js-undo-changes").prop("disabled",!1)}const r=a[o],d=r.html;void 0!==d&&d.forEach((function(t){const e=t.element,n=t[i];e.html(n)}));const c=r.value;void 0!==c&&c.forEach((function(t){const e=t.input,n=t[i];e.val(n).trigger("change")}))}function C(){T(),s++,o=Date.now(),setTimeout((()=>{o=null}),200),t(".js-undo-changes").prop("disabled",!1),t(".js-redo-changes").prop("disabled",!0)}function T(){const t=Object.keys(a);if(t.length>s){const e=t.length-s;let n=1;for(;n<=e;){const e=t[t.length-n];delete a[e],n++}}}function S(t){return t.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase()}function q(t){if("string"==typeof t)return DOMPurify.sanitize(t);if(Array.isArray(t))return t.map(q);if(null!==t&&"object"==typeof t){const e={};for(const n in t)t.hasOwnProperty(n)&&(e[n]=q(t[n]));return e}return t}t("#bulk-actions-form").on("submit",(async function(n){const a=t("#bulk-action").val();if("atum-create-po"===a)n.preventDefault(),await async function(){const n=f();if(0===n.length)return void b(e.noProductSelected,"warning");const a=parseInt(t("#atum_supplier_id").val()),o=p(a),s={message:o?e.purchaseOrder+" - "+o:e.purchaseOrder+" - "+e.multipleSuppliers,submitText:e.createPurchaseOrder,htmlCallback:function(){return`\n\t\t\t\t\t\t<div class="form-floating">\n\t\t\t\t\t\t\t<textarea class="form-control rounded-3 shadow-sm mt-3" name="description" required></textarea>\n\t\t\t\t\t\t\t<label>${e.description} <span class="required-mark">*</span></label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-floating">\n\t\t\t\t\t\t\t<input type="datetime-local" class="form-control rounded-3 shadow-sm mt-3" name="date_expected" required>\n\t\t\t\t\t\t\t<label>${e.expectedDate} <span class="required-mark">*</span></label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-floating">\n\t\t\t\t\t\t\t<select class="form-select rounded-3 shadow-sm mt-3" name="status" required>\n\t\t\t\t\t\t\t\t<option value="atum_pending" selected>${e.pending}</option>\n\t\t\t\t\t\t\t\t<option value="atum_ordered">${e.ordered}</option>\n\t\t\t\t\t\t\t\t<option value="atum_onthewayin">${e.onthewayin}</option>\n\t\t\t\t\t\t\t\t<option value="atum_receiving">${e.receiving}</option>\n\t\t\t\t\t\t\t\t<option value="atum_received ">${e.received}</option>\n\t\t\t\t\t\t\t</select>\t\n\t\t\t\t\t\t\t<label>${e.poStatus} <span class="required-mark">*</span></label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`}},i=await g(s);if(null===i)return;const l={date_expected:i.date_expected,description:i.description,status:i.status,line_items:n};a?(l.supplier=a,l.multiple_suppliers=!1):l.multiple_suppliers=!0,m(l)}();else if("atum-update-po"===a)n.preventDefault(),await async function(){try{const n=f();if(0===n.length)return void b(e.noProductSelected,"warning");const a=await function(){j();const n=parseInt(t("#atum_supplier_id").val()),a={status:["atum_pending","atum_ordered","atum_onthewayin","atum_receiving"],per_page:50};return n?a.supplier=n:a.multiple_suppliers=!0,new Promise(((n,o)=>{t.ajax({url:mdspbeVars.restUrl+"wc/v3/atum/purchase-orders",method:"GET",data:a,dataType:"json",beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(t){n(t),$()},error:function(t){o(t),b(e.errorGettingPO,"danger"),$()}})}))}();let o=t("#atum_supplier_id").val();o=o?parseInt(t("#atum_supplier_id").val()):null;const s=p(o)??e.multipleSuppliers,i={message:s?e.purchaseOrder+" - "+s:e.purchaseOrder+" - "+e.multipleSuppliers,submitText:e.addToPurchaseOrder,htmlCallback:function(){let t="",n="";return a.forEach((function(t){if(o===t.supplier){let a=p(t.supplier);a=a||e.multipleSuppliers;const o=t.description??"",s=t.total??"0",i=t.currency??"",l=t.status.replace(/^atum_/,"");n+=`<option value="${t.id}">${a} - ${o} - ${i} ${s} - ${e[l]}</option>`}})),t=`\n\t\t\t\t\t\t\t<div class="form-floating">\n\t\t\t\t\t\t\t\t<select class="form-select rounded-3 shadow-sm mt-3" name="po_id" required>\n\t\t\t\t\t\t\t\t\t<option value="" selected disabled hidden></option>\n\t\t\t\t\t\t\t\t\t${n}\n\t\t\t\t\t\t\t\t</select>\t\n\t\t\t\t\t\t\t\t<label>${e.purchaseOrder} <span class="required-mark">*</span></label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`,t}},l=await g(i);if(null===l)return;m({line_items:n},l.po_id)}catch(t){}}();else{if(u)return;if(await y(e.wishToProceed)){j(),u=!0;const e=t(".js-element-selector:checked"),n=[];e.each((function(){const e=Number(t(this).attr("data-id"));n.push(e)})),t("#bulk-ids").val(JSON.stringify(n)),t(this).submit()}}})),t(".js-bulk-attribute-edit").on("click",(function(e){const n=q(t(this).attr("data-id"));h(t("#mdspbe-main-table tfoot td").find(`[data-id="${n}"]`),n,null,!0)})),t("#mdspbe-main-table").on("dblclick","input:not(.js-element-selector, .js-select-all), textarea",(async function(e){const n=q(t(this).attr("data-id"));h(t(this),n,q(t(this).val()))})),t(".js-add-option").on("click",(async function(){const n=t(this).data("id"),a=t(this).data("name"),o=mdspbeVars.editOpts[n],s=o.add.fields;if(void 0===o||void 0===o.add)return;const i={message:a+": "+e.addNew,submitText:e.add,htmlCallback:function(){let t="";return Object.keys(s).forEach((function(e){const a=s[e],o=a.required?"required":"",i=a.required?' <span class="required-mark">*</span>':"";let l;switch(a.type){case"input_text":l=`<input type="text" class="form-control rounded-3 shadow-sm mt-3" name="${a.name}" ${o}>`;break;case"input_number":l=`<input type="number" class="form-control rounded-3 shadow-sm mt-3" name="${a.name}" ${o}>`;break;case"textarea":l=`<textarea class="form-control rounded-3 shadow-sm mt-3" name="${a.name}" ${o}></textarea>`;break;case"select":let t='<option value="0"></option>';Object.keys(a.options).forEach((function(e){t+=`<option value="${e}">${a.options[e]}</option>`})),l=`<select class="form-select rounded-3 shadow-sm mt-3" id="add-field-${n}" name="${a.name}" ${o}>${t}</select>`}const r=`\n\t\t\t\t\t\t<div class="form-floating">\n\t\t\t\t\t\t\t${l}\n\t\t\t\t\t\t\t<label for="add-field-${a.name}">${a.label}${i}</label>\n\t\t\t\t\t\t</div>`;t+=r})),t}},l=await g(i);null!==l&&(l.id=n,function(n,a=()=>{}){j(),t.ajax({url:mdspbeVars.restUrl+"mdspbe/v1/add_option",method:"PUT",contentType:"application/json",data:JSON.stringify({data:n}),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(t){a(t),b(e.optionAdded,"success"),$()},error:function(t){b(e.errorAddingOpt,"danger"),$()}})}(l,(function(e){t(`select[data-id="${n}"]`).prepend(t("<option>",{value:e.id,text:e.name})),Object.keys(s).forEach((function(t){const a=s[t];"select"===a.type&&!0===a.addNewOpts&&(mdspbeVars.editOpts[n].add.fields[t].options[e.id]=e.name)})),t("#"+n).append(t("<option>",{value:e.id,text:e.name}))})))})),t(".js-remove-options").on("click",(async function(){const n=t(this).data("id"),a=t(this).data("name"),o=mdspbeVars.editOpts[n],s=o.add.fields;if(void 0===o||void 0===o.remove)return;const i=q(t("#mdspbe-main-table tfoot tr").find(`select[data-id="${n}"]`).html()),l={message:a+": "+e.remove,submitText:e.remove,type:"tom-select-multiple",selectOpts:i,showMagicSelector:!1},r=await g(l);null!==r&&(r.id=n,function(n,a=()=>{}){j(),t.ajax({url:mdspbeVars.restUrl+"mdspbe/v1/remove_options",method:"PUT",contentType:"application/json",data:JSON.stringify({data:n}),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(t){a(t),b(e.optionsRemoved,"success"),$()},error:function(t){b(e.errorRemovingOpts,"danger"),$()}})}(r,(function(e){const a=t(`select[data-id="${n}"]`);r.value_1.forEach((function(t){a.find(`option[value="${t}"]`).remove(),Object.keys(s).forEach((function(e){const a=s[e];"select"===a.type&&!0===a.addNewOpts&&delete mdspbeVars.editOpts[n].add.fields[e].options[t]}))}))})))})),t(".js-new-btn").on("click",(async function(n){const a=mdspbeVars.productTypes,o={message:e.addProducts,submitText:e.add,htmlCallback:function(){let t="";return Object.keys(a).forEach((function(e){t+=`<option value="${e}">${a[e]}</option>`})),`\n\t\t\t\t\t\t<div class="form-floating mb-3">\n\t\t\t\t\t\t\t<input type="number" value="1" class="form-control" name="quantity" id="prod-quantity">\n\t\t\t\t\t\t\t<label for="prod-quantity">${e.quantity}</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-floating mb-3">\n\t\t\t\t\t\t\t<select class="form-select" name="type" id="prod-type">${t}</select>\n\t\t\t\t\t\t\t<label for="prod-type">${e.type}</label>\n\t\t\t\t\t\t</div>`},scrollable:!0},s=await g(o);if(null===s)return;const l=s.type,r=s.quantity,d=t("#mdspbe-main-table tbody"),c=t("#mdspbe-main-table tfoot").find(`tr[data-product-type="${l}"]`).first();if(0===c.length)return;const u=t(document.createDocumentFragment());for(let t=0;t<r;t++){const t=c.clone(!0,!0);t.find(".js-will-required").prop("required",!0),t.find('td[data-id="product_type"] span').text(a[l]),u.append(t)}d.prepend(u),t("#mdspbe-main-form .table-responsive").scrollTop(0),i+=r,t(".js-save-btn").fadeIn()})),t(".js-save-btn").on("click",(function(a){const o=document.querySelector("#mdspbe-main-form");if(o.checkValidity()){t(".js-save-btn").fadeOut();const a={create:function(){const e=[];return t('#mdspbe-main-table tbody tr[data-id="0"]').each((function(){const n=t(this),a={prodType:n.attr("data-product-type")};n.find("input:not(.js-element-selector), select, textarea").each((function(){const e=q(t(this).attr("data-id")),n=q(t(this).val());a[e]=n})),e.push(a)})),e.reverse()}(),update:n};j(),t.ajax({url:mdspbeVars.restUrl+"mdspbe/v1/update_create",method:"PUT",contentType:"application/json",data:JSON.stringify({data:a}),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(n){!function(n){let a=!1;const o=t("#mdspbe-main-table tbody");Object.keys(n.update).forEach((function(t){const e=n.update[t],s=o.find(`[data-id='${t}']`);s.length>0&&(a=v(s,t,e))})),Object.keys(n.create).forEach((function(e){const o=n.create[e],s=t('#mdspbe-main-table tbody tr[data-id="0"]').last();s.attr("data-id",e).removeClass("table-danger"),s.find(".js-remove-row-cont").remove();const i=s.find(".js-row-actions-cont");i.show(),i.find(".js-row-view-cont").attr("href",o.permalink);const l=`${mdspbeVars.adminUrl}post.php?post=${e}&action=edit`;i.find(".js-row-edit-cont, .js-row-create-variation-cont").attr("href",l),s.find(".js-element-selector").attr("data-id",e),a=v(s,e,o,!0,a)})),a?b(e.notAllProdsUpdated,"warning"):b(e.allProdsUpdated,"success")}(n),$(!1)},error:function(t){b(e.errorUpdated,"danger"),$()}})}else o.reportValidity()})),t(".js-remove-row").on("click",(function(e){e.preventDefault();const a=t(this).closest("tr");0==a.attr("data-id")&&(a.remove(),i--,0===i&&0===Object.keys(n).length&&t(".js-save-btn").fadeOut())})),t(document).on("click",".js-tom-select-edit",(function(e){const n=t(this).closest("td").find("select.js-tom-select"),a=q(n.attr("data-id")),o=q(n.val());h(n,a,o)})),t(document).on("click",".js-wp-edit",(function(e){t(this).closest("td").find("textarea.js-wp-editor").trigger("dblclick")})),t(document).on("click",".js-set-image",(function(e){e.preventDefault();const n=t(this),a=wp.media({multiple:!1});a.on("select",(function(){const t=a.state().get("selection").first().toJSON(),e=n.closest(".js-image-preview"),o=n.closest("td").find("input");_(e,`\n\t\t\t\t\t<div class="d-flex flex-column justify-content-center gap-1">\n\t\t\t\t\t\t<span class="cursor-pointer js-set-image dashicons dashicons-edit"></span>\n\t\t\t\t\t\t<span class="cursor-pointer js-remove-image dashicons dashicons-trash"></span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<img src="${t.url}" style="height: 60px; width: auto;" class="cursor-pointer rounded-3 js-set-image">`),x(o,t.id)})),a.open()})),t(document).on("click",".js-bulk-set-image",(function(e){e.preventDefault();const n=t(this),a=wp.media({multiple:!1});a.on("select",(function(){const e=a.state().get("selection").first().toJSON(),o=n.closest(".js-image-preview"),s=t("#daFormPromptModal").find(".js-value-1"),i=t("#daFormPromptModal").find(".js-value-src");o.html(`\n\t\t\t\t\t<div class="image-container cursor-pointer js-bulk-set-image mx-auto mt-3">\n\t\t\t\t\t\t<img src="${e.url}" style="height: 60px; width: auto;" class="rounded-3">\n\t\t\t\t\t</div>`),s.val(e.id),i.val(e.url)})),a.open()})),t(document).on("click",".js-remove-image",(function(e){const n=t(this).closest("td").find("input");_(t(this).closest(".js-image-preview"),'<div class="d-flex flex-column justify-content-center"><span class="cursor-pointer js-set-image dashicons dashicons-plus-alt"></span></div>'),x(n,"")})),t("#set-bulk-image").on("change",(function(){t(".js-bulk-set-image").fadeIn()})),t("#remove-bulk-image").on("change",(function(){t(".js-bulk-set-image").fadeOut()})),t(document).on("change",".js-magic-selector",(function(){const n=q(t(this).find("option:selected").val()),a=t("#daFormPromptModal");"clear-out"===n?a.find(".js-value-1, .js-value-2, .js-round-selector, .js-image-preview, #wp-wp-editor-1-wrap").hide():"replace"===n?(a.find(".js-value-1").attr("placeholder",e.replaceThis).show(),a.find(".js-value-2").attr("placeholder",e.withThis).show()):(a.find(".js-value-1, .js-round-selector").attr("placeholder","").show(),a.find(".js-value-2").hide(),a.find(".js-image-preview, #wp-wp-editor-1-wrap").show())})),t(".js-toggle-fields").on("click",(async function(n){n.preventDefault();const a={message:e.toggleFields,submitText:e.save,htmlCallback:function(){let t=`\n\t\t\t\t\t\t<div class="form-floating mb-3">\n\t\t\t\t\t\t\t<input type="text" class="form-control" id="toggle-field-search">\n\t\t\t\t\t\t\t<label for="toggle-field-search">${e.search}</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="js-toggle-fields-wrapper">`;return mdspbeVars.toggleFields.forEach((function(e){const n=e.active?"checked":"";t+=`\n\t\t\t\t\t\t\t<div class="js-toggle-field-wrapper">\n\t\t\t\t\t\t\t\t<input type="checkbox" class="js-toggle-attribute" id="toggle-${e.id}" name="${e.id}" value="yes" ${n}>\n\t\t\t\t\t\t\t\t<label for="toggle-${e.id}" title="${e.description}">\n\t\t\t\t\t\t\t\t\t${e.name}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>`})),t+="</div>",t},scrollable:!0},o=await g(a);null!==o&&function(n,a=()=>{}){j(),t.ajax({url:mdspbeVars.restUrl+"mdspbe/v1/toggle_fields",method:"PUT",contentType:"application/json",data:JSON.stringify({data:n}),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(t){a(t),$()},error:function(t){b(e.errorTogglingFields,"danger"),$()}})}(o,(async function(t){await y(e.realoadToApplyChanges)&&(j(),window.location.href=window.location.href)}))})),t(document).on("click",".js-toggle-attribute",(function(){const e=t(this).attr("name"),n=t(this).prop("checked"),a=mdspbeVars.attributes;(a[e]&&a[e].attrs_needed?a[e].attrs_needed:[]).forEach((function(o){(n||(a[o]&&a[o].attrs_needed?a[o].attrs_needed:[]).includes(e))&&t("#toggle-"+o).prop("checked",n)}))})),t(document).on("input","#toggle-field-search",(function(){t(".js-toggle-field-wrapper").hide();const e=S(t(this).val());t(".js-toggle-fields-wrapper").find("label").filter((function(){return S(t(this).text()).includes(e)})).closest(".js-toggle-field-wrapper").show()})),t(".js-create-tags-dialog").on("click",(async function(n){n.preventDefault();const a={message:e.createPrintTags,submitText:e.create,htmlCallback:function(){return`\n\t\t\t\t\t\t<div class="row g-3 mb-3">\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<select class="form-select" id="tag-product-selection" name="product-selection" required>\n\t\t\t\t\t\t\t\t\t<option value="all" selected>${e.allProductsOnPage}</option>\n\t\t\t\t\t\t\t\t\t<option value="selected">${e.selectedProducts}</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t<label for="tag-product-selection">${e.productSelection}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" id="tag-quantity" name="quantity" value="1" min="1" max="100" required>\n\t\t\t\t\t\t\t\t<label for="tag-quantity">${e.tagQuantity}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="row g-3 mb-3">\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" id="tag-text-scale" name="scale" value="100" min="0" placeholder="%">\n\t\t\t\t\t\t\t\t<label for="tag-text-scale">${e.textScale}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<select class="form-select" id="tag-size" name="size" required>\n\t\t\t\t\t\t\t\t\t<option value="50x30" selected>${e.s50x30}</option>\n\t\t\t\t\t\t\t\t\t<option value="63x22">${e.s63x22}</option>\n\t\t\t\t\t\t\t\t\t<option value="custom">${e.customSize}</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t<label for="tag-size">${e.tagSize}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="row g-3 mb-3" id="tag-custom-size-cont" style="display: none">\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" id="tag-width" name="width">\n\t\t\t\t\t\t\t\t<label for="tag-width">${e.witdhInMm}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" id="tag-height" name="height">\n\t\t\t\t\t\t\t\t<label for="tag-height">${e.heightInMm}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="mb-3">\n\t\t\t\t\t\t\t<h6>${e.fieldsToShow}</h6>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type="checkbox" id="tag-show-name" name="show-name" value="yes" checked>\n\t\t\t\t\t\t\t\t<label class="form-check-label" for="tag-show-name">\n\t\t\t\t\t\t\t\t\t${e.name}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type="checkbox" id="tag-show-sku" name="show-sku" value="yes" checked>\n\t\t\t\t\t\t\t\t<label class="form-check-label" for="tag-show-sku">\n\t\t\t\t\t\t\t\t\t${e.sku}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type="checkbox" id="tag-show-price" name="show-price" value="yes" checked>\n\t\t\t\t\t\t\t\t<label class="form-check-label" for="tag-show-price">\n\t\t\t\t\t\t\t\t\t${e.price}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type="checkbox" id="tag-show-global-id" name="show-global-id" value="yes" checked>\n\t\t\t\t\t\t\t\t<label class="form-check-label" for="tag-show-global-id">\n\t\t\t\t\t\t\t\t\t${e.globalUniqueId}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type="checkbox" id="tag-show-current-date" name="show-current-date" value="yes" checked>\n\t\t\t\t\t\t\t\t<label class="form-check-label" for="tag-show-current-date">\n\t\t\t\t\t\t\t\t\t${e.currentDate}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>`},scrollable:!0},o=await g(a);if(null===o)return;const s=[];"all"===o["product-selection"]?t("#mdspbe-main-table tbody tr").each((function(){s.push(t(this).attr("data-id"))})):t("#mdspbe-main-table tbody").find(".js-element-selector:checked").each((function(){s.push(t(this).attr("data-id"))})),0!==s.length?(o.prodsIds=s,function(n,a=()=>{}){j(),t.ajax({url:mdspbeVars.restUrl+"mdspbe/v1/get_print_tag_data",method:"POST",contentType:"application/json",data:JSON.stringify({data:n}),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(t){a(t),$()},error:function(t){b(e.errorCreatingTags,"danger"),$()}})}(o,(function(t){!function(t,e,n=()=>{}){const a=t.quantity??1,o=t.size;let s,i;"50x30"===o?(s="50",i="30"):"63x22"===o?(s="63",i="22"):(s=t.width??"50",i=t.height??"30");let l="";if("yes"===t["show-current-date"]){const t=new Date,e=String(t.getDate()).padStart(2,"0"),n=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getFullYear()).slice(-2);l=`${e}-${n}-${a}`}const r=t.scale,d=parseInt(8*r/100,10),c=parseInt(12*r/100,10),u=parseInt(16*r/100,10);let p="";Object.keys(e).forEach((function(t){const n=e[t];let o='<div class="grid-item">';n.name&&(o+=`<div class="size-m t-bold">${n.name}</div>`),n.sku&&(o+=`<div class="size-s">${n.sku}</div>`),n.price&&(o+=`<div class="size-l t-bold">${n.price}</div>`),o+=`\n\t\t\t\t\t<div class="bottom-flex">\n\t\t\t\t\t\t<div class="size-s bottom-left">${n.global_unique_id??""}</div>\n\t\t\t\t\t\t<div class="size-s bottom-right">${l}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>`;for(var s=0;s<a;s++)p+=o})),n(`\n\t\t\t\t<html>\n\t\t\t\t<head>\n\t\t\t\t\t<style type="text/css" media="print">\n\n\t\t\t\t\tbody {\n\t\t\t\t\t\tpadding: 5mm;\n\t\t\t\t\t\tbox-sizing: border-box;\n    \t\t\t\t\tfont-family: Verdana, Geneva, sans-serif;\n\t\t\t\t\t}\n\n\t\t\t\t\t.grid-container {\n\t\t\t\t\t\tdisplay: grid;\n\t\t\t\t\t\tgrid-template-columns: repeat(auto-fill, ${s}mm);\n\t\t\t\t\t\tgrid-auto-rows: ${i}mm;\n\t\t\t\t\t\tgap: 0mm;\n\t\t\t\t\t}\n\n\t\t\t\t\t.grid-item {\n\t\t\t\t\t\twidth: ${s}mm;\n\t\t\t\t\t\theight: ${i}mm;\n\t\t\t\t\t\tpadding: 3%;\n\t\t\t\t\t\tgap: 5%;\n\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\tborder: 1px solid #ccc;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\tbackground: white;\n\t\t\t\t\t\tpage-break-inside: avoid;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t.bottom-flex {\n\t\t\t\t\t\tdisplay: flex;\n  \t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tmargin-top: auto;\n\t\t\t\t\t}\n\n\t\t\t\t\t.bottom-left,\n\t\t\t\t\t.bottom-right {\n\t\t\t\t\t\tflex: 1 1 auto;\n\t\t\t\t\t}\n\n\t\t\t\t\t.bottom-right {\n\t\t\t\t\t\ttext-align: right;\n\t\t\t\t\t}\n\n\t\t\t\t\t.t-bold {\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t}\n\n\t\t\t\t\t.size-s {\n\t\t\t\t\t\tfont-size: ${d}pt;\n\t\t\t\t\t}\n\n\t\t\t\t\t.size-m {\n\t\t\t\t\t\tfont-size: ${c}pt;\n\t\t\t\t\t}\n\n\t\t\t\t\t.size-l {\n\t\t\t\t\t\tfont-size: ${u}pt;\n\t\t\t\t\t}\n\t\t\t\t\t</style>\n\t\t\t\t</head>\n\t\t\t\t<body>\n\t\t\t\t\t<div class="grid-container">\n\t\t\t\t\t${p}\n\t\t\t\t\t</div>\n\t\t\t\t</body>\n\t\t\t\t</html>\n\t\t\t\t`)}(o,t,(function(t){!function(t){const e=window.open("","","height=1000, width=1000");e.document.write(t),e.document.close(),e.print(),e.close()}(t)}))}))):b(e.noSelectedProducts,"warning")})),t(document).on("change","#tag-size",(function(){"custom"===t(this).val()?(t("#tag-custom-size-cont").show(),t("#tag-width, #tag-height").prop("required",!0)):(t("#tag-custom-size-cont").hide(),t("#tag-width, #tag-height").prop("required",!1))})),window.addEventListener("beforeunload",(function(e){let a=!1;t("#mdspbe-main-table .js-po-qty").each((function(){""!=t(this).val()&&(a=!0)})),console.log(a),(a||Object.keys(n).length>0||i>0)&&(e.preventDefault(),e.returnValue="")})),document.querySelectorAll(".resizer").forEach((t=>{let e,n,a;const o=function(t){const o=n+(t.pageX-e);a.style.width=o+"px"},s=function(){document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",s),document.body.classList.remove("resizing")};t.addEventListener("mousedown",(function(i){a=t.parentElement,e=i.pageX,n=a.offsetWidth,document.addEventListener("mousemove",o),document.addEventListener("mouseup",s),document.body.classList.add("resizing")}))}))}))}();
     1!function(){"use strict";var t;(t=jQuery)((function(){const e=mdspbeVars.i18n,n={},a={};let o,s=0,i=0,l=!0;function r(t){const e=t.attr("data-id"),n=mdspbeVars.conditionals[e];n&&n.forEach((function(e){!function(t,e){const n=e.closest("tr"),a=n.find(`td[data-id="${t}"]`).find("input, select, textarea"),o=mdspbeVars.attributes[t],s=o.conditionals;if(!s)return;let i=!1;Object.keys(s).some((function(t){let e=s[t];!0===e?e="yes":!1===e&&(e="no");const a=n.find(`td[data-id="${t}"]`).find("input, select, textarea");if(a&&a.val()!==e)return i=!0,!0})),a.prop("disabled",i),i&&x(a,o.default??"")}(e,t)}))}t(".js-current-label").fadeOut(),function(){let t=new URL(window.location.href);const n=t.searchParams.get("success");n&&(t.searchParams.delete("success"),b(e[n+"BulkSuccess"],"success"),window.history.pushState({},"",t.toString()))}(),mdspbeVars.atumActive&&(t("#mdspbe-main-table thead").find("th.sticky-col").each((function(){t(this).after(`<th class="table-warning js-purchase-order-cell" style="display: none;">\n\t\t\t\t\t\t\t<div class="th-content-wrapper">\n\t\t\t\t\t\t\t\t<div class="text-center text-nowrap">\n\t\t\t\t\t\t\t\t\t${e.purchaseOrder}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>`)})),t("#mdspbe-main-table tbody").find("td.sticky-col").each((function(){t(this).after('<td class="table-warning js-purchase-order-cell" style="display: none;" data-id="atum_purchase_qty">\n\t\t\t\t\t\t\t<input type="number" class="form-control rounded-3 js-po-qty">\n\t\t\t\t\t\t</td>')}))),t(document).on("change",".js-po-qty",(function(){const e=t(this);""===e.val()?e.closest("td").removeClass("table-danger").addClass("table-warning"):e.closest("td").removeClass("table-warning").addClass("table-danger")})),t("#mdspbe-main-table").on("change","input:not(.js-element-selector, .js-select-all, .js-po-qty), select, textarea",(function(e){const a=t(this);r(a);const o=Number(a.closest("tr").attr("data-id"));if(0===o)return;const s=q(a.attr("data-id")),l=a.closest("td"),d=a.val(),c=q(d);d!==c&&a.val(c);const u=a.val();let p,m=q(a.attr("data-value"));var f,h;Array.isArray(u)&&""==m&&(m="[]"),Array.isArray(u)?(h=m,p=(f=u).length===h.length&&f.sort().join(",")===h.sort().join(",")):p=u===m,p?(l.removeClass("table-danger"),l.find(".js-current-label").fadeOut(),n[o]&&(delete n[o][s],0===Object.keys(n[o]).length&&delete n[o])):(l.addClass("table-danger"),l.find(".js-current-label").fadeIn(),void 0===n[o]&&(n[o]={}),n[o][s]=c),0===Object.keys(n).length&&0===i?t(".js-save-btn").fadeOut():t(".js-save-btn").fadeIn()}));let d=null;function c(e=null){let n,a;null===e&&(e=t(".js-element-selector:checked").length>0),e?(n="btn-light",a="btn-warning"):(n="btn-warning",a="btn-light"),t(".js-bulk-attribute-edit, .js-bulk-action-apply").prop("disabled",!e).removeClass(n).addClass(a)}t("#mdspbe-main-table").find("input:not(.js-element-selector, .js-select-all, .js-po-qty), select, textarea").on("focus",(function(){d=q(t(this).val())})).on("blur",(function(){d=null})).on("change",(function(){null!==d&&function(e){const n=q(e.val()),o=d;if(o!==n){T(),s++;const i=Date.now();void 0===a[i]&&(a[i]={}),void 0===a[i].value&&(a[i].value=[]),a[i].value.push({input:e,old:o,new:n}),t(".js-undo-changes").prop("disabled",!1),t(".js-redo-changes").prop("disabled",!0)}d=n}(t(this))})),t(".js-undo-changes").on("click",(function(){O("undo")})),t(".js-redo-changes").on("click",(function(){O("redo")})),t(document).on("keydown",(function(e){e.ctrlKey&&"z"===e.key.toLowerCase()&&!e.shiftKey&&(e.preventDefault(),t(document.activeElement).blur(),O("undo")),(e.ctrlKey&&"y"===e.key.toLowerCase()||e.ctrlKey&&e.shiftKey&&"z"===e.key.toLowerCase())&&(e.preventDefault(),t(document.activeElement).blur(),O("redo"))})),t(".js-element-selector").on("change",(function(){t(this).closest("tr").toggleClass("table-primary",t(this).prop("checked")),c()})),t(".js-select-all").on("change",(function(){const e=t(this).is(":checked");t("tbody .js-element-selector").prop("checked",e).trigger("change")})),t("#bulk-action").on("change",(function(){const e=["atum-create-po","atum-update-po"].includes(t(this).val());l=!e,e?c(e):c(),t("#mdspbe-main-table").find("td, th").toggle(!e),t(".js-bulk-attribute-edit, .js-no-bulk-action, .js-element-selector, .js-select-all").toggle(!e);const n=t("#mdspbe-main-table td").not(".js-purchase-order-cell");n.find("input").prop("readonly",e),n.find("select").prop("disabled",e),e?t("#mdspbe-main-table").find(".js-purchase-order-cell, .js-po-keep").toggle(e):t("#mdspbe-main-table").find(".js-purchase-order-cell").toggle(e),t(".float-div").toggle(!e)})),t(".js-bulk-action-apply").on("click",(function(n){""===t("#bulk-action").val()&&(n.preventDefault(),b(e.selectAnAction,"warning"))}));let u=!1;function p(e){return e?q(t("#atum-supplier").find(`option[value="${e}"]`).text()):""}function m(n,a=null){j();let o=mdspbeVars.restUrl+"wc/v3/atum/purchase-orders";a&&(o+="/"+a),t.ajax({url:o,method:"POST",contentType:"application/json",data:JSON.stringify(n),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(n){t(".js-po-qty").val("").trigger("change").closest("td").removeClass("table-danger").addClass("table-warning"),b(`${a?e.poUpdatedSuccesfully:e.poCreatedSuccesfully}. <a href="${mdspbeVars.adminUrl}post.php?post=${n.id}&action=edit" target="_blank">${e.viewPurchaseOrder}</a>`,"success"),$()},error:function(t){b(e.errorCreatingPO,"danger"),$()}})}function f(){const e=[];return t("#mdspbe-main-table .js-po-qty").each((function(){const n=t(this),a=n.closest("tr"),o=isFinite(a.attr("data-id"))?parseInt(a.attr("data-id")):null,s=isFinite(n.val())?parseInt(n.val()):null;o&&s&&e.push({product_id:o,quantity:s})})),e}async function h(n,a,o=null,s=!1){if(!l)return;const i=n[0].tagName.toLowerCase(),r="select"===i?q(n.html()):"";let d,c="";n.hasClass("js-wp-editor")?d="wp-editor":n.hasClass("js-tom-select")?(c=q(n.attr("data-id")),d=n.prop("multiple")?"tom-select-multiple":"tom-select"):n.hasClass("js-input-image")?d="image":"input"===i?d=n.attr("type"):("textarea"===i||"select"===i)&&(d=i);const u={message:n.attr("data-name"),submitText:e.save,type:d,selectOpts:r,defaultValue:o,attrId:c,remoteData:n.hasClass("js-remote-data")},p=await g(u);if(null!==p){const e=!0===s?t(".js-element-selector:checked").closest("tr"):n.closest("tr");if("wp-editor"===d)e.each((function(){const e=t(this),n=e.find(`[data-id="${a}"]`).find(".js-wp-edit-content"),o=e.find(`textarea[data-id="${a}"]`),s=k(q(o.val()),p);_(n,s),x(o,s)}));else if("tom-select"===d){const n=k(null,p),o=q(t("#form-prompt .js-value-1").find(`option[value="${n}"]`).text());e.each((function(){const e=t(this),s=e.find(`[data-id="${a}"]`).find(".js-tom-select-content"),i=e.find(`select[data-id="${a}"]`),l=i.val();i.hasClass("js-remote-data")&&_(i,""!==n?`<option value="0"></option><option value="${n}" selected>${o}</option>`:'<option value="0"></option>'),_(s,o),x(i,n,l)}))}else"tom-select-multiple"===d?e.each((function(){const e=t(this),n=e.find(`[data-id="${a}"]`).find(".js-tom-select-content"),o=e.find(`select[data-id="${a}"]`),s=[...o.val()],i=k(o.val(),p);o.hasClass("js-remote-data")?function(e,n){const a=t("#form-prompt .js-value-1"),o=n.value_1;let s;switch(void 0!==n.action?n.action:"set"){case"set":s='<option value="0"></option>',o.forEach((function(t){const e=q(a.find(`option[value="${t}"]`).text());s+=`<option value="${t}" selected>${e}</option>`})),_(e,s);break;case"add":s=e.html(),o.forEach((function(t){if(0===e.find(`option[value="${t}"]`).length){const e=q(a.find(`option[value="${t}"]`).text());s+=`<option value="${t}" selected>${e}</option>`}})),_(e,s);break;case"remove":s="",e.find("option").each((function(){const e=t(this).val();o.includes(e)||(s+=t(this)[0].outerHTML)})),_(e,s)}}(o,p):function(e,n){let a="";e.find("option").each((function(){const e=t(this).val(),o=n&&n.includes(e)?"selected":"";a+=`<option value="${e}" ${o}>${t(this).text()}</option>`})),_(e,a)}(o,i);let l=[];o.find("option:selected").each((function(){const e=t(this).text();""!==e&&l.push(e)})),l=l.join(", "),_(n,l),x(o,i,s)})):"image"===d?e.each((function(){const e=t(this),n=e.find(`td [data-id="${a}"]`),o=e.find(".js-image-preview"),s=p.src;x(n,p.value_1),_(o,""!=s?`\n\t\t\t\t\t\t\t\t<div class="d-flex flex-column justify-content-center gap-1">\n\t\t\t\t\t\t\t\t\t<span class="cursor-pointer js-set-image dashicons dashicons-edit"></span>\n\t\t\t\t\t\t\t\t\t<span class="cursor-pointer js-remove-image dashicons dashicons-trash"></span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<img src="${s}" style="height: 60px; width: auto;" class="cursor-pointer rounded-3 js-set-image">`:'<div class="mt-1"><span class="cursor-pointer js-set-image dashicons dashicons-plus-alt"></span></div>')})):e.find(`td [data-id="${a}"]`).each((function(){const e=t(this),n=q(e.val());x(e,k(n,p))}))}}function v(e,a,o,s=!1,l=!1){return e.find("td").each((function(){const e=t(this).find("input:not(.js-element-selector, .js-select-all), select, textarea").first(),r=q(e.attr("data-id"));if(!0===o.updated[r]){let o;e.attr("data-value",q(e.val())),o="select"===e[0].tagName.toLowerCase()?e.hasClass("multiple")?e.find("option:selected").map((function(){return q(t(this).text())})).get().join(", "):q(e.find("option:selected").text()):q(e.val()),t(this).find(".js-current-label").fadeOut(),t(this).find(".js-current-label span").text(o),t(this).removeClass("table-danger").addClass("table-success"),void 0!==n[a]&&void 0!==n[a][r]&&delete n[a][r],s&&i--}else!1===o.updated[r]&&(t(this).addClass("table-danger"),l=!0)})),void 0!==n[a]&&0===Object.keys(n[a]).length&&delete n[a],l}function b(t,e="primary",n=1e4){const a=document.getElementById("da-alert-container"),o=document.createElement("div"),s=n>0?'<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>':"";o.className=`alert alert-${e} fade show shadow-lg`,o.role="alert",o.innerHTML=`\n\t\t\t\t${t}\n\t\t\t\t${s}\n\t\t\t`,a.appendChild(o),n>=0&&setTimeout((()=>{o.classList.remove("show"),setTimeout((()=>o.remove()),150)}),n)}function g(n){return new Promise((a=>{t("#customFormPromptLabel").text(n.message),t("#formPromptSubmit").text(n.submitText);const o=t("#daFormPromptModal"),s=t("#form-prompt"),i=n.htmlCallback;if(void 0!==i)s.html(i());else{const a=n.type,o=void 0!==n.defaultValue?n.defaultValue:"",i=void 0!==n.selectOpts?n.selectOpts:"",r=void 0!==n.remoteData&&n.remoteData,d=void 0===n.showMagicSelector||n.showMagicSelector;if(s.html(function(t,n="",a=!1,o=!0){const s=!0===a?"js-remote-data":"";let i="";switch(t){case"text":i=`\n\t\t\t\t\t\t${w("text",o)}\n\t\t\t\t\t\t<input type="text" class="form-control rounded-3 shadow-sm mt-3 js-value-1" name="value_1">\n\t\t\t\t\t\t<input type="text" class="form-control rounded-3 shadow-sm mt-3 js-value-2" name="value_2" style="display: none;">`;break;case"number":i=`\n\t\t\t\t\t\t${w("number",o)}\n\t\t\t\t\t\t<input type="number" class="form-control rounded-3 shadow-sm mt-3 js-value-1" name="value_1" step="0.01">\n\t\t\t\t\t\t\n\t\t\t\t<select class="rounded-3 shadow-sm mt-3 w-100 js-round-selector" name="round_to">\n\t\t\t\t\t<option value="0.01">${e.roundTo} 0.01</option>\n\t\t\t\t\t<option value="0.1">${e.roundTo} 0.1</option>\n\t\t\t\t\t<option value="" selected>${e.doNotRound}</option>\n\t\t\t\t\t<option value="10">${e.roundTo} 10</option>\n\t\t\t\t\t<option value="20">${e.roundTo} 20</option>\n\t\t\t\t\t<option value="50">${e.roundTo} 50</option>\n\t\t\t\t\t<option value="100">${e.roundTo} 100</option>\n\t\t\t\t\t<option value="200">${e.roundTo} 200</option>\n\t\t\t\t\t<option value="500">${e.roundTo} 500</option>\n\t\t\t\t\t<option value="1000">${e.roundTo} 1000</option>\n\t\t\t\t</select>`;break;case"date":i=`\n\t\t\t\t\t\t${w("date",o)}\n\t\t\t\t\t\t<input type="date" class="form-control rounded-3 shadow-sm mt-3 js-value-1" name="value_1">`;break;case"textarea":i=`\n\t\t\t\t\t\t${w("text",o)}\n\t\t\t\t\t\t<textarea class="form-control rounded-3 shadow-sm mt-3 js-value-1" name="value_1" rows="10"></textarea>\n\t\t\t\t\t\t<textarea class="form-control rounded-3 shadow-sm mt-3 js-value-2" name="value_2" rows="10" style="display: none;"></textarea>`;break;case"wp-editor":i=`\n\t\t\t\t\t\t${w("wp-editor",o)}\n\t\t\t\t\t\t<textarea id="wp-editor-1" class="js-value-1" name="value_1" rows="10" hidden></textarea>`;break;case"tom-select":i=`\n\t\t\t\t\t\t${w(t,o)}\n\t\t\t\t\t\t<select class="rounded-3 shadow-sm mt-3 js-value-1 ${s}" name="value_1">${n}</select>`;break;case"tom-select-multiple":i=`\n\t\t\t\t\t\t${w(t,o)}\n\t\t\t\t\t\t<select class="rounded-3 shadow-sm mt-3 js-value-1 ${s}" name="value_1" multiple>${n}</select>`;break;case"select":i=`\n\t\t\t\t\t\t<select class="form-select rounded-3 shadow-sm mt-3 js-value-1" name="value_1">\n\t\t\t\t\t\t\t${n}\n\t\t\t\t\t\t</select>`;break;case"image":i=`\n\t\t\t\t\t${w("image",o)}\n\t\t\t\t\t<div class="js-image-preview">\n\t\t\t\t\t\t<div class="no-image-container cursor-pointer js-bulk-set-image mx-auto mt-3">\n\t\t\t\t\t\t\t<span class="dashicons dashicons-plus-alt"></span> \n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<input type="hidden" class="js-value-1" name="value_1">\n\t\t\t\t\t<input type="hidden" class="js-value-src" name="src">`}return i}(a,i,r,d)),"tom-select"===a||"tom-select-multiple"===a){const e=n.attrId?n.attrId:"";document.querySelectorAll(".js-value-1, .js-value-2").forEach((n=>{!function(e,n){const a=e.tomselect;void 0!==a&&a.destroy(),new TomSelect(e,{plugins:["remove_button"],valueField:"id",labelField:"name",searchField:"name",onInitialize:function(){this.control.classList.add("rounded-3"),this.control.classList.add("border-secondary"),t(e).hasClass("js-hidden")&&(this.wrapper.style.display="none")},shouldLoad:function(t){return t.length>2},load:function(a,o){if(t(e).hasClass("js-remote-data")){const t=mdspbeVars.restUrl+"mdspbe/v1/get_ajax_options?term="+encodeURIComponent(a)+"&attrId="+encodeURIComponent(n);fetch(t,{method:"GET",headers:{"X-WP-Nonce":mdspbeVars.nonce}}).then((t=>t.json())).then((t=>{o(t)})).catch((()=>{o()}))}else o()},render:{option:function(t,e){return`<div>${e(t.name)}</div>`},item:function(t,e){return`<div>${e(t.name)}</div>`}}})}(n,e)}))}else"select"===a?o?s.find(".js-value-1").val(o):s.find(".js-value-1").val(""):"wp-editor"===a?(l=["wp-editor-1"],"undefined"!=typeof wp&&wp.editor&&wp.editor.initialize&&l.forEach((function(t){wp.editor.remove&&wp.editor.remove(t),wp.editor.initialize(t,{tinymce:{wpautop:!0,toolbar1:"bold italic underline | bullist numlist | link",plugins:"lists link"},quicktags:!0,mediaButtons:!1})})),o&&tinymce.get("wp-editor-1").setContent(o)):"tom-select"===a?o?s.find(".js-value-1").val(o):s.find(".js-value-1").val(""):"tom-select-multiple"===a?o?s.find(".js-value-1").val(o):s.find(".js-value-1").val([]):o&&s.find(".js-value-1").val(o)}var l;function r(){if(s[0].checkValidity()){"wp-editor"===n.type&&s.find(".js-value-1").val(function(){const e=tinymce.get("wp-editor-1");return e&&!e.isHidden()?e.getContent():q(t("#wp-editor-1").val())}());const e="tom-select-multiple"===n.type,i=function(t,e=!1){return t.reduce(((t,{name:n,value:a})=>(e&&["value_1","value_2"].includes(n)?(t[n]||(t[n]=[]),t[n].push(a)):t[n]=a,t)),{})}(s.serializeArray(),e);o.modal("hide"),a(i)}else s[0].reportValidity()}!0===n.scrollable?o.find(".modal-dialog").addClass("modal-dialog-scrollable"):o.find(".modal-dialog").removeClass("modal-dialog-scrollable"),o.modal("show"),t("#formPromptSubmit").off("click").on("click",r),s.off("submit").on("submit",(function(e){e.preventDefault(),t("#formPromptSubmit").trigger("click")})),o.find(".js-magic-selector, .js-value-1, .js-value-2").off("keydown").on("keydown",(function(t){"Enter"===t.key&&(t.preventDefault(),r())})),t("#daFormPromptModal").off("hidden.bs.modal").on("hidden.bs.modal",(function(){a(null)}))}))}function y(e){return new Promise((n=>{const a=t("#daConfirmModal");document.getElementById("daConfirmModalMessage").innerText=e,document.getElementById("daConfirmModalYes").onclick=function(){n(!0),a.modal("hide")},document.querySelector("#daConfirmModal .btn-close, #daConfirmModal .btn-secondary").onclick=function(){n(!1),a.modal("hide")},a.modal("show"),jQuery("#daConfirmModal").off("keydown").on("keydown",(function(t){"Enter"===t.key&&(t.preventDefault(),jQuery("#daConfirmModalYes").trigger("click"))}))}))}function w(t,n=!0){if(!n)return"";let a="";return"text"===t?a=`\n\t\t\t\t\t<option value="set">${e.setNew}</option>\n\t\t\t\t\t<option value="add-start">${e.addAtTheStart}</option>\n\t\t\t\t\t<option value="add-end">${e.addAtTheEnd}</option>\n\t\t\t\t\t<option value="substract">${e.substractValue}</option>\n\t\t\t\t\t<option value="replace">${e.replaceValue}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`:"number"===t?a=`\n\t\t\t\t\t<option value="set">${e.setAmount}</option>\n\t\t\t\t\t<option value="add-perc">${e.addPercentage}</option>\n\t\t\t\t\t<option value="subs-perc">${e.substractPercentage}</option>\n\t\t\t\t\t<option value="add-amount">${e.addAmount}</option>\n\t\t\t\t\t<option value="subs-amount">${e.substractAmount}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`:"image"===t||"date"===t||"tom-select"===t?a=`\n\t\t\t\t\t<option value="set">${e.setNew}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`:"multiple_images"===t?a=`\n\t\t\t\t\t<option value="set">${e.setNew}</option>\n\t\t\t\t\t<option value="add-start">${e.addAtTheStart}</option>\n\t\t\t\t\t<option value="add-end">${e.addAtTheEnd}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`:"array"===t||"tom-select-multiple"===t?a=`\n\t\t\t\t\t<option value="set">${e.setNew}</option>\n\t\t\t\t\t<option value="add">${e.addValue}</option>\n\t\t\t\t\t<option value="remove">${e.removeValue}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`:"wp-editor"===t&&(a=`\n\t\t\t\t\t<option value="set">${e.setNew}</option>\n\t\t\t\t\t<option value="add-start">${e.addAtTheStart}</option>\n\t\t\t\t\t<option value="add-end">${e.addAtTheEnd}</option>\n\t\t\t\t\t<option value="clear-out">${e.clearOut}</option>`),`\n\t\t\t\t<select class="rounded-3 shadow-sm w-100 js-magic-selector" name="action">\n\t\t\t\t\t${a}\n\t\t\t\t</select>`}function j(){t(".js-save-btn, .js-new-btn, .js-undo-changes, .js-redo-changes").fadeOut(),t("#mdspbe-container").addClass("blocked"),t(".floating-loader").show()}function $(e=!0){e&&(Object.keys(n).length>0||i>0)&&t(".js-save-btn").fadeIn(),t(".js-new-btn, .js-undo-changes, .js-redo-changes").fadeIn(),t("#mdspbe-container").removeClass("blocked"),t(".floating-loader").hide()}function k(t,e){let n;switch(void 0!==e.action?e.action:"set"){case"set":n=e.value_1;break;case"add":case"add-start":n=Array.isArray(t)?t.concat(e.value_1):e.value_1+t;break;case"add-end":n=Array.isArray(t)?e.value_1.concat(t):t+e.value_1;break;case"substract":case"remove":n=Array.isArray(t)?t.filter((t=>!e.value_1.includes(t))):t.replace(e.value_1,"");break;case"replace":Array.isArray(t)?(n=t.filter((t=>!e.value_1.includes(t))),n=n.concat(e.value_2)):n=t.replace(e.value_1,e.value_2);break;case"add-perc":t=""==t?0:t,n=parseFloat(t)*(100+parseFloat(e.value_1))/100;break;case"subs-perc":t=""==t?0:t,n=parseFloat(t)*(100-parseFloat(e.value_1))/100;break;case"add-amount":t=""==t?0:t,n=parseFloat(t)+parseFloat(e.value_1);break;case"subs-amount":t=""==t?0:t,n=parseFloat(t)-parseFloat(e.value_1);break;case"clear-out":n=Array.isArray(t)?[]:""}if(Number.isFinite(parseFloat(n))){const t=e.round_to?parseFloat(e.round_to):null;t&&(n=function(t,e){switch(e=Number.isFinite(e)?e:1){case.01:t=Math.round(100*t)/100;break;case.1:t=Math.round(10*t)/10;break;case 1:t=Math.round(t);break;default:[5,10,20,50,100,200,500,1e3].includes(e)&&(t=Math.round(t/e)*e)}return t}(n,t))}return n}function x(t,e,n=null){t.is("input, select, textarea")&&(n=null===n?q(t.val()):n)!==e&&(o||C(),void 0===a[o]&&(a[o]={}),void 0===a[o].value&&(a[o].value=[]),a[o].value.push({input:t,old:n,new:e}),t.val(e).trigger("change"))}function _(t,e){o||C();const n=q(t.html());n!==e&&(void 0===a[o]&&(a[o]={}),void 0===a[o].html&&(a[o].html=[]),a[o].html.push({element:t,old:n,new:e}),t.html(e))}function O(e="undo"){if(!l)return;const n=Object.keys(a);let o,i;if("undo"===e&&s>0)s--,o=n[s],i="old",0===s&&t(".js-undo-changes").prop("disabled",!0),t(".js-redo-changes").prop("disabled",!1);else{if(!("redo"===e&&s<n.length))return;s++,o=n[s-1],i="new",s===n.length&&t(".js-redo-changes").prop("disabled",!0),t(".js-undo-changes").prop("disabled",!1)}const r=a[o],d=r.html;void 0!==d&&d.forEach((function(t){const e=t.element,n=t[i];e.html(n)}));const c=r.value;void 0!==c&&c.forEach((function(t){const e=t.input,n=t[i];e.val(n).trigger("change")}))}function C(){T(),s++,o=Date.now(),setTimeout((()=>{o=null}),200),t(".js-undo-changes").prop("disabled",!1),t(".js-redo-changes").prop("disabled",!0)}function T(){const t=Object.keys(a);if(t.length>s){const e=t.length-s;let n=1;for(;n<=e;){const e=t[t.length-n];delete a[e],n++}}}function S(t){return t.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase()}function q(t){if("string"==typeof t)return DOMPurify.sanitize(t);if(Array.isArray(t))return t.map(q);if(null!==t&&"object"==typeof t){const e={};for(const n in t)t.hasOwnProperty(n)&&(e[n]=q(t[n]));return e}return t}t("#bulk-actions-form").on("submit",(async function(n){const a=t("#bulk-action").val();if("atum-create-po"===a)n.preventDefault(),await async function(){const n=f();if(0===n.length)return void b(e.noProductSelected,"warning");const a=parseInt(t("#atum_supplier_id").val()),o=p(a),s={message:o?e.purchaseOrder+" - "+o:e.purchaseOrder+" - "+e.multipleSuppliers,submitText:e.createPurchaseOrder,htmlCallback:function(){return`\n\t\t\t\t\t\t<div class="form-floating">\n\t\t\t\t\t\t\t<textarea class="form-control rounded-3 shadow-sm mt-3" name="description" required></textarea>\n\t\t\t\t\t\t\t<label>${e.description} <span class="required-mark">*</span></label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-floating">\n\t\t\t\t\t\t\t<input type="datetime-local" class="form-control rounded-3 shadow-sm mt-3" name="date_expected" required>\n\t\t\t\t\t\t\t<label>${e.expectedDate} <span class="required-mark">*</span></label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-floating">\n\t\t\t\t\t\t\t<select class="form-select rounded-3 shadow-sm mt-3" name="status" required>\n\t\t\t\t\t\t\t\t<option value="atum_pending" selected>${e.pending}</option>\n\t\t\t\t\t\t\t\t<option value="atum_ordered">${e.ordered}</option>\n\t\t\t\t\t\t\t\t<option value="atum_onthewayin">${e.onthewayin}</option>\n\t\t\t\t\t\t\t\t<option value="atum_receiving">${e.receiving}</option>\n\t\t\t\t\t\t\t\t<option value="atum_received ">${e.received}</option>\n\t\t\t\t\t\t\t</select>\t\n\t\t\t\t\t\t\t<label>${e.poStatus} <span class="required-mark">*</span></label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`}},i=await g(s);if(null===i)return;const l={date_expected:i.date_expected,description:i.description,status:i.status,line_items:n};a?(l.supplier=a,l.multiple_suppliers=!1):l.multiple_suppliers=!0,m(l)}();else if("atum-update-po"===a)n.preventDefault(),await async function(){try{const n=f();if(0===n.length)return void b(e.noProductSelected,"warning");const a=await function(){j();const n=parseInt(t("#atum_supplier_id").val()),a={status:["atum_pending","atum_ordered","atum_onthewayin","atum_receiving"],per_page:50};return n?a.supplier=n:a.multiple_suppliers=!0,new Promise(((n,o)=>{t.ajax({url:mdspbeVars.restUrl+"wc/v3/atum/purchase-orders",method:"GET",data:a,dataType:"json",beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(t){n(t),$()},error:function(t){o(t),b(e.errorGettingPO,"danger"),$()}})}))}();let o=t("#atum_supplier_id").val();o=o?parseInt(t("#atum_supplier_id").val()):null;const s=p(o)??e.multipleSuppliers,i={message:s?e.purchaseOrder+" - "+s:e.purchaseOrder+" - "+e.multipleSuppliers,submitText:e.addToPurchaseOrder,htmlCallback:function(){let t="",n="";return a.forEach((function(t){let a=p(t.supplier);a=a||e.multipleSuppliers;const o=t.description??"",s=t.total??"0",i=t.currency??"",l=t.status.replace(/^atum_/,"");n+=`<option value="${t.id}">${a} - ${o} - ${i} ${s} - ${e[l]}</option>`})),t=`\n\t\t\t\t\t\t\t<div class="form-floating">\n\t\t\t\t\t\t\t\t<select class="form-select rounded-3 shadow-sm mt-3" name="po_id" required>\n\t\t\t\t\t\t\t\t\t<option value="" selected disabled hidden></option>\n\t\t\t\t\t\t\t\t\t${n}\n\t\t\t\t\t\t\t\t</select>\t\n\t\t\t\t\t\t\t\t<label>${e.purchaseOrder} <span class="required-mark">*</span></label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t`,t}},l=await g(i);if(null===l)return;m({line_items:n},l.po_id)}catch(t){}}();else{if(u)return;if(await y(e.wishToProceed)){j(),u=!0;const e=t(".js-element-selector:checked"),n=[];e.each((function(){const e=Number(t(this).attr("data-id"));n.push(e)})),t("#bulk-ids").val(JSON.stringify(n)),t(this).submit()}}})),t(".js-bulk-attribute-edit").on("click",(function(e){const n=q(t(this).attr("data-id"));h(t("#mdspbe-main-table tfoot td").find(`[data-id="${n}"]`),n,null,!0)})),t("#mdspbe-main-table").on("dblclick","input:not(.js-element-selector, .js-select-all), textarea",(async function(e){const n=q(t(this).attr("data-id"));h(t(this),n,q(t(this).val()))})),t(".js-add-option").on("click",(async function(){const n=t(this).data("id"),a=t(this).data("name"),o=mdspbeVars.editOpts[n],s=o.add.fields;if(void 0===o||void 0===o.add)return;const i={message:a+": "+e.addNew,submitText:e.add,htmlCallback:function(){let t="";return Object.keys(s).forEach((function(e){const a=s[e],o=a.required?"required":"",i=a.required?' <span class="required-mark">*</span>':"";let l;switch(a.type){case"input_text":l=`<input type="text" class="form-control rounded-3 shadow-sm mt-3" name="${a.name}" ${o}>`;break;case"input_number":l=`<input type="number" class="form-control rounded-3 shadow-sm mt-3" name="${a.name}" ${o}>`;break;case"textarea":l=`<textarea class="form-control rounded-3 shadow-sm mt-3" name="${a.name}" ${o}></textarea>`;break;case"select":let t='<option value="0"></option>';Object.keys(a.options).forEach((function(e){t+=`<option value="${e}">${a.options[e]}</option>`})),l=`<select class="form-select rounded-3 shadow-sm mt-3" id="add-field-${n}" name="${a.name}" ${o}>${t}</select>`}const r=`\n\t\t\t\t\t\t<div class="form-floating">\n\t\t\t\t\t\t\t${l}\n\t\t\t\t\t\t\t<label for="add-field-${a.name}">${a.label}${i}</label>\n\t\t\t\t\t\t</div>`;t+=r})),t}},l=await g(i);null!==l&&(l.id=n,function(n,a=()=>{}){j(),t.ajax({url:mdspbeVars.restUrl+"mdspbe/v1/add_option",method:"PUT",contentType:"application/json",data:JSON.stringify({data:n}),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(t){a(t),b(e.optionAdded,"success"),$()},error:function(t){b(e.errorAddingOpt,"danger"),$()}})}(l,(function(e){t(`select[data-id="${n}"]`).prepend(t("<option>",{value:e.id,text:e.name})),Object.keys(s).forEach((function(t){const a=s[t];"select"===a.type&&!0===a.addNewOpts&&(mdspbeVars.editOpts[n].add.fields[t].options[e.id]=e.name)})),t("#"+n).append(t("<option>",{value:e.id,text:e.name}))})))})),t(".js-remove-options").on("click",(async function(){const n=t(this).data("id"),a=t(this).data("name"),o=mdspbeVars.editOpts[n],s=o.add.fields;if(void 0===o||void 0===o.remove)return;const i=q(t("#mdspbe-main-table tfoot tr").find(`select[data-id="${n}"]`).html()),l={message:a+": "+e.remove,submitText:e.remove,type:"tom-select-multiple",selectOpts:i,showMagicSelector:!1},r=await g(l);null!==r&&(r.id=n,function(n,a=()=>{}){j(),t.ajax({url:mdspbeVars.restUrl+"mdspbe/v1/remove_options",method:"PUT",contentType:"application/json",data:JSON.stringify({data:n}),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(t){a(t),b(e.optionsRemoved,"success"),$()},error:function(t){b(e.errorRemovingOpts,"danger"),$()}})}(r,(function(e){const a=t(`select[data-id="${n}"]`);r.value_1.forEach((function(t){a.find(`option[value="${t}"]`).remove(),Object.keys(s).forEach((function(e){const a=s[e];"select"===a.type&&!0===a.addNewOpts&&delete mdspbeVars.editOpts[n].add.fields[e].options[t]}))}))})))})),t(".js-new-btn").on("click",(async function(n){const a=mdspbeVars.productTypes,o={message:e.addProducts,submitText:e.add,htmlCallback:function(){let t="";return Object.keys(a).forEach((function(e){t+=`<option value="${e}">${a[e]}</option>`})),`\n\t\t\t\t\t\t<div class="form-floating mb-3">\n\t\t\t\t\t\t\t<input type="number" value="1" class="form-control" name="quantity" id="prod-quantity">\n\t\t\t\t\t\t\t<label for="prod-quantity">${e.quantity}</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-floating mb-3">\n\t\t\t\t\t\t\t<select class="form-select" name="type" id="prod-type">${t}</select>\n\t\t\t\t\t\t\t<label for="prod-type">${e.type}</label>\n\t\t\t\t\t\t</div>`},scrollable:!0},s=await g(o);if(null===s)return;const l=s.type,r=s.quantity,d=t("#mdspbe-main-table tbody"),c=t("#mdspbe-main-table tfoot").find(`tr[data-product-type="${l}"]`).first();if(0===c.length)return;const u=t(document.createDocumentFragment());for(let t=0;t<r;t++){const t=c.clone(!0,!0);t.find(".js-will-required").prop("required",!0),t.find('td[data-id="product_type"] span').text(a[l]),u.append(t)}d.prepend(u),t("#mdspbe-main-form .table-responsive").scrollTop(0),i+=r,t(".js-save-btn").fadeIn()})),t(".js-save-btn").on("click",(function(a){const o=document.querySelector("#mdspbe-main-form");if(o.checkValidity()){t(".js-save-btn").fadeOut();const a={create:function(){const e=[];return t('#mdspbe-main-table tbody tr[data-id="0"]').each((function(){const n=t(this),a={prodType:n.attr("data-product-type")};n.find("input:not(.js-element-selector), select, textarea").each((function(){const e=q(t(this).attr("data-id")),n=q(t(this).val());a[e]=n})),e.push(a)})),e.reverse()}(),update:n};j(),t.ajax({url:mdspbeVars.restUrl+"mdspbe/v1/update_create",method:"PUT",contentType:"application/json",data:JSON.stringify({data:a}),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(n){!function(n){let a=!1;const o=t("#mdspbe-main-table tbody");Object.keys(n.update).forEach((function(t){const e=n.update[t],s=o.find(`[data-id='${t}']`);s.length>0&&(a=v(s,t,e))})),Object.keys(n.create).forEach((function(e){const o=n.create[e],s=t('#mdspbe-main-table tbody tr[data-id="0"]').last();s.attr("data-id",e).removeClass("table-danger"),s.find(".js-remove-row-cont").remove();const i=s.find(".js-row-actions-cont");i.show(),i.find(".js-row-view-cont").attr("href",o.permalink);const l=`${mdspbeVars.adminUrl}post.php?post=${e}&action=edit`;i.find(".js-row-edit-cont, .js-row-create-variation-cont").attr("href",l),s.find(".js-element-selector").attr("data-id",e),a=v(s,e,o,!0,a)})),a?b(e.notAllProdsUpdated,"warning"):b(e.allProdsUpdated,"success")}(n),$(!1)},error:function(t){b(e.errorUpdated,"danger"),$()}})}else o.reportValidity()})),t(".js-remove-row").on("click",(function(e){e.preventDefault();const a=t(this).closest("tr");0==a.attr("data-id")&&(a.remove(),i--,0===i&&0===Object.keys(n).length&&t(".js-save-btn").fadeOut())})),t(document).on("click",".js-tom-select-edit",(function(e){const n=t(this).closest("td").find("select.js-tom-select"),a=q(n.attr("data-id")),o=q(n.val());h(n,a,o)})),t(document).on("click",".js-wp-edit",(function(e){t(this).closest("td").find("textarea.js-wp-editor").trigger("dblclick")})),t(document).on("click",".js-set-image",(function(e){e.preventDefault();const n=t(this),a=wp.media({multiple:!1});a.on("select",(function(){const t=a.state().get("selection").first().toJSON(),e=n.closest(".js-image-preview"),o=n.closest("td").find("input");_(e,`\n\t\t\t\t\t<div class="d-flex flex-column justify-content-center gap-1">\n\t\t\t\t\t\t<span class="cursor-pointer js-set-image dashicons dashicons-edit"></span>\n\t\t\t\t\t\t<span class="cursor-pointer js-remove-image dashicons dashicons-trash"></span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<img src="${t.url}" style="height: 60px; width: auto;" class="cursor-pointer rounded-3 js-set-image">`),x(o,t.id)})),a.open()})),t(document).on("click",".js-bulk-set-image",(function(e){e.preventDefault();const n=t(this),a=wp.media({multiple:!1});a.on("select",(function(){const e=a.state().get("selection").first().toJSON(),o=n.closest(".js-image-preview"),s=t("#daFormPromptModal").find(".js-value-1"),i=t("#daFormPromptModal").find(".js-value-src");o.html(`\n\t\t\t\t\t<div class="image-container cursor-pointer js-bulk-set-image mx-auto mt-3">\n\t\t\t\t\t\t<img src="${e.url}" style="height: 60px; width: auto;" class="rounded-3">\n\t\t\t\t\t</div>`),s.val(e.id),i.val(e.url)})),a.open()})),t(document).on("click",".js-remove-image",(function(e){const n=t(this).closest("td").find("input");_(t(this).closest(".js-image-preview"),'<div class="d-flex flex-column justify-content-center"><span class="cursor-pointer js-set-image dashicons dashicons-plus-alt"></span></div>'),x(n,"")})),t("#set-bulk-image").on("change",(function(){t(".js-bulk-set-image").fadeIn()})),t("#remove-bulk-image").on("change",(function(){t(".js-bulk-set-image").fadeOut()})),t(document).on("change",".js-magic-selector",(function(){const n=q(t(this).find("option:selected").val()),a=t("#daFormPromptModal");"clear-out"===n?a.find(".js-value-1, .js-value-2, .js-round-selector, .js-image-preview, #wp-wp-editor-1-wrap").hide():"replace"===n?(a.find(".js-value-1").attr("placeholder",e.replaceThis).show(),a.find(".js-value-2").attr("placeholder",e.withThis).show()):(a.find(".js-value-1, .js-round-selector").attr("placeholder","").show(),a.find(".js-value-2").hide(),a.find(".js-image-preview, #wp-wp-editor-1-wrap").show())})),t(".js-toggle-fields").on("click",(async function(n){n.preventDefault();const a={message:e.toggleFields,submitText:e.save,htmlCallback:function(){let t=`\n\t\t\t\t\t\t<div class="form-floating mb-3">\n\t\t\t\t\t\t\t<input type="text" class="form-control" id="toggle-field-search">\n\t\t\t\t\t\t\t<label for="toggle-field-search">${e.search}</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="js-toggle-fields-wrapper">`;return mdspbeVars.toggleFields.forEach((function(e){const n=e.active?"checked":"";t+=`\n\t\t\t\t\t\t\t<div class="js-toggle-field-wrapper">\n\t\t\t\t\t\t\t\t<input type="checkbox" class="js-toggle-attribute" id="toggle-${e.id}" name="${e.id}" value="yes" ${n}>\n\t\t\t\t\t\t\t\t<label for="toggle-${e.id}" title="${e.description}">\n\t\t\t\t\t\t\t\t\t${e.name}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>`})),t+="</div>",t},scrollable:!0},o=await g(a);null!==o&&function(n,a=()=>{}){j(),t.ajax({url:mdspbeVars.restUrl+"mdspbe/v1/toggle_fields",method:"PUT",contentType:"application/json",data:JSON.stringify({data:n}),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(t){a(t),$()},error:function(t){b(e.errorTogglingFields,"danger"),$()}})}(o,(async function(t){await y(e.realoadToApplyChanges)&&(j(),window.location.href=window.location.href)}))})),t(document).on("click",".js-toggle-attribute",(function(){const e=t(this).attr("name"),n=t(this).prop("checked"),a=mdspbeVars.attributes;(a[e]&&a[e].attrs_needed?a[e].attrs_needed:[]).forEach((function(o){(n||(a[o]&&a[o].attrs_needed?a[o].attrs_needed:[]).includes(e))&&t("#toggle-"+o).prop("checked",n)}))})),t(document).on("input","#toggle-field-search",(function(){t(".js-toggle-field-wrapper").hide();const e=S(t(this).val());t(".js-toggle-fields-wrapper").find("label").filter((function(){return S(t(this).text()).includes(e)})).closest(".js-toggle-field-wrapper").show()})),t(".js-create-tags-dialog").on("click",(async function(n){n.preventDefault();const a={message:e.createPrintTags,submitText:e.create,htmlCallback:function(){return`\n\t\t\t\t\t\t<div class="row g-3 mb-3">\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<select class="form-select" id="tag-product-selection" name="product-selection" required>\n\t\t\t\t\t\t\t\t\t<option value="all" selected>${e.allProductsOnPage}</option>\n\t\t\t\t\t\t\t\t\t<option value="selected">${e.selectedProducts}</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t<label for="tag-product-selection">${e.productSelection}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" id="tag-quantity" name="quantity" value="1" min="1" max="100" required>\n\t\t\t\t\t\t\t\t<label for="tag-quantity">${e.tagQuantity}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="row g-3 mb-3">\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" id="tag-text-scale" name="scale" value="100" min="0" placeholder="%">\n\t\t\t\t\t\t\t\t<label for="tag-text-scale">${e.textScale}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<select class="form-select" id="tag-size" name="size" required>\n\t\t\t\t\t\t\t\t\t<option value="50x30" selected>${e.s50x30}</option>\n\t\t\t\t\t\t\t\t\t<option value="63x22">${e.s63x22}</option>\n\t\t\t\t\t\t\t\t\t<option value="custom">${e.customSize}</option>\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t<label for="tag-size">${e.tagSize}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="row g-3 mb-3" id="tag-custom-size-cont" style="display: none">\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" id="tag-width" name="width">\n\t\t\t\t\t\t\t\t<label for="tag-width">${e.witdhInMm}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col form-floating">\n\t\t\t\t\t\t\t\t<input type="number" class="form-control" id="tag-height" name="height">\n\t\t\t\t\t\t\t\t<label for="tag-height">${e.heightInMm}</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="mb-3">\n\t\t\t\t\t\t\t<h6>${e.fieldsToShow}</h6>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type="checkbox" id="tag-show-name" name="show-name" value="yes" checked>\n\t\t\t\t\t\t\t\t<label class="form-check-label" for="tag-show-name">\n\t\t\t\t\t\t\t\t\t${e.name}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type="checkbox" id="tag-show-sku" name="show-sku" value="yes" checked>\n\t\t\t\t\t\t\t\t<label class="form-check-label" for="tag-show-sku">\n\t\t\t\t\t\t\t\t\t${e.sku}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type="checkbox" id="tag-show-price" name="show-price" value="yes" checked>\n\t\t\t\t\t\t\t\t<label class="form-check-label" for="tag-show-price">\n\t\t\t\t\t\t\t\t\t${e.price}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type="checkbox" id="tag-show-global-id" name="show-global-id" value="yes" checked>\n\t\t\t\t\t\t\t\t<label class="form-check-label" for="tag-show-global-id">\n\t\t\t\t\t\t\t\t\t${e.globalUniqueId}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<input type="checkbox" id="tag-show-current-date" name="show-current-date" value="yes" checked>\n\t\t\t\t\t\t\t\t<label class="form-check-label" for="tag-show-current-date">\n\t\t\t\t\t\t\t\t\t${e.currentDate}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>`},scrollable:!0},o=await g(a);if(null===o)return;const s=[];"all"===o["product-selection"]?t("#mdspbe-main-table tbody tr").each((function(){s.push(t(this).attr("data-id"))})):t("#mdspbe-main-table tbody").find(".js-element-selector:checked").each((function(){s.push(t(this).attr("data-id"))})),0!==s.length?(o.prodsIds=s,function(n,a=()=>{}){j(),t.ajax({url:mdspbeVars.restUrl+"mdspbe/v1/get_print_tag_data",method:"POST",contentType:"application/json",data:JSON.stringify({data:n}),beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",mdspbeVars.nonce)},success:function(t){a(t),$()},error:function(t){b(e.errorCreatingTags,"danger"),$()}})}(o,(function(t){!function(t,e,n=()=>{}){const a=t.quantity??1,o=t.size;let s,i;"50x30"===o?(s="50",i="30"):"63x22"===o?(s="63",i="22"):(s=t.width??"50",i=t.height??"30");let l="";if("yes"===t["show-current-date"]){const t=new Date,e=String(t.getDate()).padStart(2,"0"),n=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getFullYear()).slice(-2);l=`${e}-${n}-${a}`}const r=t.scale,d=parseInt(8*r/100,10),c=parseInt(12*r/100,10),u=parseInt(16*r/100,10);let p="";Object.keys(e).forEach((function(t){const n=e[t];let o='<div class="grid-item">';n.name&&(o+=`<div class="size-m t-bold">${n.name}</div>`),n.sku&&(o+=`<div class="size-s">${n.sku}</div>`),n.price&&(o+=`<div class="size-l t-bold">${n.price}</div>`),o+=`\n\t\t\t\t\t<div class="bottom-flex">\n\t\t\t\t\t\t<div class="size-s bottom-left">${n.global_unique_id??""}</div>\n\t\t\t\t\t\t<div class="size-s bottom-right">${l}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>`;for(var s=0;s<a;s++)p+=o})),n(`\n\t\t\t\t<html>\n\t\t\t\t<head>\n\t\t\t\t\t<style type="text/css" media="print">\n\n\t\t\t\t\tbody {\n\t\t\t\t\t\tpadding: 5mm;\n\t\t\t\t\t\tbox-sizing: border-box;\n    \t\t\t\t\tfont-family: Verdana, Geneva, sans-serif;\n\t\t\t\t\t}\n\n\t\t\t\t\t.grid-container {\n\t\t\t\t\t\tdisplay: grid;\n\t\t\t\t\t\tgrid-template-columns: repeat(auto-fill, ${s}mm);\n\t\t\t\t\t\tgrid-auto-rows: ${i}mm;\n\t\t\t\t\t\tgap: 0mm;\n\t\t\t\t\t}\n\n\t\t\t\t\t.grid-item {\n\t\t\t\t\t\twidth: ${s}mm;\n\t\t\t\t\t\theight: ${i}mm;\n\t\t\t\t\t\tpadding: 3%;\n\t\t\t\t\t\tgap: 5%;\n\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\tborder: 1px solid #ccc;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tflex-direction: column;\n\t\t\t\t\t\tbackground: white;\n\t\t\t\t\t\tpage-break-inside: avoid;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t.bottom-flex {\n\t\t\t\t\t\tdisplay: flex;\n  \t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\tmargin-top: auto;\n\t\t\t\t\t}\n\n\t\t\t\t\t.bottom-left,\n\t\t\t\t\t.bottom-right {\n\t\t\t\t\t\tflex: 1 1 auto;\n\t\t\t\t\t}\n\n\t\t\t\t\t.bottom-right {\n\t\t\t\t\t\ttext-align: right;\n\t\t\t\t\t}\n\n\t\t\t\t\t.t-bold {\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t}\n\n\t\t\t\t\t.size-s {\n\t\t\t\t\t\tfont-size: ${d}pt;\n\t\t\t\t\t}\n\n\t\t\t\t\t.size-m {\n\t\t\t\t\t\tfont-size: ${c}pt;\n\t\t\t\t\t}\n\n\t\t\t\t\t.size-l {\n\t\t\t\t\t\tfont-size: ${u}pt;\n\t\t\t\t\t}\n\t\t\t\t\t</style>\n\t\t\t\t</head>\n\t\t\t\t<body>\n\t\t\t\t\t<div class="grid-container">\n\t\t\t\t\t${p}\n\t\t\t\t\t</div>\n\t\t\t\t</body>\n\t\t\t\t</html>\n\t\t\t\t`)}(o,t,(function(t){!function(t){const e=window.open("","","height=1000, width=1000");e.document.write(t),e.document.close(),e.print(),e.close()}(t)}))}))):b(e.noSelectedProducts,"warning")})),t(document).on("change","#tag-size",(function(){"custom"===t(this).val()?(t("#tag-custom-size-cont").show(),t("#tag-width, #tag-height").prop("required",!0)):(t("#tag-custom-size-cont").hide(),t("#tag-width, #tag-height").prop("required",!1))})),window.addEventListener("beforeunload",(function(e){let a=!1;t("#mdspbe-main-table .js-po-qty").each((function(){""!=t(this).val()&&(a=!0)})),(a||Object.keys(n).length>0||i>0)&&(e.preventDefault(),e.returnValue="")})),document.querySelectorAll(".resizer").forEach((t=>{let e,n,a;const o=function(t){const o=n+(t.pageX-e);a.style.width=o+"px"},s=function(){document.removeEventListener("mousemove",o),document.removeEventListener("mouseup",s),document.body.classList.remove("resizing")};t.addEventListener("mousedown",(function(i){a=t.parentElement,e=i.pageX,n=a.offsetWidth,document.addEventListener("mousemove",o),document.addEventListener("mouseup",s),document.body.classList.add("resizing")}))}))}))}();
  • mds-product-bulk-editor-for-woocommerce/trunk/admin/js/dist/mdspbea.js

    r3352044 r3352370  
    170170      });
    171171      affectedElement.prop('disabled', disabled);
     172      if (disabled) {
     173        const defaultVal = thisAttr.default ?? '';
     174        updateInputValue(affectedElement, defaultVal);
     175      }
    172176    }
    173177
     
    491495            let options = '';
    492496            purchaseOrders.forEach(function (purchaseOrder) {
    493               // Querying by supplier doesn't work (ATUM REST API), so we filter the request
    494               if (supplierId === purchaseOrder.supplier) {
    495                 const poSupplierId = purchaseOrder.supplier;
    496                 let poSupplierName = getSupplierNameFromId(poSupplierId);
    497                 poSupplierName = poSupplierName ? poSupplierName : i18n.multipleSuppliers;
    498                 const description = purchaseOrder.description ?? '';
    499                 const total = purchaseOrder.total ?? '0';
    500                 const currency = purchaseOrder.currency ?? '';
    501                 const status = purchaseOrder.status.replace(/^atum_/, "");
    502                 options += `<option value="${purchaseOrder.id}">${poSupplierName} - ${description} - ${currency} ${total} - ${i18n[status]}</option>`;
    503               }
     497              const poSupplierId = purchaseOrder.supplier;
     498              let poSupplierName = getSupplierNameFromId(poSupplierId);
     499              poSupplierName = poSupplierName ? poSupplierName : i18n.multipleSuppliers;
     500              const description = purchaseOrder.description ?? '';
     501              const total = purchaseOrder.total ?? '0';
     502              const currency = purchaseOrder.currency ?? '';
     503              const status = purchaseOrder.status.replace(/^atum_/, "");
     504              options += `<option value="${purchaseOrder.id}">${poSupplierName} - ${description} - ${currency} ${total} - ${i18n[status]}</option>`;
    504505            });
    505506            html = `
     
    12861287        }
    12871288      });
    1288       console.log(unsavedPO);
    12891289      if (unsavedPO || Object.keys(changes).length > 0 || creatingProds > 0) {
    12901290        e.preventDefault();
  • mds-product-bulk-editor-for-woocommerce/trunk/admin/js/src/mds-product-bulk-editor-for-woocommerce-admin.js