@ai4b-team/fsaos-gateway-sdk 3.3.0 → 3.5.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.
package/dist/iife/ui.js CHANGED
@@ -1,3 +1,3 @@
1
- /* @fsaos/ui v2.0.0 — FSAOS UI Primitives — 2026-05-27T19:47:41.917Z */
1
+ /* @fsaos/ui v2.0.0 — FSAOS UI Primitives — 2026-05-29T04:37:16.049Z */
2
2
  "use strict";var __FSAOS_UI__=(()=>{var m=Object.create;var r=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var f=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var y=(e,i)=>()=>(i||e((i={exports:{}}).exports,i),i.exports),N=(e,i)=>{for(var a in i)r(e,a,{get:i[a],enumerable:!0})},s=(e,i,a,l)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of u(i))!h.call(e,t)&&t!==a&&r(e,t,{get:()=>i[t],enumerable:!(l=g(i,t))||l.enumerable});return e};var x=(e,i,a)=>(a=e!=null?m(f(e)):{},s(i||!e||!e.__esModule?r(a,"default",{value:e,enumerable:!0}):a,e)),b=e=>s(r({},"__esModule",{value:!0}),e);var d=y((V,c)=>{c.exports=React});var P={};N(P,{Badge:()=>z,Breadcrumbs:()=>A,Button:()=>D,Card:()=>w,DataView:()=>R,Detail:()=>_,Empty:()=>I,FilePreview:()=>O,Form:()=>F,Grid:()=>k,Image:()=>G,Link:()=>E,Page:()=>v,Router:()=>T,Sidebar:()=>S,Spinner:()=>B,Stack:()=>C,Table:()=>j,Tabs:()=>W,Video:()=>H});var n=x(d(),1);function o(){return(typeof window<"u"&&window.__FSAOS_CONFIG__||{}).edgeBaseUrl||""}function v(e){return(0,n.createElement)("div",{style:{minHeight:"100vh",display:"flex",flexDirection:"column"},className:e.className||""},e.children)}function C(e){let i=e.direction||"vertical";return(0,n.createElement)("div",{style:{display:"flex",flexDirection:i==="horizontal"?"row":"column",gap:e.gap||"0.5rem",padding:e.padding||"0",alignItems:e.align||"stretch",justifyContent:e.justify||"flex-start",flex:e.flex||"initial"},className:e.className||""},e.children)}function k(e){return(0,n.createElement)("div",{style:{display:"grid",gridTemplateColumns:"repeat("+(e.columns||3)+", 1fr)",gap:e.gap||"1rem",padding:e.padding||"0"},className:e.className||""},e.children)}function S(e){return(0,n.createElement)("div",{style:{display:"flex",flexDirection:"row",minHeight:"100vh"},className:e.className||""},e.children)}function w(e){return(0,n.createElement)("div",{style:{border:"1px solid var(--color-border, #e5e7eb)",borderRadius:"var(--border-radius, 0.5rem)",padding:e.padding||"1rem",background:"var(--color-surface, #fff)"},className:e.className||"",onClick:e.onClick},e.children)}function z(e){return(0,n.createElement)("span",{style:{display:"inline-flex",alignItems:"center",padding:"0.125rem 0.5rem",fontSize:"0.75rem",fontWeight:"500",borderRadius:"9999px",background:e.color||"#e5e7eb",color:e.textColor||"#374151"},className:e.className||""},e.children||e.label)}function B(e){let i=e.size||"1.5rem";return(0,n.createElement)("div",{style:{width:i,height:i,border:"2px solid #e5e7eb",borderTopColor:"var(--color-primary, #3b82f6)",borderRadius:"50%",animation:"fsaos-spin 0.6s linear infinite"}})}function D(e){return(0,n.createElement)("button",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"0.5rem 1rem",fontSize:"0.875rem",fontWeight:"500",borderRadius:"var(--border-radius, 0.375rem)",border:e.variant==="outline"?"1px solid var(--color-border, #d1d5db)":"none",background:e.variant==="outline"||e.variant==="ghost"?"transparent":"var(--color-primary, #3b82f6)",color:e.variant==="outline"||e.variant==="ghost"?"var(--color-text, #1a1a1a)":"#fff",cursor:e.disabled?"not-allowed":"pointer",opacity:e.disabled?"0.5":"1",gap:"0.5rem"},className:e.className||"",onClick:e.onClick,disabled:e.disabled},e.children||e.label)}function I(e){return(0,n.createElement)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"3rem",color:"var(--color-text-secondary, #6b7280)",textAlign:"center"}},e.icon?(0,n.createElement)("div",{style:{fontSize:"2rem",marginBottom:"0.5rem"}},e.icon):null,(0,n.createElement)("div",{style:{fontWeight:500,marginBottom:"0.25rem"}},e.title||e.message||e.children||"No items"),e.description?(0,n.createElement)("div",{style:{fontSize:"0.875rem",opacity:.7}},e.description):null)}function R(e){return(0,n.createElement)("div",{className:e.className||""},e.children)}function j(e){return(0,n.createElement)("table",{className:e.className||""},e.children)}function F(e){return(0,n.createElement)("form",{className:e.className||"",onSubmit:e.onSubmit},e.children)}function _(e){return(0,n.createElement)("div",{className:e.className||""},e.children)}function T(e){return(0,n.createElement)("div",null,e.children)}function E(e){return(0,n.createElement)("a",{href:e.href||e.to,className:e.className||"",onClick:e.onClick},e.children)}function W(e){return(0,n.createElement)("div",{className:e.className||""},e.children)}function A(e){return(0,n.createElement)("nav",{className:e.className||""},e.children)}function G(e){return(0,n.createElement)("img",{src:e.src||(e.path?o()+e.path:""),alt:e.alt||"",className:e.className||"",style:e.style})}function H(e){return(0,n.createElement)("video",{src:e.src||(e.path?o()+e.path:""),controls:!0,className:e.className||""})}function O(e){return(0,n.createElement)("div",{className:e.className||""},e.children||"File preview")}return b(P);})();
3
3
  //# sourceMappingURL=ui.js.map
package/dist/index.cjs CHANGED
@@ -113,6 +113,7 @@ __export(src_exports, {
113
113
  uploadFile: () => uploadFile,
114
114
  useAccounts: () => useAccounts,
115
115
  useAllChannels: () => useAllChannels,
116
+ useArrangement: () => useArrangement,
116
117
  useAsset: () => useAsset,
117
118
  useAuth: () => useAuth,
118
119
  useChannelMessages: () => useChannelMessages,
@@ -2936,6 +2937,64 @@ function useRealtimeQuery(options) {
2936
2937
  }, [eventType, enabled, debounceMs, qc, JSON.stringify(queryKey)]);
2937
2938
  return query;
2938
2939
  }
2940
+ function useArrangement(paramsOrPath) {
2941
+ useScopeKey();
2942
+ const resolvedParams = React.useMemo(() => {
2943
+ if (!paramsOrPath) return null;
2944
+ if (typeof paramsOrPath === "string") return { path: paramsOrPath };
2945
+ return paramsOrPath;
2946
+ }, [typeof paramsOrPath === "string" ? paramsOrPath : JSON.stringify(paramsOrPath)]);
2947
+ const enabled = !!resolvedParams && !!(resolvedParams.key || resolvedParams.path || resolvedParams.item_id);
2948
+ const cacheKey = resolvedParams?.key ?? resolvedParams?.path ?? resolvedParams?.item_id ?? "";
2949
+ const query = reactQuery.useQuery({
2950
+ queryKey: ["vfs", getScope() ?? "__unscoped__", "arrangement", cacheKey],
2951
+ queryFn: async () => {
2952
+ if (!resolvedParams) return null;
2953
+ const response = await gatewayCall("resolve-arrangement", resolvedParams);
2954
+ if (response?.success === false) {
2955
+ console.warn("[useArrangement] resolve-arrangement failed:", response?.error);
2956
+ return null;
2957
+ }
2958
+ return response ?? null;
2959
+ },
2960
+ enabled
2961
+ });
2962
+ const arrangement = query.data ?? null;
2963
+ const resolvedChildren = React.useMemo(
2964
+ () => arrangement?.resolved_children ?? [],
2965
+ [arrangement]
2966
+ );
2967
+ const resolutionLevel = arrangement?.resolution_level ?? null;
2968
+ const order = React.useMemo(() => {
2969
+ const td = arrangement?.type_data ?? null;
2970
+ const o = td?.order;
2971
+ return Array.isArray(o) ? o : null;
2972
+ }, [arrangement]);
2973
+ const applyTo = React.useCallback(
2974
+ (children) => {
2975
+ if (!order || !children?.length) return children ?? [];
2976
+ const key = (c) => c.id ?? c.name ?? "";
2977
+ const rank = new Map(order.map((k, i) => [k, i]));
2978
+ const listed = [];
2979
+ const rest = [];
2980
+ for (const c of children) {
2981
+ (rank.has(key(c)) ? listed : rest).push(c);
2982
+ }
2983
+ listed.sort((a, b) => rank.get(key(a)) - rank.get(key(b)));
2984
+ return [...listed, ...rest];
2985
+ },
2986
+ [order]
2987
+ );
2988
+ return {
2989
+ ...query,
2990
+ arrangement,
2991
+ resolvedChildren,
2992
+ resolutionLevel,
2993
+ order,
2994
+ sourceScopeId: arrangement?.scope_item_id ?? null,
2995
+ applyTo
2996
+ };
2997
+ }
2939
2998
 
2940
2999
  // src/schema-utils.ts
2941
3000
  function keyToLabel(key) {
@@ -3399,6 +3458,7 @@ exports.updateItem = updateItem;
3399
3458
  exports.uploadFile = uploadFile;
3400
3459
  exports.useAccounts = useAccounts;
3401
3460
  exports.useAllChannels = useAllChannels;
3461
+ exports.useArrangement = useArrangement;
3402
3462
  exports.useAsset = useAsset;
3403
3463
  exports.useAuth = useAuth;
3404
3464
  exports.useChannelMessages = useChannelMessages;