@folklore/hooks 0.0.20 → 0.0.23

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/dist/cjs.js +46 -37
  2. package/dist/es.js +45 -36
  3. package/package.json +2 -2
package/dist/cjs.js CHANGED
@@ -148,12 +148,14 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
148
148
  setLoaded = _useState6[1];
149
149
 
150
150
  var apiRef = react.useRef(typeof window.DM !== 'undefined' ? window.DM : null);
151
- var elementRef = react.useRef(null);
152
- var playerRef = react.useRef(null);
153
151
  var ready = apiLoaded && playerReady;
154
152
  var videoId = react.useMemo(function () {
155
153
  return getVideoId(id);
156
154
  }, [id]);
155
+ var elementRef = react.useRef(null);
156
+ var playerRef = react.useRef(null);
157
+ var playerElementRef = react.useRef(elementRef.current);
158
+ var elementHasChanged = elementRef.current !== playerElementRef.current;
157
159
 
158
160
  var _useState7 = react.useState(initialMuted),
159
161
  _useState8 = _slicedToArray__default["default"](_useState7, 2),
@@ -190,6 +192,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
190
192
  var canceled = false;
191
193
 
192
194
  if (!apiLoaded && videoId !== null) {
195
+ debug$3('Load API');
193
196
  services.loadDailymotion().then(function (api) {
194
197
  if (!canceled) {
195
198
  apiRef.current = api;
@@ -230,9 +233,10 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
230
233
  var player = currentPlayer;
231
234
 
232
235
  if (player !== null) {
233
- player.load(id, {
236
+ player.load(videoId, {
234
237
  params: playerParams
235
238
  });
239
+ debug$3('Load video [ID: %s]', videoId);
236
240
  } else {
237
241
  player = DM.player(element, {
238
242
  video: videoId,
@@ -240,13 +244,16 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
240
244
  height: height,
241
245
  params: playerParams
242
246
  });
243
- playerRef.current = player;
247
+ debug$3('Create player [ID: %s]', videoId);
244
248
  }
245
249
 
246
250
  if (!playerReady) {
247
251
  setPlayerReady(true);
248
252
  }
249
- }, [apiLoaded, elementRef.current, videoId, width, height, autoplay, muted, start, controls, queueAutoplayNext, queueEnable, sharingEnable, uiLogo, uiStartScreenInfo]);
253
+
254
+ playerRef.current = player;
255
+ playerElementRef.current = element;
256
+ }, [apiLoaded, elementHasChanged, videoId, width, height, autoplay, muted, start, controls, queueAutoplayNext, queueEnable, sharingEnable, uiLogo, uiStartScreenInfo]);
250
257
  react.useEffect(function () {
251
258
  var _playerRef$current2 = playerRef.current,
252
259
  player = _playerRef$current2 === void 0 ? null : _playerRef$current2;
@@ -260,6 +267,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
260
267
 
261
268
  function onPlaybackReady() {
262
269
  setLoaded(true);
270
+ debug$3('onPlaybackReady [ID: %s]', videoId);
263
271
  }
264
272
 
265
273
  function onLoadedMetadata() {
@@ -267,6 +275,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
267
275
  duration: player.duration
268
276
  });
269
277
  setMetadata(currentMetadata);
278
+ debug$3('onLoadedMetadata [ID: %s]', videoId);
270
279
  }
271
280
 
272
281
  function onDurationChange() {
@@ -274,11 +283,13 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
274
283
  duration: player.duration
275
284
  });
276
285
  setMetadata(currentMetadata);
286
+ debug$3('onDurationChange [ID: %s]', videoId);
277
287
  }
278
288
 
279
289
  function onVolumeChange() {
280
290
  setMuted(player.muted);
281
291
  setVolumeState(player.volume);
292
+ debug$3('onVolumeChange [ID: %s]', videoId);
282
293
  }
283
294
 
284
295
  function onPlay() {
@@ -288,6 +299,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
288
299
  ended: false
289
300
  });
290
301
  setPlayState(currentPlayState);
302
+ debug$3('onPlay [ID: %s]', videoId);
291
303
  }
292
304
 
293
305
  function onPause() {
@@ -297,6 +309,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
297
309
  ended: false
298
310
  });
299
311
  setPlayState(currentPlayState);
312
+ debug$3('onPause [ID: %s]', videoId);
300
313
  }
301
314
 
302
315
  function onEnd() {
@@ -306,6 +319,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
306
319
  ended: true
307
320
  });
308
321
  setPlayState(currentPlayState);
322
+ debug$3('onEnd [ID: %s]', videoId);
309
323
  }
310
324
 
311
325
  function onPlaying() {
@@ -313,6 +327,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
313
327
  buffering: false
314
328
  });
315
329
  setPlayState(currentPlayState);
330
+ debug$3('onPlaying [ID: %s]', videoId);
316
331
  }
317
332
 
318
333
  function onWaiting() {
@@ -320,6 +335,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
320
335
  buffering: true
321
336
  });
322
337
  setPlayState(currentPlayState);
338
+ debug$3('onWaiting [ID: %s]', videoId);
323
339
  }
324
340
 
325
341
  function onAdStart() {
@@ -327,6 +343,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
327
343
  adPlaying: true
328
344
  });
329
345
  setPlayState(currentPlayState);
346
+ debug$3('onAdStart [ID: %s]', videoId);
330
347
  }
331
348
 
332
349
  function onAdEnd() {
@@ -334,6 +351,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
334
351
  adPlaying: false
335
352
  });
336
353
  setPlayState(currentPlayState);
354
+ debug$3('onAdEnd [ID: %s]', videoId);
337
355
  }
338
356
 
339
357
  player.addEventListener('playback_ready', onPlaybackReady);
@@ -409,33 +427,19 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
409
427
  }, metadata), playState);
410
428
  };
411
429
 
412
- var eventsManager$1 = typeof document !== 'undefined' ? new EventsManager__default["default"](document) : null;
413
-
414
- var useDocumentEvent = function useDocumentEvent(event, callback) {
415
- react.useEffect(function () {
416
- if (eventsManager$1 !== null && callback !== null) {
417
- eventsManager$1.subscribe(event, callback);
418
- }
419
-
420
- return function () {
421
- if (eventsManager$1 !== null && callback !== null) {
422
- eventsManager$1.unsubscribe(event, callback);
423
- }
424
- };
425
- }, [event, callback]);
426
- };
430
+ var documentEventsManager = typeof document !== 'undefined' ? new EventsManager__default["default"](document) : null;
427
431
 
428
- var eventsManager = typeof window !== 'undefined' ? new EventsManager__default["default"](window) : null;
432
+ var windowEventsManager = typeof window !== 'undefined' ? new EventsManager__default["default"](window) : null;
429
433
 
430
434
  var useWindowEvent = function useWindowEvent(event, callback) {
431
435
  react.useEffect(function () {
432
- if (eventsManager !== null && callback !== null) {
433
- eventsManager.subscribe(event, callback);
436
+ if (windowEventsManager !== null && callback !== null) {
437
+ windowEventsManager.subscribe(event, callback);
434
438
  }
435
439
 
436
440
  return function () {
437
- if (eventsManager !== null && callback !== null) {
438
- eventsManager.unsubscribe(event, callback);
441
+ if (windowEventsManager !== null && callback !== null) {
442
+ windowEventsManager.unsubscribe(event, callback);
439
443
  }
440
444
  };
441
445
  }, [event, callback]);
@@ -952,6 +956,7 @@ function useYouTubePlayer(id) {
952
956
  var elementRef = react.useRef(null);
953
957
  var playerRef = react.useRef(null);
954
958
  var playerElementRef = react.useRef(elementRef.current);
959
+ var elementHasChanged = elementRef.current !== playerElementRef.current;
955
960
  var videoId = react.useMemo(function () {
956
961
  return getVideoId(id);
957
962
  }, [id]);
@@ -989,6 +994,7 @@ function useYouTubePlayer(id) {
989
994
  var canceled = false;
990
995
 
991
996
  if (!apiLoaded && videoId !== null) {
997
+ debug$1('Load API');
992
998
  services.loadYouTube().then(function (api) {
993
999
  if (!canceled) {
994
1000
  apiRef.current = api;
@@ -1054,7 +1060,7 @@ function useYouTubePlayer(id) {
1054
1060
  debug$1('iFrame switched');
1055
1061
  destroyPlayer();
1056
1062
  }
1057
- }, [playerElementRef.current, elementRef.current, playerRef.current]); // Create player
1063
+ }, [elementHasChanged]); // Create player
1058
1064
 
1059
1065
  react.useEffect(function () {
1060
1066
  var _apiRef$current = apiRef.current,
@@ -1076,7 +1082,6 @@ function useYouTubePlayer(id) {
1076
1082
  player.loadVideoById(videoId);
1077
1083
  } else {
1078
1084
  debug$1('Create player [ID: %s]', videoId);
1079
- var iframe = elementRef.current;
1080
1085
 
1081
1086
  var onReady = function onReady(_ref2) {
1082
1087
  var target = _ref2.target;
@@ -1122,7 +1127,7 @@ function useYouTubePlayer(id) {
1122
1127
  debug$1('onStateChange %s [ID: %s]', stateLabel, videoId);
1123
1128
  };
1124
1129
 
1125
- player = new YT.Player(iframe, {
1130
+ player = new YT.Player(element, {
1126
1131
  videoId: videoId,
1127
1132
  playerVars: {
1128
1133
  controls: controls,
@@ -1138,11 +1143,11 @@ function useYouTubePlayer(id) {
1138
1143
  onStateChange: onStateChange
1139
1144
  }
1140
1145
  });
1141
- playerElementRef.current = iframe;
1142
1146
  }
1143
1147
 
1144
1148
  playerRef.current = player;
1145
- }, [apiLoaded, videoId, elementRef.current, setPlayState, setReady, setMetadata, destroyPlayer]);
1149
+ playerElementRef.current = element;
1150
+ }, [apiLoaded, videoId, elementHasChanged, setPlayState, setReady, setMetadata, destroyPlayer]);
1146
1151
  var playing = playState.playing;
1147
1152
  var getCurrentTime = react.useCallback(function (p) {
1148
1153
  return p.getCurrentTime();
@@ -1217,6 +1222,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1217
1222
  var apiRef = react.useRef(null);
1218
1223
  var elementRef = react.useRef(null);
1219
1224
  var playerRef = react.useRef(null);
1225
+ var playerElementRef = react.useRef(elementRef.current);
1226
+ var elementHasChanged = elementRef.current !== playerElementRef.current;
1220
1227
  var videoId = react.useMemo(function () {
1221
1228
  return getVideoId(id);
1222
1229
  }, [id]);
@@ -1260,6 +1267,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1260
1267
  var canceled = false;
1261
1268
 
1262
1269
  if (!apiLoaded && id !== null) {
1270
+ debug('Load API');
1263
1271
  services.loadVimeo().then(function (api) {
1264
1272
  if (!canceled) {
1265
1273
  apiRef.current = api;
@@ -1314,7 +1322,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1314
1322
  playerRef.current = null;
1315
1323
  }
1316
1324
  }, []);
1317
- var playerElementRef = react.useRef(elementRef.current);
1318
1325
  react.useEffect(function () {
1319
1326
  var currentPlayer = playerRef.current;
1320
1327
 
@@ -1322,7 +1329,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1322
1329
  debug('iFrame switched');
1323
1330
  destroyVideo();
1324
1331
  }
1325
- }); // Create player
1332
+ }, [elementHasChanged]); // Create player
1326
1333
 
1327
1334
  react.useEffect(function () {
1328
1335
  var _apiRef$current = apiRef.current,
@@ -1355,7 +1362,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1355
1362
  }).catch(function (e) {
1356
1363
  debug('ERROR: %o', e);
1357
1364
  });
1358
- playerElementRef.current = element;
1359
1365
  } else {
1360
1366
  debug('Load video [ID: %s]', videoId);
1361
1367
  player.loadVideo(videoId).catch(function (e) {
@@ -1364,7 +1370,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1364
1370
  }
1365
1371
 
1366
1372
  playerRef.current = player;
1367
- }, [apiLoaded, videoId, elementRef.current, setReady, destroyVideo, setLoaded]); // Bind player events
1373
+ playerElementRef.current = element;
1374
+ }, [apiLoaded, videoId, elementHasChanged, setReady, destroyVideo, setLoaded]); // Bind player events
1368
1375
 
1369
1376
  react.useEffect(function () {
1370
1377
  var player = playerRef.current;
@@ -1430,7 +1437,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1430
1437
 
1431
1438
  var onVolumeChange = function onVolumeChange(_ref4) {
1432
1439
  var newVolume = _ref4.volume;
1433
- return setVolumeState(newVolume);
1440
+ setVolumeState(newVolume);
1441
+ debug('onVolumeChange [ID: %s]', videoId);
1434
1442
  };
1435
1443
 
1436
1444
  var onEnded = function onEnded() {
@@ -1440,6 +1448,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1440
1448
  ended: true,
1441
1449
  buffering: false
1442
1450
  });
1451
+ debug('onEnded [ID: %s]', videoId);
1443
1452
  };
1444
1453
 
1445
1454
  var onBufferStart = function onBufferStart() {
@@ -1609,9 +1618,9 @@ function useVideoPlayer(params) {
1609
1618
  return player;
1610
1619
  }
1611
1620
 
1621
+ exports.documentEventsManager = documentEventsManager;
1612
1622
  exports.getObserver = getObserver;
1613
1623
  exports.useDailymotionPlayer = useDailymotionPlayer;
1614
- exports.useDocumentEvent = useDocumentEvent;
1615
1624
  exports.useIntersectionObserver = useIntersectionObserver;
1616
1625
  exports.useKeyboard = useKeyboard;
1617
1626
  exports.useNativeVideoPlayer = useNativeVideoPlayer;
@@ -1620,5 +1629,5 @@ exports.usePlayerCurrentTime = usePlayerCurrentTime;
1620
1629
  exports.useResizeObserver = useResizeObserver;
1621
1630
  exports.useVideoPlayer = useVideoPlayer;
1622
1631
  exports.useVimeoPlayer = useVimeoPlayer;
1623
- exports.useWindowEvent = useWindowEvent;
1624
1632
  exports.useYouTubePlayer = useYouTubePlayer;
1633
+ exports.windowEventsManager = windowEventsManager;
package/dist/es.js CHANGED
@@ -136,12 +136,14 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
136
136
  setLoaded = _useState6[1];
137
137
 
138
138
  var apiRef = useRef(typeof window.DM !== 'undefined' ? window.DM : null);
139
- var elementRef = useRef(null);
140
- var playerRef = useRef(null);
141
139
  var ready = apiLoaded && playerReady;
142
140
  var videoId = useMemo(function () {
143
141
  return getVideoId(id);
144
142
  }, [id]);
143
+ var elementRef = useRef(null);
144
+ var playerRef = useRef(null);
145
+ var playerElementRef = useRef(elementRef.current);
146
+ var elementHasChanged = elementRef.current !== playerElementRef.current;
145
147
 
146
148
  var _useState7 = useState(initialMuted),
147
149
  _useState8 = _slicedToArray(_useState7, 2),
@@ -178,6 +180,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
178
180
  var canceled = false;
179
181
 
180
182
  if (!apiLoaded && videoId !== null) {
183
+ debug$3('Load API');
181
184
  loadDailymotion().then(function (api) {
182
185
  if (!canceled) {
183
186
  apiRef.current = api;
@@ -218,9 +221,10 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
218
221
  var player = currentPlayer;
219
222
 
220
223
  if (player !== null) {
221
- player.load(id, {
224
+ player.load(videoId, {
222
225
  params: playerParams
223
226
  });
227
+ debug$3('Load video [ID: %s]', videoId);
224
228
  } else {
225
229
  player = DM.player(element, {
226
230
  video: videoId,
@@ -228,13 +232,16 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
228
232
  height: height,
229
233
  params: playerParams
230
234
  });
231
- playerRef.current = player;
235
+ debug$3('Create player [ID: %s]', videoId);
232
236
  }
233
237
 
234
238
  if (!playerReady) {
235
239
  setPlayerReady(true);
236
240
  }
237
- }, [apiLoaded, elementRef.current, videoId, width, height, autoplay, muted, start, controls, queueAutoplayNext, queueEnable, sharingEnable, uiLogo, uiStartScreenInfo]);
241
+
242
+ playerRef.current = player;
243
+ playerElementRef.current = element;
244
+ }, [apiLoaded, elementHasChanged, videoId, width, height, autoplay, muted, start, controls, queueAutoplayNext, queueEnable, sharingEnable, uiLogo, uiStartScreenInfo]);
238
245
  useEffect(function () {
239
246
  var _playerRef$current2 = playerRef.current,
240
247
  player = _playerRef$current2 === void 0 ? null : _playerRef$current2;
@@ -248,6 +255,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
248
255
 
249
256
  function onPlaybackReady() {
250
257
  setLoaded(true);
258
+ debug$3('onPlaybackReady [ID: %s]', videoId);
251
259
  }
252
260
 
253
261
  function onLoadedMetadata() {
@@ -255,6 +263,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
255
263
  duration: player.duration
256
264
  });
257
265
  setMetadata(currentMetadata);
266
+ debug$3('onLoadedMetadata [ID: %s]', videoId);
258
267
  }
259
268
 
260
269
  function onDurationChange() {
@@ -262,11 +271,13 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
262
271
  duration: player.duration
263
272
  });
264
273
  setMetadata(currentMetadata);
274
+ debug$3('onDurationChange [ID: %s]', videoId);
265
275
  }
266
276
 
267
277
  function onVolumeChange() {
268
278
  setMuted(player.muted);
269
279
  setVolumeState(player.volume);
280
+ debug$3('onVolumeChange [ID: %s]', videoId);
270
281
  }
271
282
 
272
283
  function onPlay() {
@@ -276,6 +287,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
276
287
  ended: false
277
288
  });
278
289
  setPlayState(currentPlayState);
290
+ debug$3('onPlay [ID: %s]', videoId);
279
291
  }
280
292
 
281
293
  function onPause() {
@@ -285,6 +297,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
285
297
  ended: false
286
298
  });
287
299
  setPlayState(currentPlayState);
300
+ debug$3('onPause [ID: %s]', videoId);
288
301
  }
289
302
 
290
303
  function onEnd() {
@@ -294,6 +307,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
294
307
  ended: true
295
308
  });
296
309
  setPlayState(currentPlayState);
310
+ debug$3('onEnd [ID: %s]', videoId);
297
311
  }
298
312
 
299
313
  function onPlaying() {
@@ -301,6 +315,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
301
315
  buffering: false
302
316
  });
303
317
  setPlayState(currentPlayState);
318
+ debug$3('onPlaying [ID: %s]', videoId);
304
319
  }
305
320
 
306
321
  function onWaiting() {
@@ -308,6 +323,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
308
323
  buffering: true
309
324
  });
310
325
  setPlayState(currentPlayState);
326
+ debug$3('onWaiting [ID: %s]', videoId);
311
327
  }
312
328
 
313
329
  function onAdStart() {
@@ -315,6 +331,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
315
331
  adPlaying: true
316
332
  });
317
333
  setPlayState(currentPlayState);
334
+ debug$3('onAdStart [ID: %s]', videoId);
318
335
  }
319
336
 
320
337
  function onAdEnd() {
@@ -322,6 +339,7 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
322
339
  adPlaying: false
323
340
  });
324
341
  setPlayState(currentPlayState);
342
+ debug$3('onAdEnd [ID: %s]', videoId);
325
343
  }
326
344
 
327
345
  player.addEventListener('playback_ready', onPlaybackReady);
@@ -397,33 +415,19 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
397
415
  }, metadata), playState);
398
416
  };
399
417
 
400
- var eventsManager$1 = typeof document !== 'undefined' ? new EventsManager(document) : null;
401
-
402
- var useDocumentEvent = function useDocumentEvent(event, callback) {
403
- useEffect(function () {
404
- if (eventsManager$1 !== null && callback !== null) {
405
- eventsManager$1.subscribe(event, callback);
406
- }
407
-
408
- return function () {
409
- if (eventsManager$1 !== null && callback !== null) {
410
- eventsManager$1.unsubscribe(event, callback);
411
- }
412
- };
413
- }, [event, callback]);
414
- };
418
+ var documentEventsManager = typeof document !== 'undefined' ? new EventsManager(document) : null;
415
419
 
416
- var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
420
+ var windowEventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
417
421
 
418
422
  var useWindowEvent = function useWindowEvent(event, callback) {
419
423
  useEffect(function () {
420
- if (eventsManager !== null && callback !== null) {
421
- eventsManager.subscribe(event, callback);
424
+ if (windowEventsManager !== null && callback !== null) {
425
+ windowEventsManager.subscribe(event, callback);
422
426
  }
423
427
 
424
428
  return function () {
425
- if (eventsManager !== null && callback !== null) {
426
- eventsManager.unsubscribe(event, callback);
429
+ if (windowEventsManager !== null && callback !== null) {
430
+ windowEventsManager.unsubscribe(event, callback);
427
431
  }
428
432
  };
429
433
  }, [event, callback]);
@@ -940,6 +944,7 @@ function useYouTubePlayer(id) {
940
944
  var elementRef = useRef(null);
941
945
  var playerRef = useRef(null);
942
946
  var playerElementRef = useRef(elementRef.current);
947
+ var elementHasChanged = elementRef.current !== playerElementRef.current;
943
948
  var videoId = useMemo(function () {
944
949
  return getVideoId(id);
945
950
  }, [id]);
@@ -977,6 +982,7 @@ function useYouTubePlayer(id) {
977
982
  var canceled = false;
978
983
 
979
984
  if (!apiLoaded && videoId !== null) {
985
+ debug$1('Load API');
980
986
  loadYouTube().then(function (api) {
981
987
  if (!canceled) {
982
988
  apiRef.current = api;
@@ -1042,7 +1048,7 @@ function useYouTubePlayer(id) {
1042
1048
  debug$1('iFrame switched');
1043
1049
  destroyPlayer();
1044
1050
  }
1045
- }, [playerElementRef.current, elementRef.current, playerRef.current]); // Create player
1051
+ }, [elementHasChanged]); // Create player
1046
1052
 
1047
1053
  useEffect(function () {
1048
1054
  var _apiRef$current = apiRef.current,
@@ -1064,7 +1070,6 @@ function useYouTubePlayer(id) {
1064
1070
  player.loadVideoById(videoId);
1065
1071
  } else {
1066
1072
  debug$1('Create player [ID: %s]', videoId);
1067
- var iframe = elementRef.current;
1068
1073
 
1069
1074
  var onReady = function onReady(_ref2) {
1070
1075
  var target = _ref2.target;
@@ -1110,7 +1115,7 @@ function useYouTubePlayer(id) {
1110
1115
  debug$1('onStateChange %s [ID: %s]', stateLabel, videoId);
1111
1116
  };
1112
1117
 
1113
- player = new YT.Player(iframe, {
1118
+ player = new YT.Player(element, {
1114
1119
  videoId: videoId,
1115
1120
  playerVars: {
1116
1121
  controls: controls,
@@ -1126,11 +1131,11 @@ function useYouTubePlayer(id) {
1126
1131
  onStateChange: onStateChange
1127
1132
  }
1128
1133
  });
1129
- playerElementRef.current = iframe;
1130
1134
  }
1131
1135
 
1132
1136
  playerRef.current = player;
1133
- }, [apiLoaded, videoId, elementRef.current, setPlayState, setReady, setMetadata, destroyPlayer]);
1137
+ playerElementRef.current = element;
1138
+ }, [apiLoaded, videoId, elementHasChanged, setPlayState, setReady, setMetadata, destroyPlayer]);
1134
1139
  var playing = playState.playing;
1135
1140
  var getCurrentTime = useCallback(function (p) {
1136
1141
  return p.getCurrentTime();
@@ -1205,6 +1210,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1205
1210
  var apiRef = useRef(null);
1206
1211
  var elementRef = useRef(null);
1207
1212
  var playerRef = useRef(null);
1213
+ var playerElementRef = useRef(elementRef.current);
1214
+ var elementHasChanged = elementRef.current !== playerElementRef.current;
1208
1215
  var videoId = useMemo(function () {
1209
1216
  return getVideoId(id);
1210
1217
  }, [id]);
@@ -1248,6 +1255,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1248
1255
  var canceled = false;
1249
1256
 
1250
1257
  if (!apiLoaded && id !== null) {
1258
+ debug('Load API');
1251
1259
  loadVimeo().then(function (api) {
1252
1260
  if (!canceled) {
1253
1261
  apiRef.current = api;
@@ -1302,7 +1310,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1302
1310
  playerRef.current = null;
1303
1311
  }
1304
1312
  }, []);
1305
- var playerElementRef = useRef(elementRef.current);
1306
1313
  useEffect(function () {
1307
1314
  var currentPlayer = playerRef.current;
1308
1315
 
@@ -1310,7 +1317,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1310
1317
  debug('iFrame switched');
1311
1318
  destroyVideo();
1312
1319
  }
1313
- }); // Create player
1320
+ }, [elementHasChanged]); // Create player
1314
1321
 
1315
1322
  useEffect(function () {
1316
1323
  var _apiRef$current = apiRef.current,
@@ -1343,7 +1350,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1343
1350
  }).catch(function (e) {
1344
1351
  debug('ERROR: %o', e);
1345
1352
  });
1346
- playerElementRef.current = element;
1347
1353
  } else {
1348
1354
  debug('Load video [ID: %s]', videoId);
1349
1355
  player.loadVideo(videoId).catch(function (e) {
@@ -1352,7 +1358,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1352
1358
  }
1353
1359
 
1354
1360
  playerRef.current = player;
1355
- }, [apiLoaded, videoId, elementRef.current, setReady, destroyVideo, setLoaded]); // Bind player events
1361
+ playerElementRef.current = element;
1362
+ }, [apiLoaded, videoId, elementHasChanged, setReady, destroyVideo, setLoaded]); // Bind player events
1356
1363
 
1357
1364
  useEffect(function () {
1358
1365
  var player = playerRef.current;
@@ -1418,7 +1425,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1418
1425
 
1419
1426
  var onVolumeChange = function onVolumeChange(_ref4) {
1420
1427
  var newVolume = _ref4.volume;
1421
- return setVolumeState(newVolume);
1428
+ setVolumeState(newVolume);
1429
+ debug('onVolumeChange [ID: %s]', videoId);
1422
1430
  };
1423
1431
 
1424
1432
  var onEnded = function onEnded() {
@@ -1428,6 +1436,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1428
1436
  ended: true,
1429
1437
  buffering: false
1430
1438
  });
1439
+ debug('onEnded [ID: %s]', videoId);
1431
1440
  };
1432
1441
 
1433
1442
  var onBufferStart = function onBufferStart() {
@@ -1597,4 +1606,4 @@ function useVideoPlayer(params) {
1597
1606
  return player;
1598
1607
  }
1599
1608
 
1600
- export { getObserver, useDailymotionPlayer, useDocumentEvent, useIntersectionObserver, useKeyboard, useNativeVideoPlayer, useObserver, usePlayerCurrentTime, useResizeObserver, useVideoPlayer, useVimeoPlayer, useWindowEvent, useYouTubePlayer };
1609
+ export { documentEventsManager, getObserver, useDailymotionPlayer, useIntersectionObserver, useKeyboard, useNativeVideoPlayer, useObserver, usePlayerCurrentTime, useResizeObserver, useVideoPlayer, useVimeoPlayer, useYouTubePlayer, windowEventsManager };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@folklore/hooks",
3
- "version": "0.0.20",
3
+ "version": "0.0.23",
4
4
  "description": "React hooks",
5
5
  "keywords": [
6
6
  "javascript",
@@ -48,7 +48,7 @@
48
48
  "publishConfig": {
49
49
  "access": "public"
50
50
  },
51
- "gitHead": "f7c4b93417b9b7d4b531ea1f79e992e77e1da0ae",
51
+ "gitHead": "85e1b0e9e6ddd91680edabaeeb7f252400adbb92",
52
52
  "dependencies": {
53
53
  "@folklore/events": "^0.0.3",
54
54
  "@folklore/services": "^0.1.36",