Skip to content
Snippets Groups Projects
parent.ts 2.64 KiB
Newer Older
import cssLink from "./parent-style.css";

Midhun Suresh's avatar
Midhun Suresh committed
const configLocation = "./config.json";
let isIframeLoaded = false;

const sizeCollection = {
    "desktop": {
        "account-setup": { height: "110px", width: "360px" },
        "timeline": {height: "600px", width: "375px"}
Midhun Suresh's avatar
Midhun Suresh committed
    },
    "mobile": {
        "account-setup": { height: "100vh", width: "100vw" },
        "timeline": {height: "100vh", width: "100vw"}
    }
}

window.addEventListener("message", event => {
    const { action } = event.data;
    switch (action) {
        case "resize-iframe":
            resizeIframe(event.data);
Midhun Suresh's avatar
Midhun Suresh committed
            break;
        case "minimize":
            minimizeIframe();
            break;
    }
});

function isMobile() {
    return window.innerWidth <= 800 && window.innerHeight <= 930;
}

Midhun Suresh's avatar
Midhun Suresh committed
function renderStartButton() {
Midhun Suresh's avatar
Midhun Suresh committed
    const container = document.createElement("div");
    container.className = "start";
    const button = document.createElement("button");
    button.className = "StartChat";
    button.onclick = () => isIframeLoaded? minimizeIframe() : loadChatterboxIframe();
    container.appendChild(button);
    document.body.appendChild(container);
}

function loadCSS() {
    const linkElement = document.createElement("link") as HTMLLinkElement;
    linkElement.rel = "stylesheet";
    linkElement.href = cssLink;
}

Midhun Suresh's avatar
Midhun Suresh committed
function loadChatterboxIframe() {
    const iframe = document.createElement("iframe");
    iframe.src = `./chatterbox.html?config=${configLocation}`;
    iframe.className = "chatterbox-iframe";
    document.body.appendChild(iframe);
    isIframeLoaded = true;
    if (isMobile()) {
        (document.querySelector(".start") as HTMLButtonElement).style.display = "none";
    }
Midhun Suresh's avatar
Midhun Suresh committed
}

function minimizeIframe() {
    const iframeElement = document.querySelector(".chatterbox-iframe") as HTMLIFrameElement;
    const startButton = document.querySelector(".start") as HTMLButtonElement;
Midhun Suresh's avatar
Midhun Suresh committed
    if (iframeElement.style.display !== "none") {
        iframeElement.style.display = "none";
        if (isMobile()) {
            startButton.style.display = "block";
        }
Midhun Suresh's avatar
Midhun Suresh committed
    }
    else {
        iframeElement.style.display = "block";
        if (isMobile()) {
            startButton.style.display = "none";
        }
Midhun Suresh's avatar
Midhun Suresh committed
    }
Midhun Suresh's avatar
Midhun Suresh committed

function resizeIframe(data) {
    const { view } = data;
    const type = isMobile()? "mobile": "desktop";
    const size = sizeCollection[type][view];
    if (!size) { return; }
    const { height, width } = size;
    const iframeElement = document.querySelector(".chatterbox-iframe") as HTMLIFrameElement;
    if (height) { iframeElement.style.height = height; }
    if (width) { iframeElement.style.width = width; }
Midhun Suresh's avatar
Midhun Suresh committed
}

renderStartButton();