@m2c2kit/addons 0.3.29 → 0.3.31

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.
package/dist/index.min.js CHANGED
@@ -1 +1 @@
1
- import{M2c2KitHelpers as f,Composite as E,WebColors as l,M2Error as h,Shape as g,EventStoreMode as $,Equal as m,Label as S,CanvasKitHelpers as ht,M2EventType as p,Timer as B,MutablePath as lt,Easings as q,Story as dt,Transition as V,TransitionDirection as H,LabelHorizontalAlignmentMode as ct,Scene as J,Dimensions as ut,Sprite as O,Action as k}from"@m2c2kit/core";class A extends E{constructor(t){if(super(t),this.compositeType="Grid",this._rows=0,this._columns=0,this._gridBackgroundColor=[0,0,255,.25],this._gridLineColor=l.Red,this._gridLineWidth=1,this._gridChildren=new Array,this.cellContainers=new Array,t.size)this.size=t.size;else throw new h("grid size must be specified");if(t.rows)if(t.rows>=1)this.rows=t.rows;else throw new h("grid rows must be at least 1");else throw new h("grid rows must be specified");if(t.columns)if(t.columns>=1)this.columns=t.columns;else throw new h("grid columns must be at least 1");else throw new h("grid columns must be specified");t.backgroundColor&&(this.gridBackgroundColor=t.backgroundColor),t.gridLineColor&&(this.gridLineColor=t.gridLineColor),t.gridLineWidth&&(this.gridLineWidth=t.gridLineWidth),this.cellWidth=this.size.width/this.columns,this.cellHeight=this.size.height/this.rows,this.saveNodeNewEvent()}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),rows:this.rows,columns:this.columns,size:this.size,backgroundColor:this.gridBackgroundColor,gridLineWidth:this.gridLineWidth,gridLineColor:this.gridLineColor}}initialize(){this.descendants.forEach(t=>{t.parent===this?super.removeChild(t):t.parent?.removeChild(t)}),this.gridBackground=new g({name:"__"+this.name+"-gridRectangle",rect:{size:this.size},fillColor:this.gridBackgroundColor,strokeColor:this.gridLineColor,lineWidth:this.gridLineWidth,isUserInteractionEnabled:this.isUserInteractionEnabled,suppressEvents:!0}),super.addChild(this.gridBackground),this.gridBackground.isUserInteractionEnabled=this.isUserInteractionEnabled;for(let t=1;t<this.columns;t++){const e=new g({name:"__"+this.name+"-gridVerticalLine-"+(t-1),rect:{size:{width:this.gridLineWidth,height:this.size.height},origin:{x:-this.size.width/2+this.cellWidth*t,y:0}},fillColor:this.gridLineColor,suppressEvents:!0});this.gridBackground.addChild(e)}for(let t=1;t<this.rows;t++){const e=new g({name:"__"+this.name+"-gridHorizontalLine-"+(t-1),rect:{size:{width:this.size.width,height:this.gridLineWidth},origin:{x:0,y:-this.size.height/2+this.cellHeight*t}},fillColor:this.gridLineColor,suppressEvents:!0});this.gridBackground.addChild(e)}this.cellContainers=new Array(this.rows).fill([]).map(()=>new Array(this.columns));for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++){const i=new g({name:"__"+this.name+"-gridCellContainer-"+t+"-"+e,rect:{size:{width:this.cellWidth,height:this.cellHeight},origin:{x:-this.size.width/2+this.cellWidth*e+this.cellWidth/2,y:-this.size.height/2+this.cellHeight*t+this.cellHeight/2}},fillColor:l.Transparent,lineWidth:0,suppressEvents:!0});this.gridBackground.addChild(i),this.cellContainers[t][e]=i}this.gridChildren.length>0&&this.gridChildren.forEach(t=>{if(!this.cellWidth||!this.cellHeight||!this.gridBackground)throw new h("cellWidth, cellHeight, or gridBackground undefined or null");if(this.game.eventStore.mode===$.Replay){const e=[...this.game.nodes,...this.game.materializedNodes].find(i=>i.uuid===t.node);if(!e)throw new h("grid: child node not found");e?.parent?.removeChild(e),this.cellContainers[t.row][t.column].addChild(e)}else t.node.parent?.removeChild(t.node),this.cellContainers[t.row][t.column].addChild(t.node)}),this.needsInitialization=!1}get gridBackground(){if(!this._gridBackground)throw new h("gridBackground is null or undefined");return this._gridBackground}set gridBackground(t){this._gridBackground=t}get rows(){return this._rows}set rows(t){m.value(this._rows,t)||(this._rows=t,this.needsInitialization=!0)}get columns(){return this._columns}set columns(t){m.value(this._columns,t)||(this._columns=t,this.needsInitialization=!0)}get gridBackgroundColor(){return this._gridBackgroundColor}set gridBackgroundColor(t){m.value(this._gridBackgroundColor,t)||(this._gridBackgroundColor=t,this.needsInitialization=!0)}get gridLineWidth(){return this._gridLineWidth}set gridLineWidth(t){m.value(this._gridLineWidth,t)||(this._gridLineWidth=t,this.needsInitialization=!0)}get gridLineColor(){return this._gridLineColor}set gridLineColor(t){m.value(this._gridLineColor,t)||(this._gridLineColor=t,this.needsInitialization=!0)}dispose(){}duplicate(t){const e=new A({...this.getNodeOptions(),...this.getDrawableOptions(),rows:this.rows,columns:this.columns,size:this.size,backgroundColor:this.gridBackgroundColor,gridLineWidth:this.gridLineWidth,gridLineColor:this.gridLineColor,name:t});return this.children.length>0&&(e.children=this.children.map(i=>{const s=i.duplicate();return s.parent=e,s})),e}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}get gridChildren(){return this._gridChildren}set gridChildren(t){this._gridChildren=t,this.needsInitialization=!0,this.savePropertyChangeEvent("gridChildren",this.gridChildren.map(e=>({node:e.node.uuid,row:e.row,column:e.column})))}removeAllGridChildren(){if(this.gridChildren.length!==0){for(;this.gridChildren.length;)this.gridChildren=this.gridChildren.slice(0,-1);this.needsInitialization=!0}}addAtCell(t,e,i){(e<0||e>=this.rows||i<0||i>=this.columns)&&console.warn(`warning: addAtCell() requested to add node at row ${e}, column ${i}. This is outside the bounds of grid ${this.name}, which is size ${this.rows}x${this.columns}. Note that addAtCell() uses zero-based indexing. AddAtCell() will proceed, but may draw nodes outside the grid`),this.gridChildren=[...this.gridChildren,{node:t,row:e,column:i}],this.needsInitialization=!0}removeAllAtCell(t,e){this.gridChildren=this.gridChildren.filter(i=>i.row!==t&&i.column!==e),this.needsInitialization=!0}removeGridChild(t){this.gridChildren=this.gridChildren.filter(e=>e.node!=t),this.needsInitialization=!0}addChild(t){console.warn("Grid.addChild() was called -- did you mean to call addAtCell() instead?"),super.addChild(t)}removeAllChildren(){console.warn("Grid.removeAllChildren() was called -- did you mean to call removeAllGridChildren() instead?"),super.removeAllChildren()}removeChild(t){console.warn("Grid.removeChild() was called -- did you mean to call removeGridChild() instead?"),super.removeChild(t)}removeChildren(t){console.warn("Grid.removeChildren() was called -- did you mean to call removeGridChild() instead?"),super.removeChildren(t)}}f.registerM2NodeClass(A);class _ extends E{constructor(t){super(t),this.compositeType="Button",this.isText=!0,this._backgroundColor=l.Black,this._cornerRadius=9,this._fontSize=20,this._text="",this._fontColor=l.White,this._interpolation={},this._localize=!0,t.text&&(this.text=t.text),t.size?this.size=t.size:this.size={width:200,height:50},t.cornerRadius!==void 0&&(this.cornerRadius=t.cornerRadius),t.fontName&&(this.fontName=t.fontName),t.fontNames&&(this.fontNames=t.fontNames),t.fontSize!==void 0&&(this.fontSize=t.fontSize),t.fontColor&&(this.fontColor=t.fontColor),t.backgroundColor&&(this.backgroundColor=t.backgroundColor),t.interpolation&&(this.interpolation=t.interpolation),t.localize!==void 0&&(this.localize=t.localize),this.saveNodeNewEvent()}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),...this.getTextOptions(),size:this.size,cornerRadius:this.cornerRadius,backgroundColor:this.backgroundColor,fontNames:this.fontNames}}initialize(){this.removeAllChildren(),this.backgroundPaint=new this.canvasKit.Paint,this.backgroundPaint.setColor(this.canvasKit.Color(this.backgroundColor[0],this.backgroundColor[1],this.backgroundColor[2],this.backgroundColor[3])),this.backgroundPaint.setStyle(this.canvasKit.PaintStyle.Fill);const t=new g({name:"__"+this.name+"-buttonRectangle",rect:{size:this.size},cornerRadius:this.cornerRadius,fillColor:this._backgroundColor,suppressEvents:!0});this.addChild(t);const e=new S({name:"__"+this.name+"-buttonLabel",text:this.text,localize:this.localize,interpolation:this.interpolation,fontName:this.fontName,fontNames:this.fontNames,fontSize:this.fontSize,fontColor:this.fontColor,suppressEvents:!0});t.addChild(e),this.needsInitialization=!1}dispose(){ht.Dispose([this.backgroundPaint])}get text(){return this._text}set text(t){m.value(this._text,t)||(this._text=t,this.needsInitialization=!0,this.savePropertyChangeEvent("text",t))}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){m.value(this._backgroundColor,t)||(this._backgroundColor=t,this.needsInitialization=!0,this.savePropertyChangeEvent("backgroundColor",t))}get fontColor(){return this._fontColor}set fontColor(t){m.value(this._fontColor,t)||(this._fontColor=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontColor",t))}get fontName(){return this._fontName}set fontName(t){this._fontName!==t&&(this._fontName=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontName",t))}get fontNames(){return this._fontNames}set fontNames(t){m.value(this._fontNames,t)||(this._fontNames=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontNames",t))}get cornerRadius(){return this._cornerRadius}set cornerRadius(t){m.value(this._cornerRadius,t)||(this._cornerRadius=t,this.needsInitialization=!0,this.savePropertyChangeEvent("cornerRadius",t))}get fontSize(){return this._fontSize}set fontSize(t){m.value(this._fontSize,t)||(this._fontSize=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontSize",t))}get interpolation(){return this._interpolation}set interpolation(t){m.value(this._interpolation,t)||(this._interpolation=t,Object.freeze(this._interpolation),this.needsInitialization=!0,this.savePropertyChangeEvent("interpolation",t))}get localize(){return this._localize}set localize(t){m.value(this._localize,t)||(this._localize=t,this.needsInitialization=!0,this.savePropertyChangeEvent("localize",t))}duplicate(t){const e=new _({...this.getNodeOptions(),...this.getDrawableOptions(),...this.getTextOptions(),size:this.size,cornerRadius:this.cornerRadius,backgroundColor:this.backgroundColor,fontColor:this.fontColor,name:t,localize:this.localize,interpolation:JSON.parse(JSON.stringify(this.interpolation)),fontName:this.fontName,fontNames:JSON.parse(JSON.stringify(this.fontNames))});return this.children.length>0&&(e.children=this.children.map(i=>{const s=i.duplicate();return s.parent=e,s})),e}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}}f.registerM2NodeClass(_);var j=(v=>(v.Dismiss="Dismiss",v.Positive="Positive",v.Negative="Negative",v))(j||{});class pt extends E{constructor(t){super(t),this.compositeType="Dialog",this._backgroundColor=l.White,this.cornerRadius=9,this.overlayAlpha=.5,this.contentText="",this.positiveButtonText="",this.negativeButtonText="",this._fontColor=l.White,this.zPosition=Number.MAX_VALUE,this.hidden=!0,t&&(t.overlayAlpha&&(this.overlayAlpha=t.overlayAlpha),t.messageText&&(this.contentText=t.messageText),t.positiveButtonText&&(this.positiveButtonText=t.positiveButtonText),t.negativeButtonText&&(this.negativeButtonText=t.negativeButtonText),t.size&&(this.size=t.size),t.cornerRadius&&(this.cornerRadius=t.cornerRadius),t.fontColor&&(this.fontColor=t.fontColor),t.backgroundColor&&(this.backgroundColor=t.backgroundColor))}show(){this.hidden=!1}onDialogResult(t,e){const i={type:p.Composite,compositeType:"DialogResult",nodeUuid:this.uuid,callback:t};e?.replaceExisting&&(this.eventListeners=this.eventListeners.filter(s=>!(s.nodeUuid===i.nodeUuid&&s.type===i.type))),this.eventListeners.push(i)}initialize(){this.removeAllChildren();const t=new g({rect:{width:m2c2Globals.canvasCssWidth,height:m2c2Globals.canvasCssHeight,x:m2c2Globals.canvasCssWidth/2,y:m2c2Globals.canvasCssHeight/2},fillColor:[0,0,0,this.overlayAlpha],zPosition:-1,isUserInteractionEnabled:!0});t.onTapDown(n=>{n.handled=!0,this.hidden=!0,this.eventListeners.length>0&&this.eventListeners.filter(o=>o.type===p.Composite).forEach(o=>{const a={type:p.Composite,target:this,handled:!1,dialogResult:"Dismiss",timestamp:B.now(),iso8601Timestamp:new Date().toISOString()};o.callback(a)})}),this.addChild(t);const e=new g({rect:{width:300,height:150,x:m2c2Globals.canvasCssWidth/2,y:m2c2Globals.canvasCssHeight/2},cornerRadius:this.cornerRadius,fillColor:this.backgroundColor,isUserInteractionEnabled:!0});e.onTapDown(n=>{n.handled=!0}),this.addChild(e);const i=new S({text:this.contentText,fontSize:24,position:{x:200,y:360}});this.addChild(i);const s=new _({text:this.negativeButtonText,position:{x:120,y:440},size:{width:100,height:40},isUserInteractionEnabled:!0,zPosition:1});s.onTapDown(n=>{n.handled=!0,this.hidden=!0}),s.onTapDown(n=>{n.handled=!0,this.hidden=!0,this.eventListeners.length>0&&this.eventListeners.filter(o=>o.type===p.Composite).forEach(o=>{const a={type:p.Composite,target:this,handled:!1,dialogResult:"Negative",timestamp:B.now(),iso8601Timestamp:new Date().toISOString()};o.callback(a)})});const r=new _({text:this.positiveButtonText,position:{x:280,y:440},size:{width:100,height:40},isUserInteractionEnabled:!0,zPosition:1});r.onTapDown(n=>{n.handled=!0,this.hidden=!0,this.eventListeners.length>0&&this.eventListeners.filter(o=>o.type===p.Composite).forEach(o=>{const a={type:p.Composite,target:this,handled:!1,dialogResult:"Positive",timestamp:B.now(),iso8601Timestamp:new Date().toISOString()};o.callback(a)})}),this.addChild(s),this.addChild(r),this.needsInitialization=!1}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t,this.needsInitialization=!0}get fontColor(){return this._fontColor}set fontColor(t){this._fontColor=t,this.needsInitialization=!0}get hidden(){return this._hidden}set hidden(t){this._hidden=t,this.needsInitialization=!0}duplicate(t){throw new h(`duplicate not implemented. ${t}`)}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}}const y={StrokeStart:"StrokeStart",StrokeMove:"StrokeMove",StrokeEnd:"StrokeEnd"},I={StrokeEnter:"StrokeEnter",StrokeLeave:"StrokeLeave"};class Z extends E{constructor(t){if(super(t),this.compositeType="DrawPad",this.resumeDrawingOnReturn=!1,this.continuousDrawingOnly=!1,this._backgroundColor=[0,0,0,0],this._borderColor=l.Black,this._borderWidth=1,this._lineColor=l.Red,this._lineWidth=1,this.isDrawingPointerDown=!1,this.pointerIsDownAndPointerLeftDrawAreaWhenDown=!1,this.currentStrokesNotAllowed=!1,this.strokes=new Array,this.originalOptions=JSON.parse(JSON.stringify(t)),t.isUserInteractionEnabled===void 0&&(this.isUserInteractionEnabled=!0),!t.size)throw new h("DrawPad size must be specified");this.size=t.size,t.lineColor&&(this.lineColor=t.lineColor),t.lineWidth&&(this.lineWidth=t.lineWidth),t.backgroundColor&&(this.backgroundColor=t.backgroundColor),t.borderColor&&(this.borderColor=t.borderColor),t.borderWidth&&(this.borderWidth=t.borderWidth),t.resumeDrawingOnReturn!==void 0&&(this.resumeDrawingOnReturn=t.resumeDrawingOnReturn),t.continuousDrawingOnly!==void 0&&(this.continuousDrawingOnly=t.continuousDrawingOnly),t.continuousDrawingOnlyExceptionDistance!==void 0&&(this.continuousDrawingOnlyExceptionDistance=t.continuousDrawingOnlyExceptionDistance),this.saveNodeNewEvent()}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),...this.originalOptions}}initialize(){this.initializeDrawShape(),this.initializeDrawArea(),this.needsInitialization=!1}initializeDrawShape(){if(!this.drawShape){const t=new lt;this.drawShape=new g({path:t,size:this.size}),this.addChild(this.drawShape)}this.drawShape.strokeColor=this.lineColor,this.drawShape.lineWidth=this.lineWidth}initializeDrawArea(){this.drawArea||(this.drawArea=new g({rect:{size:this.size},isUserInteractionEnabled:!0,suppressEvents:!0}),this.addChild(this.drawArea),this.drawArea.onTapDown(t=>{this.handleTapDown(t)}),this.drawArea.onPointerMove(t=>{this.handlePointerMove(t)}),this.drawArea.onTapUpAny(()=>{this.handleTapUpAny()}),this.drawArea.onTapLeave(t=>{this.handleTapLeave(t)})),this.drawArea.fillColor=this.backgroundColor,this.drawArea.strokeColor=this.borderColor,this.drawArea.lineWidth=this.borderWidth}dist(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}handleTapDown(t){if(this.isUserInteractionEnabled){if(!this.drawShape?.path)throw new h("DrawPad.handleTapDown(): no drawShape.path");const e=this.drawShape.path;if(this.continuousDrawingOnly&&e.subpaths.length!==0){const s=e.subpaths[e.subpaths.length-1][e.subpaths[e.subpaths.length-1].length-1],r=t.point;if(this.continuousDrawingOnlyExceptionDistance===void 0||this.dist(s,r)>this.continuousDrawingOnlyExceptionDistance){this.currentStrokesNotAllowed=!0;return}}this.currentStrokesNotAllowed=!1,this.isDrawingPointerDown=!0,e.move(t.point);const i={type:y.StrokeStart,target:this,handled:!1,position:t.point,...f.createTimestamps()};this.strokes.push([{type:y.StrokeStart,position:t.point,iso8601Timestamp:new Date().toISOString(),interpolated:!1}]),this.raiseDrawPadEvent(i)}}addInterpolatedStrokeMove(t){const e=this.strokes.length,i=this.strokes[e-1].length,s=this.strokes[this.strokes.length-1][i-1].position,r=this.interpolateToDrawPadBorder(t,s,this.size);if(!this.drawShape?.path)throw new h("DrawPad.addInterpolatedStrokeMove(): no drawShape.path");this.drawShape.path.addLine(r);const o={type:y.StrokeMove,target:this,handled:!1,position:r,...f.createTimestamps()};return this.strokes[e-1].push({type:y.StrokeMove,position:r,iso8601Timestamp:new Date().toISOString(),interpolated:!0}),this.raiseDrawPadEvent(o),r}handleTapLeave(t){if(this.currentStrokesNotAllowed){this.isDrawingPointerDown=!1;return}if(this.resumeDrawingOnReturn===!1){this.isDrawingPointerDown=!1;const e=this.strokes.length,i=this.strokes[e-1].length;let s=!1,r=t.point;this.isPointWithinDrawPad(t.point,this.size)||(r=this.addInterpolatedStrokeMove(t.point),s=!0);const n={type:y.StrokeEnd,position:this.strokes[e-1][i-1].position,target:this,handled:!1,...f.createTimestamps()};this.strokes[e-1].push({type:y.StrokeEnd,position:s?r:this.strokes[e-1][i-1].position,iso8601Timestamp:new Date().toISOString(),interpolated:s}),this.raiseDrawPadEvent(n),this.currentStrokesNotAllowed=!0}else this.pointerIsDownAndPointerLeftDrawAreaWhenDown=!0}handleTapUpAny(){if(this.currentStrokesNotAllowed){this.isDrawingPointerDown=!1;return}if(this.isUserInteractionEnabled){this.isDrawingPointerDown=!1,this.pointerIsDownAndPointerLeftDrawAreaWhenDown=!1;const t=this.strokes.length,e=this.strokes[t-1].length,i={type:y.StrokeEnd,position:this.strokes[t-1][e-1].position,target:this,handled:!1,...f.createTimestamps()};this.strokes[t-1].push({type:y.StrokeEnd,position:this.strokes[t-1][e-1].position,iso8601Timestamp:new Date().toISOString(),interpolated:!1}),this.raiseDrawPadEvent(i)}}handlePointerMove(t){if(this.isUserInteractionEnabled&&this.isDrawingPointerDown){if(!this.drawShape?.path)throw new h("DrawPad.handlePointerMove(): no drawShape.path");const e=this.drawShape.path;this.isDrawingPointerDown&&!this.pointerIsDownAndPointerLeftDrawAreaWhenDown&&e.addLine(t.point),this.pointerIsDownAndPointerLeftDrawAreaWhenDown&&(this.pointerIsDownAndPointerLeftDrawAreaWhenDown=!1,e.move(t.point));const i={type:y.StrokeMove,target:this,handled:!1,position:t.point,...f.createTimestamps()},s=this.strokes.length;this.strokes[s-1].push({type:y.StrokeMove,position:t.point,iso8601Timestamp:new Date().toISOString(),interpolated:!1}),this.raiseDrawPadEvent(i)}}update(){super.update()}draw(t){super.drawChildren(t)}raiseDrawPadEvent(t){this.eventListeners.length>0&&this.eventListeners.filter(e=>e.type===t.type).forEach(e=>{e.callback(t)})}raiseDrawPadItemEvent(t,e){t.eventListeners.length>0&&t.eventListeners.filter(i=>i.type===e.type).forEach(i=>{i.callback(e)})}clear(){if(!this.drawShape?.path)throw new h("DrawPad.clear(): no drawShape.path");this.drawShape.path.clear(),this.strokes=new Array}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}onStrokeStart(t,e){this.addEventListener(y.StrokeStart,t,e)}onStrokeMove(t,e){this.addEventListener(y.StrokeMove,t,e)}onStrokeEnd(t,e){this.addEventListener(y.StrokeEnd,t,e)}addItem(t){return Object.defineProperty(t,"drawPadPosition",{get:function(){const e=t.parent;return{get x(){return t.position.x+e.size.width/2},set x(i){t.position.x=i-e.size.width/2},get y(){return t.position.y+e.size.height/2},set y(i){t.position.y=i-e.size.height/2}}},set:function(e){const i=t.parent;t.position.x=e.x-i.size.width/2,t.position.y=e.y-i.size.height/2}}),Object.defineProperty(t,"onStrokeEnter",{value:function(e,i){this.addEventListener(I.StrokeEnter,e,i)}}),Object.defineProperty(t,"onStrokeLeave",{value:function(e,i){this.addEventListener(I.StrokeLeave,e,i)}}),Object.defineProperty(t,"isStrokeWithinBounds",{value:!1,writable:!0}),t.onPointerDown(()=>{if(this.isDrawingPointerDown&&t.isStrokeWithinBounds===!1){t.isStrokeWithinBounds=!0;const e={type:I.StrokeEnter,target:t,...f.createTimestamps()};this.raiseDrawPadItemEvent(t,e)}}),t.onPointerMove(()=>{if(this.isDrawingPointerDown&&t.isStrokeWithinBounds===!1){t.isStrokeWithinBounds=!0;const e={type:I.StrokeEnter,target:t,...f.createTimestamps()};this.raiseDrawPadItemEvent(t,e)}}),t.onPointerLeave(()=>{if(this.isDrawingPointerDown&&t.isStrokeWithinBounds===!0){t.isStrokeWithinBounds=!1;const e={type:I.StrokeLeave,target:t,...f.createTimestamps()};this.raiseDrawPadItemEvent(t,e)}}),t.onPointerUp(()=>{if(t.isStrokeWithinBounds===!0){t.isStrokeWithinBounds=!1;const e={type:I.StrokeLeave,target:t,...f.createTimestamps()};this.raiseDrawPadItemEvent(t,e)}}),this.addChild(t),t.zPosition=-1,t.position.x=t.position.x-this.size.width/2,t.position.y=t.position.y-this.size.height/2,t.isUserInteractionEnabled=!0,t}takeScreenshot(){const t=this.drawArea;if(!t)throw new h("DrawPad.takeScreenshot(): no drawArea");const e=(t.absolutePosition.x-t.size.width/2)*m2c2Globals.canvasScale,i=(t.absolutePosition.y-t.size.height/2)*m2c2Globals.canvasScale,s=t.size.width*m2c2Globals.canvasScale,r=t.size.height*m2c2Globals.canvasScale,n={alphaType:this.game.canvasKit.AlphaType.Unpremul,colorType:this.game.canvasKit.ColorType.RGBA_8888,colorSpace:this.game.canvasKit.ColorSpace.SRGB,width:s,height:r},a=this.game.snapshots[0].readPixels(e,i,n),d=this.game.canvasKit.MakeImage(n,a,a.length/r);if(!d)throw new h("DrawPad.takeScreenshot(): no croppedImage");const c=d.encodeToBytes();if(!c)throw new h("DrawPad.takeScreenshot(): croppedImage.encodeToBytes() failed");return d.delete(),this.arrayBufferToBase64String(c)}isPointWithinDrawPad(t,e){return t.x>=0&&t.x<=e.width&&t.y>=0&&t.y<=e.height}interpolateToDrawPadBorder(t,e,i){const s=(t.y-e.y)/(t.x-e.x),r=t.y-s*t.x,n={x:0,y:0};if(!Number.isFinite(s)){if(n.x=t.x,t.y-e.y>0)return n.y=i.height,n;if(t.y-e.y<0)return n.y=0,n}const o=s*0+r,a=s*i.width+r;if(o>=0&&o<=i.height&&t.x-e.x<0)return n.x=0,n.y=o,n;if(a>=0&&a<=i.height&&t.x-e.x>0)return n.x=i.width,n.y=a,n;const d=(0-r)/s,c=(i.height-r)/s;return d>=0&&d<=i.width&&t.y-e.y<0?(n.x=d,n.y=0,n):c>=0&&c<=i.width&&t.y-e.y>0?(n.x=c,n.y=i.height,n):t}arrayBufferToBase64String(t){let e="";const i=new Uint8Array(t);for(let s=0;s<i.byteLength;s++)e+=String.fromCharCode(i[s]);return window.btoa(e)}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t,this.needsInitialization=!0}get borderColor(){return this._borderColor}set borderColor(t){this._borderColor=t,this.needsInitialization=!0}get borderWidth(){return this._borderWidth}set borderWidth(t){this._borderWidth=t,this.needsInitialization=!0}get lineColor(){return this._lineColor}set lineColor(t){this._lineColor=t,this.needsInitialization=!0}get lineWidth(){return this._lineWidth}set lineWidth(t){this._lineWidth=t,this.needsInitialization=!0}duplicate(t){throw new h(`DrawPad.duplicate(): Method not implemented. ${t}`)}}f.registerM2NodeClass(Z);class X extends E{constructor(t){super(t),this.compositeType="VirtualKeyboard",this.keyboardRows=new Array,this.shiftActivated=!1,this.keyShapes=new Array,this.keyLabels=new Array,this.originalOptions=JSON.parse(JSON.stringify(t)),t.isUserInteractionEnabled===void 0&&(this._isUserInteractionEnabled=!0),this.size=t.size,this.position=t.position??{x:0,y:0},this.keyboardHorizontalPaddingPercent=t.keyboardHorizontalPaddingPercent??.02,this.keyboardVerticalPaddingPercent=t.keyboardVerticalPaddingPercent??.025,this.keyHorizontalPaddingPercent=t.keyHorizontalPaddingPercent??.1,this.keyVerticalPaddingPercent=t.keyVerticalPaddingPercent??.1,t.rows!==void 0&&(this.keyboardRows=t.rows.map(e=>e.map(s=>{if(s instanceof Object&&!Array.isArray(s)){const r=s;return s.keyIconShapeOptions&&(s.keyIconShapeOptions.suppressEvents=!0,r.keyIcon=new g(s.keyIconShapeOptions),r.keyIconShapeOptions=void 0),r}else return s}))),this.keysPerRow=t.keysPerRow??NaN,this.fontSize=t.fontSize??NaN,this.fontNames=t.fontNames,this.hiddenKeys=t.hiddenKeys??"",this.capitalLettersOnly=t.capitalLettersOnly??!1,this.keyColor=t.keyColor??l.White,this.keyDownColor=t.keyDownColor??l.Transparent,this.specialKeyDownColor=t.specialKeyDownColor??l.LightSteelBlue,this.backgroundColor=t.backgroundColor??[242,240,244,1],this.showKeyDownPreview=t.showKeyDownPreview??!0,this.saveNodeNewEvent()}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),...this.originalOptions}}initialize(){this.game.eventStore.mode===$.Replay&&(this._isUserInteractionEnabled=!1),this.keyboardRows.length===0&&(this.keyboardRows=this.createDefaultKeyboardRows(),this.keysPerRow=this.keyboardRows.reduce((a,d)=>Math.max(a,d.length),0),this.fontSize=this.size.height/this.keyboardRows.length/2.5);const t=new g({rect:{size:this.size},fillColor:this.backgroundColor,suppressEvents:!0});this.addChild(t);const e=this.internalKeyboardRowsToInternalKeyboardConfiguration(this.keyboardRows),i={x:-t.size.width/2,y:-t.size.height/2},s=(this.keyboardVerticalPaddingPercent??.025)*this.size.height,r=(this.keyboardHorizontalPaddingPercent??.02)*this.size.width,n=(this.size.height-2*s)/e.length,o=(this.size.width-2*r)/this.keysPerRow;this.keyShapes=[];for(let a=0;a<e.length;a++){const d=e[a],c=d.reduce((x,C)=>x+(C.widthRatio??1),0);let w=0;c<this.keysPerRow&&(w=(this.size.width-2*r-o*c)/2);for(let x=0;x<d.length;x++){const C=d[x];if(this.hiddenKeys?.split(",").map(b=>b===" "?" ":b.trim()).includes(C.code))continue;const R=d.slice(0,x).reduce((b,U)=>b+(U.widthRatio??1),0)*o,L=new g({rect:{size:{width:o*(C.widthRatio??1),height:n}},fillColor:l.Transparent,strokeColor:l.Transparent,lineWidth:1,position:{x:w+i.x+r+R+(C.widthRatio??1)*o/2,y:i.y+s+a*n+n/2},suppressEvents:!0}),K=o*(C.widthRatio??1)-2*this.keyHorizontalPaddingPercent*o,W=n-(C.heightRatio??1)-2*this.keyVerticalPaddingPercent*n,T=new g({rect:{size:{width:K,height:W}},cornerRadius:4,fillColor:this.keyColor,lineWidth:0,isUserInteractionEnabled:this.isUserInteractionEnabled,suppressEvents:!0});T.userData={code:C.code},L.addChild(T),this.keyShapes.push(T);const D=new S({text:C.labelText,fontSize:this.fontSize,fontNames:this.fontNames,suppressEvents:!0});D.userData={code:C.code},L.addChild(D),this.keyLabels.push(D),C.keyIcon&&L.addChild(C.keyIcon),t.addChild(L),T.onTapUp(b=>{this.handleKeyShapeTapUp(C,T,b)}),T.onTapDown(b=>{this.handleKeyShapeTapDown(C,T,b)}),T.onTapLeave(b=>{this.handleKeyShapeTapLeave(C,T,b)})}}this.letterCircle=new g({circleOfRadius:28,fillColor:l.Silver,hidden:!0,suppressEvents:!0}),t.addChild(this.letterCircle),this.letterCircleLabel=new S({text:"",fontSize:this.fontSize,fontNames:this.fontNames,suppressEvents:!0}),this.letterCircle.addChild(this.letterCircleLabel),this.needsInitialization=!1}onKeyDown(t,e){const i={type:p.Composite,compositeEventType:"VirtualKeyboardKeyDown",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addVirtualKeyboardEventListener(i,e)}onKeyUp(t,e){const i={type:p.Composite,compositeEventType:"VirtualKeyboardKeyUp",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addVirtualKeyboardEventListener(i,e)}onKeyLeave(t,e){const i={type:p.Composite,compositeEventType:"VirtualKeyboardKeyLeave",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addVirtualKeyboardEventListener(i,e)}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}duplicate(t){throw new h(`Method not implemented. ${t}`)}handleKeyShapeTapDown(t,e,i){t.isShift&&(this.shiftActivated=!this.shiftActivated);const s=this.getKeyAsString(t),r={type:p.Composite,compositeType:"VirtualKeyboard",compositeEventType:"VirtualKeyboardKeyDown",target:this,handled:!1,key:s,code:t.code,shiftKey:this.shiftActivated,keyTapMetadata:{size:e.size,point:i.point,buttons:i.buttons},...f.createTimestamps()};this.handleCompositeEvent(r),this.saveEvent(r),this.eventListeners.length>0&&this.eventListeners.filter(n=>n.type===p.Composite&&n.compositeType==="VirtualKeyboard"&&n.compositeEventType==="VirtualKeyboardKeyDown").forEach(n=>{n.callback(r)})}handleKeyShapeTapUp(t,e,i){const s=this.getKeyAsString(t),r={type:p.Composite,compositeType:"VirtualKeyboard",compositeEventType:"VirtualKeyboardKeyUp",target:this,handled:!1,key:s,code:t.code,shiftKey:this.shiftActivated,keyTapMetadata:{size:e.size,point:i.point,buttons:i.buttons},...f.createTimestamps()};this.handleCompositeEvent(r),this.saveEvent(r),this.eventListeners.length>0&&this.eventListeners.filter(n=>n.type===p.Composite&&n.compositeType==="VirtualKeyboard"&&n.compositeEventType==="VirtualKeyboardKeyUp").forEach(n=>{n.callback(r)})}handleKeyShapeTapLeave(t,e,i){const s=this.getKeyAsString(t),r={type:p.Composite,compositeType:"VirtualKeyboard",compositeEventType:"VirtualKeyboardKeyLeave",target:this,handled:!1,key:s,code:t.code,shiftKey:this.shiftActivated,keyTapMetadata:{size:e.size,point:i.point,buttons:i.buttons},...f.createTimestamps()};this.handleCompositeEvent(r),this.saveEvent(r),this.eventListeners.length>0&&this.eventListeners.filter(n=>n.type===p.Composite&&n.compositeType==="VirtualKeyboard"&&n.compositeEventType==="VirtualKeyboardKeyLeave").forEach(n=>{n.callback(r)})}getKeyAsString(t){return t.isShift||t.code===" "||t.code==="Backspace"?t.code:this.shiftActivated?t.labelTextShifted??t.code:t.labelText??t.code}internalKeyboardRowsToInternalKeyboardConfiguration(t){return t.map(e=>e.map(i=>{let s=1;const r=1;let n,o,a,d,c=!1;return typeof i=="string"?(n=i,this.capitalLettersOnly?o=n.toUpperCase():o=n,a=n.toUpperCase()):Array.isArray(i)?(n=i[0],o=n,a=i[1]):(n=i.code,o=i.labelText??"",a=i.labelTextShifted??o,s=i.widthRatio??1,d=i.keyIcon,c=i.isShift??!1),{widthRatio:s,heightRatio:r,code:n,labelText:o,labelTextShifted:a,keyIcon:d,isShift:c}}))}handleCompositeEvent(t){const e=this.internalKeyboardRowsToInternalKeyboardConfiguration(this.keyboardRows),i=this.keyShapes.find(s=>s.userData.code===t.code);if(!i)throw new h("keyShape is not defined");switch(this.shiftActivated=t.shiftKey,t.compositeEventType){case"VirtualKeyboardKeyDown":{this.handleKeyDownEvent(t,e,i);break}case"VirtualKeyboardKeyUp":{this.handleKeyUpEvent(t,e,i);break}case"VirtualKeyboardKeyLeave":{this.handleKeyLeaveEvent(t,e,i);break}default:throw new h(`Unknown VirtualKeyboardEvent: ${t.compositeEventType}`)}}handleKeyDownEvent(t,e,i){if(t.code.toLowerCase().includes("shift"))t.shiftKey?this.showKeyboardShifted(e):this.showKeyboardNotShifted(e);else if(t.code===" "||t.code==="Backspace")i.fillColor=this.specialKeyDownColor;else if(i.fillColor=this.keyDownColor,this.showKeyDownPreview){if(!this.letterCircle||!this.letterCircleLabel)throw new h("letterCircle is not defined");this.letterCircle.hidden=!1;const s=i.parent;if(this.letterCircle.position.x=s.position.x,i.rect?.size?.height===void 0)throw new h("keyShape.rect.height is undefined");this.letterCircle.position.y=s.position.y-i.rect.size.height*1.2;const n=this.internalKeyboardRowsToInternalKeyboardConfiguration(this.keyboardRows).flat().find(o=>o.code===t.code);if(!n)throw new h("key is not defined");this.shiftActivated?this.letterCircleLabel.text=n.labelTextShifted??n.code:this.letterCircleLabel.text=n.labelText??n.code}}handleKeyUpEvent(t,e,i){if(!(t.code.toLowerCase().includes("shift")&&t.shiftKey)){if(t.code.toLowerCase().includes("shift")&&!t.shiftKey){this.shiftActivated=!1,this.showKeyboardNotShifted(e);return}if(i.fillColor=this.keyColor,!this.letterCircle)throw new h("letterCircle is not defined");this.letterCircle.hidden=!0,!t.code.toLowerCase().includes("shift")&&t.shiftKey&&(this.shiftActivated=!1,this.showKeyboardNotShifted(e))}}handleKeyLeaveEvent(t,e,i){if(t.code.toLowerCase().includes("shift")){t.shiftKey?(this.showKeyboardNotShifted(e),this.shiftActivated=!1):(this.showKeyboardShifted(e),this.shiftActivated=!0);return}if(i.fillColor=this.keyColor,!this.letterCircle)throw new h("letterCircle is not defined");this.letterCircle.hidden=!0}showKeyboardShifted(t){this.keyShapes.filter(s=>s.userData.code.toLowerCase().includes("shift")).forEach(s=>{s.fillColor=this.specialKeyDownColor}),t.flat().filter(s=>s.isShift).forEach(s=>{s.keyIcon&&(s.keyIcon.fillColor=l.Black)}),t.flatMap(s=>s).forEach(s=>{const r=this.keyLabels.find(n=>n.userData.code===s.code);if(!r)throw new h("keyLabel is not defined");r.text!==void 0&&(r.text=s.labelTextShifted??"")})}showKeyboardNotShifted(t){this.keyShapes.filter(s=>s.userData.code.toLowerCase().includes("shift")).forEach(s=>{s.fillColor=this.keyColor}),t.flat().filter(s=>s.isShift).forEach(s=>{s.keyIcon&&(s.keyIcon.fillColor=l.Transparent)}),t.flatMap(s=>s).forEach(s=>{const r=this.keyLabels.find(n=>n.userData.code===s.code);if(!r)throw new h("keyLabel is not defined");r.text!==void 0&&(r.text=s.labelText??"")})}createDefaultKeyboardRows(){const t=[["1","!"],["2","@"],["3","#"],["4","$"],["5","%"],["6","^"],["7","&"],["8","*"],["9","("],["0",")"]],e=["q","w","e","r","t","y","u","i","o","p"],i=["a","s","d","f","g","h","j","k","l"],s={path:{pathString:"m288-6.6849e-14 -288 288h144v288h288v-288h144l-288-288z",width:24},lineWidth:2,strokeColor:l.Black,fillColor:l.Transparent,suppressEvents:!0},r={path:{pathString:"M10.625 5.09 0 22.09l10.625 17H44.18v-34H10.625zm31.555 32H11.734l-9.375-15 9.375-15H42.18v30zm-23.293-6.293 7.293-7.293 7.293 7.293 1.414-1.414-7.293-7.293 7.293-7.293-1.414-1.414-7.293 7.293-7.293-7.293-1.414 1.414 7.293 7.293-7.293 7.293",width:24},lineWidth:1,strokeColor:l.Black,fillColor:l.Red,suppressEvents:!0},n=[{code:"Shift",isShift:!0,widthRatio:1.5,keyIcon:new g(s)},"z","x","c","v","b","n","m",{code:"Backspace",widthRatio:1.5,keyIcon:new g(r)}];return[t,e,i,n,[{code:" ",labelText:"SPACE",widthRatio:5}]]}addVirtualKeyboardEventListener(t,e){e?.replaceExisting&&(this.eventListeners=this.eventListeners.filter(i=>!(i.nodeUuid===t.nodeUuid&&i.type===t.type&&i.compositeType===t.compositeType))),this.eventListeners.push(t)}get isUserInteractionEnabled(){return this._isUserInteractionEnabled}set isUserInteractionEnabled(t){this._isUserInteractionEnabled=t,this.keyShapes?.forEach(e=>{e.isUserInteractionEnabled=t})}}f.registerM2NodeClass(X);const Y=q.sinusoidalInOut,Q=500;class gt extends dt{static create(t){const e=new Array;return t.instructionScenes.forEach((i,s)=>{const r=i.nextSceneTransition??t.nextSceneTransition??V.slide({direction:H.Left,duration:Q,easing:Y}),n=i.backSceneTransition??t.backSceneTransition??V.slide({direction:H.Right,duration:Q,easing:Y}),o=i.backButtonText??t.backButtonText??"Back",a=i.backButtonTextInterpolation??t.backButtonTextInterpolation,d=i.nextButtonText??t.nextButtonText??"Next",c=i.nextButtonTextInterpolation??t.nextButtonTextInterpolation,w=i.backButtonWidth??t.backButtonWidth??125,x=i.nextButtonWidth??t.nextButtonWidth??125,C=i.backButtonHeight??t.backButtonHeight??50,R=i.nextButtonHeight??t.nextButtonHeight??50,L=i.backgroundColor??t.backgroundColor,K=i.imageAboveText??!0,W=i.imageMarginTop??0,T=i.imageMarginBottom??0,D=i.textMarginStart??48,b=i.textMarginEnd??48,U=i.textAlignmentMode??ct.Left,et=i.textFontSize??16,it=i.titleFontSize??16,st=i.titleMarginTop??48,nt=i.backButtonBackgroundColor??t.backButtonBackgroundColor??l.Black,ot=i.backButtonFontColor??t.backButtonFontColor??l.White,rt=i.nextButtonBackgroundColor??t.nextButtonBackgroundColor??l.Black,at=i.nextButtonFontColor??t.nextButtonFontColor??l.White,M=t.sceneNamePrefix??"instructions",u=new J({name:M+"-"+(s+1).toString().padStart(2,"0"),backgroundColor:L});let G;i.title!==void 0&&(G=new S({text:i.title,interpolation:i.titleInterpolation,fontSize:it,layout:{marginTop:st,constraints:{topToTopOf:u,startToStartOf:u,endToEndOf:u}}}),u.addChild(G));let N;if(i.text!==void 0&&(N=new S({text:i.text,interpolation:i.textInterpolation,preferredMaxLayoutWidth:ut.MatchConstraint,horizontalAlignmentMode:U,fontSize:et,layout:{marginStart:D,marginEnd:b,constraints:{topToTopOf:u,bottomToBottomOf:u,startToStartOf:u,endToEndOf:u,verticalBias:i.textVerticalBias}}}),u.addChild(N)),i.imageName!==void 0){let z;N!==void 0?K?z=new O({imageName:i.imageName,layout:{marginBottom:T,constraints:{bottomToTopOf:N,startToStartOf:u,endToEndOf:u}}}):z=new O({imageName:i.imageName,layout:{marginTop:W,constraints:{topToBottomOf:N,startToStartOf:u,endToEndOf:u}}}):z=new O({imageName:i.imageName,layout:{constraints:{topToTopOf:u,bottomToBottomOf:u,verticalBias:i.imageVerticalBias,startToStartOf:u,endToEndOf:u}}}),u.addChild(z)}if(s>0){const z=new _({name:"backButton",text:o,interpolation:a,fontColor:ot,backgroundColor:nt,size:{width:w,height:C},layout:{marginStart:32,marginBottom:80,constraints:{bottomToBottomOf:u,startToStartOf:u}}});z.isUserInteractionEnabled=!0,z.onTapDown(()=>{u.game.presentScene(M+"-"+(s+1-1).toString().padStart(2,"0"),n)}),u.addChild(z)}const P=new _({name:"nextButton",text:d,interpolation:c,fontColor:at,backgroundColor:rt,size:{width:x,height:R},layout:{marginEnd:32,marginBottom:80,constraints:{bottomToBottomOf:u,endToEndOf:u}}});P.isUserInteractionEnabled=!0,s!==t.instructionScenes.length-1?P.onTapDown(()=>{u.game.presentScene(M+"-"+(s+1+1).toString().padStart(2,"0"),r)}):t.postInstructionsScene!==void 0?P.onTapDown(()=>{u.game.presentScene(t.postInstructionsScene??"",r)}):P.onTapDown(()=>{const z=u.game.scenes.indexOf(u);if(z===-1)console.warn("warning: postInstructionsScene is not defined, and next scene cannot be determined.");else{const F=z+1;F<u.game.scenes.length?u.game.presentScene(u.game.scenes[F],r):console.warn("warning: postInstructionsScene is not defined, and there is no next scene to present.")}}),u.addChild(P),e.push(u)}),e}static Create(t){return this.create(t)}}const ft=q.sinusoidalInOut,mt=500;class wt extends J{constructor(t){if(super(t),t?.transitionDurationMilliseconds!==void 0&&t?.transition)throw new h("Both transition and transitionDurationMilliseconds options were provided. Only one should be provided. If using a custom transition, then the duration of that transition must be specified within the custom transition.");let e;if(t?.timerShape?.circle===void 0&&t?.timerShape?.rectangle===void 0||t?.timerShape.circle!==void 0)e=new g({circleOfRadius:t?.timerShape?.circle?.radius??100,layout:{constraints:{topToTopOf:this,bottomToBottomOf:this,startToStartOf:this,endToEndOf:this,verticalBias:t?.shapeVerticalBias??.5}},fillColor:t?.timerShape?.fillColor??l.RoyalBlue}),this.addChild(e);else if(t?.timerShape.rectangle!==void 0)e=new g({rect:{width:t?.timerShape?.rectangle?.width??200,height:t?.timerShape?.rectangle?.height??200},cornerRadius:t?.timerShape?.rectangle?.cornerRadius,layout:{constraints:{topToTopOf:this,bottomToBottomOf:this,startToStartOf:this,endToEndOf:this,verticalBias:t.shapeVerticalBias??.5}},fillColor:t?.timerShape?.fillColor??l.RoyalBlue}),this.addChild(e);else throw new h("Invalid timer shape options.");const i=Math.floor(t.milliseconds/1e3),s=new S({text:"",fontSize:t?.timerNumbersFontSize??50,fontName:t?.timerNumbersFontName,fontColor:t?.timerNumbersFontColor??l.White});e.addChild(s);const r=new S({text:t?.text??"GET READY",fontSize:t?.textFontSize??50,fontName:t?.textFontName,fontColor:t?.textFontColor,layout:{marginTop:t?.textMarginTop??32,constraints:{topToBottomOf:e,startToStartOf:this,endToEndOf:this}}});this.addChild(r);const n=new Array;for(let o=i-1;o>0;o--)n.push(k.wait({duration:1e3})),n.push(k.custom({callback:()=>{s.text=o.toString()}}));n.push(k.wait({duration:1e3})),n.push(k.custom({callback:()=>{s.text=t?.zeroString??"0"}})),t?.zeroDwellMilliseconds!==void 0&&n.push(k.wait({duration:t.zeroDwellMilliseconds})),n.push(k.custom({callback:()=>{const o=this.game;o.scenes.indexOf(this)===o.scenes.length-1&&o.end();const d=o.scenes[o.scenes.indexOf(this)+1];o.presentScene(d,t?.transition??V.slide({direction:H.Left,duration:t?.transitionDurationMilliseconds??mt,easing:ft}))}})),this.onSetup(()=>{s.text=i.toString()}),this.onAppear(()=>{this.run(k.sequence(n))})}}class Ct extends E{constructor(t){super(t),this.compositeType="LocalePicker",this.DEFAULT_FONT_SIZE=24,this.automaticallyChangeLocale=!0,this._localeOptions=new Array,this._backgroundColor=l.White,this._fontSize=this.DEFAULT_FONT_SIZE,this._fontColor=l.Black,this._cornerRadius=8,this._overlayAlpha=.5,this._icon={svgString:'<svg xmlns="http://www.w3.org/2000/svg" width="420" height="420" stroke="#000" fill="none"><path stroke-width="26" d="M209 15a195 195 0 1 0 2 0z"/><path stroke-width="18" d="M210 15v390m195-195H15M59 90a260 260 0 0 0 302 0m0 240a260 260 0 0 0-302 0M195 20a250 250 0 0 0 0 382m30 0a250 250 0 0 0 0-382"/></svg>',height:32,width:32},this._iconPosition={x:32,y:32},this.LEFT_SELECTION_INDICATOR="\xAB",this.RIGHT_SELECTION_INDICATOR="\xBB",this.zPosition=Number.MAX_VALUE,t&&(t.localeOptions&&(this.localeOptions=t.localeOptions),t.backgroundColor&&(this.backgroundColor=t.backgroundColor),t.overlayAlpha!==void 0&&(this.overlayAlpha=t.overlayAlpha),t.fontSize!==void 0&&(this.fontSize=t.fontSize),t.fontColor&&(this.fontColor=t.fontColor),t.cornerRadius&&(this.cornerRadius=t.cornerRadius),t.currentLocale!==void 0&&(this.currentLocale=t.currentLocale),t.icon&&(this.icon=t.icon),t.automaticallyChangeLocale!==void 0&&(this.automaticallyChangeLocale=t.automaticallyChangeLocale))}onResult(t,e){const i={type:p.Composite,compositeType:"LocalePickerResult",nodeUuid:this.uuid,callback:t};e?.replaceExisting&&(this.eventListeners=this.eventListeners.filter(s=>!(s.nodeUuid===i.nodeUuid&&s.type==="LocalePickerResult"))),this.eventListeners.push(i)}initialize(){if(this.currentLocale===void 0&&(this.currentLocale=this.game.i18n?.locale),this.localeOptions.length===0&&Object.keys(this.game.i18n?.translation||{}).filter(a=>a!=="configuration").forEach(a=>{this.localeOptions.push({text:this.game.i18n?.translation[a].localeName||a,locale:a,svg:this.game.i18n?.translation[a].localeSvg})}),this.localeOptions.length===0)throw new h("No locales available for LocalePicker");this.children.filter(o=>o.name!=="localePickerIcon").forEach(o=>this.removeChild(o)),this.game.imageManager.loadImages([{imageName:"__localePickerIcon",svgString:this.icon.svgString,height:this.icon.height,width:this.icon.width}]),this.iconSprite||(this.iconSprite=new O({name:"localePickerIcon",imageName:"__localePickerIcon",position:this.iconPosition,isUserInteractionEnabled:!0}),this.addChild(this.iconSprite),this.iconSprite.onTapDown(o=>{o.handled=!0,this.setDialogVisibility(!0)}),this.iconSprite.onTapUp(o=>{o.handled=!0}),this.iconSprite.onTapUpAny(o=>{o.handled=!0}),this.iconSprite.onPointerUp(o=>{o.handled=!0}),this.iconSprite.onPointerDown(o=>{o.handled=!0}));const t=new g({rect:{width:m2c2Globals.canvasCssWidth,height:m2c2Globals.canvasCssHeight,x:m2c2Globals.canvasCssWidth/2,y:m2c2Globals.canvasCssHeight/2},fillColor:[0,0,0,this.overlayAlpha],zPosition:-1,isUserInteractionEnabled:!0,hidden:!0});t.onTapUp(o=>{o.handled=!0,this.eventListeners.length>0&&this.eventListeners.filter(a=>a.type==="LocalePickerResult").forEach(a=>{const d={type:p.Composite,compositeType:this.compositeType,compositeEventType:"LocalePickerResult",target:this,handled:!1,result:{locale:void 0},timestamp:B.now(),iso8601Timestamp:new Date().toISOString()};a.callback(d)}),this.setDialogVisibility(!1)}),t.onTapUpAny(o=>{o.handled=!0}),t.onTapDown(o=>{o.handled=!0}),t.onPointerUp(o=>{o.handled=!0}),t.onPointerDown(o=>{o.handled=!0}),this.addChild(t);const e=this.fontSize/this.DEFAULT_FONT_SIZE*50,i=this.localeOptions.length*e,s=m2c2Globals.canvasCssWidth/2,r={x:m2c2Globals.canvasCssWidth/2,y:m2c2Globals.canvasCssHeight/2},n=new g({rect:{width:s,height:i,x:r.x,y:r.y},cornerRadius:this.cornerRadius,fillColor:this.backgroundColor,isUserInteractionEnabled:!0,hidden:!0});n.onTapDown(o=>{o.handled=!0}),n.onTapUp(o=>{o.handled=!0}),n.onTapUpAny(o=>{o.handled=!0}),n.onPointerUp(o=>{o.handled=!0}),n.onPointerDown(o=>{o.handled=!0}),this.addChild(n);for(let o=0;o<this.localeOptions.length;o++){const a=this.localeOptions[o];if(a.svg){this.game.imageManager.loadImages([{imageName:a.text,svgString:a.svg.svgString,height:a.svg.height,width:a.svg.width}]);const d=new O({imageName:a.text,position:{x:r.x,y:r.y+o*e-i/2+e/2},isUserInteractionEnabled:!0,zPosition:1,hidden:!0});if(this.addChild(d),this.currentLocale===a.locale){const c=new S({text:this.LEFT_SELECTION_INDICATOR,fontSize:this.fontSize,fontColor:this.fontColor,position:{x:r.x-a.svg.width/2-this.fontSize/2,y:r.y+o*e-i/2+e/2},hidden:!0,localize:!1});this.addChild(c);const w=new S({text:this.RIGHT_SELECTION_INDICATOR,fontSize:this._fontSize,fontColor:this.fontColor,position:{x:r.x+a.svg.width/2+this.fontSize/2,y:r.y+o*e-i/2+e/2},hidden:!0,localize:!1});this.addChild(w)}d.onTapUp(c=>{c.handled=!0,this.handleLocaleSelection(c,a)}),d.onTapUpAny(c=>{c.handled=!0}),d.onTapDown(c=>{c.handled=!0}),d.onPointerUp(c=>{c.handled=!0}),d.onPointerDown(c=>{c.handled=!0})}else{let d=a.text;this.currentLocale===a.locale&&(d=`${this.LEFT_SELECTION_INDICATOR} ${d} ${this.RIGHT_SELECTION_INDICATOR}`);const c=new S({text:d,fontSize:this.fontSize,fontColor:this.fontColor,position:{x:r.x,y:r.y+o*e-i/2+e/2},isUserInteractionEnabled:!0,zPosition:1,hidden:!0,localize:!1});c.onTapUp(w=>{w.handled=!0,this.handleLocaleSelection(w,a)}),c.onTapUpAny(w=>{w.handled=!0}),c.onTapDown(w=>{w.handled=!0}),c.onPointerUp(w=>{w.handled=!0}),c.onPointerDown(w=>{w.handled=!0}),this.addChild(c)}}this.needsInitialization=!1}handleLocaleSelection(t,e){this.eventListeners.length>0&&this.eventListeners.filter(i=>i.type===p.Composite&&i.compositeType==="LocalePickerResult"&&i.nodeUuid==this.uuid).forEach(i=>{const s={type:p.Composite,compositeType:this.compositeType,compositeEventType:"LocalePickerResult",target:this,handled:!1,result:{locale:e.locale},timestamp:B.now(),iso8601Timestamp:new Date().toISOString()};i.callback(s)}),this.setDialogVisibility(!1),this.automaticallyChangeLocale&&(this.game.i18n?.switchToLocale(e.locale),this.currentLocale=e.locale)}setDialogVisibility(t){this.children.filter(e=>e.name!=="localePickerIcon").forEach(e=>{e.hidden=!t})}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t,this.needsInitialization=!0}get fontSize(){return this._fontSize}set fontSize(t){this._fontSize=t,this.needsInitialization=!0}get fontColor(){return this._fontColor}set fontColor(t){this._fontColor=t,this.needsInitialization=!0}get cornerRadius(){return this._cornerRadius}set cornerRadius(t){this._cornerRadius=t,this.needsInitialization=!0}get overlayAlpha(){return this._overlayAlpha}set overlayAlpha(t){this._overlayAlpha=t,this.needsInitialization=!0}get icon(){const t=this;return{get svgString(){return t._icon.svgString},set svgString(e){t._icon.svgString=e,t.needsInitialization=!0},get imageName(){return t._icon.imageName},set imageName(e){t._icon.imageName=e,t.needsInitialization=!0},get height(){return t._icon.height},set height(e){t._icon.height=e,t.needsInitialization=!0},get width(){return t._icon.width},set width(e){t._icon.width=e,t.needsInitialization=!0}}}set icon(t){this._icon=t,this.needsInitialization=!0}get iconPosition(){const t=this;return{get x(){return t._iconPosition.x},set x(e){t._iconPosition.x=e,t.iconSprite&&(t.iconSprite.position=t._iconPosition),t.needsInitialization=!0},get y(){return t._iconPosition.y},set y(e){t._iconPosition.y=e,t.iconSprite&&(t.iconSprite.position=t._iconPosition),t.needsInitialization=!0}}}set iconPosition(t){this._iconPosition=t,this.iconSprite&&(this.iconSprite.position=t),this.needsInitialization=!0}get localeOptions(){return this._localeOptions}set localeOptions(t){this._localeOptions=t,this.needsInitialization=!0}get currentLocale(){return this._currentLocale}set currentLocale(t){t!==this.currentLocale&&(this._currentLocale=t,this.needsInitialization=!0)}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}duplicate(t){throw new h(`duplicate not implemented. ${t}`)}}class tt extends E{constructor(t){super(t),this.compositeType="CountdownTimer",this._milliseconds=3e3,this._tickIntervalMilliseconds=1e3,this._fontSize=50,this._fontColor=l.White,this._zeroString="0",this._timerShape={circle:{radius:100},fillColor:l.RoyalBlue},this._textVerticalBias=.5,this.countdownSequence=new Array,this._isRunning=!1,this.hasStopped=!1,this.originalOptions=JSON.parse(JSON.stringify(t)),t.milliseconds&&(this.milliseconds=t.milliseconds),t.tickIntervalMilliseconds&&(this.tickIntervalMilliseconds=t.tickIntervalMilliseconds),t.fontName&&(this.fontName=t.fontName),t.fontSize!==void 0&&(this.fontSize=t.fontSize),t.fontColor&&(this.fontColor=t.fontColor),t.zeroString!==void 0&&(this.zeroString=t.zeroString),t.timerShape&&(this.timerShape=t.timerShape),t.textVerticalBias!==void 0&&(this.textVerticalBias=t.textVerticalBias),this.saveNodeNewEvent()}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),...this.originalOptions}}initialize(){if(this.removeAllChildren(),this._isRunning=!1,this.hasStopped=!1,this.timerShape?.circle===void 0&&this.timerShape?.rectangle===void 0||this.timerShape?.circle!==void 0)this.timerShapeNode=new g({circleOfRadius:this.timerShape.circle?.radius??100,fillColor:this.timerShape?.fillColor??l.RoyalBlue,suppressEvents:!0}),this.addChild(this.timerShapeNode);else if(this.timerShape?.rectangle!==void 0)this.timerShapeNode=new g({rect:{width:this.timerShape?.rectangle?.width??200,height:this.timerShape?.rectangle?.height??200},cornerRadius:this.timerShape?.rectangle?.cornerRadius,fillColor:this.timerShape?.fillColor??l.RoyalBlue,suppressEvents:!0}),this.addChild(this.timerShapeNode);else throw new h("Invalid timer shape options.");if(this.size=this.timerShapeNode.size,this.milliseconds%1e3!==0)throw new h("CountdownTimer milliseconds must be a multiple of 1000.");const t=Math.floor(this.milliseconds/1e3);this.timerNumberLabel=new S({text:t.toString(),fontSize:this.fontSize,fontName:this._fontName,fontColor:this.fontColor,layout:{constraints:{topToTopOf:this.timerShapeNode,bottomToBottomOf:this.timerShapeNode,startToStartOf:this.timerShapeNode,endToEndOf:this.timerShapeNode,verticalBias:this.textVerticalBias}},suppressEvents:!0}),this.timerShapeNode.addChild(this.timerNumberLabel),this.countdownSequence=new Array;for(let e=this.milliseconds;e>this.tickIntervalMilliseconds;e=e-this.tickIntervalMilliseconds)this.countdownSequence.push(k.wait({duration:this.tickIntervalMilliseconds})),this.countdownSequence.push(k.custom({callback:()=>{this.tick(e-this.tickIntervalMilliseconds)}}));this.countdownSequence.push(k.wait({duration:this.tickIntervalMilliseconds})),this.countdownSequence.push(k.custom({callback:()=>{this.tick(0);const e={type:p.Composite,compositeType:this.compositeType,compositeEventType:"CountdownTimerComplete",target:this,handled:!1,millisecondsRemaining:0,...f.createTimestamps()};this.handleCompositeEvent(e),this.saveEvent(e),this.eventListeners.length>0&&this.eventListeners.filter(i=>i.type===p.Composite&&i.compositeType==="CountdownTimer"&&i.compositeEventType==="CountdownTimerComplete").forEach(i=>{i.callback(e)})}})),this.needsInitialization=!1}tick(t){const e={type:p.Composite,compositeType:this.compositeType,compositeEventType:"CountdownTimerTick",target:this,handled:!1,millisecondsRemaining:t,...f.createTimestamps()};this.handleCompositeEvent(e),this.saveEvent(e),this.eventListeners.length>0&&this.eventListeners.filter(i=>i.type===p.Composite&&i.compositeType==="CountdownTimer"&&i.compositeEventType==="CountdownTimerTick").forEach(i=>{i.callback(e)})}start(){if(this.isRunning)throw new h("CountdownTimer: cannot start. It is already running.");if(this.hasStopped)throw new h("CountdownTimer: It has stopped. You cannot start a stopped CountdownTimer. Instead, create a new CountdownTimer or call CountdownTimer.reset() before starting.");this.needsInitialization&&this.initialize(),this.run(k.sequence(this.countdownSequence),"__countdownSequenceAction"),this._isRunning=!0}stop(){this.isRunning&&(this.removeAction("__countdownSequenceAction"),this._isRunning=!1,this.hasStopped=!0)}reset(){this.stop(),this.initialize()}get isRunning(){return this._isRunning}handleCompositeEvent(t){if(!this.timerNumberLabel)throw new h("Timer number label not found.");switch(t.compositeEventType){case"CountdownTimerTick":{this.timerNumberLabel.text=Math.ceil(t.millisecondsRemaining/1e3).toString();break}case"CountdownTimerComplete":{this.timerNumberLabel.text=this.zeroString;break}default:throw new h(`Invalid TimerCountdown event type: ${t.compositeEventType}`)}}onTick(t,e){const i={type:p.Composite,compositeEventType:"CountdownTimerTick",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addCountdownTimerEventListener(i,e)}onComplete(t,e){const i={type:p.Composite,compositeEventType:"CountdownTimerComplete",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addCountdownTimerEventListener(i,e)}addCountdownTimerEventListener(t,e){e?.replaceExisting&&(this.eventListeners=this.eventListeners.filter(i=>!(i.nodeUuid===t.nodeUuid&&i.type===t.type&&i.compositeType===t.compositeType))),this.eventListeners.push(t)}get milliseconds(){return this._milliseconds}set milliseconds(t){m.value(this._milliseconds,t)||(this._milliseconds=t,this.needsInitialization=!0,this.savePropertyChangeEvent("milliseconds",t))}get tickIntervalMilliseconds(){return this._tickIntervalMilliseconds}set tickIntervalMilliseconds(t){m.value(this._tickIntervalMilliseconds,t)||(this._tickIntervalMilliseconds=t,this.needsInitialization=!0,this.savePropertyChangeEvent("tickIntervalMilliseconds",t))}get fontColor(){return this._fontColor}set fontColor(t){m.value(this._fontColor,t)||(this._fontColor=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontColor",t))}get fontName(){return this._fontName}set fontName(t){this._fontName!==t&&(this._fontName=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontName",t))}get fontSize(){return this._fontSize}set fontSize(t){m.value(this._fontSize,t)||(this._fontSize=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontSize",t))}get zeroString(){return this._zeroString}set zeroString(t){this._zeroString!==t&&(this._zeroString=t,this.needsInitialization=!0,this.savePropertyChangeEvent("zeroString",t))}get timerShape(){return this._timerShape}set timerShape(t){m.value(this._timerShape,t)||(this._timerShape=t,this.needsInitialization=!0,this.savePropertyChangeEvent("timerShape",t))}get textVerticalBias(){return this._textVerticalBias}set textVerticalBias(t){m.value(this._textVerticalBias,t)||(this._textVerticalBias=t,this.needsInitialization=!0,this.savePropertyChangeEvent("textVerticalBias",t))}duplicate(t){throw new h(`Method not implemented. ${t}`)}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}}f.registerM2NodeClass(tt);class yt extends E{constructor(t){super(t),this.compositeType="Slider",this._trackSize={width:250,height:10},this._trackColor=l.Black,this._thumbSize={width:20,height:40},this._thumbColor=l.DarkGray,this._min=0,this._max=100,this._value=(this.max-this.min)/2,this.originalOptions=JSON.parse(JSON.stringify(t)),t.trackSize&&(this.trackSize=t.trackSize),t.trackColor&&(this.trackColor=t.trackColor),t.thumbSize&&(this.thumbSize=t.thumbSize),t.thumbColor&&(this.thumbColor=t.thumbColor),t.min!==void 0&&(this.min=t.min),t.max!==void 0&&(this.max=t.max),t.value!==void 0&&(this.value=t.value),this.saveNodeNewEvent()}get thumbShape(){if(this._thumbShape===void 0)throw new h("thumbShape is not defined.");return this._thumbShape}set thumbShape(t){this._thumbShape=t}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),...this.originalOptions}}initialize(){this.removeAllChildren();const t=new g({rect:{width:this.trackSize.width,height:this.trackSize.height},cornerRadius:8,fillColor:this.trackColor});this.addChild(t),this.thumbShape=new g({rect:{width:this.thumbSize.width,height:this.thumbSize.height},cornerRadius:8,fillColor:this.thumbColor,isUserInteractionEnabled:!0,draggable:!0,zPosition:1,position:{x:this.value*this.trackSize.width/(this.max-this.min)-this.trackSize.width/2,y:0}}),t.addChild(this.thumbShape);const e=new g({rect:{width:this.trackSize.width,height:this.thumbSize.height},alpha:0,isUserInteractionEnabled:!0,zPosition:0});t.addChild(e),e.onTapDown(s=>{this.thumbShape.position.x=s.point.x-t.size.width/2,this.updateThumbLabel()});const i=new g({rect:{width:this.trackSize.width,height:this.parentSceneAsNode.size.height*2},alpha:0,isUserInteractionEnabled:!0});this.addChild(i),i.onPointerMove(()=>{this.thumbShape.draggable=!0}),i.onPointerLeave(()=>{this.thumbShape.draggable=!1}),this.thumbShape.onTapDown(s=>{s.handled=!0,s.point.y!==0&&(this.thumbShape.position.y=0),s.point.x<-this.trackSize.width/2&&(this.thumbShape.position.x=-this.trackSize.width/2),s.point.x>this.trackSize.width/2&&(this.thumbShape.position.x=this.trackSize.width/2),this.updateThumbLabel()}),this.thumbShape.onDrag(s=>{s.position.y!==0&&(this.thumbShape.position.y=0),s.position.x<-this.trackSize.width/2&&(this.thumbShape.position.x=-this.trackSize.width/2),s.position.x>this.trackSize.width/2&&(this.thumbShape.position.x=this.trackSize.width/2),this.updateThumbLabel()}),this.thumbShape.onDragEnd(()=>{const s=Math.round((this.thumbShape.position.x+this.trackSize.width/2)/this.trackSize.width*(this.max-this.min));this.thumbShape.position.x=s/(this.max-this.min)*this.trackSize.width-this.trackSize.width/2,this.updateThumbLabel()}),this.needsInitialization=!1}updateThumbLabel(){const t=(this.thumbShape.position.x+this.trackSize.width/2)/this.trackSize.width*(this.max-this.min);this.thumbLabel||(this.thumbLabel=new S({text:t.toString()}),this.addChild(this.thumbLabel)),this.thumbLabel.text=Math.round(t).toString(),this.thumbLabel.position={x:this.thumbShape.position.x,y:this.thumbShape.position.y-30},this.thumbLabel&&(this.thumbLabel.position={x:this.thumbShape.position.x,y:this.thumbShape.position.y-30});const e={type:p.Composite,compositeType:"Slider",compositeEventType:"SliderValueChanged",target:this,value:t,...f.createTimestamps()};this.handleCompositeEvent(e),this.saveEvent(e),this.eventListeners.length>0&&this.eventListeners.filter(i=>i.type===p.Composite&&i.compositeType===this.compositeType&&i.compositeEventType==="SliderValueChanged").forEach(i=>{i.callback(e)})}onValueChanged(t,e){const i={type:p.Composite,compositeEventType:"SliderValueChanged",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addSliderEventListener(i,e)}addSliderEventListener(t,e){e?.replaceExisting&&(this.eventListeners=this.eventListeners.filter(i=>!(i.nodeUuid===t.nodeUuid&&i.type===t.type&&i.compositeType===t.compositeType))),this.eventListeners.push(t)}get trackSize(){return this._trackSize}set trackSize(t){this._trackSize=t}get trackColor(){return this._trackColor}set trackColor(t){this._trackColor=t}get thumbSize(){return this._thumbSize}set thumbSize(t){this._thumbSize=t}get thumbColor(){return this._thumbColor}set thumbColor(t){this._thumbColor=t}get value(){return this._value}set value(t){this._value=t}get min(){return this._min}set min(t){this._min=t}get max(){return this._max}set max(t){this._max=t}duplicate(t){throw new h(`Method not implemented. ${t}`)}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}}console.log("\u26AA @m2c2kit/addons version 0.3.29 (9f27c146)");export{_ as Button,wt as CountdownScene,tt as CountdownTimer,pt as Dialog,j as DialogResult,Z as DrawPad,y as DrawPadEventType,I as DrawPadItemEventType,A as Grid,gt as Instructions,Ct as LocalePicker,yt as Slider,X as VirtualKeyboard};
1
+ import{M2c2KitHelpers as g,Composite as E,WebColors as l,M2Error as h,Shape as f,EventStoreMode as $,Equal as m,Label as S,CanvasKitHelpers as ht,M2EventType as p,Timer as B,MutablePath as lt,Easings as q,Story as dt,Transition as V,TransitionDirection as H,LabelHorizontalAlignmentMode as ct,Scene as J,Dimensions as ut,Sprite as O,Action as k}from"@m2c2kit/core";class A extends E{constructor(t){if(super(t),this.compositeType="Grid",this._rows=0,this._columns=0,this._gridBackgroundColor=[0,0,255,.25],this._gridLineColor=l.Red,this._gridLineWidth=1,this._gridChildren=new Array,this.cellContainers=new Array,t.size)this.size=t.size;else throw new h("grid size must be specified");if(t.rows)if(t.rows>=1)this.rows=t.rows;else throw new h("grid rows must be at least 1");else throw new h("grid rows must be specified");if(t.columns)if(t.columns>=1)this.columns=t.columns;else throw new h("grid columns must be at least 1");else throw new h("grid columns must be specified");t.backgroundColor&&(this.gridBackgroundColor=t.backgroundColor),t.gridLineColor&&(this.gridLineColor=t.gridLineColor),t.gridLineWidth&&(this.gridLineWidth=t.gridLineWidth),this.cellWidth=this.size.width/this.columns,this.cellHeight=this.size.height/this.rows,this.saveNodeNewEvent()}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),rows:this.rows,columns:this.columns,size:this.size,backgroundColor:this.gridBackgroundColor,gridLineWidth:this.gridLineWidth,gridLineColor:this.gridLineColor}}initialize(){this.descendants.forEach(t=>{t.parent===this?super.removeChild(t):t.parent?.removeChild(t)}),this.gridBackground=new f({name:"__"+this.name+"-gridRectangle",rect:{size:this.size},fillColor:this.gridBackgroundColor,strokeColor:this.gridLineColor,lineWidth:this.gridLineWidth,isUserInteractionEnabled:this.isUserInteractionEnabled,suppressEvents:!0}),super.addChild(this.gridBackground),this.gridBackground.isUserInteractionEnabled=this.isUserInteractionEnabled;for(let t=1;t<this.columns;t++){const e=new f({name:"__"+this.name+"-gridVerticalLine-"+(t-1),rect:{size:{width:this.gridLineWidth,height:this.size.height},origin:{x:-this.size.width/2+this.cellWidth*t,y:0}},fillColor:this.gridLineColor,suppressEvents:!0});this.gridBackground.addChild(e)}for(let t=1;t<this.rows;t++){const e=new f({name:"__"+this.name+"-gridHorizontalLine-"+(t-1),rect:{size:{width:this.size.width,height:this.gridLineWidth},origin:{x:0,y:-this.size.height/2+this.cellHeight*t}},fillColor:this.gridLineColor,suppressEvents:!0});this.gridBackground.addChild(e)}this.cellContainers=new Array(this.rows).fill([]).map(()=>new Array(this.columns));for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++){const i=new f({name:"__"+this.name+"-gridCellContainer-"+t+"-"+e,rect:{size:{width:this.cellWidth,height:this.cellHeight},origin:{x:-this.size.width/2+this.cellWidth*e+this.cellWidth/2,y:-this.size.height/2+this.cellHeight*t+this.cellHeight/2}},fillColor:l.Transparent,lineWidth:0,suppressEvents:!0});this.gridBackground.addChild(i),this.cellContainers[t][e]=i}this.gridChildren.length>0&&this.gridChildren.forEach(t=>{if(!this.cellWidth||!this.cellHeight||!this.gridBackground)throw new h("cellWidth, cellHeight, or gridBackground undefined or null");if(this.game.eventStore.mode===$.Replay){const e=[...this.game.nodes,...this.game.materializedNodes].find(i=>i.uuid===t.node);if(!e)throw new h("grid: child node not found");e?.parent?.removeChild(e),this.cellContainers[t.row][t.column].addChild(e)}else t.node.parent?.removeChild(t.node),this.cellContainers[t.row][t.column].addChild(t.node)}),this.needsInitialization=!1}get gridBackground(){if(!this._gridBackground)throw new h("gridBackground is null or undefined");return this._gridBackground}set gridBackground(t){this._gridBackground=t}get rows(){return this._rows}set rows(t){m.value(this._rows,t)||(this._rows=t,this.needsInitialization=!0)}get columns(){return this._columns}set columns(t){m.value(this._columns,t)||(this._columns=t,this.needsInitialization=!0)}get gridBackgroundColor(){return this._gridBackgroundColor}set gridBackgroundColor(t){m.value(this._gridBackgroundColor,t)||(this._gridBackgroundColor=t,this.needsInitialization=!0)}get gridLineWidth(){return this._gridLineWidth}set gridLineWidth(t){m.value(this._gridLineWidth,t)||(this._gridLineWidth=t,this.needsInitialization=!0)}get gridLineColor(){return this._gridLineColor}set gridLineColor(t){m.value(this._gridLineColor,t)||(this._gridLineColor=t,this.needsInitialization=!0)}dispose(){}duplicate(t){const e=new A({...this.getNodeOptions(),...this.getDrawableOptions(),rows:this.rows,columns:this.columns,size:this.size,backgroundColor:this.gridBackgroundColor,gridLineWidth:this.gridLineWidth,gridLineColor:this.gridLineColor,name:t});return this.children.length>0&&(e.children=this.children.map(i=>{const s=i.duplicate();return s.parent=e,s})),e}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}get gridChildren(){return this._gridChildren}set gridChildren(t){this._gridChildren=t,this.needsInitialization=!0,this.savePropertyChangeEvent("gridChildren",this.gridChildren.map(e=>({node:e.node.uuid,row:e.row,column:e.column})))}removeAllGridChildren(){if(this.gridChildren.length!==0){for(;this.gridChildren.length;)this.gridChildren=this.gridChildren.slice(0,-1);this.needsInitialization=!0}}addAtCell(t,e,i){(e<0||e>=this.rows||i<0||i>=this.columns)&&console.warn(`warning: addAtCell() requested to add node at row ${e}, column ${i}. This is outside the bounds of grid ${this.name}, which is size ${this.rows}x${this.columns}. Note that addAtCell() uses zero-based indexing. AddAtCell() will proceed, but may draw nodes outside the grid`),this.gridChildren=[...this.gridChildren,{node:t,row:e,column:i}],this.needsInitialization=!0}removeAllAtCell(t,e){this.gridChildren=this.gridChildren.filter(i=>i.row!==t&&i.column!==e),this.needsInitialization=!0}removeGridChild(t){this.gridChildren=this.gridChildren.filter(e=>e.node!=t),this.needsInitialization=!0}addChild(t){console.warn("Grid.addChild() was called -- did you mean to call addAtCell() instead?"),super.addChild(t)}removeAllChildren(){console.warn("Grid.removeAllChildren() was called -- did you mean to call removeAllGridChildren() instead?"),super.removeAllChildren()}removeChild(t){console.warn("Grid.removeChild() was called -- did you mean to call removeGridChild() instead?"),super.removeChild(t)}removeChildren(t){console.warn("Grid.removeChildren() was called -- did you mean to call removeGridChild() instead?"),super.removeChildren(t)}}g.registerM2NodeClass(A);class _ extends E{constructor(t){super(t),this.compositeType="Button",this.isText=!0,this._backgroundColor=l.Black,this._cornerRadius=9,this._fontSize=20,this._text="",this._fontColor=l.White,this._interpolation={},this._localize=!0,t.text&&(this.text=t.text),t.size?this.size=t.size:this.size={width:200,height:50},t.cornerRadius!==void 0&&(this.cornerRadius=t.cornerRadius),t.fontName&&(this.fontName=t.fontName),t.fontNames&&(this.fontNames=t.fontNames),t.fontSize!==void 0&&(this.fontSize=t.fontSize),t.fontColor&&(this.fontColor=t.fontColor),t.backgroundColor&&(this.backgroundColor=t.backgroundColor),t.interpolation&&(this.interpolation=t.interpolation),t.localize!==void 0&&(this.localize=t.localize),this.saveNodeNewEvent()}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),...this.getTextOptions(),size:this.size,cornerRadius:this.cornerRadius,backgroundColor:this.backgroundColor,fontNames:this.fontNames}}initialize(){this.removeAllChildren(),this.backgroundPaint=new this.canvasKit.Paint,this.backgroundPaint.setColor(this.canvasKit.Color(this.backgroundColor[0],this.backgroundColor[1],this.backgroundColor[2],this.backgroundColor[3])),this.backgroundPaint.setStyle(this.canvasKit.PaintStyle.Fill);const t=new f({name:"__"+this.name+"-buttonRectangle",rect:{size:this.size},cornerRadius:this.cornerRadius,fillColor:this._backgroundColor,suppressEvents:!0});this.addChild(t);const e=new S({name:"__"+this.name+"-buttonLabel",text:this.text,localize:this.localize,interpolation:this.interpolation,fontName:this.fontName,fontNames:this.fontNames,fontSize:this.fontSize,fontColor:this.fontColor,suppressEvents:!0});t.addChild(e),this.needsInitialization=!1}dispose(){ht.Dispose([this.backgroundPaint])}get text(){return this._text}set text(t){m.value(this._text,t)||(this._text=t,this.needsInitialization=!0,this.savePropertyChangeEvent("text",t))}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){m.value(this._backgroundColor,t)||(this._backgroundColor=t,this.needsInitialization=!0,this.savePropertyChangeEvent("backgroundColor",t))}get fontColor(){return this._fontColor}set fontColor(t){m.value(this._fontColor,t)||(this._fontColor=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontColor",t))}get fontName(){return this._fontName}set fontName(t){this._fontName!==t&&(this._fontName=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontName",t))}get fontNames(){return this._fontNames}set fontNames(t){m.value(this._fontNames,t)||(this._fontNames=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontNames",t))}get cornerRadius(){return this._cornerRadius}set cornerRadius(t){m.value(this._cornerRadius,t)||(this._cornerRadius=t,this.needsInitialization=!0,this.savePropertyChangeEvent("cornerRadius",t))}get fontSize(){return this._fontSize}set fontSize(t){m.value(this._fontSize,t)||(this._fontSize=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontSize",t))}get interpolation(){return this._interpolation}set interpolation(t){m.value(this._interpolation,t)||(this._interpolation=t,Object.freeze(this._interpolation),this.needsInitialization=!0,this.savePropertyChangeEvent("interpolation",t))}get localize(){return this._localize}set localize(t){m.value(this._localize,t)||(this._localize=t,this.needsInitialization=!0,this.savePropertyChangeEvent("localize",t))}duplicate(t){const e=new _({...this.getNodeOptions(),...this.getDrawableOptions(),...this.getTextOptions(),size:this.size,cornerRadius:this.cornerRadius,backgroundColor:this.backgroundColor,fontColor:this.fontColor,name:t,localize:this.localize,interpolation:JSON.parse(JSON.stringify(this.interpolation)),fontName:this.fontName,fontNames:JSON.parse(JSON.stringify(this.fontNames))});return this.children.length>0&&(e.children=this.children.map(i=>{const s=i.duplicate();return s.parent=e,s})),e}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}}g.registerM2NodeClass(_);var j=(v=>(v.Dismiss="Dismiss",v.Positive="Positive",v.Negative="Negative",v))(j||{});class pt extends E{constructor(t){super(t),this.compositeType="Dialog",this._backgroundColor=l.White,this.cornerRadius=9,this.overlayAlpha=.5,this.contentText="",this.positiveButtonText="",this.negativeButtonText="",this._fontColor=l.White,this.zPosition=Number.MAX_VALUE,this.hidden=!0,t&&(t.overlayAlpha&&(this.overlayAlpha=t.overlayAlpha),t.messageText&&(this.contentText=t.messageText),t.positiveButtonText&&(this.positiveButtonText=t.positiveButtonText),t.negativeButtonText&&(this.negativeButtonText=t.negativeButtonText),t.size&&(this.size=t.size),t.cornerRadius&&(this.cornerRadius=t.cornerRadius),t.fontColor&&(this.fontColor=t.fontColor),t.backgroundColor&&(this.backgroundColor=t.backgroundColor))}show(){this.hidden=!1}onDialogResult(t,e){const i={type:p.Composite,compositeType:"DialogResult",nodeUuid:this.uuid,callback:t};e?.replaceExisting&&(this.eventListeners=this.eventListeners.filter(s=>!(s.nodeUuid===i.nodeUuid&&s.type===i.type))),this.eventListeners.push(i)}initialize(){this.removeAllChildren();const t=new f({rect:{width:m2c2Globals.canvasCssWidth,height:m2c2Globals.canvasCssHeight,x:m2c2Globals.canvasCssWidth/2,y:m2c2Globals.canvasCssHeight/2},fillColor:[0,0,0,this.overlayAlpha],zPosition:-1,isUserInteractionEnabled:!0});t.onTapDown(n=>{n.handled=!0,this.hidden=!0,this.eventListeners.length>0&&this.eventListeners.filter(o=>o.type===p.Composite).forEach(o=>{const a={type:p.Composite,target:this,handled:!1,dialogResult:"Dismiss",timestamp:B.now(),iso8601Timestamp:new Date().toISOString()};o.callback(a)})}),this.addChild(t);const e=new f({rect:{width:300,height:150,x:m2c2Globals.canvasCssWidth/2,y:m2c2Globals.canvasCssHeight/2},cornerRadius:this.cornerRadius,fillColor:this.backgroundColor,isUserInteractionEnabled:!0});e.onTapDown(n=>{n.handled=!0}),this.addChild(e);const i=new S({text:this.contentText,fontSize:24,position:{x:200,y:360}});this.addChild(i);const s=new _({text:this.negativeButtonText,position:{x:120,y:440},size:{width:100,height:40},isUserInteractionEnabled:!0,zPosition:1});s.onTapDown(n=>{n.handled=!0,this.hidden=!0}),s.onTapDown(n=>{n.handled=!0,this.hidden=!0,this.eventListeners.length>0&&this.eventListeners.filter(o=>o.type===p.Composite).forEach(o=>{const a={type:p.Composite,target:this,handled:!1,dialogResult:"Negative",timestamp:B.now(),iso8601Timestamp:new Date().toISOString()};o.callback(a)})});const r=new _({text:this.positiveButtonText,position:{x:280,y:440},size:{width:100,height:40},isUserInteractionEnabled:!0,zPosition:1});r.onTapDown(n=>{n.handled=!0,this.hidden=!0,this.eventListeners.length>0&&this.eventListeners.filter(o=>o.type===p.Composite).forEach(o=>{const a={type:p.Composite,target:this,handled:!1,dialogResult:"Positive",timestamp:B.now(),iso8601Timestamp:new Date().toISOString()};o.callback(a)})}),this.addChild(s),this.addChild(r),this.needsInitialization=!1}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t,this.needsInitialization=!0}get fontColor(){return this._fontColor}set fontColor(t){this._fontColor=t,this.needsInitialization=!0}get hidden(){return this._hidden}set hidden(t){this._hidden=t,this.needsInitialization=!0}duplicate(t){throw new h(`duplicate not implemented. ${t}`)}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}}const y={StrokeStart:"StrokeStart",StrokeMove:"StrokeMove",StrokeEnd:"StrokeEnd"},I={StrokeEnter:"StrokeEnter",StrokeLeave:"StrokeLeave"};class Z extends E{constructor(t){if(super(t),this.compositeType="DrawPad",this.resumeDrawingOnReturn=!1,this.continuousDrawingOnly=!1,this._backgroundColor=[0,0,0,0],this._borderColor=l.Black,this._borderWidth=1,this._lineColor=l.Red,this._lineWidth=1,this.isDrawingPointerDown=!1,this.pointerIsDownAndPointerLeftDrawAreaWhenDown=!1,this.currentStrokesNotAllowed=!1,this.strokes=new Array,this.originalOptions=JSON.parse(JSON.stringify(t)),t.isUserInteractionEnabled===void 0&&(this.isUserInteractionEnabled=!0),!t.size)throw new h("DrawPad size must be specified");this.size=t.size,t.lineColor&&(this.lineColor=t.lineColor),t.lineWidth&&(this.lineWidth=t.lineWidth),t.backgroundColor&&(this.backgroundColor=t.backgroundColor),t.borderColor&&(this.borderColor=t.borderColor),t.borderWidth&&(this.borderWidth=t.borderWidth),t.resumeDrawingOnReturn!==void 0&&(this.resumeDrawingOnReturn=t.resumeDrawingOnReturn),t.continuousDrawingOnly!==void 0&&(this.continuousDrawingOnly=t.continuousDrawingOnly),t.continuousDrawingOnlyExceptionDistance!==void 0&&(this.continuousDrawingOnlyExceptionDistance=t.continuousDrawingOnlyExceptionDistance),this.saveNodeNewEvent()}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),...this.originalOptions}}initialize(){this.initializeDrawShape(),this.initializeDrawArea(),this.needsInitialization=!1}initializeDrawShape(){if(!this.drawShape){const t=new lt;this.drawShape=new f({path:t,size:this.size}),this.addChild(this.drawShape)}this.drawShape.strokeColor=this.lineColor,this.drawShape.lineWidth=this.lineWidth}initializeDrawArea(){this.drawArea||(this.drawArea=new f({rect:{size:this.size},isUserInteractionEnabled:!0,suppressEvents:!0}),this.addChild(this.drawArea),this.drawArea.onTapDown(t=>{this.handleTapDown(t)}),this.drawArea.onPointerMove(t=>{this.handlePointerMove(t)}),this.drawArea.onTapUpAny(()=>{this.handleTapUpAny()}),this.drawArea.onTapLeave(t=>{this.handleTapLeave(t)})),this.drawArea.fillColor=this.backgroundColor,this.drawArea.strokeColor=this.borderColor,this.drawArea.lineWidth=this.borderWidth}dist(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}handleTapDown(t){if(this.isUserInteractionEnabled){if(!this.drawShape?.path)throw new h("DrawPad.handleTapDown(): no drawShape.path");const e=this.drawShape.path;if(this.continuousDrawingOnly&&e.subpaths.length!==0){const s=e.subpaths[e.subpaths.length-1][e.subpaths[e.subpaths.length-1].length-1],r=t.point;if(this.continuousDrawingOnlyExceptionDistance===void 0||this.dist(s,r)>this.continuousDrawingOnlyExceptionDistance){this.currentStrokesNotAllowed=!0;return}}this.currentStrokesNotAllowed=!1,this.isDrawingPointerDown=!0,e.move(t.point);const i={type:y.StrokeStart,target:this,handled:!1,position:t.point,...g.createTimestamps()};this.strokes.push([{type:y.StrokeStart,position:t.point,iso8601Timestamp:new Date().toISOString(),interpolated:!1}]),this.raiseDrawPadEvent(i)}}addInterpolatedStrokeMove(t){const e=this.strokes.length,i=this.strokes[e-1].length,s=this.strokes[this.strokes.length-1][i-1].position,r=this.interpolateToDrawPadBorder(t,s,this.size);if(!this.drawShape?.path)throw new h("DrawPad.addInterpolatedStrokeMove(): no drawShape.path");this.drawShape.path.addLine(r);const o={type:y.StrokeMove,target:this,handled:!1,position:r,...g.createTimestamps()};return this.strokes[e-1].push({type:y.StrokeMove,position:r,iso8601Timestamp:new Date().toISOString(),interpolated:!0}),this.raiseDrawPadEvent(o),r}handleTapLeave(t){if(this.currentStrokesNotAllowed){this.isDrawingPointerDown=!1;return}if(this.resumeDrawingOnReturn===!1){this.isDrawingPointerDown=!1;const e=this.strokes.length,i=this.strokes[e-1].length;let s=!1,r=t.point;this.isPointWithinDrawPad(t.point,this.size)||(r=this.addInterpolatedStrokeMove(t.point),s=!0);const n={type:y.StrokeEnd,position:this.strokes[e-1][i-1].position,target:this,handled:!1,...g.createTimestamps()};this.strokes[e-1].push({type:y.StrokeEnd,position:s?r:this.strokes[e-1][i-1].position,iso8601Timestamp:new Date().toISOString(),interpolated:s}),this.raiseDrawPadEvent(n),this.currentStrokesNotAllowed=!0}else this.pointerIsDownAndPointerLeftDrawAreaWhenDown=!0}handleTapUpAny(){if(this.currentStrokesNotAllowed){this.isDrawingPointerDown=!1;return}if(this.isUserInteractionEnabled){this.isDrawingPointerDown=!1,this.pointerIsDownAndPointerLeftDrawAreaWhenDown=!1;const t=this.strokes.length,e=this.strokes[t-1].length,i={type:y.StrokeEnd,position:this.strokes[t-1][e-1].position,target:this,handled:!1,...g.createTimestamps()};this.strokes[t-1].push({type:y.StrokeEnd,position:this.strokes[t-1][e-1].position,iso8601Timestamp:new Date().toISOString(),interpolated:!1}),this.raiseDrawPadEvent(i)}}handlePointerMove(t){if(this.isUserInteractionEnabled&&this.isDrawingPointerDown){if(!this.drawShape?.path)throw new h("DrawPad.handlePointerMove(): no drawShape.path");const e=this.drawShape.path;this.isDrawingPointerDown&&!this.pointerIsDownAndPointerLeftDrawAreaWhenDown&&e.addLine(t.point),this.pointerIsDownAndPointerLeftDrawAreaWhenDown&&(this.pointerIsDownAndPointerLeftDrawAreaWhenDown=!1,e.move(t.point));const i={type:y.StrokeMove,target:this,handled:!1,position:t.point,...g.createTimestamps()},s=this.strokes.length;this.strokes[s-1].push({type:y.StrokeMove,position:t.point,iso8601Timestamp:new Date().toISOString(),interpolated:!1}),this.raiseDrawPadEvent(i)}}update(){super.update()}draw(t){super.drawChildren(t)}raiseDrawPadEvent(t){this.eventListeners.length>0&&this.eventListeners.filter(e=>e.type===t.type).forEach(e=>{e.callback(t)})}raiseDrawPadItemEvent(t,e){t.eventListeners.length>0&&t.eventListeners.filter(i=>i.type===e.type).forEach(i=>{i.callback(e)})}clear(){if(!this.drawShape?.path)throw new h("DrawPad.clear(): no drawShape.path");this.drawShape.path.clear(),this.strokes=new Array}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}onStrokeStart(t,e){this.addEventListener(y.StrokeStart,t,e)}onStrokeMove(t,e){this.addEventListener(y.StrokeMove,t,e)}onStrokeEnd(t,e){this.addEventListener(y.StrokeEnd,t,e)}addItem(t){return Object.defineProperty(t,"drawPadPosition",{get:function(){const e=t.parent;return{get x(){return t.position.x+e.size.width/2},set x(i){t.position.x=i-e.size.width/2},get y(){return t.position.y+e.size.height/2},set y(i){t.position.y=i-e.size.height/2}}},set:function(e){const i=t.parent;t.position.x=e.x-i.size.width/2,t.position.y=e.y-i.size.height/2}}),Object.defineProperty(t,"onStrokeEnter",{value:function(e,i){this.addEventListener(I.StrokeEnter,e,i)}}),Object.defineProperty(t,"onStrokeLeave",{value:function(e,i){this.addEventListener(I.StrokeLeave,e,i)}}),Object.defineProperty(t,"isStrokeWithinBounds",{value:!1,writable:!0}),t.onPointerDown(()=>{if(this.isDrawingPointerDown&&t.isStrokeWithinBounds===!1){t.isStrokeWithinBounds=!0;const e={type:I.StrokeEnter,target:t,...g.createTimestamps()};this.raiseDrawPadItemEvent(t,e)}}),t.onPointerMove(()=>{if(this.isDrawingPointerDown&&t.isStrokeWithinBounds===!1){t.isStrokeWithinBounds=!0;const e={type:I.StrokeEnter,target:t,...g.createTimestamps()};this.raiseDrawPadItemEvent(t,e)}}),t.onPointerLeave(()=>{if(this.isDrawingPointerDown&&t.isStrokeWithinBounds===!0){t.isStrokeWithinBounds=!1;const e={type:I.StrokeLeave,target:t,...g.createTimestamps()};this.raiseDrawPadItemEvent(t,e)}}),t.onPointerUp(()=>{if(t.isStrokeWithinBounds===!0){t.isStrokeWithinBounds=!1;const e={type:I.StrokeLeave,target:t,...g.createTimestamps()};this.raiseDrawPadItemEvent(t,e)}}),this.addChild(t),t.zPosition=-1,t.position.x=t.position.x-this.size.width/2,t.position.y=t.position.y-this.size.height/2,t.isUserInteractionEnabled=!0,t}takeScreenshot(){const t=this.drawArea;if(!t)throw new h("DrawPad.takeScreenshot(): no drawArea");const e=(t.absolutePosition.x-t.size.width/2)*m2c2Globals.canvasScale,i=(t.absolutePosition.y-t.size.height/2)*m2c2Globals.canvasScale,s=t.size.width*m2c2Globals.canvasScale,r=t.size.height*m2c2Globals.canvasScale,n={alphaType:this.game.canvasKit.AlphaType.Unpremul,colorType:this.game.canvasKit.ColorType.RGBA_8888,colorSpace:this.game.canvasKit.ColorSpace.SRGB,width:s,height:r},a=this.game.snapshots[0].readPixels(e,i,n),d=this.game.canvasKit.MakeImage(n,a,a.length/r);if(!d)throw new h("DrawPad.takeScreenshot(): no croppedImage");const c=d.encodeToBytes();if(!c)throw new h("DrawPad.takeScreenshot(): croppedImage.encodeToBytes() failed");return d.delete(),this.arrayBufferToBase64String(c)}isPointWithinDrawPad(t,e){return t.x>=0&&t.x<=e.width&&t.y>=0&&t.y<=e.height}interpolateToDrawPadBorder(t,e,i){const s=(t.y-e.y)/(t.x-e.x),r=t.y-s*t.x,n={x:0,y:0};if(!Number.isFinite(s)){if(n.x=t.x,t.y-e.y>0)return n.y=i.height,n;if(t.y-e.y<0)return n.y=0,n}const o=s*0+r,a=s*i.width+r;if(o>=0&&o<=i.height&&t.x-e.x<0)return n.x=0,n.y=o,n;if(a>=0&&a<=i.height&&t.x-e.x>0)return n.x=i.width,n.y=a,n;const d=(0-r)/s,c=(i.height-r)/s;return d>=0&&d<=i.width&&t.y-e.y<0?(n.x=d,n.y=0,n):c>=0&&c<=i.width&&t.y-e.y>0?(n.x=c,n.y=i.height,n):t}arrayBufferToBase64String(t){let e="";const i=new Uint8Array(t);for(let s=0;s<i.byteLength;s++)e+=String.fromCharCode(i[s]);return window.btoa(e)}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t,this.needsInitialization=!0}get borderColor(){return this._borderColor}set borderColor(t){this._borderColor=t,this.needsInitialization=!0}get borderWidth(){return this._borderWidth}set borderWidth(t){this._borderWidth=t,this.needsInitialization=!0}get lineColor(){return this._lineColor}set lineColor(t){this._lineColor=t,this.needsInitialization=!0}get lineWidth(){return this._lineWidth}set lineWidth(t){this._lineWidth=t,this.needsInitialization=!0}duplicate(t){throw new h(`DrawPad.duplicate(): Method not implemented. ${t}`)}}g.registerM2NodeClass(Z);class X extends E{constructor(t){super(t),this.compositeType="VirtualKeyboard",this.keyboardRows=new Array,this.shiftActivated=!1,this.keyShapes=new Array,this.keyLabels=new Array,this.originalOptions=JSON.parse(JSON.stringify(t)),t.isUserInteractionEnabled===void 0&&(this._isUserInteractionEnabled=!0),this.size=t.size,this.position=t.position??{x:0,y:0},this.keyboardHorizontalPaddingPercent=t.keyboardHorizontalPaddingPercent??.02,this.keyboardVerticalPaddingPercent=t.keyboardVerticalPaddingPercent??.025,this.keyHorizontalPaddingPercent=t.keyHorizontalPaddingPercent??.1,this.keyVerticalPaddingPercent=t.keyVerticalPaddingPercent??.1,t.rows!==void 0&&(this.keyboardRows=t.rows.map(e=>e.map(s=>{if(s instanceof Object&&!Array.isArray(s)){const r=s;return s.keyIconShapeOptions&&(s.keyIconShapeOptions.suppressEvents=!0,r.keyIcon=new f(s.keyIconShapeOptions),r.keyIconShapeOptions=void 0),r}else return s}))),this.keysPerRow=t.keysPerRow??NaN,this.fontSize=t.fontSize??NaN,this.fontNames=t.fontNames,this.hiddenKeys=t.hiddenKeys??"",this.capitalLettersOnly=t.capitalLettersOnly??!1,this.keyColor=t.keyColor??l.White,this.keyDownColor=t.keyDownColor??l.Transparent,this.specialKeyDownColor=t.specialKeyDownColor??l.LightSteelBlue,this.backgroundColor=t.backgroundColor??[242,240,244,1],this.showKeyDownPreview=t.showKeyDownPreview??!0,this.saveNodeNewEvent()}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),...this.originalOptions}}initialize(){this.game.eventStore.mode===$.Replay&&(this._isUserInteractionEnabled=!1),this.keyboardRows.length===0&&(this.keyboardRows=this.createDefaultKeyboardRows(),this.keysPerRow=this.keyboardRows.reduce((a,d)=>Math.max(a,d.length),0),this.fontSize=this.size.height/this.keyboardRows.length/2.5);const t=new f({rect:{size:this.size},fillColor:this.backgroundColor,suppressEvents:!0});this.addChild(t);const e=this.internalKeyboardRowsToInternalKeyboardConfiguration(this.keyboardRows),i={x:-t.size.width/2,y:-t.size.height/2},s=(this.keyboardVerticalPaddingPercent??.025)*this.size.height,r=(this.keyboardHorizontalPaddingPercent??.02)*this.size.width,n=(this.size.height-2*s)/e.length,o=(this.size.width-2*r)/this.keysPerRow;this.keyShapes=[];for(let a=0;a<e.length;a++){const d=e[a],c=d.reduce((x,C)=>x+(C.widthRatio??1),0);let w=0;c<this.keysPerRow&&(w=(this.size.width-2*r-o*c)/2);for(let x=0;x<d.length;x++){const C=d[x];if(this.hiddenKeys?.split(",").map(b=>b===" "?" ":b.trim()).includes(C.code))continue;const R=d.slice(0,x).reduce((b,U)=>b+(U.widthRatio??1),0)*o,L=new f({rect:{size:{width:o*(C.widthRatio??1),height:n}},fillColor:l.Transparent,strokeColor:l.Transparent,lineWidth:1,position:{x:w+i.x+r+R+(C.widthRatio??1)*o/2,y:i.y+s+a*n+n/2},suppressEvents:!0}),K=o*(C.widthRatio??1)-2*this.keyHorizontalPaddingPercent*o,W=n-(C.heightRatio??1)-2*this.keyVerticalPaddingPercent*n,T=new f({rect:{size:{width:K,height:W}},cornerRadius:4,fillColor:this.keyColor,lineWidth:0,isUserInteractionEnabled:this.isUserInteractionEnabled,suppressEvents:!0});T.userData={code:C.code},L.addChild(T),this.keyShapes.push(T);const D=new S({text:C.labelText,fontSize:this.fontSize,fontNames:this.fontNames,suppressEvents:!0});D.userData={code:C.code},L.addChild(D),this.keyLabels.push(D),C.keyIcon&&L.addChild(C.keyIcon),t.addChild(L),T.onTapUp(b=>{this.handleKeyShapeTapUp(C,T,b)}),T.onTapDown(b=>{this.handleKeyShapeTapDown(C,T,b)}),T.onTapLeave(b=>{this.handleKeyShapeTapLeave(C,T,b)})}}this.letterCircle=new f({circleOfRadius:28,fillColor:l.Silver,hidden:!0,suppressEvents:!0}),t.addChild(this.letterCircle),this.letterCircleLabel=new S({text:"",fontSize:this.fontSize,fontNames:this.fontNames,suppressEvents:!0}),this.letterCircle.addChild(this.letterCircleLabel),this.needsInitialization=!1}onKeyDown(t,e){const i={type:p.Composite,compositeEventType:"VirtualKeyboardKeyDown",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addVirtualKeyboardEventListener(i,e)}onKeyUp(t,e){const i={type:p.Composite,compositeEventType:"VirtualKeyboardKeyUp",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addVirtualKeyboardEventListener(i,e)}onKeyLeave(t,e){const i={type:p.Composite,compositeEventType:"VirtualKeyboardKeyLeave",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addVirtualKeyboardEventListener(i,e)}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}duplicate(t){throw new h(`Method not implemented. ${t}`)}handleKeyShapeTapDown(t,e,i){t.isShift&&(this.shiftActivated=!this.shiftActivated);const s=this.getKeyAsString(t),r={type:p.Composite,compositeType:"VirtualKeyboard",compositeEventType:"VirtualKeyboardKeyDown",target:this,handled:!1,key:s,code:t.code,shiftKey:this.shiftActivated,keyTapMetadata:{size:e.size,point:i.point,buttons:i.buttons},...g.createTimestamps()};this.handleCompositeEvent(r),this.saveEvent(r),this.eventListeners.length>0&&this.eventListeners.filter(n=>n.type===p.Composite&&n.compositeType==="VirtualKeyboard"&&n.compositeEventType==="VirtualKeyboardKeyDown").forEach(n=>{n.callback(r)})}handleKeyShapeTapUp(t,e,i){const s=this.getKeyAsString(t),r={type:p.Composite,compositeType:"VirtualKeyboard",compositeEventType:"VirtualKeyboardKeyUp",target:this,handled:!1,key:s,code:t.code,shiftKey:this.shiftActivated,keyTapMetadata:{size:e.size,point:i.point,buttons:i.buttons},...g.createTimestamps()};this.handleCompositeEvent(r),this.saveEvent(r),this.eventListeners.length>0&&this.eventListeners.filter(n=>n.type===p.Composite&&n.compositeType==="VirtualKeyboard"&&n.compositeEventType==="VirtualKeyboardKeyUp").forEach(n=>{n.callback(r)})}handleKeyShapeTapLeave(t,e,i){const s=this.getKeyAsString(t),r={type:p.Composite,compositeType:"VirtualKeyboard",compositeEventType:"VirtualKeyboardKeyLeave",target:this,handled:!1,key:s,code:t.code,shiftKey:this.shiftActivated,keyTapMetadata:{size:e.size,point:i.point,buttons:i.buttons},...g.createTimestamps()};this.handleCompositeEvent(r),this.saveEvent(r),this.eventListeners.length>0&&this.eventListeners.filter(n=>n.type===p.Composite&&n.compositeType==="VirtualKeyboard"&&n.compositeEventType==="VirtualKeyboardKeyLeave").forEach(n=>{n.callback(r)})}getKeyAsString(t){return t.isShift||t.code===" "||t.code==="Backspace"?t.code:this.shiftActivated?t.labelTextShifted??t.code:t.labelText??t.code}internalKeyboardRowsToInternalKeyboardConfiguration(t){return t.map(e=>e.map(i=>{let s=1;const r=1;let n,o,a,d,c=!1;return typeof i=="string"?(n=i,this.capitalLettersOnly?o=n.toUpperCase():o=n,a=n.toUpperCase()):Array.isArray(i)?(n=i[0],o=n,a=i[1]):(n=i.code,o=i.labelText??"",a=i.labelTextShifted??o,s=i.widthRatio??1,d=i.keyIcon,c=i.isShift??!1),{widthRatio:s,heightRatio:r,code:n,labelText:o,labelTextShifted:a,keyIcon:d,isShift:c}}))}handleCompositeEvent(t){const e=this.internalKeyboardRowsToInternalKeyboardConfiguration(this.keyboardRows),i=this.keyShapes.find(s=>s.userData.code===t.code);if(!i)throw new h("keyShape is not defined");switch(this.shiftActivated=t.shiftKey,t.compositeEventType){case"VirtualKeyboardKeyDown":{this.handleKeyDownEvent(t,e,i);break}case"VirtualKeyboardKeyUp":{this.handleKeyUpEvent(t,e,i);break}case"VirtualKeyboardKeyLeave":{this.handleKeyLeaveEvent(t,e,i);break}default:throw new h(`Unknown VirtualKeyboardEvent: ${t.compositeEventType}`)}}handleKeyDownEvent(t,e,i){if(t.code.toLowerCase().includes("shift"))t.shiftKey?this.showKeyboardShifted(e):this.showKeyboardNotShifted(e);else if(t.code===" "||t.code==="Backspace")i.fillColor=this.specialKeyDownColor;else if(i.fillColor=this.keyDownColor,this.showKeyDownPreview){if(!this.letterCircle||!this.letterCircleLabel)throw new h("letterCircle is not defined");this.letterCircle.hidden=!1;const s=i.parent;if(this.letterCircle.position.x=s.position.x,i.rect?.size?.height===void 0)throw new h("keyShape.rect.height is undefined");this.letterCircle.position.y=s.position.y-i.rect.size.height*1.2;const n=this.internalKeyboardRowsToInternalKeyboardConfiguration(this.keyboardRows).flat().find(o=>o.code===t.code);if(!n)throw new h("key is not defined");this.shiftActivated?this.letterCircleLabel.text=n.labelTextShifted??n.code:this.letterCircleLabel.text=n.labelText??n.code}}handleKeyUpEvent(t,e,i){if(!(t.code.toLowerCase().includes("shift")&&t.shiftKey)){if(t.code.toLowerCase().includes("shift")&&!t.shiftKey){this.shiftActivated=!1,this.showKeyboardNotShifted(e);return}if(i.fillColor=this.keyColor,!this.letterCircle)throw new h("letterCircle is not defined");this.letterCircle.hidden=!0,!t.code.toLowerCase().includes("shift")&&t.shiftKey&&(this.shiftActivated=!1,this.showKeyboardNotShifted(e))}}handleKeyLeaveEvent(t,e,i){if(t.code.toLowerCase().includes("shift")){t.shiftKey?(this.showKeyboardNotShifted(e),this.shiftActivated=!1):(this.showKeyboardShifted(e),this.shiftActivated=!0);return}if(i.fillColor=this.keyColor,!this.letterCircle)throw new h("letterCircle is not defined");this.letterCircle.hidden=!0}showKeyboardShifted(t){this.keyShapes.filter(s=>s.userData.code.toLowerCase().includes("shift")).forEach(s=>{s.fillColor=this.specialKeyDownColor}),t.flat().filter(s=>s.isShift).forEach(s=>{s.keyIcon&&(s.keyIcon.fillColor=l.Black)}),t.flatMap(s=>s).forEach(s=>{const r=this.keyLabels.find(n=>n.userData.code===s.code);if(!r)throw new h("keyLabel is not defined");r.text!==void 0&&(r.text=s.labelTextShifted??"")})}showKeyboardNotShifted(t){this.keyShapes.filter(s=>s.userData.code.toLowerCase().includes("shift")).forEach(s=>{s.fillColor=this.keyColor}),t.flat().filter(s=>s.isShift).forEach(s=>{s.keyIcon&&(s.keyIcon.fillColor=l.Transparent)}),t.flatMap(s=>s).forEach(s=>{const r=this.keyLabels.find(n=>n.userData.code===s.code);if(!r)throw new h("keyLabel is not defined");r.text!==void 0&&(r.text=s.labelText??"")})}createDefaultKeyboardRows(){const t=[["1","!"],["2","@"],["3","#"],["4","$"],["5","%"],["6","^"],["7","&"],["8","*"],["9","("],["0",")"]],e=["q","w","e","r","t","y","u","i","o","p"],i=["a","s","d","f","g","h","j","k","l"],s={path:{pathString:"m288-6.6849e-14 -288 288h144v288h288v-288h144l-288-288z",width:24},lineWidth:2,strokeColor:l.Black,fillColor:l.Transparent,suppressEvents:!0},r={path:{pathString:"M10.625 5.09 0 22.09l10.625 17H44.18v-34H10.625zm31.555 32H11.734l-9.375-15 9.375-15H42.18v30zm-23.293-6.293 7.293-7.293 7.293 7.293 1.414-1.414-7.293-7.293 7.293-7.293-1.414-1.414-7.293 7.293-7.293-7.293-1.414 1.414 7.293 7.293-7.293 7.293",width:24},lineWidth:1,strokeColor:l.Black,fillColor:l.Red,suppressEvents:!0},n=[{code:"Shift",isShift:!0,widthRatio:1.5,keyIcon:new f(s)},"z","x","c","v","b","n","m",{code:"Backspace",widthRatio:1.5,keyIcon:new f(r)}];return[t,e,i,n,[{code:" ",labelText:"SPACE",widthRatio:5}]]}addVirtualKeyboardEventListener(t,e){e?.replaceExisting&&(this.eventListeners=this.eventListeners.filter(i=>!(i.nodeUuid===t.nodeUuid&&i.type===t.type&&i.compositeType===t.compositeType))),this.eventListeners.push(t)}get isUserInteractionEnabled(){return this._isUserInteractionEnabled}set isUserInteractionEnabled(t){this._isUserInteractionEnabled=t,this.keyShapes?.forEach(e=>{e.isUserInteractionEnabled=t})}}g.registerM2NodeClass(X);const Y=q.sinusoidalInOut,Q=500;class ft extends dt{static create(t){const e=new Array;return t.instructionScenes.forEach((i,s)=>{const r=i.nextSceneTransition??t.nextSceneTransition??V.slide({direction:H.Left,duration:Q,easing:Y}),n=i.backSceneTransition??t.backSceneTransition??V.slide({direction:H.Right,duration:Q,easing:Y}),o=i.backButtonText??t.backButtonText??"Back",a=i.backButtonTextInterpolation??t.backButtonTextInterpolation,d=i.nextButtonText??t.nextButtonText??"Next",c=i.nextButtonTextInterpolation??t.nextButtonTextInterpolation,w=i.backButtonWidth??t.backButtonWidth??125,x=i.nextButtonWidth??t.nextButtonWidth??125,C=i.backButtonHeight??t.backButtonHeight??50,R=i.nextButtonHeight??t.nextButtonHeight??50,L=i.backgroundColor??t.backgroundColor,K=i.imageAboveText??!0,W=i.imageMarginTop??0,T=i.imageMarginBottom??0,D=i.textMarginStart??48,b=i.textMarginEnd??48,U=i.textAlignmentMode??ct.Left,et=i.textFontSize??16,it=i.titleFontSize??16,st=i.titleMarginTop??48,nt=i.backButtonBackgroundColor??t.backButtonBackgroundColor??l.Black,ot=i.backButtonFontColor??t.backButtonFontColor??l.White,rt=i.nextButtonBackgroundColor??t.nextButtonBackgroundColor??l.Black,at=i.nextButtonFontColor??t.nextButtonFontColor??l.White,M=t.sceneNamePrefix??"instructions",u=new J({name:M+"-"+(s+1).toString().padStart(2,"0"),backgroundColor:L});let G;i.title!==void 0&&(G=new S({text:i.title,interpolation:i.titleInterpolation,fontSize:it,layout:{marginTop:st,constraints:{topToTopOf:u,startToStartOf:u,endToEndOf:u}}}),u.addChild(G));let N;if(i.text!==void 0&&(N=new S({text:i.text,interpolation:i.textInterpolation,preferredMaxLayoutWidth:ut.MatchConstraint,horizontalAlignmentMode:U,fontSize:et,layout:{marginStart:D,marginEnd:b,constraints:{topToTopOf:u,bottomToBottomOf:u,startToStartOf:u,endToEndOf:u,verticalBias:i.textVerticalBias}}}),u.addChild(N)),i.imageName!==void 0){let z;N!==void 0?K?z=new O({imageName:i.imageName,layout:{marginBottom:T,constraints:{bottomToTopOf:N,startToStartOf:u,endToEndOf:u}}}):z=new O({imageName:i.imageName,layout:{marginTop:W,constraints:{topToBottomOf:N,startToStartOf:u,endToEndOf:u}}}):z=new O({imageName:i.imageName,layout:{constraints:{topToTopOf:u,bottomToBottomOf:u,verticalBias:i.imageVerticalBias,startToStartOf:u,endToEndOf:u}}}),u.addChild(z)}if(s>0){const z=new _({name:"backButton",text:o,interpolation:a,fontColor:ot,backgroundColor:nt,size:{width:w,height:C},layout:{marginStart:32,marginBottom:80,constraints:{bottomToBottomOf:u,startToStartOf:u}}});z.isUserInteractionEnabled=!0,z.onTapDown(()=>{u.game.presentScene(M+"-"+(s+1-1).toString().padStart(2,"0"),n)}),u.addChild(z)}const P=new _({name:"nextButton",text:d,interpolation:c,fontColor:at,backgroundColor:rt,size:{width:x,height:R},layout:{marginEnd:32,marginBottom:80,constraints:{bottomToBottomOf:u,endToEndOf:u}}});P.isUserInteractionEnabled=!0,s!==t.instructionScenes.length-1?P.onTapDown(()=>{u.game.presentScene(M+"-"+(s+1+1).toString().padStart(2,"0"),r)}):t.postInstructionsScene!==void 0?P.onTapDown(()=>{u.game.presentScene(t.postInstructionsScene??"",r)}):P.onTapDown(()=>{const z=u.game.scenes.indexOf(u);if(z===-1)console.warn("warning: postInstructionsScene is not defined, and next scene cannot be determined.");else{const F=z+1;F<u.game.scenes.length?u.game.presentScene(u.game.scenes[F],r):console.warn("warning: postInstructionsScene is not defined, and there is no next scene to present.")}}),u.addChild(P),e.push(u)}),e}static Create(t){return this.create(t)}}const gt=q.sinusoidalInOut,mt=500;class wt extends J{constructor(t){if(super(t),t?.transitionDurationMilliseconds!==void 0&&t?.transition)throw new h("Both transition and transitionDurationMilliseconds options were provided. Only one should be provided. If using a custom transition, then the duration of that transition must be specified within the custom transition.");let e;if(t?.timerShape?.circle===void 0&&t?.timerShape?.rectangle===void 0||t?.timerShape.circle!==void 0)e=new f({circleOfRadius:t?.timerShape?.circle?.radius??100,layout:{constraints:{topToTopOf:this,bottomToBottomOf:this,startToStartOf:this,endToEndOf:this,verticalBias:t?.shapeVerticalBias??.5}},fillColor:t?.timerShape?.fillColor??l.RoyalBlue}),this.addChild(e);else if(t?.timerShape.rectangle!==void 0)e=new f({rect:{width:t?.timerShape?.rectangle?.width??200,height:t?.timerShape?.rectangle?.height??200},cornerRadius:t?.timerShape?.rectangle?.cornerRadius,layout:{constraints:{topToTopOf:this,bottomToBottomOf:this,startToStartOf:this,endToEndOf:this,verticalBias:t.shapeVerticalBias??.5}},fillColor:t?.timerShape?.fillColor??l.RoyalBlue}),this.addChild(e);else throw new h("Invalid timer shape options.");const i=Math.floor(t.milliseconds/1e3),s=new S({text:"",fontSize:t?.timerNumbersFontSize??50,fontName:t?.timerNumbersFontName,fontColor:t?.timerNumbersFontColor??l.White});e.addChild(s);const r=new S({text:t?.text??"GET READY",fontSize:t?.textFontSize??50,fontName:t?.textFontName,fontColor:t?.textFontColor,layout:{marginTop:t?.textMarginTop??32,constraints:{topToBottomOf:e,startToStartOf:this,endToEndOf:this}}});this.addChild(r);const n=new Array;for(let o=i-1;o>0;o--)n.push(k.wait({duration:1e3})),n.push(k.custom({callback:()=>{s.text=o.toString()}}));n.push(k.wait({duration:1e3})),n.push(k.custom({callback:()=>{s.text=t?.zeroString??"0"}})),t?.zeroDwellMilliseconds!==void 0&&n.push(k.wait({duration:t.zeroDwellMilliseconds})),n.push(k.custom({callback:()=>{const o=this.game;o.scenes.indexOf(this)===o.scenes.length-1&&o.end();const d=o.scenes[o.scenes.indexOf(this)+1];o.presentScene(d,t?.transition??V.slide({direction:H.Left,duration:t?.transitionDurationMilliseconds??mt,easing:gt}))}})),this.onSetup(()=>{s.text=i.toString()}),this.onAppear(()=>{this.run(k.sequence(n))})}}class Ct extends E{constructor(t){super(t),this.compositeType="LocalePicker",this.DEFAULT_FONT_SIZE=24,this.automaticallyChangeLocale=!0,this._localeOptions=new Array,this._backgroundColor=l.White,this._fontSize=this.DEFAULT_FONT_SIZE,this._fontColor=l.Black,this._cornerRadius=8,this._overlayAlpha=.5,this._icon={svgString:'<svg xmlns="http://www.w3.org/2000/svg" width="420" height="420" stroke="#000" fill="none"><path stroke-width="26" d="M209 15a195 195 0 1 0 2 0z"/><path stroke-width="18" d="M210 15v390m195-195H15M59 90a260 260 0 0 0 302 0m0 240a260 260 0 0 0-302 0M195 20a250 250 0 0 0 0 382m30 0a250 250 0 0 0 0-382"/></svg>',height:32,width:32},this._iconPosition={x:32,y:32},this.LEFT_SELECTION_INDICATOR="\xAB",this.RIGHT_SELECTION_INDICATOR="\xBB",this.zPosition=Number.MAX_VALUE,t&&(t.localeOptions&&(this.localeOptions=t.localeOptions),t.backgroundColor&&(this.backgroundColor=t.backgroundColor),t.overlayAlpha!==void 0&&(this.overlayAlpha=t.overlayAlpha),t.fontSize!==void 0&&(this.fontSize=t.fontSize),t.fontColor&&(this.fontColor=t.fontColor),t.cornerRadius&&(this.cornerRadius=t.cornerRadius),t.currentLocale!==void 0&&(this.currentLocale=t.currentLocale),t.icon&&(this.icon=t.icon),t.automaticallyChangeLocale!==void 0&&(this.automaticallyChangeLocale=t.automaticallyChangeLocale))}onResult(t,e){const i={type:p.Composite,compositeType:"LocalePickerResult",nodeUuid:this.uuid,callback:t};e?.replaceExisting&&(this.eventListeners=this.eventListeners.filter(s=>!(s.nodeUuid===i.nodeUuid&&s.type==="LocalePickerResult"))),this.eventListeners.push(i)}initialize(){if(this.currentLocale===void 0&&(this.currentLocale=this.game.i18n?.locale),this.localeOptions.length===0&&Object.keys(this.game.i18n?.translation||{}).filter(a=>a!=="configuration").forEach(a=>{this.localeOptions.push({text:this.game.i18n?.translation[a].localeName||a,locale:a,svg:this.game.i18n?.translation[a].localeSvg})}),this.localeOptions.length===0)throw new h("No locales available for LocalePicker");this.children.filter(o=>o.name!=="localePickerIcon").forEach(o=>this.removeChild(o)),this.game.imageManager.loadImages([{imageName:"__localePickerIcon",svgString:this.icon.svgString,height:this.icon.height,width:this.icon.width}]),this.iconSprite||(this.iconSprite=new O({name:"localePickerIcon",imageName:"__localePickerIcon",position:this.iconPosition,isUserInteractionEnabled:!0}),this.addChild(this.iconSprite),this.iconSprite.onTapDown(o=>{o.handled=!0,this.setDialogVisibility(!0)}),this.iconSprite.onTapUp(o=>{o.handled=!0}),this.iconSprite.onTapUpAny(o=>{o.handled=!0}),this.iconSprite.onPointerUp(o=>{o.handled=!0}),this.iconSprite.onPointerDown(o=>{o.handled=!0}));const t=new f({rect:{width:m2c2Globals.canvasCssWidth,height:m2c2Globals.canvasCssHeight,x:m2c2Globals.canvasCssWidth/2,y:m2c2Globals.canvasCssHeight/2},fillColor:[0,0,0,this.overlayAlpha],zPosition:-1,isUserInteractionEnabled:!0,hidden:!0});t.onTapUp(o=>{o.handled=!0,this.eventListeners.length>0&&this.eventListeners.filter(a=>a.type==="LocalePickerResult").forEach(a=>{const d={type:p.Composite,compositeType:this.compositeType,compositeEventType:"LocalePickerResult",target:this,handled:!1,result:{locale:void 0},timestamp:B.now(),iso8601Timestamp:new Date().toISOString()};a.callback(d)}),this.setDialogVisibility(!1)}),t.onTapUpAny(o=>{o.handled=!0}),t.onTapDown(o=>{o.handled=!0}),t.onPointerUp(o=>{o.handled=!0}),t.onPointerDown(o=>{o.handled=!0}),this.addChild(t);const e=this.fontSize/this.DEFAULT_FONT_SIZE*50,i=this.localeOptions.length*e,s=m2c2Globals.canvasCssWidth/2,r={x:m2c2Globals.canvasCssWidth/2,y:m2c2Globals.canvasCssHeight/2},n=new f({rect:{width:s,height:i,x:r.x,y:r.y},cornerRadius:this.cornerRadius,fillColor:this.backgroundColor,isUserInteractionEnabled:!0,hidden:!0});n.onTapDown(o=>{o.handled=!0}),n.onTapUp(o=>{o.handled=!0}),n.onTapUpAny(o=>{o.handled=!0}),n.onPointerUp(o=>{o.handled=!0}),n.onPointerDown(o=>{o.handled=!0}),this.addChild(n);for(let o=0;o<this.localeOptions.length;o++){const a=this.localeOptions[o];if(a.svg){this.game.imageManager.loadImages([{imageName:a.text,svgString:a.svg.svgString,height:a.svg.height,width:a.svg.width}]);const d=new O({imageName:a.text,position:{x:r.x,y:r.y+o*e-i/2+e/2},isUserInteractionEnabled:!0,zPosition:1,hidden:!0});if(this.addChild(d),this.currentLocale===a.locale){const c=new S({text:this.LEFT_SELECTION_INDICATOR,fontSize:this.fontSize,fontColor:this.fontColor,position:{x:r.x-a.svg.width/2-this.fontSize/2,y:r.y+o*e-i/2+e/2},hidden:!0,localize:!1});this.addChild(c);const w=new S({text:this.RIGHT_SELECTION_INDICATOR,fontSize:this._fontSize,fontColor:this.fontColor,position:{x:r.x+a.svg.width/2+this.fontSize/2,y:r.y+o*e-i/2+e/2},hidden:!0,localize:!1});this.addChild(w)}d.onTapUp(c=>{c.handled=!0,this.handleLocaleSelection(c,a)}),d.onTapUpAny(c=>{c.handled=!0}),d.onTapDown(c=>{c.handled=!0}),d.onPointerUp(c=>{c.handled=!0}),d.onPointerDown(c=>{c.handled=!0})}else{let d=a.text;this.currentLocale===a.locale&&(d=`${this.LEFT_SELECTION_INDICATOR} ${d} ${this.RIGHT_SELECTION_INDICATOR}`);const c=new S({text:d,fontSize:this.fontSize,fontColor:this.fontColor,position:{x:r.x,y:r.y+o*e-i/2+e/2},isUserInteractionEnabled:!0,zPosition:1,hidden:!0,localize:!1});c.onTapUp(w=>{w.handled=!0,this.handleLocaleSelection(w,a)}),c.onTapUpAny(w=>{w.handled=!0}),c.onTapDown(w=>{w.handled=!0}),c.onPointerUp(w=>{w.handled=!0}),c.onPointerDown(w=>{w.handled=!0}),this.addChild(c)}}this.needsInitialization=!1}handleLocaleSelection(t,e){this.eventListeners.length>0&&this.eventListeners.filter(i=>i.type===p.Composite&&i.compositeType==="LocalePickerResult"&&i.nodeUuid==this.uuid).forEach(i=>{const s={type:p.Composite,compositeType:this.compositeType,compositeEventType:"LocalePickerResult",target:this,handled:!1,result:{locale:e.locale},timestamp:B.now(),iso8601Timestamp:new Date().toISOString()};i.callback(s)}),this.setDialogVisibility(!1),this.automaticallyChangeLocale&&(this.game.i18n?.switchToLocale(e.locale),this.currentLocale=e.locale)}setDialogVisibility(t){this.children.filter(e=>e.name!=="localePickerIcon").forEach(e=>{e.hidden=!t})}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t,this.needsInitialization=!0}get fontSize(){return this._fontSize}set fontSize(t){this._fontSize=t,this.needsInitialization=!0}get fontColor(){return this._fontColor}set fontColor(t){this._fontColor=t,this.needsInitialization=!0}get cornerRadius(){return this._cornerRadius}set cornerRadius(t){this._cornerRadius=t,this.needsInitialization=!0}get overlayAlpha(){return this._overlayAlpha}set overlayAlpha(t){this._overlayAlpha=t,this.needsInitialization=!0}get icon(){const t=this;return{get svgString(){return t._icon.svgString},set svgString(e){t._icon.svgString=e,t.needsInitialization=!0},get imageName(){return t._icon.imageName},set imageName(e){t._icon.imageName=e,t.needsInitialization=!0},get height(){return t._icon.height},set height(e){t._icon.height=e,t.needsInitialization=!0},get width(){return t._icon.width},set width(e){t._icon.width=e,t.needsInitialization=!0}}}set icon(t){this._icon=t,this.needsInitialization=!0}get iconPosition(){const t=this;return{get x(){return t._iconPosition.x},set x(e){t._iconPosition.x=e,t.iconSprite&&(t.iconSprite.position=t._iconPosition),t.needsInitialization=!0},get y(){return t._iconPosition.y},set y(e){t._iconPosition.y=e,t.iconSprite&&(t.iconSprite.position=t._iconPosition),t.needsInitialization=!0}}}set iconPosition(t){this._iconPosition=t,this.iconSprite&&(this.iconSprite.position=t),this.needsInitialization=!0}get localeOptions(){return this._localeOptions}set localeOptions(t){this._localeOptions=t,this.needsInitialization=!0}get currentLocale(){return this._currentLocale}set currentLocale(t){t!==this.currentLocale&&(this._currentLocale=t,this.needsInitialization=!0)}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}duplicate(t){throw new h(`duplicate not implemented. ${t}`)}}class tt extends E{constructor(t){super(t),this.compositeType="CountdownTimer",this._milliseconds=3e3,this._tickIntervalMilliseconds=1e3,this._fontSize=50,this._fontColor=l.White,this._zeroString="0",this._timerShape={circle:{radius:100},fillColor:l.RoyalBlue},this._textVerticalBias=.5,this.countdownSequence=new Array,this._isRunning=!1,this.hasStopped=!1,this.originalOptions=JSON.parse(JSON.stringify(t)),t.milliseconds&&(this.milliseconds=t.milliseconds),t.tickIntervalMilliseconds&&(this.tickIntervalMilliseconds=t.tickIntervalMilliseconds),t.fontName&&(this.fontName=t.fontName),t.fontSize!==void 0&&(this.fontSize=t.fontSize),t.fontColor&&(this.fontColor=t.fontColor),t.zeroString!==void 0&&(this.zeroString=t.zeroString),t.timerShape&&(this.timerShape=t.timerShape),t.textVerticalBias!==void 0&&(this.textVerticalBias=t.textVerticalBias),this.saveNodeNewEvent()}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),...this.originalOptions}}initialize(){if(this.removeAllChildren(),this._isRunning=!1,this.hasStopped=!1,this.timerShape?.circle===void 0&&this.timerShape?.rectangle===void 0||this.timerShape?.circle!==void 0)this.timerShapeNode=new f({circleOfRadius:this.timerShape.circle?.radius??100,fillColor:this.timerShape?.fillColor??l.RoyalBlue,suppressEvents:!0}),this.addChild(this.timerShapeNode);else if(this.timerShape?.rectangle!==void 0)this.timerShapeNode=new f({rect:{width:this.timerShape?.rectangle?.width??200,height:this.timerShape?.rectangle?.height??200},cornerRadius:this.timerShape?.rectangle?.cornerRadius,fillColor:this.timerShape?.fillColor??l.RoyalBlue,suppressEvents:!0}),this.addChild(this.timerShapeNode);else throw new h("Invalid timer shape options.");if(this.size=this.timerShapeNode.size,this.milliseconds%1e3!==0)throw new h("CountdownTimer milliseconds must be a multiple of 1000.");const t=Math.floor(this.milliseconds/1e3);this.timerNumberLabel=new S({text:t.toString(),fontSize:this.fontSize,fontName:this._fontName,fontColor:this.fontColor,layout:{constraints:{topToTopOf:this.timerShapeNode,bottomToBottomOf:this.timerShapeNode,startToStartOf:this.timerShapeNode,endToEndOf:this.timerShapeNode,verticalBias:this.textVerticalBias}},suppressEvents:!0}),this.timerShapeNode.addChild(this.timerNumberLabel),this.countdownSequence=new Array;for(let e=this.milliseconds;e>this.tickIntervalMilliseconds;e=e-this.tickIntervalMilliseconds)this.countdownSequence.push(k.wait({duration:this.tickIntervalMilliseconds})),this.countdownSequence.push(k.custom({callback:()=>{this.tick(e-this.tickIntervalMilliseconds)}}));this.countdownSequence.push(k.wait({duration:this.tickIntervalMilliseconds})),this.countdownSequence.push(k.custom({callback:()=>{this.tick(0);const e={type:p.Composite,compositeType:this.compositeType,compositeEventType:"CountdownTimerComplete",target:this,handled:!1,millisecondsRemaining:0,...g.createTimestamps()};this.handleCompositeEvent(e),this.saveEvent(e),this.eventListeners.length>0&&this.eventListeners.filter(i=>i.type===p.Composite&&i.compositeType==="CountdownTimer"&&i.compositeEventType==="CountdownTimerComplete").forEach(i=>{i.callback(e)})}})),this.needsInitialization=!1}tick(t){const e={type:p.Composite,compositeType:this.compositeType,compositeEventType:"CountdownTimerTick",target:this,handled:!1,millisecondsRemaining:t,...g.createTimestamps()};this.handleCompositeEvent(e),this.saveEvent(e),this.eventListeners.length>0&&this.eventListeners.filter(i=>i.type===p.Composite&&i.compositeType==="CountdownTimer"&&i.compositeEventType==="CountdownTimerTick").forEach(i=>{i.callback(e)})}start(){if(this.isRunning)throw new h("CountdownTimer: cannot start. It is already running.");if(this.hasStopped)throw new h("CountdownTimer: It has stopped. You cannot start a stopped CountdownTimer. Instead, create a new CountdownTimer or call CountdownTimer.reset() before starting.");this.needsInitialization&&this.initialize(),this.run(k.sequence(this.countdownSequence),"__countdownSequenceAction"),this._isRunning=!0}stop(){this.isRunning&&(this.removeAction("__countdownSequenceAction"),this._isRunning=!1,this.hasStopped=!0)}reset(){this.stop(),this.initialize()}get isRunning(){return this._isRunning}handleCompositeEvent(t){if(!this.timerNumberLabel)throw new h("Timer number label not found.");switch(t.compositeEventType){case"CountdownTimerTick":{this.timerNumberLabel.text=Math.ceil(t.millisecondsRemaining/1e3).toString();break}case"CountdownTimerComplete":{this.timerNumberLabel.text=this.zeroString;break}default:throw new h(`Invalid TimerCountdown event type: ${t.compositeEventType}`)}}onTick(t,e){const i={type:p.Composite,compositeEventType:"CountdownTimerTick",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addCountdownTimerEventListener(i,e)}onComplete(t,e){const i={type:p.Composite,compositeEventType:"CountdownTimerComplete",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addCountdownTimerEventListener(i,e)}addCountdownTimerEventListener(t,e){e?.replaceExisting&&(this.eventListeners=this.eventListeners.filter(i=>!(i.nodeUuid===t.nodeUuid&&i.type===t.type&&i.compositeType===t.compositeType))),this.eventListeners.push(t)}get milliseconds(){return this._milliseconds}set milliseconds(t){m.value(this._milliseconds,t)||(this._milliseconds=t,this.needsInitialization=!0,this.savePropertyChangeEvent("milliseconds",t))}get tickIntervalMilliseconds(){return this._tickIntervalMilliseconds}set tickIntervalMilliseconds(t){m.value(this._tickIntervalMilliseconds,t)||(this._tickIntervalMilliseconds=t,this.needsInitialization=!0,this.savePropertyChangeEvent("tickIntervalMilliseconds",t))}get fontColor(){return this._fontColor}set fontColor(t){m.value(this._fontColor,t)||(this._fontColor=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontColor",t))}get fontName(){return this._fontName}set fontName(t){this._fontName!==t&&(this._fontName=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontName",t))}get fontSize(){return this._fontSize}set fontSize(t){m.value(this._fontSize,t)||(this._fontSize=t,this.needsInitialization=!0,this.savePropertyChangeEvent("fontSize",t))}get zeroString(){return this._zeroString}set zeroString(t){this._zeroString!==t&&(this._zeroString=t,this.needsInitialization=!0,this.savePropertyChangeEvent("zeroString",t))}get timerShape(){return this._timerShape}set timerShape(t){m.value(this._timerShape,t)||(this._timerShape=t,this.needsInitialization=!0,this.savePropertyChangeEvent("timerShape",t))}get textVerticalBias(){return this._textVerticalBias}set textVerticalBias(t){m.value(this._textVerticalBias,t)||(this._textVerticalBias=t,this.needsInitialization=!0,this.savePropertyChangeEvent("textVerticalBias",t))}duplicate(t){throw new h(`Method not implemented. ${t}`)}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}}g.registerM2NodeClass(tt);class yt extends E{constructor(t){super(t),this.compositeType="Slider",this._trackSize={width:250,height:10},this._trackColor=l.Black,this._thumbSize={width:20,height:40},this._thumbColor=l.DarkGray,this._min=0,this._max=100,this._value=(this.max-this.min)/2,this.originalOptions=JSON.parse(JSON.stringify(t)),t.trackSize&&(this.trackSize=t.trackSize),t.trackColor&&(this.trackColor=t.trackColor),t.thumbSize&&(this.thumbSize=t.thumbSize),t.thumbColor&&(this.thumbColor=t.thumbColor),t.min!==void 0&&(this.min=t.min),t.max!==void 0&&(this.max=t.max),t.value!==void 0&&(this.value=t.value),this.saveNodeNewEvent()}get thumbShape(){if(this._thumbShape===void 0)throw new h("thumbShape is not defined.");return this._thumbShape}set thumbShape(t){this._thumbShape=t}get completeNodeOptions(){return{...this.options,...this.getNodeOptions(),...this.getDrawableOptions(),...this.originalOptions}}initialize(){this.removeAllChildren();const t=new f({rect:{width:this.trackSize.width,height:this.trackSize.height},cornerRadius:8,fillColor:this.trackColor});this.addChild(t),this.thumbShape=new f({rect:{width:this.thumbSize.width,height:this.thumbSize.height},cornerRadius:8,fillColor:this.thumbColor,isUserInteractionEnabled:!0,draggable:!0,zPosition:1,position:{x:this.value*this.trackSize.width/(this.max-this.min)-this.trackSize.width/2,y:0}}),t.addChild(this.thumbShape);const e=new f({rect:{width:this.trackSize.width,height:this.thumbSize.height},alpha:0,isUserInteractionEnabled:!0,zPosition:0});t.addChild(e),e.onTapDown(s=>{this.thumbShape.position.x=s.point.x-t.size.width/2,this.updateThumbLabel()});const i=new f({rect:{width:this.trackSize.width,height:this.parentSceneAsNode.size.height*2},alpha:0,isUserInteractionEnabled:!0});this.addChild(i),i.onPointerMove(()=>{this.thumbShape.draggable=!0}),i.onPointerLeave(()=>{this.thumbShape.draggable=!1}),this.thumbShape.onTapDown(s=>{s.handled=!0,s.point.y!==0&&(this.thumbShape.position.y=0),s.point.x<-this.trackSize.width/2&&(this.thumbShape.position.x=-this.trackSize.width/2),s.point.x>this.trackSize.width/2&&(this.thumbShape.position.x=this.trackSize.width/2),this.updateThumbLabel()}),this.thumbShape.onDrag(s=>{s.position.y!==0&&(this.thumbShape.position.y=0),s.position.x<-this.trackSize.width/2&&(this.thumbShape.position.x=-this.trackSize.width/2),s.position.x>this.trackSize.width/2&&(this.thumbShape.position.x=this.trackSize.width/2),this.updateThumbLabel()}),this.thumbShape.onDragEnd(()=>{const s=Math.round((this.thumbShape.position.x+this.trackSize.width/2)/this.trackSize.width*(this.max-this.min));this.thumbShape.position.x=s/(this.max-this.min)*this.trackSize.width-this.trackSize.width/2,this.updateThumbLabel()}),this.needsInitialization=!1}updateThumbLabel(){const t=(this.thumbShape.position.x+this.trackSize.width/2)/this.trackSize.width*(this.max-this.min);this.thumbLabel||(this.thumbLabel=new S({text:t.toString()}),this.addChild(this.thumbLabel)),this.thumbLabel.text=Math.round(t).toString(),this.thumbLabel.position={x:this.thumbShape.position.x,y:this.thumbShape.position.y-30},this.thumbLabel&&(this.thumbLabel.position={x:this.thumbShape.position.x,y:this.thumbShape.position.y-30});const e={type:p.Composite,compositeType:"Slider",compositeEventType:"SliderValueChanged",target:this,value:t,...g.createTimestamps()};this.handleCompositeEvent(e),this.saveEvent(e),this.eventListeners.length>0&&this.eventListeners.filter(i=>i.type===p.Composite&&i.compositeType===this.compositeType&&i.compositeEventType==="SliderValueChanged").forEach(i=>{i.callback(e)})}onValueChanged(t,e){const i={type:p.Composite,compositeEventType:"SliderValueChanged",compositeType:this.compositeType,nodeUuid:this.uuid,callback:t};this.addSliderEventListener(i,e)}addSliderEventListener(t,e){e?.replaceExisting&&(this.eventListeners=this.eventListeners.filter(i=>!(i.nodeUuid===t.nodeUuid&&i.type===t.type&&i.compositeType===t.compositeType))),this.eventListeners.push(t)}get trackSize(){return this._trackSize}set trackSize(t){this._trackSize=t}get trackColor(){return this._trackColor}set trackColor(t){this._trackColor=t}get thumbSize(){return this._thumbSize}set thumbSize(t){this._thumbSize=t}get thumbColor(){return this._thumbColor}set thumbColor(t){this._thumbColor=t}get value(){return this._value}set value(t){this._value=t}get min(){return this._min}set min(t){this._min=t}get max(){return this._max}set max(t){this._max=t}duplicate(t){throw new h(`Method not implemented. ${t}`)}update(){super.update()}draw(t){super.drawChildren(t)}warmup(t){this.initialize(),this.children.filter(e=>e.isDrawable).forEach(e=>{e.warmup(t)})}}console.log("\u26AA @m2c2kit/addons version 0.3.31 (f8bdff76)");export{_ as Button,wt as CountdownScene,tt as CountdownTimer,pt as Dialog,j as DialogResult,Z as DrawPad,y as DrawPadEventType,I as DrawPadItemEventType,A as Grid,ft as Instructions,Ct as LocalePicker,yt as Slider,X as VirtualKeyboard};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m2c2kit/addons",
3
- "version": "0.3.29",
3
+ "version": "0.3.31",
4
4
  "description": "Additions to m2c2kit core functionality, such as button, grid, and instructions",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -30,12 +30,12 @@
30
30
  },
31
31
  "homepage": "https://m2c2-project.github.io/m2c2kit",
32
32
  "dependencies": {
33
- "@m2c2kit/core": "0.3.30"
33
+ "@m2c2kit/core": "0.3.32"
34
34
  },
35
35
  "devDependencies": {
36
- "@m2c2kit/build-helpers": "0.3.26",
36
+ "@m2c2kit/build-helpers": "0.3.28",
37
37
  "rimraf": "6.0.1",
38
- "rollup": "4.41.0",
38
+ "rollup": "4.45.1",
39
39
  "rollup-plugin-copy": "3.5.0",
40
40
  "rollup-plugin-dts": "6.2.1",
41
41
  "rollup-plugin-esbuild": "6.2.1",