2023-03-09 19:58:08 +01:00
var $hx _exports = typeof exports != "undefined" ? exports : typeof window != "undefined" ? window : typeof self != "undefined" ? self : this ;
( function ( $global ) { "use strict" ;
$hx _exports [ "xrfragment" ] = $hx _exports [ "xrfragment" ] || { } ;
2024-02-16 17:34:32 +01:00
var $estr = function ( ) { return js _Boot . _ _string _rec ( this , '' ) ; } , $hxEnums = $hxEnums || { } , $ _ ;
function $extend ( from , fields ) {
var proto = Object . create ( from ) ;
for ( var name in fields ) proto [ name ] = fields [ name ] ;
if ( fields . toString !== Object . prototype . toString ) proto . toString = fields . toString ;
return proto ;
}
2023-03-09 19:58:08 +01:00
var EReg = function ( r , opt ) {
this . r = new RegExp ( r , opt . split ( "u" ) . join ( "" ) ) ;
} ;
2023-03-10 18:49:16 +01:00
EReg . _ _name _ _ = true ;
2023-03-09 19:58:08 +01:00
EReg . prototype = {
2023-03-09 22:32:28 +01:00
match : function ( s ) {
2023-03-09 19:58:08 +01:00
if ( this . r . global ) {
this . r . lastIndex = 0 ;
}
this . r . m = this . r . exec ( s ) ;
this . r . s = s ;
return this . r . m != null ;
}
2024-02-16 17:34:32 +01:00
, matched : function ( n ) {
if ( this . r . m != null && n >= 0 && n < this . r . m . length ) {
return this . r . m [ n ] ;
} else {
throw haxe _Exception . thrown ( "EReg::matched" ) ;
}
}
, matchedRight : function ( ) {
if ( this . r . m == null ) {
throw haxe _Exception . thrown ( "No string matched" ) ;
}
var sz = this . r . m . index + this . r . m [ 0 ] . length ;
return HxOverrides . substr ( this . r . s , sz , this . r . s . length - sz ) ;
}
, matchedPos : function ( ) {
if ( this . r . m == null ) {
throw haxe _Exception . thrown ( "No string matched" ) ;
}
return { pos : this . r . m . index , len : this . r . m [ 0 ] . length } ;
}
2023-03-10 18:49:16 +01:00
, split : function ( s ) {
var d = "#__delim__#" ;
return s . replace ( this . r , d ) . split ( d ) ;
}
2023-03-09 19:58:08 +01:00
} ;
var HxOverrides = function ( ) { } ;
2023-03-10 18:49:16 +01:00
HxOverrides . _ _name _ _ = true ;
2023-03-21 17:57:54 +01:00
HxOverrides . cca = function ( s , index ) {
var x = s . charCodeAt ( index ) ;
if ( x != x ) {
return undefined ;
}
return x ;
} ;
2023-03-09 19:58:08 +01:00
HxOverrides . substr = function ( s , pos , len ) {
if ( len == null ) {
len = s . length ;
} else if ( len < 0 ) {
if ( pos == 0 ) {
len = s . length + len ;
} else {
return "" ;
}
}
return s . substr ( pos , len ) ;
} ;
HxOverrides . now = function ( ) {
return Date . now ( ) ;
} ;
2023-03-10 18:49:16 +01:00
Math . _ _name _ _ = true ;
2023-03-09 19:58:08 +01:00
var Reflect = function ( ) { } ;
2023-03-10 18:49:16 +01:00
Reflect . _ _name _ _ = true ;
2023-03-09 19:58:08 +01:00
Reflect . field = function ( o , field ) {
try {
return o [ field ] ;
} catch ( _g ) {
return null ;
}
} ;
2024-02-16 17:34:32 +01:00
Reflect . getProperty = function ( o , field ) {
var tmp ;
if ( o == null ) {
return null ;
} else {
var tmp1 ;
if ( o . _ _properties _ _ ) {
tmp = o . _ _properties _ _ [ "get_" + field ] ;
tmp1 = tmp ;
} else {
tmp1 = false ;
}
if ( tmp1 ) {
return o [ tmp ] ( ) ;
} else {
return o [ field ] ;
}
}
} ;
2023-03-09 19:58:08 +01:00
Reflect . fields = function ( o ) {
var a = [ ] ;
if ( o != null ) {
var hasOwnProperty = Object . prototype . hasOwnProperty ;
for ( var f in o ) {
if ( f != "__id__" && f != "hx__closures__" && hasOwnProperty . call ( o , f ) ) {
a . push ( f ) ;
}
}
}
return a ;
} ;
2024-02-16 17:34:32 +01:00
Reflect . isObject = function ( v ) {
if ( v == null ) {
return false ;
}
var t = typeof ( v ) ;
if ( ! ( t == "string" || t == "object" && v . _ _enum _ _ == null ) ) {
if ( t == "function" ) {
return ( v . _ _name _ _ || v . _ _ename _ _ ) != null ;
} else {
return false ;
}
} else {
return true ;
}
} ;
2023-04-14 15:19:52 +02:00
Reflect . deleteField = function ( o , field ) {
if ( ! Object . prototype . hasOwnProperty . call ( o , field ) ) {
return false ;
}
delete ( o [ field ] ) ;
return true ;
} ;
2023-12-06 12:55:08 +01:00
Reflect . copy = function ( o ) {
if ( o == null ) {
return null ;
}
var o2 = { } ;
var _g = 0 ;
var _g1 = Reflect . fields ( o ) ;
while ( _g < _g1 . length ) {
var f = _g1 [ _g ] ;
++ _g ;
o2 [ f ] = Reflect . field ( o , f ) ;
}
return o2 ;
} ;
2023-03-09 19:58:08 +01:00
var Std = function ( ) { } ;
2023-03-10 18:49:16 +01:00
Std . _ _name _ _ = true ;
Std . string = function ( s ) {
return js _Boot . _ _string _rec ( s , "" ) ;
} ;
2023-03-09 19:58:08 +01:00
Std . parseInt = function ( x ) {
if ( x != null ) {
var _g = 0 ;
var _g1 = x . length ;
while ( _g < _g1 ) {
var i = _g ++ ;
var c = x . charCodeAt ( i ) ;
if ( c <= 8 || c >= 14 && c != 32 && c != 45 ) {
var nc = x . charCodeAt ( i + 1 ) ;
var v = parseInt ( x , nc == 120 || nc == 88 ? 16 : 10 ) ;
if ( isNaN ( v ) ) {
return null ;
} else {
return v ;
}
}
}
}
return null ;
} ;
2024-02-16 17:34:32 +01:00
var StringBuf = function ( ) {
this . b = "" ;
} ;
StringBuf . _ _name _ _ = true ;
2023-03-21 17:57:54 +01:00
var StringTools = function ( ) { } ;
StringTools . _ _name _ _ = true ;
StringTools . isSpace = function ( s , pos ) {
var c = HxOverrides . cca ( s , pos ) ;
if ( ! ( c > 8 && c < 14 ) ) {
return c == 32 ;
} else {
return true ;
}
} ;
StringTools . ltrim = function ( s ) {
var l = s . length ;
var r = 0 ;
while ( r < l && StringTools . isSpace ( s , r ) ) ++ r ;
if ( r > 0 ) {
return HxOverrides . substr ( s , r , l - r ) ;
} else {
return s ;
}
} ;
StringTools . rtrim = function ( s ) {
var l = s . length ;
var r = 0 ;
while ( r < l && StringTools . isSpace ( s , l - r - 1 ) ) ++ r ;
if ( r > 0 ) {
return HxOverrides . substr ( s , 0 , l - r ) ;
} else {
return s ;
}
} ;
StringTools . trim = function ( s ) {
return StringTools . ltrim ( StringTools . rtrim ( s ) ) ;
} ;
2024-02-16 17:34:32 +01:00
StringTools . replace = function ( s , sub , by ) {
return s . split ( sub ) . join ( by ) ;
} ;
2023-03-09 19:58:08 +01:00
var Test = function ( ) { } ;
2023-03-10 18:49:16 +01:00
Test . _ _name _ _ = true ;
2023-03-09 19:58:08 +01:00
Test . main = function ( ) {
2024-02-02 12:13:07 +01:00
Test . test ( "url.json" , [ { fn : "url" , expect : { fn : "testPredefinedView" , input : "mypredefinedview" , out : true } , label : "test predefined view executed" , data : "http://foo.com?foo=1#mypredefinedview" } , { fn : "url" , expect : { fn : "testPredefinedView" , input : "another" , out : true } , label : "test predefined view executed (multiple)" , data : "http://foo.com?foo=1#mypredefinedview&another" } , { fn : "url" , expect : { fn : "testPredefinedView" , input : "mypredefinedview" , out : true } , label : "test predefined view executed (multiple)" , data : "http://foo.com?foo=1#mypredefinedview&another" } , { fn : "url" , expect : { fn : "testParsed" , input : "mycustom" , out : true } , label : "test custom property" , data : "http://foo.com?foo=1#mycustom=foo" } ] ) ;
Test . test ( "pos.json" , [ { fn : "url" , expect : { fn : "equal.string" , input : "pos" , out : "1.2,2.2" } , label : "equal.string" , data : "http://foo.com?foo=1#pos=1.2,2.2" } , { fn : "url" , expect : { fn : "equal.xyz" , input : "pos" , out : "1.2,2.2,3" } , label : "equal.xyz" , data : "http://foo.com?foo=1#pos=1.2,2.2,3" } , { fn : "url" , expect : { fn : "equal.xyz" , input : "pos" , out : "1,2,3" } , label : "pos equal.xyz" , data : "http://foo.com?foo=1#pos=1,2,3" } , { fn : "url" , expect : { fn : "equal.string" , input : "pos" , out : "world2" } , label : "pos equal.xyz" , data : "http://foo.com?foo=1#pos=world2" } ] ) ;
2024-02-16 17:34:32 +01:00
Test . test ( "t.json" , [ { fn : "url" , expect : { fn : "equal.x" , input : "t" , out : "1" } , label : "a equal.x" , data : "http://foo.com?foo=1#t=1" } , { fn : "url" , expect : { fn : "equal.x" , input : "t" , out : "-1" } , label : "a equal.x" , data : "http://foo.com?foo=1#t=-1" } , { fn : "url" , expect : { fn : "equal.x" , input : "t" , out : "-1.02" } , label : "a equal.x" , data : "http://foo.com?foo=1#t=-1.02" } , { fn : "url" , expect : { fn : "equal.xy" , input : "t" , out : "1,2" } , label : "a equal.xy" , data : "http://foo.com?foo=1#t=1,2,3" } , { fn : "url" , expect : { fn : "equal.xyz" , input : "t" , out : "1,2,3" } , label : "a equal.xyz" , data : "http://foo.com?foo=1#t=1,2,3" } , { fn : "url" , expect : { fn : "equal.xyz" , input : "t" , out : "1,-2,3" } , label : "a equal.xyz" , data : "http://foo.com?foo=1#t=1,-2,3" } , { fn : "url" , expect : { fn : "equal.xy" , input : "t" , out : "1,100" } , label : "a equal.xy" , data : "http://foo.com?foo=1#t=1,100" } , { fn : "url" , expect : { fn : "testBrowserOverride" , input : "t" , out : true } , label : "browser URI can override t (defined in asset)" , data : "http://foo.com?foo=1#t=2,500" } , { fn : "url" , expect : { fn : "equal.mediafragmentT" , input : "3" , out : "500" } , label : "a equal.mediafragment" , data : "http://foo.com?foo=1#t=1,100,400,500" } , { fn : "url" , expect : { fn : "equal.mediafragmentT" , input : "3" , out : "500" } , label : "a equal.mediafragment loop" , data : "http://foo.com?foo=1#t=l:1,100,400,500" } ] ) ;
Test . test ( "s.json" , [ { fn : "url" , expect : { fn : "equal.x" , input : "s" , out : "1" } , label : "playback speed" , data : "http://foo.com?foo=1#s=1" } , { fn : "url" , expect : { fn : "equal.x" , input : "s" , out : "0.5" } , label : "playback speed" , data : "http://foo.com?foo=1#s=0.5" } , { fn : "url" , expect : { fn : "equal.x" , input : "s" , out : "-0.5" } , label : "playback speed" , data : "http://foo.com?foo=1#s=-0.5" } ] ) ;
Test . test ( "uv.json" , [ { fn : "url" , expect : { fn : "equal.xy" , input : "uv" , out : "1.2,2.2" } , label : "equal.string uv" , data : "http://foo.com?foo=1#uv=1.2,2.2" } , { fn : "url" , expect : { fn : "equal.xyz" , input : "uv" , out : "1.2,2.2,1" } , label : "equal.string uv" , data : "http://foo.com?foo=1#uv=1.2,2.2,+1,+1" } ] ) ;
Test . test ( "filter.selectors.json" , [ { fn : "url" , expect : { fn : "testParsed" , input : "myid" , out : true } , label : "myid exists" , data : "http://foo.com?foo=1#foo*&-sometag&-someid&myid" } , { fn : "url" , expect : { fn : "testParsed" , input : "tag" , out : true } , label : "tag exists" , data : "http://foo.com?foo=1#tag=bar" } , { fn : "url" , expect : { fn : "testParsed" , input : "tag" , out : true } , label : "tag exists" , data : "http://foo.com?foo=1#-tag=bar" } , { fn : "url" , expect : { fn : "testParsed" , input : "price" , out : true } , label : "filter test" , data : "http://foo.com?foo=1#price=>2" } , { fn : "filter" , expect : { fn : "testProperty" , input : [ "tag" , "bar" ] , out : true } , data : "tag=bar" } , { fn : "filter" , expect : { fn : "testProperty" , input : [ "tag" , "foo" ] , out : false } , data : "-tag=foo" } , { fn : "filter" , expect : { fn : "testProperty" , input : [ "tag" , "foo" ] , out : false } , data : "-tag*=foo" } , { fn : "filter" , expect : { fn : "testProperty" , input : [ "tag" , "3" ] , out : false } , data : "-tag=>2" } , { fn : "filter" , expect : { fn : "testProperty" , input : [ "price" , "1" ] , out : false } , data : "price=>2" } , { fn : "filter" , expect : { fn : "testProperty" , input : [ "price" , "5" ] , out : false } , data : "price=<2" } , { fn : "filter" , expect : { fn : "testProperty" , input : [ "price" , "1" ] , out : true } , data : "price=<2" } , { fn : "url" , expect : { fn : "testFilterDeep" , input : [ "foo" ] , out : 1 } , label : "foo should be deep" , data : "#foo*" } ] ) ;
2023-03-30 19:51:32 +02:00
if ( Test . errors > 1 ) {
2024-02-16 17:34:32 +01:00
console . log ( "src/Test.hx:25:" , "\n-----\n[ ❌] " + Test . errors + " errors :/" ) ;
2023-03-30 19:51:32 +02:00
}
2023-03-09 19:58:08 +01:00
} ;
2023-11-03 21:22:05 +01:00
Test . test = function ( topic , spec ) {
2024-02-16 17:34:32 +01:00
console . log ( "src/Test.hx:29:" , "\n[ . ] running " + topic ) ;
2023-12-06 12:55:08 +01:00
var Filter = xrfragment _Filter ;
2023-03-17 16:06:24 +01:00
var _g = 0 ;
var _g1 = spec . length ;
while ( _g < _g1 ) {
var i = _g ++ ;
2023-12-06 12:55:08 +01:00
var f = null ;
2023-03-17 16:06:24 +01:00
var res = null ;
var valid = false ;
var item = spec [ i ] ;
2023-12-06 12:55:08 +01:00
f = new xrfragment _Filter ( item . data ) ;
res = xrfragment _URI . parse ( item . data , null ) ;
2023-03-21 17:57:54 +01:00
if ( item . expect . fn == "test" ) {
2023-12-06 12:55:08 +01:00
valid = item . expect . out == f . test ( item . expect . input [ 0 ] ) ;
2023-03-24 17:10:30 +01:00
}
if ( item . expect . fn == "testProperty" ) {
2023-12-06 12:55:08 +01:00
valid = item . expect . out == f . testProperty ( item . expect . input [ 0 ] , item . expect . input [ 1 ] ) ;
}
if ( item . expect . fn == "testPropertyInt" ) {
valid = item . expect . out == f . testProperty ( item . expect . input [ 0 ] , item . expect . input [ 1 ] ) ;
2023-03-24 17:10:30 +01:00
}
if ( item . expect . fn == "testPropertyExclude" ) {
2023-12-06 12:55:08 +01:00
valid = item . expect . out == f . testProperty ( item . expect . input [ 0 ] , item . expect . input [ 1 ] , true ) ;
2023-03-17 16:06:24 +01:00
}
2023-03-30 19:51:32 +02:00
if ( item . expect . fn == "testParsed" ) {
valid = item . expect . out == Object . prototype . hasOwnProperty . call ( res , item . expect . input ) ;
}
2023-04-14 17:37:33 +02:00
if ( item . expect . fn == "testPredefinedView" ) {
valid = Object . prototype . hasOwnProperty . call ( res , item . expect . input ) && item . expect . out == res [ item . expect . input ] . is ( xrfragment _XRF . PV _EXECUTE ) ;
}
2023-04-20 18:49:18 +02:00
if ( item . expect . fn == "testPropertyAssign" ) {
valid = Object . prototype . hasOwnProperty . call ( res , item . expect . input ) && item . expect . out == res [ item . expect . input ] . is ( xrfragment _XRF . PROP _BIND ) ;
}
if ( item . expect . fn == "testBrowserOverride" ) {
2023-05-04 13:28:12 +02:00
var item1 = item . expect . out ;
2023-05-05 13:26:17 +02:00
var this1 = xrfragment _URI . parse ( item . data , xrfragment _XRF . NAVIGATOR ) ;
2023-05-04 13:28:12 +02:00
valid = item1 == Object . prototype . hasOwnProperty . call ( this1 , item . expect . input ) ;
}
if ( item . expect . fn == "testEmbedOverride" ) {
2023-04-20 18:49:18 +02:00
var item2 = item . expect . out ;
2023-08-15 18:27:26 +02:00
var this2 = xrfragment _URI . parse ( item . data , xrfragment _XRF . METADATA ) ;
2023-04-20 18:49:18 +02:00
valid = item2 == Object . prototype . hasOwnProperty . call ( this2 , item . expect . input ) ;
}
2023-03-17 16:06:24 +01:00
if ( item . expect . fn == "equal.string" ) {
2023-04-14 15:19:52 +02:00
valid = res [ item . expect . input ] && item . expect . out == res [ item . expect . input ] . string ;
2023-03-17 16:06:24 +01:00
}
2023-11-03 21:22:05 +01:00
if ( item . expect . fn == "equal.x" ) {
valid = Test . equalX ( res , item ) ;
}
2023-03-17 16:06:24 +01:00
if ( item . expect . fn == "equal.xy" ) {
2023-04-14 15:19:52 +02:00
valid = Test . equalXY ( res , item ) ;
}
if ( item . expect . fn == "equal.xyz" ) {
valid = Test . equalXYZ ( res , item ) ;
2023-03-17 16:06:24 +01:00
}
2024-02-02 12:13:07 +01:00
if ( item . expect . fn == "equal.mediafragmentT" ) {
valid = Test . equalMediaFragment ( res , item , "t" ) ;
2024-02-01 20:10:41 +01:00
}
2024-02-16 17:34:32 +01:00
if ( item . expect . fn == "equal.mediafragmentUV" ) {
valid = Test . equalMediaFragment ( res , item , "uv" ) ;
2024-02-02 12:13:07 +01:00
}
2024-02-16 17:34:32 +01:00
if ( item . expect . fn == "equal.mediafragmentS" ) {
valid = Test . equalMediaFragment ( res , item , "s" ) ;
2024-02-01 20:10:41 +01:00
}
2023-12-06 12:55:08 +01:00
if ( item . expect . fn == "testFilterRoot" ) {
valid = Object . prototype . hasOwnProperty . call ( res , item . expect . input [ 0 ] ) && res [ item . expect . input [ 0 ] ] . filter . get ( ) . root == item . expect . out ;
}
if ( item . expect . fn == "testFilterDeep" ) {
valid = Object . prototype . hasOwnProperty . call ( res , item . expect . input [ 0 ] ) && res [ item . expect . input [ 0 ] ] . filter . get ( ) . deep == item . expect . out ;
2023-06-22 08:49:24 +02:00
}
2023-03-17 16:06:24 +01:00
var ok = valid ? "[ ✔ ] " : "[ ❌] " ;
2024-02-02 12:13:07 +01:00
console . log ( "src/Test.hx:57:" , ok + Std . string ( item . fn ) + ": '" + Std . string ( item . data ) + "'" + ( item . label ? " (" + ( item . label ? item . label : item . expect . fn ) + ")" : "" ) ) ;
2023-03-17 16:06:24 +01:00
if ( ! valid ) {
2023-03-30 19:51:32 +02:00
Test . errors += 1 ;
2023-03-17 16:06:24 +01:00
}
}
2023-03-09 19:58:08 +01:00
} ;
2023-11-03 21:22:05 +01:00
Test . equalX = function ( res , item ) {
2023-04-14 15:19:52 +02:00
if ( ! item . expect . out && ! res [ item . expect . input ] ) {
return true ;
} else if ( res [ item . expect . input ] ) {
2023-11-03 21:22:05 +01:00
return item . expect . out == Std . string ( res [ item . expect . input ] . x ) ;
2023-04-14 15:19:52 +02:00
} else {
return false ;
}
} ;
2023-11-03 21:22:05 +01:00
Test . equalXY = function ( res , item ) {
2023-04-14 15:19:52 +02:00
if ( ! item . expect . out && ! res [ item . expect . input ] ) {
return true ;
} else if ( res [ item . expect . input ] ) {
2023-11-03 21:22:05 +01:00
return item . expect . out == Std . string ( res [ item . expect . input ] . x ) + "," + Std . string ( res [ item . expect . input ] . y ) ;
2023-04-14 15:19:52 +02:00
} else {
return false ;
}
} ;
2023-11-03 21:22:05 +01:00
Test . equalXYZ = function ( res , item ) {
if ( ! item . expect . out && ! res [ item . expect . input ] ) {
return true ;
} else if ( res [ item . expect . input ] ) {
return item . expect . out == Std . string ( res [ item . expect . input ] . x ) + "," + Std . string ( res [ item . expect . input ] . y ) + "," + Std . string ( res [ item . expect . input ] . z ) ;
2023-03-30 19:51:32 +02:00
} else {
return false ;
}
2023-03-09 19:58:08 +01:00
} ;
2024-02-02 12:13:07 +01:00
Test . equalMediaFragment = function ( res , item , key ) {
2024-02-01 20:10:41 +01:00
if ( ! item . expect . out && ! res [ item . expect . input ] ) {
return true ;
} else {
2024-02-16 17:34:32 +01:00
return res [ key ] . floats [ Std . parseInt ( item . expect . input ) ] == parseFloat ( item . expect . out ) ;
2024-02-01 20:10:41 +01:00
}
} ;
2024-02-16 17:34:32 +01:00
var haxe _Exception = function ( message , previous , native ) {
Error . call ( this , message ) ;
this . message = message ;
this . _ _previousException = previous ;
this . _ _nativeException = native != null ? native : this ;
} ;
haxe _Exception . _ _name _ _ = true ;
haxe _Exception . caught = function ( value ) {
if ( ( ( value ) instanceof haxe _Exception ) ) {
return value ;
} else if ( ( ( value ) instanceof Error ) ) {
return new haxe _Exception ( value . message , null , value ) ;
2024-02-01 20:10:41 +01:00
} else {
2024-02-16 17:34:32 +01:00
return new haxe _ValueException ( value , null , value ) ;
2024-02-01 20:10:41 +01:00
}
} ;
2024-02-16 17:34:32 +01:00
haxe _Exception . thrown = function ( value ) {
if ( ( ( value ) instanceof haxe _Exception ) ) {
return value . get _native ( ) ;
} else if ( ( ( value ) instanceof Error ) ) {
return value ;
} else {
var e = new haxe _ValueException ( value ) ;
return e ;
}
} ;
haxe _Exception . _ _super _ _ = Error ;
haxe _Exception . prototype = $extend ( Error . prototype , {
unwrap : function ( ) {
return this . _ _nativeException ;
}
, get _native : function ( ) {
return this . _ _nativeException ;
}
, _ _properties _ _ : { get _native : "get_native" }
} ) ;
var haxe _ _$Template _TemplateExpr = $hxEnums [ "haxe._Template.TemplateExpr" ] = { _ _ename _ _ : true , _ _constructs _ _ : null
, OpVar : ( $ _ = function ( v ) { return { _hx _index : 0 , v : v , _ _enum _ _ : "haxe._Template.TemplateExpr" , toString : $estr } ; } , $ _ . _hx _name = "OpVar" , $ _ . _ _params _ _ = [ "v" ] , $ _ )
, OpExpr : ( $ _ = function ( expr ) { return { _hx _index : 1 , expr : expr , _ _enum _ _ : "haxe._Template.TemplateExpr" , toString : $estr } ; } , $ _ . _hx _name = "OpExpr" , $ _ . _ _params _ _ = [ "expr" ] , $ _ )
, OpIf : ( $ _ = function ( expr , eif , eelse ) { return { _hx _index : 2 , expr : expr , eif : eif , eelse : eelse , _ _enum _ _ : "haxe._Template.TemplateExpr" , toString : $estr } ; } , $ _ . _hx _name = "OpIf" , $ _ . _ _params _ _ = [ "expr" , "eif" , "eelse" ] , $ _ )
, OpStr : ( $ _ = function ( str ) { return { _hx _index : 3 , str : str , _ _enum _ _ : "haxe._Template.TemplateExpr" , toString : $estr } ; } , $ _ . _hx _name = "OpStr" , $ _ . _ _params _ _ = [ "str" ] , $ _ )
, OpBlock : ( $ _ = function ( l ) { return { _hx _index : 4 , l : l , _ _enum _ _ : "haxe._Template.TemplateExpr" , toString : $estr } ; } , $ _ . _hx _name = "OpBlock" , $ _ . _ _params _ _ = [ "l" ] , $ _ )
, OpForeach : ( $ _ = function ( expr , loop ) { return { _hx _index : 5 , expr : expr , loop : loop , _ _enum _ _ : "haxe._Template.TemplateExpr" , toString : $estr } ; } , $ _ . _hx _name = "OpForeach" , $ _ . _ _params _ _ = [ "expr" , "loop" ] , $ _ )
, OpMacro : ( $ _ = function ( name , params ) { return { _hx _index : 6 , name : name , params : params , _ _enum _ _ : "haxe._Template.TemplateExpr" , toString : $estr } ; } , $ _ . _hx _name = "OpMacro" , $ _ . _ _params _ _ = [ "name" , "params" ] , $ _ )
} ;
haxe _ _$Template _TemplateExpr . _ _constructs _ _ = [ haxe _ _$Template _TemplateExpr . OpVar , haxe _ _$Template _TemplateExpr . OpExpr , haxe _ _$Template _TemplateExpr . OpIf , haxe _ _$Template _TemplateExpr . OpStr , haxe _ _$Template _TemplateExpr . OpBlock , haxe _ _$Template _TemplateExpr . OpForeach , haxe _ _$Template _TemplateExpr . OpMacro ] ;
2023-03-09 22:32:28 +01:00
var haxe _iterators _ArrayIterator = function ( array ) {
this . current = 0 ;
this . array = array ;
2023-03-09 19:58:08 +01:00
} ;
2023-03-10 18:49:16 +01:00
haxe _iterators _ArrayIterator . _ _name _ _ = true ;
2023-03-09 22:32:28 +01:00
haxe _iterators _ArrayIterator . prototype = {
hasNext : function ( ) {
return this . current < this . array . length ;
2023-03-09 19:58:08 +01:00
}
, next : function ( ) {
return this . array [ this . current ++ ] ;
}
} ;
2024-02-16 17:34:32 +01:00
var haxe _Template = function ( str ) {
var tokens = this . parseTokens ( str ) ;
this . expr = this . parseBlock ( tokens ) ;
if ( ! tokens . isEmpty ( ) ) {
throw haxe _Exception . thrown ( "Unexpected '" + Std . string ( tokens . first ( ) . s ) + "'" ) ;
}
} ;
haxe _Template . _ _name _ _ = true ;
haxe _Template . prototype = {
execute : function ( context , macros ) {
this . macros = macros == null ? { } : macros ;
this . context = context ;
this . stack = new haxe _ds _List ( ) ;
this . buf = new StringBuf ( ) ;
this . run ( this . expr ) ;
return this . buf . b ;
}
, resolve : function ( v ) {
if ( v == "__current__" ) {
return this . context ;
}
if ( Reflect . isObject ( this . context ) ) {
var value = Reflect . getProperty ( this . context , v ) ;
if ( value != null || Object . prototype . hasOwnProperty . call ( this . context , v ) ) {
return value ;
}
}
var _g _head = this . stack . h ;
while ( _g _head != null ) {
var val = _g _head . item ;
_g _head = _g _head . next ;
var ctx = val ;
var value = Reflect . getProperty ( ctx , v ) ;
if ( value != null || Object . prototype . hasOwnProperty . call ( ctx , v ) ) {
return value ;
}
}
return Reflect . field ( haxe _Template . globals , v ) ;
}
, parseTokens : function ( data ) {
var tokens = new haxe _ds _List ( ) ;
while ( haxe _Template . splitter . match ( data ) ) {
var p = haxe _Template . splitter . matchedPos ( ) ;
if ( p . pos > 0 ) {
tokens . add ( { p : HxOverrides . substr ( data , 0 , p . pos ) , s : true , l : null } ) ;
}
if ( HxOverrides . cca ( data , p . pos ) == 58 ) {
tokens . add ( { p : HxOverrides . substr ( data , p . pos + 2 , p . len - 4 ) , s : false , l : null } ) ;
data = haxe _Template . splitter . matchedRight ( ) ;
continue ;
}
var parp = p . pos + p . len ;
var npar = 1 ;
var params = [ ] ;
var part = "" ;
while ( true ) {
var c = HxOverrides . cca ( data , parp ) ;
++ parp ;
if ( c == 40 ) {
++ npar ;
} else if ( c == 41 ) {
-- npar ;
if ( npar <= 0 ) {
break ;
}
} else if ( c == null ) {
throw haxe _Exception . thrown ( "Unclosed macro parenthesis" ) ;
}
if ( c == 44 && npar == 1 ) {
params . push ( part ) ;
part = "" ;
} else {
part += String . fromCodePoint ( c ) ;
}
}
params . push ( part ) ;
tokens . add ( { p : haxe _Template . splitter . matched ( 2 ) , s : false , l : params } ) ;
data = HxOverrides . substr ( data , parp , data . length - parp ) ;
}
if ( data . length > 0 ) {
tokens . add ( { p : data , s : true , l : null } ) ;
}
return tokens ;
}
, parseBlock : function ( tokens ) {
var l = new haxe _ds _List ( ) ;
while ( true ) {
var t = tokens . first ( ) ;
if ( t == null ) {
break ;
}
if ( ! t . s && ( t . p == "end" || t . p == "else" || HxOverrides . substr ( t . p , 0 , 7 ) == "elseif " ) ) {
break ;
}
l . add ( this . parse ( tokens ) ) ;
}
if ( l . length == 1 ) {
return l . first ( ) ;
}
return haxe _ _$Template _TemplateExpr . OpBlock ( l ) ;
}
, parse : function ( tokens ) {
var t = tokens . pop ( ) ;
var p = t . p ;
if ( t . s ) {
return haxe _ _$Template _TemplateExpr . OpStr ( p ) ;
}
if ( t . l != null ) {
var pe = new haxe _ds _List ( ) ;
var _g = 0 ;
var _g1 = t . l ;
while ( _g < _g1 . length ) {
var p1 = _g1 [ _g ] ;
++ _g ;
pe . add ( this . parseBlock ( this . parseTokens ( p1 ) ) ) ;
}
return haxe _ _$Template _TemplateExpr . OpMacro ( p , pe ) ;
}
var kwdEnd = function ( kwd ) {
var pos = - 1 ;
var length = kwd . length ;
if ( HxOverrides . substr ( p , 0 , length ) == kwd ) {
pos = length ;
var _g _offset = 0 ;
var _g _s = HxOverrides . substr ( p , length , null ) ;
while ( _g _offset < _g _s . length ) {
var c = _g _s . charCodeAt ( _g _offset ++ ) ;
if ( c == 32 ) {
++ pos ;
} else {
break ;
}
}
}
return pos ;
} ;
var pos = kwdEnd ( "if" ) ;
if ( pos > 0 ) {
p = HxOverrides . substr ( p , pos , p . length - pos ) ;
var e = this . parseExpr ( p ) ;
var eif = this . parseBlock ( tokens ) ;
var t = tokens . first ( ) ;
var eelse ;
if ( t == null ) {
throw haxe _Exception . thrown ( "Unclosed 'if'" ) ;
}
if ( t . p == "end" ) {
tokens . pop ( ) ;
eelse = null ;
} else if ( t . p == "else" ) {
tokens . pop ( ) ;
eelse = this . parseBlock ( tokens ) ;
t = tokens . pop ( ) ;
if ( t == null || t . p != "end" ) {
throw haxe _Exception . thrown ( "Unclosed 'else'" ) ;
}
} else {
t . p = HxOverrides . substr ( t . p , 4 , t . p . length - 4 ) ;
eelse = this . parse ( tokens ) ;
}
return haxe _ _$Template _TemplateExpr . OpIf ( e , eif , eelse ) ;
}
var pos = kwdEnd ( "foreach" ) ;
if ( pos >= 0 ) {
p = HxOverrides . substr ( p , pos , p . length - pos ) ;
var e = this . parseExpr ( p ) ;
var efor = this . parseBlock ( tokens ) ;
var t = tokens . pop ( ) ;
if ( t == null || t . p != "end" ) {
throw haxe _Exception . thrown ( "Unclosed 'foreach'" ) ;
}
return haxe _ _$Template _TemplateExpr . OpForeach ( e , efor ) ;
}
if ( haxe _Template . expr _splitter . match ( p ) ) {
return haxe _ _$Template _TemplateExpr . OpExpr ( this . parseExpr ( p ) ) ;
}
return haxe _ _$Template _TemplateExpr . OpVar ( p ) ;
}
, parseExpr : function ( data ) {
var l = new haxe _ds _List ( ) ;
var expr = data ;
while ( haxe _Template . expr _splitter . match ( data ) ) {
var p = haxe _Template . expr _splitter . matchedPos ( ) ;
var k = p . pos + p . len ;
if ( p . pos != 0 ) {
l . add ( { p : HxOverrides . substr ( data , 0 , p . pos ) , s : true } ) ;
}
var p1 = haxe _Template . expr _splitter . matched ( 0 ) ;
l . add ( { p : p1 , s : p1 . indexOf ( "\"" ) >= 0 } ) ;
data = haxe _Template . expr _splitter . matchedRight ( ) ;
}
if ( data . length != 0 ) {
var _g _offset = 0 ;
var _g _s = data ;
while ( _g _offset < _g _s . length ) {
var _g1 _key = _g _offset ;
var _g1 _value = _g _s . charCodeAt ( _g _offset ++ ) ;
var i = _g1 _key ;
var c = _g1 _value ;
if ( c != 32 ) {
l . add ( { p : HxOverrides . substr ( data , i , null ) , s : true } ) ;
break ;
}
}
}
var e ;
try {
e = this . makeExpr ( l ) ;
if ( ! l . isEmpty ( ) ) {
throw haxe _Exception . thrown ( l . first ( ) . p ) ;
}
} catch ( _g ) {
var _g1 = haxe _Exception . caught ( _g ) . unwrap ( ) ;
if ( typeof ( _g1 ) == "string" ) {
var s = _g1 ;
throw haxe _Exception . thrown ( "Unexpected '" + s + "' in " + expr ) ;
} else {
throw _g ;
}
}
return function ( ) {
try {
return e ( ) ;
} catch ( _g ) {
var exc = haxe _Exception . caught ( _g ) . unwrap ( ) ;
throw haxe _Exception . thrown ( "Error : " + Std . string ( exc ) + " in " + expr ) ;
}
} ;
}
, makeConst : function ( v ) {
haxe _Template . expr _trim . match ( v ) ;
v = haxe _Template . expr _trim . matched ( 1 ) ;
if ( HxOverrides . cca ( v , 0 ) == 34 ) {
var str = HxOverrides . substr ( v , 1 , v . length - 2 ) ;
return function ( ) {
return str ;
} ;
}
if ( haxe _Template . expr _int . match ( v ) ) {
var i = Std . parseInt ( v ) ;
return function ( ) {
return i ;
} ;
}
if ( haxe _Template . expr _float . match ( v ) ) {
var f = parseFloat ( v ) ;
return function ( ) {
return f ;
} ;
}
var me = this ;
return function ( ) {
return me . resolve ( v ) ;
} ;
}
, makePath : function ( e , l ) {
var p = l . first ( ) ;
if ( p == null || p . p != "." ) {
return e ;
}
l . pop ( ) ;
var field = l . pop ( ) ;
if ( field == null || ! field . s ) {
throw haxe _Exception . thrown ( field . p ) ;
}
var f = field . p ;
haxe _Template . expr _trim . match ( f ) ;
f = haxe _Template . expr _trim . matched ( 1 ) ;
return this . makePath ( function ( ) {
return Reflect . field ( e ( ) , f ) ;
} , l ) ;
}
, makeExpr : function ( l ) {
return this . makePath ( this . makeExpr2 ( l ) , l ) ;
}
, skipSpaces : function ( l ) {
var p = l . first ( ) ;
while ( p != null ) {
var _g _offset = 0 ;
var _g _s = p . p ;
while ( _g _offset < _g _s . length ) {
var c = _g _s . charCodeAt ( _g _offset ++ ) ;
if ( c != 32 ) {
return ;
}
}
l . pop ( ) ;
p = l . first ( ) ;
}
}
, makeExpr2 : function ( l ) {
this . skipSpaces ( l ) ;
var p = l . pop ( ) ;
this . skipSpaces ( l ) ;
if ( p == null ) {
throw haxe _Exception . thrown ( "<eof>" ) ;
}
if ( p . s ) {
return this . makeConst ( p . p ) ;
}
switch ( p . p ) {
case "!" :
var e = this . makeExpr ( l ) ;
return function ( ) {
var v = e ( ) ;
if ( v != null ) {
return v == false ;
} else {
return true ;
}
} ;
case "(" :
this . skipSpaces ( l ) ;
var e1 = this . makeExpr ( l ) ;
this . skipSpaces ( l ) ;
var p1 = l . pop ( ) ;
if ( p1 == null || p1 . s ) {
throw haxe _Exception . thrown ( p1 ) ;
}
if ( p1 . p == ")" ) {
return e1 ;
}
this . skipSpaces ( l ) ;
var e2 = this . makeExpr ( l ) ;
this . skipSpaces ( l ) ;
var p2 = l . pop ( ) ;
this . skipSpaces ( l ) ;
if ( p2 == null || p2 . p != ")" ) {
throw haxe _Exception . thrown ( p2 ) ;
}
switch ( p1 . p ) {
case "!=" :
return function ( ) {
return e1 ( ) != e2 ( ) ;
} ;
case "&&" :
return function ( ) {
return e1 ( ) && e2 ( ) ;
} ;
case "*" :
return function ( ) {
return e1 ( ) * e2 ( ) ;
} ;
case "+" :
return function ( ) {
return e1 ( ) + e2 ( ) ;
} ;
case "-" :
return function ( ) {
return e1 ( ) - e2 ( ) ;
} ;
case "/" :
return function ( ) {
return e1 ( ) / e2 ( ) ;
} ;
case "<" :
return function ( ) {
return e1 ( ) < e2 ( ) ;
} ;
case "<=" :
return function ( ) {
return e1 ( ) <= e2 ( ) ;
} ;
case "==" :
return function ( ) {
return e1 ( ) == e2 ( ) ;
} ;
case ">" :
return function ( ) {
return e1 ( ) > e2 ( ) ;
} ;
case ">=" :
return function ( ) {
return e1 ( ) >= e2 ( ) ;
} ;
case "||" :
return function ( ) {
return e1 ( ) || e2 ( ) ;
} ;
default :
throw haxe _Exception . thrown ( "Unknown operation " + p1 . p ) ;
}
break ;
case "-" :
var e3 = this . makeExpr ( l ) ;
return function ( ) {
return - e3 ( ) ;
} ;
}
throw haxe _Exception . thrown ( p . p ) ;
}
, run : function ( e ) {
switch ( e . _hx _index ) {
case 0 :
var v = e . v ;
var _this = this . buf ;
var x = Std . string ( this . resolve ( v ) ) ;
_this . b += Std . string ( x ) ;
break ;
case 1 :
var e1 = e . expr ;
var _this = this . buf ;
var x = Std . string ( e1 ( ) ) ;
_this . b += Std . string ( x ) ;
break ;
case 2 :
var e1 = e . expr ;
var eif = e . eif ;
var eelse = e . eelse ;
var v = e1 ( ) ;
if ( v == null || v == false ) {
if ( eelse != null ) {
this . run ( eelse ) ;
}
} else {
this . run ( eif ) ;
}
break ;
case 3 :
var str = e . str ;
this . buf . b += str == null ? "null" : "" + str ;
break ;
case 4 :
var l = e . l ;
var _g _head = l . h ;
while ( _g _head != null ) {
var val = _g _head . item ;
_g _head = _g _head . next ;
var e1 = val ;
this . run ( e1 ) ;
}
break ;
case 5 :
var e1 = e . expr ;
var loop = e . loop ;
var v = e1 ( ) ;
try {
var x = $getIterator ( v ) ;
if ( x . hasNext == null ) {
throw haxe _Exception . thrown ( null ) ;
}
v = x ;
} catch ( _g ) {
try {
if ( v . hasNext == null ) {
throw haxe _Exception . thrown ( null ) ;
}
} catch ( _g1 ) {
throw haxe _Exception . thrown ( "Cannot iter on " + Std . string ( v ) ) ;
}
}
this . stack . push ( this . context ) ;
var v1 = v ;
var ctx = v1 ;
while ( ctx . hasNext ( ) ) {
var ctx1 = ctx . next ( ) ;
this . context = ctx1 ;
this . run ( loop ) ;
}
this . context = this . stack . pop ( ) ;
break ;
case 6 :
var m = e . name ;
var params = e . params ;
var v = Reflect . field ( this . macros , m ) ;
var pl = [ ] ;
var old = this . buf ;
pl . push ( $bind ( this , this . resolve ) ) ;
var _g _head = params . h ;
while ( _g _head != null ) {
var val = _g _head . item ;
_g _head = _g _head . next ;
var p = val ;
if ( p . _hx _index == 0 ) {
var v1 = p . v ;
pl . push ( this . resolve ( v1 ) ) ;
} else {
this . buf = new StringBuf ( ) ;
this . run ( p ) ;
pl . push ( this . buf . b ) ;
}
}
this . buf = old ;
try {
var _this = this . buf ;
var x = Std . string ( v . apply ( this . macros , pl ) ) ;
_this . b += Std . string ( x ) ;
} catch ( _g ) {
var e = haxe _Exception . caught ( _g ) . unwrap ( ) ;
var plstr ;
try {
plstr = pl . join ( "," ) ;
} catch ( _g1 ) {
plstr = "???" ;
}
var msg = "Macro call " + m + "(" + plstr + ") failed (" + Std . string ( e ) + ")" ;
throw haxe _Exception . thrown ( msg ) ;
}
break ;
}
}
} ;
var haxe _ValueException = function ( value , previous , native ) {
haxe _Exception . call ( this , String ( value ) , previous , native ) ;
this . value = value ;
} ;
haxe _ValueException . _ _name _ _ = true ;
haxe _ValueException . _ _super _ _ = haxe _Exception ;
haxe _ValueException . prototype = $extend ( haxe _Exception . prototype , {
unwrap : function ( ) {
return this . value ;
}
} ) ;
var haxe _ds _List = function ( ) {
this . length = 0 ;
} ;
haxe _ds _List . _ _name _ _ = true ;
haxe _ds _List . prototype = {
add : function ( item ) {
var x = new haxe _ds _ _$List _ListNode ( item , null ) ;
if ( this . h == null ) {
this . h = x ;
} else {
this . q . next = x ;
}
this . q = x ;
this . length ++ ;
}
, push : function ( item ) {
var x = new haxe _ds _ _$List _ListNode ( item , this . h ) ;
this . h = x ;
if ( this . q == null ) {
this . q = x ;
}
this . length ++ ;
}
, first : function ( ) {
if ( this . h == null ) {
return null ;
} else {
return this . h . item ;
}
}
, pop : function ( ) {
if ( this . h == null ) {
return null ;
}
var x = this . h . item ;
this . h = this . h . next ;
if ( this . h == null ) {
this . q = null ;
}
this . length -- ;
return x ;
}
, isEmpty : function ( ) {
return this . h == null ;
}
, toString : function ( ) {
var s _b = "" ;
var first = true ;
var l = this . h ;
s _b += "{" ;
while ( l != null ) {
if ( first ) {
first = false ;
} else {
s _b += ", " ;
}
s _b += Std . string ( Std . string ( l . item ) ) ;
l = l . next ;
}
s _b += "}" ;
return s _b ;
}
} ;
var haxe _ds _ _$List _ListNode = function ( item , next ) {
this . item = item ;
this . next = next ;
} ;
haxe _ds _ _$List _ListNode . _ _name _ _ = true ;
2023-03-10 18:49:16 +01:00
var js _Boot = function ( ) { } ;
js _Boot . _ _name _ _ = true ;
js _Boot . _ _string _rec = function ( o , s ) {
if ( o == null ) {
return "null" ;
}
if ( s . length >= 5 ) {
return "<...>" ;
}
var t = typeof ( o ) ;
if ( t == "function" && ( o . _ _name _ _ || o . _ _ename _ _ ) ) {
t = "object" ;
}
switch ( t ) {
case "function" :
return "<function>" ;
case "object" :
2024-02-16 17:34:32 +01:00
if ( o . _ _enum _ _ ) {
var e = $hxEnums [ o . _ _enum _ _ ] ;
var con = e . _ _constructs _ _ [ o . _hx _index ] ;
var n = con . _hx _name ;
if ( con . _ _params _ _ ) {
s = s + "\t" ;
return n + "(" + ( ( function ( $this ) {
var $r ;
var _g = [ ] ;
{
var _g1 = 0 ;
var _g2 = con . _ _params _ _ ;
while ( true ) {
if ( ! ( _g1 < _g2 . length ) ) {
break ;
}
var p = _g2 [ _g1 ] ;
_g1 = _g1 + 1 ;
_g . push ( js _Boot . _ _string _rec ( o [ p ] , s ) ) ;
}
}
$r = _g ;
return $r ;
} ( this ) ) ) . join ( "," ) + ")" ;
} else {
return n ;
}
}
2023-03-10 18:49:16 +01:00
if ( ( ( o ) instanceof Array ) ) {
var str = "[" ;
s += "\t" ;
var _g = 0 ;
var _g1 = o . length ;
while ( _g < _g1 ) {
var i = _g ++ ;
str += ( i > 0 ? "," : "" ) + js _Boot . _ _string _rec ( o [ i ] , s ) ;
}
str += "]" ;
return str ;
}
var tostr ;
try {
tostr = o . toString ;
} catch ( _g ) {
return "???" ;
}
if ( tostr != null && tostr != Object . toString && typeof ( tostr ) == "function" ) {
var s2 = o . toString ( ) ;
if ( s2 != "[object Object]" ) {
return s2 ;
}
}
var str = "{\n" ;
s += "\t" ;
var hasp = o . hasOwnProperty != null ;
var k = null ;
for ( k in o ) {
if ( hasp && ! o . hasOwnProperty ( k ) ) {
continue ;
}
if ( k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__" || k == "__properties__" ) {
continue ;
}
if ( str . length != 2 ) {
str += ", \n" ;
}
str += s + k + " : " + js _Boot . _ _string _rec ( o [ k ] , s ) ;
}
s = s . substring ( 1 ) ;
str += "\n" + s + "}" ;
return str ;
case "string" :
return o ;
default :
return String ( o ) ;
}
} ;
2023-12-06 12:55:08 +01:00
var xrfragment _Filter = $hx _exports [ "xrfragment" ] [ "Filter" ] = function ( str ) {
2023-03-09 19:58:08 +01:00
this . q = { } ;
2023-03-31 19:13:42 +02:00
this . str = "" ;
2023-03-09 19:58:08 +01:00
if ( str != null ) {
this . parse ( str ) ;
}
} ;
2023-12-06 12:55:08 +01:00
xrfragment _Filter . _ _name _ _ = true ;
xrfragment _Filter . prototype = {
2023-03-31 19:13:42 +02:00
toObject : function ( ) {
2023-12-06 12:55:08 +01:00
return Reflect . copy ( this . q ) ;
2023-03-31 19:13:42 +02:00
}
2023-04-14 15:19:52 +02:00
, get : function ( ) {
2023-12-06 12:55:08 +01:00
return Reflect . copy ( this . q ) ;
2023-04-14 15:19:52 +02:00
}
2023-06-27 09:43:10 +02:00
, parse : function ( str ) {
2023-03-09 19:58:08 +01:00
var token = str . split ( " " ) ;
var q = { } ;
2023-03-21 17:57:54 +01:00
var process = function ( str , prefix ) {
2023-03-09 19:58:08 +01:00
if ( prefix == null ) {
prefix = "" ;
}
2023-03-21 17:57:54 +01:00
str = StringTools . trim ( str ) ;
2023-12-06 12:55:08 +01:00
var k = str . split ( "=" ) [ 0 ] ;
var v = str . split ( "=" ) [ 1 ] ;
2023-03-24 17:10:30 +01:00
var filter = { } ;
if ( q [ prefix + k ] ) {
filter = q [ prefix + k ] ;
}
2023-12-06 12:55:08 +01:00
if ( xrfragment _XRF . isProp . match ( str ) ) {
2023-03-21 17:57:54 +01:00
var oper = "" ;
2023-03-09 19:58:08 +01:00
if ( str . indexOf ( ">" ) != - 1 ) {
2023-03-21 17:57:54 +01:00
oper = ">" ;
2023-03-09 19:58:08 +01:00
}
if ( str . indexOf ( "<" ) != - 1 ) {
2023-03-21 17:57:54 +01:00
oper = "<" ;
2023-03-09 19:58:08 +01:00
}
2023-12-06 12:55:08 +01:00
if ( xrfragment _XRF . isExclude . match ( k ) ) {
2023-03-24 17:10:30 +01:00
k = HxOverrides . substr ( k , 1 , null ) ;
}
2023-12-06 12:55:08 +01:00
v = HxOverrides . substr ( v , oper . length , null ) ;
2023-03-24 17:10:30 +01:00
if ( oper . length == 0 ) {
oper = "=" ;
2023-03-09 19:58:08 +01:00
}
2023-09-15 19:43:11 +02:00
var rule = { } ;
2023-12-06 12:55:08 +01:00
if ( xrfragment _XRF . isNumber . match ( v ) ) {
2023-09-15 19:43:11 +02:00
rule [ oper ] = parseFloat ( v ) ;
2023-03-09 19:58:08 +01:00
} else {
2023-09-15 19:43:11 +02:00
rule [ oper ] = v ;
2023-03-09 19:58:08 +01:00
}
2023-12-06 12:55:08 +01:00
q [ "expr" ] = rule ;
2023-03-09 19:58:08 +01:00
}
2023-12-06 12:55:08 +01:00
var value = xrfragment _XRF . isDeep . match ( str ) ? k . split ( "*" ) . length - 1 : 0 ;
q [ "deep" ] = value ;
var value = xrfragment _XRF . isExclude . match ( str ) ? false : true ;
q [ "show" ] = value ;
var value = k . replace ( xrfragment _XRF . operators . r , "" ) ;
q [ "key" ] = value ;
q [ "value" ] = v ;
2023-03-09 19:58:08 +01:00
} ;
var _g = 0 ;
var _g1 = token . length ;
while ( _g < _g1 ) {
var i = _g ++ ;
2023-09-15 19:43:11 +02:00
process ( token [ i ] ) ;
2023-03-09 19:58:08 +01:00
}
2023-04-14 15:19:52 +02:00
return this . q = q ;
2023-03-09 19:58:08 +01:00
}
2023-03-24 17:10:30 +01:00
, test : function ( obj ) {
var qualify = false ;
var _g = 0 ;
var _g1 = Reflect . fields ( obj ) ;
while ( _g < _g1 . length ) {
var k = _g1 [ _g ] ;
++ _g ;
var v = Std . string ( Reflect . field ( obj , k ) ) ;
if ( this . testProperty ( k , v ) ) {
qualify = true ;
}
}
var _g = 0 ;
var _g1 = Reflect . fields ( obj ) ;
while ( _g < _g1 . length ) {
var k = _g1 [ _g ] ;
++ _g ;
var v = Std . string ( Reflect . field ( obj , k ) ) ;
if ( this . testProperty ( k , v , true ) ) {
qualify = false ;
}
}
return qualify ;
}
, testProperty : function ( property , value , exclude ) {
2023-03-21 17:57:54 +01:00
var conds = 0 ;
var fails = 0 ;
var qualify = 0 ;
var testprop = function ( expr ) {
conds += 1 ;
fails += expr ? 0 : 1 ;
return expr ;
} ;
if ( this . q [ value ] != null ) {
var v = this . q [ value ] ;
if ( v [ property ] != null ) {
return v [ property ] ;
}
2023-03-09 19:58:08 +01:00
}
2023-12-06 12:55:08 +01:00
if ( Reflect . field ( this . q , "expr" ) ) {
var f = Reflect . field ( this . q , "expr" ) ;
if ( ! Reflect . field ( this . q , "show" ) ) {
if ( Reflect . field ( f , "!=" ) != null && testprop ( ( value == null ? "null" : "" + value ) == Std . string ( Reflect . field ( f , "!=" ) ) ) && exclude ) {
++ qualify ;
}
} else {
if ( Reflect . field ( f , "*" ) != null && testprop ( parseFloat ( value ) != null ) ) {
++ qualify ;
}
if ( Reflect . field ( f , ">" ) != null && testprop ( parseFloat ( value ) >= parseFloat ( Reflect . field ( f , ">" ) ) ) ) {
++ qualify ;
}
if ( Reflect . field ( f , "<" ) != null && testprop ( parseFloat ( value ) <= parseFloat ( Reflect . field ( f , "<" ) ) ) ) {
++ qualify ;
}
if ( Reflect . field ( f , "=" ) != null && ( testprop ( value == Reflect . field ( f , "=" ) ) || testprop ( parseFloat ( value ) == parseFloat ( Reflect . field ( f , "=" ) ) ) ) ) {
++ qualify ;
2023-03-24 17:10:30 +01:00
}
2023-03-09 19:58:08 +01:00
}
}
2023-03-21 17:57:54 +01:00
return qualify > 0 ;
2023-03-09 19:58:08 +01:00
}
} ;
2023-12-06 12:55:08 +01:00
var xrfragment _Parser = $hx _exports [ "xrfragment" ] [ "Parser" ] = function ( ) { } ;
xrfragment _Parser . _ _name _ _ = true ;
xrfragment _Parser . parse = function ( key , value , store , index ) {
var Frag _h = Object . create ( null ) ;
2024-02-16 17:34:32 +01:00
Frag _h [ "#" ] = xrfragment _XRF . IMMUTABLE | xrfragment _XRF . T _PREDEFINED _VIEW | xrfragment _XRF . PV _EXECUTE ;
Frag _h [ "src" ] = xrfragment _XRF . T _URL ;
Frag _h [ "href" ] = xrfragment _XRF . T _URL | xrfragment _XRF . T _PREDEFINED _VIEW ;
Frag _h [ "tag" ] = xrfragment _XRF . IMMUTABLE | xrfragment _XRF . T _STRING ;
2024-02-01 20:10:41 +01:00
Frag _h [ "pos" ] = xrfragment _XRF . PV _OVERRIDE | xrfragment _XRF . T _VECTOR3 | xrfragment _XRF . T _STRING | xrfragment _XRF . METADATA | xrfragment _XRF . NAVIGATOR ;
2023-12-06 12:55:08 +01:00
Frag _h [ "rot" ] = xrfragment _XRF . QUERY _OPERATOR | xrfragment _XRF . PV _OVERRIDE | xrfragment _XRF . T _VECTOR3 | xrfragment _XRF . METADATA | xrfragment _XRF . NAVIGATOR ;
2024-02-16 17:34:32 +01:00
Frag _h [ "t" ] = xrfragment _XRF . PV _OVERRIDE | xrfragment _XRF . T _FLOAT | xrfragment _XRF . T _VECTOR2 | xrfragment _XRF . NAVIGATOR | xrfragment _XRF . METADATA ;
Frag _h [ "s" ] = xrfragment _XRF . PV _OVERRIDE | xrfragment _XRF . T _MEDIAFRAG ;
Frag _h [ "loop" ] = xrfragment _XRF . PV _OVERRIDE ;
Frag _h [ "uv" ] = xrfragment _XRF . T _VECTOR2 | xrfragment _XRF . T _MEDIAFRAG ;
Frag _h [ "namespace" ] = xrfragment _XRF . IMMUTABLE | xrfragment _XRF . T _STRING ;
Frag _h [ "SPDX" ] = xrfragment _XRF . IMMUTABLE | xrfragment _XRF . T _STRING ;
Frag _h [ "unit" ] = xrfragment _XRF . IMMUTABLE | xrfragment _XRF . T _STRING ;
Frag _h [ "description" ] = xrfragment _XRF . IMMUTABLE | xrfragment _XRF . T _STRING ;
2023-12-06 12:55:08 +01:00
var keyStripped = key . replace ( xrfragment _XRF . operators . r , "" ) ;
var isPVDynamic = key . length > 0 && ! Object . prototype . hasOwnProperty . call ( Frag _h , key ) ;
if ( isPVDynamic ) {
var v = new xrfragment _XRF ( key , xrfragment _XRF . PV _EXECUTE | xrfragment _XRF . NAVIGATOR , index ) ;
v . validate ( value ) ;
2024-02-16 17:34:32 +01:00
v . flags = xrfragment _XRF . set ( xrfragment _XRF . T _DYNAMICKEY , v . flags ) ;
if ( ! Object . prototype . hasOwnProperty . call ( Frag _h , key ) ) {
v . flags = xrfragment _XRF . set ( xrfragment _XRF . CUSTOMFRAG , v . flags ) ;
}
if ( value . length == 0 ) {
v . flags = xrfragment _XRF . set ( xrfragment _XRF . T _DYNAMICKEYVALUE , v . flags ) ;
}
2023-12-06 12:55:08 +01:00
store [ keyStripped ] = v ;
return true ;
}
var v = new xrfragment _XRF ( key , Frag _h [ key ] , index ) ;
if ( Object . prototype . hasOwnProperty . call ( Frag _h , key ) ) {
if ( ! v . validate ( value ) ) {
2024-02-02 12:13:07 +01:00
console . log ( "src/xrfragment/Parser.hx:67:" , "⚠ fragment '" + key + "' has incompatible value (" + value + ")" ) ;
2023-12-06 12:55:08 +01:00
return false ;
}
store [ keyStripped ] = v ;
if ( xrfragment _Parser . debug ) {
2024-02-02 12:13:07 +01:00
console . log ( "src/xrfragment/Parser.hx:71:" , "✔ " + key + ": " + v . string ) ;
2023-12-06 12:55:08 +01:00
}
} else {
if ( typeof ( value ) == "string" ) {
v . guessType ( v , value ) ;
}
2024-02-16 17:34:32 +01:00
v . flags = xrfragment _XRF . set ( xrfragment _XRF . CUSTOMFRAG , v . flags ) ;
2023-12-06 12:55:08 +01:00
store [ keyStripped ] = v ;
}
return true ;
} ;
2023-03-31 14:47:54 +02:00
var xrfragment _URI = $hx _exports [ "xrfragment" ] [ "URI" ] = function ( ) { } ;
xrfragment _URI . _ _name _ _ = true ;
2023-05-04 13:28:12 +02:00
xrfragment _URI . parse = function ( url , filter ) {
var store = { } ;
2023-06-10 14:43:07 +02:00
if ( url == null || url . indexOf ( "#" ) == - 1 ) {
2023-05-04 13:28:12 +02:00
return store ;
}
var fragment = url . split ( "#" ) ;
2023-03-10 18:49:16 +01:00
var splitArray = fragment [ 1 ] . split ( "&" ) ;
var _g = 0 ;
var _g1 = splitArray . length ;
while ( _g < _g1 ) {
var i = _g ++ ;
var splitByEqual = splitArray [ i ] . split ( "=" ) ;
2023-03-31 12:58:53 +02:00
var regexPlus = new EReg ( "\\+" , "g" ) ;
2023-03-10 18:49:16 +01:00
var key = splitByEqual [ 0 ] ;
2023-04-14 17:37:33 +02:00
var value = "" ;
2023-03-10 18:49:16 +01:00
if ( splitByEqual . length > 1 ) {
2024-02-16 17:34:32 +01:00
if ( xrfragment _XRF . isVector . match ( splitByEqual [ 1 ] ) ) {
value = splitByEqual [ 1 ] ;
} else {
var s = regexPlus . split ( splitByEqual [ 1 ] ) . join ( " " ) ;
value = decodeURIComponent ( s . split ( "+" ) . join ( " " ) ) ;
}
2023-03-10 18:49:16 +01:00
}
2023-12-06 12:55:08 +01:00
var ok = xrfragment _Parser . parse ( key , value , store , i ) ;
2023-03-10 18:49:16 +01:00
}
2023-05-04 13:28:12 +02:00
if ( filter != null && filter != 0 ) {
2023-04-14 15:19:52 +02:00
var _g = 0 ;
2023-05-04 13:28:12 +02:00
var _g1 = Reflect . fields ( store ) ;
2023-04-14 15:19:52 +02:00
while ( _g < _g1 . length ) {
var key = _g1 [ _g ] ;
++ _g ;
2023-05-04 13:28:12 +02:00
var xrf = store [ key ] ;
if ( ! xrf . is ( filter ) ) {
Reflect . deleteField ( store , key ) ;
2023-04-14 15:19:52 +02:00
}
}
}
2023-05-04 13:28:12 +02:00
return store ;
2023-03-10 18:49:16 +01:00
} ;
2024-02-16 17:34:32 +01:00
xrfragment _URI . template = function ( uri , vars ) {
var parts = uri . split ( "#" ) ;
if ( parts . length == 1 ) {
return uri ;
}
var frag = parts [ 1 ] ;
frag = StringTools . replace ( frag , "{" , "::" ) ;
frag = StringTools . replace ( frag , "}" , "::" ) ;
frag = new haxe _Template ( frag ) . execute ( vars ) ;
frag = StringTools . replace ( frag , "null" , "" ) ;
parts [ 1 ] = frag ;
return parts . join ( "#" ) ;
} ;
2023-12-06 12:55:08 +01:00
var xrfragment _XRF = $hx _exports [ "xrfragment" ] [ "XRF" ] = function ( _fragment , _flags , _index ) {
2024-02-01 20:10:41 +01:00
this . floats = [ ] ;
2024-02-16 17:34:32 +01:00
this . shift = [ ] ;
2023-04-14 15:19:52 +02:00
this . fragment = _fragment ;
this . flags = _flags ;
2023-12-06 12:55:08 +01:00
this . index = _index ;
2023-04-14 15:19:52 +02:00
} ;
xrfragment _XRF . _ _name _ _ = true ;
2023-04-28 14:27:30 +02:00
xrfragment _XRF . set = function ( flag , flags ) {
return flags | flag ;
} ;
xrfragment _XRF . unset = function ( flag , flags ) {
return flags & ~ flag ;
} ;
2023-04-14 15:19:52 +02:00
xrfragment _XRF . prototype = {
is : function ( flag ) {
2023-11-03 21:22:05 +01:00
var v = this . flags ;
if ( ! ( typeof ( v ) == "number" && ( ( v | 0 ) === v ) ) ) {
this . flags = 0 ;
}
2023-04-14 15:19:52 +02:00
return ( this . flags & flag ) != 0 ;
}
, validate : function ( value ) {
this . guessType ( this , value ) ;
var ok = true ;
2023-11-03 21:22:05 +01:00
if ( ! this . is ( xrfragment _XRF . T _FLOAT ) && this . is ( xrfragment _XRF . T _VECTOR2 ) && ! ( typeof ( this . x ) == "number" && typeof ( this . y ) == "number" ) ) {
ok = false ;
}
2023-12-06 12:55:08 +01:00
if ( ! ( this . is ( xrfragment _XRF . T _VECTOR2 ) || this . is ( xrfragment _XRF . T _STRING ) ) && this . is ( xrfragment _XRF . T _VECTOR3 ) && ! ( typeof ( this . x ) == "number" && typeof ( this . y ) == "number" && typeof ( this . z ) == "number" ) ) {
2023-11-03 21:22:05 +01:00
ok = false ;
2023-04-14 15:19:52 +02:00
}
return ok ;
}
, guessType : function ( v , str ) {
v . string = str ;
2024-02-16 17:34:32 +01:00
if ( xrfragment _XRF . isReset . match ( v . fragment ) ) {
v . reset = true ;
}
if ( v . fragment == "loop" ) {
v . loop = true ;
}
2023-12-06 12:55:08 +01:00
if ( typeof ( str ) != "string" ) {
return ;
}
if ( str . length > 0 ) {
2024-02-16 17:34:32 +01:00
if ( xrfragment _XRF . isXRFScheme . match ( str ) ) {
v . xrfScheme = true ;
str = str . replace ( xrfragment _XRF . isXRFScheme . r , "" ) ;
v . string = str ;
}
2023-12-06 12:55:08 +01:00
if ( str . split ( "," ) . length > 1 ) {
2024-02-01 20:10:41 +01:00
var xyzn = str . split ( "," ) ;
if ( xyzn . length > 0 ) {
v . x = parseFloat ( xyzn [ 0 ] ) ;
2023-12-06 12:55:08 +01:00
}
2024-02-01 20:10:41 +01:00
if ( xyzn . length > 1 ) {
v . y = parseFloat ( xyzn [ 1 ] ) ;
2023-12-06 12:55:08 +01:00
}
2024-02-01 20:10:41 +01:00
if ( xyzn . length > 2 ) {
v . z = parseFloat ( xyzn [ 2 ] ) ;
2023-12-06 12:55:08 +01:00
}
2024-02-01 20:10:41 +01:00
var _g = 0 ;
var _g1 = xyzn . length ;
while ( _g < _g1 ) {
var i = _g ++ ;
2024-02-16 17:34:32 +01:00
v . shift . push ( xrfragment _XRF . isShift . match ( xyzn [ i ] ) ) ;
v . floats . push ( parseFloat ( xyzn [ i ] . replace ( xrfragment _XRF . isShift . r , "" ) ) ) ;
2023-12-06 12:55:08 +01:00
}
2023-11-03 21:22:05 +01:00
}
2023-12-06 12:55:08 +01:00
if ( xrfragment _XRF . isColor . match ( str ) ) {
v . color = str ;
2023-04-14 15:19:52 +02:00
}
2023-12-06 12:55:08 +01:00
if ( xrfragment _XRF . isFloat . match ( str ) ) {
v . x = parseFloat ( str ) ;
v . float = v . x ;
2023-04-14 15:19:52 +02:00
}
2023-12-06 12:55:08 +01:00
if ( xrfragment _XRF . isInt . match ( str ) ) {
v . int = Std . parseInt ( str ) ;
v . x = v . int ;
2024-02-16 17:34:32 +01:00
v . floats . push ( v . x ) ;
2024-02-01 20:10:41 +01:00
}
2023-12-06 12:55:08 +01:00
v . filter = new xrfragment _Filter ( v . fragment + "=" + v . string ) ;
} else {
v . filter = new xrfragment _Filter ( v . fragment ) ;
2023-04-14 15:19:52 +02:00
}
}
} ;
2024-02-16 17:34:32 +01:00
function $getIterator ( o ) { if ( o instanceof Array ) return new haxe _iterators _ArrayIterator ( o ) ; else return o . iterator ( ) ; }
function $bind ( o , m ) { if ( m == null ) return null ; if ( m . _ _id _ _ == null ) m . _ _id _ _ = $global . $haxeUID ++ ; var f ; if ( o . hx _ _closures _ _ == null ) o . hx _ _closures _ _ = { } ; else f = o . hx _ _closures _ _ [ m . _ _id _ _ ] ; if ( f == null ) { f = m . bind ( o ) ; o . hx _ _closures _ _ [ m . _ _id _ _ ] = f ; } return f ; }
$global . $haxeUID |= 0 ;
2023-03-09 19:58:08 +01:00
if ( typeof ( performance ) != "undefined" ? typeof ( performance . now ) == "function" : false ) {
HxOverrides . now = performance . now . bind ( performance ) ;
}
2024-02-16 17:34:32 +01:00
if ( String . fromCodePoint == null ) String . fromCodePoint = function ( c ) { return c < 0x10000 ? String . fromCharCode ( c ) : String . fromCharCode ( ( c >> 10 ) + 0xD7C0 ) + String . fromCharCode ( ( c & 0x3FF ) + 0xDC00 ) ; }
2023-03-10 18:49:16 +01:00
String . _ _name _ _ = true ;
Array . _ _name _ _ = true ;
js _Boot . _ _toStr = ( { } ) . toString ;
2023-03-30 19:51:32 +02:00
Test . errors = 0 ;
2024-02-16 17:34:32 +01:00
haxe _Template . splitter = new EReg ( "(::[A-Za-z0-9_ ()&|!+=/><*.\"-]+::|\\$\\$([A-Za-z0-9_-]+)\\()" , "" ) ;
haxe _Template . expr _splitter = new EReg ( "(\\(|\\)|[ \r\n\t]*\"[^\"]*\"[ \r\n\t]*|[!+=/><*.&|-]+)" , "" ) ;
haxe _Template . expr _trim = new EReg ( "^[ ]*([^ ]+)[ ]*$" , "" ) ;
haxe _Template . expr _int = new EReg ( "^[0-9]+$" , "" ) ;
haxe _Template . expr _float = new EReg ( "^([+-]?)(?=\\d|,\\d)\\d*(,\\d*)?([Ee]([+-]?\\d+))?$" , "" ) ;
haxe _Template . globals = { } ;
haxe _Template . hxKeepArrayIterator = new haxe _iterators _ArrayIterator ( [ ] ) ;
2023-03-31 12:58:53 +02:00
xrfragment _Parser . error = "" ;
2023-05-04 16:26:14 +02:00
xrfragment _Parser . debug = false ;
2024-02-16 17:34:32 +01:00
xrfragment _URI . _ _meta _ _ = { statics : { template : { keep : null } } } ;
xrfragment _XRF . IMMUTABLE = 1 ;
2023-04-20 18:49:18 +02:00
xrfragment _XRF . PROP _BIND = 2 ;
2023-04-14 17:37:33 +02:00
xrfragment _XRF . QUERY _OPERATOR = 4 ;
xrfragment _XRF . PROMPT = 8 ;
2024-02-16 17:34:32 +01:00
xrfragment _XRF . CUSTOMFRAG = 16 ;
2023-05-05 13:26:17 +02:00
xrfragment _XRF . NAVIGATOR = 32 ;
2023-08-15 18:27:26 +02:00
xrfragment _XRF . METADATA = 64 ;
2023-05-04 13:28:12 +02:00
xrfragment _XRF . PV _OVERRIDE = 128 ;
xrfragment _XRF . PV _EXECUTE = 256 ;
xrfragment _XRF . T _COLOR = 8192 ;
xrfragment _XRF . T _INT = 16384 ;
xrfragment _XRF . T _FLOAT = 32768 ;
xrfragment _XRF . T _VECTOR2 = 65536 ;
xrfragment _XRF . T _VECTOR3 = 131072 ;
xrfragment _XRF . T _URL = 262144 ;
xrfragment _XRF . T _PREDEFINED _VIEW = 524288 ;
xrfragment _XRF . T _STRING = 1048576 ;
2024-02-01 20:10:41 +01:00
xrfragment _XRF . T _MEDIAFRAG = 2097152 ;
2024-02-16 17:34:32 +01:00
xrfragment _XRF . T _DYNAMICKEY = 4194304 ;
xrfragment _XRF . T _DYNAMICKEYVALUE = 8388608 ;
2023-04-14 15:19:52 +02:00
xrfragment _XRF . isColor = new EReg ( "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$" , "" ) ;
2023-11-03 21:22:05 +01:00
xrfragment _XRF . isInt = new EReg ( "^[-0-9]+$" , "" ) ;
xrfragment _XRF . isFloat = new EReg ( "^[-0-9]+\\.[0-9]+$" , "" ) ;
2023-04-28 14:27:30 +02:00
xrfragment _XRF . isVector = new EReg ( "([,]+|\\w)" , "" ) ;
xrfragment _XRF . isUrl = new EReg ( "(://)?\\..*" , "" ) ;
xrfragment _XRF . isUrlOrPretypedView = new EReg ( "(^#|://)?\\..*" , "" ) ;
xrfragment _XRF . isString = new EReg ( ".*" , "" ) ;
2024-02-16 17:34:32 +01:00
xrfragment _XRF . operators = new EReg ( "(^[-]|^[!]|[\\*]$)" , "g" ) ;
2023-12-06 12:55:08 +01:00
xrfragment _XRF . isProp = new EReg ( "^.*=[><=]?" , "" ) ;
xrfragment _XRF . isExclude = new EReg ( "^-" , "" ) ;
xrfragment _XRF . isDeep = new EReg ( "\\*" , "" ) ;
xrfragment _XRF . isNumber = new EReg ( "^[0-9\\.]+$" , "" ) ;
2024-02-16 17:34:32 +01:00
xrfragment _XRF . isMediaFrag = new EReg ( "^([0-9\\.,\\*+-]+)$" , "" ) ;
xrfragment _XRF . isReset = new EReg ( "^!" , "" ) ;
xrfragment _XRF . isShift = new EReg ( "^(\\+|--)" , "" ) ;
xrfragment _XRF . isXRFScheme = new EReg ( "^xrf://" , "" ) ;
2023-03-09 19:58:08 +01:00
Test . main ( ) ;
2024-02-16 17:34:32 +01:00
} ) ( typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this ) ;
2023-03-09 19:58:08 +01:00
var xrfragment = $hx _exports [ "xrfragment" ] ;