@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 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 () => window.removeEventListener('message', messageListener)
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
- return () => window.removeEventListener('message', messageListener);
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.2",
3
+ "version": "3.2.1",
4
4
  "description": "Parafin embedded core",
5
5
  "author": "Parafin (https://www.parafin.com)",
6
- "module": "out/index.js",
7
- "types": "out/index.d.ts",
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"