@vef-framework/hooks 1.0.98 → 1.0.99

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/es/index.js +27 -2
  2. package/es/lib.js +3 -2
  3. package/es/use-authorized-items.js +23 -2
  4. package/es/use-color-tokens.js +29 -2
  5. package/es/use-computed-action-buttons.js +42 -2
  6. package/es/use-computed-options.js +66 -2
  7. package/es/use-context-disabled.js +10 -2
  8. package/es/use-data-query.js +107 -2
  9. package/es/use-deep-callback.js +10 -2
  10. package/es/use-deep-memo.js +18 -2
  11. package/es/use-deep-selector.js +13 -2
  12. package/es/use-fallback-options.js +102 -2
  13. package/es/use-gap-size-normalizer.js +35 -2
  14. package/es/use-normalized-gap-size.js +9 -2
  15. package/es/use-normalized-menu-items.js +44 -2
  16. package/es/use-normalized-options.js +101 -2
  17. package/es/use-option-filter.js +17 -2
  18. package/es/use-remote-filter.js +36 -2
  19. package/es/use-shallow-callback.js +10 -2
  20. package/es/use-shallow-memo.js +18 -2
  21. package/es/use-shallow-selector.js +13 -2
  22. package/es/use-singleton.js +13 -2
  23. package/es/use-theme-tokens.js +10 -2
  24. package/es/use-transient-store.js +31 -2
  25. package/es/use-window-size.js +18 -2
  26. package/lib/index.cjs +109 -2
  27. package/lib/lib.cjs +58 -2
  28. package/lib/use-authorized-items.cjs +27 -2
  29. package/lib/use-color-tokens.cjs +35 -2
  30. package/lib/use-computed-action-buttons.cjs +46 -2
  31. package/lib/use-computed-options.cjs +70 -2
  32. package/lib/use-context-disabled.cjs +15 -2
  33. package/lib/use-data-query.cjs +111 -2
  34. package/lib/use-deep-callback.cjs +14 -2
  35. package/lib/use-deep-memo.cjs +22 -2
  36. package/lib/use-deep-selector.cjs +17 -2
  37. package/lib/use-fallback-options.cjs +106 -2
  38. package/lib/use-gap-size-normalizer.cjs +39 -2
  39. package/lib/use-normalized-gap-size.cjs +13 -2
  40. package/lib/use-normalized-menu-items.cjs +49 -2
  41. package/lib/use-normalized-options.cjs +105 -2
  42. package/lib/use-option-filter.cjs +21 -2
  43. package/lib/use-remote-filter.cjs +40 -2
  44. package/lib/use-shallow-callback.cjs +14 -2
  45. package/lib/use-shallow-memo.cjs +22 -2
  46. package/lib/use-shallow-selector.cjs +17 -2
  47. package/lib/use-singleton.cjs +17 -2
  48. package/lib/use-theme-tokens.cjs +14 -2
  49. package/lib/use-transient-store.cjs +35 -2
  50. package/lib/use-window-size.cjs +22 -2
  51. package/package.json +3 -3
@@ -1,3 +1,41 @@
1
- /*! VefFramework version: 1.0.98, build time: 2025-03-07T07:45:28.296Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared"),r=require("react");exports.useRemoteFilter=function useRemoteFilter(t,o,u="keyword"){const[s,n]=r.useState();return[r.useMemo((()=>{if(!t)return o;const r={...o},n=e.trim(s);return n&&(r[u]=n),r}),[t,o,s,u]),r.useMemo((()=>{if(t)return e.debounce({delay:500},(e=>{n(e)}))}),[t])]};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
+
6
+ const shared = require('@vef-framework/shared');
7
+ const react = require('react');
8
+
9
+ function useRemoteFilter(enabled, apiParams, keywordKey = "keyword") {
10
+ const [filterKeyword, setFilterKeyword] = react.useState();
11
+ const mergedApiParams = react.useMemo(() => {
12
+ if (!enabled) {
13
+ return apiParams;
14
+ }
15
+ const params = {
16
+ ...apiParams
17
+ };
18
+ const keywordToUse = shared.trim(filterKeyword);
19
+ if (keywordToUse) {
20
+ params[keywordKey] = keywordToUse;
21
+ }
22
+ return params;
23
+ }, [
24
+ enabled,
25
+ apiParams,
26
+ filterKeyword,
27
+ keywordKey
28
+ ]);
29
+ const handleInputKeyword = react.useMemo(() => {
30
+ if (!enabled) {
31
+ return;
32
+ }
33
+ return shared.debounce({ delay: 500 }, (keyword) => {
34
+ setFilterKeyword(keyword);
35
+ });
36
+ }, [enabled]);
37
+ return [mergedApiParams, handleInputKeyword];
38
+ }
39
+
40
+ exports.useRemoteFilter = useRemoteFilter;
3
41
  /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -1,3 +1,15 @@
1
- /*! VefFramework version: 1.0.98, build time: 2025-03-07T07:45:28.296Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),l=require("./use-shallow-memo.cjs");exports.useShallowCallback=function useShallowCallback(o,a){const r=l.useShallowMemo((()=>a),a);return e.useCallback(o,r)};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
+
6
+ const react = require('react');
7
+ const useShallowMemo = require('./use-shallow-memo.cjs');
8
+
9
+ function useShallowCallback(callback, dependencies) {
10
+ const memoizedDependencies = useShallowMemo.useShallowMemo(() => dependencies, dependencies);
11
+ return react.useCallback(callback, memoizedDependencies);
12
+ }
13
+
14
+ exports.useShallowCallback = useShallowCallback;
3
15
  /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -1,3 +1,23 @@
1
- /*! VefFramework version: 1.0.98, build time: 2025-03-07T07:45:28.296Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared"),r=require("react");exports.useShallowMemo=function useShallowMemo(t,u){const o=r.useRef(),n=r.useRef(0);return void 0!==o.current&&function isEqual(r,t){return r.length===t.length&&r.every(((r,u)=>e.isShallowEqual(r,t[u])))}(u,o.current)||(n.current+=1),o.current=u,r.useMemo(t,[n.current])};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
+
6
+ const shared = require('@vef-framework/shared');
7
+ const react = require('react');
8
+
9
+ function useShallowMemo(factory, dependencies) {
10
+ const lastDependencies = react.useRef();
11
+ const signal = react.useRef(0);
12
+ if (lastDependencies.current === void 0 || !isEqual(dependencies, lastDependencies.current)) {
13
+ signal.current += 1;
14
+ }
15
+ lastDependencies.current = dependencies;
16
+ return react.useMemo(factory, [signal.current]);
17
+ }
18
+ function isEqual(one, another) {
19
+ return one.length === another.length && one.every((value, index) => shared.isShallowEqual(value, another[index]));
20
+ }
21
+
22
+ exports.useShallowMemo = useShallowMemo;
3
23
  /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -1,3 +1,18 @@
1
- /*! VefFramework version: 1.0.98, build time: 2025-03-07T07:45:28.296Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared"),r=require("react");exports.useShallowSelector=function useShallowSelector(t){const o=r.useRef();return r=>{const u=t(r);return e.isShallowEqual(o.current,u)?o.current:o.current=u}};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
+
6
+ const shared = require('@vef-framework/shared');
7
+ const react = require('react');
8
+
9
+ function useShallowSelector(selector) {
10
+ const prevSelectedState = react.useRef();
11
+ return (state) => {
12
+ const nextSelectedState = selector(state);
13
+ return shared.isShallowEqual(prevSelectedState.current, nextSelectedState) ? prevSelectedState.current : prevSelectedState.current = nextSelectedState;
14
+ };
15
+ }
16
+
17
+ exports.useShallowSelector = useShallowSelector;
3
18
  /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -1,3 +1,18 @@
1
- /*! VefFramework version: 1.0.98, build time: 2025-03-07T07:45:28.296Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared"),r=require("react");exports.useSingleton=function useSingleton(t){const n=r.useRef();return e.isNullish(n.current)&&(n.current=t()),n.current};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
+
6
+ const shared = require('@vef-framework/shared');
7
+ const react = require('react');
8
+
9
+ function useSingleton(factory) {
10
+ const singleton = react.useRef();
11
+ if (shared.isNullish(singleton.current)) {
12
+ singleton.current = factory();
13
+ }
14
+ return singleton.current;
15
+ }
16
+
17
+ exports.useSingleton = useSingleton;
3
18
  /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -1,3 +1,15 @@
1
- /*! VefFramework version: 1.0.98, build time: 2025-03-07T07:45:28.296Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("antd"),{useToken:t}=e.theme;exports.useThemeTokens=function useThemeTokens(){const{token:e}=t();return e};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
+
6
+ const antd = require('antd');
7
+
8
+ const { useToken } = antd.theme;
9
+ function useThemeTokens() {
10
+ const { token } = useToken();
11
+ return token;
12
+ }
13
+
14
+ exports.useThemeTokens = useThemeTokens;
3
15
  /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -1,3 +1,36 @@
1
- /*! VefFramework version: 1.0.98, build time: 2025-03-07T07:45:28.296Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared"),r=require("react");exports.useTransientStore=function useTransientStore({subscribe:t,getState:s},{selector:u=e=>e,equalityFn:n=e.isShallowEqual,listener:i}={}){const o=r.useRef();return o.current||(o.current=u(s())),r.useEffect((()=>t(u,((e,r)=>{o.current=e,i?.(e,r)}),{fireImmediately:!1,equalityFn:n})),[n,i,u,t]),o};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
+
6
+ const shared = require('@vef-framework/shared');
7
+ const react = require('react');
8
+
9
+ function useTransientStore({ subscribe, getState }, {
10
+ selector = (state) => state,
11
+ equalityFn = shared.isShallowEqual,
12
+ listener
13
+ } = {}) {
14
+ const stateRef = react.useRef();
15
+ if (!stateRef.current) {
16
+ stateRef.current = selector(getState());
17
+ }
18
+ react.useEffect(
19
+ () => subscribe(
20
+ selector,
21
+ (state, prevState) => {
22
+ stateRef.current = state;
23
+ listener?.(state, prevState);
24
+ },
25
+ {
26
+ fireImmediately: false,
27
+ equalityFn
28
+ }
29
+ ),
30
+ [equalityFn, listener, selector, subscribe]
31
+ );
32
+ return stateRef;
33
+ }
34
+
35
+ exports.useTransientStore = useTransientStore;
3
36
  /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
@@ -1,3 +1,23 @@
1
- /*! VefFramework version: 1.0.98, build time: 2025-03-07T07:45:28.296Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("ahooks");exports.useWindowSize=function useWindowSize(){const[i,t]=e.useRafState((()=>({width:window.innerWidth,height:window.innerHeight})));return e.useEventListener("resize",(()=>{t({width:window.innerWidth,height:window.innerHeight})})),i};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
5
+
6
+ const ahooks = require('ahooks');
7
+
8
+ function useWindowSize() {
9
+ const [size, setSize] = ahooks.useRafState(() => ({
10
+ width: window.innerWidth,
11
+ height: window.innerHeight
12
+ }));
13
+ ahooks.useEventListener("resize", () => {
14
+ setSize({
15
+ width: window.innerWidth,
16
+ height: window.innerHeight
17
+ });
18
+ });
19
+ return size;
20
+ }
21
+
22
+ exports.useWindowSize = useWindowSize;
3
23
  /*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vef-framework/hooks",
3
3
  "type": "module",
4
- "version": "1.0.98",
4
+ "version": "1.0.99",
5
5
  "private": false,
6
6
  "packageManager": "pnpm@9.15.0",
7
7
  "description": "The hooks of the VEF framework",
@@ -35,8 +35,8 @@
35
35
  "tslib": "2.8.1",
36
36
  "use-sync-external-store": "^1.4.0",
37
37
  "@uidotdev/usehooks": "^2.4.1",
38
- "@vef-framework/core": "1.0.98",
39
- "@vef-framework/shared": "1.0.98",
38
+ "@vef-framework/core": "1.0.99",
39
+ "@vef-framework/shared": "1.0.99",
40
40
  "ahooks": "3.8.4"
41
41
  },
42
42
  "publishConfig": {