Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
144 lines
3.6 KiB
Plaintext
144 lines
3.6 KiB
Plaintext
'use client';
|
|
|
|
import { c as _c } from "react/compiler-runtime";
|
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
import { useConfig } from '../providers/Config/index.js';
|
|
export const usePopupWindow = props => {
|
|
const $ = _c(15);
|
|
const {
|
|
eventType,
|
|
onMessage,
|
|
url
|
|
} = props;
|
|
const isReceivingMessage = useRef(false);
|
|
const [isOpen, setIsOpen] = useState(false);
|
|
const {
|
|
config: t0
|
|
} = useConfig();
|
|
const {
|
|
serverURL
|
|
} = t0;
|
|
const popupRef = useRef(null);
|
|
let t1;
|
|
let t2;
|
|
if ($[0] !== eventType || $[1] !== isOpen || $[2] !== onMessage || $[3] !== serverURL || $[4] !== url) {
|
|
t1 = () => {
|
|
const receiveMessage = async event => {
|
|
if (event.origin !== window.location.origin || event.origin !== url || event.origin !== serverURL) {
|
|
return;
|
|
}
|
|
if (typeof onMessage === "function" && event.data?.type === eventType && !isReceivingMessage.current) {
|
|
isReceivingMessage.current = true;
|
|
await onMessage(event.data?.searchParams);
|
|
isReceivingMessage.current = false;
|
|
}
|
|
};
|
|
if (isOpen && popupRef.current) {
|
|
window.addEventListener("message", receiveMessage, false);
|
|
}
|
|
return () => {
|
|
window.removeEventListener("message", receiveMessage);
|
|
};
|
|
};
|
|
t2 = [onMessage, eventType, url, serverURL, isOpen];
|
|
$[0] = eventType;
|
|
$[1] = isOpen;
|
|
$[2] = onMessage;
|
|
$[3] = serverURL;
|
|
$[4] = url;
|
|
$[5] = t1;
|
|
$[6] = t2;
|
|
} else {
|
|
t1 = $[5];
|
|
t2 = $[6];
|
|
}
|
|
useEffect(t1, t2);
|
|
let t3;
|
|
if ($[7] !== url) {
|
|
t3 = e => {
|
|
if (e) {
|
|
e.preventDefault();
|
|
}
|
|
const features = {
|
|
height: 700,
|
|
left: "auto",
|
|
menubar: "no",
|
|
popup: "yes",
|
|
toolbar: "no",
|
|
top: "auto",
|
|
width: 800
|
|
};
|
|
const popupOptions = Object.entries(features).reduce((str, t4) => {
|
|
const [key, value] = t4;
|
|
let strCopy = str;
|
|
if (value === "auto") {
|
|
if (key === "top") {
|
|
const v = Math.round(window.innerHeight / 2 - features.height / 2);
|
|
strCopy = strCopy + `top=${v},`;
|
|
} else {
|
|
if (key === "left") {
|
|
const v_0 = Math.round(window.innerWidth / 2 - features.width / 2);
|
|
strCopy = strCopy + `left=${v_0},`;
|
|
}
|
|
}
|
|
return strCopy;
|
|
}
|
|
strCopy = strCopy + `${key}=${value},`;
|
|
return strCopy;
|
|
}, "").slice(0, -1);
|
|
const newWindow = window.open(url, "_blank", popupOptions);
|
|
popupRef.current = newWindow;
|
|
setIsOpen(true);
|
|
};
|
|
$[7] = url;
|
|
$[8] = t3;
|
|
} else {
|
|
t3 = $[8];
|
|
}
|
|
const openPopupWindow = t3;
|
|
let t4;
|
|
let t5;
|
|
if ($[9] !== isOpen) {
|
|
t4 = () => {
|
|
let timer;
|
|
if (isOpen) {
|
|
timer = setInterval(function () {
|
|
if (popupRef.current.closed) {
|
|
clearInterval(timer);
|
|
setIsOpen(false);
|
|
}
|
|
}, 1000);
|
|
} else {
|
|
clearInterval(timer);
|
|
}
|
|
return () => {
|
|
if (timer) {
|
|
clearInterval(timer);
|
|
}
|
|
};
|
|
};
|
|
t5 = [isOpen, popupRef];
|
|
$[9] = isOpen;
|
|
$[10] = t4;
|
|
$[11] = t5;
|
|
} else {
|
|
t4 = $[10];
|
|
t5 = $[11];
|
|
}
|
|
useEffect(t4, t5);
|
|
let t6;
|
|
if ($[12] !== isOpen || $[13] !== openPopupWindow) {
|
|
t6 = {
|
|
isPopupOpen: isOpen,
|
|
openPopupWindow,
|
|
popupRef
|
|
};
|
|
$[12] = isOpen;
|
|
$[13] = openPopupWindow;
|
|
$[14] = t6;
|
|
} else {
|
|
t6 = $[14];
|
|
}
|
|
return t6;
|
|
};
|
|
//# sourceMappingURL=usePopupWindow.js.map |