@ai4b-team/fsaos-gateway-sdk 3.2.1 → 3.4.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/CHANGELOG.md +6 -0
- package/dist/iife/gateway.js +3 -3
- package/dist/iife/gateway.js.map +3 -3
- package/dist/iife/ui.js +1 -1
- package/dist/index.cjs +59 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +230 -1
- package/dist/index.d.ts +230 -1
- package/dist/index.js +59 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/iife/ui.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @fsaos/ui v2.0.0 — FSAOS UI Primitives — 2026-05-
|
|
1
|
+
/* @fsaos/ui v2.0.0 — FSAOS UI Primitives — 2026-05-28T15:49:04.318Z */
|
|
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,
|
|
@@ -2500,6 +2501,16 @@ function useInfiniteChannelMessages(options) {
|
|
|
2500
2501
|
qc.invalidateQueries({ queryKey: stableKey });
|
|
2501
2502
|
return;
|
|
2502
2503
|
}
|
|
2504
|
+
if (newPage.messages.length > 0) {
|
|
2505
|
+
const minNewSeq = Math.min(...newPage.messages.map((m) => m.seq));
|
|
2506
|
+
if (minNewSeq > maxSeq + 1) {
|
|
2507
|
+
console.warn(
|
|
2508
|
+
`[useInfiniteChannelMessages] sequence gap detected: maxSeq=${maxSeq}, minNewSeq=${minNewSeq}. Triggering full refetch.`
|
|
2509
|
+
);
|
|
2510
|
+
qc.invalidateQueries({ queryKey: stableKey });
|
|
2511
|
+
return;
|
|
2512
|
+
}
|
|
2513
|
+
}
|
|
2503
2514
|
qc.setQueryData(stableKey, (old) => {
|
|
2504
2515
|
if (!old) return old;
|
|
2505
2516
|
const pages = [...old.pages];
|
|
@@ -2926,6 +2937,53 @@ function useRealtimeQuery(options) {
|
|
|
2926
2937
|
}, [eventType, enabled, debounceMs, qc, JSON.stringify(queryKey)]);
|
|
2927
2938
|
return query;
|
|
2928
2939
|
}
|
|
2940
|
+
function useArrangement(parentPath) {
|
|
2941
|
+
useScopeKey();
|
|
2942
|
+
const enabled = !!parentPath;
|
|
2943
|
+
const query = reactQuery.useQuery({
|
|
2944
|
+
queryKey: ["vfs", getScope() ?? "__unscoped__", "arrangement", parentPath ?? ""],
|
|
2945
|
+
queryFn: async () => {
|
|
2946
|
+
const response = await gatewayCall("get-effective-items", {
|
|
2947
|
+
item_type: "item_arrangement"
|
|
2948
|
+
});
|
|
2949
|
+
const rows = response?.content?.items ?? response?.items ?? response?.rows ?? [];
|
|
2950
|
+
const matches = rows.filter(
|
|
2951
|
+
(r) => (r?.item_type_data?.parent_path ?? r?.type_data?.parent_path) === parentPath
|
|
2952
|
+
);
|
|
2953
|
+
return matches[0] ?? null;
|
|
2954
|
+
},
|
|
2955
|
+
enabled
|
|
2956
|
+
});
|
|
2957
|
+
const arrangement = query.data ?? null;
|
|
2958
|
+
const order = React.useMemo(() => {
|
|
2959
|
+
const td = arrangement?.item_type_data ?? arrangement?.type_data ?? null;
|
|
2960
|
+
const o = td?.order;
|
|
2961
|
+
return Array.isArray(o) ? o : null;
|
|
2962
|
+
}, [arrangement]);
|
|
2963
|
+
const applyTo = React.useCallback(
|
|
2964
|
+
(children) => {
|
|
2965
|
+
if (!order || !children?.length) return children ?? [];
|
|
2966
|
+
const key = (c) => c.id ?? c.name ?? "";
|
|
2967
|
+
const rank = new Map(order.map((k, i) => [k, i]));
|
|
2968
|
+
const listed = [];
|
|
2969
|
+
const rest = [];
|
|
2970
|
+
for (const c of children) {
|
|
2971
|
+
(rank.has(key(c)) ? listed : rest).push(c);
|
|
2972
|
+
}
|
|
2973
|
+
listed.sort((a, b) => rank.get(key(a)) - rank.get(key(b)));
|
|
2974
|
+
return [...listed, ...rest];
|
|
2975
|
+
},
|
|
2976
|
+
[order]
|
|
2977
|
+
);
|
|
2978
|
+
return {
|
|
2979
|
+
...query,
|
|
2980
|
+
arrangement,
|
|
2981
|
+
order,
|
|
2982
|
+
sourceScopeId: arrangement?.source_scope_id ?? null,
|
|
2983
|
+
sourceScopeName: arrangement?.source_scope_name ?? null,
|
|
2984
|
+
applyTo
|
|
2985
|
+
};
|
|
2986
|
+
}
|
|
2929
2987
|
|
|
2930
2988
|
// src/schema-utils.ts
|
|
2931
2989
|
function keyToLabel(key) {
|
|
@@ -3389,6 +3447,7 @@ exports.updateItem = updateItem;
|
|
|
3389
3447
|
exports.uploadFile = uploadFile;
|
|
3390
3448
|
exports.useAccounts = useAccounts;
|
|
3391
3449
|
exports.useAllChannels = useAllChannels;
|
|
3450
|
+
exports.useArrangement = useArrangement;
|
|
3392
3451
|
exports.useAsset = useAsset;
|
|
3393
3452
|
exports.useAuth = useAuth;
|
|
3394
3453
|
exports.useChannelMessages = useChannelMessages;
|