2024-03-10 11:28:50 +01:00
( ( ) => {
var _ _create = Object . create ;
var _ _defProp = Object . defineProperty ;
var _ _getOwnPropDesc = Object . getOwnPropertyDescriptor ;
var _ _getOwnPropNames = Object . getOwnPropertyNames ;
var _ _getProtoOf = Object . getPrototypeOf ;
var _ _hasOwnProp = Object . prototype . hasOwnProperty ;
var _ _commonJS = ( cb , mod ) => function _ _require ( ) {
return mod || ( 0 , cb [ _ _getOwnPropNames ( cb ) [ 0 ] ] ) ( ( mod = { exports : { } } ) . exports , mod ) , mod . exports ;
} ;
var _ _copyProps = ( to , from , except , desc ) => {
if ( from && typeof from === "object" || typeof from === "function" ) {
for ( let key of _ _getOwnPropNames ( from ) )
if ( ! _ _hasOwnProp . call ( to , key ) && key !== except )
_ _defProp ( to , key , { get : ( ) => from [ key ] , enumerable : ! ( desc = _ _getOwnPropDesc ( from , key ) ) || desc . enumerable } ) ;
}
return to ;
} ;
var _ _toESM = ( mod , isNodeMode , target ) => ( target = mod != null ? _ _create ( _ _getProtoOf ( mod ) ) : { } , _ _copyProps ( isNodeMode || ! mod || ! mod . _ _esModule ? _ _defProp ( target , "default" , { value : mod , enumerable : true } ) : target , mod ) ) ;
// node_modules/nprogress/nprogress.js
var require _nprogress = _ _commonJS ( {
"node_modules/nprogress/nprogress.js" ( exports , module ) {
( function ( root , factory ) {
if ( typeof define === "function" && define . amd ) {
define ( factory ) ;
} else if ( typeof exports === "object" ) {
module . exports = factory ( ) ;
} else {
root . NProgress = factory ( ) ;
}
} ) ( exports , function ( ) {
var NProgress2 = { } ;
NProgress2 . version = "0.2.0" ;
var Settings = NProgress2 . settings = {
minimum : 0.08 ,
easing : "ease" ,
positionUsing : "" ,
speed : 200 ,
trickle : true ,
trickleRate : 0.02 ,
trickleSpeed : 800 ,
showSpinner : true ,
barSelector : '[role="bar"]' ,
spinnerSelector : '[role="spinner"]' ,
parent : "body" ,
template : '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
} ;
NProgress2 . configure = function ( options ) {
var key , value ;
for ( key in options ) {
value = options [ key ] ;
if ( value !== void 0 && options . hasOwnProperty ( key ) )
Settings [ key ] = value ;
}
return this ;
} ;
NProgress2 . status = null ;
NProgress2 . set = function ( n ) {
var started2 = NProgress2 . isStarted ( ) ;
n = clamp2 ( n , Settings . minimum , 1 ) ;
NProgress2 . status = n === 1 ? null : n ;
var progress = NProgress2 . render ( ! started2 ) , bar = progress . querySelector ( Settings . barSelector ) , speed = Settings . speed , ease = Settings . easing ;
progress . offsetWidth ;
queue2 ( function ( next ) {
if ( Settings . positionUsing === "" )
Settings . positionUsing = NProgress2 . getPositioningCSS ( ) ;
css ( bar , barPositionCSS ( n , speed , ease ) ) ;
if ( n === 1 ) {
css ( progress , {
transition : "none" ,
opacity : 1
} ) ;
progress . offsetWidth ;
setTimeout ( function ( ) {
css ( progress , {
transition : "all " + speed + "ms linear" ,
opacity : 0
} ) ;
setTimeout ( function ( ) {
NProgress2 . remove ( ) ;
next ( ) ;
} , speed ) ;
} , speed ) ;
} else {
setTimeout ( next , speed ) ;
}
} ) ;
return this ;
} ;
NProgress2 . isStarted = function ( ) {
return typeof NProgress2 . status === "number" ;
} ;
NProgress2 . start = function ( ) {
if ( ! NProgress2 . status )
NProgress2 . set ( 0 ) ;
var work = function ( ) {
setTimeout ( function ( ) {
if ( ! NProgress2 . status )
return ;
NProgress2 . trickle ( ) ;
work ( ) ;
} , Settings . trickleSpeed ) ;
} ;
if ( Settings . trickle )
work ( ) ;
return this ;
} ;
NProgress2 . done = function ( force ) {
if ( ! force && ! NProgress2 . status )
return this ;
return NProgress2 . inc ( 0.3 + 0.5 * Math . random ( ) ) . set ( 1 ) ;
} ;
NProgress2 . inc = function ( amount ) {
var n = NProgress2 . status ;
if ( ! n ) {
return NProgress2 . start ( ) ;
} else {
if ( typeof amount !== "number" ) {
amount = ( 1 - n ) * clamp2 ( Math . random ( ) * n , 0.1 , 0.95 ) ;
}
n = clamp2 ( n + amount , 0 , 0.994 ) ;
return NProgress2 . set ( n ) ;
}
} ;
NProgress2 . trickle = function ( ) {
return NProgress2 . inc ( Math . random ( ) * Settings . trickleRate ) ;
} ;
( function ( ) {
var initial = 0 , current = 0 ;
NProgress2 . promise = function ( $promise ) {
if ( ! $promise || $promise . state ( ) === "resolved" ) {
return this ;
}
if ( current === 0 ) {
NProgress2 . start ( ) ;
}
initial ++ ;
current ++ ;
$promise . always ( function ( ) {
current -- ;
if ( current === 0 ) {
initial = 0 ;
NProgress2 . done ( ) ;
} else {
NProgress2 . set ( ( initial - current ) / initial ) ;
}
} ) ;
return this ;
} ;
} ) ( ) ;
NProgress2 . render = function ( fromStart ) {
if ( NProgress2 . isRendered ( ) )
return document . getElementById ( "nprogress" ) ;
addClass ( document . documentElement , "nprogress-busy" ) ;
var progress = document . createElement ( "div" ) ;
progress . id = "nprogress" ;
progress . innerHTML = Settings . template ;
var bar = progress . querySelector ( Settings . barSelector ) , perc = fromStart ? "-100" : toBarPerc ( NProgress2 . status || 0 ) , parent = document . querySelector ( Settings . parent ) , spinner ;
css ( bar , {
transition : "all 0 linear" ,
transform : "translate3d(" + perc + "%,0,0)"
} ) ;
if ( ! Settings . showSpinner ) {
spinner = progress . querySelector ( Settings . spinnerSelector ) ;
spinner && removeElement ( spinner ) ;
}
if ( parent != document . body ) {
addClass ( parent , "nprogress-custom-parent" ) ;
}
parent . appendChild ( progress ) ;
return progress ;
} ;
NProgress2 . remove = function ( ) {
removeClass ( document . documentElement , "nprogress-busy" ) ;
removeClass ( document . querySelector ( Settings . parent ) , "nprogress-custom-parent" ) ;
var progress = document . getElementById ( "nprogress" ) ;
progress && removeElement ( progress ) ;
} ;
NProgress2 . isRendered = function ( ) {
return ! ! document . getElementById ( "nprogress" ) ;
} ;
NProgress2 . getPositioningCSS = function ( ) {
var bodyStyle = document . body . style ;
var vendorPrefix = "WebkitTransform" in bodyStyle ? "Webkit" : "MozTransform" in bodyStyle ? "Moz" : "msTransform" in bodyStyle ? "ms" : "OTransform" in bodyStyle ? "O" : "" ;
if ( vendorPrefix + "Perspective" in bodyStyle ) {
return "translate3d" ;
} else if ( vendorPrefix + "Transform" in bodyStyle ) {
return "translate" ;
} else {
return "margin" ;
}
} ;
function clamp2 ( n , min2 , max2 ) {
if ( n < min2 )
return min2 ;
if ( n > max2 )
return max2 ;
return n ;
}
function toBarPerc ( n ) {
return ( - 1 + n ) * 100 ;
}
function barPositionCSS ( n , speed , ease ) {
var barCSS ;
if ( Settings . positionUsing === "translate3d" ) {
barCSS = { transform : "translate3d(" + toBarPerc ( n ) + "%,0,0)" } ;
} else if ( Settings . positionUsing === "translate" ) {
barCSS = { transform : "translate(" + toBarPerc ( n ) + "%,0)" } ;
} else {
barCSS = { "margin-left" : toBarPerc ( n ) + "%" } ;
}
barCSS . transition = "all " + speed + "ms " + ease ;
return barCSS ;
}
var queue2 = function ( ) {
var pending = [ ] ;
function next ( ) {
var fn = pending . shift ( ) ;
if ( fn ) {
fn ( next ) ;
}
}
return function ( fn ) {
pending . push ( fn ) ;
if ( pending . length == 1 )
next ( ) ;
} ;
} ( ) ;
var css = function ( ) {
var cssPrefixes = [ "Webkit" , "O" , "Moz" , "ms" ] , cssProps = { } ;
function camelCase3 ( string ) {
return string . replace ( /^-ms-/ , "ms-" ) . replace ( /-([\da-z])/gi , function ( match , letter ) {
return letter . toUpperCase ( ) ;
} ) ;
}
function getVendorProp ( name ) {
var style = document . body . style ;
if ( name in style )
return name ;
var i = cssPrefixes . length , capName = name . charAt ( 0 ) . toUpperCase ( ) + name . slice ( 1 ) , vendorName ;
while ( i -- ) {
vendorName = cssPrefixes [ i ] + capName ;
if ( vendorName in style )
return vendorName ;
}
return name ;
}
function getStyleProp ( name ) {
name = camelCase3 ( name ) ;
return cssProps [ name ] || ( cssProps [ name ] = getVendorProp ( name ) ) ;
}
function applyCss ( element , prop , value ) {
prop = getStyleProp ( prop ) ;
element . style [ prop ] = value ;
}
return function ( element , properties2 ) {
var args = arguments , prop , value ;
if ( args . length == 2 ) {
for ( prop in properties2 ) {
value = properties2 [ prop ] ;
if ( value !== void 0 && properties2 . hasOwnProperty ( prop ) )
applyCss ( element , prop , value ) ;
}
} else {
applyCss ( element , args [ 1 ] , args [ 2 ] ) ;
}
} ;
} ( ) ;
function hasClass ( element , name ) {
var list = typeof element == "string" ? element : classList ( element ) ;
return list . indexOf ( " " + name + " " ) >= 0 ;
}
function addClass ( element , name ) {
var oldList = classList ( element ) , newList = oldList + name ;
if ( hasClass ( oldList , name ) )
return ;
element . className = newList . substring ( 1 ) ;
}
function removeClass ( element , name ) {
var oldList = classList ( element ) , newList ;
if ( ! hasClass ( element , name ) )
return ;
newList = oldList . replace ( " " + name + " " , " " ) ;
element . className = newList . substring ( 1 , newList . length - 1 ) ;
}
function classList ( element ) {
return ( " " + ( element . className || "" ) + " " ) . replace ( /\s+/gi , " " ) ;
}
function removeElement ( element ) {
element && element . parentNode && element . parentNode . removeChild ( element ) ;
}
return NProgress2 ;
} ) ;
}
} ) ;
// js/utils.js
2024-08-27 12:22:51 +02:00
var Bag = class {
constructor ( ) {
this . arrays = { } ;
}
add ( key , value ) {
if ( ! this . arrays [ key ] )
this . arrays [ key ] = [ ] ;
this . arrays [ key ] . push ( value ) ;
}
remove ( key ) {
if ( this . arrays [ key ] )
delete this . arrays [ key ] ;
}
get ( key ) {
return this . arrays [ key ] || [ ] ;
}
each ( key , callback ) {
return this . get ( key ) . forEach ( callback ) ;
}
} ;
2024-03-10 11:28:50 +01:00
var WeakBag = class {
constructor ( ) {
this . arrays = /* @__PURE__ */ new WeakMap ( ) ;
}
add ( key , value ) {
if ( ! this . arrays . has ( key ) )
this . arrays . set ( key , [ ] ) ;
this . arrays . get ( key ) . push ( value ) ;
}
2024-08-27 12:22:51 +02:00
remove ( key ) {
if ( this . arrays . has ( key ) )
this . arrays . delete ( key , [ ] ) ;
}
2024-03-10 11:28:50 +01:00
get ( key ) {
return this . arrays . has ( key ) ? this . arrays . get ( key ) : [ ] ;
}
each ( key , callback ) {
return this . get ( key ) . forEach ( callback ) ;
}
} ;
2024-08-27 12:22:51 +02:00
function dispatch ( target , name , detail = { } , bubbles = true ) {
target . dispatchEvent ( new CustomEvent ( name , {
2024-03-10 11:28:50 +01:00
detail ,
bubbles ,
composed : true ,
cancelable : true
} ) ) ;
}
2024-08-27 12:22:51 +02:00
function listen ( target , name , handler4 ) {
target . addEventListener ( name , handler4 ) ;
return ( ) => target . removeEventListener ( name , handler4 ) ;
}
2024-03-10 11:28:50 +01:00
function isObjecty ( subject ) {
return typeof subject === "object" && subject !== null ;
}
function isObject ( subject ) {
return isObjecty ( subject ) && ! isArray ( subject ) ;
}
function isArray ( subject ) {
return Array . isArray ( subject ) ;
}
function isFunction ( subject ) {
return typeof subject === "function" ;
}
function isPrimitive ( subject ) {
return typeof subject !== "object" || subject === null ;
}
function deepClone ( obj ) {
return JSON . parse ( JSON . stringify ( obj ) ) ;
}
function dataGet ( object , key ) {
if ( key === "" )
return object ;
return key . split ( "." ) . reduce ( ( carry , i ) => {
if ( carry === void 0 )
return void 0 ;
return carry [ i ] ;
} , object ) ;
}
function dataSet ( object , key , value ) {
let segments = key . split ( "." ) ;
if ( segments . length === 1 ) {
return object [ key ] = value ;
}
let firstSegment = segments . shift ( ) ;
let restOfSegments = segments . join ( "." ) ;
if ( object [ firstSegment ] === void 0 ) {
object [ firstSegment ] = { } ;
}
dataSet ( object [ firstSegment ] , restOfSegments , value ) ;
}
function diff ( left , right , diffs = { } , path = "" ) {
if ( left === right )
return diffs ;
if ( typeof left !== typeof right || isObject ( left ) && isArray ( right ) || isArray ( left ) && isObject ( right ) ) {
diffs [ path ] = right ;
return diffs ;
}
if ( isPrimitive ( left ) || isPrimitive ( right ) ) {
diffs [ path ] = right ;
return diffs ;
}
let leftKeys = Object . keys ( left ) ;
Object . entries ( right ) . forEach ( ( [ key , value ] ) => {
diffs = { ... diffs , ... diff ( left [ key ] , right [ key ] , diffs , path === "" ? key : ` ${ path } . ${ key } ` ) } ;
leftKeys = leftKeys . filter ( ( i ) => i !== key ) ;
} ) ;
leftKeys . forEach ( ( key ) => {
diffs [ ` ${ path } . ${ key } ` ] = "__rm__" ;
} ) ;
return diffs ;
}
function extractData ( payload ) {
let value = isSynthetic ( payload ) ? payload [ 0 ] : payload ;
let meta = isSynthetic ( payload ) ? payload [ 1 ] : void 0 ;
if ( isObjecty ( value ) ) {
Object . entries ( value ) . forEach ( ( [ key , iValue ] ) => {
value [ key ] = extractData ( iValue ) ;
} ) ;
}
return value ;
}
function isSynthetic ( subject ) {
return Array . isArray ( subject ) && subject . length === 2 && typeof subject [ 1 ] === "object" && Object . keys ( subject [ 1 ] ) . includes ( "s" ) ;
}
function getCsrfToken ( ) {
if ( document . querySelector ( 'meta[name="csrf-token"]' ) ) {
return document . querySelector ( 'meta[name="csrf-token"]' ) . getAttribute ( "content" ) ;
}
if ( document . querySelector ( "[data-csrf]" ) ) {
return document . querySelector ( "[data-csrf]" ) . getAttribute ( "data-csrf" ) ;
}
if ( window . livewireScriptConfig [ "csrf" ] ? ? false ) {
return window . livewireScriptConfig [ "csrf" ] ;
}
throw "Livewire: No CSRF token detected" ;
}
var nonce ;
function getNonce ( ) {
if ( nonce )
return nonce ;
if ( window . livewireScriptConfig && ( window . livewireScriptConfig [ "nonce" ] ? ? false ) ) {
nonce = window . livewireScriptConfig [ "nonce" ] ;
return nonce ;
}
const elWithNonce = document . querySelector ( "style[data-livewire-style][nonce]" ) ;
if ( elWithNonce ) {
nonce = elWithNonce . nonce ;
return nonce ;
}
return null ;
}
function getUpdateUri ( ) {
return document . querySelector ( "[data-update-uri]" ) ? . getAttribute ( "data-update-uri" ) ? ? window . livewireScriptConfig [ "uri" ] ? ? null ;
}
function contentIsFromDump ( content ) {
return ! ! content . match ( /<script>Sfdump\(".+"\)<\/script>/ ) ;
}
function splitDumpFromContent ( content ) {
let dump = content . match ( / . * < s c r i p t > S f d u m p \ ( " . + " \ ) < \ / s c r i p t > / s ) ;
return [ dump , content . replace ( dump , "" ) ] ;
}
// js/features/supportFileUploads.js
var uploadManagers = /* @__PURE__ */ new WeakMap ( ) ;
function getUploadManager ( component ) {
if ( ! uploadManagers . has ( component ) ) {
let manager = new UploadManager ( component ) ;
uploadManagers . set ( component , manager ) ;
manager . registerListeners ( ) ;
}
return uploadManagers . get ( component ) ;
}
2024-08-27 12:22:51 +02:00
function handleFileUpload ( el , property , component , cleanup2 ) {
2024-03-10 11:28:50 +01:00
let manager = getUploadManager ( component ) ;
let start3 = ( ) => el . dispatchEvent ( new CustomEvent ( "livewire-upload-start" , { bubbles : true , detail : { id : component . id , property } } ) ) ;
let finish = ( ) => el . dispatchEvent ( new CustomEvent ( "livewire-upload-finish" , { bubbles : true , detail : { id : component . id , property } } ) ) ;
let error2 = ( ) => el . dispatchEvent ( new CustomEvent ( "livewire-upload-error" , { bubbles : true , detail : { id : component . id , property } } ) ) ;
let cancel = ( ) => el . dispatchEvent ( new CustomEvent ( "livewire-upload-cancel" , { bubbles : true , detail : { id : component . id , property } } ) ) ;
let progress = ( progressEvent ) => {
var percentCompleted = Math . round ( progressEvent . loaded * 100 / progressEvent . total ) ;
el . dispatchEvent ( new CustomEvent ( "livewire-upload-progress" , {
bubbles : true ,
detail : { progress : percentCompleted }
} ) ) ;
} ;
let eventHandler = ( e ) => {
if ( e . target . files . length === 0 )
return ;
start3 ( ) ;
if ( e . target . multiple ) {
manager . uploadMultiple ( property , e . target . files , finish , error2 , progress , cancel ) ;
} else {
manager . upload ( property , e . target . files [ 0 ] , finish , error2 , progress , cancel ) ;
}
} ;
el . addEventListener ( "change" , eventHandler ) ;
2024-08-27 12:22:51 +02:00
component . $wire . $watch ( property , ( value ) => {
if ( ! el . isConnected )
return ;
if ( value === null || value === "" ) {
el . value = "" ;
}
} ) ;
2024-03-10 11:28:50 +01:00
let clearFileInputValue = ( ) => {
el . value = null ;
} ;
el . addEventListener ( "click" , clearFileInputValue ) ;
el . addEventListener ( "livewire-upload-cancel" , clearFileInputValue ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => {
2024-03-10 11:28:50 +01:00
el . removeEventListener ( "change" , eventHandler ) ;
el . removeEventListener ( "click" , clearFileInputValue ) ;
} ) ;
}
var UploadManager = class {
constructor ( component ) {
this . component = component ;
this . uploadBag = new MessageBag ( ) ;
this . removeBag = new MessageBag ( ) ;
}
registerListeners ( ) {
this . component . $wire . $on ( "upload:generatedSignedUrl" , ( { name , url } ) => {
setUploadLoading ( this . component , name ) ;
this . handleSignedUrl ( name , url ) ;
} ) ;
this . component . $wire . $on ( "upload:generatedSignedUrlForS3" , ( { name , payload } ) => {
setUploadLoading ( this . component , name ) ;
this . handleS3PreSignedUrl ( name , payload ) ;
} ) ;
this . component . $wire . $on ( "upload:finished" , ( { name , tmpFilenames } ) => this . markUploadFinished ( name , tmpFilenames ) ) ;
this . component . $wire . $on ( "upload:errored" , ( { name } ) => this . markUploadErrored ( name ) ) ;
this . component . $wire . $on ( "upload:removed" , ( { name , tmpFilename } ) => this . removeBag . shift ( name ) . finishCallback ( tmpFilename ) ) ;
}
upload ( name , file , finishCallback , errorCallback , progressCallback , cancelledCallback ) {
this . setUpload ( name , {
files : [ file ] ,
multiple : false ,
finishCallback ,
errorCallback ,
progressCallback ,
cancelledCallback
} ) ;
}
uploadMultiple ( name , files , finishCallback , errorCallback , progressCallback , cancelledCallback ) {
this . setUpload ( name , {
files : Array . from ( files ) ,
multiple : true ,
finishCallback ,
errorCallback ,
progressCallback ,
cancelledCallback
} ) ;
}
removeUpload ( name , tmpFilename , finishCallback ) {
this . removeBag . push ( name , {
tmpFilename ,
finishCallback
} ) ;
this . component . $wire . call ( "_removeUpload" , name , tmpFilename ) ;
}
setUpload ( name , uploadObject ) {
this . uploadBag . add ( name , uploadObject ) ;
if ( this . uploadBag . get ( name ) . length === 1 ) {
this . startUpload ( name , uploadObject ) ;
}
}
handleSignedUrl ( name , url ) {
let formData = new FormData ( ) ;
Array . from ( this . uploadBag . first ( name ) . files ) . forEach ( ( file ) => formData . append ( "files[]" , file , file . name ) ) ;
let headers = {
"Accept" : "application/json"
} ;
let csrfToken = getCsrfToken ( ) ;
if ( csrfToken )
headers [ "X-CSRF-TOKEN" ] = csrfToken ;
this . makeRequest ( name , formData , "post" , url , headers , ( response ) => {
return response . paths ;
} ) ;
}
handleS3PreSignedUrl ( name , payload ) {
let formData = this . uploadBag . first ( name ) . files [ 0 ] ;
let headers = payload . headers ;
if ( "Host" in headers )
delete headers . Host ;
let url = payload . url ;
this . makeRequest ( name , formData , "put" , url , headers , ( response ) => {
return [ payload . path ] ;
} ) ;
}
makeRequest ( name , formData , method , url , headers , retrievePaths ) {
let request = new XMLHttpRequest ( ) ;
request . open ( method , url ) ;
Object . entries ( headers ) . forEach ( ( [ key , value ] ) => {
request . setRequestHeader ( key , value ) ;
} ) ;
request . upload . addEventListener ( "progress" , ( e ) => {
e . detail = { } ;
2024-08-27 12:22:51 +02:00
e . detail . progress = Math . floor ( e . loaded * 100 / e . total ) ;
2024-03-10 11:28:50 +01:00
this . uploadBag . first ( name ) . progressCallback ( e ) ;
} ) ;
request . addEventListener ( "load" , ( ) => {
if ( ( request . status + "" ) [ 0 ] === "2" ) {
let paths = retrievePaths ( request . response && JSON . parse ( request . response ) ) ;
this . component . $wire . call ( "_finishUpload" , name , paths , this . uploadBag . first ( name ) . multiple ) ;
return ;
}
let errors = null ;
if ( request . status === 422 ) {
errors = request . response ;
}
this . component . $wire . call ( "_uploadErrored" , name , errors , this . uploadBag . first ( name ) . multiple ) ;
} ) ;
this . uploadBag . first ( name ) . request = request ;
request . send ( formData ) ;
}
startUpload ( name , uploadObject ) {
let fileInfos = uploadObject . files . map ( ( file ) => {
return { name : file . name , size : file . size , type : file . type } ;
} ) ;
this . component . $wire . call ( "_startUpload" , name , fileInfos , uploadObject . multiple ) ;
setUploadLoading ( this . component , name ) ;
}
markUploadFinished ( name , tmpFilenames ) {
unsetUploadLoading ( this . component ) ;
let uploadObject = this . uploadBag . shift ( name ) ;
uploadObject . finishCallback ( uploadObject . multiple ? tmpFilenames : tmpFilenames [ 0 ] ) ;
if ( this . uploadBag . get ( name ) . length > 0 )
this . startUpload ( name , this . uploadBag . last ( name ) ) ;
}
markUploadErrored ( name ) {
unsetUploadLoading ( this . component ) ;
this . uploadBag . shift ( name ) . errorCallback ( ) ;
if ( this . uploadBag . get ( name ) . length > 0 )
this . startUpload ( name , this . uploadBag . last ( name ) ) ;
}
cancelUpload ( name , cancelledCallback = null ) {
unsetUploadLoading ( this . component ) ;
let uploadItem = this . uploadBag . first ( name ) ;
if ( uploadItem ) {
2024-08-27 12:22:51 +02:00
if ( uploadItem . request ) {
uploadItem . request . abort ( ) ;
}
2024-03-10 11:28:50 +01:00
this . uploadBag . shift ( name ) . cancelledCallback ( ) ;
if ( cancelledCallback )
cancelledCallback ( ) ;
}
}
} ;
var MessageBag = class {
constructor ( ) {
this . bag = { } ;
}
add ( name , thing ) {
if ( ! this . bag [ name ] ) {
this . bag [ name ] = [ ] ;
}
this . bag [ name ] . push ( thing ) ;
}
push ( name , thing ) {
this . add ( name , thing ) ;
}
first ( name ) {
if ( ! this . bag [ name ] )
return null ;
return this . bag [ name ] [ 0 ] ;
}
last ( name ) {
return this . bag [ name ] . slice ( - 1 ) [ 0 ] ;
}
get ( name ) {
return this . bag [ name ] ;
}
shift ( name ) {
return this . bag [ name ] . shift ( ) ;
}
call ( name , ... params ) {
( this . listeners [ name ] || [ ] ) . forEach ( ( callback ) => {
callback ( ... params ) ;
} ) ;
}
has ( name ) {
return Object . keys ( this . listeners ) . includes ( name ) ;
}
} ;
function setUploadLoading ( ) {
}
function unsetUploadLoading ( ) {
}
function upload ( component , name , file , finishCallback = ( ) => {
} , errorCallback = ( ) => {
} , progressCallback = ( ) => {
} , cancelledCallback = ( ) => {
} ) {
let uploadManager = getUploadManager ( component ) ;
uploadManager . upload ( name , file , finishCallback , errorCallback , progressCallback , cancelledCallback ) ;
}
function uploadMultiple ( component , name , files , finishCallback = ( ) => {
} , errorCallback = ( ) => {
} , progressCallback = ( ) => {
} , cancelledCallback = ( ) => {
} ) {
let uploadManager = getUploadManager ( component ) ;
uploadManager . uploadMultiple ( name , files , finishCallback , errorCallback , progressCallback , cancelledCallback ) ;
}
function removeUpload ( component , name , tmpFilename , finishCallback = ( ) => {
} , errorCallback = ( ) => {
} ) {
let uploadManager = getUploadManager ( component ) ;
uploadManager . removeUpload ( name , tmpFilename , finishCallback , errorCallback ) ;
}
function cancelUpload ( component , name , cancelledCallback = ( ) => {
} ) {
let uploadManager = getUploadManager ( component ) ;
uploadManager . cancelUpload ( name , cancelledCallback ) ;
}
2024-08-27 12:22:51 +02:00
// node_modules/alpinejs/dist/module.esm.js
2024-03-10 11:28:50 +01:00
var flushPending = false ;
var flushing = false ;
var queue = [ ] ;
var lastFlushedIndex = - 1 ;
function scheduler ( callback ) {
queueJob ( callback ) ;
}
function queueJob ( job ) {
if ( ! queue . includes ( job ) )
queue . push ( job ) ;
queueFlush ( ) ;
}
function dequeueJob ( job ) {
let index = queue . indexOf ( job ) ;
if ( index !== - 1 && index > lastFlushedIndex )
queue . splice ( index , 1 ) ;
}
function queueFlush ( ) {
if ( ! flushing && ! flushPending ) {
flushPending = true ;
queueMicrotask ( flushJobs ) ;
}
}
function flushJobs ( ) {
flushPending = false ;
flushing = true ;
for ( let i = 0 ; i < queue . length ; i ++ ) {
queue [ i ] ( ) ;
lastFlushedIndex = i ;
}
queue . length = 0 ;
lastFlushedIndex = - 1 ;
flushing = false ;
}
var reactive ;
var effect ;
var release ;
var raw ;
var shouldSchedule = true ;
function disableEffectScheduling ( callback ) {
shouldSchedule = false ;
callback ( ) ;
shouldSchedule = true ;
}
function setReactivityEngine ( engine ) {
reactive = engine . reactive ;
release = engine . release ;
effect = ( callback ) => engine . effect ( callback , { scheduler : ( task ) => {
if ( shouldSchedule ) {
scheduler ( task ) ;
} else {
task ( ) ;
}
} } ) ;
raw = engine . raw ;
}
function overrideEffect ( override ) {
effect = override ;
}
function elementBoundEffect ( el ) {
2024-08-27 12:22:51 +02:00
let cleanup2 = ( ) => {
2024-03-10 11:28:50 +01:00
} ;
let wrappedEffect = ( callback ) => {
let effectReference = effect ( callback ) ;
if ( ! el . _x _effects ) {
el . _x _effects = /* @__PURE__ */ new Set ( ) ;
el . _x _runEffects = ( ) => {
el . _x _effects . forEach ( ( i ) => i ( ) ) ;
} ;
}
el . _x _effects . add ( effectReference ) ;
2024-08-27 12:22:51 +02:00
cleanup2 = ( ) => {
2024-03-10 11:28:50 +01:00
if ( effectReference === void 0 )
return ;
el . _x _effects . delete ( effectReference ) ;
release ( effectReference ) ;
} ;
return effectReference ;
} ;
return [ wrappedEffect , ( ) => {
2024-08-27 12:22:51 +02:00
cleanup2 ( ) ;
2024-03-10 11:28:50 +01:00
} ] ;
}
function watch ( getter , callback ) {
let firstTime = true ;
let oldValue ;
let effectReference = effect ( ( ) => {
let value = getter ( ) ;
JSON . stringify ( value ) ;
if ( ! firstTime ) {
queueMicrotask ( ( ) => {
callback ( value , oldValue ) ;
oldValue = value ;
} ) ;
} else {
oldValue = value ;
}
firstTime = false ;
} ) ;
return ( ) => release ( effectReference ) ;
}
var onAttributeAddeds = [ ] ;
var onElRemoveds = [ ] ;
var onElAddeds = [ ] ;
function onElAdded ( callback ) {
onElAddeds . push ( callback ) ;
}
function onElRemoved ( el , callback ) {
if ( typeof callback === "function" ) {
if ( ! el . _x _cleanups )
el . _x _cleanups = [ ] ;
el . _x _cleanups . push ( callback ) ;
} else {
callback = el ;
onElRemoveds . push ( callback ) ;
}
}
function onAttributesAdded ( callback ) {
onAttributeAddeds . push ( callback ) ;
}
function onAttributeRemoved ( el , name , callback ) {
if ( ! el . _x _attributeCleanups )
el . _x _attributeCleanups = { } ;
if ( ! el . _x _attributeCleanups [ name ] )
el . _x _attributeCleanups [ name ] = [ ] ;
el . _x _attributeCleanups [ name ] . push ( callback ) ;
}
function cleanupAttributes ( el , names ) {
if ( ! el . _x _attributeCleanups )
return ;
Object . entries ( el . _x _attributeCleanups ) . forEach ( ( [ name , value ] ) => {
if ( names === void 0 || names . includes ( name ) ) {
value . forEach ( ( i ) => i ( ) ) ;
delete el . _x _attributeCleanups [ name ] ;
}
} ) ;
}
function cleanupElement ( el ) {
if ( el . _x _cleanups ) {
while ( el . _x _cleanups . length )
el . _x _cleanups . pop ( ) ( ) ;
}
}
var observer = new MutationObserver ( onMutate ) ;
var currentlyObserving = false ;
function startObservingMutations ( ) {
observer . observe ( document , { subtree : true , childList : true , attributes : true , attributeOldValue : true } ) ;
currentlyObserving = true ;
}
function stopObservingMutations ( ) {
flushObserver ( ) ;
observer . disconnect ( ) ;
currentlyObserving = false ;
}
var queuedMutations = [ ] ;
function flushObserver ( ) {
let records = observer . takeRecords ( ) ;
queuedMutations . push ( ( ) => records . length > 0 && onMutate ( records ) ) ;
let queueLengthWhenTriggered = queuedMutations . length ;
queueMicrotask ( ( ) => {
if ( queuedMutations . length === queueLengthWhenTriggered ) {
while ( queuedMutations . length > 0 )
queuedMutations . shift ( ) ( ) ;
}
} ) ;
}
function mutateDom ( callback ) {
if ( ! currentlyObserving )
return callback ( ) ;
stopObservingMutations ( ) ;
let result = callback ( ) ;
startObservingMutations ( ) ;
return result ;
}
var isCollecting = false ;
var deferredMutations = [ ] ;
function deferMutations ( ) {
isCollecting = true ;
}
function flushAndStopDeferringMutations ( ) {
isCollecting = false ;
onMutate ( deferredMutations ) ;
deferredMutations = [ ] ;
}
function onMutate ( mutations ) {
if ( isCollecting ) {
deferredMutations = deferredMutations . concat ( mutations ) ;
return ;
}
let addedNodes = /* @__PURE__ */ new Set ( ) ;
let removedNodes = /* @__PURE__ */ new Set ( ) ;
let addedAttributes = /* @__PURE__ */ new Map ( ) ;
let removedAttributes = /* @__PURE__ */ new Map ( ) ;
for ( let i = 0 ; i < mutations . length ; i ++ ) {
if ( mutations [ i ] . target . _x _ignoreMutationObserver )
continue ;
if ( mutations [ i ] . type === "childList" ) {
mutations [ i ] . addedNodes . forEach ( ( node ) => node . nodeType === 1 && addedNodes . add ( node ) ) ;
mutations [ i ] . removedNodes . forEach ( ( node ) => node . nodeType === 1 && removedNodes . add ( node ) ) ;
}
if ( mutations [ i ] . type === "attributes" ) {
let el = mutations [ i ] . target ;
let name = mutations [ i ] . attributeName ;
let oldValue = mutations [ i ] . oldValue ;
let add2 = ( ) => {
if ( ! addedAttributes . has ( el ) )
addedAttributes . set ( el , [ ] ) ;
addedAttributes . get ( el ) . push ( { name , value : el . getAttribute ( name ) } ) ;
} ;
let remove = ( ) => {
if ( ! removedAttributes . has ( el ) )
removedAttributes . set ( el , [ ] ) ;
removedAttributes . get ( el ) . push ( name ) ;
} ;
if ( el . hasAttribute ( name ) && oldValue === null ) {
add2 ( ) ;
} else if ( el . hasAttribute ( name ) ) {
remove ( ) ;
add2 ( ) ;
} else {
remove ( ) ;
}
}
}
removedAttributes . forEach ( ( attrs , el ) => {
cleanupAttributes ( el , attrs ) ;
} ) ;
addedAttributes . forEach ( ( attrs , el ) => {
onAttributeAddeds . forEach ( ( i ) => i ( el , attrs ) ) ;
} ) ;
for ( let node of removedNodes ) {
if ( addedNodes . has ( node ) )
continue ;
onElRemoveds . forEach ( ( i ) => i ( node ) ) ;
}
addedNodes . forEach ( ( node ) => {
node . _x _ignoreSelf = true ;
node . _x _ignore = true ;
} ) ;
for ( let node of addedNodes ) {
2024-08-27 12:22:51 +02:00
if ( removedNodes . has ( node ) )
continue ;
2024-03-10 11:28:50 +01:00
if ( ! node . isConnected )
continue ;
delete node . _x _ignoreSelf ;
delete node . _x _ignore ;
onElAddeds . forEach ( ( i ) => i ( node ) ) ;
node . _x _ignore = true ;
node . _x _ignoreSelf = true ;
}
addedNodes . forEach ( ( node ) => {
delete node . _x _ignoreSelf ;
delete node . _x _ignore ;
} ) ;
addedNodes = null ;
removedNodes = null ;
addedAttributes = null ;
removedAttributes = null ;
}
function scope ( node ) {
return mergeProxies ( closestDataStack ( node ) ) ;
}
function addScopeToNode ( node , data2 , referenceNode ) {
node . _x _dataStack = [ data2 , ... closestDataStack ( referenceNode || node ) ] ;
return ( ) => {
node . _x _dataStack = node . _x _dataStack . filter ( ( i ) => i !== data2 ) ;
} ;
}
function closestDataStack ( node ) {
if ( node . _x _dataStack )
return node . _x _dataStack ;
if ( typeof ShadowRoot === "function" && node instanceof ShadowRoot ) {
return closestDataStack ( node . host ) ;
}
if ( ! node . parentNode ) {
return [ ] ;
}
return closestDataStack ( node . parentNode ) ;
}
function mergeProxies ( objects ) {
return new Proxy ( { objects } , mergeProxyTrap ) ;
}
var mergeProxyTrap = {
ownKeys ( { objects } ) {
return Array . from ( new Set ( objects . flatMap ( ( i ) => Object . keys ( i ) ) ) ) ;
} ,
has ( { objects } , name ) {
if ( name == Symbol . unscopables )
return false ;
2024-08-27 12:22:51 +02:00
return objects . some ( ( obj ) => Object . prototype . hasOwnProperty . call ( obj , name ) || Reflect . has ( obj , name ) ) ;
2024-03-10 11:28:50 +01:00
} ,
get ( { objects } , name , thisProxy ) {
if ( name == "toJSON" )
return collapseProxies ;
return Reflect . get ( objects . find ( ( obj ) => Reflect . has ( obj , name ) ) || { } , name , thisProxy ) ;
} ,
set ( { objects } , name , value , thisProxy ) {
2024-08-27 12:22:51 +02:00
const target = objects . find ( ( obj ) => Object . prototype . hasOwnProperty . call ( obj , name ) ) || objects [ objects . length - 1 ] ;
2024-03-10 11:28:50 +01:00
const descriptor = Object . getOwnPropertyDescriptor ( target , name ) ;
if ( descriptor ? . set && descriptor ? . get )
2024-08-27 12:22:51 +02:00
return descriptor . set . call ( thisProxy , value ) || true ;
2024-03-10 11:28:50 +01:00
return Reflect . set ( target , name , value ) ;
}
} ;
function collapseProxies ( ) {
let keys = Reflect . ownKeys ( this ) ;
return keys . reduce ( ( acc , key ) => {
acc [ key ] = Reflect . get ( this , key ) ;
return acc ;
} , { } ) ;
}
2024-08-27 12:22:51 +02:00
function initInterceptors ( data2 ) {
2024-03-10 11:28:50 +01:00
let isObject22 = ( val ) => typeof val === "object" && ! Array . isArray ( val ) && val !== null ;
let recurse = ( obj , basePath = "" ) => {
Object . entries ( Object . getOwnPropertyDescriptors ( obj ) ) . forEach ( ( [ key , { value , enumerable } ] ) => {
if ( enumerable === false || value === void 0 )
return ;
if ( typeof value === "object" && value !== null && value . _ _v _skip )
return ;
let path = basePath === "" ? key : ` ${ basePath } . ${ key } ` ;
if ( typeof value === "object" && value !== null && value . _x _interceptor ) {
obj [ key ] = value . initialize ( data2 , path , key ) ;
} else {
if ( isObject22 ( value ) && value !== obj && ! ( value instanceof Element ) ) {
recurse ( value , path ) ;
}
}
} ) ;
} ;
return recurse ( data2 ) ;
}
function interceptor ( callback , mutateObj = ( ) => {
} ) {
let obj = {
initialValue : void 0 ,
_x _interceptor : true ,
initialize ( data2 , path , key ) {
return callback ( this . initialValue , ( ) => get ( data2 , path ) , ( value ) => set ( data2 , path , value ) , path , key ) ;
}
} ;
mutateObj ( obj ) ;
return ( initialValue ) => {
if ( typeof initialValue === "object" && initialValue !== null && initialValue . _x _interceptor ) {
let initialize = obj . initialize . bind ( obj ) ;
obj . initialize = ( data2 , path , key ) => {
let innerValue = initialValue . initialize ( data2 , path , key ) ;
obj . initialValue = innerValue ;
return initialize ( data2 , path , key ) ;
} ;
} else {
obj . initialValue = initialValue ;
}
return obj ;
} ;
}
function get ( obj , path ) {
return path . split ( "." ) . reduce ( ( carry , segment ) => carry [ segment ] , obj ) ;
}
function set ( obj , path , value ) {
if ( typeof path === "string" )
path = path . split ( "." ) ;
if ( path . length === 1 )
obj [ path [ 0 ] ] = value ;
else if ( path . length === 0 )
throw error ;
else {
if ( obj [ path [ 0 ] ] )
return set ( obj [ path [ 0 ] ] , path . slice ( 1 ) , value ) ;
else {
obj [ path [ 0 ] ] = { } ;
return set ( obj [ path [ 0 ] ] , path . slice ( 1 ) , value ) ;
}
}
}
var magics = { } ;
function magic ( name , callback ) {
magics [ name ] = callback ;
}
function injectMagics ( obj , el ) {
Object . entries ( magics ) . forEach ( ( [ name , callback ] ) => {
let memoizedUtilities = null ;
function getUtilities ( ) {
if ( memoizedUtilities ) {
return memoizedUtilities ;
} else {
2024-08-27 12:22:51 +02:00
let [ utilities , cleanup2 ] = getElementBoundUtilities ( el ) ;
2024-03-10 11:28:50 +01:00
memoizedUtilities = { interceptor , ... utilities } ;
2024-08-27 12:22:51 +02:00
onElRemoved ( el , cleanup2 ) ;
2024-03-10 11:28:50 +01:00
return memoizedUtilities ;
}
}
Object . defineProperty ( obj , ` $ ${ name } ` , {
get ( ) {
return callback ( el , getUtilities ( ) ) ;
} ,
enumerable : false
} ) ;
} ) ;
return obj ;
}
function tryCatch ( el , expression , callback , ... args ) {
try {
return callback ( ... args ) ;
} catch ( e ) {
handleError ( e , el , expression ) ;
}
}
function handleError ( error2 , el , expression = void 0 ) {
error2 = Object . assign ( error2 ? ? { message : "No error message given." } , { el , expression } ) ;
console . warn ( ` Alpine Expression Error: ${ error2 . message }
$ { expression ? 'Expression: "' + expression + '"\n\n' : "" } ` , el);
setTimeout ( ( ) => {
throw error2 ;
} , 0 ) ;
}
var shouldAutoEvaluateFunctions = true ;
function dontAutoEvaluateFunctions ( callback ) {
let cache = shouldAutoEvaluateFunctions ;
shouldAutoEvaluateFunctions = false ;
let result = callback ( ) ;
shouldAutoEvaluateFunctions = cache ;
return result ;
}
function evaluate ( el , expression , extras = { } ) {
let result ;
evaluateLater ( el , expression ) ( ( value ) => result = value , extras ) ;
return result ;
}
function evaluateLater ( ... args ) {
return theEvaluatorFunction ( ... args ) ;
}
var theEvaluatorFunction = normalEvaluator ;
function setEvaluator ( newEvaluator ) {
theEvaluatorFunction = newEvaluator ;
}
function normalEvaluator ( el , expression ) {
let overriddenMagics = { } ;
injectMagics ( overriddenMagics , el ) ;
let dataStack = [ overriddenMagics , ... closestDataStack ( el ) ] ;
let evaluator = typeof expression === "function" ? generateEvaluatorFromFunction ( dataStack , expression ) : generateEvaluatorFromString ( dataStack , expression , el ) ;
return tryCatch . bind ( null , el , expression , evaluator ) ;
}
function generateEvaluatorFromFunction ( dataStack , func ) {
return ( receiver = ( ) => {
} , { scope : scope2 = { } , params = [ ] } = { } ) => {
let result = func . apply ( mergeProxies ( [ scope2 , ... dataStack ] ) , params ) ;
runIfTypeOfFunction ( receiver , result ) ;
} ;
}
var evaluatorMemo = { } ;
function generateFunctionFromString ( expression , el ) {
if ( evaluatorMemo [ expression ] ) {
return evaluatorMemo [ expression ] ;
}
let AsyncFunction = Object . getPrototypeOf ( async function ( ) {
} ) . constructor ;
let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/ . test ( expression . trim ( ) ) || /^(let|const)\s/ . test ( expression . trim ( ) ) ? ` (async()=>{ ${ expression } })() ` : expression ;
const safeAsyncFunction = ( ) => {
try {
let func2 = new AsyncFunction ( [ "__self" , "scope" ] , ` with (scope) { __self.result = ${ rightSideSafeExpression } }; __self.finished = true; return __self.result; ` ) ;
Object . defineProperty ( func2 , "name" , {
value : ` [Alpine] ${ expression } `
} ) ;
return func2 ;
} catch ( error2 ) {
handleError ( error2 , el , expression ) ;
return Promise . resolve ( ) ;
}
} ;
let func = safeAsyncFunction ( ) ;
evaluatorMemo [ expression ] = func ;
return func ;
}
function generateEvaluatorFromString ( dataStack , expression , el ) {
let func = generateFunctionFromString ( expression , el ) ;
return ( receiver = ( ) => {
} , { scope : scope2 = { } , params = [ ] } = { } ) => {
func . result = void 0 ;
func . finished = false ;
let completeScope = mergeProxies ( [ scope2 , ... dataStack ] ) ;
if ( typeof func === "function" ) {
let promise = func ( func , completeScope ) . catch ( ( error2 ) => handleError ( error2 , el , expression ) ) ;
if ( func . finished ) {
runIfTypeOfFunction ( receiver , func . result , completeScope , params , el ) ;
func . result = void 0 ;
} else {
promise . then ( ( result ) => {
runIfTypeOfFunction ( receiver , result , completeScope , params , el ) ;
} ) . catch ( ( error2 ) => handleError ( error2 , el , expression ) ) . finally ( ( ) => func . result = void 0 ) ;
}
}
} ;
}
function runIfTypeOfFunction ( receiver , value , scope2 , params , el ) {
if ( shouldAutoEvaluateFunctions && typeof value === "function" ) {
let result = value . apply ( scope2 , params ) ;
if ( result instanceof Promise ) {
result . then ( ( i ) => runIfTypeOfFunction ( receiver , i , scope2 , params ) ) . catch ( ( error2 ) => handleError ( error2 , el , value ) ) ;
} else {
receiver ( result ) ;
}
} else if ( typeof value === "object" && value instanceof Promise ) {
value . then ( ( i ) => receiver ( i ) ) ;
} else {
receiver ( value ) ;
}
}
var prefixAsString = "x-" ;
function prefix ( subject = "" ) {
return prefixAsString + subject ;
}
function setPrefix ( newPrefix ) {
prefixAsString = newPrefix ;
}
var directiveHandlers = { } ;
function directive ( name , callback ) {
directiveHandlers [ name ] = callback ;
return {
before ( directive22 ) {
if ( ! directiveHandlers [ directive22 ] ) {
console . warn ( String . raw ` Cannot find directive \` ${ directive22 } \` . \` ${ name } \` will use the default order of execution ` ) ;
return ;
}
const pos = directiveOrder . indexOf ( directive22 ) ;
directiveOrder . splice ( pos >= 0 ? pos : directiveOrder . indexOf ( "DEFAULT" ) , 0 , name ) ;
}
} ;
}
2024-08-27 12:22:51 +02:00
function directiveExists ( name ) {
return Object . keys ( directiveHandlers ) . includes ( name ) ;
}
2024-03-10 11:28:50 +01:00
function directives ( el , attributes , originalAttributeOverride ) {
attributes = Array . from ( attributes ) ;
if ( el . _x _virtualDirectives ) {
let vAttributes = Object . entries ( el . _x _virtualDirectives ) . map ( ( [ name , value ] ) => ( { name , value } ) ) ;
let staticAttributes = attributesOnly ( vAttributes ) ;
vAttributes = vAttributes . map ( ( attribute ) => {
if ( staticAttributes . find ( ( attr ) => attr . name === attribute . name ) ) {
return {
name : ` x-bind: ${ attribute . name } ` ,
value : ` " ${ attribute . value } " `
} ;
}
return attribute ;
} ) ;
attributes = attributes . concat ( vAttributes ) ;
}
let transformedAttributeMap = { } ;
let directives2 = attributes . map ( toTransformedAttributes ( ( newName , oldName ) => transformedAttributeMap [ newName ] = oldName ) ) . filter ( outNonAlpineAttributes ) . map ( toParsedDirectives ( transformedAttributeMap , originalAttributeOverride ) ) . sort ( byPriority ) ;
return directives2 . map ( ( directive22 ) => {
return getDirectiveHandler ( el , directive22 ) ;
} ) ;
}
function attributesOnly ( attributes ) {
return Array . from ( attributes ) . map ( toTransformedAttributes ( ) ) . filter ( ( attr ) => ! outNonAlpineAttributes ( attr ) ) ;
}
var isDeferringHandlers = false ;
var directiveHandlerStacks = /* @__PURE__ */ new Map ( ) ;
var currentHandlerStackKey = Symbol ( ) ;
function deferHandlingDirectives ( callback ) {
isDeferringHandlers = true ;
let key = Symbol ( ) ;
currentHandlerStackKey = key ;
directiveHandlerStacks . set ( key , [ ] ) ;
let flushHandlers = ( ) => {
while ( directiveHandlerStacks . get ( key ) . length )
directiveHandlerStacks . get ( key ) . shift ( ) ( ) ;
directiveHandlerStacks . delete ( key ) ;
} ;
let stopDeferring = ( ) => {
isDeferringHandlers = false ;
flushHandlers ( ) ;
} ;
callback ( flushHandlers ) ;
stopDeferring ( ) ;
}
function getElementBoundUtilities ( el ) {
2024-08-27 12:22:51 +02:00
let cleanups2 = [ ] ;
let cleanup2 = ( callback ) => cleanups2 . push ( callback ) ;
2024-03-10 11:28:50 +01:00
let [ effect3 , cleanupEffect ] = elementBoundEffect ( el ) ;
2024-08-27 12:22:51 +02:00
cleanups2 . push ( cleanupEffect ) ;
2024-03-10 11:28:50 +01:00
let utilities = {
Alpine : alpine _default ,
effect : effect3 ,
2024-08-27 12:22:51 +02:00
cleanup : cleanup2 ,
2024-03-10 11:28:50 +01:00
evaluateLater : evaluateLater . bind ( evaluateLater , el ) ,
evaluate : evaluate . bind ( evaluate , el )
} ;
2024-08-27 12:22:51 +02:00
let doCleanup = ( ) => cleanups2 . forEach ( ( i ) => i ( ) ) ;
2024-03-10 11:28:50 +01:00
return [ utilities , doCleanup ] ;
}
function getDirectiveHandler ( el , directive22 ) {
let noop = ( ) => {
} ;
let handler4 = directiveHandlers [ directive22 . type ] || noop ;
2024-08-27 12:22:51 +02:00
let [ utilities , cleanup2 ] = getElementBoundUtilities ( el ) ;
onAttributeRemoved ( el , directive22 . original , cleanup2 ) ;
2024-03-10 11:28:50 +01:00
let fullHandler = ( ) => {
if ( el . _x _ignore || el . _x _ignoreSelf )
return ;
handler4 . inline && handler4 . inline ( el , directive22 , utilities ) ;
handler4 = handler4 . bind ( handler4 , el , directive22 , utilities ) ;
isDeferringHandlers ? directiveHandlerStacks . get ( currentHandlerStackKey ) . push ( handler4 ) : handler4 ( ) ;
} ;
2024-08-27 12:22:51 +02:00
fullHandler . runCleanups = cleanup2 ;
2024-03-10 11:28:50 +01:00
return fullHandler ;
}
var startingWith = ( subject , replacement ) => ( { name , value } ) => {
if ( name . startsWith ( subject ) )
name = name . replace ( subject , replacement ) ;
return { name , value } ;
} ;
var into = ( i ) => i ;
function toTransformedAttributes ( callback = ( ) => {
} ) {
return ( { name , value } ) => {
let { name : newName , value : newValue } = attributeTransformers . reduce ( ( carry , transform ) => {
return transform ( carry ) ;
} , { name , value } ) ;
if ( newName !== name )
callback ( newName , name ) ;
return { name : newName , value : newValue } ;
} ;
}
var attributeTransformers = [ ] ;
function mapAttributes ( callback ) {
attributeTransformers . push ( callback ) ;
}
function outNonAlpineAttributes ( { name } ) {
return alpineAttributeRegex ( ) . test ( name ) ;
}
var alpineAttributeRegex = ( ) => new RegExp ( ` ^ ${ prefixAsString } ([^:^.]+) \\ b ` ) ;
function toParsedDirectives ( transformedAttributeMap , originalAttributeOverride ) {
return ( { name , value } ) => {
let typeMatch = name . match ( alpineAttributeRegex ( ) ) ;
let valueMatch = name . match ( /:([a-zA-Z0-9\-_:]+)/ ) ;
let modifiers = name . match ( /\.[^.\]]+(?=[^\]]*$)/g ) || [ ] ;
let original = originalAttributeOverride || transformedAttributeMap [ name ] || name ;
return {
type : typeMatch ? typeMatch [ 1 ] : null ,
value : valueMatch ? valueMatch [ 1 ] : null ,
modifiers : modifiers . map ( ( i ) => i . replace ( "." , "" ) ) ,
expression : value ,
original
} ;
} ;
}
var DEFAULT = "DEFAULT" ;
var directiveOrder = [
"ignore" ,
"ref" ,
"data" ,
"id" ,
"anchor" ,
"bind" ,
"init" ,
"for" ,
"model" ,
"modelable" ,
"transition" ,
"show" ,
"if" ,
DEFAULT ,
"teleport"
] ;
function byPriority ( a , b ) {
let typeA = directiveOrder . indexOf ( a . type ) === - 1 ? DEFAULT : a . type ;
let typeB = directiveOrder . indexOf ( b . type ) === - 1 ? DEFAULT : b . type ;
return directiveOrder . indexOf ( typeA ) - directiveOrder . indexOf ( typeB ) ;
}
2024-08-27 12:22:51 +02:00
function dispatch2 ( el , name , detail = { } ) {
el . dispatchEvent ( new CustomEvent ( name , {
detail ,
bubbles : true ,
composed : true ,
cancelable : true
} ) ) ;
}
function walk ( el , callback ) {
if ( typeof ShadowRoot === "function" && el instanceof ShadowRoot ) {
Array . from ( el . children ) . forEach ( ( el2 ) => walk ( el2 , callback ) ) ;
return ;
}
let skip = false ;
callback ( el , ( ) => skip = true ) ;
if ( skip )
return ;
let node = el . firstElementChild ;
while ( node ) {
walk ( node , callback , false ) ;
node = node . nextElementSibling ;
}
}
function warn ( message , ... args ) {
console . warn ( ` Alpine Warning: ${ message } ` , ... args ) ;
}
var started = false ;
function start ( ) {
if ( started )
warn ( "Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems." ) ;
started = true ;
if ( ! document . body )
warn ( "Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?" ) ;
dispatch2 ( document , "alpine:init" ) ;
dispatch2 ( document , "alpine:initializing" ) ;
startObservingMutations ( ) ;
onElAdded ( ( el ) => initTree ( el , walk ) ) ;
onElRemoved ( ( el ) => destroyTree ( el ) ) ;
onAttributesAdded ( ( el , attrs ) => {
directives ( el , attrs ) . forEach ( ( handle ) => handle ( ) ) ;
} ) ;
let outNestedComponents = ( el ) => ! closestRoot ( el . parentElement , true ) ;
Array . from ( document . querySelectorAll ( allSelectors ( ) . join ( "," ) ) ) . filter ( outNestedComponents ) . forEach ( ( el ) => {
initTree ( el ) ;
} ) ;
dispatch2 ( document , "alpine:initialized" ) ;
setTimeout ( ( ) => {
warnAboutMissingPlugins ( ) ;
} ) ;
}
var rootSelectorCallbacks = [ ] ;
var initSelectorCallbacks = [ ] ;
function rootSelectors ( ) {
return rootSelectorCallbacks . map ( ( fn ) => fn ( ) ) ;
}
function allSelectors ( ) {
return rootSelectorCallbacks . concat ( initSelectorCallbacks ) . map ( ( fn ) => fn ( ) ) ;
}
function addRootSelector ( selectorCallback ) {
rootSelectorCallbacks . push ( selectorCallback ) ;
}
function addInitSelector ( selectorCallback ) {
initSelectorCallbacks . push ( selectorCallback ) ;
}
function closestRoot ( el , includeInitSelectors = false ) {
return findClosest ( el , ( element ) => {
const selectors = includeInitSelectors ? allSelectors ( ) : rootSelectors ( ) ;
if ( selectors . some ( ( selector ) => element . matches ( selector ) ) )
return true ;
} ) ;
}
function findClosest ( el , callback ) {
if ( ! el )
return ;
if ( callback ( el ) )
return el ;
if ( el . _x _teleportBack )
el = el . _x _teleportBack ;
if ( ! el . parentElement )
return ;
return findClosest ( el . parentElement , callback ) ;
}
function isRoot ( el ) {
return rootSelectors ( ) . some ( ( selector ) => el . matches ( selector ) ) ;
}
var initInterceptors2 = [ ] ;
function interceptInit ( callback ) {
initInterceptors2 . push ( callback ) ;
}
function initTree ( el , walker = walk , intercept = ( ) => {
} ) {
deferHandlingDirectives ( ( ) => {
walker ( el , ( el2 , skip ) => {
intercept ( el2 , skip ) ;
initInterceptors2 . forEach ( ( i ) => i ( el2 , skip ) ) ;
directives ( el2 , el2 . attributes ) . forEach ( ( handle ) => handle ( ) ) ;
el2 . _x _ignore && skip ( ) ;
} ) ;
} ) ;
}
function destroyTree ( root , walker = walk ) {
walker ( root , ( el ) => {
cleanupAttributes ( el ) ;
cleanupElement ( el ) ;
} ) ;
}
function warnAboutMissingPlugins ( ) {
let pluginDirectives = [
[ "ui" , "dialog" , [ "[x-dialog], [x-popover]" ] ] ,
[ "anchor" , "anchor" , [ "[x-anchor]" ] ] ,
[ "sort" , "sort" , [ "[x-sort]" ] ]
] ;
pluginDirectives . forEach ( ( [ plugin2 , directive22 , selectors ] ) => {
if ( directiveExists ( directive22 ) )
return ;
selectors . some ( ( selector ) => {
if ( document . querySelector ( selector ) ) {
warn ( ` found " ${ selector } ", but missing ${ plugin2 } plugin ` ) ;
return true ;
}
} ) ;
} ) ;
}
2024-03-10 11:28:50 +01:00
var tickStack = [ ] ;
var isHolding = false ;
function nextTick ( callback = ( ) => {
} ) {
queueMicrotask ( ( ) => {
isHolding || setTimeout ( ( ) => {
releaseNextTicks ( ) ;
} ) ;
} ) ;
return new Promise ( ( res ) => {
tickStack . push ( ( ) => {
callback ( ) ;
res ( ) ;
} ) ;
} ) ;
}
function releaseNextTicks ( ) {
isHolding = false ;
while ( tickStack . length )
tickStack . shift ( ) ( ) ;
}
function holdNextTicks ( ) {
isHolding = true ;
}
function setClasses ( el , value ) {
if ( Array . isArray ( value ) ) {
return setClassesFromString ( el , value . join ( " " ) ) ;
} else if ( typeof value === "object" && value !== null ) {
return setClassesFromObject ( el , value ) ;
} else if ( typeof value === "function" ) {
return setClasses ( el , value ( ) ) ;
}
return setClassesFromString ( el , value ) ;
}
function setClassesFromString ( el , classString ) {
let split = ( classString2 ) => classString2 . split ( " " ) . filter ( Boolean ) ;
let missingClasses = ( classString2 ) => classString2 . split ( " " ) . filter ( ( i ) => ! el . classList . contains ( i ) ) . filter ( Boolean ) ;
let addClassesAndReturnUndo = ( classes ) => {
el . classList . add ( ... classes ) ;
return ( ) => {
el . classList . remove ( ... classes ) ;
} ;
} ;
classString = classString === true ? classString = "" : classString || "" ;
return addClassesAndReturnUndo ( missingClasses ( classString ) ) ;
}
function setClassesFromObject ( el , classObject ) {
let split = ( classString ) => classString . split ( " " ) . filter ( Boolean ) ;
let forAdd = Object . entries ( classObject ) . flatMap ( ( [ classString , bool ] ) => bool ? split ( classString ) : false ) . filter ( Boolean ) ;
let forRemove = Object . entries ( classObject ) . flatMap ( ( [ classString , bool ] ) => ! bool ? split ( classString ) : false ) . filter ( Boolean ) ;
let added = [ ] ;
let removed = [ ] ;
forRemove . forEach ( ( i ) => {
if ( el . classList . contains ( i ) ) {
el . classList . remove ( i ) ;
removed . push ( i ) ;
}
} ) ;
forAdd . forEach ( ( i ) => {
if ( ! el . classList . contains ( i ) ) {
el . classList . add ( i ) ;
added . push ( i ) ;
}
} ) ;
return ( ) => {
removed . forEach ( ( i ) => el . classList . add ( i ) ) ;
added . forEach ( ( i ) => el . classList . remove ( i ) ) ;
} ;
}
function setStyles ( el , value ) {
if ( typeof value === "object" && value !== null ) {
return setStylesFromObject ( el , value ) ;
}
return setStylesFromString ( el , value ) ;
}
function setStylesFromObject ( el , value ) {
let previousStyles = { } ;
Object . entries ( value ) . forEach ( ( [ key , value2 ] ) => {
previousStyles [ key ] = el . style [ key ] ;
if ( ! key . startsWith ( "--" ) ) {
key = kebabCase ( key ) ;
}
el . style . setProperty ( key , value2 ) ;
} ) ;
setTimeout ( ( ) => {
if ( el . style . length === 0 ) {
el . removeAttribute ( "style" ) ;
}
} ) ;
return ( ) => {
setStyles ( el , previousStyles ) ;
} ;
}
function setStylesFromString ( el , value ) {
let cache = el . getAttribute ( "style" , value ) ;
el . setAttribute ( "style" , value ) ;
return ( ) => {
el . setAttribute ( "style" , cache || "" ) ;
} ;
}
function kebabCase ( subject ) {
return subject . replace ( /([a-z])([A-Z])/g , "$1-$2" ) . toLowerCase ( ) ;
}
function once ( callback , fallback2 = ( ) => {
} ) {
let called = false ;
return function ( ) {
if ( ! called ) {
called = true ;
callback . apply ( this , arguments ) ;
} else {
fallback2 . apply ( this , arguments ) ;
}
} ;
}
directive ( "transition" , ( el , { value , modifiers , expression } , { evaluate : evaluate22 } ) => {
if ( typeof expression === "function" )
expression = evaluate22 ( expression ) ;
if ( expression === false )
return ;
if ( ! expression || typeof expression === "boolean" ) {
registerTransitionsFromHelper ( el , modifiers , value ) ;
} else {
registerTransitionsFromClassString ( el , expression , value ) ;
}
} ) ;
function registerTransitionsFromClassString ( el , classString , stage ) {
registerTransitionObject ( el , setClasses , "" ) ;
let directiveStorageMap = {
"enter" : ( classes ) => {
el . _x _transition . enter . during = classes ;
} ,
"enter-start" : ( classes ) => {
el . _x _transition . enter . start = classes ;
} ,
"enter-end" : ( classes ) => {
el . _x _transition . enter . end = classes ;
} ,
"leave" : ( classes ) => {
el . _x _transition . leave . during = classes ;
} ,
"leave-start" : ( classes ) => {
el . _x _transition . leave . start = classes ;
} ,
"leave-end" : ( classes ) => {
el . _x _transition . leave . end = classes ;
}
} ;
directiveStorageMap [ stage ] ( classString ) ;
}
function registerTransitionsFromHelper ( el , modifiers , stage ) {
registerTransitionObject ( el , setStyles ) ;
let doesntSpecify = ! modifiers . includes ( "in" ) && ! modifiers . includes ( "out" ) && ! stage ;
let transitioningIn = doesntSpecify || modifiers . includes ( "in" ) || [ "enter" ] . includes ( stage ) ;
let transitioningOut = doesntSpecify || modifiers . includes ( "out" ) || [ "leave" ] . includes ( stage ) ;
if ( modifiers . includes ( "in" ) && ! doesntSpecify ) {
modifiers = modifiers . filter ( ( i , index ) => index < modifiers . indexOf ( "out" ) ) ;
}
if ( modifiers . includes ( "out" ) && ! doesntSpecify ) {
modifiers = modifiers . filter ( ( i , index ) => index > modifiers . indexOf ( "out" ) ) ;
}
let wantsAll = ! modifiers . includes ( "opacity" ) && ! modifiers . includes ( "scale" ) ;
let wantsOpacity = wantsAll || modifiers . includes ( "opacity" ) ;
let wantsScale = wantsAll || modifiers . includes ( "scale" ) ;
let opacityValue = wantsOpacity ? 0 : 1 ;
let scaleValue = wantsScale ? modifierValue ( modifiers , "scale" , 95 ) / 100 : 1 ;
let delay3 = modifierValue ( modifiers , "delay" , 0 ) / 1e3 ;
let origin = modifierValue ( modifiers , "origin" , "center" ) ;
let property = "opacity, transform" ;
let durationIn = modifierValue ( modifiers , "duration" , 150 ) / 1e3 ;
let durationOut = modifierValue ( modifiers , "duration" , 75 ) / 1e3 ;
let easing = ` cubic-bezier(0.4, 0.0, 0.2, 1) ` ;
if ( transitioningIn ) {
el . _x _transition . enter . during = {
transformOrigin : origin ,
transitionDelay : ` ${ delay3 } s ` ,
transitionProperty : property ,
transitionDuration : ` ${ durationIn } s ` ,
transitionTimingFunction : easing
} ;
el . _x _transition . enter . start = {
opacity : opacityValue ,
transform : ` scale( ${ scaleValue } ) `
} ;
el . _x _transition . enter . end = {
opacity : 1 ,
transform : ` scale(1) `
} ;
}
if ( transitioningOut ) {
el . _x _transition . leave . during = {
transformOrigin : origin ,
transitionDelay : ` ${ delay3 } s ` ,
transitionProperty : property ,
transitionDuration : ` ${ durationOut } s ` ,
transitionTimingFunction : easing
} ;
el . _x _transition . leave . start = {
opacity : 1 ,
transform : ` scale(1) `
} ;
el . _x _transition . leave . end = {
opacity : opacityValue ,
transform : ` scale( ${ scaleValue } ) `
} ;
}
}
function registerTransitionObject ( el , setFunction , defaultValue = { } ) {
if ( ! el . _x _transition )
el . _x _transition = {
enter : { during : defaultValue , start : defaultValue , end : defaultValue } ,
leave : { during : defaultValue , start : defaultValue , end : defaultValue } ,
in ( before = ( ) => {
} , after = ( ) => {
} ) {
transition ( el , setFunction , {
during : this . enter . during ,
start : this . enter . start ,
end : this . enter . end
} , before , after ) ;
} ,
out ( before = ( ) => {
} , after = ( ) => {
} ) {
transition ( el , setFunction , {
during : this . leave . during ,
start : this . leave . start ,
end : this . leave . end
} , before , after ) ;
}
} ;
}
window . Element . prototype . _x _toggleAndCascadeWithTransitions = function ( el , value , show , hide ) {
const nextTick2 = document . visibilityState === "visible" ? requestAnimationFrame : setTimeout ;
let clickAwayCompatibleShow = ( ) => nextTick2 ( show ) ;
if ( value ) {
if ( el . _x _transition && ( el . _x _transition . enter || el . _x _transition . leave ) ) {
el . _x _transition . enter && ( Object . entries ( el . _x _transition . enter . during ) . length || Object . entries ( el . _x _transition . enter . start ) . length || Object . entries ( el . _x _transition . enter . end ) . length ) ? el . _x _transition . in ( show ) : clickAwayCompatibleShow ( ) ;
} else {
el . _x _transition ? el . _x _transition . in ( show ) : clickAwayCompatibleShow ( ) ;
}
return ;
}
el . _x _hidePromise = el . _x _transition ? new Promise ( ( resolve , reject ) => {
el . _x _transition . out ( ( ) => {
} , ( ) => resolve ( hide ) ) ;
el . _x _transitioning && el . _x _transitioning . beforeCancel ( ( ) => reject ( { isFromCancelledTransition : true } ) ) ;
} ) : Promise . resolve ( hide ) ;
queueMicrotask ( ( ) => {
let closest = closestHide ( el ) ;
if ( closest ) {
if ( ! closest . _x _hideChildren )
closest . _x _hideChildren = [ ] ;
closest . _x _hideChildren . push ( el ) ;
} else {
nextTick2 ( ( ) => {
let hideAfterChildren = ( el2 ) => {
let carry = Promise . all ( [
el2 . _x _hidePromise ,
... ( el2 . _x _hideChildren || [ ] ) . map ( hideAfterChildren )
2024-08-27 12:22:51 +02:00
] ) . then ( ( [ i ] ) => i ? . ( ) ) ;
2024-03-10 11:28:50 +01:00
delete el2 . _x _hidePromise ;
delete el2 . _x _hideChildren ;
return carry ;
} ;
hideAfterChildren ( el ) . catch ( ( e ) => {
if ( ! e . isFromCancelledTransition )
throw e ;
} ) ;
} ) ;
}
} ) ;
} ;
function closestHide ( el ) {
let parent = el . parentNode ;
if ( ! parent )
return ;
return parent . _x _hidePromise ? parent : closestHide ( parent ) ;
}
function transition ( el , setFunction , { during , start : start22 , end } = { } , before = ( ) => {
} , after = ( ) => {
} ) {
if ( el . _x _transitioning )
el . _x _transitioning . cancel ( ) ;
if ( Object . keys ( during ) . length === 0 && Object . keys ( start22 ) . length === 0 && Object . keys ( end ) . length === 0 ) {
before ( ) ;
after ( ) ;
return ;
}
let undoStart , undoDuring , undoEnd ;
performTransition ( el , {
start ( ) {
undoStart = setFunction ( el , start22 ) ;
} ,
during ( ) {
undoDuring = setFunction ( el , during ) ;
} ,
before ,
end ( ) {
undoStart ( ) ;
undoEnd = setFunction ( el , end ) ;
} ,
after ,
cleanup ( ) {
undoDuring ( ) ;
undoEnd ( ) ;
}
} ) ;
}
function performTransition ( el , stages ) {
let interrupted , reachedBefore , reachedEnd ;
let finish = once ( ( ) => {
mutateDom ( ( ) => {
interrupted = true ;
if ( ! reachedBefore )
stages . before ( ) ;
if ( ! reachedEnd ) {
stages . end ( ) ;
releaseNextTicks ( ) ;
}
stages . after ( ) ;
if ( el . isConnected )
stages . cleanup ( ) ;
delete el . _x _transitioning ;
} ) ;
} ) ;
el . _x _transitioning = {
beforeCancels : [ ] ,
beforeCancel ( callback ) {
this . beforeCancels . push ( callback ) ;
} ,
cancel : once ( function ( ) {
while ( this . beforeCancels . length ) {
this . beforeCancels . shift ( ) ( ) ;
}
;
finish ( ) ;
} ) ,
finish
} ;
mutateDom ( ( ) => {
stages . start ( ) ;
stages . during ( ) ;
} ) ;
holdNextTicks ( ) ;
requestAnimationFrame ( ( ) => {
if ( interrupted )
return ;
let duration = Number ( getComputedStyle ( el ) . transitionDuration . replace ( /,.*/ , "" ) . replace ( "s" , "" ) ) * 1e3 ;
let delay3 = Number ( getComputedStyle ( el ) . transitionDelay . replace ( /,.*/ , "" ) . replace ( "s" , "" ) ) * 1e3 ;
if ( duration === 0 )
duration = Number ( getComputedStyle ( el ) . animationDuration . replace ( "s" , "" ) ) * 1e3 ;
mutateDom ( ( ) => {
stages . before ( ) ;
} ) ;
reachedBefore = true ;
requestAnimationFrame ( ( ) => {
if ( interrupted )
return ;
mutateDom ( ( ) => {
stages . end ( ) ;
} ) ;
releaseNextTicks ( ) ;
setTimeout ( el . _x _transitioning . finish , duration + delay3 ) ;
reachedEnd = true ;
} ) ;
} ) ;
}
function modifierValue ( modifiers , key , fallback2 ) {
if ( modifiers . indexOf ( key ) === - 1 )
return fallback2 ;
const rawValue = modifiers [ modifiers . indexOf ( key ) + 1 ] ;
if ( ! rawValue )
return fallback2 ;
if ( key === "scale" ) {
if ( isNaN ( rawValue ) )
return fallback2 ;
}
if ( key === "duration" || key === "delay" ) {
let match = rawValue . match ( /([0-9]+)ms/ ) ;
if ( match )
return match [ 1 ] ;
}
if ( key === "origin" ) {
if ( [ "top" , "right" , "left" , "center" , "bottom" ] . includes ( modifiers [ modifiers . indexOf ( key ) + 2 ] ) ) {
return [ rawValue , modifiers [ modifiers . indexOf ( key ) + 2 ] ] . join ( " " ) ;
}
}
return rawValue ;
}
var isCloning = false ;
function skipDuringClone ( callback , fallback2 = ( ) => {
} ) {
return ( ... args ) => isCloning ? fallback2 ( ... args ) : callback ( ... args ) ;
}
function onlyDuringClone ( callback ) {
return ( ... args ) => isCloning && callback ( ... args ) ;
}
var interceptors = [ ] ;
function interceptClone ( callback ) {
interceptors . push ( callback ) ;
}
function cloneNode ( from , to ) {
interceptors . forEach ( ( i ) => i ( from , to ) ) ;
isCloning = true ;
dontRegisterReactiveSideEffects ( ( ) => {
initTree ( to , ( el , callback ) => {
callback ( el , ( ) => {
} ) ;
} ) ;
} ) ;
isCloning = false ;
}
var isCloningLegacy = false ;
function clone ( oldEl , newEl ) {
if ( ! newEl . _x _dataStack )
newEl . _x _dataStack = oldEl . _x _dataStack ;
isCloning = true ;
isCloningLegacy = true ;
dontRegisterReactiveSideEffects ( ( ) => {
cloneTree ( newEl ) ;
} ) ;
isCloning = false ;
isCloningLegacy = false ;
}
function cloneTree ( el ) {
let hasRunThroughFirstEl = false ;
let shallowWalker = ( el2 , callback ) => {
walk ( el2 , ( el3 , skip ) => {
if ( hasRunThroughFirstEl && isRoot ( el3 ) )
return skip ( ) ;
hasRunThroughFirstEl = true ;
callback ( el3 , skip ) ;
} ) ;
} ;
initTree ( el , shallowWalker ) ;
}
function dontRegisterReactiveSideEffects ( callback ) {
let cache = effect ;
overrideEffect ( ( callback2 , el ) => {
let storedEffect = cache ( callback2 ) ;
release ( storedEffect ) ;
return ( ) => {
} ;
} ) ;
callback ( ) ;
overrideEffect ( cache ) ;
}
function bind ( el , name , value , modifiers = [ ] ) {
if ( ! el . _x _bindings )
el . _x _bindings = reactive ( { } ) ;
el . _x _bindings [ name ] = value ;
name = modifiers . includes ( "camel" ) ? camelCase ( name ) : name ;
switch ( name ) {
case "value" :
bindInputValue ( el , value ) ;
break ;
case "style" :
bindStyles ( el , value ) ;
break ;
case "class" :
bindClasses ( el , value ) ;
break ;
case "selected" :
case "checked" :
bindAttributeAndProperty ( el , name , value ) ;
break ;
default :
bindAttribute ( el , name , value ) ;
break ;
}
}
function bindInputValue ( el , value ) {
if ( el . type === "radio" ) {
if ( el . attributes . value === void 0 ) {
el . value = value ;
}
if ( window . fromModel ) {
if ( typeof value === "boolean" ) {
el . checked = safeParseBoolean ( el . value ) === value ;
} else {
el . checked = checkedAttrLooseCompare ( el . value , value ) ;
}
}
} else if ( el . type === "checkbox" ) {
if ( Number . isInteger ( value ) ) {
el . value = value ;
} else if ( ! Array . isArray ( value ) && typeof value !== "boolean" && ! [ null , void 0 ] . includes ( value ) ) {
el . value = String ( value ) ;
} else {
if ( Array . isArray ( value ) ) {
el . checked = value . some ( ( val ) => checkedAttrLooseCompare ( val , el . value ) ) ;
} else {
el . checked = ! ! value ;
}
}
} else if ( el . tagName === "SELECT" ) {
updateSelect ( el , value ) ;
} else {
if ( el . value === value )
return ;
el . value = value === void 0 ? "" : value ;
}
}
function bindClasses ( el , value ) {
if ( el . _x _undoAddedClasses )
el . _x _undoAddedClasses ( ) ;
el . _x _undoAddedClasses = setClasses ( el , value ) ;
}
function bindStyles ( el , value ) {
if ( el . _x _undoAddedStyles )
el . _x _undoAddedStyles ( ) ;
el . _x _undoAddedStyles = setStyles ( el , value ) ;
}
function bindAttributeAndProperty ( el , name , value ) {
bindAttribute ( el , name , value ) ;
setPropertyIfChanged ( el , name , value ) ;
}
function bindAttribute ( el , name , value ) {
if ( [ null , void 0 , false ] . includes ( value ) && attributeShouldntBePreservedIfFalsy ( name ) ) {
el . removeAttribute ( name ) ;
} else {
if ( isBooleanAttr ( name ) )
value = name ;
setIfChanged ( el , name , value ) ;
}
}
function setIfChanged ( el , attrName , value ) {
if ( el . getAttribute ( attrName ) != value ) {
el . setAttribute ( attrName , value ) ;
}
}
function setPropertyIfChanged ( el , propName , value ) {
if ( el [ propName ] !== value ) {
el [ propName ] = value ;
}
}
function updateSelect ( el , value ) {
const arrayWrappedValue = [ ] . concat ( value ) . map ( ( value2 ) => {
return value2 + "" ;
} ) ;
Array . from ( el . options ) . forEach ( ( option ) => {
option . selected = arrayWrappedValue . includes ( option . value ) ;
} ) ;
}
function camelCase ( subject ) {
return subject . toLowerCase ( ) . replace ( /-(\w)/g , ( match , char ) => char . toUpperCase ( ) ) ;
}
function checkedAttrLooseCompare ( valueA , valueB ) {
return valueA == valueB ;
}
function safeParseBoolean ( rawValue ) {
if ( [ 1 , "1" , "true" , "on" , "yes" , true ] . includes ( rawValue ) ) {
return true ;
}
if ( [ 0 , "0" , "false" , "off" , "no" , false ] . includes ( rawValue ) ) {
return false ;
}
return rawValue ? Boolean ( rawValue ) : null ;
}
function isBooleanAttr ( attrName ) {
const booleanAttributes = [
"disabled" ,
"checked" ,
"required" ,
"readonly" ,
"open" ,
"selected" ,
"autofocus" ,
"itemscope" ,
"multiple" ,
"novalidate" ,
"allowfullscreen" ,
"allowpaymentrequest" ,
"formnovalidate" ,
"autoplay" ,
"controls" ,
"loop" ,
"muted" ,
"playsinline" ,
"default" ,
"ismap" ,
"reversed" ,
"async" ,
"defer" ,
"nomodule"
] ;
return booleanAttributes . includes ( attrName ) ;
}
function attributeShouldntBePreservedIfFalsy ( name ) {
return ! [ "aria-pressed" , "aria-checked" , "aria-expanded" , "aria-selected" ] . includes ( name ) ;
}
function getBinding ( el , name , fallback2 ) {
if ( el . _x _bindings && el . _x _bindings [ name ] !== void 0 )
return el . _x _bindings [ name ] ;
return getAttributeBinding ( el , name , fallback2 ) ;
}
function extractProp ( el , name , fallback2 , extract = true ) {
if ( el . _x _bindings && el . _x _bindings [ name ] !== void 0 )
return el . _x _bindings [ name ] ;
if ( el . _x _inlineBindings && el . _x _inlineBindings [ name ] !== void 0 ) {
let binding = el . _x _inlineBindings [ name ] ;
binding . extract = extract ;
return dontAutoEvaluateFunctions ( ( ) => {
return evaluate ( el , binding . expression ) ;
} ) ;
}
return getAttributeBinding ( el , name , fallback2 ) ;
}
function getAttributeBinding ( el , name , fallback2 ) {
let attr = el . getAttribute ( name ) ;
if ( attr === null )
return typeof fallback2 === "function" ? fallback2 ( ) : fallback2 ;
if ( attr === "" )
return true ;
if ( isBooleanAttr ( name ) ) {
return ! ! [ name , "true" ] . includes ( attr ) ;
}
return attr ;
}
function debounce ( func , wait ) {
var timeout ;
return function ( ) {
var context = this , args = arguments ;
var later = function ( ) {
timeout = null ;
func . apply ( context , args ) ;
} ;
clearTimeout ( timeout ) ;
timeout = setTimeout ( later , wait ) ;
} ;
}
function throttle ( func , limit ) {
let inThrottle ;
return function ( ) {
let context = this , args = arguments ;
if ( ! inThrottle ) {
func . apply ( context , args ) ;
inThrottle = true ;
setTimeout ( ( ) => inThrottle = false , limit ) ;
}
} ;
}
function entangle ( { get : outerGet , set : outerSet } , { get : innerGet , set : innerSet } ) {
let firstRun = true ;
let outerHash ;
let innerHash ;
let reference = effect ( ( ) => {
let outer = outerGet ( ) ;
let inner = innerGet ( ) ;
if ( firstRun ) {
innerSet ( cloneIfObject ( outer ) ) ;
firstRun = false ;
} else {
let outerHashLatest = JSON . stringify ( outer ) ;
let innerHashLatest = JSON . stringify ( inner ) ;
if ( outerHashLatest !== outerHash ) {
innerSet ( cloneIfObject ( outer ) ) ;
} else if ( outerHashLatest !== innerHashLatest ) {
outerSet ( cloneIfObject ( inner ) ) ;
} else {
}
}
outerHash = JSON . stringify ( outerGet ( ) ) ;
innerHash = JSON . stringify ( innerGet ( ) ) ;
} ) ;
return ( ) => {
release ( reference ) ;
} ;
}
function cloneIfObject ( value ) {
return typeof value === "object" ? JSON . parse ( JSON . stringify ( value ) ) : value ;
}
function plugin ( callback ) {
let callbacks = Array . isArray ( callback ) ? callback : [ callback ] ;
callbacks . forEach ( ( i ) => i ( alpine _default ) ) ;
}
var stores = { } ;
var isReactive = false ;
function store ( name , value ) {
if ( ! isReactive ) {
stores = reactive ( stores ) ;
isReactive = true ;
}
if ( value === void 0 ) {
return stores [ name ] ;
}
stores [ name ] = value ;
if ( typeof value === "object" && value !== null && value . hasOwnProperty ( "init" ) && typeof value . init === "function" ) {
stores [ name ] . init ( ) ;
}
2024-08-27 12:22:51 +02:00
initInterceptors ( stores [ name ] ) ;
2024-03-10 11:28:50 +01:00
}
function getStores ( ) {
return stores ;
}
var binds = { } ;
function bind2 ( name , bindings ) {
let getBindings = typeof bindings !== "function" ? ( ) => bindings : bindings ;
if ( name instanceof Element ) {
return applyBindingsObject ( name , getBindings ( ) ) ;
} else {
binds [ name ] = getBindings ;
}
return ( ) => {
} ;
}
function injectBindingProviders ( obj ) {
Object . entries ( binds ) . forEach ( ( [ name , callback ] ) => {
Object . defineProperty ( obj , name , {
get ( ) {
return ( ... args ) => {
return callback ( ... args ) ;
} ;
}
} ) ;
} ) ;
return obj ;
}
function applyBindingsObject ( el , obj , original ) {
let cleanupRunners = [ ] ;
while ( cleanupRunners . length )
cleanupRunners . pop ( ) ( ) ;
let attributes = Object . entries ( obj ) . map ( ( [ name , value ] ) => ( { name , value } ) ) ;
let staticAttributes = attributesOnly ( attributes ) ;
attributes = attributes . map ( ( attribute ) => {
if ( staticAttributes . find ( ( attr ) => attr . name === attribute . name ) ) {
return {
name : ` x-bind: ${ attribute . name } ` ,
value : ` " ${ attribute . value } " `
} ;
}
return attribute ;
} ) ;
directives ( el , attributes , original ) . map ( ( handle ) => {
cleanupRunners . push ( handle . runCleanups ) ;
handle ( ) ;
} ) ;
return ( ) => {
while ( cleanupRunners . length )
cleanupRunners . pop ( ) ( ) ;
} ;
}
var datas = { } ;
function data ( name , callback ) {
datas [ name ] = callback ;
}
function injectDataProviders ( obj , context ) {
Object . entries ( datas ) . forEach ( ( [ name , callback ] ) => {
Object . defineProperty ( obj , name , {
get ( ) {
return ( ... args ) => {
return callback . bind ( context ) ( ... args ) ;
} ;
} ,
enumerable : false
} ) ;
} ) ;
return obj ;
}
var Alpine2 = {
get reactive ( ) {
return reactive ;
} ,
get release ( ) {
return release ;
} ,
get effect ( ) {
return effect ;
} ,
get raw ( ) {
return raw ;
} ,
2024-08-27 12:22:51 +02:00
version : "3.14.1" ,
2024-03-10 11:28:50 +01:00
flushAndStopDeferringMutations ,
dontAutoEvaluateFunctions ,
disableEffectScheduling ,
startObservingMutations ,
stopObservingMutations ,
setReactivityEngine ,
onAttributeRemoved ,
onAttributesAdded ,
closestDataStack ,
skipDuringClone ,
onlyDuringClone ,
addRootSelector ,
addInitSelector ,
interceptClone ,
addScopeToNode ,
deferMutations ,
mapAttributes ,
evaluateLater ,
interceptInit ,
setEvaluator ,
mergeProxies ,
extractProp ,
findClosest ,
onElRemoved ,
closestRoot ,
destroyTree ,
interceptor ,
transition ,
setStyles ,
mutateDom ,
directive ,
entangle ,
throttle ,
debounce ,
evaluate ,
initTree ,
nextTick ,
prefixed : prefix ,
prefix : setPrefix ,
plugin ,
magic ,
store ,
start ,
clone ,
cloneNode ,
bound : getBinding ,
$data : scope ,
watch ,
walk ,
data ,
bind : bind2
} ;
var alpine _default = Alpine2 ;
function makeMap ( str , expectsLowerCase ) {
const map = /* @__PURE__ */ Object . create ( null ) ;
const list = str . split ( "," ) ;
for ( let i = 0 ; i < list . length ; i ++ ) {
map [ list [ i ] ] = true ;
}
return expectsLowerCase ? ( val ) => ! ! map [ val . toLowerCase ( ) ] : ( val ) => ! ! map [ val ] ;
}
var specialBooleanAttrs = ` itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly ` ;
var isBooleanAttr2 = /* @__PURE__ */ makeMap ( specialBooleanAttrs + ` ,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected ` ) ;
var EMPTY _OBJ = true ? Object . freeze ( { } ) : { } ;
var EMPTY _ARR = true ? Object . freeze ( [ ] ) : [ ] ;
var hasOwnProperty = Object . prototype . hasOwnProperty ;
var hasOwn = ( val , key ) => hasOwnProperty . call ( val , key ) ;
var isArray2 = Array . isArray ;
var isMap = ( val ) => toTypeString ( val ) === "[object Map]" ;
var isString = ( val ) => typeof val === "string" ;
var isSymbol = ( val ) => typeof val === "symbol" ;
var isObject2 = ( val ) => val !== null && typeof val === "object" ;
var objectToString = Object . prototype . toString ;
var toTypeString = ( value ) => objectToString . call ( value ) ;
var toRawType = ( value ) => {
return toTypeString ( value ) . slice ( 8 , - 1 ) ;
} ;
var isIntegerKey = ( key ) => isString ( key ) && key !== "NaN" && key [ 0 ] !== "-" && "" + parseInt ( key , 10 ) === key ;
var cacheStringFunction = ( fn ) => {
const cache = /* @__PURE__ */ Object . create ( null ) ;
return ( str ) => {
const hit = cache [ str ] ;
return hit || ( cache [ str ] = fn ( str ) ) ;
} ;
} ;
var camelizeRE = /-(\w)/g ;
var camelize = cacheStringFunction ( ( str ) => {
return str . replace ( camelizeRE , ( _ , c ) => c ? c . toUpperCase ( ) : "" ) ;
} ) ;
var hyphenateRE = /\B([A-Z])/g ;
var hyphenate = cacheStringFunction ( ( str ) => str . replace ( hyphenateRE , "-$1" ) . toLowerCase ( ) ) ;
var capitalize = cacheStringFunction ( ( str ) => str . charAt ( 0 ) . toUpperCase ( ) + str . slice ( 1 ) ) ;
var toHandlerKey = cacheStringFunction ( ( str ) => str ? ` on ${ capitalize ( str ) } ` : ` ` ) ;
var hasChanged = ( value , oldValue ) => value !== oldValue && ( value === value || oldValue === oldValue ) ;
var targetMap = /* @__PURE__ */ new WeakMap ( ) ;
var effectStack = [ ] ;
var activeEffect ;
var ITERATE _KEY = Symbol ( true ? "iterate" : "" ) ;
var MAP _KEY _ITERATE _KEY = Symbol ( true ? "Map key iterate" : "" ) ;
function isEffect ( fn ) {
return fn && fn . _isEffect === true ;
}
function effect2 ( fn , options = EMPTY _OBJ ) {
if ( isEffect ( fn ) ) {
fn = fn . raw ;
}
const effect3 = createReactiveEffect ( fn , options ) ;
if ( ! options . lazy ) {
effect3 ( ) ;
}
return effect3 ;
}
function stop ( effect3 ) {
if ( effect3 . active ) {
cleanup ( effect3 ) ;
if ( effect3 . options . onStop ) {
effect3 . options . onStop ( ) ;
}
effect3 . active = false ;
}
}
var uid = 0 ;
function createReactiveEffect ( fn , options ) {
const effect3 = function reactiveEffect ( ) {
if ( ! effect3 . active ) {
return fn ( ) ;
}
if ( ! effectStack . includes ( effect3 ) ) {
cleanup ( effect3 ) ;
try {
enableTracking ( ) ;
effectStack . push ( effect3 ) ;
activeEffect = effect3 ;
return fn ( ) ;
} finally {
effectStack . pop ( ) ;
resetTracking ( ) ;
activeEffect = effectStack [ effectStack . length - 1 ] ;
}
}
} ;
effect3 . id = uid ++ ;
effect3 . allowRecurse = ! ! options . allowRecurse ;
effect3 . _isEffect = true ;
effect3 . active = true ;
effect3 . raw = fn ;
effect3 . deps = [ ] ;
effect3 . options = options ;
return effect3 ;
}
function cleanup ( effect3 ) {
const { deps } = effect3 ;
if ( deps . length ) {
for ( let i = 0 ; i < deps . length ; i ++ ) {
deps [ i ] . delete ( effect3 ) ;
}
deps . length = 0 ;
}
}
var shouldTrack = true ;
var trackStack = [ ] ;
function pauseTracking ( ) {
trackStack . push ( shouldTrack ) ;
shouldTrack = false ;
}
function enableTracking ( ) {
trackStack . push ( shouldTrack ) ;
shouldTrack = true ;
}
function resetTracking ( ) {
const last = trackStack . pop ( ) ;
shouldTrack = last === void 0 ? true : last ;
}
function track ( target , type , key ) {
if ( ! shouldTrack || activeEffect === void 0 ) {
return ;
}
let depsMap = targetMap . get ( target ) ;
if ( ! depsMap ) {
targetMap . set ( target , depsMap = /* @__PURE__ */ new Map ( ) ) ;
}
let dep = depsMap . get ( key ) ;
if ( ! dep ) {
depsMap . set ( key , dep = /* @__PURE__ */ new Set ( ) ) ;
}
if ( ! dep . has ( activeEffect ) ) {
dep . add ( activeEffect ) ;
activeEffect . deps . push ( dep ) ;
if ( activeEffect . options . onTrack ) {
activeEffect . options . onTrack ( {
effect : activeEffect ,
target ,
type ,
key
} ) ;
}
}
}
function trigger ( target , type , key , newValue , oldValue , oldTarget ) {
const depsMap = targetMap . get ( target ) ;
if ( ! depsMap ) {
return ;
}
const effects = /* @__PURE__ */ new Set ( ) ;
const add2 = ( effectsToAdd ) => {
if ( effectsToAdd ) {
effectsToAdd . forEach ( ( effect3 ) => {
if ( effect3 !== activeEffect || effect3 . allowRecurse ) {
effects . add ( effect3 ) ;
}
} ) ;
}
} ;
if ( type === "clear" ) {
depsMap . forEach ( add2 ) ;
} else if ( key === "length" && isArray2 ( target ) ) {
depsMap . forEach ( ( dep , key2 ) => {
if ( key2 === "length" || key2 >= newValue ) {
add2 ( dep ) ;
}
} ) ;
} else {
if ( key !== void 0 ) {
add2 ( depsMap . get ( key ) ) ;
}
switch ( type ) {
case "add" :
if ( ! isArray2 ( target ) ) {
add2 ( depsMap . get ( ITERATE _KEY ) ) ;
if ( isMap ( target ) ) {
add2 ( depsMap . get ( MAP _KEY _ITERATE _KEY ) ) ;
}
} else if ( isIntegerKey ( key ) ) {
add2 ( depsMap . get ( "length" ) ) ;
}
break ;
case "delete" :
if ( ! isArray2 ( target ) ) {
add2 ( depsMap . get ( ITERATE _KEY ) ) ;
if ( isMap ( target ) ) {
add2 ( depsMap . get ( MAP _KEY _ITERATE _KEY ) ) ;
}
}
break ;
case "set" :
if ( isMap ( target ) ) {
add2 ( depsMap . get ( ITERATE _KEY ) ) ;
}
break ;
}
}
const run = ( effect3 ) => {
if ( effect3 . options . onTrigger ) {
effect3 . options . onTrigger ( {
effect : effect3 ,
target ,
key ,
type ,
newValue ,
oldValue ,
oldTarget
} ) ;
}
if ( effect3 . options . scheduler ) {
effect3 . options . scheduler ( effect3 ) ;
} else {
effect3 ( ) ;
}
} ;
effects . forEach ( run ) ;
}
var isNonTrackableKeys = /* @__PURE__ */ makeMap ( ` __proto__,__v_isRef,__isVue ` ) ;
var builtInSymbols = new Set ( Object . getOwnPropertyNames ( Symbol ) . map ( ( key ) => Symbol [ key ] ) . filter ( isSymbol ) ) ;
var get2 = /* @__PURE__ */ createGetter ( ) ;
var readonlyGet = /* @__PURE__ */ createGetter ( true ) ;
var arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations ( ) ;
function createArrayInstrumentations ( ) {
const instrumentations = { } ;
[ "includes" , "indexOf" , "lastIndexOf" ] . forEach ( ( key ) => {
instrumentations [ key ] = function ( ... args ) {
const arr = toRaw ( this ) ;
for ( let i = 0 , l = this . length ; i < l ; i ++ ) {
track ( arr , "get" , i + "" ) ;
}
const res = arr [ key ] ( ... args ) ;
if ( res === - 1 || res === false ) {
return arr [ key ] ( ... args . map ( toRaw ) ) ;
} else {
return res ;
}
} ;
} ) ;
[ "push" , "pop" , "shift" , "unshift" , "splice" ] . forEach ( ( key ) => {
instrumentations [ key ] = function ( ... args ) {
pauseTracking ( ) ;
const res = toRaw ( this ) [ key ] . apply ( this , args ) ;
resetTracking ( ) ;
return res ;
} ;
} ) ;
return instrumentations ;
}
function createGetter ( isReadonly = false , shallow = false ) {
return function get3 ( target , key , receiver ) {
if ( key === "__v_isReactive" ) {
return ! isReadonly ;
} else if ( key === "__v_isReadonly" ) {
return isReadonly ;
} else if ( key === "__v_raw" && receiver === ( isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap ) . get ( target ) ) {
return target ;
}
const targetIsArray = isArray2 ( target ) ;
if ( ! isReadonly && targetIsArray && hasOwn ( arrayInstrumentations , key ) ) {
return Reflect . get ( arrayInstrumentations , key , receiver ) ;
}
const res = Reflect . get ( target , key , receiver ) ;
if ( isSymbol ( key ) ? builtInSymbols . has ( key ) : isNonTrackableKeys ( key ) ) {
return res ;
}
if ( ! isReadonly ) {
track ( target , "get" , key ) ;
}
if ( shallow ) {
return res ;
}
if ( isRef ( res ) ) {
const shouldUnwrap = ! targetIsArray || ! isIntegerKey ( key ) ;
return shouldUnwrap ? res . value : res ;
}
if ( isObject2 ( res ) ) {
return isReadonly ? readonly ( res ) : reactive2 ( res ) ;
}
return res ;
} ;
}
var set2 = /* @__PURE__ */ createSetter ( ) ;
function createSetter ( shallow = false ) {
return function set3 ( target , key , value , receiver ) {
let oldValue = target [ key ] ;
if ( ! shallow ) {
value = toRaw ( value ) ;
oldValue = toRaw ( oldValue ) ;
if ( ! isArray2 ( target ) && isRef ( oldValue ) && ! isRef ( value ) ) {
oldValue . value = value ;
return true ;
}
}
const hadKey = isArray2 ( target ) && isIntegerKey ( key ) ? Number ( key ) < target . length : hasOwn ( target , key ) ;
const result = Reflect . set ( target , key , value , receiver ) ;
if ( target === toRaw ( receiver ) ) {
if ( ! hadKey ) {
trigger ( target , "add" , key , value ) ;
} else if ( hasChanged ( value , oldValue ) ) {
trigger ( target , "set" , key , value , oldValue ) ;
}
}
return result ;
} ;
}
function deleteProperty ( target , key ) {
const hadKey = hasOwn ( target , key ) ;
const oldValue = target [ key ] ;
const result = Reflect . deleteProperty ( target , key ) ;
if ( result && hadKey ) {
trigger ( target , "delete" , key , void 0 , oldValue ) ;
}
return result ;
}
function has ( target , key ) {
const result = Reflect . has ( target , key ) ;
if ( ! isSymbol ( key ) || ! builtInSymbols . has ( key ) ) {
track ( target , "has" , key ) ;
}
return result ;
}
function ownKeys ( target ) {
track ( target , "iterate" , isArray2 ( target ) ? "length" : ITERATE _KEY ) ;
return Reflect . ownKeys ( target ) ;
}
var mutableHandlers = {
get : get2 ,
set : set2 ,
deleteProperty ,
has ,
ownKeys
} ;
var readonlyHandlers = {
get : readonlyGet ,
set ( target , key ) {
if ( true ) {
console . warn ( ` Set operation on key " ${ String ( key ) } " failed: target is readonly. ` , target ) ;
}
return true ;
} ,
deleteProperty ( target , key ) {
if ( true ) {
console . warn ( ` Delete operation on key " ${ String ( key ) } " failed: target is readonly. ` , target ) ;
}
return true ;
}
} ;
var toReactive = ( value ) => isObject2 ( value ) ? reactive2 ( value ) : value ;
var toReadonly = ( value ) => isObject2 ( value ) ? readonly ( value ) : value ;
var toShallow = ( value ) => value ;
var getProto = ( v ) => Reflect . getPrototypeOf ( v ) ;
function get$1 ( target , key , isReadonly = false , isShallow = false ) {
target = target [ "__v_raw" ] ;
const rawTarget = toRaw ( target ) ;
const rawKey = toRaw ( key ) ;
if ( key !== rawKey ) {
! isReadonly && track ( rawTarget , "get" , key ) ;
}
! isReadonly && track ( rawTarget , "get" , rawKey ) ;
const { has : has2 } = getProto ( rawTarget ) ;
const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive ;
if ( has2 . call ( rawTarget , key ) ) {
return wrap ( target . get ( key ) ) ;
} else if ( has2 . call ( rawTarget , rawKey ) ) {
return wrap ( target . get ( rawKey ) ) ;
} else if ( target !== rawTarget ) {
target . get ( key ) ;
}
}
function has$1 ( key , isReadonly = false ) {
const target = this [ "__v_raw" ] ;
const rawTarget = toRaw ( target ) ;
const rawKey = toRaw ( key ) ;
if ( key !== rawKey ) {
! isReadonly && track ( rawTarget , "has" , key ) ;
}
! isReadonly && track ( rawTarget , "has" , rawKey ) ;
return key === rawKey ? target . has ( key ) : target . has ( key ) || target . has ( rawKey ) ;
}
function size ( target , isReadonly = false ) {
target = target [ "__v_raw" ] ;
! isReadonly && track ( toRaw ( target ) , "iterate" , ITERATE _KEY ) ;
return Reflect . get ( target , "size" , target ) ;
}
function add ( value ) {
value = toRaw ( value ) ;
const target = toRaw ( this ) ;
const proto = getProto ( target ) ;
const hadKey = proto . has . call ( target , value ) ;
if ( ! hadKey ) {
target . add ( value ) ;
trigger ( target , "add" , value , value ) ;
}
return this ;
}
function set$1 ( key , value ) {
value = toRaw ( value ) ;
const target = toRaw ( this ) ;
const { has : has2 , get : get3 } = getProto ( target ) ;
let hadKey = has2 . call ( target , key ) ;
if ( ! hadKey ) {
key = toRaw ( key ) ;
hadKey = has2 . call ( target , key ) ;
} else if ( true ) {
checkIdentityKeys ( target , has2 , key ) ;
}
const oldValue = get3 . call ( target , key ) ;
target . set ( key , value ) ;
if ( ! hadKey ) {
trigger ( target , "add" , key , value ) ;
} else if ( hasChanged ( value , oldValue ) ) {
trigger ( target , "set" , key , value , oldValue ) ;
}
return this ;
}
function deleteEntry ( key ) {
const target = toRaw ( this ) ;
const { has : has2 , get : get3 } = getProto ( target ) ;
let hadKey = has2 . call ( target , key ) ;
if ( ! hadKey ) {
key = toRaw ( key ) ;
hadKey = has2 . call ( target , key ) ;
} else if ( true ) {
checkIdentityKeys ( target , has2 , key ) ;
}
const oldValue = get3 ? get3 . call ( target , key ) : void 0 ;
const result = target . delete ( key ) ;
if ( hadKey ) {
trigger ( target , "delete" , key , void 0 , oldValue ) ;
}
return result ;
}
function clear ( ) {
const target = toRaw ( this ) ;
const hadItems = target . size !== 0 ;
const oldTarget = true ? isMap ( target ) ? new Map ( target ) : new Set ( target ) : void 0 ;
const result = target . clear ( ) ;
if ( hadItems ) {
trigger ( target , "clear" , void 0 , void 0 , oldTarget ) ;
}
return result ;
}
function createForEach ( isReadonly , isShallow ) {
return function forEach ( callback , thisArg ) {
const observed = this ;
const target = observed [ "__v_raw" ] ;
const rawTarget = toRaw ( target ) ;
const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive ;
! isReadonly && track ( rawTarget , "iterate" , ITERATE _KEY ) ;
return target . forEach ( ( value , key ) => {
return callback . call ( thisArg , wrap ( value ) , wrap ( key ) , observed ) ;
} ) ;
} ;
}
function createIterableMethod ( method , isReadonly , isShallow ) {
return function ( ... args ) {
const target = this [ "__v_raw" ] ;
const rawTarget = toRaw ( target ) ;
const targetIsMap = isMap ( rawTarget ) ;
const isPair = method === "entries" || method === Symbol . iterator && targetIsMap ;
const isKeyOnly = method === "keys" && targetIsMap ;
const innerIterator = target [ method ] ( ... args ) ;
const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive ;
! isReadonly && track ( rawTarget , "iterate" , isKeyOnly ? MAP _KEY _ITERATE _KEY : ITERATE _KEY ) ;
return {
next ( ) {
const { value , done } = innerIterator . next ( ) ;
return done ? { value , done } : {
value : isPair ? [ wrap ( value [ 0 ] ) , wrap ( value [ 1 ] ) ] : wrap ( value ) ,
done
} ;
} ,
[ Symbol . iterator ] ( ) {
return this ;
}
} ;
} ;
}
function createReadonlyMethod ( type ) {
return function ( ... args ) {
if ( true ) {
const key = args [ 0 ] ? ` on key " ${ args [ 0 ] } " ` : ` ` ;
console . warn ( ` ${ capitalize ( type ) } operation ${ key } failed: target is readonly. ` , toRaw ( this ) ) ;
}
return type === "delete" ? false : this ;
} ;
}
function createInstrumentations ( ) {
const mutableInstrumentations2 = {
get ( key ) {
return get$1 ( this , key ) ;
} ,
get size ( ) {
return size ( this ) ;
} ,
has : has$1 ,
add ,
set : set$1 ,
delete : deleteEntry ,
clear ,
forEach : createForEach ( false , false )
} ;
const shallowInstrumentations2 = {
get ( key ) {
return get$1 ( this , key , false , true ) ;
} ,
get size ( ) {
return size ( this ) ;
} ,
has : has$1 ,
add ,
set : set$1 ,
delete : deleteEntry ,
clear ,
forEach : createForEach ( false , true )
} ;
const readonlyInstrumentations2 = {
get ( key ) {
return get$1 ( this , key , true ) ;
} ,
get size ( ) {
return size ( this , true ) ;
} ,
has ( key ) {
return has$1 . call ( this , key , true ) ;
} ,
add : createReadonlyMethod ( "add" ) ,
set : createReadonlyMethod ( "set" ) ,
delete : createReadonlyMethod ( "delete" ) ,
clear : createReadonlyMethod ( "clear" ) ,
forEach : createForEach ( true , false )
} ;
const shallowReadonlyInstrumentations2 = {
get ( key ) {
return get$1 ( this , key , true , true ) ;
} ,
get size ( ) {
return size ( this , true ) ;
} ,
has ( key ) {
return has$1 . call ( this , key , true ) ;
} ,
add : createReadonlyMethod ( "add" ) ,
set : createReadonlyMethod ( "set" ) ,
delete : createReadonlyMethod ( "delete" ) ,
clear : createReadonlyMethod ( "clear" ) ,
forEach : createForEach ( true , true )
} ;
const iteratorMethods = [ "keys" , "values" , "entries" , Symbol . iterator ] ;
iteratorMethods . forEach ( ( method ) => {
mutableInstrumentations2 [ method ] = createIterableMethod ( method , false , false ) ;
readonlyInstrumentations2 [ method ] = createIterableMethod ( method , true , false ) ;
shallowInstrumentations2 [ method ] = createIterableMethod ( method , false , true ) ;
shallowReadonlyInstrumentations2 [ method ] = createIterableMethod ( method , true , true ) ;
} ) ;
return [
mutableInstrumentations2 ,
readonlyInstrumentations2 ,
shallowInstrumentations2 ,
shallowReadonlyInstrumentations2
] ;
}
var [ mutableInstrumentations , readonlyInstrumentations , shallowInstrumentations , shallowReadonlyInstrumentations ] = /* @__PURE__ */ createInstrumentations ( ) ;
function createInstrumentationGetter ( isReadonly , shallow ) {
const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations ;
return ( target , key , receiver ) => {
if ( key === "__v_isReactive" ) {
return ! isReadonly ;
} else if ( key === "__v_isReadonly" ) {
return isReadonly ;
} else if ( key === "__v_raw" ) {
return target ;
}
return Reflect . get ( hasOwn ( instrumentations , key ) && key in target ? instrumentations : target , key , receiver ) ;
} ;
}
var mutableCollectionHandlers = {
get : /* @__PURE__ */ createInstrumentationGetter ( false , false )
} ;
var readonlyCollectionHandlers = {
get : /* @__PURE__ */ createInstrumentationGetter ( true , false )
} ;
function checkIdentityKeys ( target , has2 , key ) {
const rawKey = toRaw ( key ) ;
if ( rawKey !== key && has2 . call ( target , rawKey ) ) {
const type = toRawType ( target ) ;
console . warn ( ` Reactive ${ type } contains both the raw and reactive versions of the same object ${ type === ` Map ` ? ` as keys ` : ` ` } , which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible. ` ) ;
}
}
var reactiveMap = /* @__PURE__ */ new WeakMap ( ) ;
var shallowReactiveMap = /* @__PURE__ */ new WeakMap ( ) ;
var readonlyMap = /* @__PURE__ */ new WeakMap ( ) ;
var shallowReadonlyMap = /* @__PURE__ */ new WeakMap ( ) ;
function targetTypeMap ( rawType ) {
switch ( rawType ) {
case "Object" :
case "Array" :
return 1 ;
case "Map" :
case "Set" :
case "WeakMap" :
case "WeakSet" :
return 2 ;
default :
return 0 ;
}
}
function getTargetType ( value ) {
return value [ "__v_skip" ] || ! Object . isExtensible ( value ) ? 0 : targetTypeMap ( toRawType ( value ) ) ;
}
function reactive2 ( target ) {
if ( target && target [ "__v_isReadonly" ] ) {
return target ;
}
return createReactiveObject ( target , false , mutableHandlers , mutableCollectionHandlers , reactiveMap ) ;
}
function readonly ( target ) {
return createReactiveObject ( target , true , readonlyHandlers , readonlyCollectionHandlers , readonlyMap ) ;
}
function createReactiveObject ( target , isReadonly , baseHandlers , collectionHandlers , proxyMap ) {
if ( ! isObject2 ( target ) ) {
if ( true ) {
console . warn ( ` value cannot be made reactive: ${ String ( target ) } ` ) ;
}
return target ;
}
if ( target [ "__v_raw" ] && ! ( isReadonly && target [ "__v_isReactive" ] ) ) {
return target ;
}
const existingProxy = proxyMap . get ( target ) ;
if ( existingProxy ) {
return existingProxy ;
}
const targetType = getTargetType ( target ) ;
if ( targetType === 0 ) {
return target ;
}
const proxy = new Proxy ( target , targetType === 2 ? collectionHandlers : baseHandlers ) ;
proxyMap . set ( target , proxy ) ;
return proxy ;
}
function toRaw ( observed ) {
return observed && toRaw ( observed [ "__v_raw" ] ) || observed ;
}
function isRef ( r ) {
return Boolean ( r && r . _ _v _isRef === true ) ;
}
magic ( "nextTick" , ( ) => nextTick ) ;
magic ( "dispatch" , ( el ) => dispatch2 . bind ( dispatch2 , el ) ) ;
2024-08-27 12:22:51 +02:00
magic ( "watch" , ( el , { evaluateLater : evaluateLater2 , cleanup : cleanup2 } ) => ( key , callback ) => {
2024-03-10 11:28:50 +01:00
let evaluate22 = evaluateLater2 ( key ) ;
let getter = ( ) => {
let value ;
evaluate22 ( ( i ) => value = i ) ;
return value ;
} ;
let unwatch = watch ( getter , callback ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( unwatch ) ;
2024-03-10 11:28:50 +01:00
} ) ;
magic ( "store" , getStores ) ;
magic ( "data" , ( el ) => scope ( el ) ) ;
magic ( "root" , ( el ) => closestRoot ( el ) ) ;
magic ( "refs" , ( el ) => {
if ( el . _x _refs _proxy )
return el . _x _refs _proxy ;
el . _x _refs _proxy = mergeProxies ( getArrayOfRefObject ( el ) ) ;
return el . _x _refs _proxy ;
} ) ;
function getArrayOfRefObject ( el ) {
let refObjects = [ ] ;
findClosest ( el , ( i ) => {
if ( i . _x _refs )
refObjects . push ( i . _x _refs ) ;
} ) ;
return refObjects ;
}
var globalIdMemo = { } ;
function findAndIncrementId ( name ) {
if ( ! globalIdMemo [ name ] )
globalIdMemo [ name ] = 0 ;
return ++ globalIdMemo [ name ] ;
}
function closestIdRoot ( el , name ) {
return findClosest ( el , ( element ) => {
if ( element . _x _ids && element . _x _ids [ name ] )
return true ;
} ) ;
}
function setIdRoot ( el , name ) {
if ( ! el . _x _ids )
el . _x _ids = { } ;
if ( ! el . _x _ids [ name ] )
el . _x _ids [ name ] = findAndIncrementId ( name ) ;
}
2024-08-27 12:22:51 +02:00
magic ( "id" , ( el , { cleanup : cleanup2 } ) => ( name , key = null ) => {
2024-03-10 11:28:50 +01:00
let cacheKey = ` ${ name } ${ key ? ` - ${ key } ` : "" } ` ;
2024-08-27 12:22:51 +02:00
return cacheIdByNameOnElement ( el , cacheKey , cleanup2 , ( ) => {
2024-03-10 11:28:50 +01:00
let root = closestIdRoot ( el , name ) ;
let id = root ? root . _x _ids [ name ] : findAndIncrementId ( name ) ;
return key ? ` ${ name } - ${ id } - ${ key } ` : ` ${ name } - ${ id } ` ;
} ) ;
} ) ;
interceptClone ( ( from , to ) => {
if ( from . _x _id ) {
to . _x _id = from . _x _id ;
}
} ) ;
2024-08-27 12:22:51 +02:00
function cacheIdByNameOnElement ( el , cacheKey , cleanup2 , callback ) {
2024-03-10 11:28:50 +01:00
if ( ! el . _x _id )
el . _x _id = { } ;
if ( el . _x _id [ cacheKey ] )
return el . _x _id [ cacheKey ] ;
let output = callback ( ) ;
el . _x _id [ cacheKey ] = output ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => {
2024-03-10 11:28:50 +01:00
delete el . _x _id [ cacheKey ] ;
} ) ;
return output ;
}
magic ( "el" , ( el ) => el ) ;
warnMissingPluginMagic ( "Focus" , "focus" , "focus" ) ;
warnMissingPluginMagic ( "Persist" , "persist" , "persist" ) ;
function warnMissingPluginMagic ( name , magicName , slug ) {
magic ( magicName , ( el ) => warn ( ` You can't use [ $ ${ magicName } ] without first installing the " ${ name } " plugin here: https://alpinejs.dev/plugins/ ${ slug } ` , el ) ) ;
}
2024-08-27 12:22:51 +02:00
directive ( "modelable" , ( el , { expression } , { effect : effect3 , evaluateLater : evaluateLater2 , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let func = evaluateLater2 ( expression ) ;
let innerGet = ( ) => {
let result ;
func ( ( i ) => result = i ) ;
return result ;
} ;
let evaluateInnerSet = evaluateLater2 ( ` ${ expression } = __placeholder ` ) ;
let innerSet = ( val ) => evaluateInnerSet ( ( ) => {
} , { scope : { "__placeholder" : val } } ) ;
let initialValue = innerGet ( ) ;
innerSet ( initialValue ) ;
queueMicrotask ( ( ) => {
if ( ! el . _x _model )
return ;
el . _x _removeModelListeners [ "default" ] ( ) ;
let outerGet = el . _x _model . get ;
let outerSet = el . _x _model . set ;
let releaseEntanglement = entangle ( {
get ( ) {
return outerGet ( ) ;
} ,
set ( value ) {
outerSet ( value ) ;
}
} , {
get ( ) {
return innerGet ( ) ;
} ,
set ( value ) {
innerSet ( value ) ;
}
} ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( releaseEntanglement ) ;
2024-03-10 11:28:50 +01:00
} ) ;
} ) ;
2024-08-27 12:22:51 +02:00
directive ( "teleport" , ( el , { modifiers , expression } , { cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
if ( el . tagName . toLowerCase ( ) !== "template" )
warn ( "x-teleport can only be used on a <template> tag" , el ) ;
let target = getTarget ( expression ) ;
let clone2 = el . content . cloneNode ( true ) . firstElementChild ;
el . _x _teleport = clone2 ;
clone2 . _x _teleportBack = el ;
el . setAttribute ( "data-teleport-template" , true ) ;
clone2 . setAttribute ( "data-teleport-target" , true ) ;
if ( el . _x _forwardEvents ) {
el . _x _forwardEvents . forEach ( ( eventName ) => {
clone2 . addEventListener ( eventName , ( e ) => {
e . stopPropagation ( ) ;
el . dispatchEvent ( new e . constructor ( e . type , e ) ) ;
} ) ;
} ) ;
}
addScopeToNode ( clone2 , { } , el ) ;
let placeInDom = ( clone3 , target2 , modifiers2 ) => {
if ( modifiers2 . includes ( "prepend" ) ) {
target2 . parentNode . insertBefore ( clone3 , target2 ) ;
} else if ( modifiers2 . includes ( "append" ) ) {
target2 . parentNode . insertBefore ( clone3 , target2 . nextSibling ) ;
} else {
target2 . appendChild ( clone3 ) ;
}
} ;
mutateDom ( ( ) => {
placeInDom ( clone2 , target , modifiers ) ;
2024-08-27 12:22:51 +02:00
skipDuringClone ( ( ) => {
initTree ( clone2 ) ;
clone2 . _x _ignore = true ;
} ) ( ) ;
2024-03-10 11:28:50 +01:00
} ) ;
el . _x _teleportPutBack = ( ) => {
let target2 = getTarget ( expression ) ;
mutateDom ( ( ) => {
placeInDom ( el . _x _teleport , target2 , modifiers ) ;
} ) ;
} ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => clone2 . remove ( ) ) ;
2024-03-10 11:28:50 +01:00
} ) ;
var teleportContainerDuringClone = document . createElement ( "div" ) ;
function getTarget ( expression ) {
let target = skipDuringClone ( ( ) => {
return document . querySelector ( expression ) ;
} , ( ) => {
return teleportContainerDuringClone ;
} ) ( ) ;
if ( ! target )
warn ( ` Cannot find x-teleport element for selector: " ${ expression } " ` ) ;
return target ;
}
var handler = ( ) => {
} ;
2024-08-27 12:22:51 +02:00
handler . inline = ( el , { modifiers } , { cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
modifiers . includes ( "self" ) ? el . _x _ignoreSelf = true : el . _x _ignore = true ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => {
2024-03-10 11:28:50 +01:00
modifiers . includes ( "self" ) ? delete el . _x _ignoreSelf : delete el . _x _ignore ;
} ) ;
} ;
directive ( "ignore" , handler ) ;
directive ( "effect" , skipDuringClone ( ( el , { expression } , { effect : effect3 } ) => {
effect3 ( evaluateLater ( el , expression ) ) ;
} ) ) ;
function on ( el , event , modifiers , callback ) {
let listenerTarget = el ;
let handler4 = ( e ) => callback ( e ) ;
let options = { } ;
let wrapHandler = ( callback2 , wrapper ) => ( e ) => wrapper ( callback2 , e ) ;
if ( modifiers . includes ( "dot" ) )
event = dotSyntax ( event ) ;
if ( modifiers . includes ( "camel" ) )
event = camelCase2 ( event ) ;
if ( modifiers . includes ( "passive" ) )
options . passive = true ;
if ( modifiers . includes ( "capture" ) )
options . capture = true ;
if ( modifiers . includes ( "window" ) )
listenerTarget = window ;
if ( modifiers . includes ( "document" ) )
listenerTarget = document ;
if ( modifiers . includes ( "debounce" ) ) {
let nextModifier = modifiers [ modifiers . indexOf ( "debounce" ) + 1 ] || "invalid-wait" ;
let wait = isNumeric ( nextModifier . split ( "ms" ) [ 0 ] ) ? Number ( nextModifier . split ( "ms" ) [ 0 ] ) : 250 ;
handler4 = debounce ( handler4 , wait ) ;
}
if ( modifiers . includes ( "throttle" ) ) {
let nextModifier = modifiers [ modifiers . indexOf ( "throttle" ) + 1 ] || "invalid-wait" ;
let wait = isNumeric ( nextModifier . split ( "ms" ) [ 0 ] ) ? Number ( nextModifier . split ( "ms" ) [ 0 ] ) : 250 ;
handler4 = throttle ( handler4 , wait ) ;
}
if ( modifiers . includes ( "prevent" ) )
handler4 = wrapHandler ( handler4 , ( next , e ) => {
e . preventDefault ( ) ;
next ( e ) ;
} ) ;
if ( modifiers . includes ( "stop" ) )
handler4 = wrapHandler ( handler4 , ( next , e ) => {
e . stopPropagation ( ) ;
next ( e ) ;
} ) ;
2024-08-27 12:22:51 +02:00
if ( modifiers . includes ( "once" ) ) {
2024-03-10 11:28:50 +01:00
handler4 = wrapHandler ( handler4 , ( next , e ) => {
2024-08-27 12:22:51 +02:00
next ( e ) ;
listenerTarget . removeEventListener ( event , handler4 , options ) ;
2024-03-10 11:28:50 +01:00
} ) ;
2024-08-27 12:22:51 +02:00
}
2024-03-10 11:28:50 +01:00
if ( modifiers . includes ( "away" ) || modifiers . includes ( "outside" ) ) {
listenerTarget = document ;
handler4 = wrapHandler ( handler4 , ( next , e ) => {
if ( el . contains ( e . target ) )
return ;
if ( e . target . isConnected === false )
return ;
if ( el . offsetWidth < 1 && el . offsetHeight < 1 )
return ;
if ( el . _x _isShown === false )
return ;
next ( e ) ;
} ) ;
}
2024-08-27 12:22:51 +02:00
if ( modifiers . includes ( "self" ) )
2024-03-10 11:28:50 +01:00
handler4 = wrapHandler ( handler4 , ( next , e ) => {
2024-08-27 12:22:51 +02:00
e . target === el && next ( e ) ;
2024-03-10 11:28:50 +01:00
} ) ;
2024-08-27 12:22:51 +02:00
if ( isKeyEvent ( event ) || isClickEvent ( event ) ) {
handler4 = wrapHandler ( handler4 , ( next , e ) => {
2024-03-10 11:28:50 +01:00
if ( isListeningForASpecificKeyThatHasntBeenPressed ( e , modifiers ) ) {
return ;
}
2024-08-27 12:22:51 +02:00
next ( e ) ;
} ) ;
}
2024-03-10 11:28:50 +01:00
listenerTarget . addEventListener ( event , handler4 , options ) ;
return ( ) => {
listenerTarget . removeEventListener ( event , handler4 , options ) ;
} ;
}
function dotSyntax ( subject ) {
return subject . replace ( /-/g , "." ) ;
}
function camelCase2 ( subject ) {
return subject . toLowerCase ( ) . replace ( /-(\w)/g , ( match , char ) => char . toUpperCase ( ) ) ;
}
function isNumeric ( subject ) {
return ! Array . isArray ( subject ) && ! isNaN ( subject ) ;
}
function kebabCase2 ( subject ) {
if ( [ " " , "_" ] . includes ( subject ) )
return subject ;
return subject . replace ( /([a-z])([A-Z])/g , "$1-$2" ) . replace ( /[_\s]/ , "-" ) . toLowerCase ( ) ;
}
function isKeyEvent ( event ) {
return [ "keydown" , "keyup" ] . includes ( event ) ;
}
2024-08-27 12:22:51 +02:00
function isClickEvent ( event ) {
return [ "contextmenu" , "click" , "mouse" ] . some ( ( i ) => event . includes ( i ) ) ;
}
2024-03-10 11:28:50 +01:00
function isListeningForASpecificKeyThatHasntBeenPressed ( e , modifiers ) {
let keyModifiers = modifiers . filter ( ( i ) => {
2024-08-27 12:22:51 +02:00
return ! [ "window" , "document" , "prevent" , "stop" , "once" , "capture" , "self" , "away" , "outside" , "passive" ] . includes ( i ) ;
2024-03-10 11:28:50 +01:00
} ) ;
if ( keyModifiers . includes ( "debounce" ) ) {
let debounceIndex = keyModifiers . indexOf ( "debounce" ) ;
keyModifiers . splice ( debounceIndex , isNumeric ( ( keyModifiers [ debounceIndex + 1 ] || "invalid-wait" ) . split ( "ms" ) [ 0 ] ) ? 2 : 1 ) ;
}
if ( keyModifiers . includes ( "throttle" ) ) {
let debounceIndex = keyModifiers . indexOf ( "throttle" ) ;
keyModifiers . splice ( debounceIndex , isNumeric ( ( keyModifiers [ debounceIndex + 1 ] || "invalid-wait" ) . split ( "ms" ) [ 0 ] ) ? 2 : 1 ) ;
}
if ( keyModifiers . length === 0 )
return false ;
if ( keyModifiers . length === 1 && keyToModifiers ( e . key ) . includes ( keyModifiers [ 0 ] ) )
return false ;
const systemKeyModifiers = [ "ctrl" , "shift" , "alt" , "meta" , "cmd" , "super" ] ;
const selectedSystemKeyModifiers = systemKeyModifiers . filter ( ( modifier ) => keyModifiers . includes ( modifier ) ) ;
keyModifiers = keyModifiers . filter ( ( i ) => ! selectedSystemKeyModifiers . includes ( i ) ) ;
if ( selectedSystemKeyModifiers . length > 0 ) {
const activelyPressedKeyModifiers = selectedSystemKeyModifiers . filter ( ( modifier ) => {
if ( modifier === "cmd" || modifier === "super" )
modifier = "meta" ;
return e [ ` ${ modifier } Key ` ] ;
} ) ;
if ( activelyPressedKeyModifiers . length === selectedSystemKeyModifiers . length ) {
2024-08-27 12:22:51 +02:00
if ( isClickEvent ( e . type ) )
return false ;
2024-03-10 11:28:50 +01:00
if ( keyToModifiers ( e . key ) . includes ( keyModifiers [ 0 ] ) )
return false ;
}
}
return true ;
}
function keyToModifiers ( key ) {
if ( ! key )
return [ ] ;
key = kebabCase2 ( key ) ;
let modifierToKeyMap = {
"ctrl" : "control" ,
"slash" : "/" ,
"space" : " " ,
"spacebar" : " " ,
"cmd" : "meta" ,
"esc" : "escape" ,
"up" : "arrow-up" ,
"down" : "arrow-down" ,
"left" : "arrow-left" ,
"right" : "arrow-right" ,
"period" : "." ,
2024-08-27 12:22:51 +02:00
"comma" : "," ,
2024-03-10 11:28:50 +01:00
"equal" : "=" ,
"minus" : "-" ,
"underscore" : "_"
} ;
modifierToKeyMap [ key ] = key ;
return Object . keys ( modifierToKeyMap ) . map ( ( modifier ) => {
if ( modifierToKeyMap [ modifier ] === key )
return modifier ;
} ) . filter ( ( modifier ) => modifier ) ;
}
2024-08-27 12:22:51 +02:00
directive ( "model" , ( el , { modifiers , expression } , { effect : effect3 , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let scopeTarget = el ;
if ( modifiers . includes ( "parent" ) ) {
scopeTarget = el . parentNode ;
}
let evaluateGet = evaluateLater ( scopeTarget , expression ) ;
let evaluateSet ;
if ( typeof expression === "string" ) {
evaluateSet = evaluateLater ( scopeTarget , ` ${ expression } = __placeholder ` ) ;
} else if ( typeof expression === "function" && typeof expression ( ) === "string" ) {
evaluateSet = evaluateLater ( scopeTarget , ` ${ expression ( ) } = __placeholder ` ) ;
} else {
evaluateSet = ( ) => {
} ;
}
let getValue = ( ) => {
let result ;
evaluateGet ( ( value ) => result = value ) ;
return isGetterSetter ( result ) ? result . get ( ) : result ;
} ;
let setValue = ( value ) => {
let result ;
evaluateGet ( ( value2 ) => result = value2 ) ;
if ( isGetterSetter ( result ) ) {
result . set ( value ) ;
} else {
evaluateSet ( ( ) => {
} , {
scope : { "__placeholder" : value }
} ) ;
}
} ;
if ( typeof expression === "string" && el . type === "radio" ) {
mutateDom ( ( ) => {
if ( ! el . hasAttribute ( "name" ) )
el . setAttribute ( "name" , expression ) ;
} ) ;
}
var event = el . tagName . toLowerCase ( ) === "select" || [ "checkbox" , "radio" ] . includes ( el . type ) || modifiers . includes ( "lazy" ) ? "change" : "input" ;
let removeListener = isCloning ? ( ) => {
} : on ( el , event , modifiers , ( e ) => {
setValue ( getInputValue ( el , modifiers , e , getValue ( ) ) ) ;
} ) ;
if ( modifiers . includes ( "fill" ) ) {
2024-08-27 12:22:51 +02:00
if ( [ void 0 , null , "" ] . includes ( getValue ( ) ) || el . type === "checkbox" && Array . isArray ( getValue ( ) ) || el . tagName . toLowerCase ( ) === "select" && el . multiple ) {
setValue ( getInputValue ( el , modifiers , { target : el } , getValue ( ) ) ) ;
2024-03-10 11:28:50 +01:00
}
}
if ( ! el . _x _removeModelListeners )
el . _x _removeModelListeners = { } ;
el . _x _removeModelListeners [ "default" ] = removeListener ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => el . _x _removeModelListeners [ "default" ] ( ) ) ;
2024-03-10 11:28:50 +01:00
if ( el . form ) {
let removeResetListener = on ( el . form , "reset" , [ ] , ( e ) => {
2024-08-27 12:22:51 +02:00
nextTick ( ( ) => el . _x _model && el . _x _model . set ( getInputValue ( el , modifiers , { target : el } , getValue ( ) ) ) ) ;
2024-03-10 11:28:50 +01:00
} ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => removeResetListener ( ) ) ;
2024-03-10 11:28:50 +01:00
}
el . _x _model = {
get ( ) {
return getValue ( ) ;
} ,
set ( value ) {
setValue ( value ) ;
}
} ;
el . _x _forceModelUpdate = ( value ) => {
if ( value === void 0 && typeof expression === "string" && expression . match ( /\./ ) )
value = "" ;
window . fromModel = true ;
mutateDom ( ( ) => bind ( el , "value" , value ) ) ;
delete window . fromModel ;
} ;
effect3 ( ( ) => {
let value = getValue ( ) ;
if ( modifiers . includes ( "unintrusive" ) && document . activeElement . isSameNode ( el ) )
return ;
el . _x _forceModelUpdate ( value ) ;
} ) ;
} ) ;
function getInputValue ( el , modifiers , event , currentValue ) {
return mutateDom ( ( ) => {
if ( event instanceof CustomEvent && event . detail !== void 0 )
return event . detail !== null && event . detail !== void 0 ? event . detail : event . target . value ;
else if ( el . type === "checkbox" ) {
if ( Array . isArray ( currentValue ) ) {
let newValue = null ;
if ( modifiers . includes ( "number" ) ) {
newValue = safeParseNumber ( event . target . value ) ;
} else if ( modifiers . includes ( "boolean" ) ) {
newValue = safeParseBoolean ( event . target . value ) ;
} else {
newValue = event . target . value ;
}
2024-08-27 12:22:51 +02:00
return event . target . checked ? currentValue . includes ( newValue ) ? currentValue : currentValue . concat ( [ newValue ] ) : currentValue . filter ( ( el2 ) => ! checkedAttrLooseCompare2 ( el2 , newValue ) ) ;
2024-03-10 11:28:50 +01:00
} else {
return event . target . checked ;
}
} else if ( el . tagName . toLowerCase ( ) === "select" && el . multiple ) {
if ( modifiers . includes ( "number" ) ) {
return Array . from ( event . target . selectedOptions ) . map ( ( option ) => {
let rawValue = option . value || option . text ;
return safeParseNumber ( rawValue ) ;
} ) ;
} else if ( modifiers . includes ( "boolean" ) ) {
return Array . from ( event . target . selectedOptions ) . map ( ( option ) => {
let rawValue = option . value || option . text ;
return safeParseBoolean ( rawValue ) ;
} ) ;
}
return Array . from ( event . target . selectedOptions ) . map ( ( option ) => {
return option . value || option . text ;
} ) ;
} else {
2024-08-27 12:22:51 +02:00
let newValue ;
if ( el . type === "radio" ) {
if ( event . target . checked ) {
newValue = event . target . value ;
} else {
newValue = currentValue ;
}
} else {
newValue = event . target . value ;
}
if ( modifiers . includes ( "number" ) ) {
return safeParseNumber ( newValue ) ;
} else if ( modifiers . includes ( "boolean" ) ) {
return safeParseBoolean ( newValue ) ;
} else if ( modifiers . includes ( "trim" ) ) {
return newValue . trim ( ) ;
} else {
return newValue ;
}
}
2024-03-10 11:28:50 +01:00
} ) ;
}
function safeParseNumber ( rawValue ) {
let number = rawValue ? parseFloat ( rawValue ) : null ;
return isNumeric2 ( number ) ? number : rawValue ;
}
function checkedAttrLooseCompare2 ( valueA , valueB ) {
return valueA == valueB ;
}
function isNumeric2 ( subject ) {
return ! Array . isArray ( subject ) && ! isNaN ( subject ) ;
}
function isGetterSetter ( value ) {
return value !== null && typeof value === "object" && typeof value . get === "function" && typeof value . set === "function" ;
}
directive ( "cloak" , ( el ) => queueMicrotask ( ( ) => mutateDom ( ( ) => el . removeAttribute ( prefix ( "cloak" ) ) ) ) ) ;
addInitSelector ( ( ) => ` [ ${ prefix ( "init" ) } ] ` ) ;
directive ( "init" , skipDuringClone ( ( el , { expression } , { evaluate : evaluate22 } ) => {
if ( typeof expression === "string" ) {
return ! ! expression . trim ( ) && evaluate22 ( expression , { } , false ) ;
}
return evaluate22 ( expression , { } , false ) ;
} ) ) ;
directive ( "text" , ( el , { expression } , { effect : effect3 , evaluateLater : evaluateLater2 } ) => {
let evaluate22 = evaluateLater2 ( expression ) ;
effect3 ( ( ) => {
evaluate22 ( ( value ) => {
mutateDom ( ( ) => {
el . textContent = value ;
} ) ;
} ) ;
} ) ;
} ) ;
directive ( "html" , ( el , { expression } , { effect : effect3 , evaluateLater : evaluateLater2 } ) => {
let evaluate22 = evaluateLater2 ( expression ) ;
effect3 ( ( ) => {
evaluate22 ( ( value ) => {
mutateDom ( ( ) => {
el . innerHTML = value ;
el . _x _ignoreSelf = true ;
initTree ( el ) ;
delete el . _x _ignoreSelf ;
} ) ;
} ) ;
} ) ;
} ) ;
mapAttributes ( startingWith ( ":" , into ( prefix ( "bind:" ) ) ) ) ;
2024-08-27 12:22:51 +02:00
var handler2 = ( el , { value , modifiers , expression , original } , { effect : effect3 , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
if ( ! value ) {
let bindingProviders = { } ;
injectBindingProviders ( bindingProviders ) ;
let getBindings = evaluateLater ( el , expression ) ;
getBindings ( ( bindings ) => {
applyBindingsObject ( el , bindings , original ) ;
} , { scope : bindingProviders } ) ;
return ;
}
if ( value === "key" )
return storeKeyForXFor ( el , expression ) ;
if ( el . _x _inlineBindings && el . _x _inlineBindings [ value ] && el . _x _inlineBindings [ value ] . extract ) {
return ;
}
let evaluate22 = evaluateLater ( el , expression ) ;
effect3 ( ( ) => evaluate22 ( ( result ) => {
if ( result === void 0 && typeof expression === "string" && expression . match ( /\./ ) ) {
result = "" ;
}
mutateDom ( ( ) => bind ( el , value , result , modifiers ) ) ;
} ) ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => {
el . _x _undoAddedClasses && el . _x _undoAddedClasses ( ) ;
el . _x _undoAddedStyles && el . _x _undoAddedStyles ( ) ;
} ) ;
2024-03-10 11:28:50 +01:00
} ;
handler2 . inline = ( el , { value , modifiers , expression } ) => {
if ( ! value )
return ;
if ( ! el . _x _inlineBindings )
el . _x _inlineBindings = { } ;
el . _x _inlineBindings [ value ] = { expression , extract : false } ;
} ;
directive ( "bind" , handler2 ) ;
function storeKeyForXFor ( el , expression ) {
el . _x _keyExpression = expression ;
}
addRootSelector ( ( ) => ` [ ${ prefix ( "data" ) } ] ` ) ;
2024-08-27 12:22:51 +02:00
directive ( "data" , ( el , { expression } , { cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
if ( shouldSkipRegisteringDataDuringClone ( el ) )
return ;
expression = expression === "" ? "{}" : expression ;
let magicContext = { } ;
injectMagics ( magicContext , el ) ;
let dataProviderContext = { } ;
injectDataProviders ( dataProviderContext , magicContext ) ;
let data2 = evaluate ( el , expression , { scope : dataProviderContext } ) ;
if ( data2 === void 0 || data2 === true )
data2 = { } ;
injectMagics ( data2 , el ) ;
let reactiveData = reactive ( data2 ) ;
2024-08-27 12:22:51 +02:00
initInterceptors ( reactiveData ) ;
2024-03-10 11:28:50 +01:00
let undo = addScopeToNode ( el , reactiveData ) ;
reactiveData [ "init" ] && evaluate ( el , reactiveData [ "init" ] ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => {
2024-03-10 11:28:50 +01:00
reactiveData [ "destroy" ] && evaluate ( el , reactiveData [ "destroy" ] ) ;
undo ( ) ;
} ) ;
} ) ;
interceptClone ( ( from , to ) => {
if ( from . _x _dataStack ) {
to . _x _dataStack = from . _x _dataStack ;
to . setAttribute ( "data-has-alpine-state" , true ) ;
}
} ) ;
function shouldSkipRegisteringDataDuringClone ( el ) {
if ( ! isCloning )
return false ;
if ( isCloningLegacy )
return true ;
return el . hasAttribute ( "data-has-alpine-state" ) ;
}
directive ( "show" , ( el , { modifiers , expression } , { effect : effect3 } ) => {
let evaluate22 = evaluateLater ( el , expression ) ;
if ( ! el . _x _doHide )
el . _x _doHide = ( ) => {
mutateDom ( ( ) => {
el . style . setProperty ( "display" , "none" , modifiers . includes ( "important" ) ? "important" : void 0 ) ;
} ) ;
} ;
if ( ! el . _x _doShow )
el . _x _doShow = ( ) => {
mutateDom ( ( ) => {
if ( el . style . length === 1 && el . style . display === "none" ) {
el . removeAttribute ( "style" ) ;
} else {
el . style . removeProperty ( "display" ) ;
}
} ) ;
} ;
let hide = ( ) => {
el . _x _doHide ( ) ;
el . _x _isShown = false ;
} ;
let show = ( ) => {
el . _x _doShow ( ) ;
el . _x _isShown = true ;
} ;
let clickAwayCompatibleShow = ( ) => setTimeout ( show ) ;
let toggle = once ( ( value ) => value ? show ( ) : hide ( ) , ( value ) => {
if ( typeof el . _x _toggleAndCascadeWithTransitions === "function" ) {
el . _x _toggleAndCascadeWithTransitions ( el , value , show , hide ) ;
} else {
value ? clickAwayCompatibleShow ( ) : hide ( ) ;
}
} ) ;
let oldValue ;
let firstTime = true ;
effect3 ( ( ) => evaluate22 ( ( value ) => {
if ( ! firstTime && value === oldValue )
return ;
if ( modifiers . includes ( "immediate" ) )
value ? clickAwayCompatibleShow ( ) : hide ( ) ;
toggle ( value ) ;
oldValue = value ;
firstTime = false ;
} ) ) ;
} ) ;
2024-08-27 12:22:51 +02:00
directive ( "for" , ( el , { expression } , { effect : effect3 , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let iteratorNames = parseForExpression ( expression ) ;
let evaluateItems = evaluateLater ( el , iteratorNames . items ) ;
let evaluateKey = evaluateLater ( el , el . _x _keyExpression || "index" ) ;
el . _x _prevKeys = [ ] ;
el . _x _lookup = { } ;
effect3 ( ( ) => loop ( el , iteratorNames , evaluateItems , evaluateKey ) ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => {
2024-03-10 11:28:50 +01:00
Object . values ( el . _x _lookup ) . forEach ( ( el2 ) => el2 . remove ( ) ) ;
delete el . _x _prevKeys ;
delete el . _x _lookup ;
} ) ;
} ) ;
function loop ( el , iteratorNames , evaluateItems , evaluateKey ) {
let isObject22 = ( i ) => typeof i === "object" && ! Array . isArray ( i ) ;
let templateEl = el ;
evaluateItems ( ( items ) => {
if ( isNumeric3 ( items ) && items >= 0 ) {
items = Array . from ( Array ( items ) . keys ( ) , ( i ) => i + 1 ) ;
}
if ( items === void 0 )
items = [ ] ;
let lookup = el . _x _lookup ;
let prevKeys = el . _x _prevKeys ;
let scopes = [ ] ;
let keys = [ ] ;
if ( isObject22 ( items ) ) {
items = Object . entries ( items ) . map ( ( [ key , value ] ) => {
let scope2 = getIterationScopeVariables ( iteratorNames , value , key , items ) ;
evaluateKey ( ( value2 ) => {
if ( keys . includes ( value2 ) )
warn ( "Duplicate key on x-for" , el ) ;
keys . push ( value2 ) ;
} , { scope : { index : key , ... scope2 } } ) ;
scopes . push ( scope2 ) ;
} ) ;
} else {
for ( let i = 0 ; i < items . length ; i ++ ) {
let scope2 = getIterationScopeVariables ( iteratorNames , items [ i ] , i , items ) ;
evaluateKey ( ( value ) => {
if ( keys . includes ( value ) )
warn ( "Duplicate key on x-for" , el ) ;
keys . push ( value ) ;
} , { scope : { index : i , ... scope2 } } ) ;
scopes . push ( scope2 ) ;
}
}
let adds = [ ] ;
let moves = [ ] ;
let removes = [ ] ;
let sames = [ ] ;
for ( let i = 0 ; i < prevKeys . length ; i ++ ) {
let key = prevKeys [ i ] ;
if ( keys . indexOf ( key ) === - 1 )
removes . push ( key ) ;
}
prevKeys = prevKeys . filter ( ( key ) => ! removes . includes ( key ) ) ;
let lastKey = "template" ;
for ( let i = 0 ; i < keys . length ; i ++ ) {
let key = keys [ i ] ;
let prevIndex = prevKeys . indexOf ( key ) ;
if ( prevIndex === - 1 ) {
prevKeys . splice ( i , 0 , key ) ;
adds . push ( [ lastKey , i ] ) ;
} else if ( prevIndex !== i ) {
let keyInSpot = prevKeys . splice ( i , 1 ) [ 0 ] ;
let keyForSpot = prevKeys . splice ( prevIndex - 1 , 1 ) [ 0 ] ;
prevKeys . splice ( i , 0 , keyForSpot ) ;
prevKeys . splice ( prevIndex , 0 , keyInSpot ) ;
moves . push ( [ keyInSpot , keyForSpot ] ) ;
} else {
sames . push ( key ) ;
}
lastKey = key ;
}
for ( let i = 0 ; i < removes . length ; i ++ ) {
let key = removes [ i ] ;
if ( ! ! lookup [ key ] . _x _effects ) {
lookup [ key ] . _x _effects . forEach ( dequeueJob ) ;
}
lookup [ key ] . remove ( ) ;
lookup [ key ] = null ;
delete lookup [ key ] ;
}
for ( let i = 0 ; i < moves . length ; i ++ ) {
let [ keyInSpot , keyForSpot ] = moves [ i ] ;
let elInSpot = lookup [ keyInSpot ] ;
let elForSpot = lookup [ keyForSpot ] ;
let marker = document . createElement ( "div" ) ;
mutateDom ( ( ) => {
if ( ! elForSpot )
warn ( ` x-for ":key" is undefined or invalid ` , templateEl , keyForSpot , lookup ) ;
elForSpot . after ( marker ) ;
elInSpot . after ( elForSpot ) ;
elForSpot . _x _currentIfEl && elForSpot . after ( elForSpot . _x _currentIfEl ) ;
marker . before ( elInSpot ) ;
elInSpot . _x _currentIfEl && elInSpot . after ( elInSpot . _x _currentIfEl ) ;
marker . remove ( ) ;
} ) ;
elForSpot . _x _refreshXForScope ( scopes [ keys . indexOf ( keyForSpot ) ] ) ;
}
for ( let i = 0 ; i < adds . length ; i ++ ) {
let [ lastKey2 , index ] = adds [ i ] ;
let lastEl = lastKey2 === "template" ? templateEl : lookup [ lastKey2 ] ;
if ( lastEl . _x _currentIfEl )
lastEl = lastEl . _x _currentIfEl ;
let scope2 = scopes [ index ] ;
let key = keys [ index ] ;
let clone2 = document . importNode ( templateEl . content , true ) . firstElementChild ;
let reactiveScope = reactive ( scope2 ) ;
addScopeToNode ( clone2 , reactiveScope , templateEl ) ;
clone2 . _x _refreshXForScope = ( newScope ) => {
Object . entries ( newScope ) . forEach ( ( [ key2 , value ] ) => {
reactiveScope [ key2 ] = value ;
} ) ;
} ;
mutateDom ( ( ) => {
lastEl . after ( clone2 ) ;
skipDuringClone ( ( ) => initTree ( clone2 ) ) ( ) ;
} ) ;
if ( typeof key === "object" ) {
warn ( "x-for key cannot be an object, it must be a string or an integer" , templateEl ) ;
}
lookup [ key ] = clone2 ;
}
for ( let i = 0 ; i < sames . length ; i ++ ) {
lookup [ sames [ i ] ] . _x _refreshXForScope ( scopes [ keys . indexOf ( sames [ i ] ) ] ) ;
}
templateEl . _x _prevKeys = keys ;
} ) ;
}
function parseForExpression ( expression ) {
let forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/ ;
let stripParensRE = /^\s*\(|\)\s*$/g ;
let forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/ ;
let inMatch = expression . match ( forAliasRE ) ;
if ( ! inMatch )
return ;
let res = { } ;
res . items = inMatch [ 2 ] . trim ( ) ;
let item = inMatch [ 1 ] . replace ( stripParensRE , "" ) . trim ( ) ;
let iteratorMatch = item . match ( forIteratorRE ) ;
if ( iteratorMatch ) {
res . item = item . replace ( forIteratorRE , "" ) . trim ( ) ;
res . index = iteratorMatch [ 1 ] . trim ( ) ;
if ( iteratorMatch [ 2 ] ) {
res . collection = iteratorMatch [ 2 ] . trim ( ) ;
}
} else {
res . item = item ;
}
return res ;
}
function getIterationScopeVariables ( iteratorNames , item , index , items ) {
let scopeVariables = { } ;
if ( /^\[.*\]$/ . test ( iteratorNames . item ) && Array . isArray ( item ) ) {
let names = iteratorNames . item . replace ( "[" , "" ) . replace ( "]" , "" ) . split ( "," ) . map ( ( i ) => i . trim ( ) ) ;
names . forEach ( ( name , i ) => {
scopeVariables [ name ] = item [ i ] ;
} ) ;
} else if ( /^\{.*\}$/ . test ( iteratorNames . item ) && ! Array . isArray ( item ) && typeof item === "object" ) {
let names = iteratorNames . item . replace ( "{" , "" ) . replace ( "}" , "" ) . split ( "," ) . map ( ( i ) => i . trim ( ) ) ;
names . forEach ( ( name ) => {
scopeVariables [ name ] = item [ name ] ;
} ) ;
} else {
scopeVariables [ iteratorNames . item ] = item ;
}
if ( iteratorNames . index )
scopeVariables [ iteratorNames . index ] = index ;
if ( iteratorNames . collection )
scopeVariables [ iteratorNames . collection ] = items ;
return scopeVariables ;
}
function isNumeric3 ( subject ) {
return ! Array . isArray ( subject ) && ! isNaN ( subject ) ;
}
function handler3 ( ) {
}
2024-08-27 12:22:51 +02:00
handler3 . inline = ( el , { expression } , { cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let root = closestRoot ( el ) ;
if ( ! root . _x _refs )
root . _x _refs = { } ;
root . _x _refs [ expression ] = el ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => delete root . _x _refs [ expression ] ) ;
2024-03-10 11:28:50 +01:00
} ;
directive ( "ref" , handler3 ) ;
2024-08-27 12:22:51 +02:00
directive ( "if" , ( el , { expression } , { effect : effect3 , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
if ( el . tagName . toLowerCase ( ) !== "template" )
warn ( "x-if can only be used on a <template> tag" , el ) ;
let evaluate22 = evaluateLater ( el , expression ) ;
let show = ( ) => {
if ( el . _x _currentIfEl )
return el . _x _currentIfEl ;
let clone2 = el . content . cloneNode ( true ) . firstElementChild ;
addScopeToNode ( clone2 , { } , el ) ;
mutateDom ( ( ) => {
el . after ( clone2 ) ;
skipDuringClone ( ( ) => initTree ( clone2 ) ) ( ) ;
} ) ;
el . _x _currentIfEl = clone2 ;
el . _x _undoIf = ( ) => {
walk ( clone2 , ( node ) => {
if ( ! ! node . _x _effects ) {
node . _x _effects . forEach ( dequeueJob ) ;
}
} ) ;
clone2 . remove ( ) ;
delete el . _x _currentIfEl ;
} ;
return clone2 ;
} ;
let hide = ( ) => {
if ( ! el . _x _undoIf )
return ;
el . _x _undoIf ( ) ;
delete el . _x _undoIf ;
} ;
effect3 ( ( ) => evaluate22 ( ( value ) => {
value ? show ( ) : hide ( ) ;
} ) ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => el . _x _undoIf && el . _x _undoIf ( ) ) ;
2024-03-10 11:28:50 +01:00
} ) ;
directive ( "id" , ( el , { expression } , { evaluate : evaluate22 } ) => {
let names = evaluate22 ( expression ) ;
names . forEach ( ( name ) => setIdRoot ( el , name ) ) ;
} ) ;
interceptClone ( ( from , to ) => {
if ( from . _x _ids ) {
to . _x _ids = from . _x _ids ;
}
} ) ;
mapAttributes ( startingWith ( "@" , into ( prefix ( "on:" ) ) ) ) ;
2024-08-27 12:22:51 +02:00
directive ( "on" , skipDuringClone ( ( el , { value , modifiers , expression } , { cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let evaluate22 = expression ? evaluateLater ( el , expression ) : ( ) => {
} ;
if ( el . tagName . toLowerCase ( ) === "template" ) {
if ( ! el . _x _forwardEvents )
el . _x _forwardEvents = [ ] ;
if ( ! el . _x _forwardEvents . includes ( value ) )
el . _x _forwardEvents . push ( value ) ;
}
let removeListener = on ( el , value , modifiers , ( e ) => {
evaluate22 ( ( ) => {
} , { scope : { "$event" : e } , params : [ e ] } ) ;
} ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => removeListener ( ) ) ;
2024-03-10 11:28:50 +01:00
} ) ) ;
warnMissingPluginDirective ( "Collapse" , "collapse" , "collapse" ) ;
warnMissingPluginDirective ( "Intersect" , "intersect" , "intersect" ) ;
warnMissingPluginDirective ( "Focus" , "trap" , "focus" ) ;
warnMissingPluginDirective ( "Mask" , "mask" , "mask" ) ;
function warnMissingPluginDirective ( name , directiveName , slug ) {
directive ( directiveName , ( el ) => warn ( ` You can't use [x- ${ directiveName } ] without first installing the " ${ name } " plugin here: https://alpinejs.dev/plugins/ ${ slug } ` , el ) ) ;
}
alpine _default . setEvaluator ( normalEvaluator ) ;
alpine _default . setReactivityEngine ( { reactive : reactive2 , effect : effect2 , release : stop , raw : toRaw } ) ;
var src _default = alpine _default ;
var module _default = src _default ;
// js/features/supportEntangle.js
2024-08-27 12:22:51 +02:00
function generateEntangleFunction ( component , cleanup2 ) {
if ( ! cleanup2 )
cleanup2 = ( ) => {
2024-03-10 11:28:50 +01:00
} ;
return ( name , live = false ) => {
let isLive = live ;
let livewireProperty = name ;
let livewireComponent = component . $wire ;
let livewirePropertyValue = livewireComponent . get ( livewireProperty ) ;
let interceptor2 = module _default . interceptor ( ( initialValue , getter , setter , path , key ) => {
if ( typeof livewirePropertyValue === "undefined" ) {
console . error ( ` Livewire Entangle Error: Livewire property [' ${ livewireProperty } '] cannot be found on component: [' ${ component . name } '] ` ) ;
return ;
}
let release2 = module _default . entangle ( {
get ( ) {
return livewireComponent . get ( name ) ;
} ,
set ( value ) {
livewireComponent . set ( name , value , isLive ) ;
}
} , {
get ( ) {
return getter ( ) ;
} ,
set ( value ) {
setter ( value ) ;
}
} ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => release2 ( ) ) ;
2024-03-10 11:28:50 +01:00
return cloneIfObject2 ( livewireComponent . get ( name ) ) ;
} , ( obj ) => {
Object . defineProperty ( obj , "live" , {
get ( ) {
isLive = true ;
return obj ;
}
} ) ;
} ) ;
return interceptor2 ( livewirePropertyValue ) ;
} ;
}
function cloneIfObject2 ( value ) {
return typeof value === "object" ? JSON . parse ( JSON . stringify ( value ) ) : value ;
}
// js/hooks.js
var listeners = [ ] ;
function on2 ( name , callback ) {
if ( ! listeners [ name ] )
listeners [ name ] = [ ] ;
listeners [ name ] . push ( callback ) ;
return ( ) => {
listeners [ name ] = listeners [ name ] . filter ( ( i ) => i !== callback ) ;
} ;
}
function trigger2 ( name , ... params ) {
let callbacks = listeners [ name ] || [ ] ;
let finishers = [ ] ;
for ( let i = 0 ; i < callbacks . length ; i ++ ) {
let finisher = callbacks [ i ] ( ... params ) ;
if ( isFunction ( finisher ) )
finishers . push ( finisher ) ;
}
return ( result ) => {
return runFinishers ( finishers , result ) ;
} ;
}
async function triggerAsync ( name , ... params ) {
let callbacks = listeners [ name ] || [ ] ;
let finishers = [ ] ;
for ( let i = 0 ; i < callbacks . length ; i ++ ) {
let finisher = await callbacks [ i ] ( ... params ) ;
if ( isFunction ( finisher ) )
finishers . push ( finisher ) ;
}
return ( result ) => {
return runFinishers ( finishers , result ) ;
} ;
}
function runFinishers ( finishers , result ) {
let latest = result ;
for ( let i = 0 ; i < finishers . length ; i ++ ) {
let iResult = finishers [ i ] ( latest ) ;
if ( iResult !== void 0 ) {
latest = iResult ;
}
}
return latest ;
}
// js/request/modal.js
function showHtmlModal ( html ) {
let page = document . createElement ( "html" ) ;
page . innerHTML = html ;
page . querySelectorAll ( "a" ) . forEach ( ( a ) => a . setAttribute ( "target" , "_top" ) ) ;
let modal = document . getElementById ( "livewire-error" ) ;
if ( typeof modal != "undefined" && modal != null ) {
modal . innerHTML = "" ;
} else {
modal = document . createElement ( "div" ) ;
modal . id = "livewire-error" ;
modal . style . position = "fixed" ;
modal . style . width = "100vw" ;
modal . style . height = "100vh" ;
modal . style . padding = "50px" ;
modal . style . backgroundColor = "rgba(0, 0, 0, .6)" ;
modal . style . zIndex = 2e5 ;
}
let iframe = document . createElement ( "iframe" ) ;
iframe . style . backgroundColor = "#17161A" ;
iframe . style . borderRadius = "5px" ;
iframe . style . width = "100%" ;
iframe . style . height = "100%" ;
modal . appendChild ( iframe ) ;
document . body . prepend ( modal ) ;
document . body . style . overflow = "hidden" ;
iframe . contentWindow . document . open ( ) ;
iframe . contentWindow . document . write ( page . outerHTML ) ;
iframe . contentWindow . document . close ( ) ;
modal . addEventListener ( "click" , ( ) => hideHtmlModal ( modal ) ) ;
modal . setAttribute ( "tabindex" , 0 ) ;
modal . addEventListener ( "keydown" , ( e ) => {
if ( e . key === "Escape" )
hideHtmlModal ( modal ) ;
} ) ;
modal . focus ( ) ;
}
function hideHtmlModal ( modal ) {
modal . outerHTML = "" ;
document . body . style . overflow = "visible" ;
}
// js/request/pool.js
var RequestPool = class {
constructor ( ) {
this . commits = /* @__PURE__ */ new Set ( ) ;
}
add ( commit ) {
this . commits . add ( commit ) ;
}
delete ( commit ) {
this . commits . delete ( commit ) ;
}
hasCommitFor ( component ) {
return ! ! this . findCommitByComponent ( component ) ;
}
findCommitByComponent ( component ) {
for ( let [ idx , commit ] of this . commits . entries ( ) ) {
if ( commit . component === component )
return commit ;
}
}
shouldHoldCommit ( commit ) {
return ! commit . isolate ;
}
empty ( ) {
return this . commits . size === 0 ;
}
async send ( ) {
this . prepare ( ) ;
await sendRequest ( this ) ;
}
prepare ( ) {
this . commits . forEach ( ( i ) => i . prepare ( ) ) ;
}
payload ( ) {
let commitPayloads = [ ] ;
let successReceivers = [ ] ;
let failureReceivers = [ ] ;
this . commits . forEach ( ( commit ) => {
let [ payload , succeed2 , fail2 ] = commit . toRequestPayload ( ) ;
commitPayloads . push ( payload ) ;
successReceivers . push ( succeed2 ) ;
failureReceivers . push ( fail2 ) ;
} ) ;
let succeed = ( components2 ) => successReceivers . forEach ( ( receiver ) => receiver ( components2 . shift ( ) ) ) ;
let fail = ( ) => failureReceivers . forEach ( ( receiver ) => receiver ( ) ) ;
return [ commitPayloads , succeed , fail ] ;
}
} ;
// js/request/commit.js
var Commit = class {
constructor ( component ) {
this . component = component ;
this . isolate = false ;
this . calls = [ ] ;
this . receivers = [ ] ;
this . resolvers = [ ] ;
}
addResolver ( resolver ) {
this . resolvers . push ( resolver ) ;
}
addCall ( method , params , receiver ) {
this . calls . push ( {
path : "" ,
method ,
params ,
handleReturn ( value ) {
receiver ( value ) ;
}
} ) ;
}
prepare ( ) {
trigger2 ( "commit.prepare" , { component : this . component } ) ;
}
toRequestPayload ( ) {
let propertiesDiff = diff ( this . component . canonical , this . component . ephemeral ) ;
let updates = this . component . mergeQueuedUpdates ( propertiesDiff ) ;
let payload = {
snapshot : this . component . snapshotEncoded ,
updates ,
calls : this . calls . map ( ( i ) => ( {
path : i . path ,
method : i . method ,
params : i . params
} ) )
} ;
let succeedCallbacks = [ ] ;
let failCallbacks = [ ] ;
let respondCallbacks = [ ] ;
let succeed = ( fwd ) => succeedCallbacks . forEach ( ( i ) => i ( fwd ) ) ;
let fail = ( ) => failCallbacks . forEach ( ( i ) => i ( ) ) ;
let respond = ( ) => respondCallbacks . forEach ( ( i ) => i ( ) ) ;
let finishTarget = trigger2 ( "commit" , {
component : this . component ,
commit : payload ,
succeed : ( callback ) => {
succeedCallbacks . push ( callback ) ;
} ,
fail : ( callback ) => {
failCallbacks . push ( callback ) ;
} ,
respond : ( callback ) => {
respondCallbacks . push ( callback ) ;
}
} ) ;
let handleResponse = ( response ) => {
let { snapshot , effects } = response ;
respond ( ) ;
this . component . mergeNewSnapshot ( snapshot , effects , updates ) ;
this . component . processEffects ( this . component . effects ) ;
if ( effects [ "returns" ] ) {
let returns = effects [ "returns" ] ;
let returnHandlerStack = this . calls . map ( ( { handleReturn } ) => handleReturn ) ;
returnHandlerStack . forEach ( ( handleReturn , index ) => {
handleReturn ( returns [ index ] ) ;
} ) ;
}
let parsedSnapshot = JSON . parse ( snapshot ) ;
finishTarget ( { snapshot : parsedSnapshot , effects } ) ;
this . resolvers . forEach ( ( i ) => i ( ) ) ;
succeed ( response ) ;
} ;
let handleFailure = ( ) => {
respond ( ) ;
fail ( ) ;
} ;
return [ payload , handleResponse , handleFailure ] ;
}
} ;
// js/request/bus.js
var CommitBus = class {
constructor ( ) {
this . commits = /* @__PURE__ */ new Set ( ) ;
this . pools = /* @__PURE__ */ new Set ( ) ;
}
add ( component ) {
let commit = this . findCommitOr ( component , ( ) => {
let newCommit = new Commit ( component ) ;
this . commits . add ( newCommit ) ;
return newCommit ;
} ) ;
bufferPoolingForFiveMs ( commit , ( ) => {
let pool = this . findPoolWithComponent ( commit . component ) ;
if ( ! pool ) {
this . createAndSendNewPool ( ) ;
}
} ) ;
return commit ;
}
findCommitOr ( component , callback ) {
for ( let [ idx , commit ] of this . commits . entries ( ) ) {
if ( commit . component === component ) {
return commit ;
}
}
return callback ( ) ;
}
findPoolWithComponent ( component ) {
for ( let [ idx , pool ] of this . pools . entries ( ) ) {
if ( pool . hasCommitFor ( component ) )
return pool ;
}
}
createAndSendNewPool ( ) {
trigger2 ( "commit.pooling" , { commits : this . commits } ) ;
let pools = this . corraleCommitsIntoPools ( ) ;
this . commits . clear ( ) ;
trigger2 ( "commit.pooled" , { pools } ) ;
pools . forEach ( ( pool ) => {
if ( pool . empty ( ) )
return ;
this . pools . add ( pool ) ;
pool . send ( ) . then ( ( ) => {
this . pools . delete ( pool ) ;
this . sendAnyQueuedCommits ( ) ;
} ) ;
} ) ;
}
corraleCommitsIntoPools ( ) {
let pools = /* @__PURE__ */ new Set ( ) ;
for ( let [ idx , commit ] of this . commits . entries ( ) ) {
let hasFoundPool = false ;
pools . forEach ( ( pool ) => {
if ( pool . shouldHoldCommit ( commit ) ) {
pool . add ( commit ) ;
hasFoundPool = true ;
}
} ) ;
if ( ! hasFoundPool ) {
let newPool = new RequestPool ( ) ;
newPool . add ( commit ) ;
pools . add ( newPool ) ;
}
}
return pools ;
}
sendAnyQueuedCommits ( ) {
if ( this . commits . size > 0 ) {
this . createAndSendNewPool ( ) ;
}
}
} ;
var buffersByCommit = /* @__PURE__ */ new WeakMap ( ) ;
function bufferPoolingForFiveMs ( commit , callback ) {
if ( buffersByCommit . has ( commit ) )
return ;
buffersByCommit . set ( commit , setTimeout ( ( ) => {
callback ( ) ;
buffersByCommit . delete ( commit ) ;
} , 5 ) ) ;
}
// js/request/index.js
var commitBus = new CommitBus ( ) ;
async function requestCommit ( component ) {
let commit = commitBus . add ( component ) ;
let promise = new Promise ( ( resolve ) => {
commit . addResolver ( resolve ) ;
} ) ;
promise . commit = commit ;
return promise ;
}
async function requestCall ( component , method , params ) {
let commit = commitBus . add ( component ) ;
let promise = new Promise ( ( resolve ) => {
commit . addCall ( method , params , ( value ) => resolve ( value ) ) ;
} ) ;
promise . commit = commit ;
return promise ;
}
async function sendRequest ( pool ) {
let [ payload , handleSuccess , handleFailure ] = pool . payload ( ) ;
let options = {
method : "POST" ,
body : JSON . stringify ( {
_token : getCsrfToken ( ) ,
components : payload
} ) ,
headers : {
"Content-type" : "application/json" ,
"X-Livewire" : ""
}
} ;
let succeedCallbacks = [ ] ;
let failCallbacks = [ ] ;
let respondCallbacks = [ ] ;
let succeed = ( fwd ) => succeedCallbacks . forEach ( ( i ) => i ( fwd ) ) ;
let fail = ( fwd ) => failCallbacks . forEach ( ( i ) => i ( fwd ) ) ;
let respond = ( fwd ) => respondCallbacks . forEach ( ( i ) => i ( fwd ) ) ;
let finishProfile = trigger2 ( "request.profile" , options ) ;
let updateUri = getUpdateUri ( ) ;
trigger2 ( "request" , {
url : updateUri ,
options ,
payload : options . body ,
respond : ( i ) => respondCallbacks . push ( i ) ,
succeed : ( i ) => succeedCallbacks . push ( i ) ,
fail : ( i ) => failCallbacks . push ( i )
} ) ;
let response ;
try {
response = await fetch ( updateUri , options ) ;
} catch ( e ) {
finishProfile ( { content : "{}" , failed : true } ) ;
handleFailure ( ) ;
fail ( {
status : 503 ,
content : null ,
preventDefault : ( ) => {
}
} ) ;
return ;
}
let mutableObject = {
status : response . status ,
response
} ;
respond ( mutableObject ) ;
response = mutableObject . response ;
let content = await response . text ( ) ;
if ( ! response . ok ) {
finishProfile ( { content : "{}" , failed : true } ) ;
let preventDefault = false ;
handleFailure ( ) ;
fail ( {
status : response . status ,
content ,
preventDefault : ( ) => preventDefault = true
} ) ;
if ( preventDefault )
return ;
if ( response . status === 419 ) {
handlePageExpiry ( ) ;
}
return showFailureModal ( content ) ;
}
if ( response . redirected ) {
window . location . href = response . url ;
}
if ( contentIsFromDump ( content ) ) {
let dump ;
[ dump , content ] = splitDumpFromContent ( content ) ;
showHtmlModal ( dump ) ;
finishProfile ( { content : "{}" , failed : true } ) ;
} else {
finishProfile ( { content , failed : false } ) ;
}
let { components : components2 , assets } = JSON . parse ( content ) ;
await triggerAsync ( "payload.intercept" , { components : components2 , assets } ) ;
await handleSuccess ( components2 ) ;
succeed ( { status : response . status , json : JSON . parse ( content ) } ) ;
}
function handlePageExpiry ( ) {
confirm ( "This page has expired.\nWould you like to refresh the page?" ) && window . location . reload ( ) ;
}
function showFailureModal ( content ) {
let html = content ;
showHtmlModal ( html ) ;
}
// js/$wire.js
var properties = { } ;
var fallback ;
function wireProperty ( name , callback , component = null ) {
properties [ name ] = callback ;
}
function wireFallback ( callback ) {
fallback = callback ;
}
var aliases = {
"on" : "$on" ,
"el" : "$el" ,
"id" : "$id" ,
"get" : "$get" ,
"set" : "$set" ,
"call" : "$call" ,
"commit" : "$commit" ,
"watch" : "$watch" ,
"entangle" : "$entangle" ,
"dispatch" : "$dispatch" ,
"dispatchTo" : "$dispatchTo" ,
"dispatchSelf" : "$dispatchSelf" ,
"upload" : "$upload" ,
"uploadMultiple" : "$uploadMultiple" ,
"removeUpload" : "$removeUpload" ,
"cancelUpload" : "$cancelUpload"
} ;
function generateWireObject ( component , state ) {
return new Proxy ( { } , {
get ( target , property ) {
if ( property === "__instance" )
return component ;
if ( property in aliases ) {
return getProperty ( component , aliases [ property ] ) ;
} else if ( property in properties ) {
return getProperty ( component , property ) ;
} else if ( property in state ) {
return state [ property ] ;
} else if ( ! [ "then" ] . includes ( property ) ) {
return getFallback ( component ) ( property ) ;
}
} ,
set ( target , property , value ) {
if ( property in state ) {
state [ property ] = value ;
}
return true ;
}
} ) ;
}
function getProperty ( component , name ) {
return properties [ name ] ( component ) ;
}
function getFallback ( component ) {
return fallback ( component ) ;
}
2024-08-27 12:22:51 +02:00
module _default . magic ( "wire" , ( el , { cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let component ;
return new Proxy ( { } , {
get ( target , property ) {
if ( ! component )
component = closestComponent ( el ) ;
if ( [ "$entangle" , "entangle" ] . includes ( property ) ) {
2024-08-27 12:22:51 +02:00
return generateEntangleFunction ( component , cleanup2 ) ;
2024-03-10 11:28:50 +01:00
}
return component . $wire [ property ] ;
} ,
set ( target , property , value ) {
if ( ! component )
component = closestComponent ( el ) ;
component . $wire [ property ] = value ;
return true ;
}
} ) ;
} ) ;
wireProperty ( "__instance" , ( component ) => component ) ;
wireProperty ( "$get" , ( component ) => ( property , reactive3 = true ) => dataGet ( reactive3 ? component . reactive : component . ephemeral , property ) ) ;
wireProperty ( "$el" , ( component ) => {
return component . el ;
} ) ;
wireProperty ( "$id" , ( component ) => {
return component . id ;
} ) ;
wireProperty ( "$set" , ( component ) => async ( property , value , live = true ) => {
dataSet ( component . reactive , property , value ) ;
if ( live ) {
component . queueUpdate ( property , value ) ;
return await requestCommit ( component ) ;
}
return Promise . resolve ( ) ;
} ) ;
wireProperty ( "$call" , ( component ) => async ( method , ... params ) => {
return await component . $wire [ method ] ( ... params ) ;
} ) ;
wireProperty ( "$entangle" , ( component ) => ( name , live = false ) => {
return generateEntangleFunction ( component ) ( name , live ) ;
} ) ;
wireProperty ( "$toggle" , ( component ) => ( name , live = true ) => {
return component . $wire . set ( name , ! component . $wire . get ( name ) , live ) ;
} ) ;
wireProperty ( "$watch" , ( component ) => ( path , callback ) => {
2024-08-27 12:22:51 +02:00
let getter = ( ) => {
return dataGet ( component . reactive , path ) ;
} ;
let unwatch = module _default . watch ( getter , callback ) ;
component . addCleanup ( unwatch ) ;
2024-03-10 11:28:50 +01:00
} ) ;
wireProperty ( "$refresh" , ( component ) => component . $wire . $commit ) ;
wireProperty ( "$commit" , ( component ) => async ( ) => await requestCommit ( component ) ) ;
2024-08-27 12:22:51 +02:00
wireProperty ( "$on" , ( component ) => ( ... params ) => listen2 ( component , ... params ) ) ;
2024-03-10 11:28:50 +01:00
wireProperty ( "$dispatch" , ( component ) => ( ... params ) => dispatch3 ( component , ... params ) ) ;
wireProperty ( "$dispatchSelf" , ( component ) => ( ... params ) => dispatchSelf ( component , ... params ) ) ;
wireProperty ( "$dispatchTo" , ( ) => ( ... params ) => dispatchTo ( ... params ) ) ;
wireProperty ( "$upload" , ( component ) => ( ... params ) => upload ( component , ... params ) ) ;
wireProperty ( "$uploadMultiple" , ( component ) => ( ... params ) => uploadMultiple ( component , ... params ) ) ;
wireProperty ( "$removeUpload" , ( component ) => ( ... params ) => removeUpload ( component , ... params ) ) ;
wireProperty ( "$cancelUpload" , ( component ) => ( ... params ) => cancelUpload ( component , ... params ) ) ;
var parentMemo = /* @__PURE__ */ new WeakMap ( ) ;
wireProperty ( "$parent" , ( component ) => {
if ( parentMemo . has ( component ) )
return parentMemo . get ( component ) . $wire ;
2024-08-27 12:22:51 +02:00
let parent = component . parent ;
2024-03-10 11:28:50 +01:00
parentMemo . set ( component , parent ) ;
return parent . $wire ;
} ) ;
var overriddenMethods = /* @__PURE__ */ new WeakMap ( ) ;
function overrideMethod ( component , method , callback ) {
if ( ! overriddenMethods . has ( component ) ) {
overriddenMethods . set ( component , { } ) ;
}
let obj = overriddenMethods . get ( component ) ;
obj [ method ] = callback ;
overriddenMethods . set ( component , obj ) ;
}
wireFallback ( ( component ) => ( property ) => async ( ... params ) => {
if ( params . length === 1 && params [ 0 ] instanceof Event ) {
params = [ ] ;
}
if ( overriddenMethods . has ( component ) ) {
let overrides = overriddenMethods . get ( component ) ;
if ( typeof overrides [ property ] === "function" ) {
return overrides [ property ] ( params ) ;
}
}
return await requestCall ( component , property , params ) ;
} ) ;
// js/component.js
var Component = class {
constructor ( el ) {
if ( el . _ _livewire )
throw "Component already initialized" ;
el . _ _livewire = this ;
this . el = el ;
this . id = el . getAttribute ( "wire:id" ) ;
this . _ _livewireId = this . id ;
this . snapshotEncoded = el . getAttribute ( "wire:snapshot" ) ;
this . snapshot = JSON . parse ( this . snapshotEncoded ) ;
if ( ! this . snapshot ) {
throw ` Snapshot missing on Livewire component with id: ` + this . id ;
}
this . name = this . snapshot . memo . name ;
this . effects = JSON . parse ( el . getAttribute ( "wire:effects" ) ) ;
this . originalEffects = deepClone ( this . effects ) ;
this . canonical = extractData ( deepClone ( this . snapshot . data ) ) ;
this . ephemeral = extractData ( deepClone ( this . snapshot . data ) ) ;
this . reactive = Alpine . reactive ( this . ephemeral ) ;
this . queuedUpdates = { } ;
this . $wire = generateWireObject ( this , this . reactive ) ;
this . cleanups = [ ] ;
this . processEffects ( this . effects ) ;
}
mergeNewSnapshot ( snapshotEncoded , effects , updates = { } ) {
let snapshot = JSON . parse ( snapshotEncoded ) ;
let oldCanonical = deepClone ( this . canonical ) ;
let updatedOldCanonical = this . applyUpdates ( oldCanonical , updates ) ;
let newCanonical = extractData ( deepClone ( snapshot . data ) ) ;
let dirty = diff ( updatedOldCanonical , newCanonical ) ;
this . snapshotEncoded = snapshotEncoded ;
this . snapshot = snapshot ;
this . effects = effects ;
this . canonical = extractData ( deepClone ( snapshot . data ) ) ;
let newData = extractData ( deepClone ( snapshot . data ) ) ;
Object . entries ( dirty ) . forEach ( ( [ key , value ] ) => {
let rootKey = key . split ( "." ) [ 0 ] ;
this . reactive [ rootKey ] = newData [ rootKey ] ;
} ) ;
return dirty ;
}
queueUpdate ( propertyName , value ) {
this . queuedUpdates [ propertyName ] = value ;
}
mergeQueuedUpdates ( diff2 ) {
Object . entries ( this . queuedUpdates ) . forEach ( ( [ updateKey , updateValue ] ) => {
Object . entries ( diff2 ) . forEach ( ( [ diffKey , diffValue ] ) => {
if ( diffKey . startsWith ( updateValue ) ) {
delete diff2 [ diffKey ] ;
}
} ) ;
diff2 [ updateKey ] = updateValue ;
} ) ;
this . queuedUpdates = [ ] ;
return diff2 ;
}
applyUpdates ( object , updates ) {
for ( let key in updates ) {
dataSet ( object , key , updates [ key ] ) ;
}
return object ;
}
replayUpdate ( snapshot , html ) {
let effects = { ... this . effects , html } ;
this . mergeNewSnapshot ( JSON . stringify ( snapshot ) , effects ) ;
this . processEffects ( { html } ) ;
}
processEffects ( effects ) {
trigger2 ( "effects" , this , effects ) ;
trigger2 ( "effect" , {
component : this ,
effects ,
cleanup : ( i ) => this . addCleanup ( i )
} ) ;
}
get children ( ) {
let meta = this . snapshot . memo ;
let childIds = Object . values ( meta . children ) . map ( ( i ) => i [ 1 ] ) ;
return childIds . map ( ( id ) => findComponent ( id ) ) ;
}
2024-08-27 12:22:51 +02:00
get parent ( ) {
return closestComponent ( this . el . parentElement ) ;
}
2024-03-10 11:28:50 +01:00
inscribeSnapshotAndEffectsOnElement ( ) {
let el = this . el ;
el . setAttribute ( "wire:snapshot" , this . snapshotEncoded ) ;
let effects = this . originalEffects . listeners ? { listeners : this . originalEffects . listeners } : { } ;
if ( this . originalEffects . url ) {
effects . url = this . originalEffects . url ;
}
2024-08-27 12:22:51 +02:00
if ( this . originalEffects . scripts ) {
effects . scripts = this . originalEffects . scripts ;
}
2024-03-10 11:28:50 +01:00
el . setAttribute ( "wire:effects" , JSON . stringify ( effects ) ) ;
}
2024-08-27 12:22:51 +02:00
addCleanup ( cleanup2 ) {
this . cleanups . push ( cleanup2 ) ;
2024-03-10 11:28:50 +01:00
}
cleanup ( ) {
delete this . el . _ _livewire ;
while ( this . cleanups . length > 0 ) {
this . cleanups . pop ( ) ( ) ;
}
}
} ;
// js/store.js
var components = { } ;
function initComponent ( el ) {
let component = new Component ( el ) ;
if ( components [ component . id ] )
throw "Component already registered" ;
2024-08-27 12:22:51 +02:00
let cleanup2 = ( i ) => component . addCleanup ( i ) ;
trigger2 ( "component.init" , { component , cleanup : cleanup2 } ) ;
2024-03-10 11:28:50 +01:00
components [ component . id ] = component ;
return component ;
}
function destroyComponent ( id ) {
let component = components [ id ] ;
if ( ! component )
return ;
component . cleanup ( ) ;
delete components [ id ] ;
}
function findComponent ( id ) {
let component = components [ id ] ;
if ( ! component )
throw "Component not found: " + id ;
return component ;
}
function closestComponent ( el , strict = true ) {
let closestRoot2 = Alpine . findClosest ( el , ( i ) => i . _ _livewire ) ;
if ( ! closestRoot2 ) {
if ( strict )
throw "Could not find Livewire component in DOM tree" ;
return ;
}
return closestRoot2 . _ _livewire ;
}
function componentsByName ( name ) {
return Object . values ( components ) . filter ( ( component ) => {
return name == component . name ;
} ) ;
}
function getByName ( name ) {
return componentsByName ( name ) . map ( ( i ) => i . $wire ) ;
}
function find ( id ) {
let component = components [ id ] ;
return component && component . $wire ;
}
function first ( ) {
return Object . values ( components ) [ 0 ] . $wire ;
}
function all ( ) {
return Object . values ( components ) ;
}
// js/events.js
function dispatch3 ( component , name , params ) {
dispatchEvent ( component . el , name , params ) ;
}
function dispatchGlobal ( name , params ) {
dispatchEvent ( window , name , params ) ;
}
function dispatchSelf ( component , name , params ) {
dispatchEvent ( component . el , name , params , false ) ;
}
function dispatchTo ( componentName , name , params ) {
let targets = componentsByName ( componentName ) ;
targets . forEach ( ( target ) => {
dispatchEvent ( target . el , name , params , false ) ;
} ) ;
}
2024-08-27 12:22:51 +02:00
function listen2 ( component , name , callback ) {
2024-03-10 11:28:50 +01:00
component . el . addEventListener ( name , ( e ) => {
callback ( e . detail ) ;
} ) ;
}
function on3 ( eventName , callback ) {
let handler4 = ( e ) => {
if ( ! e . _ _livewire )
return ;
callback ( e . detail ) ;
} ;
window . addEventListener ( eventName , handler4 ) ;
return ( ) => {
window . removeEventListener ( eventName , handler4 ) ;
} ;
}
function dispatchEvent ( target , name , params , bubbles = true ) {
let e = new CustomEvent ( name , { bubbles , detail : params } ) ;
e . _ _livewire = { name , params , receivedBy : [ ] } ;
target . dispatchEvent ( e ) ;
}
// js/directives.js
2024-08-27 12:22:51 +02:00
var customDirectiveNames = /* @__PURE__ */ new Set ( ) ;
2024-03-10 11:28:50 +01:00
function matchesForLivewireDirective ( attributeName ) {
return attributeName . match ( new RegExp ( "wire:" ) ) ;
}
function extractDirective ( el , name ) {
let [ value , ... modifiers ] = name . replace ( new RegExp ( "wire:" ) , "" ) . split ( "." ) ;
return new Directive ( value , modifiers , name , el ) ;
}
function directive2 ( name , callback ) {
2024-08-27 12:22:51 +02:00
if ( customDirectiveNames . has ( name ) )
return ;
customDirectiveNames . add ( name ) ;
on2 ( "directive.init" , ( { el , component , directive : directive3 , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
if ( directive3 . value === name ) {
callback ( {
el ,
directive : directive3 ,
component ,
2024-08-27 12:22:51 +02:00
$wire : component . $wire ,
cleanup : cleanup2
2024-03-10 11:28:50 +01:00
} ) ;
}
} ) ;
}
function getDirectives ( el ) {
return new DirectiveManager ( el ) ;
}
2024-08-27 12:22:51 +02:00
function customDirectiveHasBeenRegistered ( name ) {
return customDirectiveNames . has ( name ) ;
}
2024-03-10 11:28:50 +01:00
var DirectiveManager = class {
constructor ( el ) {
this . el = el ;
this . directives = this . extractTypeModifiersAndValue ( ) ;
}
all ( ) {
return this . directives ;
}
has ( value ) {
return this . directives . map ( ( directive3 ) => directive3 . value ) . includes ( value ) ;
}
missing ( value ) {
return ! this . has ( value ) ;
}
get ( value ) {
return this . directives . find ( ( directive3 ) => directive3 . value === value ) ;
}
extractTypeModifiersAndValue ( ) {
return Array . from ( this . el . getAttributeNames ( ) . filter ( ( name ) => matchesForLivewireDirective ( name ) ) . map ( ( name ) => extractDirective ( this . el , name ) ) ) ;
}
} ;
var Directive = class {
constructor ( value , modifiers , rawName , el ) {
this . rawName = this . raw = rawName ;
this . el = el ;
this . eventContext ;
this . value = value ;
this . modifiers = modifiers ;
this . expression = this . el . getAttribute ( this . rawName ) ;
}
get method ( ) {
const { method } = this . parseOutMethodAndParams ( this . expression ) ;
return method ;
}
get params ( ) {
const { params } = this . parseOutMethodAndParams ( this . expression ) ;
return params ;
}
parseOutMethodAndParams ( rawMethod ) {
let method = rawMethod ;
let params = [ ] ;
const methodAndParamString = method . match ( / ( . * ? ) \ ( ( . * ) \ ) / s ) ;
if ( methodAndParamString ) {
method = methodAndParamString [ 1 ] ;
let func = new Function ( "$event" , ` return (function () {
for ( var l = arguments . length , p = new Array ( l ) , k = 0 ; k < l ; k ++ ) {
p [ k ] = arguments [ k ] ;
}
return [ ] . concat ( p ) ;
} ) ( $ { methodAndParamString [ 2 ] } ) ` );
params = func ( this . eventContext ) ;
}
return { method , params } ;
}
} ;
2024-08-27 12:22:51 +02:00
// node_modules/@alpinejs/collapse/dist/module.esm.js
2024-03-10 11:28:50 +01:00
function src _default2 ( Alpine3 ) {
Alpine3 . directive ( "collapse" , collapse ) ;
collapse . inline = ( el , { modifiers } ) => {
if ( ! modifiers . includes ( "min" ) )
return ;
el . _x _doShow = ( ) => {
} ;
el . _x _doHide = ( ) => {
} ;
} ;
function collapse ( el , { modifiers } ) {
let duration = modifierValue2 ( modifiers , "duration" , 250 ) / 1e3 ;
let floor2 = modifierValue2 ( modifiers , "min" , 0 ) ;
let fullyHide = ! modifiers . includes ( "min" ) ;
if ( ! el . _x _isShown )
el . style . height = ` ${ floor2 } px ` ;
if ( ! el . _x _isShown && fullyHide )
el . hidden = true ;
if ( ! el . _x _isShown )
el . style . overflow = "hidden" ;
let setFunction = ( el2 , styles ) => {
let revertFunction = Alpine3 . setStyles ( el2 , styles ) ;
return styles . height ? ( ) => {
} : revertFunction ;
} ;
let transitionStyles = {
transitionProperty : "height" ,
transitionDuration : ` ${ duration } s ` ,
transitionTimingFunction : "cubic-bezier(0.4, 0.0, 0.2, 1)"
} ;
el . _x _transition = {
in ( before = ( ) => {
} , after = ( ) => {
} ) {
if ( fullyHide )
el . hidden = false ;
if ( fullyHide )
el . style . display = null ;
let current = el . getBoundingClientRect ( ) . height ;
el . style . height = "auto" ;
let full = el . getBoundingClientRect ( ) . height ;
if ( current === full ) {
current = floor2 ;
}
Alpine3 . transition ( el , Alpine3 . setStyles , {
during : transitionStyles ,
start : { height : current + "px" } ,
end : { height : full + "px" }
} , ( ) => el . _x _isShown = true , ( ) => {
2024-08-27 12:22:51 +02:00
if ( Math . abs ( el . getBoundingClientRect ( ) . height - full ) < 1 ) {
2024-03-10 11:28:50 +01:00
el . style . overflow = null ;
}
} ) ;
} ,
out ( before = ( ) => {
} , after = ( ) => {
} ) {
let full = el . getBoundingClientRect ( ) . height ;
Alpine3 . transition ( el , setFunction , {
during : transitionStyles ,
start : { height : full + "px" } ,
end : { height : floor2 + "px" }
} , ( ) => el . style . overflow = "hidden" , ( ) => {
el . _x _isShown = false ;
if ( el . style . height == ` ${ floor2 } px ` && fullyHide ) {
el . style . display = "none" ;
el . hidden = true ;
}
} ) ;
}
} ;
}
}
function modifierValue2 ( modifiers , key , fallback2 ) {
if ( modifiers . indexOf ( key ) === - 1 )
return fallback2 ;
const rawValue = modifiers [ modifiers . indexOf ( key ) + 1 ] ;
if ( ! rawValue )
return fallback2 ;
if ( key === "duration" ) {
let match = rawValue . match ( /([0-9]+)ms/ ) ;
if ( match )
return match [ 1 ] ;
}
if ( key === "min" ) {
let match = rawValue . match ( /([0-9]+)px/ ) ;
if ( match )
return match [ 1 ] ;
}
return rawValue ;
}
var module _default2 = src _default2 ;
2024-08-27 12:22:51 +02:00
// node_modules/@alpinejs/focus/dist/module.esm.js
2024-03-10 11:28:50 +01:00
var candidateSelectors = [ "input" , "select" , "textarea" , "a[href]" , "button" , "[tabindex]:not(slot)" , "audio[controls]" , "video[controls]" , '[contenteditable]:not([contenteditable="false"])' , "details>summary:first-of-type" , "details" ] ;
var candidateSelector = /* @__PURE__ */ candidateSelectors . join ( "," ) ;
var NoElement = typeof Element === "undefined" ;
var matches = NoElement ? function ( ) {
} : Element . prototype . matches || Element . prototype . msMatchesSelector || Element . prototype . webkitMatchesSelector ;
var getRootNode = ! NoElement && Element . prototype . getRootNode ? function ( element ) {
return element . getRootNode ( ) ;
} : function ( element ) {
return element . ownerDocument ;
} ;
var getCandidates = function getCandidates2 ( el , includeContainer , filter ) {
var candidates = Array . prototype . slice . apply ( el . querySelectorAll ( candidateSelector ) ) ;
if ( includeContainer && matches . call ( el , candidateSelector ) ) {
candidates . unshift ( el ) ;
}
candidates = candidates . filter ( filter ) ;
return candidates ;
} ;
var getCandidatesIteratively = function getCandidatesIteratively2 ( elements , includeContainer , options ) {
var candidates = [ ] ;
var elementsToCheck = Array . from ( elements ) ;
while ( elementsToCheck . length ) {
var element = elementsToCheck . shift ( ) ;
if ( element . tagName === "SLOT" ) {
var assigned = element . assignedElements ( ) ;
var content = assigned . length ? assigned : element . children ;
var nestedCandidates = getCandidatesIteratively2 ( content , true , options ) ;
if ( options . flatten ) {
candidates . push . apply ( candidates , nestedCandidates ) ;
} else {
candidates . push ( {
scope : element ,
candidates : nestedCandidates
} ) ;
}
} else {
var validCandidate = matches . call ( element , candidateSelector ) ;
if ( validCandidate && options . filter ( element ) && ( includeContainer || ! elements . includes ( element ) ) ) {
candidates . push ( element ) ;
}
var shadowRoot = element . shadowRoot || typeof options . getShadowRoot === "function" && options . getShadowRoot ( element ) ;
var validShadowRoot = ! options . shadowRootFilter || options . shadowRootFilter ( element ) ;
if ( shadowRoot && validShadowRoot ) {
var _nestedCandidates = getCandidatesIteratively2 ( shadowRoot === true ? element . children : shadowRoot . children , true , options ) ;
if ( options . flatten ) {
candidates . push . apply ( candidates , _nestedCandidates ) ;
} else {
candidates . push ( {
scope : element ,
candidates : _nestedCandidates
} ) ;
}
} else {
elementsToCheck . unshift . apply ( elementsToCheck , element . children ) ;
}
}
}
return candidates ;
} ;
var getTabindex = function getTabindex2 ( node , isScope ) {
if ( node . tabIndex < 0 ) {
if ( ( isScope || /^(AUDIO|VIDEO|DETAILS)$/ . test ( node . tagName ) || node . isContentEditable ) && isNaN ( parseInt ( node . getAttribute ( "tabindex" ) , 10 ) ) ) {
return 0 ;
}
}
return node . tabIndex ;
} ;
var sortOrderedTabbables = function sortOrderedTabbables2 ( a , b ) {
return a . tabIndex === b . tabIndex ? a . documentOrder - b . documentOrder : a . tabIndex - b . tabIndex ;
} ;
var isInput = function isInput2 ( node ) {
return node . tagName === "INPUT" ;
} ;
var isHiddenInput = function isHiddenInput2 ( node ) {
return isInput ( node ) && node . type === "hidden" ;
} ;
var isDetailsWithSummary = function isDetailsWithSummary2 ( node ) {
var r = node . tagName === "DETAILS" && Array . prototype . slice . apply ( node . children ) . some ( function ( child ) {
return child . tagName === "SUMMARY" ;
} ) ;
return r ;
} ;
var getCheckedRadio = function getCheckedRadio2 ( nodes , form ) {
for ( var i = 0 ; i < nodes . length ; i ++ ) {
if ( nodes [ i ] . checked && nodes [ i ] . form === form ) {
return nodes [ i ] ;
}
}
} ;
var isTabbableRadio = function isTabbableRadio2 ( node ) {
if ( ! node . name ) {
return true ;
}
var radioScope = node . form || getRootNode ( node ) ;
var queryRadios = function queryRadios2 ( name ) {
return radioScope . querySelectorAll ( 'input[type="radio"][name="' + name + '"]' ) ;
} ;
var radioSet ;
if ( typeof window !== "undefined" && typeof window . CSS !== "undefined" && typeof window . CSS . escape === "function" ) {
radioSet = queryRadios ( window . CSS . escape ( node . name ) ) ;
} else {
try {
radioSet = queryRadios ( node . name ) ;
} catch ( err ) {
console . error ( "Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s" , err . message ) ;
return false ;
}
}
var checked = getCheckedRadio ( radioSet , node . form ) ;
return ! checked || checked === node ;
} ;
var isRadio = function isRadio2 ( node ) {
return isInput ( node ) && node . type === "radio" ;
} ;
var isNonTabbableRadio = function isNonTabbableRadio2 ( node ) {
return isRadio ( node ) && ! isTabbableRadio ( node ) ;
} ;
var isZeroArea = function isZeroArea2 ( node ) {
var _node$getBoundingClie = node . getBoundingClientRect ( ) , width = _node$getBoundingClie . width , height = _node$getBoundingClie . height ;
return width === 0 && height === 0 ;
} ;
var isHidden = function isHidden2 ( node , _ref ) {
var displayCheck = _ref . displayCheck , getShadowRoot = _ref . getShadowRoot ;
if ( getComputedStyle ( node ) . visibility === "hidden" ) {
return true ;
}
var isDirectSummary = matches . call ( node , "details>summary:first-of-type" ) ;
var nodeUnderDetails = isDirectSummary ? node . parentElement : node ;
if ( matches . call ( nodeUnderDetails , "details:not([open]) *" ) ) {
return true ;
}
var nodeRootHost = getRootNode ( node ) . host ;
var nodeIsAttached = ( nodeRootHost === null || nodeRootHost === void 0 ? void 0 : nodeRootHost . ownerDocument . contains ( nodeRootHost ) ) || node . ownerDocument . contains ( node ) ;
if ( ! displayCheck || displayCheck === "full" ) {
if ( typeof getShadowRoot === "function" ) {
var originalNode = node ;
while ( node ) {
var parentElement = node . parentElement ;
var rootNode = getRootNode ( node ) ;
if ( parentElement && ! parentElement . shadowRoot && getShadowRoot ( parentElement ) === true ) {
return isZeroArea ( node ) ;
} else if ( node . assignedSlot ) {
node = node . assignedSlot ;
} else if ( ! parentElement && rootNode !== node . ownerDocument ) {
node = rootNode . host ;
} else {
node = parentElement ;
}
}
node = originalNode ;
}
if ( nodeIsAttached ) {
return ! node . getClientRects ( ) . length ;
}
} else if ( displayCheck === "non-zero-area" ) {
return isZeroArea ( node ) ;
}
return false ;
} ;
var isDisabledFromFieldset = function isDisabledFromFieldset2 ( node ) {
if ( /^(INPUT|BUTTON|SELECT|TEXTAREA)$/ . test ( node . tagName ) ) {
var parentNode = node . parentElement ;
while ( parentNode ) {
if ( parentNode . tagName === "FIELDSET" && parentNode . disabled ) {
for ( var i = 0 ; i < parentNode . children . length ; i ++ ) {
var child = parentNode . children . item ( i ) ;
if ( child . tagName === "LEGEND" ) {
return matches . call ( parentNode , "fieldset[disabled] *" ) ? true : ! child . contains ( node ) ;
}
}
return true ;
}
parentNode = parentNode . parentElement ;
}
}
return false ;
} ;
var isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable2 ( options , node ) {
if ( node . disabled || isHiddenInput ( node ) || isHidden ( node , options ) || isDetailsWithSummary ( node ) || isDisabledFromFieldset ( node ) ) {
return false ;
}
return true ;
} ;
var isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable2 ( options , node ) {
if ( isNonTabbableRadio ( node ) || getTabindex ( node ) < 0 || ! isNodeMatchingSelectorFocusable ( options , node ) ) {
return false ;
}
return true ;
} ;
var isValidShadowRootTabbable = function isValidShadowRootTabbable2 ( shadowHostNode ) {
var tabIndex = parseInt ( shadowHostNode . getAttribute ( "tabindex" ) , 10 ) ;
if ( isNaN ( tabIndex ) || tabIndex >= 0 ) {
return true ;
}
return false ;
} ;
var sortByOrder = function sortByOrder2 ( candidates ) {
var regularTabbables = [ ] ;
var orderedTabbables = [ ] ;
candidates . forEach ( function ( item , i ) {
var isScope = ! ! item . scope ;
var element = isScope ? item . scope : item ;
var candidateTabindex = getTabindex ( element , isScope ) ;
var elements = isScope ? sortByOrder2 ( item . candidates ) : element ;
if ( candidateTabindex === 0 ) {
isScope ? regularTabbables . push . apply ( regularTabbables , elements ) : regularTabbables . push ( element ) ;
} else {
orderedTabbables . push ( {
documentOrder : i ,
tabIndex : candidateTabindex ,
item ,
isScope ,
content : elements
} ) ;
}
} ) ;
return orderedTabbables . sort ( sortOrderedTabbables ) . reduce ( function ( acc , sortable ) {
sortable . isScope ? acc . push . apply ( acc , sortable . content ) : acc . push ( sortable . content ) ;
return acc ;
} , [ ] ) . concat ( regularTabbables ) ;
} ;
var tabbable = function tabbable2 ( el , options ) {
options = options || { } ;
var candidates ;
if ( options . getShadowRoot ) {
candidates = getCandidatesIteratively ( [ el ] , options . includeContainer , {
filter : isNodeMatchingSelectorTabbable . bind ( null , options ) ,
flatten : false ,
getShadowRoot : options . getShadowRoot ,
shadowRootFilter : isValidShadowRootTabbable
} ) ;
} else {
candidates = getCandidates ( el , options . includeContainer , isNodeMatchingSelectorTabbable . bind ( null , options ) ) ;
}
return sortByOrder ( candidates ) ;
} ;
var focusable = function focusable2 ( el , options ) {
options = options || { } ;
var candidates ;
if ( options . getShadowRoot ) {
candidates = getCandidatesIteratively ( [ el ] , options . includeContainer , {
filter : isNodeMatchingSelectorFocusable . bind ( null , options ) ,
flatten : true ,
getShadowRoot : options . getShadowRoot
} ) ;
} else {
candidates = getCandidates ( el , options . includeContainer , isNodeMatchingSelectorFocusable . bind ( null , options ) ) ;
}
return candidates ;
} ;
var isTabbable = function isTabbable2 ( node , options ) {
options = options || { } ;
if ( ! node ) {
throw new Error ( "No node provided" ) ;
}
if ( matches . call ( node , candidateSelector ) === false ) {
return false ;
}
return isNodeMatchingSelectorTabbable ( options , node ) ;
} ;
var focusableCandidateSelector = /* @__PURE__ */ candidateSelectors . concat ( "iframe" ) . join ( "," ) ;
var isFocusable = function isFocusable2 ( node , options ) {
options = options || { } ;
if ( ! node ) {
throw new Error ( "No node provided" ) ;
}
if ( matches . call ( node , focusableCandidateSelector ) === false ) {
return false ;
}
return isNodeMatchingSelectorFocusable ( options , node ) ;
} ;
function ownKeys2 ( object , enumerableOnly ) {
var keys = Object . keys ( object ) ;
if ( Object . getOwnPropertySymbols ) {
var symbols = Object . getOwnPropertySymbols ( object ) ;
enumerableOnly && ( symbols = symbols . filter ( function ( sym ) {
return Object . getOwnPropertyDescriptor ( object , sym ) . enumerable ;
} ) ) , keys . push . apply ( keys , symbols ) ;
}
return keys ;
}
function _objectSpread2 ( target ) {
for ( var i = 1 ; i < arguments . length ; i ++ ) {
var source = null != arguments [ i ] ? arguments [ i ] : { } ;
i % 2 ? ownKeys2 ( Object ( source ) , true ) . forEach ( function ( key ) {
_defineProperty ( target , key , source [ key ] ) ;
} ) : Object . getOwnPropertyDescriptors ? Object . defineProperties ( target , Object . getOwnPropertyDescriptors ( source ) ) : ownKeys2 ( Object ( source ) ) . forEach ( function ( key ) {
Object . defineProperty ( target , key , Object . getOwnPropertyDescriptor ( source , key ) ) ;
} ) ;
}
return target ;
}
function _defineProperty ( obj , key , value ) {
if ( key in obj ) {
Object . defineProperty ( obj , key , {
value ,
enumerable : true ,
configurable : true ,
writable : true
} ) ;
} else {
obj [ key ] = value ;
}
return obj ;
}
var activeFocusTraps = function ( ) {
var trapQueue = [ ] ;
return {
activateTrap : function activateTrap ( trap ) {
if ( trapQueue . length > 0 ) {
var activeTrap = trapQueue [ trapQueue . length - 1 ] ;
if ( activeTrap !== trap ) {
activeTrap . pause ( ) ;
}
}
var trapIndex = trapQueue . indexOf ( trap ) ;
if ( trapIndex === - 1 ) {
trapQueue . push ( trap ) ;
} else {
trapQueue . splice ( trapIndex , 1 ) ;
trapQueue . push ( trap ) ;
}
} ,
deactivateTrap : function deactivateTrap ( trap ) {
var trapIndex = trapQueue . indexOf ( trap ) ;
if ( trapIndex !== - 1 ) {
trapQueue . splice ( trapIndex , 1 ) ;
}
if ( trapQueue . length > 0 ) {
trapQueue [ trapQueue . length - 1 ] . unpause ( ) ;
}
}
} ;
} ( ) ;
var isSelectableInput = function isSelectableInput2 ( node ) {
return node . tagName && node . tagName . toLowerCase ( ) === "input" && typeof node . select === "function" ;
} ;
var isEscapeEvent = function isEscapeEvent2 ( e ) {
return e . key === "Escape" || e . key === "Esc" || e . keyCode === 27 ;
} ;
var isTabEvent = function isTabEvent2 ( e ) {
return e . key === "Tab" || e . keyCode === 9 ;
} ;
var delay = function delay2 ( fn ) {
return setTimeout ( fn , 0 ) ;
} ;
var findIndex = function findIndex2 ( arr , fn ) {
var idx = - 1 ;
arr . every ( function ( value , i ) {
if ( fn ( value ) ) {
idx = i ;
return false ;
}
return true ;
} ) ;
return idx ;
} ;
var valueOrHandler = function valueOrHandler2 ( value ) {
for ( var _len = arguments . length , params = new Array ( _len > 1 ? _len - 1 : 0 ) , _key = 1 ; _key < _len ; _key ++ ) {
params [ _key - 1 ] = arguments [ _key ] ;
}
return typeof value === "function" ? value . apply ( void 0 , params ) : value ;
} ;
var getActualTarget = function getActualTarget2 ( event ) {
return event . target . shadowRoot && typeof event . composedPath === "function" ? event . composedPath ( ) [ 0 ] : event . target ;
} ;
var createFocusTrap = function createFocusTrap2 ( elements , userOptions ) {
var doc = ( userOptions === null || userOptions === void 0 ? void 0 : userOptions . document ) || document ;
var config = _objectSpread2 ( {
returnFocusOnDeactivate : true ,
escapeDeactivates : true ,
delayInitialFocus : true
} , userOptions ) ;
var state = {
containers : [ ] ,
containerGroups : [ ] ,
tabbableGroups : [ ] ,
nodeFocusedBeforeActivation : null ,
mostRecentlyFocusedNode : null ,
active : false ,
paused : false ,
delayInitialFocusTimer : void 0
} ;
var trap ;
var getOption = function getOption2 ( configOverrideOptions , optionName , configOptionName ) {
return configOverrideOptions && configOverrideOptions [ optionName ] !== void 0 ? configOverrideOptions [ optionName ] : config [ configOptionName || optionName ] ;
} ;
var findContainerIndex = function findContainerIndex2 ( element ) {
return state . containerGroups . findIndex ( function ( _ref ) {
var container = _ref . container , tabbableNodes = _ref . tabbableNodes ;
return container . contains ( element ) || tabbableNodes . find ( function ( node ) {
return node === element ;
} ) ;
} ) ;
} ;
var getNodeForOption = function getNodeForOption2 ( optionName ) {
var optionValue = config [ optionName ] ;
if ( typeof optionValue === "function" ) {
for ( var _len2 = arguments . length , params = new Array ( _len2 > 1 ? _len2 - 1 : 0 ) , _key2 = 1 ; _key2 < _len2 ; _key2 ++ ) {
params [ _key2 - 1 ] = arguments [ _key2 ] ;
}
optionValue = optionValue . apply ( void 0 , params ) ;
}
if ( optionValue === true ) {
optionValue = void 0 ;
}
if ( ! optionValue ) {
if ( optionValue === void 0 || optionValue === false ) {
return optionValue ;
}
throw new Error ( "`" . concat ( optionName , "` was specified but was not a node, or did not return a node" ) ) ;
}
var node = optionValue ;
if ( typeof optionValue === "string" ) {
node = doc . querySelector ( optionValue ) ;
if ( ! node ) {
throw new Error ( "`" . concat ( optionName , "` as selector refers to no known node" ) ) ;
}
}
return node ;
} ;
var getInitialFocusNode = function getInitialFocusNode2 ( ) {
var node = getNodeForOption ( "initialFocus" ) ;
if ( node === false ) {
return false ;
}
if ( node === void 0 ) {
if ( findContainerIndex ( doc . activeElement ) >= 0 ) {
node = doc . activeElement ;
} else {
var firstTabbableGroup = state . tabbableGroups [ 0 ] ;
var firstTabbableNode = firstTabbableGroup && firstTabbableGroup . firstTabbableNode ;
node = firstTabbableNode || getNodeForOption ( "fallbackFocus" ) ;
}
}
if ( ! node ) {
throw new Error ( "Your focus-trap needs to have at least one focusable element" ) ;
}
return node ;
} ;
var updateTabbableNodes = function updateTabbableNodes2 ( ) {
state . containerGroups = state . containers . map ( function ( container ) {
var tabbableNodes = tabbable ( container , config . tabbableOptions ) ;
var focusableNodes = focusable ( container , config . tabbableOptions ) ;
return {
container ,
tabbableNodes ,
focusableNodes ,
firstTabbableNode : tabbableNodes . length > 0 ? tabbableNodes [ 0 ] : null ,
lastTabbableNode : tabbableNodes . length > 0 ? tabbableNodes [ tabbableNodes . length - 1 ] : null ,
nextTabbableNode : function nextTabbableNode ( node ) {
var forward = arguments . length > 1 && arguments [ 1 ] !== void 0 ? arguments [ 1 ] : true ;
var nodeIdx = focusableNodes . findIndex ( function ( n ) {
return n === node ;
} ) ;
if ( nodeIdx < 0 ) {
return void 0 ;
}
if ( forward ) {
return focusableNodes . slice ( nodeIdx + 1 ) . find ( function ( n ) {
return isTabbable ( n , config . tabbableOptions ) ;
} ) ;
}
return focusableNodes . slice ( 0 , nodeIdx ) . reverse ( ) . find ( function ( n ) {
return isTabbable ( n , config . tabbableOptions ) ;
} ) ;
}
} ;
} ) ;
state . tabbableGroups = state . containerGroups . filter ( function ( group ) {
return group . tabbableNodes . length > 0 ;
} ) ;
if ( state . tabbableGroups . length <= 0 && ! getNodeForOption ( "fallbackFocus" ) ) {
throw new Error ( "Your focus-trap must have at least one container with at least one tabbable node in it at all times" ) ;
}
} ;
var tryFocus = function tryFocus2 ( node ) {
if ( node === false ) {
return ;
}
if ( node === doc . activeElement ) {
return ;
}
if ( ! node || ! node . focus ) {
tryFocus2 ( getInitialFocusNode ( ) ) ;
return ;
}
node . focus ( {
preventScroll : ! ! config . preventScroll
} ) ;
state . mostRecentlyFocusedNode = node ;
if ( isSelectableInput ( node ) ) {
node . select ( ) ;
}
} ;
var getReturnFocusNode = function getReturnFocusNode2 ( previousActiveElement ) {
var node = getNodeForOption ( "setReturnFocus" , previousActiveElement ) ;
return node ? node : node === false ? false : previousActiveElement ;
} ;
var checkPointerDown = function checkPointerDown2 ( e ) {
var target = getActualTarget ( e ) ;
if ( findContainerIndex ( target ) >= 0 ) {
return ;
}
if ( valueOrHandler ( config . clickOutsideDeactivates , e ) ) {
trap . deactivate ( {
returnFocus : config . returnFocusOnDeactivate && ! isFocusable ( target , config . tabbableOptions )
} ) ;
return ;
}
if ( valueOrHandler ( config . allowOutsideClick , e ) ) {
return ;
}
e . preventDefault ( ) ;
} ;
var checkFocusIn = function checkFocusIn2 ( e ) {
var target = getActualTarget ( e ) ;
var targetContained = findContainerIndex ( target ) >= 0 ;
if ( targetContained || target instanceof Document ) {
if ( targetContained ) {
state . mostRecentlyFocusedNode = target ;
}
} else {
e . stopImmediatePropagation ( ) ;
tryFocus ( state . mostRecentlyFocusedNode || getInitialFocusNode ( ) ) ;
}
} ;
var checkTab = function checkTab2 ( e ) {
var target = getActualTarget ( e ) ;
updateTabbableNodes ( ) ;
var destinationNode = null ;
if ( state . tabbableGroups . length > 0 ) {
var containerIndex = findContainerIndex ( target ) ;
var containerGroup = containerIndex >= 0 ? state . containerGroups [ containerIndex ] : void 0 ;
if ( containerIndex < 0 ) {
if ( e . shiftKey ) {
destinationNode = state . tabbableGroups [ state . tabbableGroups . length - 1 ] . lastTabbableNode ;
} else {
destinationNode = state . tabbableGroups [ 0 ] . firstTabbableNode ;
}
} else if ( e . shiftKey ) {
var startOfGroupIndex = findIndex ( state . tabbableGroups , function ( _ref2 ) {
var firstTabbableNode = _ref2 . firstTabbableNode ;
return target === firstTabbableNode ;
} ) ;
if ( startOfGroupIndex < 0 && ( containerGroup . container === target || isFocusable ( target , config . tabbableOptions ) && ! isTabbable ( target , config . tabbableOptions ) && ! containerGroup . nextTabbableNode ( target , false ) ) ) {
startOfGroupIndex = containerIndex ;
}
if ( startOfGroupIndex >= 0 ) {
var destinationGroupIndex = startOfGroupIndex === 0 ? state . tabbableGroups . length - 1 : startOfGroupIndex - 1 ;
var destinationGroup = state . tabbableGroups [ destinationGroupIndex ] ;
destinationNode = destinationGroup . lastTabbableNode ;
}
} else {
var lastOfGroupIndex = findIndex ( state . tabbableGroups , function ( _ref3 ) {
var lastTabbableNode = _ref3 . lastTabbableNode ;
return target === lastTabbableNode ;
} ) ;
if ( lastOfGroupIndex < 0 && ( containerGroup . container === target || isFocusable ( target , config . tabbableOptions ) && ! isTabbable ( target , config . tabbableOptions ) && ! containerGroup . nextTabbableNode ( target ) ) ) {
lastOfGroupIndex = containerIndex ;
}
if ( lastOfGroupIndex >= 0 ) {
var _destinationGroupIndex = lastOfGroupIndex === state . tabbableGroups . length - 1 ? 0 : lastOfGroupIndex + 1 ;
var _destinationGroup = state . tabbableGroups [ _destinationGroupIndex ] ;
destinationNode = _destinationGroup . firstTabbableNode ;
}
}
} else {
destinationNode = getNodeForOption ( "fallbackFocus" ) ;
}
if ( destinationNode ) {
e . preventDefault ( ) ;
tryFocus ( destinationNode ) ;
}
} ;
var checkKey = function checkKey2 ( e ) {
if ( isEscapeEvent ( e ) && valueOrHandler ( config . escapeDeactivates , e ) !== false ) {
e . preventDefault ( ) ;
trap . deactivate ( ) ;
return ;
}
if ( isTabEvent ( e ) ) {
checkTab ( e ) ;
return ;
}
} ;
var checkClick = function checkClick2 ( e ) {
var target = getActualTarget ( e ) ;
if ( findContainerIndex ( target ) >= 0 ) {
return ;
}
if ( valueOrHandler ( config . clickOutsideDeactivates , e ) ) {
return ;
}
if ( valueOrHandler ( config . allowOutsideClick , e ) ) {
return ;
}
e . preventDefault ( ) ;
e . stopImmediatePropagation ( ) ;
} ;
var addListeners = function addListeners2 ( ) {
if ( ! state . active ) {
return ;
}
activeFocusTraps . activateTrap ( trap ) ;
state . delayInitialFocusTimer = config . delayInitialFocus ? delay ( function ( ) {
tryFocus ( getInitialFocusNode ( ) ) ;
} ) : tryFocus ( getInitialFocusNode ( ) ) ;
doc . addEventListener ( "focusin" , checkFocusIn , true ) ;
doc . addEventListener ( "mousedown" , checkPointerDown , {
capture : true ,
passive : false
} ) ;
doc . addEventListener ( "touchstart" , checkPointerDown , {
capture : true ,
passive : false
} ) ;
doc . addEventListener ( "click" , checkClick , {
capture : true ,
passive : false
} ) ;
doc . addEventListener ( "keydown" , checkKey , {
capture : true ,
passive : false
} ) ;
return trap ;
} ;
var removeListeners = function removeListeners2 ( ) {
if ( ! state . active ) {
return ;
}
doc . removeEventListener ( "focusin" , checkFocusIn , true ) ;
doc . removeEventListener ( "mousedown" , checkPointerDown , true ) ;
doc . removeEventListener ( "touchstart" , checkPointerDown , true ) ;
doc . removeEventListener ( "click" , checkClick , true ) ;
doc . removeEventListener ( "keydown" , checkKey , true ) ;
return trap ;
} ;
trap = {
get active ( ) {
return state . active ;
} ,
get paused ( ) {
return state . paused ;
} ,
activate : function activate ( activateOptions ) {
if ( state . active ) {
return this ;
}
var onActivate = getOption ( activateOptions , "onActivate" ) ;
var onPostActivate = getOption ( activateOptions , "onPostActivate" ) ;
var checkCanFocusTrap = getOption ( activateOptions , "checkCanFocusTrap" ) ;
if ( ! checkCanFocusTrap ) {
updateTabbableNodes ( ) ;
}
state . active = true ;
state . paused = false ;
state . nodeFocusedBeforeActivation = doc . activeElement ;
if ( onActivate ) {
onActivate ( ) ;
}
var finishActivation = function finishActivation2 ( ) {
if ( checkCanFocusTrap ) {
updateTabbableNodes ( ) ;
}
addListeners ( ) ;
if ( onPostActivate ) {
onPostActivate ( ) ;
}
} ;
if ( checkCanFocusTrap ) {
checkCanFocusTrap ( state . containers . concat ( ) ) . then ( finishActivation , finishActivation ) ;
return this ;
}
finishActivation ( ) ;
return this ;
} ,
deactivate : function deactivate ( deactivateOptions ) {
if ( ! state . active ) {
return this ;
}
var options = _objectSpread2 ( {
onDeactivate : config . onDeactivate ,
onPostDeactivate : config . onPostDeactivate ,
checkCanReturnFocus : config . checkCanReturnFocus
} , deactivateOptions ) ;
clearTimeout ( state . delayInitialFocusTimer ) ;
state . delayInitialFocusTimer = void 0 ;
removeListeners ( ) ;
state . active = false ;
state . paused = false ;
activeFocusTraps . deactivateTrap ( trap ) ;
var onDeactivate = getOption ( options , "onDeactivate" ) ;
var onPostDeactivate = getOption ( options , "onPostDeactivate" ) ;
var checkCanReturnFocus = getOption ( options , "checkCanReturnFocus" ) ;
var returnFocus = getOption ( options , "returnFocus" , "returnFocusOnDeactivate" ) ;
if ( onDeactivate ) {
onDeactivate ( ) ;
}
var finishDeactivation = function finishDeactivation2 ( ) {
delay ( function ( ) {
if ( returnFocus ) {
tryFocus ( getReturnFocusNode ( state . nodeFocusedBeforeActivation ) ) ;
}
if ( onPostDeactivate ) {
onPostDeactivate ( ) ;
}
} ) ;
} ;
if ( returnFocus && checkCanReturnFocus ) {
checkCanReturnFocus ( getReturnFocusNode ( state . nodeFocusedBeforeActivation ) ) . then ( finishDeactivation , finishDeactivation ) ;
return this ;
}
finishDeactivation ( ) ;
return this ;
} ,
pause : function pause ( ) {
if ( state . paused || ! state . active ) {
return this ;
}
state . paused = true ;
removeListeners ( ) ;
return this ;
} ,
unpause : function unpause ( ) {
if ( ! state . paused || ! state . active ) {
return this ;
}
state . paused = false ;
updateTabbableNodes ( ) ;
addListeners ( ) ;
return this ;
} ,
updateContainerElements : function updateContainerElements ( containerElements ) {
var elementsAsArray = [ ] . concat ( containerElements ) . filter ( Boolean ) ;
state . containers = elementsAsArray . map ( function ( element ) {
return typeof element === "string" ? doc . querySelector ( element ) : element ;
} ) ;
if ( state . active ) {
updateTabbableNodes ( ) ;
}
return this ;
}
} ;
trap . updateContainerElements ( elements ) ;
return trap ;
} ;
function src _default3 ( Alpine3 ) {
let lastFocused ;
let currentFocused ;
window . addEventListener ( "focusin" , ( ) => {
lastFocused = currentFocused ;
currentFocused = document . activeElement ;
} ) ;
Alpine3 . magic ( "focus" , ( el ) => {
let within = el ;
return {
_ _noscroll : false ,
_ _wrapAround : false ,
within ( el2 ) {
within = el2 ;
return this ;
} ,
withoutScrolling ( ) {
this . _ _noscroll = true ;
return this ;
} ,
noscroll ( ) {
this . _ _noscroll = true ;
return this ;
} ,
withWrapAround ( ) {
this . _ _wrapAround = true ;
return this ;
} ,
wrap ( ) {
return this . withWrapAround ( ) ;
} ,
focusable ( el2 ) {
return isFocusable ( el2 ) ;
} ,
previouslyFocused ( ) {
return lastFocused ;
} ,
lastFocused ( ) {
return lastFocused ;
} ,
focused ( ) {
return currentFocused ;
} ,
focusables ( ) {
if ( Array . isArray ( within ) )
return within ;
return focusable ( within , { displayCheck : "none" } ) ;
} ,
all ( ) {
return this . focusables ( ) ;
} ,
isFirst ( el2 ) {
let els2 = this . all ( ) ;
return els2 [ 0 ] && els2 [ 0 ] . isSameNode ( el2 ) ;
} ,
isLast ( el2 ) {
let els2 = this . all ( ) ;
return els2 . length && els2 . slice ( - 1 ) [ 0 ] . isSameNode ( el2 ) ;
} ,
getFirst ( ) {
return this . all ( ) [ 0 ] ;
} ,
getLast ( ) {
return this . all ( ) . slice ( - 1 ) [ 0 ] ;
} ,
getNext ( ) {
let list = this . all ( ) ;
let current = document . activeElement ;
if ( list . indexOf ( current ) === - 1 )
return ;
if ( this . _ _wrapAround && list . indexOf ( current ) === list . length - 1 ) {
return list [ 0 ] ;
}
return list [ list . indexOf ( current ) + 1 ] ;
} ,
getPrevious ( ) {
let list = this . all ( ) ;
let current = document . activeElement ;
if ( list . indexOf ( current ) === - 1 )
return ;
if ( this . _ _wrapAround && list . indexOf ( current ) === 0 ) {
return list . slice ( - 1 ) [ 0 ] ;
}
return list [ list . indexOf ( current ) - 1 ] ;
} ,
first ( ) {
this . focus ( this . getFirst ( ) ) ;
} ,
last ( ) {
this . focus ( this . getLast ( ) ) ;
} ,
next ( ) {
this . focus ( this . getNext ( ) ) ;
} ,
previous ( ) {
this . focus ( this . getPrevious ( ) ) ;
} ,
prev ( ) {
return this . previous ( ) ;
} ,
focus ( el2 ) {
if ( ! el2 )
return ;
setTimeout ( ( ) => {
if ( ! el2 . hasAttribute ( "tabindex" ) )
el2 . setAttribute ( "tabindex" , "0" ) ;
el2 . focus ( { preventScroll : this . _ _noscroll } ) ;
} ) ;
}
} ;
} ) ;
2024-08-27 12:22:51 +02:00
Alpine3 . directive ( "trap" , Alpine3 . skipDuringClone ( ( el , { expression , modifiers } , { effect : effect3 , evaluateLater : evaluateLater2 , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let evaluator = evaluateLater2 ( expression ) ;
let oldValue = false ;
let options = {
escapeDeactivates : false ,
allowOutsideClick : true ,
fallbackFocus : ( ) => el
} ;
if ( modifiers . includes ( "noautofocus" ) ) {
options . initialFocus = false ;
} else {
let autofocusEl = el . querySelector ( "[autofocus]" ) ;
if ( autofocusEl )
options . initialFocus = autofocusEl ;
}
let trap = createFocusTrap ( el , options ) ;
let undoInert = ( ) => {
} ;
let undoDisableScrolling = ( ) => {
} ;
const releaseFocus = ( ) => {
undoInert ( ) ;
undoInert = ( ) => {
} ;
undoDisableScrolling ( ) ;
undoDisableScrolling = ( ) => {
} ;
trap . deactivate ( {
returnFocus : ! modifiers . includes ( "noreturn" )
} ) ;
} ;
effect3 ( ( ) => evaluator ( ( value ) => {
if ( oldValue === value )
return ;
if ( value && ! oldValue ) {
if ( modifiers . includes ( "noscroll" ) )
undoDisableScrolling = disableScrolling ( ) ;
if ( modifiers . includes ( "inert" ) )
undoInert = setInert ( el ) ;
setTimeout ( ( ) => {
trap . activate ( ) ;
} , 15 ) ;
}
if ( ! value && oldValue ) {
releaseFocus ( ) ;
}
oldValue = ! ! value ;
} ) ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( releaseFocus ) ;
2024-03-10 11:28:50 +01:00
} , ( el , { expression , modifiers } , { evaluate : evaluate3 } ) => {
if ( modifiers . includes ( "inert" ) && evaluate3 ( expression ) )
setInert ( el ) ;
} ) ) ;
}
function setInert ( el ) {
let undos = [ ] ;
crawlSiblingsUp ( el , ( sibling ) => {
let cache = sibling . hasAttribute ( "aria-hidden" ) ;
sibling . setAttribute ( "aria-hidden" , "true" ) ;
undos . push ( ( ) => cache || sibling . removeAttribute ( "aria-hidden" ) ) ;
} ) ;
return ( ) => {
while ( undos . length )
undos . pop ( ) ( ) ;
} ;
}
function crawlSiblingsUp ( el , callback ) {
if ( el . isSameNode ( document . body ) || ! el . parentNode )
return ;
Array . from ( el . parentNode . children ) . forEach ( ( sibling ) => {
if ( sibling . isSameNode ( el ) ) {
crawlSiblingsUp ( el . parentNode , callback ) ;
} else {
callback ( sibling ) ;
}
} ) ;
}
function disableScrolling ( ) {
let overflow = document . documentElement . style . overflow ;
let paddingRight = document . documentElement . style . paddingRight ;
let scrollbarWidth = window . innerWidth - document . documentElement . clientWidth ;
document . documentElement . style . overflow = "hidden" ;
document . documentElement . style . paddingRight = ` ${ scrollbarWidth } px ` ;
return ( ) => {
document . documentElement . style . overflow = overflow ;
document . documentElement . style . paddingRight = paddingRight ;
} ;
}
var module _default3 = src _default3 ;
2024-08-27 12:22:51 +02:00
// node_modules/@alpinejs/persist/dist/module.esm.js
2024-03-10 11:28:50 +01:00
function src _default4 ( Alpine3 ) {
let persist = ( ) => {
let alias ;
let storage ;
try {
storage = localStorage ;
} catch ( e ) {
console . error ( e ) ;
console . warn ( "Alpine: $persist is using temporary storage since localStorage is unavailable." ) ;
let dummy = /* @__PURE__ */ new Map ( ) ;
storage = {
getItem : dummy . get . bind ( dummy ) ,
setItem : dummy . set . bind ( dummy )
} ;
}
return Alpine3 . interceptor ( ( initialValue , getter , setter , path , key ) => {
let lookup = alias || ` _x_ ${ path } ` ;
let initial = storageHas ( lookup , storage ) ? storageGet ( lookup , storage ) : initialValue ;
setter ( initial ) ;
Alpine3 . effect ( ( ) => {
let value = getter ( ) ;
storageSet ( lookup , value , storage ) ;
setter ( value ) ;
} ) ;
return initial ;
} , ( func ) => {
func . as = ( key ) => {
alias = key ;
return func ;
} , func . using = ( target ) => {
storage = target ;
return func ;
} ;
} ) ;
} ;
Object . defineProperty ( Alpine3 , "$persist" , { get : ( ) => persist ( ) } ) ;
Alpine3 . magic ( "persist" , persist ) ;
Alpine3 . persist = ( key , { get : get3 , set : set3 } , storage = localStorage ) => {
let initial = storageHas ( key , storage ) ? storageGet ( key , storage ) : get3 ( ) ;
set3 ( initial ) ;
Alpine3 . effect ( ( ) => {
let value = get3 ( ) ;
storageSet ( key , value , storage ) ;
set3 ( value ) ;
} ) ;
} ;
}
function storageHas ( key , storage ) {
return storage . getItem ( key ) !== null ;
}
function storageGet ( key , storage ) {
2024-08-27 12:22:51 +02:00
let value = storage . getItem ( key , storage ) ;
if ( value === void 0 )
return ;
return JSON . parse ( value ) ;
2024-03-10 11:28:50 +01:00
}
function storageSet ( key , value , storage ) {
storage . setItem ( key , JSON . stringify ( value ) ) ;
}
var module _default4 = src _default4 ;
2024-08-27 12:22:51 +02:00
// node_modules/@alpinejs/intersect/dist/module.esm.js
2024-03-10 11:28:50 +01:00
function src _default5 ( Alpine3 ) {
2024-08-27 12:22:51 +02:00
Alpine3 . directive ( "intersect" , Alpine3 . skipDuringClone ( ( el , { value , expression , modifiers } , { evaluateLater : evaluateLater2 , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let evaluate3 = evaluateLater2 ( expression ) ;
let options = {
rootMargin : getRootMargin ( modifiers ) ,
threshold : getThreshold ( modifiers )
} ;
let observer2 = new IntersectionObserver ( ( entries ) => {
entries . forEach ( ( entry ) => {
if ( entry . isIntersecting === ( value === "leave" ) )
return ;
evaluate3 ( ) ;
modifiers . includes ( "once" ) && observer2 . disconnect ( ) ;
} ) ;
} , options ) ;
observer2 . observe ( el ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => {
2024-03-10 11:28:50 +01:00
observer2 . disconnect ( ) ;
} ) ;
} ) ) ;
}
function getThreshold ( modifiers ) {
if ( modifiers . includes ( "full" ) )
return 0.99 ;
if ( modifiers . includes ( "half" ) )
return 0.5 ;
if ( ! modifiers . includes ( "threshold" ) )
return 0 ;
let threshold = modifiers [ modifiers . indexOf ( "threshold" ) + 1 ] ;
if ( threshold === "100" )
return 1 ;
if ( threshold === "0" )
return 0 ;
return Number ( ` . ${ threshold } ` ) ;
}
function getLengthValue ( rawValue ) {
let match = rawValue . match ( /^(-?[0-9]+)(px|%)?$/ ) ;
return match ? match [ 1 ] + ( match [ 2 ] || "px" ) : void 0 ;
}
function getRootMargin ( modifiers ) {
const key = "margin" ;
const fallback2 = "0px 0px 0px 0px" ;
const index = modifiers . indexOf ( key ) ;
if ( index === - 1 )
return fallback2 ;
let values = [ ] ;
for ( let i = 1 ; i < 5 ; i ++ ) {
values . push ( getLengthValue ( modifiers [ index + i ] || "" ) ) ;
}
values = values . filter ( ( v ) => v !== void 0 ) ;
return values . length ? values . join ( " " ) . trim ( ) : fallback2 ;
}
var module _default5 = src _default5 ;
2024-08-27 12:22:51 +02:00
// node_modules/@alpinejs/resize/dist/module.esm.js
function src _default6 ( Alpine3 ) {
Alpine3 . directive ( "resize" , Alpine3 . skipDuringClone ( ( el , { value , expression , modifiers } , { evaluateLater : evaluateLater2 , cleanup : cleanup2 } ) => {
let evaluator = evaluateLater2 ( expression ) ;
let evaluate3 = ( width , height ) => {
evaluator ( ( ) => {
} , { scope : { "$width" : width , "$height" : height } } ) ;
} ;
let off = modifiers . includes ( "document" ) ? onDocumentResize ( evaluate3 ) : onElResize ( el , evaluate3 ) ;
cleanup2 ( ( ) => off ( ) ) ;
} ) ) ;
}
function onElResize ( el , callback ) {
let observer2 = new ResizeObserver ( ( entries ) => {
let [ width , height ] = dimensions ( entries ) ;
callback ( width , height ) ;
} ) ;
observer2 . observe ( el ) ;
return ( ) => observer2 . disconnect ( ) ;
}
var documentResizeObserver ;
var documentResizeObserverCallbacks = /* @__PURE__ */ new Set ( ) ;
function onDocumentResize ( callback ) {
documentResizeObserverCallbacks . add ( callback ) ;
if ( ! documentResizeObserver ) {
documentResizeObserver = new ResizeObserver ( ( entries ) => {
let [ width , height ] = dimensions ( entries ) ;
documentResizeObserverCallbacks . forEach ( ( i ) => i ( width , height ) ) ;
} ) ;
documentResizeObserver . observe ( document . documentElement ) ;
}
return ( ) => {
documentResizeObserverCallbacks . delete ( callback ) ;
} ;
}
function dimensions ( entries ) {
let width , height ;
for ( let entry of entries ) {
width = entry . borderBoxSize [ 0 ] . inlineSize ;
height = entry . borderBoxSize [ 0 ] . blockSize ;
}
return [ width , height ] ;
}
var module _default6 = src _default6 ;
// node_modules/@alpinejs/anchor/dist/module.esm.js
2024-03-10 11:28:50 +01:00
var min = Math . min ;
var max = Math . max ;
var round = Math . round ;
var floor = Math . floor ;
var createCoords = ( v ) => ( {
x : v ,
y : v
} ) ;
var oppositeSideMap = {
left : "right" ,
right : "left" ,
bottom : "top" ,
top : "bottom"
} ;
var oppositeAlignmentMap = {
start : "end" ,
end : "start"
} ;
function clamp ( start3 , value , end ) {
return max ( start3 , min ( value , end ) ) ;
}
function evaluate2 ( value , param ) {
return typeof value === "function" ? value ( param ) : value ;
}
function getSide ( placement ) {
return placement . split ( "-" ) [ 0 ] ;
}
function getAlignment ( placement ) {
return placement . split ( "-" ) [ 1 ] ;
}
function getOppositeAxis ( axis ) {
return axis === "x" ? "y" : "x" ;
}
function getAxisLength ( axis ) {
return axis === "y" ? "height" : "width" ;
}
function getSideAxis ( placement ) {
return [ "top" , "bottom" ] . includes ( getSide ( placement ) ) ? "y" : "x" ;
}
function getAlignmentAxis ( placement ) {
return getOppositeAxis ( getSideAxis ( placement ) ) ;
}
function getAlignmentSides ( placement , rects , rtl ) {
if ( rtl === void 0 ) {
rtl = false ;
}
const alignment = getAlignment ( placement ) ;
const alignmentAxis = getAlignmentAxis ( placement ) ;
const length = getAxisLength ( alignmentAxis ) ;
let mainAlignmentSide = alignmentAxis === "x" ? alignment === ( rtl ? "end" : "start" ) ? "right" : "left" : alignment === "start" ? "bottom" : "top" ;
if ( rects . reference [ length ] > rects . floating [ length ] ) {
mainAlignmentSide = getOppositePlacement ( mainAlignmentSide ) ;
}
return [ mainAlignmentSide , getOppositePlacement ( mainAlignmentSide ) ] ;
}
function getExpandedPlacements ( placement ) {
const oppositePlacement = getOppositePlacement ( placement ) ;
return [ getOppositeAlignmentPlacement ( placement ) , oppositePlacement , getOppositeAlignmentPlacement ( oppositePlacement ) ] ;
}
function getOppositeAlignmentPlacement ( placement ) {
return placement . replace ( /start|end/g , ( alignment ) => oppositeAlignmentMap [ alignment ] ) ;
}
function getSideList ( side , isStart , rtl ) {
const lr = [ "left" , "right" ] ;
const rl = [ "right" , "left" ] ;
const tb = [ "top" , "bottom" ] ;
const bt = [ "bottom" , "top" ] ;
switch ( side ) {
case "top" :
case "bottom" :
if ( rtl )
return isStart ? rl : lr ;
return isStart ? lr : rl ;
case "left" :
case "right" :
return isStart ? tb : bt ;
default :
return [ ] ;
}
}
function getOppositeAxisPlacements ( placement , flipAlignment , direction , rtl ) {
const alignment = getAlignment ( placement ) ;
let list = getSideList ( getSide ( placement ) , direction === "start" , rtl ) ;
if ( alignment ) {
list = list . map ( ( side ) => side + "-" + alignment ) ;
if ( flipAlignment ) {
list = list . concat ( list . map ( getOppositeAlignmentPlacement ) ) ;
}
}
return list ;
}
function getOppositePlacement ( placement ) {
return placement . replace ( /left|right|bottom|top/g , ( side ) => oppositeSideMap [ side ] ) ;
}
function expandPaddingObject ( padding ) {
return {
top : 0 ,
right : 0 ,
bottom : 0 ,
left : 0 ,
... padding
} ;
}
function getPaddingObject ( padding ) {
return typeof padding !== "number" ? expandPaddingObject ( padding ) : {
top : padding ,
right : padding ,
bottom : padding ,
left : padding
} ;
}
function rectToClientRect ( rect ) {
return {
... rect ,
top : rect . y ,
left : rect . x ,
right : rect . x + rect . width ,
bottom : rect . y + rect . height
} ;
}
function computeCoordsFromPlacement ( _ref , placement , rtl ) {
let {
reference ,
floating
} = _ref ;
const sideAxis = getSideAxis ( placement ) ;
const alignmentAxis = getAlignmentAxis ( placement ) ;
const alignLength = getAxisLength ( alignmentAxis ) ;
const side = getSide ( placement ) ;
const isVertical = sideAxis === "y" ;
const commonX = reference . x + reference . width / 2 - floating . width / 2 ;
const commonY = reference . y + reference . height / 2 - floating . height / 2 ;
const commonAlign = reference [ alignLength ] / 2 - floating [ alignLength ] / 2 ;
let coords ;
switch ( side ) {
case "top" :
coords = {
x : commonX ,
y : reference . y - floating . height
} ;
break ;
case "bottom" :
coords = {
x : commonX ,
y : reference . y + reference . height
} ;
break ;
case "right" :
coords = {
x : reference . x + reference . width ,
y : commonY
} ;
break ;
case "left" :
coords = {
x : reference . x - floating . width ,
y : commonY
} ;
break ;
default :
coords = {
x : reference . x ,
y : reference . y
} ;
}
switch ( getAlignment ( placement ) ) {
case "start" :
coords [ alignmentAxis ] -= commonAlign * ( rtl && isVertical ? - 1 : 1 ) ;
break ;
case "end" :
coords [ alignmentAxis ] += commonAlign * ( rtl && isVertical ? - 1 : 1 ) ;
break ;
}
return coords ;
}
var computePosition = async ( reference , floating , config ) => {
const {
placement = "bottom" ,
strategy = "absolute" ,
middleware = [ ] ,
platform : platform2
} = config ;
const validMiddleware = middleware . filter ( Boolean ) ;
const rtl = await ( platform2 . isRTL == null ? void 0 : platform2 . isRTL ( floating ) ) ;
let rects = await platform2 . getElementRects ( {
reference ,
floating ,
strategy
} ) ;
let {
x ,
y
} = computeCoordsFromPlacement ( rects , placement , rtl ) ;
let statefulPlacement = placement ;
let middlewareData = { } ;
let resetCount = 0 ;
for ( let i = 0 ; i < validMiddleware . length ; i ++ ) {
const {
name ,
fn
} = validMiddleware [ i ] ;
const {
x : nextX ,
y : nextY ,
data : data2 ,
reset
} = await fn ( {
x ,
y ,
initialPlacement : placement ,
placement : statefulPlacement ,
strategy ,
middlewareData ,
rects ,
platform : platform2 ,
elements : {
reference ,
floating
}
} ) ;
x = nextX != null ? nextX : x ;
y = nextY != null ? nextY : y ;
middlewareData = {
... middlewareData ,
[ name ] : {
... middlewareData [ name ] ,
... data2
}
} ;
if ( reset && resetCount <= 50 ) {
resetCount ++ ;
if ( typeof reset === "object" ) {
if ( reset . placement ) {
statefulPlacement = reset . placement ;
}
if ( reset . rects ) {
rects = reset . rects === true ? await platform2 . getElementRects ( {
reference ,
floating ,
strategy
} ) : reset . rects ;
}
( {
x ,
y
} = computeCoordsFromPlacement ( rects , statefulPlacement , rtl ) ) ;
}
i = - 1 ;
continue ;
}
}
return {
x ,
y ,
placement : statefulPlacement ,
strategy ,
middlewareData
} ;
} ;
async function detectOverflow ( state , options ) {
var _await$platform$isEle ;
if ( options === void 0 ) {
options = { } ;
}
const {
x ,
y ,
platform : platform2 ,
rects ,
elements ,
strategy
} = state ;
const {
boundary = "clippingAncestors" ,
rootBoundary = "viewport" ,
elementContext = "floating" ,
altBoundary = false ,
padding = 0
} = evaluate2 ( options , state ) ;
const paddingObject = getPaddingObject ( padding ) ;
const altContext = elementContext === "floating" ? "reference" : "floating" ;
const element = elements [ altBoundary ? altContext : elementContext ] ;
const clippingClientRect = rectToClientRect ( await platform2 . getClippingRect ( {
element : ( ( _await$platform$isEle = await ( platform2 . isElement == null ? void 0 : platform2 . isElement ( element ) ) ) != null ? _await$platform$isEle : true ) ? element : element . contextElement || await ( platform2 . getDocumentElement == null ? void 0 : platform2 . getDocumentElement ( elements . floating ) ) ,
boundary ,
rootBoundary ,
strategy
} ) ) ;
const rect = elementContext === "floating" ? {
... rects . floating ,
x ,
y
} : rects . reference ;
const offsetParent = await ( platform2 . getOffsetParent == null ? void 0 : platform2 . getOffsetParent ( elements . floating ) ) ;
const offsetScale = await ( platform2 . isElement == null ? void 0 : platform2 . isElement ( offsetParent ) ) ? await ( platform2 . getScale == null ? void 0 : platform2 . getScale ( offsetParent ) ) || {
x : 1 ,
y : 1
} : {
x : 1 ,
y : 1
} ;
const elementClientRect = rectToClientRect ( platform2 . convertOffsetParentRelativeRectToViewportRelativeRect ? await platform2 . convertOffsetParentRelativeRectToViewportRelativeRect ( {
rect ,
offsetParent ,
strategy
} ) : rect ) ;
return {
top : ( clippingClientRect . top - elementClientRect . top + paddingObject . top ) / offsetScale . y ,
bottom : ( elementClientRect . bottom - clippingClientRect . bottom + paddingObject . bottom ) / offsetScale . y ,
left : ( clippingClientRect . left - elementClientRect . left + paddingObject . left ) / offsetScale . x ,
right : ( elementClientRect . right - clippingClientRect . right + paddingObject . right ) / offsetScale . x
} ;
}
var flip = function ( options ) {
if ( options === void 0 ) {
options = { } ;
}
return {
name : "flip" ,
options ,
async fn ( state ) {
var _middlewareData$arrow , _middlewareData$flip ;
const {
placement ,
middlewareData ,
rects ,
initialPlacement ,
platform : platform2 ,
elements
} = state ;
const {
mainAxis : checkMainAxis = true ,
crossAxis : checkCrossAxis = true ,
fallbackPlacements : specifiedFallbackPlacements ,
fallbackStrategy = "bestFit" ,
fallbackAxisSideDirection = "none" ,
flipAlignment = true ,
... detectOverflowOptions
} = evaluate2 ( options , state ) ;
if ( ( _middlewareData$arrow = middlewareData . arrow ) != null && _middlewareData$arrow . alignmentOffset ) {
return { } ;
}
const side = getSide ( placement ) ;
const isBasePlacement = getSide ( initialPlacement ) === initialPlacement ;
const rtl = await ( platform2 . isRTL == null ? void 0 : platform2 . isRTL ( elements . floating ) ) ;
const fallbackPlacements = specifiedFallbackPlacements || ( isBasePlacement || ! flipAlignment ? [ getOppositePlacement ( initialPlacement ) ] : getExpandedPlacements ( initialPlacement ) ) ;
if ( ! specifiedFallbackPlacements && fallbackAxisSideDirection !== "none" ) {
fallbackPlacements . push ( ... getOppositeAxisPlacements ( initialPlacement , flipAlignment , fallbackAxisSideDirection , rtl ) ) ;
}
const placements2 = [ initialPlacement , ... fallbackPlacements ] ;
const overflow = await detectOverflow ( state , detectOverflowOptions ) ;
const overflows = [ ] ;
let overflowsData = ( ( _middlewareData$flip = middlewareData . flip ) == null ? void 0 : _middlewareData$flip . overflows ) || [ ] ;
if ( checkMainAxis ) {
overflows . push ( overflow [ side ] ) ;
}
if ( checkCrossAxis ) {
const sides2 = getAlignmentSides ( placement , rects , rtl ) ;
overflows . push ( overflow [ sides2 [ 0 ] ] , overflow [ sides2 [ 1 ] ] ) ;
}
overflowsData = [ ... overflowsData , {
placement ,
overflows
} ] ;
if ( ! overflows . every ( ( side2 ) => side2 <= 0 ) ) {
var _middlewareData$flip2 , _overflowsData$filter ;
const nextIndex = ( ( ( _middlewareData$flip2 = middlewareData . flip ) == null ? void 0 : _middlewareData$flip2 . index ) || 0 ) + 1 ;
const nextPlacement = placements2 [ nextIndex ] ;
if ( nextPlacement ) {
return {
data : {
index : nextIndex ,
overflows : overflowsData
} ,
reset : {
placement : nextPlacement
}
} ;
}
let resetPlacement = ( _overflowsData$filter = overflowsData . filter ( ( d ) => d . overflows [ 0 ] <= 0 ) . sort ( ( a , b ) => a . overflows [ 1 ] - b . overflows [ 1 ] ) [ 0 ] ) == null ? void 0 : _overflowsData$filter . placement ;
if ( ! resetPlacement ) {
switch ( fallbackStrategy ) {
case "bestFit" : {
var _overflowsData$map$so ;
const placement2 = ( _overflowsData$map$so = overflowsData . map ( ( d ) => [ d . placement , d . overflows . filter ( ( overflow2 ) => overflow2 > 0 ) . reduce ( ( acc , overflow2 ) => acc + overflow2 , 0 ) ] ) . sort ( ( a , b ) => a [ 1 ] - b [ 1 ] ) [ 0 ] ) == null ? void 0 : _overflowsData$map$so [ 0 ] ;
if ( placement2 ) {
resetPlacement = placement2 ;
}
break ;
}
case "initialPlacement" :
resetPlacement = initialPlacement ;
break ;
}
}
if ( placement !== resetPlacement ) {
return {
reset : {
placement : resetPlacement
}
} ;
}
}
return { } ;
}
} ;
} ;
async function convertValueToCoords ( state , options ) {
const {
placement ,
platform : platform2 ,
elements
} = state ;
const rtl = await ( platform2 . isRTL == null ? void 0 : platform2 . isRTL ( elements . floating ) ) ;
const side = getSide ( placement ) ;
const alignment = getAlignment ( placement ) ;
const isVertical = getSideAxis ( placement ) === "y" ;
const mainAxisMulti = [ "left" , "top" ] . includes ( side ) ? - 1 : 1 ;
const crossAxisMulti = rtl && isVertical ? - 1 : 1 ;
const rawValue = evaluate2 ( options , state ) ;
let {
mainAxis ,
crossAxis ,
alignmentAxis
} = typeof rawValue === "number" ? {
mainAxis : rawValue ,
crossAxis : 0 ,
alignmentAxis : null
} : {
mainAxis : 0 ,
crossAxis : 0 ,
alignmentAxis : null ,
... rawValue
} ;
if ( alignment && typeof alignmentAxis === "number" ) {
crossAxis = alignment === "end" ? alignmentAxis * - 1 : alignmentAxis ;
}
return isVertical ? {
x : crossAxis * crossAxisMulti ,
y : mainAxis * mainAxisMulti
} : {
x : mainAxis * mainAxisMulti ,
y : crossAxis * crossAxisMulti
} ;
}
var offset = function ( options ) {
if ( options === void 0 ) {
options = 0 ;
}
return {
name : "offset" ,
options ,
async fn ( state ) {
const {
x ,
y
} = state ;
const diffCoords = await convertValueToCoords ( state , options ) ;
return {
x : x + diffCoords . x ,
y : y + diffCoords . y ,
data : diffCoords
} ;
}
} ;
} ;
var shift = function ( options ) {
if ( options === void 0 ) {
options = { } ;
}
return {
name : "shift" ,
options ,
async fn ( state ) {
const {
x ,
y ,
placement
} = state ;
const {
mainAxis : checkMainAxis = true ,
crossAxis : checkCrossAxis = false ,
limiter = {
fn : ( _ref ) => {
let {
x : x2 ,
y : y2
} = _ref ;
return {
x : x2 ,
y : y2
} ;
}
} ,
... detectOverflowOptions
} = evaluate2 ( options , state ) ;
const coords = {
x ,
y
} ;
const overflow = await detectOverflow ( state , detectOverflowOptions ) ;
const crossAxis = getSideAxis ( getSide ( placement ) ) ;
const mainAxis = getOppositeAxis ( crossAxis ) ;
let mainAxisCoord = coords [ mainAxis ] ;
let crossAxisCoord = coords [ crossAxis ] ;
if ( checkMainAxis ) {
const minSide = mainAxis === "y" ? "top" : "left" ;
const maxSide = mainAxis === "y" ? "bottom" : "right" ;
const min2 = mainAxisCoord + overflow [ minSide ] ;
const max2 = mainAxisCoord - overflow [ maxSide ] ;
mainAxisCoord = clamp ( min2 , mainAxisCoord , max2 ) ;
}
if ( checkCrossAxis ) {
const minSide = crossAxis === "y" ? "top" : "left" ;
const maxSide = crossAxis === "y" ? "bottom" : "right" ;
const min2 = crossAxisCoord + overflow [ minSide ] ;
const max2 = crossAxisCoord - overflow [ maxSide ] ;
crossAxisCoord = clamp ( min2 , crossAxisCoord , max2 ) ;
}
const limitedCoords = limiter . fn ( {
... state ,
[ mainAxis ] : mainAxisCoord ,
[ crossAxis ] : crossAxisCoord
} ) ;
return {
... limitedCoords ,
data : {
x : limitedCoords . x - x ,
y : limitedCoords . y - y
}
} ;
}
} ;
} ;
function getNodeName ( node ) {
if ( isNode ( node ) ) {
return ( node . nodeName || "" ) . toLowerCase ( ) ;
}
return "#document" ;
}
function getWindow ( node ) {
var _node$ownerDocument ;
return ( node == null ? void 0 : ( _node$ownerDocument = node . ownerDocument ) == null ? void 0 : _node$ownerDocument . defaultView ) || window ;
}
function getDocumentElement ( node ) {
var _ref ;
return ( _ref = ( isNode ( node ) ? node . ownerDocument : node . document ) || window . document ) == null ? void 0 : _ref . documentElement ;
}
function isNode ( value ) {
return value instanceof Node || value instanceof getWindow ( value ) . Node ;
}
function isElement ( value ) {
return value instanceof Element || value instanceof getWindow ( value ) . Element ;
}
function isHTMLElement ( value ) {
return value instanceof HTMLElement || value instanceof getWindow ( value ) . HTMLElement ;
}
function isShadowRoot ( value ) {
if ( typeof ShadowRoot === "undefined" ) {
return false ;
}
return value instanceof ShadowRoot || value instanceof getWindow ( value ) . ShadowRoot ;
}
function isOverflowElement ( element ) {
const {
overflow ,
overflowX ,
overflowY ,
display
} = getComputedStyle2 ( element ) ;
return /auto|scroll|overlay|hidden|clip/ . test ( overflow + overflowY + overflowX ) && ! [ "inline" , "contents" ] . includes ( display ) ;
}
function isTableElement ( element ) {
return [ "table" , "td" , "th" ] . includes ( getNodeName ( element ) ) ;
}
function isContainingBlock ( element ) {
const webkit = isWebKit ( ) ;
const css = getComputedStyle2 ( element ) ;
return css . transform !== "none" || css . perspective !== "none" || ( css . containerType ? css . containerType !== "normal" : false ) || ! webkit && ( css . backdropFilter ? css . backdropFilter !== "none" : false ) || ! webkit && ( css . filter ? css . filter !== "none" : false ) || [ "transform" , "perspective" , "filter" ] . some ( ( value ) => ( css . willChange || "" ) . includes ( value ) ) || [ "paint" , "layout" , "strict" , "content" ] . some ( ( value ) => ( css . contain || "" ) . includes ( value ) ) ;
}
function getContainingBlock ( element ) {
let currentNode = getParentNode ( element ) ;
while ( isHTMLElement ( currentNode ) && ! isLastTraversableNode ( currentNode ) ) {
if ( isContainingBlock ( currentNode ) ) {
return currentNode ;
} else {
currentNode = getParentNode ( currentNode ) ;
}
}
return null ;
}
function isWebKit ( ) {
if ( typeof CSS === "undefined" || ! CSS . supports )
return false ;
return CSS . supports ( "-webkit-backdrop-filter" , "none" ) ;
}
function isLastTraversableNode ( node ) {
return [ "html" , "body" , "#document" ] . includes ( getNodeName ( node ) ) ;
}
function getComputedStyle2 ( element ) {
return getWindow ( element ) . getComputedStyle ( element ) ;
}
function getNodeScroll ( element ) {
if ( isElement ( element ) ) {
return {
scrollLeft : element . scrollLeft ,
scrollTop : element . scrollTop
} ;
}
return {
scrollLeft : element . pageXOffset ,
scrollTop : element . pageYOffset
} ;
}
function getParentNode ( node ) {
if ( getNodeName ( node ) === "html" ) {
return node ;
}
const result = node . assignedSlot || node . parentNode || isShadowRoot ( node ) && node . host || getDocumentElement ( node ) ;
return isShadowRoot ( result ) ? result . host : result ;
}
function getNearestOverflowAncestor ( node ) {
const parentNode = getParentNode ( node ) ;
if ( isLastTraversableNode ( parentNode ) ) {
return node . ownerDocument ? node . ownerDocument . body : node . body ;
}
if ( isHTMLElement ( parentNode ) && isOverflowElement ( parentNode ) ) {
return parentNode ;
}
return getNearestOverflowAncestor ( parentNode ) ;
}
function getOverflowAncestors ( node , list , traverseIframes ) {
var _node$ownerDocument2 ;
if ( list === void 0 ) {
list = [ ] ;
}
if ( traverseIframes === void 0 ) {
traverseIframes = true ;
}
const scrollableAncestor = getNearestOverflowAncestor ( node ) ;
const isBody = scrollableAncestor === ( ( _node$ownerDocument2 = node . ownerDocument ) == null ? void 0 : _node$ownerDocument2 . body ) ;
const win = getWindow ( scrollableAncestor ) ;
if ( isBody ) {
return list . concat ( win , win . visualViewport || [ ] , isOverflowElement ( scrollableAncestor ) ? scrollableAncestor : [ ] , win . frameElement && traverseIframes ? getOverflowAncestors ( win . frameElement ) : [ ] ) ;
}
return list . concat ( scrollableAncestor , getOverflowAncestors ( scrollableAncestor , [ ] , traverseIframes ) ) ;
}
function getCssDimensions ( element ) {
const css = getComputedStyle2 ( element ) ;
let width = parseFloat ( css . width ) || 0 ;
let height = parseFloat ( css . height ) || 0 ;
const hasOffset = isHTMLElement ( element ) ;
const offsetWidth = hasOffset ? element . offsetWidth : width ;
const offsetHeight = hasOffset ? element . offsetHeight : height ;
const shouldFallback = round ( width ) !== offsetWidth || round ( height ) !== offsetHeight ;
if ( shouldFallback ) {
width = offsetWidth ;
height = offsetHeight ;
}
return {
width ,
height ,
$ : shouldFallback
} ;
}
function unwrapElement ( element ) {
return ! isElement ( element ) ? element . contextElement : element ;
}
function getScale ( element ) {
const domElement = unwrapElement ( element ) ;
if ( ! isHTMLElement ( domElement ) ) {
return createCoords ( 1 ) ;
}
const rect = domElement . getBoundingClientRect ( ) ;
const {
width ,
height ,
$
} = getCssDimensions ( domElement ) ;
let x = ( $ ? round ( rect . width ) : rect . width ) / width ;
let y = ( $ ? round ( rect . height ) : rect . height ) / height ;
if ( ! x || ! Number . isFinite ( x ) ) {
x = 1 ;
}
if ( ! y || ! Number . isFinite ( y ) ) {
y = 1 ;
}
return {
x ,
y
} ;
}
var noOffsets = /* @__PURE__ */ createCoords ( 0 ) ;
function getVisualOffsets ( element ) {
const win = getWindow ( element ) ;
if ( ! isWebKit ( ) || ! win . visualViewport ) {
return noOffsets ;
}
return {
x : win . visualViewport . offsetLeft ,
y : win . visualViewport . offsetTop
} ;
}
function shouldAddVisualOffsets ( element , isFixed , floatingOffsetParent ) {
if ( isFixed === void 0 ) {
isFixed = false ;
}
if ( ! floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow ( element ) ) {
return false ;
}
return isFixed ;
}
function getBoundingClientRect ( element , includeScale , isFixedStrategy , offsetParent ) {
if ( includeScale === void 0 ) {
includeScale = false ;
}
if ( isFixedStrategy === void 0 ) {
isFixedStrategy = false ;
}
const clientRect = element . getBoundingClientRect ( ) ;
const domElement = unwrapElement ( element ) ;
let scale = createCoords ( 1 ) ;
if ( includeScale ) {
if ( offsetParent ) {
if ( isElement ( offsetParent ) ) {
scale = getScale ( offsetParent ) ;
}
} else {
scale = getScale ( element ) ;
}
}
const visualOffsets = shouldAddVisualOffsets ( domElement , isFixedStrategy , offsetParent ) ? getVisualOffsets ( domElement ) : createCoords ( 0 ) ;
let x = ( clientRect . left + visualOffsets . x ) / scale . x ;
let y = ( clientRect . top + visualOffsets . y ) / scale . y ;
let width = clientRect . width / scale . x ;
let height = clientRect . height / scale . y ;
if ( domElement ) {
const win = getWindow ( domElement ) ;
const offsetWin = offsetParent && isElement ( offsetParent ) ? getWindow ( offsetParent ) : offsetParent ;
let currentIFrame = win . frameElement ;
while ( currentIFrame && offsetParent && offsetWin !== win ) {
const iframeScale = getScale ( currentIFrame ) ;
const iframeRect = currentIFrame . getBoundingClientRect ( ) ;
const css = getComputedStyle2 ( currentIFrame ) ;
const left = iframeRect . left + ( currentIFrame . clientLeft + parseFloat ( css . paddingLeft ) ) * iframeScale . x ;
const top = iframeRect . top + ( currentIFrame . clientTop + parseFloat ( css . paddingTop ) ) * iframeScale . y ;
x *= iframeScale . x ;
y *= iframeScale . y ;
width *= iframeScale . x ;
height *= iframeScale . y ;
x += left ;
y += top ;
currentIFrame = getWindow ( currentIFrame ) . frameElement ;
}
}
return rectToClientRect ( {
width ,
height ,
x ,
y
} ) ;
}
function convertOffsetParentRelativeRectToViewportRelativeRect ( _ref ) {
let {
rect ,
offsetParent ,
strategy
} = _ref ;
const isOffsetParentAnElement = isHTMLElement ( offsetParent ) ;
const documentElement = getDocumentElement ( offsetParent ) ;
if ( offsetParent === documentElement ) {
return rect ;
}
let scroll = {
scrollLeft : 0 ,
scrollTop : 0
} ;
let scale = createCoords ( 1 ) ;
const offsets = createCoords ( 0 ) ;
if ( isOffsetParentAnElement || ! isOffsetParentAnElement && strategy !== "fixed" ) {
if ( getNodeName ( offsetParent ) !== "body" || isOverflowElement ( documentElement ) ) {
scroll = getNodeScroll ( offsetParent ) ;
}
if ( isHTMLElement ( offsetParent ) ) {
const offsetRect = getBoundingClientRect ( offsetParent ) ;
scale = getScale ( offsetParent ) ;
offsets . x = offsetRect . x + offsetParent . clientLeft ;
offsets . y = offsetRect . y + offsetParent . clientTop ;
}
}
return {
width : rect . width * scale . x ,
height : rect . height * scale . y ,
x : rect . x * scale . x - scroll . scrollLeft * scale . x + offsets . x ,
y : rect . y * scale . y - scroll . scrollTop * scale . y + offsets . y
} ;
}
function getClientRects ( element ) {
return Array . from ( element . getClientRects ( ) ) ;
}
function getWindowScrollBarX ( element ) {
return getBoundingClientRect ( getDocumentElement ( element ) ) . left + getNodeScroll ( element ) . scrollLeft ;
}
function getDocumentRect ( element ) {
const html = getDocumentElement ( element ) ;
const scroll = getNodeScroll ( element ) ;
const body = element . ownerDocument . body ;
const width = max ( html . scrollWidth , html . clientWidth , body . scrollWidth , body . clientWidth ) ;
const height = max ( html . scrollHeight , html . clientHeight , body . scrollHeight , body . clientHeight ) ;
let x = - scroll . scrollLeft + getWindowScrollBarX ( element ) ;
const y = - scroll . scrollTop ;
if ( getComputedStyle2 ( body ) . direction === "rtl" ) {
x += max ( html . clientWidth , body . clientWidth ) - width ;
}
return {
width ,
height ,
x ,
y
} ;
}
function getViewportRect ( element , strategy ) {
const win = getWindow ( element ) ;
const html = getDocumentElement ( element ) ;
const visualViewport = win . visualViewport ;
let width = html . clientWidth ;
let height = html . clientHeight ;
let x = 0 ;
let y = 0 ;
if ( visualViewport ) {
width = visualViewport . width ;
height = visualViewport . height ;
const visualViewportBased = isWebKit ( ) ;
if ( ! visualViewportBased || visualViewportBased && strategy === "fixed" ) {
x = visualViewport . offsetLeft ;
y = visualViewport . offsetTop ;
}
}
return {
width ,
height ,
x ,
y
} ;
}
function getInnerBoundingClientRect ( element , strategy ) {
const clientRect = getBoundingClientRect ( element , true , strategy === "fixed" ) ;
const top = clientRect . top + element . clientTop ;
const left = clientRect . left + element . clientLeft ;
const scale = isHTMLElement ( element ) ? getScale ( element ) : createCoords ( 1 ) ;
const width = element . clientWidth * scale . x ;
const height = element . clientHeight * scale . y ;
const x = left * scale . x ;
const y = top * scale . y ;
return {
width ,
height ,
x ,
y
} ;
}
function getClientRectFromClippingAncestor ( element , clippingAncestor , strategy ) {
let rect ;
if ( clippingAncestor === "viewport" ) {
rect = getViewportRect ( element , strategy ) ;
} else if ( clippingAncestor === "document" ) {
rect = getDocumentRect ( getDocumentElement ( element ) ) ;
} else if ( isElement ( clippingAncestor ) ) {
rect = getInnerBoundingClientRect ( clippingAncestor , strategy ) ;
} else {
const visualOffsets = getVisualOffsets ( element ) ;
rect = {
... clippingAncestor ,
x : clippingAncestor . x - visualOffsets . x ,
y : clippingAncestor . y - visualOffsets . y
} ;
}
return rectToClientRect ( rect ) ;
}
function hasFixedPositionAncestor ( element , stopNode ) {
const parentNode = getParentNode ( element ) ;
if ( parentNode === stopNode || ! isElement ( parentNode ) || isLastTraversableNode ( parentNode ) ) {
return false ;
}
return getComputedStyle2 ( parentNode ) . position === "fixed" || hasFixedPositionAncestor ( parentNode , stopNode ) ;
}
function getClippingElementAncestors ( element , cache ) {
const cachedResult = cache . get ( element ) ;
if ( cachedResult ) {
return cachedResult ;
}
let result = getOverflowAncestors ( element , [ ] , false ) . filter ( ( el ) => isElement ( el ) && getNodeName ( el ) !== "body" ) ;
let currentContainingBlockComputedStyle = null ;
const elementIsFixed = getComputedStyle2 ( element ) . position === "fixed" ;
let currentNode = elementIsFixed ? getParentNode ( element ) : element ;
while ( isElement ( currentNode ) && ! isLastTraversableNode ( currentNode ) ) {
const computedStyle = getComputedStyle2 ( currentNode ) ;
const currentNodeIsContaining = isContainingBlock ( currentNode ) ;
if ( ! currentNodeIsContaining && computedStyle . position === "fixed" ) {
currentContainingBlockComputedStyle = null ;
}
const shouldDropCurrentNode = elementIsFixed ? ! currentNodeIsContaining && ! currentContainingBlockComputedStyle : ! currentNodeIsContaining && computedStyle . position === "static" && ! ! currentContainingBlockComputedStyle && [ "absolute" , "fixed" ] . includes ( currentContainingBlockComputedStyle . position ) || isOverflowElement ( currentNode ) && ! currentNodeIsContaining && hasFixedPositionAncestor ( element , currentNode ) ;
if ( shouldDropCurrentNode ) {
result = result . filter ( ( ancestor ) => ancestor !== currentNode ) ;
} else {
currentContainingBlockComputedStyle = computedStyle ;
}
currentNode = getParentNode ( currentNode ) ;
}
cache . set ( element , result ) ;
return result ;
}
function getClippingRect ( _ref ) {
let {
element ,
boundary ,
rootBoundary ,
strategy
} = _ref ;
const elementClippingAncestors = boundary === "clippingAncestors" ? getClippingElementAncestors ( element , this . _c ) : [ ] . concat ( boundary ) ;
const clippingAncestors = [ ... elementClippingAncestors , rootBoundary ] ;
const firstClippingAncestor = clippingAncestors [ 0 ] ;
const clippingRect = clippingAncestors . reduce ( ( accRect , clippingAncestor ) => {
const rect = getClientRectFromClippingAncestor ( element , clippingAncestor , strategy ) ;
accRect . top = max ( rect . top , accRect . top ) ;
accRect . right = min ( rect . right , accRect . right ) ;
accRect . bottom = min ( rect . bottom , accRect . bottom ) ;
accRect . left = max ( rect . left , accRect . left ) ;
return accRect ;
} , getClientRectFromClippingAncestor ( element , firstClippingAncestor , strategy ) ) ;
return {
width : clippingRect . right - clippingRect . left ,
height : clippingRect . bottom - clippingRect . top ,
x : clippingRect . left ,
y : clippingRect . top
} ;
}
function getDimensions ( element ) {
return getCssDimensions ( element ) ;
}
function getRectRelativeToOffsetParent ( element , offsetParent , strategy ) {
const isOffsetParentAnElement = isHTMLElement ( offsetParent ) ;
const documentElement = getDocumentElement ( offsetParent ) ;
const isFixed = strategy === "fixed" ;
const rect = getBoundingClientRect ( element , true , isFixed , offsetParent ) ;
let scroll = {
scrollLeft : 0 ,
scrollTop : 0
} ;
const offsets = createCoords ( 0 ) ;
if ( isOffsetParentAnElement || ! isOffsetParentAnElement && ! isFixed ) {
if ( getNodeName ( offsetParent ) !== "body" || isOverflowElement ( documentElement ) ) {
scroll = getNodeScroll ( offsetParent ) ;
}
if ( isOffsetParentAnElement ) {
const offsetRect = getBoundingClientRect ( offsetParent , true , isFixed , offsetParent ) ;
offsets . x = offsetRect . x + offsetParent . clientLeft ;
offsets . y = offsetRect . y + offsetParent . clientTop ;
} else if ( documentElement ) {
offsets . x = getWindowScrollBarX ( documentElement ) ;
}
}
return {
x : rect . left + scroll . scrollLeft - offsets . x ,
y : rect . top + scroll . scrollTop - offsets . y ,
width : rect . width ,
height : rect . height
} ;
}
function getTrueOffsetParent ( element , polyfill ) {
if ( ! isHTMLElement ( element ) || getComputedStyle2 ( element ) . position === "fixed" ) {
return null ;
}
if ( polyfill ) {
return polyfill ( element ) ;
}
return element . offsetParent ;
}
function getOffsetParent ( element , polyfill ) {
const window2 = getWindow ( element ) ;
if ( ! isHTMLElement ( element ) ) {
return window2 ;
}
let offsetParent = getTrueOffsetParent ( element , polyfill ) ;
while ( offsetParent && isTableElement ( offsetParent ) && getComputedStyle2 ( offsetParent ) . position === "static" ) {
offsetParent = getTrueOffsetParent ( offsetParent , polyfill ) ;
}
if ( offsetParent && ( getNodeName ( offsetParent ) === "html" || getNodeName ( offsetParent ) === "body" && getComputedStyle2 ( offsetParent ) . position === "static" && ! isContainingBlock ( offsetParent ) ) ) {
return window2 ;
}
return offsetParent || getContainingBlock ( element ) || window2 ;
}
var getElementRects = async function ( _ref ) {
let {
reference ,
floating ,
strategy
} = _ref ;
const getOffsetParentFn = this . getOffsetParent || getOffsetParent ;
const getDimensionsFn = this . getDimensions ;
return {
reference : getRectRelativeToOffsetParent ( reference , await getOffsetParentFn ( floating ) , strategy ) ,
floating : {
x : 0 ,
y : 0 ,
... await getDimensionsFn ( floating )
}
} ;
} ;
function isRTL ( element ) {
return getComputedStyle2 ( element ) . direction === "rtl" ;
}
var platform = {
convertOffsetParentRelativeRectToViewportRelativeRect ,
getDocumentElement ,
getClippingRect ,
getOffsetParent ,
getElementRects ,
getClientRects ,
getDimensions ,
getScale ,
isElement ,
isRTL
} ;
function observeMove ( element , onMove ) {
let io = null ;
let timeoutId ;
const root = getDocumentElement ( element ) ;
2024-08-27 12:22:51 +02:00
function cleanup2 ( ) {
2024-03-10 11:28:50 +01:00
clearTimeout ( timeoutId ) ;
io && io . disconnect ( ) ;
io = null ;
}
function refresh ( skip , threshold ) {
if ( skip === void 0 ) {
skip = false ;
}
if ( threshold === void 0 ) {
threshold = 1 ;
}
2024-08-27 12:22:51 +02:00
cleanup2 ( ) ;
2024-03-10 11:28:50 +01:00
const {
left ,
top ,
width ,
height
} = element . getBoundingClientRect ( ) ;
if ( ! skip ) {
onMove ( ) ;
}
if ( ! width || ! height ) {
return ;
}
const insetTop = floor ( top ) ;
const insetRight = floor ( root . clientWidth - ( left + width ) ) ;
const insetBottom = floor ( root . clientHeight - ( top + height ) ) ;
const insetLeft = floor ( left ) ;
const rootMargin = - insetTop + "px " + - insetRight + "px " + - insetBottom + "px " + - insetLeft + "px" ;
const options = {
rootMargin ,
threshold : max ( 0 , min ( 1 , threshold ) ) || 1
} ;
let isFirstUpdate = true ;
function handleObserve ( entries ) {
const ratio = entries [ 0 ] . intersectionRatio ;
if ( ratio !== threshold ) {
if ( ! isFirstUpdate ) {
return refresh ( ) ;
}
if ( ! ratio ) {
timeoutId = setTimeout ( ( ) => {
refresh ( false , 1e-7 ) ;
} , 100 ) ;
} else {
refresh ( false , ratio ) ;
}
}
isFirstUpdate = false ;
}
try {
io = new IntersectionObserver ( handleObserve , {
... options ,
root : root . ownerDocument
} ) ;
} catch ( e ) {
io = new IntersectionObserver ( handleObserve , options ) ;
}
io . observe ( element ) ;
}
refresh ( true ) ;
2024-08-27 12:22:51 +02:00
return cleanup2 ;
2024-03-10 11:28:50 +01:00
}
function autoUpdate ( reference , floating , update , options ) {
if ( options === void 0 ) {
options = { } ;
}
const {
ancestorScroll = true ,
ancestorResize = true ,
elementResize = typeof ResizeObserver === "function" ,
layoutShift = typeof IntersectionObserver === "function" ,
animationFrame = false
} = options ;
const referenceEl = unwrapElement ( reference ) ;
const ancestors = ancestorScroll || ancestorResize ? [ ... referenceEl ? getOverflowAncestors ( referenceEl ) : [ ] , ... getOverflowAncestors ( floating ) ] : [ ] ;
ancestors . forEach ( ( ancestor ) => {
ancestorScroll && ancestor . addEventListener ( "scroll" , update , {
passive : true
} ) ;
ancestorResize && ancestor . addEventListener ( "resize" , update ) ;
} ) ;
const cleanupIo = referenceEl && layoutShift ? observeMove ( referenceEl , update ) : null ;
let reobserveFrame = - 1 ;
let resizeObserver = null ;
if ( elementResize ) {
resizeObserver = new ResizeObserver ( ( _ref ) => {
let [ firstEntry ] = _ref ;
if ( firstEntry && firstEntry . target === referenceEl && resizeObserver ) {
resizeObserver . unobserve ( floating ) ;
cancelAnimationFrame ( reobserveFrame ) ;
reobserveFrame = requestAnimationFrame ( ( ) => {
resizeObserver && resizeObserver . observe ( floating ) ;
} ) ;
}
update ( ) ;
} ) ;
if ( referenceEl && ! animationFrame ) {
resizeObserver . observe ( referenceEl ) ;
}
resizeObserver . observe ( floating ) ;
}
let frameId ;
let prevRefRect = animationFrame ? getBoundingClientRect ( reference ) : null ;
if ( animationFrame ) {
frameLoop ( ) ;
}
function frameLoop ( ) {
const nextRefRect = getBoundingClientRect ( reference ) ;
if ( prevRefRect && ( nextRefRect . x !== prevRefRect . x || nextRefRect . y !== prevRefRect . y || nextRefRect . width !== prevRefRect . width || nextRefRect . height !== prevRefRect . height ) ) {
update ( ) ;
}
prevRefRect = nextRefRect ;
frameId = requestAnimationFrame ( frameLoop ) ;
}
update ( ) ;
return ( ) => {
ancestors . forEach ( ( ancestor ) => {
ancestorScroll && ancestor . removeEventListener ( "scroll" , update ) ;
ancestorResize && ancestor . removeEventListener ( "resize" , update ) ;
} ) ;
cleanupIo && cleanupIo ( ) ;
resizeObserver && resizeObserver . disconnect ( ) ;
resizeObserver = null ;
if ( animationFrame ) {
cancelAnimationFrame ( frameId ) ;
}
} ;
}
var computePosition2 = ( reference , floating , options ) => {
const cache = /* @__PURE__ */ new Map ( ) ;
const mergedOptions = {
platform ,
... options
} ;
const platformWithCache = {
... mergedOptions . platform ,
_c : cache
} ;
return computePosition ( reference , floating , {
... mergedOptions ,
platform : platformWithCache
} ) ;
} ;
2024-08-27 12:22:51 +02:00
function src _default7 ( Alpine3 ) {
2024-03-10 11:28:50 +01:00
Alpine3 . magic ( "anchor" , ( el ) => {
if ( ! el . _x _anchor )
throw "Alpine: No x-anchor directive found on element using $anchor..." ;
return el . _x _anchor ;
} ) ;
Alpine3 . interceptClone ( ( from , to ) => {
if ( from && from . _x _anchor && ! to . _x _anchor ) {
to . _x _anchor = from . _x _anchor ;
}
} ) ;
2024-08-27 12:22:51 +02:00
Alpine3 . directive ( "anchor" , Alpine3 . skipDuringClone ( ( el , { expression , modifiers , value } , { cleanup : cleanup2 , evaluate : evaluate22 } ) => {
2024-03-10 11:28:50 +01:00
let { placement , offsetValue , unstyled } = getOptions ( modifiers ) ;
el . _x _anchor = Alpine3 . reactive ( { x : 0 , y : 0 } ) ;
let reference = evaluate22 ( expression ) ;
if ( ! reference )
throw "Alpine: no element provided to x-anchor..." ;
let compute = ( ) => {
let previousValue ;
computePosition2 ( reference , el , {
placement ,
middleware : [ flip ( ) , shift ( { padding : 5 } ) , offset ( offsetValue ) ]
} ) . then ( ( { x , y } ) => {
unstyled || setStyles2 ( el , x , y ) ;
if ( JSON . stringify ( { x , y } ) !== previousValue ) {
el . _x _anchor . x = x ;
el . _x _anchor . y = y ;
}
previousValue = JSON . stringify ( { x , y } ) ;
} ) ;
} ;
let release2 = autoUpdate ( reference , el , ( ) => compute ( ) ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => release2 ( ) ) ;
} , ( el , { expression , modifiers , value } , { cleanup : cleanup2 , evaluate : evaluate22 } ) => {
2024-03-10 11:28:50 +01:00
let { placement , offsetValue , unstyled } = getOptions ( modifiers ) ;
if ( el . _x _anchor ) {
unstyled || setStyles2 ( el , el . _x _anchor . x , el . _x _anchor . y ) ;
}
} ) ) ;
}
function setStyles2 ( el , x , y ) {
Object . assign ( el . style , {
left : x + "px" ,
top : y + "px" ,
position : "absolute"
} ) ;
}
function getOptions ( modifiers ) {
let positions = [ "top" , "top-start" , "top-end" , "right" , "right-start" , "right-end" , "bottom" , "bottom-start" , "bottom-end" , "left" , "left-start" , "left-end" ] ;
let placement = positions . find ( ( i ) => modifiers . includes ( i ) ) ;
let offsetValue = 0 ;
if ( modifiers . includes ( "offset" ) ) {
let idx = modifiers . findIndex ( ( i ) => i === "offset" ) ;
offsetValue = modifiers [ idx + 1 ] !== void 0 ? Number ( modifiers [ idx + 1 ] ) : offsetValue ;
}
let unstyled = modifiers . includes ( "no-style" ) ;
return { placement , offsetValue , unstyled } ;
}
2024-08-27 12:22:51 +02:00
var module _default7 = src _default7 ;
2024-03-10 11:28:50 +01:00
// js/plugins/navigate/history.js
2024-08-27 12:22:51 +02:00
var Snapshot = class {
constructor ( url , html ) {
this . url = url ;
this . html = html ;
}
} ;
var snapshotCache = {
currentKey : null ,
currentUrl : null ,
keys : [ ] ,
lookup : { } ,
limit : 10 ,
has ( location ) {
return this . lookup [ location ] !== void 0 ;
} ,
retrieve ( location ) {
let snapshot = this . lookup [ location ] ;
if ( snapshot === void 0 )
throw "No back button cache found for current location: " + location ;
return snapshot ;
} ,
replace ( key , snapshot ) {
if ( this . has ( key ) ) {
this . lookup [ key ] = snapshot ;
} else {
this . push ( key , snapshot ) ;
}
} ,
push ( key , snapshot ) {
this . lookup [ key ] = snapshot ;
let index = this . keys . indexOf ( key ) ;
if ( index > - 1 )
this . keys . splice ( index , 1 ) ;
this . keys . unshift ( key ) ;
this . trim ( ) ;
} ,
trim ( ) {
for ( let key of this . keys . splice ( this . limit ) ) {
delete this . lookup [ key ] ;
}
}
} ;
2024-03-10 11:28:50 +01:00
function updateCurrentPageHtmlInHistoryStateForLaterBackButtonClicks ( ) {
let url = new URL ( window . location . href , document . baseURI ) ;
replaceUrl ( url , document . documentElement . outerHTML ) ;
}
2024-08-27 12:22:51 +02:00
function updateCurrentPageHtmlInSnapshotCacheForLaterBackButtonClicks ( key , url ) {
let html = document . documentElement . outerHTML ;
snapshotCache . replace ( key , new Snapshot ( url , html ) ) ;
}
function whenTheBackOrForwardButtonIsClicked ( registerFallback , handleHtml ) {
let fallback2 ;
registerFallback ( ( i ) => fallback2 = i ) ;
2024-03-10 11:28:50 +01:00
window . addEventListener ( "popstate" , ( e ) => {
let state = e . state || { } ;
let alpine = state . alpine || { } ;
2024-08-27 12:22:51 +02:00
if ( Object . keys ( state ) . length === 0 )
2024-03-10 11:28:50 +01:00
return ;
2024-08-27 12:22:51 +02:00
if ( ! alpine . snapshotIdx )
return ;
if ( snapshotCache . has ( alpine . snapshotIdx ) ) {
let snapshot = snapshotCache . retrieve ( alpine . snapshotIdx ) ;
handleHtml ( snapshot . html , snapshot . url , snapshotCache . currentUrl , snapshotCache . currentKey ) ;
} else {
fallback2 ( alpine . url ) ;
}
2024-03-10 11:28:50 +01:00
} ) ;
}
function updateUrlAndStoreLatestHtmlForFutureBackButtons ( html , destination ) {
pushUrl ( destination , html ) ;
}
function pushUrl ( url , html ) {
updateUrl ( "pushState" , url , html ) ;
}
function replaceUrl ( url , html ) {
updateUrl ( "replaceState" , url , html ) ;
}
function updateUrl ( method , url , html ) {
2024-08-27 12:22:51 +02:00
let key = url . toString ( ) + "-" + Math . random ( ) ;
method === "pushState" ? snapshotCache . push ( key , new Snapshot ( url , html ) ) : snapshotCache . replace ( key = snapshotCache . currentKey ? ? key , new Snapshot ( url , html ) ) ;
2024-03-10 11:28:50 +01:00
let state = history . state || { } ;
if ( ! state . alpine )
state . alpine = { } ;
2024-08-27 12:22:51 +02:00
state . alpine . snapshotIdx = key ;
state . alpine . url = url . toString ( ) ;
2024-03-10 11:28:50 +01:00
try {
2024-08-27 12:22:51 +02:00
history [ method ] ( state , JSON . stringify ( document . title ) , url ) ;
snapshotCache . currentKey = key ;
snapshotCache . currentUrl = url ;
2024-03-10 11:28:50 +01:00
} catch ( error2 ) {
if ( error2 instanceof DOMException && error2 . name === "SecurityError" ) {
console . error ( "Livewire: You can't use wire:navigate with a link to a different root domain: " + url ) ;
}
console . error ( error2 ) ;
}
}
// js/plugins/navigate/links.js
function whenThisLinkIsPressed ( el , callback ) {
let isProgrammaticClick = ( e ) => ! e . isTrusted ;
let isNotPlainLeftClick = ( e ) => e . which > 1 || e . altKey || e . ctrlKey || e . metaKey || e . shiftKey ;
let isNotPlainEnterKey = ( e ) => e . which !== 13 || e . altKey || e . ctrlKey || e . metaKey || e . shiftKey ;
el . addEventListener ( "click" , ( e ) => {
if ( isProgrammaticClick ( e ) ) {
e . preventDefault ( ) ;
callback ( ( whenReleased ) => whenReleased ( ) ) ;
return ;
}
if ( isNotPlainLeftClick ( e ) )
return ;
e . preventDefault ( ) ;
} ) ;
el . addEventListener ( "mousedown" , ( e ) => {
if ( isNotPlainLeftClick ( e ) )
return ;
e . preventDefault ( ) ;
callback ( ( whenReleased ) => {
let handler4 = ( e2 ) => {
e2 . preventDefault ( ) ;
whenReleased ( ) ;
el . removeEventListener ( "mouseup" , handler4 ) ;
} ;
el . addEventListener ( "mouseup" , handler4 ) ;
} ) ;
} ) ;
el . addEventListener ( "keydown" , ( e ) => {
if ( isNotPlainEnterKey ( e ) )
return ;
e . preventDefault ( ) ;
callback ( ( whenReleased ) => whenReleased ( ) ) ;
} ) ;
}
function whenThisLinkIsHoveredFor ( el , ms = 60 , callback ) {
el . addEventListener ( "mouseenter" , ( e ) => {
let timeout = setTimeout ( ( ) => {
callback ( e ) ;
} , ms ) ;
let handler4 = ( ) => {
clearTimeout ( timeout ) ;
el . removeEventListener ( "mouseleave" , handler4 ) ;
} ;
el . addEventListener ( "mouseleave" , handler4 ) ;
} ) ;
}
function extractDestinationFromLink ( linkEl ) {
return createUrlObjectFromString ( linkEl . getAttribute ( "href" ) ) ;
}
function createUrlObjectFromString ( urlString ) {
2024-08-27 12:22:51 +02:00
return urlString !== null && new URL ( urlString , document . baseURI ) ;
}
function getUriStringFromUrlObject ( urlObject ) {
return urlObject . pathname + urlObject . search + urlObject . hash ;
2024-03-10 11:28:50 +01:00
}
// js/plugins/navigate/fetch.js
function fetchHtml ( destination , callback ) {
2024-08-27 12:22:51 +02:00
let uri = getUriStringFromUrlObject ( destination ) ;
2024-03-10 11:28:50 +01:00
performFetch ( uri , ( html , finalDestination ) => {
callback ( html , finalDestination ) ;
} ) ;
}
function performFetch ( uri , callback ) {
let options = {
headers : {
"X-Livewire-Navigate" : ""
}
} ;
trigger2 ( "navigate.request" , {
url : uri ,
options
} ) ;
let finalDestination ;
fetch ( uri , options ) . then ( ( response ) => {
2024-08-27 12:22:51 +02:00
let destination = createUrlObjectFromString ( uri ) ;
2024-03-10 11:28:50 +01:00
finalDestination = createUrlObjectFromString ( response . url ) ;
2024-08-27 12:22:51 +02:00
if ( destination . pathname + destination . search === finalDestination . pathname + finalDestination . search ) {
finalDestination . hash = destination . hash ;
}
2024-03-10 11:28:50 +01:00
return response . text ( ) ;
} ) . then ( ( html ) => {
callback ( html , finalDestination ) ;
} ) ;
}
// js/plugins/navigate/prefetch.js
var prefetches = { } ;
function prefetchHtml ( destination , callback ) {
2024-08-27 12:22:51 +02:00
let uri = getUriStringFromUrlObject ( destination ) ;
if ( prefetches [ uri ] )
2024-03-10 11:28:50 +01:00
return ;
2024-08-27 12:22:51 +02:00
prefetches [ uri ] = { finished : false , html : null , whenFinished : ( ) => {
2024-03-10 11:28:50 +01:00
} } ;
2024-08-27 12:22:51 +02:00
performFetch ( uri , ( html , routedUri ) => {
2024-03-10 11:28:50 +01:00
callback ( html , routedUri ) ;
} ) ;
}
function storeThePrefetchedHtmlForWhenALinkIsClicked ( html , destination , finalDestination ) {
2024-08-27 12:22:51 +02:00
let state = prefetches [ getUriStringFromUrlObject ( destination ) ] ;
2024-03-10 11:28:50 +01:00
state . html = html ;
state . finished = true ;
state . finalDestination = finalDestination ;
state . whenFinished ( ) ;
}
function getPretchedHtmlOr ( destination , receive , ifNoPrefetchExists ) {
2024-08-27 12:22:51 +02:00
let uri = getUriStringFromUrlObject ( destination ) ;
2024-03-10 11:28:50 +01:00
if ( ! prefetches [ uri ] )
return ifNoPrefetchExists ( ) ;
if ( prefetches [ uri ] . finished ) {
let html = prefetches [ uri ] . html ;
let finalDestination = prefetches [ uri ] . finalDestination ;
delete prefetches [ uri ] ;
return receive ( html , finalDestination ) ;
} else {
prefetches [ uri ] . whenFinished = ( ) => {
let html = prefetches [ uri ] . html ;
let finalDestination = prefetches [ uri ] . finalDestination ;
delete prefetches [ uri ] ;
receive ( html , finalDestination ) ;
} ;
}
}
// js/plugins/navigate/teleport.js
function packUpPersistedTeleports ( persistedEl ) {
module _default . mutateDom ( ( ) => {
persistedEl . querySelectorAll ( "[data-teleport-template]" ) . forEach ( ( i ) => i . _x _teleport . remove ( ) ) ;
} ) ;
}
function removeAnyLeftOverStaleTeleportTargets ( body ) {
module _default . mutateDom ( ( ) => {
body . querySelectorAll ( "[data-teleport-target]" ) . forEach ( ( i ) => i . remove ( ) ) ;
} ) ;
}
function unPackPersistedTeleports ( persistedEl ) {
module _default . walk ( persistedEl , ( el , skip ) => {
if ( ! el . _x _teleport )
return ;
el . _x _teleportPutBack ( ) ;
skip ( ) ;
} ) ;
}
function isTeleportTarget ( el ) {
return el . hasAttribute ( "data-teleport-target" ) ;
}
// js/plugins/navigate/scroll.js
function storeScrollInformationInHtmlBeforeNavigatingAway ( ) {
document . body . setAttribute ( "data-scroll-x" , document . body . scrollLeft ) ;
document . body . setAttribute ( "data-scroll-y" , document . body . scrollTop ) ;
document . querySelectorAll ( [ "[x-navigate\\:scroll]" , "[wire\\:scroll]" ] ) . forEach ( ( el ) => {
el . setAttribute ( "data-scroll-x" , el . scrollLeft ) ;
el . setAttribute ( "data-scroll-y" , el . scrollTop ) ;
} ) ;
}
function restoreScrollPositionOrScrollToTop ( ) {
let scroll = ( el ) => {
if ( ! el . hasAttribute ( "data-scroll-x" ) ) {
window . scrollTo ( { top : 0 , left : 0 , behavior : "instant" } ) ;
} else {
el . scrollTo ( {
top : Number ( el . getAttribute ( "data-scroll-y" ) ) ,
left : Number ( el . getAttribute ( "data-scroll-x" ) ) ,
behavior : "instant"
} ) ;
el . removeAttribute ( "data-scroll-x" ) ;
el . removeAttribute ( "data-scroll-y" ) ;
}
} ;
queueMicrotask ( ( ) => {
scroll ( document . body ) ;
document . querySelectorAll ( [ "[x-navigate\\:scroll]" , "[wire\\:scroll]" ] ) . forEach ( scroll ) ;
} ) ;
}
// js/plugins/navigate/persist.js
var els = { } ;
function storePersistantElementsForLater ( callback ) {
els = { } ;
document . querySelectorAll ( "[x-persist]" ) . forEach ( ( i ) => {
els [ i . getAttribute ( "x-persist" ) ] = i ;
callback ( i ) ;
module _default . mutateDom ( ( ) => {
i . remove ( ) ;
} ) ;
} ) ;
}
function putPersistantElementsBack ( callback ) {
let usedPersists = [ ] ;
document . querySelectorAll ( "[x-persist]" ) . forEach ( ( i ) => {
let old = els [ i . getAttribute ( "x-persist" ) ] ;
if ( ! old )
return ;
usedPersists . push ( i . getAttribute ( "x-persist" ) ) ;
old . _x _wasPersisted = true ;
callback ( old , i ) ;
module _default . mutateDom ( ( ) => {
i . replaceWith ( old ) ;
} ) ;
} ) ;
Object . entries ( els ) . forEach ( ( [ key , el ] ) => {
if ( usedPersists . includes ( key ) )
return ;
module _default . destroyTree ( el ) ;
} ) ;
els = { } ;
}
function isPersistedElement ( el ) {
return el . hasAttribute ( "x-persist" ) ;
}
// js/plugins/navigate/bar.js
var import _nprogress = _ _toESM ( require _nprogress ( ) ) ;
import _nprogress . default . configure ( {
minimum : 0.1 ,
trickleSpeed : 200 ,
2024-08-27 12:22:51 +02:00
showSpinner : false ,
parent : "body"
2024-03-10 11:28:50 +01:00
} ) ;
injectStyles ( ) ;
var inProgress = false ;
function showAndStartProgressBar ( ) {
inProgress = true ;
setTimeout ( ( ) => {
if ( ! inProgress )
return ;
import _nprogress . default . start ( ) ;
} , 150 ) ;
}
function finishAndHideProgressBar ( ) {
inProgress = false ;
import _nprogress . default . done ( ) ;
2024-08-27 12:22:51 +02:00
}
function removeAnyLeftOverStaleProgressBars ( ) {
2024-03-10 11:28:50 +01:00
import _nprogress . default . remove ( ) ;
}
function injectStyles ( ) {
let style = document . createElement ( "style" ) ;
style . innerHTML = ` /* Make clicks pass-through */
# nprogress {
pointer - events : none ;
}
# nprogress . bar {
background : var ( -- livewire - progress - bar - color , # 29 d ) ;
position : fixed ;
z - index : 1031 ;
top : 0 ;
left : 0 ;
width : 100 % ;
height : 2 px ;
}
/* Fancy blur effect */
# nprogress . peg {
display : block ;
position : absolute ;
right : 0 px ;
width : 100 px ;
height : 100 % ;
box - shadow : 0 0 10 px var ( -- livewire - progress - bar - color , # 29 d ) , 0 0 5 px var ( -- livewire - progress - bar - color , # 29 d ) ;
opacity : 1.0 ;
- webkit - transform : rotate ( 3 deg ) translate ( 0 px , - 4 px ) ;
- ms - transform : rotate ( 3 deg ) translate ( 0 px , - 4 px ) ;
transform : rotate ( 3 deg ) translate ( 0 px , - 4 px ) ;
}
/* Remove these to get rid of the spinner */
# nprogress . spinner {
display : block ;
position : fixed ;
z - index : 1031 ;
top : 15 px ;
right : 15 px ;
}
# nprogress . spinner - icon {
width : 18 px ;
height : 18 px ;
box - sizing : border - box ;
border : solid 2 px transparent ;
border - top - color : var ( -- livewire - progress - bar - color , # 29 d ) ;
border - left - color : var ( -- livewire - progress - bar - color , # 29 d ) ;
border - radius : 50 % ;
- webkit - animation : nprogress - spinner 400 ms linear infinite ;
animation : nprogress - spinner 400 ms linear infinite ;
}
. nprogress - custom - parent {
overflow : hidden ;
position : relative ;
}
. nprogress - custom - parent # nprogress . spinner ,
. nprogress - custom - parent # nprogress . bar {
position : absolute ;
}
@ - webkit - keyframes nprogress - spinner {
0 % { - webkit - transform : rotate ( 0 deg ) ; }
100 % { - webkit - transform : rotate ( 360 deg ) ; }
}
@ keyframes nprogress - spinner {
0 % { transform : rotate ( 0 deg ) ; }
100 % { transform : rotate ( 360 deg ) ; }
}
` ;
let nonce2 = getNonce ( ) ;
2024-08-27 12:22:51 +02:00
if ( nonce2 )
2024-03-10 11:28:50 +01:00
style . nonce = nonce2 ;
document . head . appendChild ( style ) ;
}
// js/plugins/navigate/page.js
var oldBodyScriptTagHashes = [ ] ;
var attributesExemptFromScriptTagHashing = [
"data-csrf" ,
"aria-hidden"
] ;
function swapCurrentPageWithNewHtml ( html , andThen ) {
let newDocument = new DOMParser ( ) . parseFromString ( html , "text/html" ) ;
let newBody = document . adoptNode ( newDocument . body ) ;
let newHead = document . adoptNode ( newDocument . head ) ;
oldBodyScriptTagHashes = oldBodyScriptTagHashes . concat ( Array . from ( document . body . querySelectorAll ( "script" ) ) . map ( ( i ) => {
return simpleHash ( ignoreAttributes ( i . outerHTML , attributesExemptFromScriptTagHashing ) ) ;
} ) ) ;
let afterRemoteScriptsHaveLoaded = ( ) => {
} ;
mergeNewHead ( newHead ) . finally ( ( ) => {
afterRemoteScriptsHaveLoaded ( ) ;
} ) ;
prepNewBodyScriptTagsToRun ( newBody , oldBodyScriptTagHashes ) ;
let oldBody = document . body ;
document . body . replaceWith ( newBody ) ;
Alpine . destroyTree ( oldBody ) ;
andThen ( ( i ) => afterRemoteScriptsHaveLoaded = i ) ;
}
function prepNewBodyScriptTagsToRun ( newBody , oldBodyScriptTagHashes2 ) {
newBody . querySelectorAll ( "script" ) . forEach ( ( i ) => {
if ( i . hasAttribute ( "data-navigate-once" ) ) {
let hash = simpleHash ( ignoreAttributes ( i . outerHTML , attributesExemptFromScriptTagHashing ) ) ;
if ( oldBodyScriptTagHashes2 . includes ( hash ) )
return ;
}
i . replaceWith ( cloneScriptTag ( i ) ) ;
} ) ;
}
function mergeNewHead ( newHead ) {
let children = Array . from ( document . head . children ) ;
let headChildrenHtmlLookup = children . map ( ( i ) => i . outerHTML ) ;
let garbageCollector = document . createDocumentFragment ( ) ;
let touchedHeadElements = [ ] ;
let remoteScriptsPromises = [ ] ;
for ( let child of Array . from ( newHead . children ) ) {
if ( isAsset ( child ) ) {
if ( ! headChildrenHtmlLookup . includes ( child . outerHTML ) ) {
if ( isTracked ( child ) ) {
if ( ifTheQueryStringChangedSinceLastRequest ( child , children ) ) {
setTimeout ( ( ) => window . location . reload ( ) ) ;
}
}
if ( isScript ( child ) ) {
try {
remoteScriptsPromises . push ( injectScriptTagAndWaitForItToFullyLoad ( cloneScriptTag ( child ) ) ) ;
} catch ( error2 ) {
}
} else {
document . head . appendChild ( child ) ;
}
} else {
garbageCollector . appendChild ( child ) ;
}
touchedHeadElements . push ( child ) ;
}
}
for ( let child of Array . from ( document . head . children ) ) {
if ( ! isAsset ( child ) )
child . remove ( ) ;
}
for ( let child of Array . from ( newHead . children ) ) {
document . head . appendChild ( child ) ;
}
return Promise . all ( remoteScriptsPromises ) ;
}
async function injectScriptTagAndWaitForItToFullyLoad ( script ) {
return new Promise ( ( resolve , reject ) => {
if ( script . src ) {
script . onload = ( ) => resolve ( ) ;
script . onerror = ( ) => reject ( ) ;
} else {
resolve ( ) ;
}
document . head . appendChild ( script ) ;
} ) ;
}
function cloneScriptTag ( el ) {
let script = document . createElement ( "script" ) ;
script . textContent = el . textContent ;
script . async = el . async ;
for ( let attr of el . attributes ) {
script . setAttribute ( attr . name , attr . value ) ;
}
return script ;
}
function isTracked ( el ) {
return el . hasAttribute ( "data-navigate-track" ) ;
}
function ifTheQueryStringChangedSinceLastRequest ( el , currentHeadChildren ) {
let [ uri , queryString ] = extractUriAndQueryString ( el ) ;
return currentHeadChildren . some ( ( child ) => {
if ( ! isTracked ( child ) )
return false ;
let [ currentUri , currentQueryString ] = extractUriAndQueryString ( child ) ;
if ( currentUri === uri && queryString !== currentQueryString )
return true ;
} ) ;
}
function extractUriAndQueryString ( el ) {
let url = isScript ( el ) ? el . src : el . href ;
return url . split ( "?" ) ;
}
function isAsset ( el ) {
return el . tagName . toLowerCase ( ) === "link" && el . getAttribute ( "rel" ) . toLowerCase ( ) === "stylesheet" || el . tagName . toLowerCase ( ) === "style" || el . tagName . toLowerCase ( ) === "script" ;
}
function isScript ( el ) {
return el . tagName . toLowerCase ( ) === "script" ;
}
function simpleHash ( str ) {
return str . split ( "" ) . reduce ( ( a , b ) => {
a = ( a << 5 ) - a + b . charCodeAt ( 0 ) ;
return a & a ;
} , 0 ) ;
}
function ignoreAttributes ( subject , attributesToRemove ) {
let result = subject ;
attributesToRemove . forEach ( ( attr ) => {
const regex = new RegExp ( ` ${ attr } ="[^"]*"| ${ attr } ='[^']*' ` , "g" ) ;
result = result . replace ( regex , "" ) ;
} ) ;
result = result . replaceAll ( " " , "" ) ;
return result . trim ( ) ;
}
// js/plugins/navigate/index.js
var enablePersist = true ;
var showProgressBar = true ;
var restoreScroll = true ;
var autofocus = false ;
function navigate _default ( Alpine3 ) {
Alpine3 . navigate = ( url ) => {
2024-08-27 12:22:51 +02:00
let destination = createUrlObjectFromString ( url ) ;
let prevented = fireEventForOtherLibariesToHookInto ( "alpine:navigate" , {
url : destination ,
history : false ,
cached : false
} ) ;
if ( prevented )
return ;
navigateTo ( destination ) ;
2024-03-10 11:28:50 +01:00
} ;
Alpine3 . navigate . disableProgressBar = ( ) => {
showProgressBar = false ;
} ;
Alpine3 . addInitSelector ( ( ) => ` [ ${ Alpine3 . prefixed ( "navigate" ) } ] ` ) ;
Alpine3 . directive ( "navigate" , ( el , { modifiers } ) => {
let shouldPrefetchOnHover = modifiers . includes ( "hover" ) ;
shouldPrefetchOnHover && whenThisLinkIsHoveredFor ( el , 60 , ( ) => {
let destination = extractDestinationFromLink ( el ) ;
2024-08-27 12:22:51 +02:00
if ( ! destination )
return ;
2024-03-10 11:28:50 +01:00
prefetchHtml ( destination , ( html , finalDestination ) => {
storeThePrefetchedHtmlForWhenALinkIsClicked ( html , destination , finalDestination ) ;
} ) ;
} ) ;
whenThisLinkIsPressed ( el , ( whenItIsReleased ) => {
let destination = extractDestinationFromLink ( el ) ;
2024-08-27 12:22:51 +02:00
if ( ! destination )
return ;
2024-03-10 11:28:50 +01:00
prefetchHtml ( destination , ( html , finalDestination ) => {
storeThePrefetchedHtmlForWhenALinkIsClicked ( html , destination , finalDestination ) ;
} ) ;
whenItIsReleased ( ( ) => {
2024-08-27 12:22:51 +02:00
let prevented = fireEventForOtherLibariesToHookInto ( "alpine:navigate" , {
url : destination ,
history : false ,
cached : false
} ) ;
if ( prevented )
return ;
2024-03-10 11:28:50 +01:00
navigateTo ( destination ) ;
} ) ;
} ) ;
} ) ;
2024-08-27 12:22:51 +02:00
function navigateTo ( destination , shouldPushToHistoryState = true ) {
2024-03-10 11:28:50 +01:00
showProgressBar && showAndStartProgressBar ( ) ;
fetchHtmlOrUsePrefetchedHtml ( destination , ( html , finalDestination ) => {
fireEventForOtherLibariesToHookInto ( "alpine:navigating" ) ;
restoreScroll && storeScrollInformationInHtmlBeforeNavigatingAway ( ) ;
showProgressBar && finishAndHideProgressBar ( ) ;
cleanupAlpineElementsOnThePageThatArentInsideAPersistedElement ( ) ;
updateCurrentPageHtmlInHistoryStateForLaterBackButtonClicks ( ) ;
preventAlpineFromPickingUpDomChanges ( Alpine3 , ( andAfterAllThis ) => {
enablePersist && storePersistantElementsForLater ( ( persistedEl ) => {
packUpPersistedTeleports ( persistedEl ) ;
} ) ;
2024-08-27 12:22:51 +02:00
if ( shouldPushToHistoryState ) {
updateUrlAndStoreLatestHtmlForFutureBackButtons ( html , finalDestination ) ;
} else {
replaceUrl ( finalDestination , html ) ;
}
2024-03-10 11:28:50 +01:00
swapCurrentPageWithNewHtml ( html , ( afterNewScriptsAreDoneLoading ) => {
removeAnyLeftOverStaleTeleportTargets ( document . body ) ;
enablePersist && putPersistantElementsBack ( ( persistedEl , newStub ) => {
unPackPersistedTeleports ( persistedEl ) ;
} ) ;
restoreScrollPositionOrScrollToTop ( ) ;
afterNewScriptsAreDoneLoading ( ( ) => {
andAfterAllThis ( ( ) => {
setTimeout ( ( ) => {
autofocus && autofocusElementsWithTheAutofocusAttribute ( ) ;
} ) ;
nowInitializeAlpineOnTheNewPage ( Alpine3 ) ;
2024-08-27 12:22:51 +02:00
fireEventForOtherLibariesToHookInto ( "alpine:navigated" ) ;
2024-03-10 11:28:50 +01:00
} ) ;
} ) ;
} ) ;
} ) ;
} ) ;
}
2024-08-27 12:22:51 +02:00
whenTheBackOrForwardButtonIsClicked ( ( ifThePageBeingVisitedHasntBeenCached ) => {
ifThePageBeingVisitedHasntBeenCached ( ( url ) => {
let destination = createUrlObjectFromString ( url ) ;
let prevented = fireEventForOtherLibariesToHookInto ( "alpine:navigate" , {
url : destination ,
history : true ,
cached : false
} ) ;
if ( prevented )
return ;
let shouldPushToHistoryState = false ;
navigateTo ( destination , shouldPushToHistoryState ) ;
} ) ;
} , ( html , url , currentPageUrl , currentPageKey ) => {
let destination = createUrlObjectFromString ( url ) ;
let prevented = fireEventForOtherLibariesToHookInto ( "alpine:navigate" , {
url : destination ,
history : true ,
cached : true
} ) ;
if ( prevented )
return ;
2024-03-10 11:28:50 +01:00
storeScrollInformationInHtmlBeforeNavigatingAway ( ) ;
2024-08-27 12:22:51 +02:00
fireEventForOtherLibariesToHookInto ( "alpine:navigating" ) ;
updateCurrentPageHtmlInSnapshotCacheForLaterBackButtonClicks ( currentPageUrl , currentPageKey ) ;
2024-03-10 11:28:50 +01:00
preventAlpineFromPickingUpDomChanges ( Alpine3 , ( andAfterAllThis ) => {
enablePersist && storePersistantElementsForLater ( ( persistedEl ) => {
packUpPersistedTeleports ( persistedEl ) ;
} ) ;
swapCurrentPageWithNewHtml ( html , ( ) => {
2024-08-27 12:22:51 +02:00
removeAnyLeftOverStaleProgressBars ( ) ;
2024-03-10 11:28:50 +01:00
removeAnyLeftOverStaleTeleportTargets ( document . body ) ;
enablePersist && putPersistantElementsBack ( ( persistedEl , newStub ) => {
unPackPersistedTeleports ( persistedEl ) ;
} ) ;
restoreScrollPositionOrScrollToTop ( ) ;
andAfterAllThis ( ( ) => {
autofocus && autofocusElementsWithTheAutofocusAttribute ( ) ;
nowInitializeAlpineOnTheNewPage ( Alpine3 ) ;
2024-08-27 12:22:51 +02:00
fireEventForOtherLibariesToHookInto ( "alpine:navigated" ) ;
2024-03-10 11:28:50 +01:00
} ) ;
} ) ;
} ) ;
} ) ;
setTimeout ( ( ) => {
fireEventForOtherLibariesToHookInto ( "alpine:navigated" ) ;
} ) ;
}
function fetchHtmlOrUsePrefetchedHtml ( fromDestination , callback ) {
getPretchedHtmlOr ( fromDestination , callback , ( ) => {
fetchHtml ( fromDestination , callback ) ;
} ) ;
}
function preventAlpineFromPickingUpDomChanges ( Alpine3 , callback ) {
Alpine3 . stopObservingMutations ( ) ;
callback ( ( afterAllThis ) => {
Alpine3 . startObservingMutations ( ) ;
queueMicrotask ( ( ) => {
afterAllThis ( ) ;
} ) ;
} ) ;
}
2024-08-27 12:22:51 +02:00
function fireEventForOtherLibariesToHookInto ( name , detail ) {
let event = new CustomEvent ( name , {
cancelable : true ,
bubbles : true ,
detail
} ) ;
document . dispatchEvent ( event ) ;
return event . defaultPrevented ;
2024-03-10 11:28:50 +01:00
}
function nowInitializeAlpineOnTheNewPage ( Alpine3 ) {
Alpine3 . initTree ( document . body , void 0 , ( el , skip ) => {
if ( el . _x _wasPersisted )
skip ( ) ;
} ) ;
}
function autofocusElementsWithTheAutofocusAttribute ( ) {
document . querySelector ( "[autofocus]" ) && document . querySelector ( "[autofocus]" ) . focus ( ) ;
}
function cleanupAlpineElementsOnThePageThatArentInsideAPersistedElement ( ) {
let walker = function ( root , callback ) {
Alpine . walk ( root , ( el , skip ) => {
if ( isPersistedElement ( el ) )
skip ( ) ;
if ( isTeleportTarget ( el ) )
skip ( ) ;
else
callback ( el , skip ) ;
} ) ;
} ;
Alpine . destroyTree ( document . body , walker ) ;
}
// js/plugins/history/index.js
function history2 ( Alpine3 ) {
Alpine3 . magic ( "queryString" , ( el , { interceptor : interceptor2 } ) => {
let alias ;
let alwaysShow = false ;
let usePush = false ;
return interceptor2 ( ( initialSeedValue , getter , setter , path , key ) => {
let queryKey = alias || path ;
let { initial , replace : replace2 , push : push2 , pop } = track2 ( queryKey , initialSeedValue , alwaysShow ) ;
setter ( initial ) ;
if ( ! usePush ) {
Alpine3 . effect ( ( ) => replace2 ( getter ( ) ) ) ;
} else {
Alpine3 . effect ( ( ) => push2 ( getter ( ) ) ) ;
pop ( async ( newValue ) => {
setter ( newValue ) ;
let tillTheEndOfTheMicrotaskQueue = ( ) => Promise . resolve ( ) ;
await tillTheEndOfTheMicrotaskQueue ( ) ;
} ) ;
}
return initial ;
} , ( func ) => {
func . alwaysShow = ( ) => {
alwaysShow = true ;
return func ;
} ;
func . usePush = ( ) => {
usePush = true ;
return func ;
} ;
func . as = ( key ) => {
alias = key ;
return func ;
} ;
} ) ;
} ) ;
Alpine3 . history = { track : track2 } ;
}
2024-08-27 12:22:51 +02:00
function track2 ( name , initialSeedValue , alwaysShow = false , except = null ) {
2024-03-10 11:28:50 +01:00
let { has : has2 , get : get3 , set : set3 , remove } = queryStringUtils ( ) ;
let url = new URL ( window . location . href ) ;
let isInitiallyPresentInUrl = has2 ( url , name ) ;
let initialValue = isInitiallyPresentInUrl ? get3 ( url , name ) : initialSeedValue ;
let initialValueMemo = JSON . stringify ( initialValue ) ;
2024-08-27 12:22:51 +02:00
let exceptValueMemo = [ false , null , void 0 ] . includes ( except ) ? initialSeedValue : JSON . stringify ( except ) ;
2024-03-10 11:28:50 +01:00
let hasReturnedToInitialValue = ( newValue ) => JSON . stringify ( newValue ) === initialValueMemo ;
2024-08-27 12:22:51 +02:00
let hasReturnedToExceptValue = ( newValue ) => JSON . stringify ( newValue ) === exceptValueMemo ;
2024-03-10 11:28:50 +01:00
if ( alwaysShow )
url = set3 ( url , name , initialValue ) ;
replace ( url , name , { value : initialValue } ) ;
let lock = false ;
let update = ( strategy , newValue ) => {
if ( lock )
return ;
let url2 = new URL ( window . location . href ) ;
if ( ! alwaysShow && ! isInitiallyPresentInUrl && hasReturnedToInitialValue ( newValue ) ) {
url2 = remove ( url2 , name ) ;
} else if ( newValue === void 0 ) {
url2 = remove ( url2 , name ) ;
2024-08-27 12:22:51 +02:00
} else if ( ! alwaysShow && hasReturnedToExceptValue ( newValue ) ) {
url2 = remove ( url2 , name ) ;
2024-03-10 11:28:50 +01:00
} else {
url2 = set3 ( url2 , name , newValue ) ;
}
strategy ( url2 , name , { value : newValue } ) ;
} ;
return {
initial : initialValue ,
replace ( newValue ) {
update ( replace , newValue ) ;
} ,
push ( newValue ) {
update ( push , newValue ) ;
} ,
pop ( receiver ) {
let handler4 = ( e ) => {
if ( ! e . state || ! e . state . alpine )
return ;
Object . entries ( e . state . alpine ) . forEach ( ( [ iName , { value : newValue } ] ) => {
if ( iName !== name )
return ;
lock = true ;
let result = receiver ( newValue ) ;
if ( result instanceof Promise ) {
result . finally ( ( ) => lock = false ) ;
} else {
lock = false ;
}
} ) ;
} ;
window . addEventListener ( "popstate" , handler4 ) ;
return ( ) => window . removeEventListener ( "popstate" , handler4 ) ;
}
} ;
}
function replace ( url , key , object ) {
let state = window . history . state || { } ;
if ( ! state . alpine )
state . alpine = { } ;
state . alpine [ key ] = unwrap ( object ) ;
window . history . replaceState ( state , "" , url . toString ( ) ) ;
}
function push ( url , key , object ) {
let state = window . history . state || { } ;
if ( ! state . alpine )
state . alpine = { } ;
state = { alpine : { ... state . alpine , ... { [ key ] : unwrap ( object ) } } } ;
window . history . pushState ( state , "" , url . toString ( ) ) ;
}
function unwrap ( object ) {
if ( object === void 0 )
return void 0 ;
return JSON . parse ( JSON . stringify ( object ) ) ;
}
function queryStringUtils ( ) {
return {
has ( url , key ) {
let search = url . search ;
if ( ! search )
return false ;
let data2 = fromQueryString ( search ) ;
return Object . keys ( data2 ) . includes ( key ) ;
} ,
get ( url , key ) {
let search = url . search ;
if ( ! search )
return false ;
let data2 = fromQueryString ( search ) ;
return data2 [ key ] ;
} ,
set ( url , key , value ) {
let data2 = fromQueryString ( url . search ) ;
data2 [ key ] = stripNulls ( unwrap ( value ) ) ;
url . search = toQueryString ( data2 ) ;
return url ;
} ,
remove ( url , key ) {
let data2 = fromQueryString ( url . search ) ;
delete data2 [ key ] ;
url . search = toQueryString ( data2 ) ;
return url ;
}
} ;
}
function stripNulls ( value ) {
if ( ! isObjecty ( value ) )
return value ;
for ( let key in value ) {
if ( value [ key ] === null )
delete value [ key ] ;
else
value [ key ] = stripNulls ( value [ key ] ) ;
}
return value ;
}
function toQueryString ( data2 ) {
let isObjecty2 = ( subject ) => typeof subject === "object" && subject !== null ;
let buildQueryStringEntries = ( data3 , entries2 = { } , baseKey = "" ) => {
Object . entries ( data3 ) . forEach ( ( [ iKey , iValue ] ) => {
let key = baseKey === "" ? iKey : ` ${ baseKey } [ ${ iKey } ] ` ;
if ( iValue === null ) {
entries2 [ key ] = "" ;
} else if ( ! isObjecty2 ( iValue ) ) {
entries2 [ key ] = encodeURIComponent ( iValue ) . replaceAll ( "%20" , "+" ) . replaceAll ( "%2C" , "," ) ;
} else {
entries2 = { ... entries2 , ... buildQueryStringEntries ( iValue , entries2 , key ) } ;
}
} ) ;
return entries2 ;
} ;
let entries = buildQueryStringEntries ( data2 ) ;
return Object . entries ( entries ) . map ( ( [ key , value ] ) => ` ${ key } = ${ value } ` ) . join ( "&" ) ;
}
function fromQueryString ( search ) {
search = search . replace ( "?" , "" ) ;
if ( search === "" )
return { } ;
let insertDotNotatedValueIntoData = ( key , value , data3 ) => {
let [ first2 , second , ... rest ] = key . split ( "." ) ;
if ( ! second )
return data3 [ key ] = value ;
if ( data3 [ first2 ] === void 0 ) {
data3 [ first2 ] = isNaN ( second ) ? { } : [ ] ;
}
insertDotNotatedValueIntoData ( [ second , ... rest ] . join ( "." ) , value , data3 [ first2 ] ) ;
} ;
let entries = search . split ( "&" ) . map ( ( i ) => i . split ( "=" ) ) ;
2024-08-27 12:22:51 +02:00
let data2 = /* @__PURE__ */ Object . create ( null ) ;
2024-03-10 11:28:50 +01:00
entries . forEach ( ( [ key , value ] ) => {
2024-08-27 12:22:51 +02:00
if ( typeof value == "undefined" )
return ;
2024-03-10 11:28:50 +01:00
value = decodeURIComponent ( value . replaceAll ( "+" , "%20" ) ) ;
if ( ! key . includes ( "[" ) ) {
data2 [ key ] = value ;
} else {
let dotNotatedKey = key . replaceAll ( "[" , "." ) . replaceAll ( "]" , "" ) ;
insertDotNotatedValueIntoData ( dotNotatedKey , value , data2 ) ;
}
} ) ;
return data2 ;
}
2024-08-27 12:22:51 +02:00
// node_modules/@alpinejs/morph/dist/module.esm.js
2024-03-10 11:28:50 +01:00
function morph ( from , toHtml , options ) {
monkeyPatchDomSetAttributeToAllowAtSymbols ( ) ;
let fromEl ;
let toEl ;
let key , lookahead , updating , updated , removing , removed , adding , added ;
function assignOptions ( options2 = { } ) {
let defaultGetKey = ( el ) => el . getAttribute ( "key" ) ;
let noop = ( ) => {
} ;
updating = options2 . updating || noop ;
updated = options2 . updated || noop ;
removing = options2 . removing || noop ;
removed = options2 . removed || noop ;
adding = options2 . adding || noop ;
added = options2 . added || noop ;
key = options2 . key || defaultGetKey ;
lookahead = options2 . lookahead || false ;
}
function patch ( from2 , to ) {
if ( differentElementNamesTypesOrKeys ( from2 , to ) ) {
return swapElements ( from2 , to ) ;
}
let updateChildrenOnly = false ;
if ( shouldSkip ( updating , from2 , to , ( ) => updateChildrenOnly = true ) )
return ;
if ( from2 . nodeType === 1 && window . Alpine ) {
window . Alpine . cloneNode ( from2 , to ) ;
2024-08-27 12:22:51 +02:00
if ( from2 . _x _teleport && to . _x _teleport ) {
patch ( from2 . _x _teleport , to . _x _teleport ) ;
}
2024-03-10 11:28:50 +01:00
}
if ( textOrComment ( to ) ) {
patchNodeValue ( from2 , to ) ;
updated ( from2 , to ) ;
return ;
}
if ( ! updateChildrenOnly ) {
patchAttributes ( from2 , to ) ;
}
updated ( from2 , to ) ;
patchChildren ( from2 , to ) ;
}
function differentElementNamesTypesOrKeys ( from2 , to ) {
return from2 . nodeType != to . nodeType || from2 . nodeName != to . nodeName || getKey ( from2 ) != getKey ( to ) ;
}
function swapElements ( from2 , to ) {
if ( shouldSkip ( removing , from2 ) )
return ;
let toCloned = to . cloneNode ( true ) ;
if ( shouldSkip ( adding , toCloned ) )
return ;
from2 . replaceWith ( toCloned ) ;
removed ( from2 ) ;
added ( toCloned ) ;
}
function patchNodeValue ( from2 , to ) {
let value = to . nodeValue ;
if ( from2 . nodeValue !== value ) {
from2 . nodeValue = value ;
}
}
function patchAttributes ( from2 , to ) {
if ( from2 . _x _transitioning )
return ;
if ( from2 . _x _isShown && ! to . _x _isShown ) {
return ;
}
if ( ! from2 . _x _isShown && to . _x _isShown ) {
return ;
}
let domAttributes = Array . from ( from2 . attributes ) ;
let toAttributes = Array . from ( to . attributes ) ;
for ( let i = domAttributes . length - 1 ; i >= 0 ; i -- ) {
let name = domAttributes [ i ] . name ;
if ( ! to . hasAttribute ( name ) ) {
from2 . removeAttribute ( name ) ;
}
}
for ( let i = toAttributes . length - 1 ; i >= 0 ; i -- ) {
let name = toAttributes [ i ] . name ;
let value = toAttributes [ i ] . value ;
if ( from2 . getAttribute ( name ) !== value ) {
from2 . setAttribute ( name , value ) ;
}
}
}
function patchChildren ( from2 , to ) {
let fromKeys = keyToMap ( from2 . children ) ;
let fromKeyHoldovers = { } ;
let currentTo = getFirstNode ( to ) ;
let currentFrom = getFirstNode ( from2 ) ;
while ( currentTo ) {
seedingMatchingId ( currentTo , currentFrom ) ;
let toKey = getKey ( currentTo ) ;
let fromKey = getKey ( currentFrom ) ;
if ( ! currentFrom ) {
if ( toKey && fromKeyHoldovers [ toKey ] ) {
let holdover = fromKeyHoldovers [ toKey ] ;
from2 . appendChild ( holdover ) ;
currentFrom = holdover ;
} else {
if ( ! shouldSkip ( adding , currentTo ) ) {
let clone2 = currentTo . cloneNode ( true ) ;
from2 . appendChild ( clone2 ) ;
added ( clone2 ) ;
}
currentTo = getNextSibling ( to , currentTo ) ;
continue ;
}
}
let isIf = ( node ) => node && node . nodeType === 8 && node . textContent === "[if BLOCK]><![endif]" ;
let isEnd = ( node ) => node && node . nodeType === 8 && node . textContent === "[if ENDBLOCK]><![endif]" ;
if ( isIf ( currentTo ) && isIf ( currentFrom ) ) {
let nestedIfCount = 0 ;
let fromBlockStart = currentFrom ;
while ( currentFrom ) {
let next = getNextSibling ( from2 , currentFrom ) ;
if ( isIf ( next ) ) {
nestedIfCount ++ ;
} else if ( isEnd ( next ) && nestedIfCount > 0 ) {
nestedIfCount -- ;
} else if ( isEnd ( next ) && nestedIfCount === 0 ) {
currentFrom = next ;
break ;
}
currentFrom = next ;
}
let fromBlockEnd = currentFrom ;
nestedIfCount = 0 ;
let toBlockStart = currentTo ;
while ( currentTo ) {
let next = getNextSibling ( to , currentTo ) ;
if ( isIf ( next ) ) {
nestedIfCount ++ ;
} else if ( isEnd ( next ) && nestedIfCount > 0 ) {
nestedIfCount -- ;
} else if ( isEnd ( next ) && nestedIfCount === 0 ) {
currentTo = next ;
break ;
}
currentTo = next ;
}
let toBlockEnd = currentTo ;
let fromBlock = new Block ( fromBlockStart , fromBlockEnd ) ;
let toBlock = new Block ( toBlockStart , toBlockEnd ) ;
patchChildren ( fromBlock , toBlock ) ;
continue ;
}
if ( currentFrom . nodeType === 1 && lookahead && ! currentFrom . isEqualNode ( currentTo ) ) {
let nextToElementSibling = getNextSibling ( to , currentTo ) ;
let found = false ;
while ( ! found && nextToElementSibling ) {
if ( nextToElementSibling . nodeType === 1 && currentFrom . isEqualNode ( nextToElementSibling ) ) {
found = true ;
currentFrom = addNodeBefore ( from2 , currentTo , currentFrom ) ;
fromKey = getKey ( currentFrom ) ;
}
nextToElementSibling = getNextSibling ( to , nextToElementSibling ) ;
}
}
if ( toKey !== fromKey ) {
if ( ! toKey && fromKey ) {
fromKeyHoldovers [ fromKey ] = currentFrom ;
currentFrom = addNodeBefore ( from2 , currentTo , currentFrom ) ;
fromKeyHoldovers [ fromKey ] . remove ( ) ;
currentFrom = getNextSibling ( from2 , currentFrom ) ;
currentTo = getNextSibling ( to , currentTo ) ;
continue ;
}
if ( toKey && ! fromKey ) {
if ( fromKeys [ toKey ] ) {
currentFrom . replaceWith ( fromKeys [ toKey ] ) ;
currentFrom = fromKeys [ toKey ] ;
}
}
if ( toKey && fromKey ) {
let fromKeyNode = fromKeys [ toKey ] ;
if ( fromKeyNode ) {
fromKeyHoldovers [ fromKey ] = currentFrom ;
currentFrom . replaceWith ( fromKeyNode ) ;
currentFrom = fromKeyNode ;
} else {
fromKeyHoldovers [ fromKey ] = currentFrom ;
currentFrom = addNodeBefore ( from2 , currentTo , currentFrom ) ;
fromKeyHoldovers [ fromKey ] . remove ( ) ;
currentFrom = getNextSibling ( from2 , currentFrom ) ;
currentTo = getNextSibling ( to , currentTo ) ;
continue ;
}
}
}
let currentFromNext = currentFrom && getNextSibling ( from2 , currentFrom ) ;
patch ( currentFrom , currentTo ) ;
currentTo = currentTo && getNextSibling ( to , currentTo ) ;
currentFrom = currentFromNext ;
}
let removals = [ ] ;
while ( currentFrom ) {
if ( ! shouldSkip ( removing , currentFrom ) )
removals . push ( currentFrom ) ;
currentFrom = getNextSibling ( from2 , currentFrom ) ;
}
while ( removals . length ) {
let domForRemoval = removals . shift ( ) ;
domForRemoval . remove ( ) ;
removed ( domForRemoval ) ;
}
}
function getKey ( el ) {
return el && el . nodeType === 1 && key ( el ) ;
}
function keyToMap ( els2 ) {
let map = { } ;
for ( let el of els2 ) {
let theKey = getKey ( el ) ;
if ( theKey ) {
map [ theKey ] = el ;
}
}
return map ;
}
function addNodeBefore ( parent , node , beforeMe ) {
if ( ! shouldSkip ( adding , node ) ) {
let clone2 = node . cloneNode ( true ) ;
parent . insertBefore ( clone2 , beforeMe ) ;
added ( clone2 ) ;
return clone2 ;
}
return node ;
}
assignOptions ( options ) ;
fromEl = from ;
toEl = typeof toHtml === "string" ? createElement ( toHtml ) : toHtml ;
if ( window . Alpine && window . Alpine . closestDataStack && ! from . _x _dataStack ) {
toEl . _x _dataStack = window . Alpine . closestDataStack ( from ) ;
toEl . _x _dataStack && window . Alpine . cloneNode ( from , toEl ) ;
}
patch ( from , toEl ) ;
fromEl = void 0 ;
toEl = void 0 ;
return from ;
}
morph . step = ( ) => {
} ;
morph . log = ( ) => {
} ;
function shouldSkip ( hook , ... args ) {
let skip = false ;
hook ( ... args , ( ) => skip = true ) ;
return skip ;
}
var patched = false ;
function createElement ( html ) {
const template = document . createElement ( "template" ) ;
template . innerHTML = html ;
return template . content . firstElementChild ;
}
function textOrComment ( el ) {
return el . nodeType === 3 || el . nodeType === 8 ;
}
var Block = class {
constructor ( start3 , end ) {
this . startComment = start3 ;
this . endComment = end ;
}
get children ( ) {
let children = [ ] ;
let currentNode = this . startComment . nextSibling ;
while ( currentNode && currentNode !== this . endComment ) {
children . push ( currentNode ) ;
currentNode = currentNode . nextSibling ;
}
return children ;
}
appendChild ( child ) {
this . endComment . before ( child ) ;
}
get firstChild ( ) {
let first2 = this . startComment . nextSibling ;
if ( first2 === this . endComment )
return ;
return first2 ;
}
nextNode ( reference ) {
let next = reference . nextSibling ;
if ( next === this . endComment )
return ;
return next ;
}
insertBefore ( newNode , reference ) {
reference . before ( newNode ) ;
return newNode ;
}
} ;
function getFirstNode ( parent ) {
return parent . firstChild ;
}
function getNextSibling ( parent , reference ) {
let next ;
if ( parent instanceof Block ) {
next = parent . nextNode ( reference ) ;
} else {
next = reference . nextSibling ;
}
return next ;
}
function monkeyPatchDomSetAttributeToAllowAtSymbols ( ) {
if ( patched )
return ;
patched = true ;
let original = Element . prototype . setAttribute ;
let hostDiv = document . createElement ( "div" ) ;
Element . prototype . setAttribute = function newSetAttribute ( name , value ) {
if ( ! name . includes ( "@" ) ) {
return original . call ( this , name , value ) ;
}
hostDiv . innerHTML = ` <span ${ name } =" ${ value } "></span> ` ;
let attr = hostDiv . firstElementChild . getAttributeNode ( name ) ;
hostDiv . firstElementChild . removeAttributeNode ( attr ) ;
this . setAttributeNode ( attr ) ;
} ;
}
function seedingMatchingId ( to , from ) {
let fromId = from && from . _x _bindings && from . _x _bindings . id ;
if ( ! fromId )
return ;
to . setAttribute ( "id" , fromId ) ;
to . id = fromId ;
}
2024-08-27 12:22:51 +02:00
function src _default8 ( Alpine3 ) {
2024-03-10 11:28:50 +01:00
Alpine3 . morph = morph ;
}
2024-08-27 12:22:51 +02:00
var module _default8 = src _default8 ;
2024-03-10 11:28:50 +01:00
2024-08-27 12:22:51 +02:00
// node_modules/@alpinejs/mask/dist/module.esm.js
function src _default9 ( Alpine3 ) {
Alpine3 . directive ( "mask" , ( el , { value , expression } , { effect : effect3 , evaluateLater : evaluateLater2 , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let templateFn = ( ) => expression ;
let lastInputValue = "" ;
queueMicrotask ( ( ) => {
if ( [ "function" , "dynamic" ] . includes ( value ) ) {
let evaluator = evaluateLater2 ( expression ) ;
effect3 ( ( ) => {
templateFn = ( input ) => {
let result ;
Alpine3 . dontAutoEvaluateFunctions ( ( ) => {
evaluator ( ( value2 ) => {
result = typeof value2 === "function" ? value2 ( input ) : value2 ;
} , { scope : {
"$input" : input ,
"$money" : formatMoney . bind ( { el } )
} } ) ;
} ) ;
return result ;
} ;
processInputValue ( el , false ) ;
} ) ;
} else {
processInputValue ( el , false ) ;
}
if ( el . _x _model )
el . _x _model . set ( el . value ) ;
} ) ;
const controller = new AbortController ( ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => {
2024-03-10 11:28:50 +01:00
controller . abort ( ) ;
} ) ;
el . addEventListener ( "input" , ( ) => processInputValue ( el ) , {
signal : controller . signal ,
capture : true
} ) ;
el . addEventListener ( "blur" , ( ) => processInputValue ( el , false ) , { signal : controller . signal } ) ;
function processInputValue ( el2 , shouldRestoreCursor = true ) {
let input = el2 . value ;
let template = templateFn ( input ) ;
if ( ! template || template === "false" )
return false ;
if ( lastInputValue . length - el2 . value . length === 1 ) {
return lastInputValue = el2 . value ;
}
let setInput = ( ) => {
lastInputValue = el2 . value = formatInput ( input , template ) ;
} ;
if ( shouldRestoreCursor ) {
restoreCursorPosition ( el2 , template , ( ) => {
setInput ( ) ;
} ) ;
} else {
setInput ( ) ;
}
}
function formatInput ( input , template ) {
if ( input === "" )
return "" ;
let strippedDownInput = stripDown ( template , input ) ;
let rebuiltInput = buildUp ( template , strippedDownInput ) ;
return rebuiltInput ;
}
} ) . before ( "model" ) ;
}
function restoreCursorPosition ( el , template , callback ) {
let cursorPosition = el . selectionStart ;
let unformattedValue = el . value ;
callback ( ) ;
let beforeLeftOfCursorBeforeFormatting = unformattedValue . slice ( 0 , cursorPosition ) ;
let newPosition = buildUp ( template , stripDown ( template , beforeLeftOfCursorBeforeFormatting ) ) . length ;
el . setSelectionRange ( newPosition , newPosition ) ;
}
function stripDown ( template , input ) {
let inputToBeStripped = input ;
let output = "" ;
let regexes = {
"9" : /[0-9]/ ,
"a" : /[a-zA-Z]/ ,
"*" : /[a-zA-Z0-9]/
} ;
let wildcardTemplate = "" ;
for ( let i = 0 ; i < template . length ; i ++ ) {
if ( [ "9" , "a" , "*" ] . includes ( template [ i ] ) ) {
wildcardTemplate += template [ i ] ;
continue ;
}
for ( let j = 0 ; j < inputToBeStripped . length ; j ++ ) {
if ( inputToBeStripped [ j ] === template [ i ] ) {
inputToBeStripped = inputToBeStripped . slice ( 0 , j ) + inputToBeStripped . slice ( j + 1 ) ;
break ;
}
}
}
for ( let i = 0 ; i < wildcardTemplate . length ; i ++ ) {
let found = false ;
for ( let j = 0 ; j < inputToBeStripped . length ; j ++ ) {
if ( regexes [ wildcardTemplate [ i ] ] . test ( inputToBeStripped [ j ] ) ) {
output += inputToBeStripped [ j ] ;
inputToBeStripped = inputToBeStripped . slice ( 0 , j ) + inputToBeStripped . slice ( j + 1 ) ;
found = true ;
break ;
}
}
if ( ! found )
break ;
}
return output ;
}
function buildUp ( template , input ) {
let clean = Array . from ( input ) ;
let output = "" ;
for ( let i = 0 ; i < template . length ; i ++ ) {
if ( ! [ "9" , "a" , "*" ] . includes ( template [ i ] ) ) {
output += template [ i ] ;
continue ;
}
if ( clean . length === 0 )
break ;
output += clean . shift ( ) ;
}
return output ;
}
function formatMoney ( input , delimiter = "." , thousands , precision = 2 ) {
if ( input === "-" )
return "-" ;
if ( /^\D+$/ . test ( input ) )
return "9" ;
if ( thousands === null || thousands === void 0 ) {
thousands = delimiter === "," ? "." : "," ;
}
let addThousands = ( input2 , thousands2 ) => {
let output = "" ;
let counter = 0 ;
for ( let i = input2 . length - 1 ; i >= 0 ; i -- ) {
if ( input2 [ i ] === thousands2 )
continue ;
if ( counter === 3 ) {
output = input2 [ i ] + thousands2 + output ;
counter = 0 ;
} else {
output = input2 [ i ] + output ;
}
counter ++ ;
}
return output ;
} ;
let minus = input . startsWith ( "-" ) ? "-" : "" ;
let strippedInput = input . replaceAll ( new RegExp ( ` [^0-9 \\ ${ delimiter } ] ` , "g" ) , "" ) ;
let template = Array . from ( { length : strippedInput . split ( delimiter ) [ 0 ] . length } ) . fill ( "9" ) . join ( "" ) ;
template = ` ${ minus } ${ addThousands ( template , thousands ) } ` ;
if ( precision > 0 && input . includes ( delimiter ) )
template += ` ${ delimiter } ` + "9" . repeat ( precision ) ;
queueMicrotask ( ( ) => {
if ( this . el . value . endsWith ( delimiter ) )
return ;
if ( this . el . value [ this . el . selectionStart - 1 ] === delimiter ) {
this . el . setSelectionRange ( this . el . selectionStart - 1 , this . el . selectionStart - 1 ) ;
}
} ) ;
return template ;
}
2024-08-27 12:22:51 +02:00
var module _default9 = src _default9 ;
2024-03-10 11:28:50 +01:00
// js/lifecycle.js
function start2 ( ) {
setTimeout ( ( ) => ensureLivewireScriptIsntMisplaced ( ) ) ;
dispatch ( document , "livewire:init" ) ;
dispatch ( document , "livewire:initializing" ) ;
2024-08-27 12:22:51 +02:00
module _default . plugin ( module _default8 ) ;
2024-03-10 11:28:50 +01:00
module _default . plugin ( history2 ) ;
module _default . plugin ( module _default5 ) ;
module _default . plugin ( module _default6 ) ;
2024-08-27 12:22:51 +02:00
module _default . plugin ( module _default2 ) ;
module _default . plugin ( module _default7 ) ;
2024-03-10 11:28:50 +01:00
module _default . plugin ( module _default3 ) ;
module _default . plugin ( module _default4 ) ;
module _default . plugin ( navigate _default ) ;
2024-08-27 12:22:51 +02:00
module _default . plugin ( module _default9 ) ;
2024-03-10 11:28:50 +01:00
module _default . addRootSelector ( ( ) => "[wire\\:id]" ) ;
module _default . onAttributesAdded ( ( el , attributes ) => {
if ( ! Array . from ( attributes ) . some ( ( attribute ) => matchesForLivewireDirective ( attribute . name ) ) )
return ;
let component = closestComponent ( el , false ) ;
if ( ! component )
return ;
attributes . forEach ( ( attribute ) => {
if ( ! matchesForLivewireDirective ( attribute . name ) )
return ;
let directive3 = extractDirective ( el , attribute . name ) ;
trigger2 ( "directive.init" , { el , component , directive : directive3 , cleanup : ( callback ) => {
module _default . onAttributeRemoved ( el , directive3 . raw , callback ) ;
} } ) ;
} ) ;
} ) ;
module _default . interceptInit ( module _default . skipDuringClone ( ( el ) => {
if ( ! Array . from ( el . attributes ) . some ( ( attribute ) => matchesForLivewireDirective ( attribute . name ) ) )
return ;
if ( el . hasAttribute ( "wire:id" ) ) {
let component2 = initComponent ( el ) ;
module _default . onAttributeRemoved ( el , "wire:id" , ( ) => {
destroyComponent ( component2 . id ) ;
} ) ;
}
let component = closestComponent ( el , false ) ;
if ( component ) {
trigger2 ( "element.init" , { el , component } ) ;
let directives2 = Array . from ( el . getAttributeNames ( ) ) . filter ( ( name ) => matchesForLivewireDirective ( name ) ) . map ( ( name ) => extractDirective ( el , name ) ) ;
directives2 . forEach ( ( directive3 ) => {
trigger2 ( "directive.init" , { el , component , directive : directive3 , cleanup : ( callback ) => {
module _default . onAttributeRemoved ( el , directive3 . raw , callback ) ;
} } ) ;
} ) ;
}
} ) ) ;
module _default . start ( ) ;
setTimeout ( ( ) => window . Livewire . initialRenderIsFinished = true ) ;
dispatch ( document , "livewire:initialized" ) ;
}
function ensureLivewireScriptIsntMisplaced ( ) {
let el = document . querySelector ( "script[data-update-uri][data-csrf]" ) ;
if ( ! el )
return ;
let livewireEl = el . closest ( "[wire\\:id]" ) ;
if ( livewireEl ) {
console . warn ( "Livewire: missing closing tags found. Ensure your template elements contain matching closing tags." , livewireEl ) ;
}
}
2024-08-27 12:22:51 +02:00
// js/features/supportListeners.js
on2 ( "effect" , ( { component , effects } ) => {
registerListeners ( component , effects . listeners || [ ] ) ;
2024-03-10 11:28:50 +01:00
} ) ;
2024-08-27 12:22:51 +02:00
function registerListeners ( component , listeners2 ) {
listeners2 . forEach ( ( name ) => {
let handler4 = ( e ) => {
if ( e . _ _livewire )
e . _ _livewire . receivedBy . push ( component ) ;
component . $wire . call ( "__dispatch" , name , e . detail || { } ) ;
} ;
window . addEventListener ( name , handler4 ) ;
component . addCleanup ( ( ) => window . removeEventListener ( name , handler4 ) ) ;
component . el . addEventListener ( name , ( e ) => {
if ( ! e . _ _livewire )
return ;
if ( e . bubbles )
return ;
if ( e . _ _livewire )
e . _ _livewire . receivedBy . push ( component . id ) ;
component . $wire . call ( "__dispatch" , name , e . detail || { } ) ;
2024-03-10 11:28:50 +01:00
} ) ;
} ) ;
}
// js/features/supportScriptsAndAssets.js
var executedScripts = /* @__PURE__ */ new WeakMap ( ) ;
var executedAssets = /* @__PURE__ */ new Set ( ) ;
on2 ( "payload.intercept" , async ( { assets } ) => {
if ( ! assets )
return ;
for ( let [ key , asset ] of Object . entries ( assets ) ) {
await onlyIfAssetsHaventBeenLoadedAlreadyOnThisPage ( key , async ( ) => {
await addAssetsToHeadTagOfPage ( asset ) ;
} ) ;
}
} ) ;
on2 ( "component.init" , ( { component } ) => {
let assets = component . snapshot . memo . assets ;
if ( assets ) {
assets . forEach ( ( key ) => {
if ( executedAssets . has ( key ) )
return ;
executedAssets . add ( key ) ;
} ) ;
}
} ) ;
on2 ( "effect" , ( { component , effects } ) => {
let scripts = effects . scripts ;
if ( scripts ) {
Object . entries ( scripts ) . forEach ( ( [ key , content ] ) => {
onlyIfScriptHasntBeenRunAlreadyForThisComponent ( component , key , ( ) => {
let scriptContent = extractScriptTagContent ( content ) ;
module _default . dontAutoEvaluateFunctions ( ( ) => {
module _default . evaluate ( component . el , scriptContent , { "$wire" : component . $wire } ) ;
} ) ;
} ) ;
} ) ;
}
} ) ;
function onlyIfScriptHasntBeenRunAlreadyForThisComponent ( component , key , callback ) {
if ( executedScripts . has ( component ) ) {
let alreadyRunKeys2 = executedScripts . get ( component ) ;
if ( alreadyRunKeys2 . includes ( key ) )
return ;
}
callback ( ) ;
if ( ! executedScripts . has ( component ) )
executedScripts . set ( component , [ ] ) ;
let alreadyRunKeys = executedScripts . get ( component ) ;
alreadyRunKeys . push ( key ) ;
executedScripts . set ( component , alreadyRunKeys ) ;
}
function extractScriptTagContent ( rawHtml ) {
let scriptRegex = /<script\b[^>]*>([\s\S]*?)<\/script>/gm ;
let matches2 = scriptRegex . exec ( rawHtml ) ;
let innards = matches2 && matches2 [ 1 ] ? matches2 [ 1 ] . trim ( ) : "" ;
return innards ;
}
async function onlyIfAssetsHaventBeenLoadedAlreadyOnThisPage ( key , callback ) {
if ( executedAssets . has ( key ) )
return ;
await callback ( ) ;
executedAssets . add ( key ) ;
}
async function addAssetsToHeadTagOfPage ( rawHtml ) {
let newDocument = new DOMParser ( ) . parseFromString ( rawHtml , "text/html" ) ;
let newHead = document . adoptNode ( newDocument . head ) ;
for ( let child of newHead . children ) {
try {
await runAssetSynchronously ( child ) ;
} catch ( error2 ) {
}
}
}
async function runAssetSynchronously ( child ) {
return new Promise ( ( resolve , reject ) => {
if ( isScript2 ( child ) ) {
let script = cloneScriptTag2 ( child ) ;
if ( script . src ) {
script . onload = ( ) => resolve ( ) ;
script . onerror = ( ) => reject ( ) ;
} else {
resolve ( ) ;
}
document . head . appendChild ( script ) ;
} else {
document . head . appendChild ( child ) ;
resolve ( ) ;
}
} ) ;
}
function isScript2 ( el ) {
return el . tagName . toLowerCase ( ) === "script" ;
}
function cloneScriptTag2 ( el ) {
let script = document . createElement ( "script" ) ;
script . textContent = el . textContent ;
script . async = el . async ;
for ( let attr of el . attributes ) {
script . setAttribute ( attr . name , attr . value ) ;
}
return script ;
}
// js/features/supportJsEvaluation.js
on2 ( "effect" , ( { component , effects } ) => {
let js = effects . js ;
let xjs = effects . xjs ;
if ( js ) {
Object . entries ( js ) . forEach ( ( [ method , body ] ) => {
overrideMethod ( component , method , ( ) => {
module _default . evaluate ( component . el , body ) ;
} ) ;
} ) ;
}
if ( xjs ) {
xjs . forEach ( ( expression ) => {
module _default . evaluate ( component . el , expression ) ;
} ) ;
}
} ) ;
2024-08-27 12:22:51 +02:00
// js/morph.js
function morph2 ( component , el , html ) {
let wrapperTag = el . parentElement ? el . parentElement . tagName . toLowerCase ( ) : "div" ;
let wrapper = document . createElement ( wrapperTag ) ;
wrapper . innerHTML = html ;
let parentComponent ;
try {
parentComponent = closestComponent ( el . parentElement ) ;
} catch ( e ) {
}
parentComponent && ( wrapper . _ _livewire = parentComponent ) ;
let to = wrapper . firstElementChild ;
to . _ _livewire = component ;
trigger2 ( "morph" , { el , toEl : to , component } ) ;
module _default . morph ( el , to , {
updating : ( el2 , toEl , childrenOnly , skip ) => {
if ( isntElement ( el2 ) )
return ;
trigger2 ( "morph.updating" , { el : el2 , toEl , component , skip , childrenOnly } ) ;
if ( el2 . _ _livewire _replace === true )
el2 . innerHTML = toEl . innerHTML ;
if ( el2 . _ _livewire _replace _self === true ) {
el2 . outerHTML = toEl . outerHTML ;
return skip ( ) ;
}
if ( el2 . _ _livewire _ignore === true )
return skip ( ) ;
if ( el2 . _ _livewire _ignore _self === true )
childrenOnly ( ) ;
if ( isComponentRootEl ( el2 ) && el2 . getAttribute ( "wire:id" ) !== component . id )
return skip ( ) ;
if ( isComponentRootEl ( el2 ) )
toEl . _ _livewire = component ;
} ,
updated : ( el2 ) => {
if ( isntElement ( el2 ) )
return ;
trigger2 ( "morph.updated" , { el : el2 , component } ) ;
} ,
removing : ( el2 , skip ) => {
if ( isntElement ( el2 ) )
return ;
trigger2 ( "morph.removing" , { el : el2 , component , skip } ) ;
} ,
removed : ( el2 ) => {
if ( isntElement ( el2 ) )
return ;
trigger2 ( "morph.removed" , { el : el2 , component } ) ;
} ,
adding : ( el2 ) => {
trigger2 ( "morph.adding" , { el : el2 , component } ) ;
} ,
added : ( el2 ) => {
if ( isntElement ( el2 ) )
return ;
const closestComponentId = closestComponent ( el2 ) . id ;
trigger2 ( "morph.added" , { el : el2 } ) ;
} ,
key : ( el2 ) => {
if ( isntElement ( el2 ) )
return ;
return el2 . hasAttribute ( ` wire:key ` ) ? el2 . getAttribute ( ` wire:key ` ) : el2 . hasAttribute ( ` wire:id ` ) ? el2 . getAttribute ( ` wire:id ` ) : el2 . id ;
} ,
lookahead : false
} ) ;
}
function isntElement ( el ) {
return typeof el . hasAttribute !== "function" ;
}
function isComponentRootEl ( el ) {
return el . hasAttribute ( "wire:id" ) ;
}
// js/features/supportMorphDom.js
on2 ( "effect" , ( { component , effects } ) => {
let html = effects . html ;
if ( ! html )
return ;
queueMicrotask ( ( ) => {
queueMicrotask ( ( ) => {
morph2 ( component , component . el , html ) ;
} ) ;
} ) ;
} ) ;
// js/features/supportDispatches.js
on2 ( "effect" , ( { component , effects } ) => {
dispatchEvents ( component , effects . dispatches || [ ] ) ;
} ) ;
function dispatchEvents ( component , dispatches ) {
dispatches . forEach ( ( { name , params = { } , self = false , to } ) => {
if ( self )
dispatchSelf ( component , name , params ) ;
else if ( to )
dispatchTo ( to , name , params ) ;
else
dispatch3 ( component , name , params ) ;
} ) ;
}
// js/features/supportDisablingFormsDuringRequest.js
var cleanups = new Bag ( ) ;
on2 ( "directive.init" , ( { el , directive : directive3 , cleanup : cleanup2 , component } ) => setTimeout ( ( ) => {
if ( directive3 . value !== "submit" )
return ;
el . addEventListener ( "submit" , ( ) => {
let componentId = directive3 . expression . startsWith ( "$parent" ) ? component . parent . id : component . id ;
let cleanup3 = disableForm ( el ) ;
cleanups . add ( componentId , cleanup3 ) ;
} ) ;
} ) ) ;
on2 ( "commit" , ( { component , respond } ) => {
respond ( ( ) => {
cleanups . each ( component . id , ( i ) => i ( ) ) ;
cleanups . remove ( component . id ) ;
} ) ;
} ) ;
function disableForm ( formEl ) {
let undos = [ ] ;
module _default . walk ( formEl , ( el , skip ) => {
if ( ! formEl . contains ( el ) )
return ;
if ( el . hasAttribute ( "wire:ignore" ) )
return skip ( ) ;
if ( shouldMarkDisabled ( el ) ) {
undos . push ( markDisabled ( el ) ) ;
} else if ( shouldMarkReadOnly ( el ) ) {
undos . push ( markReadOnly ( el ) ) ;
}
} ) ;
return ( ) => {
while ( undos . length > 0 )
undos . shift ( ) ( ) ;
} ;
}
function shouldMarkDisabled ( el ) {
let tag = el . tagName . toLowerCase ( ) ;
if ( tag === "select" )
return true ;
if ( tag === "button" && el . type === "submit" )
return true ;
if ( tag === "input" && ( el . type === "checkbox" || el . type === "radio" ) )
return true ;
return false ;
}
function shouldMarkReadOnly ( el ) {
return [ "input" , "textarea" ] . includes ( el . tagName . toLowerCase ( ) ) ;
}
function markDisabled ( el ) {
let undo = el . disabled ? ( ) => {
} : ( ) => el . disabled = false ;
el . disabled = true ;
return undo ;
}
function markReadOnly ( el ) {
let undo = el . readOnly ? ( ) => {
} : ( ) => el . readOnly = false ;
el . readOnly = true ;
return undo ;
}
// js/features/supportPropsAndModelables.js
on2 ( "commit.pooling" , ( { commits } ) => {
commits . forEach ( ( commit ) => {
let component = commit . component ;
getDeepChildrenWithBindings ( component , ( child ) => {
child . $wire . $commit ( ) ;
} ) ;
} ) ;
} ) ;
on2 ( "commit.pooled" , ( { pools } ) => {
let commits = getPooledCommits ( pools ) ;
commits . forEach ( ( commit ) => {
let component = commit . component ;
getDeepChildrenWithBindings ( component , ( child ) => {
colocateCommitsByComponent ( pools , component , child ) ;
} ) ;
} ) ;
} ) ;
function getPooledCommits ( pools ) {
let commits = [ ] ;
pools . forEach ( ( pool ) => {
pool . commits . forEach ( ( commit ) => {
commits . push ( commit ) ;
} ) ;
} ) ;
return commits ;
}
function colocateCommitsByComponent ( pools , component , foreignComponent ) {
let pool = findPoolWithComponent ( pools , component ) ;
let foreignPool = findPoolWithComponent ( pools , foreignComponent ) ;
let foreignCommit = foreignPool . findCommitByComponent ( foreignComponent ) ;
foreignPool . delete ( foreignCommit ) ;
pool . add ( foreignCommit ) ;
pools . forEach ( ( pool2 ) => {
if ( pool2 . empty ( ) )
pools . delete ( pool2 ) ;
} ) ;
}
function findPoolWithComponent ( pools , component ) {
for ( let [ idx , pool ] of pools . entries ( ) ) {
if ( pool . hasCommitFor ( component ) )
return pool ;
}
}
function getDeepChildrenWithBindings ( component , callback ) {
getDeepChildren ( component , ( child ) => {
if ( hasReactiveProps ( child ) || hasWireModelableBindings ( child ) ) {
callback ( child ) ;
}
} ) ;
}
function hasReactiveProps ( component ) {
let meta = component . snapshot . memo ;
let props = meta . props ;
return ! ! props ;
}
function hasWireModelableBindings ( component ) {
let meta = component . snapshot . memo ;
let bindings = meta . bindings ;
return ! ! bindings ;
}
function getDeepChildren ( component , callback ) {
component . children . forEach ( ( child ) => {
callback ( child ) ;
getDeepChildren ( child , callback ) ;
} ) ;
}
// js/features/supportFileDownloads.js
on2 ( "commit" , ( { succeed } ) => {
succeed ( ( { effects } ) => {
let download = effects . download ;
if ( ! download )
return ;
let urlObject = window . webkitURL || window . URL ;
let url = urlObject . createObjectURL ( base64toBlob ( download . content , download . contentType ) ) ;
let invisibleLink = document . createElement ( "a" ) ;
invisibleLink . style . display = "none" ;
invisibleLink . href = url ;
invisibleLink . download = download . name ;
document . body . appendChild ( invisibleLink ) ;
invisibleLink . click ( ) ;
setTimeout ( function ( ) {
urlObject . revokeObjectURL ( url ) ;
} , 0 ) ;
} ) ;
} ) ;
function base64toBlob ( b64Data , contentType = "" , sliceSize = 512 ) {
const byteCharacters = atob ( b64Data ) ;
const byteArrays = [ ] ;
if ( contentType === null )
contentType = "" ;
for ( let offset2 = 0 ; offset2 < byteCharacters . length ; offset2 += sliceSize ) {
let slice = byteCharacters . slice ( offset2 , offset2 + sliceSize ) ;
let byteNumbers = new Array ( slice . length ) ;
for ( let i = 0 ; i < slice . length ; i ++ ) {
byteNumbers [ i ] = slice . charCodeAt ( i ) ;
}
let byteArray = new Uint8Array ( byteNumbers ) ;
byteArrays . push ( byteArray ) ;
}
return new Blob ( byteArrays , { type : contentType } ) ;
}
// js/features/supportLazyLoading.js
var componentsThatWantToBeBundled = /* @__PURE__ */ new WeakSet ( ) ;
var componentsThatAreLazy = /* @__PURE__ */ new WeakSet ( ) ;
on2 ( "component.init" , ( { component } ) => {
let memo = component . snapshot . memo ;
if ( memo . lazyLoaded === void 0 )
return ;
componentsThatAreLazy . add ( component ) ;
if ( memo . lazyIsolated !== void 0 && memo . lazyIsolated === false ) {
componentsThatWantToBeBundled . add ( component ) ;
}
} ) ;
2024-03-10 11:28:50 +01:00
on2 ( "commit.pooling" , ( { commits } ) => {
commits . forEach ( ( commit ) => {
if ( ! componentsThatAreLazy . has ( commit . component ) )
return ;
if ( componentsThatWantToBeBundled . has ( commit . component ) ) {
commit . isolate = false ;
componentsThatWantToBeBundled . delete ( commit . component ) ;
} else {
commit . isolate = true ;
}
componentsThatAreLazy . delete ( commit . component ) ;
} ) ;
} ) ;
// js/features/supportQueryString.js
2024-08-27 12:22:51 +02:00
on2 ( "effect" , ( { component , effects , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let queryString = effects [ "url" ] ;
if ( ! queryString )
return ;
Object . entries ( queryString ) . forEach ( ( [ key , value ] ) => {
let { name , as , use , alwaysShow , except } = normalizeQueryStringEntry ( key , value ) ;
if ( ! as )
as = name ;
let initialValue = [ false , null , void 0 ] . includes ( except ) ? dataGet ( component . ephemeral , name ) : except ;
2024-08-27 12:22:51 +02:00
let { replace : replace2 , push : push2 , pop } = track2 ( as , initialValue , alwaysShow , except ) ;
2024-03-10 11:28:50 +01:00
if ( use === "replace" ) {
let effectReference = module _default . effect ( ( ) => {
replace2 ( dataGet ( component . reactive , name ) ) ;
} ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => module _default . release ( effectReference ) ) ;
2024-03-10 11:28:50 +01:00
} else if ( use === "push" ) {
let forgetCommitHandler = on2 ( "commit" , ( { component : commitComponent , succeed } ) => {
if ( component !== commitComponent )
return ;
let beforeValue = dataGet ( component . canonical , name ) ;
succeed ( ( ) => {
let afterValue = dataGet ( component . canonical , name ) ;
if ( JSON . stringify ( beforeValue ) === JSON . stringify ( afterValue ) )
return ;
push2 ( afterValue ) ;
} ) ;
} ) ;
let forgetPopHandler = pop ( async ( newValue ) => {
await component . $wire . set ( name , newValue ) ;
document . querySelectorAll ( "input" ) . forEach ( ( el ) => {
el . _x _forceModelUpdate && el . _x _forceModelUpdate ( el . _x _model . get ( ) ) ;
} ) ;
} ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => {
2024-03-10 11:28:50 +01:00
forgetCommitHandler ( ) ;
forgetPopHandler ( ) ;
} ) ;
}
} ) ;
} ) ;
function normalizeQueryStringEntry ( key , value ) {
let defaults = { use : "replace" , alwaysShow : false } ;
if ( typeof value === "string" ) {
return { ... defaults , name : value , as : value } ;
} else {
let fullerDefaults = { ... defaults , name : key , as : key } ;
return { ... fullerDefaults , ... value } ;
}
}
// js/features/supportLaravelEcho.js
on2 ( "request" , ( { options } ) => {
if ( window . Echo ) {
options . headers [ "X-Socket-ID" ] = window . Echo . socketId ( ) ;
}
} ) ;
on2 ( "effect" , ( { component , effects } ) => {
let listeners2 = effects . listeners || [ ] ;
listeners2 . forEach ( ( event ) => {
if ( event . startsWith ( "echo" ) ) {
if ( typeof window . Echo === "undefined" ) {
console . warn ( "Laravel Echo cannot be found" ) ;
return ;
}
let event _parts = event . split ( /(echo:|echo-)|:|,/ ) ;
if ( event _parts [ 1 ] == "echo:" ) {
event _parts . splice ( 2 , 0 , "channel" , void 0 ) ;
}
if ( event _parts [ 2 ] == "notification" ) {
event _parts . push ( void 0 , void 0 ) ;
}
let [
s1 ,
signature ,
channel _type ,
s2 ,
channel ,
s3 ,
event _name
] = event _parts ;
if ( [ "channel" , "private" , "encryptedPrivate" ] . includes ( channel _type ) ) {
let handler4 = ( e ) => dispatchSelf ( component , event , [ e ] ) ;
window . Echo [ channel _type ] ( channel ) . listen ( event _name , handler4 ) ;
component . addCleanup ( ( ) => {
window . Echo [ channel _type ] ( channel ) . stopListening ( event _name , handler4 ) ;
} ) ;
} else if ( channel _type == "presence" ) {
if ( [ "here" , "joining" , "leaving" ] . includes ( event _name ) ) {
window . Echo . join ( channel ) [ event _name ] ( ( e ) => {
dispatchSelf ( component , event , [ e ] ) ;
} ) ;
} else {
let handler4 = ( e ) => dispatchSelf ( component , event , [ e ] ) ;
window . Echo . join ( channel ) . listen ( event _name , handler4 ) ;
component . addCleanup ( ( ) => {
window . Echo . leaveChannel ( channel ) ;
} ) ;
}
} else if ( channel _type == "notification" ) {
window . Echo . private ( channel ) . notification ( ( notification ) => {
dispatchSelf ( component , event , [ notification ] ) ;
} ) ;
} else {
console . warn ( "Echo channel type not yet supported" ) ;
}
}
} ) ;
} ) ;
// js/features/supportIsolating.js
var componentsThatAreIsolated = /* @__PURE__ */ new WeakSet ( ) ;
on2 ( "component.init" , ( { component } ) => {
let memo = component . snapshot . memo ;
if ( memo . isolate !== true )
return ;
componentsThatAreIsolated . add ( component ) ;
} ) ;
on2 ( "commit.pooling" , ( { commits } ) => {
commits . forEach ( ( commit ) => {
if ( ! componentsThatAreIsolated . has ( commit . component ) )
return ;
commit . isolate = true ;
} ) ;
} ) ;
// js/features/supportNavigate.js
shouldHideProgressBar ( ) && Alpine . navigate . disableProgressBar ( ) ;
2024-08-27 12:22:51 +02:00
document . addEventListener ( "alpine:navigate" , ( e ) => forwardEvent ( "livewire:navigate" , e ) ) ;
document . addEventListener ( "alpine:navigating" , ( e ) => forwardEvent ( "livewire:navigating" , e ) ) ;
document . addEventListener ( "alpine:navigated" , ( e ) => forwardEvent ( "livewire:navigated" , e ) ) ;
function forwardEvent ( name , original ) {
let event = new CustomEvent ( name , { cancelable : true , bubbles : true , detail : original . detail } ) ;
document . dispatchEvent ( event ) ;
if ( event . defaultPrevented ) {
original . preventDefault ( ) ;
}
}
2024-03-10 11:28:50 +01:00
function shouldRedirectUsingNavigateOr ( effects , url , or ) {
let forceNavigate = effects . redirectUsingNavigate ;
if ( forceNavigate ) {
Alpine . navigate ( url ) ;
} else {
or ( ) ;
}
}
function shouldHideProgressBar ( ) {
if ( ! ! document . querySelector ( "[data-no-progress-bar]" ) )
return true ;
if ( window . livewireScriptConfig && window . livewireScriptConfig . progressBar === false )
return true ;
return false ;
}
// js/features/supportRedirects.js
on2 ( "effect" , ( { effects } ) => {
if ( ! effects [ "redirect" ] )
return ;
let url = effects [ "redirect" ] ;
shouldRedirectUsingNavigateOr ( effects , url , ( ) => {
window . location . href = url ;
} ) ;
} ) ;
// js/directives/wire-transition.js
on2 ( "morph.added" , ( { el } ) => {
el . _ _addedByMorph = true ;
} ) ;
2024-08-27 12:22:51 +02:00
directive2 ( "transition" , ( { el , directive : directive3 , component , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let visibility = module _default . reactive ( { state : el . _ _addedByMorph ? false : true } ) ;
module _default . bind ( el , {
[ directive3 . rawName . replace ( "wire:" , "x-" ) ] : "" ,
"x-show" ( ) {
return visibility . state ;
}
} ) ;
el . _ _addedByMorph && setTimeout ( ( ) => visibility . state = true ) ;
2024-08-27 12:22:51 +02:00
let cleanups2 = [ ] ;
cleanups2 . push ( on2 ( "morph.removing" , ( { el : el2 , skip } ) => {
2024-03-10 11:28:50 +01:00
skip ( ) ;
el2 . addEventListener ( "transitionend" , ( ) => {
el2 . remove ( ) ;
} ) ;
visibility . state = false ;
2024-08-27 12:22:51 +02:00
cleanups2 . push ( on2 ( "morph" , ( { component : morphComponent } ) => {
2024-03-10 11:28:50 +01:00
if ( morphComponent !== component )
return ;
el2 . remove ( ) ;
2024-08-27 12:22:51 +02:00
cleanups2 . forEach ( ( i ) => i ( ) ) ;
2024-03-10 11:28:50 +01:00
} ) ) ;
} ) ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => cleanups2 . forEach ( ( i ) => i ( ) ) ) ;
2024-03-10 11:28:50 +01:00
} ) ;
// js/debounce.js
var callbacksByComponent = new WeakBag ( ) ;
function callAndClearComponentDebounces ( component , callback ) {
callbacksByComponent . each ( component , ( callbackRegister ) => {
callbackRegister . callback ( ) ;
callbackRegister . callback = ( ) => {
} ;
} ) ;
callback ( ) ;
}
// js/directives/wire-wildcard.js
2024-08-27 12:22:51 +02:00
on2 ( "directive.init" , ( { el , directive : directive3 , cleanup : cleanup2 , component } ) => {
2024-03-10 11:28:50 +01:00
if ( [ "snapshot" , "effects" , "model" , "init" , "loading" , "poll" , "ignore" , "id" , "data" , "key" , "target" , "dirty" ] . includes ( directive3 . value ) )
return ;
2024-08-27 12:22:51 +02:00
if ( customDirectiveHasBeenRegistered ( directive3 . value ) )
return ;
2024-03-10 11:28:50 +01:00
let attribute = directive3 . rawName . replace ( "wire:" , "x-on:" ) ;
if ( directive3 . value === "submit" && ! directive3 . modifiers . includes ( "prevent" ) ) {
attribute = attribute + ".prevent" ;
}
let cleanupBinding = module _default . bind ( el , {
[ attribute ] ( e ) {
let execute = ( ) => {
callAndClearComponentDebounces ( component , ( ) => {
module _default . evaluate ( el , "$wire." + directive3 . expression , { scope : { $event : e } } ) ;
} ) ;
} ;
if ( el . _ _livewire _confirm ) {
el . _ _livewire _confirm ( ( ) => {
execute ( ) ;
} , ( ) => {
e . stopImmediatePropagation ( ) ;
} ) ;
} else {
execute ( ) ;
}
}
} ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( cleanupBinding ) ;
2024-03-10 11:28:50 +01:00
} ) ;
// js/directives/wire-navigate.js
module _default . addInitSelector ( ( ) => ` [wire \\ :navigate] ` ) ;
module _default . addInitSelector ( ( ) => ` [wire \\ :navigate \\ .hover] ` ) ;
module _default . interceptInit ( module _default . skipDuringClone ( ( el ) => {
if ( el . hasAttribute ( "wire:navigate" ) ) {
module _default . bind ( el , { [ "x-navigate" ] : true } ) ;
} else if ( el . hasAttribute ( "wire:navigate.hover" ) ) {
module _default . bind ( el , { [ "x-navigate.hover" ] : true } ) ;
}
} ) ) ;
document . addEventListener ( "alpine:navigating" , ( ) => {
Livewire . all ( ) . forEach ( ( component ) => {
component . inscribeSnapshotAndEffectsOnElement ( ) ;
} ) ;
} ) ;
// js/directives/wire-confirm.js
directive2 ( "confirm" , ( { el , directive : directive3 } ) => {
let message = directive3 . expression ;
let shouldPrompt = directive3 . modifiers . includes ( "prompt" ) ;
message = message . replaceAll ( "\\n" , "\n" ) ;
if ( message === "" )
message = "Are you sure?" ;
el . _ _livewire _confirm = ( action , instead ) => {
if ( shouldPrompt ) {
let [ question , expected ] = message . split ( "|" ) ;
if ( ! expected ) {
console . warn ( "Livewire: Must provide expectation with wire:confirm.prompt" ) ;
} else {
let input = prompt ( question ) ;
if ( input === expected ) {
action ( ) ;
} else {
instead ( ) ;
}
}
} else {
if ( confirm ( message ) )
action ( ) ;
else
instead ( ) ;
}
} ;
} ) ;
// js/directives/shared.js
function toggleBooleanStateDirective ( el , directive3 , isTruthy , cachedDisplay = null ) {
isTruthy = directive3 . modifiers . includes ( "remove" ) ? ! isTruthy : isTruthy ;
if ( directive3 . modifiers . includes ( "class" ) ) {
2024-08-27 12:22:51 +02:00
let classes = directive3 . expression . split ( " " ) . filter ( String ) ;
2024-03-10 11:28:50 +01:00
if ( isTruthy ) {
el . classList . add ( ... classes ) ;
} else {
el . classList . remove ( ... classes ) ;
}
} else if ( directive3 . modifiers . includes ( "attr" ) ) {
if ( isTruthy ) {
el . setAttribute ( directive3 . expression , true ) ;
} else {
el . removeAttribute ( directive3 . expression ) ;
}
} else {
let cache = cachedDisplay ? ? window . getComputedStyle ( el , null ) . getPropertyValue ( "display" ) ;
let display = [ "inline" , "block" , "table" , "flex" , "grid" , "inline-flex" ] . filter ( ( i ) => directive3 . modifiers . includes ( i ) ) [ 0 ] || "inline-block" ;
2024-08-27 12:22:51 +02:00
display = directive3 . modifiers . includes ( "remove" ) && ! isTruthy ? cache : display ;
2024-03-10 11:28:50 +01:00
el . style . display = isTruthy ? display : "none" ;
}
}
// js/directives/wire-offline.js
var offlineHandlers = /* @__PURE__ */ new Set ( ) ;
var onlineHandlers = /* @__PURE__ */ new Set ( ) ;
window . addEventListener ( "offline" , ( ) => offlineHandlers . forEach ( ( i ) => i ( ) ) ) ;
window . addEventListener ( "online" , ( ) => onlineHandlers . forEach ( ( i ) => i ( ) ) ) ;
2024-08-27 12:22:51 +02:00
directive2 ( "offline" , ( { el , directive : directive3 , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let setOffline = ( ) => toggleBooleanStateDirective ( el , directive3 , true ) ;
let setOnline = ( ) => toggleBooleanStateDirective ( el , directive3 , false ) ;
offlineHandlers . add ( setOffline ) ;
onlineHandlers . add ( setOnline ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => {
2024-03-10 11:28:50 +01:00
offlineHandlers . delete ( setOffline ) ;
onlineHandlers . delete ( setOnline ) ;
} ) ;
} ) ;
// js/directives/wire-loading.js
2024-08-27 12:22:51 +02:00
directive2 ( "loading" , ( { el , directive : directive3 , component , cleanup : cleanup2 } ) => {
let { targets , inverted } = getTargets ( el ) ;
2024-03-10 11:28:50 +01:00
let [ delay3 , abortDelay ] = applyDelay ( directive3 ) ;
2024-08-27 12:22:51 +02:00
let cleanupA = whenTargetsArePartOfRequest ( component , targets , inverted , [
2024-03-10 11:28:50 +01:00
( ) => delay3 ( ( ) => toggleBooleanStateDirective ( el , directive3 , true ) ) ,
( ) => abortDelay ( ( ) => toggleBooleanStateDirective ( el , directive3 , false ) )
] ) ;
2024-08-27 12:22:51 +02:00
let cleanupB = whenTargetsArePartOfFileUpload ( component , targets , [
2024-03-10 11:28:50 +01:00
( ) => delay3 ( ( ) => toggleBooleanStateDirective ( el , directive3 , true ) ) ,
( ) => abortDelay ( ( ) => toggleBooleanStateDirective ( el , directive3 , false ) )
] ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( ( ) => {
cleanupA ( ) ;
cleanupB ( ) ;
} ) ;
2024-03-10 11:28:50 +01:00
} ) ;
function applyDelay ( directive3 ) {
if ( ! directive3 . modifiers . includes ( "delay" ) || directive3 . modifiers . includes ( "none" ) )
return [ ( i ) => i ( ) , ( i ) => i ( ) ] ;
let duration = 200 ;
let delayModifiers = {
"shortest" : 50 ,
"shorter" : 100 ,
"short" : 150 ,
"default" : 200 ,
"long" : 300 ,
"longer" : 500 ,
"longest" : 1e3
} ;
Object . keys ( delayModifiers ) . some ( ( key ) => {
if ( directive3 . modifiers . includes ( key ) ) {
duration = delayModifiers [ key ] ;
return true ;
}
} ) ;
let timeout ;
let started2 = false ;
return [
( callback ) => {
timeout = setTimeout ( ( ) => {
callback ( ) ;
started2 = true ;
} , duration ) ;
} ,
async ( callback ) => {
if ( started2 ) {
await callback ( ) ;
started2 = false ;
} else {
clearTimeout ( timeout ) ;
}
}
] ;
}
2024-08-27 12:22:51 +02:00
function whenTargetsArePartOfRequest ( component , targets , inverted , [ startLoading , endLoading ] ) {
return on2 ( "commit" , ( { component : iComponent , commit : payload , respond } ) => {
2024-03-10 11:28:50 +01:00
if ( iComponent !== component )
return ;
2024-08-27 12:22:51 +02:00
if ( targets . length > 0 && containsTargets ( payload , targets ) === inverted )
2024-03-10 11:28:50 +01:00
return ;
startLoading ( ) ;
respond ( ( ) => {
endLoading ( ) ;
} ) ;
} ) ;
}
function whenTargetsArePartOfFileUpload ( component , targets , [ startLoading , endLoading ] ) {
let eventMismatch = ( e ) => {
let { id , property } = e . detail ;
if ( id !== component . id )
return true ;
if ( targets . length > 0 && ! targets . map ( ( i ) => i . target ) . includes ( property ) )
return true ;
return false ;
} ;
2024-08-27 12:22:51 +02:00
let cleanupA = listen ( window , "livewire-upload-start" , ( e ) => {
2024-03-10 11:28:50 +01:00
if ( eventMismatch ( e ) )
return ;
startLoading ( ) ;
} ) ;
2024-08-27 12:22:51 +02:00
let cleanupB = listen ( window , "livewire-upload-finish" , ( e ) => {
2024-03-10 11:28:50 +01:00
if ( eventMismatch ( e ) )
return ;
endLoading ( ) ;
} ) ;
2024-08-27 12:22:51 +02:00
let cleanupC = listen ( window , "livewire-upload-error" , ( e ) => {
2024-03-10 11:28:50 +01:00
if ( eventMismatch ( e ) )
return ;
endLoading ( ) ;
} ) ;
2024-08-27 12:22:51 +02:00
return ( ) => {
cleanupA ( ) ;
cleanupB ( ) ;
cleanupC ( ) ;
} ;
2024-03-10 11:28:50 +01:00
}
function containsTargets ( payload , targets ) {
let { updates , calls } = payload ;
return targets . some ( ( { target , params } ) => {
if ( params ) {
return calls . some ( ( { method , params : methodParams } ) => {
return target === method && params === quickHash ( JSON . stringify ( methodParams ) ) ;
} ) ;
}
let hasMatchingUpdate = Object . keys ( updates ) . some ( ( property ) => {
if ( property . includes ( "." ) ) {
let propertyRoot = property . split ( "." ) [ 0 ] ;
if ( propertyRoot === target )
return true ;
}
return property === target ;
} ) ;
if ( hasMatchingUpdate )
return true ;
if ( calls . map ( ( i ) => i . method ) . includes ( target ) )
return true ;
} ) ;
}
function getTargets ( el ) {
let directives2 = getDirectives ( el ) ;
let targets = [ ] ;
2024-08-27 12:22:51 +02:00
let inverted = false ;
2024-03-10 11:28:50 +01:00
if ( directives2 . has ( "target" ) ) {
let directive3 = directives2 . get ( "target" ) ;
let raw2 = directive3 . expression ;
2024-08-27 12:22:51 +02:00
if ( directive3 . modifiers . includes ( "except" ) )
inverted = true ;
2024-03-10 11:28:50 +01:00
if ( raw2 . includes ( "(" ) && raw2 . includes ( ")" ) ) {
targets . push ( { target : directive3 . method , params : quickHash ( JSON . stringify ( directive3 . params ) ) } ) ;
} else if ( raw2 . includes ( "," ) ) {
raw2 . split ( "," ) . map ( ( i ) => i . trim ( ) ) . forEach ( ( target ) => {
targets . push ( { target } ) ;
} ) ;
} else {
targets . push ( { target : raw2 } ) ;
}
} else {
let nonActionOrModelLivewireDirectives = [ "init" , "dirty" , "offline" , "target" , "loading" , "poll" , "ignore" , "key" , "id" ] ;
directives2 . all ( ) . filter ( ( i ) => ! nonActionOrModelLivewireDirectives . includes ( i . value ) ) . map ( ( i ) => i . expression . split ( "(" ) [ 0 ] ) . forEach ( ( target ) => targets . push ( { target } ) ) ;
}
2024-08-27 12:22:51 +02:00
return { targets , inverted } ;
2024-03-10 11:28:50 +01:00
}
function quickHash ( subject ) {
return btoa ( encodeURIComponent ( subject ) ) ;
}
// js/directives/wire-stream.js
2024-08-27 12:22:51 +02:00
directive2 ( "stream" , ( { el , directive : directive3 , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let { expression , modifiers } = directive3 ;
let off = on2 ( "stream" , ( { name , content , replace : replace2 } ) => {
if ( name !== expression )
return ;
if ( modifiers . includes ( "replace" ) || replace2 ) {
el . innerHTML = content ;
} else {
el . innerHTML = el . innerHTML + content ;
}
} ) ;
2024-08-27 12:22:51 +02:00
cleanup2 ( off ) ;
2024-03-10 11:28:50 +01:00
} ) ;
on2 ( "request" , ( { respond } ) => {
respond ( ( mutableObject ) => {
let response = mutableObject . response ;
if ( ! response . headers . has ( "X-Livewire-Stream" ) )
return ;
mutableObject . response = {
ok : true ,
redirected : false ,
status : 200 ,
async text ( ) {
let finalResponse = await interceptStreamAndReturnFinalResponse ( response , ( streamed ) => {
trigger2 ( "stream" , streamed ) ;
} ) ;
if ( contentIsFromDump ( finalResponse ) ) {
this . ok = false ;
}
return finalResponse ;
}
} ;
} ) ;
} ) ;
async function interceptStreamAndReturnFinalResponse ( response , callback ) {
let reader = response . body . getReader ( ) ;
let remainingResponse = "" ;
while ( true ) {
let { done , value : chunk } = await reader . read ( ) ;
let decoder = new TextDecoder ( ) ;
let output = decoder . decode ( chunk ) ;
let [ streams , remaining ] = extractStreamObjects ( remainingResponse + output ) ;
streams . forEach ( ( stream ) => {
callback ( stream ) ;
} ) ;
remainingResponse = remaining ;
if ( done )
return remainingResponse ;
}
}
function extractStreamObjects ( raw2 ) {
let regex = /({"stream":true.*?"endStream":true})/g ;
let matches2 = raw2 . match ( regex ) ;
let parsed = [ ] ;
if ( matches2 ) {
for ( let i = 0 ; i < matches2 . length ; i ++ ) {
parsed . push ( JSON . parse ( matches2 [ i ] ) . body ) ;
}
}
let remaining = raw2 . replace ( regex , "" ) ;
return [ parsed , remaining ] ;
}
2024-08-27 12:22:51 +02:00
// js/directives/wire-replace.js
directive2 ( "replace" , ( { el , directive : directive3 } ) => {
if ( directive3 . modifiers . includes ( "self" ) ) {
el . _ _livewire _replace _self = true ;
} else {
el . _ _livewire _replace = true ;
}
} ) ;
2024-03-10 11:28:50 +01:00
// js/directives/wire-ignore.js
directive2 ( "ignore" , ( { el , directive : directive3 } ) => {
if ( directive3 . modifiers . includes ( "self" ) ) {
el . _ _livewire _ignore _self = true ;
} else {
el . _ _livewire _ignore = true ;
}
} ) ;
// js/directives/wire-dirty.js
var refreshDirtyStatesByComponent = new WeakBag ( ) ;
on2 ( "commit" , ( { component , respond } ) => {
respond ( ( ) => {
setTimeout ( ( ) => {
refreshDirtyStatesByComponent . each ( component , ( i ) => i ( false ) ) ;
} ) ;
} ) ;
} ) ;
directive2 ( "dirty" , ( { el , directive : directive3 , component } ) => {
let targets = dirtyTargets ( el ) ;
let dirty = Alpine . reactive ( { state : false } ) ;
let oldIsDirty = false ;
let initialDisplay = el . style . display ;
let refreshDirtyState = ( isDirty ) => {
toggleBooleanStateDirective ( el , directive3 , isDirty , initialDisplay ) ;
oldIsDirty = isDirty ;
} ;
refreshDirtyStatesByComponent . add ( component , refreshDirtyState ) ;
Alpine . effect ( ( ) => {
let isDirty = false ;
if ( targets . length === 0 ) {
isDirty = JSON . stringify ( component . canonical ) !== JSON . stringify ( component . reactive ) ;
} else {
for ( let i = 0 ; i < targets . length ; i ++ ) {
if ( isDirty )
break ;
let target = targets [ i ] ;
isDirty = JSON . stringify ( dataGet ( component . canonical , target ) ) !== JSON . stringify ( dataGet ( component . reactive , target ) ) ;
}
}
if ( oldIsDirty !== isDirty ) {
refreshDirtyState ( isDirty ) ;
}
oldIsDirty = isDirty ;
} ) ;
} ) ;
function dirtyTargets ( el ) {
let directives2 = getDirectives ( el ) ;
let targets = [ ] ;
if ( directives2 . has ( "model" ) ) {
targets . push ( directives2 . get ( "model" ) . expression ) ;
}
if ( directives2 . has ( "target" ) ) {
targets = targets . concat ( directives2 . get ( "target" ) . expression . split ( "," ) . map ( ( s ) => s . trim ( ) ) ) ;
}
return targets ;
}
// js/directives/wire-model.js
2024-08-27 12:22:51 +02:00
directive2 ( "model" , ( { el , directive : directive3 , component , cleanup : cleanup2 } ) => {
2024-03-10 11:28:50 +01:00
let { expression , modifiers } = directive3 ;
if ( ! expression ) {
return console . warn ( "Livewire: [wire:model] is missing a value." , el ) ;
}
if ( componentIsMissingProperty ( component , expression ) ) {
return console . warn ( 'Livewire: [wire:model="' + expression + '"] property does not exist on component: [' + component . name + "]" , el ) ;
}
if ( el . type && el . type . toLowerCase ( ) === "file" ) {
2024-08-27 12:22:51 +02:00
return handleFileUpload ( el , expression , component , cleanup2 ) ;
2024-03-10 11:28:50 +01:00
}
let isLive = modifiers . includes ( "live" ) ;
let isLazy = modifiers . includes ( "lazy" ) || modifiers . includes ( "change" ) ;
let onBlur = modifiers . includes ( "blur" ) ;
let isDebounced = modifiers . includes ( "debounce" ) ;
let update = expression . startsWith ( "$parent" ) ? ( ) => component . $wire . $parent . $commit ( ) : ( ) => component . $wire . $commit ( ) ;
let debouncedUpdate = isTextInput ( el ) && ! isDebounced && isLive ? debounce2 ( update , 150 ) : update ;
module _default . bind ( el , {
[ "@change" ] ( ) {
isLazy && update ( ) ;
} ,
[ "@blur" ] ( ) {
onBlur && update ( ) ;
} ,
[ "x-model" + getModifierTail ( modifiers ) ] ( ) {
return {
get ( ) {
return dataGet ( component . $wire , expression ) ;
} ,
set ( value ) {
dataSet ( component . $wire , expression , value ) ;
isLive && ! isLazy && ! onBlur && debouncedUpdate ( ) ;
}
} ;
}
} ) ;
} ) ;
function getModifierTail ( modifiers ) {
modifiers = modifiers . filter ( ( i ) => ! [
"lazy" ,
"defer"
] . includes ( i ) ) ;
if ( modifiers . length === 0 )
return "" ;
return "." + modifiers . join ( "." ) ;
}
function isTextInput ( el ) {
return [ "INPUT" , "TEXTAREA" ] . includes ( el . tagName . toUpperCase ( ) ) && ! [ "checkbox" , "radio" ] . includes ( el . type ) ;
}
function componentIsMissingProperty ( component , property ) {
if ( property . startsWith ( "$parent" ) ) {
let parent = closestComponent ( component . el . parentElement , false ) ;
if ( ! parent )
return true ;
return componentIsMissingProperty ( parent , property . split ( "$parent." ) [ 1 ] ) ;
}
let baseProperty = property . split ( "." ) [ 0 ] ;
return ! Object . keys ( component . canonical ) . includes ( baseProperty ) ;
}
function debounce2 ( func , wait ) {
var timeout ;
return function ( ) {
var context = this , args = arguments ;
var later = function ( ) {
timeout = null ;
func . apply ( context , args ) ;
} ;
clearTimeout ( timeout ) ;
timeout = setTimeout ( later , wait ) ;
} ;
}
// js/directives/wire-init.js
directive2 ( "init" , ( { el , directive : directive3 } ) => {
let fullMethod = directive3 . expression ? ? "$refresh" ;
module _default . evaluate ( el , ` $ wire. ${ fullMethod } ` ) ;
} ) ;
// js/directives/wire-poll.js
directive2 ( "poll" , ( { el , directive : directive3 } ) => {
let interval = extractDurationFrom ( directive3 . modifiers , 2e3 ) ;
let { start : start3 , pauseWhile , throttleWhile , stopWhen } = poll ( ( ) => {
triggerComponentRequest ( el , directive3 ) ;
} , interval ) ;
start3 ( ) ;
throttleWhile ( ( ) => theTabIsInTheBackground ( ) && theDirectiveIsMissingKeepAlive ( directive3 ) ) ;
pauseWhile ( ( ) => theDirectiveHasVisible ( directive3 ) && theElementIsNotInTheViewport ( el ) ) ;
pauseWhile ( ( ) => theDirectiveIsOffTheElement ( el ) ) ;
pauseWhile ( ( ) => livewireIsOffline ( ) ) ;
stopWhen ( ( ) => theElementIsDisconnected ( el ) ) ;
} ) ;
function triggerComponentRequest ( el , directive3 ) {
module _default . evaluate ( el , directive3 . expression ? "$wire." + directive3 . expression : "$wire.$commit()" ) ;
}
function poll ( callback , interval = 2e3 ) {
let pauseConditions = [ ] ;
let throttleConditions = [ ] ;
let stopConditions = [ ] ;
return {
start ( ) {
let clear2 = syncronizedInterval ( interval , ( ) => {
if ( stopConditions . some ( ( i ) => i ( ) ) )
return clear2 ( ) ;
if ( pauseConditions . some ( ( i ) => i ( ) ) )
return ;
if ( throttleConditions . some ( ( i ) => i ( ) ) && Math . random ( ) < 0.95 )
return ;
callback ( ) ;
} ) ;
} ,
pauseWhile ( condition ) {
pauseConditions . push ( condition ) ;
} ,
throttleWhile ( condition ) {
throttleConditions . push ( condition ) ;
} ,
stopWhen ( condition ) {
stopConditions . push ( condition ) ;
}
} ;
}
var clocks = [ ] ;
function syncronizedInterval ( ms , callback ) {
if ( ! clocks [ ms ] ) {
let clock = {
timer : setInterval ( ( ) => clock . callbacks . forEach ( ( i ) => i ( ) ) , ms ) ,
callbacks : /* @__PURE__ */ new Set ( )
} ;
clocks [ ms ] = clock ;
}
clocks [ ms ] . callbacks . add ( callback ) ;
return ( ) => {
clocks [ ms ] . callbacks . delete ( callback ) ;
if ( clocks [ ms ] . callbacks . size === 0 ) {
clearInterval ( clocks [ ms ] . timer ) ;
delete clocks [ ms ] ;
}
} ;
}
var isOffline = false ;
window . addEventListener ( "offline" , ( ) => isOffline = true ) ;
window . addEventListener ( "online" , ( ) => isOffline = false ) ;
function livewireIsOffline ( ) {
return isOffline ;
}
var inBackground = false ;
document . addEventListener ( "visibilitychange" , ( ) => {
inBackground = document . hidden ;
} , false ) ;
function theTabIsInTheBackground ( ) {
return inBackground ;
}
function theDirectiveIsOffTheElement ( el ) {
return ! getDirectives ( el ) . has ( "poll" ) ;
}
function theDirectiveIsMissingKeepAlive ( directive3 ) {
return ! directive3 . modifiers . includes ( "keep-alive" ) ;
}
function theDirectiveHasVisible ( directive3 ) {
return directive3 . modifiers . includes ( "visible" ) ;
}
function theElementIsNotInTheViewport ( el ) {
let bounding = el . getBoundingClientRect ( ) ;
return ! ( bounding . top < ( window . innerHeight || document . documentElement . clientHeight ) && bounding . left < ( window . innerWidth || document . documentElement . clientWidth ) && bounding . bottom > 0 && bounding . right > 0 ) ;
}
function theElementIsDisconnected ( el ) {
return el . isConnected === false ;
}
function extractDurationFrom ( modifiers , defaultDuration ) {
let durationInMilliSeconds ;
let durationInMilliSecondsString = modifiers . find ( ( mod ) => mod . match ( /([0-9]+)ms/ ) ) ;
let durationInSecondsString = modifiers . find ( ( mod ) => mod . match ( /([0-9]+)s/ ) ) ;
if ( durationInMilliSecondsString ) {
durationInMilliSeconds = Number ( durationInMilliSecondsString . replace ( "ms" , "" ) ) ;
} else if ( durationInSecondsString ) {
durationInMilliSeconds = Number ( durationInSecondsString . replace ( "s" , "" ) ) * 1e3 ;
}
return durationInMilliSeconds || defaultDuration ;
}
// js/index.js
var Livewire2 = {
directive : directive2 ,
dispatchTo ,
start : start2 ,
first ,
find ,
getByName ,
all ,
hook : on2 ,
trigger : trigger2 ,
triggerAsync ,
dispatch : dispatchGlobal ,
on : on3 ,
get navigate ( ) {
return module _default . navigate ;
}
} ;
2024-08-27 12:22:51 +02:00
var warnAboutMultipleInstancesOf = ( entity ) => console . warn ( ` Detected multiple instances of ${ entity } running ` ) ;
2024-03-10 11:28:50 +01:00
if ( window . Livewire )
2024-08-27 12:22:51 +02:00
warnAboutMultipleInstancesOf ( "Livewire" ) ;
2024-03-10 11:28:50 +01:00
if ( window . Alpine )
2024-08-27 12:22:51 +02:00
warnAboutMultipleInstancesOf ( "Alpine" ) ;
2024-03-10 11:28:50 +01:00
window . Livewire = Livewire2 ;
window . Alpine = module _default ;
if ( window . livewireScriptConfig === void 0 ) {
2024-08-27 12:22:51 +02:00
window . Alpine . _ _fromLivewire = true ;
2024-03-10 11:28:50 +01:00
document . addEventListener ( "DOMContentLoaded" , ( ) => {
2024-08-27 12:22:51 +02:00
if ( window . Alpine . _ _fromLivewire === void 0 ) {
warnAboutMultipleInstancesOf ( "Alpine" ) ;
}
2024-03-10 11:28:50 +01:00
Livewire2 . start ( ) ;
} ) ;
}
} ) ( ) ;
/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http:/ / ricostacruz . com / nprogress
* @ license MIT * /
/ * ! B u n d l e d l i c e n s e i n f o r m a t i o n :
tabbable / dist / index . esm . js :
( * !
* tabbable 5.3 . 3
* @ license MIT , https : //github.com/focus-trap/tabbable/blob/master/LICENSE
* )
focus - trap / dist / focus - trap . esm . js :
( * !
* focus - trap 6.9 . 4
* @ license MIT , https : //github.com/focus-trap/focus-trap/blob/master/LICENSE
* )
* /