narrat 3.17.3 → 3.17.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@
4
4
  * @license Licensed under MIT license
5
5
  * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
6
6
  * @version v4.2.8+1e68dce6
7
- */(function(t,e){(function(n,r){t.exports=r()})(Gi,function(){function n(_e){var ge=typeof _e;return _e!==null&&(ge==="object"||ge==="function")}function r(_e){return typeof _e=="function"}var i=void 0;Array.isArray?i=Array.isArray:i=function(_e){return Object.prototype.toString.call(_e)==="[object Array]"};var o=i,s=0,a=void 0,l=void 0,c=function(ge,Ie){T[s]=ge,T[s+1]=Ie,s+=2,s===2&&(l?l(E):L())};function f(_e){l=_e}function u(_e){c=_e}var d=typeof window<"u"?window:void 0,h=d||{},p=h.MutationObserver||h.WebKitMutationObserver,m=typeof self>"u"&&typeof process<"u"&&{}.toString.call(process)==="[object process]",y=typeof Uint8ClampedArray<"u"&&typeof importScripts<"u"&&typeof MessageChannel<"u";function v(){return function(){return process.nextTick(E)}}function b(){return typeof a<"u"?function(){a(E)}:x()}function S(){var _e=0,ge=new p(E),Ie=document.createTextNode("");return ge.observe(Ie,{characterData:!0}),function(){Ie.data=_e=++_e%2}}function _(){var _e=new MessageChannel;return _e.port1.onmessage=E,function(){return _e.port2.postMessage(0)}}function x(){var _e=setTimeout;return function(){return _e(E,1)}}var T=new Array(1e3);function E(){for(var _e=0;_e<s;_e+=2){var ge=T[_e],Ie=T[_e+1];ge(Ie),T[_e]=void 0,T[_e+1]=void 0}s=0}function R(){try{var _e=Function("return this")().require("vertx");return a=_e.runOnLoop||_e.runOnContext,b()}catch{return x()}}var L=void 0;m?L=v():p?L=S():y?L=_():d===void 0&&typeof gD=="function"?L=R():L=x();function B(_e,ge){var Ie=this,q=new this.constructor(U);q[D]===void 0&&he(q);var oe=Ie._state;if(oe){var de=arguments[oe-1];c(function(){return me(oe,q,de,Ie._result)})}else N(Ie,q,_e,ge);return q}function V(_e){var ge=this;if(_e&&typeof _e=="object"&&_e.constructor===ge)return _e;var Ie=new ge(U);return C(Ie,_e),Ie}var D=Math.random().toString(36).substring(2);function U(){}var F=void 0,se=1,X=2;function Z(){return new TypeError("You cannot resolve a promise with itself")}function z(){return new TypeError("A promises callback cannot return that same promise.")}function W(_e,ge,Ie,q){try{_e.call(ge,Ie,q)}catch(oe){return oe}}function A(_e,ge,Ie){c(function(q){var oe=!1,de=W(Ie,ge,function(be){oe||(oe=!0,ge!==be?C(q,be):$(q,be))},function(be){oe||(oe=!0,O(q,be))},"Settle: "+(q._label||" unknown promise"));!oe&&de&&(oe=!0,O(q,de))},_e)}function k(_e,ge){ge._state===se?$(_e,ge._result):ge._state===X?O(_e,ge._result):N(ge,void 0,function(Ie){return C(_e,Ie)},function(Ie){return O(_e,Ie)})}function M(_e,ge,Ie){ge.constructor===_e.constructor&&Ie===B&&ge.constructor.resolve===V?k(_e,ge):Ie===void 0?$(_e,ge):r(Ie)?A(_e,ge,Ie):$(_e,ge)}function C(_e,ge){if(_e===ge)O(_e,Z());else if(n(ge)){var Ie=void 0;try{Ie=ge.then}catch(q){O(_e,q);return}M(_e,ge,Ie)}else $(_e,ge)}function w(_e){_e._onerror&&_e._onerror(_e._result),ie(_e)}function $(_e,ge){_e._state===F&&(_e._result=ge,_e._state=se,_e._subscribers.length!==0&&c(ie,_e))}function O(_e,ge){_e._state===F&&(_e._state=X,_e._result=ge,c(w,_e))}function N(_e,ge,Ie,q){var oe=_e._subscribers,de=oe.length;_e._onerror=null,oe[de]=ge,oe[de+se]=Ie,oe[de+X]=q,de===0&&_e._state&&c(ie,_e)}function ie(_e){var ge=_e._subscribers,Ie=_e._state;if(ge.length!==0){for(var q=void 0,oe=void 0,de=_e._result,be=0;be<ge.length;be+=3)q=ge[be],oe=ge[be+Ie],q?me(Ie,q,oe,de):oe(de);_e._subscribers.length=0}}function me(_e,ge,Ie,q){var oe=r(Ie),de=void 0,be=void 0,Ee=!0;if(oe){try{de=Ie(q)}catch(Fe){Ee=!1,be=Fe}if(ge===de){O(ge,z());return}}else de=q;ge._state!==F||(oe&&Ee?C(ge,de):Ee===!1?O(ge,be):_e===se?$(ge,de):_e===X&&O(ge,de))}function le(_e,ge){try{ge(function(q){C(_e,q)},function(q){O(_e,q)})}catch(Ie){O(_e,Ie)}}var ae=0;function Ue(){return ae++}function he(_e){_e[D]=ae++,_e._state=void 0,_e._result=void 0,_e._subscribers=[]}function je(){return new Error("Array Methods must be provided an Array")}var Ze=function(){function _e(ge,Ie){this._instanceConstructor=ge,this.promise=new ge(U),this.promise[D]||he(this.promise),o(Ie)?(this.length=Ie.length,this._remaining=Ie.length,this._result=new Array(this.length),this.length===0?$(this.promise,this._result):(this.length=this.length||0,this._enumerate(Ie),this._remaining===0&&$(this.promise,this._result))):O(this.promise,je())}return _e.prototype._enumerate=function(Ie){for(var q=0;this._state===F&&q<Ie.length;q++)this._eachEntry(Ie[q],q)},_e.prototype._eachEntry=function(Ie,q){var oe=this._instanceConstructor,de=oe.resolve;if(de===V){var be=void 0,Ee=void 0,Fe=!1;try{be=Ie.then}catch(pt){Fe=!0,Ee=pt}if(be===B&&Ie._state!==F)this._settledAt(Ie._state,q,Ie._result);else if(typeof be!="function")this._remaining--,this._result[q]=Ie;else if(oe===tt){var mt=new oe(U);Fe?O(mt,Ee):M(mt,Ie,be),this._willSettleAt(mt,q)}else this._willSettleAt(new oe(function(pt){return pt(Ie)}),q)}else this._willSettleAt(de(Ie),q)},_e.prototype._settledAt=function(Ie,q,oe){var de=this.promise;de._state===F&&(this._remaining--,Ie===X?O(de,oe):this._result[q]=oe),this._remaining===0&&$(de,this._result)},_e.prototype._willSettleAt=function(Ie,q){var oe=this;N(Ie,void 0,function(de){return oe._settledAt(se,q,de)},function(de){return oe._settledAt(X,q,de)})},_e}();function ce(_e){return new Ze(this,_e).promise}function He(_e){var ge=this;return o(_e)?new ge(function(Ie,q){for(var oe=_e.length,de=0;de<oe;de++)ge.resolve(_e[de]).then(Ie,q)}):new ge(function(Ie,q){return q(new TypeError("You must pass an array to race."))})}function st(_e){var ge=this,Ie=new ge(U);return O(Ie,_e),Ie}function Ve(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function It(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}var tt=function(){function _e(ge){this[D]=Ue(),this._result=this._state=void 0,this._subscribers=[],U!==ge&&(typeof ge!="function"&&Ve(),this instanceof _e?le(this,ge):It())}return _e.prototype.catch=function(Ie){return this.then(null,Ie)},_e.prototype.finally=function(Ie){var q=this,oe=q.constructor;return r(Ie)?q.then(function(de){return oe.resolve(Ie()).then(function(){return de})},function(de){return oe.resolve(Ie()).then(function(){throw de})}):q.then(Ie,Ie)},_e}();tt.prototype.then=B,tt.all=ce,tt.race=He,tt.resolve=V,tt.reject=st,tt._setScheduler=f,tt._setAsap=u,tt._asap=c;function Je(){var _e=void 0;if(typeof Gi<"u")_e=Gi;else if(typeof self<"u")_e=self;else try{_e=Function("return this")()}catch{throw new Error("polyfill failed because global object is unavailable in this environment")}var ge=_e.Promise;if(ge){var Ie=null;try{Ie=Object.prototype.toString.call(ge.resolve())}catch{}if(Ie==="[object Promise]"&&!ge.cast)return}_e.Promise=tt}return tt.polyfill=Je,tt.Promise=tt,tt})})(i$);var vD=i$.exports;vD.polyfill();class kp{constructor(){Un(this,"debug");Un(this,"logger",{log:()=>{}})}setupDebugger(e){this.debug=e,e&&(this.logger.log=console.log.bind(window.console))}}const xp=new kp,Po=xp.logger;function hu(t,e){return Date.now()-t+e}function iy(t){const e=parseInt(t,10);let n=Math.floor(e/3600),r=Math.floor((e-n*3600)/60),i=e-n*3600-r*60;return n<10&&(n="0"+n),r<10&&(r="0"+r),i<10&&(i="0"+i),n+":"+r+":"+i}const yD=g.defineComponent({props:{containerCssClass:[String,Object],cantClose:{type:Boolean,default:!1}},methods:{close(){this.cantClose||this.$emit("close")}}}),Ns=(t,e)=>{const n=t.__vccOpts||t;for(const[r,i]of e)n[r]=i;return n},bD={class:"modal-header"},wD={class:"modal-body"},SD={class:"modal-footer"};function kD(t,e,n,r,i,o){return g.openBlock(),g.createBlock(g.Transition,{name:"fade"},{default:g.withCtx(()=>[g.createElementVNode("div",{class:"modal-mask",onClick:e[2]||(e[2]=(...s)=>t.close&&t.close(...s))},[g.createElementVNode("div",{class:g.normalizeClass(["modal-container bg-gray-800 nrt-card-4",t.containerCssClass]),onClick:e[1]||(e[1]=s=>s.stopPropagation())},[g.createElementVNode("div",bD,[t.cantClose?g.createCommentVNode("",!0):(g.openBlock(),g.createElementBlock("button",{key:0,class:"close-button",onClick:e[0]||(e[0]=(...s)=>t.close&&t.close(...s))}," X ")),g.renderSlot(t.$slots,"header",{},()=>[g.createTextVNode(" default header ")])]),g.createElementVNode("div",wD,[g.renderSlot(t.$slots,"body",{},()=>[g.createTextVNode(" default body ")])]),g.createElementVNode("div",SD,[g.renderSlot(t.$slots,"footer")])],2)])]),_:3})}const Aa=Ns(yD,[["render",kD]]);function tc(){return`${Date.now()}-${Math.floor(Math.random()*1e11)}-${Math.floor(Math.random()*1e11)}`}var j={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.Type=t.JsonType=t.JavaScriptTypeBuilder=t.JsonTypeBuilder=t.TypeBuilder=t.TypeBuilderError=t.TransformEncodeBuilder=t.TransformDecodeBuilder=t.TemplateLiteralDslParser=t.TemplateLiteralGenerator=t.TemplateLiteralGeneratorError=t.TemplateLiteralFinite=t.TemplateLiteralFiniteError=t.TemplateLiteralParser=t.TemplateLiteralParserError=t.TemplateLiteralResolver=t.TemplateLiteralPattern=t.TemplateLiteralPatternError=t.UnionResolver=t.KeyArrayResolver=t.KeyArrayResolverError=t.KeyResolver=t.ObjectMap=t.Intrinsic=t.IndexedAccessor=t.TypeClone=t.TypeExtends=t.TypeExtendsResult=t.TypeExtendsError=t.ExtendsUndefined=t.TypeGuard=t.TypeGuardUnknownTypeError=t.ValueGuard=t.FormatRegistry=t.TypeBoxError=t.TypeRegistry=t.PatternStringExact=t.PatternNumberExact=t.PatternBooleanExact=t.PatternString=t.PatternNumber=t.PatternBoolean=t.Kind=t.Hint=t.Optional=t.Readonly=t.Transform=void 0,t.Transform=Symbol.for("TypeBox.Transform"),t.Readonly=Symbol.for("TypeBox.Readonly"),t.Optional=Symbol.for("TypeBox.Optional"),t.Hint=Symbol.for("TypeBox.Hint"),t.Kind=Symbol.for("TypeBox.Kind"),t.PatternBoolean="(true|false)",t.PatternNumber="(0|[1-9][0-9]*)",t.PatternString="(.*)",t.PatternBooleanExact=`^${t.PatternBoolean}$`,t.PatternNumberExact=`^${t.PatternNumber}$`,t.PatternStringExact=`^${t.PatternString}$`;var e;(function(A){const k=new Map;function M(){return new Map(k)}A.Entries=M;function C(){return k.clear()}A.Clear=C;function w(ie){return k.delete(ie)}A.Delete=w;function $(ie){return k.has(ie)}A.Has=$;function O(ie,me){k.set(ie,me)}A.Set=O;function N(ie){return k.get(ie)}A.Get=N})(e||(t.TypeRegistry=e={}));class n extends Error{constructor(k){super(k)}}t.TypeBoxError=n;var r;(function(A){const k=new Map;function M(){return new Map(k)}A.Entries=M;function C(){return k.clear()}A.Clear=C;function w(ie){return k.delete(ie)}A.Delete=w;function $(ie){return k.has(ie)}A.Has=$;function O(ie,me){k.set(ie,me)}A.Set=O;function N(ie){return k.get(ie)}A.Get=N})(r||(t.FormatRegistry=r={}));var i;(function(A){function k(ae){return Array.isArray(ae)}A.IsArray=k;function M(ae){return typeof ae=="bigint"}A.IsBigInt=M;function C(ae){return typeof ae=="boolean"}A.IsBoolean=C;function w(ae){return ae instanceof globalThis.Date}A.IsDate=w;function $(ae){return ae===null}A.IsNull=$;function O(ae){return typeof ae=="number"}A.IsNumber=O;function N(ae){return typeof ae=="object"&&ae!==null}A.IsObject=N;function ie(ae){return typeof ae=="string"}A.IsString=ie;function me(ae){return ae instanceof globalThis.Uint8Array}A.IsUint8Array=me;function le(ae){return ae===void 0}A.IsUndefined=le})(i||(t.ValueGuard=i={}));class o extends n{}t.TypeGuardUnknownTypeError=o;var s;(function(A){function k(J){try{return new RegExp(J),!0}catch{return!1}}function M(J){if(!i.IsString(J))return!1;for(let G=0;G<J.length;G++){const ne=J.charCodeAt(G);if(ne>=7&&ne<=13||ne===27||ne===127)return!1}return!0}function C(J){return O(J)||Qe(J)}function w(J){return i.IsUndefined(J)||i.IsBigInt(J)}function $(J){return i.IsUndefined(J)||i.IsNumber(J)}function O(J){return i.IsUndefined(J)||i.IsBoolean(J)}function N(J){return i.IsUndefined(J)||i.IsString(J)}function ie(J){return i.IsUndefined(J)||i.IsString(J)&&M(J)&&k(J)}function me(J){return i.IsUndefined(J)||i.IsString(J)&&M(J)}function le(J){return i.IsUndefined(J)||Qe(J)}function ae(J){return Je(J,"Any")&&N(J.$id)}A.TAny=ae;function Ue(J){return Je(J,"Array")&&J.type==="array"&&N(J.$id)&&Qe(J.items)&&$(J.minItems)&&$(J.maxItems)&&O(J.uniqueItems)&&le(J.contains)&&$(J.minContains)&&$(J.maxContains)}A.TArray=Ue;function he(J){return Je(J,"AsyncIterator")&&J.type==="AsyncIterator"&&N(J.$id)&&Qe(J.items)}A.TAsyncIterator=he;function je(J){return Je(J,"BigInt")&&J.type==="bigint"&&N(J.$id)&&w(J.exclusiveMaximum)&&w(J.exclusiveMinimum)&&w(J.maximum)&&w(J.minimum)&&w(J.multipleOf)}A.TBigInt=je;function Ze(J){return Je(J,"Boolean")&&J.type==="boolean"&&N(J.$id)}A.TBoolean=Ze;function ce(J){return Je(J,"Constructor")&&J.type==="Constructor"&&N(J.$id)&&i.IsArray(J.parameters)&&J.parameters.every(G=>Qe(G))&&Qe(J.returns)}A.TConstructor=ce;function He(J){return Je(J,"Date")&&J.type==="Date"&&N(J.$id)&&$(J.exclusiveMaximumTimestamp)&&$(J.exclusiveMinimumTimestamp)&&$(J.maximumTimestamp)&&$(J.minimumTimestamp)&&$(J.multipleOfTimestamp)}A.TDate=He;function st(J){return Je(J,"Function")&&J.type==="Function"&&N(J.$id)&&i.IsArray(J.parameters)&&J.parameters.every(G=>Qe(G))&&Qe(J.returns)}A.TFunction=st;function Ve(J){return Je(J,"Integer")&&J.type==="integer"&&N(J.$id)&&$(J.exclusiveMaximum)&&$(J.exclusiveMinimum)&&$(J.maximum)&&$(J.minimum)&&$(J.multipleOf)}A.TInteger=Ve;function It(J){return Je(J,"Intersect")&&!(i.IsString(J.type)&&J.type!=="object")&&i.IsArray(J.allOf)&&J.allOf.every(G=>Qe(G)&&!an(G))&&N(J.type)&&(O(J.unevaluatedProperties)||le(J.unevaluatedProperties))&&N(J.$id)}A.TIntersect=It;function tt(J){return Je(J,"Iterator")&&J.type==="Iterator"&&N(J.$id)&&Qe(J.items)}A.TIterator=tt;function Je(J,G){return _e(J)&&J[t.Kind]===G}A.TKindOf=Je;function _e(J){return i.IsObject(J)&&t.Kind in J&&i.IsString(J[t.Kind])}A.TKind=_e;function ge(J){return oe(J)&&i.IsString(J.const)}A.TLiteralString=ge;function Ie(J){return oe(J)&&i.IsNumber(J.const)}A.TLiteralNumber=Ie;function q(J){return oe(J)&&i.IsBoolean(J.const)}A.TLiteralBoolean=q;function oe(J){return Je(J,"Literal")&&N(J.$id)&&(i.IsBoolean(J.const)||i.IsNumber(J.const)||i.IsString(J.const))}A.TLiteral=oe;function de(J){return Je(J,"Never")&&i.IsObject(J.not)&&Object.getOwnPropertyNames(J.not).length===0}A.TNever=de;function be(J){return Je(J,"Not")&&Qe(J.not)}A.TNot=be;function Ee(J){return Je(J,"Null")&&J.type==="null"&&N(J.$id)}A.TNull=Ee;function Fe(J){return Je(J,"Number")&&J.type==="number"&&N(J.$id)&&$(J.exclusiveMaximum)&&$(J.exclusiveMinimum)&&$(J.maximum)&&$(J.minimum)&&$(J.multipleOf)}A.TNumber=Fe;function mt(J){return Je(J,"Object")&&J.type==="object"&&N(J.$id)&&i.IsObject(J.properties)&&C(J.additionalProperties)&&$(J.minProperties)&&$(J.maxProperties)&&Object.entries(J.properties).every(([G,ne])=>M(G)&&Qe(ne))}A.TObject=mt;function pt(J){return Je(J,"Promise")&&J.type==="Promise"&&N(J.$id)&&Qe(J.item)}A.TPromise=pt;function sn(J){return Je(J,"Record")&&J.type==="object"&&N(J.$id)&&C(J.additionalProperties)&&i.IsObject(J.patternProperties)&&(G=>{const ne=Object.getOwnPropertyNames(G.patternProperties);return ne.length===1&&k(ne[0])&&i.IsObject(G.patternProperties)&&Qe(G.patternProperties[ne[0]])})(J)}A.TRecord=sn;function Hn(J){return i.IsObject(J)&&t.Hint in J&&J[t.Hint]==="Recursive"}A.TRecursive=Hn;function Ft(J){return Je(J,"Ref")&&N(J.$id)&&i.IsString(J.$ref)}A.TRef=Ft;function lt(J){return Je(J,"String")&&J.type==="string"&&N(J.$id)&&$(J.minLength)&&$(J.maxLength)&&ie(J.pattern)&&me(J.format)}A.TString=lt;function qn(J){return Je(J,"Symbol")&&J.type==="symbol"&&N(J.$id)}A.TSymbol=qn;function Yn(J){return Je(J,"TemplateLiteral")&&J.type==="string"&&i.IsString(J.pattern)&&J.pattern[0]==="^"&&J.pattern[J.pattern.length-1]==="$"}A.TTemplateLiteral=Yn;function pn(J){return Je(J,"This")&&N(J.$id)&&i.IsString(J.$ref)}A.TThis=pn;function an(J){return i.IsObject(J)&&t.Transform in J}A.TTransform=an;function tn(J){return Je(J,"Tuple")&&J.type==="array"&&N(J.$id)&&i.IsNumber(J.minItems)&&i.IsNumber(J.maxItems)&&J.minItems===J.maxItems&&(i.IsUndefined(J.items)&&i.IsUndefined(J.additionalItems)&&J.minItems===0||i.IsArray(J.items)&&J.items.every(G=>Qe(G)))}A.TTuple=tn;function or(J){return Je(J,"Undefined")&&J.type==="undefined"&&N(J.$id)}A.TUndefined=or;function kn(J){return Xn(J)&&J.anyOf.every(G=>ge(G)||Ie(G))}A.TUnionLiteral=kn;function Xn(J){return Je(J,"Union")&&N(J.$id)&&i.IsObject(J)&&i.IsArray(J.anyOf)&&J.anyOf.every(G=>Qe(G))}A.TUnion=Xn;function xe(J){return Je(J,"Uint8Array")&&J.type==="Uint8Array"&&N(J.$id)&&$(J.minByteLength)&&$(J.maxByteLength)}A.TUint8Array=xe;function Xe(J){return Je(J,"Unknown")&&N(J.$id)}A.TUnknown=Xe;function $t(J){return Je(J,"Unsafe")}A.TUnsafe=$t;function en(J){return Je(J,"Void")&&J.type==="void"&&N(J.$id)}A.TVoid=en;function Ut(J){return i.IsObject(J)&&J[t.Readonly]==="Readonly"}A.TReadonly=Ut;function $e(J){return i.IsObject(J)&&J[t.Optional]==="Optional"}A.TOptional=$e;function Qe(J){return i.IsObject(J)&&(ae(J)||Ue(J)||Ze(J)||je(J)||he(J)||ce(J)||He(J)||st(J)||Ve(J)||It(J)||tt(J)||oe(J)||de(J)||be(J)||Ee(J)||Fe(J)||mt(J)||pt(J)||sn(J)||Ft(J)||lt(J)||qn(J)||Yn(J)||pn(J)||tn(J)||or(J)||Xn(J)||xe(J)||Xe(J)||$t(J)||en(J)||_e(J)&&e.Has(J[t.Kind]))}A.TSchema=Qe})(s||(t.TypeGuard=s={}));var a;(function(A){function k(M){return M[t.Kind]==="Intersect"?M.allOf.every(C=>k(C)):M[t.Kind]==="Union"?M.anyOf.some(C=>k(C)):M[t.Kind]==="Undefined"?!0:M[t.Kind]==="Not"?!k(M.not):!1}A.Check=k})(a||(t.ExtendsUndefined=a={}));class l extends n{}t.TypeExtendsError=l;var c;(function(A){A[A.Union=0]="Union",A[A.True=1]="True",A[A.False=2]="False"})(c||(t.TypeExtendsResult=c={}));var f;(function(A){function k(Y){return Y===c.False?Y:c.True}function M(Y){throw new l(Y)}function C(Y){return s.TNever(Y)||s.TIntersect(Y)||s.TUnion(Y)||s.TUnknown(Y)||s.TAny(Y)}function w(Y,Q){return s.TNever(Q)?Je():s.TIntersect(Q)?st(Y,Q):s.TUnion(Q)?Te(Y,Q):s.TUnknown(Q)?Nt():s.TAny(Q)?$():M("StructuralRight")}function $(Y,Q){return c.True}function O(Y,Q){return s.TIntersect(Q)?st(Y,Q):s.TUnion(Q)&&Q.anyOf.some(Rt=>s.TAny(Rt)||s.TUnknown(Rt))?c.True:s.TUnion(Q)?c.Union:s.TUnknown(Q)||s.TAny(Q)?c.True:c.Union}function N(Y,Q){return s.TUnknown(Y)?c.False:s.TAny(Y)?c.Union:s.TNever(Y)?c.True:c.False}function ie(Y,Q){return s.TObject(Q)&&Yn(Q)?c.True:C(Q)?w(Y,Q):s.TArray(Q)?k(vt(Y.items,Q.items)):c.False}function me(Y,Q){return C(Q)?w(Y,Q):s.TAsyncIterator(Q)?k(vt(Y.items,Q.items)):c.False}function le(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TBigInt(Q)?c.True:c.False}function ae(Y,Q){return s.TLiteral(Y)&&i.IsBoolean(Y.const)||s.TBoolean(Y)?c.True:c.False}function Ue(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TBoolean(Q)?c.True:c.False}function he(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TConstructor(Q)?Y.parameters.length>Q.parameters.length?c.False:Y.parameters.every((Rt,vn)=>k(vt(Q.parameters[vn],Rt))===c.True)?k(vt(Y.returns,Q.returns)):c.False:c.False}function je(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TDate(Q)?c.True:c.False}function Ze(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TFunction(Q)?Y.parameters.length>Q.parameters.length?c.False:Y.parameters.every((Rt,vn)=>k(vt(Q.parameters[vn],Rt))===c.True)?k(vt(Y.returns,Q.returns)):c.False:c.False}function ce(Y,Q){return s.TLiteral(Y)&&i.IsNumber(Y.const)||s.TNumber(Y)||s.TInteger(Y)?c.True:c.False}function He(Y,Q){return s.TInteger(Q)||s.TNumber(Q)?c.True:C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):c.False}function st(Y,Q){return Q.allOf.every(Rt=>vt(Y,Rt)===c.True)?c.True:c.False}function Ve(Y,Q){return Y.allOf.some(Rt=>vt(Rt,Q)===c.True)?c.True:c.False}function It(Y,Q){return C(Q)?w(Y,Q):s.TIterator(Q)?k(vt(Y.items,Q.items)):c.False}function tt(Y,Q){return s.TLiteral(Q)&&Q.const===Y.const?c.True:C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TString(Q)?en(Y):s.TNumber(Q)?oe(Y):s.TInteger(Q)?ce(Y):s.TBoolean(Q)?ae(Y):c.False}function Je(Y,Q){return c.False}function _e(Y,Q){return c.True}function ge(Y){let[Q,Rt]=[Y,0];for(;s.TNot(Q);)Q=Q.not,Rt+=1;return Rt%2===0?Q:t.Type.Unknown()}function Ie(Y,Q){return s.TNot(Y)?vt(ge(Y),Q):s.TNot(Q)?vt(Y,ge(Q)):M("Invalid fallthrough for Not")}function q(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TNull(Q)?c.True:c.False}function oe(Y,Q){return s.TLiteralNumber(Y)||s.TNumber(Y)||s.TInteger(Y)?c.True:c.False}function de(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TInteger(Q)||s.TNumber(Q)?c.True:c.False}function be(Y,Q){return Object.getOwnPropertyNames(Y.properties).length===Q}function Ee(Y){return Yn(Y)}function Fe(Y){return be(Y,0)||be(Y,1)&&"description"in Y.properties&&s.TUnion(Y.properties.description)&&Y.properties.description.anyOf.length===2&&(s.TString(Y.properties.description.anyOf[0])&&s.TUndefined(Y.properties.description.anyOf[1])||s.TString(Y.properties.description.anyOf[1])&&s.TUndefined(Y.properties.description.anyOf[0]))}function mt(Y){return be(Y,0)}function pt(Y){return be(Y,0)}function sn(Y){return be(Y,0)}function Hn(Y){return be(Y,0)}function Ft(Y){return Yn(Y)}function lt(Y){const Q=t.Type.Number();return be(Y,0)||be(Y,1)&&"length"in Y.properties&&k(vt(Y.properties.length,Q))===c.True}function qn(Y){return be(Y,0)}function Yn(Y){const Q=t.Type.Number();return be(Y,0)||be(Y,1)&&"length"in Y.properties&&k(vt(Y.properties.length,Q))===c.True}function pn(Y){const Q=t.Type.Function([t.Type.Any()],t.Type.Any());return be(Y,0)||be(Y,1)&&"then"in Y.properties&&k(vt(Y.properties.then,Q))===c.True}function an(Y,Q){return vt(Y,Q)===c.False||s.TOptional(Y)&&!s.TOptional(Q)?c.False:c.True}function tn(Y,Q){return s.TUnknown(Y)?c.False:s.TAny(Y)?c.Union:s.TNever(Y)||s.TLiteralString(Y)&&Ee(Q)||s.TLiteralNumber(Y)&&mt(Q)||s.TLiteralBoolean(Y)&&pt(Q)||s.TSymbol(Y)&&Fe(Q)||s.TBigInt(Y)&&sn(Q)||s.TString(Y)&&Ee(Q)||s.TSymbol(Y)&&Fe(Q)||s.TNumber(Y)&&mt(Q)||s.TInteger(Y)&&mt(Q)||s.TBoolean(Y)&&pt(Q)||s.TUint8Array(Y)&&Ft(Q)||s.TDate(Y)&&Hn(Q)||s.TConstructor(Y)&&qn(Q)||s.TFunction(Y)&&lt(Q)?c.True:s.TRecord(Y)&&s.TString(Xn(Y))?Q[t.Hint]==="Record"?c.True:c.False:s.TRecord(Y)&&s.TNumber(Xn(Y))?be(Q,0)?c.True:c.False:c.False}function or(Y,Q){return C(Q)?w(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TObject(Q)?(()=>{for(const Rt of Object.getOwnPropertyNames(Q.properties)){if(!(Rt in Y.properties)&&!s.TOptional(Q.properties[Rt]))return c.False;if(s.TOptional(Q.properties[Rt]))return c.True;if(an(Y.properties[Rt],Q.properties[Rt])===c.False)return c.False}return c.True})():c.False}function kn(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)&&pn(Q)?c.True:s.TPromise(Q)?k(vt(Y.item,Q.item)):c.False}function Xn(Y){return t.PatternNumberExact in Y.patternProperties?t.Type.Number():t.PatternStringExact in Y.patternProperties?t.Type.String():M("Unknown record key pattern")}function xe(Y){return t.PatternNumberExact in Y.patternProperties?Y.patternProperties[t.PatternNumberExact]:t.PatternStringExact in Y.patternProperties?Y.patternProperties[t.PatternStringExact]:M("Unable to get record value schema")}function Xe(Y,Q){const[Rt,vn]=[Xn(Q),xe(Q)];return s.TLiteralString(Y)&&s.TNumber(Rt)&&k(vt(Y,vn))===c.True?c.True:s.TUint8Array(Y)&&s.TNumber(Rt)||s.TString(Y)&&s.TNumber(Rt)||s.TArray(Y)&&s.TNumber(Rt)?vt(Y,vn):s.TObject(Y)?(()=>{for(const Bn of Object.getOwnPropertyNames(Y.properties))if(an(vn,Y.properties[Bn])===c.False)return c.False;return c.True})():c.False}function $t(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?vt(xe(Y),xe(Q)):c.False}function en(Y,Q){return s.TLiteral(Y)&&i.IsString(Y.const)||s.TString(Y)?c.True:c.False}function Ut(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TString(Q)?c.True:c.False}function $e(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TSymbol(Q)?c.True:c.False}function Qe(Y,Q){return s.TTemplateLiteral(Y)?vt(x.Resolve(Y),Q):s.TTemplateLiteral(Q)?vt(Y,x.Resolve(Q)):M("Invalid fallthrough for TemplateLiteral")}function J(Y,Q){return s.TArray(Q)&&Y.items!==void 0&&Y.items.every(Rt=>vt(Rt,Q.items)===c.True)}function G(Y,Q){return s.TNever(Y)?c.True:s.TUnknown(Y)?c.False:s.TAny(Y)?c.Union:c.False}function ne(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)&&Yn(Q)||s.TArray(Q)&&J(Y,Q)?c.True:s.TTuple(Q)?i.IsUndefined(Y.items)&&!i.IsUndefined(Q.items)||!i.IsUndefined(Y.items)&&i.IsUndefined(Q.items)?c.False:i.IsUndefined(Y.items)&&!i.IsUndefined(Q.items)||Y.items.every((Rt,vn)=>vt(Rt,Q.items[vn])===c.True)?c.True:c.False:c.False}function pe(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TUint8Array(Q)?c.True:c.False}function Se(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TVoid(Q)?Dn(Y):s.TUndefined(Q)?c.True:c.False}function Te(Y,Q){return Q.anyOf.some(Rt=>vt(Y,Rt)===c.True)?c.True:c.False}function kt(Y,Q){return Y.anyOf.every(Rt=>vt(Rt,Q)===c.True)?c.True:c.False}function Nt(Y,Q){return c.True}function nn(Y,Q){return s.TNever(Q)?Je():s.TIntersect(Q)?st(Y,Q):s.TUnion(Q)?Te(Y,Q):s.TAny(Q)?$():s.TString(Q)?en(Y):s.TNumber(Q)?oe(Y):s.TInteger(Q)?ce(Y):s.TBoolean(Q)?ae(Y):s.TArray(Q)?N(Y):s.TTuple(Q)?G(Y):s.TObject(Q)?tn(Y,Q):s.TUnknown(Q)?c.True:c.False}function Dn(Y,Q){return s.TUndefined(Y)||s.TUndefined(Y)?c.True:c.False}function Kn(Y,Q){return s.TIntersect(Q)?st(Y,Q):s.TUnion(Q)?Te(Y,Q):s.TUnknown(Q)?Nt():s.TAny(Q)?$():s.TObject(Q)?tn(Y,Q):s.TVoid(Q)?c.True:c.False}function vt(Y,Q){return s.TTemplateLiteral(Y)||s.TTemplateLiteral(Q)?Qe(Y,Q):s.TNot(Y)||s.TNot(Q)?Ie(Y,Q):s.TAny(Y)?O(Y,Q):s.TArray(Y)?ie(Y,Q):s.TBigInt(Y)?le(Y,Q):s.TBoolean(Y)?Ue(Y,Q):s.TAsyncIterator(Y)?me(Y,Q):s.TConstructor(Y)?he(Y,Q):s.TDate(Y)?je(Y,Q):s.TFunction(Y)?Ze(Y,Q):s.TInteger(Y)?He(Y,Q):s.TIntersect(Y)?Ve(Y,Q):s.TIterator(Y)?It(Y,Q):s.TLiteral(Y)?tt(Y,Q):s.TNever(Y)?_e():s.TNull(Y)?q(Y,Q):s.TNumber(Y)?de(Y,Q):s.TObject(Y)?or(Y,Q):s.TRecord(Y)?$t(Y,Q):s.TString(Y)?Ut(Y,Q):s.TSymbol(Y)?$e(Y,Q):s.TTuple(Y)?ne(Y,Q):s.TPromise(Y)?kn(Y,Q):s.TUint8Array(Y)?pe(Y,Q):s.TUndefined(Y)?Se(Y,Q):s.TUnion(Y)?kt(Y,Q):s.TUnknown(Y)?nn(Y,Q):s.TVoid(Y)?Kn(Y,Q):M(`Unknown left type operand '${Y[t.Kind]}'`)}function Cn(Y,Q){return vt(Y,Q)}A.Extends=Cn})(f||(t.TypeExtends=f={}));var u;(function(A){function k(ie){return ie.map(me=>$(me))}function M(ie){return new Date(ie.getTime())}function C(ie){return new Uint8Array(ie)}function w(ie){const me=Object.getOwnPropertyNames(ie).reduce((ae,Ue)=>({...ae,[Ue]:$(ie[Ue])}),{}),le=Object.getOwnPropertySymbols(ie).reduce((ae,Ue)=>({...ae,[Ue]:$(ie[Ue])}),{});return{...me,...le}}function $(ie){return i.IsArray(ie)?k(ie):i.IsDate(ie)?M(ie):i.IsUint8Array(ie)?C(ie):i.IsObject(ie)?w(ie):ie}function O(ie){return ie.map(me=>N(me))}A.Rest=O;function N(ie,me={}){return{...$(ie),...me}}A.Type=N})(u||(t.TypeClone=u={}));var d;(function(A){function k(he){return he.map(je=>{const{[t.Optional]:Ze,...ce}=u.Type(je);return ce})}function M(he){return he.every(je=>s.TOptional(je))}function C(he){return he.some(je=>s.TOptional(je))}function w(he){return M(he.allOf)?t.Type.Optional(t.Type.Intersect(k(he.allOf))):he}function $(he){return C(he.anyOf)?t.Type.Optional(t.Type.Union(k(he.anyOf))):he}function O(he){return he[t.Kind]==="Intersect"?w(he):he[t.Kind]==="Union"?$(he):he}function N(he,je){const Ze=he.allOf.reduce((ce,He)=>{const st=ae(He,je);return st[t.Kind]==="Never"?ce:[...ce,st]},[]);return O(t.Type.Intersect(Ze))}function ie(he,je){const Ze=he.anyOf.map(ce=>ae(ce,je));return O(t.Type.Union(Ze))}function me(he,je){const Ze=he.properties[je];return i.IsUndefined(Ze)?t.Type.Never():t.Type.Union([Ze])}function le(he,je){const Ze=he.items;if(i.IsUndefined(Ze))return t.Type.Never();const ce=Ze[je];return i.IsUndefined(ce)?t.Type.Never():ce}function ae(he,je){return he[t.Kind]==="Intersect"?N(he,je):he[t.Kind]==="Union"?ie(he,je):he[t.Kind]==="Object"?me(he,je):he[t.Kind]==="Tuple"?le(he,je):t.Type.Never()}function Ue(he,je,Ze={}){const ce=je.map(He=>ae(he,He.toString()));return O(t.Type.Union(ce,Ze))}A.Resolve=Ue})(d||(t.IndexedAccessor=d={}));var h;(function(A){function k(le){const[ae,Ue]=[le.slice(0,1),le.slice(1)];return`${ae.toLowerCase()}${Ue}`}function M(le){const[ae,Ue]=[le.slice(0,1),le.slice(1)];return`${ae.toUpperCase()}${Ue}`}function C(le){return le.toUpperCase()}function w(le){return le.toLowerCase()}function $(le,ae){const Ue=E.ParseExact(le.pattern);if(!L.Check(Ue))return{...le,pattern:O(le.pattern,ae)};const Ze=[...V.Generate(Ue)].map(st=>t.Type.Literal(st)),ce=N(Ze,ae),He=t.Type.Union(ce);return t.Type.TemplateLiteral([He])}function O(le,ae){return typeof le=="string"?ae==="Uncapitalize"?k(le):ae==="Capitalize"?M(le):ae==="Uppercase"?C(le):ae==="Lowercase"?w(le):le:le.toString()}function N(le,ae){if(le.length===0)return[];const[Ue,...he]=le;return[me(Ue,ae),...N(he,ae)]}function ie(le,ae){return s.TTemplateLiteral(le)?$(le,ae):s.TUnion(le)?t.Type.Union(N(le.anyOf,ae)):s.TLiteral(le)?t.Type.Literal(O(le.const,ae)):le}function me(le,ae){return ie(le,ae)}A.Map=me})(h||(t.Intrinsic=h={}));var p;(function(A){function k(O,N){return t.Type.Intersect(O.allOf.map(ie=>w(ie,N)),{...O})}function M(O,N){return t.Type.Union(O.anyOf.map(ie=>w(ie,N)),{...O})}function C(O,N){return N(O)}function w(O,N){return O[t.Kind]==="Intersect"?k(O,N):O[t.Kind]==="Union"?M(O,N):O[t.Kind]==="Object"?C(O,N):O}function $(O,N,ie){return{...w(u.Type(O),N),...ie}}A.Map=$})(p||(t.ObjectMap=p={}));var m;(function(A){function k(me){return me[0]==="^"&&me[me.length-1]==="$"?me.slice(1,me.length-1):me}function M(me,le){return me.allOf.reduce((ae,Ue)=>[...ae,...O(Ue,le)],[])}function C(me,le){const ae=me.anyOf.map(Ue=>O(Ue,le));return[...ae.reduce((Ue,he)=>he.map(je=>ae.every(Ze=>Ze.includes(je))?Ue.add(je):Ue)[0],new Set)]}function w(me,le){return Object.getOwnPropertyNames(me.properties)}function $(me,le){return le.includePatterns?Object.getOwnPropertyNames(me.patternProperties):[]}function O(me,le){return s.TIntersect(me)?M(me,le):s.TUnion(me)?C(me,le):s.TObject(me)?w(me):s.TRecord(me)?$(me,le):[]}function N(me,le){return[...new Set(O(me,le))]}A.ResolveKeys=N;function ie(me){return`^(${N(me,{includePatterns:!0}).map(Ue=>`(${k(Ue)})`).join("|")})$`}A.ResolvePattern=ie})(m||(t.KeyResolver=m={}));class y extends n{}t.KeyArrayResolverError=y;var v;(function(A){function k(M){return Array.isArray(M)?M:s.TUnionLiteral(M)?M.anyOf.map(C=>C.const.toString()):s.TLiteral(M)?[M.const]:s.TTemplateLiteral(M)?(()=>{const C=E.ParseExact(M.pattern);if(!L.Check(C))throw new y("Cannot resolve keys from infinite template expression");return[...V.Generate(C)]})():[]}A.Resolve=k})(v||(t.KeyArrayResolver=v={}));var b;(function(A){function*k(C){for(const w of C.anyOf)w[t.Kind]==="Union"?yield*k(w):yield w}function M(C){return t.Type.Union([...k(C)],{...C})}A.Resolve=M})(b||(t.UnionResolver=b={}));class S extends n{}t.TemplateLiteralPatternError=S;var _;(function(A){function k($){throw new S($)}function M($){return $.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function C($,O){return s.TTemplateLiteral($)?$.pattern.slice(1,$.pattern.length-1):s.TUnion($)?`(${$.anyOf.map(N=>C(N,O)).join("|")})`:s.TNumber($)?`${O}${t.PatternNumber}`:s.TInteger($)?`${O}${t.PatternNumber}`:s.TBigInt($)?`${O}${t.PatternNumber}`:s.TString($)?`${O}${t.PatternString}`:s.TLiteral($)?`${O}${M($.const.toString())}`:s.TBoolean($)?`${O}${t.PatternBoolean}`:k(`Unexpected Kind '${$[t.Kind]}'`)}function w($){return`^${$.map(O=>C(O,"")).join("")}$`}A.Create=w})(_||(t.TemplateLiteralPattern=_={}));var x;(function(A){function k(M){const C=E.ParseExact(M.pattern);if(!L.Check(C))return t.Type.String();const w=[...V.Generate(C)].map($=>t.Type.Literal($));return t.Type.Union(w)}A.Resolve=k})(x||(t.TemplateLiteralResolver=x={}));class T extends n{}t.TemplateLiteralParserError=T;var E;(function(A){function k(he,je,Ze){return he[je]===Ze&&he.charCodeAt(je-1)!==92}function M(he,je){return k(he,je,"(")}function C(he,je){return k(he,je,")")}function w(he,je){return k(he,je,"|")}function $(he){if(!(M(he,0)&&C(he,he.length-1)))return!1;let je=0;for(let Ze=0;Ze<he.length;Ze++)if(M(he,Ze)&&(je+=1),C(he,Ze)&&(je-=1),je===0&&Ze!==he.length-1)return!1;return!0}function O(he){return he.slice(1,he.length-1)}function N(he){let je=0;for(let Ze=0;Ze<he.length;Ze++)if(M(he,Ze)&&(je+=1),C(he,Ze)&&(je-=1),w(he,Ze)&&je===0)return!0;return!1}function ie(he){for(let je=0;je<he.length;je++)if(M(he,je))return!0;return!1}function me(he){let[je,Ze]=[0,0];const ce=[];for(let st=0;st<he.length;st++)if(M(he,st)&&(je+=1),C(he,st)&&(je-=1),w(he,st)&&je===0){const Ve=he.slice(Ze,st);Ve.length>0&&ce.push(ae(Ve)),Ze=st+1}const He=he.slice(Ze);return He.length>0&&ce.push(ae(He)),ce.length===0?{type:"const",const:""}:ce.length===1?ce[0]:{type:"or",expr:ce}}function le(he){function je(He,st){if(!M(He,st))throw new T("TemplateLiteralParser: Index must point to open parens");let Ve=0;for(let It=st;It<He.length;It++)if(M(He,It)&&(Ve+=1),C(He,It)&&(Ve-=1),Ve===0)return[st,It];throw new T("TemplateLiteralParser: Unclosed group parens in expression")}function Ze(He,st){for(let Ve=st;Ve<He.length;Ve++)if(M(He,Ve))return[st,Ve];return[st,He.length]}const ce=[];for(let He=0;He<he.length;He++)if(M(he,He)){const[st,Ve]=je(he,He),It=he.slice(st,Ve+1);ce.push(ae(It)),He=Ve}else{const[st,Ve]=Ze(he,He),It=he.slice(st,Ve);It.length>0&&ce.push(ae(It)),He=Ve-1}return ce.length===0?{type:"const",const:""}:ce.length===1?ce[0]:{type:"and",expr:ce}}function ae(he){return $(he)?ae(O(he)):N(he)?me(he):ie(he)?le(he):{type:"const",const:he}}A.Parse=ae;function Ue(he){return ae(he.slice(1,he.length-1))}A.ParseExact=Ue})(E||(t.TemplateLiteralParser=E={}));class R extends n{}t.TemplateLiteralFiniteError=R;var L;(function(A){function k(O){throw new R(O)}function M(O){return O.type==="or"&&O.expr.length===2&&O.expr[0].type==="const"&&O.expr[0].const==="0"&&O.expr[1].type==="const"&&O.expr[1].const==="[1-9][0-9]*"}function C(O){return O.type==="or"&&O.expr.length===2&&O.expr[0].type==="const"&&O.expr[0].const==="true"&&O.expr[1].type==="const"&&O.expr[1].const==="false"}function w(O){return O.type==="const"&&O.const===".*"}function $(O){return C(O)?!0:M(O)||w(O)?!1:O.type==="and"?O.expr.every(N=>$(N)):O.type==="or"?O.expr.every(N=>$(N)):O.type==="const"?!0:k("Unknown expression type")}A.Check=$})(L||(t.TemplateLiteralFinite=L={}));class B extends n{}t.TemplateLiteralGeneratorError=B;var V;(function(A){function*k(O){if(O.length===1)return yield*O[0];for(const N of O[0])for(const ie of k(O.slice(1)))yield`${N}${ie}`}function*M(O){return yield*k(O.expr.map(N=>[...$(N)]))}function*C(O){for(const N of O.expr)yield*$(N)}function*w(O){return yield O.const}function*$(O){return O.type==="and"?yield*M(O):O.type==="or"?yield*C(O):O.type==="const"?yield*w(O):(()=>{throw new B("Unknown expression")})()}A.Generate=$})(V||(t.TemplateLiteralGenerator=V={}));var D;(function(A){function*k($){const O=$.trim().replace(/"|'/g,"");return O==="boolean"?yield t.Type.Boolean():O==="number"?yield t.Type.Number():O==="bigint"?yield t.Type.BigInt():O==="string"?yield t.Type.String():yield(()=>{const N=O.split("|").map(ie=>t.Type.Literal(ie.trim()));return N.length===0?t.Type.Never():N.length===1?N[0]:t.Type.Union(N)})()}function*M($){if($[1]!=="{"){const O=t.Type.Literal("$"),N=C($.slice(1));return yield*[O,...N]}for(let O=2;O<$.length;O++)if($[O]==="}"){const N=k($.slice(2,O)),ie=C($.slice(O+1));return yield*[...N,...ie]}yield t.Type.Literal($)}function*C($){for(let O=0;O<$.length;O++)if($[O]==="$"){const N=t.Type.Literal($.slice(0,O)),ie=M($.slice(O));return yield*[N,...ie]}yield t.Type.Literal($)}function w($){return[...C($)]}A.Parse=w})(D||(t.TemplateLiteralDslParser=D={}));class U{constructor(k){this.schema=k}Decode(k){return new F(this.schema,k)}}t.TransformDecodeBuilder=U;class F{constructor(k,M){this.schema=k,this.decode=M}Encode(k){const M=u.Type(this.schema);return s.TTransform(M)?(()=>{const $={Encode:O=>M[t.Transform].Encode(k(O)),Decode:O=>this.decode(M[t.Transform].Decode(O))};return{...M,[t.Transform]:$}})():(()=>{const C={Decode:this.decode,Encode:k};return{...M,[t.Transform]:C}})()}}t.TransformEncodeBuilder=F;let se=0;class X extends n{}t.TypeBuilderError=X;class Z{Create(k){return k}Throw(k){throw new X(k)}Discard(k,M){return M.reduce((C,w)=>{const{[w]:$,...O}=C;return O},k)}Strict(k){return JSON.parse(JSON.stringify(k))}}t.TypeBuilder=Z;class z extends Z{ReadonlyOptional(k){return this.Readonly(this.Optional(k))}Readonly(k){return{...u.Type(k),[t.Readonly]:"Readonly"}}Optional(k){return{...u.Type(k),[t.Optional]:"Optional"}}Any(k={}){return this.Create({...k,[t.Kind]:"Any"})}Array(k,M={}){return this.Create({...M,[t.Kind]:"Array",type:"array",items:u.Type(k)})}Boolean(k={}){return this.Create({...k,[t.Kind]:"Boolean",type:"boolean"})}Capitalize(k,M={}){return{...h.Map(u.Type(k),"Capitalize"),...M}}Composite(k,M){const C=t.Type.Intersect(k,{}),$=m.ResolveKeys(C,{includePatterns:!1}).reduce((O,N)=>({...O,[N]:t.Type.Index(C,[N])}),{});return t.Type.Object($,M)}Enum(k,M={}){if(i.IsUndefined(k))return this.Throw("Enum undefined or empty");const C=Object.getOwnPropertyNames(k).filter(O=>isNaN(O)).map(O=>k[O]),$=[...new Set(C)].map(O=>t.Type.Literal(O));return this.Union($,{...M,[t.Hint]:"Enum"})}Extends(k,M,C,w,$={}){switch(f.Extends(k,M)){case c.Union:return this.Union([u.Type(C,$),u.Type(w,$)]);case c.True:return u.Type(C,$);case c.False:return u.Type(w,$)}}Exclude(k,M,C={}){return s.TTemplateLiteral(k)?this.Exclude(x.Resolve(k),M,C):s.TTemplateLiteral(M)?this.Exclude(k,x.Resolve(M),C):s.TUnion(k)?(()=>{const w=k.anyOf.filter($=>f.Extends($,M)===c.False);return w.length===1?u.Type(w[0],C):this.Union(w,C)})():f.Extends(k,M)!==c.False?this.Never(C):u.Type(k,C)}Extract(k,M,C={}){return s.TTemplateLiteral(k)?this.Extract(x.Resolve(k),M,C):s.TTemplateLiteral(M)?this.Extract(k,x.Resolve(M),C):s.TUnion(k)?(()=>{const w=k.anyOf.filter($=>f.Extends($,M)!==c.False);return w.length===1?u.Type(w[0],C):this.Union(w,C)})():f.Extends(k,M)!==c.False?u.Type(k,C):this.Never(C)}Index(k,M,C={}){return s.TArray(k)&&s.TNumber(M)?u.Type(k.items,C):s.TTuple(k)&&s.TNumber(M)?(()=>{const $=(i.IsUndefined(k.items)?[]:k.items).map(O=>u.Type(O));return this.Union($,C)})():(()=>{const w=v.Resolve(M),$=u.Type(k);return d.Resolve($,w,C)})()}Integer(k={}){return this.Create({...k,[t.Kind]:"Integer",type:"integer"})}Intersect(k,M={}){if(k.length===0)return t.Type.Never();if(k.length===1)return u.Type(k[0],M);k.some(O=>s.TTransform(O))&&this.Throw("Cannot intersect transform types");const C=k.every(O=>s.TObject(O)),w=u.Rest(k),$=s.TSchema(M.unevaluatedProperties)?{unevaluatedProperties:u.Type(M.unevaluatedProperties)}:{};return M.unevaluatedProperties===!1||s.TSchema(M.unevaluatedProperties)||C?this.Create({...M,...$,[t.Kind]:"Intersect",type:"object",allOf:w}):this.Create({...M,...$,[t.Kind]:"Intersect",allOf:w})}KeyOf(k,M={}){return s.TRecord(k)?(()=>{const C=Object.getOwnPropertyNames(k.patternProperties)[0];return C===t.PatternNumberExact?this.Number(M):C===t.PatternStringExact?this.String(M):this.Throw("Unable to resolve key type from Record key pattern")})():s.TTuple(k)?(()=>{const w=(i.IsUndefined(k.items)?[]:k.items).map(($,O)=>t.Type.Literal(O.toString()));return this.Union(w,M)})():s.TArray(k)?this.Number(M):(()=>{const C=m.ResolveKeys(k,{includePatterns:!1});if(C.length===0)return this.Never(M);const w=C.map($=>this.Literal($));return this.Union(w,M)})()}Literal(k,M={}){return this.Create({...M,[t.Kind]:"Literal",const:k,type:typeof k})}Lowercase(k,M={}){return{...h.Map(u.Type(k),"Lowercase"),...M}}Never(k={}){return this.Create({...k,[t.Kind]:"Never",not:{}})}Not(k,M){return this.Create({...M,[t.Kind]:"Not",not:u.Type(k)})}Null(k={}){return this.Create({...k,[t.Kind]:"Null",type:"null"})}Number(k={}){return this.Create({...k,[t.Kind]:"Number",type:"number"})}Object(k,M={}){const C=Object.getOwnPropertyNames(k),w=C.filter(ie=>s.TOptional(k[ie])),$=C.filter(ie=>!w.includes(ie)),O=s.TSchema(M.additionalProperties)?{additionalProperties:u.Type(M.additionalProperties)}:{},N=C.reduce((ie,me)=>({...ie,[me]:u.Type(k[me])}),{});return $.length>0?this.Create({...M,...O,[t.Kind]:"Object",type:"object",properties:N,required:$}):this.Create({...M,...O,[t.Kind]:"Object",type:"object",properties:N})}Omit(k,M,C={}){const w=v.Resolve(M);return p.Map(this.Discard(u.Type(k),["$id",t.Transform]),$=>{i.IsArray($.required)&&($.required=$.required.filter(O=>!w.includes(O)),$.required.length===0&&delete $.required);for(const O of Object.getOwnPropertyNames($.properties))w.includes(O)&&delete $.properties[O];return this.Create($)},C)}Partial(k,M={}){return p.Map(this.Discard(u.Type(k),["$id",t.Transform]),C=>{const w=Object.getOwnPropertyNames(C.properties).reduce(($,O)=>({...$,[O]:this.Optional(C.properties[O])}),{});return this.Object(w,this.Discard(C,["required"]))},M)}Pick(k,M,C={}){const w=v.Resolve(M);return p.Map(this.Discard(u.Type(k),["$id",t.Transform]),$=>{i.IsArray($.required)&&($.required=$.required.filter(O=>w.includes(O)),$.required.length===0&&delete $.required);for(const O of Object.getOwnPropertyNames($.properties))w.includes(O)||delete $.properties[O];return this.Create($)},C)}Record(k,M,C={}){return s.TTemplateLiteral(k)?(()=>{const w=E.ParseExact(k.pattern);return L.Check(w)?this.Object([...V.Generate(w)].reduce(($,O)=>({...$,[O]:u.Type(M)}),{}),C):this.Create({...C,[t.Kind]:"Record",type:"object",patternProperties:{[k.pattern]:u.Type(M)}})})():s.TUnion(k)?(()=>{const w=b.Resolve(k);if(s.TUnionLiteral(w)){const $=w.anyOf.reduce((O,N)=>({...O,[N.const]:u.Type(M)}),{});return this.Object($,{...C,[t.Hint]:"Record"})}else this.Throw("Record key of type union contains non-literal types")})():s.TLiteral(k)?i.IsString(k.const)||i.IsNumber(k.const)?this.Object({[k.const]:u.Type(M)},C):this.Throw("Record key of type literal is not of type string or number"):s.TInteger(k)||s.TNumber(k)?this.Create({...C,[t.Kind]:"Record",type:"object",patternProperties:{[t.PatternNumberExact]:u.Type(M)}}):s.TString(k)?(()=>{const w=i.IsUndefined(k.pattern)?t.PatternStringExact:k.pattern;return this.Create({...C,[t.Kind]:"Record",type:"object",patternProperties:{[w]:u.Type(M)}})})():this.Never()}Recursive(k,M={}){i.IsUndefined(M.$id)&&(M.$id=`T${se++}`);const C=k({[t.Kind]:"This",$ref:`${M.$id}`});return C.$id=M.$id,this.Create({...M,[t.Hint]:"Recursive",...C})}Ref(k,M={}){return i.IsString(k)?this.Create({...M,[t.Kind]:"Ref",$ref:k}):(i.IsUndefined(k.$id)&&this.Throw("Reference target type must specify an $id"),this.Create({...M,[t.Kind]:"Ref",$ref:k.$id}))}Required(k,M={}){return p.Map(this.Discard(u.Type(k),["$id",t.Transform]),C=>{const w=Object.getOwnPropertyNames(C.properties).reduce(($,O)=>({...$,[O]:this.Discard(C.properties[O],[t.Optional])}),{});return this.Object(w,C)},M)}Rest(k){return s.TTuple(k)&&!i.IsUndefined(k.items)?u.Rest(k.items):s.TIntersect(k)?u.Rest(k.allOf):s.TUnion(k)?u.Rest(k.anyOf):[]}String(k={}){return this.Create({...k,[t.Kind]:"String",type:"string"})}TemplateLiteral(k,M={}){const C=i.IsString(k)?_.Create(D.Parse(k)):_.Create(k);return this.Create({...M,[t.Kind]:"TemplateLiteral",type:"string",pattern:C})}Transform(k){return new U(k)}Tuple(k,M={}){const[C,w,$]=[!1,k.length,k.length],O=u.Rest(k),N=k.length>0?{...M,[t.Kind]:"Tuple",type:"array",items:O,additionalItems:C,minItems:w,maxItems:$}:{...M,[t.Kind]:"Tuple",type:"array",minItems:w,maxItems:$};return this.Create(N)}Uncapitalize(k,M={}){return{...h.Map(u.Type(k),"Uncapitalize"),...M}}Union(k,M={}){return s.TTemplateLiteral(k)?x.Resolve(k):(()=>{const C=k;if(C.length===0)return this.Never(M);if(C.length===1)return this.Create(u.Type(C[0],M));const w=u.Rest(C);return this.Create({...M,[t.Kind]:"Union",anyOf:w})})()}Unknown(k={}){return this.Create({...k,[t.Kind]:"Unknown"})}Unsafe(k={}){return this.Create({...k,[t.Kind]:k[t.Kind]||"Unsafe"})}Uppercase(k,M={}){return{...h.Map(u.Type(k),"Uppercase"),...M}}}t.JsonTypeBuilder=z;class W extends z{AsyncIterator(k,M={}){return this.Create({...M,[t.Kind]:"AsyncIterator",type:"AsyncIterator",items:u.Type(k)})}Awaited(k,M={}){const C=w=>w.length>0?(()=>{const[$,...O]=w;return[this.Awaited($),...C(O)]})():w;return s.TIntersect(k)?t.Type.Intersect(C(k.allOf)):s.TUnion(k)?t.Type.Union(C(k.anyOf)):s.TPromise(k)?this.Awaited(k.item):u.Type(k,M)}BigInt(k={}){return this.Create({...k,[t.Kind]:"BigInt",type:"bigint"})}ConstructorParameters(k,M={}){return this.Tuple([...k.parameters],{...M})}Constructor(k,M,C){const[w,$]=[u.Rest(k),u.Type(M)];return this.Create({...C,[t.Kind]:"Constructor",type:"Constructor",parameters:w,returns:$})}Date(k={}){return this.Create({...k,[t.Kind]:"Date",type:"Date"})}Function(k,M,C){const[w,$]=[u.Rest(k),u.Type(M)];return this.Create({...C,[t.Kind]:"Function",type:"Function",parameters:w,returns:$})}InstanceType(k,M={}){return u.Type(k.returns,M)}Iterator(k,M={}){return this.Create({...M,[t.Kind]:"Iterator",type:"Iterator",items:u.Type(k)})}Parameters(k,M={}){return this.Tuple(k.parameters,{...M})}Promise(k,M={}){return this.Create({...M,[t.Kind]:"Promise",type:"Promise",item:u.Type(k)})}RegExp(k,M={}){const C=i.IsString(k)?k:k.source;return this.Create({...M,[t.Kind]:"String",type:"string",pattern:C})}RegEx(k,M={}){return this.RegExp(k,M)}ReturnType(k,M={}){return u.Type(k.returns,M)}Symbol(k){return this.Create({...k,[t.Kind]:"Symbol",type:"symbol"})}Undefined(k={}){return this.Create({...k,[t.Kind]:"Undefined",type:"undefined"})}Uint8Array(k={}){return this.Create({...k,[t.Kind]:"Uint8Array",type:"Uint8Array"})}Void(k={}){return this.Create({...k,[t.Kind]:"Void",type:"void"})}}t.JavaScriptTypeBuilder=W,t.JsonType=new z,t.Type=new W})(j);const xD=j.Type.Object({prefix:j.Type.Optional(j.Type.String()),suffix:j.Type.Optional(j.Type.String()),volume:j.Type.Optional(j.Type.Number())}),o$=j.Type.Object({soundOnNewLine:j.Type.Optional(j.Type.String()),soundPerLetter:j.Type.Optional(xD)}),$D=j.Type.Object({defaultAudio:j.Type.Optional(o$),characterAudio:j.Type.Optional(j.Type.Record(j.Type.String(),o$))}),_D=j.Type.Object({src:j.Type.String(),path:j.Type.Optional(j.Type.String()),volume:j.Type.Optional(j.Type.Number()),rate:j.Type.Optional(j.Type.Number()),html5:j.Type.Optional(j.Type.Boolean()),fadeInTime:j.Type.Optional(j.Type.Number()),fadeInDelay:j.Type.Optional(j.Type.Number()),fadeOutTime:j.Type.Optional(j.Type.Number()),loop:j.Type.Optional(j.Type.Boolean())}),jD=j.Type.Record(j.Type.String(),_D),CD=j.Type.Object({volume:j.Type.Optional(j.Type.Number()),defaultMusic:j.Type.Optional(j.Type.String()),musicFadeInTime:j.Type.Optional(j.Type.Number()),musicFadeOutTime:j.Type.Optional(j.Type.Number()),musicFadeInDelay:j.Type.Optional(j.Type.Number())}),TD=j.Type.Record(j.Type.String(),j.Type.String()),s$=j.Type.Object({files:jD,audioTriggers:TD,options:CD,dialogAudio:j.Type.Optional($D)}),a$={files:{},audioTriggers:{},options:{volume:1,musicFadeInTime:.5,musicFadeInDelay:.5,musicFadeOutTime:.5}},l$=j.Type.Object({backgrounds:j.Type.Object({width:j.Type.Number(),height:j.Type.Number()}),dialogBottomPadding:j.Type.Union([j.Type.Number(),j.Type.String()]),minTextWidth:j.Type.Optional(j.Type.Number()),verticalLayoutThreshold:j.Type.Number(),defaultFontSize:j.Type.Optional(j.Type.Number()),portraits:j.Type.Object({width:j.Type.Number(),height:j.Type.Number(),offset:j.Type.Optional(j.Type.Object({landscape:j.Type.Optional(j.Type.Object({right:j.Type.Number(),bottom:j.Type.Number()})),portrait:j.Type.Optional(j.Type.Object({right:j.Type.Number(),bottom:j.Type.Number()}))}))})}),OD={backgrounds:{width:880,height:720},dialogBottomPadding:70,verticalLayoutThreshold:600,defaultFontSize:16,portraits:{width:100,height:100}},$p=j.Type.Object({name:j.Type.String(),description:j.Type.Optional(j.Type.String())}),ED=j.Type.Intersect([$p,j.Type.Object({type:j.Type.Literal("number"),defaultValue:j.Type.Number(),step:j.Type.Number(),minValue:j.Type.Number(),maxValue:j.Type.Number()})]),AD=j.Type.Intersect([$p,j.Type.Object({type:j.Type.Literal("integer"),defaultValue:j.Type.Number(),step:j.Type.Number(),minValue:j.Type.Number(),maxValue:j.Type.Number()})]),PD=j.Type.Intersect([$p,j.Type.Object({type:j.Type.Literal("boolean"),defaultValue:j.Type.Boolean()})]),MD=j.Type.Intersect([$p,j.Type.Object({type:j.Type.Literal("string"),defaultValue:j.Type.String()})]),ID=j.Type.Union([ED,AD,PD,MD]);function ND(t){return t.type==="number"}function c$(t){return t.type==="integer"}function RD(t){return t.type==="boolean"}function LD(t){return t.type==="string"}const u$=j.Type.Object({customSettings:j.Type.Optional(j.Type.Record(j.Type.String(),ID))});var dl=(t=>(t[t.ERROR=3]="ERROR",t[t.WARN=2]="WARN",t[t.INFO=1]="INFO",t[t.DEBUG=0]="DEBUG",t[t.NONE=-1]="NONE",t))(dl||{});const _p="###_--_~=:;_JUMP",oy="###_--_~=:;_RETURN",DD="###_--_~=:;_OK",jp="###_--_~=:;_STOP";function BD(t){return t===_p||t===oy||t===DD||t===jp}const FD="3.17.3",VD=new Date("2025-06-21T17:18:06.523Z"),f$={branch:"main",commit:"70d3c0b9cace1103ba9b06e910bee8edf509668d"},zD=dl.WARN,qD=400,Cp=20,Tp="@empty",d$={background:Tp},UD=j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.Union([j.Type.String(),j.Type.Boolean()]))),h$=j.Type.Optional(j.Type.Object({animateText:j.Type.Optional(j.Type.Boolean()),textSpeed:j.Type.Optional(j.Type.Number()),timeBetweenLines:j.Type.Optional(j.Type.Number()),overlayMode:j.Type.Optional(j.Type.Boolean()),rightOffset:j.Type.Optional(j.Type.Number()),bottomOffset:j.Type.Optional(j.Type.Number()),width:j.Type.Optional(j.Type.Number()),height:j.Type.Optional(j.Type.Number()),hideDuringTransition:j.Type.Optional(j.Type.Boolean()),historyLength:j.Type.Optional(j.Type.Number()),allowHistoryToggling:j.Type.Optional(j.Type.Boolean()),showAfterScriptEnd:j.Type.Optional(j.Type.Boolean())})),p$=j.Type.Object({engineSplashScreen:j.Type.Optional(j.Type.Object({skip:j.Type.Optional(j.Type.Boolean()),fadeDuration:j.Type.Optional(j.Type.Number()),timeBeforeFadeout:j.Type.Optional(j.Type.Number()),overrideText:j.Type.Optional(j.Type.String()),overrideLogo:j.Type.Optional(j.Type.String())})),gameSplashScreen:j.Type.Optional(j.Type.Object({startButtonText:j.Type.Optional(j.Type.String())}))}),m$=j.Type.Object({timeOnScreen:j.Type.Number(),alsoPrintInDialogue:j.Type.Optional(j.Type.Boolean())}),HD=j.Type.Object({name:j.Type.String(),icon:j.Type.String(),startingValue:j.Type.Number(),maxValue:j.Type.Optional(j.Type.Number()),minValue:j.Type.Optional(j.Type.Number()),decimals:j.Type.Optional(j.Type.Number()),prefix:j.Type.Optional(j.Type.String()),suffix:j.Type.Optional(j.Type.String()),hideName:j.Type.Optional(j.Type.Boolean()),formatting:j.Type.Optional(j.Type.Object({style:j.Type.Union([j.Type.Literal("decimal"),j.Type.Literal("currency"),j.Type.Literal("percent"),j.Type.Literal("unit")]),currency:j.Type.Optional(j.Type.String()),unit:j.Type.Optional(j.Type.String())}))}),g$=j.Type.Record(j.Type.String(),HD),v$=j.Type.Record(j.Type.String(),j.Type.Object({onlyInteractOutsideOfScripts:j.Type.Optional(j.Type.Boolean())})),KD=j.Type.Object({delay:j.Type.Optional(j.Type.Number()),duration:j.Type.Optional(j.Type.Number())}),y$=j.Type.Record(j.Type.String(),KD),WD=j.Type.Object({text:j.Type.String(),cssClass:j.Type.Optional(j.Type.String())}),b$=j.Type.Record(j.Type.String(),WD),w$=j.Type.Object({showScriptFinishedMessage:j.Type.Optional(j.Type.Boolean())}),S$=j.Type.Object({mode:j.Type.String(),slots:j.Type.Number(),runOnReload:j.Type.Optional(j.Type.String()),disabled:j.Type.Optional(j.Type.Boolean()),autosaveDisabledOnLabels:j.Type.Optional(j.Type.Array(j.Type.String())),autosaveFeedback:j.Type.Optional(j.Type.Object({enabled:j.Type.Boolean(),text:j.Type.Optional(j.Type.String()),backgroundImage:j.Type.Optional(j.Type.String()),foregroundImage:j.Type.Optional(j.Type.String()),duration:j.Type.Number()})),allowManualSave:j.Type.Optional(j.Type.Boolean())}),k$=j.Type.Object({allowFullscreen:j.Type.Optional(j.Type.Boolean())}),x$=j.Type.Array(j.Type.String()),GD=[],JD=j.Type.Object({startMenuScene:j.Type.Optional(j.Type.String()),gameScene:j.Type.Optional(j.Type.String()),gameSplashScene:j.Type.Optional(j.Type.String())}),$$=j.Type.Object({showPromptsOnKeyboard:j.Type.Optional(j.Type.Boolean()),showPromptsOnGamepad:j.Type.Optional(j.Type.Boolean()),showBottomLegend:j.Type.Optional(j.Type.Boolean())}),_$=j.Type.Object({baseAssetsPath:j.Type.Optional(j.Type.String()),baseDataPath:j.Type.Optional(j.Type.String()),gameTitle:j.Type.String(),saveFileName:j.Type.String(),images:j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.String())),layout:l$,settings:j.Type.Optional(u$),graphics:j.Type.Optional(k$),gameFlow:j.Type.Optional(j.Type.Object({labelToJumpOnScriptEnd:j.Type.Optional(j.Type.String())})),dialogPanel:j.Type.Optional(h$),splashScreens:j.Type.Optional(p$),notifications:j.Type.Optional(m$),hudStats:g$,interactionTags:j.Type.Optional(v$),transitions:j.Type.Optional(y$),menuButtons:j.Type.Optional(b$),debugging:j.Type.Optional(w$),saves:j.Type.Optional(S$),input:j.Type.Optional($$),hotkeys:UD,scenes:j.Type.Optional(JD)}),sy={baseAssetsPath:"",baseDataPath:"",gameTitle:"Narrat Game",saveFileName:"narrat save",images:{},layout:OD,settings:{},graphics:{},gameFlow:{},dialogPanel:{overlayMode:!0,rightOffset:100,bottomOffset:50,width:475,height:680,textSpeed:Cp,animateText:!0,timeBetweenLines:100,hideDuringTransition:!1,showAfterScriptEnd:!1},splashScreens:{},notifications:{timeOnScreen:2.5,alsoPrintInDialogue:!1},hudStats:{},interactionTags:{default:{onlyInteractOutsideOfScripts:!0}},transitions:{},menuButtons:{},debugging:{showScriptFinishedMessage:!1},saves:{mode:"manual",slots:10},input:{showPromptsOnKeyboard:!0,showPromptsOnGamepad:!0,showBottomLegend:!0},hotkeys:{},scenes:{}},QD=j.Type.Object({name:j.Type.String(),description:j.Type.String(),icon:j.Type.String(),onUse:j.Type.Optional(j.Type.Object({action:j.Type.String(),label:j.Type.String()})),tag:j.Type.Optional(j.Type.String()),category:j.Type.Optional(j.Type.String()),showIfEmpty:j.Type.Optional(j.Type.Boolean())}),j$=j.Type.Object({id:j.Type.String(),title:j.Type.String()}),C$=j.Type.Record(j.Type.String(),QD);j.Type.Object({categories:j.Type.Array(j$),items:C$});const T$=j.Type.Object({categories:j.Type.Optional(j.Type.Array(j$)),items:j.Type.Optional(C$)}),O$={categories:[{id:"default",title:"Items"}],items:{}},YD=j.Type.Object({description:j.Type.String(),succeededDescription:j.Type.Optional(j.Type.String()),failedDescription:j.Type.Optional(j.Type.String()),hidden:j.Type.Optional(j.Type.Boolean())}),XD=j.Type.Object({title:j.Type.String(),description:j.Type.String(),succeededDescription:j.Type.Optional(j.Type.String()),failedDescription:j.Type.Optional(j.Type.String()),endings:j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.Object({success:j.Type.Boolean(),description:j.Type.String()}))),objectives:j.Type.Record(j.Type.String(),YD),category:j.Type.Optional(j.Type.String())}),ZD=j.Type.Object({id:j.Type.String(),title:j.Type.String()}),e7=j.Type.Record(j.Type.String(),XD),E$=j.Type.Object({quests:e7,categories:j.Type.Array(ZD)}),A$={quests:{},categories:[{id:"default",title:"Quests"}]},P$=j.Type.Object({enabled:j.Type.Boolean(),background:j.Type.Optional(j.Type.String()),text:j.Type.Optional(j.Type.String()),cssClass:j.Type.Optional(j.Type.String()),position:j.Type.Object({left:j.Type.Number(),top:j.Type.Number(),width:j.Type.Optional(j.Type.Number()),height:j.Type.Optional(j.Type.Number())}),anchor:j.Type.Optional(j.Type.Object({x:j.Type.Number(),y:j.Type.Number()})),action:j.Type.Optional(j.Type.String()),actionType:j.Type.Optional(j.Type.String()),scriptClickable:j.Type.Optional(j.Type.Boolean()),tag:j.Type.Optional(j.Type.String())}),t7=j.Type.Record(j.Type.String(),P$),M$=j.Type.Object({buttons:t7,clickableDuringScriptsByDefault:j.Type.Optional(j.Type.Boolean())}),I$={buttons:{},clickableDuringScriptsByDefault:!1},n7=j.Type.Intersect([P$,j.Type.Object({id:j.Type.String()})]),r7=j.Type.Object({muted:j.Type.Optional(j.Type.Boolean()),loop:j.Type.Optional(j.Type.Boolean())}),i7=j.Type.Object({background:j.Type.String(),video:j.Type.Optional(r7),buttons:j.Type.Optional(j.Type.Array(j.Type.Union([j.Type.String(),n7])))}),N$=j.Type.Record(j.Type.String(),i7);j.Type.Object({screens:N$});const R$=j.Type.Object({screens:j.Type.Optional(N$)}),L$={screens:{}},o7=j.Type.Object({name:j.Type.String(),description:j.Type.String(),startingLevel:j.Type.Number(),hidden:j.Type.Optional(j.Type.Boolean()),icon:j.Type.String()}),D$=j.Type.Record(j.Type.String(),o7),B$=j.Type.Object({xpPerLevel:j.Type.Number(),notifyLevelUp:j.Type.Boolean()});j.Type.Object({skills:D$,skillOptions:B$});const F$=j.Type.Object({skills:j.Type.Optional(D$),skillOptions:j.Type.Optional(B$)}),V$={skills:{},skillOptions:{xpPerLevel:10,notifyLevelUp:!0}},s7=j.Type.Object({portraitCssClass:j.Type.Optional(j.Type.String()),color:j.Type.Optional(j.Type.String()),boxCss:j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.Any())),nameCss:j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.Any())),textCss:j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.Any()))}),a7=j.Type.Object({video:j.Type.String(),autoplay:j.Type.Optional(j.Type.Boolean()),loop:j.Type.Optional(j.Type.Boolean()),muted:j.Type.Optional(j.Type.Boolean()),width:j.Type.Optional(j.Type.Number()),height:j.Type.Optional(j.Type.Number())}),l7=j.Type.Object({image:j.Type.String(),width:j.Type.Optional(j.Type.Number()),height:j.Type.Optional(j.Type.Number())}),c7=j.Type.Union([j.Type.String(),a7,l7]),u7=j.Type.Object({sprites:j.Type.Optional(j.Type.Record(j.Type.String(),c7)),name:j.Type.String(),style:j.Type.Optional(s7)}),z$=j.Type.Object({config:j.Type.Object({imagesPath:j.Type.String(),playerCharacter:j.Type.Optional(j.Type.String()),gameCharacter:j.Type.Optional(j.Type.String())}),characters:j.Type.Record(j.Type.String(),u7)}),q$={config:{imagesPath:"",playerCharacter:"player",gameCharacter:"game"},characters:{}},U$=j.Type.Object({cssClass:j.Type.Optional(j.Type.String()),textCssClass:j.Type.Optional(j.Type.String()),titleCssClass:j.Type.Optional(j.Type.String())}),H$=j.Type.Object({options:j.Type.Object({delay:j.Type.Optional(j.Type.Number()),width:j.Type.Number(),keywordsPrefix:j.Type.String(),screenEdgesMinimumMargin:j.Type.Optional(j.Type.Number()),styling:j.Type.Optional(U$)}),tooltips:j.Type.Array(j.Type.Object({keywords:j.Type.Array(j.Type.String()),title:j.Type.String(),description:j.Type.String(),styling:j.Type.Optional(U$)}))}),K$={options:{delay:0,width:350,keywordsPrefix:"@@"},tooltips:[]},f7=j.Type.Object({name:j.Type.String(),description:j.Type.String(),icon:j.Type.Optional(j.Type.String()),lockedIcon:j.Type.Optional(j.Type.String()),secret:j.Type.Optional(j.Type.Boolean()),hidden:j.Type.Optional(j.Type.Boolean()),category:j.Type.Optional(j.Type.String()),extraData:j.Type.Optional(j.Type.Any())}),W$=j.Type.Object({id:j.Type.String(),title:j.Type.String()}),G$=j.Type.Record(j.Type.String(),f7);j.Type.Object({defaultAchievementIcon:j.Type.String(),categories:j.Type.Array(W$),achievements:G$,notifyNewAchievements:j.Type.Boolean(),secretAchievements:j.Type.Optional(j.Type.Object({censorDescription:j.Type.Optional(j.Type.Boolean()),censorName:j.Type.Optional(j.Type.Boolean()),hideUntilObtained:j.Type.Optional(j.Type.Boolean())}))});const J$=j.Type.Object({categories:j.Type.Optional(j.Type.Array(W$)),achievements:j.Type.Optional(G$)}),Q$={categories:[{id:"default",title:"Achievements"}],achievements:{},notifyNewAchievements:!0,defaultAchievementIcon:"img/achievements/trophy.png"},d7=j.Type.Object({diceRange:j.Type.Tuple([j.Type.Number(),j.Type.Number()]),diceCount:j.Type.Number(),difficultyText:j.Type.Array(j.Type.Tuple([j.Type.Number(),j.Type.String()])),extraPointsPerLevel:j.Type.Number(),extraDicePerLevel:j.Type.Optional(j.Type.Number()),successOnRollsBelowThreshold:j.Type.Boolean(),showDifficultyText:j.Type.Boolean(),showDifficultyNumber:j.Type.Boolean(),showDifficultyWithoutModifiers:j.Type.Boolean(),finalRollIsHighest:j.Type.Optional(j.Type.Boolean()),finalRollIsLowest:j.Type.Optional(j.Type.Boolean()),failOnRollsEqualToThreshold:j.Type.Optional(j.Type.Boolean())}),h7=j.Type.Object({skill:j.Type.String(),difficulty:j.Type.Number(),winsNeeded:j.Type.Optional(j.Type.Number()),hideAfterRoll:j.Type.Optional(j.Type.Boolean()),repeatable:j.Type.Optional(j.Type.Boolean())}),Y$=j.Type.Object({options:d7,skillChecks:j.Type.Record(j.Type.String(),h7)}),X$={options:{diceRange:[1,6],extraPointsPerLevel:1,extraDicePerLevel:0,diceCount:2,successOnRollsBelowThreshold:!1,showDifficultyText:!0,showDifficultyNumber:!1,showDifficultyWithoutModifiers:!1,finalRollIsHighest:!1,finalRollIsLowest:!1,difficultyText:[[2,"Very Easy"],[4,"Easy"],[6,"Medium"],[8,"Hard"],[10,"Very Hard"],[11,"Extremely Hard"],[12,"Near Impossible"]]},skillChecks:{}},p7=j.Type.Object({cssClass:j.Type.Optional(j.Type.String()),textTemplate:j.Type.Optional(j.Type.String())}),Z$=j.Type.Record(j.Type.String(),p7);j.Type.Object({choiceTextTemplate:j.Type.String(),choicePrompts:Z$});const e_=j.Type.Object({choiceTextTemplate:j.Type.Optional(j.Type.String()),choicePrompts:j.Type.Optional(Z$)}),t_={choicePrompts:{},choiceTextTemplate:'<span class="choice-index">%{$index}. </span> <span class="choice-text">%{$choice}</span>'},n_=j.Type.Object({delay:j.Type.Optional(j.Type.Number()),direction:j.Type.Optional(j.Type.String()),duration:j.Type.Optional(j.Type.Number()),easing:j.Type.Optional(j.Type.String()),endDelay:j.Type.Optional(j.Type.Number()),fill:j.Type.Optional(j.Type.String()),iterationStart:j.Type.Optional(j.Type.Number()),iterations:j.Type.Optional(j.Type.Number()),keyframes:j.Type.Optional(j.Type.Any())}),ay=j.Type.Array(j.Type.Any()),m7=j.Type.Object({keyframes:j.Type.Union([j.Type.String(),ay]),options:j.Type.Optional(n_)});j.Type.Object({keyframes:ay,options:j.Type.Optional(n_)});const r_=j.Type.Object({animations:j.Type.Record(j.Type.String(),m7),keyframes:j.Type.Record(j.Type.String(),ay)}),i_={animations:{},keyframes:{}},g7=j.Type.Object({name:j.Type.String(),type:j.Type.String(),optional:j.Type.Optional(j.Type.Boolean())}),v7=j.Type.Object({keyword:j.Type.String(),label:j.Type.String(),options:j.Type.Optional(j.Type.Array(g7))}),o_=j.Type.Object({macros:j.Type.Array(v7)}),s_={macros:[]},ly=j.Type.Object({assets:j.Type.Record(j.Type.String(),j.Type.String())}),a_=j.Type.Object({images:j.Type.Optional(ly),audio:j.Type.Optional(ly),video:j.Type.Optional(ly)}),l_={images:{assets:{}},audio:{assets:{}},video:{assets:{}}},y7=j.Type.Object({file:j.Type.String(),options:j.Type.Record(j.Type.String(),j.Type.Any())}),b7=j.Type.Object({name:j.Type.String(),files:j.Type.Array(j.Type.Union([j.Type.String(),y7])),fontFamily:j.Type.String()}),w7=j.Type.Record(j.Type.String(),b7),c_=j.Type.Object({fontSets:j.Type.Optional(j.Type.Record(j.Type.String(),w7)),allowChoosingFont:j.Type.Optional(j.Type.Boolean())}),u_={fontSets:{},allowChoosingFont:!1},pu={common:sy,screens:L$,buttons:I$,skills:V$,skillChecks:X$,scripts:[],audio:a$,tooltips:K$,achievements:Q$,items:O$,quests:A$,characters:q$,choices:t_,animations:i_,macros:s_,preload:l_,fonts:u_};var f_=!1;function Op(t,e,n){return Array.isArray(t)?(t.length=Math.max(t.length,e),t.splice(e,1,n),n):(t[e]=n,n)}function cy(t,e){if(Array.isArray(t)){t.splice(e,1);return}delete t[e]}function S7(){return d_().__VUE_DEVTOOLS_GLOBAL_HOOK__}function d_(){return typeof navigator<"u"&&typeof window<"u"?window:typeof global<"u"?global:{}}const k7=typeof Proxy=="function",x7="devtools-plugin:setup",$7="plugin:settings:set";let mu,uy;function _7(){var t;return mu!==void 0||(typeof window<"u"&&window.performance?(mu=!0,uy=window.performance):typeof global<"u"&&(!((t=global.perf_hooks)===null||t===void 0)&&t.performance)?(mu=!0,uy=global.perf_hooks.performance):mu=!1),mu}function j7(){return _7()?uy.now():Date.now()}class C7{constructor(e,n){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=n;const r={};if(e.settings)for(const s in e.settings){const a=e.settings[s];r[s]=a.defaultValue}const i=`__vue-devtools-plugin-settings__${e.id}`;let o=Object.assign({},r);try{const s=localStorage.getItem(i),a=JSON.parse(s);Object.assign(o,a)}catch{}this.fallbacks={getSettings(){return o},setSettings(s){try{localStorage.setItem(i,JSON.stringify(s))}catch{}o=s},now(){return j7()}},n&&n.on($7,(s,a)=>{s===this.plugin.id&&this.fallbacks.setSettings(a)}),this.proxiedOn=new Proxy({},{get:(s,a)=>this.target?this.target.on[a]:(...l)=>{this.onQueue.push({method:a,args:l})}}),this.proxiedTarget=new Proxy({},{get:(s,a)=>this.target?this.target[a]:a==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(a)?(...l)=>(this.targetQueue.push({method:a,args:l,resolve:()=>{}}),this.fallbacks[a](...l)):(...l)=>new Promise(c=>{this.targetQueue.push({method:a,args:l,resolve:c})})})}async setRealTarget(e){this.target=e;for(const n of this.onQueue)this.target.on[n.method](...n.args);for(const n of this.targetQueue)n.resolve(await this.target[n.method](...n.args))}}function h_(t,e){const n=t,r=d_(),i=S7(),o=k7&&n.enableEarlyProxy;if(i&&(r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!o))i.emit(x7,t,e);else{const s=o?new C7(n,i):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:e,proxy:s}),s&&e(s.proxiedTarget)}}/*!
7
+ */(function(t,e){(function(n,r){t.exports=r()})(Gi,function(){function n(_e){var ge=typeof _e;return _e!==null&&(ge==="object"||ge==="function")}function r(_e){return typeof _e=="function"}var i=void 0;Array.isArray?i=Array.isArray:i=function(_e){return Object.prototype.toString.call(_e)==="[object Array]"};var o=i,s=0,a=void 0,l=void 0,c=function(ge,Ie){T[s]=ge,T[s+1]=Ie,s+=2,s===2&&(l?l(E):L())};function f(_e){l=_e}function u(_e){c=_e}var d=typeof window<"u"?window:void 0,h=d||{},p=h.MutationObserver||h.WebKitMutationObserver,m=typeof self>"u"&&typeof process<"u"&&{}.toString.call(process)==="[object process]",y=typeof Uint8ClampedArray<"u"&&typeof importScripts<"u"&&typeof MessageChannel<"u";function v(){return function(){return process.nextTick(E)}}function b(){return typeof a<"u"?function(){a(E)}:x()}function S(){var _e=0,ge=new p(E),Ie=document.createTextNode("");return ge.observe(Ie,{characterData:!0}),function(){Ie.data=_e=++_e%2}}function _(){var _e=new MessageChannel;return _e.port1.onmessage=E,function(){return _e.port2.postMessage(0)}}function x(){var _e=setTimeout;return function(){return _e(E,1)}}var T=new Array(1e3);function E(){for(var _e=0;_e<s;_e+=2){var ge=T[_e],Ie=T[_e+1];ge(Ie),T[_e]=void 0,T[_e+1]=void 0}s=0}function R(){try{var _e=Function("return this")().require("vertx");return a=_e.runOnLoop||_e.runOnContext,b()}catch{return x()}}var L=void 0;m?L=v():p?L=S():y?L=_():d===void 0&&typeof gD=="function"?L=R():L=x();function B(_e,ge){var Ie=this,q=new this.constructor(U);q[D]===void 0&&he(q);var oe=Ie._state;if(oe){var de=arguments[oe-1];c(function(){return me(oe,q,de,Ie._result)})}else N(Ie,q,_e,ge);return q}function V(_e){var ge=this;if(_e&&typeof _e=="object"&&_e.constructor===ge)return _e;var Ie=new ge(U);return C(Ie,_e),Ie}var D=Math.random().toString(36).substring(2);function U(){}var F=void 0,se=1,X=2;function Z(){return new TypeError("You cannot resolve a promise with itself")}function z(){return new TypeError("A promises callback cannot return that same promise.")}function W(_e,ge,Ie,q){try{_e.call(ge,Ie,q)}catch(oe){return oe}}function A(_e,ge,Ie){c(function(q){var oe=!1,de=W(Ie,ge,function(be){oe||(oe=!0,ge!==be?C(q,be):$(q,be))},function(be){oe||(oe=!0,O(q,be))},"Settle: "+(q._label||" unknown promise"));!oe&&de&&(oe=!0,O(q,de))},_e)}function k(_e,ge){ge._state===se?$(_e,ge._result):ge._state===X?O(_e,ge._result):N(ge,void 0,function(Ie){return C(_e,Ie)},function(Ie){return O(_e,Ie)})}function M(_e,ge,Ie){ge.constructor===_e.constructor&&Ie===B&&ge.constructor.resolve===V?k(_e,ge):Ie===void 0?$(_e,ge):r(Ie)?A(_e,ge,Ie):$(_e,ge)}function C(_e,ge){if(_e===ge)O(_e,Z());else if(n(ge)){var Ie=void 0;try{Ie=ge.then}catch(q){O(_e,q);return}M(_e,ge,Ie)}else $(_e,ge)}function w(_e){_e._onerror&&_e._onerror(_e._result),ie(_e)}function $(_e,ge){_e._state===F&&(_e._result=ge,_e._state=se,_e._subscribers.length!==0&&c(ie,_e))}function O(_e,ge){_e._state===F&&(_e._state=X,_e._result=ge,c(w,_e))}function N(_e,ge,Ie,q){var oe=_e._subscribers,de=oe.length;_e._onerror=null,oe[de]=ge,oe[de+se]=Ie,oe[de+X]=q,de===0&&_e._state&&c(ie,_e)}function ie(_e){var ge=_e._subscribers,Ie=_e._state;if(ge.length!==0){for(var q=void 0,oe=void 0,de=_e._result,be=0;be<ge.length;be+=3)q=ge[be],oe=ge[be+Ie],q?me(Ie,q,oe,de):oe(de);_e._subscribers.length=0}}function me(_e,ge,Ie,q){var oe=r(Ie),de=void 0,be=void 0,Ee=!0;if(oe){try{de=Ie(q)}catch(Fe){Ee=!1,be=Fe}if(ge===de){O(ge,z());return}}else de=q;ge._state!==F||(oe&&Ee?C(ge,de):Ee===!1?O(ge,be):_e===se?$(ge,de):_e===X&&O(ge,de))}function le(_e,ge){try{ge(function(q){C(_e,q)},function(q){O(_e,q)})}catch(Ie){O(_e,Ie)}}var ae=0;function Ue(){return ae++}function he(_e){_e[D]=ae++,_e._state=void 0,_e._result=void 0,_e._subscribers=[]}function je(){return new Error("Array Methods must be provided an Array")}var Ze=function(){function _e(ge,Ie){this._instanceConstructor=ge,this.promise=new ge(U),this.promise[D]||he(this.promise),o(Ie)?(this.length=Ie.length,this._remaining=Ie.length,this._result=new Array(this.length),this.length===0?$(this.promise,this._result):(this.length=this.length||0,this._enumerate(Ie),this._remaining===0&&$(this.promise,this._result))):O(this.promise,je())}return _e.prototype._enumerate=function(Ie){for(var q=0;this._state===F&&q<Ie.length;q++)this._eachEntry(Ie[q],q)},_e.prototype._eachEntry=function(Ie,q){var oe=this._instanceConstructor,de=oe.resolve;if(de===V){var be=void 0,Ee=void 0,Fe=!1;try{be=Ie.then}catch(pt){Fe=!0,Ee=pt}if(be===B&&Ie._state!==F)this._settledAt(Ie._state,q,Ie._result);else if(typeof be!="function")this._remaining--,this._result[q]=Ie;else if(oe===tt){var mt=new oe(U);Fe?O(mt,Ee):M(mt,Ie,be),this._willSettleAt(mt,q)}else this._willSettleAt(new oe(function(pt){return pt(Ie)}),q)}else this._willSettleAt(de(Ie),q)},_e.prototype._settledAt=function(Ie,q,oe){var de=this.promise;de._state===F&&(this._remaining--,Ie===X?O(de,oe):this._result[q]=oe),this._remaining===0&&$(de,this._result)},_e.prototype._willSettleAt=function(Ie,q){var oe=this;N(Ie,void 0,function(de){return oe._settledAt(se,q,de)},function(de){return oe._settledAt(X,q,de)})},_e}();function ce(_e){return new Ze(this,_e).promise}function He(_e){var ge=this;return o(_e)?new ge(function(Ie,q){for(var oe=_e.length,de=0;de<oe;de++)ge.resolve(_e[de]).then(Ie,q)}):new ge(function(Ie,q){return q(new TypeError("You must pass an array to race."))})}function st(_e){var ge=this,Ie=new ge(U);return O(Ie,_e),Ie}function Ve(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function It(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}var tt=function(){function _e(ge){this[D]=Ue(),this._result=this._state=void 0,this._subscribers=[],U!==ge&&(typeof ge!="function"&&Ve(),this instanceof _e?le(this,ge):It())}return _e.prototype.catch=function(Ie){return this.then(null,Ie)},_e.prototype.finally=function(Ie){var q=this,oe=q.constructor;return r(Ie)?q.then(function(de){return oe.resolve(Ie()).then(function(){return de})},function(de){return oe.resolve(Ie()).then(function(){throw de})}):q.then(Ie,Ie)},_e}();tt.prototype.then=B,tt.all=ce,tt.race=He,tt.resolve=V,tt.reject=st,tt._setScheduler=f,tt._setAsap=u,tt._asap=c;function Je(){var _e=void 0;if(typeof Gi<"u")_e=Gi;else if(typeof self<"u")_e=self;else try{_e=Function("return this")()}catch{throw new Error("polyfill failed because global object is unavailable in this environment")}var ge=_e.Promise;if(ge){var Ie=null;try{Ie=Object.prototype.toString.call(ge.resolve())}catch{}if(Ie==="[object Promise]"&&!ge.cast)return}_e.Promise=tt}return tt.polyfill=Je,tt.Promise=tt,tt})})(i$);var vD=i$.exports;vD.polyfill();class kp{constructor(){Un(this,"debug");Un(this,"logger",{log:()=>{}})}setupDebugger(e){this.debug=e,e&&(this.logger.log=console.log.bind(window.console))}}const xp=new kp,Po=xp.logger;function hu(t,e){return Date.now()-t+e}function iy(t){const e=parseInt(t,10);let n=Math.floor(e/3600),r=Math.floor((e-n*3600)/60),i=e-n*3600-r*60;return n<10&&(n="0"+n),r<10&&(r="0"+r),i<10&&(i="0"+i),n+":"+r+":"+i}const yD=g.defineComponent({props:{containerCssClass:[String,Object],cantClose:{type:Boolean,default:!1}},methods:{close(){this.cantClose||this.$emit("close")}}}),Ns=(t,e)=>{const n=t.__vccOpts||t;for(const[r,i]of e)n[r]=i;return n},bD={class:"modal-header"},wD={class:"modal-body"},SD={class:"modal-footer"};function kD(t,e,n,r,i,o){return g.openBlock(),g.createBlock(g.Transition,{name:"fade"},{default:g.withCtx(()=>[g.createElementVNode("div",{class:"modal-mask",onClick:e[2]||(e[2]=(...s)=>t.close&&t.close(...s))},[g.createElementVNode("div",{class:g.normalizeClass(["modal-container bg-gray-800 nrt-card-4",t.containerCssClass]),onClick:e[1]||(e[1]=s=>s.stopPropagation())},[g.createElementVNode("div",bD,[t.cantClose?g.createCommentVNode("",!0):(g.openBlock(),g.createElementBlock("button",{key:0,class:"close-button",onClick:e[0]||(e[0]=(...s)=>t.close&&t.close(...s))}," X ")),g.renderSlot(t.$slots,"header",{},()=>[g.createTextVNode(" default header ")])]),g.createElementVNode("div",wD,[g.renderSlot(t.$slots,"body",{},()=>[g.createTextVNode(" default body ")])]),g.createElementVNode("div",SD,[g.renderSlot(t.$slots,"footer")])],2)])]),_:3})}const Aa=Ns(yD,[["render",kD]]);function tc(){return`${Date.now()}-${Math.floor(Math.random()*1e11)}-${Math.floor(Math.random()*1e11)}`}var j={};(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.Type=t.JsonType=t.JavaScriptTypeBuilder=t.JsonTypeBuilder=t.TypeBuilder=t.TypeBuilderError=t.TransformEncodeBuilder=t.TransformDecodeBuilder=t.TemplateLiteralDslParser=t.TemplateLiteralGenerator=t.TemplateLiteralGeneratorError=t.TemplateLiteralFinite=t.TemplateLiteralFiniteError=t.TemplateLiteralParser=t.TemplateLiteralParserError=t.TemplateLiteralResolver=t.TemplateLiteralPattern=t.TemplateLiteralPatternError=t.UnionResolver=t.KeyArrayResolver=t.KeyArrayResolverError=t.KeyResolver=t.ObjectMap=t.Intrinsic=t.IndexedAccessor=t.TypeClone=t.TypeExtends=t.TypeExtendsResult=t.TypeExtendsError=t.ExtendsUndefined=t.TypeGuard=t.TypeGuardUnknownTypeError=t.ValueGuard=t.FormatRegistry=t.TypeBoxError=t.TypeRegistry=t.PatternStringExact=t.PatternNumberExact=t.PatternBooleanExact=t.PatternString=t.PatternNumber=t.PatternBoolean=t.Kind=t.Hint=t.Optional=t.Readonly=t.Transform=void 0,t.Transform=Symbol.for("TypeBox.Transform"),t.Readonly=Symbol.for("TypeBox.Readonly"),t.Optional=Symbol.for("TypeBox.Optional"),t.Hint=Symbol.for("TypeBox.Hint"),t.Kind=Symbol.for("TypeBox.Kind"),t.PatternBoolean="(true|false)",t.PatternNumber="(0|[1-9][0-9]*)",t.PatternString="(.*)",t.PatternBooleanExact=`^${t.PatternBoolean}$`,t.PatternNumberExact=`^${t.PatternNumber}$`,t.PatternStringExact=`^${t.PatternString}$`;var e;(function(A){const k=new Map;function M(){return new Map(k)}A.Entries=M;function C(){return k.clear()}A.Clear=C;function w(ie){return k.delete(ie)}A.Delete=w;function $(ie){return k.has(ie)}A.Has=$;function O(ie,me){k.set(ie,me)}A.Set=O;function N(ie){return k.get(ie)}A.Get=N})(e||(t.TypeRegistry=e={}));class n extends Error{constructor(k){super(k)}}t.TypeBoxError=n;var r;(function(A){const k=new Map;function M(){return new Map(k)}A.Entries=M;function C(){return k.clear()}A.Clear=C;function w(ie){return k.delete(ie)}A.Delete=w;function $(ie){return k.has(ie)}A.Has=$;function O(ie,me){k.set(ie,me)}A.Set=O;function N(ie){return k.get(ie)}A.Get=N})(r||(t.FormatRegistry=r={}));var i;(function(A){function k(ae){return Array.isArray(ae)}A.IsArray=k;function M(ae){return typeof ae=="bigint"}A.IsBigInt=M;function C(ae){return typeof ae=="boolean"}A.IsBoolean=C;function w(ae){return ae instanceof globalThis.Date}A.IsDate=w;function $(ae){return ae===null}A.IsNull=$;function O(ae){return typeof ae=="number"}A.IsNumber=O;function N(ae){return typeof ae=="object"&&ae!==null}A.IsObject=N;function ie(ae){return typeof ae=="string"}A.IsString=ie;function me(ae){return ae instanceof globalThis.Uint8Array}A.IsUint8Array=me;function le(ae){return ae===void 0}A.IsUndefined=le})(i||(t.ValueGuard=i={}));class o extends n{}t.TypeGuardUnknownTypeError=o;var s;(function(A){function k(J){try{return new RegExp(J),!0}catch{return!1}}function M(J){if(!i.IsString(J))return!1;for(let G=0;G<J.length;G++){const ne=J.charCodeAt(G);if(ne>=7&&ne<=13||ne===27||ne===127)return!1}return!0}function C(J){return O(J)||Qe(J)}function w(J){return i.IsUndefined(J)||i.IsBigInt(J)}function $(J){return i.IsUndefined(J)||i.IsNumber(J)}function O(J){return i.IsUndefined(J)||i.IsBoolean(J)}function N(J){return i.IsUndefined(J)||i.IsString(J)}function ie(J){return i.IsUndefined(J)||i.IsString(J)&&M(J)&&k(J)}function me(J){return i.IsUndefined(J)||i.IsString(J)&&M(J)}function le(J){return i.IsUndefined(J)||Qe(J)}function ae(J){return Je(J,"Any")&&N(J.$id)}A.TAny=ae;function Ue(J){return Je(J,"Array")&&J.type==="array"&&N(J.$id)&&Qe(J.items)&&$(J.minItems)&&$(J.maxItems)&&O(J.uniqueItems)&&le(J.contains)&&$(J.minContains)&&$(J.maxContains)}A.TArray=Ue;function he(J){return Je(J,"AsyncIterator")&&J.type==="AsyncIterator"&&N(J.$id)&&Qe(J.items)}A.TAsyncIterator=he;function je(J){return Je(J,"BigInt")&&J.type==="bigint"&&N(J.$id)&&w(J.exclusiveMaximum)&&w(J.exclusiveMinimum)&&w(J.maximum)&&w(J.minimum)&&w(J.multipleOf)}A.TBigInt=je;function Ze(J){return Je(J,"Boolean")&&J.type==="boolean"&&N(J.$id)}A.TBoolean=Ze;function ce(J){return Je(J,"Constructor")&&J.type==="Constructor"&&N(J.$id)&&i.IsArray(J.parameters)&&J.parameters.every(G=>Qe(G))&&Qe(J.returns)}A.TConstructor=ce;function He(J){return Je(J,"Date")&&J.type==="Date"&&N(J.$id)&&$(J.exclusiveMaximumTimestamp)&&$(J.exclusiveMinimumTimestamp)&&$(J.maximumTimestamp)&&$(J.minimumTimestamp)&&$(J.multipleOfTimestamp)}A.TDate=He;function st(J){return Je(J,"Function")&&J.type==="Function"&&N(J.$id)&&i.IsArray(J.parameters)&&J.parameters.every(G=>Qe(G))&&Qe(J.returns)}A.TFunction=st;function Ve(J){return Je(J,"Integer")&&J.type==="integer"&&N(J.$id)&&$(J.exclusiveMaximum)&&$(J.exclusiveMinimum)&&$(J.maximum)&&$(J.minimum)&&$(J.multipleOf)}A.TInteger=Ve;function It(J){return Je(J,"Intersect")&&!(i.IsString(J.type)&&J.type!=="object")&&i.IsArray(J.allOf)&&J.allOf.every(G=>Qe(G)&&!an(G))&&N(J.type)&&(O(J.unevaluatedProperties)||le(J.unevaluatedProperties))&&N(J.$id)}A.TIntersect=It;function tt(J){return Je(J,"Iterator")&&J.type==="Iterator"&&N(J.$id)&&Qe(J.items)}A.TIterator=tt;function Je(J,G){return _e(J)&&J[t.Kind]===G}A.TKindOf=Je;function _e(J){return i.IsObject(J)&&t.Kind in J&&i.IsString(J[t.Kind])}A.TKind=_e;function ge(J){return oe(J)&&i.IsString(J.const)}A.TLiteralString=ge;function Ie(J){return oe(J)&&i.IsNumber(J.const)}A.TLiteralNumber=Ie;function q(J){return oe(J)&&i.IsBoolean(J.const)}A.TLiteralBoolean=q;function oe(J){return Je(J,"Literal")&&N(J.$id)&&(i.IsBoolean(J.const)||i.IsNumber(J.const)||i.IsString(J.const))}A.TLiteral=oe;function de(J){return Je(J,"Never")&&i.IsObject(J.not)&&Object.getOwnPropertyNames(J.not).length===0}A.TNever=de;function be(J){return Je(J,"Not")&&Qe(J.not)}A.TNot=be;function Ee(J){return Je(J,"Null")&&J.type==="null"&&N(J.$id)}A.TNull=Ee;function Fe(J){return Je(J,"Number")&&J.type==="number"&&N(J.$id)&&$(J.exclusiveMaximum)&&$(J.exclusiveMinimum)&&$(J.maximum)&&$(J.minimum)&&$(J.multipleOf)}A.TNumber=Fe;function mt(J){return Je(J,"Object")&&J.type==="object"&&N(J.$id)&&i.IsObject(J.properties)&&C(J.additionalProperties)&&$(J.minProperties)&&$(J.maxProperties)&&Object.entries(J.properties).every(([G,ne])=>M(G)&&Qe(ne))}A.TObject=mt;function pt(J){return Je(J,"Promise")&&J.type==="Promise"&&N(J.$id)&&Qe(J.item)}A.TPromise=pt;function sn(J){return Je(J,"Record")&&J.type==="object"&&N(J.$id)&&C(J.additionalProperties)&&i.IsObject(J.patternProperties)&&(G=>{const ne=Object.getOwnPropertyNames(G.patternProperties);return ne.length===1&&k(ne[0])&&i.IsObject(G.patternProperties)&&Qe(G.patternProperties[ne[0]])})(J)}A.TRecord=sn;function Hn(J){return i.IsObject(J)&&t.Hint in J&&J[t.Hint]==="Recursive"}A.TRecursive=Hn;function Ft(J){return Je(J,"Ref")&&N(J.$id)&&i.IsString(J.$ref)}A.TRef=Ft;function lt(J){return Je(J,"String")&&J.type==="string"&&N(J.$id)&&$(J.minLength)&&$(J.maxLength)&&ie(J.pattern)&&me(J.format)}A.TString=lt;function qn(J){return Je(J,"Symbol")&&J.type==="symbol"&&N(J.$id)}A.TSymbol=qn;function Yn(J){return Je(J,"TemplateLiteral")&&J.type==="string"&&i.IsString(J.pattern)&&J.pattern[0]==="^"&&J.pattern[J.pattern.length-1]==="$"}A.TTemplateLiteral=Yn;function pn(J){return Je(J,"This")&&N(J.$id)&&i.IsString(J.$ref)}A.TThis=pn;function an(J){return i.IsObject(J)&&t.Transform in J}A.TTransform=an;function tn(J){return Je(J,"Tuple")&&J.type==="array"&&N(J.$id)&&i.IsNumber(J.minItems)&&i.IsNumber(J.maxItems)&&J.minItems===J.maxItems&&(i.IsUndefined(J.items)&&i.IsUndefined(J.additionalItems)&&J.minItems===0||i.IsArray(J.items)&&J.items.every(G=>Qe(G)))}A.TTuple=tn;function or(J){return Je(J,"Undefined")&&J.type==="undefined"&&N(J.$id)}A.TUndefined=or;function kn(J){return Xn(J)&&J.anyOf.every(G=>ge(G)||Ie(G))}A.TUnionLiteral=kn;function Xn(J){return Je(J,"Union")&&N(J.$id)&&i.IsObject(J)&&i.IsArray(J.anyOf)&&J.anyOf.every(G=>Qe(G))}A.TUnion=Xn;function xe(J){return Je(J,"Uint8Array")&&J.type==="Uint8Array"&&N(J.$id)&&$(J.minByteLength)&&$(J.maxByteLength)}A.TUint8Array=xe;function Xe(J){return Je(J,"Unknown")&&N(J.$id)}A.TUnknown=Xe;function $t(J){return Je(J,"Unsafe")}A.TUnsafe=$t;function en(J){return Je(J,"Void")&&J.type==="void"&&N(J.$id)}A.TVoid=en;function Ut(J){return i.IsObject(J)&&J[t.Readonly]==="Readonly"}A.TReadonly=Ut;function $e(J){return i.IsObject(J)&&J[t.Optional]==="Optional"}A.TOptional=$e;function Qe(J){return i.IsObject(J)&&(ae(J)||Ue(J)||Ze(J)||je(J)||he(J)||ce(J)||He(J)||st(J)||Ve(J)||It(J)||tt(J)||oe(J)||de(J)||be(J)||Ee(J)||Fe(J)||mt(J)||pt(J)||sn(J)||Ft(J)||lt(J)||qn(J)||Yn(J)||pn(J)||tn(J)||or(J)||Xn(J)||xe(J)||Xe(J)||$t(J)||en(J)||_e(J)&&e.Has(J[t.Kind]))}A.TSchema=Qe})(s||(t.TypeGuard=s={}));var a;(function(A){function k(M){return M[t.Kind]==="Intersect"?M.allOf.every(C=>k(C)):M[t.Kind]==="Union"?M.anyOf.some(C=>k(C)):M[t.Kind]==="Undefined"?!0:M[t.Kind]==="Not"?!k(M.not):!1}A.Check=k})(a||(t.ExtendsUndefined=a={}));class l extends n{}t.TypeExtendsError=l;var c;(function(A){A[A.Union=0]="Union",A[A.True=1]="True",A[A.False=2]="False"})(c||(t.TypeExtendsResult=c={}));var f;(function(A){function k(Y){return Y===c.False?Y:c.True}function M(Y){throw new l(Y)}function C(Y){return s.TNever(Y)||s.TIntersect(Y)||s.TUnion(Y)||s.TUnknown(Y)||s.TAny(Y)}function w(Y,Q){return s.TNever(Q)?Je():s.TIntersect(Q)?st(Y,Q):s.TUnion(Q)?Te(Y,Q):s.TUnknown(Q)?Nt():s.TAny(Q)?$():M("StructuralRight")}function $(Y,Q){return c.True}function O(Y,Q){return s.TIntersect(Q)?st(Y,Q):s.TUnion(Q)&&Q.anyOf.some(Rt=>s.TAny(Rt)||s.TUnknown(Rt))?c.True:s.TUnion(Q)?c.Union:s.TUnknown(Q)||s.TAny(Q)?c.True:c.Union}function N(Y,Q){return s.TUnknown(Y)?c.False:s.TAny(Y)?c.Union:s.TNever(Y)?c.True:c.False}function ie(Y,Q){return s.TObject(Q)&&Yn(Q)?c.True:C(Q)?w(Y,Q):s.TArray(Q)?k(vt(Y.items,Q.items)):c.False}function me(Y,Q){return C(Q)?w(Y,Q):s.TAsyncIterator(Q)?k(vt(Y.items,Q.items)):c.False}function le(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TBigInt(Q)?c.True:c.False}function ae(Y,Q){return s.TLiteral(Y)&&i.IsBoolean(Y.const)||s.TBoolean(Y)?c.True:c.False}function Ue(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TBoolean(Q)?c.True:c.False}function he(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TConstructor(Q)?Y.parameters.length>Q.parameters.length?c.False:Y.parameters.every((Rt,vn)=>k(vt(Q.parameters[vn],Rt))===c.True)?k(vt(Y.returns,Q.returns)):c.False:c.False}function je(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TDate(Q)?c.True:c.False}function Ze(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TFunction(Q)?Y.parameters.length>Q.parameters.length?c.False:Y.parameters.every((Rt,vn)=>k(vt(Q.parameters[vn],Rt))===c.True)?k(vt(Y.returns,Q.returns)):c.False:c.False}function ce(Y,Q){return s.TLiteral(Y)&&i.IsNumber(Y.const)||s.TNumber(Y)||s.TInteger(Y)?c.True:c.False}function He(Y,Q){return s.TInteger(Q)||s.TNumber(Q)?c.True:C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):c.False}function st(Y,Q){return Q.allOf.every(Rt=>vt(Y,Rt)===c.True)?c.True:c.False}function Ve(Y,Q){return Y.allOf.some(Rt=>vt(Rt,Q)===c.True)?c.True:c.False}function It(Y,Q){return C(Q)?w(Y,Q):s.TIterator(Q)?k(vt(Y.items,Q.items)):c.False}function tt(Y,Q){return s.TLiteral(Q)&&Q.const===Y.const?c.True:C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TString(Q)?en(Y):s.TNumber(Q)?oe(Y):s.TInteger(Q)?ce(Y):s.TBoolean(Q)?ae(Y):c.False}function Je(Y,Q){return c.False}function _e(Y,Q){return c.True}function ge(Y){let[Q,Rt]=[Y,0];for(;s.TNot(Q);)Q=Q.not,Rt+=1;return Rt%2===0?Q:t.Type.Unknown()}function Ie(Y,Q){return s.TNot(Y)?vt(ge(Y),Q):s.TNot(Q)?vt(Y,ge(Q)):M("Invalid fallthrough for Not")}function q(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TNull(Q)?c.True:c.False}function oe(Y,Q){return s.TLiteralNumber(Y)||s.TNumber(Y)||s.TInteger(Y)?c.True:c.False}function de(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TInteger(Q)||s.TNumber(Q)?c.True:c.False}function be(Y,Q){return Object.getOwnPropertyNames(Y.properties).length===Q}function Ee(Y){return Yn(Y)}function Fe(Y){return be(Y,0)||be(Y,1)&&"description"in Y.properties&&s.TUnion(Y.properties.description)&&Y.properties.description.anyOf.length===2&&(s.TString(Y.properties.description.anyOf[0])&&s.TUndefined(Y.properties.description.anyOf[1])||s.TString(Y.properties.description.anyOf[1])&&s.TUndefined(Y.properties.description.anyOf[0]))}function mt(Y){return be(Y,0)}function pt(Y){return be(Y,0)}function sn(Y){return be(Y,0)}function Hn(Y){return be(Y,0)}function Ft(Y){return Yn(Y)}function lt(Y){const Q=t.Type.Number();return be(Y,0)||be(Y,1)&&"length"in Y.properties&&k(vt(Y.properties.length,Q))===c.True}function qn(Y){return be(Y,0)}function Yn(Y){const Q=t.Type.Number();return be(Y,0)||be(Y,1)&&"length"in Y.properties&&k(vt(Y.properties.length,Q))===c.True}function pn(Y){const Q=t.Type.Function([t.Type.Any()],t.Type.Any());return be(Y,0)||be(Y,1)&&"then"in Y.properties&&k(vt(Y.properties.then,Q))===c.True}function an(Y,Q){return vt(Y,Q)===c.False||s.TOptional(Y)&&!s.TOptional(Q)?c.False:c.True}function tn(Y,Q){return s.TUnknown(Y)?c.False:s.TAny(Y)?c.Union:s.TNever(Y)||s.TLiteralString(Y)&&Ee(Q)||s.TLiteralNumber(Y)&&mt(Q)||s.TLiteralBoolean(Y)&&pt(Q)||s.TSymbol(Y)&&Fe(Q)||s.TBigInt(Y)&&sn(Q)||s.TString(Y)&&Ee(Q)||s.TSymbol(Y)&&Fe(Q)||s.TNumber(Y)&&mt(Q)||s.TInteger(Y)&&mt(Q)||s.TBoolean(Y)&&pt(Q)||s.TUint8Array(Y)&&Ft(Q)||s.TDate(Y)&&Hn(Q)||s.TConstructor(Y)&&qn(Q)||s.TFunction(Y)&&lt(Q)?c.True:s.TRecord(Y)&&s.TString(Xn(Y))?Q[t.Hint]==="Record"?c.True:c.False:s.TRecord(Y)&&s.TNumber(Xn(Y))?be(Q,0)?c.True:c.False:c.False}function or(Y,Q){return C(Q)?w(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TObject(Q)?(()=>{for(const Rt of Object.getOwnPropertyNames(Q.properties)){if(!(Rt in Y.properties)&&!s.TOptional(Q.properties[Rt]))return c.False;if(s.TOptional(Q.properties[Rt]))return c.True;if(an(Y.properties[Rt],Q.properties[Rt])===c.False)return c.False}return c.True})():c.False}function kn(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)&&pn(Q)?c.True:s.TPromise(Q)?k(vt(Y.item,Q.item)):c.False}function Xn(Y){return t.PatternNumberExact in Y.patternProperties?t.Type.Number():t.PatternStringExact in Y.patternProperties?t.Type.String():M("Unknown record key pattern")}function xe(Y){return t.PatternNumberExact in Y.patternProperties?Y.patternProperties[t.PatternNumberExact]:t.PatternStringExact in Y.patternProperties?Y.patternProperties[t.PatternStringExact]:M("Unable to get record value schema")}function Xe(Y,Q){const[Rt,vn]=[Xn(Q),xe(Q)];return s.TLiteralString(Y)&&s.TNumber(Rt)&&k(vt(Y,vn))===c.True?c.True:s.TUint8Array(Y)&&s.TNumber(Rt)||s.TString(Y)&&s.TNumber(Rt)||s.TArray(Y)&&s.TNumber(Rt)?vt(Y,vn):s.TObject(Y)?(()=>{for(const Bn of Object.getOwnPropertyNames(Y.properties))if(an(vn,Y.properties[Bn])===c.False)return c.False;return c.True})():c.False}function $t(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?vt(xe(Y),xe(Q)):c.False}function en(Y,Q){return s.TLiteral(Y)&&i.IsString(Y.const)||s.TString(Y)?c.True:c.False}function Ut(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TString(Q)?c.True:c.False}function $e(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TSymbol(Q)?c.True:c.False}function Qe(Y,Q){return s.TTemplateLiteral(Y)?vt(x.Resolve(Y),Q):s.TTemplateLiteral(Q)?vt(Y,x.Resolve(Q)):M("Invalid fallthrough for TemplateLiteral")}function J(Y,Q){return s.TArray(Q)&&Y.items!==void 0&&Y.items.every(Rt=>vt(Rt,Q.items)===c.True)}function G(Y,Q){return s.TNever(Y)?c.True:s.TUnknown(Y)?c.False:s.TAny(Y)?c.Union:c.False}function ne(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)&&Yn(Q)||s.TArray(Q)&&J(Y,Q)?c.True:s.TTuple(Q)?i.IsUndefined(Y.items)&&!i.IsUndefined(Q.items)||!i.IsUndefined(Y.items)&&i.IsUndefined(Q.items)?c.False:i.IsUndefined(Y.items)&&!i.IsUndefined(Q.items)||Y.items.every((Rt,vn)=>vt(Rt,Q.items[vn])===c.True)?c.True:c.False:c.False}function pe(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TUint8Array(Q)?c.True:c.False}function Se(Y,Q){return C(Q)?w(Y,Q):s.TObject(Q)?tn(Y,Q):s.TRecord(Q)?Xe(Y,Q):s.TVoid(Q)?Dn(Y):s.TUndefined(Q)?c.True:c.False}function Te(Y,Q){return Q.anyOf.some(Rt=>vt(Y,Rt)===c.True)?c.True:c.False}function kt(Y,Q){return Y.anyOf.every(Rt=>vt(Rt,Q)===c.True)?c.True:c.False}function Nt(Y,Q){return c.True}function nn(Y,Q){return s.TNever(Q)?Je():s.TIntersect(Q)?st(Y,Q):s.TUnion(Q)?Te(Y,Q):s.TAny(Q)?$():s.TString(Q)?en(Y):s.TNumber(Q)?oe(Y):s.TInteger(Q)?ce(Y):s.TBoolean(Q)?ae(Y):s.TArray(Q)?N(Y):s.TTuple(Q)?G(Y):s.TObject(Q)?tn(Y,Q):s.TUnknown(Q)?c.True:c.False}function Dn(Y,Q){return s.TUndefined(Y)||s.TUndefined(Y)?c.True:c.False}function Kn(Y,Q){return s.TIntersect(Q)?st(Y,Q):s.TUnion(Q)?Te(Y,Q):s.TUnknown(Q)?Nt():s.TAny(Q)?$():s.TObject(Q)?tn(Y,Q):s.TVoid(Q)?c.True:c.False}function vt(Y,Q){return s.TTemplateLiteral(Y)||s.TTemplateLiteral(Q)?Qe(Y,Q):s.TNot(Y)||s.TNot(Q)?Ie(Y,Q):s.TAny(Y)?O(Y,Q):s.TArray(Y)?ie(Y,Q):s.TBigInt(Y)?le(Y,Q):s.TBoolean(Y)?Ue(Y,Q):s.TAsyncIterator(Y)?me(Y,Q):s.TConstructor(Y)?he(Y,Q):s.TDate(Y)?je(Y,Q):s.TFunction(Y)?Ze(Y,Q):s.TInteger(Y)?He(Y,Q):s.TIntersect(Y)?Ve(Y,Q):s.TIterator(Y)?It(Y,Q):s.TLiteral(Y)?tt(Y,Q):s.TNever(Y)?_e():s.TNull(Y)?q(Y,Q):s.TNumber(Y)?de(Y,Q):s.TObject(Y)?or(Y,Q):s.TRecord(Y)?$t(Y,Q):s.TString(Y)?Ut(Y,Q):s.TSymbol(Y)?$e(Y,Q):s.TTuple(Y)?ne(Y,Q):s.TPromise(Y)?kn(Y,Q):s.TUint8Array(Y)?pe(Y,Q):s.TUndefined(Y)?Se(Y,Q):s.TUnion(Y)?kt(Y,Q):s.TUnknown(Y)?nn(Y,Q):s.TVoid(Y)?Kn(Y,Q):M(`Unknown left type operand '${Y[t.Kind]}'`)}function Cn(Y,Q){return vt(Y,Q)}A.Extends=Cn})(f||(t.TypeExtends=f={}));var u;(function(A){function k(ie){return ie.map(me=>$(me))}function M(ie){return new Date(ie.getTime())}function C(ie){return new Uint8Array(ie)}function w(ie){const me=Object.getOwnPropertyNames(ie).reduce((ae,Ue)=>({...ae,[Ue]:$(ie[Ue])}),{}),le=Object.getOwnPropertySymbols(ie).reduce((ae,Ue)=>({...ae,[Ue]:$(ie[Ue])}),{});return{...me,...le}}function $(ie){return i.IsArray(ie)?k(ie):i.IsDate(ie)?M(ie):i.IsUint8Array(ie)?C(ie):i.IsObject(ie)?w(ie):ie}function O(ie){return ie.map(me=>N(me))}A.Rest=O;function N(ie,me={}){return{...$(ie),...me}}A.Type=N})(u||(t.TypeClone=u={}));var d;(function(A){function k(he){return he.map(je=>{const{[t.Optional]:Ze,...ce}=u.Type(je);return ce})}function M(he){return he.every(je=>s.TOptional(je))}function C(he){return he.some(je=>s.TOptional(je))}function w(he){return M(he.allOf)?t.Type.Optional(t.Type.Intersect(k(he.allOf))):he}function $(he){return C(he.anyOf)?t.Type.Optional(t.Type.Union(k(he.anyOf))):he}function O(he){return he[t.Kind]==="Intersect"?w(he):he[t.Kind]==="Union"?$(he):he}function N(he,je){const Ze=he.allOf.reduce((ce,He)=>{const st=ae(He,je);return st[t.Kind]==="Never"?ce:[...ce,st]},[]);return O(t.Type.Intersect(Ze))}function ie(he,je){const Ze=he.anyOf.map(ce=>ae(ce,je));return O(t.Type.Union(Ze))}function me(he,je){const Ze=he.properties[je];return i.IsUndefined(Ze)?t.Type.Never():t.Type.Union([Ze])}function le(he,je){const Ze=he.items;if(i.IsUndefined(Ze))return t.Type.Never();const ce=Ze[je];return i.IsUndefined(ce)?t.Type.Never():ce}function ae(he,je){return he[t.Kind]==="Intersect"?N(he,je):he[t.Kind]==="Union"?ie(he,je):he[t.Kind]==="Object"?me(he,je):he[t.Kind]==="Tuple"?le(he,je):t.Type.Never()}function Ue(he,je,Ze={}){const ce=je.map(He=>ae(he,He.toString()));return O(t.Type.Union(ce,Ze))}A.Resolve=Ue})(d||(t.IndexedAccessor=d={}));var h;(function(A){function k(le){const[ae,Ue]=[le.slice(0,1),le.slice(1)];return`${ae.toLowerCase()}${Ue}`}function M(le){const[ae,Ue]=[le.slice(0,1),le.slice(1)];return`${ae.toUpperCase()}${Ue}`}function C(le){return le.toUpperCase()}function w(le){return le.toLowerCase()}function $(le,ae){const Ue=E.ParseExact(le.pattern);if(!L.Check(Ue))return{...le,pattern:O(le.pattern,ae)};const Ze=[...V.Generate(Ue)].map(st=>t.Type.Literal(st)),ce=N(Ze,ae),He=t.Type.Union(ce);return t.Type.TemplateLiteral([He])}function O(le,ae){return typeof le=="string"?ae==="Uncapitalize"?k(le):ae==="Capitalize"?M(le):ae==="Uppercase"?C(le):ae==="Lowercase"?w(le):le:le.toString()}function N(le,ae){if(le.length===0)return[];const[Ue,...he]=le;return[me(Ue,ae),...N(he,ae)]}function ie(le,ae){return s.TTemplateLiteral(le)?$(le,ae):s.TUnion(le)?t.Type.Union(N(le.anyOf,ae)):s.TLiteral(le)?t.Type.Literal(O(le.const,ae)):le}function me(le,ae){return ie(le,ae)}A.Map=me})(h||(t.Intrinsic=h={}));var p;(function(A){function k(O,N){return t.Type.Intersect(O.allOf.map(ie=>w(ie,N)),{...O})}function M(O,N){return t.Type.Union(O.anyOf.map(ie=>w(ie,N)),{...O})}function C(O,N){return N(O)}function w(O,N){return O[t.Kind]==="Intersect"?k(O,N):O[t.Kind]==="Union"?M(O,N):O[t.Kind]==="Object"?C(O,N):O}function $(O,N,ie){return{...w(u.Type(O),N),...ie}}A.Map=$})(p||(t.ObjectMap=p={}));var m;(function(A){function k(me){return me[0]==="^"&&me[me.length-1]==="$"?me.slice(1,me.length-1):me}function M(me,le){return me.allOf.reduce((ae,Ue)=>[...ae,...O(Ue,le)],[])}function C(me,le){const ae=me.anyOf.map(Ue=>O(Ue,le));return[...ae.reduce((Ue,he)=>he.map(je=>ae.every(Ze=>Ze.includes(je))?Ue.add(je):Ue)[0],new Set)]}function w(me,le){return Object.getOwnPropertyNames(me.properties)}function $(me,le){return le.includePatterns?Object.getOwnPropertyNames(me.patternProperties):[]}function O(me,le){return s.TIntersect(me)?M(me,le):s.TUnion(me)?C(me,le):s.TObject(me)?w(me):s.TRecord(me)?$(me,le):[]}function N(me,le){return[...new Set(O(me,le))]}A.ResolveKeys=N;function ie(me){return`^(${N(me,{includePatterns:!0}).map(Ue=>`(${k(Ue)})`).join("|")})$`}A.ResolvePattern=ie})(m||(t.KeyResolver=m={}));class y extends n{}t.KeyArrayResolverError=y;var v;(function(A){function k(M){return Array.isArray(M)?M:s.TUnionLiteral(M)?M.anyOf.map(C=>C.const.toString()):s.TLiteral(M)?[M.const]:s.TTemplateLiteral(M)?(()=>{const C=E.ParseExact(M.pattern);if(!L.Check(C))throw new y("Cannot resolve keys from infinite template expression");return[...V.Generate(C)]})():[]}A.Resolve=k})(v||(t.KeyArrayResolver=v={}));var b;(function(A){function*k(C){for(const w of C.anyOf)w[t.Kind]==="Union"?yield*k(w):yield w}function M(C){return t.Type.Union([...k(C)],{...C})}A.Resolve=M})(b||(t.UnionResolver=b={}));class S extends n{}t.TemplateLiteralPatternError=S;var _;(function(A){function k($){throw new S($)}function M($){return $.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function C($,O){return s.TTemplateLiteral($)?$.pattern.slice(1,$.pattern.length-1):s.TUnion($)?`(${$.anyOf.map(N=>C(N,O)).join("|")})`:s.TNumber($)?`${O}${t.PatternNumber}`:s.TInteger($)?`${O}${t.PatternNumber}`:s.TBigInt($)?`${O}${t.PatternNumber}`:s.TString($)?`${O}${t.PatternString}`:s.TLiteral($)?`${O}${M($.const.toString())}`:s.TBoolean($)?`${O}${t.PatternBoolean}`:k(`Unexpected Kind '${$[t.Kind]}'`)}function w($){return`^${$.map(O=>C(O,"")).join("")}$`}A.Create=w})(_||(t.TemplateLiteralPattern=_={}));var x;(function(A){function k(M){const C=E.ParseExact(M.pattern);if(!L.Check(C))return t.Type.String();const w=[...V.Generate(C)].map($=>t.Type.Literal($));return t.Type.Union(w)}A.Resolve=k})(x||(t.TemplateLiteralResolver=x={}));class T extends n{}t.TemplateLiteralParserError=T;var E;(function(A){function k(he,je,Ze){return he[je]===Ze&&he.charCodeAt(je-1)!==92}function M(he,je){return k(he,je,"(")}function C(he,je){return k(he,je,")")}function w(he,je){return k(he,je,"|")}function $(he){if(!(M(he,0)&&C(he,he.length-1)))return!1;let je=0;for(let Ze=0;Ze<he.length;Ze++)if(M(he,Ze)&&(je+=1),C(he,Ze)&&(je-=1),je===0&&Ze!==he.length-1)return!1;return!0}function O(he){return he.slice(1,he.length-1)}function N(he){let je=0;for(let Ze=0;Ze<he.length;Ze++)if(M(he,Ze)&&(je+=1),C(he,Ze)&&(je-=1),w(he,Ze)&&je===0)return!0;return!1}function ie(he){for(let je=0;je<he.length;je++)if(M(he,je))return!0;return!1}function me(he){let[je,Ze]=[0,0];const ce=[];for(let st=0;st<he.length;st++)if(M(he,st)&&(je+=1),C(he,st)&&(je-=1),w(he,st)&&je===0){const Ve=he.slice(Ze,st);Ve.length>0&&ce.push(ae(Ve)),Ze=st+1}const He=he.slice(Ze);return He.length>0&&ce.push(ae(He)),ce.length===0?{type:"const",const:""}:ce.length===1?ce[0]:{type:"or",expr:ce}}function le(he){function je(He,st){if(!M(He,st))throw new T("TemplateLiteralParser: Index must point to open parens");let Ve=0;for(let It=st;It<He.length;It++)if(M(He,It)&&(Ve+=1),C(He,It)&&(Ve-=1),Ve===0)return[st,It];throw new T("TemplateLiteralParser: Unclosed group parens in expression")}function Ze(He,st){for(let Ve=st;Ve<He.length;Ve++)if(M(He,Ve))return[st,Ve];return[st,He.length]}const ce=[];for(let He=0;He<he.length;He++)if(M(he,He)){const[st,Ve]=je(he,He),It=he.slice(st,Ve+1);ce.push(ae(It)),He=Ve}else{const[st,Ve]=Ze(he,He),It=he.slice(st,Ve);It.length>0&&ce.push(ae(It)),He=Ve-1}return ce.length===0?{type:"const",const:""}:ce.length===1?ce[0]:{type:"and",expr:ce}}function ae(he){return $(he)?ae(O(he)):N(he)?me(he):ie(he)?le(he):{type:"const",const:he}}A.Parse=ae;function Ue(he){return ae(he.slice(1,he.length-1))}A.ParseExact=Ue})(E||(t.TemplateLiteralParser=E={}));class R extends n{}t.TemplateLiteralFiniteError=R;var L;(function(A){function k(O){throw new R(O)}function M(O){return O.type==="or"&&O.expr.length===2&&O.expr[0].type==="const"&&O.expr[0].const==="0"&&O.expr[1].type==="const"&&O.expr[1].const==="[1-9][0-9]*"}function C(O){return O.type==="or"&&O.expr.length===2&&O.expr[0].type==="const"&&O.expr[0].const==="true"&&O.expr[1].type==="const"&&O.expr[1].const==="false"}function w(O){return O.type==="const"&&O.const===".*"}function $(O){return C(O)?!0:M(O)||w(O)?!1:O.type==="and"?O.expr.every(N=>$(N)):O.type==="or"?O.expr.every(N=>$(N)):O.type==="const"?!0:k("Unknown expression type")}A.Check=$})(L||(t.TemplateLiteralFinite=L={}));class B extends n{}t.TemplateLiteralGeneratorError=B;var V;(function(A){function*k(O){if(O.length===1)return yield*O[0];for(const N of O[0])for(const ie of k(O.slice(1)))yield`${N}${ie}`}function*M(O){return yield*k(O.expr.map(N=>[...$(N)]))}function*C(O){for(const N of O.expr)yield*$(N)}function*w(O){return yield O.const}function*$(O){return O.type==="and"?yield*M(O):O.type==="or"?yield*C(O):O.type==="const"?yield*w(O):(()=>{throw new B("Unknown expression")})()}A.Generate=$})(V||(t.TemplateLiteralGenerator=V={}));var D;(function(A){function*k($){const O=$.trim().replace(/"|'/g,"");return O==="boolean"?yield t.Type.Boolean():O==="number"?yield t.Type.Number():O==="bigint"?yield t.Type.BigInt():O==="string"?yield t.Type.String():yield(()=>{const N=O.split("|").map(ie=>t.Type.Literal(ie.trim()));return N.length===0?t.Type.Never():N.length===1?N[0]:t.Type.Union(N)})()}function*M($){if($[1]!=="{"){const O=t.Type.Literal("$"),N=C($.slice(1));return yield*[O,...N]}for(let O=2;O<$.length;O++)if($[O]==="}"){const N=k($.slice(2,O)),ie=C($.slice(O+1));return yield*[...N,...ie]}yield t.Type.Literal($)}function*C($){for(let O=0;O<$.length;O++)if($[O]==="$"){const N=t.Type.Literal($.slice(0,O)),ie=M($.slice(O));return yield*[N,...ie]}yield t.Type.Literal($)}function w($){return[...C($)]}A.Parse=w})(D||(t.TemplateLiteralDslParser=D={}));class U{constructor(k){this.schema=k}Decode(k){return new F(this.schema,k)}}t.TransformDecodeBuilder=U;class F{constructor(k,M){this.schema=k,this.decode=M}Encode(k){const M=u.Type(this.schema);return s.TTransform(M)?(()=>{const $={Encode:O=>M[t.Transform].Encode(k(O)),Decode:O=>this.decode(M[t.Transform].Decode(O))};return{...M,[t.Transform]:$}})():(()=>{const C={Decode:this.decode,Encode:k};return{...M,[t.Transform]:C}})()}}t.TransformEncodeBuilder=F;let se=0;class X extends n{}t.TypeBuilderError=X;class Z{Create(k){return k}Throw(k){throw new X(k)}Discard(k,M){return M.reduce((C,w)=>{const{[w]:$,...O}=C;return O},k)}Strict(k){return JSON.parse(JSON.stringify(k))}}t.TypeBuilder=Z;class z extends Z{ReadonlyOptional(k){return this.Readonly(this.Optional(k))}Readonly(k){return{...u.Type(k),[t.Readonly]:"Readonly"}}Optional(k){return{...u.Type(k),[t.Optional]:"Optional"}}Any(k={}){return this.Create({...k,[t.Kind]:"Any"})}Array(k,M={}){return this.Create({...M,[t.Kind]:"Array",type:"array",items:u.Type(k)})}Boolean(k={}){return this.Create({...k,[t.Kind]:"Boolean",type:"boolean"})}Capitalize(k,M={}){return{...h.Map(u.Type(k),"Capitalize"),...M}}Composite(k,M){const C=t.Type.Intersect(k,{}),$=m.ResolveKeys(C,{includePatterns:!1}).reduce((O,N)=>({...O,[N]:t.Type.Index(C,[N])}),{});return t.Type.Object($,M)}Enum(k,M={}){if(i.IsUndefined(k))return this.Throw("Enum undefined or empty");const C=Object.getOwnPropertyNames(k).filter(O=>isNaN(O)).map(O=>k[O]),$=[...new Set(C)].map(O=>t.Type.Literal(O));return this.Union($,{...M,[t.Hint]:"Enum"})}Extends(k,M,C,w,$={}){switch(f.Extends(k,M)){case c.Union:return this.Union([u.Type(C,$),u.Type(w,$)]);case c.True:return u.Type(C,$);case c.False:return u.Type(w,$)}}Exclude(k,M,C={}){return s.TTemplateLiteral(k)?this.Exclude(x.Resolve(k),M,C):s.TTemplateLiteral(M)?this.Exclude(k,x.Resolve(M),C):s.TUnion(k)?(()=>{const w=k.anyOf.filter($=>f.Extends($,M)===c.False);return w.length===1?u.Type(w[0],C):this.Union(w,C)})():f.Extends(k,M)!==c.False?this.Never(C):u.Type(k,C)}Extract(k,M,C={}){return s.TTemplateLiteral(k)?this.Extract(x.Resolve(k),M,C):s.TTemplateLiteral(M)?this.Extract(k,x.Resolve(M),C):s.TUnion(k)?(()=>{const w=k.anyOf.filter($=>f.Extends($,M)!==c.False);return w.length===1?u.Type(w[0],C):this.Union(w,C)})():f.Extends(k,M)!==c.False?u.Type(k,C):this.Never(C)}Index(k,M,C={}){return s.TArray(k)&&s.TNumber(M)?u.Type(k.items,C):s.TTuple(k)&&s.TNumber(M)?(()=>{const $=(i.IsUndefined(k.items)?[]:k.items).map(O=>u.Type(O));return this.Union($,C)})():(()=>{const w=v.Resolve(M),$=u.Type(k);return d.Resolve($,w,C)})()}Integer(k={}){return this.Create({...k,[t.Kind]:"Integer",type:"integer"})}Intersect(k,M={}){if(k.length===0)return t.Type.Never();if(k.length===1)return u.Type(k[0],M);k.some(O=>s.TTransform(O))&&this.Throw("Cannot intersect transform types");const C=k.every(O=>s.TObject(O)),w=u.Rest(k),$=s.TSchema(M.unevaluatedProperties)?{unevaluatedProperties:u.Type(M.unevaluatedProperties)}:{};return M.unevaluatedProperties===!1||s.TSchema(M.unevaluatedProperties)||C?this.Create({...M,...$,[t.Kind]:"Intersect",type:"object",allOf:w}):this.Create({...M,...$,[t.Kind]:"Intersect",allOf:w})}KeyOf(k,M={}){return s.TRecord(k)?(()=>{const C=Object.getOwnPropertyNames(k.patternProperties)[0];return C===t.PatternNumberExact?this.Number(M):C===t.PatternStringExact?this.String(M):this.Throw("Unable to resolve key type from Record key pattern")})():s.TTuple(k)?(()=>{const w=(i.IsUndefined(k.items)?[]:k.items).map(($,O)=>t.Type.Literal(O.toString()));return this.Union(w,M)})():s.TArray(k)?this.Number(M):(()=>{const C=m.ResolveKeys(k,{includePatterns:!1});if(C.length===0)return this.Never(M);const w=C.map($=>this.Literal($));return this.Union(w,M)})()}Literal(k,M={}){return this.Create({...M,[t.Kind]:"Literal",const:k,type:typeof k})}Lowercase(k,M={}){return{...h.Map(u.Type(k),"Lowercase"),...M}}Never(k={}){return this.Create({...k,[t.Kind]:"Never",not:{}})}Not(k,M){return this.Create({...M,[t.Kind]:"Not",not:u.Type(k)})}Null(k={}){return this.Create({...k,[t.Kind]:"Null",type:"null"})}Number(k={}){return this.Create({...k,[t.Kind]:"Number",type:"number"})}Object(k,M={}){const C=Object.getOwnPropertyNames(k),w=C.filter(ie=>s.TOptional(k[ie])),$=C.filter(ie=>!w.includes(ie)),O=s.TSchema(M.additionalProperties)?{additionalProperties:u.Type(M.additionalProperties)}:{},N=C.reduce((ie,me)=>({...ie,[me]:u.Type(k[me])}),{});return $.length>0?this.Create({...M,...O,[t.Kind]:"Object",type:"object",properties:N,required:$}):this.Create({...M,...O,[t.Kind]:"Object",type:"object",properties:N})}Omit(k,M,C={}){const w=v.Resolve(M);return p.Map(this.Discard(u.Type(k),["$id",t.Transform]),$=>{i.IsArray($.required)&&($.required=$.required.filter(O=>!w.includes(O)),$.required.length===0&&delete $.required);for(const O of Object.getOwnPropertyNames($.properties))w.includes(O)&&delete $.properties[O];return this.Create($)},C)}Partial(k,M={}){return p.Map(this.Discard(u.Type(k),["$id",t.Transform]),C=>{const w=Object.getOwnPropertyNames(C.properties).reduce(($,O)=>({...$,[O]:this.Optional(C.properties[O])}),{});return this.Object(w,this.Discard(C,["required"]))},M)}Pick(k,M,C={}){const w=v.Resolve(M);return p.Map(this.Discard(u.Type(k),["$id",t.Transform]),$=>{i.IsArray($.required)&&($.required=$.required.filter(O=>w.includes(O)),$.required.length===0&&delete $.required);for(const O of Object.getOwnPropertyNames($.properties))w.includes(O)||delete $.properties[O];return this.Create($)},C)}Record(k,M,C={}){return s.TTemplateLiteral(k)?(()=>{const w=E.ParseExact(k.pattern);return L.Check(w)?this.Object([...V.Generate(w)].reduce(($,O)=>({...$,[O]:u.Type(M)}),{}),C):this.Create({...C,[t.Kind]:"Record",type:"object",patternProperties:{[k.pattern]:u.Type(M)}})})():s.TUnion(k)?(()=>{const w=b.Resolve(k);if(s.TUnionLiteral(w)){const $=w.anyOf.reduce((O,N)=>({...O,[N.const]:u.Type(M)}),{});return this.Object($,{...C,[t.Hint]:"Record"})}else this.Throw("Record key of type union contains non-literal types")})():s.TLiteral(k)?i.IsString(k.const)||i.IsNumber(k.const)?this.Object({[k.const]:u.Type(M)},C):this.Throw("Record key of type literal is not of type string or number"):s.TInteger(k)||s.TNumber(k)?this.Create({...C,[t.Kind]:"Record",type:"object",patternProperties:{[t.PatternNumberExact]:u.Type(M)}}):s.TString(k)?(()=>{const w=i.IsUndefined(k.pattern)?t.PatternStringExact:k.pattern;return this.Create({...C,[t.Kind]:"Record",type:"object",patternProperties:{[w]:u.Type(M)}})})():this.Never()}Recursive(k,M={}){i.IsUndefined(M.$id)&&(M.$id=`T${se++}`);const C=k({[t.Kind]:"This",$ref:`${M.$id}`});return C.$id=M.$id,this.Create({...M,[t.Hint]:"Recursive",...C})}Ref(k,M={}){return i.IsString(k)?this.Create({...M,[t.Kind]:"Ref",$ref:k}):(i.IsUndefined(k.$id)&&this.Throw("Reference target type must specify an $id"),this.Create({...M,[t.Kind]:"Ref",$ref:k.$id}))}Required(k,M={}){return p.Map(this.Discard(u.Type(k),["$id",t.Transform]),C=>{const w=Object.getOwnPropertyNames(C.properties).reduce(($,O)=>({...$,[O]:this.Discard(C.properties[O],[t.Optional])}),{});return this.Object(w,C)},M)}Rest(k){return s.TTuple(k)&&!i.IsUndefined(k.items)?u.Rest(k.items):s.TIntersect(k)?u.Rest(k.allOf):s.TUnion(k)?u.Rest(k.anyOf):[]}String(k={}){return this.Create({...k,[t.Kind]:"String",type:"string"})}TemplateLiteral(k,M={}){const C=i.IsString(k)?_.Create(D.Parse(k)):_.Create(k);return this.Create({...M,[t.Kind]:"TemplateLiteral",type:"string",pattern:C})}Transform(k){return new U(k)}Tuple(k,M={}){const[C,w,$]=[!1,k.length,k.length],O=u.Rest(k),N=k.length>0?{...M,[t.Kind]:"Tuple",type:"array",items:O,additionalItems:C,minItems:w,maxItems:$}:{...M,[t.Kind]:"Tuple",type:"array",minItems:w,maxItems:$};return this.Create(N)}Uncapitalize(k,M={}){return{...h.Map(u.Type(k),"Uncapitalize"),...M}}Union(k,M={}){return s.TTemplateLiteral(k)?x.Resolve(k):(()=>{const C=k;if(C.length===0)return this.Never(M);if(C.length===1)return this.Create(u.Type(C[0],M));const w=u.Rest(C);return this.Create({...M,[t.Kind]:"Union",anyOf:w})})()}Unknown(k={}){return this.Create({...k,[t.Kind]:"Unknown"})}Unsafe(k={}){return this.Create({...k,[t.Kind]:k[t.Kind]||"Unsafe"})}Uppercase(k,M={}){return{...h.Map(u.Type(k),"Uppercase"),...M}}}t.JsonTypeBuilder=z;class W extends z{AsyncIterator(k,M={}){return this.Create({...M,[t.Kind]:"AsyncIterator",type:"AsyncIterator",items:u.Type(k)})}Awaited(k,M={}){const C=w=>w.length>0?(()=>{const[$,...O]=w;return[this.Awaited($),...C(O)]})():w;return s.TIntersect(k)?t.Type.Intersect(C(k.allOf)):s.TUnion(k)?t.Type.Union(C(k.anyOf)):s.TPromise(k)?this.Awaited(k.item):u.Type(k,M)}BigInt(k={}){return this.Create({...k,[t.Kind]:"BigInt",type:"bigint"})}ConstructorParameters(k,M={}){return this.Tuple([...k.parameters],{...M})}Constructor(k,M,C){const[w,$]=[u.Rest(k),u.Type(M)];return this.Create({...C,[t.Kind]:"Constructor",type:"Constructor",parameters:w,returns:$})}Date(k={}){return this.Create({...k,[t.Kind]:"Date",type:"Date"})}Function(k,M,C){const[w,$]=[u.Rest(k),u.Type(M)];return this.Create({...C,[t.Kind]:"Function",type:"Function",parameters:w,returns:$})}InstanceType(k,M={}){return u.Type(k.returns,M)}Iterator(k,M={}){return this.Create({...M,[t.Kind]:"Iterator",type:"Iterator",items:u.Type(k)})}Parameters(k,M={}){return this.Tuple(k.parameters,{...M})}Promise(k,M={}){return this.Create({...M,[t.Kind]:"Promise",type:"Promise",item:u.Type(k)})}RegExp(k,M={}){const C=i.IsString(k)?k:k.source;return this.Create({...M,[t.Kind]:"String",type:"string",pattern:C})}RegEx(k,M={}){return this.RegExp(k,M)}ReturnType(k,M={}){return u.Type(k.returns,M)}Symbol(k){return this.Create({...k,[t.Kind]:"Symbol",type:"symbol"})}Undefined(k={}){return this.Create({...k,[t.Kind]:"Undefined",type:"undefined"})}Uint8Array(k={}){return this.Create({...k,[t.Kind]:"Uint8Array",type:"Uint8Array"})}Void(k={}){return this.Create({...k,[t.Kind]:"Void",type:"void"})}}t.JavaScriptTypeBuilder=W,t.JsonType=new z,t.Type=new W})(j);const xD=j.Type.Object({prefix:j.Type.Optional(j.Type.String()),suffix:j.Type.Optional(j.Type.String()),volume:j.Type.Optional(j.Type.Number())}),o$=j.Type.Object({soundOnNewLine:j.Type.Optional(j.Type.String()),soundPerLetter:j.Type.Optional(xD)}),$D=j.Type.Object({defaultAudio:j.Type.Optional(o$),characterAudio:j.Type.Optional(j.Type.Record(j.Type.String(),o$))}),_D=j.Type.Object({src:j.Type.String(),path:j.Type.Optional(j.Type.String()),volume:j.Type.Optional(j.Type.Number()),rate:j.Type.Optional(j.Type.Number()),html5:j.Type.Optional(j.Type.Boolean()),fadeInTime:j.Type.Optional(j.Type.Number()),fadeInDelay:j.Type.Optional(j.Type.Number()),fadeOutTime:j.Type.Optional(j.Type.Number()),loop:j.Type.Optional(j.Type.Boolean())}),jD=j.Type.Record(j.Type.String(),_D),CD=j.Type.Object({volume:j.Type.Optional(j.Type.Number()),defaultMusic:j.Type.Optional(j.Type.String()),musicFadeInTime:j.Type.Optional(j.Type.Number()),musicFadeOutTime:j.Type.Optional(j.Type.Number()),musicFadeInDelay:j.Type.Optional(j.Type.Number())}),TD=j.Type.Record(j.Type.String(),j.Type.String()),s$=j.Type.Object({files:jD,audioTriggers:TD,options:CD,dialogAudio:j.Type.Optional($D)}),a$={files:{},audioTriggers:{},options:{volume:1,musicFadeInTime:.5,musicFadeInDelay:.5,musicFadeOutTime:.5}},l$=j.Type.Object({backgrounds:j.Type.Object({width:j.Type.Number(),height:j.Type.Number()}),dialogBottomPadding:j.Type.Union([j.Type.Number(),j.Type.String()]),minTextWidth:j.Type.Optional(j.Type.Number()),verticalLayoutThreshold:j.Type.Number(),defaultFontSize:j.Type.Optional(j.Type.Number()),portraits:j.Type.Object({width:j.Type.Number(),height:j.Type.Number(),offset:j.Type.Optional(j.Type.Object({landscape:j.Type.Optional(j.Type.Object({right:j.Type.Number(),bottom:j.Type.Number()})),portrait:j.Type.Optional(j.Type.Object({right:j.Type.Number(),bottom:j.Type.Number()}))}))})}),OD={backgrounds:{width:880,height:720},dialogBottomPadding:70,verticalLayoutThreshold:600,defaultFontSize:16,portraits:{width:100,height:100}},$p=j.Type.Object({name:j.Type.String(),description:j.Type.Optional(j.Type.String())}),ED=j.Type.Intersect([$p,j.Type.Object({type:j.Type.Literal("number"),defaultValue:j.Type.Number(),step:j.Type.Number(),minValue:j.Type.Number(),maxValue:j.Type.Number()})]),AD=j.Type.Intersect([$p,j.Type.Object({type:j.Type.Literal("integer"),defaultValue:j.Type.Number(),step:j.Type.Number(),minValue:j.Type.Number(),maxValue:j.Type.Number()})]),PD=j.Type.Intersect([$p,j.Type.Object({type:j.Type.Literal("boolean"),defaultValue:j.Type.Boolean()})]),MD=j.Type.Intersect([$p,j.Type.Object({type:j.Type.Literal("string"),defaultValue:j.Type.String()})]),ID=j.Type.Union([ED,AD,PD,MD]);function ND(t){return t.type==="number"}function c$(t){return t.type==="integer"}function RD(t){return t.type==="boolean"}function LD(t){return t.type==="string"}const u$=j.Type.Object({customSettings:j.Type.Optional(j.Type.Record(j.Type.String(),ID))});var dl=(t=>(t[t.ERROR=3]="ERROR",t[t.WARN=2]="WARN",t[t.INFO=1]="INFO",t[t.DEBUG=0]="DEBUG",t[t.NONE=-1]="NONE",t))(dl||{});const _p="###_--_~=:;_JUMP",oy="###_--_~=:;_RETURN",DD="###_--_~=:;_OK",jp="###_--_~=:;_STOP";function BD(t){return t===_p||t===oy||t===DD||t===jp}const FD="3.17.4",VD=new Date("2025-07-05T13:54:19.307Z"),f$={branch:"main",commit:"df00d71f270b0d70acf192197e7faaea22f24afa"},zD=dl.WARN,qD=400,Cp=20,Tp="@empty",d$={background:Tp},UD=j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.Union([j.Type.String(),j.Type.Boolean()]))),h$=j.Type.Optional(j.Type.Object({animateText:j.Type.Optional(j.Type.Boolean()),textSpeed:j.Type.Optional(j.Type.Number()),timeBetweenLines:j.Type.Optional(j.Type.Number()),overlayMode:j.Type.Optional(j.Type.Boolean()),rightOffset:j.Type.Optional(j.Type.Number()),bottomOffset:j.Type.Optional(j.Type.Number()),width:j.Type.Optional(j.Type.Number()),height:j.Type.Optional(j.Type.Number()),hideDuringTransition:j.Type.Optional(j.Type.Boolean()),historyLength:j.Type.Optional(j.Type.Number()),allowHistoryToggling:j.Type.Optional(j.Type.Boolean()),showAfterScriptEnd:j.Type.Optional(j.Type.Boolean())})),p$=j.Type.Object({engineSplashScreen:j.Type.Optional(j.Type.Object({skip:j.Type.Optional(j.Type.Boolean()),fadeDuration:j.Type.Optional(j.Type.Number()),timeBeforeFadeout:j.Type.Optional(j.Type.Number()),overrideText:j.Type.Optional(j.Type.String()),overrideLogo:j.Type.Optional(j.Type.String())})),gameSplashScreen:j.Type.Optional(j.Type.Object({startButtonText:j.Type.Optional(j.Type.String())}))}),m$=j.Type.Object({timeOnScreen:j.Type.Number(),alsoPrintInDialogue:j.Type.Optional(j.Type.Boolean())}),HD=j.Type.Object({name:j.Type.String(),icon:j.Type.String(),startingValue:j.Type.Number(),maxValue:j.Type.Optional(j.Type.Number()),minValue:j.Type.Optional(j.Type.Number()),decimals:j.Type.Optional(j.Type.Number()),prefix:j.Type.Optional(j.Type.String()),suffix:j.Type.Optional(j.Type.String()),hideName:j.Type.Optional(j.Type.Boolean()),formatting:j.Type.Optional(j.Type.Object({style:j.Type.Union([j.Type.Literal("decimal"),j.Type.Literal("currency"),j.Type.Literal("percent"),j.Type.Literal("unit")]),currency:j.Type.Optional(j.Type.String()),unit:j.Type.Optional(j.Type.String())}))}),g$=j.Type.Record(j.Type.String(),HD),v$=j.Type.Record(j.Type.String(),j.Type.Object({onlyInteractOutsideOfScripts:j.Type.Optional(j.Type.Boolean())})),KD=j.Type.Object({delay:j.Type.Optional(j.Type.Number()),duration:j.Type.Optional(j.Type.Number())}),y$=j.Type.Record(j.Type.String(),KD),WD=j.Type.Object({text:j.Type.String(),cssClass:j.Type.Optional(j.Type.String())}),b$=j.Type.Record(j.Type.String(),WD),w$=j.Type.Object({showScriptFinishedMessage:j.Type.Optional(j.Type.Boolean())}),S$=j.Type.Object({mode:j.Type.String(),slots:j.Type.Number(),runOnReload:j.Type.Optional(j.Type.String()),disabled:j.Type.Optional(j.Type.Boolean()),autosaveDisabledOnLabels:j.Type.Optional(j.Type.Array(j.Type.String())),autosaveFeedback:j.Type.Optional(j.Type.Object({enabled:j.Type.Boolean(),text:j.Type.Optional(j.Type.String()),backgroundImage:j.Type.Optional(j.Type.String()),foregroundImage:j.Type.Optional(j.Type.String()),duration:j.Type.Number()})),allowManualSave:j.Type.Optional(j.Type.Boolean())}),k$=j.Type.Object({allowFullscreen:j.Type.Optional(j.Type.Boolean())}),x$=j.Type.Array(j.Type.String()),GD=[],JD=j.Type.Object({startMenuScene:j.Type.Optional(j.Type.String()),gameScene:j.Type.Optional(j.Type.String()),gameSplashScene:j.Type.Optional(j.Type.String())}),$$=j.Type.Object({showPromptsOnKeyboard:j.Type.Optional(j.Type.Boolean()),showPromptsOnGamepad:j.Type.Optional(j.Type.Boolean()),showBottomLegend:j.Type.Optional(j.Type.Boolean())}),_$=j.Type.Object({baseAssetsPath:j.Type.Optional(j.Type.String()),baseDataPath:j.Type.Optional(j.Type.String()),gameTitle:j.Type.String(),saveFileName:j.Type.String(),images:j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.String())),layout:l$,settings:j.Type.Optional(u$),graphics:j.Type.Optional(k$),gameFlow:j.Type.Optional(j.Type.Object({labelToJumpOnScriptEnd:j.Type.Optional(j.Type.String())})),dialogPanel:j.Type.Optional(h$),splashScreens:j.Type.Optional(p$),notifications:j.Type.Optional(m$),hudStats:g$,interactionTags:j.Type.Optional(v$),transitions:j.Type.Optional(y$),menuButtons:j.Type.Optional(b$),debugging:j.Type.Optional(w$),saves:j.Type.Optional(S$),input:j.Type.Optional($$),hotkeys:UD,scenes:j.Type.Optional(JD)}),sy={baseAssetsPath:"",baseDataPath:"",gameTitle:"Narrat Game",saveFileName:"narrat save",images:{},layout:OD,settings:{},graphics:{},gameFlow:{},dialogPanel:{overlayMode:!0,rightOffset:100,bottomOffset:50,width:475,height:680,textSpeed:Cp,animateText:!0,timeBetweenLines:100,hideDuringTransition:!1,showAfterScriptEnd:!1},splashScreens:{},notifications:{timeOnScreen:2.5,alsoPrintInDialogue:!1},hudStats:{},interactionTags:{default:{onlyInteractOutsideOfScripts:!0}},transitions:{},menuButtons:{},debugging:{showScriptFinishedMessage:!1},saves:{mode:"manual",slots:10},input:{showPromptsOnKeyboard:!0,showPromptsOnGamepad:!0,showBottomLegend:!0},hotkeys:{},scenes:{}},QD=j.Type.Object({name:j.Type.String(),description:j.Type.String(),icon:j.Type.String(),onUse:j.Type.Optional(j.Type.Object({action:j.Type.String(),label:j.Type.String()})),tag:j.Type.Optional(j.Type.String()),category:j.Type.Optional(j.Type.String()),showIfEmpty:j.Type.Optional(j.Type.Boolean())}),j$=j.Type.Object({id:j.Type.String(),title:j.Type.String()}),C$=j.Type.Record(j.Type.String(),QD);j.Type.Object({categories:j.Type.Array(j$),items:C$});const T$=j.Type.Object({categories:j.Type.Optional(j.Type.Array(j$)),items:j.Type.Optional(C$)}),O$={categories:[{id:"default",title:"Items"}],items:{}},YD=j.Type.Object({description:j.Type.String(),succeededDescription:j.Type.Optional(j.Type.String()),failedDescription:j.Type.Optional(j.Type.String()),hidden:j.Type.Optional(j.Type.Boolean())}),XD=j.Type.Object({title:j.Type.String(),description:j.Type.String(),succeededDescription:j.Type.Optional(j.Type.String()),failedDescription:j.Type.Optional(j.Type.String()),endings:j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.Object({success:j.Type.Boolean(),description:j.Type.String()}))),objectives:j.Type.Record(j.Type.String(),YD),category:j.Type.Optional(j.Type.String())}),ZD=j.Type.Object({id:j.Type.String(),title:j.Type.String()}),e7=j.Type.Record(j.Type.String(),XD),E$=j.Type.Object({quests:e7,categories:j.Type.Array(ZD)}),A$={quests:{},categories:[{id:"default",title:"Quests"}]},P$=j.Type.Object({enabled:j.Type.Boolean(),background:j.Type.Optional(j.Type.String()),text:j.Type.Optional(j.Type.String()),cssClass:j.Type.Optional(j.Type.String()),position:j.Type.Object({left:j.Type.Number(),top:j.Type.Number(),width:j.Type.Optional(j.Type.Number()),height:j.Type.Optional(j.Type.Number())}),anchor:j.Type.Optional(j.Type.Object({x:j.Type.Number(),y:j.Type.Number()})),action:j.Type.Optional(j.Type.String()),actionType:j.Type.Optional(j.Type.String()),scriptClickable:j.Type.Optional(j.Type.Boolean()),tag:j.Type.Optional(j.Type.String())}),t7=j.Type.Record(j.Type.String(),P$),M$=j.Type.Object({buttons:t7,clickableDuringScriptsByDefault:j.Type.Optional(j.Type.Boolean())}),I$={buttons:{},clickableDuringScriptsByDefault:!1},n7=j.Type.Intersect([P$,j.Type.Object({id:j.Type.String()})]),r7=j.Type.Object({muted:j.Type.Optional(j.Type.Boolean()),loop:j.Type.Optional(j.Type.Boolean())}),i7=j.Type.Object({background:j.Type.String(),video:j.Type.Optional(r7),buttons:j.Type.Optional(j.Type.Array(j.Type.Union([j.Type.String(),n7])))}),N$=j.Type.Record(j.Type.String(),i7);j.Type.Object({screens:N$});const R$=j.Type.Object({screens:j.Type.Optional(N$)}),L$={screens:{}},o7=j.Type.Object({name:j.Type.String(),description:j.Type.String(),startingLevel:j.Type.Number(),hidden:j.Type.Optional(j.Type.Boolean()),icon:j.Type.String()}),D$=j.Type.Record(j.Type.String(),o7),B$=j.Type.Object({xpPerLevel:j.Type.Number(),notifyLevelUp:j.Type.Boolean()});j.Type.Object({skills:D$,skillOptions:B$});const F$=j.Type.Object({skills:j.Type.Optional(D$),skillOptions:j.Type.Optional(B$)}),V$={skills:{},skillOptions:{xpPerLevel:10,notifyLevelUp:!0}},s7=j.Type.Object({portraitCssClass:j.Type.Optional(j.Type.String()),color:j.Type.Optional(j.Type.String()),boxCss:j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.Any())),nameCss:j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.Any())),textCss:j.Type.Optional(j.Type.Record(j.Type.String(),j.Type.Any()))}),a7=j.Type.Object({video:j.Type.String(),autoplay:j.Type.Optional(j.Type.Boolean()),loop:j.Type.Optional(j.Type.Boolean()),muted:j.Type.Optional(j.Type.Boolean()),width:j.Type.Optional(j.Type.Number()),height:j.Type.Optional(j.Type.Number())}),l7=j.Type.Object({image:j.Type.String(),width:j.Type.Optional(j.Type.Number()),height:j.Type.Optional(j.Type.Number())}),c7=j.Type.Union([j.Type.String(),a7,l7]),u7=j.Type.Object({sprites:j.Type.Optional(j.Type.Record(j.Type.String(),c7)),name:j.Type.String(),style:j.Type.Optional(s7)}),z$=j.Type.Object({config:j.Type.Object({imagesPath:j.Type.String(),playerCharacter:j.Type.Optional(j.Type.String()),gameCharacter:j.Type.Optional(j.Type.String())}),characters:j.Type.Record(j.Type.String(),u7)}),q$={config:{imagesPath:"",playerCharacter:"player",gameCharacter:"game"},characters:{}},U$=j.Type.Object({cssClass:j.Type.Optional(j.Type.String()),textCssClass:j.Type.Optional(j.Type.String()),titleCssClass:j.Type.Optional(j.Type.String())}),H$=j.Type.Object({options:j.Type.Object({delay:j.Type.Optional(j.Type.Number()),width:j.Type.Number(),keywordsPrefix:j.Type.String(),screenEdgesMinimumMargin:j.Type.Optional(j.Type.Number()),styling:j.Type.Optional(U$)}),tooltips:j.Type.Array(j.Type.Object({keywords:j.Type.Array(j.Type.String()),title:j.Type.String(),description:j.Type.String(),styling:j.Type.Optional(U$)}))}),K$={options:{delay:0,width:350,keywordsPrefix:"@@"},tooltips:[]},f7=j.Type.Object({name:j.Type.String(),description:j.Type.String(),icon:j.Type.Optional(j.Type.String()),lockedIcon:j.Type.Optional(j.Type.String()),secret:j.Type.Optional(j.Type.Boolean()),hidden:j.Type.Optional(j.Type.Boolean()),category:j.Type.Optional(j.Type.String()),extraData:j.Type.Optional(j.Type.Any())}),W$=j.Type.Object({id:j.Type.String(),title:j.Type.String()}),G$=j.Type.Record(j.Type.String(),f7);j.Type.Object({defaultAchievementIcon:j.Type.String(),categories:j.Type.Array(W$),achievements:G$,notifyNewAchievements:j.Type.Boolean(),secretAchievements:j.Type.Optional(j.Type.Object({censorDescription:j.Type.Optional(j.Type.Boolean()),censorName:j.Type.Optional(j.Type.Boolean()),hideUntilObtained:j.Type.Optional(j.Type.Boolean())}))});const J$=j.Type.Object({categories:j.Type.Optional(j.Type.Array(W$)),achievements:j.Type.Optional(G$)}),Q$={categories:[{id:"default",title:"Achievements"}],achievements:{},notifyNewAchievements:!0,defaultAchievementIcon:"img/achievements/trophy.png"},d7=j.Type.Object({diceRange:j.Type.Tuple([j.Type.Number(),j.Type.Number()]),diceCount:j.Type.Number(),difficultyText:j.Type.Array(j.Type.Tuple([j.Type.Number(),j.Type.String()])),extraPointsPerLevel:j.Type.Number(),extraDicePerLevel:j.Type.Optional(j.Type.Number()),successOnRollsBelowThreshold:j.Type.Boolean(),showDifficultyText:j.Type.Boolean(),showDifficultyNumber:j.Type.Boolean(),showDifficultyWithoutModifiers:j.Type.Boolean(),finalRollIsHighest:j.Type.Optional(j.Type.Boolean()),finalRollIsLowest:j.Type.Optional(j.Type.Boolean()),failOnRollsEqualToThreshold:j.Type.Optional(j.Type.Boolean())}),h7=j.Type.Object({skill:j.Type.String(),difficulty:j.Type.Number(),winsNeeded:j.Type.Optional(j.Type.Number()),hideAfterRoll:j.Type.Optional(j.Type.Boolean()),repeatable:j.Type.Optional(j.Type.Boolean())}),Y$=j.Type.Object({options:d7,skillChecks:j.Type.Record(j.Type.String(),h7)}),X$={options:{diceRange:[1,6],extraPointsPerLevel:1,extraDicePerLevel:0,diceCount:2,successOnRollsBelowThreshold:!1,showDifficultyText:!0,showDifficultyNumber:!1,showDifficultyWithoutModifiers:!1,finalRollIsHighest:!1,finalRollIsLowest:!1,difficultyText:[[2,"Very Easy"],[4,"Easy"],[6,"Medium"],[8,"Hard"],[10,"Very Hard"],[11,"Extremely Hard"],[12,"Near Impossible"]]},skillChecks:{}},p7=j.Type.Object({cssClass:j.Type.Optional(j.Type.String()),textTemplate:j.Type.Optional(j.Type.String())}),Z$=j.Type.Record(j.Type.String(),p7);j.Type.Object({choiceTextTemplate:j.Type.String(),choicePrompts:Z$});const e_=j.Type.Object({choiceTextTemplate:j.Type.Optional(j.Type.String()),choicePrompts:j.Type.Optional(Z$)}),t_={choicePrompts:{},choiceTextTemplate:'<span class="choice-index">%{$index}. </span> <span class="choice-text">%{$choice}</span>'},n_=j.Type.Object({delay:j.Type.Optional(j.Type.Number()),direction:j.Type.Optional(j.Type.String()),duration:j.Type.Optional(j.Type.Number()),easing:j.Type.Optional(j.Type.String()),endDelay:j.Type.Optional(j.Type.Number()),fill:j.Type.Optional(j.Type.String()),iterationStart:j.Type.Optional(j.Type.Number()),iterations:j.Type.Optional(j.Type.Number()),keyframes:j.Type.Optional(j.Type.Any())}),ay=j.Type.Array(j.Type.Any()),m7=j.Type.Object({keyframes:j.Type.Union([j.Type.String(),ay]),options:j.Type.Optional(n_)});j.Type.Object({keyframes:ay,options:j.Type.Optional(n_)});const r_=j.Type.Object({animations:j.Type.Record(j.Type.String(),m7),keyframes:j.Type.Record(j.Type.String(),ay)}),i_={animations:{},keyframes:{}},g7=j.Type.Object({name:j.Type.String(),type:j.Type.String(),optional:j.Type.Optional(j.Type.Boolean())}),v7=j.Type.Object({keyword:j.Type.String(),label:j.Type.String(),options:j.Type.Optional(j.Type.Array(g7))}),o_=j.Type.Object({macros:j.Type.Array(v7)}),s_={macros:[]},ly=j.Type.Object({assets:j.Type.Record(j.Type.String(),j.Type.String())}),a_=j.Type.Object({images:j.Type.Optional(ly),audio:j.Type.Optional(ly),video:j.Type.Optional(ly)}),l_={images:{assets:{}},audio:{assets:{}},video:{assets:{}}},y7=j.Type.Object({file:j.Type.String(),options:j.Type.Record(j.Type.String(),j.Type.Any())}),b7=j.Type.Object({name:j.Type.String(),files:j.Type.Array(j.Type.Union([j.Type.String(),y7])),fontFamily:j.Type.String()}),w7=j.Type.Record(j.Type.String(),b7),c_=j.Type.Object({fontSets:j.Type.Optional(j.Type.Record(j.Type.String(),w7)),allowChoosingFont:j.Type.Optional(j.Type.Boolean())}),u_={fontSets:{},allowChoosingFont:!1},pu={common:sy,screens:L$,buttons:I$,skills:V$,skillChecks:X$,scripts:[],audio:a$,tooltips:K$,achievements:Q$,items:O$,quests:A$,characters:q$,choices:t_,animations:i_,macros:s_,preload:l_,fonts:u_};var f_=!1;function Op(t,e,n){return Array.isArray(t)?(t.length=Math.max(t.length,e),t.splice(e,1,n),n):(t[e]=n,n)}function cy(t,e){if(Array.isArray(t)){t.splice(e,1);return}delete t[e]}function S7(){return d_().__VUE_DEVTOOLS_GLOBAL_HOOK__}function d_(){return typeof navigator<"u"&&typeof window<"u"?window:typeof global<"u"?global:{}}const k7=typeof Proxy=="function",x7="devtools-plugin:setup",$7="plugin:settings:set";let mu,uy;function _7(){var t;return mu!==void 0||(typeof window<"u"&&window.performance?(mu=!0,uy=window.performance):typeof global<"u"&&(!((t=global.perf_hooks)===null||t===void 0)&&t.performance)?(mu=!0,uy=global.perf_hooks.performance):mu=!1),mu}function j7(){return _7()?uy.now():Date.now()}class C7{constructor(e,n){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=n;const r={};if(e.settings)for(const s in e.settings){const a=e.settings[s];r[s]=a.defaultValue}const i=`__vue-devtools-plugin-settings__${e.id}`;let o=Object.assign({},r);try{const s=localStorage.getItem(i),a=JSON.parse(s);Object.assign(o,a)}catch{}this.fallbacks={getSettings(){return o},setSettings(s){try{localStorage.setItem(i,JSON.stringify(s))}catch{}o=s},now(){return j7()}},n&&n.on($7,(s,a)=>{s===this.plugin.id&&this.fallbacks.setSettings(a)}),this.proxiedOn=new Proxy({},{get:(s,a)=>this.target?this.target.on[a]:(...l)=>{this.onQueue.push({method:a,args:l})}}),this.proxiedTarget=new Proxy({},{get:(s,a)=>this.target?this.target[a]:a==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(a)?(...l)=>(this.targetQueue.push({method:a,args:l,resolve:()=>{}}),this.fallbacks[a](...l)):(...l)=>new Promise(c=>{this.targetQueue.push({method:a,args:l,resolve:c})})})}async setRealTarget(e){this.target=e;for(const n of this.onQueue)this.target.on[n.method](...n.args);for(const n of this.targetQueue)n.resolve(await this.target[n.method](...n.args))}}function h_(t,e){const n=t,r=d_(),i=S7(),o=k7&&n.enableEarlyProxy;if(i&&(r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!o))i.emit(x7,t,e);else{const s=o?new C7(n,i):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:e,proxy:s}),s&&e(s.proxiedTarget)}}/*!
8
8
  * pinia v2.1.7
9
9
  * (c) 2023 Eduardo San Martin Morote
10
10
  * @license MIT
@@ -66,7 +66,7 @@ This will fail in production.`);a=ad,a._s.has(r)||(o?my(r,e,i,a):O_(r,i,a),proce
66
66
  `+t.slice(i,o),i=o+1),s=a;return l+=`
67
67
  `,t.length-i>e&&s>i?l+=t.slice(i,s)+`
68
68
  `+t.slice(s+1):l+=t.slice(i),l.slice(1)}function R9(t){for(var e="",n=0,r,i=0;i<t.length;n>=65536?i+=2:i++)n=vd(t,i),r=Ii[n],!r&&gd(n)?(e+=t[i],n>=65536&&(e+=t[i+1])):e+=r||C9(n);return e}function L9(t,e,n){var r="",i=t.tag,o,s,a;for(o=0,s=n.length;o<s;o+=1)a=n[o],t.replacer&&(a=t.replacer.call(n,String(o),a)),(Ma(t,e,a,!1,!1)||typeof a>"u"&&Ma(t,e,null,!1,!1))&&(r!==""&&(r+=","+(t.condenseFlow?"":" ")),r+=t.dump);t.tag=i,t.dump="["+r+"]"}function Kj(t,e,n,r){var i="",o=t.tag,s,a,l;for(s=0,a=n.length;s<a;s+=1)l=n[s],t.replacer&&(l=t.replacer.call(n,String(s),l)),(Ma(t,e+1,l,!0,!0,!1,!0)||typeof l>"u"&&Ma(t,e+1,null,!0,!0,!1,!0))&&((!r||i!=="")&&(i+=Iy(t,e)),t.dump&&pd===t.dump.charCodeAt(0)?i+="-":i+="- ",i+=t.dump);t.tag=o,t.dump=i||"[]"}function D9(t,e,n){var r="",i=t.tag,o=Object.keys(n),s,a,l,c,f;for(s=0,a=o.length;s<a;s+=1)f="",r!==""&&(f+=", "),t.condenseFlow&&(f+='"'),l=o[s],c=n[l],t.replacer&&(c=t.replacer.call(n,l,c)),Ma(t,e,l,!1,!1)&&(t.dump.length>1024&&(f+="? "),f+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Ma(t,e,c,!1,!1)&&(f+=t.dump,r+=f));t.tag=i,t.dump="{"+r+"}"}function B9(t,e,n,r){var i="",o=t.tag,s=Object.keys(n),a,l,c,f,u,d;if(t.sortKeys===!0)s.sort();else if(typeof t.sortKeys=="function")s.sort(t.sortKeys);else if(t.sortKeys)throw new Ji("sortKeys must be a boolean or a function");for(a=0,l=s.length;a<l;a+=1)d="",(!r||i!=="")&&(d+=Iy(t,e)),c=s[a],f=n[c],t.replacer&&(f=t.replacer.call(n,c,f)),Ma(t,e+1,c,!0,!0,!0)&&(u=t.tag!==null&&t.tag!=="?"||t.dump&&t.dump.length>1024,u&&(t.dump&&pd===t.dump.charCodeAt(0)?d+="?":d+="? "),d+=t.dump,u&&(d+=Iy(t,e)),Ma(t,e+1,f,!0,u)&&(t.dump&&pd===t.dump.charCodeAt(0)?d+=":":d+=": ",d+=t.dump,i+=d));t.tag=o,t.dump=i||"{}"}function Wj(t,e,n){var r,i,o,s,a,l;for(i=n?t.explicitTypes:t.implicitTypes,o=0,s=i.length;o<s;o+=1)if(a=i[o],(a.instanceOf||a.predicate)&&(!a.instanceOf||typeof e=="object"&&e instanceof a.instanceOf)&&(!a.predicate||a.predicate(e))){if(n?a.multi&&a.representName?t.tag=a.representName(e):t.tag=a.tag:t.tag="?",a.represent){if(l=t.styleMap[a.tag]||a.defaultStyle,Oj.call(a.represent)==="[object Function]")r=a.represent(e,l);else if(Ej.call(a.represent,l))r=a.represent[l](e,l);else throw new Ji("!<"+a.tag+'> tag resolver accepts not "'+l+'" style');t.dump=r}return!0}return!1}function Ma(t,e,n,r,i,o,s){t.tag=null,t.dump=n,Wj(t,n,!1)||Wj(t,n,!0);var a=Oj.call(t.dump),l=r,c;r&&(r=t.flowLevel<0||t.flowLevel>e);var f=a==="[object Object]"||a==="[object Array]",u,d;if(f&&(u=t.duplicates.indexOf(n),d=u!==-1),(t.tag!==null&&t.tag!=="?"||d||t.indent!==2&&e>0)&&(i=!1),d&&t.usedDuplicates[u])t.dump="*ref_"+u;else{if(f&&d&&!t.usedDuplicates[u]&&(t.usedDuplicates[u]=!0),a==="[object Object]")r&&Object.keys(t.dump).length!==0?(B9(t,e,t.dump,i),d&&(t.dump="&ref_"+u+t.dump)):(D9(t,e,t.dump),d&&(t.dump="&ref_"+u+" "+t.dump));else if(a==="[object Array]")r&&t.dump.length!==0?(t.noArrayIndent&&!s&&e>0?Kj(t,e-1,t.dump,i):Kj(t,e,t.dump,i),d&&(t.dump="&ref_"+u+t.dump)):(L9(t,e,t.dump),d&&(t.dump="&ref_"+u+" "+t.dump));else if(a==="[object String]")t.tag!=="?"&&I9(t,t.dump,e,o,l);else{if(a==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new Ji("unacceptable kind of an object to dump "+a)}t.tag!==null&&t.tag!=="?"&&(c=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?c="!"+c:c.slice(0,18)==="tag:yaml.org,2002:"?c="!!"+c.slice(18):c="!<"+c+">",t.dump=c+" "+t.dump)}return!0}function F9(t,e){var n=[],r=[],i,o;for(Ry(t,n,r),i=0,o=r.length;i<o;i+=1)e.duplicates.push(n[r[i]]);e.usedDuplicates=new Array(o)}function Ry(t,e,n){var r,i,o;if(t!==null&&typeof t=="object")if(i=e.indexOf(t),i!==-1)n.indexOf(i)===-1&&n.push(i);else if(e.push(t),Array.isArray(t))for(i=0,o=t.length;i<o;i+=1)Ry(t[i],e,n);else for(r=Object.keys(t),i=0,o=r.length;i<o;i+=1)Ry(t[r[i]],e,n)}function V9(t,e){e=e||{};var n=new O9(e);n.noRefs||F9(t,n);var r=t;return n.replacer&&(r=n.replacer.call({"":r},"",r)),Ma(n,0,r,!0,!0)?n.dump+`
69
- `:""}var z9=V9,q9={dump:z9};function Ly(t,e){return function(){throw new Error("Function yaml."+t+" is removed in js-yaml 4. Use yaml."+e+" instead, which is now safe by default.")}}var U9=pi,H9=J_,K9=Z_,W9=ij,G9=oj,J9=Ty,Q9=Tj.load,Y9=Tj.loadAll,X9=q9.dump,Z9=Ji,eV={binary:uj,float:rj,map:X_,null:ej,pairs:dj,set:hj,timestamp:lj,bool:tj,int:nj,merge:cj,omap:fj,seq:Y_,str:Q_},tV=Ly("safeLoad","load"),nV=Ly("safeLoadAll","loadAll"),rV=Ly("safeDump","dump"),iV={Type:U9,Schema:H9,FAILSAFE_SCHEMA:K9,JSON_SCHEMA:W9,CORE_SCHEMA:G9,DEFAULT_SCHEMA:J9,load:Q9,loadAll:Y9,dump:X9,YAMLException:Z9,types:eV,safeLoad:tV,safeLoadAll:nV,safeDump:rV};function qp(t){return new Promise((e,n)=>{const r=new XMLHttpRequest;r.onload=function(){r.status>=200&&r.status<300?e(r.responseText):(ft(`Failed to load file ${t}`,r.status),n(r.status))},r.open("GET",t),r.send()})}async function yd(t){try{const e=await qp(t);let n;if(t.endsWith(".json"))n=JSON.parse(e);else if(t.endsWith(".yaml"))n=iV.load(e);else{const r=`Unsupported file type for data file ${t} (must be .json or .yaml)`;throw new Error(r)}if(!n)throw new Error(`Data loaded from ${t} is empty`);return n}catch(e){throw console.error(`Failed to load data file ${t}: ${e}`),e}}const oV=(t,e)=>{const n={};for(const r in t)n[r]=e(t[r]);return n},Gj=(t,e)=>{for(const n in t){const r=t[n];e(r,n,t),typeof r=="object"&&r!==null&&Gj(r,e)}},ac={};async function sV(t){return ac[t]?ac[t]:Jj(t,t)}async function aV(t){Po.log("Loading images");const e=[],n=async(i,o)=>await Jj(i,o),r=(i,o)=>{e.push(n(i,o))};for(const i in t.common.images){const o=t.common.images[i];r(i,o)}if(t.preload.images)for(const i in t.preload.images.assets){const o=t.preload.images.assets[i];r(i,o)}for(const i in t.screens.screens){const o=t.screens.screens[i];if(o.background&&!t.common.images[o.background]&&!o.video&&r(o.background,o.background),o.buttons)for(const s in o.buttons){const a=o.buttons[s];typeof a=="object"&&a.background&&!t.common.images[a.background]&&r(a.background,a.background)}}return Promise.all(e)}async function Jj(t,e){if(ac[t])return ac[t];if(e===Tp){const r=new Image;return ac[t]=r,r}const n=new Promise((r,i)=>{const o=new Image;o.onload=()=>{ac[t]=o,r(o)},o.onerror=s=>{ft(`Failed to load image ${t} at ${e}`,s),i(s)},o.src=bi(e)});return ac[t]=n,n}const Up={};function lV(t){return Up[t]??{}}function Qj(t,e,n){const r=lV(t.transition),i=t.duration??r.duration??500,o=t.delay??r.delay??0;return{...t,resolve:n,duration:i,delay:o,oldScreen:e}}const Ni=Rr("notifications",{state:()=>({notifications:[],enabled:!0}),actions:{async addNotification(t,e,n){if(!this.enabled)return;t=Ds(t);const r=`${Date.now()}-${Math.random()*1e4}`;this.notifications.push({id:r,text:t,description:e,icon:n}),ot().notifications.alsoPrintInDialogue&&H_(`[NOTIFICATION] ${t}`),await Mi(ot().notifications.timeOnScreen*1e3),this.deleteNotification(r)},deleteNotification(t){const e=this.findNotifications(t);e&&this.notifications.splice(this.notifications.indexOf(e),1)},findNotifications(t){return this.notifications.find(e=>e.id===t)},disableNotifications(){this.enabled=!1;for(const t in this.notifications)this.deleteNotification(t)},enableNotifications(){this.enabled=!0}}}),mi=Rr("inventory",{state:()=>({items:{},interactionTags:{}}),actions:{generateSaveData(){return{items:yn(this.items),interactionTags:yn(this.interactionTags)}},loadSaveData(t){this.items={...this.items,...yn(t.items)},this.interactionTags={...yn(t.interactionTags)}},updateConfig(t){Object.keys(t.items).forEach(e=>{this.items[e]||(this.items[e]={amount:0,id:e})})},reset(t){this.$reset(),this.updateConfig(t)},hasItem(t,e){var n;return e||(e=1),((n=this.items[t])==null?void 0:n.amount)>=e},getExistingItem(t){return this.items[t]},getItemAmount(t){var e;return((e=this.getExistingItem(t))==null?void 0:e.amount)||0},add(t){const e=this.getExistingItem(t.id);e?e.amount+=t.amount:this.items[t.id]={...t};const n=ps(t.id).name,r=t.amount>1?`${n} x ${t.amount}`:n;Ni().addNotification(`Received item: ${r}`)},enableInteraction(t){t||(t="default"),this.interactionTags[t]={blockedInteraction:!1}},disableInteraction(t){t||(t="default"),this.interactionTags[t]={blockedInteraction:!0}},onScriptStart(){const t=ot().interactionTags;Object.keys(t).forEach(e=>{t[e].onlyInteractOutsideOfScripts&&this.disableInteraction(e)})},onScriptEnd(){const t=ot().interactionTags;Object.keys(t).forEach(e=>{t[e].onlyInteractOutsideOfScripts&&this.enableInteraction(e)})},isInteractionTagBlocked(t){return t||(t="default"),this.interactionTags[t]?this.interactionTags[t].blockedInteraction:!1},remove(t){const e=this.getExistingItem(t.id);e&&(e.amount-=t.amount,Ni().addNotification(`Lost item: ${ps(t.id).name} x ${t.amount}`),e.amount<=0&&this.deleteItem(t.id))},deleteItem(t){this.getExistingItem(t)&&(this.items[t].amount=0)},canUseItem(t){var n;const e=ps(t.id);return!!(e&&e.onUse&&!this.isInteractionTagBlocked(e.tag)&&!((n=Vn().currentDialog)!=null&&n.choices))},useItem(t){let e=!1;const n=ps(t.id);if(t&&this.canUseItem(t)&&n){const r=n.onUse;e=!0,oc("onItemUsed"),r.action==="jump"?Zt().jumpToLabel(r.label):r.action==="run"?Zt().runThenGoBackToPreviousDialog(r.label,!0):(e=!1,ft(`Unknown action ${r.action}`))}return e}}}),Io=Rr("screens",{state:()=>({layers:[{screen:"default"}],buttons:{}}),actions:{setScreen(t,e,n){return new Promise(r=>{const i=this.layers[e||0];let o;const s=(i==null?void 0:i.screen)??null;if(s===t){r();return}n&&(o=Qj(n,s,r)),this.layers[e||0]={screen:t,transition:o},o||r()})},finishTransition(t){const e=this.layers[t];if(!e)ft(`Tried to finish transition on layer ${t} but it doesn't exist`);else if(e.transition){const n=e.transition.resolve;delete e.transition,n()}},transitionScreen(t,e,n){return this.setScreen(t,n??0,e)},emptyLayer(t,e){return new Promise(n=>{const r=this.layers[t];if(!r){lc(`Tried to empty layer ${t} but it doesn't exist`);return}if(e){const i=r.screen,o=Qj(e,i,n);r.transition=o}r.screen="@empty",e||n()})},updateConfig(t){console.log("update config!");const e=ar().buttons.buttons;for(const n in e)this.buttons[n]||(this.buttons[n]={state:e[n].enabled})},reset(t){this.$reset(),this.updateConfig(t)},changeButton(t,e){if(!this.buttons[t]){ft(`Tried to change button ${t} but it doesn't exist`);return}this.buttons[t].state=e},generateSaveData(){return{layers:yn(this.layers).filter(t=>t).map(t=>t.screen??null),buttons:yn(this.buttons)}},loadSaveData(t){this.layers=yn(t.layers).map(e=>(e!==null&&typeof e!="string"&&(e=null),{screen:e})),this.buttons=ic(this.buttons,yn(t.buttons))},isButtonDisabled(t){const e=this.getButtonState(t);return e==="hidden"||e==="greyed"||e===!1},isButtonInteractible(t){const e=this.getButtonState(t);return e?e===!0:!1},isButtonClickable(t){if(!this.isButtonInteractible(t))return!1;const n=kl(t);return!!Hp(n)},getButtonState(t){const e=kl(t),n=this.buttons[t],r=e.tag||"default",i=n.state;return i===!0&&mi().isInteractionTagBlocked(r)?"greyed":i},clickOnButton(t){if(!this.isButtonClickable(t))return;const e=Zt(),n=kl(t);oc("onButtonClicked");const r=n.action;r&&(n.actionType==="run"?e.runLabelFunction(r):e.jumpToLabel(r))}},getters:{nonEmptyLayers(t){return t.layers.filter(e=>e)},isTransitioning(t){return t.layers.some(e=>e==null?void 0:e.transition)}}});function Hp(t){if(!qt().inScript)return!0;const e=km().clickableDuringScriptsByDefault;if(e)return t.scriptClickable!==!1;if(!e)return t.scriptClickable===!0}const cV=["screenObject","sprite"];function Yj(t){return typeof t=="object"&&t!==null&&cV.includes(t._entityType)}function uV(t){return typeof t=="object"&&t!==null&&t._entityType==="sprite"}function fV(t){if(t.includes(" ")){const e=t.split(" ");return{label:e[0],args:e.slice(1)}}else return{label:t}}const bo=Rr("screenObjects",{state:()=>({tree:[],objectsList:{}}),actions:{addObject(t){t.parent?t.parent.children.push(t):this.tree.push(t),this.objectsList[t.id]=t},createObject(t){const e={_entityType:"screenObject",id:tc(),name:"Screen Object",tags:[],x:0,y:0,anchor:{x:0,y:0},width:1,height:1,opacity:1,scale:1,layer:0,children:[],...t};return this.addObject(e),e},destroyObject(t){let e=t;typeof e=="string"&&(e=this.getObject(e));for(let n=e.children.length-1;n>=0;n--)this.destroyObject(e.children[n]);if(e.parent){const n=e.parent,r=n.children.indexOf(e);r!==-1?n.children.splice(r,1):console.warn(`Could not find object ${e.id} in parent's children`)}else{const n=this.tree.indexOf(e);n!==-1?this.tree.splice(n,1):console.warn(`Object to destroy not found in store (${e.id})`)}delete this.objectsList[e.id]},createSprite(t){const e=this.createObject(t);return e._entityType="sprite",sV(t.image).then(n=>{const r=this.getObject(e.id);r.width===1&&r.height===1&&(r.width=n.width,r.height=n.height)}),e},getObject(t){return this.objectsList[t]},isScreenObjectClickable(t){return Hp(t)?!!(t.onClick||t.onHover):!1},clickObject(t){t.onClick&&this.handleObjectAction(t,t.onClick)},hoverObject(t){t.onHover&&this.handleObjectAction(t,t.onHover)},handleObjectAction(t,e){if(!this.isScreenObjectClickable(t))return;oc("onSpriteClicked");let n;if(typeof e=="string"){const r=fV(e);n={label:r.label,args:r.args}}else n=e;n.method=n.method??t.clickMethod??"jump",n.args=n.args??[],n.method==="run"?Zt().runThenGoBackToPreviousDialog(n.label,...n.args):n.method==="jump"?Zt().jumpToLabel(n.label,...n.args):ft(`Unknown sprite click method ${t.clickMethod}`)},generateSaveData(){return{tree:yn(this.tree.map(t=>t.id)),objectsList:yn(oV(this.objectsList,t=>this.screenObjectToSave(t)))}},loadSaveData(t){this.objectsList=this.loadAllObjects(yn(t.objectsList)),this.tree=t.tree.map(e=>this.objectsList[e])},reset(){this.$reset()},screenObjectToSave(t){return{...t,children:t.children.map(e=>e.id),parent:t.parent?t.parent.id:void 0}},loadAllObjects(t){for(const e of Object.values(t)){const n=e;n.parent=n.parent?t[n.parent]:void 0,n.children=n.children.map(r=>t[r])}return t},emptyLayer(t){for(let e=this.tree.length-1;e>=0;e--){const n=this.tree[e];n.layer===t&&this.destroyObject(n)}},emptyAllLayers(){for(let t=this.tree.length-1;t>=0;t--){const e=this.tree[t];this.destroyObject(e)}}}});function Xj(t){return"save"in t}function Zj(t){return"globalSave"in t}function dV(t){return"config"in t}const hV=g.defineComponent({props:{percentage:Number,step:String},methods:{loadingStyle(){return{width:`${this.percentage*60}vw`}}},computed:{}}),pV={id:"loading-bar"},mV={id:"loading-text"};function gV(t,e,n,r,i,o){return g.openBlock(),g.createElementBlock("div",pV,[g.createElementVNode("div",{id:"inner-loading-bar",style:g.normalizeStyle(t.loadingStyle())},null,4),g.createElementVNode("div",mV,[g.createElementVNode("h3",null,"Loading "+g.toDisplayString(Math.floor(t.percentage*100))+"% - "+g.toDisplayString(t.step),1)])])}const vV=Ns(hV,[["render",gV]]),yV="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Generator:%20Adobe%20Illustrator%2019.0.0,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%206.00%20Build%200)%20--%3e%3csvg%20version='1.1'%20id='Rat'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20595.3%20595.3'%20style='enable-background:new%200%200%20595.3%20595.3;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e%20.st0{fill:%23E23B33;}%20%3c/style%3e%3cpath%20id='Rat_Shape'%20class='st0'%20d='M556.9,82.5c-10.8-24.3-47-57.1-71.3-65.6c-24.3-8.4-64.1-0.3-88.7,22.3%20c-20,18.4-26,28.2-29.1,37c-2.1,5.9-4.8,13.5-6,20.9v0c-0.5,4.1-4.5,7-8.6,6.1c-10.4-2.3-29.5-6-44.4-6.3%20c-13.7-0.2-30.1,3.2-40.4,5.7c-4.5,1.1-8.8-2.2-8.8-6.8c-0.1-5.3-1.1-12.3-4.8-19.6c-8.5-16.9-19.6-32.6-57.8-47.4%20c-31.9-12.4-75.1-9.7-100.8,1.8c-28.1,12.6-42.4,37.9-54,61.8c-14.4,29.8-14.9,83.6-6.4,104c12.8,30.7,35.8,47.2,52.6,53%20c11.3,3.8,28.2,3.7,38.2,3.3c4.2-0.2,7.7,3.3,7.5,7.5c-0.7,13.6-0.9,41.5,7,61.4c7.7,19.4,29.7,62.3,50.7,101.2%20c0,0.1-14.6,2.9-31.4,6.8c-23.9,5.5-52.6,12.7-54.3,13.7c-3.5,2.1-3,10-2.7,12c0.5,3.4,5.3,8.1,6.9,8.3c3.9,0.3,31.3-7.6,55.7-14.6%20c18.5-5.3,34.9-9.3,35.5-8.2c5.1,9.3,10,18,14.4,25.8c5.2,9.1,10.7,16.4,14.1,23.6c1.1,2.3-16.6,5.8-32.5,14.7%20c-16.4,9.1-29.7,21-32.3,24c-1.8,2.1-3,6-1.2,10.7c1.1,2.9,10,5.7,12.4,5.1c6.8-1.7,16.5-12.5,33.1-21.1%20c16.3-8.5,32.9-14.9,33.8-13.6c9.7,14.3,16.9,21.6,22.6,31.2c9.8,16.5,27.3,45.9,46.6,39.5c6.4-2.1,31.1-33.6,53.3-68.6%20c1.3-2.1,16.1,11.3,30.4,23.2c13.8,11.4,22.7,20.6,27.1,21.4c5.4,1,14.2-7.7,14.1-14.7c-0.1-2.7-14.3-13.8-29.1-26.2%20c-14.5-12.1-30.1-22.8-29.2-24.3c7.6-12,14.5-23.7,20.1-33.9c4.3-7.8,8.9-16,13-24.7c0.6-1.2,15.9,3,31.4,7.1c15.3,4,26.7,10,31,8%20c6.9-3,11.6-13.8,9.4-18.3c-1.1-2.3-17-7.3-33.2-12c-14.2-4.1-28-6.5-27.7-7.3c15.5-34,28.8-64.8,27.6-69.6%20c-1.7-7.1,2.6-11.9,7-36.5c3.2-18.1,4.7-40.9,5.2-51.7c0.2-3.5,2.8-6.3,6.3-6.7c3.1-0.3,6.9-0.9,10.5-1.9c7.8-2,18.6-7.8,36.4-20.6%20c17.9-12.8,38.7-49.6,44.4-67.8S567.6,106.8,556.9,82.5z%20M265.1,336.2c-8.1,4-13,7-26.4,9.6c-6.9,1.4-29.4-0.2-40.7-4.6%20c-10.5-4.1-19.9-7.6-30-15.4s-15.7-13.2-15.7-15.3c0-4.4,6-9.4,11-9.4c5.1,0,14.5,9.2,29.7,16.6c14.3,7,17.9,6.1,25.4,7.3%20c2.9,0.5,7.7,0.6,10.7,0.4c14.1-1.3,21.4-5.9,25.3-8.8c4-3,13.7-12.9,17.2-12.5c8,1,18.9,3.4,18.9,7.1%20C290.4,319,273.2,332.1,265.1,336.2z%20M320.9,521.4c-4.3,3.7-17.7,13.5-23.3,13.5c-2.8,0-7.4-8.2-11.5-16.8%20c-4.1-8.5-9.1-21.1-9.1-31.6c0-4.6,6-7.4,13.4-9.2c7.2-1.7,27.3-1.8,29.9-1.1c6.8,1.7,12.9,2.2,12.7,6.4c-0.4,12.7-7,18.9-8.3,24.3%20C323.4,512.3,323.4,519.2,320.9,521.4z%20M431.1,320.3c-9.2,7.4-10.6,8.1-24.9,13.7c-11.3,4.4-28.6,5.8-41.6,3.6%20c-12.2-2.1-22.3-4.6-29.5-10.1c-9.7-7.3-16.4-15.1-16.4-19.8c0-3.7,6.4-4.3,14.5-4.9c3.5-0.3,9.3,5.9,13.2,9.2%20c8.1,6.8,14.8,8,28.8,9.9c2.9,0.4,7.8,0.4,10.7,0.1c7.5-0.9,12-0.4,25.8-8.2c20-11.2,17.8-14.4,25.1-12.6c2.2,0.6,5.8,1.2,5.6,5.6%20C442.4,309,440.5,312.7,431.1,320.3z'/%3e%3c/svg%3e",bV={id:"engine-splash-screen",class:"flex justify-center items-center"},wV={id:"engine-splash-title"},SV=["src"],Dy=g.defineComponent({__name:"engine-splash",emits:["finished"],setup(t,{emit:e}){const n=e,r=g.ref("hidden"),i=g.computed(()=>({transitionDuration:`${f.value}s`})),o=g.computed(()=>({invisible:r.value!=="appear"})),s=qt(),a=g.computed(()=>{var h;return((h=ot().splashScreens)==null?void 0:h.engineSplashScreen)??{}}),l=g.computed(()=>typeof a.value.overrideText=="string"?a.value.overrideText:"Made with narrat engine"),c=g.computed(()=>a.value.overrideLogo??yV),f=g.computed(()=>typeof a.value.fadeDuration=="number"?a.value.fadeDuration:.8),u=g.computed(()=>typeof a.value.timeBeforeFadeout=="number"?a.value.timeBeforeFadeout:1.5);g.onMounted(async()=>{if(await Mi(10),r.value="appear",a.value.skip||s.options.debug){d();return}await Mi(f.value*1e3),await Mi(u.value*1e3),r.value="disappear",await Mi(f.value*1e3),d()});function d(){s.loading.loaded?n("finished"):s.listener.once("gameLoaded",()=>{n("finished")})}return(h,p)=>(g.openBlock(),g.createElementBlock("div",bV,[g.createElementVNode("div",{id:"engine-splash-header",class:g.normalizeClass(["flex justify-center flex-col items-center",o.value]),style:g.normalizeStyle(i.value)},[g.createElementVNode("h1",wV,g.toDisplayString(l.value),1),g.createElementVNode("img",{src:c.value,alt:"Narrat Logo",id:"engine-splash-logo"},null,8,SV),g.createVNode(vV,{percentage:g.unref(s).loading.percentage,step:g.unref(s).loading.step},null,8,["percentage","step"])],6)]))}});class Kp{constructor(){Un(this,"listeners",{})}on(e,n){return this.listeners[e]||this.addEventToMap(e),this.listeners[e].add(n),n}off(e,n){return this.listeners[e]&&this.listeners[e].delete(n),n}once(e,n){const r=(...i)=>{this.off(e,r),n(...i)};return this.on(e,r)}emit(e,...n){this.listeners[e]&&this.listeners[e].forEach(r=>r(...n))}clear(){Object.keys(this.listeners).forEach(e=>{delete this.listeners[e]})}addEventToMap(e){this.listeners[e]=new Set}}class kV extends Kp{setup(){const e=()=>{this.emit("preUpdate"),this.emit("update"),this.emit("postUpdate"),requestAnimationFrame(e)};e()}}const bd=new kV;Be.Vec2=void 0,(t=>{function e(p,m){return{x:p??0,y:m??0}}t.create=e;function n(p){return Math.sqrt(p.x*p.x+p.y*p.y)}t.magnitude=n;function r(p){const m=n(p);return m===0?e(0,0):{x:p.x/m,y:p.y/m}}t.normalize=r;function i(p,m){return{x:p.x+m.x,y:p.y+m.y}}t.add=i;function o(p,m){return{x:p.x-m.x,y:p.y-m.y}}t.subtract=o;function s(p,m){return{x:p.x*m.x,y:p.y*m.y}}t.multiply=s;function a(p,m){return{x:p.x*m,y:p.y*m}}t.scale=a;function l(p,m){return{x:p.x/m.x,y:p.y/m.y}}t.divide=l;function c(p,m){return n(o(p,m))}t.distance=c;function f(p,m,y){return{x:p.x+(m.x-p.x)*y,y:p.y+(m.y-p.y)*y}}t.lerp=f;function u(p,m){const y=Math.cos(m),v=Math.sin(m);return{x:p.x*y-p.y*v,y:p.x*v+p.y*y}}t.rotate=u;function d(p,m){const y=o(m,p);return t.normalize({x:-y.y,y:y.x})}t.normal=d;function h(p,m){return p.x*m.x+p.y*m.y}t.dot=h})(Be.Vec2||(Be.Vec2={}));function By(t,e,n,r){const i=t/n,o=e/r;return Math.min(i,o)}const Vs=Rr("settings",{state:()=>({baseSettings:{textSpeed:30,animateText:!0,fontSize:16},settingsSchema:{textSpeed:{type:"number",defaultValue:30,minValue:1,maxValue:100,step:5,name:"Text Speed",description:"The speed at which text plays."},animateText:{type:"boolean",defaultValue:!0,name:"Animate Text",description:"Whether or not text should animate."},fontSize:{type:"integer",defaultValue:16,minValue:8,maxValue:64,step:1,name:"Font Size",description:"The base font size for the game."}},customSettings:{},customSettingsSchema:{}}),actions:{reset(t){this.$reset(),this.updateConfig(t)},getSetting(t){if(typeof this.baseSettings[t]<"u")return this.baseSettings[t];if(typeof this.customSettings[t]<"u")return this.customSettings[t];ft(`Setting ${t} does not exist.`)},getSettingSchema(t){if(typeof this.settingsSchema[t]<"u")return this.settingsSchema[t];if(typeof this.customSettingsSchema[t]<"u")return this.customSettingsSchema[t];ft(`Setting ${t} does not exist.`)},getAllSettingSchemas(){return{...this.settingsSchema,...this.customSettingsSchema}},setSetting(t,e){typeof this.baseSettings[t]<"u"?this.baseSettings[t]=e:typeof this.customSettings[t]<"u"?this.customSettings[t]=e:ft(`Setting ${t} does not exist.`),t==="fontSize"&&document.documentElement.style.setProperty("font-size",`${e}px`),t==="textSpeed"&&(ot().dialogPanel.textSpeed=e),t==="animateText"&&(ot().dialogPanel.animateText=e)},updateConfig(t){var e;if(this.setSetting("textSpeed",t.dialogPanel.textSpeed??Cp),this.setSetting("animateText",t.dialogPanel.animateText??!0),this.setSetting("fontSize",t.layout.defaultFontSize??16),(e=t.settings)!=null&&e.customSettings)for(const n in t.settings.customSettings)this.addCustomSetting(n,t.settings.customSettings[n])},addCustomSetting(t,e){this.customSettings[t]=e.defaultValue,this.customSettingsSchema[t]=e},generateSaveData(){return{baseSettings:yn(this.baseSettings),customSettings:yn(this.customSettings)}},loadSaveData(t){for(const e in t.baseSettings)this.setSetting(e,yn(t.baseSettings[e]));for(const e in t.customSettings)typeof this.customSettings[e]<"u"&&this.setSetting(e,yn(t.customSettings[e]))}}});function wd(t,e=50,n={}){let r;const i=n.isImmediate??!1,o=n.callback??!1,s=n.maxWait;let a=Date.now(),l=[];function c(){if(s!==void 0){const u=Date.now()-a;if(u+e>=s)return s-u}return e}const f=function(...u){const d=this;return new Promise((h,p)=>{const m=function(){if(r=void 0,a=Date.now(),!i){const b=t.apply(d,u);o&&o(b),l.forEach(({resolve:S})=>S(b)),l=[]}},y=i&&r===void 0;r!==void 0&&clearTimeout(r);const v=c();if(r=setTimeout(m,v),y){const b=t.apply(d,u);return o&&o(b),h(b)}l.push({resolve:h,reject:p})})};return f.cancel=function(u){r!==void 0&&clearTimeout(r),l.forEach(({reject:d})=>d(u)),l=[]},f}const Br=Rr("rendering",{state:()=>({screenHeight:window.innerHeight,screenWidth:window.innerWidth,layoutMode:"horizontal",resizeObserver:null,containerElement:null,narratAppElement:null,dialogPanelMode:"auto"}),actions:{generateSaveData(){return{dialogPanelMode:this.dialogPanelMode}},loadSaveData(t){this.dialogPanelMode=t.dialogPanelMode},reset(){this.dialogPanelMode="auto"},updateScreenSize(t,e){this.screenHeight=e,this.screenWidth=t,t<ot().layout.verticalLayoutThreshold?(this.layoutMode="vertical",document.querySelector("html").style.fontSize=`${Vs().baseSettings.fontSize??40}px`):(this.layoutMode="horizontal",document.querySelector("html").style.fontSize=`${Vs().baseSettings.fontSize??16}px`)},setContainer(t){this.containerElement=t,this.resizeObserver&&this.resizeObserver.disconnect(),this.resizeObserver=new ResizeObserver(wd(()=>{this.refreshScreenSize()},100,{maxWait:200})),this.resizeObserver.observe(t),this.refreshScreenSize()},refreshScreenSize(){const t=this.containerElement;t&&this.updateScreenSize(t.clientWidth,t.clientHeight)}},getters:{gameScaleRatio(t){return By(this.screenWidth,this.screenHeight,this.gameWidth,this.gameHeight)},overlayMode(t){return!!(ot().dialogPanel.overlayMode&&t.layoutMode==="horizontal")},gameWidth(){const t=ot();return this.layoutMode==="vertical"||this.overlayMode?t.layout.backgrounds.width:t.layout.backgrounds.width+Cm()},gameHeight(){const t=ot();return this.layoutMode==="vertical",t.layout.backgrounds.height},dialogWidth(){return this.layoutMode==="vertical"?this.viewportWidth:Cm()},dialogHeight(){return this.layoutMode==="vertical"?this.actualGameHeight-this.gameHeight:ot().dialogPanel.height??this.gameHeight},actualGameHeight(){let t=this.gameHeight;return this.layoutMode==="vertical"&&(t=this.screenHeight/this.gameScaleRatio),t},viewportRatio(t){if(this.layoutMode==="vertical"){const e=ot().layout.backgrounds;return t.screenWidth/e.width}return 1},viewportHeight(t){return ot().layout.backgrounds.height*this.viewportRatio},viewportWidth(t){return ot().layout.backgrounds.width*this.viewportRatio},showDialog(t){if(this.dialogPanelMode==="on")return!0;if(this.dialogPanelMode==="off")return!1;if(!this.overlayMode||this.layoutMode==="vertical")return!0;const e=qt().inScript;let n=!0;return Io().isTransitioning&&ot().dialogPanel.hideDuringTransition&&(n=!1),!ot().dialogPanel.showAfterScriptEnd&&!e&&(n=!1),n},container(){return this.containerElement?this.containerElement:document.body},inputsContainer(){return qt().hasCustomContainer?this.container:window},narratApp(){return this.narratAppElement?this.narratAppElement:document.body}}});var Fr=(t=>(t.Arrow_Left="Arrow_Left",t.Arrow_Right="Arrow_Right",t.Arrow_Up="Arrow_Up",t.Arrow_Down="Arrow_Down",t.Enter="Enter",t.Escape="Escape",t.Space="Space",t.Backspace="Backspace",t.Key_A="Key_A",t.Key_B="Key_B",t.Key_C="Key_C",t.Key_D="Key_D",t.Key_E="Key_E",t.Key_F="Key_F",t.Key_G="Key_G",t.Key_H="Key_H",t.Key_I="Key_I",t.Key_J="Key_J",t.Key_K="Key_K",t.Key_L="Key_L",t.Key_M="Key_M",t.Key_N="Key_N",t.Key_O="Key_O",t.Key_P="Key_P",t.Key_Q="Key_Q",t.Key_R="Key_R",t.Key_S="Key_S",t.Key_T="Key_T",t.Key_U="Key_U",t.Key_V="Key_V",t.Key_W="Key_W",t.Key_X="Key_X",t.Key_Y="Key_Y",t.Key_Z="Key_Z",t))(Fr||{}),lr=(t=>(t.Dpad_Up="Dpad_Up",t.Dpad_Down="Dpad_Down",t.Dpad_Left="Dpad_Left",t.Dpad_Right="Dpad_Right",t.Left_Thumbstick_Up="Left_Thumbstick_Up",t.Left_Thumbstick_Down="Left_Thumbstick_Down",t.Left_Thumbstick_Left="Left_Thumbstick_Left",t.Left_Thumbstick_Right="Left_Thumbstick_Right",t.Left_Thumbstick_Press="Left_Thumbstick_Press",t.Right_Thumbstick_Up="Right_Thumbstick_Up",t.Right_Thumbstick_Down="Right_Thumbstick_Down",t.Right_Thumbstick_Left="Right_Thumbstick_Left",t.Right_Thumbstick_Right="Right_Thumbstick_Right",t.Right_Thumbstick_Press="Right_Thumbstick_Press",t.FaceButton_Left="FaceButton_Left",t.FaceButton_Right="FaceButton_Right",t.FaceButton_Top="FaceButton_Top",t.FaceButton_Bottom="FaceButton_Bottom",t.Shoulder_Left="Shoulder_Left",t.Shoulder_Right="Shoulder_Right",t.Trigger_Button_Left="Trigger_Button_Left",t.Trigger_Button_Right="Trigger_Button_Right",t.Special_Left="Special_Left",t.Special_Right="Special_Right",t.Special_Third="Special_Third",t))(lr||{});const xV={Left_Thumbstick_X:["Left_Thumbstick_Left","Left_Thumbstick_Right"],Left_Thumbstick_Y:["Left_Thumbstick_Up","Left_Thumbstick_Down"],Right_Thumbstick_X:["Right_Thumbstick_Left","Right_Thumbstick_Right"],Right_Thumbstick_Y:["Right_Thumbstick_Up","Right_Thumbstick_Down"]},eC={0:"FaceButton_Bottom",1:"FaceButton_Right",2:"FaceButton_Left",3:"FaceButton_Top",4:"Shoulder_Left",5:"Shoulder_Right",6:"Trigger_Button_Left",7:"Trigger_Button_Right",8:"Special_Left",9:"Special_Right",10:"Left_Thumbstick_Press",11:"Right_Thumbstick_Press",12:"Dpad_Up",13:"Dpad_Down",14:"Dpad_Left",15:"Dpad_Right",16:"Special_Third"},$V={0:"Left_Thumbstick_X",1:"Left_Thumbstick_Y",2:"Right_Thumbstick_X",3:"Right_Thumbstick_Y"},_V=Object.fromEntries(Object.entries(eC).map(([t,e])=>[e,parseInt(t)])),tC={ArrowLeft:"Arrow_Left",ArrowRight:"Arrow_Right",ArrowUp:"Arrow_Up",ArrowDown:"Arrow_Down",Enter:"Enter",Escape:"Escape",Space:"Space",Backspace:"Backspace",a:"Key_A",b:"Key_B",c:"Key_C",d:"Key_D",e:"Key_E",f:"Key_F",g:"Key_G",h:"Key_H",i:"Key_I",j:"Key_J",k:"Key_K",l:"Key_L",m:"Key_M",n:"Key_N",o:"Key_O",p:"Key_P",q:"Key_Q",r:"Key_R",s:"Key_S",t:"Key_T",u:"Key_U",v:"Key_V",w:"Key_W",x:"Key_X",y:"Key_Y",z:"Key_Z"},jV=Object.fromEntries(Object.entries(tC).map(([t,e])=>[e,t])),Wp=.3;class CV extends EventTarget{constructor(){super(...arguments);Un(this,"gamepadAvailable",!0);Un(this,"gameActions",{});Un(this,"keyboardState",{});Un(this,"actions",{});Un(this,"lastInputMethodUsed","km");Un(this,"gamepad",null)}kbEvent(){this.changeLastInput("km")}getGamepads(){return navigator.getGamepads?navigator.getGamepads():(this.gamepadAvailable=!1,[])}gamepadEvent(){this.changeLastInput("gamepad")}mouseEvent(){this.changeLastInput("km")}changeLastInput(n){this.lastInputMethodUsed!==n&&(this.lastInputMethodUsed=n,this.dispatchEvent(new CustomEvent("change-input",{detail:n})))}getGamepad(){const n=this.getGamepads().filter(r=>r!==null);if(n.length>0)return n[0]}startListening(){this.updateGamepad();const n=Br().inputsContainer;n.addEventListener("mousemove",r=>{this.mouseEvent()}),n.addEventListener("keydown",r=>{this.kbEvent();const i=this.getKeyboardKeyFromEventKey(r.key);if(i){const o=this.getKeyboardKeyString(i),s=this.getKeyboardState(o).current;this.keyboardState[o]={previous:s,current:!0}}}),n.addEventListener("keyup",r=>{this.kbEvent();const i=this.getKeyboardKeyFromEventKey(r.key);if(i){const o=this.getKeyboardKeyString(i),s=this.getKeyboardState(o).current;this.keyboardState[o]={previous:s,current:!1}}}),bd.on("preUpdate",()=>{this.update()})}updateGamepad(){const n=this.getGamepad();n?this.gamepad?this.updateAllNarratButtons(n,this.gamepad):this.gamepad=this.setupNarratGamepad(n):this.gamepad=null}mapAxisToGamepadButton(n,r){const i=xV,o=$V[n];if(o&&i[o]){const[s,a]=i[o],l=Math.abs(r),c=r<0,f=r>0,u={key:s,state:{pressed:c&&l>Wp,touched:c&&l>Wp,value:c?l:0},previous:{pressed:!1,touched:!1,value:0}},d={key:a,state:{pressed:f&&l>Wp,touched:f&&l>Wp,value:f?l:0},previous:{pressed:!1,touched:!1,value:0}};return[u,d]}else return ft(`No mapping found for axis ${n}`),null}mapAllAxisToGamepadButtons(n,r){const i=[];for(const[o,s]of r.axes.entries()){const a=this.mapAxisToGamepadButton(o,s);a&&(n.length>o&&(a[0].previous=n[0].state,a[1].previous=n[1].state),i.push(...a))}return i}setupNarratGamepad(n){return{id:n.id,gamepad:n,buttons:n.buttons.map((i,o)=>this.getNarratButtonFromGamepad(i,i,o)),axes:n.axes.map((i,o)=>({index:o,value:i,previous:i})),axesButtons:this.mapAllAxisToGamepadButtons([],n)}}updateAllNarratButtons(n,r){for(const[i,o]of n.buttons.entries()){const s=r.buttons[i];s.previous=yn(s.state),s.state=yn(o),s.previous.pressed!==s.state.pressed&&this.gamepadEvent()}for(const[i,o]of n.axes.entries()){const s=r.axes[i];s.previous=s.value,s.value=o,s.previous!==s.value&&this.gamepadEvent()}r.axesButtons=this.mapAllAxisToGamepadButtons(r.axesButtons,n)}getNarratButtonFromGamepad(n,r,i){return{index:i,state:yn(r),previous:yn(r)}}addAction(n){if(this.gameActions[n.id]=n,n.type==="button"){const r={config:n,active:!1,justPressed:!1,justReleased:!1};this.actions[n.id]={state:r,previous:yn(r)}}else{const r={config:n,value:Be.Vec2.create(0,0),fullState:{left:0,right:0,up:0,down:0}};this.actions[n.id]={state:r,previous:yn(r)}}}getAnalog(n){return this.actions[n]||ft(`Action ${n} does not exist`),this.actions[n].state}getButton(n){return this.actions[n]||ft(`Action ${n} does not exist`),this.actions[n].state}getKeyboardState(n){return this.keyboardState[n]?this.keyboardState[n]:(this.keyboardState[n]={current:!1,previous:!1},this.keyboardState[n])}getGamepadState(n){const r=this.getGamepadButtonIndex(n);if(this.gamepad&&this.gamepad.buttons.length>r)return{current:this.gamepad.buttons[r].state,previous:this.gamepad.buttons[r].previous};if(this.gamepad&&this.gamepad.axesButtons){const i=this.gamepad.axesButtons.find(o=>o.key===n);if(i)return{current:i.state,previous:i.previous}}return null}debugGamepad(){if(this.gamepad){for(const[n,r]of this.gamepad.buttons.entries())r.state.pressed,r.previous.pressed;if(this.gamepad.axesButtons)for(const n of this.gamepad.axesButtons)n.state.pressed,n.previous.pressed}}getKeybindKey(n,r){const i=n.id,o=ot().hotkeys[i];return typeof o<"u"?{...r,keyboardKey:o}:r}update(){this.updateGamepad(),this.debugGamepad();for(const n of Object.values(this.gameActions))if(n.type==="button"){const r=this.actions[n.id],i=yn(r.state),o=r.state;r.previous=i,n.action==="press"&&(n.keybinds.some(a=>{let l=!1;if(a=this.getKeybindKey(n,a),a.keyboardKey!==void 0&&this.lastInputMethodUsed==="km"){const c=this.getKeyboardKeyString(a.keyboardKey);this.getKeyboardState(c).current===!0&&(l=!0)}if(a.gamepadKey!==void 0&&this.lastInputMethodUsed==="gamepad"){const c=this.getGamepadState(a.gamepadKey);c&&c.current.pressed===!0&&(l=!0)}return l})?o.active=!0:o.active=!1,o.active&&!i.active?o.justPressed=!0:o.justPressed=!1,!o.active&&i.active?o.justReleased=!0:o.justReleased=!1)}else if(n.type==="analog"){const r=this.actions[n.id],i=r.state;yn(r.state),r.previous=yn(i);let o=Be.Vec2.create(0,0);n.keybinds.forEach(s=>{this.getKeyboardState(this.getKeyboardKeyString(s.left)).current&&(i.fullState.left=1,o.x-=1),this.getKeyboardState(this.getKeyboardKeyString(s.right)).current&&(i.fullState.right=1,o.x+=1),this.getKeyboardState(this.getKeyboardKeyString(s.up)).current&&(i.fullState.up=1,o.y-=1),this.getKeyboardState(this.getKeyboardKeyString(s.down)).current&&(i.fullState.down=1,o.y+=1)}),o=Be.Vec2.normalize(o),i.value=o}}getKeyboardKeyFromEventKey(n){return tC[n]}getKeyboardKeyString(n){return jV[n]}getGamepadButtonIndex(n){return _V[n]}getGamepadKeyFromIndex(n){return eC[n]}}const zs=new CV,gi=Rr("menu",{state:()=>({menus:{},activeMenu:!1}),getters:{showSkills(){return Object.entries(Ks().skills).length>0},showInventory(){return Object.entries(wm().items).length>0},showQuests(){return Object.entries(Ld().quests).length>0},showAchievements(){return Object.entries(Dd().achievements).length>0},menuTabsToShow(t){return t.menus.menu.tabs.map(e=>{const n=ot().menuButtons[e.id]||{};return{...e,...n}}).filter(e=>e.condition?e.condition():!0)},menu(t){return t.activeMenu?t.menus[t.activeMenu]:void 0},tab(){if(this.menu)return this.menu.tabs[this.menu.activeTab]}},actions:{setup(){},addMenu(t,e){this.menus[t]={...e,id:t}},addMenuOption(t,e){this.menus[t]||(this.menus[t]={id:t,label:t,tabs:[],activeTab:0}),this.menus[t].tabs.push(e)},setActiveTab(t){this.menu&&(this.menu.activeTab=t)},openMenu(t){this.activeMenu=t},closeMenu(){this.activeMenu=!1},toggleMenu(){this.activeMenu?this.activeMenu=!1:this.activeMenu="menu"},reset(){this.activeMenu=!1}}}),TV=[{id:"movement",type:"button",label:"Choose",keyboardIcon:"img/ui/button-prompts/keyboard/key-arrows.png",gamepadIcon:"img/ui/button-prompts/gamepad/dpad.png",action:"press",showInLegend:!0,keybinds:[{keyboardKey:Fr.Arrow_Left,gamepadKey:lr.Dpad_Left}]},{id:"left",type:"button",label:"Left",keyboardIcon:"img/ui/button-prompts/keyboard/arrow-left.png",gamepadIcon:"img/ui/button-prompts/gamepad/dpad-left.png",action:"press",showInLegend:!1,keybinds:[{keyboardKey:Fr.Arrow_Left,gamepadKey:lr.Dpad_Left},{gamepadKey:lr.Left_Thumbstick_Left}]},{id:"right",type:"button",action:"press",label:"Right",keyboardIcon:"img/ui/button-prompts/keyboard/arrow-right.png",gamepadIcon:"img/ui/button-prompts/gamepad/dpad-right.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Arrow_Right,gamepadKey:lr.Dpad_Right},{gamepadKey:lr.Left_Thumbstick_Right}]},{id:"up",type:"button",action:"press",label:"Up",keyboardIcon:"img/ui/button-prompts/keyboard/arrow-up.png",gamepadIcon:"img/ui/button-prompts/gamepad/dpad-up.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Arrow_Up,gamepadKey:lr.Dpad_Up},{gamepadKey:lr.Left_Thumbstick_Up}]},{id:"down",type:"button",action:"press",label:"Down",keyboardIcon:"img/ui/button-prompts/keyboard/arrow-down.png",gamepadIcon:"img/ui/button-prompts/gamepad/dpad-down.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Arrow_Down,gamepadKey:lr.Dpad_Down},{gamepadKey:lr.Left_Thumbstick_Down}]},{id:"scroll",type:"button",action:"press",label:"Scroll",gamepadIcon:"img/ui/button-prompts/gamepad/xbox_stick_r_vertical.png",showInLegend:!0,keybinds:[]},{id:"continue",type:"button",action:"press",label:"Continue",keyboardIcon:"img/ui/button-prompts/keyboard/key-space.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-down.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Space,gamepadKey:lr.FaceButton_Bottom}]},{id:"confirm",type:"button",action:"press",label:"Confirm",keyboardIcon:"img/ui/button-prompts/keyboard/key-enter.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-down.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Enter,gamepadKey:lr.FaceButton_Bottom}]},{id:"cancel",type:"button",action:"press",label:"Cancel",keyboardIcon:"img/ui/button-prompts/keyboard/key-escape.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-right.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Escape,gamepadKey:lr.FaceButton_Right}]},{id:"system",type:"button",action:"press",label:"System Menu",keyboardIcon:"img/ui/button-prompts/keyboard/key-n.png",gamepadIcon:"img/ui/button-prompts/gamepad/special-right.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Key_N,gamepadKey:lr.Special_Right}]},{id:"menu",type:"button",action:"press",label:"Game Menu",keyboardIcon:"img/ui/button-prompts/keyboard/key-m.png",gamepadIcon:"img/ui/button-prompts/gamepad/special-left.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Key_M,gamepadKey:lr.Special_Left}]},{id:"previousTab",type:"button",action:"press",label:"Previous",keyboardIcon:"img/ui/button-prompts/keyboard/key-p.png",gamepadIcon:"img/ui/button-prompts/gamepad/shoulder-left.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_P,gamepadKey:lr.Shoulder_Left}]},{id:"nextTab",type:"button",action:"press",label:"Next",keyboardIcon:"img/ui/button-prompts/keyboard/key-o.png",gamepadIcon:"img/ui/button-prompts/gamepad/shoulder-right.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_O,gamepadKey:lr.Shoulder_Right}]},{id:"subPreviousTab",type:"button",action:"press",label:"Previous Tab",keyboardIcon:"img/ui/button-prompts/keyboard/key-i.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-left.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_I,gamepadKey:lr.Trigger_Button_Left}]},{id:"subNextTab",type:"button",action:"press",label:"Next Tab",keyboardIcon:"img/ui/button-prompts/keyboard/key-u.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-right.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_U,gamepadKey:lr.Trigger_Button_Right}]},{id:"viewportSelect",type:"button",action:"press",label:"Interact",keyboardIcon:"img/ui/button-prompts/keyboard/key-v.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-left.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_V,gamepadKey:lr.FaceButton_Left}]},{id:"autoPlay",type:"button",action:"press",label:"Toggle Autoplay",keyboardIcon:"img/ui/button-prompts/keyboard/key-a.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-left.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Key_A,gamepadKey:lr.Trigger_Button_Left}]},{id:"skip",type:"button",action:"press",label:"Skip",keyboardIcon:"img/ui/button-prompts/keyboard/key-s.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-right.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Key_S,gamepadKey:lr.Trigger_Button_Right}]},{id:"sliderControl",type:"button",action:"press",label:"Control Slider",keyboardIcon:"img/ui/button-prompts/keyboard/key-v.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-left.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_E,gamepadKey:lr.FaceButton_Left}]},{id:"sliderRelease",type:"button",action:"press",label:"Release Slider",keyboardIcon:"img/ui/button-prompts/keyboard/key-b.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-right.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_B,gamepadKey:lr.FaceButton_Right}]},{id:"sliderDecrease",type:"button",action:"press",label:"Decrease Slider",keyboardIcon:"img/ui/button-prompts/keyboard/key-minus.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-left.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Arrow_Left,gamepadKey:lr.Dpad_Left},{gamepadKey:lr.Left_Thumbstick_Left}]},{id:"sliderIncrease",type:"button",action:"press",label:"Increase Slider",keyboardIcon:"img/ui/button-prompts/keyboard/key-plus.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-right.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Arrow_Left,gamepadKey:lr.Dpad_Left},{gamepadKey:lr.Left_Thumbstick_Right}]}],On=Rr("inputs",{state:()=>({inputStack:[],baseInputListener:null,inputMode:"km",isTyping:!1,inGameInputListener:null}),actions:{setupInputs(){zs.addEventListener("change-input",t=>{this.inputMode=t.detail});for(const t of TV)zs.addAction(t);this.listenToBaseNarratInputs(),bd.on("preUpdate",()=>{for(const[t,e]of Object.entries(zs.actions))if(e.state.config.type==="button"){const n=e;n.state.justPressed&&this.triggerListeners(t,"press",n),n.state.justReleased&&this.triggerListeners(t,"release",n)}else e.state.config.type})},createInGameInputListener(){this.inGameInputListener||(this.inGameInputListener=this.registerInputListener("in-game",{system:{press:()=>{gi().openMenu("system")}},menu:{press:()=>{gi().openMenu("menu")}}}))},startTyping(){this.isTyping=!0},stopTyping(){this.isTyping=!1},removeInGameInputListener(){this.inGameInputListener&&(this.unregisterInputListener(this.inGameInputListener),this.inGameInputListener=null)},listenToContainerInputs(){zs.startListening()},listenToBaseNarratInputs(){},getAction(t){return zs.gameActions[t]},triggerListeners(t,e,n){let r=this.inputStack.length-1,i=!1;for(;!i&&r>=0;){const o=this.inputStack[r];if(o!=null&&o.cascadeDown||(i=!0),r--,!!o&&o.actions[t]&&o.actions[t][e])if(n.state.config.type==="button"){const s=o.actions[t][e],a=n;s(n.state.config,a.state,a.previous)}else console.warn("Analog events not implemented yet")}},getInputs(){return zs},registerInputListener(t,e,n=!1){const i={id:`${Date.now()}-${Math.floor(Math.random()*1e8)}`,name:t,actions:e??{},cascadeDown:n};return this.inputStack.push(i),i},unregisterInputListener(t){const e=this.inputStack.findIndex(n=>n.id===t.id);if(e===-1)throw new Error("Input listener not found");this.inputStack.splice(e,1)},registerActions(t,e,n){t.actions[e]=n},getInputEvents(t){const e=this.inputStack[this.inputStack.length-1];return e?e.actions[t]??null:null},isInputActive(t){const e=this.getInputEvents(t);return e?typeof e.active=="boolean"?e.active:!0:!1}},getters:{isGamepad(t){return t.inputMode==="gamepad"},isKeyboard(t){return t.inputMode==="km"},showPrompts(t){var e,n;return t.inputMode==="gamepad"&&((e=ot().input)==null?void 0:e.showPromptsOnGamepad)!==!1||t.inputMode==="km"&&((n=ot().input)==null?void 0:n.showPromptsOnKeyboard)!==!1},allListeners(t){return t.inputStack.map(e=>Object.keys(e.actions)).flat().filter((e,n,r)=>r.indexOf(e)===n)},inputLegend(t){return this.allListeners.filter(e=>{const n=this.inputStack[this.inputStack.length-1];if(!n)return null;const r=n.actions[e]??null;if(!r||r.active===!1)return!1;const i=zs.gameActions[e];return i!=null&&i.showInLegend?t.inputMode==="gamepad"?i.gamepadIcon!==void 0:i.keyboardIcon!==void 0:!1})}}}),ao=Rr("scenes-store",{state:()=>({scenes:{},activeScene:cs.EngineSplash,currentOptions:{}}),getters:{isPlaying(t){return t.activeScene!==cs.EngineSplash&&t.activeScene!==cs.GameSplash&&t.activeScene!==cs.StartMenu}},actions:{generateSaveData(){return{activeScene:this.activeScene}},loadSaveData(t){},changeScene(t,e){const n=this.activeScene;if(n&&n!==t){const r=this.scenes[n];r.onLeaving&&r.onLeaving(),this.currentOptions={},this.activeScene=t,this.currentOptions=e||{},this.scenes[t].onStarting&&this.scenes[t].onStarting()}},getSceneConfig(t){return this.scenes[t]},onEngineSplashFinished(){this.goToGameSplashScene()},finishedScene(t){this.scenes[t].onFinished&&this.scenes[t].onFinished()},goToGameSplashScene(){let t=cs.GameSplash;ot().scenes.gameSplashScene&&(t=ot().scenes.gameSplashScene),this.changeScene(t)},goToStartMenuScene(){let t=cs.StartMenu;ot().scenes.startMenuScene&&(t=ot().scenes.startMenuScene),this.changeScene(t)},goToGameScene(){let t=cs.Playing;ot().scenes.gameScene&&(t=ot().scenes.gameScene),this.changeScene(t)},addNewScene(t){this.scenes[t.id]=t}}}),OV={id:"game-splash-screen",style:{height:"100%",padding:"20px"},class:"flex justify-center items-center"},EV={id:"game-splash-screen-header flex justify-center flex-col items-center",class:"flex justify-center flex-col items-center"},AV={class:"title",id:"game-splash-title"},Fy=g.defineComponent({__name:"game-splash",setup(t){const e=g.ref(null),n=qt(),r=g.computed(()=>{var l;return((l=ot().splashScreens)==null?void 0:l.gameSplashScreen)??{}}),i=g.computed(()=>typeof r.value.startButtonText=="string"?r.value.startButtonText:"Press to start"),o=g.computed(()=>n.loading.loaded),s=g.computed(()=>ot().gameTitle||"Narrat Game");function a(){ao().goToStartMenuScene()}return g.onMounted(()=>{e.value=On().registerInputListener("game-splash",{confirm:{press:()=>{a()}},system:{press:()=>{a()}}}),n.options.debug&&a()}),g.onUnmounted(()=>{e.value&&On().unregisterInputListener(e.value)}),(l,c)=>(g.openBlock(),g.createElementBlock("div",OV,[g.createElementVNode("div",EV,[g.createElementVNode("h1",AV,g.toDisplayString(s.value),1),o.value?(g.openBlock(),g.createElementBlock("button",{key:0,class:"nrt-button menu-button main-menu-button large splash-start-button override",onClick:a},g.toDisplayString(i.value),1)):g.createCommentVNode("",!0)])]))}});function gl(t){if(!t.listener)return console.warn("No input listener provided for navigation"),null;const e=g.ref(-1),n=g.computed(()=>t.mode==="grid"?e.value%t.columns:0),r=g.ref([]),i=g.ref(zs.lastInputMethodUsed),o=g.ref(null);function s(){var L,B;return(L=t.container)!=null&&L.value?t.container.value.children:(B=t.elements)!=null&&B.value?t.elements.value.filter(V=>V!==null):[]}function a(){r.value=s()}const l=g.computed(()=>u(e.value));function c(L){return r.value?L>=0&&L<r.value.length:!1}function f(L){const B=e.value;if(c(L)&&(e.value=L,l.value)){i.value==="gamepad"&&l.value.classList.add("selected");const V=u(B);V&&B!==L&&V.classList.remove("selected"),t.onSelected&&t.onSelected(L)}}function u(L){return r.value?r.value[L]:null}function d(){r.value&&(e.value===0?t.loopForbidden||f(r.value.length-1):f(e.value-1))}function h(){r.value&&(e.value===r.value.length-1?t.loopForbidden||f(0):f(e.value+1))}function p(){if(!r.value)return;const L=t,B=e.value;!t.loopForbidden&&B<L.columns?f(r.value.length-1):f(e.value-t.columns)}function m(){if(!r.value)return;const L=t,B=e.value;!t.loopForbidden&&B>=r.value.length-L.columns?f(0):f(e.value+t.columns)}function y(){t.mode==="grid"?p():t.mode==="list"&&d()}function v(){t.mode==="grid"?m():t.mode==="list"&&h()}function b(){(t.mode==="grid"||t.mode==="list")&&d()}function S(){(t.mode==="grid"||t.mode==="list")&&h()}function _(){t.onChosen&&t.onChosen(e.value)}g.onMounted(()=>{R()});function x(){t.listener&&(t.onlyVertical||(delete t.listener.actions.left,delete t.listener.actions.right),t.onlyHorizontal||(delete t.listener.actions.up,delete t.listener.actions.down),t.noChoosing||delete t.listener.actions.confirm,o.value&&zs.removeEventListener("change-input",o.value))}function T(){l.value&&l.value.classList.add("selected")}function E(){l.value&&l.value.classList.remove("selected")}function R(){t.listener&&(a(),o.value=L=>{i.value=L.detail,L.detail==="gamepad"?T():E()},zs.addEventListener("change-input",o.value),t.onlyVertical||(t.listener.actions.left={press:b},t.listener.actions.right={press:S}),t.onlyHorizontal||(t.listener.actions.up={press:y},t.listener.actions.down={press:v}),t.noChoosing||(t.listener.actions.confirm={press:_}),f(0))}return g.onUnmounted(()=>{x()}),g.watch(()=>{var L;return(L=t.elements)==null?void 0:L.value},L=>{L&&a()}),{selectedIndex:e,selectedElement:l,currentColumn:n,buttonDown:v,buttonUp:y,buttonLeft:b,buttonRight:S,selectUp:p,selectDown:m,selectPrevious:d,selectNext:h,select:f,disable:x,mount:R}}const PV={class:"used-save-slot flex flex-row justify-between items-center grow"},MV={class:"flex flex-col save-slot-number-container"},IV={class:"save-slot-number"},NV={class:"flex flex-col justify-center save-info"},RV={key:1,class:"save-name"},LV={class:"flex flex-col"},DV={key:0},BV={key:1},FV={key:2},VV=["onClick"],Vy=g.defineComponent({__name:"save-slot-ui",props:{saveSlot:{},id:{},actions:{},selected:{type:Boolean},inputListener:{}},emits:["choice","cancel"],setup(t,{expose:e,emit:n}){var _;const r=t,i=g.ref(null),o=g.ref(null),s=g.ref(null);e({slotContainer:s});const a=g.ref(((_=r.saveSlot.saveData)==null?void 0:_.metadata.name)??"Empty Save"),l=g.ref(0),c=g.computed(()=>r.saveSlot.saveData!==null),f=g.computed(()=>r.saveSlot.saveData),u=g.computed(()=>ot().saves.mode),d=g.computed(()=>{const x=r.saveSlot.saveData;if(x&&x.screens.layers[0]){const T=Nu(x.screens.layers[0]);if(T)return{backgroundImage:`url(${La(T.background)})`}}return!1}),h=n;function p(x){h("choice",x)}function m(x){return f.value?iy(f.value.main.playTime/1e3):"00:00:00"}function y(){f.value&&gB(r.saveSlot.id,a.value)}function v(){const x=ot().saves.slots;let T="";const E=r.saveSlot.slotNumber;return E===0&&ot().saves.mode==="manual"?"AUTO":(x>=10&&E<10&&(T+="0"),x>=100&&E<100&&(T+="0"),T+E)}function b(){i.value=gl({mode:"list",container:o,listener:r.inputListener,onlyHorizontal:!0,onSelected:x=>{l.value=x},onChosen:x=>{p(x)}}),i.value.mount()}function S(){i.value.disable(),i.value=null}return g.watch(()=>r.selected,(x,T)=>{x&&!i.value&&b(),!x&&i.value&&S()}),g.onUnmounted(()=>{i.value&&S()}),(x,T)=>(g.openBlock(),g.createElementBlock("div",{class:"save-slot flex flex-row",ref_key:"slotContainer",ref:s},[g.createElementVNode("div",PV,[g.createElementVNode("div",MV,[g.createElementVNode("h1",IV,g.toDisplayString(v()),1)]),d.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"save-slot-screenshot",style:g.normalizeStyle(d.value)},null,4)):g.createCommentVNode("",!0),g.createElementVNode("div",NV,[c.value?g.withDirectives((g.openBlock(),g.createElementBlock("input",{key:0,type:"text",class:"save-name","onUpdate:modelValue":T[0]||(T[0]=E=>a.value=E),onInput:y},null,544)),[[g.vModelText,a.value]]):(g.openBlock(),g.createElementBlock("h3",RV,g.toDisplayString(a.value),1)),g.createElementVNode("div",LV,[f.value?(g.openBlock(),g.createElementBlock("p",DV,g.toDisplayString(new Date(f.value.metadata.saveDate).toLocaleString()),1)):g.createCommentVNode("",!0),f.value?(g.openBlock(),g.createElementBlock("p",BV,"Play time: "+g.toDisplayString(m(x.saveSlot)),1)):g.createCommentVNode("",!0),u.value==="game-slots"?(g.openBlock(),g.createElementBlock("p",FV,g.toDisplayString(x.saveSlot.slotType==="auto"?"Auto Save":"Manual Save"),1)):g.createCommentVNode("",!0)])]),g.createElementVNode("div",{class:"flex flex-row",ref_key:"actionsContainer",ref:o},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(x.actions,(E,R)=>(g.openBlock(),g.createElementBlock("button",{class:g.normalizeClass(["nrt-button",{selected:x.selected&&R===l.value}]),onClick:()=>p(R),key:R},[g.createElementVNode("h3",null,g.toDisplayString(E),1)],10,VV))),128))],512)])],512))}}),zV=g.createElementVNode("h3",{class:"title"},"Confirmation",-1),Gp=g.defineComponent({__name:"yes-no",props:{prompt:{type:String,required:!0},onConfirm:{type:Function,required:!1},onRefuse:{type:Function,required:!1}},emits:["choice"],setup(t,{emit:e}){const n=g.ref(On().registerInputListener("yes-no",{cancel:{press:()=>{s(!1)}},confirm:{press:()=>{s(!0)}}})),r=g.ref(null);gl({mode:"list",container:r,listener:n.value,onChosen:a=>{s(a===0)}});const i=t,o=e;function s(a){a===!0&&i.onConfirm?i.onConfirm():a===!1&&i.onRefuse&&i.onRefuse(),o("choice",a)}return g.onMounted(()=>{}),g.onUnmounted(()=>{n.value&&On().unregisterInputListener(n.value)}),(a,l)=>(g.openBlock(),g.createBlock(Aa,{onClose:l[2]||(l[2]=()=>s(!1)),containerCssClass:"yes-no-modal"},{header:g.withCtx(()=>[zV]),body:g.withCtx(()=>[g.createElementVNode("h3",null,g.toDisplayString(t.prompt),1),g.createElementVNode("div",{class:"flex justify-center",ref_key:"buttonsContainer",ref:r},[g.createElementVNode("button",{class:"nrt-button",onClick:l[0]||(l[0]=()=>s(!0))},"Yes"),g.createElementVNode("button",{class:"nrt-button",onClick:l[1]||(l[1]=()=>s(!1))},"No")],512)]),_:1}))}}),qV={class:"nrt-title"},UV={key:0},HV={class:"saves-section"},KV=g.createElementVNode("h3",{class:"saves-section-title"},"Auto save",-1),WV={class:"saves-section"},GV=g.createElementVNode("h3",{class:"saves-section-title"},"Manual Saves",-1),JV={key:1,class:"saves-section"},QV=g.createElementVNode("h3",{class:"saves-section-title"},"Save Slots",-1),YV={class:"saves-container flex flex-col"},nC=g.defineComponent({__name:"save-slots",props:{mode:{}},emits:["chosen","close"],setup(t,{emit:e}){const n=t,r=g.ref(On().registerInputListener("save-slots",{cancel:{press:()=>{R()}}})),i=g.ref(0),o=g.reactive([]),s=g.computed(()=>o.slice(0,1)),a=g.computed(()=>o.slice(1)),l=g.ref([]),c=g.ref([]),f=g.ref([]),u=g.ref([]),d=g.ref([]);g.ref({mode:"list",elements:u,listener:r.value,onlyVertical:!0,noChoosing:!0,onSelected:V=>{i.value=V}});const h=gl({mode:"list",elements:u,listener:r.value,onlyVertical:!0,noChoosing:!0,onSelected:V=>{i.value=V}}),p=g.computed(()=>{const V=i.value;return d.value.length<V+1?null:d.value[V].id}),m=g.reactive(n.mode==="load"?["Load","Delete"]:["Choose"]),y=g.computed(()=>ot().saves.mode),v=g.reactive({prompt:"Are you sure you want to delete this save file?",saveToDelete:null,onConfirm:()=>{E(v.saveToDelete),v.saveToDelete=null},onRefuse:()=>{v.saveToDelete=null}}),b=g.reactive({prompt:"Are you sure you want to overwrite this save file?",saveToOverwrite:null,onConfirm:()=>{x(b.saveToOverwrite),b.saveToOverwrite=null},onRefuse:()=>{b.saveToOverwrite=null}}),S=e;g.onBeforeMount(()=>{Ls().slots.forEach((U,F)=>{o[F]=U})});function _(){u.value=y.value==="manual"?[...c.value.map(D=>D.slotContainer),...f.value.map(D=>D.slotContainer)]:l.value.map(D=>D.slotContainer);const V=y.value==="manual"?[...s.value,...a.value]:o;d.value=V.map(D=>({id:D.id}))}g.onMounted(()=>{_()}),g.onUnmounted(()=>{h.value&&(h.value.disable(),h.value=null),r.value&&On().unregisterInputListener(r.value)});function x(V){S("chosen",{slotId:V})}function T(V){const D=B(V);if(D){if(ot().saves.mode==="manual"&&D.slotType==="auto"){qt().alert("Sorry","Can't delete the auto save slot!");return}v.saveToDelete=V}}function E(V){mB(V);const D=o.find(U=>U.id===V);D&&(D.saveData=null),_()}function R(){S("close")}function L(V,D){const U=m[D];U==="Load"?x(V):U==="Delete"?T(V):U==="Choose"&&(b.saveToOverwrite=V)}function B(V){return o.find(D=>D.id===V)}return(V,D)=>(g.openBlock(),g.createBlock(Aa,{onClose:R,containerCssClass:"save-modal",cantClose:!1},{header:g.withCtx(()=>[g.createElementVNode("h3",qV,g.toDisplayString(V.mode==="load"?"Choose a save to load":"Pick a slot to save the game"),1)]),body:g.withCtx(()=>[y.value==="manual"?(g.openBlock(),g.createElementBlock("div",UV,[g.createElementVNode("div",HV,[KV,g.createVNode(g.TransitionGroup,{name:"list",tag:"div"},{default:g.withCtx(()=>[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(s.value,U=>(g.openBlock(),g.createBlock(Vy,{key:U.id,saveSlot:U,id:U.id,actions:m,onChoice:F=>L(U.id,F),inputListener:r.value,selected:p.value===U.id,ref_for:!0,ref_key:"autoSlotsElements",ref:c},null,8,["saveSlot","id","actions","onChoice","inputListener","selected"]))),128))]),_:1})]),g.createElementVNode("div",WV,[GV,g.createVNode(g.TransitionGroup,{name:"list",tag:"div"},{default:g.withCtx(()=>[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(a.value,U=>(g.openBlock(),g.createBlock(Vy,{key:U.id,saveSlot:U,id:U.id,actions:m,onChoice:F=>L(U.id,F),inputListener:r.value,selected:p.value===U.id,ref_for:!0,ref_key:"manualSlotsElements",ref:f},null,8,["saveSlot","id","actions","onChoice","inputListener","selected"]))),128))]),_:1})])])):(g.openBlock(),g.createElementBlock("div",JV,[QV,g.createElementVNode("div",YV,[g.createVNode(g.TransitionGroup,{name:"list",tag:"div"},{default:g.withCtx(()=>[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(o,U=>(g.openBlock(),g.createBlock(Vy,{key:U.id,saveSlot:U,id:U.id,actions:m,onChoice:F=>L(U.id,F),selected:p.value===U.id,inputListener:r.value,ref_for:!0,ref_key:"saveSlotsElements",ref:l},null,8,["saveSlot","id","actions","onChoice","selected","inputListener"]))),128))]),_:1})])])),v.saveToDelete?(g.openBlock(),g.createBlock(Gp,{key:2,prompt:v.prompt,onRefuse:v.onRefuse,onConfirm:v.onConfirm},null,8,["prompt","onRefuse","onConfirm"])):g.createCommentVNode("",!0),b.saveToOverwrite?(g.openBlock(),g.createBlock(Gp,{key:3,prompt:b.prompt,onRefuse:b.onRefuse,onConfirm:b.onConfirm},null,8,["prompt","onRefuse","onConfirm"])):g.createCommentVNode("",!0)]),_:1}))}}),XV=g.defineComponent({__name:"start-menu-button",props:{button:{}},emits:["click"],setup(t){return(e,n)=>(g.openBlock(),g.createElementBlock("button",{class:g.normalizeClass(["nrt-button menu-button main-menu-button large override",e.button.cssClass]),onClick:n[0]||(n[0]=r=>e.$emit("click"))},g.toDisplayString(e.button.title),3))}});class zy extends Kp{setup(e=!1){const r=e?"keydown":"keyup",i=wd(s=>{No.emit("debouncedKeydown",s)},10,{isImmediate:!0,maxWait:10}),o=Br().inputsContainer;o.addEventListener("keydown",s=>{No.emit("keydown",s)}),o.addEventListener(r,s=>{i(s)})}}const No=new zy,qy=Rr("startMenu",{state:()=>({buttons:[]}),actions:{addButtonsFromPlugins(){dn.plugins.forEach(e=>{e.startMenuButtons&&e.startMenuButtons.forEach(n=>{const r=window.narrat.app;n.popupComponent&&r.component(n.popupComponent.name,n.popupComponent.component),this.buttons.push(n)})})}}});function ZV(){dC()}function rC(){ZV(),qt().menuReturn()}async function ez(t){if(ot().saves.mode==="manual"){const e=vy();e&&(t=e.id)}qt().setSaveSlot(t),pC(Ls().globalSave),iC(),Zt().runGame()}function iC(){hi().stopAll(),oc("onPressStart"),Zt().start(),qt().prepareToPlay(),dn.callHook("onGameStart")}async function tz(t,e){if(ot().saves.mode==="manual"){const n=vy();n&&(e=n.id)}if(qt().setSaveSlot(e),iC(),t.saveData){_q({gameSave:t.saveData,globalSave:Ls().globalSave}),hi().reloadAudio(t.saveData.audio);const n=Zt(),r=ot().saves.runOnReload;typeof r=="string"&&await Zt().runLabelFunction(r),n.jumpToLabel(t.saveData.vm.lastLabel)}}const nz={id:"game-menu"},rz={id:"game-header",class:"flex flex-col justify-between items-center"},iz={id:"game-title-container"},oz={id:"game-title-text"},sz={class:"nrt-title"},Uy=Ns(g.defineComponent({__name:"StartMenu",setup(t){const e=g.ref(On().registerInputListener("start-menu",{})),n=g.ref([]),r=g.ref(null),i=g.ref(!1),o=g.ref(!1),s=g.ref(null),a=g.ref(null),l=g.ref(!1),c=g.ref(!1),f=g.ref(null),u=qy(),d=g.ref(!1),h=g.ref(null),p=g.computed(()=>u.buttons),m=gl({mode:"list",onlyVertical:!0,container:r,listener:e.value,onChosen:U=>{y(n.value[U])}});function y(U){switch(U.id){case"continue":E();break;case"new-game":v();break;case"load-game":R();break;case"exit":qt().exitGame();break;default:S(U);break}}async function v(){i.value&&ot().saves.mode==="manual"&&!ot().saves.disabled?c.value=!0:b()}async function b(){if(a.value===null)if(ot().saves.mode==="manual"){const U=vy();if(!U){ft("No autosave found");return}a.value=U.id}else{const U=hB();if(!U){ft("No free slot found");return}a.value=U}c.value=!1,await ez(a.value)}function S(U){const F=p.value.findIndex(X=>X.id===U.id),se=p.value[F];se.action&&se.action(),se.popupComponent&&(d.value=se)}function _(){d.value=!1}function x(){c.value=!1}async function T(){if(!a.value)return;const U=dd(a.value);if(!U){ft("No save file found");return}tz(U,a.value)}function E(){typeof s.value=="string"&&(a.value=s.value,T())}function R(){l.value=!0}function L({slotId:U}){const F=dd(U);F&&F.saveData?(a.value=U,T()):v()}g.onMounted(()=>{const U=Ls();U.slots.some(F=>F.saveData)&&(i.value=!0),(ot().saves.mode==="manual"||U.slots.some(F=>!F.saveData))&&(o.value=!0),U.lastSaveSlot&&dd(U.lastSaveSlot)&&(s.value=U.lastSaveSlot),B(),f.value=No.on("debouncedKeydown",F=>{F.key===" "&&b(),F.key==="c"&&E()}),g.nextTick(()=>{m.select(0)}),wo().options.defaultMusic&&(h.value=TB(wo().options.defaultMusic)),dn.callHook("onStartScreenMounted")});function B(){const U=ot().saves.disabled;s.value&&!U&&n.value.push(V({id:"continue",title:"Continue",cssClass:"continue-button"})),o.value&&n.value.push(V({id:"new-game",title:"New Game",cssClass:"start-button"})),i.value&&!U&&n.value.push(V({id:"load-game",title:"Load Game",cssClass:"continue-button"}));for(const F of p.value)n.value.push({id:F.id,title:F.text,cssClass:`${F.id}-start-menu-button`});n.value.push(V({id:"exit",title:"Exit",cssClass:"exit-button"}))}function V({id:U,title:F,cssClass:se}){const X=ot().menuButtons[U];if(X){let Z=se;return X.cssClass&&(Z=`${X.cssClass} ${se}`),{id:U,title:X.text??F,cssClass:Z}}return{id:U,title:F,cssClass:se}}g.onUnmounted(()=>{if(e.value&&On().unregisterInputListener(e.value),f.value&&No.off("debouncedKeydown",f.value),typeof h.value=="number"){const U=wo().options.defaultMusic;OB(U,h.value)}});const D=g.computed(()=>ot().gameTitle);return(U,F)=>(g.openBlock(),g.createElementBlock("div",nz,[l.value?(g.openBlock(),g.createBlock(nC,{key:0,mode:"load",onChosen:L,onClose:F[0]||(F[0]=se=>l.value=!1)})):g.createCommentVNode("",!0),c.value?(g.openBlock(),g.createBlock(Gp,{key:1,prompt:"This will override your previous autosave, are you sure?",onConfirm:b,onRefuse:x})):g.createCommentVNode("",!0),g.createElementVNode("div",rz,[g.createElementVNode("div",iz,[g.createElementVNode("h1",oz,g.toDisplayString(D.value),1)]),g.createElementVNode("div",{class:"flex flex-col start-menu-buttons-container",ref_key:"buttonsContainer",ref:r},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(n.value,se=>(g.openBlock(),g.createBlock(XV,{key:se.id,button:se,onClick:X=>y(se)},null,8,["button","onClick"]))),128))],512)]),d.value?(g.openBlock(),g.createBlock(g.Teleport,{key:2,to:"#narrat-app-container"},[g.createVNode(Aa,{onClose:_,class:g.normalizeClass(`start-menu-popup-${d.value.id}`)},{header:g.withCtx(()=>[g.createElementVNode("h3",sz,g.toDisplayString(d.value.text),1)]),body:g.withCtx(()=>[d.value.popupComponent?(g.openBlock(),g.createBlock(g.resolveDynamicComponent(d.value.popupComponent.component),{key:0,onClose:_},null,32)):g.createCommentVNode("",!0)]),_:1},8,["class"])])):g.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-0f46a713"]]);function Jp(t){const e=xm().characters[t];return e||ft(`Character ${t} not found`),e}function az(t,e){const n=Jp(t);if(n&&(e||(e="default"),n.sprites)){const r=n.sprites[e];return r==="none"?void 0:typeof r=="string"?{image:r}:r}}function oC(t){return`${xm().config.imagesPath}${t}`}function lz(t){return typeof t=="object"&&Object.hasOwn(t,"image")}function cz(t){return typeof t=="object"&&Object.hasOwn(t,"video")}function Hy(t){var e;return t?((e=Jp(t))==null?void 0:e.style)||{}:{}}const uz=["src"],fz=["autoplay","loop","muted"],dz=["src"],hz=g.defineComponent({__name:"dialog-picture",props:{picture:{},video:{},character:{},pose:{}},setup(t){const e=t,n=g.computed(()=>e.video),r=g.computed(()=>Br().layoutMode),i=g.computed(()=>{var l;const s={};if(!e.character)return{};e.character&&(s[e.character]=!0);const a=Jp(e.character);return(l=a==null?void 0:a.style)!=null&&l.portraitCssClass&&(s[a.style.portraitCssClass]=!0),s}),o=g.computed(()=>{var h,p;const s=Br(),a=ot().layout;let l=0,c=0;const f=a.portraits;if(r.value==="vertical"){const m=((h=f.offset)==null?void 0:h.portrait)??{right:0,bottom:0};l=20+m.right,c=s.dialogHeight+m.bottom}else{const m=((p=f.offset)==null?void 0:p.landscape)??{right:0,bottom:0},y=ot().dialogPanel.rightOffset??sy.dialogPanel.rightOffset;l=Cm()-10+m.right+y,c=200+m.bottom}let u=a.portraits.width,d=a.portraits.height;return e.video&&(u=e.video.width??u,d=e.video.height??d),e.picture&&(u=e.picture.width??u,d=e.picture.height??d),{right:`${l}px`,bottom:`${c}px`,width:`${u}px`,height:`${d}px`}});return(s,a)=>{var l;return g.openBlock(),g.createElementBlock("div",{class:g.normalizeClass(["dialog-picture override",i.value]),style:g.normalizeStyle(o.value)},[s.picture?(g.openBlock(),g.createElementBlock("img",{key:0,src:g.unref(bi)(g.unref(oC)((l=s.picture)==null?void 0:l.image)),class:g.normalizeClass(["picture override",i.value])},null,10,uz)):g.createCommentVNode("",!0),n.value?(g.openBlock(),g.createElementBlock("video",{key:1,class:"picture override",autoplay:n.value.autoplay!==!1,loop:n.value.loop!==!1,muted:!!n.value.muted},[g.createElementVNode("source",{src:g.unref(bi)(g.unref(oC)(n.value.video))},null,8,dz)],8,fz)):g.createCommentVNode("",!0)],6)}}});function pz(){return wo().dialogAudio}function sC(t){const e=pz();if(e){if(e.characterAudio&&e.characterAudio[t])return e.characterAudio[t];if(e.defaultAudio)return e.defaultAudio}}function aC(t,e){if(typeof e!="string")return;const n=sC(t);return n==null?void 0:n.soundPerLetter}function mz(t,e){if(typeof e!="string")return;const n=aC(t,e);if(!n)return;const r=n;let i="";return r.prefix&&(i+=r.prefix),i+=e,r.suffix&&(i+=r.suffix),i}function gz(t,e){if(typeof e!="string")return;const n=e.toLowerCase(),r=mz(t,n);if(typeof r!="string")return;const i=ls(r);if(i){const o=aC(t,n);let s=1;o.volume&&(s=o.volume);const a=hi().audioVolume("sound",r)*s;i.volume(a),i.play()}}function vz(t){const e=sC(t);if(e!=null&&e.soundOnNewLine){const n=ls(e.soundOnNewLine);if(n){const r=hi().audioVolume("sound",e.soundOnNewLine);n.volume(r),n.play()}}}const yz={key:0,class:"input-prompt-container"},bz={key:0,class:"input-prompt-label"},wz=["src"],Sd=g.defineComponent({__name:"input-prompt",props:{input:{},label:{},showLabel:{type:Boolean}},setup(t){const e=On(),n=t,r=g.computed(()=>{const s=e.getAction(n.input);return s||ft(`Input action ${n.input} does not exist.`),s}),i=g.computed(()=>{var s,a;return e.inputMode==="gamepad"?(s=r.value)==null?void 0:s.gamepadIcon:(a=r.value)==null?void 0:a.keyboardIcon}),o=g.computed(()=>{var s;return n.label?n.label:((s=r.value)==null?void 0:s.label)??"NONE"});return(s,a)=>g.unref(e).showPrompts&&r.value&&i.value?(g.openBlock(),g.createElementBlock("span",yz,[s.showLabel||s.label?(g.openBlock(),g.createElementBlock("span",bz,g.toDisplayString(o.value),1)):g.createCommentVNode("",!0),g.createElementVNode("img",{src:g.unref(La)(i.value),class:"input-prompt-icon"},null,8,wz)])):g.createCommentVNode("",!0)}}),Sz=["innerHTML"],kz=["innerHTML"],xz=["innerHTML"],$z={key:1},_z=["onClick","innerHTML"],jz={key:1},Cz={key:2,class:"buttons-container"},Tz=g.defineComponent({__name:"dialog-box",props:{options:{},active:{type:Boolean},inputListener:{},index:{}},setup(t,{expose:e}){const n=g.ref(null),r=g.ref(""),i=g.ref(!1),o=g.ref(null),s=g.ref(null),a=g.ref(!1),l=g.ref(null),c=g.ref(null),f=g.ref(null),u=g.ref(null),d=g.ref(null),h=t,p=g.ref(null);h.active&&(p.value=gl({mode:"list",container:n,listener:h.inputListener,onlyVertical:!0,onChosen:he=>{le.value&&N.value?x(N.value[he]):b(" ")}})),g.onMounted(()=>{se(),a.value=!0}),g.onUnmounted(()=>{m(),D(),W({unmounted:!0})});function m(){o.value&&(clearTimeout(o.value),o.value=null),y()}function y(){p.value&&(p.value.disable(),p.value=null)}function v(he){b(he.key)}function b(he){if(!le.value){a.value&&s&&he===" "&&W({pressedSpace:!0});return}if(le.value&&h.options.textField&&he==="Enter"&&B(),le.value&&!h.options.textField){let je=-1;switch(he){case" ":je=0;break;case"1":je=0;break;case"2":je=1;break;case"3":je=2;break;case"4":je=3;break;case"5":je=4;break;case"6":je=5;break;case"7":je=6;break;case"8":je=7;break}je!==-1&&N.value&&je<N.value.length?x(N.value[je]):je===0&&x(je)}}function S(){le.value||a.value&&s&&W({pressedSpace:!0})}function _(){i.value||x(0)}function x(he){T();let je;typeof he=="object"?je=he.originalIndex:je=he,qt().playerAnswered(je)}function T(){m(),W({unmounted:!0}),i.value=!0}function E(he){const je={};return he.allowed||(je.pointerEvents="none",je.textDecoration="line-through"),je}function R(he,je){const Ze={index:he+1,choice:je.choice};let ce='<span class="choice-index">%{$index}. </span> <span class="choice-text">%{$choice}</span>';if(sb().choiceTextTemplate&&(ce=sb().choiceTextTemplate),je.flag){const He=AT(je.flag);He!=null&&He.textTemplate&&(ce=He.textTemplate)}return L_(Ze,ce)}function L(he){const je={};if(he.allowed||(je["strike-anim"]=!0),he.seenBefore&&(je["seen-before"]=!0),he.flag){const Ze=AT(he.flag);Ze!=null&&Ze.cssClass&&(je[Ze.cssClass]=!0)}return je}function B(){const he=r.value;D(),qt().playerAnswered(he)}function V(){h.options.textField&&(On().startTyping(),o.value=setTimeout(()=>{le.value&&(d.value=On().registerInputListener("text-field-input-grabber",{}),u.value&&u.value.focus())},100))}function D(){On().stopTyping(),d.value&&(On().unregisterInputListener(d.value),d.value=null)}function U(he,je){const Ze=h.options.text.substring(he,je);s.value.text+=Ze;const ce=Ze.substring(0,1);return gz(h.options.styleId,ce),je}function F(he){const je=he[0];return s.value.text+=je,s.value.skippedChars+=je.length,je.length}function se(){if(!h.options.old)if(Vn().playMode==="skip")X();else if(vz(h.options.styleId),ot().dialogPanel.animateText){s.value={text:"",index:0,startTime:Date.now(),timer:null,skippedChars:0,tags:$B(h.options.text),finished:!1};const he=s.value;he.timer=setInterval(()=>{z()},30)}else M.value&&(l.value=setTimeout(()=>{W()},(ot().dialogPanel.textSpeed??Cp)*h.options.text.length))}function X(){Vn().playMode==="skip"&&!h.options.old&&(M.value?c.value=setTimeout(()=>{W()},100):(Vn().toggleSkip(),W({unmounted:!0})))}function Z(){Vn().playMode==="auto"&&!h.options.old&&M.value&&le&&_()}function z(){const he=s.value;if(!he)return;const je=he.index,Ze=Date.now()-he.startTime;let ce=!1,He=Math.round(Ze/(ot().dialogPanel.textSpeed??Cp))+he.skippedChars;if(He>h.options.text.length&&(ce=!0,he.finished=!0,He=h.options.text.length),He!==he.index){let st=je;for(;he.tags.length>0&&He>=he.tags[0].index;){st=U(st,he.tags[0].index);const Ve=F(he.tags.shift());st+=Ve,He+=Ve}st=U(st,He),he.index=st}ce&&W()}function W({unmounted:he,pressedSpace:je}={}){Zt().endTextAnimation(),he||V(),setTimeout(()=>{p.value&&p.value.select(0)},10),s.value&&(s.value.timer&&clearInterval(s.value.timer),s.value=null),l.value&&!je&&clearTimeout(l.value),c.value&&clearTimeout(c.value),f.value&&clearTimeout(f.value),!he&&!je&&Vn().playMode!=="normal"&&M&&(f.value=setTimeout(()=>{_()},Vn().playMode==="auto"?ot().dialogPanel.timeBetweenLines??pu.common.dialogPanel.timeBetweenLines:0))}const A=g.computed(()=>h.options.title?" &nbsp;–&nbsp; ":""),k=g.computed(()=>({...Hy(h.options.styleId).boxCss})),M=g.computed(()=>!N.value&&!h.options.textField),C=g.computed(()=>{const he={};return h.options.title&&(he["dialog-box-followup"]=!0),Vn().isDialogCleared(h.index)&&(Vn().clearedDialogVisible?he["dialog-box-cleared-visible"]=!0:he["dialog-box-cleared-disabled"]=!0),h.options.old?he["dialog-box-old"]=!0:he["dialog-box-new"]=!0,he}),w=g.computed(()=>{const he=Hy(h.options.styleId);return{color:he.color,...he.nameCss}}),$=g.computed(()=>Hy(h.options.styleId).textCss),O=g.computed(()=>s.value?s.value.text:h.options.text),N=g.computed(()=>{if(h.options.choices)return h.options.choices}),ie=g.computed(()=>Vn().playMode==="skip"),me=g.computed(()=>Vn().playMode==="auto"),le=g.computed(()=>h.active&&a.value&&!i.value&&!f.value&&!s.value&&h.options.interactive&&!Ue.value),ae=qt(),Ue=g.computed(()=>ae.paused);return g.watch(()=>h.options,(he,je)=>{!je.old&&he.old&&s&&W({unmounted:!0})}),g.watch(ie,(he,je)=>{he&&!je&&X()}),g.watch(me,(he,je)=>{he&&!je&&Z()}),e({keyboardEvent:v}),(he,je)=>{const Ze=g.resolveDirective("visible");return g.openBlock(),g.createElementBlock("div",{class:g.normalizeClass(["dialog-box w-full override",C.value]),style:g.normalizeStyle(k.value)},[g.createElementVNode("div",{class:"dialog-content",onClick:S},[he.options.title?(g.openBlock(),g.createElementBlock("span",{key:0,class:"dialog-title override",style:g.normalizeStyle(w.value),innerHTML:he.options.title},null,12,Sz)):g.createCommentVNode("",!0),g.createElementVNode("span",{class:"dialog-text dialog-separator override",style:g.normalizeStyle($.value),innerHTML:A.value},null,12,kz),g.createElementVNode("span",{class:g.normalizeClass(["dialog-text override",he.options.cssClass]),style:g.normalizeStyle($.value),innerHTML:O.value},null,14,xz),he.options.old?g.createCommentVNode("",!0):g.withDirectives((g.openBlock(),g.createElementBlock("div",$z,[N.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"dialog-choices",ref_key:"choicesDiv",ref:n},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(N.value,(ce,He)=>(g.openBlock(),g.createElementBlock("p",{key:He,style:g.normalizeStyle(E(ce)),class:g.normalizeClass([L(ce),"dialog-choice override"]),onClick:st=>x(ce),innerHTML:R(He,ce)},null,14,_z))),128))],512)):he.options.textField?(g.openBlock(),g.createElementBlock("div",jz,[g.withDirectives(g.createElementVNode("input",{autofocus:"",type:"text",class:"label-input nrt-input",ref_key:"playerInput",ref:u,id:"player-input-field","onUpdate:modelValue":je[0]||(je[0]=ce=>r.value=ce)},null,512),[[g.vModelText,r.value]]),g.createElementVNode("button",{onClick:B,class:"nrt-button",id:"player-input-submit"}," Submit ")])):(g.openBlock(),g.createElementBlock("div",Cz,[g.createElementVNode("div",{onClick:je[1]||(je[1]=ce=>x(0)),ref:"continue",class:"interact-button nrt-button override"},[g.createTextVNode(" Continue "),g.createVNode(Sd,{input:"continue"})],512)]))])),[[Ze,le.value]])])],6)}}}),Oz={key:0,class:"auto-play-feedback-container"},Ez=g.defineComponent({__name:"AutoPlayFeedback",setup(t){const e=Vn(),n=g.computed(()=>e.playMode==="auto"),r=g.computed(()=>e.playMode==="skip"),i=g.computed(()=>n.value?"auto-play-feedback-auto":r.value?"auto-play-feedback-skip":{}),o=g.computed(()=>n.value?"Auto Play":r.value?"Skip":"");return(s,a)=>o.value?(g.openBlock(),g.createElementBlock("div",Oz,[g.createElementVNode("div",{class:g.normalizeClass(["auto-play-feedback",i.value])},g.toDisplayString(o.value),3)])):g.createCommentVNode("",!0)}}),Az={key:0,class:"auto-save-feedback-container"},Pz={key:1,class:"auto-save-feedback-text"},Mz=g.defineComponent({__name:"auto-save-feedback",setup(t){const e=qt(),n=g.computed(()=>e.autosaveFeedback),r=g.computed(()=>ot().saves.autosaveFeedback),i=g.computed(()=>{var s,a;return(s=r.value)!=null&&s.backgroundImage?{backgroundImage:`url(${La((a=r.value)==null?void 0:a.backgroundImage)})`}:{}}),o=g.computed(()=>{var s,a;return(s=r.value)!=null&&s.foregroundImage?{backgroundImage:`url(${La((a=r.value)==null?void 0:a.foregroundImage)})`}:{}});return(s,a)=>(g.openBlock(),g.createBlock(g.Transition,{name:"fade"},{default:g.withCtx(()=>{var l,c,f,u;return[n.value?(g.openBlock(),g.createElementBlock("div",Az,[(l=r.value)!=null&&l.backgroundImage?(g.openBlock(),g.createElementBlock("div",{key:0,class:"auto-save-feedback-background",style:g.normalizeStyle(i.value)},null,4)):g.createCommentVNode("",!0),(c=r.value)!=null&&c.text?(g.openBlock(),g.createElementBlock("div",Pz,g.toDisplayString((f=r.value)==null?void 0:f.text),1)):g.createCommentVNode("",!0),(u=r.value)!=null&&u.foregroundImage?(g.openBlock(),g.createElementBlock("div",{key:2,class:"auto-save-feedback-foreground",style:g.normalizeStyle(o.value)},null,4)):g.createCommentVNode("",!0)])):g.createCommentVNode("",!0)]}),_:1}))}});function Ky(t){const{container:e,scrollSpeed:n=10,scrollThreshold:r=.2,onlyVertical:i=!0,gamepadAxes:o={vertical:3,horizontal:2},inputListener:s}=t,a=g.ref(!1);let l=null;function c(h){if(!e.value)return;const p=n;switch(h){case"up":e.value.scrollTop-=p;break;case"down":e.value.scrollTop+=p;break;case"left":e.value.scrollLeft-=p;break;case"right":e.value.scrollLeft+=p;break}}function f(){if(!e.value)return;const h=navigator.getGamepads()[0];if(!h)return;const p=h.axes[o.vertical];if(Math.abs(p)>r?(c(p<0?"up":"down"),a.value=!0):a.value=!1,!i&&o.horizontal!==void 0){const m=h.axes[o.horizontal];Math.abs(m)>r&&(c(m<0?"left":"right"),a.value=!0)}}function u(){l||(l=window.setInterval(f,16))}function d(){l&&(clearInterval(l),l=null),a.value=!1}return g.onMounted(()=>{u(),s&&(s.actions.scroll={press:()=>{},active:g.computed(()=>!0)})}),g.onUnmounted(()=>{d(),s&&delete s.actions.scroll}),{isScrolling:a,scrollContainer:c,container:g.ref(e)}}const Iz={class:"auto-skip-buttons flex"},Nz=g.createElementVNode("div",{class:"anchor"},null,-1),Wy=g.defineComponent({__name:"game-dialog",setup(t){const e=g.computed(()=>Br().layoutMode),n=g.computed(()=>On().inGameInputListener),r=g.ref(qt().inScript),i=g.ref(null),o=Br(),s=Zt(),a=g.computed(()=>s.stack),l=Vn(),c=g.computed(()=>l.dialog),f=g.ref(null),u=g.ref(null),d=g.ref(null),h=g.ref(null);Ky({container:f,scrollSpeed:40,onlyVertical:!0,inputListener:n.value});const p=g.computed(()=>{let F="0px";const se=ot().layout.dialogBottomPadding;return typeof se=="number"?F=`${se}px`:typeof se=="string"&&(F=se),{paddingBottom:F}}),m=g.computed(()=>{if(c.value.length>0){const F=c.value[c.value.length-1];return l.isDialogCleared(c.value.length-1)?void 0:F}}),y=g.computed(()=>{if(m.value)return m.value.speaker}),v=g.computed(()=>{if(m.value)return m.value.pose}),b=g.computed(()=>{if(m.value){const F=y.value;let se=v.value;return F?(se||(se="idle"),se):void 0}}),S=g.computed(()=>{if(!b.value)return;const F=y.value;return az(F,b.value)}),_=g.computed(()=>{const F=S.value;if(lz(F))return F}),x=g.computed(()=>{const F=S.value;if(cz(F))return F}),T=g.computed(()=>o.dialogWidth),E=g.computed(()=>qt().inScript);g.watch(E,F=>{F?r.value=!0:Vn().playMode!=="normal"?(Vn().playMode==="skip"&&(Vn().playMode="normal"),i.value=setTimeout(()=>{r.value=!1},500)):r.value=!1}),g.onMounted(()=>{if(n.value){const se=n.value;se.actions.autoPlay={press:()=>{Vn().toggleAutoPlay()}},se.actions.skip={press:()=>{Vn().toggleSkip()}}}const F=se=>{d.value&&d.value.keyboardEvent&&d.value.keyboardEvent(se)};F.value=No.on("debouncedKeydown",F)}),g.onUnmounted(()=>{n.value&&(delete n.value.actions.autoPlay,delete n.value.actions.skip),h.value&&No.off("debouncedKeydown",h.value),i.value&&clearTimeout(i.value)});const R=g.computed(()=>{let F;const se=`${Br().dialogHeight}px`,X={};if(Br().overlayMode){X.position="absolute";const Z=ot().dialogPanel.rightOffset??pu.common.dialogPanel.rightOffset;X.right=`${Z}px`;const z=ot().dialogPanel.bottomOffset??pu.common.dialogPanel.bottomOffset;X.bottom=`${z}px`}return{...X,width:e.value==="horizontal"?`${T.value}px`:"100%",height:se,transform:F,transformOrigin:"right"}});function L(){Vn().toggleAutoPlay()}function B(){Vn().toggleSkip()}function V(){Vn().toggleHistory()}function D(F,se){const X=Jp(F.speaker),Z=Vn();let z=(X==null?void 0:X.name)??"Missing Character";if(se>=1){const W=c.value[se-1];!Z.isDialogCleared(se-1)&&W.speaker===F.speaker&&(z=void 0)}return F.choices&&F.choices.forEach(W=>{W.choice=Ds(W.choice)}),{title:z??"",text:F.text,cssClass:F.cssClass,styleId:F.speaker,choices:F.choices,old:se<c.value.length-1,interactive:F.interactive,textField:F.textField}}function U(F){return F===l.dialog.length-1&&a.value.length>0}return g.watch(c.value,F=>{if(f.value){const se=f.value;se.scrollTop=se.scrollHeight+1e8}}),(F,se)=>(g.openBlock(),g.createElementBlock(g.Fragment,null,[g.createVNode(Ez),g.createVNode(Mz),g.createVNode(g.Transition,{name:"fade"},{default:g.withCtx(()=>[(_.value||x.value)&&g.unref(o).showDialog?(g.openBlock(),g.createBlock(hz,{key:0,picture:_.value,video:x.value,character:y.value,pose:v.value},null,8,["picture","video","character","pose"])):g.createCommentVNode("",!0)]),_:1}),g.createVNode(g.Transition,{name:"dialog-transition"},{default:g.withCtx(()=>[g.unref(o).showDialog?(g.openBlock(),g.createElementBlock("div",{key:0,class:"dialog override",ref_key:"dialogRef",ref:f,style:g.normalizeStyle(R.value)},[g.createVNode(g.TransitionGroup,{name:"list",tag:"div",class:"dialog-container w-full override",style:g.normalizeStyle(p.value),ref_key:"dialogContainerRef",ref:u},{default:g.withCtx(()=>[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(c.value,(X,Z)=>(g.openBlock(),g.createBlock(Tz,{ref_for:!0,ref:z=>d.value=z,key:X.id,options:D(X,Z),active:U(Z),index:Z,inputListener:n.value},null,8,["options","active","index","inputListener"]))),128))]),_:1},8,["style"]),(g.openBlock(),g.createBlock(g.Teleport,{to:"#narrat-app"},[g.createElementVNode("div",Iz,[g.createElementVNode("div",{class:"nrt-button menu-toggle-button auto-button auto",onClick:L},[g.createTextVNode(" Auto "),g.createVNode(Sd,{input:"autoPlay"})]),g.createElementVNode("div",{class:"nrt-button menu-toggle-button auto-button skip",onClick:B},[g.createTextVNode(" Skip "),g.createVNode(Sd,{input:"skip"})]),g.unref(ot)().dialogPanel.allowHistoryToggling!==!1?(g.openBlock(),g.createElementBlock("div",{key:0,class:"nrt-button menu-toggle-button auto-button toggle-history",onClick:V}," Toggle History ")):g.createCommentVNode("",!0)])])),Nz],4)):g.createCommentVNode("",!0)]),_:1})],64))}}),Rz=["id"],Lz=["src"],Dz={class:"tab-title"},lC=g.defineComponent({__name:"tab-selector",props:{tab:{},active:{type:Boolean}},emits:["click"],setup(t,{emit:e}){const n=t,r=e,i=g.computed(()=>n.active?"tab-active":"tab-inactive");function o(){r("click")}return(s,a)=>(g.openBlock(),g.createElementBlock("div",{class:g.normalizeClass(["tab",i.value]),id:`tab-${s.tab.id}`,onClick:o},[g.createElementVNode("div",{class:g.normalizeClass(["tab-title-container",s.active?"active":""])},[s.tab.icon?(g.openBlock(),g.createElementBlock("img",{key:0,src:s.tab.icon,alt:"tab icon",class:"tab-icon"},null,8,Lz)):g.createCommentVNode("",!0),g.createElementVNode("span",Dz,g.toDisplayString(s.tab.label),1)],2)],10,Rz))}}),Bz={class:"tabs-controller"},Fz={key:0,class:"tabs-controller__tabs"},Vz={key:1,class:"tab-content"},zz={key:2},qz=[g.createElementVNode("div",{class:"tab-content__empty"},[g.createElementVNode("p",null,"No tab selected")],-1)],Uz=g.defineComponent({__name:"TabsController",props:{tabs:{},defaultTab:{}},emits:["tab-change","close"],setup(t,{emit:e}){const n=g.ref(On().registerInputListener("tabs-controller",{cancel:{press:()=>{r("close")}},system:{press:()=>{r("close")}},menu:{press:()=>{r("close")}},previousTab:{press:()=>{o.value>0&&s(o.value-1)}},nextTab:{press:()=>{o.value<i.tabs.length-1&&s(o.value+1)}}})),r=e,i=t,o=g.ref(i.defaultTab);function s(l){o.value=l,r("tab-change",l)}const a=g.computed(()=>i.tabs[o.value]);return g.onUnmounted(()=>{n.value&&(On().unregisterInputListener(n.value),n.value=null)}),(l,c)=>(g.openBlock(),g.createElementBlock("div",Bz,[l.tabs.length>1?(g.openBlock(),g.createElementBlock("div",Fz,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(l.tabs,(f,u)=>(g.openBlock(),g.createBlock(lC,{key:f.id,tab:f,active:u===o.value,onClick:()=>s(u),inputListener:n.value},null,8,["tab","active","onClick","inputListener"]))),128))])):g.createCommentVNode("",!0),a.value?(g.openBlock(),g.createElementBlock("div",Vz,[a.value?(g.openBlock(),g.createBlock(g.resolveDynamicComponent(a.value.component),{key:0,inputListener:n.value,onClose:c[0]||(c[0]=f=>l.$emit("close"))},null,40,["inputListener"])):g.createCommentVNode("",!0)])):(g.openBlock(),g.createElementBlock("div",zz,qz))]))}}),Hz={class:"menu-container menu-toggle"},Kz=["onClick","id"],Wz={class:"nrt-title"},Gy=g.defineComponent({__name:"menu-buttons",setup(t){const e=gi(),n=g.ref(null);g.onMounted(()=>{dn.callHook("onGameMounted")}),g.onUnmounted(()=>{n.value&&No.off("keydown",n.value),dn.callHook("onGameUnmounted")});function r(f){gi().activeMenu=f}const i=g.computed(()=>e.menus),o=g.computed(()=>e.menu),s=g.computed(()=>{var f;return(((f=o.value)==null?void 0:f.tabs)??[]).filter(u=>u.condition?u.condition():!0).map(u=>({id:u.id,label:u.text,component:u.component}))});function a(){e.closeMenu()}function l(f){e.setActiveTab(f)}function c(){return a()}return(f,u)=>(g.openBlock(),g.createElementBlock("div",Hz,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(i.value,(d,h)=>(g.openBlock(),g.createElementBlock("button",{key:d.id,onClick:p=>r(d.id),id:d.cssId??`${h}-menu-button`,class:"nrt-button menu-toggle-button"},[g.createTextVNode(g.toDisplayString(d.label)+" ",1),d.inputPrompt?(g.openBlock(),g.createBlock(Sd,{key:0,input:d.inputPrompt},null,8,["input"])):g.createCommentVNode("",!0)],8,Kz))),128)),o.value?(g.openBlock(),g.createBlock(g.Teleport,{key:0,to:"#narrat-app-container"},[g.createVNode(Aa,{containerCssClass:{[o.value.cssClass]:!0,"menu-modal":!0},onClose:a},{header:g.withCtx(()=>{var d;return[g.createElementVNode("h3",Wz,g.toDisplayString(((d=g.unref(e).tab)==null?void 0:d.text)??o.value.label),1)]}),body:g.withCtx(()=>[g.createVNode(Uz,{onTabChange:l,onClose:c,tabs:s.value,defaultTab:o.value.activeTab},null,8,["tabs","defaultTab"])]),_:1},8,["containerCssClass"])])):g.createCommentVNode("",!0)]))}});function cC(t){const e={};return t.selected&&(e.selected=!0),t.clickable&&t.viewportClickable&&!t.transitioning&&(e.interactable=!0),(!t.clickable||!t.viewportClickable)&&(e["nrt-disabled"]=!0),t.transitioning&&(e.transitioning=!0),t.greyed&&(e.greyed=!0),t.hidden&&(e.hidden=!0),t.cssClass&&(e[t.cssClass]=!0),e}function Gz(t,e,n){return{selected:e,clickable:t.onClick!==void 0,viewportClickable:Hp(t),transitioning:n,greyed:!1,hidden:!1,cssClass:t.cssClass}}function Jz(t,e,n){const r=kl(t),i=Io().getButtonState(t),o=On().inputMode;return{selected:e&&o==="gamepad",clickable:Io().isButtonInteractible(t),viewportClickable:Hp(r),transitioning:n,greyed:i==="greyed",hidden:i==="hidden"||i===!1,cssClass:r.cssClass}}function Qz(t,e,n){return cC(Jz(t,e,n))}function Yz(t,e,n){return cC(Gz(t,e,n))}const Xz=["id"],Zz=["innerHTML"],eq=g.defineComponent({__name:"screen-object",props:{screenObject:{},layerSelected:{type:Boolean},transitioning:{type:Boolean},activeInteractive:{}},setup(t){const e=t,n=bo();function r(l){e.transitioning||e.screenObject.onClick&&n.clickObject(l)}function i(l){e.transitioning||e.screenObject.onClick&&n.hoverObject(l)}const o=g.computed(()=>{if(!e.layerSelected)return!1;const l=e.activeInteractive;return l.type==="screenObject"&&l.id===e.screenObject.id}),s=g.computed(()=>Yz(e.screenObject,o.value,e.transitioning)),a=g.computed(()=>{const l={};e.screenObject.opacity!==1&&(l.opacity=e.screenObject.opacity);let c=e.screenObject.x,f=e.screenObject.y,u=e.screenObject.width,d=e.screenObject.height;if(e.screenObject.anchor){const p=e.screenObject.anchor;c=e.screenObject.x-u*p.x,f=e.screenObject.y-d*p.y,l.transformOrigin=`${p.x*100}% ${p.y*100}%`}e.screenObject.scale&&(u=u*e.screenObject.scale,d=d*e.screenObject.scale);const h={...l,left:`${c}px`,top:`${f}px`,width:`${u}px`,height:`${d}px`};return uV(e.screenObject)&&(h.backgroundImage=`url(${La(e.screenObject.image)})`),h});return(l,c)=>{const f=g.resolveComponent("ScreenObject",!0);return g.openBlock(),g.createElementBlock("div",{tabindex:"-1",class:g.normalizeClass(["viewport-object",s.value]),id:`viewport-object-${e.screenObject.id}`,onClick:c[0]||(c[0]=u=>r(l.screenObject)),onMouseenter:c[1]||(c[1]=u=>i(l.screenObject)),style:g.normalizeStyle(a.value)},[g.createElementVNode("span",{innerHTML:e.screenObject.text?g.unref(Ds)(e.screenObject.text):void 0},null,8,Zz),(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(e.screenObject.children,u=>(g.openBlock(),g.createBlock(f,{transitioning:l.transitioning,key:u.id,screenObject:u},null,8,["transitioning","screenObject"]))),128))],46,Xz)}}}),tq=["id","innerHTML"],nq=g.defineComponent({__name:"viewport-button",props:{id:{},layerSelected:{type:Boolean},transitioning:{type:Boolean},activeInteractive:{}},setup(t){const e=t,n=Io();g.computed(()=>n.getButtonState(e.id));const r=g.computed(()=>kl(e.id)),i=r.value.background?La(r.value.background):null,o=g.computed(()=>{if(!e.layerSelected)return!1;const f=e.activeInteractive;return f.type==="button"&&f.id===e.id});g.computed(()=>n.isButtonClickable(e.id));const s=g.computed(()=>{const f=r.value.text??"";return Ds(f)}),a=g.computed(()=>Qz(e.id,o.value,e.transitioning)),l=g.computed(()=>{const f={};r.value.position.width&&(f.width=`${r.value.position.width}px`),r.value.position.height&&(f.height=`${r.value.position.height}px`),r.value.background&&(f.backgroundImage=`url(${i})`);let u=r.value.position.left,d=r.value.position.top;return r.value.anchor&&(u=r.value.position.left-r.value.position.width*r.value.anchor.x,d=r.value.position.top-r.value.position.height*r.value.anchor.y),{...f,left:`${u}px`,top:`${d}px`}});function c(){n.clickOnButton(e.id)}return(f,u)=>(g.openBlock(),g.createElementBlock("div",{tabindex:"-1",class:g.normalizeClass(["viewport-button",a.value]),id:`viewport-button-${f.id}`,onClick:u[0]||(u[0]=d=>c()),style:g.normalizeStyle(l.value),innerHTML:s.value},null,14,tq))}}),rq=["id"],iq=["id","loop","muted"],oq=["src"],sq=["id"],Jy=g.defineComponent({__name:"screen-layer",props:{layer:{},layerIndex:{},transitioning:{type:Boolean},activeInteractive:{}},setup(t){const e=t,n=qt(),r=bo(),i=g.computed(()=>!!(e.activeInteractive&&e.activeInteractive.layer===e.layerIndex)),o=g.computed(()=>r.tree.filter(y=>y.layer===e.layerIndex)),s=g.computed(()=>ot().layout.backgrounds.width),a=g.computed(()=>ot().layout.backgrounds.height),l=g.computed(()=>e.layer),c=g.computed(()=>{const y=Nu(l.value);return y||ft(`Screen ${l.value} doesn't have a config`),y}),f=g.computed(()=>n.isInGame),u=g.computed(()=>c.value.buttons||[]),d=g.computed(()=>c.value.video),h=g.computed(()=>({width:`${s.value}px`,height:`${a.value}px`})),p=g.computed(()=>{let y;return c.value.background!==Tp&&(y=`url(${La(c.value.background)})`),{backgroundImage:y,position:"absolute",left:0,top:0,width:`${s.value}px`,height:`${a.value}px`}}),m=g.computed(()=>({position:"absolute",left:0,top:0,width:`${s.value}px`,height:`${a.value}px`}));return(y,v)=>f.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"viewport-layer",id:`viewport-layer-${l.value}`,style:g.normalizeStyle(h.value)},[d.value?(g.openBlock(),g.createElementBlock("video",{key:0,class:"viewport-layer-background",id:`viewport-layer-background-${l.value}`,style:g.normalizeStyle(m.value),autoplay:"",loop:d.value.loop!==!1,muted:!!d.value.muted},[g.createElementVNode("source",{src:g.unref(bi)(c.value.background)},null,8,oq)],12,iq)):(g.openBlock(),g.createElementBlock("div",{key:1,class:"viewport-layer-background",id:`viewport-layer-background-${l.value}`,style:g.normalizeStyle(p.value)},null,12,sq)),(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(u.value,b=>(g.openBlock(),g.createBlock(nq,{key:b,id:b,layerSelected:i.value,transitioning:y.transitioning,activeInteractive:y.activeInteractive},null,8,["id","layerSelected","transitioning","activeInteractive"]))),128)),(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(o.value,b=>(g.openBlock(),g.createBlock(eq,{key:b.id,screenObject:b,transitioning:y.transitioning,layerSelected:i.value,activeInteractive:y.activeInteractive},null,8,["screenObject","transitioning","layerSelected","activeInteractive"]))),128))],12,rq)):g.createCommentVNode("",!0)}}),aq=g.defineComponent({__name:"NarratTransition",props:{name:{type:String,required:!0},duration:{type:Number,required:!0},delay:Number},emits:["complete"],setup(t,{emit:e}){g.useSlots();const n=e,r=t,i=g.ref("start"),o=g.reactive({oldSlotClasses:{},oldSlotStyle:{},newSlotClasses:{},newSlotStyle:{}});return g.onMounted(async()=>{const s=`narrat-transition-${r.name}`;o.newSlotClasses={[`${s}-enter-from`]:!0},o.oldSlotClasses={[`${s}-leave-active`]:!0},await Mi(30),o.oldSlotStyle={transitionDuration:`${r.duration/1e3}s`},o.newSlotStyle={transitionDuration:`${r.duration/1e3}s`},o.oldSlotClasses[`${s}-leave-to`]=!0,o.newSlotClasses[`${s}-enter-active`]=!0,await Mi(r.delay??0),delete o.newSlotClasses[`${s}-enter-from`],await Mi(r.duration),i.value="end",n("complete")}),(s,a)=>(g.openBlock(),g.createElementBlock(g.Fragment,null,[i.value!=="end"?(g.openBlock(),g.createElementBlock("div",{key:0,class:g.normalizeClass(["transition-holder",o.oldSlotClasses]),style:g.normalizeStyle(o.oldSlotStyle)},[g.renderSlot(s.$slots,"oldElement")],6)):g.createCommentVNode("",!0),g.createElementVNode("div",{class:g.normalizeClass(["transition-holder",o.newSlotClasses]),style:g.normalizeStyle(o.newSlotStyle)},[g.renderSlot(s.$slots,"newElement")],6)],64))}});function uC(t,e,n){return t<e?e:t>n?n:t}const Qy=g.defineComponent({__name:"screens",setup(t){const e=g.computed(()=>On().inGameInputListener),n=qt(),r=Io(),i=bo(),o=g.ref(0),s=g.computed(()=>r.nonEmptyLayers),a=g.computed(()=>{const m=[];return s.value.reduce((y,v,b)=>{const _=Nu(v.screen).buttons;if(_)for(const T of _)r.isButtonClickable(T)&&y.push({id:T,type:"button",layer:b});const x=i.tree.filter(T=>T.layer===b);for(const T of x)i.isScreenObjectClickable(T)&&y.push({id:T.id,type:"screenObject",layer:b});return y},m)}),l=g.computed(()=>{if(a.value.length===0)return null;let m=o.value;return m>a.value.length-1&&(m=a.value.length-1),a.value[m]}),c=g.computed(()=>ot().layout.backgrounds.width),f=g.computed(()=>ot().layout.backgrounds.height),u=g.computed(()=>n.isInGame);function d(m){r.finishTransition(m)}const h=g.computed(()=>{const m=c.value;return{height:`${f.value}px`,width:`${m}px`}}),p=g.computed(()=>a.value.length>0);return g.onMounted(()=>{g.nextTick(()=>{if(e.value){const m=e.value.actions;m.previousTab={press:()=>{o.value>0?o.value--:o.value=a.value.length-1,o.value=uC(o.value,0,a.value.length-1)},active:p},m.left=m.previousTab,m.nextTab={press:()=>{o.value<a.value.length-1?o.value++:o.value=0,o.value=uC(o.value,0,a.value.length-1)},active:p},m.right=m.nextTab,m.viewportSelect={press:()=>{if(l.value){const y=l.value;y.type==="button"?r.clickOnButton(y.id):y.type==="screenObject"&&i.clickObject(i.getObject(y.id))}},active:p}}})}),g.onUnmounted(()=>{if(e.value){const m=e.value;delete m.actions.previousTab,delete m.actions.left,delete m.actions.nextTab,delete m.actions.right}}),(m,y)=>u.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"viewport",id:"narrat-viewport",style:g.normalizeStyle(h.value)},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(s.value,(v,b)=>(g.openBlock(),g.createElementBlock("div",{key:v.screen??"",class:"layer-container"},[v.transition?(g.openBlock(),g.createBlock(aq,{key:0,name:v.transition.transition,duration:v.transition.duration,delay:v.transition.delay,onComplete:()=>d(b)},{oldElement:g.withCtx(()=>[v.transition.oldScreen?(g.openBlock(),g.createBlock(Jy,{key:0,layer:v.transition.oldScreen,layerIndex:b,transitioning:!0},null,8,["layer","layerIndex"])):g.createCommentVNode("",!0)]),newElement:g.withCtx(()=>[v.screen?(g.openBlock(),g.createBlock(Jy,{key:0,layer:v.screen,layerIndex:b,transitioning:!0},null,8,["layer","layerIndex"])):g.createCommentVNode("",!0)]),_:2},1032,["name","duration","delay","onComplete"])):v.screen?(g.openBlock(),g.createBlock(Jy,{key:1,layer:v.screen,layerIndex:b,transitioning:!1,activeInteractive:l.value},null,8,["layer","layerIndex","activeInteractive"])):g.createCommentVNode("",!0)]))),128))],4)):g.createCommentVNode("",!0)}}),lo=Rr("hud",{state:()=>({hudStats:{},visible:!0}),actions:{updateConfig(t){for(const e in t.hudStats)this.hudStats[e]||(this.hudStats[e]={value:t.hudStats[e].startingValue})},reset(t){this.$reset(),this.updateConfig(t)},setStat(t,e){this.hudStats[t].value=e,this.getStat(t).value<(mc(t).minValue??0)&&(this.hudStats[t].value=mc(t).minValue??0),this.getStat(t).value>(mc(t).maxValue??1/0)&&(this.hudStats[t].value=mc(t).maxValue??1/0)},addStat(t,e){this.setStat(t,this.getStatValue(t)+e)},getStat(t){return this.hudStats[t]},getStatValue(t){return this.hudStats[t].value},generateSaveData(){return{hudStats:yn(this.hudStats),visible:this.visible}},loadSaveData(t){this.hudStats=ic(this.hudStats,t.hudStats),this.visible=t.visible},setVisibility(t){this.visible=t}}}),lq=g.defineComponent({data(){return{}},methods:{getStatImage(t){return bi(this.statsConfig[t].icon)},formatStat(t,e){var a;const n=mc(t),r=n.decimals??2,i=Math.floor(e*10**r)/10**r,o={};(a=n.formatting)!=null&&a.style&&(o.style=n.formatting.style,n.formatting.style==="currency"&&(o.currency=n.formatting.currency??"USD",o.currencyDisplay="narrowSymbol"),n.formatting.style==="unit"&&(o.unit=n.formatting.unit??"day"));let s;try{s=i.toLocaleString(void 0,o)}catch(l){ft(`Error formatting HUD stat, probably using an invalid config: ${l}`),console.error(l),s=i.toLocaleString()}return s},statPrefix(t){const e=mc(t);return e.prefix??(e.suffix||e.hideName?"":e.name)},statSuffix(t){return mc(t).suffix??""}},computed:{...ud(lo,["hudStats"]),...ud(Br,["layoutMode"]),statsConfig(){return ot().hudStats},stats(){return this.hudStats},hudStyle(){let t="0";return this.layoutMode==="horizontal"&&(t=`${Cm()+(ot().dialogPanel.rightOffset??pu.common.dialogPanel.rightOffset)}px`),{right:t}},hasHud(){return lo().visible===!1?!1:Object.keys(lo().hudStats).length>0}}}),cq=["src"],uq=["innerHTML"],fq=["innerHTML"];function dq(t,e,n,r,i,o){return t.hasHud?(g.openBlock(),g.createElementBlock("div",{key:0,class:"hud",style:g.normalizeStyle(t.hudStyle)},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(t.stats,(s,a)=>(g.openBlock(),g.createElementBlock("div",{key:a,class:"hud-stat"},[g.createElementVNode("img",{class:"hud-icon",src:t.getStatImage(a)},null,8,cq),g.createElementVNode("span",{class:"bold hud-text",innerHTML:t.statPrefix(a)},null,8,uq),g.createElementVNode("span",null,g.toDisplayString(t.formatStat(a,s.value)),1),t.statSuffix?(g.openBlock(),g.createElementBlock("span",{key:0,innerHTML:t.statSuffix(a)},null,8,fq)):g.createCommentVNode("",!0)]))),128))],4)):g.createCommentVNode("",!0)}const Yy=Ns(lq,[["render",dq]]),Xy=g.defineComponent({__name:"in-game",setup(t){const e=On(),n=g.computed(()=>e.inGameInputListener),r=qt(),i=Br(),o=g.computed(()=>i.layoutMode),s=g.computed(()=>r.saving),a=g.ref(null),l=Vn(),c=g.ref(null),f=g.computed(()=>s.value&&!s.value.withPrompt||s.value&&a.value),u=g.computed(()=>{let m="row";return o.value==="vertical"&&(m="column"),{flexDirection:m}});function d(m){if(a.value=null,m===null){t1(m,!1);return}t1(m,!0)}function h(){a.value=!0}function p(){a.value=!1,t1(null,!1),a.value=null}return g.onBeforeMount(()=>{e.createInGameInputListener()}),g.onMounted(()=>{c.value=No.on("debouncedKeydown",m=>{qt().debugMode||((m.key==="a"||m.key==="A")&&l.toggleAutoPlay(),(m.key==="s"||m.key==="S")&&l.toggleSkip())})}),g.onUnmounted(()=>{n.value&&e.removeInGameInputListener(),c.value&&No.off("debouncedKeydown",c.value)}),g.computed(()=>lo().visible===!1?!1:Object.keys(lo().hudStats).length>0),(m,y)=>(g.openBlock(),g.createElementBlock("div",{class:"game",style:g.normalizeStyle(u.value)},[g.createVNode(Yy),g.createVNode(Gy),g.createVNode(Qy),g.createVNode(Wy),f.value?(g.openBlock(),g.createBlock(nC,{key:0,mode:"pick",onChosen:d,onClose:y[0]||(y[0]=()=>d(null))})):g.createCommentVNode("",!0),s.value&&s.value.withPrompt&&a.value===null?(g.openBlock(),g.createBlock(Gp,{key:1,prompt:"Would you like to save the game?",onConfirm:h,onRefuse:p})):g.createCommentVNode("",!0)],4))}}),hq={class:"chapter-title-scene"},pq=["innerHTML"],mq=["innerHTML"],gq=g.defineComponent({__name:"chapter-title",props:{options:{}},setup(t){const e=t,n=g.ref(null);function r(){n.value=null,ao().changeScene(cs.Playing),Zt().jumpToLabel(e.options.next_label)}return g.onMounted(()=>{n.value=setTimeout(r,e.options.duration??2e3)}),g.onUnmounted(()=>{n.value&&(clearTimeout(n.value),n.value=null)}),(i,o)=>(g.openBlock(),g.createElementBlock("div",hq,[g.createElementVNode("h1",{class:"title chapter-title",innerHTML:e.options.title},null,8,pq),e.options.subtitle?(g.openBlock(),g.createElementBlock("h2",{key:0,class:"subtitle chapter-subtitle",innerHTML:e.options.subtitle},null,8,mq)):g.createCommentVNode("",!0)]))}});var cs=(t=>(t.EngineSplash="engine-splash",t.GameSplash="game-splash",t.StartMenu="start-menu",t.Playing="playing",t.ChapterTitle="chapter-title",t))(cs||{});const fC={"engine-splash":{id:"engine-splash",component:g.shallowRef(Dy),props:{}},"game-splash":{id:"game-splash",component:g.shallowRef(Fy),props:{}},"start-menu":{id:"start-menu",component:g.shallowRef(Uy),props:{}},playing:{id:"playing",component:g.shallowRef(Xy),props:{}},"chapter-title":{id:"chapter-title",component:g.shallowRef(gq),props:{}}};let Ro={};function vq(t){Ro=t}function yq(){fC["engine-splash"].onFinished=()=>{ao().onEngineSplashFinished()},ao().scenes=fC}function bq(){return Ro}function dC(){for(const t in Ro){const e=Ro[t],n=e.store();let r;dV(e)&&(r=ar()[e.config]),n.reset&&!e.avoidReset&&n.reset(r)}dn.plugins.forEach(t=>{t.reset&&t.reset()})}function wq(){const t={};for(const e in Ro){const n=Ro[e];if(Xj(n)){const r=n.store();r.generateSaveData?t[n.save]=r.generateSaveData():ft(`Store ${e} has no generateSaveData method. Trying to generate save data for ${n.save}`)}}return dn.plugins.forEach(e=>{e.save&&(t.plugins[e.pluginId]=e.save())}),dn.customStores().forEach(([e,n])=>{if(n.save){const r=n.save();r&&(t.customStores||(t.customStores={}),t.customStores[e]=r)}}),t}function hC(){const t={};for(const e in Ro){const n=Ro[e];if(Zj(n)){const r=n.store();r.generateGlobalSaveData?t[n.globalSave]=r.generateGlobalSaveData():ft(`Store ${e} has no generateGlobalSaveData method. Trying to generate save data for ${n.globalSave}`)}}return t}function Sq(){const t=wq(),e=hC();return{gameSave:t,globalSave:e}}function kq(t){for(const e in Ro){const n=Ro[e];if(Xj(n)){const r=n.store();r.loadSaveData?r.loadSaveData(t[n.save]):ft(`Store ${e} has no loadSaveData method. Trying to load save data for ${n.save}`)}}dn.plugins.forEach(e=>{e.load&&t.plugins[e.pluginId]&&e.load(t.plugins[e.pluginId])}),dn.customStores().forEach(([e,n])=>{n.load&&n.load(t.customStores[e])})}function pC(t){for(const e in Ro){const n=Ro[e];if(Zj(n)){const r=n.store();r.loadGlobalSaveData?r.loadGlobalSaveData(t[n.globalSave]):ft(`Store ${e} has no loadGlobalSaveData method. Trying to load global save data for ${n.globalSave}`)}}}function xq(t){kq(t.gameSave),pC(t.globalSave)}function Zy({slotId:t,name:e}){const n=qt(),r=t??n.saveSlot;n.saveData=yB({slot:r,name:e,extractedSave:Sq()}),qt().triggerAutosaveFeedback()}function $q(){const t=hC();bB(t)}function _q(t){xq(t)}function mC(){Zt().globalData={},Ls().globalSave.data={},Zy({})}function e1({saveName:t,withPrompt:e}){return new Promise(n=>{Zt().hasJumped?qt().startManualSave(n,t,e):n()})}function t1(t,e){var r;const n=qt();if(!n.saving){ft("No saving in progress!");return}if(!e||!t){n.cancelManualSave();return}n.saveData?(wB(n.saveData,hu(n.playTime.start,n.playTime.previousPlaytime),t.slotId,(r=n.saving)==null?void 0:r.name),n.alert("Success","Game saved!")):ft("There was no data to save!"),n.cancelManualSave()}const Zt=Rr("vm",{state:()=>({stack:[],data:{},globalData:{},lastLabel:"main",script:{},labelStack:["main"],commandsWaitingForPlayerAnswer:[],promisesWaitingForTextAnimation:[],hasJumped:!1}),actions:{generateSaveData(){return{lastLabel:this.lastLabel,data:fb(this.data,t=>Yj(t)?{_entityType:t._entityType,id:t.id}:null)}},generateGlobalSaveData(){return{data:yn(this.globalData)}},loadSaveData(t){this.lastLabel=t.lastLabel,this.data=yn(t.data),this.findEntitiesInData(this.data)},loadGlobalSaveData(t){this.globalData=t.data},findEntitiesInData(t){Gj(this.data,(e,n,r)=>{if(Yj(e)){const i=bo().getObject(e.id);i?r[n]=i:lc(`Trying to reload sprite ${n} (${JSON.stringify(e)} - ${e.id}) but it does not exist.`)}})},setReturnValue(t){this.currentFrame.returnValue=t},waitForPlayerAnswer(t){this.commandsWaitingForPlayerAnswer.push(t)},waitForEndTextAnimation(){return new Promise(t=>{this.promisesWaitingForTextAnimation.push(t)})},endTextAnimation(){for(const t of this.promisesWaitingForTextAnimation)t();this.promisesWaitingForTextAnimation=[]},popAnswerQueue(){return this.commandsWaitingForPlayerAnswer.pop()},addScopedVariable(t,e){this.currentFrame&&(this.currentFrame.scope[t]=e)},async loadScripts(t){this.readGlobalData();const e=await this.loadConfigScriptFiles(t),n=qt().options.scripts;this.addAllScripts([...e,...n])},async loadConfigScriptFiles(t){const e=[];for(const r of t)e.push(qp(jm(r)));return(await Promise.all(e)).map((r,i)=>({fileName:t[i],code:r,id:t[i],type:"script"}))},addAllScripts(t){const e=Date.now();for(const r of t)dn.addNarratScript(r);const n=Date.now();Po.log(`scripts parsed in ${n-e} ms`)},start(){this.setStack({currentIndex:0,branchData:{branch:dn.script.main.branch},label:"main"}),this.setStack({currentIndex:0,branchData:{branch:dn.script.main.branch},label:"main"})},setLastLabel(t){this.lastLabel=t},reset(){this.$reset(),this.stack=[],this.data={},this.hasJumped=!1,this.setStack({currentIndex:0,branchData:{branch:dn.script.main.branch},label:"main"})},readGlobalData(){this.globalData=Ls().globalSave.data},setScript(t){dn.script=t},overrideData(t){this.data=t},setStack(t){this.stack=[];const e=this.frameOptionsToFrame(t);this.lastLabel=t.label,this.stack.push(e)},frameOptionsToFrame(t){const e=t.branchData,n={...t,blocks:[],scope:{},returnValue:null};if(this.addBlock(n,{branchData:e,currentIndex:t.currentIndex}),t.scope&&(n.scope=t.scope),t.args&&t.branchData.args)for(const[r,i]of t.branchData.args.entries())t.args.length>r&&(n.scope[i]=t.args[r]);return n},addBlock(t,e){t.blocks.push(e)},async addAndRunBlock(t){const e=this.currentFrame;if(!e)throw new Error("No frame to add block to");return this.addBlock(e,t),await this.runBlock()},setData(t,e){const n=Ru();NT(n,t,e)},addInstruction(t,e){const n=Ru();RT(n,t,e)},addFrame(t){if(!t.label)if(this.currentFrame)t.label=this.currentFrame.label;else throw new Error("Tried to add a new frame but no label was passed and there is no current frame label");const e=this.frameOptionsToFrame(t);this.stack.push(e)},async addAndRunFrame(t){return await this.addFrame(t),await this.runFrame()},async runFrame(){if(!this.currentFrame)throw new Error("Tried to run a frame but there is no current frame");let e;for(;this.currentBlock;){const n=await this.runBlock();if(n===_p||n===jp)return this.cleanFrame(),n;if(n===oy)return this.cleanFrame()}return this.cleanFrame(),e},cleanFrame(){const t=this.currentFrame,{returnValue:e}=t;return this.stack.splice(this.stack.length-1,1),e},async runBlock(){const t=this.currentBlock;if(!t)throw new Error("Tried to run a block but there is no current block");let e;for(;this.currentLine;){if(e=await this.runLineOnly(),BD(e))return this.cleanBlock(),e;t.currentIndex++}return this.cleanBlock(),e},cleanBlock(){if(!this.currentFrame){ft("Tried to clean a block but there is no current frame");return}if(!this.currentFrame.blocks){ft("Tried to clean a block but there is no current block");return}this.currentFrame.blocks.splice(this.currentFrame.blocks.length-1,1)},async runGame(){let t=await this.runFrame();for(;t===_p;){const e=this.jumpTarget;if(!e){ft("Tried to jump but no target was set");return}this.hasJumped=!0,this.setStack(e);const n=ot().saves.autosaveDisabledOnLabels;(!n||!n.includes(e.label))&&await Zy({}),t=await this.runFrame()}t!==jp&&this.stack.length===0&&this.reachedEndOfScript()},async nextLineOnly(){return this.stack.length===0||this.isBlockFinished()?!1:(this.currentBlock.currentIndex++,!0)},isBlockFinished(){return!this.currentBlock||this.currentBlock&&this.currentBlock.currentIndex>=this.currentBlock.branchData.branch.length},reachedEndOfScript(){if(ot().gameFlow.labelToJumpOnScriptEnd&&this.lastLabel!==ot().gameFlow.labelToJumpOnScriptEnd){this.jumpToLabel(ot().gameFlow.labelToJumpOnScriptEnd);return}qt().endingScript(),qt().options.debug&&ot().debugging.showScriptFinishedMessage},async runLineOnly(){const t=this.currentLine;if(!t){ft("There is no line of script to run.");return}return qt().startingScript(),await xC(t)},async runLabelFunction(t,...e){const n=dn.script[t];if(!n){ft(`Tried to run a label that doesn't exist: ${t}`);return}const r={currentIndex:0,branchData:n,label:t,args:e};return this.addAndRunFrame(r)},runCustomFrame(t){this.addAndRunFrame(t)},async jumpToLabel(t,...e){const n=dn.script[t];if(!n){ft(`Label ${t} doesn't exist. Is the file with this label added in the list of script files to load in the config?`);return}t!==this.lastLabel&&(this.hasJumped=!0),this.setLastLabel(t),this.setStack({currentIndex:0,branchData:n,args:e,label:t}),this.runGame()},async runThenGoBackToPreviousDialog(t,...e){const n=Vn(),r=n.dialog[n.dialog.length-1],i=qt().inScript,o=await this.runLabelFunction(t,...e);return i?n.addDialog(r):qt().endingScript(),o}},getters:{currentFrame(t){return t.stack[t.stack.length-1]},scope(){var t;return((t=this.currentFrame)==null?void 0:t.scope)??{}},currentBlock(){const t=this.currentFrame;return t?t.blocks[t.blocks.length-1]:void 0},currentLine(){const t=this.currentBlock;if(t&&t.branchData.branch.length>t.currentIndex)return t.branchData.branch[t.currentIndex]},commandWaitingForAnswer(){if(this.commandsWaitingForPlayerAnswer.length>0)return this.commandsWaitingForPlayerAnswer[0]}}}),gC=new kp;gC.setupDebugger(!1);const Lo=gC.logger;function jq(t){return Cq((e,n,r)=>Vq(e,n,r),t.code,t.fileName)}function Cq(t,e,n){const r={fileName:n,currentLine:0,error:(s,a)=>t(r,s,a),processCommandsFunction:n1,indentSize:0};r.indentSize=Rq(r,e);const i=Mq(r,e);r.currentLine=0,Lo.log(i);const o={};for(const s of i){s.code.search(":")===-1&&r.error(s.line,"First indentation level should only be used to specify labels");const l=s.code.replace(":","").split(/ +/g),c=l[0],f=l.slice(1);s.branch||r.error(s.line,"This line should have a branch but doesn't"),o[c]={branch:n1(r,s.branch,void 0),args:f}}return o}function n1(t,e,n){const r=t.currentLine;if(!e){let s=0;return n&&(s=n.line),t.error(s,"Processing of command failed because the current branch has no lines inside"),[]}const i={processCommandsFunction:n1,parserContext:t,lines:e,currentLine:0,line:e[0]},o=[];for(;i.currentLine<e.length;){const s=e[i.currentLine];i.line=s;const a=vC(t,s,s.expression),l=dn.commands[a.command.operator];let c=l==null?void 0:l.parser;c||(c=dn.commands.text.parser),Lo.log(dn.commands.text);const{newLine:f}=c(i,a);i.currentLine=f,t.currentLine=r+f,o.push(a)}return o}function vC(t,e,n){Array.isArray(n)||t.error(e.line,`Expression should be an array. Something is wrong. ${t.fileName}:${t.currentLine} - ${e.code}`),Lo.log(n),typeof n[0]!="string"&&t.error(e.line,`Expression operator should be a string ${t.fileName}:${t.currentLine} - ${e.code}`);const r={code:e.code,fileName:t.fileName,line:e.line,command:{staticOptions:{},commandType:n[0],operator:n[0],args:n.slice(1).map(s=>yC(t,e,s)),options:{}}},i=n[0];if(!dn.commands[i]){const s=["else","success","failure"];!xB(i)&&!s.includes(i)&&t.error(e.line,`Unknown command ${i}`)}return r}function yC(t,e,n){return Array.isArray(n)?vC(t,e,n):n}function Tq(t){return t==="true"?!0:t==="false"?!1:t==="undefined"?void 0:t===null?null:isNaN(Number(t))?t:Number(t)}function Oq(t,e){e.charAt(e.length-1)===":"&&(e=e.substr(0,e.length-1));const n=Eq(e),[r]=wC(t,n);return r}function Eq(t){const e=/(["'])(?:\\\1|.)*?\1/g,n=[];let r;for(;(r=e.exec(t))!=null;)n.push(r);let i=0,o=[];for(const s of n){const a=s.index;if(a>i){const c=t.substr(i,a-i),f=bC(c);o=[...o,...f]}const l=s[0].replace(/\\/g,"");o.push(`$$"${l.substring(1,l.length-1)}`),i=a+s[0].length}return o=[...o,...bC(t.substr(i))],o.push(")"),o}function bC(t){t=t.replace(/: *$/g,"");let e=t.split(" ").filter(n=>n);return e=e.reduce((n,r)=>[...n,...r.split(/(\(|\))/g)].filter(i=>i&&i),[]),e.map(n=>Tq(n))}function wC(t,e){Lo.log("===============");let n=[],r=0,i=SC(e)+r,o=r1(e)+r;for(Lo.log(`Parsing expression: ${e}`),Lo.log(`Parenthesis start index: ${i} - end: ${o}`);i!==-1&&o>i;){n=[...n,...e.slice(r,i)];const l=e.slice(i+1);Lo.log(`Found a sub expression. Before: ${n} - After: ${l}`),r=i;const[c,f]=wC(t,l),u=r+f;n.push(c),r=u+1;const d=e.slice(r);Lo.log(`Sub expression came back: ${c} - rest of string: ${d}`),i=SC(d),i!==-1&&(i+=r),o=r1(d),o!==-1&&(o+=r)}o!==-1&&Lo.log("Found parenthesis end before new opening parenthesis, close this expression");const s=r1(e.slice(r))+r;if(s===-1)return t.error(t.currentLine,'Expression is not closed (missing ")" closing parenthesis)'),[n,s];const a=e.slice(r,s);return Lo.log(`End of expression: ${s} - ${a}`),Lo.log("==================="),n=[...n,...a],Aq(t,n),[n,s+1]}function Aq(t,e){e.length<1&&t.error(t.currentLine,"Expression is empty")}function SC(t){return t.findIndex(e=>e==="(")}function r1(t){return t.findIndex(e=>e===")")}function Pq(t,e){return e.split(/\r?\n|$/).reduce((r,i,o)=>{const s={code:i,line:o,multiline:!1},a=i.search(/\\$/);a!==-1&&(s.multiline=!0,i=i.substring(0,a));const l=i.search(/ *\/\//g);return l!==-1&&(i=i.substring(0,l)),s.code=i,s.code.search(/^\s*$/)===-1&&(r.length>0&&r[r.length-1].multiline?(r[r.length-1].code+=i,r[r.length-1].multiline=s.multiline):r.push(s)),r},[])}function Mq(t,e){const n=Pq(t,e);return kC(t,n,0,0).lines}function kC(t,e,n,r){let i=!0,o=n;const s=[];for(;i&&!(o>=e.length);){const a=e[o];let l=a.code;const c=Nq(t,l);if(l=l.substring(c*t.indentSize),Iq(t,c,o),c<r)i=!1;else if(c>r){(s.length===0||c-r!==1)&&t.error(a.line,"Wrong double indentation");const f=kC(t,e,o,c);s[s.length-1].branch=f.lines,o=f.endLine}else{const f=Oq(t,l),u={code:l,indentation:c,line:a.line,expression:f};s.push(u),o++,t.currentLine=o}}return{lines:s,endLine:o}}function Iq(t,e,n){e%1!==0&&t.error(n,`Indentation level of ${e} incorrect. Expected indentation of ${t.indentSize} spaces for this file.`)}function Nq(t,e){return e.search(/[^ ]/)/t.indentSize}function Rq(t,e){const n=e.match(/: *[\n\r]+( *)/);return!n||n.length<2?(t.error(0,"Can't detect indentation level. Make sure you indent with at least 2 spaces and consistently"),0):(Lo.log(n),n[1].length)}class Lq{constructor(){Un(this,"plugins",[]);Un(this,"pinia");Un(this,"script",{});Un(this,"scripts",[]);Un(this,"commands",{})}addCommand(e){this.commands[e.keyword]=e}addPlugin(e){if(this.plugins.push(e),e.customCommands)for(const n of e.customCommands)this.addCommand(n)}callHook(e,...n){for(const r of this.plugins)typeof r[e]=="function"&&r[e](...n)}addNarratScript(e){const n=jq(e);this.script={...this.script,...n},this.scripts.push(e)}customStores(){const e=[];for(const n of this.plugins)if(n.customStores)for(const r in n.customStores)e.push([r,n.customStores[r](this.pinia)]);return e}addCustomSettings(){for(const e of this.plugins)if(e.customSettings)for(const n in e.customSettings)Vs().addCustomSetting(n,e.customSettings[n])}}const dn=new Lq;async function xC(t,e){var r;const n=Zt();try{return await Qp(t,e)}catch(i){console.error(i),console.error(t),ft(`Narrat script runtime error at <span class="error-filename">${t.fileName}:${t.line+1}</span>
69
+ `:""}var z9=V9,q9={dump:z9};function Ly(t,e){return function(){throw new Error("Function yaml."+t+" is removed in js-yaml 4. Use yaml."+e+" instead, which is now safe by default.")}}var U9=pi,H9=J_,K9=Z_,W9=ij,G9=oj,J9=Ty,Q9=Tj.load,Y9=Tj.loadAll,X9=q9.dump,Z9=Ji,eV={binary:uj,float:rj,map:X_,null:ej,pairs:dj,set:hj,timestamp:lj,bool:tj,int:nj,merge:cj,omap:fj,seq:Y_,str:Q_},tV=Ly("safeLoad","load"),nV=Ly("safeLoadAll","loadAll"),rV=Ly("safeDump","dump"),iV={Type:U9,Schema:H9,FAILSAFE_SCHEMA:K9,JSON_SCHEMA:W9,CORE_SCHEMA:G9,DEFAULT_SCHEMA:J9,load:Q9,loadAll:Y9,dump:X9,YAMLException:Z9,types:eV,safeLoad:tV,safeLoadAll:nV,safeDump:rV};function qp(t){return new Promise((e,n)=>{const r=new XMLHttpRequest;r.onload=function(){r.status>=200&&r.status<300?e(r.responseText):(ft(`Failed to load file ${t}`,r.status),n(r.status))},r.open("GET",t),r.send()})}async function yd(t){try{const e=await qp(t);let n;if(t.endsWith(".json"))n=JSON.parse(e);else if(t.endsWith(".yaml"))n=iV.load(e);else{const r=`Unsupported file type for data file ${t} (must be .json or .yaml)`;throw new Error(r)}if(!n)throw new Error(`Data loaded from ${t} is empty`);return n}catch(e){throw console.error(`Failed to load data file ${t}: ${e}`),e}}const oV=(t,e)=>{const n={};for(const r in t)n[r]=e(t[r]);return n},Gj=(t,e)=>{for(const n in t){const r=t[n];e(r,n,t),typeof r=="object"&&r!==null&&Gj(r,e)}},ac={};async function sV(t){return ac[t]?ac[t]:Jj(t,t)}async function aV(t){Po.log("Loading images");const e=[],n=async(i,o)=>await Jj(i,o),r=(i,o)=>{e.push(n(i,o))};for(const i in t.common.images){const o=t.common.images[i];r(i,o)}if(t.preload.images)for(const i in t.preload.images.assets){const o=t.preload.images.assets[i];r(i,o)}for(const i in t.screens.screens){const o=t.screens.screens[i];if(o.background&&!t.common.images[o.background]&&!o.video&&r(o.background,o.background),o.buttons)for(const s in o.buttons){const a=o.buttons[s];typeof a=="object"&&a.background&&!t.common.images[a.background]&&r(a.background,a.background)}}return Promise.all(e)}async function Jj(t,e){if(ac[t])return ac[t];if(e===Tp){const r=new Image;return ac[t]=r,r}const n=new Promise((r,i)=>{const o=new Image;o.onload=()=>{ac[t]=o,r(o)},o.onerror=s=>{ft(`Failed to load image ${t} at ${e}`,s),i(s)},o.src=bi(e)});return ac[t]=n,n}const Up={};function lV(t){return Up[t]??{}}function Qj(t,e,n){const r=lV(t.transition),i=t.duration??r.duration??500,o=t.delay??r.delay??0;return{...t,resolve:n,duration:i,delay:o,oldScreen:e}}const Ni=Rr("notifications",{state:()=>({notifications:[],enabled:!0}),actions:{async addNotification(t,e,n){if(!this.enabled)return;t=Ds(t);const r=`${Date.now()}-${Math.random()*1e4}`;this.notifications.push({id:r,text:t,description:e,icon:n}),ot().notifications.alsoPrintInDialogue&&H_(`[NOTIFICATION] ${t}`),await Mi(ot().notifications.timeOnScreen*1e3),this.deleteNotification(r)},deleteNotification(t){const e=this.findNotifications(t);e&&this.notifications.splice(this.notifications.indexOf(e),1)},findNotifications(t){return this.notifications.find(e=>e.id===t)},disableNotifications(){this.enabled=!1;for(const t in this.notifications)this.deleteNotification(t)},enableNotifications(){this.enabled=!0}}}),mi=Rr("inventory",{state:()=>({items:{},interactionTags:{}}),actions:{generateSaveData(){return{items:yn(this.items),interactionTags:yn(this.interactionTags)}},loadSaveData(t){this.items={...this.items,...yn(t.items)},this.interactionTags={...yn(t.interactionTags)}},updateConfig(t){Object.keys(t.items).forEach(e=>{this.items[e]||(this.items[e]={amount:0,id:e})})},reset(t){this.$reset(),this.updateConfig(t)},hasItem(t,e){var n;return e||(e=1),((n=this.items[t])==null?void 0:n.amount)>=e},getExistingItem(t){return this.items[t]},getItemAmount(t){var e;return((e=this.getExistingItem(t))==null?void 0:e.amount)||0},add(t){const e=this.getExistingItem(t.id);e?e.amount+=t.amount:this.items[t.id]={...t};const n=ps(t.id).name,r=t.amount>1?`${n} x ${t.amount}`:n;Ni().addNotification(`Received item: ${r}`)},enableInteraction(t){t||(t="default"),this.interactionTags[t]={blockedInteraction:!1}},disableInteraction(t){t||(t="default"),this.interactionTags[t]={blockedInteraction:!0}},onScriptStart(){const t=ot().interactionTags;Object.keys(t).forEach(e=>{t[e].onlyInteractOutsideOfScripts&&this.disableInteraction(e)})},onScriptEnd(){const t=ot().interactionTags;Object.keys(t).forEach(e=>{t[e].onlyInteractOutsideOfScripts&&this.enableInteraction(e)})},isInteractionTagBlocked(t){return t||(t="default"),this.interactionTags[t]?this.interactionTags[t].blockedInteraction:!1},remove(t){const e=this.getExistingItem(t.id);e&&(e.amount-=t.amount,Ni().addNotification(`Lost item: ${ps(t.id).name} x ${t.amount}`),e.amount<=0&&this.deleteItem(t.id))},deleteItem(t){this.getExistingItem(t)&&(this.items[t].amount=0)},canUseItem(t){var n;const e=ps(t.id);return!!(e&&e.onUse&&!this.isInteractionTagBlocked(e.tag)&&!((n=Vn().currentDialog)!=null&&n.choices))},useItem(t){let e=!1;const n=ps(t.id);if(t&&this.canUseItem(t)&&n){const r=n.onUse;e=!0,oc("onItemUsed"),r.action==="jump"?Zt().jumpToLabel(r.label):r.action==="run"?Zt().runThenGoBackToPreviousDialog(r.label,!0):(e=!1,ft(`Unknown action ${r.action}`))}return e}}}),Io=Rr("screens",{state:()=>({layers:[{screen:"default"}],buttons:{}}),actions:{setScreen(t,e,n){return new Promise(r=>{const i=this.layers[e||0];let o;const s=(i==null?void 0:i.screen)??null;if(s===t){r();return}n&&(o=Qj(n,s,r)),this.layers[e||0]={screen:t,transition:o},o||r()})},finishTransition(t){const e=this.layers[t];if(!e)ft(`Tried to finish transition on layer ${t} but it doesn't exist`);else if(e.transition){const n=e.transition.resolve;delete e.transition,n()}},transitionScreen(t,e,n){return this.setScreen(t,n??0,e)},emptyLayer(t,e){return new Promise(n=>{const r=this.layers[t];if(!r){lc(`Tried to empty layer ${t} but it doesn't exist`);return}if(e){const i=r.screen,o=Qj(e,i,n);r.transition=o}r.screen="@empty",e||n()})},updateConfig(t){console.log("update config!");const e=ar().buttons.buttons;for(const n in e)this.buttons[n]||(this.buttons[n]={state:e[n].enabled})},reset(t){this.$reset(),this.updateConfig(t)},changeButton(t,e){if(!this.buttons[t]){ft(`Tried to change button ${t} but it doesn't exist`);return}this.buttons[t].state=e},generateSaveData(){return{layers:yn(this.layers).filter(t=>t).map(t=>t.screen??null),buttons:yn(this.buttons)}},loadSaveData(t){this.layers=yn(t.layers).map(e=>(e!==null&&typeof e!="string"&&(e=null),{screen:e})),this.buttons=ic(this.buttons,yn(t.buttons))},isButtonDisabled(t){const e=this.getButtonState(t);return e==="hidden"||e==="greyed"||e===!1},isButtonInteractible(t){const e=this.getButtonState(t);return e?e===!0:!1},isButtonClickable(t){if(!this.isButtonInteractible(t))return!1;const n=kl(t);return!!Hp(n)},getButtonState(t){const e=kl(t),n=this.buttons[t],r=e.tag||"default",i=n.state;return i===!0&&mi().isInteractionTagBlocked(r)?"greyed":i},clickOnButton(t){if(!this.isButtonClickable(t))return;const e=Zt(),n=kl(t);oc("onButtonClicked");const r=n.action;r&&(n.actionType==="run"?e.runLabelFunction(r):e.jumpToLabel(r))}},getters:{nonEmptyLayers(t){return t.layers.filter(e=>e)},isTransitioning(t){return t.layers.some(e=>e==null?void 0:e.transition)}}});function Hp(t){if(!qt().inScript)return!0;const e=km().clickableDuringScriptsByDefault;if(e)return t.scriptClickable!==!1;if(!e)return t.scriptClickable===!0}const cV=["screenObject","sprite"];function Yj(t){return typeof t=="object"&&t!==null&&cV.includes(t._entityType)}function uV(t){return typeof t=="object"&&t!==null&&t._entityType==="sprite"}function fV(t){if(t.includes(" ")){const e=t.split(" ");return{label:e[0],args:e.slice(1)}}else return{label:t}}const bo=Rr("screenObjects",{state:()=>({tree:[],objectsList:{}}),actions:{addObject(t){t.parent?t.parent.children.push(t):this.tree.push(t),this.objectsList[t.id]=t},createObject(t){const e={_entityType:"screenObject",id:tc(),name:"Screen Object",tags:[],x:0,y:0,anchor:{x:0,y:0},width:1,height:1,opacity:1,scale:1,layer:0,children:[],...t};return this.addObject(e),e},destroyObject(t){let e=t;typeof e=="string"&&(e=this.getObject(e));for(let n=e.children.length-1;n>=0;n--)this.destroyObject(e.children[n]);if(e.parent){const n=e.parent,r=n.children.indexOf(e);r!==-1?n.children.splice(r,1):console.warn(`Could not find object ${e.id} in parent's children`)}else{const n=this.tree.indexOf(e);n!==-1?this.tree.splice(n,1):console.warn(`Object to destroy not found in store (${e.id})`)}delete this.objectsList[e.id]},createSprite(t){const e=this.createObject(t);return e._entityType="sprite",sV(t.image).then(n=>{const r=this.getObject(e.id);r.width===1&&r.height===1&&(r.width=n.width,r.height=n.height)}),e},getObject(t){return this.objectsList[t]},isScreenObjectClickable(t){return Hp(t)?!!(t.onClick||t.onHover):!1},clickObject(t){t.onClick&&this.handleObjectAction(t,t.onClick)},hoverObject(t){t.onHover&&this.handleObjectAction(t,t.onHover)},handleObjectAction(t,e){if(!this.isScreenObjectClickable(t))return;oc("onSpriteClicked");let n;if(typeof e=="string"){const r=fV(e);n={label:r.label,args:r.args}}else n=e;n.method=n.method??t.clickMethod??"jump",n.args=n.args??[],n.method==="run"?Zt().runThenGoBackToPreviousDialog(n.label,...n.args):n.method==="jump"?Zt().jumpToLabel(n.label,...n.args):ft(`Unknown sprite click method ${t.clickMethod}`)},generateSaveData(){return{tree:yn(this.tree.map(t=>t.id)),objectsList:yn(oV(this.objectsList,t=>this.screenObjectToSave(t)))}},loadSaveData(t){this.objectsList=this.loadAllObjects(yn(t.objectsList)),this.tree=t.tree.map(e=>this.objectsList[e])},reset(){this.$reset()},screenObjectToSave(t){return{...t,children:t.children.map(e=>e.id),parent:t.parent?t.parent.id:void 0}},loadAllObjects(t){for(const e of Object.values(t)){const n=e;n.parent=n.parent?t[n.parent]:void 0,n.children=n.children.map(r=>t[r])}return t},emptyLayer(t){for(let e=this.tree.length-1;e>=0;e--){const n=this.tree[e];n.layer===t&&this.destroyObject(n)}},emptyAllLayers(){for(let t=this.tree.length-1;t>=0;t--){const e=this.tree[t];this.destroyObject(e)}}}});function Xj(t){return"save"in t}function Zj(t){return"globalSave"in t}function dV(t){return"config"in t}const hV=g.defineComponent({props:{percentage:Number,step:String},methods:{loadingStyle(){return{width:`${this.percentage*60}vw`}}},computed:{}}),pV={id:"loading-bar"},mV={id:"loading-text"};function gV(t,e,n,r,i,o){return g.openBlock(),g.createElementBlock("div",pV,[g.createElementVNode("div",{id:"inner-loading-bar",style:g.normalizeStyle(t.loadingStyle())},null,4),g.createElementVNode("div",mV,[g.createElementVNode("h3",null,"Loading "+g.toDisplayString(Math.floor(t.percentage*100))+"% - "+g.toDisplayString(t.step),1)])])}const vV=Ns(hV,[["render",gV]]),yV="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Generator:%20Adobe%20Illustrator%2019.0.0,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%206.00%20Build%200)%20--%3e%3csvg%20version='1.1'%20id='Rat'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%20595.3%20595.3'%20style='enable-background:new%200%200%20595.3%20595.3;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e%20.st0{fill:%23E23B33;}%20%3c/style%3e%3cpath%20id='Rat_Shape'%20class='st0'%20d='M556.9,82.5c-10.8-24.3-47-57.1-71.3-65.6c-24.3-8.4-64.1-0.3-88.7,22.3%20c-20,18.4-26,28.2-29.1,37c-2.1,5.9-4.8,13.5-6,20.9v0c-0.5,4.1-4.5,7-8.6,6.1c-10.4-2.3-29.5-6-44.4-6.3%20c-13.7-0.2-30.1,3.2-40.4,5.7c-4.5,1.1-8.8-2.2-8.8-6.8c-0.1-5.3-1.1-12.3-4.8-19.6c-8.5-16.9-19.6-32.6-57.8-47.4%20c-31.9-12.4-75.1-9.7-100.8,1.8c-28.1,12.6-42.4,37.9-54,61.8c-14.4,29.8-14.9,83.6-6.4,104c12.8,30.7,35.8,47.2,52.6,53%20c11.3,3.8,28.2,3.7,38.2,3.3c4.2-0.2,7.7,3.3,7.5,7.5c-0.7,13.6-0.9,41.5,7,61.4c7.7,19.4,29.7,62.3,50.7,101.2%20c0,0.1-14.6,2.9-31.4,6.8c-23.9,5.5-52.6,12.7-54.3,13.7c-3.5,2.1-3,10-2.7,12c0.5,3.4,5.3,8.1,6.9,8.3c3.9,0.3,31.3-7.6,55.7-14.6%20c18.5-5.3,34.9-9.3,35.5-8.2c5.1,9.3,10,18,14.4,25.8c5.2,9.1,10.7,16.4,14.1,23.6c1.1,2.3-16.6,5.8-32.5,14.7%20c-16.4,9.1-29.7,21-32.3,24c-1.8,2.1-3,6-1.2,10.7c1.1,2.9,10,5.7,12.4,5.1c6.8-1.7,16.5-12.5,33.1-21.1%20c16.3-8.5,32.9-14.9,33.8-13.6c9.7,14.3,16.9,21.6,22.6,31.2c9.8,16.5,27.3,45.9,46.6,39.5c6.4-2.1,31.1-33.6,53.3-68.6%20c1.3-2.1,16.1,11.3,30.4,23.2c13.8,11.4,22.7,20.6,27.1,21.4c5.4,1,14.2-7.7,14.1-14.7c-0.1-2.7-14.3-13.8-29.1-26.2%20c-14.5-12.1-30.1-22.8-29.2-24.3c7.6-12,14.5-23.7,20.1-33.9c4.3-7.8,8.9-16,13-24.7c0.6-1.2,15.9,3,31.4,7.1c15.3,4,26.7,10,31,8%20c6.9-3,11.6-13.8,9.4-18.3c-1.1-2.3-17-7.3-33.2-12c-14.2-4.1-28-6.5-27.7-7.3c15.5-34,28.8-64.8,27.6-69.6%20c-1.7-7.1,2.6-11.9,7-36.5c3.2-18.1,4.7-40.9,5.2-51.7c0.2-3.5,2.8-6.3,6.3-6.7c3.1-0.3,6.9-0.9,10.5-1.9c7.8-2,18.6-7.8,36.4-20.6%20c17.9-12.8,38.7-49.6,44.4-67.8S567.6,106.8,556.9,82.5z%20M265.1,336.2c-8.1,4-13,7-26.4,9.6c-6.9,1.4-29.4-0.2-40.7-4.6%20c-10.5-4.1-19.9-7.6-30-15.4s-15.7-13.2-15.7-15.3c0-4.4,6-9.4,11-9.4c5.1,0,14.5,9.2,29.7,16.6c14.3,7,17.9,6.1,25.4,7.3%20c2.9,0.5,7.7,0.6,10.7,0.4c14.1-1.3,21.4-5.9,25.3-8.8c4-3,13.7-12.9,17.2-12.5c8,1,18.9,3.4,18.9,7.1%20C290.4,319,273.2,332.1,265.1,336.2z%20M320.9,521.4c-4.3,3.7-17.7,13.5-23.3,13.5c-2.8,0-7.4-8.2-11.5-16.8%20c-4.1-8.5-9.1-21.1-9.1-31.6c0-4.6,6-7.4,13.4-9.2c7.2-1.7,27.3-1.8,29.9-1.1c6.8,1.7,12.9,2.2,12.7,6.4c-0.4,12.7-7,18.9-8.3,24.3%20C323.4,512.3,323.4,519.2,320.9,521.4z%20M431.1,320.3c-9.2,7.4-10.6,8.1-24.9,13.7c-11.3,4.4-28.6,5.8-41.6,3.6%20c-12.2-2.1-22.3-4.6-29.5-10.1c-9.7-7.3-16.4-15.1-16.4-19.8c0-3.7,6.4-4.3,14.5-4.9c3.5-0.3,9.3,5.9,13.2,9.2%20c8.1,6.8,14.8,8,28.8,9.9c2.9,0.4,7.8,0.4,10.7,0.1c7.5-0.9,12-0.4,25.8-8.2c20-11.2,17.8-14.4,25.1-12.6c2.2,0.6,5.8,1.2,5.6,5.6%20C442.4,309,440.5,312.7,431.1,320.3z'/%3e%3c/svg%3e",bV={id:"engine-splash-screen",class:"flex justify-center items-center"},wV={id:"engine-splash-title"},SV=["src"],Dy=g.defineComponent({__name:"engine-splash",emits:["finished"],setup(t,{emit:e}){const n=e,r=g.ref("hidden"),i=g.computed(()=>({transitionDuration:`${f.value}s`})),o=g.computed(()=>({invisible:r.value!=="appear"})),s=qt(),a=g.computed(()=>{var h;return((h=ot().splashScreens)==null?void 0:h.engineSplashScreen)??{}}),l=g.computed(()=>typeof a.value.overrideText=="string"?a.value.overrideText:"Made with narrat engine"),c=g.computed(()=>a.value.overrideLogo??yV),f=g.computed(()=>typeof a.value.fadeDuration=="number"?a.value.fadeDuration:.8),u=g.computed(()=>typeof a.value.timeBeforeFadeout=="number"?a.value.timeBeforeFadeout:1.5);g.onMounted(async()=>{if(await Mi(10),r.value="appear",a.value.skip||s.options.debug){d();return}await Mi(f.value*1e3),await Mi(u.value*1e3),r.value="disappear",await Mi(f.value*1e3),d()});function d(){s.loading.loaded?n("finished"):s.listener.once("gameLoaded",()=>{n("finished")})}return(h,p)=>(g.openBlock(),g.createElementBlock("div",bV,[g.createElementVNode("div",{id:"engine-splash-header",class:g.normalizeClass(["flex justify-center flex-col items-center",o.value]),style:g.normalizeStyle(i.value)},[g.createElementVNode("h1",wV,g.toDisplayString(l.value),1),g.createElementVNode("img",{src:c.value,alt:"Narrat Logo",id:"engine-splash-logo"},null,8,SV),g.createVNode(vV,{percentage:g.unref(s).loading.percentage,step:g.unref(s).loading.step},null,8,["percentage","step"])],6)]))}});class Kp{constructor(){Un(this,"listeners",{})}on(e,n){return this.listeners[e]||this.addEventToMap(e),this.listeners[e].add(n),n}off(e,n){return this.listeners[e]&&this.listeners[e].delete(n),n}once(e,n){const r=(...i)=>{this.off(e,r),n(...i)};return this.on(e,r)}emit(e,...n){this.listeners[e]&&this.listeners[e].forEach(r=>r(...n))}clear(){Object.keys(this.listeners).forEach(e=>{delete this.listeners[e]})}addEventToMap(e){this.listeners[e]=new Set}}class kV extends Kp{setup(){const e=()=>{this.emit("preUpdate"),this.emit("update"),this.emit("postUpdate"),requestAnimationFrame(e)};e()}}const bd=new kV;Be.Vec2=void 0,(t=>{function e(p,m){return{x:p??0,y:m??0}}t.create=e;function n(p){return Math.sqrt(p.x*p.x+p.y*p.y)}t.magnitude=n;function r(p){const m=n(p);return m===0?e(0,0):{x:p.x/m,y:p.y/m}}t.normalize=r;function i(p,m){return{x:p.x+m.x,y:p.y+m.y}}t.add=i;function o(p,m){return{x:p.x-m.x,y:p.y-m.y}}t.subtract=o;function s(p,m){return{x:p.x*m.x,y:p.y*m.y}}t.multiply=s;function a(p,m){return{x:p.x*m,y:p.y*m}}t.scale=a;function l(p,m){return{x:p.x/m.x,y:p.y/m.y}}t.divide=l;function c(p,m){return n(o(p,m))}t.distance=c;function f(p,m,y){return{x:p.x+(m.x-p.x)*y,y:p.y+(m.y-p.y)*y}}t.lerp=f;function u(p,m){const y=Math.cos(m),v=Math.sin(m);return{x:p.x*y-p.y*v,y:p.x*v+p.y*y}}t.rotate=u;function d(p,m){const y=o(m,p);return t.normalize({x:-y.y,y:y.x})}t.normal=d;function h(p,m){return p.x*m.x+p.y*m.y}t.dot=h})(Be.Vec2||(Be.Vec2={}));function By(t,e,n,r){const i=t/n,o=e/r;return Math.min(i,o)}const Vs=Rr("settings",{state:()=>({baseSettings:{textSpeed:30,animateText:!0,fontSize:16},settingsSchema:{textSpeed:{type:"number",defaultValue:30,minValue:1,maxValue:100,step:5,name:"Text Speed",description:"The speed at which text plays."},animateText:{type:"boolean",defaultValue:!0,name:"Animate Text",description:"Whether or not text should animate."},fontSize:{type:"integer",defaultValue:16,minValue:8,maxValue:64,step:1,name:"Font Size",description:"The base font size for the game."}},customSettings:{},customSettingsSchema:{}}),actions:{reset(t){this.$reset(),this.updateConfig(t)},getSetting(t){if(typeof this.baseSettings[t]<"u")return this.baseSettings[t];if(typeof this.customSettings[t]<"u")return this.customSettings[t];ft(`Setting ${t} does not exist.`)},getSettingSchema(t){if(typeof this.settingsSchema[t]<"u")return this.settingsSchema[t];if(typeof this.customSettingsSchema[t]<"u")return this.customSettingsSchema[t];ft(`Setting ${t} does not exist.`)},getAllSettingSchemas(){return{...this.settingsSchema,...this.customSettingsSchema}},setSetting(t,e){typeof this.baseSettings[t]<"u"?this.baseSettings[t]=e:typeof this.customSettings[t]<"u"?this.customSettings[t]=e:ft(`Setting ${t} does not exist.`),t==="fontSize"&&document.documentElement.style.setProperty("font-size",`${e}px`),t==="textSpeed"&&(ot().dialogPanel.textSpeed=e),t==="animateText"&&(ot().dialogPanel.animateText=e)},updateConfig(t){var e;if(this.setSetting("textSpeed",t.dialogPanel.textSpeed??Cp),this.setSetting("animateText",t.dialogPanel.animateText??!0),this.setSetting("fontSize",t.layout.defaultFontSize??16),(e=t.settings)!=null&&e.customSettings)for(const n in t.settings.customSettings)this.addCustomSetting(n,t.settings.customSettings[n])},addCustomSetting(t,e){this.customSettings[t]=e.defaultValue,this.customSettingsSchema[t]=e},generateSaveData(){return{baseSettings:yn(this.baseSettings),customSettings:yn(this.customSettings)}},loadSaveData(t){for(const e in t.baseSettings)this.setSetting(e,yn(t.baseSettings[e]));for(const e in t.customSettings)typeof this.customSettings[e]<"u"&&this.setSetting(e,yn(t.customSettings[e]))}}});function wd(t,e=50,n={}){let r;const i=n.isImmediate??!1,o=n.callback??!1,s=n.maxWait;let a=Date.now(),l=[];function c(){if(s!==void 0){const u=Date.now()-a;if(u+e>=s)return s-u}return e}const f=function(...u){const d=this;return new Promise((h,p)=>{const m=function(){if(r=void 0,a=Date.now(),!i){const b=t.apply(d,u);o&&o(b),l.forEach(({resolve:S})=>S(b)),l=[]}},y=i&&r===void 0;r!==void 0&&clearTimeout(r);const v=c();if(r=setTimeout(m,v),y){const b=t.apply(d,u);return o&&o(b),h(b)}l.push({resolve:h,reject:p})})};return f.cancel=function(u){r!==void 0&&clearTimeout(r),l.forEach(({reject:d})=>d(u)),l=[]},f}const Br=Rr("rendering",{state:()=>({screenHeight:window.innerHeight,screenWidth:window.innerWidth,layoutMode:"horizontal",resizeObserver:null,containerElement:null,narratAppElement:null,dialogPanelMode:"auto"}),actions:{generateSaveData(){return{dialogPanelMode:this.dialogPanelMode}},loadSaveData(t){this.dialogPanelMode=t.dialogPanelMode},reset(){this.dialogPanelMode="auto"},updateScreenSize(t,e){this.screenHeight=e,this.screenWidth=t,t<ot().layout.verticalLayoutThreshold?(this.layoutMode="vertical",document.querySelector("html").style.fontSize=`${Vs().baseSettings.fontSize??40}px`):(this.layoutMode="horizontal",document.querySelector("html").style.fontSize=`${Vs().baseSettings.fontSize??16}px`)},setContainer(t){this.containerElement=t,this.resizeObserver&&this.resizeObserver.disconnect(),this.resizeObserver=new ResizeObserver(wd(()=>{this.refreshScreenSize()},100,{maxWait:200})),this.resizeObserver.observe(t),this.refreshScreenSize()},refreshScreenSize(){const t=this.containerElement;t&&this.updateScreenSize(t.clientWidth,t.clientHeight)}},getters:{gameScaleRatio(t){return By(this.screenWidth,this.screenHeight,this.gameWidth,this.gameHeight)},overlayMode(t){return!!(ot().dialogPanel.overlayMode&&t.layoutMode==="horizontal")},gameWidth(){const t=ot();return this.layoutMode==="vertical"||this.overlayMode?t.layout.backgrounds.width:t.layout.backgrounds.width+Cm()},gameHeight(){const t=ot();return this.layoutMode==="vertical",t.layout.backgrounds.height},dialogWidth(){return this.layoutMode==="vertical"?this.viewportWidth:Cm()},dialogHeight(){return this.layoutMode==="vertical"?this.actualGameHeight-this.gameHeight:ot().dialogPanel.height??this.gameHeight},actualGameHeight(){let t=this.gameHeight;return this.layoutMode==="vertical"&&(t=this.screenHeight/this.gameScaleRatio),t},viewportRatio(t){if(this.layoutMode==="vertical"){const e=ot().layout.backgrounds;return t.screenWidth/e.width}return 1},viewportHeight(t){return ot().layout.backgrounds.height*this.viewportRatio},viewportWidth(t){return ot().layout.backgrounds.width*this.viewportRatio},showDialog(t){if(this.dialogPanelMode==="on")return!0;if(this.dialogPanelMode==="off")return!1;if(!this.overlayMode||this.layoutMode==="vertical")return!0;const e=qt().inScript;let n=!0;return Io().isTransitioning&&ot().dialogPanel.hideDuringTransition&&(n=!1),!ot().dialogPanel.showAfterScriptEnd&&!e&&(n=!1),n},container(){return this.containerElement?this.containerElement:document.body},inputsContainer(){return qt().hasCustomContainer?this.container:window},narratApp(){return this.narratAppElement?this.narratAppElement:document.body}}});var Fr=(t=>(t.Arrow_Left="Arrow_Left",t.Arrow_Right="Arrow_Right",t.Arrow_Up="Arrow_Up",t.Arrow_Down="Arrow_Down",t.Enter="Enter",t.Escape="Escape",t.Space="Space",t.Backspace="Backspace",t.Key_A="Key_A",t.Key_B="Key_B",t.Key_C="Key_C",t.Key_D="Key_D",t.Key_E="Key_E",t.Key_F="Key_F",t.Key_G="Key_G",t.Key_H="Key_H",t.Key_I="Key_I",t.Key_J="Key_J",t.Key_K="Key_K",t.Key_L="Key_L",t.Key_M="Key_M",t.Key_N="Key_N",t.Key_O="Key_O",t.Key_P="Key_P",t.Key_Q="Key_Q",t.Key_R="Key_R",t.Key_S="Key_S",t.Key_T="Key_T",t.Key_U="Key_U",t.Key_V="Key_V",t.Key_W="Key_W",t.Key_X="Key_X",t.Key_Y="Key_Y",t.Key_Z="Key_Z",t))(Fr||{}),lr=(t=>(t.Dpad_Up="Dpad_Up",t.Dpad_Down="Dpad_Down",t.Dpad_Left="Dpad_Left",t.Dpad_Right="Dpad_Right",t.Left_Thumbstick_Up="Left_Thumbstick_Up",t.Left_Thumbstick_Down="Left_Thumbstick_Down",t.Left_Thumbstick_Left="Left_Thumbstick_Left",t.Left_Thumbstick_Right="Left_Thumbstick_Right",t.Left_Thumbstick_Press="Left_Thumbstick_Press",t.Right_Thumbstick_Up="Right_Thumbstick_Up",t.Right_Thumbstick_Down="Right_Thumbstick_Down",t.Right_Thumbstick_Left="Right_Thumbstick_Left",t.Right_Thumbstick_Right="Right_Thumbstick_Right",t.Right_Thumbstick_Press="Right_Thumbstick_Press",t.FaceButton_Left="FaceButton_Left",t.FaceButton_Right="FaceButton_Right",t.FaceButton_Top="FaceButton_Top",t.FaceButton_Bottom="FaceButton_Bottom",t.Shoulder_Left="Shoulder_Left",t.Shoulder_Right="Shoulder_Right",t.Trigger_Button_Left="Trigger_Button_Left",t.Trigger_Button_Right="Trigger_Button_Right",t.Special_Left="Special_Left",t.Special_Right="Special_Right",t.Special_Third="Special_Third",t))(lr||{});const xV={Left_Thumbstick_X:["Left_Thumbstick_Left","Left_Thumbstick_Right"],Left_Thumbstick_Y:["Left_Thumbstick_Up","Left_Thumbstick_Down"],Right_Thumbstick_X:["Right_Thumbstick_Left","Right_Thumbstick_Right"],Right_Thumbstick_Y:["Right_Thumbstick_Up","Right_Thumbstick_Down"]},eC={0:"FaceButton_Bottom",1:"FaceButton_Right",2:"FaceButton_Left",3:"FaceButton_Top",4:"Shoulder_Left",5:"Shoulder_Right",6:"Trigger_Button_Left",7:"Trigger_Button_Right",8:"Special_Left",9:"Special_Right",10:"Left_Thumbstick_Press",11:"Right_Thumbstick_Press",12:"Dpad_Up",13:"Dpad_Down",14:"Dpad_Left",15:"Dpad_Right",16:"Special_Third"},$V={0:"Left_Thumbstick_X",1:"Left_Thumbstick_Y",2:"Right_Thumbstick_X",3:"Right_Thumbstick_Y"},_V=Object.fromEntries(Object.entries(eC).map(([t,e])=>[e,parseInt(t)])),tC={ArrowLeft:"Arrow_Left",ArrowRight:"Arrow_Right",ArrowUp:"Arrow_Up",ArrowDown:"Arrow_Down",Enter:"Enter",Escape:"Escape",Space:"Space",Backspace:"Backspace",a:"Key_A",b:"Key_B",c:"Key_C",d:"Key_D",e:"Key_E",f:"Key_F",g:"Key_G",h:"Key_H",i:"Key_I",j:"Key_J",k:"Key_K",l:"Key_L",m:"Key_M",n:"Key_N",o:"Key_O",p:"Key_P",q:"Key_Q",r:"Key_R",s:"Key_S",t:"Key_T",u:"Key_U",v:"Key_V",w:"Key_W",x:"Key_X",y:"Key_Y",z:"Key_Z"},jV=Object.fromEntries(Object.entries(tC).map(([t,e])=>[e,t])),Wp=.3;class CV extends EventTarget{constructor(){super(...arguments);Un(this,"gamepadAvailable",!0);Un(this,"gameActions",{});Un(this,"keyboardState",{});Un(this,"actions",{});Un(this,"lastInputMethodUsed","km");Un(this,"gamepad",null)}kbEvent(){this.changeLastInput("km")}getGamepads(){return navigator.getGamepads?navigator.getGamepads():(this.gamepadAvailable=!1,[])}gamepadEvent(){this.changeLastInput("gamepad")}mouseEvent(){this.changeLastInput("km")}changeLastInput(n){this.lastInputMethodUsed!==n&&(this.lastInputMethodUsed=n,this.dispatchEvent(new CustomEvent("change-input",{detail:n})))}getGamepad(){const n=this.getGamepads().filter(r=>r!==null);if(n.length>0)return n[0]}startListening(){this.updateGamepad();const n=Br().inputsContainer;n.addEventListener("mousemove",r=>{this.mouseEvent()}),n.addEventListener("keydown",r=>{this.kbEvent();const i=this.getKeyboardKeyFromEventKey(r.key);if(i){const o=this.getKeyboardKeyString(i),s=this.getKeyboardState(o).current;this.keyboardState[o]={previous:s,current:!0}}}),n.addEventListener("keyup",r=>{this.kbEvent();const i=this.getKeyboardKeyFromEventKey(r.key);if(i){const o=this.getKeyboardKeyString(i),s=this.getKeyboardState(o).current;this.keyboardState[o]={previous:s,current:!1}}}),bd.on("preUpdate",()=>{this.update()})}updateGamepad(){const n=this.getGamepad();n?this.gamepad?this.updateAllNarratButtons(n,this.gamepad):this.gamepad=this.setupNarratGamepad(n):this.gamepad=null}mapAxisToGamepadButton(n,r){const i=xV,o=$V[n];if(o&&i[o]){const[s,a]=i[o],l=Math.abs(r),c=r<0,f=r>0,u={key:s,state:{pressed:c&&l>Wp,touched:c&&l>Wp,value:c?l:0},previous:{pressed:!1,touched:!1,value:0}},d={key:a,state:{pressed:f&&l>Wp,touched:f&&l>Wp,value:f?l:0},previous:{pressed:!1,touched:!1,value:0}};return[u,d]}else return ft(`No mapping found for axis ${n}`),null}mapAllAxisToGamepadButtons(n,r){const i=[];for(const[o,s]of r.axes.entries()){const a=this.mapAxisToGamepadButton(o,s);a&&(n.length>o&&(a[0].previous=n[0].state,a[1].previous=n[1].state),i.push(...a))}return i}setupNarratGamepad(n){return{id:n.id,gamepad:n,buttons:n.buttons.map((i,o)=>this.getNarratButtonFromGamepad(i,i,o)),axes:n.axes.map((i,o)=>({index:o,value:i,previous:i})),axesButtons:this.mapAllAxisToGamepadButtons([],n)}}updateAllNarratButtons(n,r){for(const[i,o]of n.buttons.entries()){const s=r.buttons[i];s.previous=yn(s.state),s.state=yn(o),s.previous.pressed!==s.state.pressed&&this.gamepadEvent()}for(const[i,o]of n.axes.entries()){const s=r.axes[i];s.previous=s.value,s.value=o,s.previous!==s.value&&this.gamepadEvent()}r.axesButtons=this.mapAllAxisToGamepadButtons(r.axesButtons,n)}getNarratButtonFromGamepad(n,r,i){return{index:i,state:yn(r),previous:yn(r)}}addAction(n){if(this.gameActions[n.id]=n,n.type==="button"){const r={config:n,active:!1,justPressed:!1,justReleased:!1};this.actions[n.id]={state:r,previous:yn(r)}}else{const r={config:n,value:Be.Vec2.create(0,0),fullState:{left:0,right:0,up:0,down:0}};this.actions[n.id]={state:r,previous:yn(r)}}}getAnalog(n){return this.actions[n]||ft(`Action ${n} does not exist`),this.actions[n].state}getButton(n){return this.actions[n]||ft(`Action ${n} does not exist`),this.actions[n].state}getKeyboardState(n){return this.keyboardState[n]?this.keyboardState[n]:(this.keyboardState[n]={current:!1,previous:!1},this.keyboardState[n])}getGamepadState(n){const r=this.getGamepadButtonIndex(n);if(this.gamepad&&this.gamepad.buttons.length>r)return{current:this.gamepad.buttons[r].state,previous:this.gamepad.buttons[r].previous};if(this.gamepad&&this.gamepad.axesButtons){const i=this.gamepad.axesButtons.find(o=>o.key===n);if(i)return{current:i.state,previous:i.previous}}return null}debugGamepad(){if(this.gamepad){for(const[n,r]of this.gamepad.buttons.entries())r.state.pressed,r.previous.pressed;if(this.gamepad.axesButtons)for(const n of this.gamepad.axesButtons)n.state.pressed,n.previous.pressed}}getKeybindKey(n,r){const i=n.id,o=ot().hotkeys[i];return typeof o<"u"?{...r,keyboardKey:o}:r}update(){this.updateGamepad(),this.debugGamepad();for(const n of Object.values(this.gameActions))if(n.type==="button"){const r=this.actions[n.id],i=yn(r.state),o=r.state;r.previous=i,n.action==="press"&&(n.keybinds.some(a=>{let l=!1;if(a=this.getKeybindKey(n,a),a.keyboardKey!==void 0&&this.lastInputMethodUsed==="km"){const c=this.getKeyboardKeyString(a.keyboardKey);this.getKeyboardState(c).current===!0&&(l=!0)}if(a.gamepadKey!==void 0&&this.lastInputMethodUsed==="gamepad"){const c=this.getGamepadState(a.gamepadKey);c&&c.current.pressed===!0&&(l=!0)}return l})?o.active=!0:o.active=!1,o.active&&!i.active?o.justPressed=!0:o.justPressed=!1,!o.active&&i.active?o.justReleased=!0:o.justReleased=!1)}else if(n.type==="analog"){const r=this.actions[n.id],i=r.state;yn(r.state),r.previous=yn(i);let o=Be.Vec2.create(0,0);n.keybinds.forEach(s=>{this.getKeyboardState(this.getKeyboardKeyString(s.left)).current&&(i.fullState.left=1,o.x-=1),this.getKeyboardState(this.getKeyboardKeyString(s.right)).current&&(i.fullState.right=1,o.x+=1),this.getKeyboardState(this.getKeyboardKeyString(s.up)).current&&(i.fullState.up=1,o.y-=1),this.getKeyboardState(this.getKeyboardKeyString(s.down)).current&&(i.fullState.down=1,o.y+=1)}),o=Be.Vec2.normalize(o),i.value=o}}getKeyboardKeyFromEventKey(n){return tC[n]}getKeyboardKeyString(n){return jV[n]}getGamepadButtonIndex(n){return _V[n]}getGamepadKeyFromIndex(n){return eC[n]}}const zs=new CV,gi=Rr("menu",{state:()=>({menus:{},activeMenu:!1}),getters:{showSkills(){return Object.entries(Ks().skills).length>0},showInventory(){return Object.entries(wm().items).length>0},showQuests(){return Object.entries(Ld().quests).length>0},showAchievements(){return Object.entries(Dd().achievements).length>0},menuTabsToShow(t){return t.menus.menu.tabs.map(e=>{const n=ot().menuButtons[e.id]||{};return{...e,...n}}).filter(e=>e.condition?e.condition():!0)},menu(t){return t.activeMenu?t.menus[t.activeMenu]:void 0},tab(){if(this.menu)return this.menu.tabs[this.menu.activeTab]}},actions:{setup(){},addMenu(t,e){this.menus[t]={...e,id:t}},addMenuOption(t,e){this.menus[t]||(this.menus[t]={id:t,label:t,tabs:[],activeTab:0}),this.menus[t].tabs.push(e)},setActiveTab(t){this.menu&&(this.menu.activeTab=t)},openMenu(t){this.activeMenu=t},closeMenu(){this.activeMenu=!1},toggleMenu(){this.activeMenu?this.activeMenu=!1:this.activeMenu="menu"},reset(){this.activeMenu=!1}}}),TV=[{id:"movement",type:"button",label:"Choose",keyboardIcon:"img/ui/button-prompts/keyboard/key-arrows.png",gamepadIcon:"img/ui/button-prompts/gamepad/dpad.png",action:"press",showInLegend:!0,keybinds:[{keyboardKey:Fr.Arrow_Left,gamepadKey:lr.Dpad_Left}]},{id:"left",type:"button",label:"Left",keyboardIcon:"img/ui/button-prompts/keyboard/arrow-left.png",gamepadIcon:"img/ui/button-prompts/gamepad/dpad-left.png",action:"press",showInLegend:!1,keybinds:[{keyboardKey:Fr.Arrow_Left,gamepadKey:lr.Dpad_Left},{gamepadKey:lr.Left_Thumbstick_Left}]},{id:"right",type:"button",action:"press",label:"Right",keyboardIcon:"img/ui/button-prompts/keyboard/arrow-right.png",gamepadIcon:"img/ui/button-prompts/gamepad/dpad-right.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Arrow_Right,gamepadKey:lr.Dpad_Right},{gamepadKey:lr.Left_Thumbstick_Right}]},{id:"up",type:"button",action:"press",label:"Up",keyboardIcon:"img/ui/button-prompts/keyboard/arrow-up.png",gamepadIcon:"img/ui/button-prompts/gamepad/dpad-up.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Arrow_Up,gamepadKey:lr.Dpad_Up},{gamepadKey:lr.Left_Thumbstick_Up}]},{id:"down",type:"button",action:"press",label:"Down",keyboardIcon:"img/ui/button-prompts/keyboard/arrow-down.png",gamepadIcon:"img/ui/button-prompts/gamepad/dpad-down.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Arrow_Down,gamepadKey:lr.Dpad_Down},{gamepadKey:lr.Left_Thumbstick_Down}]},{id:"scroll",type:"button",action:"press",label:"Scroll",gamepadIcon:"img/ui/button-prompts/gamepad/xbox_stick_r_vertical.png",showInLegend:!0,keybinds:[]},{id:"continue",type:"button",action:"press",label:"Continue",keyboardIcon:"img/ui/button-prompts/keyboard/key-space.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-down.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Space,gamepadKey:lr.FaceButton_Bottom}]},{id:"confirm",type:"button",action:"press",label:"Confirm",keyboardIcon:"img/ui/button-prompts/keyboard/key-enter.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-down.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Enter,gamepadKey:lr.FaceButton_Bottom}]},{id:"cancel",type:"button",action:"press",label:"Cancel",keyboardIcon:"img/ui/button-prompts/keyboard/key-escape.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-right.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Escape,gamepadKey:lr.FaceButton_Right}]},{id:"system",type:"button",action:"press",label:"System Menu",keyboardIcon:"img/ui/button-prompts/keyboard/key-n.png",gamepadIcon:"img/ui/button-prompts/gamepad/special-right.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Key_N,gamepadKey:lr.Special_Right}]},{id:"menu",type:"button",action:"press",label:"Game Menu",keyboardIcon:"img/ui/button-prompts/keyboard/key-m.png",gamepadIcon:"img/ui/button-prompts/gamepad/special-left.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Key_M,gamepadKey:lr.Special_Left}]},{id:"previousTab",type:"button",action:"press",label:"Previous",keyboardIcon:"img/ui/button-prompts/keyboard/key-p.png",gamepadIcon:"img/ui/button-prompts/gamepad/shoulder-left.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_P,gamepadKey:lr.Shoulder_Left}]},{id:"nextTab",type:"button",action:"press",label:"Next",keyboardIcon:"img/ui/button-prompts/keyboard/key-o.png",gamepadIcon:"img/ui/button-prompts/gamepad/shoulder-right.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_O,gamepadKey:lr.Shoulder_Right}]},{id:"subPreviousTab",type:"button",action:"press",label:"Previous Tab",keyboardIcon:"img/ui/button-prompts/keyboard/key-i.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-left.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_I,gamepadKey:lr.Trigger_Button_Left}]},{id:"subNextTab",type:"button",action:"press",label:"Next Tab",keyboardIcon:"img/ui/button-prompts/keyboard/key-u.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-right.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_U,gamepadKey:lr.Trigger_Button_Right}]},{id:"viewportSelect",type:"button",action:"press",label:"Interact",keyboardIcon:"img/ui/button-prompts/keyboard/key-v.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-left.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_V,gamepadKey:lr.FaceButton_Left}]},{id:"autoPlay",type:"button",action:"press",label:"Toggle Autoplay",keyboardIcon:"img/ui/button-prompts/keyboard/key-a.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-left.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Key_A,gamepadKey:lr.Trigger_Button_Left}]},{id:"skip",type:"button",action:"press",label:"Skip",keyboardIcon:"img/ui/button-prompts/keyboard/key-s.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-right.png",showInLegend:!1,keybinds:[{keyboardKey:Fr.Key_S,gamepadKey:lr.Trigger_Button_Right}]},{id:"sliderControl",type:"button",action:"press",label:"Control Slider",keyboardIcon:"img/ui/button-prompts/keyboard/key-v.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-left.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_E,gamepadKey:lr.FaceButton_Left}]},{id:"sliderRelease",type:"button",action:"press",label:"Release Slider",keyboardIcon:"img/ui/button-prompts/keyboard/key-b.png",gamepadIcon:"img/ui/button-prompts/gamepad/facebutton-right.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Key_B,gamepadKey:lr.FaceButton_Right}]},{id:"sliderDecrease",type:"button",action:"press",label:"Decrease Slider",keyboardIcon:"img/ui/button-prompts/keyboard/key-minus.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-left.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Arrow_Left,gamepadKey:lr.Dpad_Left},{gamepadKey:lr.Left_Thumbstick_Left}]},{id:"sliderIncrease",type:"button",action:"press",label:"Increase Slider",keyboardIcon:"img/ui/button-prompts/keyboard/key-plus.png",gamepadIcon:"img/ui/button-prompts/gamepad/trigger-right.png",showInLegend:!0,keybinds:[{keyboardKey:Fr.Arrow_Left,gamepadKey:lr.Dpad_Left},{gamepadKey:lr.Left_Thumbstick_Right}]}],On=Rr("inputs",{state:()=>({inputStack:[],baseInputListener:null,inputMode:"km",isTyping:!1,inGameInputListener:null}),actions:{setupInputs(){zs.addEventListener("change-input",t=>{this.inputMode=t.detail});for(const t of TV)zs.addAction(t);this.listenToBaseNarratInputs(),bd.on("preUpdate",()=>{for(const[t,e]of Object.entries(zs.actions))if(e.state.config.type==="button"){const n=e;n.state.justPressed&&this.triggerListeners(t,"press",n),n.state.justReleased&&this.triggerListeners(t,"release",n)}else e.state.config.type})},createInGameInputListener(){this.inGameInputListener||(this.inGameInputListener=this.registerInputListener("in-game",{system:{press:()=>{gi().openMenu("system")}},menu:{press:()=>{gi().openMenu("menu")}}}))},startTyping(){this.isTyping=!0},stopTyping(){this.isTyping=!1},removeInGameInputListener(){this.inGameInputListener&&(this.unregisterInputListener(this.inGameInputListener),this.inGameInputListener=null)},listenToContainerInputs(){zs.startListening()},listenToBaseNarratInputs(){},getAction(t){return zs.gameActions[t]},triggerListeners(t,e,n){let r=this.inputStack.length-1,i=!1;for(;!i&&r>=0;){const o=this.inputStack[r];if(o!=null&&o.cascadeDown||(i=!0),r--,!!o&&o.actions[t]&&o.actions[t][e])if(n.state.config.type==="button"){const s=o.actions[t][e],a=n;s(n.state.config,a.state,a.previous)}else console.warn("Analog events not implemented yet")}},getInputs(){return zs},registerInputListener(t,e,n=!1){const i={id:`${Date.now()}-${Math.floor(Math.random()*1e8)}`,name:t,actions:e??{},cascadeDown:n};return this.inputStack.push(i),i},unregisterInputListener(t){const e=this.inputStack.findIndex(n=>n.id===t.id);if(e===-1)throw new Error("Input listener not found");this.inputStack.splice(e,1)},registerActions(t,e,n){t.actions[e]=n},getInputEvents(t){const e=this.inputStack[this.inputStack.length-1];return e?e.actions[t]??null:null},isInputActive(t){const e=this.getInputEvents(t);return e?typeof e.active=="boolean"?e.active:!0:!1}},getters:{isGamepad(t){return t.inputMode==="gamepad"},isKeyboard(t){return t.inputMode==="km"},showPrompts(t){var e,n;return t.inputMode==="gamepad"&&((e=ot().input)==null?void 0:e.showPromptsOnGamepad)!==!1||t.inputMode==="km"&&((n=ot().input)==null?void 0:n.showPromptsOnKeyboard)!==!1},allListeners(t){return t.inputStack.map(e=>Object.keys(e.actions)).flat().filter((e,n,r)=>r.indexOf(e)===n)},inputLegend(t){return this.allListeners.filter(e=>{const n=this.inputStack[this.inputStack.length-1];if(!n)return null;const r=n.actions[e]??null;if(!r||r.active===!1)return!1;const i=zs.gameActions[e];return i!=null&&i.showInLegend?t.inputMode==="gamepad"?i.gamepadIcon!==void 0:i.keyboardIcon!==void 0:!1})}}}),ao=Rr("scenes-store",{state:()=>({scenes:{},activeScene:cs.EngineSplash,currentOptions:{}}),getters:{isPlaying(t){return t.activeScene!==cs.EngineSplash&&t.activeScene!==cs.GameSplash&&t.activeScene!==cs.StartMenu}},actions:{generateSaveData(){return{activeScene:this.activeScene}},loadSaveData(t){},changeScene(t,e){const n=this.activeScene;if(n&&n!==t){const r=this.scenes[n];r.onLeaving&&r.onLeaving(),this.currentOptions={},this.activeScene=t,this.currentOptions=e||{},this.scenes[t].onStarting&&this.scenes[t].onStarting()}},getSceneConfig(t){return this.scenes[t]},onEngineSplashFinished(){this.goToGameSplashScene()},finishedScene(t){this.scenes[t].onFinished&&this.scenes[t].onFinished()},goToGameSplashScene(){let t=cs.GameSplash;ot().scenes.gameSplashScene&&(t=ot().scenes.gameSplashScene),this.changeScene(t)},goToStartMenuScene(){let t=cs.StartMenu;ot().scenes.startMenuScene&&(t=ot().scenes.startMenuScene),this.changeScene(t)},goToGameScene(){let t=cs.Playing;ot().scenes.gameScene&&(t=ot().scenes.gameScene),this.changeScene(t)},addNewScene(t){this.scenes[t.id]=t}}}),OV={id:"game-splash-screen",style:{height:"100%",padding:"20px"},class:"flex justify-center items-center"},EV={id:"game-splash-screen-header flex justify-center flex-col items-center",class:"flex justify-center flex-col items-center"},AV={class:"title",id:"game-splash-title"},Fy=g.defineComponent({__name:"game-splash",setup(t){const e=g.ref(null),n=qt(),r=g.computed(()=>{var l;return((l=ot().splashScreens)==null?void 0:l.gameSplashScreen)??{}}),i=g.computed(()=>typeof r.value.startButtonText=="string"?r.value.startButtonText:"Press to start"),o=g.computed(()=>n.loading.loaded),s=g.computed(()=>ot().gameTitle||"Narrat Game");function a(){ao().goToStartMenuScene()}return g.onMounted(()=>{e.value=On().registerInputListener("game-splash",{confirm:{press:()=>{a()}},system:{press:()=>{a()}}}),n.options.debug&&a()}),g.onUnmounted(()=>{e.value&&On().unregisterInputListener(e.value)}),(l,c)=>(g.openBlock(),g.createElementBlock("div",OV,[g.createElementVNode("div",EV,[g.createElementVNode("h1",AV,g.toDisplayString(s.value),1),o.value?(g.openBlock(),g.createElementBlock("button",{key:0,class:"nrt-button menu-button main-menu-button large splash-start-button override",onClick:a},g.toDisplayString(i.value),1)):g.createCommentVNode("",!0)])]))}});function gl(t){if(!t.listener)return console.warn("No input listener provided for navigation"),null;const e=g.ref(-1),n=g.computed(()=>t.mode==="grid"?e.value%t.columns:0),r=g.ref([]),i=g.ref(zs.lastInputMethodUsed),o=g.ref(null);function s(){var L,B;return(L=t.container)!=null&&L.value?t.container.value.children:(B=t.elements)!=null&&B.value?t.elements.value.filter(V=>V!==null):[]}function a(){r.value=s()}const l=g.computed(()=>u(e.value));function c(L){return r.value?L>=0&&L<r.value.length:!1}function f(L){const B=e.value;if(c(L)&&(e.value=L,l.value)){i.value==="gamepad"&&l.value.classList.add("selected");const V=u(B);V&&B!==L&&V.classList.remove("selected"),t.onSelected&&t.onSelected(L)}}function u(L){return r.value?r.value[L]:null}function d(){r.value&&(e.value===0?t.loopForbidden||f(r.value.length-1):f(e.value-1))}function h(){r.value&&(e.value===r.value.length-1?t.loopForbidden||f(0):f(e.value+1))}function p(){if(!r.value)return;const L=t,B=e.value;!t.loopForbidden&&B<L.columns?f(r.value.length-1):f(e.value-t.columns)}function m(){if(!r.value)return;const L=t,B=e.value;!t.loopForbidden&&B>=r.value.length-L.columns?f(0):f(e.value+t.columns)}function y(){t.mode==="grid"?p():t.mode==="list"&&d()}function v(){t.mode==="grid"?m():t.mode==="list"&&h()}function b(){(t.mode==="grid"||t.mode==="list")&&d()}function S(){(t.mode==="grid"||t.mode==="list")&&h()}function _(){t.onChosen&&t.onChosen(e.value)}g.onMounted(()=>{R()});function x(){t.listener&&(t.onlyVertical||(delete t.listener.actions.left,delete t.listener.actions.right),t.onlyHorizontal||(delete t.listener.actions.up,delete t.listener.actions.down),t.noChoosing||delete t.listener.actions.confirm,o.value&&zs.removeEventListener("change-input",o.value))}function T(){l.value&&l.value.classList.add("selected")}function E(){l.value&&l.value.classList.remove("selected")}function R(){t.listener&&(a(),o.value=L=>{i.value=L.detail,L.detail==="gamepad"?T():E()},zs.addEventListener("change-input",o.value),t.onlyVertical||(t.listener.actions.left={press:b},t.listener.actions.right={press:S}),t.onlyHorizontal||(t.listener.actions.up={press:y},t.listener.actions.down={press:v}),t.noChoosing||(t.listener.actions.confirm={press:_}),f(0))}return g.onUnmounted(()=>{x()}),g.watch(()=>{var L;return(L=t.elements)==null?void 0:L.value},L=>{L&&a()}),{selectedIndex:e,selectedElement:l,currentColumn:n,buttonDown:v,buttonUp:y,buttonLeft:b,buttonRight:S,selectUp:p,selectDown:m,selectPrevious:d,selectNext:h,select:f,disable:x,mount:R}}const PV={class:"used-save-slot flex flex-row justify-between items-center grow"},MV={class:"flex flex-col save-slot-number-container"},IV={class:"save-slot-number"},NV={class:"flex flex-col justify-center save-info"},RV={key:1,class:"save-name"},LV={class:"flex flex-col"},DV={key:0},BV={key:1},FV={key:2},VV=["onClick"],Vy=g.defineComponent({__name:"save-slot-ui",props:{saveSlot:{},id:{},actions:{},selected:{type:Boolean},inputListener:{}},emits:["choice","cancel"],setup(t,{expose:e,emit:n}){var _;const r=t,i=g.ref(null),o=g.ref(null),s=g.ref(null);e({slotContainer:s});const a=g.ref(((_=r.saveSlot.saveData)==null?void 0:_.metadata.name)??"Empty Save"),l=g.ref(0),c=g.computed(()=>r.saveSlot.saveData!==null),f=g.computed(()=>r.saveSlot.saveData),u=g.computed(()=>ot().saves.mode),d=g.computed(()=>{const x=r.saveSlot.saveData;if(x&&x.screens.layers[0]){const T=Nu(x.screens.layers[0]);if(T)return{backgroundImage:`url(${La(T.background)})`}}return!1}),h=n;function p(x){h("choice",x)}function m(x){return f.value?iy(f.value.main.playTime/1e3):"00:00:00"}function y(){f.value&&gB(r.saveSlot.id,a.value)}function v(){const x=ot().saves.slots;let T="";const E=r.saveSlot.slotNumber;return E===0&&ot().saves.mode==="manual"?"AUTO":(x>=10&&E<10&&(T+="0"),x>=100&&E<100&&(T+="0"),T+E)}function b(){i.value=gl({mode:"list",container:o,listener:r.inputListener,onlyHorizontal:!0,onSelected:x=>{l.value=x},onChosen:x=>{p(x)}}),i.value.mount()}function S(){i.value.disable(),i.value=null}return g.watch(()=>r.selected,(x,T)=>{x&&!i.value&&b(),!x&&i.value&&S()}),g.onMounted(()=>{r.selected&&b()}),g.onUnmounted(()=>{i.value&&S()}),(x,T)=>(g.openBlock(),g.createElementBlock("div",{class:"save-slot flex flex-row",ref_key:"slotContainer",ref:s},[g.createElementVNode("div",PV,[g.createElementVNode("div",MV,[g.createElementVNode("h1",IV,g.toDisplayString(v()),1)]),d.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"save-slot-screenshot",style:g.normalizeStyle(d.value)},null,4)):g.createCommentVNode("",!0),g.createElementVNode("div",NV,[c.value?g.withDirectives((g.openBlock(),g.createElementBlock("input",{key:0,type:"text",class:"save-name","onUpdate:modelValue":T[0]||(T[0]=E=>a.value=E),onInput:y},null,544)),[[g.vModelText,a.value]]):(g.openBlock(),g.createElementBlock("h3",RV,g.toDisplayString(a.value),1)),g.createElementVNode("div",LV,[f.value?(g.openBlock(),g.createElementBlock("p",DV,g.toDisplayString(new Date(f.value.metadata.saveDate).toLocaleString()),1)):g.createCommentVNode("",!0),f.value?(g.openBlock(),g.createElementBlock("p",BV,"Play time: "+g.toDisplayString(m(x.saveSlot)),1)):g.createCommentVNode("",!0),u.value==="game-slots"?(g.openBlock(),g.createElementBlock("p",FV,g.toDisplayString(x.saveSlot.slotType==="auto"?"Auto Save":"Manual Save"),1)):g.createCommentVNode("",!0)])]),g.createElementVNode("div",{class:"flex flex-row",ref_key:"actionsContainer",ref:o},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(x.actions,(E,R)=>(g.openBlock(),g.createElementBlock("button",{class:g.normalizeClass(["nrt-button",{selected:x.selected&&R===l.value}]),onClick:()=>p(R),key:R},[g.createElementVNode("h3",null,g.toDisplayString(E),1)],10,VV))),128))],512)])],512))}}),zV=g.createElementVNode("h3",{class:"title"},"Confirmation",-1),Gp=g.defineComponent({__name:"yes-no",props:{prompt:{type:String,required:!0},onConfirm:{type:Function,required:!1},onRefuse:{type:Function,required:!1}},emits:["choice"],setup(t,{emit:e}){const n=g.ref(On().registerInputListener("yes-no",{cancel:{press:()=>{s(!1)}},confirm:{press:()=>{s(!0)}}})),r=g.ref(null);gl({mode:"list",container:r,listener:n.value,onChosen:a=>{s(a===0)}});const i=t,o=e;function s(a){a===!0&&i.onConfirm?i.onConfirm():a===!1&&i.onRefuse&&i.onRefuse(),o("choice",a)}return g.onMounted(()=>{}),g.onUnmounted(()=>{n.value&&On().unregisterInputListener(n.value)}),(a,l)=>(g.openBlock(),g.createBlock(Aa,{onClose:l[2]||(l[2]=()=>s(!1)),containerCssClass:"yes-no-modal"},{header:g.withCtx(()=>[zV]),body:g.withCtx(()=>[g.createElementVNode("h3",null,g.toDisplayString(t.prompt),1),g.createElementVNode("div",{class:"flex justify-center",ref_key:"buttonsContainer",ref:r},[g.createElementVNode("button",{class:"nrt-button",onClick:l[0]||(l[0]=()=>s(!0))},"Yes"),g.createElementVNode("button",{class:"nrt-button",onClick:l[1]||(l[1]=()=>s(!1))},"No")],512)]),_:1}))}}),qV={class:"nrt-title"},UV={key:0},HV={class:"saves-section"},KV=g.createElementVNode("h3",{class:"saves-section-title"},"Auto save",-1),WV={class:"saves-section"},GV=g.createElementVNode("h3",{class:"saves-section-title"},"Manual Saves",-1),JV={key:1,class:"saves-section"},QV=g.createElementVNode("h3",{class:"saves-section-title"},"Save Slots",-1),YV={class:"saves-container flex flex-col"},nC=g.defineComponent({__name:"save-slots",props:{mode:{}},emits:["chosen","close"],setup(t,{emit:e}){const n=t,r=g.ref(On().registerInputListener("save-slots",{cancel:{press:()=>{R()}}})),i=g.ref(0),o=g.reactive([]),s=g.computed(()=>o.slice(0,1)),a=g.computed(()=>o.slice(1)),l=g.ref([]),c=g.ref([]),f=g.ref([]),u=g.ref([]),d=g.ref([]),h=gl({mode:"list",elements:u,listener:r.value,onlyVertical:!0,noChoosing:!0,onSelected:V=>{i.value=V}}),p=g.computed(()=>{const V=i.value;return d.value.length<V+1?null:d.value[V].id}),m=g.reactive(n.mode==="load"?["Load","Delete"]:["Choose"]),y=g.computed(()=>ot().saves.mode),v=g.reactive({prompt:"Are you sure you want to delete this save file?",saveToDelete:null,onConfirm:()=>{E(v.saveToDelete),v.saveToDelete=null},onRefuse:()=>{v.saveToDelete=null}}),b=g.reactive({prompt:"Are you sure you want to overwrite this save file?",saveToOverwrite:null,onConfirm:()=>{x(b.saveToOverwrite),b.saveToOverwrite=null},onRefuse:()=>{b.saveToOverwrite=null}}),S=e;g.onBeforeMount(()=>{Ls().slots.forEach((U,F)=>{o[F]=U})});function _(){u.value=y.value==="manual"?[...c.value.map(D=>D.slotContainer),...f.value.map(D=>D.slotContainer)]:l.value.map(D=>D.slotContainer);const V=y.value==="manual"?[...s.value,...a.value]:o;d.value=V.map(D=>({id:D.id}))}g.onMounted(()=>{_()}),g.onUnmounted(()=>{h.value&&(h.value.disable(),h.value=null),r.value&&On().unregisterInputListener(r.value)});function x(V){S("chosen",{slotId:V})}function T(V){const D=B(V);if(D){if(ot().saves.mode==="manual"&&D.slotType==="auto"){qt().alert("Sorry","Can't delete the auto save slot!");return}v.saveToDelete=V}}function E(V){mB(V);const D=o.find(U=>U.id===V);D&&(D.saveData=null),_()}function R(){S("close")}function L(V,D){const U=m[D];U==="Load"?x(V):U==="Delete"?T(V):U==="Choose"&&(b.saveToOverwrite=V)}function B(V){return o.find(D=>D.id===V)}return(V,D)=>(g.openBlock(),g.createBlock(Aa,{onClose:R,containerCssClass:"save-modal",cantClose:!1},{header:g.withCtx(()=>[g.createElementVNode("h3",qV,g.toDisplayString(V.mode==="load"?"Choose a save to load":"Pick a slot to save the game"),1)]),body:g.withCtx(()=>[y.value==="manual"?(g.openBlock(),g.createElementBlock("div",UV,[g.createElementVNode("div",HV,[KV,g.createVNode(g.TransitionGroup,{name:"list",tag:"div"},{default:g.withCtx(()=>[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(s.value,U=>(g.openBlock(),g.createBlock(Vy,{key:U.id,saveSlot:U,id:U.id,actions:m,onChoice:F=>L(U.id,F),inputListener:r.value,selected:p.value===U.id,ref_for:!0,ref_key:"autoSlotsElements",ref:c},null,8,["saveSlot","id","actions","onChoice","inputListener","selected"]))),128))]),_:1})]),g.createElementVNode("div",WV,[GV,g.createVNode(g.TransitionGroup,{name:"list",tag:"div"},{default:g.withCtx(()=>[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(a.value,U=>(g.openBlock(),g.createBlock(Vy,{key:U.id,saveSlot:U,id:U.id,actions:m,onChoice:F=>L(U.id,F),inputListener:r.value,selected:p.value===U.id,ref_for:!0,ref_key:"manualSlotsElements",ref:f},null,8,["saveSlot","id","actions","onChoice","inputListener","selected"]))),128))]),_:1})])])):(g.openBlock(),g.createElementBlock("div",JV,[QV,g.createElementVNode("div",YV,[g.createVNode(g.TransitionGroup,{name:"list",tag:"div"},{default:g.withCtx(()=>[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(o,U=>(g.openBlock(),g.createBlock(Vy,{key:U.id,saveSlot:U,id:U.id,actions:m,onChoice:F=>L(U.id,F),selected:p.value===U.id,inputListener:r.value,ref_for:!0,ref_key:"saveSlotsElements",ref:l},null,8,["saveSlot","id","actions","onChoice","selected","inputListener"]))),128))]),_:1})])])),v.saveToDelete?(g.openBlock(),g.createBlock(Gp,{key:2,prompt:v.prompt,onRefuse:v.onRefuse,onConfirm:v.onConfirm},null,8,["prompt","onRefuse","onConfirm"])):g.createCommentVNode("",!0),b.saveToOverwrite?(g.openBlock(),g.createBlock(Gp,{key:3,prompt:b.prompt,onRefuse:b.onRefuse,onConfirm:b.onConfirm},null,8,["prompt","onRefuse","onConfirm"])):g.createCommentVNode("",!0)]),_:1}))}}),XV=g.defineComponent({__name:"start-menu-button",props:{button:{}},emits:["click"],setup(t){return(e,n)=>(g.openBlock(),g.createElementBlock("button",{class:g.normalizeClass(["nrt-button menu-button main-menu-button large override",e.button.cssClass]),onClick:n[0]||(n[0]=r=>e.$emit("click"))},g.toDisplayString(e.button.title),3))}});class zy extends Kp{setup(e=!1){const r=e?"keydown":"keyup",i=wd(s=>{No.emit("debouncedKeydown",s)},10,{isImmediate:!0,maxWait:10}),o=Br().inputsContainer;o.addEventListener("keydown",s=>{No.emit("keydown",s)}),o.addEventListener(r,s=>{i(s)})}}const No=new zy,qy=Rr("startMenu",{state:()=>({buttons:[]}),actions:{addButtonsFromPlugins(){dn.plugins.forEach(e=>{e.startMenuButtons&&e.startMenuButtons.forEach(n=>{const r=window.narrat.app;n.popupComponent&&r.component(n.popupComponent.name,n.popupComponent.component),this.buttons.push(n)})})}}});function ZV(){dC()}function rC(){ZV(),qt().menuReturn()}async function ez(t){if(ot().saves.mode==="manual"){const e=vy();e&&(t=e.id)}qt().setSaveSlot(t),pC(Ls().globalSave),iC(),Zt().runGame()}function iC(){hi().stopAll(),oc("onPressStart"),Zt().start(),qt().prepareToPlay(),dn.callHook("onGameStart")}async function tz(t,e){if(ot().saves.mode==="manual"){const n=vy();n&&(e=n.id)}if(qt().setSaveSlot(e),iC(),t.saveData){_q({gameSave:t.saveData,globalSave:Ls().globalSave}),hi().reloadAudio(t.saveData.audio);const n=Zt(),r=ot().saves.runOnReload;typeof r=="string"&&await Zt().runLabelFunction(r),n.jumpToLabel(t.saveData.vm.lastLabel)}}const nz={id:"game-menu"},rz={id:"game-header",class:"flex flex-col justify-between items-center"},iz={id:"game-title-container"},oz={id:"game-title-text"},sz={class:"nrt-title"},Uy=Ns(g.defineComponent({__name:"StartMenu",setup(t){const e=g.ref(On().registerInputListener("start-menu",{})),n=g.ref([]),r=g.ref(null),i=g.ref(!1),o=g.ref(!1),s=g.ref(null),a=g.ref(null),l=g.ref(!1),c=g.ref(!1),f=g.ref(null),u=qy(),d=g.ref(!1),h=g.ref(null),p=g.computed(()=>u.buttons),m=gl({mode:"list",onlyVertical:!0,container:r,listener:e.value,onChosen:U=>{y(n.value[U])}});function y(U){switch(U.id){case"continue":E();break;case"new-game":v();break;case"load-game":R();break;case"exit":qt().exitGame();break;default:S(U);break}}async function v(){i.value&&ot().saves.mode==="manual"&&!ot().saves.disabled?c.value=!0:b()}async function b(){if(a.value===null)if(ot().saves.mode==="manual"){const U=vy();if(!U){ft("No autosave found");return}a.value=U.id}else{const U=hB();if(!U){ft("No free slot found");return}a.value=U}c.value=!1,await ez(a.value)}function S(U){const F=p.value.findIndex(X=>X.id===U.id),se=p.value[F];se.action&&se.action(),se.popupComponent&&(d.value=se)}function _(){d.value=!1}function x(){c.value=!1}async function T(){if(!a.value)return;const U=dd(a.value);if(!U){ft("No save file found");return}tz(U,a.value)}function E(){typeof s.value=="string"&&(a.value=s.value,T())}function R(){l.value=!0}function L({slotId:U}){const F=dd(U);F&&F.saveData?(a.value=U,T()):v()}g.onMounted(()=>{const U=Ls();U.slots.some(F=>F.saveData)&&(i.value=!0),(ot().saves.mode==="manual"||U.slots.some(F=>!F.saveData))&&(o.value=!0),U.lastSaveSlot&&dd(U.lastSaveSlot)&&(s.value=U.lastSaveSlot),B(),f.value=No.on("debouncedKeydown",F=>{F.key===" "&&b(),F.key==="c"&&E()}),g.nextTick(()=>{m.select(0)}),wo().options.defaultMusic&&(h.value=TB(wo().options.defaultMusic)),dn.callHook("onStartScreenMounted")});function B(){const U=ot().saves.disabled;s.value&&!U&&n.value.push(V({id:"continue",title:"Continue",cssClass:"continue-button"})),o.value&&n.value.push(V({id:"new-game",title:"New Game",cssClass:"start-button"})),i.value&&!U&&n.value.push(V({id:"load-game",title:"Load Game",cssClass:"continue-button"}));for(const F of p.value)n.value.push({id:F.id,title:F.text,cssClass:`${F.id}-start-menu-button`});n.value.push(V({id:"exit",title:"Exit",cssClass:"exit-button"}))}function V({id:U,title:F,cssClass:se}){const X=ot().menuButtons[U];if(X){let Z=se;return X.cssClass&&(Z=`${X.cssClass} ${se}`),{id:U,title:X.text??F,cssClass:Z}}return{id:U,title:F,cssClass:se}}g.onUnmounted(()=>{if(e.value&&On().unregisterInputListener(e.value),f.value&&No.off("debouncedKeydown",f.value),typeof h.value=="number"){const U=wo().options.defaultMusic;OB(U,h.value)}});const D=g.computed(()=>ot().gameTitle);return(U,F)=>(g.openBlock(),g.createElementBlock("div",nz,[l.value?(g.openBlock(),g.createBlock(nC,{key:0,mode:"load",onChosen:L,onClose:F[0]||(F[0]=se=>l.value=!1)})):g.createCommentVNode("",!0),c.value?(g.openBlock(),g.createBlock(Gp,{key:1,prompt:"This will override your previous autosave, are you sure?",onConfirm:b,onRefuse:x})):g.createCommentVNode("",!0),g.createElementVNode("div",rz,[g.createElementVNode("div",iz,[g.createElementVNode("h1",oz,g.toDisplayString(D.value),1)]),g.createElementVNode("div",{class:"flex flex-col start-menu-buttons-container",ref_key:"buttonsContainer",ref:r},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(n.value,se=>(g.openBlock(),g.createBlock(XV,{key:se.id,button:se,onClick:X=>y(se)},null,8,["button","onClick"]))),128))],512)]),d.value?(g.openBlock(),g.createBlock(g.Teleport,{key:2,to:"#narrat-app-container"},[g.createVNode(Aa,{onClose:_,class:g.normalizeClass(`start-menu-popup-${d.value.id}`)},{header:g.withCtx(()=>[g.createElementVNode("h3",sz,g.toDisplayString(d.value.text),1)]),body:g.withCtx(()=>[d.value.popupComponent?(g.openBlock(),g.createBlock(g.resolveDynamicComponent(d.value.popupComponent.component),{key:0,onClose:_},null,32)):g.createCommentVNode("",!0)]),_:1},8,["class"])])):g.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-0f46a713"]]);function Jp(t){const e=xm().characters[t];return e||ft(`Character ${t} not found`),e}function az(t,e){const n=Jp(t);if(n&&(e||(e="default"),n.sprites)){const r=n.sprites[e];return r==="none"?void 0:typeof r=="string"?{image:r}:r}}function oC(t){return`${xm().config.imagesPath}${t}`}function lz(t){return typeof t=="object"&&Object.hasOwn(t,"image")}function cz(t){return typeof t=="object"&&Object.hasOwn(t,"video")}function Hy(t){var e;return t?((e=Jp(t))==null?void 0:e.style)||{}:{}}const uz=["src"],fz=["autoplay","loop","muted"],dz=["src"],hz=g.defineComponent({__name:"dialog-picture",props:{picture:{},video:{},character:{},pose:{}},setup(t){const e=t,n=g.computed(()=>e.video),r=g.computed(()=>Br().layoutMode),i=g.computed(()=>{var l;const s={};if(!e.character)return{};e.character&&(s[e.character]=!0);const a=Jp(e.character);return(l=a==null?void 0:a.style)!=null&&l.portraitCssClass&&(s[a.style.portraitCssClass]=!0),s}),o=g.computed(()=>{var h,p;const s=Br(),a=ot().layout;let l=0,c=0;const f=a.portraits;if(r.value==="vertical"){const m=((h=f.offset)==null?void 0:h.portrait)??{right:0,bottom:0};l=20+m.right,c=s.dialogHeight+m.bottom}else{const m=((p=f.offset)==null?void 0:p.landscape)??{right:0,bottom:0},y=ot().dialogPanel.rightOffset??sy.dialogPanel.rightOffset;l=Cm()-10+m.right+y,c=200+m.bottom}let u=a.portraits.width,d=a.portraits.height;return e.video&&(u=e.video.width??u,d=e.video.height??d),e.picture&&(u=e.picture.width??u,d=e.picture.height??d),{right:`${l}px`,bottom:`${c}px`,width:`${u}px`,height:`${d}px`}});return(s,a)=>{var l;return g.openBlock(),g.createElementBlock("div",{class:g.normalizeClass(["dialog-picture override",i.value]),style:g.normalizeStyle(o.value)},[s.picture?(g.openBlock(),g.createElementBlock("img",{key:0,src:g.unref(bi)(g.unref(oC)((l=s.picture)==null?void 0:l.image)),class:g.normalizeClass(["picture override",i.value])},null,10,uz)):g.createCommentVNode("",!0),n.value?(g.openBlock(),g.createElementBlock("video",{key:1,class:"picture override",autoplay:n.value.autoplay!==!1,loop:n.value.loop!==!1,muted:!!n.value.muted},[g.createElementVNode("source",{src:g.unref(bi)(g.unref(oC)(n.value.video))},null,8,dz)],8,fz)):g.createCommentVNode("",!0)],6)}}});function pz(){return wo().dialogAudio}function sC(t){const e=pz();if(e){if(e.characterAudio&&e.characterAudio[t])return e.characterAudio[t];if(e.defaultAudio)return e.defaultAudio}}function aC(t,e){if(typeof e!="string")return;const n=sC(t);return n==null?void 0:n.soundPerLetter}function mz(t,e){if(typeof e!="string")return;const n=aC(t,e);if(!n)return;const r=n;let i="";return r.prefix&&(i+=r.prefix),i+=e,r.suffix&&(i+=r.suffix),i}function gz(t,e){if(typeof e!="string")return;const n=e.toLowerCase(),r=mz(t,n);if(typeof r!="string")return;const i=ls(r);if(i){const o=aC(t,n);let s=1;o.volume&&(s=o.volume);const a=hi().audioVolume("sound",r)*s;i.volume(a),i.play()}}function vz(t){const e=sC(t);if(e!=null&&e.soundOnNewLine){const n=ls(e.soundOnNewLine);if(n){const r=hi().audioVolume("sound",e.soundOnNewLine);n.volume(r),n.play()}}}const yz={key:0,class:"input-prompt-container"},bz={key:0,class:"input-prompt-label"},wz=["src"],Sd=g.defineComponent({__name:"input-prompt",props:{input:{},label:{},showLabel:{type:Boolean}},setup(t){const e=On(),n=t,r=g.computed(()=>{const s=e.getAction(n.input);return s||ft(`Input action ${n.input} does not exist.`),s}),i=g.computed(()=>{var s,a;return e.inputMode==="gamepad"?(s=r.value)==null?void 0:s.gamepadIcon:(a=r.value)==null?void 0:a.keyboardIcon}),o=g.computed(()=>{var s;return n.label?n.label:((s=r.value)==null?void 0:s.label)??"NONE"});return(s,a)=>g.unref(e).showPrompts&&r.value&&i.value?(g.openBlock(),g.createElementBlock("span",yz,[s.showLabel||s.label?(g.openBlock(),g.createElementBlock("span",bz,g.toDisplayString(o.value),1)):g.createCommentVNode("",!0),g.createElementVNode("img",{src:g.unref(La)(i.value),class:"input-prompt-icon"},null,8,wz)])):g.createCommentVNode("",!0)}}),Sz=["innerHTML"],kz=["innerHTML"],xz=["innerHTML"],$z={key:1},_z=["onClick","innerHTML"],jz={key:1},Cz={key:2,class:"buttons-container"},Tz=g.defineComponent({__name:"dialog-box",props:{options:{},active:{type:Boolean},inputListener:{},index:{}},setup(t,{expose:e}){const n=g.ref(null),r=g.ref(""),i=g.ref(!1),o=g.ref(null),s=g.ref(null),a=g.ref(!1),l=g.ref(null),c=g.ref(null),f=g.ref(null),u=g.ref(null),d=g.ref(null),h=t,p=g.ref(null);h.active&&(p.value=gl({mode:"list",container:n,listener:h.inputListener,onlyVertical:!0,onChosen:he=>{le.value&&N.value?x(N.value[he]):b(" ")}})),g.onMounted(()=>{se(),a.value=!0}),g.onUnmounted(()=>{m(),D(),W({unmounted:!0})});function m(){o.value&&(clearTimeout(o.value),o.value=null),y()}function y(){p.value&&(p.value.disable(),p.value=null)}function v(he){b(he.key)}function b(he){if(!le.value){a.value&&s&&he===" "&&W({pressedSpace:!0});return}if(le.value&&h.options.textField&&he==="Enter"&&B(),le.value&&!h.options.textField){let je=-1;switch(he){case" ":je=0;break;case"1":je=0;break;case"2":je=1;break;case"3":je=2;break;case"4":je=3;break;case"5":je=4;break;case"6":je=5;break;case"7":je=6;break;case"8":je=7;break}je!==-1&&N.value&&je<N.value.length?x(N.value[je]):je===0&&x(je)}}function S(){le.value||a.value&&s&&W({pressedSpace:!0})}function _(){i.value||x(0)}function x(he){T();let je;typeof he=="object"?je=he.originalIndex:je=he,qt().playerAnswered(je)}function T(){m(),W({unmounted:!0}),i.value=!0}function E(he){const je={};return he.allowed||(je.pointerEvents="none",je.textDecoration="line-through"),je}function R(he,je){const Ze={index:he+1,choice:je.choice};let ce='<span class="choice-index">%{$index}. </span> <span class="choice-text">%{$choice}</span>';if(sb().choiceTextTemplate&&(ce=sb().choiceTextTemplate),je.flag){const He=AT(je.flag);He!=null&&He.textTemplate&&(ce=He.textTemplate)}return L_(Ze,ce)}function L(he){const je={};if(he.allowed||(je["strike-anim"]=!0),he.seenBefore&&(je["seen-before"]=!0),he.flag){const Ze=AT(he.flag);Ze!=null&&Ze.cssClass&&(je[Ze.cssClass]=!0)}return je}function B(){const he=r.value;D(),qt().playerAnswered(he)}function V(){h.options.textField&&(On().startTyping(),o.value=setTimeout(()=>{le.value&&(d.value=On().registerInputListener("text-field-input-grabber",{}),u.value&&u.value.focus())},100))}function D(){On().stopTyping(),d.value&&(On().unregisterInputListener(d.value),d.value=null)}function U(he,je){const Ze=h.options.text.substring(he,je);s.value.text+=Ze;const ce=Ze.substring(0,1);return gz(h.options.styleId,ce),je}function F(he){const je=he[0];return s.value.text+=je,s.value.skippedChars+=je.length,je.length}function se(){if(!h.options.old)if(Vn().playMode==="skip")X();else if(vz(h.options.styleId),ot().dialogPanel.animateText){s.value={text:"",index:0,startTime:Date.now(),timer:null,skippedChars:0,tags:$B(h.options.text),finished:!1};const he=s.value;he.timer=setInterval(()=>{z()},30)}else M.value&&(l.value=setTimeout(()=>{W()},(ot().dialogPanel.textSpeed??Cp)*h.options.text.length))}function X(){Vn().playMode==="skip"&&!h.options.old&&(M.value?c.value=setTimeout(()=>{W()},100):(Vn().toggleSkip(),W({unmounted:!0})))}function Z(){Vn().playMode==="auto"&&!h.options.old&&M.value&&le&&_()}function z(){const he=s.value;if(!he)return;const je=he.index,Ze=Date.now()-he.startTime;let ce=!1,He=Math.round(Ze/(ot().dialogPanel.textSpeed??Cp))+he.skippedChars;if(He>h.options.text.length&&(ce=!0,he.finished=!0,He=h.options.text.length),He!==he.index){let st=je;for(;he.tags.length>0&&He>=he.tags[0].index;){st=U(st,he.tags[0].index);const Ve=F(he.tags.shift());st+=Ve,He+=Ve}st=U(st,He),he.index=st}ce&&W()}function W({unmounted:he,pressedSpace:je}={}){Zt().endTextAnimation(),he||V(),setTimeout(()=>{p.value&&p.value.select(0)},10),s.value&&(s.value.timer&&clearInterval(s.value.timer),s.value=null),l.value&&!je&&clearTimeout(l.value),c.value&&clearTimeout(c.value),f.value&&clearTimeout(f.value),!he&&!je&&Vn().playMode!=="normal"&&M&&(f.value=setTimeout(()=>{_()},Vn().playMode==="auto"?ot().dialogPanel.timeBetweenLines??pu.common.dialogPanel.timeBetweenLines:0))}const A=g.computed(()=>h.options.title?" &nbsp;–&nbsp; ":""),k=g.computed(()=>({...Hy(h.options.styleId).boxCss})),M=g.computed(()=>!N.value&&!h.options.textField),C=g.computed(()=>{const he={};return h.options.title&&(he["dialog-box-followup"]=!0),Vn().isDialogCleared(h.index)&&(Vn().clearedDialogVisible?he["dialog-box-cleared-visible"]=!0:he["dialog-box-cleared-disabled"]=!0),h.options.old?he["dialog-box-old"]=!0:he["dialog-box-new"]=!0,he}),w=g.computed(()=>{const he=Hy(h.options.styleId);return{color:he.color,...he.nameCss}}),$=g.computed(()=>Hy(h.options.styleId).textCss),O=g.computed(()=>s.value?s.value.text:h.options.text),N=g.computed(()=>{if(h.options.choices)return h.options.choices}),ie=g.computed(()=>Vn().playMode==="skip"),me=g.computed(()=>Vn().playMode==="auto"),le=g.computed(()=>h.active&&a.value&&!i.value&&!f.value&&!s.value&&h.options.interactive&&!Ue.value),ae=qt(),Ue=g.computed(()=>ae.paused);return g.watch(()=>h.options,(he,je)=>{!je.old&&he.old&&s&&W({unmounted:!0})}),g.watch(ie,(he,je)=>{he&&!je&&X()}),g.watch(me,(he,je)=>{he&&!je&&Z()}),e({keyboardEvent:v}),(he,je)=>{const Ze=g.resolveDirective("visible");return g.openBlock(),g.createElementBlock("div",{class:g.normalizeClass(["dialog-box w-full override",C.value]),style:g.normalizeStyle(k.value)},[g.createElementVNode("div",{class:"dialog-content",onClick:S},[he.options.title?(g.openBlock(),g.createElementBlock("span",{key:0,class:"dialog-title override",style:g.normalizeStyle(w.value),innerHTML:he.options.title},null,12,Sz)):g.createCommentVNode("",!0),g.createElementVNode("span",{class:"dialog-text dialog-separator override",style:g.normalizeStyle($.value),innerHTML:A.value},null,12,kz),g.createElementVNode("span",{class:g.normalizeClass(["dialog-text override",he.options.cssClass]),style:g.normalizeStyle($.value),innerHTML:O.value},null,14,xz),he.options.old?g.createCommentVNode("",!0):g.withDirectives((g.openBlock(),g.createElementBlock("div",$z,[N.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"dialog-choices",ref_key:"choicesDiv",ref:n},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(N.value,(ce,He)=>(g.openBlock(),g.createElementBlock("p",{key:He,style:g.normalizeStyle(E(ce)),class:g.normalizeClass([L(ce),"dialog-choice override"]),onClick:st=>x(ce),innerHTML:R(He,ce)},null,14,_z))),128))],512)):he.options.textField?(g.openBlock(),g.createElementBlock("div",jz,[g.withDirectives(g.createElementVNode("input",{autofocus:"",type:"text",class:"label-input nrt-input",ref_key:"playerInput",ref:u,id:"player-input-field","onUpdate:modelValue":je[0]||(je[0]=ce=>r.value=ce)},null,512),[[g.vModelText,r.value]]),g.createElementVNode("button",{onClick:B,class:"nrt-button",id:"player-input-submit"}," Submit ")])):(g.openBlock(),g.createElementBlock("div",Cz,[g.createElementVNode("div",{onClick:je[1]||(je[1]=ce=>x(0)),ref:"continue",class:"interact-button nrt-button override"},[g.createTextVNode(" Continue "),g.createVNode(Sd,{input:"continue"})],512)]))])),[[Ze,le.value]])])],6)}}}),Oz={key:0,class:"auto-play-feedback-container"},Ez=g.defineComponent({__name:"AutoPlayFeedback",setup(t){const e=Vn(),n=g.computed(()=>e.playMode==="auto"),r=g.computed(()=>e.playMode==="skip"),i=g.computed(()=>n.value?"auto-play-feedback-auto":r.value?"auto-play-feedback-skip":{}),o=g.computed(()=>n.value?"Auto Play":r.value?"Skip":"");return(s,a)=>o.value?(g.openBlock(),g.createElementBlock("div",Oz,[g.createElementVNode("div",{class:g.normalizeClass(["auto-play-feedback",i.value])},g.toDisplayString(o.value),3)])):g.createCommentVNode("",!0)}}),Az={key:0,class:"auto-save-feedback-container"},Pz={key:1,class:"auto-save-feedback-text"},Mz=g.defineComponent({__name:"auto-save-feedback",setup(t){const e=qt(),n=g.computed(()=>e.autosaveFeedback),r=g.computed(()=>ot().saves.autosaveFeedback),i=g.computed(()=>{var s,a;return(s=r.value)!=null&&s.backgroundImage?{backgroundImage:`url(${La((a=r.value)==null?void 0:a.backgroundImage)})`}:{}}),o=g.computed(()=>{var s,a;return(s=r.value)!=null&&s.foregroundImage?{backgroundImage:`url(${La((a=r.value)==null?void 0:a.foregroundImage)})`}:{}});return(s,a)=>(g.openBlock(),g.createBlock(g.Transition,{name:"fade"},{default:g.withCtx(()=>{var l,c,f,u;return[n.value?(g.openBlock(),g.createElementBlock("div",Az,[(l=r.value)!=null&&l.backgroundImage?(g.openBlock(),g.createElementBlock("div",{key:0,class:"auto-save-feedback-background",style:g.normalizeStyle(i.value)},null,4)):g.createCommentVNode("",!0),(c=r.value)!=null&&c.text?(g.openBlock(),g.createElementBlock("div",Pz,g.toDisplayString((f=r.value)==null?void 0:f.text),1)):g.createCommentVNode("",!0),(u=r.value)!=null&&u.foregroundImage?(g.openBlock(),g.createElementBlock("div",{key:2,class:"auto-save-feedback-foreground",style:g.normalizeStyle(o.value)},null,4)):g.createCommentVNode("",!0)])):g.createCommentVNode("",!0)]}),_:1}))}});function Ky(t){const{container:e,scrollSpeed:n=10,scrollThreshold:r=.2,onlyVertical:i=!0,gamepadAxes:o={vertical:3,horizontal:2},inputListener:s}=t,a=g.ref(!1);let l=null;function c(h){if(!e.value)return;const p=n;switch(h){case"up":e.value.scrollTop-=p;break;case"down":e.value.scrollTop+=p;break;case"left":e.value.scrollLeft-=p;break;case"right":e.value.scrollLeft+=p;break}}function f(){if(!e.value)return;const h=navigator.getGamepads()[0];if(!h)return;const p=h.axes[o.vertical];if(Math.abs(p)>r?(c(p<0?"up":"down"),a.value=!0):a.value=!1,!i&&o.horizontal!==void 0){const m=h.axes[o.horizontal];Math.abs(m)>r&&(c(m<0?"left":"right"),a.value=!0)}}function u(){l||(l=window.setInterval(f,16))}function d(){l&&(clearInterval(l),l=null),a.value=!1}return g.onMounted(()=>{u(),s&&(s.actions.scroll={press:()=>{},active:g.computed(()=>!0)})}),g.onUnmounted(()=>{d(),s&&delete s.actions.scroll}),{isScrolling:a,scrollContainer:c,container:g.ref(e)}}const Iz={class:"auto-skip-buttons flex"},Nz=g.createElementVNode("div",{class:"anchor"},null,-1),Wy=g.defineComponent({__name:"game-dialog",setup(t){const e=g.computed(()=>Br().layoutMode),n=g.computed(()=>On().inGameInputListener),r=g.ref(qt().inScript),i=g.ref(null),o=Br(),s=Zt(),a=g.computed(()=>s.stack),l=Vn(),c=g.computed(()=>l.dialog),f=g.ref(null),u=g.ref(null),d=g.ref(null),h=g.ref(null);Ky({container:f,scrollSpeed:40,onlyVertical:!0,inputListener:n.value});const p=g.computed(()=>{let F="0px";const se=ot().layout.dialogBottomPadding;return typeof se=="number"?F=`${se}px`:typeof se=="string"&&(F=se),{paddingBottom:F}}),m=g.computed(()=>{if(c.value.length>0){const F=c.value[c.value.length-1];return l.isDialogCleared(c.value.length-1)?void 0:F}}),y=g.computed(()=>{if(m.value)return m.value.speaker}),v=g.computed(()=>{if(m.value)return m.value.pose}),b=g.computed(()=>{if(m.value){const F=y.value;let se=v.value;return F?(se||(se="idle"),se):void 0}}),S=g.computed(()=>{if(!b.value)return;const F=y.value;return az(F,b.value)}),_=g.computed(()=>{const F=S.value;if(lz(F))return F}),x=g.computed(()=>{const F=S.value;if(cz(F))return F}),T=g.computed(()=>o.dialogWidth),E=g.computed(()=>qt().inScript);g.watch(E,F=>{F?r.value=!0:Vn().playMode!=="normal"?(Vn().playMode==="skip"&&(Vn().playMode="normal"),i.value=setTimeout(()=>{r.value=!1},500)):r.value=!1}),g.onMounted(()=>{if(n.value){const se=n.value;se.actions.autoPlay={press:()=>{Vn().toggleAutoPlay()}},se.actions.skip={press:()=>{Vn().toggleSkip()}}}const F=se=>{d.value&&d.value.keyboardEvent&&d.value.keyboardEvent(se)};F.value=No.on("debouncedKeydown",F)}),g.onUnmounted(()=>{n.value&&(delete n.value.actions.autoPlay,delete n.value.actions.skip),h.value&&No.off("debouncedKeydown",h.value),i.value&&clearTimeout(i.value)});const R=g.computed(()=>{let F;const se=`${Br().dialogHeight}px`,X={};if(Br().overlayMode){X.position="absolute";const Z=ot().dialogPanel.rightOffset??pu.common.dialogPanel.rightOffset;X.right=`${Z}px`;const z=ot().dialogPanel.bottomOffset??pu.common.dialogPanel.bottomOffset;X.bottom=`${z}px`}return{...X,width:e.value==="horizontal"?`${T.value}px`:"100%",height:se,transform:F,transformOrigin:"right"}});function L(){Vn().toggleAutoPlay()}function B(){Vn().toggleSkip()}function V(){Vn().toggleHistory()}function D(F,se){const X=Jp(F.speaker),Z=Vn();let z=(X==null?void 0:X.name)??"Missing Character";if(se>=1){const W=c.value[se-1];!Z.isDialogCleared(se-1)&&W.speaker===F.speaker&&(z=void 0)}return F.choices&&F.choices.forEach(W=>{W.choice=Ds(W.choice)}),{title:z??"",text:F.text,cssClass:F.cssClass,styleId:F.speaker,choices:F.choices,old:se<c.value.length-1,interactive:F.interactive,textField:F.textField}}function U(F){return F===l.dialog.length-1&&a.value.length>0}return g.watch(c.value,F=>{if(f.value){const se=f.value;se.scrollTop=se.scrollHeight+1e8}}),(F,se)=>(g.openBlock(),g.createElementBlock(g.Fragment,null,[g.createVNode(Ez),g.createVNode(Mz),g.createVNode(g.Transition,{name:"fade"},{default:g.withCtx(()=>[(_.value||x.value)&&g.unref(o).showDialog?(g.openBlock(),g.createBlock(hz,{key:0,picture:_.value,video:x.value,character:y.value,pose:v.value},null,8,["picture","video","character","pose"])):g.createCommentVNode("",!0)]),_:1}),g.createVNode(g.Transition,{name:"dialog-transition"},{default:g.withCtx(()=>[g.unref(o).showDialog?(g.openBlock(),g.createElementBlock("div",{key:0,class:"dialog override",ref_key:"dialogRef",ref:f,style:g.normalizeStyle(R.value)},[g.createVNode(g.TransitionGroup,{name:"list",tag:"div",class:"dialog-container w-full override",style:g.normalizeStyle(p.value),ref_key:"dialogContainerRef",ref:u},{default:g.withCtx(()=>[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(c.value,(X,Z)=>(g.openBlock(),g.createBlock(Tz,{ref_for:!0,ref:z=>d.value=z,key:X.id,options:D(X,Z),active:U(Z),index:Z,inputListener:n.value},null,8,["options","active","index","inputListener"]))),128))]),_:1},8,["style"]),(g.openBlock(),g.createBlock(g.Teleport,{to:"#narrat-app"},[g.createElementVNode("div",Iz,[g.createElementVNode("div",{class:"nrt-button menu-toggle-button auto-button auto",onClick:L},[g.createTextVNode(" Auto "),g.createVNode(Sd,{input:"autoPlay"})]),g.createElementVNode("div",{class:"nrt-button menu-toggle-button auto-button skip",onClick:B},[g.createTextVNode(" Skip "),g.createVNode(Sd,{input:"skip"})]),g.unref(ot)().dialogPanel.allowHistoryToggling!==!1?(g.openBlock(),g.createElementBlock("div",{key:0,class:"nrt-button menu-toggle-button auto-button toggle-history",onClick:V}," Toggle History ")):g.createCommentVNode("",!0)])])),Nz],4)):g.createCommentVNode("",!0)]),_:1})],64))}}),Rz=["id"],Lz=["src"],Dz={class:"tab-title"},lC=g.defineComponent({__name:"tab-selector",props:{tab:{},active:{type:Boolean}},emits:["click"],setup(t,{emit:e}){const n=t,r=e,i=g.computed(()=>n.active?"tab-active":"tab-inactive");function o(){r("click")}return(s,a)=>(g.openBlock(),g.createElementBlock("div",{class:g.normalizeClass(["tab",i.value]),id:`tab-${s.tab.id}`,onClick:o},[g.createElementVNode("div",{class:g.normalizeClass(["tab-title-container",s.active?"active":""])},[s.tab.icon?(g.openBlock(),g.createElementBlock("img",{key:0,src:s.tab.icon,alt:"tab icon",class:"tab-icon"},null,8,Lz)):g.createCommentVNode("",!0),g.createElementVNode("span",Dz,g.toDisplayString(s.tab.label),1)],2)],10,Rz))}}),Bz={class:"tabs-controller"},Fz={key:0,class:"tabs-controller__tabs"},Vz={key:1,class:"tab-content"},zz={key:2},qz=[g.createElementVNode("div",{class:"tab-content__empty"},[g.createElementVNode("p",null,"No tab selected")],-1)],Uz=g.defineComponent({__name:"TabsController",props:{tabs:{},defaultTab:{}},emits:["tab-change","close"],setup(t,{emit:e}){const n=g.ref(On().registerInputListener("tabs-controller",{cancel:{press:()=>{r("close")}},system:{press:()=>{r("close")}},menu:{press:()=>{r("close")}},previousTab:{press:()=>{o.value>0&&s(o.value-1)}},nextTab:{press:()=>{o.value<i.tabs.length-1&&s(o.value+1)}}})),r=e,i=t,o=g.ref(i.defaultTab);function s(l){o.value=l,r("tab-change",l)}const a=g.computed(()=>i.tabs[o.value]);return g.onUnmounted(()=>{n.value&&(On().unregisterInputListener(n.value),n.value=null)}),(l,c)=>(g.openBlock(),g.createElementBlock("div",Bz,[l.tabs.length>1?(g.openBlock(),g.createElementBlock("div",Fz,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(l.tabs,(f,u)=>(g.openBlock(),g.createBlock(lC,{key:f.id,tab:f,active:u===o.value,onClick:()=>s(u),inputListener:n.value},null,8,["tab","active","onClick","inputListener"]))),128))])):g.createCommentVNode("",!0),a.value?(g.openBlock(),g.createElementBlock("div",Vz,[a.value?(g.openBlock(),g.createBlock(g.resolveDynamicComponent(a.value.component),{key:0,inputListener:n.value,onClose:c[0]||(c[0]=f=>l.$emit("close"))},null,40,["inputListener"])):g.createCommentVNode("",!0)])):(g.openBlock(),g.createElementBlock("div",zz,qz))]))}}),Hz={class:"menu-container menu-toggle"},Kz=["onClick","id"],Wz={class:"nrt-title"},Gy=g.defineComponent({__name:"menu-buttons",setup(t){const e=gi(),n=g.ref(null);g.onMounted(()=>{dn.callHook("onGameMounted")}),g.onUnmounted(()=>{n.value&&No.off("keydown",n.value),dn.callHook("onGameUnmounted")});function r(f){gi().activeMenu=f}const i=g.computed(()=>e.menus),o=g.computed(()=>e.menu),s=g.computed(()=>{var f;return(((f=o.value)==null?void 0:f.tabs)??[]).filter(u=>u.condition?u.condition():!0).map(u=>({id:u.id,label:u.text,component:u.component}))});function a(){e.closeMenu()}function l(f){e.setActiveTab(f)}function c(){return a()}return(f,u)=>(g.openBlock(),g.createElementBlock("div",Hz,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(i.value,(d,h)=>(g.openBlock(),g.createElementBlock("button",{key:d.id,onClick:p=>r(d.id),id:d.cssId??`${h}-menu-button`,class:"nrt-button menu-toggle-button"},[g.createTextVNode(g.toDisplayString(d.label)+" ",1),d.inputPrompt?(g.openBlock(),g.createBlock(Sd,{key:0,input:d.inputPrompt},null,8,["input"])):g.createCommentVNode("",!0)],8,Kz))),128)),o.value?(g.openBlock(),g.createBlock(g.Teleport,{key:0,to:"#narrat-app-container"},[g.createVNode(Aa,{containerCssClass:{[o.value.cssClass]:!0,"menu-modal":!0},onClose:a},{header:g.withCtx(()=>{var d;return[g.createElementVNode("h3",Wz,g.toDisplayString(((d=g.unref(e).tab)==null?void 0:d.text)??o.value.label),1)]}),body:g.withCtx(()=>[g.createVNode(Uz,{onTabChange:l,onClose:c,tabs:s.value,defaultTab:o.value.activeTab},null,8,["tabs","defaultTab"])]),_:1},8,["containerCssClass"])])):g.createCommentVNode("",!0)]))}});function cC(t){const e={};return t.selected&&(e.selected=!0),t.clickable&&t.viewportClickable&&!t.transitioning&&(e.interactable=!0),(!t.clickable||!t.viewportClickable)&&(e["nrt-disabled"]=!0),t.transitioning&&(e.transitioning=!0),t.greyed&&(e.greyed=!0),t.hidden&&(e.hidden=!0),t.cssClass&&(e[t.cssClass]=!0),e}function Gz(t,e,n){return{selected:e,clickable:t.onClick!==void 0,viewportClickable:Hp(t),transitioning:n,greyed:!1,hidden:!1,cssClass:t.cssClass}}function Jz(t,e,n){const r=kl(t),i=Io().getButtonState(t),o=On().inputMode;return{selected:e&&o==="gamepad",clickable:Io().isButtonInteractible(t),viewportClickable:Hp(r),transitioning:n,greyed:i==="greyed",hidden:i==="hidden"||i===!1,cssClass:r.cssClass}}function Qz(t,e,n){return cC(Jz(t,e,n))}function Yz(t,e,n){return cC(Gz(t,e,n))}const Xz=["id"],Zz=["innerHTML"],eq=g.defineComponent({__name:"screen-object",props:{screenObject:{},layerSelected:{type:Boolean},transitioning:{type:Boolean},activeInteractive:{}},setup(t){const e=t,n=bo();function r(l){e.transitioning||e.screenObject.onClick&&n.clickObject(l)}function i(l){e.transitioning||e.screenObject.onClick&&n.hoverObject(l)}const o=g.computed(()=>{if(!e.layerSelected)return!1;const l=e.activeInteractive;return l.type==="screenObject"&&l.id===e.screenObject.id}),s=g.computed(()=>Yz(e.screenObject,o.value,e.transitioning)),a=g.computed(()=>{const l={};e.screenObject.opacity!==1&&(l.opacity=e.screenObject.opacity);let c=e.screenObject.x,f=e.screenObject.y,u=e.screenObject.width,d=e.screenObject.height;if(e.screenObject.anchor){const p=e.screenObject.anchor;c=e.screenObject.x-u*p.x,f=e.screenObject.y-d*p.y,l.transformOrigin=`${p.x*100}% ${p.y*100}%`}e.screenObject.scale&&(u=u*e.screenObject.scale,d=d*e.screenObject.scale);const h={...l,left:`${c}px`,top:`${f}px`,width:`${u}px`,height:`${d}px`};return uV(e.screenObject)&&(h.backgroundImage=`url(${La(e.screenObject.image)})`),h});return(l,c)=>{const f=g.resolveComponent("ScreenObject",!0);return g.openBlock(),g.createElementBlock("div",{tabindex:"-1",class:g.normalizeClass(["viewport-object",s.value]),id:`viewport-object-${e.screenObject.id}`,onClick:c[0]||(c[0]=u=>r(l.screenObject)),onMouseenter:c[1]||(c[1]=u=>i(l.screenObject)),style:g.normalizeStyle(a.value)},[g.createElementVNode("span",{innerHTML:e.screenObject.text?g.unref(Ds)(e.screenObject.text):void 0},null,8,Zz),(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(e.screenObject.children,u=>(g.openBlock(),g.createBlock(f,{transitioning:l.transitioning,key:u.id,screenObject:u},null,8,["transitioning","screenObject"]))),128))],46,Xz)}}}),tq=["id","innerHTML"],nq=g.defineComponent({__name:"viewport-button",props:{id:{},layerSelected:{type:Boolean},transitioning:{type:Boolean},activeInteractive:{}},setup(t){const e=t,n=Io();g.computed(()=>n.getButtonState(e.id));const r=g.computed(()=>kl(e.id)),i=r.value.background?La(r.value.background):null,o=g.computed(()=>{if(!e.layerSelected)return!1;const f=e.activeInteractive;return f.type==="button"&&f.id===e.id});g.computed(()=>n.isButtonClickable(e.id));const s=g.computed(()=>{const f=r.value.text??"";return Ds(f)}),a=g.computed(()=>Qz(e.id,o.value,e.transitioning)),l=g.computed(()=>{const f={};r.value.position.width&&(f.width=`${r.value.position.width}px`),r.value.position.height&&(f.height=`${r.value.position.height}px`),r.value.background&&(f.backgroundImage=`url(${i})`);let u=r.value.position.left,d=r.value.position.top;return r.value.anchor&&(u=r.value.position.left-r.value.position.width*r.value.anchor.x,d=r.value.position.top-r.value.position.height*r.value.anchor.y),{...f,left:`${u}px`,top:`${d}px`}});function c(){n.clickOnButton(e.id)}return(f,u)=>(g.openBlock(),g.createElementBlock("div",{tabindex:"-1",class:g.normalizeClass(["viewport-button",a.value]),id:`viewport-button-${f.id}`,onClick:u[0]||(u[0]=d=>c()),style:g.normalizeStyle(l.value),innerHTML:s.value},null,14,tq))}}),rq=["id"],iq=["id","loop","muted"],oq=["src"],sq=["id"],Jy=g.defineComponent({__name:"screen-layer",props:{layer:{},layerIndex:{},transitioning:{type:Boolean},activeInteractive:{}},setup(t){const e=t,n=qt(),r=bo(),i=g.computed(()=>!!(e.activeInteractive&&e.activeInteractive.layer===e.layerIndex)),o=g.computed(()=>r.tree.filter(y=>y.layer===e.layerIndex)),s=g.computed(()=>ot().layout.backgrounds.width),a=g.computed(()=>ot().layout.backgrounds.height),l=g.computed(()=>e.layer),c=g.computed(()=>{const y=Nu(l.value);return y||ft(`Screen ${l.value} doesn't have a config`),y}),f=g.computed(()=>n.isInGame),u=g.computed(()=>c.value.buttons||[]),d=g.computed(()=>c.value.video),h=g.computed(()=>({width:`${s.value}px`,height:`${a.value}px`})),p=g.computed(()=>{let y;return c.value.background!==Tp&&(y=`url(${La(c.value.background)})`),{backgroundImage:y,position:"absolute",left:0,top:0,width:`${s.value}px`,height:`${a.value}px`}}),m=g.computed(()=>({position:"absolute",left:0,top:0,width:`${s.value}px`,height:`${a.value}px`}));return(y,v)=>f.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"viewport-layer",id:`viewport-layer-${l.value}`,style:g.normalizeStyle(h.value)},[d.value?(g.openBlock(),g.createElementBlock("video",{key:0,class:"viewport-layer-background",id:`viewport-layer-background-${l.value}`,style:g.normalizeStyle(m.value),autoplay:"",loop:d.value.loop!==!1,muted:!!d.value.muted},[g.createElementVNode("source",{src:g.unref(bi)(c.value.background)},null,8,oq)],12,iq)):(g.openBlock(),g.createElementBlock("div",{key:1,class:"viewport-layer-background",id:`viewport-layer-background-${l.value}`,style:g.normalizeStyle(p.value)},null,12,sq)),(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(u.value,b=>(g.openBlock(),g.createBlock(nq,{key:b,id:b,layerSelected:i.value,transitioning:y.transitioning,activeInteractive:y.activeInteractive},null,8,["id","layerSelected","transitioning","activeInteractive"]))),128)),(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(o.value,b=>(g.openBlock(),g.createBlock(eq,{key:b.id,screenObject:b,transitioning:y.transitioning,layerSelected:i.value,activeInteractive:y.activeInteractive},null,8,["screenObject","transitioning","layerSelected","activeInteractive"]))),128))],12,rq)):g.createCommentVNode("",!0)}}),aq=g.defineComponent({__name:"NarratTransition",props:{name:{type:String,required:!0},duration:{type:Number,required:!0},delay:Number},emits:["complete"],setup(t,{emit:e}){g.useSlots();const n=e,r=t,i=g.ref("start"),o=g.reactive({oldSlotClasses:{},oldSlotStyle:{},newSlotClasses:{},newSlotStyle:{}});return g.onMounted(async()=>{const s=`narrat-transition-${r.name}`;o.newSlotClasses={[`${s}-enter-from`]:!0},o.oldSlotClasses={[`${s}-leave-active`]:!0},await Mi(30),o.oldSlotStyle={transitionDuration:`${r.duration/1e3}s`},o.newSlotStyle={transitionDuration:`${r.duration/1e3}s`},o.oldSlotClasses[`${s}-leave-to`]=!0,o.newSlotClasses[`${s}-enter-active`]=!0,await Mi(r.delay??0),delete o.newSlotClasses[`${s}-enter-from`],await Mi(r.duration),i.value="end",n("complete")}),(s,a)=>(g.openBlock(),g.createElementBlock(g.Fragment,null,[i.value!=="end"?(g.openBlock(),g.createElementBlock("div",{key:0,class:g.normalizeClass(["transition-holder",o.oldSlotClasses]),style:g.normalizeStyle(o.oldSlotStyle)},[g.renderSlot(s.$slots,"oldElement")],6)):g.createCommentVNode("",!0),g.createElementVNode("div",{class:g.normalizeClass(["transition-holder",o.newSlotClasses]),style:g.normalizeStyle(o.newSlotStyle)},[g.renderSlot(s.$slots,"newElement")],6)],64))}});function uC(t,e,n){return t<e?e:t>n?n:t}const Qy=g.defineComponent({__name:"screens",setup(t){const e=g.computed(()=>On().inGameInputListener),n=qt(),r=Io(),i=bo(),o=g.ref(0),s=g.computed(()=>r.nonEmptyLayers),a=g.computed(()=>{const m=[];return s.value.reduce((y,v,b)=>{const _=Nu(v.screen).buttons;if(_)for(const T of _)r.isButtonClickable(T)&&y.push({id:T,type:"button",layer:b});const x=i.tree.filter(T=>T.layer===b);for(const T of x)i.isScreenObjectClickable(T)&&y.push({id:T.id,type:"screenObject",layer:b});return y},m)}),l=g.computed(()=>{if(a.value.length===0)return null;let m=o.value;return m>a.value.length-1&&(m=a.value.length-1),a.value[m]}),c=g.computed(()=>ot().layout.backgrounds.width),f=g.computed(()=>ot().layout.backgrounds.height),u=g.computed(()=>n.isInGame);function d(m){r.finishTransition(m)}const h=g.computed(()=>{const m=c.value;return{height:`${f.value}px`,width:`${m}px`}}),p=g.computed(()=>a.value.length>0);return g.onMounted(()=>{g.nextTick(()=>{if(e.value){const m=e.value.actions;m.previousTab={press:()=>{o.value>0?o.value--:o.value=a.value.length-1,o.value=uC(o.value,0,a.value.length-1)},active:p},m.left=m.previousTab,m.nextTab={press:()=>{o.value<a.value.length-1?o.value++:o.value=0,o.value=uC(o.value,0,a.value.length-1)},active:p},m.right=m.nextTab,m.viewportSelect={press:()=>{if(l.value){const y=l.value;y.type==="button"?r.clickOnButton(y.id):y.type==="screenObject"&&i.clickObject(i.getObject(y.id))}},active:p}}})}),g.onUnmounted(()=>{if(e.value){const m=e.value;delete m.actions.previousTab,delete m.actions.left,delete m.actions.nextTab,delete m.actions.right}}),(m,y)=>u.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"viewport",id:"narrat-viewport",style:g.normalizeStyle(h.value)},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(s.value,(v,b)=>(g.openBlock(),g.createElementBlock("div",{key:v.screen??"",class:"layer-container"},[v.transition?(g.openBlock(),g.createBlock(aq,{key:0,name:v.transition.transition,duration:v.transition.duration,delay:v.transition.delay,onComplete:()=>d(b)},{oldElement:g.withCtx(()=>[v.transition.oldScreen?(g.openBlock(),g.createBlock(Jy,{key:0,layer:v.transition.oldScreen,layerIndex:b,transitioning:!0},null,8,["layer","layerIndex"])):g.createCommentVNode("",!0)]),newElement:g.withCtx(()=>[v.screen?(g.openBlock(),g.createBlock(Jy,{key:0,layer:v.screen,layerIndex:b,transitioning:!0},null,8,["layer","layerIndex"])):g.createCommentVNode("",!0)]),_:2},1032,["name","duration","delay","onComplete"])):v.screen?(g.openBlock(),g.createBlock(Jy,{key:1,layer:v.screen,layerIndex:b,transitioning:!1,activeInteractive:l.value},null,8,["layer","layerIndex","activeInteractive"])):g.createCommentVNode("",!0)]))),128))],4)):g.createCommentVNode("",!0)}}),lo=Rr("hud",{state:()=>({hudStats:{},visible:!0}),actions:{updateConfig(t){for(const e in t.hudStats)this.hudStats[e]||(this.hudStats[e]={value:t.hudStats[e].startingValue})},reset(t){this.$reset(),this.updateConfig(t)},setStat(t,e){this.hudStats[t].value=e,this.getStat(t).value<(mc(t).minValue??0)&&(this.hudStats[t].value=mc(t).minValue??0),this.getStat(t).value>(mc(t).maxValue??1/0)&&(this.hudStats[t].value=mc(t).maxValue??1/0)},addStat(t,e){this.setStat(t,this.getStatValue(t)+e)},getStat(t){return this.hudStats[t]},getStatValue(t){return this.hudStats[t].value},generateSaveData(){return{hudStats:yn(this.hudStats),visible:this.visible}},loadSaveData(t){this.hudStats=ic(this.hudStats,t.hudStats),this.visible=t.visible},setVisibility(t){this.visible=t}}}),lq=g.defineComponent({data(){return{}},methods:{getStatImage(t){return bi(this.statsConfig[t].icon)},formatStat(t,e){var a;const n=mc(t),r=n.decimals??2,i=Math.floor(e*10**r)/10**r,o={};(a=n.formatting)!=null&&a.style&&(o.style=n.formatting.style,n.formatting.style==="currency"&&(o.currency=n.formatting.currency??"USD",o.currencyDisplay="narrowSymbol"),n.formatting.style==="unit"&&(o.unit=n.formatting.unit??"day"));let s;try{s=i.toLocaleString(void 0,o)}catch(l){ft(`Error formatting HUD stat, probably using an invalid config: ${l}`),console.error(l),s=i.toLocaleString()}return s},statPrefix(t){const e=mc(t);return e.prefix??(e.suffix||e.hideName?"":e.name)},statSuffix(t){return mc(t).suffix??""}},computed:{...ud(lo,["hudStats"]),...ud(Br,["layoutMode"]),statsConfig(){return ot().hudStats},stats(){return this.hudStats},hudStyle(){let t="0";return this.layoutMode==="horizontal"&&(t=`${Cm()+(ot().dialogPanel.rightOffset??pu.common.dialogPanel.rightOffset)}px`),{right:t}},hasHud(){return lo().visible===!1?!1:Object.keys(lo().hudStats).length>0}}}),cq=["src"],uq=["innerHTML"],fq=["innerHTML"];function dq(t,e,n,r,i,o){return t.hasHud?(g.openBlock(),g.createElementBlock("div",{key:0,class:"hud",style:g.normalizeStyle(t.hudStyle)},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(t.stats,(s,a)=>(g.openBlock(),g.createElementBlock("div",{key:a,class:"hud-stat"},[g.createElementVNode("img",{class:"hud-icon",src:t.getStatImage(a)},null,8,cq),g.createElementVNode("span",{class:"bold hud-text",innerHTML:t.statPrefix(a)},null,8,uq),g.createElementVNode("span",null,g.toDisplayString(t.formatStat(a,s.value)),1),t.statSuffix?(g.openBlock(),g.createElementBlock("span",{key:0,innerHTML:t.statSuffix(a)},null,8,fq)):g.createCommentVNode("",!0)]))),128))],4)):g.createCommentVNode("",!0)}const Yy=Ns(lq,[["render",dq]]),Xy=g.defineComponent({__name:"in-game",setup(t){const e=On(),n=g.computed(()=>e.inGameInputListener),r=qt(),i=Br(),o=g.computed(()=>i.layoutMode),s=g.computed(()=>r.saving),a=g.ref(null),l=Vn(),c=g.ref(null),f=g.computed(()=>s.value&&!s.value.withPrompt||s.value&&a.value),u=g.computed(()=>{let m="row";return o.value==="vertical"&&(m="column"),{flexDirection:m}});function d(m){if(a.value=null,m===null){t1(m,!1);return}t1(m,!0)}function h(){a.value=!0}function p(){a.value=!1,t1(null,!1),a.value=null}return g.onBeforeMount(()=>{e.createInGameInputListener()}),g.onMounted(()=>{c.value=No.on("debouncedKeydown",m=>{qt().debugMode||((m.key==="a"||m.key==="A")&&l.toggleAutoPlay(),(m.key==="s"||m.key==="S")&&l.toggleSkip())})}),g.onUnmounted(()=>{n.value&&e.removeInGameInputListener(),c.value&&No.off("debouncedKeydown",c.value)}),g.computed(()=>lo().visible===!1?!1:Object.keys(lo().hudStats).length>0),(m,y)=>(g.openBlock(),g.createElementBlock("div",{class:"game",style:g.normalizeStyle(u.value)},[g.createVNode(Yy),g.createVNode(Gy),g.createVNode(Qy),g.createVNode(Wy),f.value?(g.openBlock(),g.createBlock(nC,{key:0,mode:"pick",onChosen:d,onClose:y[0]||(y[0]=()=>d(null))})):g.createCommentVNode("",!0),s.value&&s.value.withPrompt&&a.value===null?(g.openBlock(),g.createBlock(Gp,{key:1,prompt:"Would you like to save the game?",onConfirm:h,onRefuse:p})):g.createCommentVNode("",!0)],4))}}),hq={class:"chapter-title-scene"},pq=["innerHTML"],mq=["innerHTML"],gq=g.defineComponent({__name:"chapter-title",props:{options:{}},setup(t){const e=t,n=g.ref(null);function r(){n.value=null,ao().changeScene(cs.Playing),Zt().jumpToLabel(e.options.next_label)}return g.onMounted(()=>{n.value=setTimeout(r,e.options.duration??2e3)}),g.onUnmounted(()=>{n.value&&(clearTimeout(n.value),n.value=null)}),(i,o)=>(g.openBlock(),g.createElementBlock("div",hq,[g.createElementVNode("h1",{class:"title chapter-title",innerHTML:e.options.title},null,8,pq),e.options.subtitle?(g.openBlock(),g.createElementBlock("h2",{key:0,class:"subtitle chapter-subtitle",innerHTML:e.options.subtitle},null,8,mq)):g.createCommentVNode("",!0)]))}});var cs=(t=>(t.EngineSplash="engine-splash",t.GameSplash="game-splash",t.StartMenu="start-menu",t.Playing="playing",t.ChapterTitle="chapter-title",t))(cs||{});const fC={"engine-splash":{id:"engine-splash",component:g.shallowRef(Dy),props:{}},"game-splash":{id:"game-splash",component:g.shallowRef(Fy),props:{}},"start-menu":{id:"start-menu",component:g.shallowRef(Uy),props:{}},playing:{id:"playing",component:g.shallowRef(Xy),props:{}},"chapter-title":{id:"chapter-title",component:g.shallowRef(gq),props:{}}};let Ro={};function vq(t){Ro=t}function yq(){fC["engine-splash"].onFinished=()=>{ao().onEngineSplashFinished()},ao().scenes=fC}function bq(){return Ro}function dC(){for(const t in Ro){const e=Ro[t],n=e.store();let r;dV(e)&&(r=ar()[e.config]),n.reset&&!e.avoidReset&&n.reset(r)}dn.plugins.forEach(t=>{t.reset&&t.reset()})}function wq(){const t={};for(const e in Ro){const n=Ro[e];if(Xj(n)){const r=n.store();r.generateSaveData?t[n.save]=r.generateSaveData():ft(`Store ${e} has no generateSaveData method. Trying to generate save data for ${n.save}`)}}return dn.plugins.forEach(e=>{e.save&&(t.plugins[e.pluginId]=e.save())}),dn.customStores().forEach(([e,n])=>{if(n.save){const r=n.save();r&&(t.customStores||(t.customStores={}),t.customStores[e]=r)}}),t}function hC(){const t={};for(const e in Ro){const n=Ro[e];if(Zj(n)){const r=n.store();r.generateGlobalSaveData?t[n.globalSave]=r.generateGlobalSaveData():ft(`Store ${e} has no generateGlobalSaveData method. Trying to generate save data for ${n.globalSave}`)}}return t}function Sq(){const t=wq(),e=hC();return{gameSave:t,globalSave:e}}function kq(t){for(const e in Ro){const n=Ro[e];if(Xj(n)){const r=n.store();r.loadSaveData?r.loadSaveData(t[n.save]):ft(`Store ${e} has no loadSaveData method. Trying to load save data for ${n.save}`)}}dn.plugins.forEach(e=>{e.load&&t.plugins[e.pluginId]&&e.load(t.plugins[e.pluginId])}),dn.customStores().forEach(([e,n])=>{n.load&&n.load(t.customStores[e])})}function pC(t){for(const e in Ro){const n=Ro[e];if(Zj(n)){const r=n.store();r.loadGlobalSaveData?r.loadGlobalSaveData(t[n.globalSave]):ft(`Store ${e} has no loadGlobalSaveData method. Trying to load global save data for ${n.globalSave}`)}}}function xq(t){kq(t.gameSave),pC(t.globalSave)}function Zy({slotId:t,name:e}){const n=qt(),r=t??n.saveSlot;n.saveData=yB({slot:r,name:e,extractedSave:Sq()}),qt().triggerAutosaveFeedback()}function $q(){const t=hC();bB(t)}function _q(t){xq(t)}function mC(){Zt().globalData={},Ls().globalSave.data={},Zy({})}function e1({saveName:t,withPrompt:e}){return new Promise(n=>{Zt().hasJumped?qt().startManualSave(n,t,e):n()})}function t1(t,e){var r;const n=qt();if(!n.saving){ft("No saving in progress!");return}if(!e||!t){n.cancelManualSave();return}n.saveData?(wB(n.saveData,hu(n.playTime.start,n.playTime.previousPlaytime),t.slotId,(r=n.saving)==null?void 0:r.name),n.alert("Success","Game saved!")):ft("There was no data to save!"),n.cancelManualSave()}const Zt=Rr("vm",{state:()=>({stack:[],data:{},globalData:{},lastLabel:"main",script:{},labelStack:["main"],commandsWaitingForPlayerAnswer:[],promisesWaitingForTextAnimation:[],hasJumped:!1}),actions:{generateSaveData(){return{lastLabel:this.lastLabel,data:fb(this.data,t=>Yj(t)?{_entityType:t._entityType,id:t.id}:null)}},generateGlobalSaveData(){return{data:yn(this.globalData)}},loadSaveData(t){this.lastLabel=t.lastLabel,this.data=yn(t.data),this.findEntitiesInData(this.data)},loadGlobalSaveData(t){this.globalData=t.data},findEntitiesInData(t){Gj(this.data,(e,n,r)=>{if(Yj(e)){const i=bo().getObject(e.id);i?r[n]=i:lc(`Trying to reload sprite ${n} (${JSON.stringify(e)} - ${e.id}) but it does not exist.`)}})},setReturnValue(t){this.currentFrame.returnValue=t},waitForPlayerAnswer(t){this.commandsWaitingForPlayerAnswer.push(t)},waitForEndTextAnimation(){return new Promise(t=>{this.promisesWaitingForTextAnimation.push(t)})},endTextAnimation(){for(const t of this.promisesWaitingForTextAnimation)t();this.promisesWaitingForTextAnimation=[]},popAnswerQueue(){return this.commandsWaitingForPlayerAnswer.pop()},addScopedVariable(t,e){this.currentFrame&&(this.currentFrame.scope[t]=e)},async loadScripts(t){this.readGlobalData();const e=await this.loadConfigScriptFiles(t),n=qt().options.scripts;this.addAllScripts([...e,...n])},async loadConfigScriptFiles(t){const e=[];for(const r of t)e.push(qp(jm(r)));return(await Promise.all(e)).map((r,i)=>({fileName:t[i],code:r,id:t[i],type:"script"}))},addAllScripts(t){const e=Date.now();for(const r of t)dn.addNarratScript(r);const n=Date.now();Po.log(`scripts parsed in ${n-e} ms`)},start(){this.setStack({currentIndex:0,branchData:{branch:dn.script.main.branch},label:"main"}),this.setStack({currentIndex:0,branchData:{branch:dn.script.main.branch},label:"main"})},setLastLabel(t){this.lastLabel=t},reset(){this.$reset(),this.stack=[],this.data={},this.hasJumped=!1,this.setStack({currentIndex:0,branchData:{branch:dn.script.main.branch},label:"main"})},readGlobalData(){this.globalData=Ls().globalSave.data},setScript(t){dn.script=t},overrideData(t){this.data=t},setStack(t){this.stack=[];const e=this.frameOptionsToFrame(t);this.lastLabel=t.label,this.stack.push(e)},frameOptionsToFrame(t){const e=t.branchData,n={...t,blocks:[],scope:{},returnValue:null};if(this.addBlock(n,{branchData:e,currentIndex:t.currentIndex}),t.scope&&(n.scope=t.scope),t.args&&t.branchData.args)for(const[r,i]of t.branchData.args.entries())t.args.length>r&&(n.scope[i]=t.args[r]);return n},addBlock(t,e){t.blocks.push(e)},async addAndRunBlock(t){const e=this.currentFrame;if(!e)throw new Error("No frame to add block to");return this.addBlock(e,t),await this.runBlock()},setData(t,e){const n=Ru();NT(n,t,e)},addInstruction(t,e){const n=Ru();RT(n,t,e)},addFrame(t){if(!t.label)if(this.currentFrame)t.label=this.currentFrame.label;else throw new Error("Tried to add a new frame but no label was passed and there is no current frame label");const e=this.frameOptionsToFrame(t);this.stack.push(e)},async addAndRunFrame(t){return await this.addFrame(t),await this.runFrame()},async runFrame(){if(!this.currentFrame)throw new Error("Tried to run a frame but there is no current frame");let e;for(;this.currentBlock;){const n=await this.runBlock();if(n===_p||n===jp)return this.cleanFrame(),n;if(n===oy)return this.cleanFrame()}return this.cleanFrame(),e},cleanFrame(){const t=this.currentFrame,{returnValue:e}=t;return this.stack.splice(this.stack.length-1,1),e},async runBlock(){const t=this.currentBlock;if(!t)throw new Error("Tried to run a block but there is no current block");let e;for(;this.currentLine;){if(e=await this.runLineOnly(),BD(e))return this.cleanBlock(),e;t.currentIndex++}return this.cleanBlock(),e},cleanBlock(){if(!this.currentFrame){ft("Tried to clean a block but there is no current frame");return}if(!this.currentFrame.blocks){ft("Tried to clean a block but there is no current block");return}this.currentFrame.blocks.splice(this.currentFrame.blocks.length-1,1)},async runGame(){let t=await this.runFrame();for(;t===_p;){const e=this.jumpTarget;if(!e){ft("Tried to jump but no target was set");return}this.hasJumped=!0,this.setStack(e);const n=ot().saves.autosaveDisabledOnLabels;(!n||!n.includes(e.label))&&await Zy({}),t=await this.runFrame()}t!==jp&&this.stack.length===0&&this.reachedEndOfScript()},async nextLineOnly(){return this.stack.length===0||this.isBlockFinished()?!1:(this.currentBlock.currentIndex++,!0)},isBlockFinished(){return!this.currentBlock||this.currentBlock&&this.currentBlock.currentIndex>=this.currentBlock.branchData.branch.length},reachedEndOfScript(){if(ot().gameFlow.labelToJumpOnScriptEnd&&this.lastLabel!==ot().gameFlow.labelToJumpOnScriptEnd){this.jumpToLabel(ot().gameFlow.labelToJumpOnScriptEnd);return}qt().endingScript(),qt().options.debug&&ot().debugging.showScriptFinishedMessage},async runLineOnly(){const t=this.currentLine;if(!t){ft("There is no line of script to run.");return}return qt().startingScript(),await xC(t)},async runLabelFunction(t,...e){const n=dn.script[t];if(!n){ft(`Tried to run a label that doesn't exist: ${t}`);return}const r={currentIndex:0,branchData:n,label:t,args:e};return this.addAndRunFrame(r)},runCustomFrame(t){this.addAndRunFrame(t)},async jumpToLabel(t,...e){const n=dn.script[t];if(!n){ft(`Label ${t} doesn't exist. Is the file with this label added in the list of script files to load in the config?`);return}t!==this.lastLabel&&(this.hasJumped=!0),this.setLastLabel(t),this.setStack({currentIndex:0,branchData:n,args:e,label:t}),this.runGame()},async runThenGoBackToPreviousDialog(t,...e){const n=Vn(),r=n.dialog[n.dialog.length-1],i=qt().inScript,o=await this.runLabelFunction(t,...e);return i?n.addDialog(r):qt().endingScript(),o}},getters:{currentFrame(t){return t.stack[t.stack.length-1]},scope(){var t;return((t=this.currentFrame)==null?void 0:t.scope)??{}},currentBlock(){const t=this.currentFrame;return t?t.blocks[t.blocks.length-1]:void 0},currentLine(){const t=this.currentBlock;if(t&&t.branchData.branch.length>t.currentIndex)return t.branchData.branch[t.currentIndex]},commandWaitingForAnswer(){if(this.commandsWaitingForPlayerAnswer.length>0)return this.commandsWaitingForPlayerAnswer[0]}}}),gC=new kp;gC.setupDebugger(!1);const Lo=gC.logger;function jq(t){return Cq((e,n,r)=>Vq(e,n,r),t.code,t.fileName)}function Cq(t,e,n){const r={fileName:n,currentLine:0,error:(s,a)=>t(r,s,a),processCommandsFunction:n1,indentSize:0};r.indentSize=Rq(r,e);const i=Mq(r,e);r.currentLine=0,Lo.log(i);const o={};for(const s of i){s.code.search(":")===-1&&r.error(s.line,"First indentation level should only be used to specify labels");const l=s.code.replace(":","").split(/ +/g),c=l[0],f=l.slice(1);s.branch||r.error(s.line,"This line should have a branch but doesn't"),o[c]={branch:n1(r,s.branch,void 0),args:f}}return o}function n1(t,e,n){const r=t.currentLine;if(!e){let s=0;return n&&(s=n.line),t.error(s,"Processing of command failed because the current branch has no lines inside"),[]}const i={processCommandsFunction:n1,parserContext:t,lines:e,currentLine:0,line:e[0]},o=[];for(;i.currentLine<e.length;){const s=e[i.currentLine];i.line=s;const a=vC(t,s,s.expression),l=dn.commands[a.command.operator];let c=l==null?void 0:l.parser;c||(c=dn.commands.text.parser),Lo.log(dn.commands.text);const{newLine:f}=c(i,a);i.currentLine=f,t.currentLine=r+f,o.push(a)}return o}function vC(t,e,n){Array.isArray(n)||t.error(e.line,`Expression should be an array. Something is wrong. ${t.fileName}:${t.currentLine} - ${e.code}`),Lo.log(n),typeof n[0]!="string"&&t.error(e.line,`Expression operator should be a string ${t.fileName}:${t.currentLine} - ${e.code}`);const r={code:e.code,fileName:t.fileName,line:e.line,command:{staticOptions:{},commandType:n[0],operator:n[0],args:n.slice(1).map(s=>yC(t,e,s)),options:{}}},i=n[0];if(!dn.commands[i]){const s=["else","success","failure"];!xB(i)&&!s.includes(i)&&t.error(e.line,`Unknown command ${i}`)}return r}function yC(t,e,n){return Array.isArray(n)?vC(t,e,n):n}function Tq(t){return t==="true"?!0:t==="false"?!1:t==="undefined"?void 0:t===null?null:isNaN(Number(t))?t:Number(t)}function Oq(t,e){e.charAt(e.length-1)===":"&&(e=e.substr(0,e.length-1));const n=Eq(e),[r]=wC(t,n);return r}function Eq(t){const e=/(["'])(?:\\\1|.)*?\1/g,n=[];let r;for(;(r=e.exec(t))!=null;)n.push(r);let i=0,o=[];for(const s of n){const a=s.index;if(a>i){const c=t.substr(i,a-i),f=bC(c);o=[...o,...f]}const l=s[0].replace(/\\/g,"");o.push(`$$"${l.substring(1,l.length-1)}`),i=a+s[0].length}return o=[...o,...bC(t.substr(i))],o.push(")"),o}function bC(t){t=t.replace(/: *$/g,"");let e=t.split(" ").filter(n=>n);return e=e.reduce((n,r)=>[...n,...r.split(/(\(|\))/g)].filter(i=>i&&i),[]),e.map(n=>Tq(n))}function wC(t,e){Lo.log("===============");let n=[],r=0,i=SC(e)+r,o=r1(e)+r;for(Lo.log(`Parsing expression: ${e}`),Lo.log(`Parenthesis start index: ${i} - end: ${o}`);i!==-1&&o>i;){n=[...n,...e.slice(r,i)];const l=e.slice(i+1);Lo.log(`Found a sub expression. Before: ${n} - After: ${l}`),r=i;const[c,f]=wC(t,l),u=r+f;n.push(c),r=u+1;const d=e.slice(r);Lo.log(`Sub expression came back: ${c} - rest of string: ${d}`),i=SC(d),i!==-1&&(i+=r),o=r1(d),o!==-1&&(o+=r)}o!==-1&&Lo.log("Found parenthesis end before new opening parenthesis, close this expression");const s=r1(e.slice(r))+r;if(s===-1)return t.error(t.currentLine,'Expression is not closed (missing ")" closing parenthesis)'),[n,s];const a=e.slice(r,s);return Lo.log(`End of expression: ${s} - ${a}`),Lo.log("==================="),n=[...n,...a],Aq(t,n),[n,s+1]}function Aq(t,e){e.length<1&&t.error(t.currentLine,"Expression is empty")}function SC(t){return t.findIndex(e=>e==="(")}function r1(t){return t.findIndex(e=>e===")")}function Pq(t,e){return e.split(/\r?\n|$/).reduce((r,i,o)=>{const s={code:i,line:o,multiline:!1},a=i.search(/\\$/);a!==-1&&(s.multiline=!0,i=i.substring(0,a));const l=i.search(/ *\/\//g);return l!==-1&&(i=i.substring(0,l)),s.code=i,s.code.search(/^\s*$/)===-1&&(r.length>0&&r[r.length-1].multiline?(r[r.length-1].code+=i,r[r.length-1].multiline=s.multiline):r.push(s)),r},[])}function Mq(t,e){const n=Pq(t,e);return kC(t,n,0,0).lines}function kC(t,e,n,r){let i=!0,o=n;const s=[];for(;i&&!(o>=e.length);){const a=e[o];let l=a.code;const c=Nq(t,l);if(l=l.substring(c*t.indentSize),Iq(t,c,o),c<r)i=!1;else if(c>r){(s.length===0||c-r!==1)&&t.error(a.line,"Wrong double indentation");const f=kC(t,e,o,c);s[s.length-1].branch=f.lines,o=f.endLine}else{const f=Oq(t,l),u={code:l,indentation:c,line:a.line,expression:f};s.push(u),o++,t.currentLine=o}}return{lines:s,endLine:o}}function Iq(t,e,n){e%1!==0&&t.error(n,`Indentation level of ${e} incorrect. Expected indentation of ${t.indentSize} spaces for this file.`)}function Nq(t,e){return e.search(/[^ ]/)/t.indentSize}function Rq(t,e){const n=e.match(/: *[\n\r]+( *)/);return!n||n.length<2?(t.error(0,"Can't detect indentation level. Make sure you indent with at least 2 spaces and consistently"),0):(Lo.log(n),n[1].length)}class Lq{constructor(){Un(this,"plugins",[]);Un(this,"pinia");Un(this,"script",{});Un(this,"scripts",[]);Un(this,"commands",{})}addCommand(e){this.commands[e.keyword]=e}addPlugin(e){if(this.plugins.push(e),e.customCommands)for(const n of e.customCommands)this.addCommand(n)}callHook(e,...n){for(const r of this.plugins)typeof r[e]=="function"&&r[e](...n)}addNarratScript(e){const n=jq(e);this.script={...this.script,...n},this.scripts.push(e)}customStores(){const e=[];for(const n of this.plugins)if(n.customStores)for(const r in n.customStores)e.push([r,n.customStores[r](this.pinia)]);return e}addCustomSettings(){for(const e of this.plugins)if(e.customSettings)for(const n in e.customSettings)Vs().addCustomSetting(n,e.customSettings[n])}}const dn=new Lq;async function xC(t,e){var r;const n=Zt();try{return await Qp(t,e)}catch(i){console.error(i),console.error(t),ft(`Narrat script runtime error at <span class="error-filename">${t.fileName}:${t.line+1}</span>
70
70
  <b>${i}</b>
71
71
  Script: ${t.code}
72
72
  Label: ${((r=n.currentFrame)==null?void 0:r.label)||"none"}`)}}async function Dq(t,e){const n=t.command,r=dn.commands[n.commandType];if(r){const i={args:[],options:{},operator:n.operator,staticOptions:n.staticOptions,code:t.code,commandType:n.commandType,fileName:t.fileName,line:t.line},o=r.argTypes;i.options={};for(const[s,a]of n.args.entries()){let l;if(ky(a)?l=await Qp(a,e):typeof a=="string"?a.search(D_)===0?l=Ds(a.substring(3)):xy(a)?l=$C(a):l=a:l=a,i.args.push(l),Array.isArray(o)&&o.length>s){const c=o[s];l!==null&&(i.options[c.name]=l)}}return i}else throw new Error(`${n.commandType} is not a valid command`)}function $C(t){const e=Ru(),n=mW(e,t);if(n){const[r,i]=n;return r[i]}else return t}async function Qp(t,e){const n=await Dq(t,e),r=dn.commands[n.commandType];if(r)return await r.run(n,e);throw new Error(`${n.commandType} is not a valid command`)}async function _C(t){oc("onPlayerAnswered");const e=Zt(),n=e.popAnswerQueue(),r=e.currentLine;try{if(n){const i=dn.commands[n.commandType];if(i)return await i.processPlayerAnswer(n,t)}}catch(i){console.error(i),ft(`Error after player answer at ${r.fileName}:${r.line+1} (${r.code}<br /> - Error: ${i}`)}}function Bq(){return{baseAssetsPath:"",baseDataPath:"",configPath:"data/config.json",logging:!1,debug:!1,scripts:[],container:"#game-holder"}}class Fq extends Kp{}const qt=Rr("main",{state:()=>({ready:!1,playing:!1,errors:[],playTime:{start:0,previousPlaytime:0},saveSlot:"",paused:!1,debugMode:!0,options:{baseAssetsPath:"",baseDataPath:"",configPath:"data/config.json",logging:!1,debug:!1,scripts:[]},loading:{step:"Loading",percentage:.1,loaded:!1},alerts:[],saving:null,listener:new Fq,inScript:!1,autosaveFeedback:!1}),actions:{setLoadingStep(t,e){this.loading.step=t,this.loading.percentage=e},gameLoaded(){this.loading.loaded=!0,this.listener.emit("gameLoaded")},async alert(t,e){return new Promise(n=>{this.alerts.push({title:t,text:e,resolver:n,id:tc()})})},closeAlert(t){const e=this.alerts.findIndex(n=>n.id===t);e!==-1&&(this.alerts[e].resolver(),this.alerts.splice(e,1))},startingScript(){mi().onScriptStart(),this.inScript=!0},endingScript(){mi().onScriptEnd(),this.inScript=!1},prepareToPlay(){this.ready=!0,this.startPlaying(),ao().goToGameScene()},setSaveSlot(t){this.saveSlot=t,dB(t)},startManualSave(t,e,n){this.saving={name:e,withPrompt:n,resolver:t}},cancelManualSave(){this.saving&&(this.saving.resolver(),this.saving=null)},playerAnswered(t){_C(t)},menuReturn(){ao().goToStartMenuScene()},createError(t){this.errors.push({text:t,type:"error"})},createWarning(t){this.errors.push({text:t,type:"warning"})},clearErrors(){this.errors=[]},pause(){this.paused=!0},unpause(){this.paused=!1},setOptions(t){this.options=t},startPlaying(){this.playing=!0,this.playTime.start=Date.now()},reset(){this.ready=!1,this.paused=!1,this.playing=!1,this.ready=!0},generateSaveData(){return{playTime:hu(this.playTime.start,this.playTime.previousPlaytime)}},loadSaveData(t){this.playTime.previousPlaytime=t.playTime},async triggerAutosaveFeedback(){const t=ot().saves.autosaveFeedback;t&&t.enabled&&(this.autosaveFeedback=!0,await Mi(t.duration*1e3),this.autosaveFeedback=!1)},exitGame(){window.close()}},getters:{isInGame(t){return ao().isPlaying},totalPlayTime(t){return hu(t.playTime.start,t.playTime.previousPlaytime)},sessionPlayTime(t){return hu(t.playTime.start,0)},hasCustomContainer(t){return(t.options.container??"")!=="#game-holder"}}});function Vq(t,e,n){console.error(`Parser error: ${t.fileName}:${t.currentLine}`,n);const r=`[Parser Error] in <span class="error-filename">${t.fileName}:${e+1}</span> - <b>${n}</b>`;ft(r)}function ft(t,...e){const n=qt();console.error(t,...e),t=t.replace(/[\r\n]/g,`