first commit
This commit is contained in:
2
frontend/node_modules/rc-util/lib/hooks/useEffect.d.ts
generated
vendored
Normal file
2
frontend/node_modules/rc-util/lib/hooks/useEffect.d.ts
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/** As `React.useEffect` but pass origin value in callback and not need care deps length change. */
|
||||
export default function useEffect(callback: (prevDeps: any[]) => void, deps: any[]): void;
|
||||
20
frontend/node_modules/rc-util/lib/hooks/useEffect.js
generated
vendored
Normal file
20
frontend/node_modules/rc-util/lib/hooks/useEffect.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useEffect;
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
/** As `React.useEffect` but pass origin value in callback and not need care deps length change. */
|
||||
function useEffect(callback, deps) {
|
||||
var prevRef = React.useRef(deps);
|
||||
React.useEffect(function () {
|
||||
if (deps.length !== prevRef.current.length || deps.some(function (dep, index) {
|
||||
return dep !== prevRef.current[index];
|
||||
})) {
|
||||
callback(prevRef.current);
|
||||
}
|
||||
prevRef.current = deps;
|
||||
});
|
||||
}
|
||||
1
frontend/node_modules/rc-util/lib/hooks/useEvent.d.ts
generated
vendored
Normal file
1
frontend/node_modules/rc-util/lib/hooks/useEvent.d.ts
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export default function useEvent<T extends Function>(callback: T): T;
|
||||
20
frontend/node_modules/rc-util/lib/hooks/useEvent.js
generated
vendored
Normal file
20
frontend/node_modules/rc-util/lib/hooks/useEvent.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useEvent;
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
function useEvent(callback) {
|
||||
var fnRef = React.useRef();
|
||||
fnRef.current = callback;
|
||||
var memoFn = React.useCallback(function () {
|
||||
var _fnRef$current;
|
||||
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));
|
||||
}, []);
|
||||
return memoFn;
|
||||
}
|
||||
4
frontend/node_modules/rc-util/lib/hooks/useId.d.ts
generated
vendored
Normal file
4
frontend/node_modules/rc-util/lib/hooks/useId.d.ts
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/** @private Note only worked in develop env. Not work in production. */
|
||||
export declare function resetUuid(): void;
|
||||
declare const _default: (id?: string) => string;
|
||||
export default _default;
|
||||
68
frontend/node_modules/rc-util/lib/hooks/useId.js
generated
vendored
Normal file
68
frontend/node_modules/rc-util/lib/hooks/useId.js
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
exports.resetUuid = resetUuid;
|
||||
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
||||
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
function getUseId() {
|
||||
// We need fully clone React function here to avoid webpack warning React 17 do not export `useId`
|
||||
var fullClone = (0, _objectSpread2.default)({}, React);
|
||||
return fullClone.useId;
|
||||
}
|
||||
var uuid = 0;
|
||||
|
||||
/** @private Note only worked in develop env. Not work in production. */
|
||||
function resetUuid() {
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
uuid = 0;
|
||||
}
|
||||
}
|
||||
var useOriginId = getUseId();
|
||||
var _default = exports.default = useOriginId ?
|
||||
// Use React `useId`
|
||||
function useId(id) {
|
||||
var reactId = useOriginId();
|
||||
|
||||
// Developer passed id is single source of truth
|
||||
if (id) {
|
||||
return id;
|
||||
}
|
||||
|
||||
// Test env always return mock id
|
||||
if (process.env.NODE_ENV === 'test') {
|
||||
return 'test-id';
|
||||
}
|
||||
return reactId;
|
||||
} :
|
||||
// Use compatible of `useId`
|
||||
function useCompatId(id) {
|
||||
// Inner id for accessibility usage. Only work in client side
|
||||
var _React$useState = React.useState('ssr-id'),
|
||||
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
||||
innerId = _React$useState2[0],
|
||||
setInnerId = _React$useState2[1];
|
||||
React.useEffect(function () {
|
||||
var nextId = uuid;
|
||||
uuid += 1;
|
||||
setInnerId("rc_unique_".concat(nextId));
|
||||
}, []);
|
||||
|
||||
// Developer passed id is single source of truth
|
||||
if (id) {
|
||||
return id;
|
||||
}
|
||||
|
||||
// Test env always return mock id
|
||||
if (process.env.NODE_ENV === 'test') {
|
||||
return 'test-id';
|
||||
}
|
||||
|
||||
// Return react native id or inner id
|
||||
return innerId;
|
||||
};
|
||||
4
frontend/node_modules/rc-util/lib/hooks/useLayoutEffect.d.ts
generated
vendored
Normal file
4
frontend/node_modules/rc-util/lib/hooks/useLayoutEffect.d.ts
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
import * as React from 'react';
|
||||
declare const useLayoutEffect: (callback: (mount: boolean) => void | VoidFunction, deps?: React.DependencyList) => void;
|
||||
export declare const useLayoutUpdateEffect: typeof React.useEffect;
|
||||
export default useLayoutEffect;
|
||||
36
frontend/node_modules/rc-util/lib/hooks/useLayoutEffect.js
generated
vendored
Normal file
36
frontend/node_modules/rc-util/lib/hooks/useLayoutEffect.js
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.useLayoutUpdateEffect = exports.default = void 0;
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
var _canUseDom = _interopRequireDefault(require("../Dom/canUseDom"));
|
||||
/**
|
||||
* Wrap `React.useLayoutEffect` which will not throw warning message in test env
|
||||
*/
|
||||
var useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && (0, _canUseDom.default)() ? React.useLayoutEffect : React.useEffect;
|
||||
var useLayoutEffect = function useLayoutEffect(callback, deps) {
|
||||
var firstMountRef = React.useRef(true);
|
||||
useInternalLayoutEffect(function () {
|
||||
return callback(firstMountRef.current);
|
||||
}, deps);
|
||||
|
||||
// We tell react that first mount has passed
|
||||
useInternalLayoutEffect(function () {
|
||||
firstMountRef.current = false;
|
||||
return function () {
|
||||
firstMountRef.current = true;
|
||||
};
|
||||
}, []);
|
||||
};
|
||||
var useLayoutUpdateEffect = exports.useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {
|
||||
useLayoutEffect(function (firstMount) {
|
||||
if (!firstMount) {
|
||||
return callback();
|
||||
}
|
||||
}, deps);
|
||||
};
|
||||
var _default = exports.default = useLayoutEffect;
|
||||
1
frontend/node_modules/rc-util/lib/hooks/useMemo.d.ts
generated
vendored
Normal file
1
frontend/node_modules/rc-util/lib/hooks/useMemo.d.ts
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
export default function useMemo<Value, Condition = any[]>(getValue: () => Value, condition: Condition, shouldUpdate: (prev: Condition, next: Condition) => boolean): Value;
|
||||
16
frontend/node_modules/rc-util/lib/hooks/useMemo.js
generated
vendored
Normal file
16
frontend/node_modules/rc-util/lib/hooks/useMemo.js
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useMemo;
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
function useMemo(getValue, condition, shouldUpdate) {
|
||||
var cacheRef = React.useRef({});
|
||||
if (!('value' in cacheRef.current) || shouldUpdate(cacheRef.current.condition, condition)) {
|
||||
cacheRef.current.value = getValue();
|
||||
cacheRef.current.condition = condition;
|
||||
}
|
||||
return cacheRef.current.value;
|
||||
}
|
||||
12
frontend/node_modules/rc-util/lib/hooks/useMergedState.d.ts
generated
vendored
Normal file
12
frontend/node_modules/rc-util/lib/hooks/useMergedState.d.ts
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
type Updater<T> = (updater: T | ((origin: T) => T), ignoreDestroy?: boolean) => void;
|
||||
/**
|
||||
* Similar to `useState` but will use props value if provided.
|
||||
* Note that internal use rc-util `useState` hook.
|
||||
*/
|
||||
export default function useMergedState<T, R = T>(defaultStateValue: T | (() => T), option?: {
|
||||
defaultValue?: T | (() => T);
|
||||
value?: T;
|
||||
onChange?: (value: T, prevValue: T) => void;
|
||||
postState?: (value: T) => T;
|
||||
}): [R, Updater<T>];
|
||||
export {};
|
||||
70
frontend/node_modules/rc-util/lib/hooks/useMergedState.js
generated
vendored
Normal file
70
frontend/node_modules/rc-util/lib/hooks/useMergedState.js
generated
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useMergedState;
|
||||
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
||||
var _useEvent = _interopRequireDefault(require("./useEvent"));
|
||||
var _useLayoutEffect = require("./useLayoutEffect");
|
||||
var _useState5 = _interopRequireDefault(require("./useState"));
|
||||
/** We only think `undefined` is empty */
|
||||
function hasValue(value) {
|
||||
return value !== undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Similar to `useState` but will use props value if provided.
|
||||
* Note that internal use rc-util `useState` hook.
|
||||
*/
|
||||
function useMergedState(defaultStateValue, option) {
|
||||
var _ref = option || {},
|
||||
defaultValue = _ref.defaultValue,
|
||||
value = _ref.value,
|
||||
onChange = _ref.onChange,
|
||||
postState = _ref.postState;
|
||||
|
||||
// ======================= Init =======================
|
||||
var _useState = (0, _useState5.default)(function () {
|
||||
if (hasValue(value)) {
|
||||
return value;
|
||||
} else if (hasValue(defaultValue)) {
|
||||
return typeof defaultValue === 'function' ? defaultValue() : defaultValue;
|
||||
} else {
|
||||
return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;
|
||||
}
|
||||
}),
|
||||
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
||||
innerValue = _useState2[0],
|
||||
setInnerValue = _useState2[1];
|
||||
var mergedValue = value !== undefined ? value : innerValue;
|
||||
var postMergedValue = postState ? postState(mergedValue) : mergedValue;
|
||||
|
||||
// ====================== Change ======================
|
||||
var onChangeFn = (0, _useEvent.default)(onChange);
|
||||
var _useState3 = (0, _useState5.default)([mergedValue]),
|
||||
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
||||
prevValue = _useState4[0],
|
||||
setPrevValue = _useState4[1];
|
||||
(0, _useLayoutEffect.useLayoutUpdateEffect)(function () {
|
||||
var prev = prevValue[0];
|
||||
if (innerValue !== prev) {
|
||||
onChangeFn(innerValue, prev);
|
||||
}
|
||||
}, [prevValue]);
|
||||
|
||||
// Sync value back to `undefined` when it from control to un-control
|
||||
(0, _useLayoutEffect.useLayoutUpdateEffect)(function () {
|
||||
if (!hasValue(value)) {
|
||||
setInnerValue(value);
|
||||
}
|
||||
}, [value]);
|
||||
|
||||
// ====================== Update ======================
|
||||
var triggerChange = (0, _useEvent.default)(function (updater, ignoreDestroy) {
|
||||
setInnerValue(updater, ignoreDestroy);
|
||||
setPrevValue([mergedValue], ignoreDestroy);
|
||||
});
|
||||
return [postMergedValue, triggerChange];
|
||||
}
|
||||
6
frontend/node_modules/rc-util/lib/hooks/useMobile.d.ts
generated
vendored
Normal file
6
frontend/node_modules/rc-util/lib/hooks/useMobile.d.ts
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Hook to detect if the user is on a mobile device
|
||||
* Notice that this hook will only detect the device type in effect, so it will always be false in server side
|
||||
*/
|
||||
declare const useMobile: () => boolean;
|
||||
export default useMobile;
|
||||
26
frontend/node_modules/rc-util/lib/hooks/useMobile.js
generated
vendored
Normal file
26
frontend/node_modules/rc-util/lib/hooks/useMobile.js
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
||||
var _react = require("react");
|
||||
var _isMobile = _interopRequireDefault(require("../isMobile"));
|
||||
var _useLayoutEffect = _interopRequireDefault(require("./useLayoutEffect"));
|
||||
/**
|
||||
* Hook to detect if the user is on a mobile device
|
||||
* Notice that this hook will only detect the device type in effect, so it will always be false in server side
|
||||
*/
|
||||
var useMobile = function useMobile() {
|
||||
var _useState = (0, _react.useState)(false),
|
||||
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
||||
mobile = _useState2[0],
|
||||
setMobile = _useState2[1];
|
||||
(0, _useLayoutEffect.default)(function () {
|
||||
setMobile((0, _isMobile.default)());
|
||||
}, []);
|
||||
return mobile;
|
||||
};
|
||||
var _default = exports.default = useMobile;
|
||||
14
frontend/node_modules/rc-util/lib/hooks/useState.d.ts
generated
vendored
Normal file
14
frontend/node_modules/rc-util/lib/hooks/useState.d.ts
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
type Updater<T> = T | ((prevValue: T) => T);
|
||||
export type SetState<T> = (nextValue: Updater<T>,
|
||||
/**
|
||||
* Will not update state when destroyed.
|
||||
* Developer should make sure this is safe to ignore.
|
||||
*/
|
||||
ignoreDestroy?: boolean) => void;
|
||||
/**
|
||||
* Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.
|
||||
* We do not make this auto is to avoid real memory leak.
|
||||
* Developer should confirm it's safe to ignore themselves.
|
||||
*/
|
||||
export default function useSafeState<T>(defaultValue?: T | (() => T)): [T, SetState<T>];
|
||||
export {};
|
||||
35
frontend/node_modules/rc-util/lib/hooks/useState.js
generated
vendored
Normal file
35
frontend/node_modules/rc-util/lib/hooks/useState.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useSafeState;
|
||||
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
/**
|
||||
* Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.
|
||||
* We do not make this auto is to avoid real memory leak.
|
||||
* Developer should confirm it's safe to ignore themselves.
|
||||
*/
|
||||
function useSafeState(defaultValue) {
|
||||
var destroyRef = React.useRef(false);
|
||||
var _React$useState = React.useState(defaultValue),
|
||||
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
||||
value = _React$useState2[0],
|
||||
setValue = _React$useState2[1];
|
||||
React.useEffect(function () {
|
||||
destroyRef.current = false;
|
||||
return function () {
|
||||
destroyRef.current = true;
|
||||
};
|
||||
}, []);
|
||||
function safeSetState(updater, ignoreDestroy) {
|
||||
if (ignoreDestroy && destroyRef.current) {
|
||||
return;
|
||||
}
|
||||
setValue(updater);
|
||||
}
|
||||
return [value, safeSetState];
|
||||
}
|
||||
9
frontend/node_modules/rc-util/lib/hooks/useSyncState.d.ts
generated
vendored
Normal file
9
frontend/node_modules/rc-util/lib/hooks/useSyncState.d.ts
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
type Updater<T> = T | ((prevValue: T) => T);
|
||||
export type SetState<T> = (nextValue: Updater<T>) => void;
|
||||
/**
|
||||
* Same as React.useState but will always get latest state.
|
||||
* This is useful when React merge multiple state updates into one.
|
||||
* e.g. onTransitionEnd trigger multiple event at once will be merged state update in React.
|
||||
*/
|
||||
export default function useSyncState<T>(defaultValue?: T): [get: () => T, set: SetState<T>];
|
||||
export {};
|
||||
32
frontend/node_modules/rc-util/lib/hooks/useSyncState.js
generated
vendored
Normal file
32
frontend/node_modules/rc-util/lib/hooks/useSyncState.js
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = useSyncState;
|
||||
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
||||
var React = _interopRequireWildcard(require("react"));
|
||||
var _useEvent = _interopRequireDefault(require("./useEvent"));
|
||||
/**
|
||||
* Same as React.useState but will always get latest state.
|
||||
* This is useful when React merge multiple state updates into one.
|
||||
* e.g. onTransitionEnd trigger multiple event at once will be merged state update in React.
|
||||
*/
|
||||
function useSyncState(defaultValue) {
|
||||
var _React$useReducer = React.useReducer(function (x) {
|
||||
return x + 1;
|
||||
}, 0),
|
||||
_React$useReducer2 = (0, _slicedToArray2.default)(_React$useReducer, 2),
|
||||
forceUpdate = _React$useReducer2[1];
|
||||
var currentValueRef = React.useRef(defaultValue);
|
||||
var getValue = (0, _useEvent.default)(function () {
|
||||
return currentValueRef.current;
|
||||
});
|
||||
var setValue = (0, _useEvent.default)(function (updater) {
|
||||
currentValueRef.current = typeof updater === 'function' ? updater(currentValueRef.current) : updater;
|
||||
forceUpdate();
|
||||
});
|
||||
return [getValue, setValue];
|
||||
}
|
||||
Reference in New Issue
Block a user