@startlibs/core 1.0.7 → 1.2.0-rc.1
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/lib/SlotFill.mjs +232 -0
- package/lib/SlotFill.mjs.map +1 -0
- package/lib/StartlibsProvider.mjs +62 -0
- package/lib/StartlibsProvider.mjs.map +1 -0
- package/lib/hocs/WithLazyResource.mjs +74 -0
- package/lib/hocs/WithLazyResource.mjs.map +1 -0
- package/lib/hocs/WithRef.mjs +20 -0
- package/lib/hocs/WithRef.mjs.map +1 -0
- package/lib/hocs/consumes.mjs +22 -0
- package/lib/hocs/consumes.mjs.map +1 -0
- package/lib/hocs/withDialogError.mjs +22 -0
- package/lib/hocs/withDialogError.mjs.map +1 -0
- package/lib/hocs/withGroupEvent.mjs +45 -0
- package/lib/hocs/withGroupEvent.mjs.map +1 -0
- package/lib/hooks/WithConstant.mjs +13 -0
- package/lib/hooks/WithConstant.mjs.map +1 -0
- package/lib/hooks/WithEffect.mjs +12 -0
- package/lib/hooks/WithEffect.mjs.map +1 -0
- package/lib/hooks/useAsyncEffect.mjs +14 -0
- package/lib/hooks/useAsyncEffect.mjs.map +1 -0
- package/lib/hooks/useCallState.mjs +21 -0
- package/lib/hooks/useCallState.mjs.map +1 -0
- package/lib/hooks/useCallbackStable.mjs +17 -0
- package/lib/hooks/useCallbackStable.mjs.map +1 -0
- package/lib/hooks/useConstant.mjs +21 -0
- package/lib/hooks/useConstant.mjs.map +1 -0
- package/lib/hooks/useConsumerCatalog.mjs +25 -0
- package/lib/hooks/useConsumerCatalog.mjs.map +1 -0
- package/lib/hooks/useEnsureRef.mjs +9 -0
- package/lib/hooks/useEnsureRef.mjs.map +1 -0
- package/lib/hooks/useForceUpdate.mjs +28 -0
- package/lib/hooks/useForceUpdate.mjs.map +1 -0
- package/lib/hooks/useIsUnmounted.mjs +15 -0
- package/lib/hooks/useIsUnmounted.mjs.map +1 -0
- package/lib/hooks/usePopupToggle.mjs +33 -0
- package/lib/hooks/usePopupToggle.mjs.map +1 -0
- package/lib/hooks/usePrevious.mjs +28 -0
- package/lib/hooks/usePrevious.mjs.map +1 -0
- package/lib/hooks/useRecycleFocus.mjs +36 -0
- package/lib/hooks/useRecycleFocus.mjs.map +1 -0
- package/lib/hooks/useRefMemo.mjs +13 -0
- package/lib/hooks/useRefMemo.mjs.map +1 -0
- package/lib/hooks/useRefState.mjs +29 -0
- package/lib/hooks/useRefState.mjs.map +1 -0
- package/lib/hooks/useSignal.mjs +271 -0
- package/lib/hooks/useSignal.mjs.map +1 -0
- package/lib/hooks/useTitle.mjs +17 -0
- package/lib/hooks/useTitle.mjs.map +1 -0
- package/lib/hooks/useToggle.mjs +152 -0
- package/lib/hooks/useToggle.mjs.map +1 -0
- package/lib/hooks/useUpdateEffect.mjs +15 -0
- package/lib/hooks/useUpdateEffect.mjs.map +1 -0
- package/lib/hooks/useUpdateOnResize.mjs +18 -0
- package/lib/hooks/useUpdateOnResize.mjs.map +1 -0
- package/lib/hooks/useWithTransition.mjs +18 -0
- package/lib/hooks/useWithTransition.mjs.map +1 -0
- package/lib/hooks/willUseLayers.mjs +55 -0
- package/lib/hooks/willUseLayers.mjs.map +1 -0
- package/lib/hooks/willUseSharedCallback.mjs +70 -0
- package/lib/hooks/willUseSharedCallback.mjs.map +1 -0
- package/lib/hooks/willUseSharedState.mjs +41 -0
- package/lib/hooks/willUseSharedState.mjs.map +1 -0
- package/lib/hooks/willUseSpreadState.mjs +119 -0
- package/lib/hooks/willUseSpreadState.mjs.map +1 -0
- package/lib/index.cjs +1474 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.mjs +33 -0
- package/lib/index.mjs.map +1 -0
- package/lib-yak/SlotFill.mjs +230 -0
- package/lib-yak/SlotFill.mjs.map +1 -0
- package/lib-yak/StartlibsProvider.mjs +62 -0
- package/lib-yak/StartlibsProvider.mjs.map +1 -0
- package/lib-yak/hocs/WithLazyResource.mjs +74 -0
- package/lib-yak/hocs/WithLazyResource.mjs.map +1 -0
- package/lib-yak/hocs/WithRef.mjs +20 -0
- package/lib-yak/hocs/WithRef.mjs.map +1 -0
- package/lib-yak/hocs/consumes.mjs +22 -0
- package/lib-yak/hocs/consumes.mjs.map +1 -0
- package/lib-yak/hocs/withDialogError.mjs +22 -0
- package/lib-yak/hocs/withDialogError.mjs.map +1 -0
- package/lib-yak/hocs/withGroupEvent.mjs +45 -0
- package/lib-yak/hocs/withGroupEvent.mjs.map +1 -0
- package/lib-yak/hooks/WithConstant.mjs +13 -0
- package/lib-yak/hooks/WithConstant.mjs.map +1 -0
- package/lib-yak/hooks/WithEffect.mjs +12 -0
- package/lib-yak/hooks/WithEffect.mjs.map +1 -0
- package/lib-yak/hooks/useAsyncEffect.mjs +14 -0
- package/lib-yak/hooks/useAsyncEffect.mjs.map +1 -0
- package/lib-yak/hooks/useCallState.mjs +21 -0
- package/lib-yak/hooks/useCallState.mjs.map +1 -0
- package/lib-yak/hooks/useCallbackStable.mjs +17 -0
- package/lib-yak/hooks/useCallbackStable.mjs.map +1 -0
- package/lib-yak/hooks/useConstant.mjs +21 -0
- package/lib-yak/hooks/useConstant.mjs.map +1 -0
- package/lib-yak/hooks/useConsumerCatalog.mjs +25 -0
- package/lib-yak/hooks/useConsumerCatalog.mjs.map +1 -0
- package/lib-yak/hooks/useEnsureRef.mjs +9 -0
- package/lib-yak/hooks/useEnsureRef.mjs.map +1 -0
- package/lib-yak/hooks/useForceUpdate.mjs +28 -0
- package/lib-yak/hooks/useForceUpdate.mjs.map +1 -0
- package/lib-yak/hooks/useIsUnmounted.mjs +15 -0
- package/lib-yak/hooks/useIsUnmounted.mjs.map +1 -0
- package/lib-yak/hooks/usePopupToggle.mjs +33 -0
- package/lib-yak/hooks/usePopupToggle.mjs.map +1 -0
- package/lib-yak/hooks/usePrevious.mjs +28 -0
- package/lib-yak/hooks/usePrevious.mjs.map +1 -0
- package/lib-yak/hooks/useRecycleFocus.mjs +34 -0
- package/lib-yak/hooks/useRecycleFocus.mjs.map +1 -0
- package/lib-yak/hooks/useRefMemo.mjs +13 -0
- package/lib-yak/hooks/useRefMemo.mjs.map +1 -0
- package/lib-yak/hooks/useRefState.mjs +29 -0
- package/lib-yak/hooks/useRefState.mjs.map +1 -0
- package/lib-yak/hooks/useSignal.mjs +271 -0
- package/lib-yak/hooks/useSignal.mjs.map +1 -0
- package/lib-yak/hooks/useTitle.mjs +17 -0
- package/lib-yak/hooks/useTitle.mjs.map +1 -0
- package/lib-yak/hooks/useToggle.mjs +152 -0
- package/lib-yak/hooks/useToggle.mjs.map +1 -0
- package/lib-yak/hooks/useUpdateEffect.mjs +15 -0
- package/lib-yak/hooks/useUpdateEffect.mjs.map +1 -0
- package/lib-yak/hooks/useUpdateOnResize.mjs +18 -0
- package/lib-yak/hooks/useUpdateOnResize.mjs.map +1 -0
- package/lib-yak/hooks/useWithTransition.mjs +18 -0
- package/lib-yak/hooks/useWithTransition.mjs.map +1 -0
- package/lib-yak/hooks/willUseLayers.mjs +55 -0
- package/lib-yak/hooks/willUseLayers.mjs.map +1 -0
- package/lib-yak/hooks/willUseSharedCallback.mjs +70 -0
- package/lib-yak/hooks/willUseSharedCallback.mjs.map +1 -0
- package/lib-yak/hooks/willUseSharedState.mjs +41 -0
- package/lib-yak/hooks/willUseSharedState.mjs.map +1 -0
- package/lib-yak/hooks/willUseSpreadState.mjs +119 -0
- package/lib-yak/hooks/willUseSpreadState.mjs.map +1 -0
- package/lib-yak/index.mjs +33 -0
- package/lib-yak/index.mjs.map +1 -0
- package/package.json +53 -30
- package/src/SlotFill.jsx +166 -0
- package/src/StartlibsProvider.jsx +62 -0
- package/src/hocs/WithLazyResource.jsx +32 -0
- package/src/hocs/WithRef.js +20 -0
- package/src/hocs/Wrapper.jsx +40 -0
- package/src/hocs/consumes.jsx +16 -0
- package/src/hocs/withDialogError.jsx +16 -0
- package/src/hocs/withGroupEvent.jsx +43 -0
- package/src/hooks/WithConstant.jsx +7 -0
- package/src/hooks/WithEffect.jsx +6 -0
- package/src/hooks/useAsyncEffect.jsx +11 -0
- package/src/hooks/useCallState.js +15 -0
- package/src/hooks/useCallbackStable.jsx +12 -0
- package/src/hooks/useConstant.js +20 -0
- package/src/hooks/useConsumerCatalog.jsx +21 -0
- package/src/hooks/useEnsureRef.js +6 -0
- package/src/hooks/useForceUpdate.jsx +16 -0
- package/src/hooks/useIsUnmounted.jsx +12 -0
- package/src/hooks/usePopupToggle.js +30 -0
- package/src/hooks/usePrevious.jsx +27 -0
- package/src/hooks/useRecycleFocus.jsx +26 -0
- package/src/hooks/useRefMemo.jsx +10 -0
- package/src/hooks/useRefState.js +26 -0
- package/src/hooks/useSignal.jsx +193 -0
- package/src/hooks/useTitle.jsx +12 -0
- package/src/hooks/useToggle.js +126 -0
- package/src/hooks/useUpdateEffect.js +14 -0
- package/src/hooks/useUpdateOnResize.jsx +14 -0
- package/src/hooks/useWithTransition.jsx +14 -0
- package/src/hooks/willUseLayers.jsx +42 -0
- package/src/hooks/willUseSharedCallback.jsx +60 -0
- package/src/hooks/willUseSharedState.jsx +34 -0
- package/src/hooks/willUseSpreadState.jsx +103 -0
- package/src/index.js +32 -0
- package/.babelrc +0 -27
- package/lib/index.js +0 -1921
- package/rollup.config.js +0 -53
- package/yarn-error.log +0 -3374
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useRef, useMemo } from 'react';
|
|
2
|
+
import { callIfFunction, _s, callIfFunctions } from '@startlibs/utils';
|
|
3
|
+
|
|
4
|
+
const isPath = path => typeof path === 'string' || typeof path === 'number' || Array.isArray(path);
|
|
5
|
+
const getter = value => path => path !== "" && isPath(path) ? _s.get(path, value) : value;
|
|
6
|
+
const uninitialized = {};
|
|
7
|
+
const useRefState = (defaultValue, setCallback) => {
|
|
8
|
+
const ref = useRef(uninitialized);
|
|
9
|
+
if (ref.current === uninitialized) {
|
|
10
|
+
ref.current = callIfFunction(defaultValue);
|
|
11
|
+
}
|
|
12
|
+
return useMemo(() => {
|
|
13
|
+
const get = path => getter(ref.current)(path);
|
|
14
|
+
const set = (v, config) => {
|
|
15
|
+
const prev = ref.current;
|
|
16
|
+
ref.current = callIfFunctions(v, () => get());
|
|
17
|
+
if (prev !== ref.current && (!config || !config.ignoreCallback)) {
|
|
18
|
+
callIfFunction(setCallback, prev, ref.current);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
get,
|
|
23
|
+
set
|
|
24
|
+
};
|
|
25
|
+
}, []);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { useRefState };
|
|
29
|
+
//# sourceMappingURL=useRefState.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRefState.mjs","sources":["../../src/hooks/useRefState.js"],"sourcesContent":["import React, {useMemo, useRef} from 'react'\nimport {_s, callIfFunction, callIfFunctions} from '@startlibs/utils'\n\nconst isPath = (path) => typeof path === 'string' || typeof path === 'number' || Array.isArray(path)\n\nconst getter = (value) => path => path !== \"\" && isPath(path) ? _s.get(path,value) : value\n\nconst uninitialized = {}\n\nexport const useRefState = (defaultValue, setCallback) => {\n const ref = useRef(uninitialized)\n if (ref.current === uninitialized) {\n ref.current = callIfFunction(defaultValue)\n }\n return useMemo(() => {\n const get = (path) => getter(ref.current)(path)\n const set = (v, config) => {\n const prev = ref.current\n ref.current = callIfFunctions(v, () => get())\n if (prev !== ref.current && (!config || !config.ignoreCallback)) {\n callIfFunction(setCallback, prev, ref.current)\n }\n }\n return {get, set}\n }, [])\n}\n"],"names":["isPath","path","Array","isArray","getter","value","_s","get","uninitialized","useRefState","defaultValue","setCallback","ref","useRef","current","callIfFunction","useMemo","set","v","config","prev","callIfFunctions","ignoreCallback"],"mappings":";;;AAGA,MAAMA,MAAM,GAAIC,IAAI,IAAK,OAAOA,IAAI,KAAK,QAAQ,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAIC,KAAK,CAACC,OAAO,CAACF,IAAI,CAAC;AAEpG,MAAMG,MAAM,GAAIC,KAAK,IAAKJ,IAAI,IAAIA,IAAI,KAAK,EAAE,IAAID,MAAM,CAACC,IAAI,CAAC,GAAGK,EAAE,CAACC,GAAG,CAACN,IAAI,EAACI,KAAK,CAAC,GAAGA,KAAK;AAE1F,MAAMG,aAAa,GAAG,EAAE;MAEXC,WAAW,GAAGA,CAACC,YAAY,EAAEC,WAAW,KAAK;EACxD,MAAMC,GAAG,GAAGC,MAAM,CAACL,aAAa,CAAC;EACjC,IAAII,GAAG,CAACE,OAAO,KAAKN,aAAa,EAAE;IACjCI,GAAG,CAACE,OAAO,GAAGC,cAAc,CAACL,YAAY,CAAC;;EAE5C,OAAOM,OAAO,CAAC,MAAM;IACnB,MAAMT,GAAG,GAAIN,IAAI,IAAKG,MAAM,CAACQ,GAAG,CAACE,OAAO,CAAC,CAACb,IAAI,CAAC;IAC/C,MAAMgB,GAAG,GAAGA,CAACC,CAAC,EAAEC,MAAM,KAAK;MACzB,MAAMC,IAAI,GAAGR,GAAG,CAACE,OAAO;MACxBF,GAAG,CAACE,OAAO,GAAGO,eAAe,CAACH,CAAC,EAAE,MAAMX,GAAG,EAAE,CAAC;MAC7C,IAAIa,IAAI,KAAKR,GAAG,CAACE,OAAO,KAAK,CAACK,MAAM,IAAI,CAACA,MAAM,CAACG,cAAc,CAAC,EAAE;QAC/DP,cAAc,CAACJ,WAAW,EAAES,IAAI,EAAER,GAAG,CAACE,OAAO,CAAC;;KAEjD;IACD,OAAO;MAACP,GAAG;MAAEU;KAAI;GAClB,EAAE,EAAE,CAAC;AACR;;;;"}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import React, { useRef, useEffect, startTransition, useContext, useState, use, useCallback, useMemo } from 'react';
|
|
2
|
+
import { _s, callIfFunction } from '@startlibs/utils';
|
|
3
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
5
|
+
import _update from 'lodash/fp/update';
|
|
6
|
+
import { useLazyConstant, useConstant } from './useConstant.mjs';
|
|
7
|
+
import _isArray from 'lodash/fp/isArray';
|
|
8
|
+
import { useForceUpdate } from './useForceUpdate.mjs';
|
|
9
|
+
import _isPlainObject from 'lodash/fp/isPlainObject';
|
|
10
|
+
import _identity from 'lodash/fp/identity';
|
|
11
|
+
|
|
12
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
+
const IS_ARRAY_ITEMS_EQUALS = (a, b) => a.length === b.length && !a.some((x, i) => !Object.is(x, b[i]));
|
|
15
|
+
const IS_DEPS_EQUALS = function () {
|
|
16
|
+
let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
17
|
+
let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
18
|
+
return Object.is(a, b) || IS_ARRAY_ITEMS_EQUALS(a, b);
|
|
19
|
+
};
|
|
20
|
+
const SHALLOW_IS_EQUAL = (a, b) => Object.is(a, b) || _isArray(a) && _isArray(b) && IS_ARRAY_ITEMS_EQUALS(a, b);
|
|
21
|
+
const EMPTY_DEPS = [];
|
|
22
|
+
const EMPTY_VALUE = {
|
|
23
|
+
"EMPTY": true
|
|
24
|
+
};
|
|
25
|
+
const useUpdateSignal = initialValue => {
|
|
26
|
+
const value = useRef(initialValue);
|
|
27
|
+
value.current = initialValue;
|
|
28
|
+
return useLazyConstant(() => {
|
|
29
|
+
let registered = [];
|
|
30
|
+
const register = function () {
|
|
31
|
+
let selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _identity;
|
|
32
|
+
let isEqual = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SHALLOW_IS_EQUAL;
|
|
33
|
+
let withTransition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
34
|
+
const selectorRef = useRef();
|
|
35
|
+
selectorRef.current = selector;
|
|
36
|
+
const update = useForceUpdate();
|
|
37
|
+
const lastValueRef = useRef(_s.select(selectorRef.current, value.current));
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
const item = [update, selectorRef, isEqual, lastValueRef, withTransition];
|
|
40
|
+
registered = [...registered, item];
|
|
41
|
+
return () => {
|
|
42
|
+
registered = registered.filter(v => v !== item);
|
|
43
|
+
};
|
|
44
|
+
}, []);
|
|
45
|
+
if (value.current === EMPTY_VALUE) {
|
|
46
|
+
return EMPTY_VALUE;
|
|
47
|
+
}
|
|
48
|
+
return lastValueRef.current;
|
|
49
|
+
};
|
|
50
|
+
const call = function () {
|
|
51
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
52
|
+
args[_key] = arguments[_key];
|
|
53
|
+
}
|
|
54
|
+
return registered.forEach(_ref => {
|
|
55
|
+
let _ref2 = _slicedToArray(_ref, 5),
|
|
56
|
+
fn = _ref2[0],
|
|
57
|
+
selectorRef = _ref2[1],
|
|
58
|
+
isEqual = _ref2[2],
|
|
59
|
+
lastValueRef = _ref2[3],
|
|
60
|
+
withTransition = _ref2[4];
|
|
61
|
+
const nextValue = _s.select(selectorRef.current, ...args);
|
|
62
|
+
if (!callIfFunction(isEqual, nextValue, lastValueRef.current)) {
|
|
63
|
+
lastValueRef.current = nextValue;
|
|
64
|
+
if (withTransition) {
|
|
65
|
+
(withTransition === true ? startTransition : withTransition)(() => fn(nextValue));
|
|
66
|
+
} else {
|
|
67
|
+
fn(nextValue);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
return [register, call];
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
const useSelectorSignal = value => {
|
|
76
|
+
const prevValue = useRef(value);
|
|
77
|
+
const _useUpdateSignal = useUpdateSignal(value),
|
|
78
|
+
_useUpdateSignal2 = _slicedToArray(_useUpdateSignal, 2),
|
|
79
|
+
_register = _useUpdateSignal2[0],
|
|
80
|
+
call = _useUpdateSignal2[1];
|
|
81
|
+
const register = useCallback((selector, deps, isEqual, withTransition) => {
|
|
82
|
+
const prevDeps = useRef(EMPTY_DEPS);
|
|
83
|
+
if (prevDeps.current !== EMPTY_DEPS && !IS_DEPS_EQUALS(deps, prevDeps.current)) {
|
|
84
|
+
call(prevValue.current);
|
|
85
|
+
}
|
|
86
|
+
prevDeps.current = deps;
|
|
87
|
+
return _register(selector, isEqual, withTransition);
|
|
88
|
+
}, []);
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
if (prevValue.current !== value) {
|
|
91
|
+
prevValue.current = value;
|
|
92
|
+
call(value);
|
|
93
|
+
}
|
|
94
|
+
}, [value]);
|
|
95
|
+
return register;
|
|
96
|
+
};
|
|
97
|
+
const updateStateFn = (path, update) => state => path ? _update(path, v => callIfFunction(update, v), state) : callIfFunction(update, state);
|
|
98
|
+
const createStatefulContext = (v, defaultIsEqual) => {
|
|
99
|
+
const Ctx = /*#__PURE__*/React.createContext(v);
|
|
100
|
+
const Provider = _ref3 => {
|
|
101
|
+
let value = _ref3.value,
|
|
102
|
+
setValue = _ref3.setValue,
|
|
103
|
+
utils = _ref3.utils,
|
|
104
|
+
children = _ref3.children;
|
|
105
|
+
const register = useSelectorSignal(value);
|
|
106
|
+
const v = useLazyConstant(() => [register, setValue, utils]);
|
|
107
|
+
return /*#__PURE__*/React.createElement(Ctx.Provider, {
|
|
108
|
+
value: v
|
|
109
|
+
}, children);
|
|
110
|
+
};
|
|
111
|
+
const useCtx = () => useContext(Ctx);
|
|
112
|
+
const useSelectValue = (selector, deps, defaultIsEqual, withTransition) => {
|
|
113
|
+
const _useCtx = useCtx(),
|
|
114
|
+
_useCtx2 = _slicedToArray(_useCtx, 1),
|
|
115
|
+
useRegister = _useCtx2[0];
|
|
116
|
+
if (deps === true) {
|
|
117
|
+
return useRegister(selector, [], undefined, startTransition);
|
|
118
|
+
} else if (_isPlainObject(deps)) {
|
|
119
|
+
return useRegister(selector, deps.deps, deps.isEqual, deps.withTransition);
|
|
120
|
+
} else {
|
|
121
|
+
return useRegister(selector, _isArray(deps) ? deps : deps === null || deps === void 0 ? void 0 : deps.deps, defaultIsEqual, withTransition);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
const useSetValue = path => {
|
|
125
|
+
const _useCtx3 = useCtx(),
|
|
126
|
+
_useCtx4 = _slicedToArray(_useCtx3, 2),
|
|
127
|
+
reg = _useCtx4[0],
|
|
128
|
+
set = _useCtx4[1];
|
|
129
|
+
return useConstant(update => set(updateStateFn(path, update)));
|
|
130
|
+
};
|
|
131
|
+
const useUtils = (path, deps) => {
|
|
132
|
+
const _useCtx5 = useCtx(),
|
|
133
|
+
_useCtx6 = _slicedToArray(_useCtx5, 3),
|
|
134
|
+
reg = _useCtx6[0],
|
|
135
|
+
set = _useCtx6[1],
|
|
136
|
+
utils = _useCtx6[2];
|
|
137
|
+
return utils;
|
|
138
|
+
};
|
|
139
|
+
return [Provider, [useSelectValue, useSetValue, useUtils, useCtx]];
|
|
140
|
+
};
|
|
141
|
+
const createSelfStatefulContext = (v, defaultIsEqual) => {
|
|
142
|
+
const _createStatefulContex = createStatefulContext(v),
|
|
143
|
+
_createStatefulContex2 = _slicedToArray(_createStatefulContex, 2),
|
|
144
|
+
Provider = _createStatefulContex2[0],
|
|
145
|
+
_createStatefulContex3 = _slicedToArray(_createStatefulContex2[1], 4),
|
|
146
|
+
useSelectValue = _createStatefulContex3[0],
|
|
147
|
+
useSetValue = _createStatefulContex3[1],
|
|
148
|
+
useUtils = _createStatefulContex3[2],
|
|
149
|
+
useCtx = _createStatefulContex3[3];
|
|
150
|
+
const StateFullProvider = _ref4 => {
|
|
151
|
+
let _ref4$init = _ref4.init,
|
|
152
|
+
init = _ref4$init === void 0 ? {} : _ref4$init,
|
|
153
|
+
utils = _ref4.utils,
|
|
154
|
+
children = _ref4.children;
|
|
155
|
+
const _useState = useState(init),
|
|
156
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
157
|
+
state = _useState2[0],
|
|
158
|
+
setState = _useState2[1];
|
|
159
|
+
return /*#__PURE__*/React.createElement(Provider, {
|
|
160
|
+
value: state,
|
|
161
|
+
setValue: setState,
|
|
162
|
+
utils: utils
|
|
163
|
+
}, children);
|
|
164
|
+
};
|
|
165
|
+
return [StateFullProvider, [useSelectValue, useSetValue, useUtils, useCtx]];
|
|
166
|
+
};
|
|
167
|
+
const createLazyStatefulContext = (toPromise, defaultIsEqual) => {
|
|
168
|
+
const _createStatefulContex4 = createStatefulContext(EMPTY_VALUE),
|
|
169
|
+
_createStatefulContex5 = _slicedToArray(_createStatefulContex4, 2),
|
|
170
|
+
Provider = _createStatefulContex5[0],
|
|
171
|
+
_createStatefulContex6 = _slicedToArray(_createStatefulContex5[1], 4),
|
|
172
|
+
useSelectValue = _createStatefulContex6[0],
|
|
173
|
+
useSetValue = _createStatefulContex6[1],
|
|
174
|
+
useUtils = _createStatefulContex6[2],
|
|
175
|
+
useCtx = _createStatefulContex6[3];
|
|
176
|
+
const useSelectLazyValue = function (selector, deps) {
|
|
177
|
+
let isEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultIsEqual;
|
|
178
|
+
let withTransition = arguments.length > 3 ? arguments[3] : undefined;
|
|
179
|
+
const value = useSelectValue(selector, deps, isEqual, withTransition);
|
|
180
|
+
const utils = useUtils();
|
|
181
|
+
if (value === EMPTY_VALUE) {
|
|
182
|
+
const loadedValue = use(utils._lazyValue());
|
|
183
|
+
return _s.select(selector, loadedValue);
|
|
184
|
+
}
|
|
185
|
+
return value;
|
|
186
|
+
};
|
|
187
|
+
const useSetLazyValue = path => {
|
|
188
|
+
const _useCtx7 = useCtx(),
|
|
189
|
+
_useCtx8 = _slicedToArray(_useCtx7, 3),
|
|
190
|
+
setValue = _useCtx8[1],
|
|
191
|
+
utils = _useCtx8[2];
|
|
192
|
+
return useConstant(update => {
|
|
193
|
+
return setValue(value => value === EMPTY_VALUE ? updateStateFn(path, update)(utils.loadedValue()) : updateStateFn(path, update)(value));
|
|
194
|
+
});
|
|
195
|
+
};
|
|
196
|
+
const useValuePromise = (selector, deps, isEqual, withTransition) => {
|
|
197
|
+
const value = useSelectValue(selector, deps, isEqual, withTransition);
|
|
198
|
+
const utils = useUtils();
|
|
199
|
+
return useCallback(() => {
|
|
200
|
+
if (value === EMPTY_VALUE) {
|
|
201
|
+
return utils._lazyValue().then(v => console.log(v, _s.select(selector, v), selector) || _s.select(selector, v));
|
|
202
|
+
}
|
|
203
|
+
return new Promise(value);
|
|
204
|
+
}, [value, deps]);
|
|
205
|
+
};
|
|
206
|
+
const LazyStateFullProvider = _ref5 => {
|
|
207
|
+
let value = _ref5.value,
|
|
208
|
+
utils = _ref5.utils,
|
|
209
|
+
children = _ref5.children,
|
|
210
|
+
_ref5$fallback = _ref5.fallback,
|
|
211
|
+
fallback = _ref5$fallback === void 0 ? null : _ref5$fallback;
|
|
212
|
+
const _useState3 = useState(EMPTY_VALUE),
|
|
213
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
214
|
+
state = _useState4[0],
|
|
215
|
+
setState = _useState4[1];
|
|
216
|
+
const promise = useRef();
|
|
217
|
+
const loadedValue = useRef();
|
|
218
|
+
const lazyUtils = useMemo(() => _objectSpread(_objectSpread({}, utils), {}, {
|
|
219
|
+
_lazyValue: () => {
|
|
220
|
+
var _promise$current;
|
|
221
|
+
(_promise$current = promise.current) !== null && _promise$current !== void 0 ? _promise$current : promise.current = callIfFunction(toPromise || _identity, value);
|
|
222
|
+
promise.current.then(value => {
|
|
223
|
+
loadedValue.current = value;
|
|
224
|
+
});
|
|
225
|
+
return promise.current;
|
|
226
|
+
},
|
|
227
|
+
loadedValue: () => loadedValue.current
|
|
228
|
+
}), [value, utils]);
|
|
229
|
+
return /*#__PURE__*/React.createElement(Provider, {
|
|
230
|
+
value: state,
|
|
231
|
+
setValue: setState,
|
|
232
|
+
utils: lazyUtils
|
|
233
|
+
}, fallback === false ? children : /*#__PURE__*/React.createElement(React.Suspense, {
|
|
234
|
+
fallback: fallback
|
|
235
|
+
}, children));
|
|
236
|
+
};
|
|
237
|
+
return [LazyStateFullProvider, [useSelectLazyValue, useSetLazyValue, useValuePromise]];
|
|
238
|
+
};
|
|
239
|
+
const createSelectableContext = v => {
|
|
240
|
+
const _createStatefulContex7 = createStatefulContext(v),
|
|
241
|
+
_createStatefulContex8 = _slicedToArray(_createStatefulContex7, 2),
|
|
242
|
+
Provider = _createStatefulContex8[0],
|
|
243
|
+
_createStatefulContex9 = _slicedToArray(_createStatefulContex8[1], 1),
|
|
244
|
+
useSelectValue = _createStatefulContex9[0];
|
|
245
|
+
return [Provider, useSelectValue];
|
|
246
|
+
};
|
|
247
|
+
const createTriggerUpdateContext = v => {
|
|
248
|
+
const _createStatefulContex0 = createStatefulContext(v),
|
|
249
|
+
_createStatefulContex1 = _slicedToArray(_createStatefulContex0, 2),
|
|
250
|
+
Provider = _createStatefulContex1[0],
|
|
251
|
+
_createStatefulContex10 = _slicedToArray(_createStatefulContex1[1], 1),
|
|
252
|
+
useSelectValue = _createStatefulContex10[0];
|
|
253
|
+
const TriggerProvider = /*#__PURE__*/React.forwardRef((_ref6, ref) => {
|
|
254
|
+
let children = _ref6.children;
|
|
255
|
+
const _useState5 = useState(0),
|
|
256
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
257
|
+
v = _useState6[0],
|
|
258
|
+
setV = _useState6[1];
|
|
259
|
+
const trigger = React.useMemo(() => () => setV(v => v + 1), [v]);
|
|
260
|
+
React.useImperativeHandle(ref, () => ({
|
|
261
|
+
trigger
|
|
262
|
+
}), []);
|
|
263
|
+
return /*#__PURE__*/React.createElement(Provider, {
|
|
264
|
+
value: trigger
|
|
265
|
+
}, children);
|
|
266
|
+
});
|
|
267
|
+
return [TriggerProvider, useSelectValue];
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
export { createLazyStatefulContext, createSelectableContext, createSelfStatefulContext, createStatefulContext, createTriggerUpdateContext, useUpdateSignal };
|
|
271
|
+
//# sourceMappingURL=useSignal.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSignal.mjs","sources":["../../src/hooks/useSignal.jsx"],"sourcesContent":["import React, {startTransition, use, useMemo, useCallback, useContext, useEffect, useRef, useState} from 'react'\nimport {useConstant, useLazyConstant} from './useConstant'\nimport {useForceUpdate} from './useForceUpdate'\nimport {_s, callIfFunction} from '@startlibs/utils'\nimport _ from 'lodash/fp'\n\nconst IS_ARRAY_ITEMS_EQUALS = (a,b) => a.length === b.length && !a.some((x, i) => !Object.is(x, b[i]));\nconst IS_DEPS_EQUALS = (a = [],b = []) => Object.is(a,b) || IS_ARRAY_ITEMS_EQUALS(a,b)\n\nconst SHALLOW_IS_EQUAL = (a,b) => Object.is(a,b) || (_.isArray(a) && _.isArray(b) && IS_ARRAY_ITEMS_EQUALS(a,b))\n\nconst EMPTY_DEPS = []\nconst EMPTY_VALUE = {\"EMPTY\":true}\nexport const useUpdateSignal = (initialValue) => {\n const value = useRef(initialValue)\n value.current = initialValue\n return useLazyConstant(() => {\n let registered = []\n const register = (selector = _.identity, isEqual = SHALLOW_IS_EQUAL, withTransition = false) => {\n const selectorRef = useRef()\n selectorRef.current = selector\n const update = useForceUpdate()\n const lastValueRef = useRef(_s.select(selectorRef.current, value.current))\n useEffect(() => {\n const item = [update, selectorRef, isEqual, lastValueRef, withTransition]\n registered = [...registered, item]\n return () => {\n registered = registered.filter(v => v !== item)\n }\n }, [])\n if (value.current === EMPTY_VALUE) {\n return EMPTY_VALUE\n }\n return lastValueRef.current\n }\n const call = (...args) =>\n registered.forEach(([fn, selectorRef, isEqual, lastValueRef, withTransition]) => {\n const nextValue = _s.select(selectorRef.current, ...args)\n if (!callIfFunction(isEqual,nextValue,lastValueRef.current)) {\n lastValueRef.current = nextValue\n if (withTransition) {\n (withTransition === true ? startTransition : withTransition)(() => fn(nextValue))\n } else {\n fn(nextValue)\n }\n }\n })\n return [register, call]\n })\n}\n\nconst useSelectorSignal = (value) => {\n const prevValue = useRef(value)\n const [_register, call] = useUpdateSignal(value)\n const register = useCallback((selector, deps, isEqual, withTransition) => {\n const prevDeps = useRef(EMPTY_DEPS)\n if (prevDeps.current !== EMPTY_DEPS && !IS_DEPS_EQUALS(deps, prevDeps.current)) {\n call(prevValue.current)\n }\n prevDeps.current = deps\n return _register(selector, isEqual, withTransition)\n }, [])\n useEffect(() => {\n if (prevValue.current !== value) {\n prevValue.current = value\n call(value)\n }\n },[value])\n return register\n}\n\nconst updateStateFn = (path,update) => state =>\n path\n ? _.update(path,(v) => callIfFunction(update,v),state)\n : callIfFunction(update,state)\n\n\nexport const createStatefulContext = (v,defaultIsEqual) => {\n const Ctx = React.createContext(v)\n const Provider = ({value, setValue, utils,children}) => {\n const register = useSelectorSignal(value)\n const v = useLazyConstant(() => [register,setValue, utils])\n return <Ctx.Provider value={v}>{children}</Ctx.Provider>\n }\n const useCtx = () => useContext(Ctx)\n\n const useSelectValue = (selector,deps,defaultIsEqual, withTransition) => {\n const [useRegister] = useCtx()\n if (deps === true) {\n return useRegister(selector,[],undefined,startTransition)\n } else if (_.isPlainObject(deps)) {\n return useRegister(selector,deps.deps,deps.isEqual, deps.withTransition)\n } else {\n return useRegister(selector,_.isArray(deps) ? deps : deps?.deps,defaultIsEqual, withTransition)\n }\n }\n const useSetValue = (path) => {\n const [reg,set ] = useCtx()\n return useConstant((update) => set(updateStateFn(path,update)))\n }\n const useUtils = (path,deps) => {\n const [reg,set, utils ] = useCtx()\n return utils\n }\n return [Provider,[useSelectValue, useSetValue, useUtils, useCtx]]\n}\n\nexport const createSelfStatefulContext = (v,defaultIsEqual) => {\n const [Provider,[useSelectValue, useSetValue, useUtils, useCtx]] = createStatefulContext(v,defaultIsEqual)\n\n const StateFullProvider = ({init = {}, utils,children}) => {\n const [state,setState] = useState(init)\n return <Provider value={state} setValue={setState} utils={utils}>\n {children}\n </Provider>\n }\n return [StateFullProvider,[useSelectValue, useSetValue, useUtils, useCtx]]\n}\n\n\nexport const createLazyStatefulContext = (toPromise,defaultIsEqual) => {\n const [Provider,[useSelectValue, useSetValue, useUtils, useCtx]] = createStatefulContext(EMPTY_VALUE,defaultIsEqual)\n const useSelectLazyValue = (selector,deps,isEqual = defaultIsEqual,withTransition) => {\n const value = useSelectValue(selector,deps,isEqual,withTransition)\n const utils = useUtils()\n if (value === EMPTY_VALUE) {\n const loadedValue = use(utils._lazyValue())\n return _s.select(selector,loadedValue)\n }\n return value\n }\n const useSetLazyValue = (path) => {\n const [,setValue,utils] = useCtx()\n return useConstant((update) => {\n return setValue(value =>\n value === EMPTY_VALUE\n ? updateStateFn(path,update)(utils.loadedValue())\n : updateStateFn(path,update)(value)\n )\n })\n }\n\n const useValuePromise = (selector,deps,isEqual,withTransition) => {\n const value = useSelectValue(selector,deps,isEqual,withTransition)\n const utils = useUtils()\n return useCallback(() => {\n if (value === EMPTY_VALUE) {\n return utils._lazyValue().then(v => console.log(v,_s.select(selector,v),selector) || _s.select(selector,v))\n }\n return new Promise(value)\n },[value,deps])\n }\n const LazyStateFullProvider = ({value, utils,children, fallback = null}) => {\n const [state,setState] = useState(EMPTY_VALUE)\n const promise = useRef()\n const loadedValue = useRef()\n const lazyUtils = useMemo(() => ({\n ...utils,\n _lazyValue: () => {\n promise.current ??= callIfFunction(toPromise || _.identity,value)\n promise.current.then((value) => {\n loadedValue.current = value\n })\n return promise.current\n },\n loadedValue: () => loadedValue.current\n }),[value,utils])\n return <Provider value={state} setValue={setState} utils={lazyUtils}>\n {\n fallback===false\n ? children\n : <React.Suspense fallback={fallback}>{children}</React.Suspense>\n }\n </Provider>\n }\n\n return [LazyStateFullProvider,[useSelectLazyValue, useSetLazyValue, useValuePromise]]\n}\n\nexport const createSelectableContext = (v) => {\n const [Provider,[useSelectValue]] = createStatefulContext(v)\n return [Provider,useSelectValue]\n}\nexport const createTriggerUpdateContext = (v) => {\n const [Provider,[useSelectValue]] = createStatefulContext(v)\n const TriggerProvider = React.forwardRef(({children},ref) => {\n const [v,setV] = useState(0)\n const trigger = React.useMemo(() => () => setV(v => v+1),[v])\n React.useImperativeHandle(ref, () => ({trigger}) , [])\n return <Provider value={trigger}>{children}</Provider>\n })\n return [TriggerProvider,useSelectValue]\n}"],"names":["IS_ARRAY_ITEMS_EQUALS","a","b","length","some","x","i","Object","is","IS_DEPS_EQUALS","arguments","undefined","SHALLOW_IS_EQUAL","_isArray","EMPTY_DEPS","EMPTY_VALUE","useUpdateSignal","initialValue","value","useRef","current","useLazyConstant","registered","register","selector","_identity","isEqual","withTransition","selectorRef","update","useForceUpdate","lastValueRef","_s","select","useEffect","item","filter","v","call","_len","args","Array","_key","forEach","_ref","_ref2","_slicedToArray","fn","nextValue","callIfFunction","startTransition","useSelectorSignal","prevValue","_useUpdateSignal","_useUpdateSignal2","_register","useCallback","deps","prevDeps","updateStateFn","path","state","_update","createStatefulContext","defaultIsEqual","Ctx","React","createContext","Provider","_ref3","setValue","utils","children","createElement","useCtx","useContext","useSelectValue","_useCtx","_useCtx2","useRegister","_isPlainObject","useSetValue","_useCtx3","_useCtx4","reg","set","useConstant","useUtils","_useCtx5","_useCtx6","createSelfStatefulContext","_createStatefulContex","_createStatefulContex2","_createStatefulContex3","StateFullProvider","_ref4","_ref4$init","init","_useState","useState","_useState2","setState","createLazyStatefulContext","toPromise","_createStatefulContex4","_createStatefulContex5","_createStatefulContex6","useSelectLazyValue","loadedValue","use","_lazyValue","useSetLazyValue","_useCtx7","_useCtx8","useValuePromise","then","console","log","Promise","LazyStateFullProvider","_ref5","_ref5$fallback","fallback","_useState3","_useState4","promise","lazyUtils","useMemo","_objectSpread","_promise$current","Suspense","createSelectableContext","_createStatefulContex7","_createStatefulContex8","_createStatefulContex9","createTriggerUpdateContext","_createStatefulContex0","_createStatefulContex1","_createStatefulContex10","TriggerProvider","forwardRef","_ref6","ref","_useState5","_useState6","setV","trigger","useImperativeHandle"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import 'react';
|
|
2
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
|
+
import { willUseLayers } from './willUseLayers.mjs';
|
|
4
|
+
|
|
5
|
+
const _willUseLayers = willUseLayers(),
|
|
6
|
+
_willUseLayers2 = _slicedToArray(_willUseLayers, 1),
|
|
7
|
+
useTitleLayers = _willUseLayers2[0];
|
|
8
|
+
const useTitle = title => {
|
|
9
|
+
const layer = useTitleLayers({
|
|
10
|
+
onTop: () => {
|
|
11
|
+
document.title = title;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { useTitle };
|
|
17
|
+
//# sourceMappingURL=useTitle.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTitle.mjs","sources":["../../src/hooks/useTitle.jsx"],"sourcesContent":["import React from 'react'\nimport {willUseLayers} from './willUseLayers'\n\nconst [useTitleLayers] = willUseLayers()\n\nexport const useTitle = (title) => {\n const layer = useTitleLayers({\n onTop: () => {\n document.title = title\n }\n })\n}"],"names":["_willUseLayers","willUseLayers","_willUseLayers2","_slicedToArray","useTitleLayers","useTitle","title","layer","onTop","document"],"mappings":";;;;AAGA,MAAAA,cAAA,GAAyBC,aAAa,EAAE;EAAAC,eAAA,GAAAC,cAAA,CAAAH,cAAA;EAAjCI,cAAc,GAAAF,eAAA;MAERG,QAAQ,GAAIC,KAAK,IAAK;EACjC,MAAMC,KAAK,GAAGH,cAAc,CAAC;IAC3BI,KAAK,EAAEA,MAAM;MACXC,QAAQ,CAACH,KAAK,GAAGA,KAAK;;GAEzB,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { useRef, useMemo } from 'react';
|
|
2
|
+
import { callIfFunction } from '@startlibs/utils';
|
|
3
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
|
+
import { useCallState } from './useCallState.mjs';
|
|
5
|
+
import { useIsUnmounted } from './useIsUnmounted.mjs';
|
|
6
|
+
import { useRefState } from './useRefState.mjs';
|
|
7
|
+
|
|
8
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
|
+
const useToggleInternal = function () {
|
|
11
|
+
let startWith = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
12
|
+
let useStore = arguments.length > 1 ? arguments[1] : undefined;
|
|
13
|
+
let callback = arguments.length > 2 ? arguments[2] : undefined;
|
|
14
|
+
let key = arguments.length > 3 ? arguments[3] : undefined;
|
|
15
|
+
const isOpen = useStore(startWith);
|
|
16
|
+
const closing = useStore(false);
|
|
17
|
+
const refIsOpen = useRefState(isOpen.get());
|
|
18
|
+
const refIsClosing = useRefState(closing.get());
|
|
19
|
+
const timerId = useRef();
|
|
20
|
+
const isUnmounted = useIsUnmounted();
|
|
21
|
+
const clearClosing = () => {
|
|
22
|
+
if (refIsClosing.get() !== false) {
|
|
23
|
+
closing.set(false);
|
|
24
|
+
refIsClosing.set(false);
|
|
25
|
+
window.clearTimeout(timerId.current);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const toggleWith = function () {
|
|
29
|
+
let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
30
|
+
const calledValue = callIfFunction(value, refIsOpen.get());
|
|
31
|
+
const newValue = refIsOpen.get() === calledValue ? !calledValue : calledValue;
|
|
32
|
+
if (!isUnmounted() && refIsOpen.get() !== newValue) {
|
|
33
|
+
const result = callIfFunction(callback, newValue, refIsOpen.get());
|
|
34
|
+
if (result === false) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
isOpen.set(newValue);
|
|
38
|
+
refIsOpen.set(newValue);
|
|
39
|
+
clearClosing();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const openWith = value => {
|
|
43
|
+
if (process.env.NODE_ENV !== 'production' && key) {
|
|
44
|
+
console.log(key, refIsOpen.get() !== value ? "toggle" : "clear", refIsOpen.get(), value);
|
|
45
|
+
}
|
|
46
|
+
const nextValue = callIfFunction(value, refIsOpen.get());
|
|
47
|
+
if (refIsOpen.get() !== nextValue) {
|
|
48
|
+
toggleWith(() => nextValue);
|
|
49
|
+
} else {
|
|
50
|
+
clearClosing();
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const nextClosingTick = (ticks, tickIndex) => {
|
|
54
|
+
if (ticks.length) {
|
|
55
|
+
if (isNaN(ticks[0])) {
|
|
56
|
+
clearClosing();
|
|
57
|
+
} else if (!isNaN(ticks[0])) {
|
|
58
|
+
closing.set(tickIndex + 1);
|
|
59
|
+
refIsClosing.set(tickIndex + 1);
|
|
60
|
+
timerId.current = setTimeout(() => nextClosingTick(ticks.slice(1), tickIndex + 1), Number(ticks[0]));
|
|
61
|
+
}
|
|
62
|
+
} else {
|
|
63
|
+
openWith(false);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const closeAfter = function () {
|
|
67
|
+
if (process.env.NODE_ENV !== 'production' && key) {
|
|
68
|
+
console.log(key, !refIsOpen.get() || refIsClosing.get() ? "addCLosing" : "closing");
|
|
69
|
+
}
|
|
70
|
+
if (!refIsOpen.get() || refIsClosing.get()) return;
|
|
71
|
+
for (var _len = arguments.length, millisecs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
72
|
+
millisecs[_key] = arguments[_key];
|
|
73
|
+
}
|
|
74
|
+
nextClosingTick(millisecs, 0);
|
|
75
|
+
};
|
|
76
|
+
const _wait = function (promise) {
|
|
77
|
+
let start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
78
|
+
let end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
79
|
+
return async function () {
|
|
80
|
+
openWith(start);
|
|
81
|
+
try {
|
|
82
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
83
|
+
args[_key2] = arguments[_key2];
|
|
84
|
+
}
|
|
85
|
+
return await callIfFunction(promise, ...args);
|
|
86
|
+
} finally {
|
|
87
|
+
openWith(end);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
const setters = useMemo(() => ({
|
|
92
|
+
wait: function (promise) {
|
|
93
|
+
let start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
94
|
+
let end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
95
|
+
return _wait(promise, start, end)();
|
|
96
|
+
},
|
|
97
|
+
willWait: _wait,
|
|
98
|
+
open: e => {
|
|
99
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
100
|
+
if (['string', 'number', 'boolean'].indexOf(typeof e) >= 0) {
|
|
101
|
+
console.log(`You are trying to open toggle with ${e}. Please, use openWith to open with a value`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return openWith(true);
|
|
105
|
+
},
|
|
106
|
+
close: () => openWith(false),
|
|
107
|
+
toggle: e => {
|
|
108
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
109
|
+
if (['string', 'number', 'boolean'].indexOf(typeof e) >= 0) {
|
|
110
|
+
console.log(`You are trying to toogle a toggle with ${e}. Please, use openWith to open with a value`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
toggleWith(true);
|
|
114
|
+
},
|
|
115
|
+
willOpenWith: value => () => openWith(value),
|
|
116
|
+
willCloseAfter: function () {
|
|
117
|
+
for (var _len3 = arguments.length, millsecs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
118
|
+
millsecs[_key3] = arguments[_key3];
|
|
119
|
+
}
|
|
120
|
+
return () => closeAfter(...millsecs);
|
|
121
|
+
},
|
|
122
|
+
willToggleWith: value => () => toggleWith(value),
|
|
123
|
+
openWith,
|
|
124
|
+
closeAfter,
|
|
125
|
+
toggleWith,
|
|
126
|
+
get: refIsOpen.get
|
|
127
|
+
}), []);
|
|
128
|
+
const settersWithNewRef = _objectSpread({}, setters);
|
|
129
|
+
if (closing.val) {
|
|
130
|
+
return Object.assign(settersWithNewRef, {
|
|
131
|
+
isOpen: isOpen.val,
|
|
132
|
+
closing: closing.val
|
|
133
|
+
});
|
|
134
|
+
} else {
|
|
135
|
+
Object.defineProperties(settersWithNewRef, {
|
|
136
|
+
isOpen: {
|
|
137
|
+
enumerable: true,
|
|
138
|
+
get: isOpen.get
|
|
139
|
+
},
|
|
140
|
+
closing: {
|
|
141
|
+
enumerable: true,
|
|
142
|
+
get: closing.get
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
return settersWithNewRef;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const useToggle = (startWith, callback, key) => useToggleInternal(startWith, useCallState, callback, key);
|
|
149
|
+
const useRefToggle = startWith => useToggleInternal(startWith, useRefState);
|
|
150
|
+
|
|
151
|
+
export { useRefToggle, useToggle };
|
|
152
|
+
//# sourceMappingURL=useToggle.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useToggle.mjs","sources":["../../src/hooks/useToggle.js"],"sourcesContent":["import React, {useRef, useMemo} from 'react'\nimport {callIfFunction} from '@startlibs/utils'\nimport {useCallState} from './useCallState'\nimport {useIsUnmounted} from './useIsUnmounted'\nimport {useRefState} from './useRefState'\n\nconst useToggleInternal = (startWith = false, useStore, callback, key) => {\n\n const isOpen = useStore(startWith)\n const closing = useStore(false)\n const refIsOpen = useRefState(isOpen.get())\n const refIsClosing = useRefState(closing.get())\n const timerId = useRef()\n\n const isUnmounted = useIsUnmounted()\n\n const clearClosing = () => {\n if (refIsClosing.get() !== false) {\n closing.set(false)\n refIsClosing.set(false)\n window.clearTimeout(timerId.current)\n }\n }\n\n const toggleWith = (value = true) => {\n const calledValue = callIfFunction(value,refIsOpen.get())\n const newValue = refIsOpen.get() === calledValue ? !calledValue : calledValue\n if (!isUnmounted() && refIsOpen.get() !== newValue) {\n const result = callIfFunction(callback,newValue,refIsOpen.get())\n if (result === false) { return }\n isOpen.set(newValue)\n refIsOpen.set(newValue)\n clearClosing()\n }\n }\n\n const openWith = (value) => {\n if (process.env.NODE_ENV !== 'production' && key) {\n console.log(key,refIsOpen.get()!==value ? \"toggle\":\"clear\", refIsOpen.get(),value)\n }\n const nextValue = callIfFunction(value,refIsOpen.get())\n if (refIsOpen.get() !== nextValue) {\n toggleWith(() => nextValue)\n } else {\n clearClosing()\n }\n }\n\n const nextClosingTick = (ticks, tickIndex) => {\n if (ticks.length) {\n if (isNaN(ticks[0])) {\n clearClosing()\n } else if (!isNaN(ticks[0])) {\n closing.set(tickIndex + 1)\n refIsClosing.set(tickIndex + 1)\n timerId.current = setTimeout(() => nextClosingTick(ticks.slice(1), tickIndex + 1), Number(ticks[0]))\n }\n } else {\n openWith(false)\n }\n }\n const closeAfter = (...millisecs) => {\n if (process.env.NODE_ENV !== 'production' && key) {\n console.log(key,!refIsOpen.get() || refIsClosing.get() ? \"addCLosing\" : \"closing\" )\n }\n if (!refIsOpen.get() || refIsClosing.get()) return\n nextClosingTick(millisecs, 0)\n }\n\n const _wait = (promise, start = true, end = false) => async (...args) => {\n openWith(start)\n try {\n return await callIfFunction(promise,...args)\n } finally {\n openWith(end)\n }\n }\n\n const setters = useMemo(()=>({\n wait: (promise,start = true, end = false) => _wait(promise,start, end)(),\n willWait: _wait,\n open: (e) => {\n if (process.env.NODE_ENV !== 'production') {\n if (['string', 'number', 'boolean'].indexOf(typeof e) >= 0) {\n console.log(`You are trying to open toggle with ${e}. Please, use openWith to open with a value`)\n }\n }\n return openWith(true)\n },\n close: () => openWith(false),\n toggle: (e) => {\n if (process.env.NODE_ENV !== 'production') {\n if (['string', 'number', 'boolean'].indexOf(typeof e) >= 0) {\n console.log(`You are trying to toogle a toggle with ${e}. Please, use openWith to open with a value`)\n }\n }\n toggleWith(true)\n },\n willOpenWith: (value) => () => openWith(value),\n willCloseAfter: (...millsecs) => () => closeAfter(...millsecs),\n willToggleWith: (value) => () => toggleWith(value),\n openWith,\n closeAfter,\n toggleWith,\n get: refIsOpen.get\n }),[])\n const settersWithNewRef = {...setters}\n if (closing.val) {\n return Object.assign(settersWithNewRef, {isOpen: isOpen.val, closing: closing.val})\n } else {\n Object.defineProperties(settersWithNewRef, {\n isOpen: {\n enumerable: true,\n get: isOpen.get\n },\n closing: {\n enumerable: true,\n get: closing.get\n }\n })\n return settersWithNewRef\n }\n}\n\nexport const useToggle = (startWith, callback,key) => useToggleInternal(startWith, useCallState, callback,key)\nexport const useRefToggle = (startWith) => useToggleInternal(startWith, useRefState)"],"names":["useToggleInternal","startWith","arguments","length","undefined","useStore","callback","key","isOpen","closing","refIsOpen","useRefState","get","refIsClosing","timerId","useRef","isUnmounted","useIsUnmounted","clearClosing","set","window","clearTimeout","current","toggleWith","value","calledValue","callIfFunction","newValue","result","openWith","process","env","NODE_ENV","console","log","nextValue","nextClosingTick","ticks","tickIndex","isNaN","setTimeout","slice","Number","closeAfter","_len","millisecs","Array","_key","_wait","promise","start","end","_len2","args","_key2","setters","useMemo","wait","willWait","open","e","indexOf","close","toggle","willOpenWith","willCloseAfter","_len3","millsecs","_key3","willToggleWith","settersWithNewRef","_objectSpread","val","Object","assign","defineProperties","enumerable","useToggle","useCallState","useRefToggle"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useRef, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
const useUpdateEffect = (effect, inputs) => {
|
|
4
|
+
const pastFirstTime = useRef();
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
if (pastFirstTime.current) {
|
|
7
|
+
return effect();
|
|
8
|
+
} else {
|
|
9
|
+
pastFirstTime.current = true;
|
|
10
|
+
}
|
|
11
|
+
}, inputs);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { useUpdateEffect };
|
|
15
|
+
//# sourceMappingURL=useUpdateEffect.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUpdateEffect.mjs","sources":["../../src/hooks/useUpdateEffect.js"],"sourcesContent":["import React, {useRef, useEffect} from 'react'\n\nexport const useUpdateEffect = (effect,inputs) => {\n\n const pastFirstTime = useRef()\n\n useEffect(() => {\n if (pastFirstTime.current) {\n return effect()\n } else {\n pastFirstTime.current = true\n }\n },inputs)\n}\n"],"names":["useUpdateEffect","effect","inputs","pastFirstTime","useRef","useEffect","current"],"mappings":";;MAEaA,eAAe,GAAGA,CAACC,MAAM,EAACC,MAAM,KAAK;EAEhD,MAAMC,aAAa,GAAGC,MAAM,EAAE;EAE9BC,SAAS,CAAC,MAAM;IACd,IAAIF,aAAa,CAACG,OAAO,EAAE;MACzB,OAAOL,MAAM,EAAE;KAChB,MAAM;MACLE,aAAa,CAACG,OAAO,GAAG,IAAI;;GAE/B,EAACJ,MAAM,CAAC;AACX;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import _debounce from 'lodash/fp/debounce';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useForceUpdate } from './useForceUpdate.mjs';
|
|
4
|
+
|
|
5
|
+
const useUpdateOnResize = function () {
|
|
6
|
+
let debounceInterval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 200;
|
|
7
|
+
const update = useForceUpdate();
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
const trigger = _debounce(debounceInterval, update);
|
|
10
|
+
window.addEventListener('resize', trigger);
|
|
11
|
+
return () => {
|
|
12
|
+
window.removeEventListener('resize', trigger);
|
|
13
|
+
};
|
|
14
|
+
}, []);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { useUpdateOnResize };
|
|
18
|
+
//# sourceMappingURL=useUpdateOnResize.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUpdateOnResize.mjs","sources":["../../src/hooks/useUpdateOnResize.jsx"],"sourcesContent":["import {useEffect} from 'react'\nimport {useForceUpdate} from './useForceUpdate'\nimport _ from 'lodash/fp'\n\nexport const useUpdateOnResize = (debounceInterval = 200) => {\n const update = useForceUpdate()\n useEffect(() => {\n const trigger = _.debounce(debounceInterval, update)\n window.addEventListener('resize', trigger)\n return () => {\n window.removeEventListener('resize', trigger)\n }\n },[])\n}"],"names":["useUpdateOnResize","debounceInterval","arguments","length","undefined","update","useForceUpdate","useEffect","trigger","_debounce","window","addEventListener","removeEventListener"],"mappings":";;;;MAIaA,iBAAiB,GAAG,YAA4B;EAAA,IAA3BC,gBAAgB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;EACtD,MAAMG,MAAM,GAAGC,cAAc,EAAE;EAC/BC,SAAS,CAAC,MAAM;IACd,MAAMC,OAAO,GAAGC,SAAA,CAAWR,gBAAgB,EAAEI,MAAM,CAAC;IACpDK,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEH,OAAO,CAAC;IAC1C,OAAO,MAAM;MACXE,MAAM,CAACE,mBAAmB,CAAC,QAAQ,EAAEJ,OAAO,CAAC;KAC9C;GACF,EAAC,EAAE,CAAC;AACP;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useState, useEffect, startTransition } from 'react';
|
|
2
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
|
+
|
|
4
|
+
const useWithTransition = value => {
|
|
5
|
+
const _useState = useState(value),
|
|
6
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
7
|
+
state = _useState2[0],
|
|
8
|
+
setState = _useState2[1];
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
startTransition(() => {
|
|
11
|
+
setState(value);
|
|
12
|
+
});
|
|
13
|
+
}, [value]);
|
|
14
|
+
return state;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { useWithTransition };
|
|
18
|
+
//# sourceMappingURL=useWithTransition.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWithTransition.mjs","sources":["../../src/hooks/useWithTransition.jsx"],"sourcesContent":["import {startTransition, useEffect, useState} from \"react\";\n\n\nexport const useWithTransition = (value) => {\n const [state,setState] = useState(value)\n\n useEffect(() => {\n startTransition(() => {\n setState(value)\n })\n },[value])\n\n return state\n}"],"names":["useWithTransition","value","_useState","useState","_useState2","_slicedToArray","state","setState","useEffect","startTransition"],"mappings":";;;MAGaA,iBAAiB,GAAIC,KAAK,IAAK;EAC1C,MAAAC,SAAA,GAAyBC,QAAQ,CAACF,KAAK,CAAC;IAAAG,UAAA,GAAAC,cAAA,CAAAH,SAAA;IAAjCI,KAAK,GAAAF,UAAA;IAACG,QAAQ,GAAAH,UAAA;EAErBI,SAAS,CAAC,MAAM;IACdC,eAAe,CAAC,MAAM;MACpBF,QAAQ,CAACN,KAAK,CAAC;KAChB,CAAC;GACH,EAAC,CAACA,KAAK,CAAC,CAAC;EAEV,OAAOK,KAAK;AACd;;;;"}
|