1if(!wclsi_admin){const wclsi_admin={errors:[]}}else{wclsi_admin.errors=[]}(function($){const wclsiJS={displayNotice:function(notice,type,attachTo=null){type=type||"error";const attachToElem=attachTo||$(".wp-header-end");const msgDiv=$(`<div class="${type} settings-error notice is-dismissible" data-wclsi="wclsi-error">\n <p>${notice}</p>\n <button type="button" class="notice-dismiss">\n <span class="screen-reader-text">Dismiss this notice.</span>\n </button>\n </div>`);msgDiv.find(":button.notice-dismiss").on("click",()=>msgDiv.hide());if(attachToElem.length===0){const firstNotice=$(".notice").first();if(firstNotice.length>0){msgDiv.insertAfter(firstNotice)}else{const wrap=$(".wrap")||$(".wpwrap");msgDiv.prependTo(wrap)}}else{msgDiv.insertAfter(attachToElem)}$("#wp__notice-list").show();$("html, body").animate({scrollTop:0},100)},setWaitTime:function(waitTime){if(waitTime){wclsi_admin.WAIT_TIME=parseInt(waitTime)}else{wclsi_admin.WAIT_TIME=1200}if(wclsi_admin.SCRIPT_DEBUG){console.log(`WAIT_TIME: ${wclsi_admin.WAIT_TIME}`)}},initLSLoadProds:function(loadProdButton){loadProdButton.click((function(){if($(this).data("reload")){if(confirm(objectL10n.reload_confirm)){$("#wclsi-load-progress").show();wclsiJS.loadProds(0,1,true)}}else{$("#wclsi-load-progress").show();wclsiJS.loadProds(0,1,true)}}))},loadProds:function(offset,limit,getCount,getMatrix){let pct_complete=0;let progress_div=$("#wclsi-progress-count");if(getMatrix===undefined||getMatrix===""){getMatrix=false}$.ajax({url:ajaxurl,type:"POST",data:{wclsi_nonce:wclsi_admin.WCLSI_NONCE,action:"wclsi_load_prods_ajax",offset:offset,limit:limit,getCount:getCount,getMatrix:getMatrix},dataType:"json",success:function(data){if(wclsi_admin.SCRIPT_DEBUG){console.log(data)}wclsiJS.checkForErrors(data);wclsiJS.setWaitTime(data.WAIT_TIME);if(getCount){wclsiJS.prodCount=data.count;setTimeout(()=>wclsiJS.loadProds(offset,50,false,getMatrix),wclsi_admin.WAIT_TIME)}else{offset=offset+limit;pct_complete=offset/wclsiJS.prodCount*100;progress_div.html(`${Math.floor(pct_complete)}%`);if(wclsi_admin.SCRIPT_DEBUG){console.log(`${offset}/${wclsiJS.prodCount}`)}if(offset<wclsiJS.prodCount){setTimeout(()=>wclsiJS.loadProds(offset,limit,false,getMatrix),wclsi_admin.WAIT_TIME)}else{if(!getMatrix){progress_div.html("0%");$("#wclsi-progress-msg").html(objectL10n.loading_matrix_products);setTimeout(()=>wclsiJS.loadProds(0,1,true,true),wclsi_admin.WAIT_TIME)}else{if(wclsi_admin.errors.length>0){$("#wclsi-load-progress").html(`<div class="error">${objectL10n.incomplete_load}</div>`)}else{location.replace(data.redirect)}}}}},error:function(jqXHR,statusText,errorThrown){wclsiJS.handleErrors(jqXHR,statusText,errorThrown);$("#wclsi-load-progress").hide()}})},initImportCats:function(importCatsButton){importCatsButton.click((function(){$("#wclsi-import-cats-progress").html("<p>Importing Lightspeed categories - 0% completed ... </p>");wclsiJS.getCatCount()}))},getCatCount:function(){$.ajax({url:ajaxurl,type:"POST",data:{wclsi_nonce:wclsi_admin.WCLSI_NONCE,action:"get_category_count"},dataType:"json",success:function(data){if(wclsi_admin.SCRIPT_DEBUG){console.log(data)}wclsiJS.checkForErrors(data);wclsiJS.setWaitTime(data.WAIT_TIME);wclsiJS.catCount=data.ciel_count;if(wclsiJS.catCount>0){wclsiJS.loadCats(0,100)}else{$("#wclsi-import-cats-progress").html("There are 0 categories to import!")}},error:function(jqXHR,statusText,errorThrown){if(statusText==="parsererror"){wclsiJS.displayNotice(jqXHR.responseText,"error")}wclsiJS.displayNotice(errorThrown,"error")}})},loadCats:function(offset,limit){let pct_complete=0;$.ajax({url:ajaxurl,type:"POST",data:{wclsi_nonce:wclsi_admin.WCLSI_NONCE,action:"import_ls_categories",offset:offset,limit:limit},dataType:"json",success:function(data){if(wclsi_admin.SCRIPT_DEBUG){console.log(data)}wclsiJS.checkForErrors(data);wclsiJS.setWaitTime(data.WAIT_TIME);offset=offset+limit;if(wclsi_admin.SCRIPT_DEBUG){console.log(`${offset}/${wclsiJS.catCount}`)}if(offset<wclsiJS.catCount){pct_complete=(offset+100)/wclsiJS.catCount*100;$("#wclsi-import-cats-progress").html(`<p>Importing Lightspeed categories - ${Math.floor(pct_complete)}% completed ... </p>`);setTimeout(()=>wclsiJS.loadCats(offset,limit),wclsi_admin.WAIT_TIME)}else{if(data.load_complete&&data.errors.length===0){$("#wclsi-import-cats-progress").html(`<p>Category import complete! Click <a href="${data.prod_cat_link}">here</a> to view the imported categories.</p>`)}else if(data.load_complete&&data.errors.length>0){$("#wclsi-import-cats-progress").html(`<div class="error">\n Category import completed but not all categories were succesfully imported. \n See errors above for more details.\n Click <a href="${data.prod_cat_link}">here</a> to view imported categories.\n </div>`)}else if(data.errors.length>0){$("#wclsi-import-cats-progress").html(`<div class="error">${objectL10n.incomplete_load}</div>`)}}},error:function(jqXHR,statusText,errorThrown){wclsiJS.handleErrors(jqXHR,statusText,errorThrown)}})},importAllProdsButton:function(importAllButton){importAllButton.click((function(){const result=confirm(`Are you sure you want to import & link all the Lightspeed products in the Importer?`);if(result){wclsiJS.importAllButton.prop("disabled",true);
1wclsiJS.importAllProds(true)}}))},initProgressBar:function(action,totalProds,customText){wclsiJS.progressDivID="wclsi_sync_progress";wclsiJS.progressCountSpanID="wclsi_progress_count";let text,progressTxt="";if(customText){text=customText}else{text=action==="update"?objectL10n.updating_prods:objectL10n.importing_prods}totalProds=totalProds?totalProds:wclsiJS.totalProds;progressTxt=totalProds?`0/${totalProds}`:"";const displayDiv=$(".wrap").children("h1:first").length?$(".wrap").children("h1:first"):$("#wclsi-js-notifications");displayDiv.after(`<div id="${wclsiJS.progressDivID}" class="updated">\n <p>\n ${text}\n <strong><span id="${wclsiJS.progressCountSpanID}">${progressTxt}</span></strong>\n <span class="spinner wclsi-spinner" style="float: none; vertical-align: text-bottom;" />\n </p>\n <p><strong>${objectL10n.dont_close}</strong></p>\n </div>`);$("html, body").animate({scrollTop:0},100)},importAllProds:function(initImport){if(initImport===undefined||initImport===""){initImport=false}$.ajax({url:ajaxurl,type:"POST",data:{wclsi_nonce:wclsi_admin.WCLSI_NONCE,action:"get_prod_ids_ajax",init_import:initImport},dataType:"json",success:function(data){wclsiJS.checkForErrors(data);wclsiJS.setWaitTime(data.WAIT_TIME);if(data.prod_ids.length>0){wclsiJS.totalProds=data.prod_ids.length+data.matrix_ids.length;wclsiJS.totalSingleProds=data.prod_ids.length;wclsiJS.totalMatrixProds=data.matrix_ids.length;wclsiJS.prodIds=data.prod_ids;wclsiJS.matrixIds=data.matrix_ids;wclsiJS.importProgress=0;wclsiJS.initProgressBar();wclsiJS.runSingleProdAction("import_all_lightspeed_products_ajax","false",wclsiJS.totalSingleProds,0,(function(){location.reload()}))}else{wclsiJS.displayNotice(objectL10n.no_prods_error,"error")}},error:function(jqXHR,statusText,errorThrown){wclsiJS.handleErrors(jqXHR,statusText,errorThrown)}})},runSingleProdAction:function(action,isMatrix,totalLocalProds,prodCount,done){if(totalLocalProds===undefined||totalLocalProds===""){return}let prodID;if(isMatrix==="true"){prodID=wclsiJS.matrixIds[prodCount]}else{prodID=wclsiJS.prodIds[prodCount]}$.ajax({url:wclsi_admin.AJAX_URL,type:"POST",data:{wclsi_nonce:wclsi_admin.WCLSI_NONCE,action:action,prod_id:prodID,import_progress:wclsiJS.importProgress,is_matrix:isMatrix,sync_flag:$("#wclsi-enable-sync-on-import-all").is(":checked")},dataType:"json",success:function(data){if(wclsi_admin.SCRIPT_DEBUG){console.log(data)}wclsiJS.checkForErrors(data);wclsiJS.setWaitTime(data.WAIT_TIME);if(wclsi_admin.SCRIPT_DEBUG){console.log(`progress: ${wclsiJS.importProgress}`);console.log(`totalProds: ${wclsiJS.totalProds}`)}$(`#${wclsiJS.progressCountSpanID}`).html(`${wclsiJS.importProgress}/${wclsiJS.totalProds}`);if(wclsiJS.importProgress===wclsiJS.totalProds-1){wclsiJS.importAllButton.prop("disabled",false);if(wclsi_admin.errors.length>0){$(`#${wclsiJS.progressDivID}`).html(`<p>${objectL10n.prod_processing_error}</p>`)}else{if(typeof done=="function"){done()}}}prodCount++;if(prodCount<totalLocalProds&&isMatrix==="false"){setTimeout(()=>wclsiJS.runSingleProdAction(action,isMatrix,totalLocalProds,prodCount,done),wclsi_admin.WAIT_TIME)}else if(prodCount<totalLocalProds&&isMatrix==="true"){setTimeout(()=>wclsiJS.runSingleProdAction(action,isMatrix,totalLocalProds,prodCount,done),wclsi_admin.WAIT_TIME)}else if(prodCount>=totalLocalProds&&isMatrix==="false"){if(wclsiJS.totalMatrixProds>0){setTimeout(()=>wclsiJS.runSingleProdAction(action,"true",wclsiJS.totalMatrixProds,0,done),wclsi_admin.WAIT_TIME)}}wclsiJS.importProgress++},error:function(jqXHR,statusText,errorThrown){wclsiJS.importProgress++;wclsiJS.handleErrors(jqXHR,statusText,errorThrown)}})},syncCheckBoxHandler:function(checkBoxElem){checkBoxElem.click((function(e){let prodID=$(this).data("prodid");if(prodID===""||prodID===undefined){alert(objectL10n.sync_error);e.preventDefault()}else{if($(this).is(":checked")){wclsiJS.setProdSync(prodID,true)}else{wclsiJS.setProdSync(prodID,false)}}}))},setProdSync:function(prodID,syncFlag){$.ajax({url:ajaxurl,type:"POST",data:{wclsi_nonce:wclsi_admin.WCLSI_NONCE,action:"set_prod_sync_ajax",prod_id:prodID,sync_flag:syncFlag},dataType:"json",success:function(data){wclsiJS.checkForErrors(data);if(syncFlag){alert(objectL10n.sync_success)}else{alert(objectL10n.sync_remove)}},error:function(jqXHR,statusText,errorThrown){wclsiJS.handleErrors(jqXHR,statusText,errorThrown)}})},manualProdUpdateHander:function(buttonElem){buttonElem.click((function(){let prodID=$(this).data("prodid");let noticeID="wclsi-sync-notice";$(this).attr("disabled","disabled");$(`<p id="${noticeID}">
1\n <span class="spinner wclsi-spinner" id="wclsi-sync-spinner" style="visibility: visible; top: 0;"/>\n ${objectL10n.syncing}\n </p>`).insertAfter($(this));setTimeout((function(){$.ajax({url:ajaxurl,type:"POST",data:{wclsi_nonce:wclsi_admin.WCLSI_NONCE,action:"manual_prod_update_ajax",prod_id:prodID},dataType:"json",success:function(data){wclsiJS.checkForErrors(data);wclsiJS.setWaitTime(data.WAIT_TIME);if(data.success){if(data.errors.length===0){$(`#${noticeID}`).html(objectL10n.man_sync_success);location.reload()}else{$(`#${noticeID}`).html(objectL10n.generic_error)}}else{wclsiJS.displayNotice(objectL10n.generic_error,"error")}},error:function(jqXHR,statusText,errorThrown){wclsiJS.handleErrors(jqXHR,statusText,errorThrown)}})}),wclsi_admin.WAIT_TIME)}))},checkForErrors:function(data,attachTo=null){if(data.errors){if(Array.isArray(data.errors)){data.errors.forEach((function(e){wclsiJS.displayNotice(e.message,"error",attachTo);wclsi_admin.errors.push(e)}))}else if("string"===typeof data.errors){wclsiJS.displayNotice(data.errors,"error",attachTo);wclsi_admin.errors.push(data.errors)}else{wclsiJS.displayNotice(objectL10n.generic_error,"error",attachTo);wclsi_admin.errors.push(objectL10n.generic_error)}}},bindClickToSyncToLSButton:function(button){button.on("click",(function(){const prodID=$(this).data("prodid");wclsiJS.syncProdToLS(prodID)}))},syncProdToLS:function(prodID,showSuccess){const statusDivID="wclsi-sync-status";const noticeID="wclsi-sync-status-div";const statusDiv=$(`#${statusDivID}`);let progressTxt="";if(wclsiJS.syncProdToLSprogress&&wclsiJS.variationIds){progressTxt=`${wclsiJS.syncProdToLSprogress}/${wclsiJS.variationIds.length}`}let statusHTML=`<div id="${statusDivID}" style="display: block; padding: 5px;"> \n <div id="${noticeID}">\n ${objectL10n.syncing} ${progressTxt}\n <span style="float: inherit; margin: 0; vertical-align: inherit;" class="spinner wclsi-spinner" />\t\t\t\t \n </div>\n </div>`;if(statusDiv.length>0){statusDiv.replaceWith(statusHTML)}else{$(statusHTML).insertAfter(wclsiJS.syncProdToLSButton)}$.ajax({url:ajaxurl,type:"POST",data:{wclsi_nonce:wclsi_admin.WCLSI_NONCE,action:"sync_prod_to_ls",wc_prod_id:prodID},dataType:"json",success:function(data){wclsiJS.checkForErrors(data);wclsiJS.setWaitTime(data.WAIT_TIME);if(data.show_success||showSuccess){$(`#${noticeID}`).html(objectL10n.man_sync_success);location.reload();return}if(data.variation_ids||data.is_variation){if(!wclsiJS.variationIds){wclsiJS.variationIds=data.variation_ids;wclsiJS.syncProdToLSprogress=0}setTimeout((function(){wclsiJS.syncProdToLS(wclsiJS.variationIds[wclsiJS.syncProdToLSprogress++],wclsiJS.syncProdToLSprogress===wclsiJS.variationIds.length)}),wclsi_admin.WAIT_TIME*1.5)}},error:function(jqXHR,statusText,errorThrown){wclsiJS.handleErrors(jqXHR,statusText,errorThrown)}})},overrideBulkSubmit:function(form){form.submit((function(e){let action=wclsiJS.topBulkActionSelector.val();if(action==="import_and_sync"||action==="import"||action==="update"){e.preventDefault()}else{return true}let inputs=form.find("input:checked[name^=wc_ls_imported_prod]");let prod_data={};prod_data.prod_ids=[];prod_data.matrix_ids=[];for(let i=0,len=inputs.length;i<len;i++){let prod=$(inputs[i]);if(prod.data("prod-type")==="matrix"){let formatted_id=prod.val().split("-")[0];prod_data.matrix_ids.push(formatted_id)}if(prod.data("prod-type")==="single"){prod_data.prod_ids.push(prod.val())}}let callback=function(){location.reload()};wclsiJS.initProgressBar(action);wclsiJS.executeBulkAction(`${action}_product_ajax`,prod_data,callback);return false}))},executeBulkAction:function(action,prod_data,callback){if(wclsi_admin.SCRIPT_DEBUG){console.log(action);console.log(prod_data)}wclsiJS.totalProds=prod_data.prod_ids.length+prod_data.matrix_ids.length;wclsiJS.totalSingleProds=prod_data.prod_ids.length;wclsiJS.totalMatrixProds=prod_data.matrix_ids.length;wclsiJS.prodIds=prod_data.prod_ids;wclsiJS.matrixIds=prod_data.matrix_ids;
1wclsiJS.importProgress=0;if(wclsiJS.totalSingleProds>0){wclsiJS.runSingleProdAction(action,"false",wclsiJS.totalSingleProds,0,callback)}else{wclsiJS.runSingleProdAction(action,"true",wclsiJS.totalMatrixProds,0,callback)}},onLinkClick:function(linkButton){linkButton.click((function(){const warning="Warning: linking this product to Lightspeed may overwrite your product properties in WooCommerce. Proceed?";if(confirm(warning)){let prod_id=$(this).data("prod-id");let spinner=$('<p>Linking ...<span class="spinner wclsi-spinner" id="wclsi-sync-spinner" style="float: none; vertical-align: initial;" /></p>');if($("#wclsi-sync-spinner").length===0){spinner.insertAfter($("#wclsi-relink-wrapper"))}setTimeout(()=>wclsiJS.linkProdToLS(prod_id,(function(){spinner.remove()})),wclsi_admin.WAIT_TIME)}return false}))},linkProdToLS:function(prod_id,callback){$.ajax({url:ajaxurl,type:"POST",data:{wclsi_nonce:wclsi_admin.WCLSI_NONCE,action:"relink_wc_prod_ajax",wc_prod_id:prod_id},dataType:"json",success:function(data){wclsiJS.checkForErrors(data);if(data.success){location.reload()}else if(!data.success&&(undefined===data.errors||0===data.errors.length)){wclsiJS.displayNotice(objectL10n.generic_error,"error")}callback()},error:function(jqXHR,statusText,errorThrown){wclsiJS.handleErrors(jqXHR,statusText,errorThrown);callback()}})},handleErrors:function(jqXHR,statusText,errorThrown,attachTo=null){if(statusText==="parsererror"){wclsiJS.displayNotice(jqXHR.responseText,"error",attachTo)}wclsiJS.displayNotice(errorThrown,"error",attachTo)},selectAllCheckboxesButton:function(selectAllElem,checkboxes){selectAllElem.click((function(){checkboxes.prop("checked",!checkboxes.prop("checked"))}))},handleAutoImportVisibility:function(autoLoadCheckbox){autoLoadCheckbox.click((function(){if($(this).is(":checked")){wclsiJS.autoLoadImportTableHeader.show()}else{wclsiJS.autoLoadImportTableHeader.hide()}}))},handleDeleteCatCache:function(deleteCatCacheButton){deleteCatCacheButton.click((function(){$.ajax({url:ajaxurl,type:"POST",data:{wclsi_nonce:wclsi_admin.WCLSI_NONCE,action:"clear_category_cache"},dataType:"json",success:function(data){wclsiJS.checkForErrors(data);if(data.success){wclsiJS.displayNotice(objectL10n.cat_cache_clear_success,"updated")}else if(!data.success&&(undefined===data.errors||0===data.errors.length)){wclsiJS.displayNotice(objectL10n.generic_error,"error")}},error:function(jqXHR,statusText,errorThrown){wclsiJS.handleErrors(jqXHR,statusText,errorThrown)}});return false}))},handleClearLoadedProdsClick:()=>{wclsiJS.clearLoadedProd.on("click",e=>{e.preventDefault();if(confirm("â Warning: are you sure you want to clear all loaded Lightspeed products? This action is permanent!")){$.post(ajaxurl,{wclsi_nonce:wclsi_admin.WCLSI_NONCE,action:"clear_table_data_ajax"},data=>{wclsiJS.checkForErrors(data);if(data.success){wclsiJS.displayNotice("Products successfully cleared.","updated")}},"json").fail((jqXHR,textStatus,errorThrown)=>{wclsiJS.handleErrors(jqXHR,statusText,errorThrown)})}})},init:function(){wclsi_admin.WAIT_TIME=1e3;wclsiJS.initAPIButton=$(`#${wclsi_admin.PLUGIN_PREFIX_ID}init_api_settings_button`);wclsiJS.importAllButton=$("#wc-import-all-prods");wclsiJS.loadLSProdButton=$("#wc-ls-load-prods");wclsiJS.submitAPIButton=$(".submit input:submit");wclsiJS.syncCheckBoxes=$(".wclsi-sync-cb");wclsiJS.prodManualSyncButton=$("#wclsi-manual-sync");wclsiJS.syncProdToLSButton=$("#wclsi-sync-to-ls");wclsiJS.importAndSyncLinks=$(".wc_ls_imported_prods .import_and_sync a");wclsiJS.importLinks=$(".wc_ls_imported_prods .import a");wclsiJS.prodTableForm=$("#wc-imported-prods-filter");wclsiJS.topBulkActionSelector=$("#bulk-action-selector-top");wclsiJS.linkButton=$("#wclsi-relink");wclsiJS.importLSCats=$("#wclsi-import-cats");wclsiJS.selectiveSyncCheckboxWrapper=$(".wclsi-selective-sync-checkboxes");wclsiJS.autoLoadCheckbox=$("#woocommerce_lightspeed-integration_ls_to_wc_auto_load");wclsiJS.autoLoadImportTableHeader=$("#wclsi_import_on_auto_load_wrapper");wclsiJS.deleteCatCacheButton=$("#wclsi-delete-cat-cache");wclsiJS.clearLoadedProd=$("#wclsi-clear-loaded-prods");wclsiJS.initLSLoadProds(wclsiJS.loadLSProdButton);wclsiJS.importAllProdsButton(wclsiJS.importAllButton);wclsiJS.syncCheckBoxHandler(wclsiJS.syncCheckBoxes);wclsiJS.manualProdUpdateHander(wclsiJS.prodManualSyncButton);wclsiJS.bindClickToSyncToLSButton(wclsiJS.syncProdToLSButton);wclsiJS.overrideBulkSubmit(wclsiJS.prodTableForm);wclsiJS.onLinkClick(wclsiJS.linkButton);wclsiJS.initImportCats(wclsiJS.importLSCats);wclsiJS.handleAutoImportVisibility(wclsiJS.autoLoadCheckbox);
1wclsiJS.handleDeleteCatCache(wclsiJS.deleteCatCacheButton);wclsiJS.handleClearLoadedProdsClick();wclsiJS.selectAllCheckboxesButton($("#wclsi_select_all_prod_sync_properties"),$("#wc_prod_selective_sync_properties input[type=checkbox]"));wclsiJS.selectAllCheckboxesButton($("#wclsi_select_all_ls_prod_sync_properties"),$("#ls_prod_selective_sync_properties input[type=checkbox]"));if(wclsi_admin.IS_ADMIN){$("#tiptip_holder").removeAttr("style");$("#tiptip_arrow").removeAttr("style");$(".tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200})}wclsi_admin.displayNotice=wclsiJS.displayNotice;wclsi_admin.checkForErrors=wclsiJS.checkForErrors;wclsi_admin.setWaitTime=wclsiJS.setWaitTime;wclsi_admin.handleErrors=wclsiJS.handleErrors;if(wclsi_admin.IS_ADMIN){wclsi_admin.executeBulkAction=wclsiJS.executeBulkAction;wclsi_admin.initProgressBar=wclsiJS.initProgressBar}}};$((function(){wclsiJS.init()}))})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.