2024-04-17 11:32:24 +02:00
/******/ // The require scope
/******/ var _ _webpack _require _ _ = { } ;
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ ( ( ) => {
/******/ // define getter functions for harmony exports
/******/ _ _webpack _require _ _ . d = ( exports , definition ) => {
/******/ for ( var key in definition ) {
/******/ if ( _ _webpack _require _ _ . o ( definition , key ) && ! _ _webpack _require _ _ . o ( exports , key ) ) {
/******/ Object . defineProperty ( exports , key , { enumerable : true , get : definition [ key ] } ) ;
/******/ }
/******/ }
/******/ } ;
/******/ } ) ( ) ;
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ ( ( ) => {
/******/ _ _webpack _require _ _ . o = ( obj , prop ) => ( Object . prototype . hasOwnProperty . call ( obj , prop ) )
/******/ } ) ( ) ;
/******/
/************************************************************************/
var _ _webpack _exports _ _ = { } ;
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
// EXPORTS
_ _webpack _require _ _ . d ( _ _webpack _exports _ _ , {
zj : ( ) => ( /* reexport */ getConfig ) ,
SD : ( ) => ( /* reexport */ getContext ) ,
V6 : ( ) => ( /* reexport */ getElement ) ,
jb : ( ) => ( /* binding */ privateApis ) ,
M _ : ( ) => ( /* reexport */ store ) ,
hb : ( ) => ( /* reexport */ useCallback ) ,
vJ : ( ) => ( /* reexport */ useEffect ) ,
ip : ( ) => ( /* reexport */ useInit ) ,
Nf : ( ) => ( /* reexport */ useLayoutEffect ) ,
Kr : ( ) => ( /* reexport */ useMemo ) ,
li : ( ) => ( /* reexport */ hooks _module _F ) ,
J0 : ( ) => ( /* reexport */ hooks _module _p ) ,
FH : ( ) => ( /* reexport */ useWatch ) ,
v4 : ( ) => ( /* reexport */ withScope )
} ) ;
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
; // CONCATENATED MODULE: ./node_modules/preact/dist/preact.module.js
var n , l , preact _module _u , preact _module _t , i , preact _module _o , r , preact _module _f , preact _module _e , preact _module _c = { } , s = [ ] , a = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i , h = Array . isArray ; function v ( n , l ) { for ( var u in l ) n [ u ] = l [ u ] ; return n } function p ( n ) { var l = n . parentNode ; l && l . removeChild ( n ) } function y ( l , u , t ) { var i , o , r , f = { } ; for ( r in u ) "key" == r ? i = u [ r ] : "ref" == r ? o = u [ r ] : f [ r ] = u [ r ] ; if ( arguments . length > 2 && ( f . children = arguments . length > 3 ? n . call ( arguments , 2 ) : t ) , "function" == typeof l && null != l . defaultProps ) for ( r in l . defaultProps ) void 0 === f [ r ] && ( f [ r ] = l . defaultProps [ r ] ) ; return d ( l , f , i , o , null ) } function d ( n , t , i , o , r ) { var f = { type : n , props : t , key : i , ref : o , _ _k : null , _ _ : null , _ _b : 0 , _ _e : null , _ _d : void 0 , _ _c : null , constructor : void 0 , _ _v : null == r ? ++ preact _module _u : r , _ _i : - 1 , _ _u : 0 } ; return null == r && null != l . vnode && l . vnode ( f ) , f } function _ ( ) { return { current : null } } function g ( n ) { return n . children } function b ( n , l ) { this . props = n , this . context = l } function m ( n , l ) { if ( null == l ) return n . _ _ ? m ( n . _ _ , n . _ _i + 1 ) : null ; for ( var u ; l < n . _ _k . length ; l ++ ) if ( null != ( u = n . _ _k [ l ] ) && null != u . _ _e ) return u . _ _e ; return "function" == typeof n . type ? m ( n ) : null } function w ( n , u , t ) { var i , o = n . _ _v , r = o . _ _e , f = n . _ _P ; if ( f ) return ( i = v ( { } , o ) ) . _ _v = o . _ _v + 1 , l . vnode && l . vnode ( i ) , M ( f , i , o , n . _ _n , void 0 !== f . ownerSVGElement , 32 & o . _ _u ? [ r ] : null , u , null == r ? m ( o ) : r , ! ! ( 32 & o . _ _u ) , t ) , i . _ _v = o . _ _v , i . _ _ . _ _k [ i . _ _i ] = i , i . _ _d = void 0 , i . _ _e != r && k ( i ) , i } function k ( n ) { var l , u ; if ( null != ( n = n . _ _ ) && null != n . _ _c ) { for ( n . _ _e = n . _ _c . base = null , l = 0 ; l < n . _ _k . length ; l ++ ) if ( null != ( u = n . _ _k [ l ] ) && null != u . _ _e ) { n . _ _e = n . _ _c . base = u . _ _e ; break } return k ( n ) } } function x ( n ) { ( ! n . _ _d && ( n . _ _d = ! 0 ) && i . push ( n ) && ! C . _ _r ++ || preact _module _o !== l . debounceRendering ) && ( ( preact _module _o = l . debounceRendering ) || r ) ( C ) } function C ( ) { var n , u , t , o = [ ] , r = [ ] ; for ( i . sort ( preact _module _f ) ; n = i . shift ( ) ; ) n . _ _d && ( t = i . length , u = w ( n , o , r ) || u , 0 === t || i . length > t ? ( j ( o , u , r ) , r . length = o . length = 0 , u = void 0 , i . sort ( preact _module _f ) ) : u && l . _ _c && l . _ _c ( u , s ) ) ; u && j ( o , u , r ) , C . _ _r = 0 } function P ( n , l , u , t , i , o , r , f , e , a , h ) { var v , p , y , d , _ , g = t && t . _ _k || s , b = l . length ; for ( u . _ _d = e , S ( u , l , g ) , e = u . _ _d , v = 0 ; v < b ; v ++ ) null != ( y = u . _ _k [ v ] ) && "boolean" != typeof y && "function" != typeof y && ( p = - 1 === y . _ _i ? preact _module _c : g [ y . _ _i ] || preact _module _c , y . _ _i = v , M ( n , y , p , i , o , r , f , e , a , h ) , d = y . _ _e , y . ref && p . ref != y . ref && ( p . ref && N ( p . ref , null , y ) , h . push ( y . ref , y . _ _c || d , y ) ) , null == _ && null != d && ( _ = d ) , 65536 & y . _ _u || p . _ _k === y . _ _k ? e = $ ( y , e , n ) : "function" == typeof y . type && void 0 !== y . _ _d ? e = y . _ _d : d && ( e = d . nextSibling ) , y . _ _d = void 0 , y . _ _u &= - 196609 ) ; u . _ _d = e , u . _ _e = _ } function S ( n , l , u ) { var t , i , o , r , f , e = l . length , c = u . length , s = c , a = 0 ; for ( n . _ _k = [ ] , t = 0 ; t < e ; t ++ ) r = t + a , null != ( i = n . _ _k [ t ] = null == ( i = l [ t ] ) || "boolean" == typeof i || "function" == typeof i ? null : "string" == typeof i || "number" == typeof i || "bigint" == typeof i || i . constructor == String ? d ( null , i , null , null , null ) : h ( i ) ? d ( g , { children : i } , null , null , null ) : void 0 === i . constructor && i . _ _b > 0 ? d ( i . type , i . props , i . key , i . ref ? i . ref : null , i . _ _v ) : i ) ? ( i . _ _ = n , i . _ _b = n . _ _b + 1 , f = I ( i , u , r , s ) , i . _ _i = f , o = null , - 1 !== f && ( s -- , ( o = u [ f ] ) && ( o . _ _u |= 131072 ) ) , null == o || null === o . _ _v ? ( - 1 == f && a -- , "function" != typeof i . type && ( i . _ _u |= 65536 ) ) : f !== r && ( f === r + 1 ? a ++ : f > r ? s > e - r ? a += f - r : a -- : f < r ? f == r - 1 && ( a = f - r ) : a = 0 , f !== t + a && ( i . _ _u |= 65536 ) ) ) : ( o = u [ r ] ) && null == o . key && o . _ _e && 0 == ( 131072 & o . _ _u ) && ( o . _ _e == n . _ _d && ( n . _ _d = m ( o ) ) , O ( o , o , ! 1 ) , u [ r ] = null , s -- ) ; if ( s ) for ( t = 0 ; t < c ; t ++ ) null != ( o = u [ t ] ) && 0 == ( 131072 & o . _ _u ) && ( o . _ _e == n . _ _d && ( n . _ _d = m ( o ) ) , O ( o , o ) ) } function $ ( n , l , u ) { var t , i ; if ( "function" == typeof n . type ) { for ( t = n . _ _k , i = 0 ; t && i < t . length ; i ++ ) t [ i ] && ( t [ i ] . _ _ = n , l = $ ( t [ i ] , l , u ) ) ; return l } n . _ _e != l && ( u . insertBefore ( n . _ _e , l || null ) , l = n . _ _e ) ; do { l = l && l . nextSibling } while ( null != l && 8 === l . nodeType ) ; return l } function H ( n , l ) { return l = l || [ ] , null == n || "boolean" == typeof n || ( h ( n ) ? n . some ( function ( n ) { H ( n , l ) } ) : l . push ( n ) ) , l } function I ( n , l , u , t ) { var i = n . key , o = n . type , r = u - 1 , f = u + 1 , e = l [ u ] ; if ( null === e || e && i == e . key && o === e . type && 0 == ( 131072 & e . _ _u ) ) return u ; if ( t > ( null != e && 0 == ( 131072 & e . _ _u ) ? 1 : 0 ) ) for ( ; r >= 0 || f < l . length ; ) { if ( r >= 0 ) { if ( ( e = l [ r ] ) && 0 == ( 131072 & e . _ _u ) && i == e . key && o === e . type ) return r ; r -- } if ( f < l . length ) { if ( ( e = l [ f ] ) && 0 == ( 131072 & e . _ _u ) && i == e . key && o === e . type ) return f ; f ++ } } return - 1 } function T ( n , l , u ) { "-" === l [ 0 ] ? n . setProperty ( l , null == u ? "" : u ) : n [ l ] = null == u ? "" : "number" != typeof u || a . test ( l )
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
; // CONCATENATED MODULE: ./node_modules/preact/hooks/dist/hooks.module.js
var hooks _module _t , hooks _module _r , hooks _module _u , hooks _module _i , hooks _module _o = 0 , hooks _module _f = [ ] , hooks _module _c = [ ] , hooks _module _e = l , hooks _module _a = hooks _module _e . _ _b , hooks _module _v = hooks _module _e . _ _r , hooks _module _l = hooks _module _e . diffed , hooks _module _m = hooks _module _e . _ _c , hooks _module _s = hooks _module _e . unmount , hooks _module _d = hooks _module _e . _ _ ; function hooks _module _h ( n , t ) { hooks _module _e . _ _h && hooks _module _e . _ _h ( hooks _module _r , n , hooks _module _o || t ) , hooks _module _o = 0 ; var u = hooks _module _r . _ _H || ( hooks _module _r . _ _H = { _ _ : [ ] , _ _h : [ ] } ) ; return n >= u . _ _ . length && u . _ _ . push ( { _ _V : hooks _module _c } ) , u . _ _ [ n ] } function hooks _module _p ( n ) { return hooks _module _o = 1 , hooks _module _y ( hooks _module _D , n ) } function hooks _module _y ( n , u , i ) { var o = hooks _module _h ( hooks _module _t ++ , 2 ) ; if ( o . t = n , ! o . _ _c && ( o . _ _ = [ i ? i ( u ) : hooks _module _D ( void 0 , u ) , function ( n ) { var t = o . _ _N ? o . _ _N [ 0 ] : o . _ _ [ 0 ] , r = o . t ( t , n ) ; t !== r && ( o . _ _N = [ r , o . _ _ [ 1 ] ] , o . _ _c . setState ( { } ) ) } ] , o . _ _c = hooks _module _r , ! hooks _module _r . u ) ) { var f = function ( n , t , r ) { if ( ! o . _ _c . _ _H ) return ! 0 ; var u = o . _ _c . _ _H . _ _ . filter ( function ( n ) { return ! ! n . _ _c } ) ; if ( u . every ( function ( n ) { return ! n . _ _N } ) ) return ! c || c . call ( this , n , t , r ) ; var i = ! 1 ; return u . forEach ( function ( n ) { if ( n . _ _N ) { var t = n . _ _ [ 0 ] ; n . _ _ = n . _ _N , n . _ _N = void 0 , t !== n . _ _ [ 0 ] && ( i = ! 0 ) } } ) , ! ( ! i && o . _ _c . props === n ) && ( ! c || c . call ( this , n , t , r ) ) } ; hooks _module _r . u = ! 0 ; var c = hooks _module _r . shouldComponentUpdate , e = hooks _module _r . componentWillUpdate ; hooks _module _r . componentWillUpdate = function ( n , t , r ) { if ( this . _ _e ) { var u = c ; c = void 0 , f ( n , t , r ) , c = u } e && e . call ( this , n , t , r ) } , hooks _module _r . shouldComponentUpdate = f } return o . _ _N || o . _ _ } function hooks _module _ ( n , u ) { var i = hooks _module _h ( hooks _module _t ++ , 3 ) ; ! hooks _module _e . _ _s && hooks _module _C ( i . _ _H , u ) && ( i . _ _ = n , i . i = u , hooks _module _r . _ _H . _ _h . push ( i ) ) } function hooks _module _A ( n , u ) { var i = hooks _module _h ( hooks _module _t ++ , 4 ) ; ! hooks _module _e . _ _s && hooks _module _C ( i . _ _H , u ) && ( i . _ _ = n , i . i = u , hooks _module _r . _ _h . push ( i ) ) } function hooks _module _F ( n ) { return hooks _module _o = 5 , hooks _module _q ( function ( ) { return { current : n } } , [ ] ) } function hooks _module _T ( n , t , r ) { hooks _module _o = 6 , hooks _module _A ( function ( ) { return "function" == typeof n ? ( n ( t ( ) ) , function ( ) { return n ( null ) } ) : n ? ( n . current = t ( ) , function ( ) { return n . current = null } ) : void 0 } , null == r ? r : r . concat ( n ) ) } function hooks _module _q ( n , r ) { var u = hooks _module _h ( hooks _module _t ++ , 7 ) ; return hooks _module _C ( u . _ _H , r ) ? ( u . _ _V = n ( ) , u . i = r , u . _ _h = n , u . _ _V ) : u . _ _ } function hooks _module _x ( n , t ) { return hooks _module _o = 8 , hooks _module _q ( function ( ) { return n } , t ) } function hooks _module _P ( n ) { var u = hooks _module _r . context [ n . _ _c ] , i = hooks _module _h ( hooks _module _t ++ , 9 ) ; return i . c = n , u ? ( null == i . _ _ && ( i . _ _ = ! 0 , u . sub ( hooks _module _r ) ) , u . props . value ) : n . _ _ } function V ( n , t ) { hooks _module _e . useDebugValue && hooks _module _e . useDebugValue ( t ? t ( n ) : n ) } function hooks _module _b ( n ) { var u = hooks _module _h ( hooks _module _t ++ , 10 ) , i = hooks _module _p ( ) ; return u . _ _ = n , hooks _module _r . componentDidCatch || ( hooks _module _r . componentDidCatch = function ( n , t ) { u . _ _ && u . _ _ ( n , t ) , i [ 1 ] ( n ) } ) , [ i [ 0 ] , function ( ) { i [ 1 ] ( void 0 ) } ] } function hooks _module _g ( ) { var n = hooks _module _h ( hooks _module _t ++ , 11 ) ; if ( ! n . _ _ ) { for ( var u = hooks _module _r . _ _v ; null !== u && ! u . _ _m && null !== u . _ _ ; ) u = u . _ _ ; var i = u . _ _m || ( u . _ _m = [ 0 , 0 ] ) ; n . _ _ = "P" + i [ 0 ] + "-" + i [ 1 ] ++ } return n . _ _ } function hooks _module _j ( ) { for ( var n ; n = hooks _module _f . shift ( ) ; ) if ( n . _ _P && n . _ _H ) try { n . _ _H . _ _h . forEach ( hooks _module _z ) , n . _ _H . _ _h . forEach ( hooks _module _B ) , n . _ _H . _ _h = [ ] } catch ( t ) { n . _ _H . _ _h = [ ] , hooks _module _e . _ _e ( t , n . _ _v ) } } hooks _module _e . _ _b = function ( n ) { hooks _module _r = null , hooks _module _a && hooks _module _a ( n ) } , hooks _module _e . _ _ = function ( n , t ) { n && t . _ _k && t . _ _k . _ _m && ( n . _ _m = t . _ _k . _ _m ) , hooks _module _d && hooks _module _d ( n , t ) } , hooks _module _e . _ _r = function ( n ) { hooks _module _v && hooks _module _v ( n ) , hooks _module _t = 0 ; var i = ( hooks _module _r = n . _ _c ) . _ _H ; i && ( hooks _module _u === hooks _module _r ? ( i . _ _h = [ ] , hooks _module _r . _ _h = [ ] , i . _ _ . forEach ( function ( n ) { n . _ _N && ( n . _ _ = n . _ _N ) , n . _ _V = hooks _module _c , n . _ _N = n . i = void 0 } ) ) : ( i . _ _h . forEach ( hooks _module _z ) , i . _ _h . forEach ( hooks _module _B ) , i . _ _h = [ ] , hooks _module _t = 0 ) ) , hooks _module _u = hooks _module _r } , hooks _module _e . diffed = function ( n ) { hooks _module _l && hooks _module _l ( n ) ; var t = n . _ _c ; t && t . _ _H && ( t . _ _H . _ _h . length && ( 1 !== hooks _module _f . push ( t ) && hooks _module _i === hooks _module _e .
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
; // CONCATENATED MODULE: ./node_modules/@preact/signals-core/dist/signals-core.module.js
function signals _core _module _i ( ) { throw new Error ( "Cycle detected" ) } var signals _core _module _t = Symbol . for ( "preact-signals" ) ; function signals _core _module _r ( ) { if ( ! ( signals _core _module _v > 1 ) ) { var i , t = ! 1 ; while ( void 0 !== signals _core _module _f ) { var r = signals _core _module _f ; signals _core _module _f = void 0 ; signals _core _module _e ++ ; while ( void 0 !== r ) { var n = r . o ; r . o = void 0 ; r . f &= - 3 ; if ( ! ( 8 & r . f ) && signals _core _module _l ( r ) ) try { r . c ( ) } catch ( r ) { if ( ! t ) { i = r ; t = ! 0 } } r = n } } signals _core _module _e = 0 ; signals _core _module _v -- ; if ( t ) throw i } else signals _core _module _v -- } function signals _core _module _n ( i ) { if ( signals _core _module _v > 0 ) return i ( ) ; signals _core _module _v ++ ; try { return i ( ) } finally { signals _core _module _r ( ) } } var signals _core _module _o = void 0 , signals _core _module _h = 0 ; function signals _core _module _s ( i ) { if ( signals _core _module _h > 0 ) return i ( ) ; var t = signals _core _module _o ; signals _core _module _o = void 0 ; signals _core _module _h ++ ; try { return i ( ) } finally { signals _core _module _h -- ; signals _core _module _o = t } } var signals _core _module _f = void 0 , signals _core _module _v = 0 , signals _core _module _e = 0 , signals _core _module _u = 0 ; function signals _core _module _c ( i ) { if ( void 0 !== signals _core _module _o ) { var t = i . n ; if ( void 0 === t || t . t !== signals _core _module _o ) { t = { i : 0 , S : i , p : signals _core _module _o . s , n : void 0 , t : signals _core _module _o , e : void 0 , x : void 0 , r : t } ; if ( void 0 !== signals _core _module _o . s ) signals _core _module _o . s . n = t ; signals _core _module _o . s = t ; i . n = t ; if ( 32 & signals _core _module _o . f ) i . S ( t ) ; return t } else if ( - 1 === t . i ) { t . i = 0 ; if ( void 0 !== t . n ) { t . n . p = t . p ; if ( void 0 !== t . p ) t . p . n = t . n ; t . p = signals _core _module _o . s ; t . n = void 0 ; signals _core _module _o . s . n = t ; signals _core _module _o . s = t } return t } } } function signals _core _module _d ( i ) { this . v = i ; this . i = 0 ; this . n = void 0 ; this . t = void 0 } signals _core _module _d . prototype . brand = signals _core _module _t ; signals _core _module _d . prototype . h = function ( ) { return ! 0 } ; signals _core _module _d . prototype . S = function ( i ) { if ( this . t !== i && void 0 === i . e ) { i . x = this . t ; if ( void 0 !== this . t ) this . t . e = i ; this . t = i } } ; signals _core _module _d . prototype . U = function ( i ) { if ( void 0 !== this . t ) { var t = i . e , r = i . x ; if ( void 0 !== t ) { t . x = r ; i . e = void 0 } if ( void 0 !== r ) { r . e = t ; i . x = void 0 } if ( i === this . t ) this . t = r } } ; signals _core _module _d . prototype . subscribe = function ( i ) { var t = this ; return signals _core _module _O ( function ( ) { var r = t . value , n = 32 & this . f ; this . f &= - 33 ; try { i ( r ) } finally { this . f |= n } } ) } ; signals _core _module _d . prototype . valueOf = function ( ) { return this . value } ; signals _core _module _d . prototype . toString = function ( ) { return this . value + "" } ; signals _core _module _d . prototype . toJSON = function ( ) { return this . value } ; signals _core _module _d . prototype . peek = function ( ) { return this . v } ; Object . defineProperty ( signals _core _module _d . prototype , "value" , { get : function ( ) { var i = signals _core _module _c ( this ) ; if ( void 0 !== i ) i . i = this . i ; return this . v } , set : function ( t ) { if ( signals _core _module _o instanceof signals _core _module _ ) ! function ( ) { throw new Error ( "Computed cannot have side-effects" ) } ( ) ; if ( t !== this . v ) { if ( signals _core _module _e > 100 ) signals _core _module _i ( ) ; this . v = t ; this . i ++ ; signals _core _module _u ++ ; signals _core _module _v ++ ; try { for ( var n = this . t ; void 0 !== n ; n = n . x ) n . t . N ( ) } finally { signals _core _module _r ( ) } } } } ) ; function signals _core _module _a ( i ) { return new signals _core _module _d ( i ) } function signals _core _module _l ( i ) { for ( var t = i . s ; void 0 !== t ; t = t . n ) if ( t . S . i !== t . i || ! t . S . h ( ) || t . S . i !== t . i ) return ! 0 ; return ! 1 } function signals _core _module _y ( i ) { for ( var t = i . s ; void 0 !== t ; t = t . n ) { var r = t . S . n ; if ( void 0 !== r ) t . r = r ; t . S . n = t ; t . i = - 1 ; if ( void 0 === t . n ) { i . s = t ; break } } } function signals _core _module _w ( i ) { var t = i . s , r = void 0 ; while ( void 0 !== t ) { var n = t . p ; if ( - 1 === t . i ) { t . S . U ( t ) ; if ( void 0 !== n ) n . n = t . n ; if ( void 0 !== t . n ) t . n . p = n } else r = t ; t . S . n = t . r ; if ( void 0 !== t . r ) t . r = void 0 ; t = n } i . s = r } function signals _core _module _ ( i ) { signals _core _module _d . call ( this , void 0 ) ; this . x = i ; this . s = void 0 ; this . g = signals _core _module _u - 1 ; this . f = 4 } ( signals _core _module _ . prototype = new signals _core _module _d ) . h = function ( ) { this . f &= - 3 ; if ( 1 & this . f ) return ! 1 ; if ( 32 == ( 36 & this . f ) ) return ! 0 ; this . f &= - 5 ; if ( this . g === signals _core _module _u ) return ! 0 ; this . g = signals _core _module _u ; this . f |= 1 ; if ( this . i > 0 && ! signals _core _module _l ( this ) ) { this . f &= - 2 ; return ! 0 } var i = signals _core _module _o ; try { signals _core _module _y ( this ) ; signals _core _mod
; // CONCATENATED MODULE: ./node_modules/@preact/signals/dist/signals.module.js
var signals _module _v , signals _module _s ; function signals _module _l ( n , i ) { l [ n ] = i . bind ( null , l [ n ] || function ( ) { } ) } function signals _module _d ( n ) { if ( signals _module _s ) signals _module _s ( ) ; signals _module _s = n && n . S ( ) } function signals _module _p ( n ) { var r = this , f = n . data , o = useSignal ( f ) ; o . value = f ; var e = hooks _module _q ( function ( ) { var n = r . _ _v ; while ( n = n . _ _ ) if ( n . _ _c ) { n . _ _c . _ _$f |= 4 ; break } r . _ _$u . c = function ( ) { var n ; if ( ! preact _module _t ( e . peek ( ) ) && 3 === ( null == ( n = r . base ) ? void 0 : n . nodeType ) ) r . base . data = e . peek ( ) ; else { r . _ _$f |= 1 ; r . setState ( { } ) } } ; return signals _core _module _p ( function ( ) { var n = o . value . value ; return 0 === n ? 0 : ! 0 === n ? "" : n || "" } ) } , [ ] ) ; return e . value } signals _module _p . displayName = "_st" ; Object . defineProperties ( signals _core _module _d . prototype , { constructor : { configurable : ! 0 , value : void 0 } , type : { configurable : ! 0 , value : signals _module _p } , props : { configurable : ! 0 , get : function ( ) { return { data : this } } } , _ _b : { configurable : ! 0 , value : 1 } } ) ; signals _module _l ( "__b" , function ( n , r ) { if ( "string" == typeof r . type ) { var i , t = r . props ; for ( var f in t ) if ( "children" !== f ) { var o = t [ f ] ; if ( o instanceof signals _core _module _d ) { if ( ! i ) r . _ _np = i = { } ; i [ f ] = o ; t [ f ] = o . peek ( ) } } } n ( r ) } ) ; signals _module _l ( "__r" , function ( n , r ) { signals _module _d ( ) ; var i , t = r . _ _c ; if ( t ) { t . _ _$f &= - 2 ; if ( void 0 === ( i = t . _ _$u ) ) t . _ _$u = i = function ( n ) { var r ; signals _core _module _O ( function ( ) { r = this } ) ; r . c = function ( ) { t . _ _$f |= 1 ; t . setState ( { } ) } ; return r } ( ) } signals _module _v = t ; signals _module _d ( i ) ; n ( r ) } ) ; signals _module _l ( "__e" , function ( n , r , i , t ) { signals _module _d ( ) ; signals _module _v = void 0 ; n ( r , i , t ) } ) ; signals _module _l ( "diffed" , function ( n , r ) { signals _module _d ( ) ; signals _module _v = void 0 ; var i ; if ( "string" == typeof r . type && ( i = r . _ _e ) ) { var t = r . _ _np , f = r . props ; if ( t ) { var o = i . U ; if ( o ) for ( var e in o ) { var u = o [ e ] ; if ( void 0 !== u && ! ( e in t ) ) { u . d ( ) ; o [ e ] = void 0 } } else i . U = o = { } ; for ( var a in t ) { var c = o [ a ] , s = t [ a ] ; if ( void 0 === c ) { c = signals _module _ ( i , a , s , f ) ; o [ a ] = c } else c . o ( s , f ) } } } n ( r ) } ) ; function signals _module _ ( n , r , i , t ) { var f = r in n && void 0 === n . ownerSVGElement , o = signals _core _module _a ( i ) ; return { o : function ( n , r ) { o . value = n ; t = r } , d : signals _core _module _O ( function ( ) { var i = o . value . value ; if ( t [ r ] !== i ) { t [ r ] = i ; if ( f ) n [ r ] = i ; else if ( i ) n . setAttribute ( r , i ) ; else n . removeAttribute ( r ) } } ) } } signals _module _l ( "unmount" , function ( n , r ) { if ( "string" == typeof r . type ) { var i = r . _ _e ; if ( i ) { var t = i . U ; if ( t ) { i . U = void 0 ; for ( var f in t ) { var o = t [ f ] ; if ( o ) o . d ( ) } } } } else { var e = r . _ _c ; if ( e ) { var u = e . _ _$u ; if ( u ) { e . _ _$u = void 0 ; u . d ( ) } } } n ( r ) } ) ; signals _module _l ( "__h" , function ( n , r , i , t ) { if ( t < 3 || 9 === t ) r . _ _$f |= 2 ; n ( r , i , t ) } ) ; b . prototype . shouldComponentUpdate = function ( n , r ) { var i = this . _ _$u ; if ( ! ( i && void 0 !== i . s || 4 & this . _ _$f ) ) return ! 0 ; if ( 3 & this . _ _$f ) return ! 0 ; for ( var t in r ) return ! 0 ; for ( var f in n ) if ( "__source" !== f && n [ f ] !== this . props [ f ] ) return ! 0 ; for ( var o in this . props ) if ( ! ( o in n ) ) return ! 0 ; return ! 1 } ; function useSignal ( n ) { return hooks _module _q ( function ( ) { return signals _core _module _a ( n ) } , [ ] ) } function useComputed ( n ) { var r = f ( n ) ; r . current = n ; signals _module _v . _ _$f |= 4 ; return t ( function ( ) { return u ( function ( ) { return r . current ( ) } ) } , [ ] ) } function useSignalEffect ( n ) { var r = f ( n ) ; r . current = n ; o ( function ( ) { return c ( function ( ) { return r . current ( ) } ) } , [ ] ) }
; // CONCATENATED MODULE: ./node_modules/deepsignal/dist/deepsignal.module.js
var deepsignal _module _a = new WeakMap , deepsignal _module _o = new WeakMap , deepsignal _module _s = new WeakMap , deepsignal _module _u = new WeakSet , deepsignal _module _c = new WeakMap , deepsignal _module _f = /^\$/ , deepsignal _module _i = Object . getOwnPropertyDescriptor , deepsignal _module _l = ! 1 , deepsignal _module _g = function ( e ) { if ( ! deepsignal _module _k ( e ) ) throw new Error ( "This object can't be observed." ) ; return deepsignal _module _o . has ( e ) || deepsignal _module _o . set ( e , deepsignal _module _v ( e , deepsignal _module _d ) ) , deepsignal _module _o . get ( e ) } , deepsignal _module _p = function ( e , t ) { deepsignal _module _l = ! 0 ; var r = e [ t ] ; try { deepsignal _module _l = ! 1 } catch ( e ) { } return r } ; function deepsignal _module _h ( e ) { return deepsignal _module _u . add ( e ) , e } var deepsignal _module _v = function ( e , t ) { var r = new Proxy ( e , t ) ; return deepsignal _module _u . add ( r ) , r } , deepsignal _module _y = function ( ) { throw new Error ( "Don't mutate the signals directly." ) } , deepsignal _module _w = function ( e ) { return function ( t , u , c ) { var g ; if ( deepsignal _module _l ) return Reflect . get ( t , u , c ) ; var p = e || "$" === u [ 0 ] ; if ( ! e && p && Array . isArray ( t ) ) { if ( "$" === u ) return deepsignal _module _s . has ( t ) || deepsignal _module _s . set ( t , deepsignal _module _v ( t , deepsignal _module _m ) ) , deepsignal _module _s . get ( t ) ; p = "$length" === u } deepsignal _module _a . has ( c ) || deepsignal _module _a . set ( c , new Map ) ; var h = deepsignal _module _a . get ( c ) , y = p ? u . replace ( deepsignal _module _f , "" ) : u ; if ( h . has ( y ) || "function" != typeof ( null == ( g = deepsignal _module _i ( t , y ) ) ? void 0 : g . get ) ) { var w = Reflect . get ( t , y , c ) ; if ( p && "function" == typeof w ) return ; if ( "symbol" == typeof y && deepsignal _module _b . has ( y ) ) return w ; h . has ( y ) || ( deepsignal _module _k ( w ) && ( deepsignal _module _o . has ( w ) || deepsignal _module _o . set ( w , deepsignal _module _v ( w , deepsignal _module _d ) ) , w = deepsignal _module _o . get ( w ) ) , h . set ( y , signals _core _module _a ( w ) ) ) } else h . set ( y , signals _core _module _p ( function ( ) { return Reflect . get ( t , y , c ) } ) ) ; return p ? h . get ( y ) : h . get ( y ) . value } } , deepsignal _module _d = { get : deepsignal _module _w ( ! 1 ) , set : function ( e , n , s , u ) { var l ; if ( "function" == typeof ( null == ( l = deepsignal _module _i ( e , n ) ) ? void 0 : l . set ) ) return Reflect . set ( e , n , s , u ) ; deepsignal _module _a . has ( u ) || deepsignal _module _a . set ( u , new Map ) ; var g = deepsignal _module _a . get ( u ) ; if ( "$" === n [ 0 ] ) { s instanceof signals _core _module _d || deepsignal _module _y ( ) ; var p = n . replace ( deepsignal _module _f , "" ) ; return g . set ( p , s ) , Reflect . set ( e , p , s . peek ( ) , u ) } var h = s ; deepsignal _module _k ( s ) && ( deepsignal _module _o . has ( s ) || deepsignal _module _o . set ( s , deepsignal _module _v ( s , deepsignal _module _d ) ) , h = deepsignal _module _o . get ( s ) ) ; var w = ! ( n in e ) , m = Reflect . set ( e , n , s , u ) ; return g . has ( n ) ? g . get ( n ) . value = h : g . set ( n , signals _core _module _a ( h ) ) , w && deepsignal _module _c . has ( e ) && deepsignal _module _c . get ( e ) . value ++ , Array . isArray ( e ) && g . has ( "length" ) && ( g . get ( "length" ) . value = e . length ) , m } , deleteProperty : function ( e , t ) { "$" === t [ 0 ] && deepsignal _module _y ( ) ; var r = deepsignal _module _a . get ( deepsignal _module _o . get ( e ) ) , n = Reflect . deleteProperty ( e , t ) ; return r && r . has ( t ) && ( r . get ( t ) . value = void 0 ) , deepsignal _module _c . has ( e ) && deepsignal _module _c . get ( e ) . value ++ , n } , ownKeys : function ( e ) { return deepsignal _module _c . has ( e ) || deepsignal _module _c . set ( e , signals _core _module _a ( 0 ) ) , deepsignal _module _c . _ = deepsignal _module _c . get ( e ) . value , Reflect . ownKeys ( e ) } } , deepsignal _module _m = { get : deepsignal _module _w ( ! 0 ) , set : deepsignal _module _y , deleteProperty : deepsignal _module _y } , deepsignal _module _b = new Set ( Object . getOwnPropertyNames ( Symbol ) . map ( function ( e ) { return Symbol [ e ] } ) . filter ( function ( e ) { return "symbol" == typeof e } ) ) , R = new Set ( [ Object , Array ] ) , deepsignal _module _k = function ( e ) { return "object" == typeof e && null !== e && R . has ( e . constructor ) && ! deepsignal _module _u . has ( e ) } , deepsignal _module _M = function ( t ) { return e ( function ( ) { return deepsignal _module _g ( t ) } , [ ] ) } ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/store.js
2023-12-07 09:44:11 +01:00
/ * *
* External dependencies
* /
/ * *
2024-04-17 11:32:24 +02:00
* Internal dependencies
2023-12-07 09:44:11 +01:00
* /
2024-04-17 11:32:24 +02:00
const isObject = item => item && typeof item === 'object' && item . constructor === Object ;
2023-12-07 09:44:11 +01:00
const deepMerge = ( target , source ) => {
if ( isObject ( target ) && isObject ( source ) ) {
for ( const key in source ) {
2024-04-17 11:32:24 +02:00
const getter = Object . getOwnPropertyDescriptor ( source , key ) ? . get ;
if ( typeof getter === 'function' ) {
Object . defineProperty ( target , key , {
get : getter
2023-12-07 09:44:11 +01:00
} ) ;
2024-04-17 11:32:24 +02:00
} else if ( isObject ( source [ key ] ) ) {
if ( ! target [ key ] ) target [ key ] = { } ;
2023-12-07 09:44:11 +01:00
deepMerge ( target [ key ] , source [ key ] ) ;
} else {
2024-04-17 11:32:24 +02:00
try {
target [ key ] = source [ key ] ;
} catch ( e ) {
// Assignemnts fail for properties that are only getters.
// When that's the case, the assignment is simply ignored.
}
2023-12-07 09:44:11 +01:00
}
}
}
} ;
2024-04-17 11:32:24 +02:00
const stores = new Map ( ) ;
const rawStores = new Map ( ) ;
const storeLocks = new Map ( ) ;
const storeConfigs = new Map ( ) ;
const objToProxy = new WeakMap ( ) ;
const proxyToNs = new WeakMap ( ) ;
const scopeToGetters = new WeakMap ( ) ;
const proxify = ( obj , ns ) => {
if ( ! objToProxy . has ( obj ) ) {
const proxy = new Proxy ( obj , handlers ) ;
objToProxy . set ( obj , proxy ) ;
proxyToNs . set ( proxy , ns ) ;
2023-12-07 09:44:11 +01:00
}
2024-04-17 11:32:24 +02:00
return objToProxy . get ( obj ) ;
2023-12-07 09:44:11 +01:00
} ;
2024-04-17 11:32:24 +02:00
const handlers = {
get : ( target , key , receiver ) => {
const ns = proxyToNs . get ( receiver ) ;
// Check if the property is a getter and we are inside an scope. If that is
// the case, we clone the getter to avoid overwriting the scoped
// dependencies of the computed each time that getter runs.
const getter = Object . getOwnPropertyDescriptor ( target , key ) ? . get ;
if ( getter ) {
const scope = getScope ( ) ;
if ( scope ) {
const getters = scopeToGetters . get ( scope ) || scopeToGetters . set ( scope , new Map ( ) ) . get ( scope ) ;
if ( ! getters . has ( getter ) ) {
getters . set ( getter , signals _core _module _p ( ( ) => {
setNamespace ( ns ) ;
setScope ( scope ) ;
try {
return getter . call ( target ) ;
} finally {
resetScope ( ) ;
resetNamespace ( ) ;
}
} ) ) ;
}
return getters . get ( getter ) . value ;
}
}
const result = Reflect . get ( target , key ) ;
// Check if the proxy is the store root and no key with that name exist. In
// that case, return an empty object for the requested key.
if ( typeof result === 'undefined' && receiver === stores . get ( ns ) ) {
const obj = { } ;
Reflect . set ( target , key , obj ) ;
return proxify ( obj , ns ) ;
}
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
// Check if the property is a generator. If it is, we turn it into an
// asynchronous function where we restore the default namespace and scope
// each time it awaits/yields.
if ( result ? . constructor ? . name === 'GeneratorFunction' ) {
return async ( ... args ) => {
const scope = getScope ( ) ;
const gen = result ( ... args ) ;
let value ;
let it ;
while ( true ) {
setNamespace ( ns ) ;
setScope ( scope ) ;
try {
it = gen . next ( value ) ;
} finally {
resetScope ( ) ;
resetNamespace ( ) ;
}
try {
value = await it . value ;
} catch ( e ) {
setNamespace ( ns ) ;
setScope ( scope ) ;
gen . throw ( e ) ;
} finally {
resetScope ( ) ;
resetNamespace ( ) ;
}
if ( it . done ) break ;
}
return value ;
} ;
}
// Check if the property is a synchronous function. If it is, set the
// default namespace. Synchronous functions always run in the proper scope,
// which is set by the Directives component.
if ( typeof result === 'function' ) {
return ( ... args ) => {
setNamespace ( ns ) ;
try {
return result ( ... args ) ;
} finally {
resetNamespace ( ) ;
}
} ;
}
// Check if the property is an object. If it is, proxyify it.
if ( isObject ( result ) ) return proxify ( result , ns ) ;
return result ;
} ,
// Prevents passing the current proxy as the receiver to the deepSignal.
set ( target , key , value ) {
return Reflect . set ( target , key , value ) ;
}
} ;
2023-12-07 09:44:11 +01:00
/ * *
2024-04-17 11:32:24 +02:00
* Get the defined config for the store with the passed namespace .
*
* @ param namespace Store ' s namespace from which to retrieve the config .
* @ return Defined config for the given namespace .
2023-12-07 09:44:11 +01:00
* /
2024-04-17 11:32:24 +02:00
const getConfig = namespace => storeConfigs . get ( namespace || getNamespace ( ) ) || { } ;
const universalUnlock = 'I acknowledge that using a private store means my plugin will inevitably break on the next store release.' ;
2023-12-07 09:44:11 +01:00
/ * *
2024-04-17 11:32:24 +02:00
* Extends the Interactivity API global store adding the passed properties to
* the given namespace . It also returns stable references to the namespace
* content .
2023-12-07 09:44:11 +01:00
*
2024-04-17 11:32:24 +02:00
* These props typically consist of ` state ` , which is the reactive part of the
* store ― which means that any directive referencing a state property will be
* re - rendered anytime it changes ― and function properties like ` actions ` and
* ` callbacks ` , mostly used for event handlers . These props can then be
* referenced by any directive to make the HTML interactive .
2023-12-07 09:44:11 +01:00
*
* @ example
* ` ` ` js
2024-04-17 11:32:24 +02:00
* const { state } = store ( 'counter' , {
2023-12-07 09:44:11 +01:00
* state : {
2024-04-17 11:32:24 +02:00
* value : 0 ,
* get double ( ) { return state . value * 2 ; } ,
2023-12-07 09:44:11 +01:00
* } ,
* actions : {
2024-04-17 11:32:24 +02:00
* increment ( ) {
* state . value += 1 ;
2023-12-07 09:44:11 +01:00
* } ,
* } ,
2024-04-17 11:32:24 +02:00
* } ) ;
2023-12-07 09:44:11 +01:00
* ` ` `
*
* The code from the example above allows blocks to subscribe and interact with
* the store by using directives in the HTML , e . g . :
*
* ` ` ` html
2024-04-17 11:32:24 +02:00
* < div data - wp - interactive = '{ "namespace": "counter" }' >
2023-12-07 09:44:11 +01:00
* < button
2024-04-17 11:32:24 +02:00
* data - wp - text = "state.double"
* data - wp - on -- click = "actions.increment"
2023-12-07 09:44:11 +01:00
* >
* 0
* < / b u t t o n >
* < / d i v >
* ` ` `
2024-04-17 11:32:24 +02:00
* @ param namespace The store namespace to interact with .
* @ param storePart Properties to add to the store namespace .
* @ param options Options for the given namespace .
2023-12-07 09:44:11 +01:00
*
2024-04-17 11:32:24 +02:00
* @ return A reference to the namespace content .
2023-12-07 09:44:11 +01:00
* /
2024-04-17 11:32:24 +02:00
function store ( namespace , {
state = { } ,
2023-12-07 09:44:11 +01:00
... block
2024-04-17 11:32:24 +02:00
} = { } , {
lock = false
} = { } ) {
if ( ! stores . has ( namespace ) ) {
// Lock the store if the passed lock is different from the universal
// unlock. Once the lock is set (either false, true, or a given string),
// it cannot change.
if ( lock !== universalUnlock ) {
storeLocks . set ( namespace , lock ) ;
2024-02-16 11:03:01 +01:00
}
2024-04-17 11:32:24 +02:00
const rawStore = {
state : deepsignal _module _g ( isObject ( state ) ? state : { } ) ,
... block
} ;
const proxiedStore = new Proxy ( rawStore , handlers ) ;
rawStores . set ( namespace , rawStore ) ;
stores . set ( namespace , proxiedStore ) ;
proxyToNs . set ( proxiedStore , namespace ) ;
} else {
// Lock the store if it wasn't locked yet and the passed lock is
// different from the universal unlock. If no lock is given, the store
// will be public and won't accept any lock from now on.
if ( lock !== universalUnlock && ! storeLocks . has ( namespace ) ) {
storeLocks . set ( namespace , lock ) ;
} else {
const storeLock = storeLocks . get ( namespace ) ;
const isLockValid = lock === universalUnlock || lock !== true && lock === storeLock ;
if ( ! isLockValid ) {
if ( ! storeLock ) {
throw Error ( 'Cannot lock a public store' ) ;
} else {
throw Error ( 'Cannot unlock a private store with an invalid lock code' ) ;
}
2024-02-16 11:03:01 +01:00
}
}
2024-04-17 11:32:24 +02:00
const target = rawStores . get ( namespace ) ;
deepMerge ( target , block ) ;
deepMerge ( target . state , state ) ;
2024-02-16 11:03:01 +01:00
}
2024-04-17 11:32:24 +02:00
return stores . get ( namespace ) ;
2024-02-16 11:03:01 +01:00
}
2024-04-17 11:32:24 +02:00
const parseInitialData = ( dom = document ) => {
const storeTag = dom . querySelector ( ` script[type="application/json"]#wp-interactivity-data ` ) ;
if ( storeTag ? . textContent ) {
try {
return JSON . parse ( storeTag . textContent ) ;
} catch ( e ) {
// Do nothing.
2024-02-16 11:03:01 +01:00
}
}
2024-04-17 11:32:24 +02:00
return { } ;
} ;
const populateInitialData = data => {
if ( isObject ( data ? . state ) ) {
Object . entries ( data . state ) . forEach ( ( [ namespace , state ] ) => {
store ( namespace , {
state
} , {
lock : universalUnlock
} ) ;
} ) ;
}
if ( isObject ( data ? . config ) ) {
Object . entries ( data . config ) . forEach ( ( [ namespace , config ] ) => {
storeConfigs . set ( namespace , config ) ;
} ) ;
}
} ;
// Parse and populate the initial state and config.
const data = parseInitialData ( ) ;
populateInitialData ( data ) ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/hooks.js
/* @jsx createElement */
2023-12-07 09:44:11 +01:00
/ * *
* External dependencies
* /
/ * *
* Internal dependencies
* /
2024-04-17 11:32:24 +02:00
// Main context.
const context = G ( { } ) ;
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
// Wrap the element props to prevent modifications.
const immutableMap = new WeakMap ( ) ;
const immutableError = ( ) => {
throw new Error ( 'Please use `data-wp-bind` to modify the attributes of an element.' ) ;
} ;
const immutableHandlers = {
get ( target , key , receiver ) {
const value = Reflect . get ( target , key , receiver ) ;
return ! ! value && typeof value === 'object' ? deepImmutable ( value ) : value ;
} ,
set : immutableError ,
deleteProperty : immutableError
} ;
const deepImmutable = target => {
if ( ! immutableMap . has ( target ) ) immutableMap . set ( target , new Proxy ( target , immutableHandlers ) ) ;
return immutableMap . get ( target ) ;
} ;
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
// Store stacks for the current scope and the default namespaces and export APIs
// to interact with them.
const scopeStack = [ ] ;
const namespaceStack = [ ] ;
2023-12-07 09:44:11 +01:00
/ * *
2024-04-17 11:32:24 +02:00
* Retrieves the context inherited by the element evaluating a function from the
* store . The returned value depends on the element and the namespace where the
* function calling ` getContext() ` exists .
*
* @ param namespace Store namespace . By default , the namespace where the calling
* function exists is used .
* @ return The context content .
2023-12-07 09:44:11 +01:00
* /
2024-04-17 11:32:24 +02:00
const getContext = namespace => getScope ( ) ? . context [ namespace || getNamespace ( ) ] ;
2023-12-07 09:44:11 +01:00
/ * *
2024-04-17 11:32:24 +02:00
* Retrieves a representation of the element where a function from the store
* is being evalutated . Such representation is read - only , and contains a
* reference to the DOM element , its props and a local reactive state .
*
* @ return Element representation .
2023-12-07 09:44:11 +01:00
* /
2024-04-17 11:32:24 +02:00
const getElement = ( ) => {
if ( ! getScope ( ) ) {
throw Error ( 'Cannot call `getElement()` outside getters and actions used by directives.' ) ;
}
const {
ref ,
attributes
} = getScope ( ) ;
return Object . freeze ( {
ref : ref . current ,
attributes : deepImmutable ( attributes )
} ) ;
} ;
const getScope = ( ) => scopeStack . slice ( - 1 ) [ 0 ] ;
const setScope = scope => {
scopeStack . push ( scope ) ;
} ;
const resetScope = ( ) => {
scopeStack . pop ( ) ;
} ;
const getNamespace = ( ) => namespaceStack . slice ( - 1 ) [ 0 ] ;
const setNamespace = namespace => {
namespaceStack . push ( namespace ) ;
} ;
const resetNamespace = ( ) => {
namespaceStack . pop ( ) ;
} ;
2023-12-07 09:44:11 +01:00
// WordPress Directives.
const directiveCallbacks = { } ;
const directivePriorities = { } ;
/ * *
* Register a new directive type in the Interactivity API runtime .
*
* @ example
* ` ` ` js
* directive (
* 'alert' , // Name without the `data-wp-` prefix.
2024-04-17 11:32:24 +02:00
* ( { directives : { alert } , element , evaluate } ) => {
* const defaultEntry = alert . find ( entry => entry . suffix === 'default' ) ;
* element . props . onclick = ( ) => { alert ( evaluate ( defaultEntry ) ) ; }
2023-12-07 09:44:11 +01:00
* }
* )
* ` ` `
*
* The previous code registers a custom directive type for displaying an alert
* message whenever an element using it is clicked . The message text is obtained
2024-04-17 11:32:24 +02:00
* from the store under the inherited namespace , using ` evaluate ` .
2023-12-07 09:44:11 +01:00
*
* When the HTML is processed by the Interactivity API , any element containing
* the ` data-wp-alert ` directive will have the ` onclick ` event handler , e . g . ,
*
* ` ` ` html
2024-04-17 11:32:24 +02:00
* < div data - wp - interactive = '{ "namespace": "messages" }' >
* < button data - wp - alert = "state.alert" > Click me ! < / b u t t o n >
* < / d i v >
2023-12-07 09:44:11 +01:00
* ` ` `
2024-04-17 11:32:24 +02:00
* Note that , in the previous example , the directive callback gets the path
* value ( ` state.alert ` ) from the directive entry with suffix ` default ` . A
* custom suffix can also be specified by appending ` -- ` to the directive
* attribute , followed by the suffix , like in the following HTML snippet :
2023-12-07 09:44:11 +01:00
*
* ` ` ` html
2024-04-17 11:32:24 +02:00
* < div data - wp - interactive = '{ "namespace": "myblock" }' >
* < button
* data - wp - color -- text = "state.text"
* data - wp - color -- background = "state.background"
* > Click me ! < / b u t t o n >
* < / d i v >
2023-12-07 09:44:11 +01:00
* ` ` `
*
* This could be an hypothetical implementation of the custom directive used in
* the snippet above .
*
* @ example
* ` ` ` js
* directive (
* 'color' , // Name without prefix and suffix.
2024-04-17 11:32:24 +02:00
* ( { directives : { color } , ref , evaluate } ) =>
* colors . forEach ( ( color ) => {
* if ( color . suffix = 'text' ) {
* ref . style . setProperty (
* 'color' ,
* evaluate ( color . text )
* ) ;
* }
* if ( color . suffix = 'background' ) {
* ref . style . setProperty (
* 'background-color' ,
* evaluate ( color . background )
* ) ;
* }
* } ) ;
2023-12-07 09:44:11 +01:00
* }
* )
* ` ` `
*
2024-04-17 11:32:24 +02:00
* @ param name Directive name , without the ` data-wp- ` prefix .
* @ param callback Function that runs the directive logic .
* @ param options Options object .
* @ param options . priority Option to control the directive execution order . The
* lesser , the highest priority . Default is ` 10 ` .
2023-12-07 09:44:11 +01:00
* /
const directive = ( name , callback , {
priority = 10
} = { } ) => {
directiveCallbacks [ name ] = callback ;
directivePriorities [ name ] = priority ;
} ;
// Resolve the path to some property of the store object.
2024-04-17 11:32:24 +02:00
const resolve = ( path , namespace ) => {
let resolvedStore = stores . get ( namespace ) ;
if ( typeof resolvedStore === 'undefined' ) {
resolvedStore = store ( namespace , undefined , {
lock : universalUnlock
} ) ;
}
2023-12-07 09:44:11 +01:00
let current = {
2024-04-17 11:32:24 +02:00
... resolvedStore ,
context : getScope ( ) . context [ namespace ]
2023-12-07 09:44:11 +01:00
} ;
path . split ( '.' ) . forEach ( p => current = current [ p ] ) ;
return current ;
} ;
// Generate the evaluate function.
const getEvaluate = ( {
2024-04-17 11:32:24 +02:00
scope
} ) => ( entry , ... args ) => {
let {
value : path ,
namespace
} = entry ;
if ( typeof path !== 'string' ) {
throw new Error ( 'The `value` prop should be a string path' ) ;
}
2023-12-07 09:44:11 +01:00
// If path starts with !, remove it and save a flag.
const hasNegationOperator = path [ 0 ] === '!' && ! ! ( path = path . slice ( 1 ) ) ;
2024-04-17 11:32:24 +02:00
setScope ( scope ) ;
const value = resolve ( path , namespace ) ;
const result = typeof value === 'function' ? value ( ... args ) : value ;
resetScope ( ) ;
return hasNegationOperator ? ! result : result ;
2023-12-07 09:44:11 +01:00
} ;
// Separate directives by priority. The resulting array contains objects
// of directives grouped by same priority, and sorted in ascending order.
const getPriorityLevels = directives => {
const byPriority = Object . keys ( directives ) . reduce ( ( obj , name ) => {
if ( directiveCallbacks [ name ] ) {
const priority = directivePriorities [ name ] ;
( obj [ priority ] = obj [ priority ] || [ ] ) . push ( name ) ;
}
return obj ;
} , { } ) ;
2024-04-17 11:32:24 +02:00
return Object . entries ( byPriority ) . sort ( ( [ p1 ] , [ p2 ] ) => parseInt ( p1 ) - parseInt ( p2 ) ) . map ( ( [ , arr ] ) => arr ) ;
2023-12-07 09:44:11 +01:00
} ;
2024-04-17 11:32:24 +02:00
// Component that wraps each priority level of directives of an element.
2023-12-07 09:44:11 +01:00
const Directives = ( {
directives ,
priorityLevels : [ currentPriorityLevel , ... nextPriorityLevels ] ,
element ,
originalProps ,
2024-04-17 11:32:24 +02:00
previousScope
2023-12-07 09:44:11 +01:00
} ) => {
2024-04-17 11:32:24 +02:00
// Initialize the scope of this element. These scopes are different per each
// level because each level has a different context, but they share the same
// element ref, state and props.
const scope = hooks _module _F ( { } ) . current ;
scope . evaluate = hooks _module _x ( getEvaluate ( {
scope
2023-12-07 09:44:11 +01:00
} ) , [ ] ) ;
2024-04-17 11:32:24 +02:00
scope . context = hooks _module _P ( context ) ;
/* eslint-disable react-hooks/rules-of-hooks */
scope . ref = previousScope ? . ref || hooks _module _F ( null ) ;
/* eslint-enable react-hooks/rules-of-hooks */
// Create a fresh copy of the vnode element and add the props to the scope,
// named as attributes (HTML Attributes).
element = F ( element , {
ref : scope . ref
2023-12-07 09:44:11 +01:00
} ) ;
2024-04-17 11:32:24 +02:00
scope . attributes = element . props ;
2023-12-07 09:44:11 +01:00
// Recursively render the wrapper for the next priority level.
2024-04-17 11:32:24 +02:00
const children = nextPriorityLevels . length > 0 ? y ( Directives , {
2023-12-07 09:44:11 +01:00
directives : directives ,
priorityLevels : nextPriorityLevels ,
element : element ,
originalProps : originalProps ,
2024-04-17 11:32:24 +02:00
previousScope : scope
2023-12-07 09:44:11 +01:00
} ) : element ;
const props = {
... originalProps ,
children
} ;
const directiveArgs = {
directives ,
props ,
element ,
context ,
2024-04-17 11:32:24 +02:00
evaluate : scope . evaluate
2023-12-07 09:44:11 +01:00
} ;
2024-04-17 11:32:24 +02:00
setScope ( scope ) ;
2023-12-07 09:44:11 +01:00
for ( const directiveName of currentPriorityLevel ) {
const wrapper = directiveCallbacks [ directiveName ] ? . ( directiveArgs ) ;
if ( wrapper !== undefined ) props . children = wrapper ;
}
2024-04-17 11:32:24 +02:00
resetScope ( ) ;
2023-12-07 09:44:11 +01:00
return props . children ;
} ;
// Preact Options Hook called each time a vnode is created.
2024-04-17 11:32:24 +02:00
const old = l . vnode ;
l . vnode = vnode => {
2023-12-07 09:44:11 +01:00
if ( vnode . props . _ _directives ) {
const props = vnode . props ;
const directives = props . _ _directives ;
2024-04-17 11:32:24 +02:00
if ( directives . key ) vnode . key = directives . key . find ( ( {
suffix
} ) => suffix === 'default' ) . value ;
2023-12-07 09:44:11 +01:00
delete props . _ _directives ;
const priorityLevels = getPriorityLevels ( directives ) ;
if ( priorityLevels . length > 0 ) {
vnode . props = {
directives ,
priorityLevels ,
originalProps : props ,
type : vnode . type ,
element : y ( vnode . type , props ) ,
top : true
} ;
vnode . type = Directives ;
}
2024-04-17 11:32:24 +02:00
}
if ( old ) old ( vnode ) ;
} ;
; // CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/utils.js
/ * *
* External dependencies
* /
/ * *
* Internal dependencies
* /
const afterNextFrame = callback => {
return new Promise ( resolve => {
const done = ( ) => {
clearTimeout ( timeout ) ;
window . cancelAnimationFrame ( raf ) ;
setTimeout ( ( ) => {
callback ( ) ;
resolve ( ) ;
} ) ;
} ;
const timeout = setTimeout ( done , 100 ) ;
const raf = window . requestAnimationFrame ( done ) ;
} ) ;
} ;
// Using the mangled properties:
// this.c: this._callback
// this.x: this._compute
// https://github.com/preactjs/signals/blob/main/mangle.json
function createFlusher ( compute , notify ) {
let flush ;
const dispose = signals _core _module _O ( function ( ) {
flush = this . c . bind ( this ) ;
this . x = compute ;
this . c = notify ;
return compute ( ) ;
} ) ;
return {
flush ,
dispose
} ;
}
// Version of `useSignalEffect` with a `useEffect`-like execution. This hook
// implementation comes from this PR, but we added short-cirtuiting to avoid
// infinite loops: https://github.com/preactjs/signals/pull/290
function utils _useSignalEffect ( callback ) {
hooks _module _ ( ( ) => {
let eff = null ;
let isExecuting = false ;
const notify = async ( ) => {
if ( eff && ! isExecuting ) {
isExecuting = true ;
await afterNextFrame ( eff . flush ) ;
isExecuting = false ;
}
} ;
eff = createFlusher ( callback , notify ) ;
return eff . dispose ;
} , [ ] ) ;
}
/ * *
* Returns the passed function wrapped with the current scope so it is
* accessible whenever the function runs . This is primarily to make the scope
* available inside hook callbacks .
*
* @ param { Function } func The passed function .
* @ return { Function } The wrapped function .
* /
const withScope = func => {
const scope = getScope ( ) ;
const ns = getNamespace ( ) ;
if ( func ? . constructor ? . name === 'GeneratorFunction' ) {
return async ( ... args ) => {
const gen = func ( ... args ) ;
let value ;
let it ;
while ( true ) {
setNamespace ( ns ) ;
setScope ( scope ) ;
try {
it = gen . next ( value ) ;
} finally {
resetNamespace ( ) ;
resetScope ( ) ;
}
try {
value = await it . value ;
} catch ( e ) {
gen . throw ( e ) ;
}
if ( it . done ) break ;
}
return value ;
} ;
}
return ( ... args ) => {
setNamespace ( ns ) ;
setScope ( scope ) ;
try {
return func ( ... args ) ;
} finally {
resetNamespace ( ) ;
resetScope ( ) ;
}
} ;
2023-12-07 09:44:11 +01:00
} ;
2024-04-17 11:32:24 +02:00
2023-12-07 09:44:11 +01:00
/ * *
2024-04-17 11:32:24 +02:00
* Accepts a function that contains imperative code which runs whenever any of
* the accessed _reactive _ properties ( e . g . , values from the global state or the
* context ) is modified .
*
* This hook makes the element ' s scope available so functions like
* ` getElement() ` and ` getContext() ` can be used inside the passed callback .
*
* @ param { Function } callback The hook callback .
* /
function useWatch ( callback ) {
utils _useSignalEffect ( withScope ( callback ) ) ;
}
/ * *
* Accepts a function that contains imperative code which runs only after the
* element ' s first render , mainly useful for intialization logic .
*
* This hook makes the element ' s scope available so functions like
* ` getElement() ` and ` getContext() ` can be used inside the passed callback .
*
* @ param { Function } callback The hook callback .
2023-12-07 09:44:11 +01:00
* /
2024-04-17 11:32:24 +02:00
function useInit ( callback ) {
hooks _module _ ( withScope ( callback ) , [ ] ) ;
}
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
/ * *
* Accepts a function that contains imperative , possibly effectful code . The
* effects run after browser paint , without blocking it .
*
* This hook is equivalent to Preact 's `useEffect` and makes the element' s scope
* available so functions like ` getElement() ` and ` getContext() ` can be used
* inside the passed callback .
*
* @ param { Function } callback Imperative function that can return a cleanup
* function .
* @ param { any [ ] } inputs If present , effect will only activate if the
* values in the list change ( using ` === ` ) .
* /
function useEffect ( callback , inputs ) {
hooks _module _ ( withScope ( callback ) , inputs ) ;
}
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
/ * *
* Accepts a function that contains imperative , possibly effectful code . Use
* this to read layout from the DOM and synchronously re - render .
*
* This hook is equivalent to Preact 's `useLayoutEffect` and makes the element' s
* scope available so functions like ` getElement() ` and ` getContext() ` can be
* used inside the passed callback .
*
* @ param { Function } callback Imperative function that can return a cleanup
* function .
* @ param { any [ ] } inputs If present , effect will only activate if the
* values in the list change ( using ` === ` ) .
* /
function useLayoutEffect ( callback , inputs ) {
hooks _module _A ( withScope ( callback ) , inputs ) ;
}
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
/ * *
* Returns a memoized version of the callback that only changes if one of the
* inputs has changed ( using ` === ` ) .
*
* This hook is equivalent to Preact 's `useCallback` and makes the element' s
* scope available so functions like ` getElement() ` and ` getContext() ` can be
* used inside the passed callback .
*
* @ param { Function } callback Imperative function that can return a cleanup
* function .
* @ param { any [ ] } inputs If present , effect will only activate if the
* values in the list change ( using ` === ` ) .
* /
function useCallback ( callback , inputs ) {
hooks _module _x ( withScope ( callback ) , inputs ) ;
}
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
/ * *
* Pass a factory function and an array of inputs . ` useMemo ` will only recompute
* the memoized value when one of the inputs has changed .
*
* This hook is equivalent to Preact 's `useMemo` and makes the element' s scope
* available so functions like ` getElement() ` and ` getContext() ` can be used
* inside the passed factory function .
*
* @ param { Function } factory Imperative function that can return a cleanup
* function .
* @ param { any [ ] } inputs If present , effect will only activate if the
* values in the list change ( using ` === ` ) .
* /
function useMemo ( factory , inputs ) {
hooks _module _q ( withScope ( factory ) , inputs ) ;
}
// For wrapperless hydration.
// See https://gist.github.com/developit/f4c67a2ede71dc2fab7f357f39cff28c
const createRootFragment = ( parent , replaceNode ) => {
replaceNode = [ ] . concat ( replaceNode ) ;
const s = replaceNode [ replaceNode . length - 1 ] . nextSibling ;
function insert ( c , r ) {
parent . insertBefore ( c , r || s ) ;
}
return parent . _ _k = {
nodeType : 1 ,
parentNode : parent ,
firstChild : replaceNode [ 0 ] ,
childNodes : replaceNode ,
insertBefore : insert ,
appendChild : insert ,
removeChild ( c ) {
parent . removeChild ( c ) ;
2023-12-07 09:44:11 +01:00
}
2024-04-17 11:32:24 +02:00
} ;
2023-12-07 09:44:11 +01:00
} ;
2024-04-17 11:32:24 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/utils/kebab-to-camelcase.js
/ * *
* Transforms a kebab - case string to camelCase .
*
* @ param { string } str The kebab - case string to transform to camelCase .
* @ return { string } The transformed camelCase string .
* /
function kebabToCamelCase ( str ) {
return str . replace ( /^-+|-+$/g , '' ) . toLowerCase ( ) . replace ( /-([a-z])/g , function ( match , group1 ) {
return group1 . toUpperCase ( ) ;
} ) ;
}
; // CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/directives.js
/* @jsx createElement */
2023-12-07 09:44:11 +01:00
/ * *
* External dependencies
* /
2024-04-17 11:32:24 +02:00
2023-12-07 09:44:11 +01:00
/ * *
* Internal dependencies
* /
2024-04-17 11:32:24 +02:00
// Assigned objects should be ignore during proxification.
const contextAssignedObjects = new WeakMap ( ) ;
// Store the context proxy and fallback for each object in the context.
const contextObjectToProxy = new WeakMap ( ) ;
const contextProxyToObject = new WeakMap ( ) ;
const contextObjectToFallback = new WeakMap ( ) ;
const isPlainObject = item => item && typeof item === 'object' && item . constructor === Object ;
const descriptor = Reflect . getOwnPropertyDescriptor ;
/ * *
* Wrap a context object with a proxy to reproduce the context stack . The proxy
* uses the passed ` inherited ` context as a fallback to look up for properties
* that don ' t exist in the given context . Also , updated properties are modified
* where they are defined , or added to the main context when they don ' t exist .
*
* By default , all plain objects inside the context are wrapped , unless it is
* listed in the ` ignore ` option .
*
* @ param { Object } current Current context .
* @ param { Object } inherited Inherited context , used as fallback .
*
* @ return { Object } The wrapped context object .
* /
const proxifyContext = ( current , inherited = { } ) => {
// Update the fallback object reference when it changes.
contextObjectToFallback . set ( current , inherited ) ;
if ( ! contextObjectToProxy . has ( current ) ) {
const proxy = new Proxy ( current , {
get : ( target , k ) => {
const fallback = contextObjectToFallback . get ( current ) ;
// Always subscribe to prop changes in the current context.
const currentProp = target [ k ] ;
// Return the inherited prop when missing in target.
if ( ! ( k in target ) && k in fallback ) {
return fallback [ k ] ;
}
// Proxify plain objects that were not directly assigned.
if ( k in target && ! contextAssignedObjects . get ( target ) ? . has ( k ) && isPlainObject ( deepsignal _module _p ( target , k ) ) ) {
return proxifyContext ( currentProp , fallback [ k ] ) ;
}
// Return the stored proxy for `currentProp` when it exists.
if ( contextObjectToProxy . has ( currentProp ) ) {
return contextObjectToProxy . get ( currentProp ) ;
}
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
/ *
* For other cases , return the value from target , also
* subscribing to changes in the parent context when the current
* prop is not defined .
* /
return k in target ? currentProp : fallback [ k ] ;
} ,
set : ( target , k , value ) => {
const fallback = contextObjectToFallback . get ( current ) ;
const obj = k in target || ! ( k in fallback ) ? target : fallback ;
/ *
* Assigned object values should not be proxified so they point
* to the original object and don ' t inherit unexpected
* properties .
* /
if ( value && typeof value === 'object' ) {
if ( ! contextAssignedObjects . has ( obj ) ) {
contextAssignedObjects . set ( obj , new Set ( ) ) ;
}
contextAssignedObjects . get ( obj ) . add ( k ) ;
}
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
/ *
* When the value is a proxy , it ' s because it comes from the
* context , so the inner value is assigned instead .
* /
if ( contextProxyToObject . has ( value ) ) {
const innerValue = contextProxyToObject . get ( value ) ;
obj [ k ] = innerValue ;
} else {
obj [ k ] = value ;
}
return true ;
} ,
ownKeys : target => [ ... new Set ( [ ... Object . keys ( contextObjectToFallback . get ( current ) ) , ... Object . keys ( target ) ] ) ] ,
getOwnPropertyDescriptor : ( target , k ) => descriptor ( target , k ) || descriptor ( contextObjectToFallback . get ( current ) , k )
} ) ;
contextObjectToProxy . set ( current , proxy ) ;
contextProxyToObject . set ( proxy , current ) ;
}
return contextObjectToProxy . get ( current ) ;
} ;
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
/ * *
* Recursively update values within a deepSignal object .
*
* @ param { Object } target A deepSignal instance .
* @ param { Object } source Object with properties to update in ` target `
* /
const updateSignals = ( target , source ) => {
2023-12-07 09:44:11 +01:00
for ( const k in source ) {
2024-04-17 11:32:24 +02:00
if ( isPlainObject ( deepsignal _module _p ( target , k ) ) && isPlainObject ( deepsignal _module _p ( source , k ) ) ) {
updateSignals ( target [ ` $ ${ k } ` ] . peek ( ) , source [ k ] ) ;
} else {
target [ k ] = source [ k ] ;
}
}
} ;
/ * *
* Recursively clone the passed object .
*
* @ param { Object } source Source object .
* @ return { Object } Cloned object .
* /
const deepClone = source => {
if ( isPlainObject ( source ) ) {
return Object . fromEntries ( Object . entries ( source ) . map ( ( [ key , value ] ) => [ key , deepClone ( value ) ] ) ) ;
}
if ( Array . isArray ( source ) ) {
return source . map ( i => deepClone ( i ) ) ;
}
return source ;
} ;
const newRule = /(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g ;
const ruleClean = /\/\*[^]*?\*\/| +/g ;
const ruleNewline = /\n+/g ;
const empty = ' ' ;
/ * *
* Convert a css style string into a object .
*
* Made by Cristian Bote ( @ cristianbote ) for Goober .
* https : //unpkg.com/browse/goober@2.1.13/src/core/astish.js
*
* @ param { string } val CSS string .
* @ return { Object } CSS object .
* /
const cssStringToObject = val => {
const tree = [ { } ] ;
let block , left ;
while ( block = newRule . exec ( val . replace ( ruleClean , '' ) ) ) {
if ( block [ 4 ] ) {
tree . shift ( ) ;
} else if ( block [ 3 ] ) {
left = block [ 3 ] . replace ( ruleNewline , empty ) . trim ( ) ;
tree . unshift ( tree [ 0 ] [ left ] = tree [ 0 ] [ left ] || { } ) ;
} else {
tree [ 0 ] [ block [ 1 ] ] = block [ 2 ] . replace ( ruleNewline , empty ) . trim ( ) ;
2023-12-07 09:44:11 +01:00
}
}
2024-04-17 11:32:24 +02:00
return tree [ 0 ] ;
} ;
/ * *
* Creates a directive that adds an event listener to the global window or
* document object .
*
* @ param { string } type 'window' or 'document'
* @ return { void }
* /
const getGlobalEventDirective = type => ( {
directives ,
evaluate
} ) => {
directives [ ` on- ${ type } ` ] . filter ( ( {
suffix
} ) => suffix !== 'default' ) . forEach ( entry => {
useInit ( ( ) => {
const cb = event => evaluate ( entry , event ) ;
const globalVar = type === 'window' ? window : document ;
globalVar . addEventListener ( entry . suffix , cb ) ;
return ( ) => globalVar . removeEventListener ( entry . suffix , cb ) ;
} , [ ] ) ;
} ) ;
2023-12-07 09:44:11 +01:00
} ;
2024-04-17 11:32:24 +02:00
/* harmony default export */ const directives = ( ( ) => {
2023-12-07 09:44:11 +01:00
// data-wp-context
directive ( 'context' , ( {
directives : {
2024-04-17 11:32:24 +02:00
context
2023-12-07 09:44:11 +01:00
} ,
props : {
children
} ,
context : inheritedContext
} ) => {
const {
Provider
} = inheritedContext ;
2024-04-17 11:32:24 +02:00
const inheritedValue = hooks _module _P ( inheritedContext ) ;
const currentValue = hooks _module _F ( deepsignal _module _g ( { } ) ) ;
const defaultEntry = context . find ( ( {
suffix
} ) => suffix === 'default' ) ;
// No change should be made if `defaultEntry` does not exist.
const contextStack = hooks _module _q ( ( ) => {
if ( defaultEntry ) {
const {
namespace ,
value
} = defaultEntry ;
updateSignals ( currentValue . current , {
[ namespace ] : deepClone ( value )
} ) ;
}
return proxifyContext ( currentValue . current , inheritedValue ) ;
} , [ defaultEntry , inheritedValue ] ) ;
return y ( Provider , {
value : contextStack
} , children ) ;
2023-12-07 09:44:11 +01:00
} , {
priority : 5
} ) ;
2024-04-17 11:32:24 +02:00
// data-wp-watch--[name]
directive ( 'watch' , ( {
2023-12-07 09:44:11 +01:00
directives : {
2024-04-17 11:32:24 +02:00
watch
2023-12-07 09:44:11 +01:00
} ,
evaluate
} ) => {
2024-04-17 11:32:24 +02:00
watch . forEach ( entry => {
useWatch ( ( ) => evaluate ( entry ) ) ;
2023-12-07 09:44:11 +01:00
} ) ;
} ) ;
// data-wp-init--[name]
directive ( 'init' , ( {
directives : {
init
} ,
evaluate
} ) => {
2024-04-17 11:32:24 +02:00
init . forEach ( entry => {
// TODO: Replace with useEffect to prevent unneeded scopes.
useInit ( ( ) => evaluate ( entry ) ) ;
2023-12-07 09:44:11 +01:00
} ) ;
} ) ;
// data-wp-on--[event]
directive ( 'on' , ( {
directives : {
on
} ,
element ,
2024-04-17 11:32:24 +02:00
evaluate
2023-12-07 09:44:11 +01:00
} ) => {
2024-04-17 11:32:24 +02:00
on . filter ( ( {
suffix
} ) => suffix !== 'default' ) . forEach ( entry => {
element . props [ ` on ${ entry . suffix } ` ] = event => {
evaluate ( entry , event ) ;
2023-12-07 09:44:11 +01:00
} ;
} ) ;
} ) ;
2024-04-17 11:32:24 +02:00
// data-wp-on-window--[event]
directive ( 'on-window' , getGlobalEventDirective ( 'window' ) ) ;
// data-wp-on-document--[event]
directive ( 'on-document' , getGlobalEventDirective ( 'document' ) ) ;
2023-12-07 09:44:11 +01:00
// data-wp-class--[classname]
directive ( 'class' , ( {
directives : {
2024-04-17 11:32:24 +02:00
class : classNames
2023-12-07 09:44:11 +01:00
} ,
element ,
2024-04-17 11:32:24 +02:00
evaluate
2023-12-07 09:44:11 +01:00
} ) => {
2024-04-17 11:32:24 +02:00
classNames . filter ( ( {
suffix
} ) => suffix !== 'default' ) . forEach ( entry => {
const className = entry . suffix ;
const result = evaluate ( entry ) ;
2023-12-07 09:44:11 +01:00
const currentClass = element . props . class || '' ;
2024-04-17 11:32:24 +02:00
const classFinder = new RegExp ( ` (^| \\ s) ${ className } ( \\ s| $ ) ` , 'g' ) ;
if ( ! result ) element . props . class = currentClass . replace ( classFinder , ' ' ) . trim ( ) ; else if ( ! classFinder . test ( currentClass ) ) element . props . class = currentClass ? ` ${ currentClass } ${ className } ` : className ;
useInit ( ( ) => {
/ *
* This seems necessary because Preact doesn ' t change the class
* names on the hydration , so we have to do it manually . It doesn ' t
* need deps because it only needs to do it the first time .
* /
2023-12-07 09:44:11 +01:00
if ( ! result ) {
2024-04-17 11:32:24 +02:00
element . ref . current . classList . remove ( className ) ;
2023-12-07 09:44:11 +01:00
} else {
2024-04-17 11:32:24 +02:00
element . ref . current . classList . add ( className ) ;
2023-12-07 09:44:11 +01:00
}
2024-04-17 11:32:24 +02:00
} ) ;
2023-12-07 09:44:11 +01:00
} ) ;
} ) ;
2024-04-17 11:32:24 +02:00
// data-wp-style--[style-prop]
2023-12-07 09:44:11 +01:00
directive ( 'style' , ( {
directives : {
style
} ,
element ,
2024-04-17 11:32:24 +02:00
evaluate
2023-12-07 09:44:11 +01:00
} ) => {
2024-04-17 11:32:24 +02:00
style . filter ( ( {
suffix
} ) => suffix !== 'default' ) . forEach ( entry => {
const styleProp = entry . suffix ;
const result = evaluate ( entry ) ;
2023-12-07 09:44:11 +01:00
element . props . style = element . props . style || { } ;
if ( typeof element . props . style === 'string' ) element . props . style = cssStringToObject ( element . props . style ) ;
2024-04-17 11:32:24 +02:00
if ( ! result ) delete element . props . style [ styleProp ] ; else element . props . style [ styleProp ] = result ;
useInit ( ( ) => {
/ *
* This seems necessary because Preact doesn ' t change the styles on
* the hydration , so we have to do it manually . It doesn ' t need deps
* because it only needs to do it the first time .
* /
2023-12-07 09:44:11 +01:00
if ( ! result ) {
2024-04-17 11:32:24 +02:00
element . ref . current . style . removeProperty ( styleProp ) ;
2023-12-07 09:44:11 +01:00
} else {
2024-04-17 11:32:24 +02:00
element . ref . current . style [ styleProp ] = result ;
2023-12-07 09:44:11 +01:00
}
2024-04-17 11:32:24 +02:00
} ) ;
2023-12-07 09:44:11 +01:00
} ) ;
} ) ;
// data-wp-bind--[attribute]
directive ( 'bind' , ( {
directives : {
bind
} ,
element ,
evaluate
} ) => {
2024-04-17 11:32:24 +02:00
bind . filter ( ( {
suffix
} ) => suffix !== 'default' ) . forEach ( entry => {
const attribute = entry . suffix ;
const result = evaluate ( entry ) ;
2023-12-07 09:44:11 +01:00
element . props [ attribute ] = result ;
2024-04-17 11:32:24 +02:00
/ *
* This is necessary because Preact doesn ' t change the attributes on the
* hydration , so we have to do it manually . It only needs to do it the
* first time . After that , Preact will handle the changes .
* /
useInit ( ( ) => {
2023-12-07 09:44:11 +01:00
const el = element . ref . current ;
2024-04-17 11:32:24 +02:00
/ *
* We set the value directly to the corresponding HTMLElement instance
* property excluding the following special cases . We follow Preact ' s
* logic : https : //github.com/preactjs/preact/blob/ea49f7a0f9d1ff2c98c0bdd66aa0cbc583055246/src/diff/props.js#L110-L129
* /
if ( attribute === 'style' ) {
if ( typeof result === 'string' ) el . style . cssText = result ;
return ;
} else if ( attribute !== 'width' && attribute !== 'height' && attribute !== 'href' && attribute !== 'list' && attribute !== 'form' &&
/ *
* The value for ` tabindex ` follows the parsing rules for an
* integer . If that fails , or if the attribute isn ' t present , then
* the browsers should " follow platform conventions to determine if
* the element should be considered as a focusable area " ,
* practically meaning that most elements get a default of ` -1 ` ( not
* focusable ) , but several also get a default of ` 0 ` ( focusable in
* order after all elements with a positive ` tabindex ` value ) .
*
* @ see https : //html.spec.whatwg.org/#tabindex-value
* /
2023-12-07 09:44:11 +01:00
attribute !== 'tabIndex' && attribute !== 'download' && attribute !== 'rowSpan' && attribute !== 'colSpan' && attribute !== 'role' && attribute in el ) {
try {
el [ attribute ] = result === null || result === undefined ? '' : result ;
return ;
} catch ( err ) { }
}
2024-04-17 11:32:24 +02:00
/ *
* aria - and data - attributes have no boolean representation .
* A ` false ` value is different from the attribute not being
* present , so we can ' t remove it .
* We follow Preact ' s logic : https : //github.com/preactjs/preact/blob/ea49f7a0f9d1ff2c98c0bdd66aa0cbc583055246/src/diff/props.js#L131C24-L136
* /
2023-12-07 09:44:11 +01:00
if ( result !== null && result !== undefined && ( result !== false || attribute [ 4 ] === '-' ) ) {
el . setAttribute ( attribute , result ) ;
} else {
el . removeAttribute ( attribute ) ;
}
2024-04-17 11:32:24 +02:00
} ) ;
2023-12-07 09:44:11 +01:00
} ) ;
} ) ;
// data-wp-ignore
directive ( 'ignore' , ( {
element : {
type : Type ,
props : {
innerHTML ,
... rest
}
}
} ) => {
// Preserve the initial inner HTML.
2024-04-17 11:32:24 +02:00
const cached = hooks _module _q ( ( ) => innerHTML , [ ] ) ;
return y ( Type , {
2023-12-07 09:44:11 +01:00
dangerouslySetInnerHTML : {
_ _html : cached
} ,
... rest
} ) ;
} ) ;
// data-wp-text
directive ( 'text' , ( {
directives : {
2024-04-17 11:32:24 +02:00
text
2023-12-07 09:44:11 +01:00
} ,
element ,
2024-04-17 11:32:24 +02:00
evaluate
2023-12-07 09:44:11 +01:00
} ) => {
2024-04-17 11:32:24 +02:00
const entry = text . find ( ( {
suffix
} ) => suffix === 'default' ) ;
try {
const result = evaluate ( entry ) ;
element . props . children = typeof result === 'object' ? null : result . toString ( ) ;
} catch ( e ) {
element . props . children = null ;
}
2023-12-07 09:44:11 +01:00
} ) ;
2024-04-17 11:32:24 +02:00
// data-wp-run
directive ( 'run' , ( {
2023-12-07 09:44:11 +01:00
directives : {
2024-04-17 11:32:24 +02:00
run
2023-12-07 09:44:11 +01:00
} ,
2024-04-17 11:32:24 +02:00
evaluate
2023-12-07 09:44:11 +01:00
} ) => {
2024-04-17 11:32:24 +02:00
run . forEach ( entry => evaluate ( entry ) ) ;
2023-12-07 09:44:11 +01:00
} ) ;
2024-04-17 11:32:24 +02:00
// data-wp-each--[item]
directive ( 'each' , ( {
2023-12-07 09:44:11 +01:00
directives : {
2024-04-17 11:32:24 +02:00
each ,
'each-key' : eachKey
2023-12-07 09:44:11 +01:00
} ,
2024-04-17 11:32:24 +02:00
context : inheritedContext ,
element ,
evaluate
2023-12-07 09:44:11 +01:00
} ) => {
2024-04-17 11:32:24 +02:00
if ( element . type !== 'template' ) return ;
const {
Provider
} = inheritedContext ;
const inheritedValue = hooks _module _P ( inheritedContext ) ;
const [ entry ] = each ;
const {
namespace ,
suffix
} = entry ;
const list = evaluate ( entry ) ;
return list . map ( item => {
const itemProp = suffix === 'default' ? 'item' : kebabToCamelCase ( suffix ) ;
const itemContext = deepsignal _module _g ( {
[ namespace ] : { }
} ) ;
const mergedContext = proxifyContext ( itemContext , inheritedValue ) ;
// Set the item after proxifying the context.
mergedContext [ namespace ] [ itemProp ] = item ;
const scope = {
... getScope ( ) ,
context : mergedContext
} ;
const key = eachKey ? getEvaluate ( {
scope
} ) ( eachKey [ 0 ] ) : item ;
return y ( Provider , {
value : mergedContext ,
key : key
} , element . props . content ) ;
2023-12-07 09:44:11 +01:00
} ) ;
} , {
2024-04-17 11:32:24 +02:00
priority : 20
2023-12-07 09:44:11 +01:00
} ) ;
2024-04-17 11:32:24 +02:00
directive ( 'each-child' , ( ) => null ) ;
2023-12-07 09:44:11 +01:00
} ) ;
2024-04-17 11:32:24 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/constants.js
2023-12-07 09:44:11 +01:00
const directivePrefix = 'wp' ;
2024-04-17 11:32:24 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/vdom.js
2023-12-07 09:44:11 +01:00
/ * *
* External dependencies
* /
/ * *
* Internal dependencies
* /
const ignoreAttr = ` data- ${ directivePrefix } -ignore ` ;
const islandAttr = ` data- ${ directivePrefix } -interactive ` ;
const fullPrefix = ` data- ${ directivePrefix } - ` ;
2024-04-17 11:32:24 +02:00
const namespaces = [ ] ;
const currentNamespace = ( ) => {
var _namespaces ;
return ( _namespaces = namespaces [ namespaces . length - 1 ] ) !== null && _namespaces !== void 0 ? _namespaces : null ;
} ;
2023-12-07 09:44:11 +01:00
// Regular expression for directive parsing.
const directiveParser = new RegExp ( ` ^data- ${ directivePrefix } - ` +
// ${p} must be a prefix string, like 'wp'.
// Match alphanumeric characters including hyphen-separated
// segments. It excludes underscore intentionally to prevent confusion.
// E.g., "custom-directive".
'([a-z0-9]+(?:-[a-z0-9]+)*)' +
// (Optional) Match '--' followed by any alphanumeric charachters. It
// excludes underscore intentionally to prevent confusion, but it can
// contain multiple hyphens. E.g., "--custom-prefix--with-more-info".
'(?:--([a-z0-9_-]+))?$' , 'i' // Case insensitive.
) ;
2024-04-17 11:32:24 +02:00
// Regular expression for reference parsing. It can contain a namespace before
// the reference, separated by `::`, like `some-namespace::state.somePath`.
// Namespaces can contain any alphanumeric characters, hyphens, underscores or
// forward slashes. References don't have any restrictions.
const nsPathRegExp = /^([\w-_\/]+)::(.+)$/ ;
2023-12-07 09:44:11 +01:00
const hydratedIslands = new WeakSet ( ) ;
2024-04-17 11:32:24 +02:00
/ * *
* Recursive function that transforms a DOM tree into vDOM .
*
* @ param { Node } root The root element or node to start traversing on .
* @ return { import ( 'preact' ) . VNode [ ] } The resulting vDOM tree .
* /
2023-12-07 09:44:11 +01:00
function toVdom ( root ) {
const treeWalker = document . createTreeWalker ( root , 205 // ELEMENT + TEXT + COMMENT + CDATA_SECTION + PROCESSING_INSTRUCTION
) ;
function walk ( node ) {
const {
attributes ,
2024-04-17 11:32:24 +02:00
nodeType ,
localName
2023-12-07 09:44:11 +01:00
} = node ;
if ( nodeType === 3 ) return [ node . data ] ;
if ( nodeType === 4 ) {
const next = treeWalker . nextSibling ( ) ;
node . replaceWith ( new window . Text ( node . nodeValue ) ) ;
return [ node . nodeValue , next ] ;
}
if ( nodeType === 8 || nodeType === 7 ) {
const next = treeWalker . nextSibling ( ) ;
node . remove ( ) ;
return [ null , next ] ;
}
const props = { } ;
const children = [ ] ;
2024-04-17 11:32:24 +02:00
const directives = [ ] ;
2023-12-07 09:44:11 +01:00
let ignore = false ;
let island = false ;
for ( let i = 0 ; i < attributes . length ; i ++ ) {
const n = attributes [ i ] . name ;
if ( n [ fullPrefix . length ] && n . slice ( 0 , fullPrefix . length ) === fullPrefix ) {
if ( n === ignoreAttr ) {
ignore = true ;
} else {
2024-04-17 11:32:24 +02:00
var _nsPathRegExp$exec$sl ;
let [ ns , value ] = ( _nsPathRegExp$exec$sl = nsPathRegExp . exec ( attributes [ i ] . value ) ? . slice ( 1 ) ) !== null && _nsPathRegExp$exec$sl !== void 0 ? _nsPathRegExp$exec$sl : [ null , attributes [ i ] . value ] ;
2023-12-07 09:44:11 +01:00
try {
2024-04-17 11:32:24 +02:00
value = JSON . parse ( value ) ;
2023-12-07 09:44:11 +01:00
} catch ( e ) { }
2024-04-17 11:32:24 +02:00
if ( n === islandAttr ) {
var _value$namespace ;
island = true ;
namespaces . push ( typeof value === 'string' ? value : ( _value$namespace = value ? . namespace ) !== null && _value$namespace !== void 0 ? _value$namespace : null ) ;
} else {
directives . push ( [ n , ns , value ] ) ;
}
2023-12-07 09:44:11 +01:00
}
} else if ( n === 'ref' ) {
continue ;
}
props [ n ] = attributes [ i ] . value ;
}
2024-04-17 11:32:24 +02:00
if ( ignore && ! island ) return [ y ( localName , {
2023-12-07 09:44:11 +01:00
... props ,
innerHTML : node . innerHTML ,
_ _directives : {
ignore : true
}
} ) ] ;
if ( island ) hydratedIslands . add ( node ) ;
2024-04-17 11:32:24 +02:00
if ( directives . length ) {
props . _ _directives = directives . reduce ( ( obj , [ name , ns , value ] ) => {
const [ , prefix , suffix = 'default' ] = directiveParser . exec ( name ) ;
if ( ! obj [ prefix ] ) obj [ prefix ] = [ ] ;
obj [ prefix ] . push ( {
namespace : ns !== null && ns !== void 0 ? ns : currentNamespace ( ) ,
value ,
suffix
} ) ;
return obj ;
} , { } ) ;
}
if ( localName === 'template' ) {
props . content = [ ... node . content . childNodes ] . map ( childNode => toVdom ( childNode ) ) ;
} else {
let child = treeWalker . firstChild ( ) ;
if ( child ) {
while ( child ) {
const [ vnode , nextChild ] = walk ( child ) ;
if ( vnode ) children . push ( vnode ) ;
child = nextChild || treeWalker . nextSibling ( ) ;
}
treeWalker . parentNode ( ) ;
2023-12-07 09:44:11 +01:00
}
}
2024-04-17 11:32:24 +02:00
// Restore previous namespace.
if ( island ) namespaces . pop ( ) ;
return [ y ( localName , props , children ) ] ;
2023-12-07 09:44:11 +01:00
}
return walk ( treeWalker . currentNode ) ;
}
2024-04-17 11:32:24 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/init.js
2023-12-07 09:44:11 +01:00
/ * *
* External dependencies
* /
/ * *
* Internal dependencies
* /
// Keep the same root fragment for each interactive region node.
const regionRootFragments = new WeakMap ( ) ;
const getRegionRootFragment = region => {
if ( ! regionRootFragments . has ( region ) ) {
regionRootFragments . set ( region , createRootFragment ( region . parentElement , region ) ) ;
}
return regionRootFragments . get ( region ) ;
} ;
2024-04-17 11:32:24 +02:00
function yieldToMain ( ) {
return new Promise ( resolve => {
// TODO: Use scheduler.yield() when available.
setTimeout ( resolve , 0 ) ;
2023-12-07 09:44:11 +01:00
} ) ;
2024-04-17 11:32:24 +02:00
}
2023-12-07 09:44:11 +01:00
2024-04-17 11:32:24 +02:00
// Initial vDOM regions associated with its DOM element.
const initialVdom = new WeakMap ( ) ;
2023-12-07 09:44:11 +01:00
// Initialize the router with the initial DOM.
const init = async ( ) => {
2024-04-17 11:32:24 +02:00
const nodes = document . querySelectorAll ( ` [data- ${ directivePrefix } -interactive] ` ) ;
for ( const node of nodes ) {
2023-12-07 09:44:11 +01:00
if ( ! hydratedIslands . has ( node ) ) {
2024-04-17 11:32:24 +02:00
await yieldToMain ( ) ;
2023-12-07 09:44:11 +01:00
const fragment = getRegionRootFragment ( node ) ;
const vdom = toVdom ( node ) ;
2024-04-17 11:32:24 +02:00
initialVdom . set ( node , vdom ) ;
await yieldToMain ( ) ;
E ( vdom , fragment ) ;
2023-12-07 09:44:11 +01:00
}
2024-04-17 11:32:24 +02:00
}
2023-12-07 09:44:11 +01:00
} ;
2024-04-17 11:32:24 +02:00
; // CONCATENATED MODULE: ./node_modules/@wordpress/interactivity/build-module/index.js
/ * *
* External dependencies
* /
2023-12-07 09:44:11 +01:00
/ * *
* Internal dependencies
* /
2024-04-17 11:32:24 +02:00
const requiredConsent = 'I acknowledge that using private APIs means my theme or plugin will inevitably break in the next version of WordPress.' ;
const privateApis = lock => {
if ( lock === requiredConsent ) {
return {
directivePrefix : directivePrefix ,
getRegionRootFragment : getRegionRootFragment ,
initialVdom : initialVdom ,
toVdom : toVdom ,
directive : directive ,
getNamespace : getNamespace ,
h : y ,
cloneElement : F ,
render : B ,
deepSignal : deepsignal _module _g ,
parseInitialData : parseInitialData ,
populateInitialData : populateInitialData ,
batch : signals _core _module _n
} ;
}
throw new Error ( 'Forbidden access.' ) ;
} ;
2023-12-07 09:44:11 +01:00
document . addEventListener ( 'DOMContentLoaded' , async ( ) => {
directives ( ) ;
await init ( ) ;
} ) ;
2024-04-17 11:32:24 +02:00
var _ _webpack _exports _ _getConfig = _ _webpack _exports _ _ . zj ;
var _ _webpack _exports _ _getContext = _ _webpack _exports _ _ . SD ;
var _ _webpack _exports _ _getElement = _ _webpack _exports _ _ . V6 ;
var _ _webpack _exports _ _privateApis = _ _webpack _exports _ _ . jb ;
var _ _webpack _exports _ _store = _ _webpack _exports _ _ . M _ ;
var _ _webpack _exports _ _useCallback = _ _webpack _exports _ _ . hb ;
var _ _webpack _exports _ _useEffect = _ _webpack _exports _ _ . vJ ;
var _ _webpack _exports _ _useInit = _ _webpack _exports _ _ . ip ;
var _ _webpack _exports _ _useLayoutEffect = _ _webpack _exports _ _ . Nf ;
var _ _webpack _exports _ _useMemo = _ _webpack _exports _ _ . Kr ;
var _ _webpack _exports _ _useRef = _ _webpack _exports _ _ . li ;
var _ _webpack _exports _ _useState = _ _webpack _exports _ _ . J0 ;
var _ _webpack _exports _ _useWatch = _ _webpack _exports _ _ . FH ;
var _ _webpack _exports _ _withScope = _ _webpack _exports _ _ . v4 ;
export { _ _webpack _exports _ _getConfig as getConfig , _ _webpack _exports _ _getContext as getContext , _ _webpack _exports _ _getElement as getElement , _ _webpack _exports _ _privateApis as privateApis , _ _webpack _exports _ _store as store , _ _webpack _exports _ _useCallback as useCallback , _ _webpack _exports _ _useEffect as useEffect , _ _webpack _exports _ _useInit as useInit , _ _webpack _exports _ _useLayoutEffect as useLayoutEffect , _ _webpack _exports _ _useMemo as useMemo , _ _webpack _exports _ _useRef as useRef , _ _webpack _exports _ _useState as useState , _ _webpack _exports _ _useWatch as useWatch , _ _webpack _exports _ _withScope as withScope } ;