@parafin/core 3.1.2 → 3.2.1
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/index.ts +17 -2
- package/out/index.d.ts +1 -0
- package/out/index.js +15 -2
- package/package.json +12 -3
package/index.ts
CHANGED
|
@@ -59,6 +59,9 @@ export const openParafinDashboard = (
|
|
|
59
59
|
...('inWebView' in props &&
|
|
60
60
|
props.inWebView !== undefined &&
|
|
61
61
|
props.inWebView !== null && { inWebView: props.inWebView.toString() }),
|
|
62
|
+
...(props.dashboardTargetElementId && {
|
|
63
|
+
isDashboardEmbedded: 'true',
|
|
64
|
+
}),
|
|
62
65
|
...Object.fromEntries(searchParams),
|
|
63
66
|
}
|
|
64
67
|
|
|
@@ -196,6 +199,7 @@ export type WidgetProps = {
|
|
|
196
199
|
openInNewTab?: boolean
|
|
197
200
|
onLinkOpened?: (url: string, metadata: LinkOpenedMetadata) => void
|
|
198
201
|
inWebView?: boolean
|
|
202
|
+
dashboardTargetElementId?: string
|
|
199
203
|
}
|
|
200
204
|
|
|
201
205
|
export const initializeParafinWidget = (
|
|
@@ -204,6 +208,7 @@ export const initializeParafinWidget = (
|
|
|
204
208
|
) => {
|
|
205
209
|
let initStartTime = Date.now()
|
|
206
210
|
let hasLoadedOnce = false
|
|
211
|
+
let wasEverHidden = document.hidden
|
|
207
212
|
|
|
208
213
|
// @ts-ignore
|
|
209
214
|
const url = new URL(props.widgetUrlOverride ?? 'https://widget.parafin.com')
|
|
@@ -283,7 +288,7 @@ export const initializeParafinWidget = (
|
|
|
283
288
|
}
|
|
284
289
|
break
|
|
285
290
|
case 'widget-load-complete':
|
|
286
|
-
if (props.onEvent && !hasLoadedOnce) {
|
|
291
|
+
if (props.onEvent && !hasLoadedOnce && !wasEverHidden) {
|
|
287
292
|
const timeToLoadInMs = Date.now() - initStartTime
|
|
288
293
|
props.onEvent('widget_loaded', { timeToLoadInMs })
|
|
289
294
|
}
|
|
@@ -293,7 +298,17 @@ export const initializeParafinWidget = (
|
|
|
293
298
|
}
|
|
294
299
|
}
|
|
295
300
|
|
|
301
|
+
const visibilityHandler = () => {
|
|
302
|
+
if (document.hidden) {
|
|
303
|
+
wasEverHidden = true
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
296
307
|
window.addEventListener('message', messageListener)
|
|
308
|
+
document.addEventListener('visibilitychange', visibilityHandler)
|
|
297
309
|
|
|
298
|
-
return () =>
|
|
310
|
+
return () => {
|
|
311
|
+
window.removeEventListener('message', messageListener)
|
|
312
|
+
document.removeEventListener('visibilitychange', visibilityHandler)
|
|
313
|
+
}
|
|
299
314
|
}
|
package/out/index.d.ts
CHANGED
|
@@ -47,6 +47,7 @@ export type WidgetProps = {
|
|
|
47
47
|
openInNewTab?: boolean;
|
|
48
48
|
onLinkOpened?: (url: string, metadata: LinkOpenedMetadata) => void;
|
|
49
49
|
inWebView?: boolean;
|
|
50
|
+
dashboardTargetElementId?: string;
|
|
50
51
|
};
|
|
51
52
|
export declare const initializeParafinWidget: (iframe: HTMLIFrameElement, props: WidgetProps) => () => void;
|
|
52
53
|
export {};
|
package/out/index.js
CHANGED
|
@@ -29,6 +29,9 @@ export const openParafinDashboard = (props) => {
|
|
|
29
29
|
...('inWebView' in props &&
|
|
30
30
|
props.inWebView !== undefined &&
|
|
31
31
|
props.inWebView !== null && { inWebView: props.inWebView.toString() }),
|
|
32
|
+
...(props.dashboardTargetElementId && {
|
|
33
|
+
isDashboardEmbedded: 'true',
|
|
34
|
+
}),
|
|
32
35
|
...Object.fromEntries(searchParams),
|
|
33
36
|
};
|
|
34
37
|
const url = `${origin}${route}?${new URLSearchParams(query).toString()}`;
|
|
@@ -133,6 +136,7 @@ const emptyMetadata = {
|
|
|
133
136
|
export const initializeParafinWidget = (iframe, props) => {
|
|
134
137
|
let initStartTime = Date.now();
|
|
135
138
|
let hasLoadedOnce = false;
|
|
139
|
+
let wasEverHidden = document.hidden;
|
|
136
140
|
// @ts-ignore
|
|
137
141
|
const url = new URL(props.widgetUrlOverride ?? 'https://widget.parafin.com');
|
|
138
142
|
const query = {
|
|
@@ -212,7 +216,7 @@ export const initializeParafinWidget = (iframe, props) => {
|
|
|
212
216
|
}
|
|
213
217
|
break;
|
|
214
218
|
case 'widget-load-complete':
|
|
215
|
-
if (props.onEvent && !hasLoadedOnce) {
|
|
219
|
+
if (props.onEvent && !hasLoadedOnce && !wasEverHidden) {
|
|
216
220
|
const timeToLoadInMs = Date.now() - initStartTime;
|
|
217
221
|
props.onEvent('widget_loaded', { timeToLoadInMs });
|
|
218
222
|
}
|
|
@@ -221,6 +225,15 @@ export const initializeParafinWidget = (iframe, props) => {
|
|
|
221
225
|
}
|
|
222
226
|
}
|
|
223
227
|
};
|
|
228
|
+
const visibilityHandler = () => {
|
|
229
|
+
if (document.hidden) {
|
|
230
|
+
wasEverHidden = true;
|
|
231
|
+
}
|
|
232
|
+
};
|
|
224
233
|
window.addEventListener('message', messageListener);
|
|
225
|
-
|
|
234
|
+
document.addEventListener('visibilitychange', visibilityHandler);
|
|
235
|
+
return () => {
|
|
236
|
+
window.removeEventListener('message', messageListener);
|
|
237
|
+
document.removeEventListener('visibilitychange', visibilityHandler);
|
|
238
|
+
};
|
|
226
239
|
};
|
package/package.json
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parafin/core",
|
|
3
|
-
"version": "3.1
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"description": "Parafin embedded core",
|
|
5
5
|
"author": "Parafin (https://www.parafin.com)",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
6
|
+
"main": "./out/index.js",
|
|
7
|
+
"module": "./out/index.js",
|
|
8
|
+
"types": "./out/index.d.ts",
|
|
9
|
+
"type": "module",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./out/index.d.ts",
|
|
13
|
+
"import": "./out/index.js",
|
|
14
|
+
"default": "./out/index.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
8
17
|
"license": "MIT",
|
|
9
18
|
"scripts": {
|
|
10
19
|
"build": "tsc"
|