2025-01-02 19:14:16 +08:00
var Pi = Object . defineProperty ;
2025-01-07 09:40:41 +08:00
var Rt = ( e ) => {
2024-12-26 16:06:19 +08:00
throw TypeError ( e ) ;
} ;
2025-01-07 09:40:41 +08:00
var Ti = ( e , t , i ) => t in e ? Pi ( e , t , { enumerable : ! 0 , configurable : ! 0 , writable : ! 0 , value : i } ) : e [ t ] = i ;
var S = ( e , t , i ) => Ti ( e , typeof t != "symbol" ? t + "" : t , i ) , Ot = ( e , t , i ) => t . has ( e ) || Rt ( "Cannot " + i ) ;
var y = ( e , t , i ) => ( Ot ( e , t , "read from private field" ) , i ? i . call ( e ) : t . get ( e ) ) , R = ( e , t , i ) => t . has ( e ) ? Rt ( "Cannot add the same private member more than once" ) : t instanceof WeakSet ? t . add ( e ) : t . set ( e , i ) , W = ( e , t , i , n ) => ( Ot ( e , t , "write to private field" ) , n ? n . call ( e , i ) : t . set ( e , i ) , i ) ;
2024-12-26 16:06:19 +08:00
var Lt = ( e , t , i , n ) => ( {
set _ ( r ) {
2025-01-07 09:40:41 +08:00
W ( e , t , r , i ) ;
2024-12-26 16:06:19 +08:00
} ,
get _ ( ) {
return y ( e , t , n ) ;
}
} ) ;
2025-01-07 09:40:41 +08:00
import { jsx as g , jsxs as L } from "react/jsx-runtime" ;
import k , { useEffect as A , useState as F , useCallback as Y , useMemo as H , useRef as U , useContext as le , useId as Le , isValidElement as Ni , useLayoutEffect as $i } from "react" ;
2024-12-26 16:06:19 +08:00
import c from "lodash" ;
2025-01-02 19:14:16 +08:00
import Jt from "immutability-helper" ;
2025-01-07 09:40:41 +08:00
import { Form as Ge , Input as Fi , Button as Xe , Pagination as Ei , Tree as Ri , Breadcrumb as Oi , Table as Li , Empty as Ai , Popconfirm as ji , Tooltip as Vi , Popover as Ii } from "antd" ;
2025-01-02 19:14:16 +08:00
import { useMergedState as Mi } from "rc-util" ;
2024-12-26 16:06:19 +08:00
import I from "classnames" ;
2025-01-07 09:40:41 +08:00
import ee , { FieldContext as _t , Field as Gt } from "rc-field-form" ;
2025-01-02 19:14:16 +08:00
import { useParams as zi , generatePath as Di , createBrowserRouter as Bi , useInRouterContext as qi , Navigate as Ui } from "react-router-dom" ;
2024-12-26 16:06:19 +08:00
import b from "prop-types" ;
2025-01-02 19:14:16 +08:00
import * as At from "react-is" ;
import { useNotification as Wi } from "rc-notification" ;
2025-01-07 09:40:41 +08:00
import { N as Re , a as Oe , P as gt , S as Hi } from "./vender-C0IfHU5B.js" ;
2024-12-26 16:06:19 +08:00
import "rc-util/lib/hooks/useMergedState" ;
2025-01-02 19:14:16 +08:00
import Ki from "rc-drawer" ;
import Ji from "rc-dialog" ;
2025-01-07 09:40:41 +08:00
var Te , Ve , Ne , ce , ke , xe ;
2025-01-02 19:14:16 +08:00
class Yt {
2024-12-26 16:06:19 +08:00
constructor ( t , i ) {
2025-01-07 09:40:41 +08:00
R ( this , Te , /* @__PURE__ */ new Map ( ) ) ;
R ( this , Ve , ! 0 ) ;
R ( this , Ne , [ ] ) ;
R ( this , ce ) ;
R ( this , ke , ( ) => y ( this , ce ) ) ;
R ( this , xe , ( ) => Promise . resolve ( ) ) ;
2024-12-26 16:06:19 +08:00
S ( this , "get" , ( ... t ) => new Promise ( ( i , n ) => {
const r = JSON . stringify ( t ) ;
2025-01-07 09:40:41 +08:00
if ( y ( this , Te ) . has ( r ) ) return i ( y ( this , xe ) . call ( this , y ( this , ce ) , ... t ) ) ;
if ( y ( this , ce ) === void 0 ) y ( this , Ne ) . push ( [ t , i , n ] ) , y ( this , Ve ) && ( W ( this , Ve , ! 1 ) , Promise . resolve ( typeof y ( this , ke ) == "function" ? y ( this , ke ) . call ( this ) : y ( this , ke ) ) . then ( ( a ) => W ( this , ce , a || null ) ) . finally ( ( ) => {
y ( this , Ne ) . forEach ( ( [ a , o , s ] ) => {
2024-12-26 16:06:19 +08:00
try {
const l = y ( this , xe ) . call ( this , y ( this , ce ) , ... a ) ;
2025-01-07 09:40:41 +08:00
y ( this , Te ) . set ( JSON . stringify ( a ) , l ) , o ( l ) ;
2024-12-26 16:06:19 +08:00
} catch ( l ) {
2025-01-02 19:14:16 +08:00
s ( l ) ;
2024-12-26 16:06:19 +08:00
}
2025-01-07 09:40:41 +08:00
} ) , y ( this , Ne ) . length = 0 ;
2024-12-26 16:06:19 +08:00
} ) ) ;
else {
const a = y ( this , xe ) . call ( this , y ( this , ce ) , ... t ) ;
2025-01-07 09:40:41 +08:00
y ( this , Te ) . set ( r , a ) , i ( a ) ;
2024-12-26 16:06:19 +08:00
}
} ) ) ;
2025-01-07 09:40:41 +08:00
W ( this , xe , i ) , W ( this , ke , t ) ;
2024-12-26 16:06:19 +08:00
}
}
2025-01-07 09:40:41 +08:00
Te = new WeakMap ( ) , Ve = new WeakMap ( ) , Ne = new WeakMap ( ) , ce = new WeakMap ( ) , ke = new WeakMap ( ) , xe = new WeakMap ( ) ;
const ar = ( ) => g ( "div" , { children : "Empty" } ) , qe = k . createContext ( { ele : { } , mount : ( ) => {
2024-12-26 16:06:19 +08:00
} , unmount : ( ) => {
2025-01-02 19:14:16 +08:00
} } ) , G = ( { rootClassName : e , className : t , children : i , actions : n , title : r , subTitle : a , extras : o , style : s = { } } ) => {
2024-12-26 17:33:07 +08:00
const { mount : l , unmount : u } = k . useContext ( qe ) ;
2025-01-07 09:40:41 +08:00
return n && G . Action ( { children : n } ) , r && G . Title ( { children : r } ) , a && G . SubTitle ( { children : a } ) , o && G . Extra ( { children : o } ) , A ( ( ) => ( l ( "rootClassName" , e ) , ( ) => u ( e ) ) , [ e ] ) , g ( "div" , { className : I ( "ff-container" , t ) , style : s , children : i } ) ;
2024-12-26 16:06:19 +08:00
} , _e = ( e ) => ( { children : t , className : i } ) => {
2024-12-26 17:33:07 +08:00
const { mount : n , unmount : r } = k . useContext ( qe ) ;
2025-01-07 09:40:41 +08:00
return A ( ( ) => ( n ( e , k . createElement ( "div" , { key : ` ff- ${ e } ` , className : I ( ` ff-popup- ${ e } ` , i ) } , t ) ) , ( ) => r ( e ) ) , [ i , t ] ) , null ;
2024-12-26 16:06:19 +08:00
} ;
G . Action = _e ( "actions" ) , G . Title = _e ( "title" ) , G . SubTitle = _e ( "sub-title" ) , G . Extra = _e ( "extras" ) , G . propTypes = { className : b . string , style : b . object , title : b . any , subTitle : b . any , actions : b . any , extras : b . any } ;
2025-01-07 09:40:41 +08:00
const sr = ( ) => g ( G , { className : "ff-loading" , children : L ( "div" , { className : "loader" , children : [ L ( "div" , { className : "square" , children : [ g ( "span" , { } ) , g ( "span" , { } ) , g ( "span" , { } ) ] } ) , L ( "div" , { className : "square" , children : [ g ( "span" , { } ) , g ( "span" , { } ) , g ( "span" , { } ) ] } ) , L ( "div" , { className : "square" , children : [ g ( "span" , { } ) , g ( "span" , { } ) , g ( "span" , { } ) ] } ) , L ( "div" , { className : "square" , children : [ g ( "span" , { } ) , g ( "span" , { } ) , g ( "span" , { } ) ] } ) ] } ) } ) , or = ( ) => g ( "div" , { children : "NotFound" } ) , Xt = ( { children : e } ) => {
const [ t , i ] = F ( { } ) , n = Y ( ( a , o ) => i ( ( s ) => ( { ... s , [ a ] : o } ) ) , [ ] ) , r = Y ( ( a ) => i ( ( o ) => ( { ... o , [ a ] : void 0 } ) ) , [ ] ) ;
return typeof ( e == null ? void 0 : e . type ) == "string" ? e : g ( qe . Provider , { value : { ele : t , mount : n , unmount : r } , children : k . cloneElement ( e , { className : t . rootClassName , title : t . title , subTitle : t [ "sub-title" ] , actions : t . actions , extras : t . extras } ) } ) ;
2024-12-26 16:06:19 +08:00
} ;
2025-01-02 19:14:16 +08:00
Xt . propTypes = { children : b . element . isRequired } ;
2025-01-07 09:40:41 +08:00
const jt = { 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" ] } , vt = ( { type : e , props : t } ) => g ( "i" , { ... t , children : g ( "svg" , { viewBox : "0 0 1024 1024" , width : "1em" , height : "1em" , fill : "currentColor" , children : ( jt [ e ] || jt . info ) . map ( ( i , n ) => g ( "path" , { d : i } , n ) ) } ) } ) , Qt = ( { className : e , content : t , icon : i , $close : n } ) => L ( k . Fragment , { children : [ i && g ( "div" , { className : I ( "ff-notification-icon" , e ) , children : g ( vt , { type : i } ) } ) , t ] } ) , _i = ( { } ) => g ( G , { children : "Confirm" } ) ;
var ge , $e ;
const ie = class ie {
2024-12-26 16:06:19 +08:00
constructor ( ) {
2025-01-07 09:40:41 +08:00
R ( this , $e , /* @__PURE__ */ new Map ( ) ) ;
S ( this , "init" , ( t ) => W ( this , $e , new Map ( t ) ) ) ;
S ( this , "check" , ( t ) => ! y ( this , $e ) . has ( t ) || y ( this , $e ) . get ( t ) ) ;
if ( y ( ie , ge ) ) return y ( ie , ge ) ;
2024-12-26 16:06:19 +08:00
}
} ;
2025-01-07 09:40:41 +08:00
ge = new WeakMap ( ) , $e = new WeakMap ( ) , R ( ie , ge , null ) , S ( ie , "getInstance" , ( ) => ( y ( ie , ge ) || W ( ie , ge , new ie ( ) ) , y ( ie , ge ) ) ) ;
let pt = ie ;
2025-01-02 19:14:16 +08:00
const Gi = pt . getInstance ( ) , Yi = ( e , t , i = "children" ) => {
2024-12-26 16:06:19 +08:00
if ( c . isEmpty ( e ) ) return { } ;
const n = c . find ( e , [ "value" , t ] ) ;
if ( ! c . isEmpty ( n ) ) return n ;
const r = e . length ;
for ( let a = 0 ; a < r ; a ++ ) {
2025-01-02 19:14:16 +08:00
const { [ i ] : o } = e [ a ] , s = Yi ( o , t , i ) ;
if ( ! c . isEmpty ( s ) ) return s ;
2024-12-26 16:06:19 +08:00
}
return { } ;
2025-01-02 19:14:16 +08:00
} , Zt = ( e = "Input" , t = "@pkg/ff/grid-layout-forms" ) => e != null && e . startsWith ( "@" ) || e != null && e . startsWith ( "blob:" ) ? e : ` ${ t } / ${ e } ` ;
2024-12-26 16:35:36 +08:00
var pe , Ie ;
2025-01-07 09:40:41 +08:00
const ne = class ne {
2024-12-26 16:06:19 +08:00
constructor ( ) {
2025-01-07 09:40:41 +08:00
R ( this , Ie , null ) ;
S ( this , "init" , ( t ) => W ( this , Ie , t ) ) ;
2024-12-26 16:06:19 +08:00
S ( this , "get" , ( t , i ) => c . get ( y ( this , Ie ) , t , i ) ) ;
2025-01-07 09:40:41 +08:00
if ( y ( ne , pe ) ) return y ( ne , pe ) ;
2024-12-26 16:06:19 +08:00
}
} ;
2025-01-07 09:40:41 +08:00
pe = new WeakMap ( ) , Ie = new WeakMap ( ) , R ( ne , pe , null ) , S ( ne , "getInstance" , ( ) => ( y ( ne , pe ) || W ( ne , pe , new ne ( ) ) , y ( ne , pe ) ) ) ;
let mt = ne ;
2025-01-02 19:14:16 +08:00
const Ae = mt . getInstance ( ) , Vt = { 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-12-26 16:06:19 +08:00
switch ( ` ${ e } ` . toLowerCase ( ) ) {
case "0" :
case "false" :
case "[]" :
case "{}" :
return ! 1 ;
}
return ! ! e ;
2025-01-07 09:40:41 +08:00
} , 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 ) => {
2024-12-26 16:06:19 +08:00
let i = "string" ;
i = Array . isArray ( e ) ? "array" : typeof e , c . isObject ( e ) && ( i = "json" ) ;
const n = ` ${ i } 2 ${ t } ` ;
return Reflect . has ( Vt , n ) ? Vt [ n ] ( e ) : e ;
2025-01-02 19:14:16 +08:00
} , ei = ( e = { } , t = { } , i = { } , n = "" ) => ti ( e , ( r , a ) => a === "type" && r === "code" ) ? ii ( e , t , i , n ) : ni ( e , t , n ) , ti = ( e , t = ( ) => ! 1 ) => c . some ( e , ( i ) => ! ! c . some ( i , t ) || ( c . isEmpty ( i ) || ! c . isPlainObject ( i ) && ! c . isArray ( i ) ? void 0 : ti ( i , t ) ) ) , ii = async ( e = { } , t = { } , i = { } , n = "" ) => {
2024-12-26 16:06:19 +08:00
let r = /* @__PURE__ */ Object . create ( null ) ;
for ( let a in e ) {
2025-01-02 19:14:16 +08:00
let o ;
2024-12-26 16:06:19 +08:00
if ( Reflect . has ( e [ a ] , "type" ) && [ "code" , "field" , "router" , "query" , "string" ] . includes ( e [ a ] . type ) ) {
2025-01-02 19:14:16 +08:00
const { type : s , value : l = "" , default : u = n } = e [ a ] ;
switch ( s ) {
2024-12-26 16:06:19 +08:00
case "code" :
2025-01-02 19:14:16 +08:00
o = await Ce . exec ( l , t , i ) ;
2024-12-26 16:06:19 +08:00
break ;
case "field" :
2025-01-02 19:14:16 +08:00
o = c . get ( t , l ) ? ? c . get ( t , l . substring ( l . indexOf ( "." ) + 1 ) ) ;
2024-12-26 16:06:19 +08:00
break ;
case "router" :
case "query" :
2025-01-02 19:14:16 +08:00
o = ue . getPageParams ( l ) ;
2024-12-26 16:06:19 +08:00
break ;
case "string" :
2025-01-02 19:14:16 +08:00
o = l ;
2024-12-26 16:06:19 +08:00
}
2025-01-02 19:14:16 +08:00
o ? ? ( o = u ) ;
} else o = await ii ( e [ a ] , t , i , n ) ;
c . set ( r , a , o ) ;
2024-12-26 16:06:19 +08:00
}
return r ;
2025-01-02 19:14:16 +08:00
} , ni = ( e = { } , t = { } , i = "" ) => Object . keys ( e || { } ) . reduce ( ( n , r ) => {
2024-12-26 16:06:19 +08:00
if ( c . isPlainObject ( e [ r ] ) ) {
let a ;
if ( Reflect . has ( e [ r ] , "type" ) && [ "field" , "router" , "query" , "string" ] . includes ( e [ r ] . type ) ) {
2025-01-02 19:14:16 +08:00
const { type : o , value : s = "" , default : l = i } = e [ r ] ;
switch ( o ) {
2024-12-26 16:06:19 +08:00
case "field" :
2025-01-02 19:14:16 +08:00
a = c . get ( t , s ) ? ? c . get ( t , s . substring ( s . indexOf ( "." ) + 1 ) ) ;
2024-12-26 16:06:19 +08:00
break ;
case "router" :
case "query" :
2025-01-02 19:14:16 +08:00
a = ue . getPageParams ( s ) ;
2024-12-26 16:06:19 +08:00
break ;
case "string" :
2025-01-02 19:14:16 +08:00
a = s ;
2024-12-26 16:06:19 +08:00
}
a ? ? ( a = l ) ;
2025-01-02 19:14:16 +08:00
} else a = ni ( e [ r ] , t , i ) ;
2024-12-26 16:06:19 +08:00
c . set ( n , r , a ) ;
}
return n ;
2025-01-02 19:14:16 +08:00
} , { } ) , ct = ( e , t ) => e && typeof e == "object" ? Array . isArray ( e ) ? e . map ( ( i ) => ct ( i , t ) ) : Object . keys ( e ) . reduce ( ( i , n ) => ( t [ n ] ? i [ t [ n ] ] = ct ( e [ n ] , t ) : i [ n ] = ct ( e [ n ] , t ) , i ) , { } ) : e , lr = ( ) => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx" . replace ( /[xy]/g , ( e ) => {
2024-12-26 16:06:19 +08:00
const t = 16 * Math . random ( ) | 0 ;
return ( e === "x" ? t : 3 & t | 8 ) . toString ( 16 ) ;
2025-01-02 19:14:16 +08:00
} ) , cr = ( e ) => {
2024-12-26 16:06:19 +08:00
var t , i ;
return e ? ( i = ( t = e . match ( /^@pkg(?:[^\/]*\/){3}(?<name>[^\/]+)/ ) ) == null ? void 0 : t . groups ) == null ? void 0 : i . name : "" ;
2025-01-02 19:14:16 +08:00
} , dr = ( e ) => {
2024-12-26 16:06:19 +08:00
var t , i ;
return e ? ( i = ( t = e . match ( /^@pkg(?:[^\/]*\/){2}(?<category>[^\/]+)/ ) ) == null ? void 0 : t . groups ) == null ? void 0 : i . category : "" ;
2025-01-02 19:14:16 +08:00
} , ur = ( e ) => {
2024-12-26 16:06:19 +08:00
var t , i ;
return e ? ( i = ( t = e . match ( /^@pkg(?:[^\/]*\/){1}(?<owner>[^\/]+)/ ) ) == null ? void 0 : t . groups ) == null ? void 0 : i . owner : "" ;
} ;
var Ze , Me , ze , et ;
const tt = class tt {
constructor ( ... t ) {
2025-01-07 09:40:41 +08:00
R ( this , Me , [ ] ) ;
R ( this , ze , ( t ) => {
2024-12-26 16:06:19 +08:00
var i ;
for ( let n of t ) Array . isArray ( n [ 0 ] ) ? y ( this , ze ) . call ( this , n ) : y ( this , Me ) . push ( y ( i = tt , Ze ) . call ( i , n [ 0 ] , n [ 1 ] ) ) ;
} ) ;
S ( this , "toValue" , async ( t , i = null ) => {
const n = { getValue : ( ) => t , getRecord : ( ) => i } ;
return await y ( this , Me ) . reduce ( async ( r , a ) => {
try {
2025-01-02 19:14:16 +08:00
const o = await r ;
return ( await a ) . call ( n , o ) ;
} catch ( o ) {
return console . error ( o ) , r ;
2024-12-26 16:06:19 +08:00
}
} , t ) ;
} ) ;
S ( this , "toRender" , ( t , i , n = null ) => k . createElement ( y ( this , et ) , { value : t , record : i } , n ) ) ;
2025-01-07 09:40:41 +08:00
R ( this , et , ( { value : t , record : i , children : n } ) => {
const [ r , a ] = F ( n ) ;
2024-12-26 16:06:19 +08:00
return at ( ( ) => {
2025-01-02 19:14:16 +08:00
let o = ! 1 ;
2025-01-07 09:40:41 +08:00
return a ( n ) , this . toValue ( t , i ) . then ( ( s ) => Z ( s , "string" ) ) . then ( ( s ) => ! o && a ( s ) ) . catch ( ( s ) => ! o && a ( ` ${ s } ` ) ) , ( ) => o = ! 0 ;
2024-12-26 16:06:19 +08:00
} , [ t , i ] ) , r ;
} ) ;
y ( this , ze ) . call ( this , t ) ;
}
} ;
2025-01-07 09:40:41 +08:00
Ze = new WeakMap ( ) , Me = new WeakMap ( ) , ze = new WeakMap ( ) , et = new WeakMap ( ) , R ( tt , Ze , c . memoize ( ( t , i ) => oe . getWidgetComponent ( t ) . then ( ( n ) => {
2024-12-26 16:06:19 +08:00
var r ;
return ( ( r = n . default ) == null ? void 0 : r . call ( n , i ) ) || ( ( a ) => a ) ;
2025-01-07 09:40:41 +08:00
} ) , ( t , i ) => ` ${ t } :: ${ Z ( i , "string" ) } ` ) ) ;
2024-12-26 16:06:19 +08:00
let Qe = tt ;
2025-01-02 19:14:16 +08:00
const Xi = ( e , t = { } ) => H ( ( ) => e == null ? void 0 : e . map ( ( { widgetByJs : i , widgetByJsSetting : n , ... r } , a ) => i ? { ... r , render : ( o , s ) => new Qe ( [ i , n ] ) . toRender ( o , s , "-" ) } : r ) , [ e , t ] ) , gr = ( e ) => {
2025-01-07 09:40:41 +08:00
const [ t , i ] = F ( { } ) ;
return A ( ( ) => {
2024-12-26 16:06:19 +08:00
let n = ! 1 ;
2025-01-07 09:40:41 +08:00
return e && O . get ( ` /api/_/ ${ e } ` ) . then ( ( r ) => c . pick ( r , [ "uuid" , "name" , "code" , "resource" , "marginX" , "marginY" , "cols" , "rowHeight" , "primaryKey" , "columns" , "itemOperations" , "batchOperations" , "isConditionFormLayout" , "layout" , "tabs" , "pageSize" , "layoutConfig" ] ) ) . then ( ( r ) => ! n && i ( r ) ) , ( ) => n = ! 0 ;
2024-12-26 16:06:19 +08:00
} , [ e ] ) , t ;
2025-01-02 19:14:16 +08:00
} , pr = ( e , t = { } ) => {
2025-01-07 09:40:41 +08:00
const [ i , n ] = F ( { dataSource : [ ] } ) ;
2024-12-26 16:06:19 +08:00
return Ue ( ( ) => {
let r = ! 1 ;
2025-01-07 09:40:41 +08:00
return e && O . get ( ` /api/ ${ e } / ${ O . encode ( { page : 1 , ... t } )} ` ) . then ( ( a ) => ! r && n ( a ) ) , ( ) => r = ! 0 ;
2024-12-26 16:06:19 +08:00
} , [ e , t ] ) , i ;
2025-01-02 19:14:16 +08:00
} , ri = ( e = [ ] , t = /* @__PURE__ */ new Map ( ) , i = "id" , n ) => {
2024-12-26 16:06:19 +08:00
const r = Y ( n ? ( a ) => c . get ( a , i , c . get ( a , [ n , i ] ) ) : ( a ) => c . get ( a , i ) , [ i , n ] ) ;
2025-01-02 19:14:16 +08:00
return Y ( ( a ) => e == null ? void 0 : e . filter ( ( o ) => ! o . uuid || ! t . has ( o . uuid ) || t . get ( o . uuid ) . includes ( ` ${ r ( a ) } ` ) ) , [ e , t , r ] ) ;
2024-12-26 16:06:19 +08:00
} , ht = ( e = [ ] , t = [ ] , i = /* @__PURE__ */ new Map ( ) , n = "id" , r ) => {
2025-01-02 19:14:16 +08:00
const a = Y ( r ? ( o ) => c . get ( o , n , c . get ( o , [ r , n ] ) ) : ( o ) => c . get ( o , n ) , [ n , r ] ) ;
2024-12-26 16:06:19 +08:00
return H ( ( ) => {
2025-01-02 19:14:16 +08:00
if ( c . isEmpty ( t ) || ! t . some ( ( { uuid : s } ) => Gi . check ( s ) ) ) return ! 1 ;
2024-12-26 16:06:19 +08:00
if ( c . isEmpty ( i ) || c . isEmpty ( e ) ) return ! 0 ;
2025-01-02 19:14:16 +08:00
const o = e . map ( ( s ) => ` ${ a ( s ) } ` ) ;
return t . some ( ( { uuid : s } ) => ! s || ! i . has ( s ) || i . get ( s ) . some ( ( l ) => o . includes ( ` ${ l } ` ) ) ) ;
2024-12-26 16:06:19 +08:00
} , [ t , e , i , a ] ) ;
2025-01-02 19:14:16 +08:00
} , Qi = ( e , t , i = "id" , n = null ) => {
2025-01-07 09:40:41 +08:00
const r = rt ( ) , a = U ( ! 1 ) , o = U ( e . dataSource ) , s = U ( e . itemOperationsAccess ) ;
return A ( ( ) => ( o . current = e . dataSource , s . current = e . itemOperationsAccess , ( ) => a . current = ! 1 ) , [ e . dataSource , e . itemOperationsAccess ] ) , a . current && ( e . dataSource = o . current , e . itemOperationsAccess = s . current ) , [ e , ( l = 0 , u = null ) => {
var p , d ;
2024-12-26 16:35:36 +08:00
if ( a . current = ! 1 , l === 1 ) return ( p = e . onReload ) == null ? void 0 : p . call ( e ) ;
2024-12-26 16:06:19 +08:00
if ( l === 2 ) {
2025-01-02 19:14:16 +08:00
const h = c . get ( u , "__PARENT_ID__" , "" ) , m = c . get ( u , i , c . get ( u , [ n , i ] , "" ) ) , f = c . findIndex ( o . current , [ "__PARENT_ID__" , h ] ) , C = c . findIndex ( f > - 1 ? c . get ( o . current , [ f , "children" ] ) : o . current , [ i , m ] ) ;
2025-01-07 09:40:41 +08:00
if ( C === - 1 ) return ( d = e . onReload ) == null ? void 0 : d . call ( e ) ;
Promise . all ( [ O . get ( ` /api/ ${ t } /detail/ ${ m } ` ) , O . post ( ` /api/ ${ t } /list-operations-access ` , { ids : m } ) ] ) . then ( ( [ w , x ] ) => {
const N = c . get ( o . current , f > - 1 ? [ f , "children" , C , "children" ] : [ C , "children" ] ) ;
o . current = Jt ( o . current , f > - 1 ? { [ f ] : { children : { $splice : [ [ C , 1 , { ... w , children : N } ] ] } } } : { $splice : [ [ C , 1 , { ... w , children : N } ] ] } ) ;
const T = new Map ( x ) ;
2025-01-02 19:14:16 +08:00
s . current . forEach ( ( z , M ) => {
2025-01-07 09:40:41 +08:00
var q ;
( q = T . get ( M ) ) != null && q . some ( ( j ) => j == m ) || s . current . set ( M , z . filter ( ( j ) => j !== m ) ) ;
} ) , T . forEach ( ( z , M ) => {
2025-01-02 19:14:16 +08:00
s . current . has ( M ) ? s . current . set ( M , c . uniq ( [ ... s . current . get ( M ) || [ ] , ... z ] ) ) : s . current . set ( M , z ) ;
2024-12-26 16:06:19 +08:00
} ) ;
} ) . then ( ( ) => {
a . current = ! 0 , r ( ) ;
} ) ;
}
} ] ;
2025-01-02 19:14:16 +08:00
} , Zi = ( e , t ) => {
2025-01-07 09:40:41 +08:00
const i = rt ( ) , n = U ( t ) , r = U ( /* @__PURE__ */ new Map ( ) ) , a = U ( [ ] ) , o = c . throttle ( ( l ) => {
a . current = [ ] , O . list ( e , c . pick ( { ... n . current , ... l } , [ "tab" , "page" , "pageSize" , "condition" , "sider" , "keyword" ] ) ) . then ( ( { keyword : u , condition : p , total : d , tab : h , sider : m , page : f , pageSize : C , operationsAccess : w , dataSource : x } ) => {
n . current = { tab : h , condition : p , sider : m , keyword : u , total : d , pageSize : C , page : x != null && x . length ? f : 1 } , a . current = x , r . current = new Map ( w ) , i ( ) ;
2024-12-26 16:06:19 +08:00
} ) ;
} , 380 , { leading : ! 1 , trailing : ! 0 } ) ;
at ( ( ) => {
2025-01-02 19:14:16 +08:00
a . current = [ ] , e && o ( t ) ;
2024-12-26 16:06:19 +08:00
} , [ e , t ] ) ;
2025-01-02 19:14:16 +08:00
const s = H ( ( ) => c . pick ( n . current , [ "total" , "tab" , "page" , "pageSize" , "condition" , "sider" , "keyword" ] ) , [ n . current ] ) ;
return Object . assign ( s , { onTabChange : ( l ) => o ( { tab : l , page : 1 } ) , onPageChange : ( l , u ) => o ( { page : l , pageSize : u } ) , onPageSizeChange : ( l ) => o ( { pageSize : l , page : 1 } ) , onConditionChange : ( l , u ) => o ( { keyword : u , condition : Jt ( n . current . condition || { } , { $merge : l || { } } ) , page : 1 } ) , onSiderChange : ( l ) => o ( { sider : l , page : 1 } ) , onKeywordChange : ( l ) => o ( { keyword : l , page : 1 } ) , itemOperationsAccess : r . current , dataSource : a . current , onReload : o } ) ;
2025-01-07 09:40:41 +08:00
} , en = ( { listCode : e , className : t , layouts : i , dataSource : n , isPaginate : r , isItemOperations : a , isBatchOperations : o , batchOperations : s , itemOperations : l , itemOperationsAccess : u , resource : p , primaryKey : d , title : h , itemGridLayout : m , $setting : f , tabs : C , isConditionFormLayout : w , isTreeSider : x , treeSiderConfig : N } ) => {
const { classNames : T , onClickCallback : z } = le ( te ) , M = ri ( l , u , d , p ) , q = Y ( ( j , V , $ ) => g ( tn , { className : I ( "ff-data-list-framework-item" , T . item ) , operations : a ? M ( V ) : [ ] , data : p ? { [ p ] : V } : V , children : j , onClickCallback : z } ) , [ p , d , a , z , l , u ] ) ;
return L ( "div" , { className : I ( "ff-data-list-framework" , t ) , children : [ g ( i . sider , { isTreeSider : x , ... N } ) , L ( "div" , { className : I ( "ff-data-list-container" , T == null ? void 0 : T . container ) , children : [ g ( i . filter , { isConditionFormLayout : w } ) , g ( i . toolbar , { title : h , tabs : C } ) , g ( mn , { ... m , style : { "--col-num" : ( f == null ? void 0 : f . colNum ) || 1 } , primaryKey : d , itemRender : q , dataSource : n } ) , g ( i . footer , { isPaginate : r , isOperations : o , operations : s } ) ] } ) ] } ) ;
} , tn = ( { className : e , operations : t , children : i , data : n , onClickCallback : r } ) => L ( "div" , { className : I ( "data-list-grid-layout-item-container" , e ) , children : [ i , ! ! ( t != null && t . length ) && g ( "div" , { className : "data-list-grid-layout-item-actions" , children : t . map ( ( a ) => g ( "span" , { className : "data-list-grid-layout-item-action" , children : g ( P . Link , { uuid : a . uuid , type : a . type , name : a . name , widget : a . widget , widgetType : a . widgetType , widgetProps : a . widgetProps , widgetSetting : a . widgetSetting , widgetContainerProps : a . widgetContainerSetting , data : n , confirm : a . confirm , onAfterClick : ( o ) => o !== ! 1 && ( r == null ? void 0 : r ( a . isRefresh , n ) ) } , a . uuid || Le ( ) ) } , ( a == null ? void 0 : a . uuid ) || Le ( ) ) ) } ) ] } ) , nn = ( { listCode : e , className : t , layouts : i , dataSource : n , columns : r , isItemOperations : a , isBatchOperations : o , batchOperations : s , itemOperations : l , itemOperationsAccess : u , resource : p , primaryKey : d , title : h , tabs : m , isPaginate : f , isTreeSider : C , treeSiderConfig : w , isConditionFormLayout : x , ... N } ) => {
const { classNames : T , onClickCallback : z } = le ( te ) , M = ri ( l , u , d , p ) , q = ht ( n , l , u , d , p ) ;
return L ( "div" , { className : I ( "ff-data-table-framework" , t ) , children : [ g ( i . sider , { isTreeSider : C , ... w } ) , L ( "div" , { className : I ( "ff-data-table-container" , T == null ? void 0 : T . container ) , children : [ g ( i . filter , { isConditionFormLayout : x } ) , g ( i . toolbar , { title : h , tabs : m } ) , g ( cn , { ... N , primaryKey : d , className : "ff-data-table-content" , columns : r , dataSource : n , operationRender : q ? ( j ) => {
var V ;
return g ( "div" , { className : "ff-data-table-actions" , children : ( V = M ( j ) ) == null ? void 0 : V . map ( ( $ , v ) => g ( P . Link , { size : "small" , uuid : $ . uuid , type : $ . type , name : $ . name , widget : $ . widget , widgetType : $ . widgetType , widgetProps : $ . widgetProps , widgetData : $ . widgetData , widgetSetting : $ . widgetSetting , widgetContainerProps : $ . widgetContainerSetting , data : j , confirm : $ . confirm , onAfterClick : ( E ) => E !== ! 1 && ( z == null ? void 0 : z ( $ . isRefresh , j ) ) } , $ . uuid || v ) ) } ) ;
} : null } ) , g ( i . footer , { isPaginate : f , isOperations : o , operations : s } ) ] } ) ] } ) ;
} , te = k . createContext ( { listCode : "" , classNames : { } , getBase62params : ( e , t ) => {
2024-12-26 16:06:19 +08:00
} , onReload : ( ) => {
} , onClickCallback : ( ) => {
} , onConditionChange : ( ) => {
} , onTabChange : ( ) => {
} , onSiderChange : ( ) => {
} , onKeywordChange : ( ) => {
} , onPageChange : ( ) => {
} , onPageSizeChange : ( ) => {
2025-01-02 19:14:16 +08:00
} } ) , ai = ( e , t , i , n , r = { } , a = 0 ) => {
const o = { "--grid-layout-h" : ` ${ n } ` , "--grid-layout-w" : ` ${ i } ` , "--grid-layout-x" : ` ${ e } ` , "--grid-layout-y" : ` ${ t } ` , "--grid-layout-row-height-offset" : "0px" } ;
return r != null && r . autoHeight ? o . height = "fit-content" : o [ "--grid-layout-row" ] = ` ${ n } ` , r != null && r . alignItems && ( o [ "--grid-layout-box-align-items" ] = r . alignItems ) , r != null && r . justifyContent && ( o [ "--grid-layout-box-justify-content" ] = r . justifyContent ) , o [ "--grid-layout-box-margin" ] = It ( r == null ? void 0 : r . marginTop , r == null ? void 0 : r . marginRight , r == null ? void 0 : r . marginBottom , r == null ? void 0 : r . marginLeft ) , o [ "--grid-layout-box-padding" ] = It ( r == null ? void 0 : r . paddingTop , r == null ? void 0 : r . paddingRight , r == null ? void 0 : r . paddingBottom , r == null ? void 0 : r . paddingLeft ) , a && ( o . height = ` ${ a } px ` ) , o ;
} , It = ( e , t , i , n ) => ` ${ e || 0 } px ${ t || 0 } px ${ i || 0 } px ${ n || 0 } px ` , mr = ( e = "Text" , t = "@pkg/ff/grid-layouts" ) => e != null && e . startsWith ( "@" ) || e != null && e . startsWith ( "blob:" ) ? e : ` ${ t } / ${ e } ` , si = ( { className : e , isConditionFormLayout : t } ) => {
2024-12-26 17:33:07 +08:00
var h , m ;
2025-01-07 09:40:41 +08:00
const [ i , n ] = F ( { } ) , { listCode : r , onKeywordChange : a , onConditionChange : o , getBase62params : s , classNames : l } = k . useContext ( te ) , { keyword : u , condition : p } = ( s == null ? void 0 : s ( ) ) || { } , [ d ] = Ge . useForm ( ) ;
return A ( ( ) => {
r && t && O . get ( ` /api/_/ ${ r } /list-condition-form-layout ` ) . then ( ( { resource : f , marginX : C , marginY : w , rowHeight : x , cols : N , fields : T } ) => {
n ( { resource : f , itemMargin : [ C , w ] , rowHeight : x , cols : N , fields : T } ) ;
2024-12-26 16:06:19 +08:00
} ) . catch ( ( ) => n ( { } ) ) ;
2025-01-07 09:40:41 +08:00
} , [ r , t ] ) , A ( ( ) => {
d . setFieldsValue ( { keyword : u , ... p } ) ;
} , [ JSON . stringify ( [ u , p ] ) ] ) , g ( "div" , { className : I ( "ff-data-list-filter" , l . filter , e ) , children : g ( Ge , { form : d , layout : "vertical" , autoComplete : "off" , onFinish : ( ( h = i . fields ) == null ? void 0 : h . length ) > 1 ? ( f ) => o ( { [ i . resource ] : f [ i . resource ] } , f . keyword ) : ( ) => {
2024-12-26 17:33:07 +08:00
} , onValuesChange : ( f ) => {
2025-01-07 09:40:41 +08:00
c . isEmpty ( c . omit ( f , [ "keyword" ] ) ) || d . submit ( ) ;
} , children : ( ( m = i . fields ) == null ? void 0 : m . length ) > 1 ? g ( Pt , { ... i , children : g ( rn , { onReset : ( ) => {
2025-01-02 19:14:16 +08:00
const { keyword : f , condition : C } = s ( "init" ) || { } ;
2025-01-07 09:40:41 +08:00
d . setFieldsValue ( { keyword : f , ... C } ) ;
} } ) } ) : g ( "div" , { className : "ff-data-list-filter-default-form ff-grid-layout-form" , children : g ( "div" , { className : "grid-layout-item" , style : ai ( 20 , 0 , 5 , 2 ) , children : g ( Ge . Item , { name : [ "keyword" ] , children : g ( Fi . Search , { allowClear : ! 0 , enterButton : "搜索" , placeholder : "多关键字 | 分割" , onSearch : ( f ) => a ( f ) } ) } ) } ) } ) } ) } ) ;
2025-01-02 19:14:16 +08:00
} , rn = ( { cols : e , fields : t , onReset : i } ) => {
2025-01-07 09:40:41 +08:00
const [ n , r ] = F ( ! 1 ) , a = H ( ( ) => t == null ? void 0 : t . toReversed ( ) . some ( ( o ) => o . y > 1 || o . x + o . w >= e - 5 ) , [ e , t ] ) ;
return L ( Ge . Item , { label : " " , style : { "--item-span" : 5 } , className : I ( "ff-data-list-filter-actions" , { expanded : n } ) , children : [ g ( Xe , { onClick : i , children : "重置" } ) , g ( Xe , { type : "primary" , htmlType : "submit" , children : "查询" } ) , a && g ( P . Link , { className : "ff-data-list-filter-expanded-button" , widget : ( ) => r ( ( o ) => ! o ) , type : "primary" , name : n ? "关闭" : "展开" , icon : n ? "icon-up" : "icon-down" , iconPosition : "end" } ) ] } ) ;
2024-12-26 16:06:19 +08:00
} ;
2025-01-02 19:14:16 +08:00
si . 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" } } } ] ;
const an = ( { className : e , operations : t , isOperations : i , isPaginate : n } ) => {
2025-01-07 09:40:41 +08:00
const { onPageChange : r , onPageSizeChange : a , onClickCallback : o , getBase62params : s } = k . useContext ( te ) , { total : l , page : u , pageSize : p } = ( s == null ? void 0 : s ( ) ) || { } ;
return i && ! c . isEmpty ( t ) || n ? L ( "div" , { className : I ( "ff-data-list-footer" , e ) , children : [ g ( "div" , { className : "ff-data-list-actions" , children : t == null ? void 0 : t . map ( ( d , h ) => g ( P , { uuid : d . uuid , type : d . type , name : d . name , widget : d . widget , widgetType : d . widgetType , widgetProps : d . widgetProps , widgetData : d . widgetData , widgetSetting : d . widgetSetting , widgetContainerProps : d . widgetContainerSetting , onAfterClick : ( m ) => m !== ! 1 && ( o == null ? void 0 : o ( d . isRefresh , null ) ) } , d . uuid || h ) ) } ) , n && g ( Ei , { size : "small" , total : l , pageSize : p , showSizeChanger : ! 1 , showTotal : ( d ) => ` 第 ${ u } 页 / 总共 ${ d } 条 ` , onChange : r , onShowSizeChange : a } ) ] } ) : null ;
} , sn = [ { 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 : g ( "span" , { style : { color : "#1677ff" } , children : "sss" } ) , key : "0-0-1-0" } ] } ] } ] , on = ( { className : e , width : t = 280 , isTreeSider : i } ) => {
const { classNames : n } = le ( te ) ;
return i ? g ( Ri . DirectoryTree , { className : I ( "ff-data-list-sider" , n . sider , e ) , style : { "--sider-width" : t } , showLine : ! 0 , showIcon : ! 1 , treeData : sn } ) : null ;
2025-01-02 19:14:16 +08:00
} , ln = ( { className : e , title : t , tabs : i } ) => {
2025-01-07 09:40:41 +08:00
const { getBase62params : n , onTabChange : r , onReload : a , classNames : o } = le ( te ) , { tab : s } = ( n == null ? void 0 : n ( ) ) || { } , [ l , u ] = Mi ( ( i == null ? void 0 : i [ 0 ] . value ) ? ? ( i == null ? void 0 : i [ 0 ] . code ) , { value : s , onChange : r } ) ;
return L ( "div" , { className : I ( "ff-data-list-toolbar" , o . toolbar , e ) , children : [ g ( "div" , { className : "ff-data-list-title" , children : t } ) , g ( Oi , { className : "ff-data-list-tabs" , itemRender : ( { label : p , code : d , value : h } ) => g ( "span" , { onClick : ( ) => u ( h ? ? d ) , className : I ( "ff-data-list-tab" , { active : ( h ? ? d ) == l } ) , children : p } ) , items : i } ) , L ( "div" , { className : "ff-data-list-actions" , children : [ g ( P . Link , { icon : "icon-reload" , widget : ( ) => a ( ) } ) , g ( P . Link , { icon : "icon-setting" } ) ] } ) ] } ) ;
} , oi = ( { isItemGridLayout : e , theme : t , themeProps : i , onClickCallback : n , onReload : r , listCode : a , total : o = 0 , page : s = 0 , onPageChange : l , pageSize : u = 30 , onPageSizeChange : p , tab : d , onTabChange : h , keyword : m , onKeywordChange : f , condition : C , onConditionChange : w , sider : x , onSiderChange : N , layouts : T , classNames : z = { } , ... M } ) => {
const [ q , j ] = F ( ) , V = Y ( ( v , E ) => {
const B = { tab : d , page : s , pageSize : u , keyword : m , sider : x , condition : C , total : o } ;
return v && v != "init" ? c . get ( B , v , E ) : B ;
} , [ JSON . stringify ( C ) , d , s , u , m , x , o ] ) , $ = H ( ( ) => {
let v = { sider : on , filter : si , footer : an , toolbar : ln } ;
T === ! 1 ? v = { sider : null , filter : null , footer : null , toolbar : null } : c . isPlainObject ( T ) && ( v = Object . assign ( { } , v , T ) ) ;
for ( const E in v ) if ( v [ E ] ) {
if ( Ni ( v [ E ] ) ) {
const B = v [ E ] ;
v [ E ] = ( X ) => k . cloneElement ( B , X ) ;
2024-12-26 16:06:19 +08:00
}
2025-01-07 09:40:41 +08:00
} else v [ E ] = ( ) => g ( k . Fragment , { } ) ;
return v ;
} , [ T ] ) ;
return A ( ( ) => {
t ? oe . getWidgetComponent ( t ) . then ( ( v ) => {
if ( ! v ) throw ` ${ t } not found ` ;
return v ;
} ) . catch ( ( v ) => ( { default : ( ) => ` ${ v } ` } ) ) . then ( ( v ) => j ( k . createElement ( v . default , { ... M , layouts : $ , $setting : i } ) ) ) : j ( g ( e ? en : nn , { ... M , layouts : $ , $setting : i } ) ) ;
} , [ t , i ] ) , g ( te . Provider , { value : { classNames : z , listCode : a , onClickCallback : n , onReload : r , getBase62params : V , onPageChange : l , onPageSizeChange : p , onTabChange : h , onSiderChange : N , onKeywordChange : f , onConditionChange : w } , children : q && k . cloneElement ( q , M ) } ) ;
2024-12-26 16:06:19 +08:00
} ;
2025-01-02 19:14:16 +08:00
oi . propTypes = { classNames : b . exact ( { sider : b . string , filter : b . string , footer : b . string , toolbar : b . string , container : b . string , content : b . string , item : b . string } ) , layouts : b . oneOfType ( [ b . exact ( { sider : b . oneOfType ( [ b . elementType , b . element ] ) , filter : b . oneOfType ( [ b . elementType , b . element ] ) , footer : b . oneOfType ( [ b . elementType , b . element ] ) , toolbar : b . oneOfType ( [ b . elementType , b . element ] ) } ) , b . bool ] ) } ;
2024-12-26 16:06:19 +08:00
var me , de , ve , it ;
2025-01-07 09:40:41 +08:00
const re = class re {
2024-12-26 16:06:19 +08:00
constructor ( ) {
2025-01-07 09:40:41 +08:00
R ( this , de , null ) ;
R ( this , ve , /* @__PURE__ */ new Map ( ) ) ;
R ( this , it , ( ) => {
2024-12-26 16:06:19 +08:00
if ( y ( this , de ) ) return y ( this , de ) . port . postMessage ( { command : "status" , data : [ ] } ) ;
2025-01-07 09:40:41 +08:00
W ( this , de , new SharedWorker ( new URL ( "/ff-worker/res-ws.js" , self . location ) ) ) , y ( this , de ) . port . onmessage = ( t ) => {
2024-12-26 16:06:19 +08:00
var i , n ;
( i = t . data ) != null && i . uuid ? y ( this , ve ) . forEach ( ( r , a ) => {
2025-01-02 19:14:16 +08:00
var o ;
( r == "*" || ( o = r == null ? void 0 : r . includes ) != null && o . call ( r , t . data . uuid ) ) && a ( t . data ) ;
2025-01-07 09:40:41 +08:00
} ) : ( ( n = t . data ) == null ? void 0 : n . readyState ) == WebSocket . CLOSED && O . get ( "/api/user-api-token" ) . then ( ( { token : r , expire _at : a } ) => {
y ( this , de ) . port . postMessage ( { command : "initWs" , data : [ ` ws ${ c . trimStart ( O . appUrl , "http" ) } api/user-resource-status-ws?token= ${ r } ` ] } ) ;
2024-12-26 16:06:19 +08:00
} ) ;
} , y ( this , de ) . port . postMessage ( { command : "status" , data : [ ] } ) ;
} ) ;
S ( this , "subscribe" , ( t , i = [ ] ) => ( i ? Array . isArray ( i ) && i . length == 0 ? i = "*" : Array . isArray ( i ) || ( i = [ i ] . flat ( ) ) : i = "*" , y ( this , ve ) . set ( t , i ) , y ( this , ve ) . size == 1 && y ( this , it ) . call ( this ) , ( ) => this . unsubscribe ( t ) ) ) ;
S ( this , "unsubscribe" , ( t ) => y ( this , ve ) . delete ( t ) ) ;
2025-01-07 09:40:41 +08:00
if ( y ( re , me ) ) return y ( re , me ) ;
2024-12-26 16:06:19 +08:00
}
} ;
2025-01-07 09:40:41 +08:00
me = new WeakMap ( ) , de = new WeakMap ( ) , ve = new WeakMap ( ) , it = new WeakMap ( ) , R ( re , me , null ) , S ( re , "getInstance" , ( ) => ( y ( re , me ) || W ( re , me , new re ( ) ) , y ( re , me ) ) ) ;
let ft = re ;
2025-01-02 19:14:16 +08:00
const li = ft . getInstance ( ) , St = k . forwardRef ( ( { listCode : e , base62params : t , className : i , theme : n , themeProps : r , layouts : a , classNames : o } , s ) => {
2025-01-07 09:40:41 +08:00
const [ { resource : l , primaryKey : u , batchOperations : p = [ ] , itemOperations : d = [ ] , columns : h = [ ] , themeConfig : m , theme : f , isConditionFormLayout : C = ! 1 , isTreeSider : w , treeSiderConfig : x , isItemGridLayout : N , itemGridLayout : T , title : z , isPaginate : M , tabs : q } , j ] = F ( { isItemGridLayout : ! 1 , itemGridLayout : { } } ) , V = Zi ( e , t ) , [ { dataSource : $ , itemOperationsAccess : v , condition : E , tab : B , keyword : X , page : Se , total : K , pageSize : st , sider : He , onConditionChange : ot , onTabChange : Ft , onKeywordChange : wi , onPageChange : bi , onPageSizeChange : Ci , onSiderChange : ki , onReload : lt } , Et ] = Qi ( V , e , u , l ) , xi = ht ( d , $ , v , u ) , vi = ht ( p ) ;
return A ( ( ) => {
2024-12-26 16:06:19 +08:00
let Ke = null ;
2025-01-07 09:40:41 +08:00
return e && O . get ( ` /api/_/ ${ e } ` ) . resp ( ( { data : Je , res : Si } ) => {
Je != null && Je . isDynamicRefresh && ( Ke = li . subscribe ( ( ) => lt ( ) , Si ) ) , j ( Je ) ;
} ) . catch ( ( ) => j ( { } ) ) , ( ) => Ke == null ? void 0 : Ke ( ) ;
} , [ e ] ) , k . useImperativeHandle ( s , ( ) => ( { onReload : lt , onClickCallback : Et } ) ) , g ( oi , { listCode : e , title : z , classNames : o , layouts : a , resource : l , primaryKey : u , theme : n || f , themeProps : r || m , isTreeSider : w , treeSiderConfig : x , isPaginate : M , tabs : q , isItemOperations : xi , isBatchOperations : vi , batchOperations : p , itemOperations : d , isItemGridLayout : N , columns : h , itemGridLayout : T , isConditionFormLayout : C , itemOperationsAccess : v , dataSource : $ , onConditionChange : ot , onTabChange : Ft , onKeywordChange : wi , onPageChange : bi , onPageSizeChange : Ci , onSiderChange : ki , condition : E , tab : B , keyword : X , page : Se , total : K , pageSize : st , sider : He , className : I ( "ff-data-list-helper" , i ) , onReload : lt , onClickCallback : Et } ) ;
2025-01-02 19:14:16 +08:00
} ) , ci = ( e , t , i = ! 0 ) => i !== ! 0 && i -- <= 0 ? [ ] : c . isArray ( e ) && ! c . isEmpty ( e ) ? e . reduce ( ( n , r ) => ( Reflect . has ( r , t ) && Reflect . has ( r , "children" ) && n . push ( r [ t ] ) , Reflect . has ( r , "children" ) && ! c . isEmpty ( r . children ) ? n . concat ( ci ( r . children , t , i ) ) : n ) , [ ] ) : [ ] , cn = ( { className : e , primaryKey : t , columns : i = [ ] , dataSource : n = [ ] , operationRender : r , operationWidth : a = 180 , ... o } ) => {
2025-01-07 09:40:41 +08:00
const { classNames : s } = le ( te ) ;
2024-12-26 16:06:19 +08:00
Le ( ) ;
2025-01-07 09:40:41 +08:00
const l = U ( null ) , u = U ( null ) , [ p , d ] = F ( [ ] ) , [ h , m ] = F ( { width : 0 , height : 0 } ) ;
A ( ( ) => {
d ( ci ( n , t ) ) ;
} , [ n , t ] ) , $i ( ( ) => {
2024-12-26 16:06:19 +08:00
const C = new ResizeObserver ( ( ) => {
var w ;
m ( { width : ( ( w = l . current ) == null ? void 0 : w . nativeElement . querySelector ( ".ant-table-body" ) . scrollWidth ) || u . current . offsetWidth , height : u . current . offsetHeight } ) ;
} ) ;
return u . current && C . observe ( u . current ) , ( ) => {
u . current && C . unobserve ( u . current ) ;
} ;
} , [ ] ) ;
2025-01-02 19:14:16 +08:00
const f = Xi ( i ) ;
2025-01-07 09:40:41 +08:00
return g ( "div" , { ref : u , className : I ( "ff-data-list-table" , s . content , e ) , children : h . height ? g ( Li , { ... o , ref : l , rowKey : ( C ) => ( C == null ? void 0 : C [ t ] ) ? ? Math . random ( ) , columns : f == null ? void 0 : f . concat ( r ? [ { title : "操作" , align : "center" , fixed : "right" , width : ` ${ Math . ceil ( a / h . width * 100 ) . toFixed ( 2 ) } % ` , render : ( C , w , x ) => r ( w , x ) } ] : [ ] ) , dataSource : n , size : "middle" , scroll : { x : "max-content" , y : h . height - 50 } , pagination : ! 1 , expandable : { defaultExpandAllRows : ! 0 , expandRowByClick : ! 0 , onExpandedRowsChange : d , expandedRowKeys : p } } ) : null } ) ;
2025-01-02 19:14:16 +08:00
} , dn = "RC_FORM_INTERNAL_HOOKS" , un = ( e , { initialValue : t , initialValueLanguage : i , convertJs : n , convertJsSetting : r , type : a = "string" } , o = null ) => {
2025-01-07 09:40:41 +08:00
const s = U ( ! 1 ) , l = le ( _t ) , [ u , p ] = F ( ) , [ d , h ] = F ( i != "javascript" && e ? l . getFieldValue ( e ) : void 0 ) , { registerWatch : m } = l . getInternalHooks ( dn ) || { } ;
return A ( ( ) => m == null ? void 0 : m ( ( f , C , w ) => {
2025-01-02 19:14:16 +08:00
if ( ! s . current ) return ;
2025-01-07 09:40:41 +08:00
const x = c . get ( C , e ) ;
c . isEqual ( x , d ) || h ( Z ( x , a ) ) ;
} ) , [ d ] ) , A ( ( ) => {
i == "javascript" && t ? Ce . exec ( t , { } , { getFieldValueForBasicForm : ( f ) => o ? o . getFieldValue ( f ) : l . getFieldValue ( f ) , getFieldValue : ( f ) => l . getFieldValue ( f ) } ) . then ( ( f ) => h ( Z ( f , a ) ) ) . catch ( ( f ) => notification . error ( { message : ` 布局数据错误: ${ JSON . stringify ( f ) } ` } ) ) . finally ( ( ) => s . current = ! 0 ) : ( t && h ( Z ( t ? ? l . getFieldValue ( e ) , a ) ) , s . current = ! 0 ) ;
2024-12-26 16:06:19 +08:00
} , [ t , i ] ) , Ue ( ( ) => {
2025-01-07 09:40:41 +08:00
s . current && n && new Qe ( [ n , r ] ) . toValue ( d , l . getFieldsValue ( ! 0 ) ) . then ( p ) . catch ( ( f ) => {
2024-12-26 17:33:07 +08:00
p ( f ) , console . error ( "布局数据转换错误: " , f , n ) ;
2024-12-26 16:06:19 +08:00
} ) ;
2025-01-07 09:40:41 +08:00
} , [ d , n , r ] ) , [ u ? ? d , d ] ;
2025-01-02 19:14:16 +08:00
} , di = ( e , t , i = null ) => H ( ( ) => {
2024-12-26 16:06:19 +08:00
var n ;
2025-01-07 09:40:41 +08:00
return ( n = c . sortBy ( e , [ "y" , "x" ] ) ) == null ? void 0 : n . map ( ( { i : r , x : a , y : o , w : s , h : l , field : { boxStyle : u , ... p } } , d ) => g ( "div" , { className : "grid-layout-item" , style : ai ( a , o , s , l , u ) , children : g ( t , { ... p , basicForm : i } ) } , r ? ? d ) ) ;
2025-01-02 19:14:16 +08:00
} , [ e ] ) , gn = ( { widget : e , widgetPrefix : t = "@pkg/ff/grid-layouts" , basicForm : i , ... n } ) => {
2025-01-07 09:40:41 +08:00
const r = e != null && e . startsWith ( "@" ) || e != null && e . startsWith ( "blob:" ) ? e : ` ${ t } / ${ e } ` , [ a , o ] = F ( ) ;
return A ( ( ) => {
r && oe . getWidgetComponent ( r ) . then ( ( { defaultProps : s = { } , default : l } ) => ( { default : pn ( l , s , i ) } ) ) . catch ( ( s ) => ( { default : ( ) => ` ${ s } ` } ) ) . then ( ( s ) => o ( k . createElement ( s . default , n ) ) ) ;
2024-12-26 16:06:19 +08:00
} , [ r ] ) , a ;
2025-01-02 19:14:16 +08:00
} , pn = ( e , t = { } , i = null ) => ( n ) => {
2025-01-07 09:40:41 +08:00
const { code : r , label : a , extras : o , isVirtual : s , initialValue : l , initialValueLanguage : u , convertJs : p , convertJsSetting : d , value : h , ... m } = c . merge ( { } , t , n ) , [ f , C ] = un ( s ? null : r , { initialValue : l , initialValueLanguage : u , convertJs : p , convertJsSetting : d , type : ( m == null ? void 0 : m . type ) || "string" } , i ) , w = H ( ( ) => {
const T = Object . keys ( ( t == null ? void 0 : t . extras ) || { } ) ;
return c . over ( [ c . partialRight ( c . pick , T ) , c . partialRight ( c . omit , T ) ] ) ;
} , [ t == null ? void 0 : t . extras ] ) , [ x , N ] = w ( m ) ;
return g ( e , { ... N , value : f , rawValue : C , $setting : Object . assign ( { } , o , x ) } ) ;
2025-01-02 19:14:16 +08:00
} , ui = ( { className : e , cols : t = 12 , rowHeight : i = 21 , containerPadding : n = [ 0 , 0 ] , itemMargin : r = [ 4 , 0 ] , formProps : a = { } , fields : o = [ ] , data : s , basicForm : l = null , ... u } ) => {
2025-01-07 09:40:41 +08:00
const [ p ] = ee . useForm ( ) , d = di ( o , gn , l ) , h = H ( ( ) => [ { name : "__PROPS__" , value : a } ] , [ a ] ) ;
return Ue ( ( ) => ( p . setFieldsValue ( s ) , ( ) => p . resetFields ( ) ) , [ s ] ) , g ( ee , { fields : h , form : p , component : ! 1 , children : g ( "div" , { ... u , className : I ( "ff-grid-layout" , e ) , style : { "--grid-layout-item-margin-y" : ` ${ ( r == null ? void 0 : r [ 0 ] ) || 0 } px ` , "--grid-layout-item-margin-x" : ` ${ ( r == null ? void 0 : r [ 1 ] ) || 0 } 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" : t , "--grid-layout-row-height" : ` ${ i } px ` } , children : d } ) } ) ;
2025-01-02 19:14:16 +08:00
} , hr = ( Mt = ui , function ( { code : e , data : t , ... i } ) {
2025-01-07 09:40:41 +08:00
const [ n , r ] = F ( { resource : null , cols : 12 , rowHeight : 21 , fields : [ ] } ) ;
return A ( ( ) => {
e && O . get ( ` /api/_/ ${ e } ` ) . then ( ( a ) => r ( c . pick ( a , [ "resource" , "cols" , "rowHeight" , "fields" ] ) ) ) ;
} , [ e ] ) , ( n == null ? void 0 : n . resource ) && g ( Mt , { ... i , rowHeight : n . rowHeight , cols : n . cols , fields : n . fields , data : n != null && n . resource ? { [ n == null ? void 0 : n . resource ] : t } : { } } ) ;
2024-12-26 16:06:19 +08:00
} ) ;
var Mt ;
2025-01-07 09:40:41 +08:00
const mn = ( { cols : e , rowHeight : t , itemMargin : i , fields : n , primaryKey : r , dataSource : a , itemClassName : o , itemRender : s = ( d , h , m ) => d , empty : l = g ( Ai , { description : null } ) , className : u , style : p = { } } ) => {
const { classNames : d } = le ( te ) , h = Le ( ) , m = H ( ( ) => g ( ui , { cols : e , rowHeight : t , itemMargin : i , fields : n , className : o } ) , [ n , e , t , i ] ) ;
return g ( "div" , { className : I ( "ff-data-list-content" , d . content , u ) , style : p , children : c . isEmpty ( a ) ? l : a . map ( ( f , C ) => {
2025-01-02 19:14:16 +08:00
const w = s ( k . cloneElement ( m , { data : f } ) , f , C ) ;
2024-12-26 17:33:07 +08:00
return k . cloneElement ( w , { key : ` ${ h } - ${ ( f == null ? void 0 : f [ r ] ) || C } ` } ) ;
2024-12-26 16:06:19 +08:00
} ) } ) ;
2025-01-02 19:14:16 +08:00
} , hn = ( { component : e } ) => {
const { base62params : t } = zi ( ) ;
2025-01-07 09:40:41 +08:00
return g ( G , { children : g ( St , { listCode : e , base62params : O . decode ( t ) } ) } ) ;
2025-01-02 19:14:16 +08:00
} , fn = ( ) => "Empty" , yn = ( { component : e , $setting : t } ) => {
2025-01-07 09:40:41 +08:00
const [ i , n ] = F ( ) ;
A ( ( ) => {
if ( ! e ) return n ( g ( fn , { description : null } ) ) ;
oe . getWidgetComponent ( e ) . catch ( ( a ) => ( { default : ( ) => ` ${ a } ` } ) ) . then ( ( a ) => k . createElement ( a . default , { $setting : t } ) ) . then ( n ) ;
2024-12-26 16:06:19 +08:00
} , [ e ] ) ;
const r = ue . getPageParams ( ) || { } ;
return i ? k . cloneElement ( i , r ) : null ;
} ;
2025-01-07 09:40:41 +08:00
var he , Q , fe , ye , De , Be ;
const ae = class ae {
2024-12-26 16:06:19 +08:00
constructor ( ) {
2025-01-07 09:40:41 +08:00
R ( this , Q , /* @__PURE__ */ new Map ( ) ) ;
R ( this , fe , { } ) ;
R ( this , ye , null ) ;
2024-12-26 16:06:19 +08:00
S ( this , "init" , ( t , i ) => {
2025-01-07 09:40:41 +08:00
W ( this , Q , t ) , W ( this , fe , i ) ;
2024-12-26 16:06:19 +08:00
} ) ;
2025-01-07 09:40:41 +08:00
S ( this , "get" , ( t ) => ( y ( this , Q ) . has ( t ) || ( t = Array . from ( y ( this , Q ) . keys ( ) ) . find ( ( i ) => y ( this , Q ) . get ( i ) . uri === t ) ) , y ( this , Q ) . get ( t ) || { } ) ) ;
2024-12-26 16:06:19 +08:00
S ( this , "redirect" , ( t , i , n = { } ) => {
2025-01-02 19:14:16 +08:00
const { uri : r , type : a , widgetProps : o } = this . get ( t ) || { } ;
2025-01-07 09:40:41 +08:00
let s = Di ( r || t , a != "list" ? i : c . mapValues ( i , ( u ) => O . encode ( u ) ) ) ;
2024-12-26 16:06:19 +08:00
const l = new URLSearchParams ( ) ;
2025-01-02 19:14:16 +08:00
for ( const u in o || { } ) ( o == null ? void 0 : o . type ) == "query" && l . append ( u , i [ u ] ) ;
return l . size > 0 && ( s = ` ${ s } ? ${ l . toString ( ) } ` ) , y ( this , ye ) . navigate ( s , n ) ;
2024-12-26 16:06:19 +08:00
} ) ;
S ( this , "getMenus" , ( t ) => {
var i ;
return ( ( i = y ( this , fe ) ) == null ? void 0 : i [ t ] ) || [ ] ;
} ) ;
S ( this , "findMenuPathByUuid" , ( t ) => {
let i = [ ] ;
for ( const n in y ( this , fe ) ) if ( i = y ( this , De ) . call ( this , y ( this , fe ) [ n ] , t , [ n ] ) , i . length > 1 ) return i ;
return i ;
} ) ;
2024-12-26 17:33:07 +08:00
S ( this , "getMenusByRouteUuid" , ( t ) => y ( this , Be ) . call ( this , t , Object . values ( y ( this , fe ) ) . flat ( ) ) ) ;
2025-01-07 09:40:41 +08:00
R ( this , De , ( t , i , n = [ ] ) => {
2024-12-26 16:06:19 +08:00
if ( c . isEmpty ( t ) ) return n ;
for ( const { uuid : r , children : a } of t ) {
if ( r == i ) return n . concat ( r ) ;
if ( ! c . isEmpty ( a ) ) return n . concat ( r , y ( this , De ) . call ( this , a , i ) ) ;
}
return n ;
} ) ;
2025-01-07 09:40:41 +08:00
R ( this , Be , ( t , i ) => {
2024-12-26 16:06:19 +08:00
var r ;
let n = [ ] ;
2024-12-26 17:33:07 +08:00
for ( const a of i ) a . widgetType == "redirect" && ( a . uuid == t || a . widget == t ? n . push ( a ) : ( r = a . children ) != null && r . length && ( n = n . concat ( y ( this , Be ) . call ( this , t , a . children ) ) ) ) ;
2024-12-26 16:06:19 +08:00
return n ;
} ) ;
S ( this , "getCurrentMenu" , ( ) => {
const { uuid : t } = this . getCurrentRoute ( ) || { } ;
if ( ! t ) return ;
const i = this . getMenusByRouteUuid ( t ) ;
return c . isEmpty ( i ) ? void 0 : i [ 0 ] ;
} ) ;
S ( this , "getCurrentRoute" , ( t = 0 ) => {
var n ;
const i = ( n = y ( this , ye ) . state . matches [ y ( this , ye ) . state . matches . length - 1 - t ] ) == null ? void 0 : n . route ;
if ( ! i ) return null ;
2025-01-07 09:40:41 +08:00
for ( let [ r , a ] of y ( this , Q ) ) if ( a . uri === i . path ) return a ;
2024-12-26 16:06:19 +08:00
return null ;
} ) ;
S ( this , "getPageParams" , ( t ) => {
2025-01-02 19:14:16 +08:00
var a , o ;
const { location : i = { } , matches : n = [ ] } = ( ( a = y ( this , ye ) ) == null ? void 0 : a . state ) || { } , r = ( ( o = n [ n . length - 1 ] ) == null ? void 0 : o . params ) || { } ;
return i . search && new URLSearchParams ( i . search ) . forEach ( ( s , l ) => {
r [ l ] = s ;
2024-12-26 16:06:19 +08:00
} ) , t ? c . get ( r , t ) : r ;
} ) ;
S ( this , "createBrowserRouter" , ( t = { } ) => {
2025-01-07 09:40:41 +08:00
if ( y ( this , Q ) . size == 0 ) return null ;
const i = Ae . get ( "Common.WEBSITE_DEFAULT_THEME" , "@pkg/ff/frameworks/DefaultTheme" ) , n = Ae . get ( oe . checkUserToken ( ) ? "Common.WEBSITE_LOGIN_REDIRECT" : "Common.WEBSITE_DEFAULT" , "/index" ) , r = { [ i ] : 0 } , a = ( s , l ) => ( ) => oe . getWidgetComponent ( s ) . then ( ( u ) => u . default || function ( ) {
2025-01-02 19:14:16 +08:00
return ` ${ s } ` ;
2025-01-07 09:40:41 +08:00
} ) . then ( ( u ) => ( { Component : ( ) => k . createElement ( Xt , { } , k . createElement ( u , l ) ) } ) ) , o = Array . from ( y ( this , Q ) . values ( ) ) . reduce ( ( s , { uuid : l , uri : u , name : p , type : d , component : h , widgetSetting : m , isLogin : f , isLayout : C , extra : w } ) => {
let x = { } , N = 0 ;
switch ( d ) {
2024-12-26 16:06:19 +08:00
case "list" :
2025-01-07 09:40:41 +08:00
x . element = k . createElement ( hn , { component : h } ) ;
2024-12-26 16:06:19 +08:00
break ;
case "fsdpf-component" :
2025-01-07 09:40:41 +08:00
x . element = k . createElement ( yn , { key : h , component : h , $setting : m } ) ;
2024-12-26 16:06:19 +08:00
}
if ( w != null && w . layout ) {
2025-01-07 09:40:41 +08:00
if ( ! r [ w == null ? void 0 : w . layout ] ) return r [ w == null ? void 0 : w . layout ] = s . length , [ ... s , { path : "/" , lazy : a ( w == null ? void 0 : w . layout , { } ) , children : [ { path : u , ... x } ] } ] ;
N = r [ w == null ? void 0 : w . layout ] ;
2024-12-26 16:06:19 +08:00
}
2025-01-07 09:40:41 +08:00
return C && N > - 1 ? ( s [ N ] . children . push ( { path : u , ... x } ) , s ) : [ ... s , { path : u , ... x } ] ;
2024-12-26 16:06:19 +08:00
} , [ { path : "/" , lazy : a ( i , { } ) , children : [ ] } ] ) ;
2025-01-07 09:40:41 +08:00
return o . push ( { index : ! 0 , element : k . createElement ( wn , { to : n , replace : ! 0 } ) } ) , W ( this , ye , Bi ( o , t ) ) ;
2024-12-26 16:06:19 +08:00
} ) ;
2025-01-07 09:40:41 +08:00
if ( y ( ae , he ) ) return y ( ae , he ) ;
2024-12-26 16:06:19 +08:00
}
} ;
2025-01-07 09:40:41 +08:00
he = new WeakMap ( ) , Q = new WeakMap ( ) , fe = new WeakMap ( ) , ye = new WeakMap ( ) , De = new WeakMap ( ) , Be = new WeakMap ( ) , R ( ae , he , null ) , S ( ae , "getInstance" , ( ) => ( y ( ae , he ) || W ( ae , he , new ae ( ) ) , y ( ae , he ) ) ) ;
let yt = ae ;
2025-01-02 19:14:16 +08:00
const wn = ( { to : e , replace : t } ) => qi ( ) ? k . createElement ( Ui , { to : e , replace : t } ) : ( window . document . location = e , "redirect" ) , ue = yt . getInstance ( ) , Pe = new Worker ( new URL ( "/ff-worker/index.js" , self . location ) ) , zt = { getConfigure : ( e ) => Ae . get ( e ) , route : { redirect : ( ... e ) => ue . redirect ( ... e ) , getPageParams : ( ... e ) => ue . getPageParams ( ... e ) , getCurrentRoute : ( ) => ue . getCurrentRoute ( ) } , popup : { notification : ( ... e ) => _ . notification ( ... e ) , success : ( ... e ) => _ . success ( ... e ) , error : ( ... e ) => _ . error ( ... e ) , form : ( ... e ) => _ . form ( ... e ) , modal : ( ... e ) => _ . modal ( ... e ) , confirm : ( ... e ) => _ . confirm ( ... e ) } } ;
var nt , Fe , we ;
2024-12-26 16:06:19 +08:00
const D = class D {
constructor ( ) {
2025-01-02 19:14:16 +08:00
S ( this , "exec" , ( t , i = { } , n = { } , r = "" ) => new Promise ( ( a , o ) => {
const s = Lt ( D , nt ) . _ ++ ;
y ( D , Fe ) . set ( s , n ) , D . mQueue . set ( s , [ a , o ] ) , Pe . postMessage ( { id : s , session : r , category : "eval" , method : t , args : i } ) ;
2024-12-26 16:06:19 +08:00
} ) ) ;
S ( this , "clear" , ( t ) => Pe . postMessage ( { session : t , category : "clear" } ) ) ;
if ( y ( D , we ) ) return y ( D , we ) ;
2025-01-02 19:14:16 +08:00
Promise . resolve ( ) . then ( ( ) => qn ) . then ( ( t ) => {
2024-12-26 16:06:19 +08:00
zt . http = t . http ;
2025-01-02 19:14:16 +08:00
} ) , Pe . addEventListener ( "message" , ( { data : { id : t , task _id : i , method : n , args : r , category : a , data : o , error : s , session : l } } ) => {
if ( a === "eval" && D . mQueue . has ( t ) ) s !== null ? D . mQueue . get ( t ) [ 1 ] ( s ) : D . mQueue . get ( t ) [ 0 ] ( o ) , y ( D , Fe ) . delete ( t ) , D . mQueue . delete ( t ) ;
2024-12-26 16:06:19 +08:00
else if ( a === "util" ) try {
2025-01-02 19:14:16 +08:00
const u = c . get ( zt , n . split ( "/" ) ) || c . get ( y ( D , Fe ) . get ( i ) , n . split ( "/" ) ) ;
2024-12-26 16:06:19 +08:00
if ( ! c . isFunction ( u ) ) throw ` ${ n } not found ` ;
2024-12-26 16:35:36 +08:00
Promise . resolve ( Reflect . apply ( u , void 0 , r ) ) . then ( ( p ) => {
Pe . postMessage ( { id : t , task _id : i , category : a , method : n , args : r , session : l , data : p , error : null } ) ;
} ) . catch ( ( p ) => {
Pe . postMessage ( { id : t , task _id : i , category : a , method : n , args : r , session : l , data : null , error : p } ) ;
2024-12-26 16:06:19 +08:00
} ) ;
} catch ( u ) {
Pe . postMessage ( { id : t , task _id : i , category : a , method : n , args : r , session : l , data : null , error : u } ) ;
}
} , ! 1 ) ;
}
} ;
2025-01-07 09:40:41 +08:00
nt = new WeakMap ( ) , Fe = new WeakMap ( ) , we = new WeakMap ( ) , S ( D , "mQueue" , /* @__PURE__ */ new Map ( ) ) , R ( D , nt , 0 ) , R ( D , Fe , /* @__PURE__ */ new Map ( ) ) , R ( D , we , null ) , S ( D , "getInstance" , ( ) => ( y ( D , we ) || W ( D , we , new D ( ) ) , y ( D , we ) ) ) ;
2024-12-26 16:06:19 +08:00
let wt = D ;
const Ce = wt . getInstance ( ) , rt = ( ) => {
2025-01-07 09:40:41 +08:00
const e = U ( ! 0 ) , [ , t ] = k . useReducer ( ( i ) => i + 1 , 0 ) ;
return A ( ( ) => ( ) => e . current = ! 1 , [ ] ) , ( ) => e . current && t ( ) ;
2025-01-02 19:14:16 +08:00
} , fr = ( e ) => {
2025-01-07 09:40:41 +08:00
const t = U ( ) ;
return A ( ( ) => {
2024-12-26 16:06:19 +08:00
t . current = e ;
} , [ e ] ) , t . current ;
2025-01-02 19:14:16 +08:00
} , yr = ( e ) => {
2025-01-07 09:40:41 +08:00
const [ t , i ] = F ( e ) , n = U ( null ) , r = Y ( ( a , o ) => {
2025-01-02 19:14:16 +08:00
n . current = o , i ( a ) ;
2024-12-26 16:06:19 +08:00
} , [ ] ) ;
2025-01-07 09:40:41 +08:00
return A ( ( ) => {
2024-12-26 16:06:19 +08:00
n . current && ( n . current ( t ) , n . current = null ) ;
} , [ t ] ) , [ t , r ] ;
} , Ue = ( e = ( n ) => {
} , t , i = c . isEqual ) => {
const n = k . useRef ( ) ;
i ( t , n . current ) || ( n . current = c . cloneDeep ( t ) ) , k . useEffect ( e , [ n . current ] ) ;
2025-01-02 19:14:16 +08:00
} , at = Ue , gi = ( e , t = "string" ) => {
2024-12-26 16:06:19 +08:00
var i ;
if ( ! Array . isArray ( e ) ) return e ;
2025-01-07 09:40:41 +08:00
for ( let n = 0 ; n < e . length ; n ++ ) e [ n ] . value = Z ( ( i = e [ n ] ) == null ? void 0 : i . value , t ) , e [ n ] && Reflect . has ( e [ n ] , "children" ) && ( e [ n ] . children = gi ( e [ n ] . children , t ) ) ;
2024-12-26 16:06:19 +08:00
return e ;
2025-01-02 19:14:16 +08:00
} , wr = ( e , t = "json" , i = "string" , n , r = null ) => {
2025-01-07 09:40:41 +08:00
const [ a ] = ee . useForm ( n ) , [ o , s ] = F ( [ { label : "无" , value : "" , disabled : ! 0 } ] ) , l = U ( [ ] ) , u = ee . useWatch ( ( p ) => l . current . length === 0 ? null : c . pick ( p , l . current ) , a ) || null ;
return A ( ( ) => {
2025-01-02 19:14:16 +08:00
Array . isArray ( e ) ? s ( e ) : t === "javascript" && e ? Ce . exec ( e , { } , { getFieldValue : ( p ) => ( l . current . includes ( p ) || l . current . push ( p ) , a . getFieldValue ( p ) ) , getFieldValueForBasicForm : ( p ) => ( l . current . includes ( p ) || l . current . push ( p ) , r ? r . getFieldValue ( p ) : a . getFieldValue ( p ) ) } ) . then ( ( p ) => {
2025-01-07 09:40:41 +08:00
s ( Z ( p , "array" ) ) ;
} ) : e && s ( Z ( e , "array" ) ) ;
2025-01-02 19:14:16 +08:00
} , [ e , t , u ] ) , gi ( o , i ) ;
} , br = ( e ) => {
2025-01-07 09:40:41 +08:00
const [ t , i ] = F ( ) , n = { type : "GET" } ;
2024-12-26 16:06:19 +08:00
if ( typeof e == "string" ? n . url = e : c . isPlainObject ( e ) && Object . assign ( n , e ) , ! ( n != null && n . url ) ) throw "url is required" ;
2025-01-07 09:40:41 +08:00
const r = ( a ) => O . request ( n , ! 1 ) . resp ( ( o ) => ( console . log ( "useSubscribeRequest" , a ) , i ( o ) , o ) ) ;
2024-12-26 16:06:19 +08:00
return Ue ( ( ) => {
let a = null ;
2025-01-02 19:14:16 +08:00
return r ( ) . then ( ( o ) => {
a = li . subscribe ( c . throttle ( r , 180 , { leading : ! 1 , trailing : ! 0 } ) , o . res ) ;
2024-12-26 16:06:19 +08:00
} ) , ( ) => a == null ? void 0 : a ( ) ;
} , n ) , t ;
2025-01-02 19:14:16 +08:00
} , bn = ( e ) => {
2024-12-26 16:06:19 +08:00
const [ t , i ] = k . useState ( { gridItems : [ ] , hideItems : [ ] } ) ;
return k . useEffect ( ( ) => {
2025-01-07 09:40:41 +08:00
e && O . get ( ` /api/_/ ${ e } ` ) . then ( ( { pk : n , uuid : r , code : a , resource : o , align : s , cols : l , rowHeight : u , marginX : p , marginY : d , listenChangeFields : h , listenChangeFieldsFunc : m , fields : f } ) => ( { pk : n , uuid : r , code : a , resource : o , align : s , cols : l , rowHeight : u , marginX : p , marginY : d , listenChangeFields : h , listenChangeFieldsFunc : m , ... f . reduce ( ( C , w ) => {
var x ;
return ( x = w == null ? void 0 : w . field ) != null && x . hidden ? C . hides . push ( w == null ? void 0 : w . field ) : C . items . push ( w ) , C ;
2024-12-26 16:06:19 +08:00
} , { items : [ ] , hides : [ ] } ) } ) ) . then ( i ) ;
} , [ e ] ) , t ;
2025-01-02 19:14:16 +08:00
} , Cn = ( { max : e = 0 , min : t = 0 , type : i = "" , message : n , pattern : r , required : a = ! 1 , validator : o } = { } , s , l ) => {
2025-01-07 09:40:41 +08:00
const [ u , p ] = F ( [ ] ) ;
return A ( ( ) => {
const d = [ ] ;
2024-12-26 16:06:19 +08:00
if ( a ) {
2024-12-26 17:33:07 +08:00
let h = l ;
2024-12-26 16:06:19 +08:00
switch ( l ) {
case "number" :
case "string" :
case "array" :
break ;
case "bool" :
2024-12-26 17:33:07 +08:00
h = "boolean" ;
2024-12-26 16:06:19 +08:00
break ;
case "json" :
2024-12-26 17:33:07 +08:00
h = "object" ;
2024-12-26 16:06:19 +08:00
}
2025-01-07 09:40:41 +08:00
d . push ( { type : h , required : ! 0 , whitespace : ! 0 , message : "该项必填" } ) ;
2024-12-26 16:06:19 +08:00
}
switch ( i ) {
case "string" :
2025-01-07 09:40:41 +08:00
d . push ( { type : i , max : e , min : t , message : n || ( t && e ? ` 字符必须在 ${ t } ~ ${ e } 之间 ` : ` ${ e ? "最多能有" : "最少要有" } ${ t || e } 个字符 ` ) } ) ;
2024-12-26 16:06:19 +08:00
break ;
case "pattern" :
2025-01-07 09:40:41 +08:00
d . push ( { type : "string" , pattern : r , message : n } ) ;
2024-12-26 16:06:19 +08:00
break ;
case "validator" :
2025-01-07 09:40:41 +08:00
o && d . push ( ( { getFieldValue : h } ) => ( { validator : async ( m , f ) => {
2025-01-02 19:14:16 +08:00
const C = await Ce . exec ( o , { value : f , fieldName : s } , { getFieldValue : h } ) ;
2024-12-26 16:06:19 +08:00
return c . isString ( C ) && C ? Promise . reject ( C ) : c . isBoolean ( C ) && ! C ? Promise . reject ( n ) : Promise . resolve ( ) ;
} } ) ) ;
}
2025-01-07 09:40:41 +08:00
p ( d ) ;
2025-01-02 19:14:16 +08:00
} , [ e , t , i , n , r , a , o ] ) , u ;
} , kn = ( e , t , i ) => {
2025-01-07 09:40:41 +08:00
const [ n , r ] = F ( null ) ;
return A ( ( ) => {
2025-01-02 19:14:16 +08:00
const { initDataUri : a = ` /api/ ${ e } ` , initDataMethod : o = "GET" } = i || { } ;
2025-01-07 09:40:41 +08:00
t && O . request ( { method : o , url : c . trimEnd ( ` ${ a } / ${ t } ` , "/" ) } ) . then ( ( s ) => {
2025-01-02 19:14:16 +08:00
r ( s ) ;
2024-12-26 16:06:19 +08:00
} ) ;
} , [ e , t , i ] ) , n ;
2025-01-02 19:14:16 +08:00
} , pi = ( e , t , i = { } , n = { } , r = { } ) => {
2025-01-07 09:40:41 +08:00
const a = le ( _t ) , o = rt ( ) , s = U ( ! 0 ) , l = U ( [ ] ) , [ u , p ] = F ( t ) , d = ee . useWatch ( ( h ) => JSON . stringify ( c . pick ( h , l . current ) ) , a ) || "{}" ;
2024-12-26 16:06:19 +08:00
return at ( ( ) => {
2025-01-02 19:14:16 +08:00
e && Ce . exec ( e , i , { ... n , getFieldValueForBasicForm : ( h ) => r ? r . getFieldValue ( h ) : null , getFieldValue : c . wrap ( a . getFieldValue , ( h , m ) => ( l . current . some ( ( f ) => c . isEqual ( f , m ) ) || ( l . current . push ( m ) , o ( ) ) , h == null ? void 0 : h ( m ) ) ) , isFieldTouched : a . isFieldTouched , isFieldsTouched : a . isFieldsTouched } ) . then ( ( h ) => s . current && p ( h ) ) ;
2025-01-07 09:40:41 +08:00
} , [ e , d , a , i , n ] ) , A ( ( ) => ( ) => s . current = ! 1 , [ ] ) , u ;
2025-01-02 19:14:16 +08:00
} , xn = ( e , t , i = [ ] , n = { } ) => {
2025-01-07 09:40:41 +08:00
const r = U ( { } ) ;
2024-12-26 16:06:19 +08:00
if ( ! t ) return [ e , r . current ] ;
2025-01-07 09:40:41 +08:00
const a = U ( ) , o = c . debounce ( rt ( ) , 180 ) , s = [ "disabled" , "required" ] , l = ( d , h ) => {
s . includes ( d ) && ( r . current [ d ] = h ) , o ( ) ;
} , u = H ( ( ) => ( { setDisabled : ( d ) => l ( "disabled" , d ) , setRequired : ( d ) => l ( "required" , d ) , getDisabled : ( ) => r . current . disabled , getRequired : ( ) => r . current . required } ) , [ t ] ) , p = pi ( t , - 1 , { } , u , n ) ? ? - 1 ;
2024-12-26 16:35:36 +08:00
if ( a . current != p && ( p >= 0 || ! c . isEmpty ( i == null ? void 0 : i [ p ] ) ) ) {
a . current = p ;
2025-01-07 09:40:41 +08:00
const { widget : d , widgetPrefix : h , props : m } = i == null ? void 0 : i [ p ] ;
e = Zt ( d , h ) , r . current = c . merge ( m , c . pick ( r . current , s ) ) ;
2024-12-26 16:06:19 +08:00
}
return [ e , r . current ] ;
2025-01-02 19:14:16 +08:00
} , Dt = ( e ) => e === void 0 || e === ! 1 ? "" : ( Array . isArray ( e ) ? e : [ e ] ) . join ( "_" ) , Cr = ( { value : e , onChange : t } , i = null ) => {
2025-01-07 09:40:41 +08:00
const n = U ( ) , [ r ] = ee . useForm ( i ) , a = U ( { } ) ;
2024-12-26 16:06:19 +08:00
return at ( ( ) => {
c . isEqual ( n . current , e ) || r . setFieldsValue ( e ) ;
2025-01-07 09:40:41 +08:00
} , [ e ] ) , A ( ( ) => ( ) => r . resetFields ( ) , [ ] ) , [ H ( ( ) => r . _ _INTERNAL _ _ ? r : { ... r , _ _INTERNAL _ _ : { itemRef : ( o ) => ( s ) => {
2025-01-02 19:14:16 +08:00
const l = Dt ( o ) ;
s ? a . current [ l ] = s : delete a . current [ l ] ;
} } , scrollToField : ( o , s = { } ) => {
console . warn ( "useMergedFormValuesChange scrollToField not work, unreferenced antd form" ) ;
} , focusField : ( o ) => {
console . warn ( "useMergedFormValuesChange focusField not work, unreferenced antd form" ) ;
} , getFieldInstance : ( o ) => {
const s = Dt ( o ) ;
return a . current [ s ] ;
} } , [ r ] ) , ( o , s ) => {
n . current = s , t == null || t ( s ) ;
2024-12-26 16:06:19 +08:00
} ] ;
2025-01-02 19:14:16 +08:00
} , vn = ( { type : e , initialValue : t , initialValueLanguage : i , onChange : n , basicForm : r } ) => {
const a = pi ( i == "javascript" && t , i == "javascript" ? void 0 : t , { } , { } , r ) ;
2025-01-07 09:40:41 +08:00
return A ( ( ) => {
i == "javascript" ? n ( Z ( a , e ) ) : t && n ( Z ( t , e ) ) ;
2024-12-26 16:06:19 +08:00
} , [ e , t , a ] ) , null ;
2025-01-02 19:14:16 +08:00
} , mi = ( { widget : e = "Input" , widgetPrefix : t = "@pkg/ff/grid-layout-forms" , widgetDecorator : i , subWidgets : n = [ ] , basicForm : r , ... a } ) => {
2025-01-07 09:40:41 +08:00
const o = Zt ( e , t ) , [ s , l ] = xn ( o , i , n , r ) , [ u , p ] = F ( ) ;
return A ( ( ) => {
s && oe . getWidgetComponent ( s ) . then ( ( { defaultProps : d = { } , default : h } ) => ( { default : Sn ( h , d , r ) } ) ) . catch ( ( d ) => ( { default : ( ) => ` ${ d } ` } ) ) . then ( ( d ) => p ( k . createElement ( d . default , a ) ) ) ;
2025-01-02 19:14:16 +08:00
} , [ s ] ) , u && k . cloneElement ( u , { ... a , ... l } ) ;
} , Sn = ( e , t = { } , i = null ) => ( n ) => {
2025-01-07 09:40:41 +08:00
const { type : r , code : a , label : o , noStyle : s , placeholder : l , required : u = ! 1 , extras : p , validators : d , help : h , isVirtual : m , $isReserved : f , initialValue : C , initialValueLanguage : w , ... x } = c . omit ( c . merge ( { } , t , n ) , [ "convertJs" , "convertJsSetting" , "widget" , "widgetPerfix" , "widgetDecorator" , "subWidgets" , "boxStyle" ] ) , N = Cn ( Object . assign ( { } , d , u ? { required : ! 0 } : { } ) , a , r ) , T = H ( ( ) => {
const V = Object . keys ( ( t == null ? void 0 : t . extras ) || { } ) ;
return c . over ( [ c . partialRight ( c . pick , V ) , c . partialRight ( c . omit , V ) ] ) ;
} , [ t == null ? void 0 : t . extras ] ) , [ z , M ] = T ( x ) , q = { label : o , noStyle : s , colon : ! 1 , layout : "vertical" } , j = Y ( ( V ) => V == null ? void 0 : Z ( V , r ) , [ r ] ) ;
return g ( Gt , { name : a , rules : N , initialValue : j ( C ) , normalize : j , children : ( V , $ , v ) => {
var E ;
return g ( e , { type : r , rcform : v , basicForm : i , itemProps : { validateStatus : $ . errors . length > 0 ? "error" : "success" , tooltip : h , help : $ . errors . length > 0 ? $ . errors . join ( "、" ) : null , required : ( ( E = N == null ? void 0 : N [ 0 ] ) == null ? void 0 : E . required ) || ! 1 , ... q } , fieldProps : { placeholder : l , ... M , ... V } , $setting : Object . assign ( { } , p , z ) } ) ;
2024-12-26 16:06:19 +08:00
} } ) ;
2025-01-02 19:14:16 +08:00
} , Pt = ( { cols : e = 24 , rowHeight : t = 16 , itemMargin : i = [ 8 , 16 ] , containerPadding : n = [ 0 , 0 ] , fields : r = [ ] , children : a , basicForm : o = null } ) => {
const s = di ( r , mi , o ) ;
2025-01-07 09:40:41 +08:00
return L ( "div" , { className : "ff-grid-layout-form" , style : { "--grid-layout-item-margin-x" : ` ${ ( i == null ? void 0 : i [ 0 ] ) ? ? 8 } px ` , "--grid-layout-item-margin-y" : ` ${ ( i == null ? void 0 : i [ 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 : [ s , a && k . cloneElement ( a , { cols : e , rowHeight : t , itemMargin : i , containerPadding : n , fields : r } ) ] } ) ;
2024-12-26 16:06:19 +08:00
} ;
Pt . propTypes = { fields : b . array } ;
2025-01-07 09:40:41 +08:00
const Pn = ( Bt = Pt , ( { code : e , layout : t , name : i , primaryKey : n = 0 , style : r = { } , formProps : a = { } , form : o , basicForm : s , isPreview : l = ! 1 , className : u , onFinish : p , onValuesChange : d = ( ) => {
2024-12-26 17:33:07 +08:00
} , ... h } ) => {
2025-01-07 09:40:41 +08:00
const { align : m , autoComplete : f , resource : C , items : w , hides : x , rowHeight : N , marginX : T , marginY : z , cols : M , listenChangeFields : q , listenChangeFieldsFunc : j , pk : V , uuid : $ } = bn ( e ) , [ v ] = ee . useForm ( o ) , E = H ( ( ) => [ { name : "__PK__" , value : V } , { name : "__PROPS__" , value : a } , { name : "__RESOURCE__" , value : C } , { name : "__LAYOUT_KEY__" , value : e } , { name : "__LAYOUT_UUID__" , value : $ } , { name : "__PRIMARY_KEY__" , value : n } ] , [ V , e , $ , C , n , a ] ) ;
return L ( ee , { className : u , name : i || e , layout : t || m , fields : E , form : v , autoComplete : f , style : { ... r , position : "relative" } , onFinish : p , onValuesChange : ( B , X ) => ( ( { changedValues : Se , allValues : K , listenChangeFields : st , listenChangeFieldsFunc : He , onValuesChange : ot , code : Ft } ) => {
ot ( Se , K ) , He && Array . isArray ( st ) && Ce . exec ( He , { changedValues : Se , allValues : K } , { getFieldValue : v . getFieldValue , setFieldValue : v . setFieldValue , setFieldsValue : v . setFieldsValue , isFieldTouched : v . isFieldTouched , isFieldsTouched : v . isFieldsTouched } ) ;
} ) ( { changedValues : B , allValues : X , listenChangeFields : q , listenChangeFieldsFunc : j , onValuesChange : d , code : e } ) , children : [ g ( Bt , { ... h , form : v , basicForm : s , code : e , fields : w , cols : M , rowHeight : N , itemMargin : [ T , z ] } ) , x == null ? void 0 : x . map ( ( B ) => {
var X ;
return g ( Gt , { name : B . code , children : g ( vn , { form : v , basicForm : s , name : B . code , type : B . type , initialValue : B . initialValue , initialValueLanguage : ( X = B . extras ) == null ? void 0 : X . initialValueLanguage } ) } , JSON . stringify ( B . code ) ) ;
2024-12-26 16:06:19 +08:00
} ) ] } , e ) ;
} ) ;
2025-01-02 19:14:16 +08:00
var Bt ;
const hi = ( { $setting : e , $close : t , extras : i , code : n , primaryKey : r , ... a } ) => {
2025-01-07 09:40:41 +08:00
const [ o ] = ee . useForm ( ) , s = kn ( n , r , e ) ;
return A ( ( ) => {
2025-01-02 19:14:16 +08:00
s && o . setFieldsValue ( s ) ;
2025-01-07 09:40:41 +08:00
} , [ s ] ) , g ( G , { actions : L ( k . Fragment , { children : [ g ( P , { name : "保存" , type : "primary" , widget : ( ) => {
2025-01-02 19:14:16 +08:00
const l = o . getFieldValue ( "__RESOURCE__" ) , { initDataUri : u = ` /api/ ${ n } ` } = e || { } ;
2025-01-07 09:40:41 +08:00
o . validateFields ( ! 0 ) . then ( ( p ) => l ? c . pick ( p , [ l ] ) : p ) . then ( ( p ) => O . post ( r ? ` ${ u } / ${ r } ` : ` ${ u } ` , p ) . msg ( t ) ) . catch ( ( ) => _ . error ( "请先完善表单信息" , { duration : 2e3 } ) ) ;
} } ) , g ( P , { name : "取消" , widget : ( ) => t ( ! 1 ) } ) ] } ) , extras : i , children : g ( Pn , { form : o , code : n , primaryKey : r , ... a } ) } ) ;
2025-01-02 19:14:16 +08:00
} , qt = /* @__PURE__ */ new Set ( ) , bt = ( e = [ ] , t = 0 ) => {
2024-12-26 16:06:19 +08:00
const i = e [ t ] ;
2025-01-02 19:14:16 +08:00
if ( i . length && ! qt . has ( i ) ) {
2024-12-26 16:06:19 +08:00
const n = document . createElement ( "script" ) ;
n . setAttribute ( "src" , i ) , n . setAttribute ( "data-namespace" , i ) , e . length > t + 1 && ( n . onload = ( ) => {
bt ( e , t + 1 ) ;
} , n . onerror = ( ) => {
bt ( e , t + 1 ) ;
2025-01-02 19:14:16 +08:00
} ) , qt . add ( i ) , document . body . appendChild ( n ) ;
2024-12-26 16:06:19 +08:00
}
2025-01-07 09:40:41 +08:00
} , Ct = ( { className : e , type : t , style : i = { } , ... n } ) => g ( "span" , { role : "img" , className : I ( "ff-iconfont" , e ) , style : i , ... n , children : g ( "svg" , { style : { width : "1em" , height : "1em" , fill : "currentColor" , overflow : "hidden" } , viewBox : "0 0 1024 1024" , children : g ( "use" , { xlinkHref : ` # ${ t } ` } ) } ) } ) ;
2024-12-26 16:06:19 +08:00
Ct . propTypes = { className : b . string , type : b . string . isRequired , style : b . object } , Ct . init = bt ;
2025-01-07 09:40:41 +08:00
const Tn = ( e , t , i , { isReplaceRouteHistory : n = ! 1 } = { } ) => ue . redirect ( i , t , { replace : n } ) , Nn = ( e , t = { } , i , n = { } ) => {
2024-12-26 16:06:19 +08:00
var a ;
2025-01-02 19:14:16 +08:00
const r = ( a = n . router ) == null ? void 0 : a . reduce ( ( o , [ s , l , u ] ) => {
const p = c . get ( t , [ "router" , s ] ) ;
2024-12-26 16:35:36 +08:00
if ( ! p && p !== 0 && l ) throw ` 请传入 ${ u } ` ;
2025-01-02 19:14:16 +08:00
return ` ${ o } / ${ p } ` ;
2024-12-26 16:06:19 +08:00
} , ` /api/ ${ i } ` ) ;
2025-01-07 09:40:41 +08:00
return O . del ( r , t . param ) . msg ( ) ;
2025-01-02 19:14:16 +08:00
} , Ut = ( e , t , i , { status : { loading : n , disabled : r } , setStatus : a } ) => {
const o = { loading : ( s ) => s === void 0 ? n : a ( ( l ) => ( { ... l , loading : s } ) ) , disabled : ( s ) => s === void 0 ? r : a ( ( l ) => ( { ... l , disabled : s } ) ) } ;
return c . isFunction ( i ) ? i . call ( null , { ... t , ... o } ) : c . isString ( i ) && i ? Ce . exec ( i , t , o ) : null ;
2025-01-07 09:40:41 +08:00
} , Wt = ( e , t , i , n , r ) => c . isString ( i ) && i ? oe . getWidgetComponent ( i ) . then ( ( { default : a } ) => _ . modal ( a , { ... t , $setting : n } , r != null && r . title ? { ... r , title : c . template ( r . title ) ( e ) } : r ) ) . catch ( ( a ) => {
2024-12-26 16:06:19 +08:00
_ . error ( i , { content : a . toString ( ) } ) ;
2025-01-07 09:40:41 +08:00
} ) : _ . modal ( i , { ... t , $setting : n } , r != null && r . title ? { ... r , title : c . template ( r . title ) ( e ) } : r ) , $n = ( e , t , i , n , r ) => _ . modal ( hi , { ... t , $setting : n , code : i } , r != null && r . title ? { ... r , title : c . template ( r . title ) ( e ) } : r ) , Fn = ( e , t , i , n , r ) => _ . modal ( St , { base62params : t , $setting : n , listCode : i } , r != null && r . title ? { ... r , title : c . template ( r . title ) ( e ) } : r ) , En = ( { widget : e , widgetType : t , widgetData : i , widgetProps : n , widgetSetting : r , widgetContainerProps : a } , { onAfterClick : o , onBeforeClick : s } ) => {
const l = le ( te ) , [ u , p ] = F ( { leading : ! 0 , trailing : ! 1 } ) , d = H ( ( ) => {
2024-12-26 16:06:19 +08:00
switch ( t ) {
case "redirect" :
2025-01-07 09:40:41 +08:00
return c . partialRight ( Tn , e , r ) ;
2024-12-26 16:06:19 +08:00
case "func" :
2025-01-02 19:14:16 +08:00
return c . partialRight ( Ut , ( r == null ? void 0 : r . code ) ? ? e , { status : u , setStatus : p } ) ;
2024-12-26 16:06:19 +08:00
case "fsdpf-component" :
2025-01-02 19:14:16 +08:00
return c . partialRight ( Wt , e , r , a ) ;
2024-12-26 16:06:19 +08:00
case "grid-layout-form" :
2025-01-07 09:40:41 +08:00
return c . partialRight ( $n , e , r , a ) ;
2025-01-02 19:14:16 +08:00
case "data-list" :
return c . partialRight ( Fn , e , r , a ) ;
2024-12-26 16:06:19 +08:00
case "destroy" :
2025-01-07 09:40:41 +08:00
return c . partialRight ( Nn , e , r , a ) ;
2024-12-26 16:06:19 +08:00
default :
2025-01-07 09:40:41 +08:00
if ( $t ( e ) || k . isValidElement ( e ) ) return c . partialRight ( Wt , e , r , a ) ;
2025-01-02 19:14:16 +08:00
if ( c . isFunction ( e ) ) return c . partialRight ( Ut , ( r == null ? void 0 : r . code ) || e , { status : u , setStatus : p } ) ;
2024-12-26 16:06:19 +08:00
}
2024-12-26 17:33:07 +08:00
return ( ... h ) => console . error ( "useButton unknown widgetType" , t , ... h ) ;
2024-12-26 16:06:19 +08:00
} , [ e , t ] ) ;
2025-01-07 09:40:41 +08:00
return [ c . debounce ( ( h ) => ( s == null || s ( h ) , Promise . resolve ( ei ( n , h , { list : l } ) ) . then ( ( m ) => d ( h , { ... i , ... m } ) ) . then ( ( m ) => o == null ? void 0 : o ( m ) ) . catch ( console . error ) ) , 300 , { leading : ! 0 , trailing : ! 1 } ) , u ] ;
2025-01-02 19:14:16 +08:00
} , fi = ( { type : e , name : t , className : i , icon : n , iconPosition : r , size : a } , o = "default" ) => H ( ( ) => {
const s = { type : "primary" , className : I ( "ff-button" , i ) , iconPosition : r , size : a } ;
2025-01-07 09:40:41 +08:00
return e === "danger" ? s . danger = ! 0 : e === "default" && ( s . type = e ) , o === "link" || o === "dashed" ? ( s . type = o , e === "default" && ( s . className = I ( s . className , "ff-default" ) ) ) : o !== "circle" && o !== "round" || ( s . shape = o ) , n && ( s . icon = g ( Ct , { type : n } ) ) , t && ( s . children = t ) , s ;
} , [ o , e , i , n , r ] ) , We = ( e ) => function ( { className : t , variant : i , children : n , name : r , icon : a , type : o = "default" , iconPosition : s = "start" , noAuthType : l , onAfterClick : u , onBeforeClick : p , data : d , loading : h , disabled : m , tooltip : f , confirm : C , widget : w = ( ) => {
} , widgetType : x , widgetData : N , widgetProps : T , widgetSetting : z , widgetContainerProps : M , ... q } ) {
const j = c . isEmpty ( f ) || ! f . enabled ? { } : f , V = c . isEmpty ( C ) ? { enabled : ! 1 } : Object . assign ( { enabled : ! 0 } , C ) , $ = fi ( { className : t , name : r , type : o , icon : a , iconPosition : s } , i ? ? e ) , [ v , E ] = F ( ! 1 ) , [ B , { disabled : X , loading : Se } ] = En ( { widget : w , widgetType : x , widgetData : N , widgetProps : T , widgetSetting : z , widgetContainerProps : M } , { onAfterClick : u , onBeforeClick : p } ) ;
return g ( ji , { okText : "确定" , cancelText : "取消" , getPopupContainer : ( K ) => K , ... V , disabled : X || m , open : v , onOpenChange : ( K ) => {
if ( ! K ) return E ( K ) ;
V . enabled ? E ( K ) : B ( d ) ;
2024-12-26 16:06:19 +08:00
} , onConfirm : ( ) => {
2025-01-07 09:40:41 +08:00
B ( d ) ;
2024-12-26 16:06:19 +08:00
} , onClick : ( K ) => {
K . stopPropagation ( ) ;
2025-01-07 09:40:41 +08:00
} , children : g ( Vi , { getPopupContainer : ( K ) => K , ... j , title : v ? null : j == null ? void 0 : j . title , trigger : [ "hover" , "click" ] , children : g ( Xe , { loading : Se || h , disabled : X || m , ... $ , ... q , children : n || r } ) } ) } ) ;
2024-12-26 16:06:19 +08:00
} , P = We ( "default" ) ;
P . propTypes = { type : b . oneOf ( [ "primary" , "default" , "danger" , "" ] ) , size : b . oneOf ( [ "large" , "middle" , "small" ] ) , name : b . string , icon : b . string , iconPosition : b . oneOf ( [ "start" , "end" ] ) , data : b . any , widget : b . any , widgetType : b . oneOf ( [ "destroy" , "redirect" , "func" , "fsdpf-component" , "grid-layout-form" , "grid-layout" , "data-list" ] ) , widgetData : b . object , widgetProps : b . object , widgetSetting : b . object , widgetContainerProps : b . object , tooltip : b . exact ( { title : b . string . isRequired , placement : b . oneOf ( [ "top" , "left" , "right" , "bottom" , "topLeft" , "topRight" , "bottomLeft" , "bottomRight" , "leftTop" , "leftBottom" , "rightTop" , "rightBottom" ] ) , enabled : b . oneOfType ( [ b . bool , b . number ] ) , getPopupContainer : b . func } ) , confirm : b . exact ( { title : b . string . isRequired , cancelText : b . string , okText : b . string , okType : b . oneOf ( [ "primary" , "default" , "danger" , "" ] ) , placement : b . oneOf ( [ "top" , "left" , "right" , "bottom" , "topLeft" , "topRight" , "bottomLeft" , "bottomRight" , "leftTop" , "leftBottom" , "rightTop" , "rightBottom" ] ) , enabled : b . oneOfType ( [ b . bool , b . number ] ) , getPopupContainer : b . func , arrow : b . oneOfType ( [ b . bool , b . exact ( { pointAtCenter : b . bool } ) ] ) } ) } ;
2025-01-07 09:40:41 +08:00
const Rn = We ( "link" ) , On = We ( "circle" ) , Ln = We ( "round" ) , An = We ( "dashed" ) , Tt = ( { data : e , widget : t , widgetType : i = "fsdpf-component" , widgetData : n , widgetProps : r , widgetSetting : a , widgetContainerProps : o , onAfterClick : s , onBeforeClick : l , children : u , extras : p } ) => {
const d = le ( te ) , [ h , m ] = F ( ! 1 ) , [ f , C ] = F ( "hover" ) , [ w , x ] = F ( { } ) , [ N , T ] = F ( ) , { placement : z , align : M , arrow : q = { pointAtCenter : ! 0 } , getPopupContainer : j , ... V } = o || { } ;
A ( ( ) => {
i == "grid-layout-form" ? T ( k . createElement ( hi , { ... n , $setting : a , code : t } ) ) : i == "data-list" ? T ( k . createElement ( St , { base62params : e , $setting : a , listCode : t } ) ) : c . isString ( t ) ? oe . getWidgetComponent ( t ) . then ( ( { default : E } ) => {
T ( k . createElement ( E , { ... n , $setting : a } ) ) ;
} ) . catch ( ( E ) => T ( E . toString ( ) ) ) : $t ( t ) ? T ( k . createElement ( t , { ... n , $setting : a } ) ) : k . isValidElement ( t ) && T ( k . cloneElement ( t , { ... n , $setting : a } ) ) ;
} , [ t , i , n ] ) , A ( ( ) => {
Promise . resolve ( ei ( r , e , { list : d } ) ) . then ( x ) ;
} , [ r , e , d . getBase62params ] ) ;
const $ = ( E , B = ! 1 ) => ( m ( E ) , ! E && C ( "hover" ) , E ? l == null ? void 0 : l ( w ) : s == null ? void 0 : s ( B ) ) , v = ( E ) => {
2024-12-26 16:06:19 +08:00
m ( ! 0 ) , C ( "click" ) ;
} ;
2025-01-07 09:40:41 +08:00
return g ( Ii , { zIndex : 1080 , placement : z , onPopupClick : v , onClick : v , open : h , align : M , arrow : q , trigger : f , getPopupContainer : j , content : g ( jn , { ... V , extras : p , children : N && k . cloneElement ( N , { ... w , $close : ( E ) => $ ( ! 1 , E ) } ) } ) , children : u , onOpenChange : $ } ) ;
2025-01-02 19:14:16 +08:00
} , jn = ( { title : e , className : t , children : i , extras : n , width : r , height : a , ... o } ) => {
2025-01-07 09:40:41 +08:00
const [ s , l ] = F ( { } ) , u = Y ( ( m , f ) => l ( ( C ) => ( { ... C , [ m ] : f } ) ) , [ ] ) , p = Y ( ( m ) => l ( ( f ) => ( { ... f , [ m ] : void 0 } ) ) , [ ] ) , d = e ? k . createElement ( "div" , { className : "ff-popup-title" } , e ) : s == null ? void 0 : s . title , h = n ? ? k . createElement ( "div" , { className : "ff-popup-reserved-extras" } , n ) ;
return g ( qe . Provider , { value : { ele : s , mount : u , unmount : p } , children : L ( "div" , { className : I ( "ff-popup ff-popover" , t , s . rootClassName ) , style : { width : r , height : a } , ... o , children : [ L ( "div" , { className : "ff-popup-header" , children : [ d , s == null ? void 0 : s [ "sub-title" ] ] } ) , i , L ( "div" , { className : "ff-popup-footer" , children : [ h , s == null ? void 0 : s . extras , s == null ? void 0 : s . actions ] } ) ] } ) } ) ;
2024-12-26 16:06:19 +08:00
} ;
2025-01-07 09:40:41 +08:00
Tt . propTypes = { widgetType : b . oneOf ( [ "fsdpf-component" , "grid-layout-form" , "data-list" ] ) } ;
2025-01-02 19:14:16 +08:00
const Ht = ( { options : e = [ ] , triggerWeights : t = [ "grid-layout-form" , "grid-layout" , "fsdpf-component" , "print" ] , onAfterClick : i = ( m , f , C ) => {
2024-12-26 17:33:07 +08:00
} , onBeforeClick : n = ( m , f , C ) => {
2025-01-07 09:40:41 +08:00
} , labelVariant : r = "link" , labelSize : a , labelRender : o , btnVariant : s , btnSize : l , btnRender : u = ( m , f ) => g ( P , { ... m , data : f } , m . uuid || Le ( ) ) , widgetContainerProps : p = { } , children : d , data : h } ) => {
if ( c . isEmpty ( e ) ) return d ;
const [ m , f ] = H ( ( ) => ( e || [ ] ) . reduce ( ( w , x ) => {
const N = t . indexOf ( x . widgetType ) ;
return N === - 1 ? w [ 1 ] . push ( x ) : w [ 0 ] ? N < t . indexOf ( w [ 0 ] . widgetType ) ? ( w [ 1 ] . push ( w [ 0 ] ) , w [ 0 ] = x ) : w [ 1 ] . push ( x ) : w [ 0 ] = x , w ;
2024-12-26 16:06:19 +08:00
} , [ null , [ ] ] ) , [ e , t ] ) ;
2025-01-07 09:40:41 +08:00
o ? d = o ( m , h ) || d : d || ( d = g ( Xe , { ... fi ( Object . assign ( m != null && m . name || m != null && m . icon ? { } : { icon : "icon-location" } , m , { size : a } ) , r ) } ) ) ;
2025-01-02 19:14:16 +08:00
const C = f . map ( ( w ) => u ( Object . assign ( { uuid : w . uuid , type : w . type , name : w . name , widget : w . widget , widgetType : w . widgetType , widgetProps : w . widgetProps , widgetData : w . widgetData , widgetSetting : w . widgetSetting , widgetContainerProps : w . widgetContainerSetting , confirm : w . confirm , onAfterClick : c . partialRight ( i , w , h ) , onBeforeClick : c . partialRight ( n , w , h ) } , { size : l , variant : s } ) , h ) ) ;
2025-01-07 09:40:41 +08:00
return g ( Tt , { widget : m == null ? void 0 : m . widget , widgetType : m == null ? void 0 : m . widgetType , widgetProps : m == null ? void 0 : m . widgetProps , widgetSetting : m == null ? void 0 : m . widgetSetting , widgetContainerProps : Object . assign ( { } , p , m == null ? void 0 : m . widgetContainerProps ) , data : h , widgetData : m == null ? void 0 : m . widgetData , extras : C , onAfterClick : c . partialRight ( i , m , h ) , onBeforeClick : c . partialRight ( n , m , h ) , children : d } ) ;
2024-12-26 16:06:19 +08:00
} ;
2025-01-07 09:40:41 +08:00
Ht . propTypes = { triggerWeights : b . array , options : b . arrayOf ( b . shape ( { ... P . propTypes , widgetType : P . propTypes . widgetType . isRequired } ) ) , btnSize : P . propTypes . size , btnRender : b . func , btnVariant : b . oneOf ( [ "" , "default" , "link" , "circle" , "round" , "dashed" ] ) , labelVariant : b . oneOf ( [ "" , "default" , "link" , "circle" , "round" , "dashed" ] ) , labelRender : b . func , labelSize : P . propTypes . size , onAfterClick : b . func , onBeforeClick : b . func , widgetContainerProps : P . propTypes . widgetContainerProps , data : P . propTypes . data } , P . Link = Rn , P . Link . defaultProps = P . defaultProps , P . Link . propTypes = P . propTypes , P . Circle = On , P . Circle . defaultProps = P . defaultProps , P . Circle . propTypes = P . propTypes , P . Round = Ln , P . Round . defaultProps = P . defaultProps , P . Round . propTypes = P . propTypes , P . Dashed = An , P . Dashed . defaultProps = P . defaultProps , P . Dashed . propTypes = P . propTypes , P . Popover = Tt , P . GroupPopover = Ht ;
2025-01-02 19:14:16 +08:00
const Vn = ( { fields : e , formProps : t , $close : i } ) => {
2025-01-07 09:40:41 +08:00
const [ n ] = ee . useForm ( ) , r = H ( ( ) => [ { name : "__PROPS__" , value : t } ] , [ t ] ) ;
return g ( G , { actions : L ( k . Fragment , { children : [ g ( P , { name : "取消" , widget : ( ) => i ( ! 1 ) } ) , g ( P , { name : "确定" , type : "primary" , widget : ( ) => n . validateFields ( ! 0 ) . then ( i ) } ) ] } ) , children : g ( ee , { fields : r , form : n , className : "ff-modal-form" , children : e == null ? void 0 : e . map ( ( { code : a , ... o } ) => g ( mi , { code : a , ... o } , a ) ) } ) } ) ;
} , In = ( { className : e , $close : t , children : i , title : n , subTitle : r , actions : a , extras : o , zIndex : s , ... l } ) => L ( Ki , { ... l , prefixCls : "ff-drawer" , className : I ( "ff-popup" , e ) , maskMotion : { motionAppear : ! 0 , motionName : "mask-motion" } , motion : ( u ) => ( { motionAppear : ! 0 , motionName : ` panel-motion- ${ u } ` } ) , children : [ L ( "div" , { className : "ff-popup-header" , children : [ g ( "button" , { "aria-label" : "Close" , className : "ff-popup-close" , onClick : l . onClose , children : g ( vt , { type : "close" } ) } ) , n , r ] } ) , g ( "div" , { className : "ff-popup-body" , children : i } ) , L ( "div" , { className : "ff-popup-footer" , children : [ o , a ] } ) ] } ) , Mn = ( { className : e , $close : t , $event : i , children : n , title : r , subTitle : a , actions : o , extras : s , zIndex : l , placement : u , ... p } ) => {
const d = ( i == null ? void 0 : i . pageX ) === void 0 ? { animation : null , maskAnimation : null , mousePosition : { x : null , y : null } } : { animation : "zoom" , maskAnimation : "fade" , mousePosition : { x : i == null ? void 0 : i . pageX , y : i == null ? void 0 : i . pageY } } ;
return g ( Ji , { ... p , ... d , prefixCls : "ff-modal" , modalRender : ( ) => L ( "div" , { className : I ( "ff-modal-content ff-popup" , e ) , children : [ L ( "div" , { className : "ff-popup-header" , children : [ g ( "button" , { "aria-label" : "Close" , className : "ff-popup-close" , onClick : p . onClose , children : g ( vt , { type : "close" } ) } ) , r , a ] } ) , g ( "div" , { className : "ff-popup-body" , children : n } ) , L ( "div" , { className : "ff-popup-footer" , children : [ s , o ] } ) ] } ) } ) ;
2025-01-02 19:14:16 +08:00
} , yi = ( { placement : e , $close : t , $event : i , children : n , title : r , ... a } ) => {
2025-01-07 09:40:41 +08:00
const [ o , s ] = F ( { } ) , [ l , u ] = F ( ! 0 ) , p = Y ( ( f , C ) => s ( ( w ) => ( { ... w , [ f ] : C } ) ) , [ ] ) , d = Y ( ( f ) => s ( ( C ) => ( { ... C , [ f ] : void 0 } ) ) , [ ] ) ;
2025-01-02 19:14:16 +08:00
let h = { ... a , className : o . rootClassName , title : o . title || r && k . createElement ( "div" , { className : I ( "ff-popup-title" ) } , r ) , subTitle : o [ "sub-title" ] , actions : o . actions , extras : o . extras , children : n , $close : t , $event : i , onClose : ( ) => u ( ! 1 ) } ;
2024-12-26 16:06:19 +08:00
const m = ( ) => {
t ( ! 1 ) ;
} ;
2025-01-07 09:40:41 +08:00
return g ( qe . Provider , { value : { ele : o , mount : p , unmount : d } , children : e && e !== "center" ? g ( In , { ... h , placement : e , open : l , afterOpenChange : ( f ) => ! f && m ( ) } ) : g ( Mn , { ... h , visible : l , afterClose : m } ) } ) ;
2024-12-26 16:06:19 +08:00
} ;
2025-01-02 19:14:16 +08:00
yi . propTypes = { placement : b . oneOf ( [ "center" , "left" , "top" , "right" , "bottom" ] ) } ;
2024-12-26 16:06:19 +08:00
const J = ( ) => {
2025-01-02 19:14:16 +08:00
const [ e , t ] = Wi ( { maxCount : 6 , motion : { motionName : "ff-notification-fade" , motionAppear : ! 0 , motionEnter : ! 0 , motionLeave : ! 0 , onLeaveStart : ( a ) => {
const { offsetHeight : o } = a ;
return { height : o } ;
2024-12-26 16:06:19 +08:00
} , onLeaveActive : ( ) => ( { height : 0 , opacity : 0 , margin : 0 } ) } , prefixCls : "ff-notification" } ) , [ , i ] = k . useReducer ( ( a ) => a + 1 , 0 ) ;
2025-01-07 09:40:41 +08:00
A ( ( ) => {
2025-01-02 19:14:16 +08:00
J . $onClick = n , J . $queue . forEach ( ( [ a , o , s ] , l , u ) => {
r ( [ o , s ] , ... a ) , delete u [ l ] ;
2024-12-26 16:06:19 +08:00
} ) ;
} , [ ] ) ;
2025-01-02 19:14:16 +08:00
const n = ( a , o = { } , s = { } ) => new Promise ( ( l , u ) => r ( [ l , u ] , a , o , s ) ) , r = ( [ a , o ] , s , l = { } , u = { } ) => {
2025-01-07 09:40:41 +08:00
const p = J . $index ++ , d = ( h ) => ( ( m , f ) => ( J . $popups . delete ( m ) , i ( ) , f == null ? void 0 : f ( ) ) ) ( p , ( ) => a ( h ) ) ;
2025-01-02 19:14:16 +08:00
if ( s === Qt ) return e . open ( { ... u , key : p , content : k . createElement ( s , { ... l , $close : ( ) => e . close ( p ) } ) } ) ;
2025-01-07 09:40:41 +08:00
J . $popups . set ( p , k . createElement ( yi , { zIndex : p , maskClosable : ! 1 , $event : l == null ? void 0 : l . $event , ... u , key : p , $close : d } , k . isValidElement ( s ) ? k . cloneElement ( s , { ... l , $close : d } ) : s != null && s . name || At . isForwardRef ( s ) || ( s == null ? void 0 : s . $$typeof ) === At . ForwardRef ? k . createElement ( s , { ... l , $close : d } ) : s ) ) , i ( ) ;
2024-12-26 16:06:19 +08:00
} ;
2025-01-07 09:40:41 +08:00
return L ( k . Fragment , { children : [ Array . from ( J . $popups ) . map ( ( [ a , o ] ) => o ) , t ] } ) ;
2024-12-26 16:06:19 +08:00
} ;
J . $popups = /* @__PURE__ */ new Map ( ) , J . $index = 0 , J . $queue = [ ] , J . $onClick = ( ... e ) => new Promise ( ( t , i ) => {
J . $queue . push ( [ e , t , i ] ) ;
} ) ;
2025-01-02 19:14:16 +08:00
const Kt = ( e , t , i = { } ) => J . $onClick ( e , t , i ) , dt = ( e , { showProgress : t , duration : i , ... n } = { duration : 1.5 } ) => J . $onClick ( Qt , { content : e , ... n } , { showProgress : t , duration : i } ) , _ = { modal : Kt , confirm : ( e , t = { } ) => J . $onClick ( _i , { content : e , ... t } , { placement : "center" } ) , form : ( e , t = { } , i = { } ) => Kt ( Vn , { formProps : i , fields : e } , { placement : "center" , ... t } ) . then ( ( n ) => {
2024-12-26 16:06:19 +08:00
if ( n === ! 1 ) throw ! 1 ;
return n ;
} ) , notification : dt , success : ( e , t = { duration : 1.5 } ) => dt ( e , { ... t , className : "ff-notification-success" , icon : "check" } ) , error : ( e , t = { duration : 1.5 } ) => dt ( e , { ... t , className : "ff-notification-error" , icon : "close" } ) } ;
2025-01-07 09:40:41 +08:00
Re . configure ( { showSpinner : ! 1 } ) , Oe . interceptors . request . use ( ( e ) => {
2024-12-26 16:06:19 +08:00
e . headers . Platform = "web" , e . headers . SaaS = window . localStorage . getItem ( "SaaS" ) ;
const t = window . localStorage . getItem ( Ye ) ;
2025-01-07 09:40:41 +08:00
return e . headers . Authorization = t ? ` Bearer ${ t } ` : void 0 , Re . inc ( ) , e ;
} , ( e ) => ( Re . done ( ) , Promise . reject ( { code : - 1 , msg : e } ) ) ) , Oe . interceptors . response . use ( ( { data : e , headers : t } ) => ( Re . done ( ) , { ... e , res : t == null ? void 0 : t . res } ) , function ( e ) {
return Re . done ( ) , Promise . reject ( e . message ) ;
2025-01-02 19:14:16 +08:00
} ) , window . addEventListener ( "unhandledrejection" , gt . onUnhandledRejection ) , gt . onMsg = ( e , t ) => _ [ [ 0 , 1 ] . includes ( e ) ? "success" : "error" ] ( t ) . then ( ( ) => e === 20300 && ue . redirect ( Ae . get ( "Common.WEBSITE_LOGIN_PAGE" ) ) ) ;
2024-12-26 16:06:19 +08:00
const kt = { appUrl : "" , init : ( e , t , i ) => {
2024-12-26 16:35:36 +08:00
kt . appUrl = i , Oe . defaults . baseURL = i , Oe . defaults . timeout = 15e3 , Object . assign ( kt , new gt ( e , t , Oe ) ) ;
2025-01-07 09:40:41 +08:00
} } , O = kt ;
class Nt extends Error {
2024-12-26 16:06:19 +08:00
constructor ( t , i ) {
2025-01-07 09:40:41 +08:00
super ( i ) , Error . captureStackTrace && Error . captureStackTrace ( this , Nt ) , ! i instanceof je && ( this . name = ` ${ t } Error Runtime ` ) ;
2024-12-26 16:06:19 +08:00
}
}
2025-01-02 19:14:16 +08:00
class je extends Error {
2024-12-26 16:06:19 +08:00
constructor ( t , ... i ) {
2025-01-02 19:14:16 +08:00
super ( ... i ) , Error . captureStackTrace && Error . captureStackTrace ( this , je ) , this . name = ` ${ t } Not Found ` ;
2024-12-26 16:06:19 +08:00
}
}
const ut = "mine" , Ye = "token" ;
2025-01-07 09:40:41 +08:00
var be , Ee ;
const se = class se {
2024-12-26 16:06:19 +08:00
constructor ( ) {
2025-01-07 09:40:41 +08:00
R ( this , Ee , /* @__PURE__ */ new Map ( ) ) ;
S ( this , "setVendor" , ( t , i ) => y ( this , Ee ) . set ( t , new Yt ( i , async ( n , r ) => {
2025-01-02 19:14:16 +08:00
var o , s ;
2024-12-26 16:06:19 +08:00
if ( ! ( n != null && n . default ) ) throw "@pkg not found" ;
let a = ( ) => r ;
switch ( "function" ) {
2025-01-02 19:14:16 +08:00
case typeof ( a = ( o = n . default ) == null ? void 0 : o [ ` ./ ${ r } /index.jsx ` ] ) :
case typeof ( a = ( s = n . default ) == null ? void 0 : s [ ` ./ ${ r } /index.js ` ] ) :
2024-12-26 16:06:19 +08:00
return a ( ) ;
}
2025-01-02 19:14:16 +08:00
throw new je ( r ) ;
2024-12-26 16:06:19 +08:00
} ) ) ) ;
S ( 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 [ , i ] = t == null ? void 0 : t . split ( "@pkg/" ) ;
2025-01-02 19:14:16 +08:00
if ( ! i ) throw new je ( t ) ;
2024-12-26 16:06:19 +08:00
try {
2025-01-07 09:40:41 +08:00
return y ( this , Ee ) . has ( "pkg" ) ? await y ( this , Ee ) . get ( "pkg" ) . get ( i ) : await import ( ` ${ O . appUrl } /api/pkg-import/web?name= ${ t } ` ) ;
2024-12-26 16:06:19 +08:00
} catch ( n ) {
2025-01-07 09:40:41 +08:00
throw new Nt ( t , n ) ;
2024-12-26 16:06:19 +08:00
}
} ) ;
2025-01-07 09:40:41 +08:00
S ( this , "getRoutes" , ( ) => O . 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 : i , ... n } ) => [ i , { uuid : i , ... n } ] ) ) . then ( ( t ) => new Map ( t ) ) ) ;
S ( this , "getMenus" , ( ) => O . get ( "/api/my-menu" ) ) ;
S ( this , "getConfigure" , ( ) => O . get ( "api/init-configure" ) ) ;
S ( this , "getWidgetOperationAuth" , ( ) => O . get ( "/api/init-widget-operation-auth" ) . then ( ( t ) => t . reduce ( ( i , { uuid : n , auth : r } ) => [ ... i , [ n , r ] ] , [ ] ) ) ) ;
S ( this , "getPhoneNumber" , ( t ) => O . get ( ` /api/user-wx-phone-number/ ${ t } ` ) ) ;
2024-12-26 16:06:19 +08:00
S ( this , "getUserToken" , ( ) => {
const t = window . localStorage . getItem ( Ye ) ;
if ( ! t ) return "" ;
const i = t . split ( "." ) ;
if ( ! Array . isArray ( i ) || i . length !== 3 ) throw "登录令牌无效!" ;
const { iat : n } = JSON . parse ( window . atob ( i [ 1 ] ) ) ;
if ( Math . floor ( ( /* @__PURE__ */ new Date ( ) ) . getTime ( ) / 1e3 ) - n > 2592e3 ) throw "登录令牌已过期, 请重新登录!" ;
return t ;
} ) ;
S ( this , "checkUserToken" , ( ) => {
try {
return ! ! this . getUserToken ( ) ;
} catch {
return ! 1 ;
}
} ) ;
S ( this , "getUserInfo" , ( t = ! 0 ) => {
var i ;
try {
const n = this . getUserToken ( ) ;
if ( ! n ) return Promise . resolve ( null ) ;
2025-01-07 09:40:41 +08:00
const { iat : r } = JSON . parse ( window . atob ( ( i = n == null ? void 0 : n . split ( "." ) ) == null ? void 0 : i [ 1 ] ) ) , { iat : a , ... o } = O . decode ( window . localStorage . getItem ( ut ) || "" , { } ) ;
return a === r ? Promise . resolve ( o ) : O . get ( "/api/mine-info" ) . then ( ( { User : s = null } ) => ( window . localStorage . setItem ( ut , O . encode ( { ... s , iat : r } ) ) , s ) ) ;
2024-12-26 16:06:19 +08:00
} catch ( n ) {
console . error ( n ) , t && _ . error ( "请登录" ) . then ( this . logout ) ;
}
return Promise . resolve ( null ) ;
} ) ;
2025-01-07 09:40:41 +08:00
S ( this , "login" , ( t , i , n = { } ) => O . post ( "/api/user-token" , { username : t , passwd : Hi . hash ( i ) , platform : "web" , ... n } ) . then ( ( { token : r } ) => ( window . localStorage . setItem ( Ye , r ) , r ) ) ) ;
2024-12-26 16:06:19 +08:00
S ( this , "logout" , ( t ) => ( window . localStorage . removeItem ( ut ) , window . localStorage . removeItem ( Ye ) , t == null ? void 0 : t ( ) ) ) ;
2025-01-07 09:40:41 +08:00
if ( y ( se , be ) ) return y ( se , be ) ;
2024-12-26 16:06:19 +08:00
}
} ;
2025-01-07 09:40:41 +08:00
be = new WeakMap ( ) , Ee = new WeakMap ( ) , R ( se , be , null ) , S ( se , "getInstance" , ( ) => ( y ( se , be ) || W ( se , be , new se ( ) ) , y ( se , be ) ) ) ;
let xt = se ;
const oe = xt . getInstance ( ) , zn = k . createContext ( { user : { } , initUser : ( ) => {
2025-01-02 19:14:16 +08:00
} , initUserComplete : ! 1 } ) , Dn = k . createContext ( { set : ( ) => {
2024-12-26 16:06:19 +08:00
} , get : ( ) => {
} , assign : ( ) => {
} , currentRoute : ( ) => {
2025-01-07 09:40:41 +08:00
} } ) , $t = ( e ) => ! ! ( e != null && e . name ) && ( e . prototype instanceof k . Component || /^[A-Z]/ . test ( e . name ) ) , Bn = ( e , t ) => {
2024-12-26 16:06:19 +08:00
if ( ! e || typeof window > "u" ) return ;
let i = document . querySelector ( ` style[ff-style-token=" ${ t } "] ` ) ;
return i ? ( i . innerHTML = e , e ) : ( i = document . createElement ( "style" ) , i . setAttribute ( "ff-style-token" , t ) , i . setAttribute ( "type" , "text/css" ) , i . innerHTML = e , document . head . appendChild ( i ) , e ) ;
2025-01-07 09:40:41 +08:00
} , qn = Object . freeze ( Object . defineProperty ( { _ _proto _ _ : null , AppContext : zn , AppGlobalParamsContext : Dn , cache : Yt , configure : Ae , default : oe , func : Ce , http : O , insertStyle : Bn , isReactComponent : $t , route : ue } , Symbol . toStringTag , { value : "Module" } ) ) ;
2024-12-26 16:06:19 +08:00
export {
2025-01-02 19:14:16 +08:00
pi as $ ,
en as A ,
nn as B ,
Xi as C ,
2024-12-26 16:06:19 +08:00
Qe as D ,
2025-01-02 19:14:16 +08:00
gr as E ,
pr as F ,
hr as G ,
dn as H ,
ri as I ,
2024-12-26 16:06:19 +08:00
ht as J ,
2025-01-02 19:14:16 +08:00
Qi as K ,
Zi as L ,
2024-12-26 16:06:19 +08:00
rt as M ,
2025-01-02 19:14:16 +08:00
fr as N ,
yr as O ,
2024-12-26 16:06:19 +08:00
Ue as P ,
at as Q ,
2025-01-02 19:14:16 +08:00
li as R ,
wr as S ,
br as T ,
Pn as U ,
2024-12-26 16:06:19 +08:00
Pt as V ,
2025-01-02 19:14:16 +08:00
mi as W ,
hi as X ,
bn as Y ,
Cn as Z ,
kn as _ ,
Zt as a ,
xn as a0 ,
Cr as a1 ,
2024-12-26 16:06:19 +08:00
Ct as a2 ,
P as a3 ,
2025-01-02 19:14:16 +08:00
Gi as a4 ,
2025-01-07 09:40:41 +08:00
En as a5 ,
2024-12-26 16:06:19 +08:00
G as a6 ,
2024-12-26 17:33:07 +08:00
qe as a7 ,
2025-01-02 19:14:16 +08:00
Xt as a8 ,
2024-12-26 16:06:19 +08:00
J as a9 ,
_ as aa ,
2025-01-02 19:14:16 +08:00
ar as ab ,
sr as ac ,
or as ad ,
2025-01-07 09:40:41 +08:00
oe as ae ,
$t as af ,
2025-01-02 19:14:16 +08:00
Bn as ag ,
2025-01-07 09:40:41 +08:00
O as ah ,
2025-01-02 19:14:16 +08:00
Yt as ai ,
Ae as aj ,
2024-12-26 16:06:19 +08:00
Ce as ak ,
ue as al ,
2025-01-02 19:14:16 +08:00
zn as am ,
Dn as an ,
ei as b ,
cr as c ,
ti as d ,
dr as e ,
ur as f ,
Yi as g ,
ai as h ,
mr as i ,
ci as j ,
ui as k ,
gn as l ,
un as m ,
di as n ,
oi as o ,
si as p ,
ln as q ,
2024-12-26 16:06:19 +08:00
ct as r ,
2025-01-02 19:14:16 +08:00
on as s ,
2025-01-07 09:40:41 +08:00
Z as t ,
2025-01-02 19:14:16 +08:00
lr as u ,
an as v ,
2024-12-26 16:06:19 +08:00
St as w ,
2025-01-07 09:40:41 +08:00
te as x ,
2025-01-02 19:14:16 +08:00
cn as y ,
mn as z
2024-12-26 16:06:19 +08:00
} ;