narraleaf-react 0.42.1 → 0.42.2
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.
|
@@ -53,6 +53,10 @@ export declare class PositionUtils {
|
|
|
53
53
|
* animatable piece and any align change would be silently dropped.
|
|
54
54
|
*
|
|
55
55
|
* Without a dimension it falls back to the legacy `calc(<pos> + <offset>px)` form.
|
|
56
|
+
*
|
|
57
|
+
* Only an absent component resolves to `auto`. `0` is a position - the left or bottom edge of
|
|
58
|
+
* the stage - and reading it as "not stated" would leave the axis unset, which drops the
|
|
59
|
+
* displayable out of its absolute placement altogether rather than putting it on the edge.
|
|
56
60
|
*/
|
|
57
61
|
static calc(pos: number | string, offset?: UnknownAble<number>, dimension?: number): string;
|
|
58
62
|
/**
|
package/dist/main.js
CHANGED
|
@@ -4,7 +4,7 @@ var pe={action:"displayable:action",applyTransform:"displayable:applyTransform",
|
|
|
4
4
|
A returnable jump suspends the scene it leaves rather than unloading it, so a scene cannot be called from itself or from anything it has called.`,this);if(e.isSceneSuspended(this.callee))throw this._callerAlreadyParkedError(n);let r=e.getSuspendedScenes().length,s=e.game.config.maxSceneCallDepth;if(r>=s)throw new J(`Scene call depth limit reached (${s}).
|
|
5
5
|
Each returnable jump keeps the scene it left mounted, so a chain of them holds every scene in the chain on the stage at once. Raise maxSceneCallDepth if the story really needs to go this deep.`,this);let a=this.callee.state.backgroundMusic;return e.actionHistory.push({action:this,stackModel:t.stackModel},()=>{a&&e.audioManager.isManaged(a)&&e.audioManager.resume(a,0)},[]),a&&e.audioManager.isManaged(a)&&e.audioManager.pause(a,this.callee.config.backgroundMusicFade),super.executeAction(e,t)}else if(this.type===z.callTo){let n=this.contentNode.getContent()[0],i=e.getStory().getScene(n);if(!i)throw this._sceneNotFoundError(this.getSceneName(n));let r=this.contentNode.getChild();if(!r?.action)throw new Ae("A scene call has no return address. `scene:callTo` is only ever built with a `scene:resume` chained behind it (see Scene._callScene).");let s=this.callee;if(e.isSceneSuspended(s))throw this._callerAlreadyParkedError(n);let a=e.getLiveGame().getStackModelForce().serialize();e.actionHistory.push({action:this,stackModel:t.stackModel},l=>{e.setSceneSuspended(s,!1);let[u]=e.getLiveGame().constructMaps();e.getLiveGame().getStackModelForce().deserialize(l,u)},[a]),e.setSceneSuspended(s,!0);let c=i.getSceneRoot().contentNode;return[{type:this.type,node:r},{type:this.type,node:c}]}else if(this.type===z.resume){let n=this.contentNode.getContent()[0],i=this.callee,r=i.state.backgroundMusic,s=ye.createSceneSnapshot(n,e);return e.actionHistory.push({action:this,stackModel:t.stackModel},a=>{let c=new S(l=>l);e.timelines.attachTimeline(c),ye.handleSceneInit(n,{type:this.type,node:this.contentNode.getChild()},e,c),ye.restoreSceneSnapshot(a,e),e.setSceneSuspended(i,!0),r&&e.audioManager.isManaged(r)&&e.audioManager.pause(r,0)},[s]),n.events.emit("event:scene.preUnmount"),ye.unloadScene(n,e),e.setSceneSuspended(i,!1),r&&e.audioManager.isManaged(r)&&e.audioManager.resume(r,i.config.backgroundMusicFade),super.executeAction(e,t)}else if(this.type===z.setBackgroundMusic){let[n,i]=this.contentNode.getContent(),r=this.callee,s=e.getExposedStateForce(r),a=r.state.backgroundMusic;return e.actionHistory.push({action:this,stackModel:t.stackModel},c=>{s.setBackgroundMusic(c,0)},[a]),s.setBackgroundMusic(n,i||0),super.executeAction(e,t)}else{if(this.type===z.preUnmount)return this.callee.events.emit("event:scene.preUnmount"),super.executeAction(e,t);if(this.type===z.transitionToScene){let[n,i]=this.contentNode.getContent();return this.applyStageTransition(e,n,i,t)}else if(this.type===z.nvlBlock){let[n,i]=this.contentNode.getContent(),r=e.createNvlSnapshot();return e.enterNvlMode(i),e.actionHistory.push({action:this,stackModel:t.stackModel},s=>{e.restoreNvlSnapshot(s)},[r]),n.length===0?{type:this.type,node:this.contentNode.getChild()}:[{type:this.type,node:this.contentNode.getChild()},{type:this.type,node:n[0].contentNode}]}else if(this.type===z.nvlShow){let[n]=this.contentNode.getContent(),i=e.getNvlState().visible,r=this.applyNvlVisibility(e,!0,n,t),s=S.isAwaitable(r)?e.timelines.attachTimeline(r):void 0;return e.actionHistory.push({action:this,stackModel:t.stackModel,timeline:s},a=>{e.setNvlVisibility(a)},[i]),r}else if(this.type===z.nvlHide){let[n]=this.contentNode.getContent(),i=e.getNvlState().visible,r=this.applyNvlVisibility(e,!1,n,t),s=S.isAwaitable(r)?e.timelines.attachTimeline(r):void 0;return e.actionHistory.push({action:this,stackModel:t.stackModel,timeline:s},a=>{e.setNvlVisibility(a)},[i]),r}else if(this.type===z.nvlEnd){let[n]=this.contentNode.getContent(),i=e.createNvlSnapshot();return e.actionHistory.push({action:this,stackModel:t.stackModel},r=>{e.restoreNvlSnapshot(r)},[i]),e.exitNvlMode(n||null),{type:this.type,node:null}}}throw new Error("Unknown scene action type: "+this.type)}getFutureActions(e,t={}){if(this.type===z.callTo&&t.allowFutureScene!==!1){let i=this.contentNode.getContent()[0],r=e.getScene(i,!0);r.isSceneRootConstructed()||r.constructSceneRoot(e);let s=r.getSceneRoot()?.contentNode,a=this.contentNode.getChild()?.action;return[...s?.action?[s.action]:[],...a?[a]:[]]}if(this.type===z.jumpTo&&t.allowFutureScene!==!1){let i=this.contentNode.getContent()[0],r=e.getScene(i,!0);r.isSceneRootConstructed()||r.constructSceneRoot(e);let s=e.getScene(i,!0).getSceneRoot()?.contentNode;return s?.action?[s.action]:[]}if(this.type===z.nvlBlock){let[i]=this.contentNode.getContent(),r=super.getFutureActions(e,t);return[...i??[],...r]}let n=this.contentNode.getChild()?.action;return n?[n]:[]}_sceneNotFoundError(e){return new J(`Scene with name ${e} not found
|
|
6
6
|
Make sure you have registered the scene using story.register`,this)}_callerAlreadyParkedError(e){let t=this.getSceneName(this.callee);return new J(`Cannot call scene ${this.getSceneName(e)} from ${t}: ${t} is already parked behind another call.
|
|
7
|
-
A returnable jump suspends the scene it is taken from, and a scene has one place on the stage, so two calls cannot be open from the same scene at the same time. Take the calls one after the other in a single branch rather than one per branch of a concurrent group.`,this)}getSceneName(e){return typeof e=="string"?e:e.config.name}stringify(e,t,n){if(this.type===z.callTo){if(t.has(this))return super.stringifyWithContent("Scene","[[recursive]]");t.add(this);let[i]=this.contentNode.getContent();return super.stringifyWithContent("Scene",`callTo {${i.stringify(e,t,n)}}`)}if(this.type===z.jumpTo){if(t.has(this))return super.stringifyWithContent("Scene","[[recursive]]");t.add(this);let[i]=this.contentNode.getContent();return super.stringifyWithContent("Scene",`jumpTo {${i.stringify(e,t,n)}}`)}return super.stringifyWithName("SceneAction")}};ye.ActionTypes=z;var ee=ye;var cr=class{constructor(e){this.type=e,this.content=void 0}setContent(e){return this.content=e,this}getContent(){return this.content}},C=class o extends cr{static create(e){return new o().setContent(e)}static forEachParent(e,t){let n=new Set,i=e;for(;i&&!n.has(i);)n.add(i),t(i),i=i.getParent()}static forEachChild(e,t){let n=new Set,i=e;for(;i&&!n.has(i);)n.add(i),t(i),i=i.getChild()}constructor(e,t,n){super("ContentNode"),this.child=n||null,this.parent=t||null,this.action=e||null}setParent(e){if(e===this)throw new Error("Cannot set parent to itself");return this.parent&&this.parent.setChild(null),this.parent=e,this}setChild(e){if(e===this)throw new Error("Cannot set child to itself");return this.child&&(this.child.parent=null),this.child=e,e&&e.parent!==this&&(e.remove(),e.parent=this),this}getChild(){return this.child||null}getParent(){return this.parent||null}addChild(e){return this.setChild(e),this}removeChild(e){return e&&this.child===e?(this.child=null,e.setParent(null)):e||(this.child=null),this}remove(){return this.parent&&this.parent.removeChild(this),this.child&&this.child.setParent(null),this}hasChild(){return!!this.child}};var ji={center:"center",left:"left",right:"right"};import{animate as ca}from"motion/react";var Rn=(n=>(n.Left="left",n.Center="center",n.Right="right",n))(Rn||{}),aa={left:"33.33%",center:"50%",right:"66.66%"},gt=class gt{static isUnknown(e){return e===gt.Unknown}static D2PositionToCSS(e,t=!1,n=!1,i){let r=this.calc(e.y,e.yoffset,i?.height),s=this.calc(e.x,e.xoffset,i?.width),a=n?{bottom:r}:{top:r},c=t?{right:s}:{left:s};return this.wrap({...a,...c})}static calc(e,t,n){if(!e||gt.isUnknown(e))return"auto";let i=!(t===void 0||gt.isUnknown(t));if(typeof n=="number"&&n>0){let s=gt.toPercent(e,n);if(s!==null){let a=i?t/n*100:0;return`${Math.round((s+a)*1e6)/1e6}%`}}return i?`calc(${typeof e=="number"?`${e}px`:e} + ${t}px)`:`calc(${e} + 0px)`}static toPercent(e,t){if(typeof e=="number")return t>0?e/t*100:null;let n=/^(-?\d+(?:\.\d+)?)%$/.exec(e.trim());return n?parseFloat(n[1]):null}static toCoord2D(e){if(lt.isCommonPositionType(e))return yt.fromCommonPosition(e);if(yt.isCoord2DPosition(e))return e;if(Sn.isAlignPosition(e))return yt.fromAlignPosition(e);if(typeof e=="object"&&e!==null&&["x","y","xalign","yalign","xoffset","yoffset"].some(t=>t in e))return this.rawPositionToCoord2D(e);throw new Error("Invalid position type")}static orUnknown(e){return gt.isUnknown(e)||e===void 0?gt.Unknown:e}static mergePosition(e,t){let n=this.toCoord2D(e),i=this.toCoord2D(t);return yt.merge(n,i)}static serializePosition(e){let t=this.toCoord2D(e);return{x:gt.isUnknown(t.x)?0:t.x,y:gt.isUnknown(t.y)?0:t.y,xoffset:gt.isUnknown(t.xoffset)?0:t.xoffset,yoffset:gt.isUnknown(t.yoffset)?0:t.yoffset}}static isRawCommonPositionType(e){return Object.values(Rn).includes(e)}static isRawCoord2DPosition(e){return typeof e=="object"&&("x"in e||"y"in e||"xoffset"in e||"yoffset"in e)}static isRawAlignPosition(e){return typeof e=="object"&&e!==null&&("xalign"in e||"yalign"in e)}static isRawPosition(e){return this.isRawCommonPositionType(e)||this.isRawCoord2DPosition(e)||this.isRawAlignPosition(e)}static isPosition(e){return e instanceof lt||e instanceof yt||e instanceof Sn}static rawPositionToCoord2D(e){if(this.isRawCommonPositionType(e))return yt.fromCommonPosition(new lt(e));if(this.isRawAlignPosition(e))return yt.fromAlignPosition(e);if(this.isRawCoord2DPosition(e))return new yt(e);throw new Error("Invalid position type")}static tryParsePosition(e){if(this.isPosition(e))return e;if(this.isRawPosition(e))return this.rawPositionToCoord2D(e);throw new Error("Invalid position type")}static wrap(e){return{left:"auto",top:"auto",right:"auto",bottom:"auto",...e}}};gt.Unknown=Symbol("Unknown");var F=gt,qi=class qi{static isCommonPositionType(e){return e instanceof qi}constructor(e){this.position=e}toCSS(){return{x:aa[this.position],y:"50%",xoffset:0,yoffset:0}}};qi.Positions=Rn;var lt=qi,yt=class o{static isCoord2DPosition(e){return e instanceof o}static fromCommonPosition(e){return new o({x:aa[e.position],y:"50%"})}static fromAlignPosition(e){let t=n=>!n||F.isUnknown(n)?F.Unknown:`${n*100}%`;return new o({x:t(e.xalign),y:t(e.yalign),xoffset:e.xoffset,yoffset:e.yoffset})}static merge(e,t){return new o({x:F.isUnknown(t.x)?e.x:t.x,y:F.isUnknown(t.y)?e.y:t.y,xoffset:F.isUnknown(t.xoffset)?e.xoffset:t.xoffset,yoffset:F.isUnknown(t.yoffset)?e.yoffset:t.yoffset})}constructor(e,t){typeof e=="object"?(this.x=F.orUnknown(e.x),this.y=F.orUnknown(e.y),this.xoffset=F.orUnknown(e.xoffset),this.yoffset=F.orUnknown(e.yoffset)):(this.x=F.orUnknown(e),this.y=F.orUnknown(t),this.xoffset=F.Unknown,this.yoffset=F.Unknown),this.check()}check(){let e=t=>/^-?\d+(\.\d+)?%$/.test(t);if(typeof this.x=="string"&&!e(this.x))throw new Error(`Invalid x position: ${this.x}`);if(typeof this.y=="string"&&!e(this.y))throw new Error(`Invalid y position: ${this.y}`)}toCSS(){return{x:this.x,y:this.y,xoffset:this.xoffset,yoffset:this.yoffset}}},Sn=class o{static isAlignPosition(e){return e instanceof o}constructor(e,t){typeof e=="object"?(this.xalign=F.orUnknown(e.xalign),this.yalign=F.orUnknown(e.yalign),this.xoffset=F.orUnknown(e.xoffset),this.yoffset=F.orUnknown(e.yoffset)):(this.xalign=F.orUnknown(e),this.yalign=F.orUnknown(t),this.xoffset=F.Unknown,this.yoffset=F.Unknown),this.check()}check(){if(typeof this.xalign=="number"&&isNaN(this.xalign))throw new Error("Invalid xalign position: "+this.xalign);if(typeof this.yalign=="number"&&isNaN(this.yalign))throw new Error("Invalid yalign position: "+this.yalign)}toCSS(){return{x:F.isUnknown(this.xalign)?this.xalign:`${this.xalign*100}%`,y:F.isUnknown(this.yalign)?this.yalign:`${this.yalign*100}%`,xoffset:this.xoffset,yoffset:this.yoffset}}};var $=class o{constructor(e,t){this.defaultConfig=e;this.handlers=t||{}}create(e={}){return new lr(this.mergeWithDefaultConfig(e))}copy(){return new o(q({},this.defaultConfig),this.handlers)}keys(){return Object.keys(this.defaultConfig)}getDefaultConfig(){return this.defaultConfig}mergeWithDefaultConfig(e){return Object.fromEntries(Object.entries(this.defaultConfig).map(([t,n])=>[t,this.mergeValue(t,n,e[t])]))}mergeValue(e,t,n){return this.isPlainObject(n)?q({},n):Array.isArray(t)?Array.isArray(n)&&n.length>0?[...n]:[...t]:n!==void 0?this.applyHandler(e,n):t}isPlainObject(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null&&Object.getPrototypeOf(e)===Object.prototype}applyHandler(e,t){return typeof this.handlers[e]=="function"?this.handlers[e](t):t}},lr=class o{constructor(e){this.config=e}get(){return this.config}copy(){return new o(q({},this.config))}join(e){let t=ta(this.config,Object.keys(e));return new o(Object.assign(t,e instanceof o?e.get():e))}extract(e){let t={},n={};for(let i of e)t[i]=this.config[i];for(let i in this.config)e.includes(i)||(n[i]=this.config[i]);return[new o(t),new o(n)]}assign(e){return new o(Object.assign({},this.config,e))}};var Gl={[ji.left]:"25.33%",[ji.center]:"50%",[ji.right]:"75.66%"},Et=class Et{constructor(e={}){this.state={};this.locked=null;this.frozen=!1;this.state=e}static deserialize(e){return new Et(Et.TransformStateSerializer.deserialize(e))}static mergePosition(e,t){if(!e&&!t)throw new Error("No position found.");return!e||!t?F.toCoord2D(F.tryParsePosition(e||t)):F.mergePosition(F.tryParsePosition(e),F.tryParsePosition(t))}static mergeState(e,t){if("position"in e&&"position"in t){let n=this.mergePosition(e.position,t.position);return{...Object.assign({},e,t),position:n}}return{...Object.assign({},e,t)}}get(){return this.state}freeze(){return this.frozen=!0,this}assign(e,t){if(this.frozen)throw new Error("Trying to write a frozen transform state.");if(!this.canWrite(e))throw new Error("Trying to write a locked transform state.");return this.state=Et.mergeState(this.state,t),this}lock(){if(this.locked)throw new Error("Transform state is already locked.");return this.locked=Symbol(),this.locked}isLocked(){return!!this.locked}canWrite(e){return this.locked===null||this.locked===e}unlock(e){return this.locked===e&&(this.locked=null),this}toFramesDefinition(e,t){return Xn(Z.constructStyle(e,this.state,t))}toStyle(e,t){return Xn(Z.constructStyle(e,this.state,t))}serialize(){return Et.TransformStateSerializer.serialize(this.state)}clone(){return new Et(Et.mergeState({},this.state))}overwrite(e,t){if(this.frozen)throw new Error("Trying to write a frozen transform state.");if(!this.canWrite(e))throw new Error("Trying to write a locked transform state.");return this.state=Et.mergeState(this.state,t),this}forceOverwrite(e){return this.state=e,this}resetTo(e){return this.state=e,this.locked=null,this.frozen=!1,this}};Et.DefaultTransformState=new $({scaleX:1,scaleY:1,zoom:1,rotation:0,position:new lt("center"),opacity:0,alt:"",maskImage:void 0,maskSize:void 0,maskPosition:void 0,maskRepeat:void 0,maskMode:void 0,clipPath:void 0,filter:void 0,backdropFilter:void 0,mixBlendMode:void 0}),Et.TransformStateSerializer=new qe({position:e=>F.serializePosition(F.tryParsePosition(e))},{position:e=>F.toCoord2D(e)});var ne=Et,Le=class Le{constructor(e,t){this.sequences=[];this.stagedChanges=[];if(Array.isArray(e))this.sequences.push(...e),this.config=Object.assign({},Le.defaultConfig,t||{});else{let[n,i]=[e,t||Le.defaultOptions];this.sequences.push({props:n,options:i||Le.defaultOptions}),this.config=Object.assign({},Le.defaultConfig)}}static isPosition(e){return lt.isCommonPositionType(e)||yt.isCoord2DPosition(e)||Sn.isAlignPosition(e)}static immediate(e){return new Le(e,{duration:0,ease:"linear"})}static left(e,t){return new Le({position:lt.Positions.Left},{duration:e,ease:t})}static right(e,t){return new Le({position:lt.Positions.Right},{duration:e,ease:t})}static center(e,t){return new Le({position:lt.Positions.Center},{duration:e,ease:t})}static create(e){return new Le([],e)}static positionToCSS(e,t,n,i){return e?F.isRawPosition(e)?F.D2PositionToCSS(F.rawPositionToCoord2D(e),n,t,i):F.D2PositionToCSS(e.toCSS(),n,t,i):{}}static mergePosition(e,t){if(!e&&!t)throw new Error("No position found.");return!e||!t?F.toCoord2D(F.tryParsePosition(e||t)):F.mergePosition(F.tryParsePosition(e),F.tryParsePosition(t))}static mergeState(e,t){let n=this.mergePosition(e.position,t.position);return{...q(e,t),position:n}}static propToCSSTransform(e,t,n){let{invertY:i,invertX:r}=e.getStory().getInversionConfig(),{translate:s=[]}=n||{},a=t.zoom??1,c=function(p,h,g){return typeof p>"u"?typeof g<"u"?h(g):"":h(p)},l=s[0]||(r?"":"-")+"50%",u=s[1]||(i?"":"-")+"50%";return[`translate(${l}, ${u})`,c(t.rotation,p=>`rotate(${p}deg)`,0),c(t.scaleX,p=>`scaleX(${p*a})`,1),c(t.scaleY,p=>`scaleY(${p*a})`,1)].filter(Boolean).join(" ")}static constructStyle(e,t,n){let{invertY:i,invertX:r}=e.getStory().getInversionConfig(),{overwrite:s}=n||{},a=e.game?.config,c=a&&a.width>0&&a.height>0?{width:a.width,height:a.height}:void 0;return{...Le.positionToCSS(t.position,i,r,c),opacity:t.opacity,color:"fontColor"in t&&t.fontColor?Ln(t.fontColor):void 0,transform:Le.propToCSSTransform(e,t),...Le.constructVisualEffectStyle(t),...s?s(t):{}}}static constructVisualEffectStyle(e){let t=e;return{maskImage:t.maskImage,WebkitMaskImage:t.maskImage,maskSize:t.maskSize,WebkitMaskSize:t.maskSize,maskPosition:t.maskPosition,WebkitMaskPosition:t.maskPosition,maskRepeat:t.maskRepeat,WebkitMaskRepeat:t.maskRepeat,maskMode:t.maskMode,WebkitMaskMode:t.maskMode,clipPath:t.clipPath,filter:t.filter,backdropFilter:t.backdropFilter,WebkitBackdropFilter:t.backdropFilter,mixBlendMode:t.mixBlendMode}}animate(e,{gameState:t,ref:n,overwrites:i,companionRefs:r}){if(!n.current)throw new Error("No ref found when animating.");this.commit();let{finalState:s,sequences:a,options:c}=this.constructAnimation({gameState:t,transformState:e,overwrites:i,current:n.current,companions:r?.filter(m=>!!m.ref.current).map(({ref:m,project:y})=>({el:m.current,project:y}))});if(a.length||t.logger.warn("Transform","No sequences to animate."),c.repeat!==void 0&&!Number.isFinite(c.repeat))throw new J("A transform applied with `transform()` (or `show`, `hide`, `pos`, ...) has to end, but this one repeats forever.\nUse `element.loop(transform)` for a motion that runs until it is stopped - the line does not wait for it, and `element.stopLoop()` ends it.");let l=!1,u=e.lock(),d=ca(a,c),p=()=>{e.overwrite(u,s.get()).unlock(u),d.complete(),l=!0},h=new S().registerSkipController(new U(p)),g=()=>{l||e.overwrite(u,s.get()).unlock(u),l=!0,t.logger.debug("Transform","Transform Completed",e.toStyle(t,i)),h.resolve()};return d.then(g,(m=>{t.logger.error("Failed to animate transform. "+(m?.toString?.()||""));try{g()}catch{h.resolve()}})),d.play(),t.logger.debug("Transform","Ready to animate transform.",{finalState:s,sequences:a,options:c},this),h}startLoop(e,{gameState:t,ref:n,overwrites:i,companionRefs:r},s){if(!n.current)throw new Error("No ref found when looping.");this.commit();let{sequences:a,options:c}=this.constructAnimation({gameState:t,transformState:e,overwrites:i,current:n.current,companions:r?.filter(d=>!!d.ref.current).map(({ref:d,project:p})=>({el:d.current,project:p}))});a.length||t.logger.warn("Transform","No sequences to loop.");let l=[n.current,Xn(e.toFramesDefinition(t,i)),{duration:0}],u=ca([l,...a],{...c,repeat:1/0,repeatType:s?.repeatType??c.repeatType??"loop",repeatDelay:s?.repeatDelay!==void 0?this.toSeconds(s.repeatDelay,void 0):c.repeatDelay});return u.play(),t.logger.debug("Transform","Loop started.",{sequences:a,options:c},this),{stop:()=>{u.stop()}}}repeat(e){let t=this.copy();return t.config.repeat||(t.config.repeat=1),t.config.repeat*=e,t}getOptions(e){if(!e)return{...Le.defaultOptions};let{duration:t,ease:n,delay:i,at:r}=e;return{duration:this.toSeconds(t,void 0),ease:n,delay:this.toSeconds(i,void 0),at:this.atToSeconds(r)}}constructAnimation({gameState:e,transformState:t,overwrites:n={},current:i,companions:r}){let s=t.clone(),a=s.lock(),c=this.sequences.flatMap(({props:l,options:u})=>{let d=s.assign(a,l),p=d.toFramesDefinition(e,n),h=this.getOptions(u),g=[i,p,h];if(!r||!r.length)return[g];let m=d.get();return[g,...r.map(({el:y,project:b})=>[y,Xn(b(m)),{...h,at:"<"}])]});return{finalState:s.unlock(a).freeze(),sequences:c,options:this.getSequenceOptions()}}getSequenceOptions(){let{repeat:e,repeatDelay:t,repeatType:n}=this.config;return{repeat:e,repeatDelay:this.toSeconds(t,void 0),repeatType:n}}copy(){return new Le(this.sequences,this.config)}commit(e){if(!this.stagedChanges.length)return this;let t=this.constructCommit(this.stagedChanges,this.getSequenceOptions());return this.sequences.push({props:t.props,options:{...this.getSequenceOptions(),...e}}),this.stagedChanges=[],this}zoom(e){return this.pushChange({key:"zoom",props:e})}scaleX(e){return this.pushChange({key:"scaleX",props:e})}scaleY(e){return this.pushChange({key:"scaleY",props:e})}scale(e,t){return this.pushChange({key:"scaleX",props:e}).pushChange({key:"scaleY",props:t})}rotation(e){return this.pushChange({key:"rotation",props:e})}position(e){return this.pushChange({key:"position",props:e})}opacity(e){return this.pushChange({key:"opacity",props:e})}fontColor(e){return this.pushChange({key:"fontColor",props:e})}effect(e){for(let t of Object.keys(e))this.pushChange({key:t,props:e[t]});return this}lens(e){for(let t of Object.keys(e))this.pushChange({key:t,props:e[t]});return this}maskImage(e){return this.pushChange({key:"maskImage",props:e})}clipPath(e){return this.pushChange({key:"clipPath",props:e})}filter(e){return this.pushChange({key:"filter",props:e})}backdropFilter(e){return this.pushChange({key:"backdropFilter",props:e})}mixBlendMode(e){return this.pushChange({key:"mixBlendMode",props:e})}constructCommit(e,t){let n={props:{},options:t};for(let i of e)n.props[i.key]=i.props;return n}pushChange(e){return this.stagedChanges.push(e),this}toSeconds(e,t){return typeof e>"u"?t:e/1e3}atToSeconds(e){if(typeof e>"u")return e;if(typeof e=="number")return e/1e3;let n=/^([+-])(\d+)$/.exec(e);if(!n)throw new J("Invalid at definition. At definition must be a number or a string in the format of `+n` or `-n`.");let[i,r,s]=n,a=Number(s);if(isNaN(a))throw new J("Invalid number in at definition.");let c=a/1e3;return r==="+"?`+${c}`:`-${c}`}};Le.defaultConfig={sync:!0},Le.defaultOptions={duration:0,ease:"linear"},Le.CommonImagePositionMap=Gl;var Z=Le;var Yi=class{constructor(){this.id="";this._staticId=null;this._dirty=!1}setId(e){this.id=e}getId(){return this.id}getStaticId(){return this._staticId}setStaticId(e){return this._staticId=e,this}resolveId(e){return this.setId(this._staticId||e),this}markDirty(){return this._dirty=!0,this}isDirty(){return this._dirty}reset(){this._dirty=!1}fromData(e){return this}construct(e){for(let t=0;t<e.length;t++){let n=e[t];t!==0&&e[t-1]?.contentNode.setChild(n.contentNode)}return e}};var la=Symbol("_Chained"),ua;ua=la;var ur=class ur{constructor(e){this[ua]=!0;this.__actions=[];this.__self=e}static isChained(e){return e&&e[la]}static toActions(e){return e.flat(2).map(t=>ur.isChained(t)?t.fromChained(t):t).flat(3)}push(...e){this.__actions.push(...e)}getActions(){return this.__actions}getSelf(){return this.__self}newChain(){return this.getSelf().chain()}},Be=ur,In=class extends Yi{chain(e){let t=Be.isChained(this)?this:this.proxy(this,new Be(this));if(!e)return t;let n=Array.isArray(e)?e:[e];return t.push(...n),t}proxy(e,t){let n=new Proxy(e,{get:function(i,r){if(r in t)return t[r];let s=i[r];return typeof s=="function"?s.bind(n):s},set:function(i,r,s){return i[r]=s,!0}});return n}combineActions(e,t){let n=t(this.chain().newChain()),i=e.do([n]).getActions()[0];return this.chain(i)}};var le=class extends In{constructor(){super()}toData(){return null}fromChained(e){return e.getActions()}};var Ot=class extends X{executeAction(e,t){let n=this.callee.evaluate(this.contentNode.getContent(),{gameState:e});return n?.length?[{type:this.type,node:this.contentNode.getChild()},{type:this.type,node:n[0].contentNode}]:super.executeAction(e,t)}getFutureActions(e,t){return[...this.callee._getFutureActions(),...super.getFutureActions(e,t)]}stringify(e,t,n){let i=this.contentNode.getContent(),r=s=>{let a=s.condition?n?s.condition.toString():"Lambda(unknown)":"null",c=s.action?s.action.map(l=>l.stringify(e,t,n)).join(";"):"null";return`(${a}) {${c}}`};return super.stringifyWithContent("Condition",`if ${r(i.If)} ${i.ElseIf.length>0?`else if ${i.ElseIf.map(r).join(";")} `:""}${i.Else?`else {${r(i.Else)}}`:""}`)}};Ot.ActionTypes=qs;var _n=64;function da(o){return typeof o=="object"&&o!==null&&Object.getPrototypeOf(o)===Object.prototype}function pr(o){return o.length?o.map(e=>typeof e=="number"?`[${e}]`:`.${e}`).join(""):"the value itself"}function Xi(o,e=0,t=new Set){if(e>_n)return!1;if(typeof o=="number"||typeof o=="string"||typeof o=="boolean"||o==null||o instanceof Date)return!0;if(typeof o!="object"||t.has(o))return!1;t.add(o);try{return Array.isArray(o)?o.every(n=>Xi(n,e+1,t)):da(o)?Object.values(o).every(n=>Xi(n,e+1,t)):!1}finally{t.delete(o)}}function ma(o,e){let t=[],n=[];return{data:dr(o,[],0,new Set,t,n,e),dates:t,undefineds:n}}function dr(o,e,t,n,i,r,s){if(t>_n)throw new E(`A stored value nests deeper than ${_n} levels and cannot be saved
|
|
7
|
+
A returnable jump suspends the scene it is taken from, and a scene has one place on the stage, so two calls cannot be open from the same scene at the same time. Take the calls one after the other in a single branch rather than one per branch of a concurrent group.`,this)}getSceneName(e){return typeof e=="string"?e:e.config.name}stringify(e,t,n){if(this.type===z.callTo){if(t.has(this))return super.stringifyWithContent("Scene","[[recursive]]");t.add(this);let[i]=this.contentNode.getContent();return super.stringifyWithContent("Scene",`callTo {${i.stringify(e,t,n)}}`)}if(this.type===z.jumpTo){if(t.has(this))return super.stringifyWithContent("Scene","[[recursive]]");t.add(this);let[i]=this.contentNode.getContent();return super.stringifyWithContent("Scene",`jumpTo {${i.stringify(e,t,n)}}`)}return super.stringifyWithName("SceneAction")}};ye.ActionTypes=z;var ee=ye;var cr=class{constructor(e){this.type=e,this.content=void 0}setContent(e){return this.content=e,this}getContent(){return this.content}},C=class o extends cr{static create(e){return new o().setContent(e)}static forEachParent(e,t){let n=new Set,i=e;for(;i&&!n.has(i);)n.add(i),t(i),i=i.getParent()}static forEachChild(e,t){let n=new Set,i=e;for(;i&&!n.has(i);)n.add(i),t(i),i=i.getChild()}constructor(e,t,n){super("ContentNode"),this.child=n||null,this.parent=t||null,this.action=e||null}setParent(e){if(e===this)throw new Error("Cannot set parent to itself");return this.parent&&this.parent.setChild(null),this.parent=e,this}setChild(e){if(e===this)throw new Error("Cannot set child to itself");return this.child&&(this.child.parent=null),this.child=e,e&&e.parent!==this&&(e.remove(),e.parent=this),this}getChild(){return this.child||null}getParent(){return this.parent||null}addChild(e){return this.setChild(e),this}removeChild(e){return e&&this.child===e?(this.child=null,e.setParent(null)):e||(this.child=null),this}remove(){return this.parent&&this.parent.removeChild(this),this.child&&this.child.setParent(null),this}hasChild(){return!!this.child}};var ji={center:"center",left:"left",right:"right"};import{animate as ca}from"motion/react";var Rn=(n=>(n.Left="left",n.Center="center",n.Right="right",n))(Rn||{}),aa={left:"33.33%",center:"50%",right:"66.66%"},gt=class gt{static isUnknown(e){return e===gt.Unknown}static D2PositionToCSS(e,t=!1,n=!1,i){let r=this.calc(e.y,e.yoffset,i?.height),s=this.calc(e.x,e.xoffset,i?.width),a=n?{bottom:r}:{top:r},c=t?{right:s}:{left:s};return this.wrap({...a,...c})}static calc(e,t,n){if(e==null||e===""||gt.isUnknown(e))return"auto";let i=!(t===void 0||gt.isUnknown(t));if(typeof n=="number"&&n>0){let s=gt.toPercent(e,n);if(s!==null){let a=i?t/n*100:0;return`${Math.round((s+a)*1e6)/1e6}%`}}let r=typeof e=="number"?`${e}px`:e;return i?`calc(${r} + ${t}px)`:`calc(${r} + 0px)`}static toPercent(e,t){if(typeof e=="number")return t>0?e/t*100:null;let n=/^(-?\d+(?:\.\d+)?)%$/.exec(e.trim());return n?parseFloat(n[1]):null}static toCoord2D(e){if(lt.isCommonPositionType(e))return yt.fromCommonPosition(e);if(yt.isCoord2DPosition(e))return e;if(Sn.isAlignPosition(e))return yt.fromAlignPosition(e);if(typeof e=="object"&&e!==null&&["x","y","xalign","yalign","xoffset","yoffset"].some(t=>t in e))return this.rawPositionToCoord2D(e);throw new Error("Invalid position type")}static orUnknown(e){return gt.isUnknown(e)||e===void 0?gt.Unknown:e}static mergePosition(e,t){let n=this.toCoord2D(e),i=this.toCoord2D(t);return yt.merge(n,i)}static serializePosition(e){let t=this.toCoord2D(e);return{x:gt.isUnknown(t.x)?0:t.x,y:gt.isUnknown(t.y)?0:t.y,xoffset:gt.isUnknown(t.xoffset)?0:t.xoffset,yoffset:gt.isUnknown(t.yoffset)?0:t.yoffset}}static isRawCommonPositionType(e){return Object.values(Rn).includes(e)}static isRawCoord2DPosition(e){return typeof e=="object"&&("x"in e||"y"in e||"xoffset"in e||"yoffset"in e)}static isRawAlignPosition(e){return typeof e=="object"&&e!==null&&("xalign"in e||"yalign"in e)}static isRawPosition(e){return this.isRawCommonPositionType(e)||this.isRawCoord2DPosition(e)||this.isRawAlignPosition(e)}static isPosition(e){return e instanceof lt||e instanceof yt||e instanceof Sn}static rawPositionToCoord2D(e){if(this.isRawCommonPositionType(e))return yt.fromCommonPosition(new lt(e));if(this.isRawAlignPosition(e))return yt.fromAlignPosition(e);if(this.isRawCoord2DPosition(e))return new yt(e);throw new Error("Invalid position type")}static tryParsePosition(e){if(this.isPosition(e))return e;if(this.isRawPosition(e))return this.rawPositionToCoord2D(e);throw new Error("Invalid position type")}static wrap(e){return{left:"auto",top:"auto",right:"auto",bottom:"auto",...e}}};gt.Unknown=Symbol("Unknown");var F=gt,qi=class qi{static isCommonPositionType(e){return e instanceof qi}constructor(e){this.position=e}toCSS(){return{x:aa[this.position],y:"50%",xoffset:0,yoffset:0}}};qi.Positions=Rn;var lt=qi,yt=class o{static isCoord2DPosition(e){return e instanceof o}static fromCommonPosition(e){return new o({x:aa[e.position],y:"50%"})}static fromAlignPosition(e){let t=n=>typeof n!="number"||!Number.isFinite(n)?F.Unknown:`${n*100}%`;return new o({x:t(e.xalign),y:t(e.yalign),xoffset:e.xoffset,yoffset:e.yoffset})}static merge(e,t){return new o({x:F.isUnknown(t.x)?e.x:t.x,y:F.isUnknown(t.y)?e.y:t.y,xoffset:F.isUnknown(t.xoffset)?e.xoffset:t.xoffset,yoffset:F.isUnknown(t.yoffset)?e.yoffset:t.yoffset})}constructor(e,t){typeof e=="object"?(this.x=F.orUnknown(e.x),this.y=F.orUnknown(e.y),this.xoffset=F.orUnknown(e.xoffset),this.yoffset=F.orUnknown(e.yoffset)):(this.x=F.orUnknown(e),this.y=F.orUnknown(t),this.xoffset=F.Unknown,this.yoffset=F.Unknown),this.check()}check(){let e=t=>/^-?\d+(\.\d+)?%$/.test(t);if(typeof this.x=="string"&&!e(this.x))throw new Error(`Invalid x position: ${this.x}`);if(typeof this.y=="string"&&!e(this.y))throw new Error(`Invalid y position: ${this.y}`)}toCSS(){return{x:this.x,y:this.y,xoffset:this.xoffset,yoffset:this.yoffset}}},Sn=class o{static isAlignPosition(e){return e instanceof o}constructor(e,t){typeof e=="object"?(this.xalign=F.orUnknown(e.xalign),this.yalign=F.orUnknown(e.yalign),this.xoffset=F.orUnknown(e.xoffset),this.yoffset=F.orUnknown(e.yoffset)):(this.xalign=F.orUnknown(e),this.yalign=F.orUnknown(t),this.xoffset=F.Unknown,this.yoffset=F.Unknown),this.check()}check(){if(typeof this.xalign=="number"&&isNaN(this.xalign))throw new Error("Invalid xalign position: "+this.xalign);if(typeof this.yalign=="number"&&isNaN(this.yalign))throw new Error("Invalid yalign position: "+this.yalign)}toCSS(){return{x:F.isUnknown(this.xalign)?this.xalign:`${this.xalign*100}%`,y:F.isUnknown(this.yalign)?this.yalign:`${this.yalign*100}%`,xoffset:this.xoffset,yoffset:this.yoffset}}};var $=class o{constructor(e,t){this.defaultConfig=e;this.handlers=t||{}}create(e={}){return new lr(this.mergeWithDefaultConfig(e))}copy(){return new o(q({},this.defaultConfig),this.handlers)}keys(){return Object.keys(this.defaultConfig)}getDefaultConfig(){return this.defaultConfig}mergeWithDefaultConfig(e){return Object.fromEntries(Object.entries(this.defaultConfig).map(([t,n])=>[t,this.mergeValue(t,n,e[t])]))}mergeValue(e,t,n){return this.isPlainObject(n)?q({},n):Array.isArray(t)?Array.isArray(n)&&n.length>0?[...n]:[...t]:n!==void 0?this.applyHandler(e,n):t}isPlainObject(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null&&Object.getPrototypeOf(e)===Object.prototype}applyHandler(e,t){return typeof this.handlers[e]=="function"?this.handlers[e](t):t}},lr=class o{constructor(e){this.config=e}get(){return this.config}copy(){return new o(q({},this.config))}join(e){let t=ta(this.config,Object.keys(e));return new o(Object.assign(t,e instanceof o?e.get():e))}extract(e){let t={},n={};for(let i of e)t[i]=this.config[i];for(let i in this.config)e.includes(i)||(n[i]=this.config[i]);return[new o(t),new o(n)]}assign(e){return new o(Object.assign({},this.config,e))}};var Gl={[ji.left]:"25.33%",[ji.center]:"50%",[ji.right]:"75.66%"},Et=class Et{constructor(e={}){this.state={};this.locked=null;this.frozen=!1;this.state=e}static deserialize(e){return new Et(Et.TransformStateSerializer.deserialize(e))}static mergePosition(e,t){if(!e&&!t)throw new Error("No position found.");return!e||!t?F.toCoord2D(F.tryParsePosition(e||t)):F.mergePosition(F.tryParsePosition(e),F.tryParsePosition(t))}static mergeState(e,t){if("position"in e&&"position"in t){let n=this.mergePosition(e.position,t.position);return{...Object.assign({},e,t),position:n}}return{...Object.assign({},e,t)}}get(){return this.state}freeze(){return this.frozen=!0,this}assign(e,t){if(this.frozen)throw new Error("Trying to write a frozen transform state.");if(!this.canWrite(e))throw new Error("Trying to write a locked transform state.");return this.state=Et.mergeState(this.state,t),this}lock(){if(this.locked)throw new Error("Transform state is already locked.");return this.locked=Symbol(),this.locked}isLocked(){return!!this.locked}canWrite(e){return this.locked===null||this.locked===e}unlock(e){return this.locked===e&&(this.locked=null),this}toFramesDefinition(e,t){return Xn(Z.constructStyle(e,this.state,t))}toStyle(e,t){return Xn(Z.constructStyle(e,this.state,t))}serialize(){return Et.TransformStateSerializer.serialize(this.state)}clone(){return new Et(Et.mergeState({},this.state))}overwrite(e,t){if(this.frozen)throw new Error("Trying to write a frozen transform state.");if(!this.canWrite(e))throw new Error("Trying to write a locked transform state.");return this.state=Et.mergeState(this.state,t),this}forceOverwrite(e){return this.state=e,this}resetTo(e){return this.state=e,this.locked=null,this.frozen=!1,this}};Et.DefaultTransformState=new $({scaleX:1,scaleY:1,zoom:1,rotation:0,position:new lt("center"),opacity:0,alt:"",maskImage:void 0,maskSize:void 0,maskPosition:void 0,maskRepeat:void 0,maskMode:void 0,clipPath:void 0,filter:void 0,backdropFilter:void 0,mixBlendMode:void 0}),Et.TransformStateSerializer=new qe({position:e=>F.serializePosition(F.tryParsePosition(e))},{position:e=>F.toCoord2D(e)});var ne=Et,Le=class Le{constructor(e,t){this.sequences=[];this.stagedChanges=[];if(Array.isArray(e))this.sequences.push(...e),this.config=Object.assign({},Le.defaultConfig,t||{});else{let[n,i]=[e,t||Le.defaultOptions];this.sequences.push({props:n,options:i||Le.defaultOptions}),this.config=Object.assign({},Le.defaultConfig)}}static isPosition(e){return lt.isCommonPositionType(e)||yt.isCoord2DPosition(e)||Sn.isAlignPosition(e)}static immediate(e){return new Le(e,{duration:0,ease:"linear"})}static left(e,t){return new Le({position:lt.Positions.Left},{duration:e,ease:t})}static right(e,t){return new Le({position:lt.Positions.Right},{duration:e,ease:t})}static center(e,t){return new Le({position:lt.Positions.Center},{duration:e,ease:t})}static create(e){return new Le([],e)}static positionToCSS(e,t,n,i){return e?F.isRawPosition(e)?F.D2PositionToCSS(F.rawPositionToCoord2D(e),n,t,i):F.D2PositionToCSS(e.toCSS(),n,t,i):{}}static mergePosition(e,t){if(!e&&!t)throw new Error("No position found.");return!e||!t?F.toCoord2D(F.tryParsePosition(e||t)):F.mergePosition(F.tryParsePosition(e),F.tryParsePosition(t))}static mergeState(e,t){let n=this.mergePosition(e.position,t.position);return{...q(e,t),position:n}}static propToCSSTransform(e,t,n){let{invertY:i,invertX:r}=e.getStory().getInversionConfig(),{translate:s=[]}=n||{},a=t.zoom??1,c=function(p,h,g){return typeof p>"u"?typeof g<"u"?h(g):"":h(p)},l=s[0]||(r?"":"-")+"50%",u=s[1]||(i?"":"-")+"50%";return[`translate(${l}, ${u})`,c(t.rotation,p=>`rotate(${p}deg)`,0),c(t.scaleX,p=>`scaleX(${p*a})`,1),c(t.scaleY,p=>`scaleY(${p*a})`,1)].filter(Boolean).join(" ")}static constructStyle(e,t,n){let{invertY:i,invertX:r}=e.getStory().getInversionConfig(),{overwrite:s}=n||{},a=e.game?.config,c=a&&a.width>0&&a.height>0?{width:a.width,height:a.height}:void 0;return{...Le.positionToCSS(t.position,i,r,c),opacity:t.opacity,color:"fontColor"in t&&t.fontColor?Ln(t.fontColor):void 0,transform:Le.propToCSSTransform(e,t),...Le.constructVisualEffectStyle(t),...s?s(t):{}}}static constructVisualEffectStyle(e){let t=e;return{maskImage:t.maskImage,WebkitMaskImage:t.maskImage,maskSize:t.maskSize,WebkitMaskSize:t.maskSize,maskPosition:t.maskPosition,WebkitMaskPosition:t.maskPosition,maskRepeat:t.maskRepeat,WebkitMaskRepeat:t.maskRepeat,maskMode:t.maskMode,WebkitMaskMode:t.maskMode,clipPath:t.clipPath,filter:t.filter,backdropFilter:t.backdropFilter,WebkitBackdropFilter:t.backdropFilter,mixBlendMode:t.mixBlendMode}}animate(e,{gameState:t,ref:n,overwrites:i,companionRefs:r}){if(!n.current)throw new Error("No ref found when animating.");this.commit();let{finalState:s,sequences:a,options:c}=this.constructAnimation({gameState:t,transformState:e,overwrites:i,current:n.current,companions:r?.filter(m=>!!m.ref.current).map(({ref:m,project:y})=>({el:m.current,project:y}))});if(a.length||t.logger.warn("Transform","No sequences to animate."),c.repeat!==void 0&&!Number.isFinite(c.repeat))throw new J("A transform applied with `transform()` (or `show`, `hide`, `pos`, ...) has to end, but this one repeats forever.\nUse `element.loop(transform)` for a motion that runs until it is stopped - the line does not wait for it, and `element.stopLoop()` ends it.");let l=!1,u=e.lock(),d=ca(a,c),p=()=>{e.overwrite(u,s.get()).unlock(u),d.complete(),l=!0},h=new S().registerSkipController(new U(p)),g=()=>{l||e.overwrite(u,s.get()).unlock(u),l=!0,t.logger.debug("Transform","Transform Completed",e.toStyle(t,i)),h.resolve()};return d.then(g,(m=>{t.logger.error("Failed to animate transform. "+(m?.toString?.()||""));try{g()}catch{h.resolve()}})),d.play(),t.logger.debug("Transform","Ready to animate transform.",{finalState:s,sequences:a,options:c},this),h}startLoop(e,{gameState:t,ref:n,overwrites:i,companionRefs:r},s){if(!n.current)throw new Error("No ref found when looping.");this.commit();let{sequences:a,options:c}=this.constructAnimation({gameState:t,transformState:e,overwrites:i,current:n.current,companions:r?.filter(d=>!!d.ref.current).map(({ref:d,project:p})=>({el:d.current,project:p}))});a.length||t.logger.warn("Transform","No sequences to loop.");let l=[n.current,Xn(e.toFramesDefinition(t,i)),{duration:0}],u=ca([l,...a],{...c,repeat:1/0,repeatType:s?.repeatType??c.repeatType??"loop",repeatDelay:s?.repeatDelay!==void 0?this.toSeconds(s.repeatDelay,void 0):c.repeatDelay});return u.play(),t.logger.debug("Transform","Loop started.",{sequences:a,options:c},this),{stop:()=>{u.stop()}}}repeat(e){let t=this.copy();return t.config.repeat||(t.config.repeat=1),t.config.repeat*=e,t}getOptions(e){if(!e)return{...Le.defaultOptions};let{duration:t,ease:n,delay:i,at:r}=e;return{duration:this.toSeconds(t,void 0),ease:n,delay:this.toSeconds(i,void 0),at:this.atToSeconds(r)}}constructAnimation({gameState:e,transformState:t,overwrites:n={},current:i,companions:r}){let s=t.clone(),a=s.lock(),c=this.sequences.flatMap(({props:l,options:u})=>{let d=s.assign(a,l),p=d.toFramesDefinition(e,n),h=this.getOptions(u),g=[i,p,h];if(!r||!r.length)return[g];let m=d.get();return[g,...r.map(({el:y,project:b})=>[y,Xn(b(m)),{...h,at:"<"}])]});return{finalState:s.unlock(a).freeze(),sequences:c,options:this.getSequenceOptions()}}getSequenceOptions(){let{repeat:e,repeatDelay:t,repeatType:n}=this.config;return{repeat:e,repeatDelay:this.toSeconds(t,void 0),repeatType:n}}copy(){return new Le(this.sequences,this.config)}commit(e){if(!this.stagedChanges.length)return this;let t=this.constructCommit(this.stagedChanges,this.getSequenceOptions());return this.sequences.push({props:t.props,options:{...this.getSequenceOptions(),...e}}),this.stagedChanges=[],this}zoom(e){return this.pushChange({key:"zoom",props:e})}scaleX(e){return this.pushChange({key:"scaleX",props:e})}scaleY(e){return this.pushChange({key:"scaleY",props:e})}scale(e,t){return this.pushChange({key:"scaleX",props:e}).pushChange({key:"scaleY",props:t})}rotation(e){return this.pushChange({key:"rotation",props:e})}position(e){return this.pushChange({key:"position",props:e})}opacity(e){return this.pushChange({key:"opacity",props:e})}fontColor(e){return this.pushChange({key:"fontColor",props:e})}effect(e){for(let t of Object.keys(e))this.pushChange({key:t,props:e[t]});return this}lens(e){for(let t of Object.keys(e))this.pushChange({key:t,props:e[t]});return this}maskImage(e){return this.pushChange({key:"maskImage",props:e})}clipPath(e){return this.pushChange({key:"clipPath",props:e})}filter(e){return this.pushChange({key:"filter",props:e})}backdropFilter(e){return this.pushChange({key:"backdropFilter",props:e})}mixBlendMode(e){return this.pushChange({key:"mixBlendMode",props:e})}constructCommit(e,t){let n={props:{},options:t};for(let i of e)n.props[i.key]=i.props;return n}pushChange(e){return this.stagedChanges.push(e),this}toSeconds(e,t){return typeof e>"u"?t:e/1e3}atToSeconds(e){if(typeof e>"u")return e;if(typeof e=="number")return e/1e3;let n=/^([+-])(\d+)$/.exec(e);if(!n)throw new J("Invalid at definition. At definition must be a number or a string in the format of `+n` or `-n`.");let[i,r,s]=n,a=Number(s);if(isNaN(a))throw new J("Invalid number in at definition.");let c=a/1e3;return r==="+"?`+${c}`:`-${c}`}};Le.defaultConfig={sync:!0},Le.defaultOptions={duration:0,ease:"linear"},Le.CommonImagePositionMap=Gl;var Z=Le;var Yi=class{constructor(){this.id="";this._staticId=null;this._dirty=!1}setId(e){this.id=e}getId(){return this.id}getStaticId(){return this._staticId}setStaticId(e){return this._staticId=e,this}resolveId(e){return this.setId(this._staticId||e),this}markDirty(){return this._dirty=!0,this}isDirty(){return this._dirty}reset(){this._dirty=!1}fromData(e){return this}construct(e){for(let t=0;t<e.length;t++){let n=e[t];t!==0&&e[t-1]?.contentNode.setChild(n.contentNode)}return e}};var la=Symbol("_Chained"),ua;ua=la;var ur=class ur{constructor(e){this[ua]=!0;this.__actions=[];this.__self=e}static isChained(e){return e&&e[la]}static toActions(e){return e.flat(2).map(t=>ur.isChained(t)?t.fromChained(t):t).flat(3)}push(...e){this.__actions.push(...e)}getActions(){return this.__actions}getSelf(){return this.__self}newChain(){return this.getSelf().chain()}},Be=ur,In=class extends Yi{chain(e){let t=Be.isChained(this)?this:this.proxy(this,new Be(this));if(!e)return t;let n=Array.isArray(e)?e:[e];return t.push(...n),t}proxy(e,t){let n=new Proxy(e,{get:function(i,r){if(r in t)return t[r];let s=i[r];return typeof s=="function"?s.bind(n):s},set:function(i,r,s){return i[r]=s,!0}});return n}combineActions(e,t){let n=t(this.chain().newChain()),i=e.do([n]).getActions()[0];return this.chain(i)}};var le=class extends In{constructor(){super()}toData(){return null}fromChained(e){return e.getActions()}};var Ot=class extends X{executeAction(e,t){let n=this.callee.evaluate(this.contentNode.getContent(),{gameState:e});return n?.length?[{type:this.type,node:this.contentNode.getChild()},{type:this.type,node:n[0].contentNode}]:super.executeAction(e,t)}getFutureActions(e,t){return[...this.callee._getFutureActions(),...super.getFutureActions(e,t)]}stringify(e,t,n){let i=this.contentNode.getContent(),r=s=>{let a=s.condition?n?s.condition.toString():"Lambda(unknown)":"null",c=s.action?s.action.map(l=>l.stringify(e,t,n)).join(";"):"null";return`(${a}) {${c}}`};return super.stringifyWithContent("Condition",`if ${r(i.If)} ${i.ElseIf.length>0?`else if ${i.ElseIf.map(r).join(";")} `:""}${i.Else?`else {${r(i.Else)}}`:""}`)}};Ot.ActionTypes=qs;var _n=64;function da(o){return typeof o=="object"&&o!==null&&Object.getPrototypeOf(o)===Object.prototype}function pr(o){return o.length?o.map(e=>typeof e=="number"?`[${e}]`:`.${e}`).join(""):"the value itself"}function Xi(o,e=0,t=new Set){if(e>_n)return!1;if(typeof o=="number"||typeof o=="string"||typeof o=="boolean"||o==null||o instanceof Date)return!0;if(typeof o!="object"||t.has(o))return!1;t.add(o);try{return Array.isArray(o)?o.every(n=>Xi(n,e+1,t)):da(o)?Object.values(o).every(n=>Xi(n,e+1,t)):!1}finally{t.delete(o)}}function ma(o,e){let t=[],n=[];return{data:dr(o,[],0,new Set,t,n,e),dates:t,undefineds:n}}function dr(o,e,t,n,i,r,s){if(t>_n)throw new E(`A stored value nests deeper than ${_n} levels and cannot be saved
|
|
8
8
|
at ${s}, ${pr(e)}
|
|
9
9
|
A saved game this deep is almost always a data-structure bug. Flatten the value,
|
|
10
10
|
or keep the deep part outside the store and save an id for it.`);if(o===void 0)return r.push([...e]),null;if(o===null)return null;if(o instanceof Date)return i.push([...e]),o.toISOString();if(typeof o=="number"||typeof o=="string"||typeof o=="boolean")return o;if(typeof o=="object"){if(n.has(o))throw new E(`A stored value refers back to itself and cannot be saved
|