@vef-framework/hooks 1.0.97 → 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,102 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- import{isNullish as e,VefError as i,isString as r,parsePinyinFirstLetter as n,isArray as t}from"@vef-framework/shared";import{useMemo as o}from"react";function useNormalizedDataOptions(l,{labelKey:a="label",valueKey:d="value",childrenKey:s="children",descriptionKey:u="description",disabledKey:h="disabled",defaultToFirst:c=!1},{isTree:p=!1,isGrouped:f=!1,parsePinyin:b=!1,selectedOptionValues:v=[]}={}){return o((()=>{const o=new Set(v),y=!p&&f,normalizeOption=(l,c=!1)=>{const p=l[a];if(e(p)){if("label"===a)throw new i(-10001,"The label value of the option is required.");throw new i(-10001,`The label value pointed by '${a}' of the option is required.`)}const f=l[d];if(e(f)){if("value"===d)throw new i(-10002,"The value value of the option is required.");throw new i(-10002,`The value value pointed by '${d}' of the option is required.`)}const v=l[s],m=l[u],w=l[h]??!1,T={...l,label:p,value:f,children:v,description:m,disabled:w};if(b){const{labelText:e,descriptionText:i}=T;(r(p)||r(e))&&(T.labelPinyin=n(r(p)?p:e).join("")),(r(m)||r(i))&&(T.descriptionPinyin=n(r(m)?m:i).join(""))}return c&&y||!o.has(f)||o.delete(f),t(T.children)&&(T.children=T.children.map((e=>normalizeOption(e)))),T},m=l.map((e=>normalizeOption(e,!0))),w=Array.from(o);if(!c)return[m,w];if(y){const e=m.find((e=>t(e.children)&&e.children.length>0));return[m,w,e?.children?.[0]]}return[m,w,m[0]]}),[s,c,u,h,f,p,a,l,b,d])}export{useNormalizedDataOptions};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ import { isNullish, VefError, isString, parsePinyinFirstLetter, isArray } from '@vef-framework/shared';
3
+ import { useMemo } from 'react';
4
+
5
+ function useNormalizedDataOptions(options, {
6
+ labelKey = "label",
7
+ valueKey = "value",
8
+ childrenKey = "children",
9
+ descriptionKey = "description",
10
+ disabledKey = "disabled",
11
+ defaultToFirst = false
12
+ }, {
13
+ isTree = false,
14
+ isGrouped = false,
15
+ parsePinyin = false,
16
+ selectedOptionValues = []
17
+ } = {}) {
18
+ return useMemo(() => {
19
+ const selectedOptionValuesSet = new Set(selectedOptionValues);
20
+ const isGroupedOptions = !isTree && isGrouped;
21
+ const normalizeOption = (option, isTopLevel = false) => {
22
+ const label = option[labelKey];
23
+ if (isNullish(label)) {
24
+ if (labelKey === "label") {
25
+ throw new VefError(-10001, `The label value of the option is required.`);
26
+ }
27
+ throw new VefError(-10001, `The label value pointed by '${labelKey}' of the option is required.`);
28
+ }
29
+ const value = option[valueKey];
30
+ if (isNullish(value)) {
31
+ if (valueKey === "value") {
32
+ throw new VefError(-10002, `The value of the option is required.`);
33
+ }
34
+ throw new VefError(-10002, `The value pointed by '${valueKey}' of the option is required.`);
35
+ }
36
+ const children = option[childrenKey];
37
+ const description = option[descriptionKey];
38
+ const disabled = option[disabledKey] ?? false;
39
+ const normalizedOption = {
40
+ ...option,
41
+ label,
42
+ value,
43
+ children,
44
+ description,
45
+ disabled
46
+ };
47
+ if (parsePinyin) {
48
+ const { labelText, descriptionText } = normalizedOption;
49
+ if (isString(label) || isString(labelText)) {
50
+ normalizedOption.labelPinyin = parsePinyinFirstLetter(
51
+ isString(label) ? label : labelText
52
+ ).join("");
53
+ }
54
+ if (isString(description) || isString(descriptionText)) {
55
+ normalizedOption.descriptionPinyin = parsePinyinFirstLetter(
56
+ isString(description) ? description : descriptionText
57
+ ).join("");
58
+ }
59
+ }
60
+ if ((!isTopLevel || !isGroupedOptions) && selectedOptionValuesSet.has(value)) {
61
+ selectedOptionValuesSet.delete(value);
62
+ }
63
+ if (isArray(normalizedOption.children)) {
64
+ normalizedOption.children = normalizedOption.children.map((option2) => normalizeOption(option2));
65
+ }
66
+ return normalizedOption;
67
+ };
68
+ const normalizedOptions = options.map((option) => normalizeOption(option, true));
69
+ const missingOptionValues = Array.from(selectedOptionValuesSet);
70
+ if (!defaultToFirst) {
71
+ return [normalizedOptions, missingOptionValues];
72
+ }
73
+ if (isGroupedOptions) {
74
+ const firstNonEmptyGroupOption = normalizedOptions.find((item) => isArray(item.children) && item.children.length > 0);
75
+ return [
76
+ normalizedOptions,
77
+ missingOptionValues,
78
+ firstNonEmptyGroupOption?.children?.[0]
79
+ ];
80
+ }
81
+ return [
82
+ normalizedOptions,
83
+ missingOptionValues,
84
+ normalizedOptions[0]
85
+ ];
86
+ }, [
87
+ childrenKey,
88
+ defaultToFirst,
89
+ descriptionKey,
90
+ disabledKey,
91
+ isGrouped,
92
+ isTree,
93
+ labelKey,
94
+ options,
95
+ parsePinyin,
96
+ // selectedOptionValues,
97
+ valueKey
98
+ ]);
99
+ }
100
+
101
+ export { useNormalizedDataOptions };
3
102
  /*! 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.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- import{isString as e}from"@vef-framework/shared";import{useMemo as i}from"react";function useOptionFilter(n,l){return i((()=>{if(n)return!l&&((i,n)=>(e(n.label)&&n.label.includes(i)||e(n.labelText)&&n.labelText.includes(i)||n.labelPinyin?.includes(i)||n.value.includes(i)||e(n.description)&&n.description.includes(i)||e(n.descriptionText)&&n.descriptionText.includes(i)||n.descriptionPinyin?.includes(i))??!1)}),[n,l])}export{useOptionFilter};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ import { isString } from '@vef-framework/shared';
3
+ import { useMemo } from 'react';
4
+
5
+ function useOptionFilter(filterable, filterFromRemote) {
6
+ return useMemo(() => {
7
+ if (!filterable) {
8
+ return;
9
+ }
10
+ if (filterFromRemote) {
11
+ return false;
12
+ }
13
+ return (filterValue, option) => (isString(option.label) && option.label.includes(filterValue) || isString(option.labelText) && option.labelText.includes(filterValue) || option.labelPinyin?.includes(filterValue) || option.value.includes(filterValue) || isString(option.description) && option.description.includes(filterValue) || isString(option.descriptionText) && option.descriptionText.includes(filterValue) || option.descriptionPinyin?.includes(filterValue)) ?? false;
14
+ }, [filterable, filterFromRemote]);
15
+ }
16
+
17
+ export { useOptionFilter };
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,37 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- import{trim as r,debounce as e}from"@vef-framework/shared";import{useState as t,useMemo as o}from"react";function useRemoteFilter(n,f,i="keyword"){const[m,u]=t();return[o((()=>{if(!n)return f;const e={...f},t=r(m);return t&&(e[i]=t),e}),[n,f,m,i]),o((()=>{if(n)return e({delay:500},(r=>{u(r)}))}),[n])]}export{useRemoteFilter};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ import { trim, debounce } from '@vef-framework/shared';
3
+ import { useState, useMemo } from 'react';
4
+
5
+ function useRemoteFilter(enabled, apiParams, keywordKey = "keyword") {
6
+ const [filterKeyword, setFilterKeyword] = useState();
7
+ const mergedApiParams = useMemo(() => {
8
+ if (!enabled) {
9
+ return apiParams;
10
+ }
11
+ const params = {
12
+ ...apiParams
13
+ };
14
+ const keywordToUse = trim(filterKeyword);
15
+ if (keywordToUse) {
16
+ params[keywordKey] = keywordToUse;
17
+ }
18
+ return params;
19
+ }, [
20
+ enabled,
21
+ apiParams,
22
+ filterKeyword,
23
+ keywordKey
24
+ ]);
25
+ const handleInputKeyword = useMemo(() => {
26
+ if (!enabled) {
27
+ return;
28
+ }
29
+ return debounce({ delay: 500 }, (keyword) => {
30
+ setFilterKeyword(keyword);
31
+ });
32
+ }, [enabled]);
33
+ return [mergedApiParams, handleInputKeyword];
34
+ }
35
+
36
+ export { useRemoteFilter };
3
37
  /*! 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,11 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- import{useCallback as o}from"react";import{useShallowMemo as l}from"./use-shallow-memo.js";function useShallowCallback(a,r){const e=l((()=>r),r);return o(a,e)}export{useShallowCallback};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ import { useCallback } from 'react';
3
+ import { useShallowMemo } from './use-shallow-memo.js';
4
+
5
+ function useShallowCallback(callback, dependencies) {
6
+ const memoizedDependencies = useShallowMemo(() => dependencies, dependencies);
7
+ return useCallback(callback, memoizedDependencies);
8
+ }
9
+
10
+ export { useShallowCallback };
3
11
  /*! 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,19 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- import{isShallowEqual as r}from"@vef-framework/shared";import{useRef as e,useMemo as t}from"react";function useShallowMemo(n,o){const u=e(),c=e(0);return void 0!==u.current&&function isEqual(e,t){return e.length===t.length&&e.every(((e,n)=>r(e,t[n])))}(o,u.current)||(c.current+=1),u.current=o,t(n,[c.current])}export{useShallowMemo};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ import { isShallowEqual } from '@vef-framework/shared';
3
+ import { useRef, useMemo } from 'react';
4
+
5
+ function useShallowMemo(factory, dependencies) {
6
+ const lastDependencies = useRef();
7
+ const signal = useRef(0);
8
+ if (lastDependencies.current === void 0 || !isEqual(dependencies, lastDependencies.current)) {
9
+ signal.current += 1;
10
+ }
11
+ lastDependencies.current = dependencies;
12
+ return useMemo(factory, [signal.current]);
13
+ }
14
+ function isEqual(one, another) {
15
+ return one.length === another.length && one.every((value, index) => isShallowEqual(value, another[index]));
16
+ }
17
+
18
+ export { useShallowMemo };
3
19
  /*! 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,14 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- import{isShallowEqual as r}from"@vef-framework/shared";import{useRef as e}from"react";function useShallowSelector(t){const o=e();return e=>{const c=t(e);return r(o.current,c)?o.current:o.current=c}}export{useShallowSelector};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ import { isShallowEqual } from '@vef-framework/shared';
3
+ import { useRef } from 'react';
4
+
5
+ function useShallowSelector(selector) {
6
+ const prevSelectedState = useRef();
7
+ return (state) => {
8
+ const nextSelectedState = selector(state);
9
+ return isShallowEqual(prevSelectedState.current, nextSelectedState) ? prevSelectedState.current : prevSelectedState.current = nextSelectedState;
10
+ };
11
+ }
12
+
13
+ export { useShallowSelector };
3
14
  /*! 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,14 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- import{isNullish as r}from"@vef-framework/shared";import{useRef as e}from"react";function useSingleton(t){const n=e();return r(n.current)&&(n.current=t()),n.current}export{useSingleton};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ import { isNullish } from '@vef-framework/shared';
3
+ import { useRef } from 'react';
4
+
5
+ function useSingleton(factory) {
6
+ const singleton = useRef();
7
+ if (isNullish(singleton.current)) {
8
+ singleton.current = factory();
9
+ }
10
+ return singleton.current;
11
+ }
12
+
13
+ export { useSingleton };
3
14
  /*! 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,11 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- import{theme as e}from"antd";const{useToken:n}=e;function useThemeTokens(){const{token:e}=n();return e}export{useThemeTokens};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ import { theme } from 'antd';
3
+
4
+ const { useToken } = theme;
5
+ function useThemeTokens() {
6
+ const { token } = useToken();
7
+ return token;
8
+ }
9
+
10
+ export { useThemeTokens };
3
11
  /*! 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,32 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- import{isShallowEqual as e}from"@vef-framework/shared";import{useRef as r,useEffect as t}from"react";function useTransientStore({subscribe:n,getState:i},{selector:o=e=>e,equalityFn:s=e,listener:u}={}){const a=r();return a.current||(a.current=o(i())),t((()=>n(o,((e,r)=>{a.current=e,u?.(e,r)}),{fireImmediately:!1,equalityFn:s})),[s,u,o,n]),a}export{useTransientStore};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ import { isShallowEqual } from '@vef-framework/shared';
3
+ import { useRef, useEffect } from 'react';
4
+
5
+ function useTransientStore({ subscribe, getState }, {
6
+ selector = (state) => state,
7
+ equalityFn = isShallowEqual,
8
+ listener
9
+ } = {}) {
10
+ const stateRef = useRef();
11
+ if (!stateRef.current) {
12
+ stateRef.current = selector(getState());
13
+ }
14
+ useEffect(
15
+ () => subscribe(
16
+ selector,
17
+ (state, prevState) => {
18
+ stateRef.current = state;
19
+ listener?.(state, prevState);
20
+ },
21
+ {
22
+ fireImmediately: false,
23
+ equalityFn
24
+ }
25
+ ),
26
+ [equalityFn, listener, selector, subscribe]
27
+ );
28
+ return stateRef;
29
+ }
30
+
31
+ export { useTransientStore };
3
32
  /*! 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,19 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- import{useRafState as i,useEventListener as n}from"ahooks";function useWindowSize(){const[e,o]=i((()=>({width:window.innerWidth,height:window.innerHeight})));return n("resize",(()=>{o({width:window.innerWidth,height:window.innerHeight})})),e}export{useWindowSize};
1
+ /*! VefFramework version: 1.0.99, build time: 2025-03-07T13:41:55.433Z, made by Venus. */
2
+ import { useRafState, useEventListener } from 'ahooks';
3
+
4
+ function useWindowSize() {
5
+ const [size, setSize] = useRafState(() => ({
6
+ width: window.innerWidth,
7
+ height: window.innerHeight
8
+ }));
9
+ useEventListener("resize", () => {
10
+ setSize({
11
+ width: window.innerWidth,
12
+ height: window.innerHeight
13
+ });
14
+ });
15
+ return size;
16
+ }
17
+
18
+ export { useWindowSize };
3
19
  /*! 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/lib/index.cjs CHANGED
@@ -1,3 +1,110 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("./lib.cjs");const e=require("./use-authorized-items.cjs"),s=require("./use-color-tokens.cjs"),t=require("./use-computed-action-buttons.cjs"),r=require("./use-computed-options.cjs"),o=require("./use-context-disabled.cjs"),u=require("./use-data-query.cjs"),i=require("./use-deep-callback.cjs"),a=require("./use-deep-memo.cjs"),n=require("./use-deep-selector.cjs"),l=require("./use-fallback-options.cjs"),p=require("./use-gap-size-normalizer.cjs"),c=require("./use-normalized-gap-size.cjs"),m=require("./use-normalized-menu-items.cjs"),d=require("./use-normalized-options.cjs"),x=require("./use-option-filter.cjs"),b=require("./use-remote-filter.cjs"),j=require("./use-shallow-callback.cjs"),f=require("./use-shallow-memo.cjs"),z=require("./use-shallow-selector.cjs"),q=require("./use-singleton.cjs"),S=require("./use-theme-tokens.cjs"),y=require("./use-transient-store.cjs"),k=require("./use-window-size.cjs"),C=require("@uidotdev/usehooks"),O=require("ahooks");exports.useAuthorizedItems=e.useAuthorizedItems,exports.useColorTokens=s.useColorTokens,exports.useDefaultColorTokens=s.useDefaultColorTokens,exports.useSemanticColorTokens=s.useSemanticColorTokens,exports.useComputedActionButtons=t.useComputedActionButtons,exports.useComputedOptions=r.useComputedOptions,exports.DisabledContextProvider=o.DisabledContextProvider,exports.useContextDisabled=o.useContextDisabled,exports.useDataQuery=u.useDataQuery,exports.useDeepCallback=i.useDeepCallback,exports.useDeepMemo=a.useDeepMemo,exports.useDeepSelector=n.useDeepSelector,exports.useFallbackOptions=l.useFallbackOptions,exports.useGapSizeNormalizer=p.useGapSizeNormalizer,exports.useNormalizedGapSize=c.useNormalizedGapSize,exports.normalizeMenuItem=m.normalizeMenuItem,exports.useNormalizedMenuItems=m.useNormalizedMenuItems,exports.useNormalizedDataOptions=d.useNormalizedDataOptions,exports.useOptionFilter=x.useOptionFilter,exports.useRemoteFilter=b.useRemoteFilter,exports.useShallowCallback=j.useShallowCallback,exports.useShallowMemo=f.useShallowMemo,exports.useShallowSelector=z.useShallowSelector,exports.useSingleton=q.useSingleton,exports.useThemeTokens=S.useThemeTokens,exports.useTransientStore=y.useTransientStore,exports.useWindowSize=k.useWindowSize,Object.defineProperty(exports,"useClickAway",{enumerable:!0,get:()=>C.useClickAway}),Object.defineProperty(exports,"useMeasure",{enumerable:!0,get:()=>C.useMeasure}),Object.defineProperty(exports,"useDeepEffect",{enumerable:!0,get:()=>O.useDeepCompareEffect}),Object.defineProperty(exports,"useDeepLayoutEffect",{enumerable:!0,get:()=>O.useDeepCompareLayoutEffect}),Object.defineProperty(exports,"useElementSize",{enumerable:!0,get:()=>O.useSize}),Object.defineProperty(exports,"useEventListener",{enumerable:!0,get:()=>O.useEventListener}),Object.defineProperty(exports,"useKeyPress",{enumerable:!0,get:()=>O.useKeyPress}),Object.defineProperty(exports,"useMount",{enumerable:!0,get:()=>O.useMount}),Object.defineProperty(exports,"useUnmount",{enumerable:!0,get:()=>O.useUnmount}),Object.defineProperty(exports,"useUpdateEffect",{enumerable:!0,get:()=>O.useUpdateEffect}),Object.defineProperty(exports,"useUpdateLayoutEffect",{enumerable:!0,get:()=>O.useUpdateLayoutEffect}),Object.defineProperty(exports,"useUpdater",{enumerable:!0,get:()=>O.useUpdate});
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
+ require('./lib.cjs');
7
+ const useAuthorizedItems = require('./use-authorized-items.cjs');
8
+ const useColorTokens = require('./use-color-tokens.cjs');
9
+ const useComputedActionButtons = require('./use-computed-action-buttons.cjs');
10
+ const useComputedOptions = require('./use-computed-options.cjs');
11
+ const useContextDisabled = require('./use-context-disabled.cjs');
12
+ const useDataQuery = require('./use-data-query.cjs');
13
+ const useDeepCallback = require('./use-deep-callback.cjs');
14
+ const useDeepMemo = require('./use-deep-memo.cjs');
15
+ const useDeepSelector = require('./use-deep-selector.cjs');
16
+ const useFallbackOptions = require('./use-fallback-options.cjs');
17
+ const useGapSizeNormalizer = require('./use-gap-size-normalizer.cjs');
18
+ const useNormalizedGapSize = require('./use-normalized-gap-size.cjs');
19
+ const useNormalizedMenuItems = require('./use-normalized-menu-items.cjs');
20
+ const useNormalizedOptions = require('./use-normalized-options.cjs');
21
+ const useOptionFilter = require('./use-option-filter.cjs');
22
+ const useRemoteFilter = require('./use-remote-filter.cjs');
23
+ const useShallowCallback = require('./use-shallow-callback.cjs');
24
+ const useShallowMemo = require('./use-shallow-memo.cjs');
25
+ const useShallowSelector = require('./use-shallow-selector.cjs');
26
+ const useSingleton = require('./use-singleton.cjs');
27
+ const useThemeTokens = require('./use-theme-tokens.cjs');
28
+ const useTransientStore = require('./use-transient-store.cjs');
29
+ const useWindowSize = require('./use-window-size.cjs');
30
+ const usehooks = require('@uidotdev/usehooks');
31
+ const ahooks = require('ahooks');
32
+
33
+
34
+
35
+ exports.useAuthorizedItems = useAuthorizedItems.useAuthorizedItems;
36
+ exports.useColorTokens = useColorTokens.useColorTokens;
37
+ exports.useDefaultColorTokens = useColorTokens.useDefaultColorTokens;
38
+ exports.useSemanticColorTokens = useColorTokens.useSemanticColorTokens;
39
+ exports.useComputedActionButtons = useComputedActionButtons.useComputedActionButtons;
40
+ exports.useComputedOptions = useComputedOptions.useComputedOptions;
41
+ exports.DisabledContextProvider = useContextDisabled.DisabledContextProvider;
42
+ exports.useContextDisabled = useContextDisabled.useContextDisabled;
43
+ exports.useDataQuery = useDataQuery.useDataQuery;
44
+ exports.useDeepCallback = useDeepCallback.useDeepCallback;
45
+ exports.useDeepMemo = useDeepMemo.useDeepMemo;
46
+ exports.useDeepSelector = useDeepSelector.useDeepSelector;
47
+ exports.useFallbackOptions = useFallbackOptions.useFallbackOptions;
48
+ exports.useGapSizeNormalizer = useGapSizeNormalizer.useGapSizeNormalizer;
49
+ exports.useNormalizedGapSize = useNormalizedGapSize.useNormalizedGapSize;
50
+ exports.normalizeMenuItem = useNormalizedMenuItems.normalizeMenuItem;
51
+ exports.useNormalizedMenuItems = useNormalizedMenuItems.useNormalizedMenuItems;
52
+ exports.useNormalizedDataOptions = useNormalizedOptions.useNormalizedDataOptions;
53
+ exports.useOptionFilter = useOptionFilter.useOptionFilter;
54
+ exports.useRemoteFilter = useRemoteFilter.useRemoteFilter;
55
+ exports.useShallowCallback = useShallowCallback.useShallowCallback;
56
+ exports.useShallowMemo = useShallowMemo.useShallowMemo;
57
+ exports.useShallowSelector = useShallowSelector.useShallowSelector;
58
+ exports.useSingleton = useSingleton.useSingleton;
59
+ exports.useThemeTokens = useThemeTokens.useThemeTokens;
60
+ exports.useTransientStore = useTransientStore.useTransientStore;
61
+ exports.useWindowSize = useWindowSize.useWindowSize;
62
+ Object.defineProperty(exports, "useClickAway", {
63
+ enumerable: true,
64
+ get: () => usehooks.useClickAway
65
+ });
66
+ Object.defineProperty(exports, "useMeasure", {
67
+ enumerable: true,
68
+ get: () => usehooks.useMeasure
69
+ });
70
+ Object.defineProperty(exports, "useDeepEffect", {
71
+ enumerable: true,
72
+ get: () => ahooks.useDeepCompareEffect
73
+ });
74
+ Object.defineProperty(exports, "useDeepLayoutEffect", {
75
+ enumerable: true,
76
+ get: () => ahooks.useDeepCompareLayoutEffect
77
+ });
78
+ Object.defineProperty(exports, "useElementSize", {
79
+ enumerable: true,
80
+ get: () => ahooks.useSize
81
+ });
82
+ Object.defineProperty(exports, "useEventListener", {
83
+ enumerable: true,
84
+ get: () => ahooks.useEventListener
85
+ });
86
+ Object.defineProperty(exports, "useKeyPress", {
87
+ enumerable: true,
88
+ get: () => ahooks.useKeyPress
89
+ });
90
+ Object.defineProperty(exports, "useMount", {
91
+ enumerable: true,
92
+ get: () => ahooks.useMount
93
+ });
94
+ Object.defineProperty(exports, "useUnmount", {
95
+ enumerable: true,
96
+ get: () => ahooks.useUnmount
97
+ });
98
+ Object.defineProperty(exports, "useUpdateEffect", {
99
+ enumerable: true,
100
+ get: () => ahooks.useUpdateEffect
101
+ });
102
+ Object.defineProperty(exports, "useUpdateLayoutEffect", {
103
+ enumerable: true,
104
+ get: () => ahooks.useUpdateLayoutEffect
105
+ });
106
+ Object.defineProperty(exports, "useUpdater", {
107
+ enumerable: true,
108
+ get: () => ahooks.useUpdate
109
+ });
3
110
  /*! 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/lib/lib.cjs CHANGED
@@ -1,3 +1,59 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@uidotdev/usehooks"),t=require("ahooks");Object.defineProperty(exports,"useClickAway",{enumerable:!0,get:()=>e.useClickAway}),Object.defineProperty(exports,"useMeasure",{enumerable:!0,get:()=>e.useMeasure}),Object.defineProperty(exports,"useDeepEffect",{enumerable:!0,get:()=>t.useDeepCompareEffect}),Object.defineProperty(exports,"useDeepLayoutEffect",{enumerable:!0,get:()=>t.useDeepCompareLayoutEffect}),Object.defineProperty(exports,"useElementSize",{enumerable:!0,get:()=>t.useSize}),Object.defineProperty(exports,"useEventListener",{enumerable:!0,get:()=>t.useEventListener}),Object.defineProperty(exports,"useKeyPress",{enumerable:!0,get:()=>t.useKeyPress}),Object.defineProperty(exports,"useMount",{enumerable:!0,get:()=>t.useMount}),Object.defineProperty(exports,"useUnmount",{enumerable:!0,get:()=>t.useUnmount}),Object.defineProperty(exports,"useUpdateEffect",{enumerable:!0,get:()=>t.useUpdateEffect}),Object.defineProperty(exports,"useUpdateLayoutEffect",{enumerable:!0,get:()=>t.useUpdateLayoutEffect}),Object.defineProperty(exports,"useUpdater",{enumerable:!0,get:()=>t.useUpdate});
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 usehooks = require('@uidotdev/usehooks');
7
+ const ahooks = require('ahooks');
8
+
9
+
10
+
11
+ Object.defineProperty(exports, "useClickAway", {
12
+ enumerable: true,
13
+ get: () => usehooks.useClickAway
14
+ });
15
+ Object.defineProperty(exports, "useMeasure", {
16
+ enumerable: true,
17
+ get: () => usehooks.useMeasure
18
+ });
19
+ Object.defineProperty(exports, "useDeepEffect", {
20
+ enumerable: true,
21
+ get: () => ahooks.useDeepCompareEffect
22
+ });
23
+ Object.defineProperty(exports, "useDeepLayoutEffect", {
24
+ enumerable: true,
25
+ get: () => ahooks.useDeepCompareLayoutEffect
26
+ });
27
+ Object.defineProperty(exports, "useElementSize", {
28
+ enumerable: true,
29
+ get: () => ahooks.useSize
30
+ });
31
+ Object.defineProperty(exports, "useEventListener", {
32
+ enumerable: true,
33
+ get: () => ahooks.useEventListener
34
+ });
35
+ Object.defineProperty(exports, "useKeyPress", {
36
+ enumerable: true,
37
+ get: () => ahooks.useKeyPress
38
+ });
39
+ Object.defineProperty(exports, "useMount", {
40
+ enumerable: true,
41
+ get: () => ahooks.useMount
42
+ });
43
+ Object.defineProperty(exports, "useUnmount", {
44
+ enumerable: true,
45
+ get: () => ahooks.useUnmount
46
+ });
47
+ Object.defineProperty(exports, "useUpdateEffect", {
48
+ enumerable: true,
49
+ get: () => ahooks.useUpdateEffect
50
+ });
51
+ Object.defineProperty(exports, "useUpdateLayoutEffect", {
52
+ enumerable: true,
53
+ get: () => ahooks.useUpdateLayoutEffect
54
+ });
55
+ Object.defineProperty(exports, "useUpdater", {
56
+ enumerable: true,
57
+ get: () => ahooks.useUpdate
58
+ });
3
59
  /*! 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,28 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/core"),r=require("react");exports.useAuthorizedItems=function useAuthorizedItems(t){const{checkPermission:o}=e.useAuthContext();return r.useMemo((()=>t?.filter((e=>{const{permissions:r}=e;if(!r)return!0;return"any"===(e.checkMode??"any")?r.some((e=>o(e))):r.every((e=>o(e)))}))),[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 core = require('@vef-framework/core');
7
+ const react = require('react');
8
+
9
+ function useAuthorizedItems(items) {
10
+ const { checkPermission } = core.useAuthContext();
11
+ return react.useMemo(
12
+ () => items?.filter((item) => {
13
+ const { permissions } = item;
14
+ if (!permissions) {
15
+ return true;
16
+ }
17
+ const checkMode = item.checkMode ?? "any";
18
+ if (checkMode === "any") {
19
+ return permissions.some((permission) => checkPermission(permission));
20
+ }
21
+ return permissions.every((permission) => checkPermission(permission));
22
+ }),
23
+ [items, checkPermission]
24
+ );
25
+ }
26
+
27
+ exports.useAuthorizedItems = useAuthorizedItems;
3
28
  /*! 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.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared"),o=require("react"),s=require("./use-theme-tokens.cjs");function useDefaultColorTokens(){const r=s.useThemeTokens();return o.useMemo((()=>e.defaultColorTypes.reduce(((e,o)=>(e.set(o,r[o]),e)),new Map)),[r])}function useSemanticColorTokens(){const r=s.useThemeTokens();return o.useMemo((()=>e.semanticColorTypes.reduce(((o,s)=>(o.set(s,r[`color${e.capitalize(s)}`]),o)),new Map)),[r])}exports.useColorTokens=function useColorTokens(){const e=useDefaultColorTokens(),s=useSemanticColorTokens();return o.useMemo((()=>new Map([...e,...s])),[e,s])},exports.useDefaultColorTokens=useDefaultColorTokens,exports.useSemanticColorTokens=useSemanticColorTokens;
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
+ const useThemeTokens = require('./use-theme-tokens.cjs');
9
+
10
+ function useDefaultColorTokens() {
11
+ const tokens = useThemeTokens.useThemeTokens();
12
+ return react.useMemo(() => shared.defaultColorTypes.reduce(
13
+ (map, color) => {
14
+ map.set(color, tokens[color]);
15
+ return map;
16
+ },
17
+ /* @__PURE__ */ new Map()
18
+ ), [tokens]);
19
+ }
20
+ function useSemanticColorTokens() {
21
+ const tokens = useThemeTokens.useThemeTokens();
22
+ return react.useMemo(() => shared.semanticColorTypes.reduce((map, color) => {
23
+ map.set(color, tokens[`color${shared.capitalize(color)}`]);
24
+ return map;
25
+ }, /* @__PURE__ */ new Map()), [tokens]);
26
+ }
27
+ function useColorTokens() {
28
+ const defaultColorTokens = useDefaultColorTokens();
29
+ const semanticColorTokens = useSemanticColorTokens();
30
+ return react.useMemo(() => new Map([...defaultColorTokens, ...semanticColorTokens]), [defaultColorTokens, semanticColorTokens]);
31
+ }
32
+
33
+ exports.useColorTokens = useColorTokens;
34
+ exports.useDefaultColorTokens = useDefaultColorTokens;
35
+ exports.useSemanticColorTokens = useSemanticColorTokens;
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,47 @@
1
- /*! VefFramework version: 1.0.97, build time: 2025-03-06T12:24:36.309Z, made by Venus. */
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@vef-framework/shared"),n=require("react");exports.useComputedActionButtons=function useComputedActionButtons(o,t){return n.useMemo((()=>o.filter((n=>{const{show:o}=n;return i.isFunction(o)?o(t):o??!0})).map((n=>{const{disabled:o,requireConfirmation:e,confirmationMode:r,confirmationTitle:a,confirmationContent:u,...s}=n,c={...s,disabled:i.isFunction(o)?o(t):o??!1,requireConfirmation:i.isFunction(e)?e(t):e??!1,confirmationMode:i.isFunction(r)?r(t):r??"simple",confirmationTitle:i.isFunction(a)?a(t):a??i.defaultMessageTitle,confirmationContent:i.isFunction(u)?u(t):u??`确定要${s.label}吗?`};return c.requireConfirmation&&!c.confirmationMode&&(c.confirmationMode="simple"),c.requireConfirmation&&!c.confirmationTitle&&(c.confirmationTitle=i.defaultMessageTitle),c.requireConfirmation&&!c.confirmationContent&&(c.confirmationContent=`确定要${c.label}吗?`),c}))),[o,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 useComputedActionButtons(buttons, context) {
10
+ return react.useMemo(() => buttons.filter((button) => {
11
+ const { show } = button;
12
+ if (shared.isFunction(show)) {
13
+ return show(context);
14
+ }
15
+ return show ?? true;
16
+ }).map((button) => {
17
+ const {
18
+ disabled,
19
+ requireConfirmation,
20
+ confirmationMode,
21
+ confirmationTitle,
22
+ confirmationContent,
23
+ ...rest
24
+ } = button;
25
+ const computedButton = {
26
+ ...rest,
27
+ disabled: shared.isFunction(disabled) ? disabled(context) : disabled ?? false,
28
+ requireConfirmation: shared.isFunction(requireConfirmation) ? requireConfirmation(context) : requireConfirmation ?? false,
29
+ confirmationMode: shared.isFunction(confirmationMode) ? confirmationMode(context) : confirmationMode ?? "simple",
30
+ confirmationTitle: shared.isFunction(confirmationTitle) ? confirmationTitle(context) : confirmationTitle ?? shared.defaultMessageTitle,
31
+ confirmationContent: shared.isFunction(confirmationContent) ? confirmationContent(context) : confirmationContent ?? `\u786E\u5B9A\u8981${rest.label}\u5417\uFF1F`
32
+ };
33
+ if (computedButton.requireConfirmation && !computedButton.confirmationMode) {
34
+ computedButton.confirmationMode = "simple";
35
+ }
36
+ if (computedButton.requireConfirmation && !computedButton.confirmationTitle) {
37
+ computedButton.confirmationTitle = shared.defaultMessageTitle;
38
+ }
39
+ if (computedButton.requireConfirmation && !computedButton.confirmationContent) {
40
+ computedButton.confirmationContent = `\u786E\u5B9A\u8981${computedButton.label}\u5417\uFF1F`;
41
+ }
42
+ return computedButton;
43
+ }), [buttons, context]);
44
+ }
45
+
46
+ exports.useComputedActionButtons = useComputedActionButtons;
3
47
  /*! 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 */