1const SalesforceIntegration={init:function(){SalesforceIntegration.listeners()},listeners:function(){$(window).on("load",SalesforceIntegration.refreshAllStatuses),$(document).on("refresh_salesforce_status",SalesforceIntegration.refreshAllStatuses),$(document).on("change","input[name=enable_salesforce_integration]",function(e){let enable=!!e.target.checked,parent=$(this).parents(".salesforce_integration_form"),container=$(parent).find(".salesforce_container");if(!amILoggedIn()){$(this).prop("checked",!1),$("#signup-free").modal("show");return}if(extractDataFromArray(__plan_info,[extractDataFromArray(user_info,["plan_info","plan"],"FR"),"STATISTICS"],"B")=="B"){$(this).prop("checked",!1),PlanPopup.showPurchasePopupForFormIntegration();return}enable?(container.removeClass("d-none"),SalesforceIntegration.refreshStatus(parent)):container.addClass("d-none")}),$(document).on("click",".salesforce_install_toggle",function(e){e.preventDefault();let card=$(this).closest(".salesforce_install_card");card.find(".salesforce_install_body").toggleClass("d-none"),card.find(".salesforce_install_chevron").toggleClass("icon-uparrow_4 icon-downarrow_4")}),$(document).on("click",".salesforce_connect_btn",function(e){e.preventDefault();let parent=$(this).parents(".salesforce_integration_form"),ids=SalesforceIntegration.getIds(parent);if(!ids.qr_template_id&&!ids.bulk_upload_id||!ids.form_id){SwalPopup.showSingleButtonPopup({icon:"info",text:"Please save the QR code first."});return}let newTab=window.open("about:blank","_blank");ajaxAPI("/integration/salesforce",{cmd:"getConnectUrl",qr_template_id:ids.qr_template_id,bulk_upload_id:ids.bulk_upload_id,form_id:ids.form_id},function(response){let authUrl=extractDataFromArray(response,["data","auth_url"],"");if(response.errorCode==0&&authUrl){newTab?newTab.location.href=authUrl:window.open(authUrl,"_blank"),showLoaderOnBlock($("body"));let elapsed=0,poll=setInterval(function(){elapsed+=2500,ajaxAPI("/integration/salesforce",{cmd:"getStatus",qr_template_id:ids.qr_template_id,bulk_upload_id:ids.bulk_upload_id,form_id:ids.form_id},function(statusResp){extractDataFromArray(statusResp,["data","connected"],0)==1&&(clearInterval(poll),hideLoader($("body")),SalesforceIntegration.refreshStatus(parent))}),elapsed>=12e4&&(clearInterval(poll),hideLoader($("body")))},2500)}else newTab&&newTab.close(),response.errorMsg=="RCP"?SwalPopup.showSingleButtonPopup({icon:"error",text:"Your session has expired. Please reload the page and try again."}):SwalPopup.showSingleButtonPopup({icon:"error",text:extractDataFromArray(response,["errorMsg"],"Unable to connect Salesforce.")})})}),$(document).on("click",".salesforce_disconnect_btn",function(e){e.preventDefault();let parent=$(this).parents(".salesforce_integration_form"),ids=SalesforceIntegration.getIds(parent);showDeleteConfirmation("Disconnect Salesforce","Are you sure you want to disconnect Salesforce for this form?","Disconnect",()=>{ajaxAPI("/integration/salesforce",{cmd:"disconnect",qr_template_id:ids.qr_template_id,bulk_upload_id:ids.bulk_upload_id,form_id:ids.form_id},function(){SalesforceIntegration.refreshStatus(parent)})})}),$(document).on("change",".salesforce_object_select",function(e){let $select=$(this),parent=$select.parents(".salesforce_integration_form"),prev=$select.data("prevObject")||"",curr=$select.val()||"";if(prev===curr)return;let applyChange=function(){$select.data("prevObject",curr),SalesforceIntegration.loadProperties(parent),QRPageComponents.handleInputChange(e)};prev&&SalesforceIntegration.hasMappings(parent)?($select.val(prev).trigger("change.select2"),showDeleteConfirmation("Change object?","Changing the object will reset your current field mappings. Do you want to continue?","Change",function(){$select.val(curr).trigger("change.select2");let index=SalesforceIntegration.getIndex(parent);parent.find(".salesforce_mapping_rows").html(ComponentLists.form.getSalesforceMappingRowHtml(index,"","")),SalesforceIntegration.reinitSelect2(parent.find(".salesforce_form_field, .salesforce_property")),applyChange()})):applyChange()}),$(document).on("click",".salesforce_add_mapping",function(e){e.preventDefault();let parent=$(this).parents(".salesforce_integration_form"),index=SalesforceIntegration.getIndex(parent),$newRow=$(ComponentLists.form.getSalesforceMappingRowHtml(index,"",""));$(parent).find(".salesforce_mapping_rows").append($newRow),SalesforceIntegration.reinitSelect2($newRow.find(".salesforce_form_field, .salesforce_property")),SalesforceIntegration.loadProperties(parent),QRPageComponents.handleInputChange(e)}
1),$(document).on("click",".salesforce_delete_mapping",function(e){e.preventDefault();let $btn=$(this),index=$btn.parents(".qr_page_component_card").index(),row=$btn.parents(".salesforce_mapping_row"),parent=$btn.parents(".salesforce_integration_form"),doDelete=function(){row.remove(),QRPageComponents.handleInputChange(null,index),SalesforceIntegration.markMissingRequired(parent)};row.find(".salesforce_property").val()||row.find(".salesforce_form_field").val()?showDeleteConfirmation("Delete mapping","Are you sure you want to delete this field mapping?","Delete",doDelete):doDelete()}),$(document).on("click",".form_integration_goto",function(e){if($(this).data("target")!=="salesforce")return;e.preventDefault();let container=$(this).closest(".form_integration");container.find(".form_container").removeClass("collapse_form");let section=container.find(".salesforce_integration_form");if(section&§ion.length){let scrollTo=section.offset().top-Math.max(0,(window.innerHeight-section.outerHeight())/2);$("html, body").animate({scrollTop:Math.max(0,scrollTo)},400),section.addClass("integration_highlight"),setTimeout(function(){section.removeClass("integration_highlight")},1600)}}),$(document).on("change",".salesforce_form_field",function(e){let row=$(this).closest(".salesforce_mapping_row");$(this).val()==="__custom_value__"?row.find(".salesforce_custom_value").removeClass("d-none"):row.find(".salesforce_custom_value").addClass("d-none"),QRPageComponents.handleInputChange(e)})},getIndex:function(parent){return $(parent).parents(".qr_page_component_card").index()},hasMappings:function(parent){let has=!1;return $(parent).find(".salesforce_mapping_row").each(function(){($(this).find(".salesforce_property").val()||$(this).find(".salesforce_form_field").val())&&(has=!0)}),has},getIds:function(parent){let index=SalesforceIntegration.getIndex(parent),qrTemplateId=extractDataFromArray(__savedQrCodeParams,["id"],"");(qrTemplateId==""||qrTemplateId=="new")&&(qrTemplateId=extractDataFromArray(__savedQrCodeParams,["newid"],qrTemplateId));let bulkUploadId="";return getUrlParameterByName("bulk")==1&&(bulkUploadId=typeof BulkUploadHandler!="undefined"&&!isEmpty(BulkUploadHandler.bulk_upload_rec_id)?BulkUploadHandler.bulk_upload_rec_id:qrTemplateId),{index,qr_template_id:qrTemplateId,bulk_upload_id:bulkUploadId,form_id:extractDataFromArray(QRPageComponents.components[index],["_id"],"")}},reinitSelect2:function(sel){sel.each(function(){let $s=$(this);$s.hasClass("select2-hidden-accessible")&&$s.select2("destroy");let searchable=$s.hasClass("salesforce_property")||$s.hasClass("salesforce_object_select");$s.select2(searchable?{}:{minimumResultsForSearch:1/0})})},refreshStatus:function(parent){let ids=SalesforceIntegration.getIds(parent);!ids.qr_template_id&&!ids.bulk_upload_id||!ids.form_id||ajaxAPI("/integration/salesforce",{cmd:"getStatus",qr_template_id:ids.qr_template_id,bulk_upload_id:ids.bulk_upload_id,form_id:ids.form_id},function(response){let d=extractDataFromArray(response,["data"],{}),connected=extractDataFromArray(d,["connected"],0)==1,statusText=$(parent).find(".salesforce_status_text"),installUrl=extractDataFromArray(d,["install_url"],"");if(installUrl&&$(parent).find(".salesforce_install_link").attr("href",installUrl),connected){let org=extractDataFromArray(d,["org_id"],"");statusText.removeClass("text-muted").addClass("text-success").text(getClaimFlowTxt("Connected")+(org?" (Org "+org+")":"")),$(parent).find(".salesforce_connect_btn").addClass("d-none"),$(parent).find(".salesforce_disconnect_btn").removeClass("d-none"),$(parent).find(".salesforce_install_card").addClass("d-none"),$(parent).find(".salesforce_mapping_wrapper").removeClass("d-none"),$(parent).find(".salesforce_save_note").addClass("d-none"),SalesforceIntegration.loadObjects(parent)}else statusText.removeClass("text-success").addClass("text-muted").text(getClaimFlowTxt("Not connected")),$(parent).find(".salesforce_connect_btn").removeClass("d-none"),$(parent).find(".salesforce_disconnect_btn").addClass("d-none"),$(parent).find(".salesforce_install_card").removeClass("d-none"),$(parent).find(".salesforce_mapping_wrapper").addClass("d-none")})},loadObjects:function(parent){let ids=SalesforceIntegration.getIds(parent),select=$(parent).find(".salesforce_object_select"),current=select.val();ajaxAPI("/integration/salesforce",{cmd:"getObjects",qr_template_id:ids.qr_template_id,bulk_upload_id:ids.bulk_upload_id,form_id:ids.form_id},function(response){let objects=extractDataFromArray(response,["data","objects"],[]);if(isEmpty(objects))return;let options='<option value="">Select an object</option>';
1objects.forEach(obj=>{let val=extractDataFromArray(obj,["value"],""),label=extractDataFromArray(obj,["label"],val);options+='<option value="'+val+'" '+(current==val?"selected":"")+">"+label+"</option>"}),select.html(options),SalesforceIntegration.reinitSelect2(select),select.data("prevObject",select.val()||""),current&&SalesforceIntegration.loadProperties(parent)})},loadProperties:function(parent){let ids=SalesforceIntegration.getIds(parent),objectType=$(parent).find(".salesforce_object_select").val();objectType&&ajaxAPI("/integration/salesforce",{cmd:"getObjectProperties",qr_template_id:ids.qr_template_id,bulk_upload_id:ids.bulk_upload_id,form_id:ids.form_id,object_type:objectType},function(response){let properties=extractDataFromArray(response,["data","properties"],[]);if(isEmpty(properties))return;let requiredProps=[],requiredLabels={};properties.forEach(prop=>{if(extractDataFromArray(prop,["required"],0)==1){let name=extractDataFromArray(prop,["name"],"");requiredProps.push(name),requiredLabels[name]=extractDataFromArray(prop,["label"],name)}}),$(parent).data("requiredProps",requiredProps),$(parent).data("requiredLabels",requiredLabels),$(parent).find(".salesforce_property").each(function(){let selected=$(this).val(),options='<option value="">Select a field</option>';properties.forEach(prop=>{let name=extractDataFromArray(prop,["name"],""),label=extractDataFromArray(prop,["label"],name),isRequired=extractDataFromArray(prop,["required"],0)==1;options+='<option value="'+name+'" data-required="'+(isRequired?1:0)+'" '+(selected==name?"selected":"")+">"+label+(isRequired?" *":"")+"</option>"}),$(this).html(options),SalesforceIntegration.reinitSelect2($(this))}),SalesforceIntegration.markMissingRequired(parent)})},markMissingRequired:function(parent){let missing=SalesforceIntegration.getMissingRequired(parent),note=$(parent).find(".salesforce_required_note");missing.length?note.removeClass("d-none").text("Map these required fields or Salesforce will reject the submission: "+missing.join(", ")):note.addClass("d-none").text("")},getMissingRequired:function(parent){let requiredProps=$(parent).data("requiredProps")||[];if(!requiredProps.length)return[];let requiredLabels=$(parent).data("requiredLabels")||{},mapped={};$(parent).find(".salesforce_mapping_row").each(function(){let prop=$(this).find(".salesforce_property").val(),fieldId=$(this).find(".salesforce_form_field").val();prop&&fieldId&&(mapped[prop]=!0)});let missing=[];return requiredProps.forEach(name=>{mapped[name]||missing.push(extractDataFromArray(requiredLabels,[name],name))}),missing},refreshAllStatuses:function(){$(".salesforce_integration_form").has("input[name=enable_salesforce_integration]:checked").each(function(){SalesforceIntegration.reinitSelect2($(this).find(".salesforce_object_select, .salesforce_property, .salesforce_form_field")),SalesforceIntegration.refreshStatus($(this))})}};$(document).on("change",".salesforce_property, .salesforce_form_field",function(){let parent=$(this).parents(".salesforce_integration_form");SalesforceIntegration.markMissingRequired(parent)}),$(function(){SalesforceIntegration.init()});
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.