@uploadcare/react-widget
Version:
React File Uploader. React component with uploading from multiple sources
52 lines (44 loc) • 1.6 kB
JavaScript
import { useRef, useEffect, useCallback } from 'react';
import { b as _slicedToArray } from './index-881e303a.mjs';
import isEqual from 'react-fast-compare';
var useCommitedRef = function useCommitedRef(value) {
var ref = useRef(value);
useEffect(function () {
ref.current = value;
}, [value]);
return ref;
};
var useCommitedCallback = function useCommitedCallback(callback) {
var ref = useCommitedRef(callback);
return useCallback(function () {
return ref.current && ref.current.apply(ref, arguments);
}, [ref]);
};
var useDeepEffect = function useDeepEffect(effect, deps) {
var ref = useRef(undefined);
if (!isEqual(deps, ref.current)) {
ref.current = deps;
}
// eslint-disable-next-line react-hooks/exhaustive-deps
useEffect(effect, ref.current);
};
var useCustomTabs = function useCustomTabs(tabs, uploadcare) {
useDeepEffect(function () {
var customTabs = Object.entries(tabs || []);
customTabs.forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
name = _ref2[0],
implementation = _ref2[1];
uploadcare.registerTab(name, function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return implementation.apply(void 0, args.concat([uploadcare]));
});
});
}, [tabs, uploadcare]);
};
var defaultPreviewUrlCallback = function defaultPreviewUrlCallback(cdnUrl) {
return cdnUrl;
};
export { useCustomTabs as a, useDeepEffect as b, defaultPreviewUrlCallback as d, useCommitedCallback as u };