$(function () { inputChanges(); // Clipboard Copy new Clipboard('#copyCode', { text: function (trigger) { $(".copyLabelPopup").show().delay(1000).fadeOut(500); return inputChanges(); } }); }); function esc(input) { return ('' + input) /* Forces the conversion to string. */ .replace(/&/g, '&') /* This MUST be the 1st replacement. */ .replace(/'/g, ''') /* The 4 other predefined entities, required. */ .replace(/"/g, '"') .replace(//g, '>') /* You may add other replacements here for HTML only (but it's not necessary). Or for XML, only if the named entities are defined in its DTD. */ ; } Vue.use(VeeValidate); var dictionary = { en: { attributes: { price: 'Price', checkoutDesc: 'Checkout Description', orderId: 'Order Id', serverIpn: 'Server IPN', notifyEmail: 'Send Email Notifications', browserRedirect: 'Browser Redirect', payButtonImageUrl: "Pay Button Image Url" } } }; VeeValidate.Validator.localize(dictionary); function getStyles (styles) { return document.getElementById(styles).innerHTML.trim().replace(/\s{2}/g, '') + '\n' } function getScripts(srvModel) { return ""+ ""; } function inputChanges(event, buttonSize) { if (buttonSize !== null && buttonSize !== undefined) { srvModel.buttonSize = buttonSize; } var isFixedAmount = srvModel.buttonType == 0 var isCustomAmount = srvModel.buttonType == 1 var isSlider = srvModel.buttonType == 2 var width = "209px"; var height = "57px"; var widthInput = "3em"; if (srvModel.buttonSize === 0) { width = "146px"; widthInput = "2em"; height = "40px"; } else if (srvModel.buttonSize === 1) { width = "168px"; height = "46px"; } else if (srvModel.buttonSize === 2) { width = "209px"; height = "57px"; } var actionUrl = "api/v1/invoices"; var priceInputName = "price"; var app = srvModel.appIdEndpoint? srvModel.apps.find(value => value.id === srvModel.appIdEndpoint ): null; var allowCurrencySelection = true; if (app) { if (app.appType.toLowerCase() == "pointofsale") { actionUrl = "apps/" + app.id + "/pos"; } else if (app.appType.toLowerCase() == "crowdfund") { actionUrl = "apps/" + app.id + "/crowdfund"; } else { actionUrl = "api/v1/invoices"; app = null; } if (actionUrl != "api/v1/invoices") { priceInputName = "amount"; allowCurrencySelection = false; srvModel.useModal = false; } } var html = //Scripts (srvModel.useModal? getScripts(srvModel) :"") + // Styles getStyles('template-paybutton-styles') + (isSlider ? getStyles('template-slider-styles') : '') + // Form '
\n' + addInput("storeId", srvModel.storeId); if(app){ if (srvModel.orderId) html += addInput("orderId", srvModel.orderId); if (srvModel.serverIpn) html += addInput("notificationUrl", srvModel.serverIpn); if (srvModel.browserRedirect) html += addInput("redirectUrl", srvModel.browserRedirect); if (srvModel.appChoiceKey) html += addInput("choiceKey", srvModel.appChoiceKey); }else{ if (srvModel.useModal) html += addInput("jsonResponse", true); if (srvModel.orderId) html += addInput("orderId", srvModel.orderId); if (srvModel.checkoutDesc) html += addInput("checkoutDesc", srvModel.checkoutDesc); if (srvModel.serverIpn) html += addInput("serverIpn", srvModel.serverIpn); if (srvModel.browserRedirect) html += addInput("browserRedirect", srvModel.browserRedirect); if (srvModel.notifyEmail) html += addInput("notifyEmail", srvModel.notifyEmail); if (srvModel.checkoutQueryString) html += addInput("checkoutQueryString", srvModel.checkoutQueryString); } // Fixed amount: Add price and currency as hidden inputs if (isFixedAmount) { html += addInput(priceInputName, srvModel.price); if(allowCurrencySelection){ html += addInput("currency", srvModel.currency); } } // Custom amount else if (isCustomAmount) { html += '
\n
\n'; html += srvModel.simpleInput ? '' : addPlusMinusButton("-"); html += ' ' + addInputPrice(priceInputName, srvModel.price, widthInput, "", srvModel.simpleInput ? "number": null, srvModel.min, srvModel.max, srvModel.step); html += srvModel.simpleInput ? '' : addPlusMinusButton("+"); html += '
\n'; if(allowCurrencySelection) { html += addSelectCurrency(srvModel.currency); } html += '
\n'; } // Slider else if (isSlider) { html += '
\n'; html += addInputPrice(priceInputName, srvModel.price, width, 'onchange="document.querySelector(\'#btcpay-input-range\').value = document.querySelector(\'#btcpay-input-price\').value"'); if(allowCurrencySelection) { html += addSelectCurrency(srvModel.currency); } html += addSlider(srvModel.price, srvModel.min, srvModel.max, srvModel.step, width); html += '
\n'; } if(!srvModel.payButtonText){ html += ' \n'; }else{ var numheight = parseInt(height.replace("px", "")); html+= '' } html += '
'; $("#mainCode").text(html).html(); $("#preview").html(html); var form = document.querySelector("#preview form"); var url = new URL(form.getAttribute("action")); var formData = new FormData(form); formData.forEach((value, key) => { if(key !== "jsonResponse"){ url.searchParams.append(key, value); } }); url = url.href; $("#preview-link").append(`${url}`) $('pre code').each(function (i, block) { hljs.highlightBlock(block); }); return html; } function addInput(name, value) { return ' \n'; } function addPlusMinusButton(type) { return ' \n'; } function addInputPrice(name, price, widthInput, customFn, type, min, max, step) { return ' \n'; } function addSelectCurrency(currency) { return ' \n' } function addSlider(price, min, max, step, width) { return ' \n'; }