UNPKG

@vela-ventures/ao-sync-sdk

Version:
107 lines (106 loc) 4.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.connectionModalMessage = exports.createModalTemplate = void 0; const modalStyles_1 = require("../styles/modalStyles"); const modalAssets_1 = require("../constants/modalAssets"); const styleUtils_1 = require("../utils/styleUtils"); const modalCSS = ` .aosync-modal-fade-in { animation: fadeIn 0.1s ease; } .aosync-modal-fade-out { animation: fadeOut 0.2s ease; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } } `; const createModalTemplate = ({ subTitle, description, qrCodeData, animationData, autoClose, walletClient, }) => { if (!document.getElementById("aosync-modal-styles")) { const style = document.createElement("style"); style.id = "aosync-modal-styles"; style.textContent = modalCSS + modalStyles_1.mobileStylesCSS; document.head.appendChild(style); } const modal = document.createElement("div"); Object.assign(modal.style, modalStyles_1.modalStyles.modal); modal.className = "aosync-modal-fade-in"; modal.id = `aosync-modal-container`; const backdrop = document.createElement("div"); Object.assign(backdrop.style, modalStyles_1.modalStyles.backdrop); backdrop.onclick = () => closeModal(modal, walletClient); const content = document.createElement("div"); Object.assign(content.style, modalStyles_1.modalStyles.content); content.style.setProperty("font-family", "Sora", "important"); content.id = "aosync-modal-content"; content.innerHTML = ` <div style="${(0, styleUtils_1.objectToInlineStyle)(modalStyles_1.modalStyles.iconContainer)}"> ${modalAssets_1.ICONS.qrCode.scanner} </div> <h3 style="${(0, styleUtils_1.objectToInlineStyle)(modalStyles_1.modalStyles.title)}">AOSync</h3> <div style="${(0, styleUtils_1.objectToInlineStyle)(modalStyles_1.modalStyles.subtitle)}">${subTitle}</div> ${qrCodeData ? `<img id="aosync-beacon-connection-qrCode" src="${qrCodeData}" alt="QR Code" style="width: 200px; height: 200px; margin-bottom: 10px;">` : ""} ${animationData ? '<div id="aosync-lottie-animation" style="width: 200px; height: 200px; margin-bottom: 10px;"></div>' : ""} <div style="${(0, styleUtils_1.objectToInlineStyle)(modalStyles_1.modalStyles.description)}"> <span id="aosync-beacon-modal-description">${description}</span> <a href="https://beaconwallet.app" target="_blank" style="${(0, styleUtils_1.objectToInlineStyle)(modalStyles_1.modalStyles.modalLink)}; text-decoration: none; display: block; margin-top: 8px;"> beaconwallet.app </a> </div> `; modal.appendChild(backdrop); modal.appendChild(content); document.body.appendChild(modal); if (animationData) { const lottieContainer = document.getElementById("aosync-lottie-animation"); if (lottieContainer) { const img = document.createElement("img"); img.src = modalAssets_1.ICONS.loadingAnimation; img.style.width = "100%"; lottieContainer.appendChild(img); } } if (autoClose) { setTimeout(() => { closeModal(modal); if (document.getElementById("aosync-modal-container")) { document.body.removeChild(document.getElementById("aosync-modal-container")); } }, 1000); } return modal; }; exports.createModalTemplate = createModalTemplate; function closeModal(modal, walletClient) { if (walletClient) { walletClient.connectionListener("connection_canceled"); } modal.className = "aosync-modal-fade-out"; setTimeout(() => modal.remove(), 150); } function connectionModalMessage(modalMessage) { const qrCode = document.getElementById("aosync-beacon-connection-qrCode") || document.getElementById("aosync-lottie-animation"); if (!qrCode) return; const modal = document.getElementById("aosync-modal-container"); if (!modal) return; const statusMark = document.createElement("div"); Object.assign(statusMark.style, modalStyles_1.modalStyles.statusMark); statusMark.className = "aosync-modal-fade-in"; statusMark.innerHTML = modalMessage === "success" ? modalAssets_1.ICONS.qrCode.success : modalAssets_1.ICONS.qrCode.fail; qrCode.replaceWith(statusMark); setTimeout(() => closeModal(modal), 1000); } exports.connectionModalMessage = connectionModalMessage;