@payloadcms/next 3.44.0 → 3.45.0-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js +0 -23
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
- package/dist/prod/styles.css +1 -1
- package/dist/views/Document/getDocumentView.d.ts.map +1 -1
- package/dist/views/Document/getDocumentView.js +0 -19
- package/dist/views/Document/getDocumentView.js.map +1 -1
- package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
- package/dist/views/Document/getMetaBySegment.js +0 -9
- package/dist/views/Document/getMetaBySegment.js.map +1 -1
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +46 -21
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/Root/getDocumentViewInfo.d.ts.map +1 -1
- package/dist/views/Root/getDocumentViewInfo.js +0 -5
- package/dist/views/Root/getDocumentViewInfo.js.map +1 -1
- package/dist/views/Root/getRouteData.d.ts.map +1 -1
- package/dist/views/Root/getRouteData.js +0 -2
- package/dist/views/Root/getRouteData.js.map +1 -1
- package/dist/views/Root/metadata.d.ts.map +1 -1
- package/dist/views/Root/metadata.js +0 -2
- package/dist/views/Root/metadata.js.map +1 -1
- package/package.json +6 -6
- package/dist/views/LivePreview/Context/collisionDetection.d.ts +0 -3
- package/dist/views/LivePreview/Context/collisionDetection.d.ts.map +0 -1
- package/dist/views/LivePreview/Context/collisionDetection.js +0 -29
- package/dist/views/LivePreview/Context/collisionDetection.js.map +0 -1
- package/dist/views/LivePreview/Context/context.d.ts +0 -51
- package/dist/views/LivePreview/Context/context.d.ts.map +0 -1
- package/dist/views/LivePreview/Context/context.js +0 -41
- package/dist/views/LivePreview/Context/context.js.map +0 -1
- package/dist/views/LivePreview/Context/index.d.ts +0 -19
- package/dist/views/LivePreview/Context/index.d.ts.map +0 -1
- package/dist/views/LivePreview/Context/index.js +0 -154
- package/dist/views/LivePreview/Context/index.js.map +0 -1
- package/dist/views/LivePreview/Context/sizeReducer.d.ts +0 -20
- package/dist/views/LivePreview/Context/sizeReducer.d.ts.map +0 -1
- package/dist/views/LivePreview/Context/sizeReducer.js +0 -30
- package/dist/views/LivePreview/Context/sizeReducer.js.map +0 -1
- package/dist/views/LivePreview/Device/index.d.ts +0 -5
- package/dist/views/LivePreview/Device/index.d.ts.map +0 -1
- package/dist/views/LivePreview/Device/index.js +0 -94
- package/dist/views/LivePreview/Device/index.js.map +0 -1
- package/dist/views/LivePreview/DeviceContainer/index.d.ts +0 -5
- package/dist/views/LivePreview/DeviceContainer/index.d.ts.map +0 -1
- package/dist/views/LivePreview/DeviceContainer/index.js +0 -55
- package/dist/views/LivePreview/DeviceContainer/index.js.map +0 -1
- package/dist/views/LivePreview/IFrame/index.d.ts +0 -10
- package/dist/views/LivePreview/IFrame/index.d.ts.map +0 -1
- package/dist/views/LivePreview/IFrame/index.js +0 -29
- package/dist/views/LivePreview/IFrame/index.js.map +0 -1
- package/dist/views/LivePreview/IFrame/index.scss +0 -9
- package/dist/views/LivePreview/Preview/index.d.ts +0 -5
- package/dist/views/LivePreview/Preview/index.d.ts.map +0 -1
- package/dist/views/LivePreview/Preview/index.js +0 -167
- package/dist/views/LivePreview/Preview/index.js.map +0 -1
- package/dist/views/LivePreview/Preview/index.scss +0 -43
- package/dist/views/LivePreview/Toolbar/Controls/index.d.ts +0 -5
- package/dist/views/LivePreview/Toolbar/Controls/index.d.ts.map +0 -1
- package/dist/views/LivePreview/Toolbar/Controls/index.js +0 -151
- package/dist/views/LivePreview/Toolbar/Controls/index.js.map +0 -1
- package/dist/views/LivePreview/Toolbar/Controls/index.scss +0 -61
- package/dist/views/LivePreview/Toolbar/SizeInput/index.d.ts +0 -6
- package/dist/views/LivePreview/Toolbar/SizeInput/index.d.ts.map +0 -1
- package/dist/views/LivePreview/Toolbar/SizeInput/index.js +0 -100
- package/dist/views/LivePreview/Toolbar/SizeInput/index.js.map +0 -1
- package/dist/views/LivePreview/Toolbar/SizeInput/index.scss +0 -12
- package/dist/views/LivePreview/Toolbar/index.d.ts +0 -7
- package/dist/views/LivePreview/Toolbar/index.d.ts.map +0 -1
- package/dist/views/LivePreview/Toolbar/index.js +0 -96
- package/dist/views/LivePreview/Toolbar/index.js.map +0 -1
- package/dist/views/LivePreview/Toolbar/index.scss +0 -43
- package/dist/views/LivePreview/ToolbarArea/index.d.ts +0 -6
- package/dist/views/LivePreview/ToolbarArea/index.d.ts.map +0 -1
- package/dist/views/LivePreview/ToolbarArea/index.js +0 -40
- package/dist/views/LivePreview/ToolbarArea/index.js.map +0 -1
- package/dist/views/LivePreview/ToolbarArea/index.scss +0 -6
- package/dist/views/LivePreview/index.client.d.ts +0 -9
- package/dist/views/LivePreview/index.client.d.ts.map +0 -1
- package/dist/views/LivePreview/index.client.js +0 -472
- package/dist/views/LivePreview/index.client.js.map +0 -1
- package/dist/views/LivePreview/index.d.ts +0 -5
- package/dist/views/LivePreview/index.d.ts.map +0 -1
- package/dist/views/LivePreview/index.js +0 -76
- package/dist/views/LivePreview/index.js.map +0 -1
- package/dist/views/LivePreview/index.scss +0 -68
- package/dist/views/LivePreview/metadata.d.ts +0 -3
- package/dist/views/LivePreview/metadata.d.ts.map +0 -1
- package/dist/views/LivePreview/metadata.js +0 -16
- package/dist/views/LivePreview/metadata.js.map +0 -1
- package/dist/views/LivePreview/usePopupWindow.d.ts +0 -20
- package/dist/views/LivePreview/usePopupWindow.d.ts.map +0 -1
- package/dist/views/LivePreview/usePopupWindow.js +0 -144
- package/dist/views/LivePreview/usePopupWindow.js.map +0 -1
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
@import '~@payloadcms/ui/scss';
|
|
2
|
-
|
|
3
|
-
@layer payload-default {
|
|
4
|
-
.live-preview {
|
|
5
|
-
width: 100%;
|
|
6
|
-
display: flex;
|
|
7
|
-
--gradient: linear-gradient(to left, rgba(0, 0, 0, 0.04) 0%, transparent 100%);
|
|
8
|
-
|
|
9
|
-
[dir='rtl'] & {
|
|
10
|
-
flex-direction: row-reverse;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
&--popup-open {
|
|
14
|
-
.live-preview {
|
|
15
|
-
&__edit {
|
|
16
|
-
padding-right: var(--gutter-h);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
&__main {
|
|
22
|
-
width: 40%;
|
|
23
|
-
display: flex;
|
|
24
|
-
flex-direction: column;
|
|
25
|
-
min-height: 100%;
|
|
26
|
-
position: relative;
|
|
27
|
-
|
|
28
|
-
&--popup-open {
|
|
29
|
-
width: 100%;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
&::after {
|
|
33
|
-
content: ' ';
|
|
34
|
-
position: absolute;
|
|
35
|
-
top: 0;
|
|
36
|
-
right: 0;
|
|
37
|
-
width: calc(var(--base) * 2);
|
|
38
|
-
height: 100%;
|
|
39
|
-
background: var(--gradient);
|
|
40
|
-
pointer-events: none;
|
|
41
|
-
z-index: -1;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
@include mid-break {
|
|
46
|
-
flex-direction: column;
|
|
47
|
-
|
|
48
|
-
&__main {
|
|
49
|
-
min-height: initial;
|
|
50
|
-
width: 100%;
|
|
51
|
-
|
|
52
|
-
&::after {
|
|
53
|
-
display: none;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
&__form {
|
|
58
|
-
display: block;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
html[data-theme='dark'] {
|
|
64
|
-
.live-preview {
|
|
65
|
-
--gradient: linear-gradient(to left, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0) 100%);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/metadata.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAI/E,eAAO,MAAM,+BAA+B,EAAE,wBAc1C,CAAA"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { generateEditViewMetadata } from '../Edit/metadata.js';
|
|
2
|
-
export const generateLivePreviewViewMetadata = async ({
|
|
3
|
-
collectionConfig,
|
|
4
|
-
config,
|
|
5
|
-
globalConfig,
|
|
6
|
-
i18n,
|
|
7
|
-
isEditing
|
|
8
|
-
}) => generateEditViewMetadata({
|
|
9
|
-
collectionConfig,
|
|
10
|
-
config,
|
|
11
|
-
globalConfig,
|
|
12
|
-
i18n,
|
|
13
|
-
isEditing,
|
|
14
|
-
view: 'livePreview'
|
|
15
|
-
});
|
|
16
|
-
//# sourceMappingURL=metadata.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","names":["generateEditViewMetadata","generateLivePreviewViewMetadata","collectionConfig","config","globalConfig","i18n","isEditing","view"],"sources":["../../../src/views/LivePreview/metadata.ts"],"sourcesContent":["import type { Metadata } from 'next'\n\nimport type { GenerateEditViewMetadata } from '../Document/getMetaBySegment.js'\n\nimport { generateEditViewMetadata } from '../Edit/metadata.js'\n\nexport const generateLivePreviewViewMetadata: GenerateEditViewMetadata = async ({\n collectionConfig,\n config,\n globalConfig,\n i18n,\n isEditing,\n}): Promise<Metadata> =>\n generateEditViewMetadata({\n collectionConfig,\n config,\n globalConfig,\n i18n,\n isEditing,\n view: 'livePreview',\n })\n"],"mappings":"AAIA,SAASA,wBAAwB,QAAQ;AAEzC,OAAO,MAAMC,+BAAA,GAA4D,MAAAA,CAAO;EAC9EC,gBAAgB;EAChBC,MAAM;EACNC,YAAY;EACZC,IAAI;EACJC;AAAS,CACV,KACCN,wBAAA,CAAyB;EACvBE,gBAAA;EACAC,MAAA;EACAC,YAAA;EACAC,IAAA;EACAC,SAAA;EACAC,IAAA,EAAM;AACR","ignoreList":[]}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type React from 'react';
|
|
2
|
-
export interface PopupMessage {
|
|
3
|
-
searchParams: {
|
|
4
|
-
[key: string]: string | undefined;
|
|
5
|
-
code: string;
|
|
6
|
-
installation_id: string;
|
|
7
|
-
state: string;
|
|
8
|
-
};
|
|
9
|
-
type: string;
|
|
10
|
-
}
|
|
11
|
-
export declare const usePopupWindow: (props: {
|
|
12
|
-
eventType?: string;
|
|
13
|
-
onMessage?: (searchParams: PopupMessage["searchParams"]) => Promise<void>;
|
|
14
|
-
url: string;
|
|
15
|
-
}) => {
|
|
16
|
-
isPopupOpen: boolean;
|
|
17
|
-
openPopupWindow: () => void;
|
|
18
|
-
popupRef?: React.RefObject<null | Window>;
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=usePopupWindow.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePopupWindow.d.ts","sourceRoot":"","sources":["../../../src/views/LivePreview/usePopupWindow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;QACjC,IAAI,EAAE,MAAM,CAAA;QACZ,eAAe,EAAE,MAAM,CAAA;QACvB,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,cAAc,UAAW;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE,GAAG,EAAE,MAAM,CAAA;CACZ,KAAG;IACF,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,CAAA;CAmH1C,CAAA"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { c as _c } from "react/compiler-runtime";
|
|
4
|
-
import { useConfig } from '@payloadcms/ui';
|
|
5
|
-
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
6
|
-
export const usePopupWindow = props => {
|
|
7
|
-
const $ = _c(15);
|
|
8
|
-
const {
|
|
9
|
-
eventType,
|
|
10
|
-
onMessage,
|
|
11
|
-
url
|
|
12
|
-
} = props;
|
|
13
|
-
const isReceivingMessage = useRef(false);
|
|
14
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
15
|
-
const {
|
|
16
|
-
config: t0
|
|
17
|
-
} = useConfig();
|
|
18
|
-
const {
|
|
19
|
-
serverURL
|
|
20
|
-
} = t0;
|
|
21
|
-
const popupRef = useRef(null);
|
|
22
|
-
let t1;
|
|
23
|
-
let t2;
|
|
24
|
-
if ($[0] !== eventType || $[1] !== isOpen || $[2] !== onMessage || $[3] !== serverURL || $[4] !== url) {
|
|
25
|
-
t1 = () => {
|
|
26
|
-
const receiveMessage = async event => {
|
|
27
|
-
if (event.origin !== window.location.origin || event.origin !== url || event.origin !== serverURL) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
if (typeof onMessage === "function" && event.data?.type === eventType && !isReceivingMessage.current) {
|
|
31
|
-
isReceivingMessage.current = true;
|
|
32
|
-
await onMessage(event.data?.searchParams);
|
|
33
|
-
isReceivingMessage.current = false;
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
if (isOpen && popupRef.current) {
|
|
37
|
-
window.addEventListener("message", receiveMessage, false);
|
|
38
|
-
}
|
|
39
|
-
return () => {
|
|
40
|
-
window.removeEventListener("message", receiveMessage);
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
t2 = [onMessage, eventType, url, serverURL, isOpen];
|
|
44
|
-
$[0] = eventType;
|
|
45
|
-
$[1] = isOpen;
|
|
46
|
-
$[2] = onMessage;
|
|
47
|
-
$[3] = serverURL;
|
|
48
|
-
$[4] = url;
|
|
49
|
-
$[5] = t1;
|
|
50
|
-
$[6] = t2;
|
|
51
|
-
} else {
|
|
52
|
-
t1 = $[5];
|
|
53
|
-
t2 = $[6];
|
|
54
|
-
}
|
|
55
|
-
useEffect(t1, t2);
|
|
56
|
-
let t3;
|
|
57
|
-
if ($[7] !== url) {
|
|
58
|
-
t3 = e => {
|
|
59
|
-
if (e) {
|
|
60
|
-
e.preventDefault();
|
|
61
|
-
}
|
|
62
|
-
const features = {
|
|
63
|
-
height: 700,
|
|
64
|
-
left: "auto",
|
|
65
|
-
menubar: "no",
|
|
66
|
-
popup: "yes",
|
|
67
|
-
toolbar: "no",
|
|
68
|
-
top: "auto",
|
|
69
|
-
width: 800
|
|
70
|
-
};
|
|
71
|
-
const popupOptions = Object.entries(features).reduce((str, t4) => {
|
|
72
|
-
const [key, value] = t4;
|
|
73
|
-
let strCopy = str;
|
|
74
|
-
if (value === "auto") {
|
|
75
|
-
if (key === "top") {
|
|
76
|
-
const v = Math.round(window.innerHeight / 2 - features.height / 2);
|
|
77
|
-
strCopy = strCopy + `top=${v},`;
|
|
78
|
-
} else {
|
|
79
|
-
if (key === "left") {
|
|
80
|
-
const v_0 = Math.round(window.innerWidth / 2 - features.width / 2);
|
|
81
|
-
strCopy = strCopy + `left=${v_0},`;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return strCopy;
|
|
85
|
-
}
|
|
86
|
-
strCopy = strCopy + `${key}=${value},`;
|
|
87
|
-
return strCopy;
|
|
88
|
-
}, "").slice(0, -1);
|
|
89
|
-
const newWindow = window.open(url, "_blank", popupOptions);
|
|
90
|
-
popupRef.current = newWindow;
|
|
91
|
-
setIsOpen(true);
|
|
92
|
-
};
|
|
93
|
-
$[7] = url;
|
|
94
|
-
$[8] = t3;
|
|
95
|
-
} else {
|
|
96
|
-
t3 = $[8];
|
|
97
|
-
}
|
|
98
|
-
const openPopupWindow = t3;
|
|
99
|
-
let t4;
|
|
100
|
-
let t5;
|
|
101
|
-
if ($[9] !== isOpen) {
|
|
102
|
-
t4 = () => {
|
|
103
|
-
let timer;
|
|
104
|
-
if (isOpen) {
|
|
105
|
-
timer = setInterval(function () {
|
|
106
|
-
if (popupRef.current.closed) {
|
|
107
|
-
clearInterval(timer);
|
|
108
|
-
setIsOpen(false);
|
|
109
|
-
}
|
|
110
|
-
}, 1000);
|
|
111
|
-
} else {
|
|
112
|
-
clearInterval(timer);
|
|
113
|
-
}
|
|
114
|
-
return () => {
|
|
115
|
-
if (timer) {
|
|
116
|
-
clearInterval(timer);
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
};
|
|
120
|
-
t5 = [isOpen, popupRef];
|
|
121
|
-
$[9] = isOpen;
|
|
122
|
-
$[10] = t4;
|
|
123
|
-
$[11] = t5;
|
|
124
|
-
} else {
|
|
125
|
-
t4 = $[10];
|
|
126
|
-
t5 = $[11];
|
|
127
|
-
}
|
|
128
|
-
useEffect(t4, t5);
|
|
129
|
-
let t6;
|
|
130
|
-
if ($[12] !== isOpen || $[13] !== openPopupWindow) {
|
|
131
|
-
t6 = {
|
|
132
|
-
isPopupOpen: isOpen,
|
|
133
|
-
openPopupWindow,
|
|
134
|
-
popupRef
|
|
135
|
-
};
|
|
136
|
-
$[12] = isOpen;
|
|
137
|
-
$[13] = openPopupWindow;
|
|
138
|
-
$[14] = t6;
|
|
139
|
-
} else {
|
|
140
|
-
t6 = $[14];
|
|
141
|
-
}
|
|
142
|
-
return t6;
|
|
143
|
-
};
|
|
144
|
-
//# sourceMappingURL=usePopupWindow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePopupWindow.js","names":["c","_c","useConfig","useCallback","useEffect","useRef","useState","usePopupWindow","props","$","eventType","onMessage","url","isReceivingMessage","isOpen","setIsOpen","config","t0","serverURL","popupRef","t1","t2","receiveMessage","event","origin","window","location","data","type","current","searchParams","addEventListener","removeEventListener","t3","e","preventDefault","features","height","left","menubar","popup","toolbar","top","width","popupOptions","Object","entries","reduce","str","t4","key","value","strCopy","v","Math","round","innerHeight","v_0","innerWidth","slice","newWindow","open","openPopupWindow","t5","timer","closed","clearInterval","t6","isPopupOpen"],"sources":["../../../src/views/LivePreview/usePopupWindow.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport { useConfig } from '@payloadcms/ui'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nexport interface PopupMessage {\n searchParams: {\n [key: string]: string | undefined\n code: string\n installation_id: string\n state: string\n }\n type: string\n}\n\nexport const usePopupWindow = (props: {\n eventType?: string\n\n onMessage?: (searchParams: PopupMessage['searchParams']) => Promise<void>\n url: string\n}): {\n isPopupOpen: boolean\n openPopupWindow: () => void\n popupRef?: React.RefObject<null | Window>\n} => {\n const { eventType, onMessage, url } = props\n const isReceivingMessage = useRef(false)\n const [isOpen, setIsOpen] = useState(false)\n const {\n config: { serverURL },\n } = useConfig()\n const popupRef = useRef<null | Window>(null)\n\n // Optionally broadcast messages back out to the parent component\n useEffect(() => {\n const receiveMessage = async (event: MessageEvent): Promise<void> => {\n if (\n event.origin !== window.location.origin ||\n event.origin !== url ||\n event.origin !== serverURL\n ) {\n // console.warn(`Message received by ${event.origin}; IGNORED.`) // eslint-disable-line no-console\n return\n }\n\n if (\n typeof onMessage === 'function' &&\n event.data?.type === eventType &&\n !isReceivingMessage.current\n ) {\n isReceivingMessage.current = true\n await onMessage(event.data?.searchParams)\n isReceivingMessage.current = false\n }\n }\n\n if (isOpen && popupRef.current) {\n window.addEventListener('message', receiveMessage, false)\n }\n\n return () => {\n window.removeEventListener('message', receiveMessage)\n }\n }, [onMessage, eventType, url, serverURL, isOpen])\n\n // Customize the size, position, and style of the popup window\n const openPopupWindow = useCallback(\n (e?: MouseEvent) => {\n if (e) {\n e.preventDefault()\n }\n\n const features = {\n height: 700,\n left: 'auto',\n menubar: 'no',\n popup: 'yes',\n toolbar: 'no',\n top: 'auto',\n width: 800,\n }\n\n const popupOptions = Object.entries(features)\n .reduce((str, [key, value]) => {\n let strCopy = str\n if (value === 'auto') {\n if (key === 'top') {\n const v = Math.round(window.innerHeight / 2 - features.height / 2)\n strCopy += `top=${v},`\n } else if (key === 'left') {\n const v = Math.round(window.innerWidth / 2 - features.width / 2)\n strCopy += `left=${v},`\n }\n return strCopy\n }\n\n strCopy += `${key}=${value},`\n return strCopy\n }, '')\n .slice(0, -1) // remove last ',' (comma)\n\n const newWindow = window.open(url, '_blank', popupOptions)\n\n popupRef.current = newWindow\n\n setIsOpen(true)\n },\n [url],\n )\n\n // this is the most stable and widely supported way to check if a popup window is no longer open\n // we poll its ref every x ms and use the popup window's `closed` property\n useEffect(() => {\n let timer: NodeJS.Timeout\n\n if (isOpen) {\n timer = setInterval(function () {\n if (popupRef.current.closed) {\n clearInterval(timer)\n setIsOpen(false)\n }\n }, 1000)\n } else {\n clearInterval(timer)\n }\n\n return () => {\n if (timer) {\n clearInterval(timer)\n }\n }\n }, [isOpen, popupRef])\n\n return {\n isPopupOpen: isOpen,\n openPopupWindow,\n popupRef,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|