@folklore/hooks 0.0.19 → 0.0.22
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/cjs.js +39 -16
- package/dist/es.js +39 -16
- 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(
|
|
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
|
-
|
|
247
|
+
debug$3('Create player [ID: %s]', videoId);
|
|
244
248
|
}
|
|
245
249
|
|
|
246
250
|
if (!playerReady) {
|
|
247
251
|
setPlayerReady(true);
|
|
248
252
|
}
|
|
249
|
-
|
|
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);
|
|
@@ -952,6 +970,7 @@ function useYouTubePlayer(id) {
|
|
|
952
970
|
var elementRef = react.useRef(null);
|
|
953
971
|
var playerRef = react.useRef(null);
|
|
954
972
|
var playerElementRef = react.useRef(elementRef.current);
|
|
973
|
+
var elementHasChanged = elementRef.current !== playerElementRef.current;
|
|
955
974
|
var videoId = react.useMemo(function () {
|
|
956
975
|
return getVideoId(id);
|
|
957
976
|
}, [id]);
|
|
@@ -989,6 +1008,7 @@ function useYouTubePlayer(id) {
|
|
|
989
1008
|
var canceled = false;
|
|
990
1009
|
|
|
991
1010
|
if (!apiLoaded && videoId !== null) {
|
|
1011
|
+
debug$1('Load API');
|
|
992
1012
|
services.loadYouTube().then(function (api) {
|
|
993
1013
|
if (!canceled) {
|
|
994
1014
|
apiRef.current = api;
|
|
@@ -1054,7 +1074,7 @@ function useYouTubePlayer(id) {
|
|
|
1054
1074
|
debug$1('iFrame switched');
|
|
1055
1075
|
destroyPlayer();
|
|
1056
1076
|
}
|
|
1057
|
-
}); // Create player
|
|
1077
|
+
}, [elementHasChanged]); // Create player
|
|
1058
1078
|
|
|
1059
1079
|
react.useEffect(function () {
|
|
1060
1080
|
var _apiRef$current = apiRef.current,
|
|
@@ -1071,12 +1091,11 @@ function useYouTubePlayer(id) {
|
|
|
1071
1091
|
|
|
1072
1092
|
var player = currentPlayer;
|
|
1073
1093
|
|
|
1074
|
-
if (player !== null) {
|
|
1094
|
+
if (player !== null && typeof player.loadVideoById !== 'undefined') {
|
|
1075
1095
|
debug$1('Switch video [ID: %s]', videoId);
|
|
1076
1096
|
player.loadVideoById(videoId);
|
|
1077
1097
|
} else {
|
|
1078
1098
|
debug$1('Create player [ID: %s]', videoId);
|
|
1079
|
-
var iframe = elementRef.current;
|
|
1080
1099
|
|
|
1081
1100
|
var onReady = function onReady(_ref2) {
|
|
1082
1101
|
var target = _ref2.target;
|
|
@@ -1122,7 +1141,7 @@ function useYouTubePlayer(id) {
|
|
|
1122
1141
|
debug$1('onStateChange %s [ID: %s]', stateLabel, videoId);
|
|
1123
1142
|
};
|
|
1124
1143
|
|
|
1125
|
-
player = new YT.Player(
|
|
1144
|
+
player = new YT.Player(element, {
|
|
1126
1145
|
videoId: videoId,
|
|
1127
1146
|
playerVars: {
|
|
1128
1147
|
controls: controls,
|
|
@@ -1138,11 +1157,11 @@ function useYouTubePlayer(id) {
|
|
|
1138
1157
|
onStateChange: onStateChange
|
|
1139
1158
|
}
|
|
1140
1159
|
});
|
|
1141
|
-
playerElementRef.current = iframe;
|
|
1142
1160
|
}
|
|
1143
1161
|
|
|
1144
1162
|
playerRef.current = player;
|
|
1145
|
-
|
|
1163
|
+
playerElementRef.current = element;
|
|
1164
|
+
}, [apiLoaded, videoId, elementHasChanged, setPlayState, setReady, setMetadata, destroyPlayer]);
|
|
1146
1165
|
var playing = playState.playing;
|
|
1147
1166
|
var getCurrentTime = react.useCallback(function (p) {
|
|
1148
1167
|
return p.getCurrentTime();
|
|
@@ -1217,6 +1236,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1217
1236
|
var apiRef = react.useRef(null);
|
|
1218
1237
|
var elementRef = react.useRef(null);
|
|
1219
1238
|
var playerRef = react.useRef(null);
|
|
1239
|
+
var playerElementRef = react.useRef(elementRef.current);
|
|
1240
|
+
var elementHasChanged = elementRef.current !== playerElementRef.current;
|
|
1220
1241
|
var videoId = react.useMemo(function () {
|
|
1221
1242
|
return getVideoId(id);
|
|
1222
1243
|
}, [id]);
|
|
@@ -1260,6 +1281,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1260
1281
|
var canceled = false;
|
|
1261
1282
|
|
|
1262
1283
|
if (!apiLoaded && id !== null) {
|
|
1284
|
+
debug('Load API');
|
|
1263
1285
|
services.loadVimeo().then(function (api) {
|
|
1264
1286
|
if (!canceled) {
|
|
1265
1287
|
apiRef.current = api;
|
|
@@ -1314,7 +1336,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1314
1336
|
playerRef.current = null;
|
|
1315
1337
|
}
|
|
1316
1338
|
}, []);
|
|
1317
|
-
var playerElementRef = react.useRef(elementRef.current);
|
|
1318
1339
|
react.useEffect(function () {
|
|
1319
1340
|
var currentPlayer = playerRef.current;
|
|
1320
1341
|
|
|
@@ -1322,7 +1343,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1322
1343
|
debug('iFrame switched');
|
|
1323
1344
|
destroyVideo();
|
|
1324
1345
|
}
|
|
1325
|
-
}); // Create player
|
|
1346
|
+
}, [elementHasChanged]); // Create player
|
|
1326
1347
|
|
|
1327
1348
|
react.useEffect(function () {
|
|
1328
1349
|
var _apiRef$current = apiRef.current,
|
|
@@ -1355,7 +1376,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1355
1376
|
}).catch(function (e) {
|
|
1356
1377
|
debug('ERROR: %o', e);
|
|
1357
1378
|
});
|
|
1358
|
-
playerElementRef.current = element;
|
|
1359
1379
|
} else {
|
|
1360
1380
|
debug('Load video [ID: %s]', videoId);
|
|
1361
1381
|
player.loadVideo(videoId).catch(function (e) {
|
|
@@ -1364,7 +1384,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1364
1384
|
}
|
|
1365
1385
|
|
|
1366
1386
|
playerRef.current = player;
|
|
1367
|
-
|
|
1387
|
+
playerElementRef.current = element;
|
|
1388
|
+
}, [apiLoaded, videoId, elementHasChanged, setReady, destroyVideo, setLoaded]); // Bind player events
|
|
1368
1389
|
|
|
1369
1390
|
react.useEffect(function () {
|
|
1370
1391
|
var player = playerRef.current;
|
|
@@ -1430,7 +1451,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1430
1451
|
|
|
1431
1452
|
var onVolumeChange = function onVolumeChange(_ref4) {
|
|
1432
1453
|
var newVolume = _ref4.volume;
|
|
1433
|
-
|
|
1454
|
+
setVolumeState(newVolume);
|
|
1455
|
+
debug('onVolumeChange [ID: %s]', videoId);
|
|
1434
1456
|
};
|
|
1435
1457
|
|
|
1436
1458
|
var onEnded = function onEnded() {
|
|
@@ -1440,6 +1462,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1440
1462
|
ended: true,
|
|
1441
1463
|
buffering: false
|
|
1442
1464
|
});
|
|
1465
|
+
debug('onEnded [ID: %s]', videoId);
|
|
1443
1466
|
};
|
|
1444
1467
|
|
|
1445
1468
|
var onBufferStart = function onBufferStart() {
|
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(
|
|
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
|
-
|
|
235
|
+
debug$3('Create player [ID: %s]', videoId);
|
|
232
236
|
}
|
|
233
237
|
|
|
234
238
|
if (!playerReady) {
|
|
235
239
|
setPlayerReady(true);
|
|
236
240
|
}
|
|
237
|
-
|
|
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);
|
|
@@ -940,6 +958,7 @@ function useYouTubePlayer(id) {
|
|
|
940
958
|
var elementRef = useRef(null);
|
|
941
959
|
var playerRef = useRef(null);
|
|
942
960
|
var playerElementRef = useRef(elementRef.current);
|
|
961
|
+
var elementHasChanged = elementRef.current !== playerElementRef.current;
|
|
943
962
|
var videoId = useMemo(function () {
|
|
944
963
|
return getVideoId(id);
|
|
945
964
|
}, [id]);
|
|
@@ -977,6 +996,7 @@ function useYouTubePlayer(id) {
|
|
|
977
996
|
var canceled = false;
|
|
978
997
|
|
|
979
998
|
if (!apiLoaded && videoId !== null) {
|
|
999
|
+
debug$1('Load API');
|
|
980
1000
|
loadYouTube().then(function (api) {
|
|
981
1001
|
if (!canceled) {
|
|
982
1002
|
apiRef.current = api;
|
|
@@ -1042,7 +1062,7 @@ function useYouTubePlayer(id) {
|
|
|
1042
1062
|
debug$1('iFrame switched');
|
|
1043
1063
|
destroyPlayer();
|
|
1044
1064
|
}
|
|
1045
|
-
}); // Create player
|
|
1065
|
+
}, [elementHasChanged]); // Create player
|
|
1046
1066
|
|
|
1047
1067
|
useEffect(function () {
|
|
1048
1068
|
var _apiRef$current = apiRef.current,
|
|
@@ -1059,12 +1079,11 @@ function useYouTubePlayer(id) {
|
|
|
1059
1079
|
|
|
1060
1080
|
var player = currentPlayer;
|
|
1061
1081
|
|
|
1062
|
-
if (player !== null) {
|
|
1082
|
+
if (player !== null && typeof player.loadVideoById !== 'undefined') {
|
|
1063
1083
|
debug$1('Switch video [ID: %s]', videoId);
|
|
1064
1084
|
player.loadVideoById(videoId);
|
|
1065
1085
|
} else {
|
|
1066
1086
|
debug$1('Create player [ID: %s]', videoId);
|
|
1067
|
-
var iframe = elementRef.current;
|
|
1068
1087
|
|
|
1069
1088
|
var onReady = function onReady(_ref2) {
|
|
1070
1089
|
var target = _ref2.target;
|
|
@@ -1110,7 +1129,7 @@ function useYouTubePlayer(id) {
|
|
|
1110
1129
|
debug$1('onStateChange %s [ID: %s]', stateLabel, videoId);
|
|
1111
1130
|
};
|
|
1112
1131
|
|
|
1113
|
-
player = new YT.Player(
|
|
1132
|
+
player = new YT.Player(element, {
|
|
1114
1133
|
videoId: videoId,
|
|
1115
1134
|
playerVars: {
|
|
1116
1135
|
controls: controls,
|
|
@@ -1126,11 +1145,11 @@ function useYouTubePlayer(id) {
|
|
|
1126
1145
|
onStateChange: onStateChange
|
|
1127
1146
|
}
|
|
1128
1147
|
});
|
|
1129
|
-
playerElementRef.current = iframe;
|
|
1130
1148
|
}
|
|
1131
1149
|
|
|
1132
1150
|
playerRef.current = player;
|
|
1133
|
-
|
|
1151
|
+
playerElementRef.current = element;
|
|
1152
|
+
}, [apiLoaded, videoId, elementHasChanged, setPlayState, setReady, setMetadata, destroyPlayer]);
|
|
1134
1153
|
var playing = playState.playing;
|
|
1135
1154
|
var getCurrentTime = useCallback(function (p) {
|
|
1136
1155
|
return p.getCurrentTime();
|
|
@@ -1205,6 +1224,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1205
1224
|
var apiRef = useRef(null);
|
|
1206
1225
|
var elementRef = useRef(null);
|
|
1207
1226
|
var playerRef = useRef(null);
|
|
1227
|
+
var playerElementRef = useRef(elementRef.current);
|
|
1228
|
+
var elementHasChanged = elementRef.current !== playerElementRef.current;
|
|
1208
1229
|
var videoId = useMemo(function () {
|
|
1209
1230
|
return getVideoId(id);
|
|
1210
1231
|
}, [id]);
|
|
@@ -1248,6 +1269,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1248
1269
|
var canceled = false;
|
|
1249
1270
|
|
|
1250
1271
|
if (!apiLoaded && id !== null) {
|
|
1272
|
+
debug('Load API');
|
|
1251
1273
|
loadVimeo().then(function (api) {
|
|
1252
1274
|
if (!canceled) {
|
|
1253
1275
|
apiRef.current = api;
|
|
@@ -1302,7 +1324,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1302
1324
|
playerRef.current = null;
|
|
1303
1325
|
}
|
|
1304
1326
|
}, []);
|
|
1305
|
-
var playerElementRef = useRef(elementRef.current);
|
|
1306
1327
|
useEffect(function () {
|
|
1307
1328
|
var currentPlayer = playerRef.current;
|
|
1308
1329
|
|
|
@@ -1310,7 +1331,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1310
1331
|
debug('iFrame switched');
|
|
1311
1332
|
destroyVideo();
|
|
1312
1333
|
}
|
|
1313
|
-
}); // Create player
|
|
1334
|
+
}, [elementHasChanged]); // Create player
|
|
1314
1335
|
|
|
1315
1336
|
useEffect(function () {
|
|
1316
1337
|
var _apiRef$current = apiRef.current,
|
|
@@ -1343,7 +1364,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1343
1364
|
}).catch(function (e) {
|
|
1344
1365
|
debug('ERROR: %o', e);
|
|
1345
1366
|
});
|
|
1346
|
-
playerElementRef.current = element;
|
|
1347
1367
|
} else {
|
|
1348
1368
|
debug('Load video [ID: %s]', videoId);
|
|
1349
1369
|
player.loadVideo(videoId).catch(function (e) {
|
|
@@ -1352,7 +1372,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1352
1372
|
}
|
|
1353
1373
|
|
|
1354
1374
|
playerRef.current = player;
|
|
1355
|
-
|
|
1375
|
+
playerElementRef.current = element;
|
|
1376
|
+
}, [apiLoaded, videoId, elementHasChanged, setReady, destroyVideo, setLoaded]); // Bind player events
|
|
1356
1377
|
|
|
1357
1378
|
useEffect(function () {
|
|
1358
1379
|
var player = playerRef.current;
|
|
@@ -1418,7 +1439,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1418
1439
|
|
|
1419
1440
|
var onVolumeChange = function onVolumeChange(_ref4) {
|
|
1420
1441
|
var newVolume = _ref4.volume;
|
|
1421
|
-
|
|
1442
|
+
setVolumeState(newVolume);
|
|
1443
|
+
debug('onVolumeChange [ID: %s]', videoId);
|
|
1422
1444
|
};
|
|
1423
1445
|
|
|
1424
1446
|
var onEnded = function onEnded() {
|
|
@@ -1428,6 +1450,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
|
|
|
1428
1450
|
ended: true,
|
|
1429
1451
|
buffering: false
|
|
1430
1452
|
});
|
|
1453
|
+
debug('onEnded [ID: %s]', videoId);
|
|
1431
1454
|
};
|
|
1432
1455
|
|
|
1433
1456
|
var onBufferStart = function onBufferStart() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@folklore/hooks",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.22",
|
|
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": "
|
|
51
|
+
"gitHead": "22a55f41d8b6f80e1f3673bb3e2c077860488afe",
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@folklore/events": "^0.0.3",
|
|
54
54
|
"@folklore/services": "^0.1.36",
|