@parafin/core 3.2.0 → 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.
Files changed (3) hide show
  1. package/index.ts +13 -2
  2. package/out/index.js +12 -2
  3. package/package.json +1 -1
package/index.ts CHANGED
@@ -208,6 +208,7 @@ export const initializeParafinWidget = (
208
208
  ) => {
209
209
  let initStartTime = Date.now()
210
210
  let hasLoadedOnce = false
211
+ let wasEverHidden = document.hidden
211
212
 
212
213
  // @ts-ignore
213
214
  const url = new URL(props.widgetUrlOverride ?? 'https://widget.parafin.com')
@@ -287,7 +288,7 @@ export const initializeParafinWidget = (
287
288
  }
288
289
  break
289
290
  case 'widget-load-complete':
290
- if (props.onEvent && !hasLoadedOnce) {
291
+ if (props.onEvent && !hasLoadedOnce && !wasEverHidden) {
291
292
  const timeToLoadInMs = Date.now() - initStartTime
292
293
  props.onEvent('widget_loaded', { timeToLoadInMs })
293
294
  }
@@ -297,7 +298,17 @@ export const initializeParafinWidget = (
297
298
  }
298
299
  }
299
300
 
301
+ const visibilityHandler = () => {
302
+ if (document.hidden) {
303
+ wasEverHidden = true
304
+ }
305
+ }
306
+
300
307
  window.addEventListener('message', messageListener)
308
+ document.addEventListener('visibilitychange', visibilityHandler)
301
309
 
302
- return () => window.removeEventListener('message', messageListener)
310
+ return () => {
311
+ window.removeEventListener('message', messageListener)
312
+ document.removeEventListener('visibilitychange', visibilityHandler)
313
+ }
303
314
  }
package/out/index.js CHANGED
@@ -136,6 +136,7 @@ const emptyMetadata = {
136
136
  export const initializeParafinWidget = (iframe, props) => {
137
137
  let initStartTime = Date.now();
138
138
  let hasLoadedOnce = false;
139
+ let wasEverHidden = document.hidden;
139
140
  // @ts-ignore
140
141
  const url = new URL(props.widgetUrlOverride ?? 'https://widget.parafin.com');
141
142
  const query = {
@@ -215,7 +216,7 @@ export const initializeParafinWidget = (iframe, props) => {
215
216
  }
216
217
  break;
217
218
  case 'widget-load-complete':
218
- if (props.onEvent && !hasLoadedOnce) {
219
+ if (props.onEvent && !hasLoadedOnce && !wasEverHidden) {
219
220
  const timeToLoadInMs = Date.now() - initStartTime;
220
221
  props.onEvent('widget_loaded', { timeToLoadInMs });
221
222
  }
@@ -224,6 +225,15 @@ export const initializeParafinWidget = (iframe, props) => {
224
225
  }
225
226
  }
226
227
  };
228
+ const visibilityHandler = () => {
229
+ if (document.hidden) {
230
+ wasEverHidden = true;
231
+ }
232
+ };
227
233
  window.addEventListener('message', messageListener);
228
- return () => window.removeEventListener('message', messageListener);
234
+ document.addEventListener('visibilitychange', visibilityHandler);
235
+ return () => {
236
+ window.removeEventListener('message', messageListener);
237
+ document.removeEventListener('visibilitychange', visibilityHandler);
238
+ };
229
239
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parafin/core",
3
- "version": "3.2.0",
3
+ "version": "3.2.1",
4
4
  "description": "Parafin embedded core",
5
5
  "author": "Parafin (https://www.parafin.com)",
6
6
  "main": "./out/index.js",