New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@folklore/hooks

Package Overview
Dependencies
Maintainers
5
Versions
65
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@folklore/hooks - npm Package Compare versions

Comparing version 0.0.31 to 0.0.32

269

dist/cjs.js

@@ -33,3 +33,2 @@ 'use strict';

const delta = desiredValue - startValue;
function loop() {

@@ -39,3 +38,2 @@ if (canceled) {

}
const currentTime = Date.now();

@@ -46,3 +44,2 @@ const elapsedTime = currentTime - startTime;

setCurrentValue(newValue);
if (newValue !== desiredValue) {

@@ -52,3 +49,2 @@ animationFrame = raf__default["default"](loop);

}
if (delta !== 0) {

@@ -59,6 +55,4 @@ duration = Math.min(maxDuration, Math.abs(delta) * speed * 1000);

}
return () => {
canceled = true;
if (animationFrame !== null) {

@@ -84,9 +78,8 @@ raf__default["default"].cancel(animationFrame);

const idChanged = lastIdRef.current !== id;
if (idChanged) {
realCurrentTime.current = 0;
lastIdRef.current = id;
} // Check time update
}
// Check time update
react.useEffect(() => {

@@ -96,5 +89,3 @@ if (disabled || player === null) {

}
let canceled = false;
const updateTime = time => {

@@ -104,6 +95,4 @@ if (canceled) {

}
realCurrentTime.current = time;
setCurrentTime(time);
if (customOnUpdate !== null) {

@@ -113,6 +102,4 @@ customOnUpdate(time);

};
const interval = setInterval(() => {
const time = getCurrentTime(player);
if (typeof time.then !== 'undefined') {

@@ -134,3 +121,2 @@ time.then(updateTime);

const debug$3 = createDebug__default["default"]('folklore:video:dailymotion');
const useDailymotionPlayer = function () {

@@ -158,3 +144,2 @@ let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;

}
const match = url.match(/\/video\/([^/?]+)/);

@@ -164,6 +149,6 @@ return match !== null ? match[1] : null;

} = params;
const [apiLoaded, setApiLoaded] = react.useState(typeof window.DM !== 'undefined');
const [apiLoaded, setApiLoaded] = react.useState(typeof window !== 'undefined' && typeof window.DM !== 'undefined');
const [playerReady, setPlayerReady] = react.useState(false);
const [loaded, setLoaded] = react.useState(false);
const apiRef = react.useRef(typeof window.DM !== 'undefined' ? window.DM : null);
const apiRef = react.useRef(typeof window !== 'undefined' && typeof window.DM !== 'undefined' ? window.DM : null);
const ready = apiLoaded && playerReady;

@@ -188,7 +173,7 @@ const videoId = react.useMemo(() => getVideoId(id), [id]);

duration
}); // Load SDK
});
// Load SDK
react.useEffect(() => {
let canceled = false;
if (!apiLoaded && videoId !== null) {

@@ -204,8 +189,8 @@ debug$3('Load API');

}
return () => {
canceled = true;
};
}, [videoId, apiLoaded, setApiLoaded]); // Create or update player
}, [videoId, apiLoaded, setApiLoaded]);
// Create or update player
react.useEffect(() => {

@@ -221,7 +206,5 @@ const {

} = elementRef;
if (!apiLoaded || videoId === null || element === null) {
return;
}
const playerParams = {

@@ -239,3 +222,2 @@ 'autoplay-d': autoplay,

let player = currentPlayer;
if (player !== null) {

@@ -255,7 +237,5 @@ player.load(videoId, {

}
if (!playerReady) {
setPlayerReady(true);
}
playerRef.current = player;

@@ -268,10 +248,7 @@ playerElementRef.current = element;

} = playerRef;
if (player === null) {
return () => {};
}
let currentPlayState = playState;
let currentMetadata = metadata;
function onPlaybackReady() {

@@ -281,5 +258,5 @@ setLoaded(true);

}
function onLoadedMetadata() {
currentMetadata = { ...currentMetadata,
currentMetadata = {
...currentMetadata,
duration: player.duration

@@ -290,5 +267,5 @@ };

}
function onDurationChange() {
currentMetadata = { ...currentMetadata,
currentMetadata = {
...currentMetadata,
duration: player.duration

@@ -299,3 +276,2 @@ };

}
function onVolumeChange() {

@@ -306,5 +282,5 @@ setMuted(player.muted);

}
function onPlay() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
playing: true,

@@ -317,5 +293,5 @@ paused: false,

}
function onPause() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
playing: false,

@@ -328,5 +304,5 @@ paused: true,

}
function onEnd() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
playing: false,

@@ -339,5 +315,5 @@ paused: false,

}
function onPlaying() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
buffering: false

@@ -348,5 +324,5 @@ };

}
function onWaiting() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
buffering: true

@@ -357,5 +333,5 @@ };

}
function onAdStart() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
adPlaying: true

@@ -366,5 +342,5 @@ };

}
function onAdEnd() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
adPlaying: false

@@ -375,3 +351,2 @@ };

}
player.addEventListener('playback_ready', onPlaybackReady);

@@ -467,3 +442,2 @@ player.addEventListener('loadedmetadata', onLoadedMetadata);

const eventsManager$1 = typeof document !== 'undefined' ? new EventsManager__default["default"](document) : null;
const useDocumentEvent = (event, callback) => {

@@ -474,3 +448,2 @@ react.useEffect(() => {

}
return () => {

@@ -485,3 +458,2 @@ if (eventsManager$1 !== null && callback !== null) {

const eventsManager = typeof window !== 'undefined' ? new EventsManager__default["default"](window) : null;
const useWindowEvent = (event, callback) => {

@@ -492,3 +464,2 @@ react.useEffect(() => {

}
return () => {

@@ -509,3 +480,2 @@ if (eventsManager !== null && callback !== null) {

let callback = null;
if (typeof keyMap === 'function') {

@@ -516,3 +486,2 @@ callback = keyMap;

}
if (callback !== null) {

@@ -527,3 +496,2 @@ callback(event);

let callback = null;
if (typeof keyMap === 'function') {

@@ -534,3 +502,2 @@ callback = keyMap;

}
if (callback !== null) {

@@ -601,11 +568,9 @@ callback(event);

}, []) : null;
const updateState = update => setState({ ...state,
const updateState = update => setState({
...state,
...update
});
const updateFromResponse = function (response) {
let error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
let reset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (error !== null) {

@@ -618,3 +583,2 @@ updateState({

}
const newPage = getPageFromResponse(response);

@@ -630,3 +594,2 @@ const currentPages = currentPagesRef.current || [];

const hasObject = aPage !== null && bPage !== null;
if (hasObject) {

@@ -636,6 +599,4 @@ if (aPage === bPage) {

}
return aPage > bPage ? 1 : -1;
}
if (isNumber__default["default"](a) && isNumber__default["default"](b)) {

@@ -645,6 +606,4 @@ if (a === b) {

}
return a > b ? 1 : -1;
}
return 0;

@@ -662,3 +621,2 @@ });

};
const getNextPage = () => {

@@ -671,3 +629,2 @@ const allPages = lastPage !== -1 ? Array.call(null, ...Array(lastPage)).map((it, index) => index + 1) : [];

};
const loadItems = requestPage => {

@@ -681,3 +638,2 @@ updateState({

}
return response;

@@ -690,3 +646,2 @@ }).catch(error => {

};
const loadPage = pageToLoad => {

@@ -696,13 +651,9 @@ if (loading) {

}
const currentPages = currentPagesRef.current || [];
const foundPage = currentPages.find(it => it.page === pageToLoad) || null;
if (foundPage !== null) {
return Promise.resolve(foundPage);
}
return loadItems(pageToLoad);
};
const loadNextPage = () => {

@@ -712,11 +663,9 @@ if (loading) {

}
const nextPage = getNextPage();
return nextPage !== null ? loadItems(nextPage) : Promise.resolve();
}; // Reset all on query change
};
// Reset all on query change
react.useEffect(() => {
const hadState = lastState.current !== null;
if (hadState) {

@@ -736,3 +685,2 @@ currentPagesRef.current = null;

lastState.current = initialState;
if (hadState) {

@@ -747,10 +695,7 @@ currentPagesRef.current = initialState.pages;

}
let loadPromise = null;
const pageToLoad = initialPages === null && page === null ? 1 : page;
if (pageToLoad !== null) {
loadPromise = loadItems(pageToLoad);
}
return () => {

@@ -785,3 +730,2 @@ if (loadPromise !== null) {

const noPlayerError = new Error('No player');
const useNativeVideoPlayer = function (url) {

@@ -826,3 +770,2 @@ let {

} = elementRef;
if (player !== null) {

@@ -832,3 +775,2 @@ player.volume = newVolume;

}
return Promise.reject(noPlayerError);

@@ -840,3 +782,2 @@ }, []);

} = elementRef;
if (player !== null) {

@@ -846,3 +787,2 @@ player.muted = true;

}
return Promise.reject(noPlayerError);

@@ -854,3 +794,2 @@ }, []);

} = elementRef;
if (player !== null) {

@@ -860,3 +799,2 @@ player.muted = false;

}
return Promise.reject(noPlayerError);

@@ -868,3 +806,2 @@ }, []);

} = elementRef;
if (player !== null) {

@@ -874,3 +811,2 @@ player.currentTime = newTime;

}
return Promise.reject(noPlayerError);

@@ -882,3 +818,2 @@ }, []);

} = elementRef;
if (player !== null) {

@@ -888,6 +823,6 @@ player.loop = newLoop;

}
return Promise.reject(noPlayerError);
}, []); // Bind player events
}, []);
// Bind player events
react.useEffect(() => {

@@ -897,7 +832,5 @@ const {

} = elementRef;
if (player === null) {
return () => {};
}
const onCanPlay = () => {

@@ -907,3 +840,2 @@ setLoaded(true);

};
const onMetadataLoaded = () => {

@@ -918,3 +850,2 @@ const newMetadata = {

};
const onPlay = () => {

@@ -929,3 +860,2 @@ setPlayState({

};
const onPause = () => {

@@ -940,3 +870,2 @@ setPlayState({

};
const onEnded = () => {

@@ -951,3 +880,2 @@ setPlayState({

};
debug$2('Bind events [URL: %s]', url);

@@ -998,3 +926,2 @@ player.addEventListener('canplay', onCanPlay);

const observersCache = new Map();
const getOptionsKey = _ref => {

@@ -1006,18 +933,15 @@ let {

} = _ref;
return "root_".concat(root, "_rootMargin_").concat(rootMargin || null, "_threshold_").concat(threshold);
return `root_${root}_rootMargin_${rootMargin || null}_threshold_${threshold}`;
};
const createObserver = function (Observer) {
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
let subscribers = [];
const addSubscriber = (element, callback) => {
const currentSubscriber = subscribers.find(it => it.element === element) || null;
if (currentSubscriber !== null) {
return subscribers.map(it => it.element === element && it.callbacks.indexOf(callback) === -1 ? { ...it,
return subscribers.map(it => it.element === element && it.callbacks.indexOf(callback) === -1 ? {
...it,
callbacks: [...it.callbacks, callback]
} : it).filter(it => it.callbacks.length > 0);
}
return [...subscribers, {

@@ -1028,7 +952,6 @@ element,

};
const removeSubscriber = (element, callback) => subscribers.map(it => it.element === element ? { ...it,
const removeSubscriber = (element, callback) => subscribers.map(it => it.element === element ? {
...it,
callbacks: it.callbacks.filter(subCallback => subCallback !== callback)
} : it).filter(it => it.callbacks.length > 0);
const onUpdate = entries => {

@@ -1041,3 +964,2 @@ entries.forEach(entry => {

} = _ref2;
if (element === entry.target) {

@@ -1051,9 +973,6 @@ callbacks.forEach(callback => {

};
const observer = new Observer(onUpdate, options);
const unsubscribe = function (element) {
let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
subscribers = removeSubscriber(element, callback);
if (typeof observer.unobserve === 'undefined') {

@@ -1066,5 +985,3 @@ observer.disconnect();

}
const currentSubscriber = subscribers.find(it => it.element === element) || null;
if (currentSubscriber === null) {

@@ -1074,7 +991,5 @@ observer.unobserve(element);

};
const subscribe = (element, callback) => {
const currentSubscriber = subscribers.find(it => it.element === element) || null;
subscribers = addSubscriber(element, callback);
if (currentSubscriber === null) {

@@ -1084,3 +999,2 @@ observer.observe(element);

};
return {

@@ -1092,13 +1006,17 @@ subscribe,

};
const getObserver = function (Observer) {
const getObserver = function () {
let Observer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (Observer === null) {
return {
observer: null,
subscribe: () => {},
unsubscribe: () => {}
};
}
const observerKey = getOptionsKey(options);
if (!observersCache.has(Observer)) {
observersCache.set(Observer, {});
}
const observers = observersCache.get(Observer);
if (typeof observers[observerKey] === 'undefined') {

@@ -1108,3 +1026,2 @@ observers[observerKey] = createObserver(Observer, options);

}
return observers[observerKey];

@@ -1130,22 +1047,15 @@ };

} = nodeRef;
const callback = newEntry => setEntry(newEntry);
let unsubscribe = null;
if (nodeElement !== null) {
const newOpts = {};
if (root !== null) {
newOpts.root = root;
}
if (rootMargin !== null) {
newOpts.rootMargin = rootMargin;
}
if (threshold !== null) {
newOpts.threshold = threshold;
}
const {

@@ -1158,3 +1068,2 @@ subscribe,

}
currentElement.current = nodeElement;

@@ -1172,6 +1081,6 @@ return () => {

};
/**
* Intersection Observer
*/
const defaultThreshold = [0, 1.0];

@@ -1195,3 +1104,3 @@ const intersectionObserverInitialEntry = {

} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return useObserver(IntersectionObserver, {
return useObserver(typeof IntersectionObserver !== 'undefined' ? IntersectionObserver : null, {
root,

@@ -1203,6 +1112,6 @@ rootMargin,

};
/**
* Resize Observer
*/
const resizeObserverInitialEntry = {

@@ -1218,3 +1127,3 @@ target: null,

} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return useObserver(ResizeObserver, {
return useObserver(typeof ResizeObserver !== 'undefined' ? ResizeObserver : null, {
disabled

@@ -1226,3 +1135,2 @@ }, resizeObserverInitialEntry);

const debug$1 = createDebug__default["default"]('folklore:video:youtube');
function useYouTubePlayer(id) {

@@ -1243,3 +1151,2 @@ let {

}
const regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;

@@ -1250,4 +1157,4 @@ const match = url.match(regExp);

} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
const [apiLoaded, setApiLoaded] = react.useState(typeof window.YT !== 'undefined');
const apiRef = react.useRef(typeof window.YT !== 'undefined' ? window.YT : null);
const [apiLoaded, setApiLoaded] = react.useState(typeof window !== 'undefined' && typeof window.YT !== 'undefined');
const apiRef = react.useRef(typeof window !== 'undefined' && typeof window.YT !== 'undefined' ? window.YT : null);
const elementRef = react.useRef(null);

@@ -1273,3 +1180,2 @@ const playerRef = react.useRef(null);

let canceled = false;
if (!apiLoaded && videoId !== null) {

@@ -1285,3 +1191,2 @@ debug$1('Load API');

}
return () => {

@@ -1308,7 +1213,5 @@ canceled = true;

const promise = player !== null && typeof player.setVolume !== 'undefined' ? Promise.resolve(player.setVolume(volume * 100)) : Promise.reject(NO_PLAYER_ERROR$1);
if (customOnVolumeChange) {
customOnVolumeChange(volume);
}
return promise;

@@ -1345,4 +1248,6 @@ }, [customOnVolumeChange]);

}
}, []); // Detect iframe switch and destroy player
}, []);
// Detect iframe switch and destroy player
react.useEffect(() => {

@@ -1352,3 +1257,2 @@ const {

} = playerRef;
if (playerElementRef.current !== elementRef.current && currentPlayer !== null) {

@@ -1358,4 +1262,5 @@ debug$1('iFrame switched');

}
}, [elementHasChanged]); // Create player
}, [elementHasChanged]);
// Create player
react.useEffect(() => {

@@ -1371,3 +1276,2 @@ const {

} = elementRef;
if (!apiLoaded || videoId === null || element === null) {

@@ -1377,5 +1281,3 @@ destroyPlayer();

}
let player = currentPlayer;
if (player !== null && typeof player.loadVideoById !== 'undefined') {

@@ -1386,3 +1288,2 @@ debug$1('Switch video [ID: %s]', videoId);

debug$1('Create player [ID: %s]', videoId);
const onReady = _ref => {

@@ -1396,12 +1297,10 @@ let {

const newDuration = target.getDuration();
if (newDuration !== metadata.duration) {
setMetadata({ ...metadata,
setMetadata({
...metadata,
duration: newDuration
});
}
debug$1('onReady [ID: %s]', videoId);
};
const onStateChange = _ref2 => {

@@ -1419,3 +1318,2 @@ let {

let stateLabel = null;
if (newState.playing) {

@@ -1434,6 +1332,4 @@ stateLabel = 'playing';

}
debug$1('onStateChange %s [ID: %s]', stateLabel, videoId);
};
player = new YT.Player(element, {

@@ -1456,3 +1352,2 @@ videoId,

}
playerRef.current = player;

@@ -1493,3 +1388,2 @@ playerElementRef.current = element;

const NO_PLAYER_ERROR = new Error('No player');
const useVimeoPlayer = function (id) {

@@ -1511,3 +1405,2 @@ let {

}
const match = url.match(/\/[0-9]+/);

@@ -1537,7 +1430,7 @@ return match !== null ? match[1] : null;

duration
}); // Load SDK
});
// Load SDK
react.useEffect(() => {
let canceled = false;
if (!apiLoaded && id !== null) {

@@ -1553,3 +1446,2 @@ debug('Load API');

}
return () => {

@@ -1605,3 +1497,2 @@ canceled = true;

} = playerRef;
if (player !== null) {

@@ -1611,3 +1502,2 @@ debug('Unload video');

}
if (player !== null) {

@@ -1622,3 +1512,2 @@ debug('Unset video');

} = playerRef;
if (playerElementRef.current !== elementRef.current && currentPlayer !== null) {

@@ -1628,4 +1517,5 @@ debug('iFrame switched');

}
}, [elementHasChanged]); // Create player
}, [elementHasChanged]);
// Create player
react.useEffect(() => {

@@ -1641,3 +1531,2 @@ const {

} = elementRef;
if (!apiLoaded || videoId === null || element === null) {

@@ -1647,5 +1536,3 @@ destroyVideo();

}
let player = currentPlayer;
if (player === null) {

@@ -1671,7 +1558,7 @@ debug('Create player [ID: %s]', videoId);

}
playerRef.current = player;
playerElementRef.current = element;
}, [apiLoaded, videoId, elementHasChanged, setReady, destroyVideo, setLoaded]); // Bind player events
}, [apiLoaded, videoId, elementHasChanged, setReady, destroyVideo, setLoaded]);
// Bind player events
react.useEffect(() => {

@@ -1681,17 +1568,12 @@ const {

} = playerRef;
if (player === null) {
return () => {};
}
let canceled = false;
const onLoaded = () => {
Promise.all([player.getDuration(), player.getVideoWidth(), player.getVideoHeight(), player.getMuted()]).then(_ref => {
let [newDuration, newWidth, newHeight, newMuted] = _ref;
if (canceled) {
return;
}
const newMetadata = {

@@ -1703,7 +1585,5 @@ duration: newDuration,

setMetadata(newMetadata);
if (newMuted) {
setVolumeState(0);
}
setLoaded(true);

@@ -1713,3 +1593,2 @@ });

};
const onPlay = () => {

@@ -1729,3 +1608,2 @@ setPlayState({

};
const onPause = () => {

@@ -1740,3 +1618,2 @@ setPlayState({

};
const onVolumeChange = _ref2 => {

@@ -1749,3 +1626,2 @@ let {

};
const onEnded = () => {

@@ -1760,3 +1636,2 @@ setPlayState({

};
const onBufferStart = () => {

@@ -1771,3 +1646,2 @@ setPlayState({

};
const onBufferEnded = () => {

@@ -1782,3 +1656,2 @@ setPlayState({

};
debug('Bind events [ID: %s]', videoId);

@@ -1853,3 +1726,2 @@ player.on('loaded', onLoaded);

let player = null;
if (service === 'dailymotion') {

@@ -1864,3 +1736,2 @@ player = dailymotionPlayer;

}
const {

@@ -1905,3 +1776,2 @@ playing = false,

const hasMetadata = metaWidth !== null || metaHeight !== null || metaDuration !== null;
if (hasMetadata && customOnMetadataChange !== null) {

@@ -1922,5 +1792,3 @@ customOnMetadataChange({

});
const currentScroll = getWindowScroll();
const useWindowScroll = function () {

@@ -1934,3 +1802,2 @@ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

const newScroll = getWindowScroll();
if (currentScroll.x !== newScroll.x || currentScroll.y !== newScroll.y) {

@@ -1942,3 +1809,2 @@ currentScroll.x = newScroll.x;

}
return null;

@@ -1948,3 +1814,2 @@ }, [setScroll]);

const newScroll = updateScroll();
if (newScroll !== null && onChange !== null) {

@@ -1966,3 +1831,2 @@ onChange(newScroll);

let currentSize = getWindowSize();
function useWindowSize() {

@@ -1975,3 +1839,2 @@ let {

const newSize = getWindowSize();
if (currentSize.width !== newSize.width || currentSize.height !== newSize.height) {

@@ -1982,3 +1845,2 @@ currentSize = newSize;

}
return null;

@@ -1988,3 +1850,2 @@ }, [setSize]);

const newSize = updateSize();
if (newSize !== null && onChange !== null) {

@@ -1991,0 +1852,0 @@ onChange(newSize);

@@ -22,3 +22,2 @@ import raf from 'raf';

const delta = desiredValue - startValue;
function loop() {

@@ -28,3 +27,2 @@ if (canceled) {

}
const currentTime = Date.now();

@@ -35,3 +33,2 @@ const elapsedTime = currentTime - startTime;

setCurrentValue(newValue);
if (newValue !== desiredValue) {

@@ -41,3 +38,2 @@ animationFrame = raf(loop);

}
if (delta !== 0) {

@@ -48,6 +44,4 @@ duration = Math.min(maxDuration, Math.abs(delta) * speed * 1000);

}
return () => {
canceled = true;
if (animationFrame !== null) {

@@ -73,9 +67,8 @@ raf.cancel(animationFrame);

const idChanged = lastIdRef.current !== id;
if (idChanged) {
realCurrentTime.current = 0;
lastIdRef.current = id;
} // Check time update
}
// Check time update
useEffect(() => {

@@ -85,5 +78,3 @@ if (disabled || player === null) {

}
let canceled = false;
const updateTime = time => {

@@ -93,6 +84,4 @@ if (canceled) {

}
realCurrentTime.current = time;
setCurrentTime(time);
if (customOnUpdate !== null) {

@@ -102,6 +91,4 @@ customOnUpdate(time);

};
const interval = setInterval(() => {
const time = getCurrentTime(player);
if (typeof time.then !== 'undefined') {

@@ -123,3 +110,2 @@ time.then(updateTime);

const debug$3 = createDebug('folklore:video:dailymotion');
const useDailymotionPlayer = function () {

@@ -147,3 +133,2 @@ let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;

}
const match = url.match(/\/video\/([^/?]+)/);

@@ -153,6 +138,6 @@ return match !== null ? match[1] : null;

} = params;
const [apiLoaded, setApiLoaded] = useState(typeof window.DM !== 'undefined');
const [apiLoaded, setApiLoaded] = useState(typeof window !== 'undefined' && typeof window.DM !== 'undefined');
const [playerReady, setPlayerReady] = useState(false);
const [loaded, setLoaded] = useState(false);
const apiRef = useRef(typeof window.DM !== 'undefined' ? window.DM : null);
const apiRef = useRef(typeof window !== 'undefined' && typeof window.DM !== 'undefined' ? window.DM : null);
const ready = apiLoaded && playerReady;

@@ -177,7 +162,7 @@ const videoId = useMemo(() => getVideoId(id), [id]);

duration
}); // Load SDK
});
// Load SDK
useEffect(() => {
let canceled = false;
if (!apiLoaded && videoId !== null) {

@@ -193,8 +178,8 @@ debug$3('Load API');

}
return () => {
canceled = true;
};
}, [videoId, apiLoaded, setApiLoaded]); // Create or update player
}, [videoId, apiLoaded, setApiLoaded]);
// Create or update player
useEffect(() => {

@@ -210,7 +195,5 @@ const {

} = elementRef;
if (!apiLoaded || videoId === null || element === null) {
return;
}
const playerParams = {

@@ -228,3 +211,2 @@ 'autoplay-d': autoplay,

let player = currentPlayer;
if (player !== null) {

@@ -244,7 +226,5 @@ player.load(videoId, {

}
if (!playerReady) {
setPlayerReady(true);
}
playerRef.current = player;

@@ -257,10 +237,7 @@ playerElementRef.current = element;

} = playerRef;
if (player === null) {
return () => {};
}
let currentPlayState = playState;
let currentMetadata = metadata;
function onPlaybackReady() {

@@ -270,5 +247,5 @@ setLoaded(true);

}
function onLoadedMetadata() {
currentMetadata = { ...currentMetadata,
currentMetadata = {
...currentMetadata,
duration: player.duration

@@ -279,5 +256,5 @@ };

}
function onDurationChange() {
currentMetadata = { ...currentMetadata,
currentMetadata = {
...currentMetadata,
duration: player.duration

@@ -288,3 +265,2 @@ };

}
function onVolumeChange() {

@@ -295,5 +271,5 @@ setMuted(player.muted);

}
function onPlay() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
playing: true,

@@ -306,5 +282,5 @@ paused: false,

}
function onPause() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
playing: false,

@@ -317,5 +293,5 @@ paused: true,

}
function onEnd() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
playing: false,

@@ -328,5 +304,5 @@ paused: false,

}
function onPlaying() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
buffering: false

@@ -337,5 +313,5 @@ };

}
function onWaiting() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
buffering: true

@@ -346,5 +322,5 @@ };

}
function onAdStart() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
adPlaying: true

@@ -355,5 +331,5 @@ };

}
function onAdEnd() {
currentPlayState = { ...currentPlayState,
currentPlayState = {
...currentPlayState,
adPlaying: false

@@ -364,3 +340,2 @@ };

}
player.addEventListener('playback_ready', onPlaybackReady);

@@ -456,3 +431,2 @@ player.addEventListener('loadedmetadata', onLoadedMetadata);

const eventsManager$1 = typeof document !== 'undefined' ? new EventsManager(document) : null;
const useDocumentEvent = (event, callback) => {

@@ -463,3 +437,2 @@ useEffect(() => {

}
return () => {

@@ -474,3 +447,2 @@ if (eventsManager$1 !== null && callback !== null) {

const eventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
const useWindowEvent = (event, callback) => {

@@ -481,3 +453,2 @@ useEffect(() => {

}
return () => {

@@ -498,3 +469,2 @@ if (eventsManager !== null && callback !== null) {

let callback = null;
if (typeof keyMap === 'function') {

@@ -505,3 +475,2 @@ callback = keyMap;

}
if (callback !== null) {

@@ -516,3 +485,2 @@ callback(event);

let callback = null;
if (typeof keyMap === 'function') {

@@ -523,3 +491,2 @@ callback = keyMap;

}
if (callback !== null) {

@@ -590,11 +557,9 @@ callback(event);

}, []) : null;
const updateState = update => setState({ ...state,
const updateState = update => setState({
...state,
...update
});
const updateFromResponse = function (response) {
let error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
let reset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (error !== null) {

@@ -607,3 +572,2 @@ updateState({

}
const newPage = getPageFromResponse(response);

@@ -619,3 +583,2 @@ const currentPages = currentPagesRef.current || [];

const hasObject = aPage !== null && bPage !== null;
if (hasObject) {

@@ -625,6 +588,4 @@ if (aPage === bPage) {

}
return aPage > bPage ? 1 : -1;
}
if (isNumber(a) && isNumber(b)) {

@@ -634,6 +595,4 @@ if (a === b) {

}
return a > b ? 1 : -1;
}
return 0;

@@ -651,3 +610,2 @@ });

};
const getNextPage = () => {

@@ -660,3 +618,2 @@ const allPages = lastPage !== -1 ? Array.call(null, ...Array(lastPage)).map((it, index) => index + 1) : [];

};
const loadItems = requestPage => {

@@ -670,3 +627,2 @@ updateState({

}
return response;

@@ -679,3 +635,2 @@ }).catch(error => {

};
const loadPage = pageToLoad => {

@@ -685,13 +640,9 @@ if (loading) {

}
const currentPages = currentPagesRef.current || [];
const foundPage = currentPages.find(it => it.page === pageToLoad) || null;
if (foundPage !== null) {
return Promise.resolve(foundPage);
}
return loadItems(pageToLoad);
};
const loadNextPage = () => {

@@ -701,11 +652,9 @@ if (loading) {

}
const nextPage = getNextPage();
return nextPage !== null ? loadItems(nextPage) : Promise.resolve();
}; // Reset all on query change
};
// Reset all on query change
useEffect(() => {
const hadState = lastState.current !== null;
if (hadState) {

@@ -725,3 +674,2 @@ currentPagesRef.current = null;

lastState.current = initialState;
if (hadState) {

@@ -736,10 +684,7 @@ currentPagesRef.current = initialState.pages;

}
let loadPromise = null;
const pageToLoad = initialPages === null && page === null ? 1 : page;
if (pageToLoad !== null) {
loadPromise = loadItems(pageToLoad);
}
return () => {

@@ -774,3 +719,2 @@ if (loadPromise !== null) {

const noPlayerError = new Error('No player');
const useNativeVideoPlayer = function (url) {

@@ -815,3 +759,2 @@ let {

} = elementRef;
if (player !== null) {

@@ -821,3 +764,2 @@ player.volume = newVolume;

}
return Promise.reject(noPlayerError);

@@ -829,3 +771,2 @@ }, []);

} = elementRef;
if (player !== null) {

@@ -835,3 +776,2 @@ player.muted = true;

}
return Promise.reject(noPlayerError);

@@ -843,3 +783,2 @@ }, []);

} = elementRef;
if (player !== null) {

@@ -849,3 +788,2 @@ player.muted = false;

}
return Promise.reject(noPlayerError);

@@ -857,3 +795,2 @@ }, []);

} = elementRef;
if (player !== null) {

@@ -863,3 +800,2 @@ player.currentTime = newTime;

}
return Promise.reject(noPlayerError);

@@ -871,3 +807,2 @@ }, []);

} = elementRef;
if (player !== null) {

@@ -877,6 +812,6 @@ player.loop = newLoop;

}
return Promise.reject(noPlayerError);
}, []); // Bind player events
}, []);
// Bind player events
useEffect(() => {

@@ -886,7 +821,5 @@ const {

} = elementRef;
if (player === null) {
return () => {};
}
const onCanPlay = () => {

@@ -896,3 +829,2 @@ setLoaded(true);

};
const onMetadataLoaded = () => {

@@ -907,3 +839,2 @@ const newMetadata = {

};
const onPlay = () => {

@@ -918,3 +849,2 @@ setPlayState({

};
const onPause = () => {

@@ -929,3 +859,2 @@ setPlayState({

};
const onEnded = () => {

@@ -940,3 +869,2 @@ setPlayState({

};
debug$2('Bind events [URL: %s]', url);

@@ -987,3 +915,2 @@ player.addEventListener('canplay', onCanPlay);

const observersCache = new Map();
const getOptionsKey = _ref => {

@@ -995,18 +922,15 @@ let {

} = _ref;
return "root_".concat(root, "_rootMargin_").concat(rootMargin || null, "_threshold_").concat(threshold);
return `root_${root}_rootMargin_${rootMargin || null}_threshold_${threshold}`;
};
const createObserver = function (Observer) {
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
let subscribers = [];
const addSubscriber = (element, callback) => {
const currentSubscriber = subscribers.find(it => it.element === element) || null;
if (currentSubscriber !== null) {
return subscribers.map(it => it.element === element && it.callbacks.indexOf(callback) === -1 ? { ...it,
return subscribers.map(it => it.element === element && it.callbacks.indexOf(callback) === -1 ? {
...it,
callbacks: [...it.callbacks, callback]
} : it).filter(it => it.callbacks.length > 0);
}
return [...subscribers, {

@@ -1017,7 +941,6 @@ element,

};
const removeSubscriber = (element, callback) => subscribers.map(it => it.element === element ? { ...it,
const removeSubscriber = (element, callback) => subscribers.map(it => it.element === element ? {
...it,
callbacks: it.callbacks.filter(subCallback => subCallback !== callback)
} : it).filter(it => it.callbacks.length > 0);
const onUpdate = entries => {

@@ -1030,3 +953,2 @@ entries.forEach(entry => {

} = _ref2;
if (element === entry.target) {

@@ -1040,9 +962,6 @@ callbacks.forEach(callback => {

};
const observer = new Observer(onUpdate, options);
const unsubscribe = function (element) {
let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
subscribers = removeSubscriber(element, callback);
if (typeof observer.unobserve === 'undefined') {

@@ -1055,5 +974,3 @@ observer.disconnect();

}
const currentSubscriber = subscribers.find(it => it.element === element) || null;
if (currentSubscriber === null) {

@@ -1063,7 +980,5 @@ observer.unobserve(element);

};
const subscribe = (element, callback) => {
const currentSubscriber = subscribers.find(it => it.element === element) || null;
subscribers = addSubscriber(element, callback);
if (currentSubscriber === null) {

@@ -1073,3 +988,2 @@ observer.observe(element);

};
return {

@@ -1081,13 +995,17 @@ subscribe,

};
const getObserver = function (Observer) {
const getObserver = function () {
let Observer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (Observer === null) {
return {
observer: null,
subscribe: () => {},
unsubscribe: () => {}
};
}
const observerKey = getOptionsKey(options);
if (!observersCache.has(Observer)) {
observersCache.set(Observer, {});
}
const observers = observersCache.get(Observer);
if (typeof observers[observerKey] === 'undefined') {

@@ -1097,3 +1015,2 @@ observers[observerKey] = createObserver(Observer, options);

}
return observers[observerKey];

@@ -1119,22 +1036,15 @@ };

} = nodeRef;
const callback = newEntry => setEntry(newEntry);
let unsubscribe = null;
if (nodeElement !== null) {
const newOpts = {};
if (root !== null) {
newOpts.root = root;
}
if (rootMargin !== null) {
newOpts.rootMargin = rootMargin;
}
if (threshold !== null) {
newOpts.threshold = threshold;
}
const {

@@ -1147,3 +1057,2 @@ subscribe,

}
currentElement.current = nodeElement;

@@ -1161,6 +1070,6 @@ return () => {

};
/**
* Intersection Observer
*/
const defaultThreshold = [0, 1.0];

@@ -1184,3 +1093,3 @@ const intersectionObserverInitialEntry = {

} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return useObserver(IntersectionObserver, {
return useObserver(typeof IntersectionObserver !== 'undefined' ? IntersectionObserver : null, {
root,

@@ -1192,6 +1101,6 @@ rootMargin,

};
/**
* Resize Observer
*/
const resizeObserverInitialEntry = {

@@ -1207,3 +1116,3 @@ target: null,

} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return useObserver(ResizeObserver, {
return useObserver(typeof ResizeObserver !== 'undefined' ? ResizeObserver : null, {
disabled

@@ -1215,3 +1124,2 @@ }, resizeObserverInitialEntry);

const debug$1 = createDebug('folklore:video:youtube');
function useYouTubePlayer(id) {

@@ -1232,3 +1140,2 @@ let {

}
const regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;

@@ -1239,4 +1146,4 @@ const match = url.match(regExp);

} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
const [apiLoaded, setApiLoaded] = useState(typeof window.YT !== 'undefined');
const apiRef = useRef(typeof window.YT !== 'undefined' ? window.YT : null);
const [apiLoaded, setApiLoaded] = useState(typeof window !== 'undefined' && typeof window.YT !== 'undefined');
const apiRef = useRef(typeof window !== 'undefined' && typeof window.YT !== 'undefined' ? window.YT : null);
const elementRef = useRef(null);

@@ -1262,3 +1169,2 @@ const playerRef = useRef(null);

let canceled = false;
if (!apiLoaded && videoId !== null) {

@@ -1274,3 +1180,2 @@ debug$1('Load API');

}
return () => {

@@ -1297,7 +1202,5 @@ canceled = true;

const promise = player !== null && typeof player.setVolume !== 'undefined' ? Promise.resolve(player.setVolume(volume * 100)) : Promise.reject(NO_PLAYER_ERROR$1);
if (customOnVolumeChange) {
customOnVolumeChange(volume);
}
return promise;

@@ -1334,4 +1237,6 @@ }, [customOnVolumeChange]);

}
}, []); // Detect iframe switch and destroy player
}, []);
// Detect iframe switch and destroy player
useEffect(() => {

@@ -1341,3 +1246,2 @@ const {

} = playerRef;
if (playerElementRef.current !== elementRef.current && currentPlayer !== null) {

@@ -1347,4 +1251,5 @@ debug$1('iFrame switched');

}
}, [elementHasChanged]); // Create player
}, [elementHasChanged]);
// Create player
useEffect(() => {

@@ -1360,3 +1265,2 @@ const {

} = elementRef;
if (!apiLoaded || videoId === null || element === null) {

@@ -1366,5 +1270,3 @@ destroyPlayer();

}
let player = currentPlayer;
if (player !== null && typeof player.loadVideoById !== 'undefined') {

@@ -1375,3 +1277,2 @@ debug$1('Switch video [ID: %s]', videoId);

debug$1('Create player [ID: %s]', videoId);
const onReady = _ref => {

@@ -1385,12 +1286,10 @@ let {

const newDuration = target.getDuration();
if (newDuration !== metadata.duration) {
setMetadata({ ...metadata,
setMetadata({
...metadata,
duration: newDuration
});
}
debug$1('onReady [ID: %s]', videoId);
};
const onStateChange = _ref2 => {

@@ -1408,3 +1307,2 @@ let {

let stateLabel = null;
if (newState.playing) {

@@ -1423,6 +1321,4 @@ stateLabel = 'playing';

}
debug$1('onStateChange %s [ID: %s]', stateLabel, videoId);
};
player = new YT.Player(element, {

@@ -1445,3 +1341,2 @@ videoId,

}
playerRef.current = player;

@@ -1482,3 +1377,2 @@ playerElementRef.current = element;

const NO_PLAYER_ERROR = new Error('No player');
const useVimeoPlayer = function (id) {

@@ -1500,3 +1394,2 @@ let {

}
const match = url.match(/\/[0-9]+/);

@@ -1526,7 +1419,7 @@ return match !== null ? match[1] : null;

duration
}); // Load SDK
});
// Load SDK
useEffect(() => {
let canceled = false;
if (!apiLoaded && id !== null) {

@@ -1542,3 +1435,2 @@ debug('Load API');

}
return () => {

@@ -1594,3 +1486,2 @@ canceled = true;

} = playerRef;
if (player !== null) {

@@ -1600,3 +1491,2 @@ debug('Unload video');

}
if (player !== null) {

@@ -1611,3 +1501,2 @@ debug('Unset video');

} = playerRef;
if (playerElementRef.current !== elementRef.current && currentPlayer !== null) {

@@ -1617,4 +1506,5 @@ debug('iFrame switched');

}
}, [elementHasChanged]); // Create player
}, [elementHasChanged]);
// Create player
useEffect(() => {

@@ -1630,3 +1520,2 @@ const {

} = elementRef;
if (!apiLoaded || videoId === null || element === null) {

@@ -1636,5 +1525,3 @@ destroyVideo();

}
let player = currentPlayer;
if (player === null) {

@@ -1660,7 +1547,7 @@ debug('Create player [ID: %s]', videoId);

}
playerRef.current = player;
playerElementRef.current = element;
}, [apiLoaded, videoId, elementHasChanged, setReady, destroyVideo, setLoaded]); // Bind player events
}, [apiLoaded, videoId, elementHasChanged, setReady, destroyVideo, setLoaded]);
// Bind player events
useEffect(() => {

@@ -1670,17 +1557,12 @@ const {

} = playerRef;
if (player === null) {
return () => {};
}
let canceled = false;
const onLoaded = () => {
Promise.all([player.getDuration(), player.getVideoWidth(), player.getVideoHeight(), player.getMuted()]).then(_ref => {
let [newDuration, newWidth, newHeight, newMuted] = _ref;
if (canceled) {
return;
}
const newMetadata = {

@@ -1692,7 +1574,5 @@ duration: newDuration,

setMetadata(newMetadata);
if (newMuted) {
setVolumeState(0);
}
setLoaded(true);

@@ -1702,3 +1582,2 @@ });

};
const onPlay = () => {

@@ -1718,3 +1597,2 @@ setPlayState({

};
const onPause = () => {

@@ -1729,3 +1607,2 @@ setPlayState({

};
const onVolumeChange = _ref2 => {

@@ -1738,3 +1615,2 @@ let {

};
const onEnded = () => {

@@ -1749,3 +1625,2 @@ setPlayState({

};
const onBufferStart = () => {

@@ -1760,3 +1635,2 @@ setPlayState({

};
const onBufferEnded = () => {

@@ -1771,3 +1645,2 @@ setPlayState({

};
debug('Bind events [ID: %s]', videoId);

@@ -1842,3 +1715,2 @@ player.on('loaded', onLoaded);

let player = null;
if (service === 'dailymotion') {

@@ -1853,3 +1725,2 @@ player = dailymotionPlayer;

}
const {

@@ -1894,3 +1765,2 @@ playing = false,

const hasMetadata = metaWidth !== null || metaHeight !== null || metaDuration !== null;
if (hasMetadata && customOnMetadataChange !== null) {

@@ -1911,5 +1781,3 @@ customOnMetadataChange({

});
const currentScroll = getWindowScroll();
const useWindowScroll = function () {

@@ -1923,3 +1791,2 @@ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

const newScroll = getWindowScroll();
if (currentScroll.x !== newScroll.x || currentScroll.y !== newScroll.y) {

@@ -1931,3 +1798,2 @@ currentScroll.x = newScroll.x;

}
return null;

@@ -1937,3 +1803,2 @@ }, [setScroll]);

const newScroll = updateScroll();
if (newScroll !== null && onChange !== null) {

@@ -1955,3 +1820,2 @@ onChange(newScroll);

let currentSize = getWindowSize();
function useWindowSize() {

@@ -1964,3 +1828,2 @@ let {

const newSize = getWindowSize();
if (currentSize.width !== newSize.width || currentSize.height !== newSize.height) {

@@ -1971,3 +1834,2 @@ currentSize = newSize;

}
return null;

@@ -1977,3 +1839,2 @@ }, [setSize]);

const newSize = updateSize();
if (newSize !== null && onChange !== null) {

@@ -1980,0 +1841,0 @@ onChange(newSize);

{
"name": "@folklore/hooks",
"version": "0.0.31",
"version": "0.0.32",
"description": "React hooks",

@@ -51,3 +51,3 @@ "keywords": [

},
"gitHead": "80b0b5301d3c79cca819327b0f95d8fac1a0b77d",
"gitHead": "3d237ba72294e3624d4f77e4a398478c38d5979f",
"dependencies": {

@@ -54,0 +54,0 @@ "@folklore/events": "^0.0.4",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc