@vef-framework-react/core 2.1.0

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 (120) hide show
  1. package/README +15 -0
  2. package/dist/cjs/_internal/_rolldown/runtime.cjs +1 -0
  3. package/dist/cjs/ai/index.cjs +1 -0
  4. package/dist/cjs/api/client.cjs +1 -0
  5. package/dist/cjs/api/constants.cjs +1 -0
  6. package/dist/cjs/api/helpers.cjs +1 -0
  7. package/dist/cjs/api/index.cjs +1 -0
  8. package/dist/cjs/auth/helpers.cjs +1 -0
  9. package/dist/cjs/auth/index.cjs +1 -0
  10. package/dist/cjs/context/api-client.cjs +1 -0
  11. package/dist/cjs/context/app.cjs +1 -0
  12. package/dist/cjs/context/context-selector.cjs +1 -0
  13. package/dist/cjs/context/disabled.cjs +1 -0
  14. package/dist/cjs/context/index.cjs +1 -0
  15. package/dist/cjs/dnd/index.cjs +1 -0
  16. package/dist/cjs/http/client.cjs +1 -0
  17. package/dist/cjs/http/constants.cjs +1 -0
  18. package/dist/cjs/http/errors.cjs +1 -0
  19. package/dist/cjs/http/helpers.cjs +1 -0
  20. package/dist/cjs/http/index.cjs +1 -0
  21. package/dist/cjs/immer/index.cjs +1 -0
  22. package/dist/cjs/index.cjs +1 -0
  23. package/dist/cjs/motion/features.cjs +1 -0
  24. package/dist/cjs/motion/index.cjs +1 -0
  25. package/dist/cjs/motion/motion-provider.cjs +1 -0
  26. package/dist/cjs/query/constants.cjs +1 -0
  27. package/dist/cjs/query/helpers.cjs +1 -0
  28. package/dist/cjs/query/hooks.cjs +1 -0
  29. package/dist/cjs/query/index.cjs +1 -0
  30. package/dist/cjs/sse/client.cjs +1 -0
  31. package/dist/cjs/sse/helpers.cjs +1 -0
  32. package/dist/cjs/sse/index.cjs +1 -0
  33. package/dist/cjs/state/index.cjs +1 -0
  34. package/dist/cjs/state-machine/index.cjs +1 -0
  35. package/dist/cjs/store/bound.cjs +1 -0
  36. package/dist/cjs/store/index.cjs +1 -0
  37. package/dist/cjs/store/unbound.cjs +1 -0
  38. package/dist/cjs/store/use-deep.cjs +1 -0
  39. package/dist/es/ai/index.js +3 -0
  40. package/dist/es/api/client.js +74 -0
  41. package/dist/es/api/constants.js +14 -0
  42. package/dist/es/api/helpers.js +8 -0
  43. package/dist/es/api/index.js +4 -0
  44. package/dist/es/auth/helpers.js +10 -0
  45. package/dist/es/auth/index.js +2 -0
  46. package/dist/es/context/api-client.js +23 -0
  47. package/dist/es/context/app.js +9 -0
  48. package/dist/es/context/context-selector.js +40 -0
  49. package/dist/es/context/disabled.js +10 -0
  50. package/dist/es/context/index.js +5 -0
  51. package/dist/es/dnd/index.js +8 -0
  52. package/dist/es/http/client.js +187 -0
  53. package/dist/es/http/constants.js +5 -0
  54. package/dist/es/http/errors.js +11 -0
  55. package/dist/es/http/helpers.js +9 -0
  56. package/dist/es/http/index.js +5 -0
  57. package/dist/es/immer/index.js +6 -0
  58. package/dist/es/index.js +27 -0
  59. package/dist/es/motion/features.js +3 -0
  60. package/dist/es/motion/index.js +5 -0
  61. package/dist/es/motion/motion-provider.js +24 -0
  62. package/dist/es/query/constants.js +5 -0
  63. package/dist/es/query/helpers.js +41 -0
  64. package/dist/es/query/hooks.js +26 -0
  65. package/dist/es/query/index.js +4 -0
  66. package/dist/es/sse/client.js +121 -0
  67. package/dist/es/sse/helpers.js +8 -0
  68. package/dist/es/sse/index.js +3 -0
  69. package/dist/es/state/index.js +3 -0
  70. package/dist/es/state-machine/index.js +14 -0
  71. package/dist/es/store/bound.js +20 -0
  72. package/dist/es/store/index.js +6 -0
  73. package/dist/es/store/unbound.js +44 -0
  74. package/dist/es/store/use-deep.js +13 -0
  75. package/dist/types/src/ai/index.d.ts +6 -0
  76. package/dist/types/src/api/client.d.ts +55 -0
  77. package/dist/types/src/api/constants.d.ts +12 -0
  78. package/dist/types/src/api/helpers.d.ts +9 -0
  79. package/dist/types/src/api/index.d.ts +4 -0
  80. package/dist/types/src/api/types.d.ts +48 -0
  81. package/dist/types/src/auth/helpers.d.ts +11 -0
  82. package/dist/types/src/auth/index.d.ts +2 -0
  83. package/dist/types/src/auth/types.d.ts +1 -0
  84. package/dist/types/src/common/index.d.ts +1 -0
  85. package/dist/types/src/common/types.d.ts +98 -0
  86. package/dist/types/src/context/api-client.d.ts +17 -0
  87. package/dist/types/src/context/app.d.ts +12 -0
  88. package/dist/types/src/context/context-selector.d.ts +32 -0
  89. package/dist/types/src/context/disabled.d.ts +9 -0
  90. package/dist/types/src/context/index.d.ts +6 -0
  91. package/dist/types/src/context/types.d.ts +26 -0
  92. package/dist/types/src/dnd/index.d.ts +8 -0
  93. package/dist/types/src/http/client.d.ts +112 -0
  94. package/dist/types/src/http/constants.d.ts +24 -0
  95. package/dist/types/src/http/errors.d.ts +14 -0
  96. package/dist/types/src/http/helpers.d.ts +17 -0
  97. package/dist/types/src/http/index.d.ts +5 -0
  98. package/dist/types/src/http/types.d.ts +101 -0
  99. package/dist/types/src/immer/index.d.ts +2 -0
  100. package/dist/types/src/index.d.ts +16 -0
  101. package/dist/types/src/motion/features.d.ts +1 -0
  102. package/dist/types/src/motion/index.d.ts +4 -0
  103. package/dist/types/src/motion/motion-provider.d.ts +10 -0
  104. package/dist/types/src/query/constants.d.ts +1 -0
  105. package/dist/types/src/query/helpers.d.ts +7 -0
  106. package/dist/types/src/query/hooks.d.ts +27 -0
  107. package/dist/types/src/query/index.d.ts +4 -0
  108. package/dist/types/src/query/types.d.ts +51 -0
  109. package/dist/types/src/sse/client.d.ts +16 -0
  110. package/dist/types/src/sse/helpers.d.ts +9 -0
  111. package/dist/types/src/sse/index.d.ts +3 -0
  112. package/dist/types/src/sse/types.d.ts +98 -0
  113. package/dist/types/src/state/index.d.ts +1 -0
  114. package/dist/types/src/state-machine/index.d.ts +15 -0
  115. package/dist/types/src/store/bound.d.ts +28 -0
  116. package/dist/types/src/store/index.d.ts +5 -0
  117. package/dist/types/src/store/types.d.ts +50 -0
  118. package/dist/types/src/store/unbound.d.ts +26 -0
  119. package/dist/types/src/store/use-deep.d.ts +8 -0
  120. package/package.json +79 -0
package/README ADDED
@@ -0,0 +1,15 @@
1
+ # @vef-vue/core
2
+
3
+ Core features for using VEF Vue framework.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @vef-vue/core
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```ts
14
+ import { xxx } from "@vef-vue/core";
15
+ ```
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));exports.__toESM=s;
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`),require(`ai`);
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);const e=require(`../http/helpers.cjs`),t=require(`../query/helpers.cjs`),n=require(`./constants.cjs`);let r=require(`@vef-framework-react/shared`);function i(e,t){return Object.defineProperty(e,`key`,{value:t,configurable:!1,writable:!1,enumerable:!1}),e}var a=class{#e;#t;#n;get[n.QUERY_CLIENT](){return this.#t}get[n.HTTP_CLIENT](){return this.#e}constructor(n){let{http:r,query:i}=n;this.#t=t.createQueryClient(i),this.#e=this.createProxiedHttpClient(e.createHttpClient(r))}createProxiedHttpClient(e){let t=new Map;return new Proxy(e,{get:(e,i,a)=>{let o=Reflect.get(e,i,a);if(!(0,r.isFunction)(o))return o;if(!t.has(i)){let r=n.PROXIED_METHODS.has(i)?(t,n)=>o.apply(e,[t,{...n,signal:this.#n}]):(...t)=>o.apply(e,t);t.set(i,r)}return t.get(i)}})}createQueryFn(e,t){let n=t(this.#e);return i(e=>{let{queryKey:t,signal:r,pageParam:i,meta:a}=e,[,o]=t;try{return this.#n=r,n(o,i,a)}finally{this.#n=void 0}},e)}createMutationFn(e,t){let n=t(this.#e);return i(e=>n(e),e)}fetchQuery(e){return this.#t.fetchQuery(e)}prefetchQuery(e){return this.#t.prefetchQuery(e)}executeMutation({mutationFn:e,params:t,...n}){return this.#t.getMutationCache().build(this.#t,{mutationKey:[e.key],mutationFn:e,...n}).execute(t)}};exports.ApiClient=a;
@@ -0,0 +1 @@
1
+ const e=require(`../http/constants.cjs`),t=require(`../query/constants.cjs`);var n=new Set([`get`,`post`,`put`,`delete`,`upload`,`download`]),r=Symbol.for(t.QUERY_CLIENT_KEY),i=Symbol.for(e.HTTP_CLIENT_KEY);exports.HTTP_CLIENT=i,exports.PROXIED_METHODS=n,exports.QUERY_CLIENT=r;
@@ -0,0 +1 @@
1
+ const e=require(`./client.cjs`);function t(t){return new e.ApiClient(t)}exports.createApiClient=t;
@@ -0,0 +1 @@
1
+ require(`./constants.cjs`),require(`./client.cjs`),require(`./helpers.cjs`);
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`@vef-framework-react/shared`);function t(t,n,r=`any`){if((0,e.isNullish)(n))return!0;let i=(0,e.isString)(n)?[n]:n;return r===`any`?i.some(e=>t(e)):i.every(e=>t(e))}exports.checkPermission=t;
@@ -0,0 +1 @@
1
+ require(`./helpers.cjs`);
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);const e=require(`../api/constants.cjs`);let t=require(`@tanstack/react-query`),n=require(`react`),r=require(`@emotion/react/jsx-runtime`);var i=(0,n.createContext)(null);function a({value:n,children:a}){return(0,r.jsx)(i,{value:n,children:(0,r.jsx)(t.QueryClientProvider,{client:n[e.QUERY_CLIENT],children:a})})}function o(){let e=(0,n.use)(i);if(!e)throw Error(`useApiClient must be used within an ApiClientProvider.`);return e}exports.ApiClientProvider=a,exports.useApiClient=o;
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`react`);var t=(0,e.createContext)({}),n=t.Provider;function r(){return(0,e.use)(t)}exports.AppContextProvider=n,exports.useAppContext=r;
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`@vef-framework-react/shared`),t=require(`react`),n=require(`@emotion/react/jsx-runtime`);function r(r){let a=(0,t.createContext)(i(r));function o({value:e,children:r}){let[o]=(0,t.useState)(()=>i(e));return(0,t.useEffect)(()=>{Object.is(o.value,e)||(o.value=e,o.notify())}),(0,n.jsx)(a,{value:o,children:r})}o.displayName=`SelectorContextProvider`;function s(n){let r=(0,t.use)(a),i=()=>(0,e.isFunction)(n)?n(r.value):r.value;return(0,t.useSyncExternalStore)(r.subscribe,i,i)}return{Provider:o,useContext:s}}function i(e){let t=new Set;return{value:e,subscribe(e){return t.add(e),()=>t.delete(e)},notify(){for(let e of t)e()}}}exports.createContextWithSelector=r;
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`react`);var t=(0,e.createContext)(!1);function n(){return(0,e.use)(t)}var r=t.Provider;exports.DisabledProvider=r,exports.useDisabled=n;
@@ -0,0 +1 @@
1
+ require(`./api-client.cjs`),require(`./app.cjs`),require(`./context-selector.cjs`),require(`./disabled.cjs`);
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`),require(`@dnd-kit/abstract/modifiers`),require(`@dnd-kit/dom/modifiers`),require(`@dnd-kit/helpers`),require(`@dnd-kit/react`),require(`@dnd-kit/react/sortable`),require(`@hello-pangea/dnd`);
@@ -0,0 +1 @@
1
+ const e=require(`../_internal/_rolldown/runtime.cjs`),t=require(`./constants.cjs`),n=require(`./errors.cjs`);let r=require(`@vef-framework-react/shared`),i=require(`axios`);i=e.__toESM(i);var a=class{#e;#t;#n=!1;#r=[];constructor(e){this.#t=e;let{baseUrl:n,timeout:a=t.DEFAULT_TIMEOUT}=e;this.#e=i.default.create({baseURL:n,allowAbsoluteUrls:!0,timeout:a,headers:{"Content-Type":`application/json`},paramsSerializer:e=>(0,r.encodeQueryString)(e,{arrayFormat:`repeat`,skipNulls:!0,charset:`utf-8`}),responseType:`json`,responseEncoding:`utf-8`,validateStatus:e=>e>=200&&e<300,withCredentials:!1,timeoutErrorMessage:`请求超时`}),this.initInterceptors()}initInterceptors(){this.#e.interceptors.request.use(this.handleRequest.bind(this),this.handleRequestError.bind(this)),this.#e.interceptors.response.use(this.handleResponse.bind(this),this.handleResponseError.bind(this))}matchesCode(e,t){return(0,r.isArray)(t)?t.includes(e):e===t}async handleRequest(e){let n=e.headers[t.SKIP_AUTH_HEADER]===`1`;if(this.#n&&!n&&!await new Promise(e=>{this.#r.push(e)}))throw Error(`登录已过期, 请重新登录`);return n?delete e.headers[t.SKIP_AUTH_HEADER]:await this.injectAccessToken(e),this.replacePathParams(e),e}handleRequestError(e){let{showErrorMessage:t}=this.#t,n=`发起请求失败: ${(e instanceof Error?e.message:String(e))||`未知错误`}`;return t?t(n):console.error(`[HttpClient] ${n}`),Promise.reject(e)}handleResponse(e){let{showWarningMessage:t,okCode:r=0}=this.#t,{code:i,message:a,data:o}=e.data;if(this.matchesCode(i,r))return e;throw t?t(a):console.warn(`[HttpClient] [${e.config.method}: ${e.config.url}] 返回错误: ${a}`),new n.BusinessError(i,a,o)}async handleResponseError(e){if(e instanceof i.CanceledError){if(e.response){let{method:t,url:n}=e.response.config;console.warn(`[HttpClient] [${t}: ${n}] 被取消`)}return}let{response:t}=e;if(!t)throw this.logError(`请求失败: ${e.message||`未知错误`}`),e;let{status:n,config:r,data:a}=t,{code:o,message:s}=a,c=`[${r.method}: ${r.url}]`;switch(n){case 400:this.logWarning(s,`${c} 参数错误: ${s}`);break;case 401:await this.handleUnauthorized(e,o,c);break;case 403:this.#t.showWarningMessage?.(`${s}, 请联系管理员为您开通`),console.warn(`[HttpClient] ${c} 访问被拒绝: ${s}`),await this.#t.onAccessDenied?.();break;default:this.logError(s,`${c} 返回错误: ${s}`)}throw e}async handleUnauthorized(e,t,n){let{tokenExpiredCode:r=[]}=this.#t;if(!this.matchesCode(t,r)){await this.#t.onUnauthenticated?.();return}if(this.#n)throw e;if(await this.tryRefreshToken())return this.retryRequest(e.response.config);this.logInfo(`登录已过期, 请重新登录`),await this.#t.onUnauthenticated?.()}logInfo(e){this.#t.showInfoMessage?this.#t.showInfoMessage(e):console.info(`[HttpClient] ${e}`)}logWarning(e,t){this.#t.showWarningMessage?this.#t.showWarningMessage(e):console.warn(`[HttpClient] ${t??e}`)}logError(e,t){this.#t.showErrorMessage?this.#t.showErrorMessage(e):console.error(`[HttpClient] ${t??e}`)}async injectAccessToken(e){let{getAuthTokens:t}=this.#t;if(!t)return;let n=await t();n?.accessToken&&(e.headers.Authorization=`Bearer ${n.accessToken}`)}replacePathParams(e){let{url:n,params:i={}}=e;!n||!t.PATH_PARAM_REGEX.test(n)||(t.PATH_PARAM_REGEX.lastIndex=0,e.url=n.replaceAll(t.PATH_PARAM_REGEX,(e,t)=>{if(!Object.hasOwn(i,t))return console.warn(`[HttpClient] 接口: ${n} 路径参数 ${t} 未在查询参数中定义, 请检查`),`unknown`;let a=i[t];return(0,r.isNullish)(a)?(console.warn(`[HttpClient] 接口: ${n} 路径参数 ${t} 在查询参数中为空, 请检查`),`unknown`):String(a)}))}async ensureTokenRefreshed(e=!0){if(this.#n)return new Promise(e=>{this.#r.push(e)});let t=await this.tryRefreshToken();return!t&&e&&await this.#t.onUnauthenticated?.(),t}async tryRefreshToken(){let{getAuthTokens:e,refreshToken:t,setAuthTokens:n}=this.#t;if(!e||!t||!n)return!1;this.#n=!0;let r=!1;try{let i=await e();if(!i)return!1;let a=await t(i);return await n(Object.freeze(a)),r=!0,!0}catch(e){return console.error(`[HttpClient] 刷新令牌失败: ${e}`),!1}finally{this.#n=!1;for(let e of this.#r)e(r);this.#r=[]}}async retryRequest(e){let t={...e};return await this.injectAccessToken(t),this.#e(t)}async get(e,t){return(await this.#e.get(e,t)).data}async post(e,t){let{data:n,...r}=t??{};return(await this.#e.post(e,n,r)).data}async put(e,t){let{data:n,...r}=t??{};return(await this.#e.put(e,n,r)).data}async delete(e,t){return(await this.#e.delete(e,t)).data}async upload(e,t){let{data:n,onProgress:i,...a}=t??{};return(await this.#e.postForm(e,n,{...a,onUploadProgress:(0,r.isFunction)(i)?i:void 0})).data}async download(e,n){let{onProgress:i,filename:a,...o}=n??{},{data:s,headers:c}=await this.#e.get(e,{...o,responseType:`blob`,responseEncoding:`binary`,onDownloadProgress:(0,r.isFunction)(i)?i:void 0});try{let e=JSON.parse(await s.text());throw Error(e.message)}catch{}let l=c[`content-disposition`];if(!(0,r.isString)(l))return;let u=t.CONTENT_DISPOSITION_FILENAME_REGEX.exec(l);if(!u?.groups?.name)return;let d=decodeURIComponent(u.groups.name),f=URL.createObjectURL(s);try{let e=document.createElement(`a`);e.href=f,e.download=(0,r.isFunction)(a)?a(d):a??d,e.click()}finally{URL.revokeObjectURL(f)}}};exports.HttpClient=a;
@@ -0,0 +1 @@
1
+ var e=`__vef_http_client_key`,t=/:(?<key>\w+)/g,n=/filename[^;=\n]*=(?<name>(?<quote>['"]).*?\2|[^;\n]*)/,r=`X-Skip-Authentication`,i=`1`,a=3e4;exports.CONTENT_DISPOSITION_FILENAME_REGEX=n,exports.DEFAULT_TIMEOUT=a,exports.HTTP_CLIENT_KEY=e,exports.PATH_PARAM_REGEX=t,exports.SKIP_AUTH_HEADER=r,exports.SKIP_AUTH_VALUE=i;
@@ -0,0 +1 @@
1
+ var e=class extends Error{code;data;constructor(e,t,n){super(t),this.name=`BusinessError`,this.code=e,this.data=n}};exports.BusinessError=e;
@@ -0,0 +1 @@
1
+ require(`./errors.cjs`);const e=require(`./client.cjs`);function t(t){return Object.freeze(new e.HttpClient(t))}exports.createHttpClient=t;
@@ -0,0 +1 @@
1
+ require(`./constants.cjs`),require(`./errors.cjs`),require(`./client.cjs`),require(`./helpers.cjs`);
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`immer`);require(`use-immer`),(0,e.enableMapSet)(),(0,e.enablePatches)(),(0,e.setAutoFreeze)(!1);
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./_internal/_rolldown/runtime.cjs`);const e=require(`./http/constants.cjs`),t=require(`./query/hooks.cjs`),n=require(`./api/constants.cjs`),r=require(`./api/client.cjs`),i=require(`./api/helpers.cjs`),a=require(`./auth/helpers.cjs`),o=require(`./context/api-client.cjs`),s=require(`./context/app.cjs`),c=require(`./context/context-selector.cjs`),l=require(`./context/disabled.cjs`),u=require(`./motion/motion-provider.cjs`),d=require(`./sse/client.cjs`),f=require(`./sse/helpers.cjs`),p=require(`./state-machine/index.cjs`),m=require(`./store/bound.cjs`),h=require(`./store/unbound.cjs`),g=require(`./store/use-deep.cjs`);let _=require(`clsx`),v=require(`motion/react`),y=require(`ai`),b=require(`@dnd-kit/dom/modifiers`),x=require(`@hello-pangea/dnd`),S=require(`use-immer`),C=require(`@tanstack/react-query`),w=require(`@dnd-kit/react`),T=require(`jotai`),E=require(`xstate`),D=require(`@dnd-kit/helpers`),O=require(`immer`),k=require(`zustand/shallow`),A=require(`@xstate/react`),j=require(`@dnd-kit/react/sortable`),M=require(`@dnd-kit/abstract/modifiers`),N=require(`motion/react-m`);Object.defineProperty(exports,`Actor`,{enumerable:!0,get:function(){return E.Actor}}),Object.defineProperty(exports,`AnimatePresence`,{enumerable:!0,get:function(){return v.AnimatePresence}}),exports.ApiClient=r.ApiClient,exports.ApiClientProvider=o.ApiClientProvider,exports.AppContextProvider=s.AppContextProvider,Object.defineProperty(exports,`AtomStoreProvider`,{enumerable:!0,get:function(){return T.Provider}}),Object.defineProperty(exports,`AxisModifier`,{enumerable:!0,get:function(){return M.AxisModifier}}),Object.defineProperty(exports,`DefaultChatTransport`,{enumerable:!0,get:function(){return y.DefaultChatTransport}}),exports.DisabledProvider=l.DisabledProvider,Object.defineProperty(exports,`DragDropContext`,{enumerable:!0,get:function(){return x.DragDropContext}}),Object.defineProperty(exports,`DragDropProvider`,{enumerable:!0,get:function(){return w.DragDropProvider}}),Object.defineProperty(exports,`DragOverlay`,{enumerable:!0,get:function(){return w.DragOverlay}}),Object.defineProperty(exports,`Draggable`,{enumerable:!0,get:function(){return x.Draggable}}),Object.defineProperty(exports,`Droppable`,{enumerable:!0,get:function(){return x.Droppable}}),exports.HTTP_CLIENT=n.HTTP_CLIENT,Object.defineProperty(exports,`KeyboardSensor`,{enumerable:!0,get:function(){return w.KeyboardSensor}}),Object.defineProperty(exports,`LayoutGroup`,{enumerable:!0,get:function(){return v.LayoutGroup}}),exports.MotionProvider=u.default,Object.defineProperty(exports,`PointerSensor`,{enumerable:!0,get:function(){return w.PointerSensor}}),exports.QUERY_CLIENT=n.QUERY_CLIENT,Object.defineProperty(exports,`Reorder`,{enumerable:!0,get:function(){return v.Reorder}}),Object.defineProperty(exports,`RestrictToElement`,{enumerable:!0,get:function(){return b.RestrictToElement}}),Object.defineProperty(exports,`RestrictToHorizontalAxis`,{enumerable:!0,get:function(){return M.RestrictToHorizontalAxis}}),Object.defineProperty(exports,`RestrictToVerticalAxis`,{enumerable:!0,get:function(){return M.RestrictToVerticalAxis}}),Object.defineProperty(exports,`RestrictToWindow`,{enumerable:!0,get:function(){return b.RestrictToWindow}}),Object.defineProperty(exports,`SnapModifier`,{enumerable:!0,get:function(){return M.SnapModifier}}),exports.SseClient=d.SseClient,Object.defineProperty(exports,`TextStreamChatTransport`,{enumerable:!0,get:function(){return y.TextStreamChatTransport}}),Object.defineProperty(exports,`applyPatches`,{enumerable:!0,get:function(){return O.applyPatches}}),Object.defineProperty(exports,`atom`,{enumerable:!0,get:function(){return T.atom}}),exports.checkPermission=a.checkPermission,Object.defineProperty(exports,`clsx`,{enumerable:!0,get:function(){return _.clsx}}),Object.defineProperty(exports,`createActor`,{enumerable:!0,get:function(){return E.createActor}}),exports.createApiClient=i.createApiClient,Object.defineProperty(exports,`createAtomStore`,{enumerable:!0,get:function(){return T.createStore}}),exports.createComponentStore=h.createComponentStore,exports.createContextWithSelector=c.createContextWithSelector,Object.defineProperty(exports,`createMachine`,{enumerable:!0,get:function(){return E.createMachine}}),exports.createPersistedStore=m.createPersistedStore,exports.createSseClient=f.createSseClient,exports.createStore=m.createStore,Object.defineProperty(exports,`currentState`,{enumerable:!0,get:function(){return O.current}}),Object.defineProperty(exports,`getDefaultAtomStore`,{enumerable:!0,get:function(){return T.getDefaultStore}}),Object.defineProperty(exports,`getToolName`,{enumerable:!0,get:function(){return y.getToolName}}),Object.defineProperty(exports,`getToolOrDynamicToolName`,{enumerable:!0,get:function(){return y.getToolOrDynamicToolName}}),Object.defineProperty(exports,`isDataUIPart`,{enumerable:!0,get:function(){return y.isDataUIPart}}),Object.defineProperty(exports,`isDeepEqualData`,{enumerable:!0,get:function(){return y.isDeepEqualData}}),Object.defineProperty(exports,`isFileUIPart`,{enumerable:!0,get:function(){return y.isFileUIPart}}),Object.defineProperty(exports,`isReasoningUIPart`,{enumerable:!0,get:function(){return y.isReasoningUIPart}}),Object.defineProperty(exports,`isTextUIPart`,{enumerable:!0,get:function(){return y.isTextUIPart}}),Object.defineProperty(exports,`isToolOrDynamicToolUIPart`,{enumerable:!0,get:function(){return y.isToolOrDynamicToolUIPart}}),Object.defineProperty(exports,`isToolUIPart`,{enumerable:!0,get:function(){return y.isToolUIPart}}),Object.defineProperty(exports,`keepPreviousData`,{enumerable:!0,get:function(){return C.keepPreviousData}}),Object.defineProperty(exports,`matchMutation`,{enumerable:!0,get:function(){return C.matchMutation}}),Object.defineProperty(exports,`matchQuery`,{enumerable:!0,get:function(){return C.matchQuery}}),Object.defineProperty(exports,`motion`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`moveArrayItem`,{enumerable:!0,get:function(){return D.arrayMove}}),Object.defineProperty(exports,`moveDragItem`,{enumerable:!0,get:function(){return D.move}}),Object.defineProperty(exports,`originalState`,{enumerable:!0,get:function(){return O.original}}),Object.defineProperty(exports,`parsePartialJson`,{enumerable:!0,get:function(){return y.parsePartialJson}}),Object.defineProperty(exports,`produce`,{enumerable:!0,get:function(){return O.produce}}),Object.defineProperty(exports,`produceWithPatches`,{enumerable:!0,get:function(){return O.produceWithPatches}}),Object.defineProperty(exports,`restrictShapeToBoundingRectangle`,{enumerable:!0,get:function(){return M.restrictShapeToBoundingRectangle}}),exports.skipAuthenticationHeader=e.SKIP_AUTH_HEADER,exports.skipAuthenticationValue=e.SKIP_AUTH_VALUE,Object.defineProperty(exports,`skipQueryToken`,{enumerable:!0,get:function(){return C.skipToken}}),Object.defineProperty(exports,`swapArrayItem`,{enumerable:!0,get:function(){return D.arraySwap}}),Object.defineProperty(exports,`swapDragItem`,{enumerable:!0,get:function(){return D.swap}}),Object.defineProperty(exports,`updateContext`,{enumerable:!0,get:function(){return E.assign}}),exports.useActor=p.useActor,Object.defineProperty(exports,`useActorRef`,{enumerable:!0,get:function(){return A.useActorRef}}),exports.useApiClient=o.useApiClient,exports.useAppContext=s.useAppContext,Object.defineProperty(exports,`useAtom`,{enumerable:!0,get:function(){return T.useAtom}}),Object.defineProperty(exports,`useAtomStore`,{enumerable:!0,get:function(){return T.useStore}}),Object.defineProperty(exports,`useAtomValue`,{enumerable:!0,get:function(){return T.useAtomValue}}),exports.useDeep=g.useDeep,exports.useDisabled=l.useDisabled,Object.defineProperty(exports,`useDragControls`,{enumerable:!0,get:function(){return v.useDragControls}}),Object.defineProperty(exports,`useDragDropMonitor`,{enumerable:!0,get:function(){return w.useDragDropMonitor}}),Object.defineProperty(exports,`useDraggable`,{enumerable:!0,get:function(){return w.useDraggable}}),Object.defineProperty(exports,`useDroppable`,{enumerable:!0,get:function(){return w.useDroppable}}),Object.defineProperty(exports,`useImmer`,{enumerable:!0,get:function(){return S.useImmer}}),Object.defineProperty(exports,`useImmerReducer`,{enumerable:!0,get:function(){return S.useImmerReducer}}),Object.defineProperty(exports,`useInView`,{enumerable:!0,get:function(){return v.useInView}}),exports.useInfiniteQuery=t.useInfiniteQuery,exports.useIsFetching=t.useIsFetching,exports.useIsMutating=t.useIsMutating,exports.useMutation=t.useMutation,exports.useMutationState=t.useMutationState,exports.useQueries=t.useQueries,exports.useQuery=t.useQuery,Object.defineProperty(exports,`useQueryErrorResetBoundary`,{enumerable:!0,get:function(){return C.useQueryErrorResetBoundary}}),Object.defineProperty(exports,`useSetAtom`,{enumerable:!0,get:function(){return T.useSetAtom}}),Object.defineProperty(exports,`useShallow`,{enumerable:!0,get:function(){return k.useShallow}}),Object.defineProperty(exports,`useSortable`,{enumerable:!0,get:function(){return j.useSortable}});
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`motion/react`);Object.defineProperty(exports,`default`,{enumerable:!0,get:function(){return e.domMax}});
@@ -0,0 +1 @@
1
+ const e=require(`../_internal/_rolldown/runtime.cjs`);require(`./motion-provider.cjs`),require(`motion/react`);let t=require(`motion/react-m`);t=e.__toESM(t);
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`@vef-framework-react/shared`),t=require(`react`),n=require(`@emotion/react/jsx-runtime`),r=require(`motion/react`);var i=()=>Promise.resolve().then(()=>require(`./features.cjs`)).then(e=>e.default),a={duration:.2,ease:`easeInOut`};function o({children:o}){let[s]=(0,t.useState)(e.generateId);return(0,n.jsx)(r.LazyMotion,{features:i,children:(0,n.jsx)(r.MotionConfig,{nonce:s,reducedMotion:`user`,transition:a,children:o})})}exports.default=o;
@@ -0,0 +1 @@
1
+ var e=`__vef_query_client_key`;exports.QUERY_CLIENT_KEY=e;
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`@vef-framework-react/shared`),t=require(`@tanstack/react-query`);function n(n){let{staleTime:r=5e3,gcTime:i=3e5,showSuccessMessage:a}=n??{},o=new t.QueryClient({mutationCache:new t.MutationCache({onSuccess:async(n,r,i,s)=>{let{invalidates:c,shouldShowSuccessFeedback:l=!0}=s.meta??{};c&&await o.invalidateQueries({stale:!1,type:`all`,predicate:e=>c.some(n=>(0,t.matchQuery)({queryKey:n},e))}),l&&(0,e.isPlainObject)(n)&&Object.hasOwn(n,`message`)&&a?.(n.message)}}),defaultOptions:{queries:{staleTime:r,gcTime:i,networkMode:`online`,retry:!1,structuralSharing:!0,throwOnError:!1,refetchOnMount:!0,refetchOnReconnect:!0,refetchOnWindowFocus:!0,retryOnMount:!0,queryKeyHashFn:e.hashKey,experimental_prefetchInRender:!0},mutations:{gcTime:i,networkMode:`online`,retry:!1,throwOnError:!1}}});return o}exports.createQueryClient=n;
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`@tanstack/react-query`);function t(t){return(0,e.useQuery)(t)}function n(t){return(0,e.useInfiniteQuery)(t)}function r(t){return(0,e.useQueries)(t)}function i(t){return(0,e.useMutation)(t)}function a(t){return(0,e.useMutationState)(t)}function o(t){return(0,e.useIsFetching)(t)}function s(t){return(0,e.useIsMutating)(t)}exports.useInfiniteQuery=n,exports.useIsFetching=o,exports.useIsMutating=s,exports.useMutation=i,exports.useMutationState=a,exports.useQueries=r,exports.useQuery=t;
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`),require(`./constants.cjs`),require(`./helpers.cjs`),require(`./hooks.cjs`),require(`@tanstack/react-query`);
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`@vef-framework-react/shared`),t=require(`@microsoft/fetch-event-source`);var n=class extends Error{constructor(){super(`Token expired`),this.name=`TokenExpiredError`}};function r(e,t){let n=t.toLowerCase();return Object.keys(e).some(e=>e.toLowerCase()===n)}function i(t,n){if(t!==void 0)return(0,e.isString)(t)?t:(r(n,`content-type`)||(n[`Content-Type`]=`application/json`),JSON.stringify(t))}var a=class{#e;#t=new Set;constructor(e={}){this.#e={enableRetry:!0,maxRetries:3,...e}}stream(e,t){return this.#n(e,t,!1)}abort(){for(let e of this.#t)e.abort();this.#t.clear()}async#n(e,r,a){let o=new AbortController;this.#t.add(o);let s=this.#r(e.signal,o),c=await this.#i(e.headers),l=i(e.body,c),u=0,d=!1,f=()=>{d||(d=!0,s?.(),this.#t.delete(o))};try{await(0,t.fetchEventSource)(e.url,{method:e.method??`POST`,headers:c,body:l,signal:o.signal,onopen:async e=>{if(e.status===401)throw new n;if(!e.ok)throw Error(`HTTP ${e.status}: ${e.statusText}`);let t=e.headers.get(`content-type`);if(t&&!t.includes(`text/event-stream`))throw Error(`Expected content-type to be text/event-stream, got ${t}`);u=0,await r.onOpen?.(e)},onmessage:e=>{r.onMessage({id:e.id,event:e.event,data:e.data})},onerror:e=>{if(o.signal.aborted)return;if(e instanceof n)throw e;if(this.#e.enableRetry&&u<this.#e.maxRetries){u++,console.warn(`SSE connection error, retrying (${u}/${this.#e.maxRetries})...`);return}let t=e;throw r.onError?.(t),this.#e.showErrorMessage?.(t.message),e},onclose:()=>{r.onClose?.()}})}catch(t){if(!await this.#a(t,e,r,a,f))throw t}finally{f()}}#r(e,t){if(!e)return;let n=()=>{t.abort(e.reason)};if(e.aborted){n();return}return e.addEventListener(`abort`,n,{once:!0}),()=>e.removeEventListener(`abort`,n)}async#i(e){let t={...e};try{let e=await this.#e.getAuthTokens?.();e?.accessToken&&!r(t,`authorization`)&&(t.Authorization=`Bearer ${e.accessToken}`)}catch(e){console.error(`Failed to get auth tokens:`,e)}return t}async#a(e,t,r,i,a){if(e instanceof Error&&e.name===`AbortError`)return!0;if(e instanceof n&&!i){if(await this.#o())return a(),await this.#n(t,r,!0),!0;let e=Error(`Authentication failed: token expired`);return r.onError?.(e),this.#e.showErrorMessage?.(e.message),!0}return!1}async#o(){let{onTokenExpired:e}=this.#e;if(!e)return!1;try{return await e()}catch(e){return console.error(`Failed to refresh token:`,e),!1}}};exports.SseClient=a;
@@ -0,0 +1 @@
1
+ const e=require(`./client.cjs`);function t(t){return new e.SseClient(t)}exports.createSseClient=t;
@@ -0,0 +1 @@
1
+ require(`./client.cjs`),require(`./helpers.cjs`);
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`),require(`jotai`);
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`@xstate/react`);require(`xstate`);function t(t,n,...[r]){let i=(0,e.useActorRef)(t,r);return[(0,e.useSelector)(i,n,Object.is),i.send,i]}exports.useActor=t;
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`@vef-framework-react/shared`),t=require(`zustand`),n=require(`zustand/middleware`),r=require(`zustand/middleware/immer`);function i(e){return(0,t.create)()((0,n.subscribeWithSelector)((0,r.immer)(e)))}function a(i,a){let{name:o,storage:s,selector:c}=a,l=`__VEF_STORE__${(0,e.constantCase)(o)}__`,u=s===`local`?localStorage:sessionStorage;return(0,t.create)()((0,n.subscribeWithSelector)((0,n.persist)((0,r.immer)(i),{name:l,version:1,storage:(0,n.createJSONStorage)(()=>u),partialize:c??e.identity})))}exports.createPersistedStore=a,exports.createStore=i;
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`),require(`./bound.cjs`),require(`./unbound.cjs`),require(`./use-deep.cjs`),require(`zustand/shallow`);
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`@vef-framework-react/shared`),t=require(`react`),n=require(`@emotion/react/jsx-runtime`),r=require(`motion/react`),i=require(`zustand`),a=require(`zustand/middleware`),o=require(`zustand/middleware/immer`);var s=new Map;function c(c,l){let u=`${c}StoreContext`,d=s.get(u);d||(d=(0,t.createContext)(null),d.displayName=u,s.set(u,d));let f=d;function p({children:s,initialState:c}){let u=(0,t.useRef)(null),d=(0,t.useRef)(!1),p=(0,t.useRef)(c);return p.current=c,(!u.current||!d.current)&&(u.current=(0,i.createStore)()((0,a.subscribeWithSelector)((0,o.immer)(l))),d.current=!0),(0,r.useIsomorphicLayoutEffect)(()=>{!(0,e.isPlainObject)(p.current)||!u.current||u.current.setState(t=>{(0,e.mergeWith)(t,p.current,!0)})},[]),(0,n.jsx)(f,{value:u.current,children:s})}function m(){let e=(0,t.use)(f);if(!e){let e=`${c}Store is not found in the React context. Ensure the component is wrapped in ${c}StoreProvider.`;throw Error(e+``)}return e}function h(e){let t=m();return(0,i.useStore)(t,e)}return{StoreProvider:p,useStoreApi:m,useStore:h}}exports.createComponentStore=c;
@@ -0,0 +1 @@
1
+ require(`../_internal/_rolldown/runtime.cjs`);let e=require(`@vef-framework-react/shared`),t=require(`react`);function n(n){let r=(0,t.useRef)(null);return t=>{let i=n(t);return(0,e.isDeepEqual)(r.current,i)?r.current:(r.current=i,i)}}exports.useDeep=n;
@@ -0,0 +1,3 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import { DefaultChatTransport as e, TextStreamChatTransport as t, getToolName as n, getToolOrDynamicToolName as r, isDataUIPart as i, isDeepEqualData as a, isFileUIPart as o, isReasoningUIPart as s, isTextUIPart as c, isToolOrDynamicToolUIPart as l, isToolUIPart as u, parsePartialJson as d } from "ai";
3
+ export { e as DefaultChatTransport, t as TextStreamChatTransport, n as getToolName, r as getToolOrDynamicToolName, i as isDataUIPart, a as isDeepEqualData, o as isFileUIPart, s as isReasoningUIPart, c as isTextUIPart, l as isToolOrDynamicToolUIPart, u as isToolUIPart, d as parsePartialJson };
@@ -0,0 +1,74 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import { createHttpClient as e } from "../http/helpers.js";
3
+ import { createQueryClient as t } from "../query/helpers.js";
4
+ import { HTTP_CLIENT as n, PROXIED_METHODS as r, QUERY_CLIENT as i } from "./constants.js";
5
+ import { isFunction as a } from "@vef-framework-react/shared";
6
+ //#region src/api/client.ts
7
+ function o(e, t) {
8
+ return Object.defineProperty(e, "key", {
9
+ value: t,
10
+ configurable: !1,
11
+ writable: !1,
12
+ enumerable: !1
13
+ }), e;
14
+ }
15
+ var s = class {
16
+ #e;
17
+ #t;
18
+ #n;
19
+ get [i]() {
20
+ return this.#t;
21
+ }
22
+ get [n]() {
23
+ return this.#e;
24
+ }
25
+ constructor(n) {
26
+ let { http: r, query: i } = n;
27
+ this.#t = t(i), this.#e = this.createProxiedHttpClient(e(r));
28
+ }
29
+ createProxiedHttpClient(e) {
30
+ let t = /* @__PURE__ */ new Map();
31
+ return new Proxy(e, { get: (e, n, i) => {
32
+ let o = Reflect.get(e, n, i);
33
+ if (!a(o)) return o;
34
+ if (!t.has(n)) {
35
+ let i = r.has(n) ? (t, n) => o.apply(e, [t, {
36
+ ...n,
37
+ signal: this.#n
38
+ }]) : (...t) => o.apply(e, t);
39
+ t.set(n, i);
40
+ }
41
+ return t.get(n);
42
+ } });
43
+ }
44
+ createQueryFn(e, t) {
45
+ let n = t(this.#e);
46
+ return o((e) => {
47
+ let { queryKey: t, signal: r, pageParam: i, meta: a } = e, [, o] = t;
48
+ try {
49
+ return this.#n = r, n(o, i, a);
50
+ } finally {
51
+ this.#n = void 0;
52
+ }
53
+ }, e);
54
+ }
55
+ createMutationFn(e, t) {
56
+ let n = t(this.#e);
57
+ return o((e) => n(e), e);
58
+ }
59
+ fetchQuery(e) {
60
+ return this.#t.fetchQuery(e);
61
+ }
62
+ prefetchQuery(e) {
63
+ return this.#t.prefetchQuery(e);
64
+ }
65
+ executeMutation({ mutationFn: e, params: t, ...n }) {
66
+ return this.#t.getMutationCache().build(this.#t, {
67
+ mutationKey: [e.key],
68
+ mutationFn: e,
69
+ ...n
70
+ }).execute(t);
71
+ }
72
+ };
73
+ //#endregion
74
+ export { s as ApiClient };
@@ -0,0 +1,14 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import { HTTP_CLIENT_KEY as e } from "../http/constants.js";
3
+ import { QUERY_CLIENT_KEY as t } from "../query/constants.js";
4
+ //#region src/api/constants.ts
5
+ var n = new Set([
6
+ "get",
7
+ "post",
8
+ "put",
9
+ "delete",
10
+ "upload",
11
+ "download"
12
+ ]), r = Symbol.for(t), i = Symbol.for(e);
13
+ //#endregion
14
+ export { i as HTTP_CLIENT, n as PROXIED_METHODS, r as QUERY_CLIENT };
@@ -0,0 +1,8 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import { ApiClient as e } from "./client.js";
3
+ //#region src/api/helpers.ts
4
+ function t(t) {
5
+ return new e(t);
6
+ }
7
+ //#endregion
8
+ export { t as createApiClient };
@@ -0,0 +1,4 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import "./constants.js";
3
+ import "./client.js";
4
+ import "./helpers.js";
@@ -0,0 +1,10 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import { isNullish as e, isString as t } from "@vef-framework-react/shared";
3
+ //#region src/auth/helpers.ts
4
+ function n(n, r, i = "any") {
5
+ if (e(r)) return !0;
6
+ let a = t(r) ? [r] : r;
7
+ return i === "any" ? a.some((e) => n(e)) : a.every((e) => n(e));
8
+ }
9
+ //#endregion
10
+ export { n as checkPermission };
@@ -0,0 +1,2 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import "./helpers.js";
@@ -0,0 +1,23 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import { QUERY_CLIENT as e } from "../api/constants.js";
3
+ import { QueryClientProvider as t } from "@tanstack/react-query";
4
+ import { createContext as n, use as r } from "react";
5
+ import { jsx as i } from "@emotion/react/jsx-runtime";
6
+ //#region src/context/api-client.tsx
7
+ var a = n(null);
8
+ function o({ value: n, children: r }) {
9
+ return /* @__PURE__ */ i(a, {
10
+ value: n,
11
+ children: /* @__PURE__ */ i(t, {
12
+ client: n[e],
13
+ children: r
14
+ })
15
+ });
16
+ }
17
+ function s() {
18
+ let e = r(a);
19
+ if (!e) throw Error("useApiClient must be used within an ApiClientProvider.");
20
+ return e;
21
+ }
22
+ //#endregion
23
+ export { o as ApiClientProvider, s as useApiClient };
@@ -0,0 +1,9 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import { createContext as e, use as t } from "react";
3
+ //#region src/context/app.ts
4
+ var n = e({}), r = n.Provider;
5
+ function i() {
6
+ return t(n);
7
+ }
8
+ //#endregion
9
+ export { r as AppContextProvider, i as useAppContext };
@@ -0,0 +1,40 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import { isFunction as e } from "@vef-framework-react/shared";
3
+ import { createContext as t, use as n, useEffect as r, useState as i, useSyncExternalStore as a } from "react";
4
+ import { jsx as o } from "@emotion/react/jsx-runtime";
5
+ //#region src/context/context-selector.tsx
6
+ function s(s) {
7
+ let l = t(c(s));
8
+ function u({ value: e, children: t }) {
9
+ let [n] = i(() => c(e));
10
+ return r(() => {
11
+ Object.is(n.value, e) || (n.value = e, n.notify());
12
+ }), /* @__PURE__ */ o(l, {
13
+ value: n,
14
+ children: t
15
+ });
16
+ }
17
+ u.displayName = "SelectorContextProvider";
18
+ function d(t) {
19
+ let r = n(l), i = () => e(t) ? t(r.value) : r.value;
20
+ return a(r.subscribe, i, i);
21
+ }
22
+ return {
23
+ Provider: u,
24
+ useContext: d
25
+ };
26
+ }
27
+ function c(e) {
28
+ let t = /* @__PURE__ */ new Set();
29
+ return {
30
+ value: e,
31
+ subscribe(e) {
32
+ return t.add(e), () => t.delete(e);
33
+ },
34
+ notify() {
35
+ for (let e of t) e();
36
+ }
37
+ };
38
+ }
39
+ //#endregion
40
+ export { s as createContextWithSelector };
@@ -0,0 +1,10 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import { createContext as e, use as t } from "react";
3
+ //#region src/context/disabled.ts
4
+ var n = e(!1);
5
+ function r() {
6
+ return t(n);
7
+ }
8
+ var i = n.Provider;
9
+ //#endregion
10
+ export { i as DisabledProvider, r as useDisabled };
@@ -0,0 +1,5 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import "./api-client.js";
3
+ import "./app.js";
4
+ import "./context-selector.js";
5
+ import "./disabled.js";
@@ -0,0 +1,8 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import { AxisModifier as e, RestrictToHorizontalAxis as t, RestrictToVerticalAxis as n, SnapModifier as r, restrictShapeToBoundingRectangle as i } from "@dnd-kit/abstract/modifiers";
3
+ import { RestrictToElement as a, RestrictToWindow as o } from "@dnd-kit/dom/modifiers";
4
+ import { arrayMove as s, arraySwap as c, move as l, swap as u } from "@dnd-kit/helpers";
5
+ import { DragDropProvider as d, DragOverlay as f, KeyboardSensor as p, PointerSensor as m, useDragDropMonitor as h, useDraggable as g, useDroppable as _ } from "@dnd-kit/react";
6
+ import { useSortable as v } from "@dnd-kit/react/sortable";
7
+ import { DragDropContext as y, Draggable as b, Droppable as x } from "@hello-pangea/dnd";
8
+ export { e as AxisModifier, y as DragDropContext, d as DragDropProvider, f as DragOverlay, b as Draggable, x as Droppable, p as KeyboardSensor, m as PointerSensor, a as RestrictToElement, t as RestrictToHorizontalAxis, n as RestrictToVerticalAxis, o as RestrictToWindow, r as SnapModifier, s as moveArrayItem, l as moveDragItem, i as restrictShapeToBoundingRectangle, c as swapArrayItem, u as swapDragItem, h as useDragDropMonitor, g as useDraggable, _ as useDroppable, v as useSortable };
@@ -0,0 +1,187 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ import { CONTENT_DISPOSITION_FILENAME_REGEX as e, DEFAULT_TIMEOUT as t, PATH_PARAM_REGEX as n, SKIP_AUTH_HEADER as r } from "./constants.js";
3
+ import { BusinessError as i } from "./errors.js";
4
+ import { encodeQueryString as a, isArray as o, isFunction as s, isNullish as c, isString as l } from "@vef-framework-react/shared";
5
+ import u, { CanceledError as d } from "axios";
6
+ //#region src/http/client.ts
7
+ var f = class {
8
+ #e;
9
+ #t;
10
+ #n = !1;
11
+ #r = [];
12
+ constructor(e) {
13
+ this.#t = e;
14
+ let { baseUrl: n, timeout: r = t } = e;
15
+ this.#e = u.create({
16
+ baseURL: n,
17
+ allowAbsoluteUrls: !0,
18
+ timeout: r,
19
+ headers: { "Content-Type": "application/json" },
20
+ paramsSerializer: (e) => a(e, {
21
+ arrayFormat: "repeat",
22
+ skipNulls: !0,
23
+ charset: "utf-8"
24
+ }),
25
+ responseType: "json",
26
+ responseEncoding: "utf-8",
27
+ validateStatus: (e) => e >= 200 && e < 300,
28
+ withCredentials: !1,
29
+ timeoutErrorMessage: "请求超时"
30
+ }), this.initInterceptors();
31
+ }
32
+ initInterceptors() {
33
+ this.#e.interceptors.request.use(this.handleRequest.bind(this), this.handleRequestError.bind(this)), this.#e.interceptors.response.use(this.handleResponse.bind(this), this.handleResponseError.bind(this));
34
+ }
35
+ matchesCode(e, t) {
36
+ return o(t) ? t.includes(e) : e === t;
37
+ }
38
+ async handleRequest(e) {
39
+ let t = e.headers[r] === "1";
40
+ if (this.#n && !t && !await new Promise((e) => {
41
+ this.#r.push(e);
42
+ })) throw Error("登录已过期, 请重新登录");
43
+ return t ? delete e.headers[r] : await this.injectAccessToken(e), this.replacePathParams(e), e;
44
+ }
45
+ handleRequestError(e) {
46
+ let { showErrorMessage: t } = this.#t, n = `发起请求失败: ${(e instanceof Error ? e.message : String(e)) || "未知错误"}`;
47
+ return t ? t(n) : console.error(`[HttpClient] ${n}`), Promise.reject(e);
48
+ }
49
+ handleResponse(e) {
50
+ let { showWarningMessage: t, okCode: n = 0 } = this.#t, { code: r, message: a, data: o } = e.data;
51
+ if (this.matchesCode(r, n)) return e;
52
+ throw t ? t(a) : console.warn(`[HttpClient] [${e.config.method}: ${e.config.url}] 返回错误: ${a}`), new i(r, a, o);
53
+ }
54
+ async handleResponseError(e) {
55
+ if (e instanceof d) {
56
+ if (e.response) {
57
+ let { method: t, url: n } = e.response.config;
58
+ console.warn(`[HttpClient] [${t}: ${n}] 被取消`);
59
+ }
60
+ return;
61
+ }
62
+ let { response: t } = e;
63
+ if (!t) throw this.logError(`请求失败: ${e.message || "未知错误"}`), e;
64
+ let { status: n, config: r, data: i } = t, { code: a, message: o } = i, s = `[${r.method}: ${r.url}]`;
65
+ switch (n) {
66
+ case 400:
67
+ this.logWarning(o, `${s} 参数错误: ${o}`);
68
+ break;
69
+ case 401:
70
+ await this.handleUnauthorized(e, a, s);
71
+ break;
72
+ case 403:
73
+ this.#t.showWarningMessage?.(`${o}, 请联系管理员为您开通`), console.warn(`[HttpClient] ${s} 访问被拒绝: ${o}`), await this.#t.onAccessDenied?.();
74
+ break;
75
+ default: this.logError(o, `${s} 返回错误: ${o}`);
76
+ }
77
+ throw e;
78
+ }
79
+ async handleUnauthorized(e, t, n) {
80
+ let { tokenExpiredCode: r = [] } = this.#t;
81
+ if (!this.matchesCode(t, r)) {
82
+ await this.#t.onUnauthenticated?.();
83
+ return;
84
+ }
85
+ if (this.#n) throw e;
86
+ if (await this.tryRefreshToken()) return this.retryRequest(e.response.config);
87
+ this.logInfo("登录已过期, 请重新登录"), await this.#t.onUnauthenticated?.();
88
+ }
89
+ logInfo(e) {
90
+ this.#t.showInfoMessage ? this.#t.showInfoMessage(e) : console.info(`[HttpClient] ${e}`);
91
+ }
92
+ logWarning(e, t) {
93
+ this.#t.showWarningMessage ? this.#t.showWarningMessage(e) : console.warn(`[HttpClient] ${t ?? e}`);
94
+ }
95
+ logError(e, t) {
96
+ this.#t.showErrorMessage ? this.#t.showErrorMessage(e) : console.error(`[HttpClient] ${t ?? e}`);
97
+ }
98
+ async injectAccessToken(e) {
99
+ let { getAuthTokens: t } = this.#t;
100
+ if (!t) return;
101
+ let n = await t();
102
+ n?.accessToken && (e.headers.Authorization = `Bearer ${n.accessToken}`);
103
+ }
104
+ replacePathParams(e) {
105
+ let { url: t, params: r = {} } = e;
106
+ !t || !n.test(t) || (n.lastIndex = 0, e.url = t.replaceAll(n, (e, n) => {
107
+ if (!Object.hasOwn(r, n)) return console.warn(`[HttpClient] 接口: ${t} 路径参数 ${n} 未在查询参数中定义, 请检查`), "unknown";
108
+ let i = r[n];
109
+ return c(i) ? (console.warn(`[HttpClient] 接口: ${t} 路径参数 ${n} 在查询参数中为空, 请检查`), "unknown") : String(i);
110
+ }));
111
+ }
112
+ async ensureTokenRefreshed(e = !0) {
113
+ if (this.#n) return new Promise((e) => {
114
+ this.#r.push(e);
115
+ });
116
+ let t = await this.tryRefreshToken();
117
+ return !t && e && await this.#t.onUnauthenticated?.(), t;
118
+ }
119
+ async tryRefreshToken() {
120
+ let { getAuthTokens: e, refreshToken: t, setAuthTokens: n } = this.#t;
121
+ if (!e || !t || !n) return !1;
122
+ this.#n = !0;
123
+ let r = !1;
124
+ try {
125
+ let i = await e();
126
+ if (!i) return !1;
127
+ let a = await t(i);
128
+ return await n(Object.freeze(a)), r = !0, !0;
129
+ } catch (e) {
130
+ return console.error(`[HttpClient] 刷新令牌失败: ${e}`), !1;
131
+ } finally {
132
+ this.#n = !1;
133
+ for (let e of this.#r) e(r);
134
+ this.#r = [];
135
+ }
136
+ }
137
+ async retryRequest(e) {
138
+ let t = { ...e };
139
+ return await this.injectAccessToken(t), this.#e(t);
140
+ }
141
+ async get(e, t) {
142
+ return (await this.#e.get(e, t)).data;
143
+ }
144
+ async post(e, t) {
145
+ let { data: n, ...r } = t ?? {};
146
+ return (await this.#e.post(e, n, r)).data;
147
+ }
148
+ async put(e, t) {
149
+ let { data: n, ...r } = t ?? {};
150
+ return (await this.#e.put(e, n, r)).data;
151
+ }
152
+ async delete(e, t) {
153
+ return (await this.#e.delete(e, t)).data;
154
+ }
155
+ async upload(e, t) {
156
+ let { data: n, onProgress: r, ...i } = t ?? {};
157
+ return (await this.#e.postForm(e, n, {
158
+ ...i,
159
+ onUploadProgress: s(r) ? r : void 0
160
+ })).data;
161
+ }
162
+ async download(t, n) {
163
+ let { onProgress: r, filename: i, ...a } = n ?? {}, { data: o, headers: c } = await this.#e.get(t, {
164
+ ...a,
165
+ responseType: "blob",
166
+ responseEncoding: "binary",
167
+ onDownloadProgress: s(r) ? r : void 0
168
+ });
169
+ try {
170
+ let e = JSON.parse(await o.text());
171
+ throw Error(e.message);
172
+ } catch {}
173
+ let u = c["content-disposition"];
174
+ if (!l(u)) return;
175
+ let d = e.exec(u);
176
+ if (!d?.groups?.name) return;
177
+ let f = decodeURIComponent(d.groups.name), p = URL.createObjectURL(o);
178
+ try {
179
+ let e = document.createElement("a");
180
+ e.href = p, e.download = s(i) ? i(f) : i ?? f, e.click();
181
+ } finally {
182
+ URL.revokeObjectURL(p);
183
+ }
184
+ }
185
+ };
186
+ //#endregion
187
+ export { f as HttpClient };
@@ -0,0 +1,5 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ //#region src/http/constants.ts
3
+ var e = "__vef_http_client_key", t = /:(?<key>\w+)/g, n = /filename[^;=\n]*=(?<name>(?<quote>['"]).*?\2|[^;\n]*)/, r = "X-Skip-Authentication", i = "1", a = 3e4;
4
+ //#endregion
5
+ export { n as CONTENT_DISPOSITION_FILENAME_REGEX, a as DEFAULT_TIMEOUT, e as HTTP_CLIENT_KEY, t as PATH_PARAM_REGEX, r as SKIP_AUTH_HEADER, i as SKIP_AUTH_VALUE };
@@ -0,0 +1,11 @@
1
+ /*! @vef-framework-react/core v2.1.0 made by Venus | 2026-03-27T08:01:41.111Z */
2
+ //#region src/http/errors.ts
3
+ var e = class extends Error {
4
+ code;
5
+ data;
6
+ constructor(e, t, n) {
7
+ super(t), this.name = "BusinessError", this.code = e, this.data = n;
8
+ }
9
+ };
10
+ //#endregion
11
+ export { e as BusinessError };