2024-11-19 15:49:56 +08:00
var Ca = Object . defineProperty ;
2024-11-20 14:11:37 +08:00
var Vt = ( e ) => {
2024-11-19 15:49:56 +08:00
throw TypeError ( e ) ;
} ;
var ba = ( e , t , a ) => t in e ? Ca ( e , t , { enumerable : ! 0 , configurable : ! 0 , writable : ! 0 , value : a } ) : e [ t ] = a ;
2024-11-20 14:11:37 +08:00
var k = ( e , t , a ) => ba ( e , typeof t != "symbol" ? t + "" : t , a ) , At = ( e , t , a ) => t . has ( e ) || Vt ( "Cannot " + a ) ;
2024-11-20 15:00:20 +08:00
var g = ( e , t , a ) => ( At ( e , t , "read from private field" ) , a ? a . call ( e ) : t . get ( e ) ) , N = ( e , t , a ) => t . has ( e ) ? Vt ( "Cannot add the same private member more than once" ) : t instanceof WeakSet ? t . add ( e ) : t . set ( e , a ) , B = ( e , t , a , n ) => ( At ( e , t , "write to private field" ) , n ? n . call ( e , a ) : t . set ( e , a ) , a ) ;
var It = ( e , t , a , n ) => ( {
2024-11-19 15:49:56 +08:00
set _ ( r ) {
B ( e , t , r , a ) ;
} ,
get _ ( ) {
return g ( e , t , n ) ;
}
} ) ;
import { jsx as d , jsxs as $ } from "react/jsx-runtime" ;
2024-11-20 15:00:20 +08:00
import C , { useEffect as x , useState as P , useCallback as me , useMemo as ie , useContext as Xe , useRef as Y , useId as Yt , useLayoutEffect as ka } from "react" ;
2024-11-19 15:49:56 +08:00
import p from "lodash" ;
import R from "classnames" ;
2024-11-20 15:00:20 +08:00
import { Form as at , Input as va , Button as mt , Breadcrumb as Sa , Tree as Pa , Pagination as Na , Table as $a , Empty as xa , Popconfirm as Ea , Tooltip as Ta , Popover as Fa } from "antd" ;
2024-11-19 15:49:56 +08:00
import { useMergedState as Ra } from "rc-util" ;
2024-11-20 14:11:37 +08:00
import ee , { FieldContext as La , Field as Xt } from "rc-field-form" ;
2024-11-20 15:00:20 +08:00
import { useParams as Oa , generatePath as Va , createBrowserRouter as Aa , useInRouterContext as Ia , Navigate as ja } from "react-router-dom" ;
2024-11-19 15:49:56 +08:00
import L from "prop-types" ;
2024-11-20 15:00:20 +08:00
import * as jt from "react-is" ;
2024-11-19 15:49:56 +08:00
import { useNotification as Ma } from "rc-notification" ;
import { N as Be , a as Ue , w as ht , S as za } from "./vender-egxe712p.js" ;
2024-11-20 14:11:37 +08:00
import Mt from "immutability-helper" ;
2024-11-19 15:49:56 +08:00
import Wa from "rc-drawer" ;
import Ba from "rc-dialog" ;
2024-11-20 15:00:20 +08:00
var Ie , He , je , ue , Fe , Re ;
2024-11-20 14:11:37 +08:00
class Qt {
2024-11-19 15:49:56 +08:00
constructor ( t , a ) {
2024-11-20 15:00:20 +08:00
N ( this , Ie , /* @__PURE__ */ new Map ( ) ) ;
N ( this , He , ! 0 ) ;
N ( this , je , [ ] ) ;
N ( this , ue ) ;
N ( this , Fe , ( ) => g ( this , ue ) ) ;
N ( this , Re , ( ) => Promise . resolve ( ) ) ;
2024-11-19 15:49:56 +08:00
k ( this , "get" , ( ... t ) => new Promise ( ( a , n ) => {
const r = JSON . stringify ( t ) ;
2024-11-20 15:00:20 +08:00
if ( g ( this , Ie ) . has ( r ) ) return a ( g ( this , Re ) . call ( this , g ( this , ue ) , ... t ) ) ;
if ( g ( this , ue ) === void 0 ) g ( this , je ) . push ( [ t , a , n ] ) , g ( this , He ) && ( B ( this , He , ! 1 ) , Promise . resolve ( typeof g ( this , Fe ) == "function" ? g ( this , Fe ) . call ( this ) : g ( this , Fe ) ) . then ( ( s ) => B ( this , ue , s || null ) ) . finally ( ( ) => {
g ( this , je ) . forEach ( ( [ s , i , o ] ) => {
2024-11-19 15:49:56 +08:00
try {
2024-11-20 15:00:20 +08:00
const l = g ( this , Re ) . call ( this , g ( this , ue ) , ... s ) ;
g ( this , Ie ) . set ( JSON . stringify ( s ) , l ) , i ( l ) ;
2024-11-19 15:49:56 +08:00
} catch ( l ) {
o ( l ) ;
}
2024-11-20 15:00:20 +08:00
} ) , g ( this , je ) . length = 0 ;
2024-11-19 15:49:56 +08:00
} ) ) ;
else {
2024-11-20 15:00:20 +08:00
const s = g ( this , Re ) . call ( this , g ( this , ue ) , ... t ) ;
g ( this , Ie ) . set ( r , s ) , a ( s ) ;
2024-11-19 15:49:56 +08:00
}
} ) ) ;
B ( this , Re , a ) , B ( this , Fe , t ) ;
}
}
2024-11-20 15:00:20 +08:00
Ie = new WeakMap ( ) , He = new WeakMap ( ) , je = new WeakMap ( ) , ue = new WeakMap ( ) , Fe = new WeakMap ( ) , Re = new WeakMap ( ) ;
2024-11-19 15:49:56 +08:00
const Kn = ( ) => d ( "div" , { children : "Empty" } ) , Qe = C . createContext ( { ele : { } , mount : ( ) => {
} , unmount : ( ) => {
} } ) , K = ( { rootClassName : e , className : t , children : a , actions : n , title : r , subTitle : s , extras : i , style : o = { } } ) => {
const { mount : l , unmount : u } = C . useContext ( Qe ) ;
2024-11-20 14:11:37 +08:00
return n && K . Action ( { children : n } ) , r && K . Title ( { children : r } ) , s && K . SubTitle ( { children : s } ) , i && K . Extra ( { children : i } ) , x ( ( ) => ( l ( "rootClassName" , e ) , ( ) => u ( e ) ) , [ e ] ) , d ( "div" , { className : R ( "ff-container" , t ) , style : o , children : a } ) ;
2024-11-19 15:49:56 +08:00
} , tt = ( e ) => ( { children : t , className : a } ) => {
const { mount : n , unmount : r } = C . useContext ( Qe ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => ( n ( e , C . createElement ( "div" , { key : ` ff- ${ e } ` , className : R ( ` ff-popup- ${ e } ` , a ) } , t ) ) , ( ) => r ( e ) ) , [ a , t ] ) , null ;
2024-11-19 15:49:56 +08:00
} ;
K . Action = tt ( "actions" ) , K . Title = tt ( "title" ) , K . SubTitle = tt ( "sub-title" ) , K . Extra = tt ( "extras" ) , K . propTypes = { className : L . string , style : L . object , title : L . any , subTitle : L . any , actions : L . any , extras : L . any } ;
2024-11-20 15:00:20 +08:00
const _n = ( ) => d ( K , { className : "ff-loading" , children : $ ( "div" , { className : "loader" , children : [ $ ( "div" , { className : "square" , children : [ d ( "span" , { } ) , d ( "span" , { } ) , d ( "span" , { } ) ] } ) , $ ( "div" , { className : "square" , children : [ d ( "span" , { } ) , d ( "span" , { } ) , d ( "span" , { } ) ] } ) , $ ( "div" , { className : "square" , children : [ d ( "span" , { } ) , d ( "span" , { } ) , d ( "span" , { } ) ] } ) , $ ( "div" , { className : "square" , children : [ d ( "span" , { } ) , d ( "span" , { } ) , d ( "span" , { } ) ] } ) ] } ) } ) , Gn = ( ) => d ( "div" , { children : "NotFound" } ) , Zt = ( { children : e } ) => {
const [ t , a ] = P ( { } ) , n = me ( ( s , i ) => a ( ( o ) => ( { ... o , [ s ] : i } ) ) , [ ] ) , r = me ( ( s ) => a ( ( i ) => ( { ... i , [ s ] : void 0 } ) ) , [ ] ) ;
2024-11-19 15:49:56 +08:00
return typeof ( e == null ? void 0 : e . type ) == "string" ? e : d ( Qe . Provider , { value : { ele : t , mount : n , unmount : r } , children : C . cloneElement ( e , { className : t . rootClassName , title : t . title , subTitle : t [ "sub-title" ] , actions : t . actions , extras : t . extras } ) } ) ;
} ;
2024-11-20 14:11:37 +08:00
Zt . propTypes = { children : L . element . isRequired } ;
const zt = { close : [ "M563.8 512l262.5-312.9c4.4-5.2 0.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9c-4.4 5.2-0.7 13.1 6.1 13.1h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z" ] , check : [ "M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474c-6.1-7.7-15.3-12.2-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1 0.4-12.8-6.3-12.8z" ] , info : [ "M512 224m-64 0a64 64 0 1 0 128 0 64 64 0 1 0-128 0Z" , "M544 392h-64c-4.4 0-8 3.6-8 8v464c0 4.4 3.6 8 8 8h64c4.4 0 8-3.6 8-8V400c0-4.4-3.6-8-8-8z" ] } , xt = ( { type : e , props : t } ) => d ( "i" , { ... t , children : d ( "svg" , { viewBox : "0 0 1024 1024" , width : "1em" , height : "1em" , fill : "currentColor" , children : ( zt [ e ] || zt . info ) . map ( ( a , n ) => d ( "path" , { d : a } , n ) ) } ) } ) , ea = ( { className : e , content : t , icon : a , $close : n } ) => $ ( C . Fragment , { children : [ a && d ( "div" , { className : R ( "ff-notification-icon" , e ) , children : d ( xt , { type : a } ) } ) , t ] } ) , Ua = ( { } ) => d ( K , { children : "Confirm" } ) ;
2024-11-19 15:49:56 +08:00
var ye , Me ;
2024-11-20 14:11:37 +08:00
const te = class te {
2024-11-19 15:49:56 +08:00
constructor ( ) {
2024-11-20 15:00:20 +08:00
N ( this , Me , null ) ;
2024-11-19 15:49:56 +08:00
k ( this , "init" , ( t ) => B ( this , Me , new Map ( t ) ) ) ;
k ( this , "check" , ( t ) => ! g ( this , Me ) . has ( t ) || g ( this , Me ) . get ( t ) ) ;
2024-11-20 14:11:37 +08:00
if ( g ( te , ye ) ) return g ( te , ye ) ;
2024-11-19 15:49:56 +08:00
}
} ;
2024-11-20 15:00:20 +08:00
ye = new WeakMap ( ) , Me = new WeakMap ( ) , N ( te , ye , null ) , k ( te , "getInstance" , ( ) => ( g ( te , ye ) || B ( te , ye , new te ( ) ) , g ( te , ye ) ) ) ;
2024-11-20 14:11:37 +08:00
let ft = te ;
2024-11-19 15:49:56 +08:00
const Da = ft . getInstance ( ) ;
var we , Je ;
2024-11-20 14:11:37 +08:00
const ae = class ae {
2024-11-19 15:49:56 +08:00
constructor ( ) {
2024-11-20 15:00:20 +08:00
N ( this , Je , null ) ;
2024-11-19 15:49:56 +08:00
k ( this , "init" , ( t ) => B ( this , Je , t ) ) ;
k ( this , "get" , ( t , a ) => p . get ( g ( this , Je ) , t , a ) ) ;
2024-11-20 14:11:37 +08:00
if ( g ( ae , we ) ) return g ( ae , we ) ;
2024-11-19 15:49:56 +08:00
}
} ;
2024-11-20 15:00:20 +08:00
we = new WeakMap ( ) , Je = new WeakMap ( ) , N ( ae , we , null ) , k ( ae , "getInstance" , ( ) => ( g ( ae , we ) || B ( ae , we , new ae ( ) ) , g ( ae , we ) ) ) ;
2024-11-20 14:11:37 +08:00
let yt = ae ;
const De = yt . getInstance ( ) , Wt = { null2json : ( e ) => Object . create ( ) , null2array : ( e ) => [ ] , null2number : ( e ) => 0 , null2bool : ( e ) => ! 1 , null2string : ( e ) => "" , null2integer : ( e ) => 0 , null2float : ( e ) => 0 , string2json : ( e ) => e ? JSON . parse ( e ) : "{}" , string2array : ( e ) => e . substr ( 0 , 1 ) === "[" && e . substr ( - 1 ) === "]" ? JSON . parse ( e ) : e . split ( "," ) , string2number : ( e ) => e == "" ? 0 : + e , string2integer : ( e ) => e == "" ? 0 : + e , string2float : ( e ) => e == "" ? 0 : + e , string2bool : ( e ) => {
2024-11-19 15:49:56 +08:00
switch ( ` ${ e } ` . toLowerCase ( ) ) {
case "0" :
case "false" :
case "[]" :
case "{}" :
return ! 1 ;
}
return ! ! e ;
} , string2string : ( e ) => e , json2json : ( e ) => e , json2array : ( e ) => e ? Object . values ( e ) : [ ] , json2number : ( e ) => Object . keys ( e ) . length , json2integer : ( e ) => Object . keys ( e ) . length , json2float : ( e ) => Object . keys ( e ) . length , json2bool : ( e ) => Object . keys ( e ) . length > 0 , json2string : ( e ) => e ? JSON . stringify ( e ) : "" , array2json : ( e ) => ( { ... e } ) , array2array : ( e ) => e , array2number : ( e ) => e . length , array2integer : ( e ) => e . length , array2float : ( e ) => e . length , array2bool : ( e ) => e . length > 0 , array2string : ( e ) => JSON . stringify ( e ) , number2json : ( e ) => ( { } ) , number2array : ( e ) => [ e ] , number2number : ( e ) => e , number2integer : ( e ) => e , number2float : ( e ) => e , number2bool : ( e ) => ! ! e , number2string : ( e ) => e . toString ( ) , boolean2json : ( e ) => ( { } ) , boolean2array : ( e ) => [ ] , boolean2number : ( e ) => + e , boolean2integer : ( e ) => + e , boolean2float : ( e ) => + e , boolean2bool : ( e ) => e , boolean2string : ( e ) => e ? "true" : "false" } , Z = ( e , t ) => {
let a = "string" ;
a = Array . isArray ( e ) ? "array" : typeof e , p . isObject ( e ) && ( a = "json" ) ;
const n = ` ${ a } 2 ${ t } ` ;
2024-11-20 14:11:37 +08:00
return Reflect . has ( Wt , n ) ? Wt [ n ] ( e ) : e ;
} , ta = ( e = { } , t = { } , a = { } , n = "" ) => aa ( e , ( r , s ) => s === "type" && r === "code" ) ? na ( e , t , a , n ) : ra ( e , t , n ) , aa = ( e , t = ( ) => ! 1 ) => p . some ( e , ( a ) => ! ! p . some ( a , t ) || ( p . isEmpty ( a ) || ! p . isPlainObject ( a ) && ! p . isArray ( a ) ? void 0 : aa ( a , t ) ) ) , na = async ( e = { } , t = { } , a = { } , n = "" ) => {
2024-11-19 15:49:56 +08:00
let r = /* @__PURE__ */ Object . create ( null ) ;
for ( let s in e ) {
let i ;
if ( Reflect . has ( e [ s ] , "type" ) && [ "code" , "field" , "router" , "query" , "string" ] . includes ( e [ s ] . type ) ) {
const { type : o , value : l = "" , default : u = n } = e [ s ] ;
switch ( o ) {
case "code" :
2024-11-20 15:00:20 +08:00
i = await Ne . exec ( l , t , a ) ;
2024-11-19 15:49:56 +08:00
break ;
case "field" :
i = p . get ( t , l ) ? ? p . get ( t , l . substring ( l . indexOf ( "." ) + 1 ) ) ;
break ;
case "router" :
case "query" :
2024-11-20 15:00:20 +08:00
i = pe . getPageParams ( l ) ;
2024-11-19 15:49:56 +08:00
break ;
case "string" :
i = l ;
}
i ? ? ( i = u ) ;
2024-11-20 14:11:37 +08:00
} else i = await na ( e [ s ] , t , a , n ) ;
2024-11-19 15:49:56 +08:00
p . set ( r , s , i ) ;
}
return r ;
2024-11-20 14:11:37 +08:00
} , ra = ( e = { } , t = { } , a = "" ) => Object . keys ( e || { } ) . reduce ( ( n , r ) => {
2024-11-19 15:49:56 +08:00
if ( p . isPlainObject ( e [ r ] ) ) {
let s ;
if ( Reflect . has ( e [ r ] , "type" ) && [ "field" , "router" , "query" , "string" ] . includes ( e [ r ] . type ) ) {
const { type : i , value : o = "" , default : l = a } = e [ r ] ;
switch ( i ) {
case "field" :
s = p . get ( t , o ) ? ? p . get ( t , o . substring ( o . indexOf ( "." ) + 1 ) ) ;
break ;
case "router" :
case "query" :
2024-11-20 15:00:20 +08:00
s = pe . getPageParams ( o ) ;
2024-11-19 15:49:56 +08:00
break ;
case "string" :
s = o ;
}
s ? ? ( s = l ) ;
2024-11-20 14:11:37 +08:00
} else s = ra ( e [ r ] , t , a ) ;
2024-11-19 15:49:56 +08:00
p . set ( n , r , s ) ;
}
return n ;
} , { } ) , ut = ( e , t ) => e && typeof e == "object" ? Array . isArray ( e ) ? e . map ( ( a ) => ut ( a , t ) ) : Object . keys ( e ) . reduce ( ( a , n ) => ( t [ n ] ? a [ t [ n ] ] = ut ( e [ n ] , t ) : a [ n ] = ut ( e [ n ] , t ) , a ) , { } ) : e ;
2024-11-20 15:00:20 +08:00
var rt , Ke , _e , st ;
2024-11-19 15:49:56 +08:00
const it = class it {
constructor ( ... t ) {
2024-11-20 15:00:20 +08:00
N ( this , Ke , [ ] ) ;
N ( this , _e , ( t ) => {
2024-11-19 15:49:56 +08:00
var a ;
2024-11-20 15:00:20 +08:00
for ( let n of t ) Array . isArray ( n [ 0 ] ) ? g ( this , _e ) . call ( this , n ) : g ( this , Ke ) . push ( g ( a = it , rt ) . call ( a , n [ 0 ] , n [ 1 ] ) ) ;
2024-11-19 15:49:56 +08:00
} ) ;
k ( this , "toValue" , async ( t , a = null ) => {
const n = { getValue : ( ) => t , getRecord : ( ) => a } ;
return await g ( this , Ke ) . reduce ( async ( r , s ) => {
try {
const i = await r ;
return ( await s ) . call ( n , i ) ;
} catch ( i ) {
return console . error ( i ) , r ;
}
} , t ) ;
} ) ;
k ( this , "toRender" , ( t , a , n = null ) => C . createElement ( g ( this , st ) , { value : t , record : a } , n ) ) ;
2024-11-20 15:00:20 +08:00
N ( this , st , ( { value : t , record : a , children : n } ) => {
const [ r , s ] = P ( n ) ;
2024-11-20 14:11:37 +08:00
return Ft ( ( ) => {
2024-11-19 15:49:56 +08:00
let i = ! 1 ;
return s ( n ) , this . toValue ( t , a ) . then ( ( o ) => Z ( o , "string" ) ) . then ( ( o ) => ! i && s ( o ) ) . catch ( ( o ) => ! i && s ( ` ${ o } ` ) ) , ( ) => i = ! 0 ;
} , [ t , a ] ) , r ;
} ) ;
2024-11-20 15:00:20 +08:00
g ( this , _e ) . call ( this , t ) ;
2024-11-19 15:49:56 +08:00
}
} ;
2024-11-20 15:00:20 +08:00
rt = new WeakMap ( ) , Ke = new WeakMap ( ) , _e = new WeakMap ( ) , st = new WeakMap ( ) , N ( it , rt , p . memoize ( ( t , a ) => X . getWidgetComponent ( t ) . then ( ( n ) => {
2024-11-19 15:49:56 +08:00
var r ;
return ( ( r = n . default ) == null ? void 0 : r . call ( n , a ) ) || ( ( s ) => s ) ;
} ) , ( t , a ) => ` ${ t } :: ${ Z ( a , "string" ) } ` ) ) ;
let wt = it ;
2024-11-20 15:00:20 +08:00
const qa = ( e , t = { } ) => ie ( ( ) => e == null ? void 0 : e . map ( ( { widgetByJs : a , widgetByJsSetting : n , ... r } , s ) => a ? { ... r , render : ( i , o ) => new wt ( [ a , n ] ) . toRender ( i , o , "-" ) } : r ) , [ e , t ] ) , Yn = ( e ) => {
const [ t , a ] = P ( { } ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
2024-11-19 15:49:56 +08:00
let n = ! 1 ;
2024-11-20 14:11:37 +08:00
return e && E . get ( ` /api/_/ ${ e } ` ) . then ( ( r ) => p . pick ( r , [ "uuid" , "name" , "code" , "resource" , "marginX" , "marginY" , "cols" , "rowHeight" , "primaryKey" , "columns" , "itemOperations" , "batchOperations" , "isConditionFormLayout" , "layout" , "tabs" , "pageSize" , "layoutConfig" ] ) ) . then ( ( r ) => ! n && a ( r ) ) , ( ) => n = ! 0 ;
2024-11-19 15:49:56 +08:00
} , [ e ] ) , t ;
} , Xn = ( e , t = { } ) => {
2024-11-20 15:00:20 +08:00
const [ a , n ] = P ( { dataSource : [ ] } ) ;
2024-11-19 15:49:56 +08:00
return Ze ( ( ) => {
let r = ! 1 ;
2024-11-20 14:11:37 +08:00
return e && E . get ( ` /api/ ${ e } / ${ E . encode ( { page : 1 , ... t } )} ` ) . then ( ( s ) => ! r && n ( s ) ) , ( ) => r = ! 0 ;
2024-11-19 15:49:56 +08:00
} , [ e , t ] ) , a ;
2024-11-20 15:00:20 +08:00
} , Ct = ( e , t = null , a = null , n = "id" ) => ie ( ( ) => {
2024-11-19 15:49:56 +08:00
if ( p . isEmpty ( e ) || ! e . some ( ( { uuid : s } ) => Da . check ( s ) ) ) return ! 1 ;
if ( p . isEmpty ( a ) || p . isEmpty ( t ) ) return ! 0 ;
const r = t . map ( ( s ) => ` ${ s == null ? void 0 : s [ n ] } ` ) ;
return e . some ( ( { uuid : s } ) => ! s || ! a . has ( s ) || a . get ( s ) . some ( ( i ) => r . includes ( ` ${ i } ` ) ) ) ;
} , [ e , t , a , n ] ) , Ha = ( { className : e , itemClassName : t , classNames : a = { } , dataSource : n , isPaginate : r , isItemOperations : s , isBatchOperations : i , batchOperations : o , itemOperations : l , itemOperationsAccess : u , resource : c , primaryKey : m , title : h , itemGridLayout : f , $setting : y , tabs : b , isConditionFormLayout : w , isTreeSider : T , treeSiderConfig : W } ) => {
2024-11-20 15:00:20 +08:00
const { getBase62params : q , onClickCallback : D , onTabChange : H } = Xe ( Oe ) , { total : I , page : M , pageSize : j , tab : z } = ( q == null ? void 0 : q ( ) ) || { } , _ = me ( ( V , v , oe ) => d ( Ja , { className : R ( "ff-data-list-framework-item" , t ) , operations : s && v ? l == null ? void 0 : l . filter ( ( O ) => ! ( m && O . uuid && u . has ( O . uuid ) ) || u . get ( O . uuid ) . includes ( v == null ? void 0 : v [ m ] ) ) : [ ] , data : c ? { [ c ] : v } : v , children : V , onClickCallback : D } ) , [ c , m , s , D , l , u ] ) ;
return $ ( "div" , { className : R ( "ff-data-list-framework" , e ) , children : [ d ( la , { className : a == null ? void 0 : a . sider , isTreeSider : T , ... W } ) , $ ( "div" , { className : R ( "ff-data-list-container" , a == null ? void 0 : a . container ) , children : [ d ( Tt , { className : a == null ? void 0 : a . filter , isConditionFormLayout : w } ) , d ( oa , { title : h , className : a == null ? void 0 : a . toolbar , tabs : b , tab : z , onTabChange : H } ) , d ( an , { ... f , className : a == null ? void 0 : a . content , style : { "--col-num" : ( y == null ? void 0 : y . colNum ) || 1 } , primaryKey : m , itemRender : _ , dataSource : n } ) , d ( ca , { className : a == null ? void 0 : a . footer , isPaginate : r , isOperations : i , operations : o , total : I , page : M , pageSize : j } ) ] } ) ] } ) ;
2024-11-19 15:49:56 +08:00
} , Ja = ( { className : e , operations : t , children : a , data : n , onClickCallback : r } ) => $ ( "div" , { className : R ( "data-list-grid-layout-item-container" , e ) , children : [ a , ! ! ( t != null && t . length ) && d ( "div" , { className : "data-list-grid-layout-item-actions" , children : t . map ( ( s ) => d ( "span" , { className : "data-list-grid-layout-item-action" , children : d ( S . Link , { uuid : s . uuid , type : s . type , name : s . name , widget : s . widget , widgetType : s . widgetType , widgetProps : s . widgetProps , widgetSetting : s . widgetSetting , widgetContainerProps : s . widgetContainerSetting , data : n , onAfterClick : ( i ) => i !== ! 1 && ( r == null ? void 0 : r ( s . isRefresh , n ) ) } , s . uuid || useId ( ) ) } , ( s == null ? void 0 : s . uuid ) || useId ( ) ) ) } ) ] } ) , Ka = ( { listCode : e , className : t , classNames : a = { } , itemClassName : n , dataSource : r , columns : s , isItemOperations : i , isBatchOperations : o , batchOperations : l , itemOperations : u , itemOperationsAccess : c , resource : m , primaryKey : h , title : f , tabs : y , isPaginate : b , isTreeSider : w , treeSiderConfig : T , isConditionFormLayout : W , ... q } ) => {
2024-11-20 15:00:20 +08:00
const { getBase62params : D , onClickCallback : H , onTabChange : I } = Xe ( Oe ) , { total : M , page : j , tab : z , pageSize : _ } = ( D == null ? void 0 : D ( ) ) || { } , V = Ct ( u , r , c , h ) ;
return $ ( "div" , { className : R ( "ff-data-table-framework" , t ) , children : [ d ( la , { className : a == null ? void 0 : a . sider , isTreeSider : w , ... T } ) , $ ( "div" , { className : R ( "ff-data-table-container" , a == null ? void 0 : a . container ) , children : [ d ( Tt , { listCode : e , isConditionFormLayout : W } ) , d ( oa , { title : f , className : a == null ? void 0 : a . toolbar , tabs : y , tab : z , onTabChange : I } ) , d ( Xa , { ... q , primaryKey : h , className : "ff-data-table-content" , columns : s , dataSource : r , operationRender : V ? ( v ) => d ( "div" , { className : "ff-data-table-actions" , children : u == null ? void 0 : u . reduce ( ( oe , O , he ) => [ ... oe , d ( S . Link , { size : "small" , uuid : O . uuid , type : O . type , name : O . name , widget : O . widget , widgetType : O . widgetType , widgetProps : O . widgetProps , widgetData : O . widgetData , widgetSetting : O . widgetSetting , widgetContainerProps : O . widgetContainerSetting , data : v , onAfterClick : ( $e ) => $e !== ! 1 && ( H == null ? void 0 : H ( O . isRefresh , data ) ) } , O . uuid || he ) ] , [ ] ) } ) : null } ) , d ( ca , { isPaginate : b , isOperations : o , operations : l , total : M , page : j , pageSize : _ } ) ] } ) ] } ) ;
2024-11-19 15:49:56 +08:00
} , Oe = C . createContext ( { listCode : "" , getBase62params : ( e , t ) => {
} , onReload : ( ) => {
} , onClickCallback : ( ) => {
} , onConditonChange : ( ) => {
} , onTabChange : ( ) => {
} , onSiderChange : ( ) => {
} , onKeywordChange : ( ) => {
} , onPageChange : ( ) => {
} , onPageSizeChange : ( ) => {
2024-11-20 15:00:20 +08:00
} } ) , _a = ( { isItemGridLayout : e , theme : t , themeProps : a , onClickCallback : n , onReload : r , getBase62params : s , listCode : i , onPageChange : o , onPageSizeChange : l , onTabChange : u , onSiderChange : c , onKeywordChange : m , onConditonChange : h , ... f } ) => {
const [ y , b ] = P ( ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
2024-11-19 15:49:56 +08:00
t ? X . getWidgetComponent ( t ) . then ( ( w ) => {
if ( ! w ) throw ` ${ t } not found ` ;
return w ;
} ) . catch ( ( w ) => ( { default : ( ) => ` ${ w } ` } ) ) . then ( ( w ) => b ( C . createElement ( w . default , { ... f , $setting : a } ) ) ) : b ( d ( e ? Ha : Ka , { ... f , $setting : a } ) ) ;
} , [ t , a ] ) , d ( Oe . Provider , { value : { listCode : i , onClickCallback : n , onReload : r , getBase62params : s , onPageChange : o , onPageSizeChange : l , onTabChange : u , onSiderChange : c , onKeywordChange : m , onConditonChange : h } , children : y && C . cloneElement ( y , f ) } ) ;
} ;
2024-11-20 15:00:20 +08:00
var Ce , ge , Le , ot ;
2024-11-20 14:11:37 +08:00
const ne = class ne {
2024-11-19 15:49:56 +08:00
constructor ( ) {
2024-11-20 15:00:20 +08:00
N ( this , ge , null ) ;
N ( this , Le , /* @__PURE__ */ new Map ( ) ) ;
N ( this , ot , ( ) => {
if ( g ( this , ge ) ) return g ( this , ge ) . port . postMessage ( { command : "status" , data : [ ] } ) ;
B ( this , ge , new SharedWorker ( new URL ( "/ff-worker/res-ws.js" , self . location ) ) ) , g ( this , ge ) . port . onmessage = ( t ) => {
2024-11-19 15:49:56 +08:00
var a , n ;
( a = t . data ) != null && a . uuid ? g ( this , Le ) . forEach ( ( r , s ) => {
var i ;
( r == "*" || ( i = r == null ? void 0 : r . includes ) != null && i . call ( r , t . data . uuid ) ) && s ( t . data ) ;
2024-11-20 14:11:37 +08:00
} ) : ( ( n = t . data ) == null ? void 0 : n . readyState ) == WebSocket . CLOSED && E . get ( "/api/user-api-token" ) . then ( ( { token : r , expire _at : s } ) => {
2024-11-20 15:00:20 +08:00
g ( this , ge ) . port . postMessage ( { command : "initWs" , data : [ ` ws ${ p . trimStart ( E . appUrl , "http" ) } api/user-resource-status-ws?token= ${ r } ` ] } ) ;
2024-11-19 15:49:56 +08:00
} ) ;
2024-11-20 15:00:20 +08:00
} , g ( this , ge ) . port . postMessage ( { command : "status" , data : [ ] } ) ;
2024-11-19 15:49:56 +08:00
} ) ;
k ( this , "subscribe" , ( t , a = [ ] ) => ( a ? Array . isArray ( a ) && a . length == 0 ? a = "*" : Array . isArray ( a ) || ( a = [ a ] . flat ( ) ) : a = "*" , g ( this , Le ) . set ( t , a ) , g ( this , Le ) . size == 1 && g ( this , ot ) . call ( this ) , ( ) => this . unsubscribe ( t ) ) ) ;
k ( this , "unsubscribe" , ( t ) => g ( this , Le ) . delete ( t ) ) ;
2024-11-20 14:11:37 +08:00
if ( g ( ne , Ce ) ) return g ( ne , Ce ) ;
2024-11-19 15:49:56 +08:00
}
} ;
2024-11-20 15:00:20 +08:00
Ce = new WeakMap ( ) , ge = new WeakMap ( ) , Le = new WeakMap ( ) , ot = new WeakMap ( ) , N ( ne , Ce , null ) , k ( ne , "getInstance" , ( ) => ( g ( ne , Ce ) || B ( ne , Ce , new ne ( ) ) , g ( ne , Ce ) ) ) ;
2024-11-20 14:11:37 +08:00
let bt = ne ;
const sa = bt . getInstance ( ) , Et = C . forwardRef ( ( { listCode : e , base62params : t , className : a , itemClassName : n , theme : r , themeProps : s , classNames : i } , o ) => {
2024-11-20 15:00:20 +08:00
const l = ma ( ) , u = Y ( t ) , c = Y ( /* @__PURE__ */ new Map ( ) ) , m = Y ( [ ] ) , [ { resource : h , primaryKey : f , batchOperations : y = [ ] , itemOperations : b = [ ] , columns : w = [ ] , themeConfig : T , theme : W , isConditionFormLayout : q = ! 1 , isTreeSider : D , treeSiderConfig : H , isItemGridLayout : I , itemGridLayout : M , title : j , isPaginate : z , tabs : _ } , V ] = P ( { isItemGridLayout : ! 1 , itemGridLayout : { } } ) , v = p . throttle ( ( F ) => {
m . current = [ ] , E . list ( e , p . pick ( { ... u . current , ... F } , [ "tab" , "page" , "pageSize" , "condition" , "sider" , "keyword" ] ) ) . then ( ( { keyword : U , condition : Ve , total : xe , tab : fe , sider : Ee , page : le , pageSize : ce , operationsAccess : de , dataSource : Te } ) => {
u . current = { tab : fe , condition : Ve , sider : Ee , keyword : U , total : xe , pageSize : ce , page : Te != null && Te . length ? le : 1 } , m . current = Te , c . current = new Map ( de ) , l ( ) ;
2024-11-19 15:49:56 +08:00
} ) ;
2024-11-20 15:00:20 +08:00
} , 380 , { leading : ! 1 , trailing : ! 0 } ) , oe = Ct ( b , m . current , c . current , f ) , O = Ct ( y ) ;
2024-11-20 14:11:37 +08:00
x ( ( ) => {
2024-11-19 15:49:56 +08:00
let F = null ;
2024-11-20 14:11:37 +08:00
return e && E . get ( ` /api/_/ ${ e } ` ) . resp ( ( { data : U , res : Ve } ) => {
U != null && U . isDynamicRefresh && ( F = sa . subscribe ( ( ) => v ( ) , Ve ) ) , u . current . pageSize = U . pageSize , V ( U ) ;
2024-11-19 15:49:56 +08:00
} ) . catch ( ( ) => V ( { } ) ) , m . current = [ ] , ( ) => F == null ? void 0 : F ( ) ;
2024-11-20 14:11:37 +08:00
} , [ e ] ) , Ft ( ( ) => {
2024-11-19 15:49:56 +08:00
e && v ( t ) ;
} , [ e , t ] ) ;
const he = ( ) => {
v ( ) ;
} , $e = ( F = 0 , U = null ) => {
if ( F === 2 ) {
const Ve = p . get ( U , "__PARENT_ID__" , "" ) , xe = p . get ( U , f , p . get ( U , [ h , f ] , "" ) ) , fe = p . findIndex ( m . current , [ "__PARENT_ID__" , Ve ] ) , Ee = p . findIndex ( fe > - 1 ? p . get ( m . current , [ fe , "children" ] ) : m . current , [ f , xe ] ) ;
2024-11-20 15:00:20 +08:00
Ee > - 1 ? ( E . get ( ` /api/ ${ e } /detail/ ${ xe } ` ) . then ( ( le ) => {
const ce = p . get ( m . current , fe > - 1 ? [ fe , "children" , Ee , "children" ] : [ Ee , "children" ] ) ;
m . current = Mt ( m . current , fe > - 1 ? { [ fe ] : { children : { $splice : [ [ Ee , 1 , { ... le , children : ce } ] ] } } } : { $splice : [ [ Ee , 1 , { ... le , children : ce } ] ] } ) , l ( ) ;
} ) , E . post ( ` /api/ ${ e } /list-operations-access ` , { ids : xe } ) . then ( ( le ) => new Map ( le ) ) . then ( ( le ) => {
c . current . forEach ( ( ce , de ) => {
2024-11-19 15:49:56 +08:00
var Te ;
2024-11-20 15:00:20 +08:00
( Te = le . get ( de ) ) != null && Te . some ( ( dt ) => dt == xe ) || c . current . set ( de , ce . filter ( ( dt ) => dt !== xe ) ) ;
} ) , le . forEach ( ( ce , de ) => {
c . current . has ( de ) ? c . current . set ( de , p . uniq ( [ ... c . current . get ( de ) || [ ] , ... ce ] ) ) : c . current . set ( de , ce ) ;
2024-11-19 15:49:56 +08:00
} ) , l ( ) ;
} ) ) : he ( ) ;
} else F === 1 && he ( ) ;
} ;
C . useImperativeHandle ( o , ( ) => ( { onReload : he , onClickCallback : $e } ) ) ;
2024-11-20 15:00:20 +08:00
const ct = { listCode : e , title : j , itemClassName : n , classNames : i , resource : h , primaryKey : f , theme : r || W , themeProps : s || T , isTreeSider : D , treeSiderConfig : H , isPaginate : z , tabs : _ , isItemOperations : oe , isBatchOperations : O , batchOperations : y , itemOperations : b , isItemGridLayout : I , columns : w , itemGridLayout : M , isConditionFormLayout : q , itemOperationsAccess : c . current , dataSource : m . current } ;
return d ( _a , { ... ct , className : R ( "ff-data-list-helper" , a ) , getBase62params : ( F , U , Ve = ! 1 ) => F == "init" ? t : F ? p . get ( u . current , F , U ) : u . current , onReload : he , onClickCallback : $e , onConditonChange : ( F , U ) => v ( { keyword : U , condition : Mt ( u . current . condition || { } , { $merge : F || { } } ) , page : 1 } ) , onTabChange : ( F ) => v ( { tab : F , page : 1 } ) , onSiderChange : ( F ) => v ( { sider : F , page : 1 } ) , onKeywordChange : ( F ) => v ( { keyword : F , page : 1 } ) , onPageChange : ( F , U ) => v ( { page : F , pageSize : U } ) , onPageSizeChange : ( F ) => v ( { pageSize : F , page : 1 } ) } ) ;
2024-11-20 14:11:37 +08:00
} ) , ia = ( e , t , a , n , r = { } , s = 0 ) => {
2024-11-19 15:49:56 +08:00
const i = { "--grid-layout-h" : ` ${ n } ` , "--grid-layout-w" : ` ${ a } ` , "--grid-layout-x" : ` ${ e } ` , "--grid-layout-y" : ` ${ t } ` , "--grid-layout-row-height-offset" : "0px" } ;
2024-11-20 14:11:37 +08:00
return r != null && r . autoHeight ? i . height = "fit-content" : i [ "--grid-layout-row" ] = ` ${ n } ` , i [ "--grid-layout-box-margin" ] = Bt ( r == null ? void 0 : r . marginTop , r == null ? void 0 : r . marginRight , r == null ? void 0 : r . marginBottom , r == null ? void 0 : r . marginLeft ) , i [ "--grid-layout-box-padding" ] = Bt ( r == null ? void 0 : r . paddingTop , r == null ? void 0 : r . paddingRight , r == null ? void 0 : r . paddingBottom , r == null ? void 0 : r . paddingLeft ) , s && ( i . height = ` ${ s } px ` ) , i ;
} , Bt = ( e , t , a , n ) => ` ${ e || 0 } px ${ t || 0 } px ${ a || 0 } px ${ n || 0 } px ` , Tt = ( { className : e , isConditionFormLayout : t } ) => {
2024-11-19 15:49:56 +08:00
var m , h ;
2024-11-20 15:00:20 +08:00
const [ a , n ] = P ( { } ) , { listCode : r , onKeywordChange : s , onConditonChange : i , getBase62params : o } = C . useContext ( Oe ) , { keyword : l , condition : u } = ( o == null ? void 0 : o ( ) ) || { } , [ c ] = at . useForm ( ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
r && t && E . get ( ` /api/_/ ${ r } /list-condition-form-layout ` ) . then ( ( { resource : f , marginX : y , marginY : b , rowHeight : w , cols : T , fields : W } ) => {
2024-11-19 15:49:56 +08:00
n ( { resource : f , itemMargin : [ y , b ] , rowHeight : w , cols : T , fields : W } ) ;
} ) . catch ( ( ) => n ( { } ) ) ;
2024-11-20 14:11:37 +08:00
} , [ r , t ] ) , x ( ( ) => {
2024-11-19 15:49:56 +08:00
c . setFieldsValue ( { keyword : l , ... u } ) ;
} , [ JSON . stringify ( [ l , u ] ) ] ) , d ( "div" , { className : R ( "ff-data-list-filter" , e ) , children : d ( at , { form : c , layout : "vertical" , autoComplete : "off" , onFinish : ( ( m = a . fields ) == null ? void 0 : m . length ) > 1 ? ( f ) => i ( { [ a . resource ] : f [ a . resource ] } , f . keyword ) : ( ) => {
} , onValuesChange : ( f ) => {
p . isEmpty ( p . omit ( f , [ "keyword" ] ) ) || c . submit ( ) ;
2024-11-20 15:00:20 +08:00
} , children : ( ( h = a . fields ) == null ? void 0 : h . length ) > 1 ? d ( Rt , { ... a , children : d ( Ga , { onReset : ( ) => {
2024-11-19 15:49:56 +08:00
const { keyword : f , condition : y } = o ( "init" ) || { } ;
c . setFieldsValue ( { keyword : f , ... y } ) ;
2024-11-20 14:11:37 +08:00
} } ) } ) : d ( "div" , { className : "ff-data-list-filter-default-form ff-grid-layout-form" , children : d ( "div" , { className : "grid-layout-item" , style : ia ( 20 , 0 , 5 , 2 ) , children : d ( at . Item , { name : [ "keyword" ] , children : d ( va . Search , { allowClear : ! 0 , enterButton : "搜索" , placeholder : "多关键字 | 分割" , onSearch : ( f ) => s ( f ) } ) } ) } ) } ) } ) } ) ;
2024-11-20 15:00:20 +08:00
} , Ga = ( { cols : e , fields : t , onReset : a } ) => {
const [ n , r ] = P ( ! 1 ) , s = ie ( ( ) => t == null ? void 0 : t . toReversed ( ) . some ( ( i ) => i . y > 1 || i . x + i . w >= e - 5 ) , [ e , t ] ) ;
2024-11-19 15:49:56 +08:00
return $ ( at . Item , { label : " " , style : { "--item-span" : 5 } , className : R ( "ff-data-list-filter-actions" , { expanded : n } ) , children : [ d ( mt , { onClick : a , children : "重置" } ) , d ( mt , { type : "primary" , htmlType : "submit" , children : "查询" } ) , s && d ( S . Link , { className : "ff-data-list-filter-expanded-button" , widget : ( ) => r ( ( i ) => ! i ) , type : "primary" , name : n ? "关闭" : "展开" , icon : n ? "icon-up" : "icon-down" , iconPosition : "end" } ) ] } ) ;
} ;
Tt . reservedFields = [ { x : 0 , y : 0 , h : 3 , w : 5 , field : { isVirtual : ! 0 , widgetPrefix : "@pkg/ff/grid-layout-forms" , widget : "Input" , code : "keyword" , label : "关键字" , placeholder : "多关键字 | 分割" , extras : { prefix : "icon-search" } } } ] ;
2024-11-20 14:11:37 +08:00
const oa = ( { className : e , title : t , tabs : a , tab : n , onTabChange : r } ) => {
2024-11-19 15:49:56 +08:00
const [ s , i ] = Ra ( a == null ? void 0 : a [ 0 ] . value , { value : n , onChange : r } ) ;
return $ ( "div" , { className : R ( "ff-data-list-toolbar" , e ) , children : [ d ( "div" , { className : "ff-data-list-title" , children : t } ) , d ( Sa , { className : "ff-data-list-tabs" , itemRender : ( { label : o , code : l } ) => d ( "span" , { onClick : ( ) => i ( l ) , className : R ( "ff-data-list-tab" , { active : l == s } ) , children : o } ) , items : a } ) , $ ( "div" , { className : "ff-data-list-actions" , children : [ d ( S . Link , { icon : "icon-reload" } ) , d ( S . Link , { icon : "icon-setting" } ) ] } ) ] } ) ;
2024-11-20 15:00:20 +08:00
} , Ya = [ { title : "parent 1" , key : "0-0" , children : [ { title : "parent 1-0" , key : "0-0-0" , disabled : ! 0 , children : [ { title : "leaf" , key : "0-0-0-0" , disableCheckbox : ! 0 } , { title : "leaf" , key : "0-0-0-1" } ] } , { title : "parent 1-1" , key : "0-0-1" , children : [ { title : d ( "span" , { style : { color : "#1677ff" } , children : "sss" } ) , key : "0-0-1-0" } ] } ] } ] , la = ( { className : e , width : t = 280 , isTreeSider : a } ) => a ? d ( Pa . DirectoryTree , { className : R ( "ff-data-list-sider" , e ) , style : { "--sider-width" : t } , showLine : ! 0 , showIcon : ! 1 , treeData : Ya } ) : null , ca = ( { className : e , operations : t , isOperations : a , isPaginate : n , total : r , page : s , pageSize : i } ) => {
2024-11-19 15:49:56 +08:00
const { onPageChange : o , onPageSizeChange : l , onClickCallback : u } = C . useContext ( Oe ) ;
2024-11-20 15:00:20 +08:00
return a && ! p . isEmpty ( t ) || n ? $ ( "div" , { className : R ( "ff-data-list-footer" , e ) , children : [ d ( "div" , { className : "ff-data-list-actions" , children : t == null ? void 0 : t . map ( ( c , m ) => d ( S , { uuid : c . uuid , type : c . type , name : c . name , widget : c . widget , widgetType : c . widgetType , widgetProps : c . widgetProps , widgetData : c . widgetData , widgetSetting : c . widgetSetting , widgetContainerProps : c . widgetContainerSetting , onAfterClick : ( h ) => h !== ! 1 && ( u == null ? void 0 : u ( c . isRefresh , null ) ) } , c . uuid || m ) ) } ) , n && d ( Na , { size : "small" , total : r , pageSize : i , showSizeChanger : ! 1 , showTotal : ( c ) => ` 第 ${ s } 页 / 总共 ${ c } 条 ` , onChange : o , onShowSizeChange : l } ) ] } ) : null ;
2024-11-20 14:11:37 +08:00
} , da = ( e , t , a = ! 0 ) => a !== ! 0 && a -- <= 0 ? [ ] : p . isArray ( e ) && ! p . isEmpty ( e ) ? e . reduce ( ( n , r ) => ( Reflect . has ( r , t ) && Reflect . has ( r , "children" ) && n . push ( r [ t ] ) , Reflect . has ( r , "children" ) && ! p . isEmpty ( r . children ) ? n . concat ( da ( r . children , t , a ) ) : n ) , [ ] ) : [ ] , Xa = ( { className : e , primaryKey : t , columns : a = [ ] , dataSource : n = [ ] , operationRender : r , operationWidth : s = 180 , ... i } ) => {
2024-11-19 15:49:56 +08:00
Yt ( ) ;
2024-11-20 15:00:20 +08:00
const o = Y ( null ) , l = Y ( null ) , [ u , c ] = P ( [ ] ) , [ m , h ] = P ( { width : 0 , height : 0 } ) ;
2024-11-20 14:11:37 +08:00
x ( ( ) => {
c ( da ( n , t ) ) ;
2024-11-19 15:49:56 +08:00
} , [ n , t ] ) , ka ( ( ) => {
const y = new ResizeObserver ( ( ) => {
var b ;
h ( { width : ( ( b = o . current ) == null ? void 0 : b . nativeElement . querySelector ( ".ant-table-body" ) . scrollWidth ) || l . current . offsetWidth , height : l . current . offsetHeight } ) ;
} ) ;
return l . current && y . observe ( l . current ) , ( ) => {
l . current && y . unobserve ( l . current ) ;
} ;
} , [ ] ) ;
const f = qa ( a ) ;
return d ( "div" , { ref : l , className : R ( "ff-data-list-table" , e ) , children : m . height ? d ( $a , { ... i , ref : o , rowKey : ( y ) => ( y == null ? void 0 : y [ t ] ) ? ? Math . random ( ) , columns : f == null ? void 0 : f . concat ( r ? [ { title : "操作" , align : "center" , fixed : "right" , width : ` ${ Math . ceil ( s / m . width * 100 ) . toFixed ( 2 ) } % ` , render : ( y , b , w ) => r ( b , w ) } ] : [ ] ) , dataSource : n , size : "middle" , scroll : { x : "max-content" , y : m . height - 50 } , pagination : ! 1 , expandable : { defaultExpandAllRows : ! 0 , expandRowByClick : ! 0 , onExpandedRowsChange : c , expandedRowKeys : u } } ) : null } ) ;
2024-11-20 14:11:37 +08:00
} , Qa = "RC_FORM_INTERNAL_HOOKS" , ua = ( e , { initialValue : t , initialValueLanguage : a , convertJs : n , convertJsSetting : r , type : s = "string" } , i = null ) => {
2024-11-20 15:00:20 +08:00
const o = Y ( ! 1 ) , l = Xe ( La ) , [ u , c ] = P ( ) , [ m , h ] = P ( a != "javascript" && e ? l . getFieldValue ( e ) : void 0 ) , { registerWatch : f } = l . getInternalHooks ( Qa ) || { } ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => f == null ? void 0 : f ( ( y , b , w ) => {
2024-11-19 15:49:56 +08:00
if ( ! o . current ) return ;
const T = p . get ( b , e ) ;
p . isEqual ( T , m ) || h ( Z ( T , s ) ) ;
2024-11-20 14:11:37 +08:00
} ) , [ m ] ) , x ( ( ) => {
2024-11-20 15:00:20 +08:00
a == "javascript" && t ? Ne . exec ( t , { } , { getFieldValueForBasicForm : ( y ) => i ? i . getFieldValue ( y ) : l . getFieldValue ( y ) , getFieldValue : ( y ) => l . getFieldValue ( y ) } ) . then ( ( y ) => h ( Z ( y , s ) ) ) . catch ( ( y ) => notification . error ( { message : ` 布局数据错误: ${ JSON . stringify ( y ) } ` } ) ) . finally ( ( ) => o . current = ! 0 ) : ( t && h ( Z ( t ? ? l . getFieldValue ( e ) , s ) ) , o . current = ! 0 ) ;
2024-11-19 15:49:56 +08:00
} , [ t , a ] ) , Ze ( ( ) => {
o . current && n && X . getWidgetComponent ( n ) . then ( ( { default : y } ) => y ( { value : m , record : l . getFieldsValue ( ! 0 ) , $setting : r } ) ) . then ( c ) . catch ( ( y ) => console . error ( "布局数据转换错误: " , y , n ) ) ;
} , [ m , n , r ] ) , [ u || m , m ] ;
2024-11-20 15:00:20 +08:00
} , ga = ( e , t , a = "@pkg/ff/grid-layouts" , n = null ) => ie ( ( ) => {
2024-11-19 15:49:56 +08:00
var r ;
2024-11-20 14:11:37 +08:00
return ( r = p . sortBy ( e , [ "y" , "x" ] ) ) == null ? void 0 : r . map ( ( { i : s , x : i , y : o , w : l , h : u , field : { boxStyle : c , widgetPrefix : m = a , widget : h , ... f } } , y ) => d ( "div" , { className : "grid-layout-item" , style : ia ( i , o , l , u , c , h === "Height" && ( f == null ? void 0 : f . initialValue ) ) , children : d ( Za , { ... f , basicForm : n , itemWidget : h != null && h . startsWith ( "@" ) || h != null && h . startsWith ( "blob:" ) ? h : ` ${ m } / ${ h } ` , itemWidgetRender : t } ) } , s || y ) ) ;
2024-11-19 15:49:56 +08:00
} , [ e ] ) , Za = ( { itemWidget : e , itemWidgetRender : t , basicForm : a , ... n } ) => {
2024-11-20 15:00:20 +08:00
const [ r , s ] = P ( ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
2024-11-19 15:49:56 +08:00
X . getWidgetComponent ( e ) . then ( ( { defaultProps : i = { } , default : o } ) => {
s ( C . createElement ( t ( o , i , a ) , n ) ) ;
} ) . catch ( ( i ) => {
console . error ( i ) , s ( e ) ;
} ) ;
} , [ e ] ) , r ;
2024-11-20 14:11:37 +08:00
} , pa = ( { cols : e = 12 , rowHeight : t = 21 , fields : a = [ ] , data : n , containerPadding : r = [ 0 , 0 ] , itemMargin : s = [ 4 , 0 ] , formProps : i = { } , className : o , ... l } ) => {
2024-11-20 15:00:20 +08:00
const [ u ] = ee . useForm ( ) , c = ga ( a , en , "@pkg/ff/grid-layouts" ) , m = ie ( ( ) => [ { name : "__PROPS__" , value : i } ] , [ i ] ) ;
2024-11-19 15:49:56 +08:00
return Ze ( ( ) => {
u . setFieldsValue ( n ) ;
2024-11-20 14:11:37 +08:00
} , [ n ] ) , d ( ee , { fields : m , form : u , component : ! 1 , children : d ( "div" , { ... l , className : R ( "ff-grid-layout" , o ) , style : { "--grid-layout-item-margin-y" : ` ${ ( s == null ? void 0 : s [ 0 ] ) || 0 } px ` , "--grid-layout-item-margin-x" : ` ${ ( s == null ? void 0 : s [ 1 ] ) || 0 } px ` , "--grid-layout-container-padding-y" : ` ${ ( r == null ? void 0 : r [ 0 ] ) || 0 } px ` , "--grid-layout-container-padding-x" : ` ${ ( r == null ? void 0 : r [ 1 ] ) || 0 } px ` , "--grid-layout-cols" : e , "--grid-layout-row-height" : ` ${ t } px ` } , children : c } ) } ) ;
2024-11-19 15:49:56 +08:00
} , en = ( e , t = { } , a = null ) => ( n ) => {
2024-11-20 14:11:37 +08:00
const { code : r , label : s , extras : i , isVirtual : o , initialValue : l , initialValueLanguage : u , convertJs : c , convertJsSetting : m , ... h } = p . merge ( { } , t , n ) , [ f , y ] = ua ( o ? null : r , { initialValue : l , initialValueLanguage : u , convertJs : c , convertJsSetting : m , type : ( h == null ? void 0 : h . type ) || "string" } , a ) ;
2024-11-19 15:49:56 +08:00
return d ( e , { ... h , value : f , rawValue : y , $setting : i || { } } ) ;
2024-11-20 14:11:37 +08:00
} , Qn = ( Ut = pa , function ( { code : e , data : t , ... a } ) {
2024-11-20 15:00:20 +08:00
const [ n , r ] = P ( { resource : null , cols : 12 , rowHeight : 21 , fields : [ ] } ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
e && E . get ( ` /api/_/ ${ e } ` ) . then ( ( s ) => r ( p . pick ( s , [ "resource" , "cols" , "rowHeight" , "fields" ] ) ) ) ;
} , [ e ] ) , ( n == null ? void 0 : n . resource ) && d ( Ut , { ... a , rowHeight : n . rowHeight , cols : n . cols , fields : n . fields , data : n != null && n . resource ? { [ n == null ? void 0 : n . resource ] : t } : { } } ) ;
2024-11-19 15:49:56 +08:00
} ) ;
2024-11-20 14:11:37 +08:00
var Ut ;
2024-11-19 15:49:56 +08:00
const Zn = ( { widget : e , widgetPrefix : t = "@pkg/ff/grid-layouts" , basicForm : a , ... n } ) => {
2024-11-20 15:00:20 +08:00
const r = e != null && e . startsWith ( "@" ) || e != null && e . startsWith ( "blob:" ) ? e : ` ${ t } / ${ e } ` , [ s , i ] = P ( ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
2024-11-19 15:49:56 +08:00
r && X . getWidgetComponent ( r ) . then ( ( { defaultProps : o = { } , default : l } ) => ( { default : tn ( l , o , a ) } ) ) . catch ( ( o ) => ( { default : ( ) => ` ${ o } ` } ) ) . then ( ( o ) => i ( C . createElement ( o . default , n ) ) ) ;
} , [ r ] ) , s ;
} , tn = ( e , t = { } , a = null ) => ( n ) => {
2024-11-20 14:11:37 +08:00
const { code : r , label : s , extras : i , isVirtual : o , initialValue : l , initialValueLanguage : u , convertJs : c , convertJsSetting : m , value : h , ... f } = p . merge ( { } , t , n ) , [ y , b ] = ua ( o ? null : r , { initialValue : l , initialValueLanguage : u , convertJs : c , convertJsSetting : m , type : ( f == null ? void 0 : f . type ) || "string" } , a ) ;
2024-11-19 15:49:56 +08:00
return d ( e , { ... f , value : y , rawValue : b , $setting : i || { } } ) ;
} , an = ( { cols : e , rowHeight : t , itemMargin : a , fields : n , primaryKey : r , dataSource : s , itemClassName : i , itemRender : o = ( m , h , f ) => m , empty : l = d ( xa , { description : null } ) , className : u , style : c = { } } ) => {
2024-11-20 15:00:20 +08:00
const m = Yt ( ) , h = ie ( ( ) => d ( pa , { cols : e , rowHeight : t , itemMargin : a , fields : n , className : i } ) , [ n , e , t , a ] ) ;
2024-11-19 15:49:56 +08:00
return d ( "div" , { className : R ( "ff-data-list-content" , u ) , style : c , children : p . isEmpty ( s ) ? l : s == null ? void 0 : s . map ( ( f , y ) => d ( C . Fragment , { children : o ( C . cloneElement ( h , { data : f } ) , f , y ) } , ` ${ m } - ${ ( f == null ? void 0 : f [ r ] ) || y } ` ) ) } ) ;
} , nn = ( { component : e } ) => {
const { base62params : t } = Oa ( ) ;
2024-11-20 14:11:37 +08:00
return d ( K , { children : d ( Et , { listCode : e , base62params : E . decode ( t ) } ) } ) ;
2024-11-19 15:49:56 +08:00
} , rn = ( ) => "Empty" , sn = ( { component : e , $setting : t } ) => {
2024-11-20 15:00:20 +08:00
const [ a , n ] = P ( ) ;
2024-11-20 14:11:37 +08:00
x ( ( ) => {
2024-11-19 15:49:56 +08:00
if ( ! e ) return n ( d ( rn , { description : null } ) ) ;
X . getWidgetComponent ( e ) . catch ( ( s ) => ( { default : ( ) => ` ${ s } ` } ) ) . then ( ( s ) => C . createElement ( s . default , { $setting : t } ) ) . then ( n ) ;
} , [ e ] ) ;
2024-11-20 15:00:20 +08:00
const r = pe . getPageParams ( ) || { } ;
2024-11-19 15:49:56 +08:00
return a ? C . cloneElement ( a , r ) : null ;
} ;
2024-11-20 15:00:20 +08:00
var be , Q , ke , ve , Ge , Ye ;
2024-11-20 14:11:37 +08:00
const re = class re {
2024-11-19 15:49:56 +08:00
constructor ( ) {
2024-11-20 15:00:20 +08:00
N ( this , Q , /* @__PURE__ */ new Map ( ) ) ;
N ( this , ke , { } ) ;
N ( this , ve , null ) ;
2024-11-19 15:49:56 +08:00
k ( this , "init" , ( t , a ) => {
B ( this , Q , t ) , B ( this , ke , a ) ;
} ) ;
k ( this , "get" , ( t ) => ( g ( this , Q ) . has ( t ) || ( t = Array . from ( g ( this , Q ) . keys ( ) ) . find ( ( a ) => g ( this , Q ) . get ( a ) . uri === t ) ) , g ( this , Q ) . get ( t ) || { } ) ) ;
k ( this , "redirect" , ( t , a , n = { } ) => {
const { uri : r , type : s , widgetProps : i } = this . get ( t ) || { } ;
2024-11-20 14:11:37 +08:00
let o = Va ( r || t , s != "list" ? a : p . mapValues ( a , ( u ) => E . encode ( u ) ) ) ;
2024-11-19 15:49:56 +08:00
const l = new URLSearchParams ( ) ;
for ( const u in i || { } ) ( i == null ? void 0 : i . type ) == "query" && l . append ( u , a [ u ] ) ;
return l . size > 0 && ( o = ` ${ o } ? ${ l . toString ( ) } ` ) , g ( this , ve ) . navigate ( o , n ) ;
} ) ;
k ( this , "getMenus" , ( t ) => {
var a ;
return ( ( a = g ( this , ke ) ) == null ? void 0 : a [ t ] ) || [ ] ;
} ) ;
k ( this , "findMenuPathByUuid" , ( t ) => {
let a = [ ] ;
2024-11-20 15:00:20 +08:00
for ( const n in g ( this , ke ) ) if ( a = g ( this , Ge ) . call ( this , g ( this , ke ) [ n ] , t , [ n ] ) , a . length > 1 ) return a ;
2024-11-19 15:49:56 +08:00
return a ;
} ) ;
2024-11-20 14:11:37 +08:00
k ( this , "getMenusByRouteUuid" , ( t ) => g ( this , Ye ) . call ( this , t , Object . values ( g ( this , ke ) ) . flat ( ) ) ) ;
2024-11-20 15:00:20 +08:00
N ( this , Ge , ( t , a , n = [ ] ) => {
2024-11-19 15:49:56 +08:00
if ( p . isEmpty ( t ) ) return n ;
for ( const { uuid : r , children : s } of t ) {
if ( r == a ) return n . concat ( r ) ;
2024-11-20 15:00:20 +08:00
if ( ! p . isEmpty ( s ) ) return n . concat ( r , g ( this , Ge ) . call ( this , s , a ) ) ;
2024-11-19 15:49:56 +08:00
}
return n ;
} ) ;
2024-11-20 15:00:20 +08:00
N ( this , Ye , ( t , a ) => {
2024-11-19 15:49:56 +08:00
var r ;
let n = [ ] ;
2024-11-20 14:11:37 +08:00
for ( const s of a ) s . widgetType == "redirect" && ( s . uuid == t || s . widget == t ? n . push ( s ) : ( r = s . children ) != null && r . length && ( n = n . concat ( g ( this , Ye ) . call ( this , t , s . children ) ) ) ) ;
2024-11-19 15:49:56 +08:00
return n ;
} ) ;
k ( this , "getCurrentMenu" , ( ) => {
const { uuid : t } = this . getCurrentRoute ( ) || { } ;
if ( ! t ) return ;
const a = this . getMenusByRouteUuid ( t ) ;
return p . isEmpty ( a ) ? void 0 : a [ 0 ] ;
} ) ;
k ( this , "getCurrentRoute" , ( t = 0 ) => {
var n ;
const a = ( n = g ( this , ve ) . state . matches [ g ( this , ve ) . state . matches . length - 1 - t ] ) == null ? void 0 : n . route ;
if ( ! a ) return null ;
for ( let [ r , s ] of g ( this , Q ) ) if ( s . uri === a . path ) return s ;
return null ;
} ) ;
k ( this , "getPageParams" , ( t ) => {
var s ;
const { location : a , matches : n } = g ( this , ve ) . state , r = ( ( s = n [ n . length - 1 ] ) == null ? void 0 : s . params ) || { } ;
return a . search && new URLSearchParams ( a . search ) . forEach ( ( i , o ) => {
r [ o ] = i ;
} ) , t ? p . get ( r , t ) : r ;
} ) ;
k ( this , "createBrowserRouter" , ( t = { } ) => {
if ( g ( this , Q ) . size == 0 ) return null ;
const a = De . get ( "Common.WEBSITE_DEFAULT_THEME" , "@pkg/ff/frameworks/BasicLayout" ) , n = De . get ( X . checkUserToken ( ) ? "Common.WEBSITE_LOGIN_REDIRECT" : "Common.WEBSITE_DEFAULT" , "/index" ) , r = { [ a ] : 0 } , s = ( o , l ) => ( ) => X . getWidgetComponent ( o ) . then ( ( u ) => u . default || function ( ) {
return ` ${ o } ` ;
2024-11-20 14:11:37 +08:00
} ) . then ( ( u ) => ( { Component : ( ) => C . createElement ( Zt , { } , C . createElement ( u , l ) ) } ) ) , i = Array . from ( g ( this , Q ) . values ( ) ) . reduce ( ( o , { uuid : l , uri : u , name : c , type : m , component : h , widgetSetting : f , isLogin : y , isLayout : b , extra : w } ) => {
2024-11-19 15:49:56 +08:00
let T = { } , W = 0 ;
switch ( m ) {
case "list" :
T . element = C . createElement ( nn , { component : h } ) ;
break ;
case "fsdpf-component" :
T . element = C . createElement ( sn , { key : h , component : h , $setting : f } ) ;
}
if ( w != null && w . layout ) {
if ( ! r [ w == null ? void 0 : w . layout ] ) return r [ w == null ? void 0 : w . layout ] = o . length , [ ... o , { path : "/" , lazy : s ( w == null ? void 0 : w . layout , { } ) , children : [ { path : u , ... T } ] } ] ;
W = r [ w == null ? void 0 : w . layout ] ;
}
return b && W > - 1 ? ( o [ W ] . children . push ( { path : u , ... T } ) , o ) : [ ... o , { path : u , ... T } ] ;
} , [ { path : "/" , lazy : s ( a , { } ) , children : [ ] } ] ) ;
return i . push ( { index : ! 0 , element : C . createElement ( on , { to : n , replace : ! 0 } ) } ) , B ( this , ve , Aa ( i , t ) ) ;
} ) ;
2024-11-20 14:11:37 +08:00
if ( g ( re , be ) ) return g ( re , be ) ;
2024-11-19 15:49:56 +08:00
}
} ;
2024-11-20 15:00:20 +08:00
be = new WeakMap ( ) , Q = new WeakMap ( ) , ke = new WeakMap ( ) , ve = new WeakMap ( ) , Ge = new WeakMap ( ) , Ye = new WeakMap ( ) , N ( re , be , null ) , k ( re , "getInstance" , ( ) => ( g ( re , be ) || B ( re , be , new re ( ) ) , g ( re , be ) ) ) ;
2024-11-20 14:11:37 +08:00
let kt = re ;
2024-11-20 15:00:20 +08:00
const on = ( { to : e , replace : t } ) => Ia ( ) ? C . createElement ( ja , { to : e , replace : t } ) : ( window . document . location = e , "redirect" ) , pe = kt . getInstance ( ) , Ae = new Worker ( new URL ( "/ff-worker/index.js" , self . location ) ) , Dt = { getConfigure : ( e ) => De . get ( e ) , route : { redirect : ( ... e ) => pe . redirect ( ... e ) , getPageParams : ( ... e ) => pe . getPageParams ( ... e ) , getCurrentRoute : ( ) => pe . getCurrentRoute ( ) } , popup : { notification : ( ... e ) => G . notification ( ... e ) , success : ( ... e ) => G . success ( ... e ) , error : ( ... e ) => G . error ( ... e ) , form : ( ... e ) => G . form ( ... e ) , modal : ( ... e ) => G . modal ( ... e ) , confirm : ( ... e ) => G . confirm ( ... e ) } } ;
2024-11-19 15:49:56 +08:00
var lt , ze , Se ;
const A = class A {
constructor ( ) {
k ( this , "exec" , ( t , a = { } , n = { } , r = "" ) => new Promise ( ( s , i ) => {
2024-11-20 15:00:20 +08:00
const o = It ( A , lt ) . _ ++ ;
2024-11-19 15:49:56 +08:00
g ( A , ze ) . set ( o , n ) , A . mQueue . set ( o , [ s , i ] ) , Ae . postMessage ( { id : o , session : r , category : "eval" , method : t , args : a } ) ;
} ) ) ;
k ( this , "clear" , ( t ) => Ae . postMessage ( { session : t , category : "clear" } ) ) ;
if ( g ( A , Se ) ) return g ( A , Se ) ;
Promise . resolve ( ) . then ( ( ) => Fn ) . then ( ( t ) => {
2024-11-20 14:11:37 +08:00
Dt . http = t . http ;
2024-11-19 15:49:56 +08:00
} ) , Ae . addEventListener ( "message" , ( { data : { id : t , task _id : a , method : n , args : r , category : s , data : i , error : o , session : l } } ) => {
if ( s === "eval" && A . mQueue . has ( t ) ) o !== null ? A . mQueue . get ( t ) [ 1 ] ( o ) : A . mQueue . get ( t ) [ 0 ] ( i ) , g ( A , ze ) . delete ( t ) , A . mQueue . delete ( t ) ;
else if ( s === "util" ) try {
2024-11-20 14:11:37 +08:00
const u = p . get ( Dt , n . split ( "/" ) ) || p . get ( g ( A , ze ) . get ( a ) , n . split ( "/" ) ) ;
2024-11-19 15:49:56 +08:00
if ( ! p . isFunction ( u ) ) throw ` ${ n } not found ` ;
Promise . resolve ( Reflect . apply ( u , void 0 , r ) ) . then ( ( c ) => {
Ae . postMessage ( { id : t , task _id : a , category : s , method : n , args : r , session : l , data : c , error : null } ) ;
} ) . catch ( ( c ) => {
Ae . postMessage ( { id : t , task _id : a , category : s , method : n , args : r , session : l , data : null , error : c } ) ;
} ) ;
} catch ( u ) {
Ae . postMessage ( { id : t , task _id : a , category : s , method : n , args : r , session : l , data : null , error : u } ) ;
}
} , ! 1 ) ;
}
} ;
2024-11-20 15:00:20 +08:00
lt = new WeakMap ( ) , ze = new WeakMap ( ) , Se = new WeakMap ( ) , k ( A , "mQueue" , /* @__PURE__ */ new Map ( ) ) , N ( A , lt , 0 ) , N ( A , ze , /* @__PURE__ */ new Map ( ) ) , N ( A , Se , null ) , k ( A , "getInstance" , ( ) => ( g ( A , Se ) || B ( A , Se , new A ( ) ) , g ( A , Se ) ) ) ;
2024-11-19 15:49:56 +08:00
let vt = A ;
2024-11-20 15:00:20 +08:00
const Ne = vt . getInstance ( ) , ma = ( ) => {
2024-11-20 14:11:37 +08:00
const e = Y ( ! 0 ) , [ , t ] = C . useReducer ( ( a ) => a + 1 , 0 ) ;
return x ( ( ) => ( ) => e . current = ! 1 , [ ] ) , ( ) => e . current && t ( ) ;
2024-11-19 15:49:56 +08:00
} , er = ( e ) => {
2024-11-20 14:11:37 +08:00
const t = Y ( ) ;
return x ( ( ) => {
2024-11-19 15:49:56 +08:00
t . current = e ;
} , [ e ] ) , t . current ;
} , tr = ( e ) => {
2024-11-20 15:00:20 +08:00
const [ t , a ] = P ( e ) , n = Y ( null ) , r = me ( ( s , i ) => {
2024-11-19 15:49:56 +08:00
n . current = i , a ( s ) ;
} , [ ] ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
2024-11-19 15:49:56 +08:00
n . current && ( n . current ( t ) , n . current = null ) ;
} , [ t ] ) , [ t , r ] ;
} , Ze = ( e = ( n ) => {
} , t , a = p . isEqual ) => {
const n = C . useRef ( ) ;
a ( t , n . current ) || ( n . current = p . cloneDeep ( t ) ) , C . useEffect ( e , [ n . current ] ) ;
2024-11-20 14:11:37 +08:00
} , Ft = Ze , ha = ( e , t = "string" ) => {
2024-11-19 15:49:56 +08:00
var a ;
if ( ! Array . isArray ( e ) ) return e ;
for ( let n = 0 ; n < e . length ; n ++ ) e [ n ] . value = Z ( ( a = e [ n ] ) == null ? void 0 : a . value , t ) , e [ n ] && Reflect . has ( e [ n ] , "children" ) && ( e [ n ] . children = ha ( e [ n ] . children , t ) ) ;
return e ;
} , ar = ( e , t = "json" , a = "string" , n , r = null ) => {
2024-11-20 15:00:20 +08:00
const [ s ] = ee . useForm ( n ) , [ i , o ] = P ( [ { label : "无" , value : "" , disabled : ! 0 } ] ) , l = Y ( [ ] ) , u = ee . useWatch ( ( c ) => l . current . length === 0 ? null : p . pick ( c , l . current ) , s ) || null ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
2024-11-20 15:00:20 +08:00
Array . isArray ( e ) ? o ( e ) : t === "javascript" && e ? Ne . exec ( e , { } , { getFieldValue : ( c ) => ( l . current . includes ( c ) || l . current . push ( c ) , s . getFieldValue ( c ) ) , getFieldValueForBasicForm : ( c ) => ( l . current . includes ( c ) || l . current . push ( c ) , r ? r . getFieldValue ( c ) : s . getFieldValue ( c ) ) } ) . then ( ( c ) => {
2024-11-19 15:49:56 +08:00
o ( Z ( c , "array" ) ) ;
} ) : e && o ( Z ( e , "array" ) ) ;
} , [ e , t , u ] ) , ha ( i , a ) ;
} , nr = ( e ) => {
2024-11-20 15:00:20 +08:00
const [ t , a ] = P ( ) , n = { type : "GET" } ;
2024-11-19 15:49:56 +08:00
if ( typeof e == "string" ? n . url = e : p . isPlainObject ( e ) && Object . assign ( n , e ) , ! ( n != null && n . url ) ) throw "url is required" ;
2024-11-20 14:11:37 +08:00
const r = ( s ) => E . request ( n , ! 1 ) . resp ( ( i ) => ( console . log ( "useSubscribeRequest" , s ) , a ( i ) , i ) ) ;
2024-11-19 15:49:56 +08:00
return Ze ( ( ) => {
let s = null ;
return r ( ) . then ( ( i ) => {
2024-11-20 14:11:37 +08:00
s = sa . subscribe ( p . throttle ( r , 180 , { leading : ! 1 , trailing : ! 0 } ) , i . res ) ;
2024-11-19 15:49:56 +08:00
} ) , ( ) => s == null ? void 0 : s ( ) ;
} , n ) , t ;
} , ln = ( e ) => {
const [ t , a ] = C . useState ( { gridItems : [ ] , hideItems : [ ] } ) ;
return C . useEffect ( ( ) => {
2024-11-20 14:11:37 +08:00
e && E . get ( ` /api/_/ ${ e } ` ) . then ( ( { pk : n , uuid : r , code : s , resource : i , align : o , cols : l , rowHeight : u , marginX : c , marginY : m , listenChangeFields : h , listenChangeFieldsFunc : f , fields : y } ) => ( { pk : n , uuid : r , code : s , resource : i , align : o , cols : l , rowHeight : u , marginX : c , marginY : m , listenChangeFields : h , listenChangeFieldsFunc : f , ... y . reduce ( ( b , w ) => {
2024-11-19 15:49:56 +08:00
var T ;
return ( T = w == null ? void 0 : w . field ) != null && T . hidden ? b . hides . push ( w == null ? void 0 : w . field ) : b . items . push ( w ) , b ;
} , { items : [ ] , hides : [ ] } ) } ) ) . then ( a ) ;
} , [ e ] ) , t ;
} , cn = ( { max : e = 0 , min : t = 0 , type : a = "" , message : n , pattern : r , required : s = ! 1 , validator : i } = { } , o , l ) => {
2024-11-20 15:00:20 +08:00
const [ u , c ] = P ( [ ] ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
2024-11-19 15:49:56 +08:00
const m = [ ] ;
if ( s ) {
let h = l ;
switch ( l ) {
case "number" :
case "string" :
case "array" :
break ;
case "bool" :
h = "boolean" ;
break ;
case "json" :
h = "object" ;
}
m . push ( { type : h , required : ! 0 , whitespace : ! 0 , message : "该项必填" } ) ;
}
switch ( a ) {
case "string" :
m . push ( { type : a , max : e , min : t , message : n || ( t && e ? ` 字符必须在 ${ t } ~ ${ e } 之间 ` : ` ${ e ? "最多能有" : "最少要有" } ${ t || e } 个字符 ` ) } ) ;
break ;
case "pattern" :
m . push ( { type : "string" , pattern : r , message : n } ) ;
break ;
case "validator" :
i && m . push ( ( { getFieldValue : h } ) => ( { validator : async ( f , y ) => {
2024-11-20 15:00:20 +08:00
const b = await Ne . exec ( i , { value : y , fieldName : o } , { getFieldValue : h } ) ;
2024-11-19 15:49:56 +08:00
return p . isString ( b ) && b ? Promise . reject ( b ) : p . isBoolean ( b ) && ! b ? Promise . reject ( n ) : Promise . resolve ( ) ;
} } ) ) ;
}
c ( m ) ;
} , [ e , t , a , n , r , s , i ] ) , u ;
} , dn = ( e , t , a ) => {
2024-11-20 15:00:20 +08:00
const [ n , r ] = P ( null ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
2024-11-19 15:49:56 +08:00
const { initDataUri : s = ` /api/ ${ e } ` , initDataMethod : i = "GET" } = a || { } ;
2024-11-20 14:11:37 +08:00
t && E . request ( { method : i , url : p . trimEnd ( ` ${ s } / ${ t } ` , "/" ) } ) . then ( ( o ) => {
2024-11-19 15:49:56 +08:00
r ( o ) ;
} ) ;
} , [ e , t , a ] ) , n ;
} , un = ( e , t , a , n = { } ) => {
2024-11-20 15:00:20 +08:00
const r = ma ( ) , s = Y ( ! 0 ) , i = Y ( [ ] ) , [ o , l ] = P ( a ) , u = ee . useWatch ( ( c ) => JSON . stringify ( p . pick ( c , i . current ) ) , t ) || "{}" ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
2024-11-20 15:00:20 +08:00
e && Ne . exec ( e , n , { getFieldValue : p . wrap ( t . getFieldValue , ( c , m ) => ( i . current . some ( ( h ) => p . isEqual ( h , m ) ) || ( i . current . push ( m ) , r ( ) ) , c ( m ) ) ) , isFieldTouched : t . isFieldTouched , isFieldsTouched : t . isFieldsTouched } ) . then ( ( c ) => s . current && l ( c ) ) ;
2024-11-20 14:11:37 +08:00
} , [ e , u , t , n ] ) , x ( ( ) => ( ) => s . current = ! 1 , [ ] ) , o ;
} , rr = ( { value : e , onChange : t } , a = null ) => {
2024-11-20 15:00:20 +08:00
const n = Y ( ) , [ r ] = ee . useForm ( a ) ;
2024-11-20 14:11:37 +08:00
return Ft ( ( ) => {
p . isEqual ( n . current , e ) || r . setFieldsValue ( e ) ;
2024-11-20 15:00:20 +08:00
} , [ e ] ) , x ( ( ) => ( ) => r . resetFields ( ) , [ ] ) , [ ie ( ( ) => r . _ _INTERNAL _ _ ? r : { ... r , _ _INTERNAL _ _ : { } } , [ r ] ) , ( s , i ) => {
2024-11-20 14:11:37 +08:00
n . current = i , t ( i ) ;
} ] ;
2024-11-19 15:49:56 +08:00
} , gn = ( { type : e , initialValue : t , initialValueLanguage : a , onChange : n , form : r } ) => {
const s = un ( a == "javascript" && t , r , a == "javascript" ? void 0 : t , { } ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
2024-11-19 15:49:56 +08:00
a == "javascript" ? n ( Z ( s , e ) ) : t && n ( Z ( t , e ) ) ;
} , [ e , t , s ] ) , null ;
} , pn = ( { widget : e = "Input" , widgetPrefix : t = "@pkg/ff/grid-layout-forms" , widgetDecorator : a , subWidgets : n , basicForm : r , ... s } ) => {
2024-11-20 15:00:20 +08:00
const i = e != null && e . startsWith ( "@" ) || e != null && e . startsWith ( "blob:" ) ? e : ` ${ t } / ${ e } ` , [ o , l ] = P ( ) ;
2024-11-20 14:11:37 +08:00
return x ( ( ) => {
2024-11-19 15:49:56 +08:00
i && X . getWidgetComponent ( i ) . then ( ( { defaultProps : u = { } , default : c } ) => ( { default : fa ( c , u , r ) } ) ) . catch ( ( u ) => ( { default : ( ) => ` ${ u } ` } ) ) . then ( ( u ) => l ( C . createElement ( u . default , s ) ) ) ;
} , [ i ] ) , o && C . cloneElement ( o , s ) ;
} , fa = ( e , t = { } , a = null ) => ( n ) => {
2024-11-20 15:00:20 +08:00
const { type : r , code : s , label : i , noStyle : o , placeholder : l , extras : u , validators : c , help : m , isVirtual : h , $isReserved : f , initialValue : y , initialValueLanguage : b , convertJs : w , convertJsSetting : T , widgetPerfix : W , boxStyle : q , widgetDecorator : D , subWidgets : H , ... I } = { ... t , ... n } , M = cn ( c || { } , s , r ) , j = { label : i , noStyle : o , colon : ! 1 , layout : "vertical" } , z = { placeholder : l , ... I } , _ = me ( ( V ) => V == null ? void 0 : Z ( V , r ) , [ r ] ) ;
return d ( Xt , { name : s , rules : M , initialValue : _ ( y ) , normalize : _ , children : ( V , v , oe ) => {
2024-11-19 15:49:56 +08:00
var O ;
2024-11-20 15:00:20 +08:00
return d ( e , { type : r , rcform : oe , itemProps : { validateStatus : v . errors . length > 0 ? "error" : "success" , tooltip : m , help : v . errors . length > 0 ? v . errors . join ( "、" ) : null , required : ( ( O = M == null ? void 0 : M [ 0 ] ) == null ? void 0 : O . required ) || ! 1 , ... j } , fieldProps : { ... z , ... V } , $setting : u || { } } ) ;
2024-11-19 15:49:56 +08:00
} } ) ;
2024-11-20 14:11:37 +08:00
} , Rt = ( { cols : e = 24 , rowHeight : t = 16 , itemMargin : a = [ 8 , 16 ] , containerPadding : n = [ 0 , 0 ] , fields : r = [ ] , children : s , basicForm : i = null } ) => {
const o = ga ( r , fa , "@pkg/ff/grid-layout-forms" ) ;
2024-11-19 15:49:56 +08:00
return $ ( "div" , { className : "ff-grid-layout-form" , style : { "--grid-layout-item-margin-x" : ` ${ ( a == null ? void 0 : a [ 0 ] ) ? ? 8 } px ` , "--grid-layout-item-margin-y" : ` ${ ( a == null ? void 0 : a [ 1 ] ) ? ? 16 } px ` , "--grid-layout-container-padding-y" : ` ${ ( n == null ? void 0 : n [ 0 ] ) || 0 } px ` , "--grid-layout-container-padding-x" : ` ${ ( n == null ? void 0 : n [ 1 ] ) || 0 } px ` , "--grid-layout-cols" : e , "--grid-layout-row-height" : ` ${ t } px ` } , children : [ o , s && C . cloneElement ( s , { cols : e , rowHeight : t , itemMargin : a , containerPadding : n , fields : r } ) ] } ) ;
} ;
2024-11-20 14:11:37 +08:00
Rt . propTypes = { fields : L . array } ;
const mn = ( qt = Rt , ( { code : e , layout : t , name : a , primaryKey : n = 0 , style : r = { } , formProps : s = { } , form : i , isPreview : o = ! 1 , className : l , onFinish : u , onValuesChange : c = ( ) => {
2024-11-19 15:49:56 +08:00
} , ... m } ) => {
2024-11-20 15:00:20 +08:00
const { align : h , autoComplete : f , resource : y , items : b , hides : w , rowHeight : T , marginX : W , marginY : q , cols : D , listenChangeFields : H , listenChangeFieldsFunc : I , pk : M , uuid : j } = ln ( e ) , [ z ] = ee . useForm ( i ) , _ = ie ( ( ) => [ { name : "__PK__" , value : M } , { name : "__PROPS__" , value : s } , { name : "__RESOURCE__" , value : y } , { name : "__LAYOUT_KEY__" , value : e } , { name : "__LAYOUT_UUID__" , value : j } , { name : "__PRIMARY_KEY__" , value : n } ] , [ M , e , j , y , n , s ] ) ;
return $ ( ee , { className : l , name : a || e , layout : t || h , fields : _ , form : z , autoComplete : f , style : { ... r , position : "relative" } , onFinish : u , onValuesChange : ( V , v ) => ( ( { changedValues : oe , allValues : O , listenChangeFields : he , listenChangeFieldsFunc : $e , onValuesChange : ct , code : F } ) => {
ct ( oe , O ) , $e && Array . isArray ( he ) && Ne . exec ( $e , { changedValues : oe , allValues : O } , { getFieldValue : z . getFieldValue , setFieldValue : z . setFieldValue , setFieldsValue : z . setFieldsValue , isFieldTouched : z . isFieldTouched , isFieldsTouched : z . isFieldsTouched } ) ;
} ) ( { changedValues : V , allValues : v , listenChangeFields : H , listenChangeFieldsFunc : I , onValuesChange : c , code : e } ) , children : [ d ( qt , { ... m , form : z , code : e , fields : b , cols : D , rowHeight : T , itemMargin : [ W , q ] } ) , w == null ? void 0 : w . map ( ( V ) => {
2024-11-19 15:49:56 +08:00
var v ;
2024-11-20 14:11:37 +08:00
return d ( Xt , { name : V . code , children : d ( gn , { form : z , name : V . code , type : V . type , initialValue : V . initialValue , initialValueLanguage : ( v = V . extras ) == null ? void 0 : v . initialValueLanguage } ) } , JSON . stringify ( V . code ) ) ;
2024-11-19 15:49:56 +08:00
} ) ] } , e ) ;
} ) ;
2024-11-20 14:11:37 +08:00
var qt ;
2024-11-19 15:49:56 +08:00
const ya = ( { $setting : e , $close : t , extras : a , code : n , primaryKey : r , ... s } ) => {
2024-11-20 14:11:37 +08:00
const [ i ] = ee . useForm ( ) , o = dn ( n , r , e ) ;
return x ( ( ) => {
2024-11-19 15:49:56 +08:00
o && i . setFieldsValue ( o ) ;
} , [ o ] ) , d ( K , { actions : $ ( C . Fragment , { children : [ d ( S , { name : "保存" , type : "primary" , widget : ( ) => {
const l = i . getFieldValue ( "__RESOURCE__" ) , { initDataUri : u = ` /api/ ${ n } ` } = e || { } ;
2024-11-20 15:00:20 +08:00
i . validateFields ( ! 0 ) . then ( ( c ) => l ? p . pick ( c , [ l ] ) : c ) . then ( ( c ) => E . post ( r ? ` ${ u } / ${ r } ` : ` ${ u } ` , c ) . msg ( t ) ) . catch ( ( ) => G . error ( "请先完善表单信息" , { duration : 2e3 } ) ) ;
2024-11-19 15:49:56 +08:00
} } ) , d ( S , { name : "取消" , widget : ( ) => t ( ! 1 ) } ) ] } ) , extras : a , children : d ( mn , { form : i , code : n , primaryKey : r , ... s } ) } ) ;
2024-11-20 15:00:20 +08:00
} , hn = ( e , t , a , { isReplaceRouteHistory : n = ! 1 } = { } ) => pe . redirect ( a , t , { replace : n } ) , Ht = ( e , t , a , { status : { loading : n , disabled : r } , setStatus : s } ) => {
2024-11-19 15:49:56 +08:00
const i = { loading : ( o ) => o === void 0 ? n : s ( ( l ) => ( { ... l , loading : o } ) ) , disabled : ( o ) => o === void 0 ? r : s ( ( l ) => ( { ... l , disabled : o } ) ) } ;
2024-11-20 15:00:20 +08:00
return p . isFunction ( a ) ? a . call ( null , { ... t , ... i } ) : p . isString ( a ) && a ? Ne . exec ( a , t , i ) : null ;
} , Jt = ( e , t , a , n , r ) => p . isString ( a ) && a ? X . getWidgetComponent ( a ) . then ( ( { default : s } ) => G . modal ( s , { ... t , $setting : n } , r != null && r . title ? { ... r , title : p . template ( r . title ) ( e ) } : r ) ) . catch ( ( s ) => {
G . error ( a , { content : s . toString ( ) } ) ;
} ) : G . modal ( a , { ... t , $setting : n } , r != null && r . title ? { ... r , title : p . template ( r . title ) ( e ) } : r ) , fn = ( e , t , a , n , r ) => G . modal ( ya , { ... t , $setting : n , code : a } , r != null && r . title ? { ... r , title : p . template ( r . title ) ( e ) } : r ) , yn = ( e , t , a , n , r ) => G . modal ( Et , { base62params : t , $setting : n , listCode : a } , r != null && r . title ? { ... r , title : p . template ( r . title ) ( e ) } : r ) , wn = ( { widget : e , widgetType : t , widgetData : a , widgetProps : n , widgetSetting : r , widgetContainerProps : s } , { onAfterClick : i , onBeforeClick : o } ) => {
const l = Xe ( Oe ) , [ u , c ] = P ( { leading : ! 0 , trailing : ! 1 } ) , m = ie ( ( ) => {
2024-11-19 15:49:56 +08:00
switch ( t ) {
case "redirect" :
return p . partialRight ( hn , e , r ) ;
case "func" :
2024-11-20 14:11:37 +08:00
return p . partialRight ( Ht , ( r == null ? void 0 : r . code ) ? ? e , { status : u , setStatus : c } ) ;
2024-11-19 15:49:56 +08:00
case "fsdpf-component" :
2024-11-20 14:11:37 +08:00
return p . partialRight ( Jt , e , r , s ) ;
2024-11-19 15:49:56 +08:00
case "grid-layout-form" :
return p . partialRight ( fn , e , r , s ) ;
case "data-list" :
return p . partialRight ( yn , e , r , s ) ;
default :
2024-11-20 14:11:37 +08:00
if ( Ot ( e ) || C . isValidElement ( e ) ) return p . partialRight ( Jt , e , r , s ) ;
if ( p . isFunction ( e ) ) return p . partialRight ( Ht , ( r == null ? void 0 : r . code ) || e , { status : u , setStatus : c } ) ;
2024-11-19 15:49:56 +08:00
}
return ( ... h ) => console . error ( "useButton unknown widgetType" , t , ... h ) ;
} , [ e , t ] ) ;
2024-11-20 14:11:37 +08:00
return [ p . debounce ( ( h ) => ( o == null || o ( h ) , Promise . resolve ( ta ( n , h , { list : l } ) ) . then ( ( f ) => m ( h , { ... a , ... f } ) ) . then ( ( f ) => i == null ? void 0 : i ( f ) ) . catch ( console . error ) ) , 300 , { leading : ! 0 , trailing : ! 1 } ) , u ] ;
} , Kt = /* @__PURE__ */ new Set ( ) , St = ( e = [ ] , t = 0 ) => {
2024-11-19 15:49:56 +08:00
const a = e [ t ] ;
2024-11-20 14:11:37 +08:00
if ( a . length && ! Kt . has ( a ) ) {
2024-11-19 15:49:56 +08:00
const n = document . createElement ( "script" ) ;
n . setAttribute ( "src" , a ) , n . setAttribute ( "data-namespace" , a ) , e . length > t + 1 && ( n . onload = ( ) => {
St ( e , t + 1 ) ;
} , n . onerror = ( ) => {
St ( e , t + 1 ) ;
2024-11-20 14:11:37 +08:00
} ) , Kt . add ( a ) , document . body . appendChild ( n ) ;
2024-11-19 15:49:56 +08:00
}
2024-11-20 15:00:20 +08:00
} , Pt = ( { className : e , type : t , style : a = { } , ... n } ) => d ( "span" , { role : "img" , className : R ( "ff-iconfont" , e ) , style : a , ... n , children : d ( "svg" , { style : { width : "1em" , height : "1em" , fill : "currentColor" , overflow : "hidden" } , viewBox : "0 0 1024 1024" , children : d ( "use" , { xlinkHref : ` # ${ t } ` } ) } ) } ) ;
Pt . propTypes = { className : L . string , type : L . string . isRequired , style : L . object } , Pt . init = St ;
2024-11-19 15:49:56 +08:00
const et = ( e ) => function ( { className : t , children : a , name : n , icon : r , type : s = "default" , iconPosition : i = "start" , noAuthType : o , onAfterClick : l , onBeforeClick : u , data : c , loading : m , disabled : h , tooltip : f , popConfirm : y , widget : b , widgetType : w , widgetData : T , widgetProps : W , widgetSetting : q , widgetContainerProps : D , ... H } ) {
2024-11-20 15:00:20 +08:00
const I = { type : "primary" , className : R ( "ff-button" , t ) , iconPosition : i } ;
s === "danger" ? I . danger = ! 0 : s === "default" && ( I . type = s ) , e === "link" || e === "dashed" ? ( I . type = e , s === "default" && ( I . className = R ( I . className , "ff-default" ) ) ) : e !== "circle" && e !== "round" || ( I . shape = e ) , r && ( I . icon = d ( Pt , { type : r } ) ) ;
const [ M , j ] = P ( ! 1 ) , [ z , { disabled : _ , loading : V } ] = wn ( { widget : b , widgetType : w , widgetData : T , widgetProps : W , widgetSetting : q , widgetContainerProps : D } , { onAfterClick : l , onBeforeClick : u } ) ;
return d ( Ea , { okText : "确定" , cancelText : "取消" , ... y || { } , disabled : _ || h , open : M , onOpenChange : ( v ) => {
if ( ! v ) return j ( v ) ;
y ? j ( v ) : z ( c ) ;
2024-11-19 15:49:56 +08:00
} , onConfirm : ( ) => {
z ( c ) ;
} , onClick : ( v ) => {
v . stopPropagation ( ) ;
2024-11-20 15:00:20 +08:00
} , children : d ( Ta , { ... f , title : M ? null : f == null ? void 0 : f . title , trigger : [ "hover" , "click" ] , children : d ( mt , { loading : V || m , disabled : _ || h , ... I , ... H , children : a || n } ) } ) } ) ;
} , S = et ( "default" ) , Cn = et ( "link" ) , bn = et ( "circle" ) , kn = et ( "round" ) , vn = et ( "dashed" ) , _t = ( { data : e , widget : t , widgetType : a = "fsdpf-component" , children : n , widgetData : r , widgetProps : s , widgetSetting : i , widgetContainerProps : o } ) => {
const l = Xe ( Oe ) , [ u , c ] = P ( ! 1 ) , [ m , h ] = P ( "hover" ) , [ f , y ] = P ( { } ) , [ b , w ] = P ( ) , { placement : T , align : W , arrow : q = { pointAtCenter : ! 0 } , getPopupContainer : D , ... H } = o || { } ;
2024-11-20 14:11:37 +08:00
x ( ( ) => {
2024-11-20 15:00:20 +08:00
a == "grid-layout-form" ? w ( C . createElement ( ya , { ... r , $setting : i , code : t } ) ) : a == "data-list" ? w ( C . createElement ( Et , { base62params : e , $setting : i , listCode : t } ) ) : p . isString ( t ) ? X . getWidgetComponent ( t ) . then ( ( { default : j } ) => {
w ( C . createElement ( j , { ... r , $setting : i } ) ) ;
} ) . catch ( ( j ) => w ( j . toString ( ) ) ) : Ot ( t ) ? w ( C . createElement ( t , { ... r , $setting : i } ) ) : C . isValidElement ( t ) && w ( C . cloneElement ( t , { ... r , $setting : i } ) ) ;
2024-11-20 14:11:37 +08:00
} , [ t , a , r ] ) , x ( ( ) => {
Promise . resolve ( ta ( s , e , { list : l } ) ) . then ( y ) ;
2024-11-19 15:49:56 +08:00
} , [ s , e ] ) ;
2024-11-20 15:00:20 +08:00
const I = ( j ) => {
c ( j ) , ! j && h ( "hover" ) ;
} , M = ( j ) => {
2024-11-19 15:49:56 +08:00
c ( ! 0 ) , h ( "click" ) ;
} ;
2024-11-20 15:00:20 +08:00
return d ( Fa , { zIndex : 1080 , placement : T , onPopupClick : M , onClick : M , open : u , align : W , arrow : q , trigger : m , getPopupContainer : D , content : d ( Sn , { ... H , children : b && C . cloneElement ( b , { ... f , $close : ( ) => I ( ! 1 ) } ) } ) , children : n , onOpenChange : I } ) ;
2024-11-19 15:49:56 +08:00
} , Sn = ( { title : e , className : t , children : a , width : n , height : r , ... s } ) => {
2024-11-20 15:00:20 +08:00
const [ i , o ] = P ( { } ) , l = me ( ( m , h ) => o ( ( f ) => ( { ... f , [ m ] : h } ) ) , [ ] ) , u = me ( ( m ) => o ( ( h ) => ( { ... h , [ m ] : void 0 } ) ) , [ ] ) , c = e ? C . createElement ( "div" , { className : "ff-popup-title" } , e ) : i == null ? void 0 : i . title ;
2024-11-19 15:49:56 +08:00
return d ( Qe . Provider , { value : { ele : i , mount : l , unmount : u } , children : $ ( "div" , { className : R ( "ff-popup ff-popover" , t ) , style : { width : n , height : r } , ... s , children : [ $ ( "div" , { className : "ff-popup-header" , children : [ c , i == null ? void 0 : i [ "sub-title" ] ] } ) , a , $ ( "div" , { className : "ff-popup-footer" , children : [ i == null ? void 0 : i . extras , i == null ? void 0 : i . actions ] } ) ] } ) } ) ;
} ;
2024-11-20 15:00:20 +08:00
_t . propTypes = { widgetType : L . oneOf ( [ "fsdpf-component" , "grid-layout-form" , "data-list" ] ) } , S . propTypes = { type : L . oneOf ( [ "primary" , "default" , "danger" , "" ] ) , name : L . string , icon : L . string , iconPosition : L . oneOf ( [ "start" , "end" ] ) , data : L . any , widget : L . any , widgetType : L . oneOf ( [ "destroy" , "redirect" , "func" , "fsdpf-component" , "grid-layout-form" , "grid-layout" , "data-list" ] ) , widgetData : L . object , widgetProps : L . object , widgetSetting : L . object , widgetContainerProps : L . object } , S . Link = Cn , S . Link . defaultProps = S . defaultProps , S . Link . propTypes = S . propTypes , S . Circle = bn , S . Circle . defaultProps = S . defaultProps , S . Circle . propTypes = S . propTypes , S . Round = kn , S . Round . defaultProps = S . defaultProps , S . Round . propTypes = S . propTypes , S . Dashed = vn , S . Dashed . defaultProps = S . defaultProps , S . Dashed . propTypes = S . propTypes , S . Popover = _t ;
const Pn = ( { fields : e , formProps : t , $close : a } ) => {
const [ n ] = ee . useForm ( ) , r = ie ( ( ) => [ { name : "__PROPS__" , value : t } ] , [ t ] ) ;
2024-11-20 14:11:37 +08:00
return d ( K , { actions : $ ( C . Fragment , { children : [ d ( S , { name : "取消" , widget : ( ) => a ( ! 1 ) } ) , d ( S , { name : "确定" , type : "primary" , widget : ( ) => n . validateFields ( ! 0 ) . then ( a ) } ) ] } ) , children : d ( ee , { fields : r , form : n , className : "ff-modal-form" , children : e == null ? void 0 : e . map ( ( { code : s , ... i } ) => d ( pn , { code : s , ... i } , s ) ) } ) } ) ;
2024-11-20 15:00:20 +08:00
} , Nn = ( { className : e , $close : t , children : a , title : n , subTitle : r , actions : s , extras : i , zIndex : o , ... l } ) => $ ( Wa , { ... l , prefixCls : "ff-drawer" , className : R ( "ff-popup" , e ) , maskMotion : { motionAppear : ! 0 , motionName : "mask-motion" } , motion : ( u ) => ( { motionAppear : ! 0 , motionName : ` panel-motion- ${ u } ` } ) , children : [ $ ( "div" , { className : "ff-popup-header" , children : [ d ( "button" , { "aria-label" : "Close" , className : "ff-popup-close" , onClick : l . onClose , children : d ( xt , { type : "close" } ) } ) , n , r ] } ) , d ( "div" , { className : "ff-popup-body" , children : a } ) , $ ( "div" , { className : "ff-popup-footer" , children : [ i , s ] } ) ] } ) , $n = ( { className : e , $close : t , $event : a , children : n , title : r , subTitle : s , actions : i , extras : o , zIndex : l , placement : u , ... c } ) => {
2024-11-19 15:49:56 +08:00
const m = ( a == null ? void 0 : a . pageX ) === void 0 ? { animation : null , maskAnimation : null , mousePosition : { x : null , y : null } } : { animation : "zoom" , maskAnimation : "fade" , mousePosition : { x : a == null ? void 0 : a . pageX , y : a == null ? void 0 : a . pageY } } ;
return d ( Ba , { ... c , ... m , prefixCls : "ff-modal" , modalRender : ( ) => $ ( "div" , { className : R ( "ff-modal-content ff-popup" , e ) , children : [ $ ( "div" , { className : "ff-popup-header" , children : [ d ( "button" , { "aria-label" : "Close" , className : "ff-popup-close" , onClick : c . onClose , children : d ( xt , { type : "close" } ) } ) , r , s ] } ) , d ( "div" , { className : "ff-popup-body" , children : n } ) , $ ( "div" , { className : "ff-popup-footer" , children : [ o , i ] } ) ] } ) } ) ;
} , wa = ( { placement : e , $close : t , $event : a , children : n , title : r , ... s } ) => {
2024-11-20 15:00:20 +08:00
const [ i , o ] = P ( { } ) , [ l , u ] = P ( ! 0 ) , c = me ( ( y , b ) => o ( ( w ) => ( { ... w , [ y ] : b } ) ) , [ ] ) , m = me ( ( y ) => o ( ( b ) => ( { ... b , [ y ] : void 0 } ) ) , [ ] ) ;
2024-11-19 15:49:56 +08:00
let h = { ... s , className : i . rootClassName , title : i . title || r && C . createElement ( "div" , { className : R ( "ff-popup-title" ) } , r ) , subTitle : i [ "sub-title" ] , actions : i . actions , extras : i . extras , children : n , $close : t , $event : a , onClose : ( ) => u ( ! 1 ) } ;
const f = ( ) => {
t ( ! 1 ) ;
} ;
2024-11-20 15:00:20 +08:00
return d ( Qe . Provider , { value : { ele : i , mount : c , unmount : m } , children : e && e !== "center" ? d ( Nn , { ... h , placement : e , open : l , afterOpenChange : ( y ) => ! y && f ( ) } ) : d ( $n , { ... h , visible : l , afterClose : f } ) } ) ;
2024-11-19 15:49:56 +08:00
} ;
wa . propTypes = { placement : L . oneOf ( [ "center" , "left" , "top" , "right" , "bottom" ] ) } ;
const J = ( ) => {
const [ e , t ] = Ma ( { maxCount : 6 , motion : { motionName : "ff-notification-fade" , motionAppear : ! 0 , motionEnter : ! 0 , motionLeave : ! 0 , onLeaveStart : ( s ) => {
const { offsetHeight : i } = s ;
return { height : i } ;
} , onLeaveActive : ( ) => ( { height : 0 , opacity : 0 , margin : 0 } ) } , prefixCls : "ff-notification" } ) , [ , a ] = C . useReducer ( ( s ) => s + 1 , 0 ) ;
2024-11-20 14:11:37 +08:00
x ( ( ) => {
2024-11-19 15:49:56 +08:00
J . $onClick = n , J . $queue . forEach ( ( [ s , i , o ] , l , u ) => {
r ( [ i , o ] , ... s ) , delete u [ l ] ;
} ) ;
} , [ ] ) ;
const n = ( s , i = { } , o = { } ) => new Promise ( ( l , u ) => r ( [ l , u ] , s , i , o ) ) , r = ( [ s , i ] , o , l = { } , u = { } ) => {
const c = J . $index ++ , m = ( h ) => ( ( f , y ) => ( J . $popups . delete ( f ) , a ( ) , y == null ? void 0 : y ( ) ) ) ( c , ( ) => s ( h ) ) ;
2024-11-20 14:11:37 +08:00
if ( o === ea ) return e . open ( { ... u , key : c , content : C . createElement ( o , { ... l , $close : ( ) => e . close ( c ) } ) } ) ;
2024-11-20 15:00:20 +08:00
J . $popups . set ( c , C . createElement ( wa , { zIndex : c , maskClosable : ! 1 , $event : l == null ? void 0 : l . $event , ... u , key : c , $close : m } , C . isValidElement ( o ) ? C . cloneElement ( o , { ... l , $close : m } ) : o != null && o . name || jt . isForwardRef ( o ) || ( o == null ? void 0 : o . $$typeof ) === jt . ForwardRef ? C . createElement ( o , { ... l , $close : m } ) : o ) ) , a ( ) ;
2024-11-19 15:49:56 +08:00
} ;
return $ ( C . Fragment , { children : [ Array . from ( J . $popups ) . map ( ( [ s , i ] ) => i ) , t ] } ) ;
} ;
J . $popups = /* @__PURE__ */ new Map ( ) , J . $index = 0 , J . $queue = [ ] , J . $onClick = ( ... e ) => new Promise ( ( t , a ) => {
J . $queue . push ( [ e , t , a ] ) ;
} ) ;
2024-11-20 15:00:20 +08:00
const Gt = ( e , t , a = { } ) => J . $onClick ( e , t , a ) , gt = ( e , { showProgress : t , duration : a , ... n } = { duration : 1.5 } ) => J . $onClick ( ea , { content : e , ... n } , { showProgress : t , duration : a } ) , G = { modal : Gt , confirm : ( e , t = { } ) => J . $onClick ( Ua , { content : e , ... t } , { placement : "center" } ) , form : ( e , t = { } , a = { } ) => Gt ( Pn , { formProps : a , fields : e } , { placement : "center" , ... t } ) . then ( ( n ) => {
2024-11-19 15:49:56 +08:00
if ( n === ! 1 ) throw ! 1 ;
return n ;
} ) , notification : gt , success : ( e , t = { duration : 1.5 } ) => gt ( e , { ... t , className : "ff-notification-success" , icon : "check" } ) , error : ( e , t = { duration : 1.5 } ) => gt ( e , { ... t , className : "ff-notification-error" , icon : "close" } ) } ;
Be . configure ( { showSpinner : ! 1 } ) , Ue . interceptors . request . use ( ( e ) => {
e . headers . Platform = "web" , e . headers . SaaS = window . localStorage . getItem ( "SaaS" ) ;
const t = window . localStorage . getItem ( nt ) ;
return e . headers . Authorization = t ? ` Bearer ${ t } ` : void 0 , Be . inc ( ) , e ;
} , ( e ) => ( Be . done ( ) , Promise . reject ( { code : - 1 , msg : e } ) ) ) , Ue . interceptors . response . use ( ( { data : e , headers : t } ) => ( Be . done ( ) , { ... e , res : t == null ? void 0 : t . res } ) , function ( e ) {
return Be . done ( ) , Promise . reject ( e . message ) ;
2024-11-20 15:00:20 +08:00
} ) , window . addEventListener ( "unhandledrejection" , ht . onUnhandledRejection ) , ht . onMsg = ( e , t ) => G [ [ 0 , 1 ] . includes ( e ) ? "success" : "error" ] ( t ) . then ( ( ) => e === 20300 && pe . redirect ( De . get ( "Common.WEBSITE_LOGIN_PAGE" ) ) ) ;
const Nt = { appUrl : "" , init : ( e , t , a ) => {
Nt . appUrl = a , Ue . defaults . baseURL = a , Ue . defaults . timeout = 15e3 , Object . assign ( Nt , new ht ( e , t , Ue ) ) ;
} } , E = Nt ;
2024-11-20 14:11:37 +08:00
class Lt extends Error {
2024-11-19 15:49:56 +08:00
constructor ( t , a ) {
2024-11-20 14:11:37 +08:00
super ( a ) , Error . captureStackTrace && Error . captureStackTrace ( this , Lt ) , ! a instanceof qe && ( this . name = ` ${ t } Error Runtime ` ) ;
2024-11-19 15:49:56 +08:00
}
}
class qe extends Error {
constructor ( t , ... a ) {
super ( ... a ) , Error . captureStackTrace && Error . captureStackTrace ( this , qe ) , this . name = ` ${ t } Not Found ` ;
}
}
const pt = "mine" , nt = "token" ;
2024-11-20 15:00:20 +08:00
var Pe , We ;
2024-11-20 14:11:37 +08:00
const se = class se {
2024-11-19 15:49:56 +08:00
constructor ( ) {
2024-11-20 15:00:20 +08:00
N ( this , We , /* @__PURE__ */ new Map ( ) ) ;
2024-11-20 14:11:37 +08:00
k ( this , "setVendor" , ( t , a ) => g ( this , We ) . set ( t , new Qt ( a , async ( n , r ) => {
2024-11-19 15:49:56 +08:00
var i , o ;
if ( ! ( n != null && n . default ) ) throw "@pkg not found" ;
let s = ( ) => r ;
switch ( "function" ) {
case typeof ( s = ( i = n . default ) == null ? void 0 : i [ ` ./ ${ r } /index.jsx ` ] ) :
case typeof ( s = ( o = n . default ) == null ? void 0 : o [ ` ./ ${ r } /index.js ` ] ) :
return s ( ) ;
}
throw new qe ( r ) ;
} ) ) ) ;
k ( this , "getWidgetComponent" , async ( t ) => {
if ( ! t ) throw "getWidgetComponent widget is required" ;
if ( t != null && t . startsWith ( "blob:" ) || t != null && t . startsWith ( "http:" ) || t != null && t . startsWith ( "https:" ) ) return await import ( t ) ;
const [ , a ] = t == null ? void 0 : t . split ( "@pkg/" ) ;
if ( ! a ) throw new qe ( t ) ;
try {
2024-11-20 14:11:37 +08:00
return g ( this , We ) . has ( "pkg" ) ? await g ( this , We ) . get ( "pkg" ) . get ( a ) : await import ( ` ${ E . appUrl } /api/pkg-import/web?name= ${ t } ` ) ;
2024-11-19 15:49:56 +08:00
} catch ( n ) {
2024-11-20 14:11:37 +08:00
throw new Lt ( t , n ) ;
2024-11-19 15:49:56 +08:00
}
} ) ;
2024-11-20 14:11:37 +08:00
k ( this , "getRoutes" , ( ) => E . get ( "/api/my-router" ) . then ( ( t ) => [ ... t , { uuid : "data-list-setting" , isLayout : ! 0 , uri : "/data-list-setting/:category/:categoryUuid" , type : "fsdpf-component" , component : "@pkg/ff-design/components/DataListSetting" , extra : { layout : "@pkg/ff-design/frameworks/DesignTheme" } } , { uuid : "grid-layout-setting" , isLayout : ! 0 , uri : "/grid-layout-setting/:category/:categoryUuid" , type : "fsdpf-component" , component : "@pkg/ff-design/components/GridLayoutSetting" , extra : { layout : "@pkg/ff-design/frameworks/DesignTheme" } } , { uuid : "grid-layout-form-setting" , isLayout : ! 0 , uri : "/grid-layout-form-setting/:category/:categoryUuid" , type : "fsdpf-component" , component : "@pkg/ff-design/components/GridLayoutFormSetting" , extra : { layout : "@pkg/ff-design/frameworks/DesignTheme" } } , { uuid : "resource-api-setting" , isLayout : ! 0 , uri : "/resource-api-setting/:category/:categoryUuid" , type : "fsdpf-component" , component : "@pkg/ff-design/components/ResourceApiSetting" , extra : { layout : "@pkg/ff-design/frameworks/DesignTheme" } } , { uuid : "charts-setting" , isLayout : ! 0 , uri : "/resource-api-setting/:category/:categoryUuid" , type : "fsdpf-component" , component : "@pkg/ff-design/components/ChartsSetting" , extra : { layout : "@pkg/ff-design/frameworks/DesignTheme" } } , { uuid : "fsm-setting" , isLayout : ! 0 , uri : "/fsm-setting/:category/:categoryUuid" , type : "fsdpf-component" , component : "@pkg/ff-design/components/FsmSetting" , extra : { layout : "@pkg/ff-design/frameworks/DesignTheme" } } , { uuid : "component-setting" , isLayout : ! 0 , uri : "/component-setting/:category/:categoryUuid" , type : "fsdpf-component" , component : "@pkg/ff-design/components/ComponentSetting" , extra : { layout : "@pkg/ff-design/frameworks/DesignTheme" } } , { uuid : "login" , uri : "/login" , name : "登录" , type : "fsdpf-component" , isLogin : ! 1 , component : "@pkg/ff/components/Login" } , { uuid : "not-found" , uri : "*" , name : "Not Found" , type : "fsdpf-component" , isLogin : ! 1 , component : "@pkg/ff/components/NotFound" } ] . map ( ( { uuid : a , ... n } ) => [ a , { uuid : a , ... n } ] ) ) . then ( ( t ) => new Map ( t ) ) ) ;
k ( this , "getMenus" , ( ) => E . get ( "/api/my-menu" ) ) ;
k ( this , "getConfigure" , ( ) => E . get ( "api/init-configure" ) ) ;
k ( this , "getWidgetOperationAuth" , ( ) => E . get ( "/api/init-widget-operation-auth" ) . then ( ( t ) => t . reduce ( ( a , { uuid : n , auth : r } ) => [ ... a , [ n , r ] ] , [ ] ) ) ) ;
k ( this , "getPhoneNumber" , ( t ) => E . get ( ` /api/user-wx-phone-number/ ${ t } ` ) ) ;
2024-11-19 15:49:56 +08:00
k ( this , "getUserToken" , ( ) => {
const t = window . localStorage . getItem ( nt ) ;
if ( ! t ) return "" ;
const a = t . split ( "." ) ;
if ( ! Array . isArray ( a ) || a . length !== 3 ) throw "登录令牌无效!" ;
const { iat : n } = JSON . parse ( window . atob ( a [ 1 ] ) ) ;
if ( Math . floor ( ( /* @__PURE__ */ new Date ( ) ) . getTime ( ) / 1e3 ) - n > 2592e3 ) throw "登录令牌已过期, 请重新登录!" ;
return t ;
} ) ;
k ( this , "checkUserToken" , ( ) => {
try {
return ! ! this . getUserToken ( ) ;
} catch {
return ! 1 ;
}
} ) ;
k ( this , "getUserInfo" , ( t = ! 0 ) => {
var a ;
try {
const n = this . getUserToken ( ) ;
if ( ! n ) return Promise . resolve ( null ) ;
2024-11-20 14:11:37 +08:00
const { iat : r } = JSON . parse ( window . atob ( ( a = n == null ? void 0 : n . split ( "." ) ) == null ? void 0 : a [ 1 ] ) ) , { iat : s , ... i } = E . decode ( window . localStorage . getItem ( pt ) || "" , { } ) ;
return s === r ? Promise . resolve ( i ) : E . get ( "/api/mine-info" ) . then ( ( { User : o = null } ) => ( window . localStorage . setItem ( pt , E . encode ( { ... o , iat : r } ) ) , o ) ) ;
2024-11-19 15:49:56 +08:00
} catch ( n ) {
console . error ( n ) , t && Popup . error ( "请登录" ) . then ( logout ) ;
}
return Promise . resolve ( null ) ;
} ) ;
2024-11-20 14:11:37 +08:00
k ( this , "login" , ( t , a , n = { } ) => E . post ( "/api/user-token" , { username : t , passwd : za . hash ( a ) , platform : "web" , ... n } ) . then ( ( { token : r } ) => ( window . localStorage . setItem ( nt , r ) , r ) ) ) ;
2024-11-19 15:49:56 +08:00
k ( this , "logout" , ( ) => {
window . localStorage . removeItem ( pt ) , window . localStorage . removeItem ( nt ) ;
} ) ;
2024-11-20 15:00:20 +08:00
if ( g ( se , Pe ) ) return g ( se , Pe ) ;
2024-11-19 15:49:56 +08:00
}
} ;
2024-11-20 15:00:20 +08:00
Pe = new WeakMap ( ) , We = new WeakMap ( ) , N ( se , Pe , null ) , k ( se , "getInstance" , ( ) => ( g ( se , Pe ) || B ( se , Pe , new se ( ) ) , g ( se , Pe ) ) ) ;
2024-11-20 14:11:37 +08:00
let $t = se ;
2024-11-19 15:49:56 +08:00
const X = $t . getInstance ( ) , xn = C . createContext ( { user : { } , initUser : ( ) => {
} , initUserComplete : ! 1 } ) , En = C . createContext ( { set : ( ) => {
} , get : ( ) => {
} , assign : ( ) => {
} , currentRoute : ( ) => {
2024-11-20 14:11:37 +08:00
} } ) , Ot = ( e ) => ! ! ( e != null && e . name ) && ( e . prototype instanceof C . Component || /^[A-Z]/ . test ( e . name ) ) , Tn = ( e , t ) => {
2024-11-19 15:49:56 +08:00
if ( ! e || typeof window > "u" ) return ;
let a = document . querySelector ( ` style[ff-style-token=" ${ t } "] ` ) ;
return a ? ( a . innerHTML = e , e ) : ( a = document . createElement ( "style" ) , a . setAttribute ( "ff-style-token" , t ) , a . setAttribute ( "type" , "text/css" ) , a . innerHTML = e , document . head . appendChild ( a ) , e ) ;
2024-11-20 15:00:20 +08:00
} , Fn = Object . freeze ( Object . defineProperty ( { _ _proto _ _ : null , AppContext : xn , AppGlobalParamsContext : En , cache : Qt , configure : De , default : X , func : Ne , http : E , insertStyle : Tn , isReactComponent : Ot , route : pe } , Symbol . toStringTag , { value : "Module" } ) ) , Rn = ( e , t , a = "children" ) => {
2024-11-19 15:49:56 +08:00
if ( p . isEmpty ( e ) ) return { } ;
const n = p . find ( e , [ "value" , t ] ) ;
if ( ! p . isEmpty ( n ) ) return n ;
const r = e . length ;
for ( let s = 0 ; s < r ; s ++ ) {
const { [ a ] : i } = e [ s ] , o = Rn ( i , t , a ) ;
if ( ! p . isEmpty ( o ) ) return o ;
}
return { } ;
} ;
export {
2024-11-20 14:11:37 +08:00
Kn as $ ,
2024-11-19 15:49:56 +08:00
tr as A ,
Ze as B ,
2024-11-20 14:11:37 +08:00
Ft as C ,
2024-11-19 15:49:56 +08:00
wt as D ,
ar as E ,
nr as F ,
Qn as G ,
Qa as H ,
mn as I ,
2024-11-20 14:11:37 +08:00
Rt as J ,
2024-11-19 15:49:56 +08:00
pn as K ,
ya as L ,
ln as M ,
cn as N ,
dn as O ,
un as P ,
2024-11-20 14:11:37 +08:00
rr as Q ,
sa as R ,
2024-11-20 15:00:20 +08:00
Pt as S ,
2024-11-20 14:11:37 +08:00
S as T ,
Da as U ,
wn as V ,
K as W ,
Qe as X ,
Zt as Y ,
J as Z ,
2024-11-20 15:00:20 +08:00
G as _ ,
2024-11-20 14:11:37 +08:00
ia as a ,
2024-11-20 15:00:20 +08:00
_n as a0 ,
Gn as a1 ,
2024-11-20 14:11:37 +08:00
X as a2 ,
Ot as a3 ,
Tn as a4 ,
E as a5 ,
Qt as a6 ,
De as a7 ,
2024-11-20 15:00:20 +08:00
Ne as a8 ,
pe as a9 ,
2024-11-20 14:11:37 +08:00
xn as aa ,
En as ab ,
Rn as ac ,
da as b ,
pa as c ,
2024-11-19 15:49:56 +08:00
Zn as d ,
2024-11-20 14:11:37 +08:00
ga as e ,
2024-11-20 15:00:20 +08:00
_a as f ,
2024-11-20 14:11:37 +08:00
ta as g ,
2024-11-19 15:49:56 +08:00
Tt as h ,
2024-11-20 14:11:37 +08:00
oa as i ,
la as j ,
ca as k ,
2024-11-19 15:49:56 +08:00
Et as l ,
Oe as m ,
Xa as n ,
an as o ,
Ha as p ,
Ka as q ,
ut as r ,
qa as s ,
Z as t ,
2024-11-20 14:11:37 +08:00
ua as u ,
Yn as v ,
2024-11-19 15:49:56 +08:00
Xn as w ,
Ct as x ,
2024-11-20 14:11:37 +08:00
ma as y ,
2024-11-19 15:49:56 +08:00
er as z
} ;