@folklore/hooks 0.0.18 → 0.0.21

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 +20 -15
  2. package/dist/es.js +20 -15
  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),
@@ -240,13 +242,15 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
240
242
  height: height,
241
243
  params: playerParams
242
244
  });
243
- playerRef.current = player;
244
245
  }
245
246
 
246
247
  if (!playerReady) {
247
248
  setPlayerReady(true);
248
249
  }
249
- }, [apiLoaded, elementRef.current, videoId, width, height, autoplay, muted, start, controls, queueAutoplayNext, queueEnable, sharingEnable, uiLogo, uiStartScreenInfo]);
250
+
251
+ playerRef.current = player;
252
+ playerElementRef.current = element;
253
+ }, [apiLoaded, elementHasChanged, videoId, width, height, autoplay, muted, start, controls, queueAutoplayNext, queueEnable, sharingEnable, uiLogo, uiStartScreenInfo]);
250
254
  react.useEffect(function () {
251
255
  var _playerRef$current2 = playerRef.current,
252
256
  player = _playerRef$current2 === void 0 ? null : _playerRef$current2;
@@ -935,7 +939,7 @@ function useYouTubePlayer(id) {
935
939
  _ref$getVideoId = _ref.getVideoId,
936
940
  getVideoId = _ref$getVideoId === void 0 ? function (url) {
937
941
  if (url === null || url.match(/^https?:/) === null) {
938
- return null;
942
+ return url;
939
943
  }
940
944
 
941
945
  var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
@@ -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]);
@@ -1054,7 +1059,7 @@ function useYouTubePlayer(id) {
1054
1059
  debug$1('iFrame switched');
1055
1060
  destroyPlayer();
1056
1061
  }
1057
- }); // Create player
1062
+ }, [elementHasChanged]); // Create player
1058
1063
 
1059
1064
  react.useEffect(function () {
1060
1065
  var _apiRef$current = apiRef.current,
@@ -1071,12 +1076,11 @@ function useYouTubePlayer(id) {
1071
1076
 
1072
1077
  var player = currentPlayer;
1073
1078
 
1074
- if (player !== null) {
1079
+ if (player !== null && typeof player.loadVideoById !== 'undefined') {
1075
1080
  debug$1('Switch video [ID: %s]', videoId);
1076
1081
  player.loadVideoById(videoId);
1077
1082
  } else {
1078
1083
  debug$1('Create player [ID: %s]', videoId);
1079
- var iframe = elementRef.current;
1080
1084
 
1081
1085
  var onReady = function onReady(_ref2) {
1082
1086
  var target = _ref2.target;
@@ -1122,7 +1126,7 @@ function useYouTubePlayer(id) {
1122
1126
  debug$1('onStateChange %s [ID: %s]', stateLabel, videoId);
1123
1127
  };
1124
1128
 
1125
- player = new YT.Player(iframe, {
1129
+ player = new YT.Player(element, {
1126
1130
  videoId: videoId,
1127
1131
  playerVars: {
1128
1132
  controls: controls,
@@ -1138,11 +1142,11 @@ function useYouTubePlayer(id) {
1138
1142
  onStateChange: onStateChange
1139
1143
  }
1140
1144
  });
1141
- playerElementRef.current = iframe;
1142
1145
  }
1143
1146
 
1144
1147
  playerRef.current = player;
1145
- }, [apiLoaded, videoId, elementRef.current, setPlayState, setReady, setMetadata, destroyPlayer]);
1148
+ playerElementRef.current = element;
1149
+ }, [apiLoaded, videoId, elementHasChanged, setPlayState, setReady, setMetadata, destroyPlayer]);
1146
1150
  var playing = playState.playing;
1147
1151
  var getCurrentTime = react.useCallback(function (p) {
1148
1152
  return p.getCurrentTime();
@@ -1217,6 +1221,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1217
1221
  var apiRef = react.useRef(null);
1218
1222
  var elementRef = react.useRef(null);
1219
1223
  var playerRef = react.useRef(null);
1224
+ var playerElementRef = react.useRef(elementRef.current);
1225
+ var elementHasChanged = elementRef.current !== playerElementRef.current;
1220
1226
  var videoId = react.useMemo(function () {
1221
1227
  return getVideoId(id);
1222
1228
  }, [id]);
@@ -1314,7 +1320,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1314
1320
  playerRef.current = null;
1315
1321
  }
1316
1322
  }, []);
1317
- var playerElementRef = react.useRef(elementRef.current);
1318
1323
  react.useEffect(function () {
1319
1324
  var currentPlayer = playerRef.current;
1320
1325
 
@@ -1322,7 +1327,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1322
1327
  debug('iFrame switched');
1323
1328
  destroyVideo();
1324
1329
  }
1325
- }); // Create player
1330
+ }, [elementHasChanged]); // Create player
1326
1331
 
1327
1332
  react.useEffect(function () {
1328
1333
  var _apiRef$current = apiRef.current,
@@ -1355,7 +1360,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1355
1360
  }).catch(function (e) {
1356
1361
  debug('ERROR: %o', e);
1357
1362
  });
1358
- playerElementRef.current = element;
1359
1363
  } else {
1360
1364
  debug('Load video [ID: %s]', videoId);
1361
1365
  player.loadVideo(videoId).catch(function (e) {
@@ -1364,7 +1368,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1364
1368
  }
1365
1369
 
1366
1370
  playerRef.current = player;
1367
- }, [apiLoaded, videoId, elementRef.current, setReady, destroyVideo, setLoaded]); // Bind player events
1371
+ playerElementRef.current = element;
1372
+ }, [apiLoaded, videoId, elementHasChanged, setReady, destroyVideo, setLoaded]); // Bind player events
1368
1373
 
1369
1374
  react.useEffect(function () {
1370
1375
  var player = playerRef.current;
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),
@@ -228,13 +230,15 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
228
230
  height: height,
229
231
  params: playerParams
230
232
  });
231
- playerRef.current = player;
232
233
  }
233
234
 
234
235
  if (!playerReady) {
235
236
  setPlayerReady(true);
236
237
  }
237
- }, [apiLoaded, elementRef.current, videoId, width, height, autoplay, muted, start, controls, queueAutoplayNext, queueEnable, sharingEnable, uiLogo, uiStartScreenInfo]);
238
+
239
+ playerRef.current = player;
240
+ playerElementRef.current = element;
241
+ }, [apiLoaded, elementHasChanged, videoId, width, height, autoplay, muted, start, controls, queueAutoplayNext, queueEnable, sharingEnable, uiLogo, uiStartScreenInfo]);
238
242
  useEffect(function () {
239
243
  var _playerRef$current2 = playerRef.current,
240
244
  player = _playerRef$current2 === void 0 ? null : _playerRef$current2;
@@ -923,7 +927,7 @@ function useYouTubePlayer(id) {
923
927
  _ref$getVideoId = _ref.getVideoId,
924
928
  getVideoId = _ref$getVideoId === void 0 ? function (url) {
925
929
  if (url === null || url.match(/^https?:/) === null) {
926
- return null;
930
+ return url;
927
931
  }
928
932
 
929
933
  var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
@@ -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]);
@@ -1042,7 +1047,7 @@ function useYouTubePlayer(id) {
1042
1047
  debug$1('iFrame switched');
1043
1048
  destroyPlayer();
1044
1049
  }
1045
- }); // Create player
1050
+ }, [elementHasChanged]); // Create player
1046
1051
 
1047
1052
  useEffect(function () {
1048
1053
  var _apiRef$current = apiRef.current,
@@ -1059,12 +1064,11 @@ function useYouTubePlayer(id) {
1059
1064
 
1060
1065
  var player = currentPlayer;
1061
1066
 
1062
- if (player !== null) {
1067
+ if (player !== null && typeof player.loadVideoById !== 'undefined') {
1063
1068
  debug$1('Switch video [ID: %s]', videoId);
1064
1069
  player.loadVideoById(videoId);
1065
1070
  } else {
1066
1071
  debug$1('Create player [ID: %s]', videoId);
1067
- var iframe = elementRef.current;
1068
1072
 
1069
1073
  var onReady = function onReady(_ref2) {
1070
1074
  var target = _ref2.target;
@@ -1110,7 +1114,7 @@ function useYouTubePlayer(id) {
1110
1114
  debug$1('onStateChange %s [ID: %s]', stateLabel, videoId);
1111
1115
  };
1112
1116
 
1113
- player = new YT.Player(iframe, {
1117
+ player = new YT.Player(element, {
1114
1118
  videoId: videoId,
1115
1119
  playerVars: {
1116
1120
  controls: controls,
@@ -1126,11 +1130,11 @@ function useYouTubePlayer(id) {
1126
1130
  onStateChange: onStateChange
1127
1131
  }
1128
1132
  });
1129
- playerElementRef.current = iframe;
1130
1133
  }
1131
1134
 
1132
1135
  playerRef.current = player;
1133
- }, [apiLoaded, videoId, elementRef.current, setPlayState, setReady, setMetadata, destroyPlayer]);
1136
+ playerElementRef.current = element;
1137
+ }, [apiLoaded, videoId, elementHasChanged, setPlayState, setReady, setMetadata, destroyPlayer]);
1134
1138
  var playing = playState.playing;
1135
1139
  var getCurrentTime = useCallback(function (p) {
1136
1140
  return p.getCurrentTime();
@@ -1205,6 +1209,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1205
1209
  var apiRef = useRef(null);
1206
1210
  var elementRef = useRef(null);
1207
1211
  var playerRef = useRef(null);
1212
+ var playerElementRef = useRef(elementRef.current);
1213
+ var elementHasChanged = elementRef.current !== playerElementRef.current;
1208
1214
  var videoId = useMemo(function () {
1209
1215
  return getVideoId(id);
1210
1216
  }, [id]);
@@ -1302,7 +1308,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1302
1308
  playerRef.current = null;
1303
1309
  }
1304
1310
  }, []);
1305
- var playerElementRef = useRef(elementRef.current);
1306
1311
  useEffect(function () {
1307
1312
  var currentPlayer = playerRef.current;
1308
1313
 
@@ -1310,7 +1315,7 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1310
1315
  debug('iFrame switched');
1311
1316
  destroyVideo();
1312
1317
  }
1313
- }); // Create player
1318
+ }, [elementHasChanged]); // Create player
1314
1319
 
1315
1320
  useEffect(function () {
1316
1321
  var _apiRef$current = apiRef.current,
@@ -1343,7 +1348,6 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1343
1348
  }).catch(function (e) {
1344
1349
  debug('ERROR: %o', e);
1345
1350
  });
1346
- playerElementRef.current = element;
1347
1351
  } else {
1348
1352
  debug('Load video [ID: %s]', videoId);
1349
1353
  player.loadVideo(videoId).catch(function (e) {
@@ -1352,7 +1356,8 @@ var useVimeoPlayer = function useVimeoPlayer(id) {
1352
1356
  }
1353
1357
 
1354
1358
  playerRef.current = player;
1355
- }, [apiLoaded, videoId, elementRef.current, setReady, destroyVideo, setLoaded]); // Bind player events
1359
+ playerElementRef.current = element;
1360
+ }, [apiLoaded, videoId, elementHasChanged, setReady, destroyVideo, setLoaded]); // Bind player events
1356
1361
 
1357
1362
  useEffect(function () {
1358
1363
  var player = playerRef.current;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@folklore/hooks",
3
- "version": "0.0.18",
3
+ "version": "0.0.21",
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": "f98daae27869fa6aaec9f26a4c2f6fc4310b8ff3",
51
+ "gitHead": "6347817aea21fb3239a7a59dcac8af24f1228179",
52
52
  "dependencies": {
53
53
  "@folklore/events": "^0.0.3",
54
54
  "@folklore/services": "^0.1.36",