gdcore-tools 2.0.0-gd-v5.4.220-autobuild → 2.0.0-gd-v5.5.222-autobuild

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.
Files changed (29) hide show
  1. package/dist/Runtime/Extensions/3D/JsExtension.js +3 -3
  2. package/dist/Runtime/Extensions/DialogueTree/bondage.js/dist/bondage.d.ts +39 -0
  3. package/dist/Runtime/Extensions/DialogueTree/dialoguetools.js +2 -2
  4. package/dist/Runtime/Extensions/DialogueTree/dialoguetools.js.map +2 -2
  5. package/dist/Runtime/Extensions/Physics2Behavior/JsExtension.js +4 -2
  6. package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js +1 -1
  7. package/dist/Runtime/Extensions/Physics2Behavior/physics2runtimebehavior.js.map +2 -2
  8. package/dist/Runtime/Extensions/Physics3DBehavior/JsExtension.js +64 -10
  9. package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js +1 -1
  10. package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js.map +2 -2
  11. package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js +1 -1
  12. package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js.map +2 -2
  13. package/dist/Runtime/Extensions/Physics3DBehavior/jolt-physics.d.ts +283 -5
  14. package/dist/Runtime/Extensions/Physics3DBehavior/jolt-physics.wasm.js +1 -1
  15. package/dist/Runtime/Extensions/Physics3DBehavior/jolt-physics.wasm.js.map +2 -2
  16. package/dist/Runtime/Extensions/Physics3DBehavior/jolt-physics.wasm.wasm +0 -0
  17. package/dist/Runtime/Extensions/TextInput/JsExtension.js +110 -8
  18. package/dist/Runtime/Extensions/TextInput/textinputruntimeobject-pixi-renderer.js +1 -1
  19. package/dist/Runtime/Extensions/TextInput/textinputruntimeobject-pixi-renderer.js.map +2 -2
  20. package/dist/Runtime/Extensions/TextInput/textinputruntimeobject.js +1 -1
  21. package/dist/Runtime/Extensions/TextInput/textinputruntimeobject.js.map +2 -2
  22. package/dist/Runtime/events-tools/soundtools.js +1 -1
  23. package/dist/Runtime/events-tools/soundtools.js.map +2 -2
  24. package/dist/Runtime/types/project-data.d.ts +0 -1
  25. package/dist/lib/libGD.cjs +1 -1
  26. package/dist/lib/libGD.wasm +0 -0
  27. package/dist/loaders.cjs +3 -3
  28. package/gd.d.ts +44 -24
  29. package/package.json +1 -1
@@ -78,6 +78,18 @@ module.exports = {
78
78
  } else if (propertyName === 'disabled') {
79
79
  objectContent.disabled = newValue === '1';
80
80
  return true;
81
+ } else if (propertyName === 'maxLength') {
82
+ objectContent.maxLength = newValue;
83
+ return true;
84
+ } else if (propertyName === 'paddingX') {
85
+ objectContent.paddingX = Math.max(0, parseFloat(newValue));
86
+ return true;
87
+ } else if (propertyName === 'paddingY') {
88
+ objectContent.paddingY = Math.max(0, parseFloat(newValue));
89
+ return true;
90
+ } else if (propertyName === 'textAlign') {
91
+ objectContent.textAlign = newValue;
92
+ return true;
81
93
  }
82
94
 
83
95
  return false;
@@ -200,6 +212,50 @@ module.exports = {
200
212
  .setLabel(_('Width'))
201
213
  .setGroup(_('Border appearance'));
202
214
 
215
+ objectProperties
216
+ .getOrCreate('paddingX')
217
+ .setValue(
218
+ (objectContent.paddingX !== undefined
219
+ ? objectContent.paddingX
220
+ : 2
221
+ ).toString()
222
+ )
223
+ .setType('number')
224
+ .setLabel(_('Padding (horizontal)'))
225
+ .setGroup(_('Field appearance'));
226
+ objectProperties
227
+ .getOrCreate('paddingY')
228
+ .setValue(
229
+ (objectContent.paddingY !== undefined
230
+ ? objectContent.paddingY
231
+ : 1
232
+ ).toString()
233
+ )
234
+ .setType('number')
235
+ .setLabel(_('Padding (vertical)'))
236
+ .setGroup(_('Field appearance'));
237
+ objectProperties
238
+ .getOrCreate('maxLength')
239
+ .setValue((objectContent.maxLength || 0).toString())
240
+ .setType('number')
241
+ .setLabel(_('Max length'))
242
+ .setDescription(
243
+ _(
244
+ 'The maximum length of the input value (this property will be ignored if the input type is a number).'
245
+ )
246
+ )
247
+ .setAdvanced(true);
248
+
249
+ objectProperties
250
+ .getOrCreate('textAlign')
251
+ .setValue(objectContent.textAlign || 'left')
252
+ .setType('choice')
253
+ .addExtraInfo('left')
254
+ .addExtraInfo('center')
255
+ .addExtraInfo('right')
256
+ .setLabel(_('Text alignment'))
257
+ .setGroup(_('Field appearance'));
258
+
203
259
  return objectProperties;
204
260
  };
205
261
  textInputObject.content = {
@@ -216,6 +272,10 @@ module.exports = {
216
272
  borderWidth: 1,
217
273
  readOnly: false,
218
274
  disabled: false,
275
+ paddingX: 2,
276
+ paddingY: 1,
277
+ textAlign: 'left',
278
+ maxLength: 0,
219
279
  };
220
280
 
221
281
  textInputObject.updateInitialInstanceProperty = function (
@@ -572,6 +632,22 @@ module.exports = {
572
632
  .getCodeExtraInformation()
573
633
  .setFunctionName('isFocused');
574
634
 
635
+ object
636
+ .addScopedCondition(
637
+ 'IsInputSubmitted',
638
+ _('Input is submitted'),
639
+ _(
640
+ 'Check if the input is submitted, which usually happens when the Enter key is pressed on a keyboard, or a specific button on mobile virtual keyboards.'
641
+ ),
642
+ _('_PARAM0_ value was submitted'),
643
+ '',
644
+ 'res/conditions/surObject24.png',
645
+ 'res/conditions/surObject.png'
646
+ )
647
+ .addParameter('object', _('Text input'), 'TextInputObject', false)
648
+ .getCodeExtraInformation()
649
+ .setFunctionName('isSubmitted');
650
+
575
651
  object
576
652
  .addScopedAction(
577
653
  'Focus',
@@ -627,7 +703,6 @@ module.exports = {
627
703
 
628
704
  const DEFAULT_WIDTH = 300;
629
705
  const DEFAULT_HEIGHT = 30;
630
- const TEXT_MASK_PADDING = 2;
631
706
 
632
707
  class RenderedTextInputObjectInstance extends RenderedInstance {
633
708
  constructor(
@@ -741,24 +816,51 @@ module.exports = {
741
816
  );
742
817
 
743
818
  const borderWidth = object.content.borderWidth || 0;
819
+ const paddingX =
820
+ object.content.paddingX !== undefined
821
+ ? Math.min(
822
+ parseFloat(object.content.paddingX),
823
+ width / 2 - borderWidth
824
+ )
825
+ : 2;
826
+ const paddingY =
827
+ object.content.paddingY !== undefined
828
+ ? Math.min(
829
+ parseFloat(object.content.paddingY),
830
+ height / 2 - borderWidth
831
+ )
832
+ : 1;
744
833
 
745
834
  // Draw the mask for the text.
746
- const textOffset = borderWidth + TEXT_MASK_PADDING;
835
+ const textOffsetX = borderWidth + paddingX;
836
+ // textOffsetY does not include the paddingY because browsers display the text, even if it is supposed to be cut off by vertical padding.
837
+ const textOffsetY = borderWidth;
747
838
  this._pixiTextMask.clear();
748
839
  this._pixiTextMask.beginFill(0xdddddd, 1);
749
840
  this._pixiTextMask.drawRect(
750
- textOffset,
751
- textOffset,
752
- width - 2 * textOffset,
753
- height - 2 * textOffset
841
+ textOffsetX,
842
+ textOffsetY,
843
+ width - 2 * textOffsetX,
844
+ height - 2 * textOffsetY
754
845
  );
755
846
  this._pixiTextMask.endFill();
756
847
 
757
848
  const isTextArea = object.content.inputType === 'text area';
849
+ const textAlign = object.content.textAlign
850
+ ? object.content.textAlign
851
+ : 'left';
852
+
853
+ if (textAlign === 'left') this._pixiText.position.x = textOffsetX;
854
+ else if (textAlign === 'right')
855
+ this._pixiText.position.x =
856
+ 0 + width - this._pixiText.width - textOffsetX;
857
+ else if (textAlign === 'center') {
858
+ this._pixiText.align = 'center';
859
+ this._pixiText.position.x = 0 + width / 2 - this._pixiText.width / 2;
860
+ }
758
861
 
759
- this._pixiText.position.x = textOffset;
760
862
  this._pixiText.position.y = isTextArea
761
- ? textOffset
863
+ ? textOffsetY + paddingY
762
864
  : height / 2 - this._pixiText.height / 2;
763
865
 
764
866
  // Draw the background and border.
@@ -1,2 +1,2 @@
1
- var gdjs;(function(a){const C={text:"text",email:"email",password:"password",number:"number","telephone number":"tel",url:"url",search:"search"},o=(u,t)=>"rgba("+u[0]+","+u[1]+","+u[2]+","+t/255+")";class r{constructor(t,e){this._input=null;this._object=t,this._instanceContainer=e,this._runtimeGame=this._instanceContainer.getGame(),this._createElement()}_createElement(){if(this._input)throw new Error("Tried to recreate an input while it already exists.");const t=this._object.getInputType()==="text area";this._input=document.createElement(t?"textarea":"input"),this._input.style.border="1px solid black",this._input.autocomplete="off",this._input.style.borderRadius="0px",this._input.style.backgroundColor="white",this._input.style.position="absolute",this._input.style.resize="none",this._input.style.outline="none",this._input.style.pointerEvents="auto",this._input.style.display="none",this._input.style.boxSizing="border-box",this._input.addEventListener("input",()=>{!this._input||this._object.onRendererInputValueChanged(this._input.value)}),this._input.addEventListener("touchstart",()=>{!this._input||document.activeElement!==this._input&&this._input.focus()}),this.updateString(),this.updateFont(),this.updatePlaceholder(),this.updateOpacity(),this.updateInputType(),this.updateTextColor(),this.updateFillColorAndOpacity(),this.updateBorderColorAndOpacity(),this.updateBorderWidth(),this.updateDisabled(),this.updateReadOnly(),this._runtimeGame.getRenderer().getDomElementContainer().appendChild(this._input)}_destroyElement(){!this._input||(this._input.remove(),this._input=null)}onScenePaused(){this._destroyElement()}onSceneResumed(){this._input||this._createElement()}onDestroy(){this._destroyElement()}updatePreRender(){if(!this._input)return;if(this._object.isHidden()){this._input.style.display="none";return}{let n=this._instanceContainer,s=this._object,b=!0;do{if(!n.getLayer(s.getLayer()).isVisible()||!s.isVisible()){this._input.style.display="none";return}n instanceof a.CustomRuntimeObjectInstanceContainer?(s=n.getOwner(),n=s.getInstanceContainer()):b=!1}while(b)}const t=a.staticArray(r.prototype.updatePreRender),e=this._instanceContainer.getGame(),i=e.getRenderer(),p=this._instanceContainer.getLayer(this._object.getLayer()),h=p.convertInverseCoords(this._object.x,this._object.y,0,t),l=h[0],c=h[1],d=p.convertInverseCoords(this._object.x+this._object.getWidth(),this._object.y+this._object.getHeight(),0,t),_=d[0],y=d[1];if(_<0||y<0||l>e.getGameResolutionWidth()||c>e.getGameResolutionHeight()){this._input.style.display="none";return}t[0]=l,t[1]=c,i.convertCanvasToDomElementContainerCoords(t,t);const m=t[0],g=t[1];t[0]=_,t[1]=y,i.convertCanvasToDomElementContainerCoords(t,t);const f=t[0],j=t[1],x=f-m,R=j-g;this._input.style.left=m+"px",this._input.style.top=g+"px",this._input.style.width=x+"px",this._input.style.height=R+"px",this._input.style.transform="rotate3d(0,0,1,"+this._object.getAngle()%360+"deg)",this._input.style.fontSize=this._object.getFontSize()*i.getCanvasToDomElementContainerHeightScale()+"px",this._input.style.display="initial"}updateString(){!this._input||(this._input.value=this._object.getString())}updatePlaceholder(){!this._input||(this._input.placeholder=this._object.getPlaceholder())}updateFont(){!this._input||(this._input.style.fontFamily=this._instanceContainer.getGame().getFontManager().getFontFamily(this._object.getFontResourceName()))}updateOpacity(){!this._input||(this._input.style.opacity=""+this._object.getOpacity()/255)}updateInputType(){if(!this._input)return;const t=this._input instanceof HTMLTextAreaElement,e=this._object.getInputType()==="text area";t!==e&&(this._destroyElement(),this._createElement());const i=C[this._object.getInputType()]||"text";this._input.setAttribute("type",i)}updateTextColor(){!this._input||(this._input.style.color=o(this._object._getRawTextColor(),255))}updateFillColorAndOpacity(){!this._input||(this._input.style.backgroundColor=o(this._object._getRawFillColor(),this._object.getFillOpacity()))}updateBorderColorAndOpacity(){!this._input||(this._input.style.borderColor=o(this._object._getRawBorderColor(),this._object.getBorderOpacity()))}updateBorderWidth(){!this._input||(this._input.style.borderWidth=this._object.getBorderWidth()+"px")}updateDisabled(){!this._input||(this._input.disabled=this._object.isDisabled())}updateReadOnly(){!this._input||(this._input.readOnly=this._object.isReadOnly())}isFocused(){return this._input===document.activeElement}focus(){!this._input||this._input.focus()}}a.TextInputRuntimeObjectRenderer=r})(gdjs||(gdjs={}));
1
+ var gdjs;(function(a){const f={text:"text",email:"email",password:"password",number:"number","telephone number":"tel",url:"url",search:"search"},o=(h,t)=>"rgba("+h[0]+","+h[1]+","+h[2]+","+t/255+")";class r{constructor(t,e){this._input=null;this._form=null;this._object=t,this._instanceContainer=e,this._runtimeGame=this._instanceContainer.getGame(),this._createElement()}_createElement(){if(this._input)throw new Error("Tried to recreate an input while it already exists.");this._form=document.createElement("form");const t=this._object.getInputType()==="text area";this._input=document.createElement(t?"textarea":"input"),this._form.style.border="0px",this._form.style.borderRadius="0px",this._form.style.backgroundColor="transparent",this._form.style.position="absolute",this._form.style.pointerEvents="auto",this._form.style.display="none",this._form.style.boxSizing="border-box",this._form.style.textAlign=this._object.getTextAlign(),this._input.autocomplete="off",this._input.style.backgroundColor="white",this._input.style.outline="none",this._input.style.resize="none",this._input.style.border="1px solid black",this._input.style.boxSizing="border-box",this._input.style.width="100%",this._input.style.height="100%",this._input.maxLength=this._object.getMaxLength(),this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`,this._form.appendChild(this._input),this._input.addEventListener("input",()=>{!this._input||this._object.onRendererInputValueChanged(this._input.value)}),this._input.addEventListener("touchstart",()=>{!this._input||document.activeElement!==this._input&&this._input.focus()}),this._form.addEventListener("submit",e=>{e.preventDefault(),this._object.onRendererFormSubmitted()}),this.updateString(),this.updateFont(),this.updatePlaceholder(),this.updateOpacity(),this.updateInputType(),this.updateTextColor(),this.updateFillColorAndOpacity(),this.updateBorderColorAndOpacity(),this.updateBorderWidth(),this.updateDisabled(),this.updateReadOnly(),this.updateTextAlign(),this.updateMaxLength(),this.updatePadding(),this._runtimeGame.getRenderer().getDomElementContainer().appendChild(this._form)}_destroyElement(){!this._input||(this._input.remove(),this._input=null)}onScenePaused(){this._destroyElement()}onSceneResumed(){this._input||this._createElement()}onDestroy(){this._destroyElement()}updatePreRender(){if(!this._input||!this._form)return;if(this._object.isHidden()){this._form.style.display="none";return}{let n=this._instanceContainer,s=this._object,b=!0;do{if(!n.getLayer(s.getLayer()).isVisible()||!s.isVisible()){this._form.style.display="none";return}n instanceof a.CustomRuntimeObjectInstanceContainer?(s=n.getOwner(),n=s.getInstanceContainer()):b=!1}while(b)}const t=a.staticArray(r.prototype.updatePreRender),e=this._instanceContainer.getGame(),i=e.getRenderer(),u=this._instanceContainer.getLayer(this._object.getLayer()),p=u.convertInverseCoords(this._object.x,this._object.y,0,t),d=p[0],l=p[1],c=u.convertInverseCoords(this._object.x+this._object.getWidth(),this._object.y+this._object.getHeight(),0,t),_=c[0],m=c[1];if(_<0||m<0||d>e.getGameResolutionWidth()||l>e.getGameResolutionHeight()){this._form.style.display="none";return}t[0]=d,t[1]=l,i.convertCanvasToDomElementContainerCoords(t,t);const g=t[0],y=t[1];t[0]=_,t[1]=m,i.convertCanvasToDomElementContainerCoords(t,t);const x=t[0],j=t[1],C=x-g,T=j-y;this._form.style.left=g+"px",this._form.style.top=y+"px",this._form.style.width=C+"px",this._form.style.height=T+"px",this._form.style.transform="rotate3d(0,0,1,"+this._object.getAngle()%360+"deg)",this._form.style.textAlign=this._object.getTextAlign(),this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`,this._input.style.fontSize=this._object.getFontSize()*i.getCanvasToDomElementContainerHeightScale()+"px",this._form.style.display="initial"}updateString(){!this._input||(this._input.value=this._object.getString())}updatePlaceholder(){!this._input||(this._input.placeholder=this._object.getPlaceholder())}updateFont(){!this._input||(this._input.style.fontFamily=this._instanceContainer.getGame().getFontManager().getFontFamily(this._object.getFontResourceName()))}updateOpacity(){!this._form||(this._form.style.opacity=(this._object.getOpacity()/255).toFixed(3))}updateInputType(){if(!this._input)return;const t=this._input instanceof HTMLTextAreaElement,e=this._object.getInputType()==="text area";t!==e&&(this._destroyElement(),this._createElement());const i=f[this._object.getInputType()]||"text";this._input.setAttribute("type",i)}updateTextColor(){!this._input||(this._input.style.color=o(this._object._getRawTextColor(),255))}updateFillColorAndOpacity(){!this._input||(this._input.style.backgroundColor=o(this._object._getRawFillColor(),this._object.getFillOpacity()))}updateBorderColorAndOpacity(){!this._input||(this._input.style.borderColor=o(this._object._getRawBorderColor(),this._object.getBorderOpacity()))}updateBorderWidth(){!this._input||(this._input.style.borderWidth=this._object.getBorderWidth()+"px")}updateDisabled(){!this._form||(this._form.disabled=this._object.isDisabled())}updateReadOnly(){!this._form||(this._form.readOnly=this._object.isReadOnly())}updateMaxLength(){const t=this._input;if(!!t){if(this._object.getMaxLength()<=0){t.removeAttribute("maxLength");return}t.maxLength=this._object.getMaxLength()}}updatePadding(){!this._input||(this._input.style.padding=`${this._object.getPaddingY().toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`)}updateTextAlign(){if(!this._input)return;const t=this._object.getTextAlign();this._input.style.textAlign=t}isFocused(){return this._input===document.activeElement}focus(){!this._input||this._input.focus()}}a.TextInputRuntimeObjectRenderer=r})(gdjs||(gdjs={}));
2
2
  //# sourceMappingURL=textinputruntimeobject-pixi-renderer.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../GDevelop/Extensions/TextInput/textinputruntimeobject-pixi-renderer.ts"],
4
- "sourcesContent": ["namespace gdjs {\n const userFriendlyToHtmlInputTypes = {\n text: 'text',\n email: 'email',\n password: 'password',\n number: 'number',\n 'telephone number': 'tel',\n url: 'url',\n search: 'search',\n };\n\n const formatRgbAndOpacityToCssRgba = (\n rgbColor: [float, float, float],\n opacity: float\n ) => {\n return (\n 'rgba(' +\n rgbColor[0] +\n ',' +\n rgbColor[1] +\n ',' +\n rgbColor[2] +\n ',' +\n opacity / 255 +\n ')'\n );\n };\n\n class TextInputRuntimeObjectPixiRenderer {\n private _object: gdjs.TextInputRuntimeObject;\n private _input: HTMLInputElement | HTMLTextAreaElement | null = null;\n private _instanceContainer: gdjs.RuntimeInstanceContainer;\n private _runtimeGame: gdjs.RuntimeGame;\n\n constructor(\n runtimeObject: gdjs.TextInputRuntimeObject,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ) {\n this._object = runtimeObject;\n this._instanceContainer = instanceContainer;\n this._runtimeGame = this._instanceContainer.getGame();\n\n this._createElement();\n }\n\n _createElement() {\n if (!!this._input)\n throw new Error('Tried to recreate an input while it already exists.');\n\n const isTextArea = this._object.getInputType() === 'text area';\n this._input = document.createElement(isTextArea ? 'textarea' : 'input');\n this._input.style.border = '1px solid black';\n this._input.autocomplete = 'off';\n this._input.style.borderRadius = '0px';\n this._input.style.backgroundColor = 'white';\n this._input.style.position = 'absolute';\n this._input.style.resize = 'none';\n this._input.style.outline = 'none';\n this._input.style.pointerEvents = 'auto'; // Element can be clicked/touched.\n this._input.style.display = 'none'; // Hide while object is being set up.\n this._input.style.boxSizing = 'border-box'; // Important for iOS, because border is added to width/height.\n\n this._input.addEventListener('input', () => {\n if (!this._input) return;\n\n this._object.onRendererInputValueChanged(this._input.value);\n });\n this._input.addEventListener('touchstart', () => {\n if (!this._input) return;\n\n // Focus directly when touching the input on touchscreens.\n if (document.activeElement !== this._input) this._input.focus();\n });\n\n this.updateString();\n this.updateFont();\n this.updatePlaceholder();\n this.updateOpacity();\n this.updateInputType();\n this.updateTextColor();\n this.updateFillColorAndOpacity();\n this.updateBorderColorAndOpacity();\n this.updateBorderWidth();\n this.updateDisabled();\n this.updateReadOnly();\n\n this._runtimeGame\n .getRenderer()\n .getDomElementContainer()!\n .appendChild(this._input);\n }\n\n _destroyElement() {\n if (!this._input) return;\n this._input.remove();\n this._input = null;\n }\n\n onScenePaused() {\n // This is the only renderer that uses a DOM element. PixiJS renderers\n // usually don't need to know if a scene is paused/resumed,\n // because their renderers are then not used (not part of the other scene graphs).\n // For this object, we need to remove the DOM element whenever it must\n // be not rendered.\n this._destroyElement();\n }\n\n onSceneResumed() {\n // The input must have been destroyed when the scene was paused,\n // in case it still exists, skip recreation.\n if (!this._input) this._createElement();\n }\n\n onDestroy() {\n this._destroyElement();\n }\n\n updatePreRender() {\n if (!this._input) return;\n\n // Hide the input entirely if the object is hidden.\n // Because this object is rendered as a DOM element (and not part of the PixiJS\n // scene graph), we have to do this manually.\n if (this._object.isHidden()) {\n this._input.style.display = 'none';\n return;\n }\n\n // Hide the input entirely if the layer is not visible.\n // Because this object is rendered as a DOM element (and not part of the PixiJS\n // scene graph), we have to do this manually.\n {\n let instanceContainer = this._instanceContainer;\n let object: gdjs.RuntimeObject = this._object;\n let hasParent = true;\n do {\n const layer = instanceContainer.getLayer(object.getLayer());\n if (!layer.isVisible() || !object.isVisible()) {\n this._input.style.display = 'none';\n return;\n }\n // TODO Declare an interface to move up in the object tree.\n if (\n instanceContainer instanceof\n gdjs.CustomRuntimeObjectInstanceContainer\n ) {\n object = instanceContainer.getOwner();\n instanceContainer = object.getInstanceContainer();\n } else {\n hasParent = false;\n }\n } while (hasParent);\n }\n\n const workingPoint: FloatPoint = gdjs.staticArray(\n TextInputRuntimeObjectPixiRenderer.prototype.updatePreRender\n ) as FloatPoint;\n\n const runtimeGame = this._instanceContainer.getGame();\n const runtimeGameRenderer = runtimeGame.getRenderer();\n const layer = this._instanceContainer.getLayer(this._object.getLayer());\n const topLeftCanvasCoordinates = layer.convertInverseCoords(\n this._object.x,\n this._object.y,\n 0,\n workingPoint\n );\n const canvasLeft = topLeftCanvasCoordinates[0];\n const canvasTop = topLeftCanvasCoordinates[1];\n\n const bottomRightCanvasCoordinates = layer.convertInverseCoords(\n this._object.x + this._object.getWidth(),\n this._object.y + this._object.getHeight(),\n 0,\n workingPoint\n );\n const canvasRight = bottomRightCanvasCoordinates[0];\n const canvasBottom = bottomRightCanvasCoordinates[1];\n\n // Hide the input entirely if not visible at all.\n const isOutsideCanvas =\n canvasRight < 0 ||\n canvasBottom < 0 ||\n canvasLeft > runtimeGame.getGameResolutionWidth() ||\n canvasTop > runtimeGame.getGameResolutionHeight();\n if (isOutsideCanvas) {\n this._input.style.display = 'none';\n return;\n }\n\n // Position the input on the container on top of the canvas.\n workingPoint[0] = canvasLeft;\n workingPoint[1] = canvasTop;\n runtimeGameRenderer.convertCanvasToDomElementContainerCoords(\n workingPoint,\n workingPoint\n );\n const pageLeft = workingPoint[0];\n const pageTop = workingPoint[1];\n\n workingPoint[0] = canvasRight;\n workingPoint[1] = canvasBottom;\n runtimeGameRenderer.convertCanvasToDomElementContainerCoords(\n workingPoint,\n workingPoint\n );\n const pageRight = workingPoint[0];\n const pageBottom = workingPoint[1];\n\n const widthInContainer = pageRight - pageLeft;\n const heightInContainer = pageBottom - pageTop;\n\n this._input.style.left = pageLeft + 'px';\n this._input.style.top = pageTop + 'px';\n this._input.style.width = widthInContainer + 'px';\n this._input.style.height = heightInContainer + 'px';\n this._input.style.transform =\n 'rotate3d(0,0,1,' + (this._object.getAngle() % 360) + 'deg)';\n\n // Automatically adjust the font size to follow the game scale.\n this._input.style.fontSize =\n this._object.getFontSize() *\n runtimeGameRenderer.getCanvasToDomElementContainerHeightScale() +\n 'px';\n\n // Display after the object is positioned.\n this._input.style.display = 'initial';\n }\n\n updateString() {\n if (!this._input) return;\n this._input.value = this._object.getString();\n }\n\n updatePlaceholder() {\n if (!this._input) return;\n this._input.placeholder = this._object.getPlaceholder();\n }\n\n updateFont() {\n if (!this._input) return;\n this._input.style.fontFamily = this._instanceContainer\n .getGame()\n .getFontManager()\n .getFontFamily(this._object.getFontResourceName());\n }\n\n updateOpacity() {\n if (!this._input) return;\n this._input.style.opacity = '' + this._object.getOpacity() / 255;\n }\n\n updateInputType() {\n if (!this._input) return;\n\n const isTextArea = this._input instanceof HTMLTextAreaElement;\n const shouldBeTextArea = this._object.getInputType() === 'text area';\n if (isTextArea !== shouldBeTextArea) {\n this._destroyElement();\n this._createElement();\n }\n\n const newType =\n userFriendlyToHtmlInputTypes[this._object.getInputType()] || 'text';\n this._input.setAttribute('type', newType);\n }\n\n updateTextColor() {\n if (!this._input) return;\n\n this._input.style.color = formatRgbAndOpacityToCssRgba(\n this._object._getRawTextColor(),\n 255\n );\n }\n\n updateFillColorAndOpacity() {\n if (!this._input) return;\n\n this._input.style.backgroundColor = formatRgbAndOpacityToCssRgba(\n this._object._getRawFillColor(),\n this._object.getFillOpacity()\n );\n }\n\n updateBorderColorAndOpacity() {\n if (!this._input) return;\n\n this._input.style.borderColor = formatRgbAndOpacityToCssRgba(\n this._object._getRawBorderColor(),\n this._object.getBorderOpacity()\n );\n }\n updateBorderWidth() {\n if (!this._input) return;\n\n this._input.style.borderWidth = this._object.getBorderWidth() + 'px';\n }\n updateDisabled() {\n if (!this._input) return;\n\n this._input.disabled = this._object.isDisabled();\n }\n updateReadOnly() {\n if (!this._input) return;\n\n this._input.readOnly = this._object.isReadOnly();\n }\n\n isFocused() {\n return this._input === document.activeElement;\n }\n\n focus() {\n if (!this._input) return;\n\n this._input.focus();\n }\n }\n\n export const TextInputRuntimeObjectRenderer = TextInputRuntimeObjectPixiRenderer;\n export type TextInputRuntimeObjectRenderer = TextInputRuntimeObjectPixiRenderer;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["namespace gdjs {\n const userFriendlyToHtmlInputTypes = {\n text: 'text',\n email: 'email',\n password: 'password',\n number: 'number',\n 'telephone number': 'tel',\n url: 'url',\n search: 'search',\n };\n\n const formatRgbAndOpacityToCssRgba = (\n rgbColor: [float, float, float],\n opacity: float\n ) => {\n return (\n 'rgba(' +\n rgbColor[0] +\n ',' +\n rgbColor[1] +\n ',' +\n rgbColor[2] +\n ',' +\n opacity / 255 +\n ')'\n );\n };\n\n class TextInputRuntimeObjectPixiRenderer {\n private _object: gdjs.TextInputRuntimeObject;\n private _input: HTMLInputElement | HTMLTextAreaElement | null = null;\n private _instanceContainer: gdjs.RuntimeInstanceContainer;\n private _runtimeGame: gdjs.RuntimeGame;\n private _form: HTMLFormElement | null = null;\n\n constructor(\n runtimeObject: gdjs.TextInputRuntimeObject,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ) {\n this._object = runtimeObject;\n this._instanceContainer = instanceContainer;\n this._runtimeGame = this._instanceContainer.getGame();\n\n this._createElement();\n }\n\n _createElement() {\n if (!!this._input)\n throw new Error('Tried to recreate an input while it already exists.');\n\n this._form = document.createElement('form');\n\n const isTextArea = this._object.getInputType() === 'text area';\n this._input = document.createElement(isTextArea ? 'textarea' : 'input');\n\n this._form.style.border = '0px';\n this._form.style.borderRadius = '0px';\n this._form.style.backgroundColor = 'transparent';\n this._form.style.position = 'absolute';\n this._form.style.pointerEvents = 'auto'; // Element can be clicked/touched.\n this._form.style.display = 'none'; // Hide while object is being set up.\n this._form.style.boxSizing = 'border-box';\n this._form.style.textAlign = this._object.getTextAlign();\n\n this._input.autocomplete = 'off';\n this._input.style.backgroundColor = 'white';\n this._input.style.outline = 'none'; // Remove any style added by the browser to highlight the focused field in a form (:focus & :focus-visible modifiers).\n this._input.style.resize = 'none'; // Prevent user from resizing the input when it's a text area.\n this._input.style.border = '1px solid black';\n this._input.style.boxSizing = 'border-box';\n this._input.style.width = '100%';\n this._input.style.height = '100%';\n this._input.maxLength = this._object.getMaxLength();\n this._input.style.padding = `${this._object\n .getPaddingY()\n .toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`;\n\n this._form.appendChild(this._input);\n\n this._input.addEventListener('input', () => {\n if (!this._input) return;\n\n this._object.onRendererInputValueChanged(this._input.value);\n });\n this._input.addEventListener('touchstart', () => {\n if (!this._input) return;\n\n // Focus directly when touching the input on touchscreens.\n if (document.activeElement !== this._input) this._input.focus();\n });\n\n this._form.addEventListener('submit', (event) => {\n event.preventDefault();\n this._object.onRendererFormSubmitted();\n });\n\n this.updateString();\n this.updateFont();\n this.updatePlaceholder();\n this.updateOpacity();\n this.updateInputType();\n this.updateTextColor();\n this.updateFillColorAndOpacity();\n this.updateBorderColorAndOpacity();\n this.updateBorderWidth();\n this.updateDisabled();\n this.updateReadOnly();\n this.updateTextAlign();\n this.updateMaxLength();\n this.updatePadding();\n\n this._runtimeGame\n .getRenderer()\n .getDomElementContainer()!\n .appendChild(this._form);\n }\n\n _destroyElement() {\n if (!this._input) return;\n this._input.remove();\n this._input = null;\n }\n\n onScenePaused() {\n // This is the only renderer that uses a DOM element. PixiJS renderers\n // usually don't need to know if a scene is paused/resumed,\n // because their renderers are then not used (not part of the other scene graphs).\n // For this object, we need to remove the DOM element whenever it must\n // be not rendered.\n this._destroyElement();\n }\n\n onSceneResumed() {\n // The input must have been destroyed when the scene was paused,\n // in case it still exists, skip recreation.\n if (!this._input) this._createElement();\n }\n\n onDestroy() {\n this._destroyElement();\n }\n\n updatePreRender() {\n if (!this._input || !this._form) return;\n // Hide the input entirely if the object is hidden.\n // Because this object is rendered as a DOM element (and not part of the PixiJS\n // scene graph), we have to do this manually.\n if (this._object.isHidden()) {\n this._form.style.display = 'none';\n return;\n }\n\n // Hide the input entirely if the layer is not visible.\n // Because this object is rendered as a DOM element (and not part of the PixiJS\n // scene graph), we have to do this manually.\n {\n let instanceContainer = this._instanceContainer;\n let object: gdjs.RuntimeObject = this._object;\n let hasParent = true;\n do {\n const layer = instanceContainer.getLayer(object.getLayer());\n if (!layer.isVisible() || !object.isVisible()) {\n this._form.style.display = 'none';\n return;\n }\n // TODO Declare an interface to move up in the object tree.\n if (\n instanceContainer instanceof\n gdjs.CustomRuntimeObjectInstanceContainer\n ) {\n object = instanceContainer.getOwner();\n instanceContainer = object.getInstanceContainer();\n } else {\n hasParent = false;\n }\n } while (hasParent);\n }\n\n const workingPoint: FloatPoint = gdjs.staticArray(\n TextInputRuntimeObjectPixiRenderer.prototype.updatePreRender\n ) as FloatPoint;\n\n const runtimeGame = this._instanceContainer.getGame();\n const runtimeGameRenderer = runtimeGame.getRenderer();\n const layer = this._instanceContainer.getLayer(this._object.getLayer());\n const topLeftCanvasCoordinates = layer.convertInverseCoords(\n this._object.x,\n this._object.y,\n 0,\n workingPoint\n );\n const canvasLeft = topLeftCanvasCoordinates[0];\n const canvasTop = topLeftCanvasCoordinates[1];\n\n const bottomRightCanvasCoordinates = layer.convertInverseCoords(\n this._object.x + this._object.getWidth(),\n this._object.y + this._object.getHeight(),\n 0,\n workingPoint\n );\n const canvasRight = bottomRightCanvasCoordinates[0];\n const canvasBottom = bottomRightCanvasCoordinates[1];\n\n // Hide the input entirely if not visible at all.\n const isOutsideCanvas =\n canvasRight < 0 ||\n canvasBottom < 0 ||\n canvasLeft > runtimeGame.getGameResolutionWidth() ||\n canvasTop > runtimeGame.getGameResolutionHeight();\n if (isOutsideCanvas) {\n this._form.style.display = 'none';\n return;\n }\n\n // Position the input on the container on top of the canvas.\n workingPoint[0] = canvasLeft;\n workingPoint[1] = canvasTop;\n runtimeGameRenderer.convertCanvasToDomElementContainerCoords(\n workingPoint,\n workingPoint\n );\n const pageLeft = workingPoint[0];\n const pageTop = workingPoint[1];\n\n workingPoint[0] = canvasRight;\n workingPoint[1] = canvasBottom;\n runtimeGameRenderer.convertCanvasToDomElementContainerCoords(\n workingPoint,\n workingPoint\n );\n const pageRight = workingPoint[0];\n const pageBottom = workingPoint[1];\n\n const widthInContainer = pageRight - pageLeft;\n const heightInContainer = pageBottom - pageTop;\n\n this._form.style.left = pageLeft + 'px';\n this._form.style.top = pageTop + 'px';\n this._form.style.width = widthInContainer + 'px';\n this._form.style.height = heightInContainer + 'px';\n this._form.style.transform =\n 'rotate3d(0,0,1,' + (this._object.getAngle() % 360) + 'deg)';\n this._form.style.textAlign = this._object.getTextAlign();\n\n this._input.style.padding = `${this._object\n .getPaddingY()\n .toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`;\n\n // Automatically adjust the font size to follow the game scale.\n this._input.style.fontSize =\n this._object.getFontSize() *\n runtimeGameRenderer.getCanvasToDomElementContainerHeightScale() +\n 'px';\n\n // Display after the object is positioned.\n this._form.style.display = 'initial';\n }\n\n updateString() {\n if (!this._input) return;\n this._input.value = this._object.getString();\n }\n\n updatePlaceholder() {\n if (!this._input) return;\n this._input.placeholder = this._object.getPlaceholder();\n }\n\n updateFont() {\n if (!this._input) return;\n this._input.style.fontFamily = this._instanceContainer\n .getGame()\n .getFontManager()\n .getFontFamily(this._object.getFontResourceName());\n }\n\n updateOpacity() {\n if (!this._form) return;\n this._form.style.opacity = (this._object.getOpacity() / 255).toFixed(3);\n }\n\n updateInputType() {\n if (!this._input) return;\n\n const isTextArea = this._input instanceof HTMLTextAreaElement;\n const shouldBeTextArea = this._object.getInputType() === 'text area';\n if (isTextArea !== shouldBeTextArea) {\n this._destroyElement();\n this._createElement();\n }\n\n const newType =\n userFriendlyToHtmlInputTypes[this._object.getInputType()] || 'text';\n this._input.setAttribute('type', newType);\n }\n\n updateTextColor() {\n if (!this._input) return;\n\n this._input.style.color = formatRgbAndOpacityToCssRgba(\n this._object._getRawTextColor(),\n 255\n );\n }\n\n updateFillColorAndOpacity() {\n if (!this._input) return;\n\n this._input.style.backgroundColor = formatRgbAndOpacityToCssRgba(\n this._object._getRawFillColor(),\n this._object.getFillOpacity()\n );\n }\n\n updateBorderColorAndOpacity() {\n if (!this._input) return;\n\n this._input.style.borderColor = formatRgbAndOpacityToCssRgba(\n this._object._getRawBorderColor(),\n this._object.getBorderOpacity()\n );\n }\n updateBorderWidth() {\n if (!this._input) return;\n\n this._input.style.borderWidth = this._object.getBorderWidth() + 'px';\n }\n updateDisabled() {\n if (!this._form) return;\n\n this._form.disabled = this._object.isDisabled();\n }\n updateReadOnly() {\n if (!this._form) return;\n\n this._form.readOnly = this._object.isReadOnly();\n }\n\n updateMaxLength() {\n const input = this._input;\n if (!input) return;\n if (this._object.getMaxLength() <= 0) {\n input.removeAttribute('maxLength');\n return;\n }\n input.maxLength = this._object.getMaxLength();\n }\n\n updatePadding() {\n if (!this._input) return;\n\n this._input.style.padding = `${this._object\n .getPaddingY()\n .toFixed(2)}px ${this._object.getPaddingX().toFixed(2)}px`;\n }\n\n updateTextAlign() {\n if (!this._input) return;\n\n const newTextAlign = this._object.getTextAlign();\n this._input.style.textAlign = newTextAlign;\n }\n\n isFocused() {\n return this._input === document.activeElement;\n }\n\n focus() {\n if (!this._input) return;\n\n this._input.focus();\n }\n }\n export const TextInputRuntimeObjectRenderer = TextInputRuntimeObjectPixiRenderer;\n export type TextInputRuntimeObjectRenderer = TextInputRuntimeObjectPixiRenderer;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- var gdjs;(function(r){const n=["text","email","password","number","telephone number","url","search","text area"],o=i=>{const t=i.toLowerCase();return n.includes(t)?i:"text"},s=300,l=30;class d extends r.RuntimeObject{constructor(t,e){super(t,e);this.opacity=255;this._width=s;this._height=l;this._string=e.content.initialValue,this._placeholder=e.content.placeholder,this._fontResourceName=e.content.fontResourceName,this._fontSize=e.content.fontSize||20,this._inputType=o(e.content.inputType),this._textColor=r.rgbOrHexToRGBColor(e.content.textColor),this._fillColor=r.rgbOrHexToRGBColor(e.content.fillColor),this._fillOpacity=e.content.fillOpacity,this._borderColor=r.rgbOrHexToRGBColor(e.content.borderColor),this._borderOpacity=e.content.borderOpacity,this._borderWidth=e.content.borderWidth,this._disabled=e.content.disabled,this._readOnly=e.content.readOnly,this._renderer=new r.TextInputRuntimeObjectRenderer(this,t),this.onCreated()}getRendererObject(){return null}updateFromObjectData(t,e){return t.content.initialValue!==e.content.initialValue&&this._string===t.content.initialValue&&this.setString(e.content.initialValue),t.content.placeholder!==e.content.placeholder&&this.setPlaceholder(e.content.placeholder),t.content.fontResourceName!==e.content.fontResourceName&&this.setFontResourceName(e.content.fontResourceName),t.content.fontSize!==e.content.fontSize&&this.setFontSize(e.content.fontSize),t.content.inputType!==e.content.inputType&&this.setInputType(e.content.inputType),t.content.textColor!==e.content.textColor&&this.setTextColor(e.content.textColor),t.content.fillColor!==e.content.fillColor&&this.setFillColor(e.content.fillColor),t.content.fillOpacity!==e.content.fillOpacity&&this.setFillOpacity(e.content.fillOpacity),t.content.borderColor!==e.content.borderColor&&this.setBorderColor(e.content.borderColor),t.content.borderOpacity!==e.content.borderOpacity&&this.setBorderOpacity(e.content.borderOpacity),t.content.borderWidth!==e.content.borderWidth&&this.setBorderWidth(e.content.borderWidth),t.content.disabled!==e.content.disabled&&this.setDisabled(e.content.disabled),t.content.readOnly!==e.content.readOnly&&this.setReadOnly(e.content.readOnly),!0}getNetworkSyncData(){return{...super.getNetworkSyncData(),opa:this.getOpacity(),wid:this.getWidth(),hei:this.getHeight(),txt:this.getText(),frn:this.getFontResourceName(),fs:this.getFontSize(),place:this.getPlaceholder(),it:this.getInputType(),tc:this.getTextColor(),fc:this.getFillColor(),fo:this.getFillOpacity(),bc:this.getBorderColor(),bo:this.getBorderOpacity(),bw:this.getBorderWidth(),dis:this.isDisabled(),ro:this.isReadOnly()}}updateFromNetworkSyncData(t){super.updateFromNetworkSyncData(t),t.opa!==void 0&&this.setOpacity(t.opa),t.wid!==void 0&&this.setWidth(t.wid),t.hei!==void 0&&this.setHeight(t.hei),t.txt!==void 0&&this.setText(t.txt),t.frn!==void 0&&this.setFontResourceName(t.frn),t.fs!==void 0&&this.setFontSize(t.fs),t.place!==void 0&&this.setPlaceholder(t.place),t.it!==void 0&&this.setInputType(t.it),t.tc!==void 0&&this.setTextColor(t.tc),t.fc!==void 0&&this.setFillColor(t.fc),t.fo!==void 0&&this.setFillOpacity(t.fo),t.bc!==void 0&&this.setBorderColor(t.bc),t.bo!==void 0&&this.setBorderOpacity(t.bo),t.bw!==void 0&&this.setBorderWidth(t.bw),t.dis!==void 0&&this.setDisabled(t.dis),t.ro!==void 0&&this.setReadOnly(t.ro)}updatePreRender(t){this._renderer.updatePreRender()}extraInitializationFromInitialInstance(t){for(const e of t.stringProperties)e.name==="initialValue"?this.setString(e.value):e.name==="placeholder"&&this.setPlaceholder(e.value);t.customSize&&(this.setWidth(t.width),this.setHeight(t.height)),t.opacity!==void 0&&this.setOpacity(t.opacity)}onScenePaused(t){this._renderer.onScenePaused()}onSceneResumed(t){this._renderer.onSceneResumed()}onDestroyed(){super.onDestroyed(),this._renderer.onDestroy()}setOpacity(t){this.opacity=Math.max(0,Math.min(255,t)),this._renderer.updateOpacity()}getOpacity(){return this.opacity}setSize(t,e){this.setWidth(t),this.setHeight(e)}setWidth(t){this._width=t}setHeight(t){this._height=t}getWidth(){return this._width}getHeight(){return this._height}getString(){return this.getText()}setString(t){this.setText(t)}getText(){return this._string}setText(t){t!==this._string&&(this._string=t,this._renderer.updateString())}onRendererInputValueChanged(t){this._string=t}getFontResourceName(){return this._fontResourceName}setFontResourceName(t){this._fontResourceName!==t&&(this._fontResourceName=t,this._renderer.updateFont())}getFontSize(){return this._fontSize}setFontSize(t){this._fontSize=t}getPlaceholder(){return this._placeholder}setPlaceholder(t){t!==this._placeholder&&(this._placeholder=t,this._renderer.updatePlaceholder())}getInputType(){return this._inputType}setInputType(t){const e=t.toLowerCase();e!==this._inputType&&(this._inputType=o(e),this._renderer.updateInputType())}setTextColor(t){this._textColor=r.rgbOrHexToRGBColor(t),this._renderer.updateTextColor()}getTextColor(){return this._textColor[0]+";"+this._textColor[1]+";"+this._textColor[2]}_getRawTextColor(){return this._textColor}setFillColor(t){this._fillColor=r.rgbOrHexToRGBColor(t),this._renderer.updateFillColorAndOpacity()}getFillColor(){return this._fillColor[0]+";"+this._fillColor[1]+";"+this._fillColor[2]}_getRawFillColor(){return this._fillColor}setFillOpacity(t){this._fillOpacity=Math.max(0,Math.min(255,t)),this._renderer.updateFillColorAndOpacity()}getFillOpacity(){return this._fillOpacity}setBorderColor(t){this._borderColor=r.rgbOrHexToRGBColor(t),this._renderer.updateBorderColorAndOpacity()}getBorderColor(){return this._borderColor[0]+";"+this._borderColor[1]+";"+this._borderColor[2]}_getRawBorderColor(){return this._borderColor}setBorderOpacity(t){this._borderOpacity=Math.max(0,Math.min(255,t)),this._renderer.updateBorderColorAndOpacity()}getBorderOpacity(){return this._borderOpacity}setBorderWidth(t){this._borderWidth=Math.max(0,t),this._renderer.updateBorderWidth()}getBorderWidth(){return this._borderWidth}setDisabled(t){this._disabled=t,this._renderer.updateDisabled()}isDisabled(){return this._disabled}setReadOnly(t){this._readOnly=t,this._renderer.updateReadOnly()}isReadOnly(){return this._readOnly}isFocused(){return this._renderer.isFocused()}focus(){this.isFocused()||this.getInstanceContainer().getGame().getInputManager().clearAllPressedKeys(),this._renderer.focus()}}r.TextInputRuntimeObject=d,r.registerObject("TextInput::TextInputObject",r.TextInputRuntimeObject)})(gdjs||(gdjs={}));
1
+ var gdjs;(function(i){const s=["text","email","password","number","telephone number","url","search","text area"],l=["left","center","right"],n=r=>{const t=r.toLowerCase();return s.includes(t)?r:"text"},o=r=>{if(!r)return"left";const t=r.toLowerCase();return l.includes(t)?r:"left"},h=300,p=30,d=(r,t,e)=>Math.max(0,Math.min(t/2-e,r));class u extends i.RuntimeObject{constructor(t,e){super(t,e);this.opacity=255;this._width=h;this._height=p;this._string=e.content.initialValue,this._placeholder=e.content.placeholder,this._fontResourceName=e.content.fontResourceName,this._fontSize=e.content.fontSize||20,this._inputType=n(e.content.inputType),this._textColor=i.rgbOrHexToRGBColor(e.content.textColor),this._fillColor=i.rgbOrHexToRGBColor(e.content.fillColor),this._fillOpacity=e.content.fillOpacity,this._borderColor=i.rgbOrHexToRGBColor(e.content.borderColor),this._borderOpacity=e.content.borderOpacity,this._borderWidth=e.content.borderWidth,this._disabled=e.content.disabled,this._readOnly=e.content.readOnly,this._textAlign=o(e.content.textAlign),this._maxLength=e.content.maxLength||0,this._paddingX=e.content.paddingX!==void 0?e.content.paddingX:2,this._paddingY=e.content.paddingY!==void 0?e.content.paddingY:1,this._isSubmitted=!1,this._renderer=new i.TextInputRuntimeObjectRenderer(this,t),this.onCreated()}getRendererObject(){return null}updateFromObjectData(t,e){return t.content.initialValue!==e.content.initialValue&&this._string===t.content.initialValue&&this.setString(e.content.initialValue),t.content.placeholder!==e.content.placeholder&&this.setPlaceholder(e.content.placeholder),t.content.fontResourceName!==e.content.fontResourceName&&this.setFontResourceName(e.content.fontResourceName),t.content.fontSize!==e.content.fontSize&&this.setFontSize(e.content.fontSize),t.content.inputType!==e.content.inputType&&this.setInputType(e.content.inputType),t.content.textColor!==e.content.textColor&&this.setTextColor(e.content.textColor),t.content.fillColor!==e.content.fillColor&&this.setFillColor(e.content.fillColor),t.content.fillOpacity!==e.content.fillOpacity&&this.setFillOpacity(e.content.fillOpacity),t.content.borderColor!==e.content.borderColor&&this.setBorderColor(e.content.borderColor),t.content.borderOpacity!==e.content.borderOpacity&&this.setBorderOpacity(e.content.borderOpacity),t.content.borderWidth!==e.content.borderWidth&&this.setBorderWidth(e.content.borderWidth),t.content.disabled!==e.content.disabled&&this.setDisabled(e.content.disabled),t.content.readOnly!==e.content.readOnly&&this.setReadOnly(e.content.readOnly),e.content.maxLength!==void 0&&t.content.maxLength!==e.content.maxLength&&this.setMaxLength(e.content.maxLength),e.content.textAlign&&t.content.textAlign!==e.content.textAlign&&(this._textAlign=e.content.textAlign),e.content.paddingX!==void 0&&t.content.paddingX!==e.content.paddingX&&this.setPaddingX(e.content.paddingX),e.content.paddingY!==void 0&&t.content.paddingY!==e.content.paddingY&&this.setPaddingY(e.content.paddingY),!0}getNetworkSyncData(){return{...super.getNetworkSyncData(),opa:this.getOpacity(),wid:this.getWidth(),hei:this.getHeight(),txt:this.getText(),frn:this.getFontResourceName(),fs:this.getFontSize(),place:this.getPlaceholder(),it:this.getInputType(),tc:this.getTextColor(),fc:this.getFillColor(),fo:this.getFillOpacity(),bc:this.getBorderColor(),bo:this.getBorderOpacity(),bw:this.getBorderWidth(),dis:this.isDisabled(),ro:this.isReadOnly()}}updateFromNetworkSyncData(t){super.updateFromNetworkSyncData(t),t.opa!==void 0&&this.setOpacity(t.opa),t.wid!==void 0&&this.setWidth(t.wid),t.hei!==void 0&&this.setHeight(t.hei),t.txt!==void 0&&this.setText(t.txt),t.frn!==void 0&&this.setFontResourceName(t.frn),t.fs!==void 0&&this.setFontSize(t.fs),t.place!==void 0&&this.setPlaceholder(t.place),t.it!==void 0&&this.setInputType(t.it),t.tc!==void 0&&this.setTextColor(t.tc),t.fc!==void 0&&this.setFillColor(t.fc),t.fo!==void 0&&this.setFillOpacity(t.fo),t.bc!==void 0&&this.setBorderColor(t.bc),t.bo!==void 0&&this.setBorderOpacity(t.bo),t.bw!==void 0&&this.setBorderWidth(t.bw),t.dis!==void 0&&this.setDisabled(t.dis),t.ro!==void 0&&this.setReadOnly(t.ro)}updatePreRender(t){this._isSubmitted=!1,this._renderer.updatePreRender()}extraInitializationFromInitialInstance(t){for(const e of t.stringProperties)e.name==="initialValue"?this.setString(e.value):e.name==="placeholder"&&this.setPlaceholder(e.value);t.customSize&&(this.setWidth(t.width),this.setHeight(t.height),this._renderer.updatePadding()),t.opacity!==void 0&&this.setOpacity(t.opacity)}onScenePaused(t){this._renderer.onScenePaused()}onSceneResumed(t){this._renderer.onSceneResumed()}onDestroyed(){super.onDestroyed(),this._renderer.onDestroy()}setOpacity(t){this.opacity=Math.max(0,Math.min(255,t)),this._renderer.updateOpacity()}getOpacity(){return this.opacity}setSize(t,e){this.setWidth(t),this.setHeight(e)}setWidth(t){this._width=t,this._renderer.updatePadding()}setHeight(t){this._height=t,this._renderer.updatePadding()}getWidth(){return this._width}getHeight(){return this._height}getString(){return this.getText()}setString(t){this.setText(t)}getText(){return this._string}setText(t){t!==this._string&&(this._string=t,this._renderer.updateString())}onRendererInputValueChanged(t){this._string=t}onRendererFormSubmitted(){this._isSubmitted=!0}getFontResourceName(){return this._fontResourceName}setFontResourceName(t){this._fontResourceName!==t&&(this._fontResourceName=t,this._renderer.updateFont())}getFontSize(){return this._fontSize}setFontSize(t){this._fontSize=t}getPlaceholder(){return this._placeholder}setPlaceholder(t){t!==this._placeholder&&(this._placeholder=t,this._renderer.updatePlaceholder())}getInputType(){return this._inputType}setInputType(t){const e=t.toLowerCase();e!==this._inputType&&(this._inputType=n(e),this._renderer.updateInputType())}setTextColor(t){this._textColor=i.rgbOrHexToRGBColor(t),this._renderer.updateTextColor()}getTextColor(){return this._textColor[0]+";"+this._textColor[1]+";"+this._textColor[2]}_getRawTextColor(){return this._textColor}setFillColor(t){this._fillColor=i.rgbOrHexToRGBColor(t),this._renderer.updateFillColorAndOpacity()}getFillColor(){return this._fillColor[0]+";"+this._fillColor[1]+";"+this._fillColor[2]}_getRawFillColor(){return this._fillColor}setFillOpacity(t){this._fillOpacity=Math.max(0,Math.min(255,t)),this._renderer.updateFillColorAndOpacity()}getFillOpacity(){return this._fillOpacity}setBorderColor(t){this._borderColor=i.rgbOrHexToRGBColor(t),this._renderer.updateBorderColorAndOpacity()}getBorderColor(){return this._borderColor[0]+";"+this._borderColor[1]+";"+this._borderColor[2]}_getRawBorderColor(){return this._borderColor}setBorderOpacity(t){this._borderOpacity=Math.max(0,Math.min(255,t)),this._renderer.updateBorderColorAndOpacity()}getBorderOpacity(){return this._borderOpacity}setBorderWidth(t){this._borderWidth=Math.max(0,t),this._renderer.updateBorderWidth()}getBorderWidth(){return this._borderWidth}setDisabled(t){this._disabled=t,this._renderer.updateDisabled()}isDisabled(){return this._disabled}setReadOnly(t){this._readOnly=t,this._renderer.updateReadOnly()}isReadOnly(){return this._readOnly}isFocused(){return this._renderer.isFocused()}isSubmitted(){return this._isSubmitted}getMaxLength(){return this._maxLength}setMaxLength(t){this._maxLength!==t&&(this._maxLength=t,this._renderer.updateMaxLength())}getPaddingX(){return d(this._paddingX,this._width,this._borderWidth)}setPaddingX(t){if(this._paddingX!==t){if(t<0){this._paddingX=0;return}this._paddingX=t,this._renderer.updatePadding()}}getPaddingY(){return d(this._paddingY,this._height,this._borderWidth)}setPaddingY(t){if(this._paddingY!==t){if(t<0){this._paddingY=0;return}this._paddingY=t,this._renderer.updatePadding()}}getTextAlign(){return this._textAlign}setTextAlign(t){const e=o(t);e!==this._textAlign&&(this._textAlign=e,this._renderer.updateTextAlign())}focus(){this.isFocused()||this.getInstanceContainer().getGame().getInputManager().clearAllPressedKeys(),this._renderer.focus()}}i.TextInputRuntimeObject=u,i.registerObject("TextInput::TextInputObject",i.TextInputRuntimeObject)})(gdjs||(gdjs={}));
2
2
  //# sourceMappingURL=textinputruntimeobject.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../GDevelop/Extensions/TextInput/textinputruntimeobject.ts"],
4
- "sourcesContent": ["namespace gdjs {\n const supportedInputTypes = [\n 'text',\n 'email',\n 'password',\n 'number',\n 'telephone number',\n 'url',\n 'search',\n 'text area',\n ] as const;\n\n type SupportedInputType = typeof supportedInputTypes[number];\n\n const parseInputType = (potentialInputType: string): SupportedInputType => {\n const lowercasedNewInputType = potentialInputType.toLowerCase();\n\n // @ts-ignore - we're actually checking that this value is correct.\n if (supportedInputTypes.includes(lowercasedNewInputType))\n return potentialInputType as SupportedInputType;\n\n return 'text';\n };\n\n /** Base parameters for {@link gdjs.TextInputRuntimeObject} */\n export interface TextInputObjectData extends ObjectData {\n /** The base parameters of the TextInput */\n content: {\n initialValue: string;\n placeholder: string;\n fontResourceName: string;\n fontSize: float;\n inputType: SupportedInputType;\n textColor: string;\n fillColor: string;\n fillOpacity: float;\n borderColor: string;\n borderOpacity: float;\n borderWidth: float;\n disabled: boolean;\n readOnly: boolean;\n };\n }\n\n export type TextInputNetworkSyncDataType = {\n opa: float;\n wid: float;\n hei: float;\n txt: string;\n frn: string;\n fs: number;\n place: string;\n it: SupportedInputType;\n tc: string;\n fc: string;\n fo: float;\n bc: string;\n bo: float;\n bw: float;\n dis: boolean;\n ro: boolean;\n };\n\n export type TextInputNetworkSyncData = ObjectNetworkSyncData &\n TextInputNetworkSyncDataType;\n\n const DEFAULT_WIDTH = 300;\n const DEFAULT_HEIGHT = 30;\n\n /**\n * Shows a text input on the screen the player can type text into.\n */\n export class TextInputRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.TextContainer, gdjs.Resizable, gdjs.OpacityHandler {\n private _string: string;\n private _placeholder: string;\n private opacity: float = 255;\n private _width: float = DEFAULT_WIDTH;\n private _height: float = DEFAULT_HEIGHT;\n private _fontResourceName: string;\n private _fontSize: float;\n private _inputType: SupportedInputType;\n private _textColor: [float, float, float];\n private _fillColor: [float, float, float];\n private _fillOpacity: float;\n private _borderColor: [float, float, float];\n private _borderOpacity: float;\n private _borderWidth: float;\n private _disabled: boolean;\n private _readOnly: boolean;\n\n _renderer: TextInputRuntimeObjectRenderer;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: TextInputObjectData\n ) {\n super(instanceContainer, objectData);\n\n this._string = objectData.content.initialValue;\n this._placeholder = objectData.content.placeholder;\n this._fontResourceName = objectData.content.fontResourceName;\n this._fontSize = objectData.content.fontSize || 20;\n this._inputType = parseInputType(objectData.content.inputType);\n this._textColor = gdjs.rgbOrHexToRGBColor(objectData.content.textColor);\n this._fillColor = gdjs.rgbOrHexToRGBColor(objectData.content.fillColor);\n this._fillOpacity = objectData.content.fillOpacity;\n this._borderColor = gdjs.rgbOrHexToRGBColor(\n objectData.content.borderColor\n );\n this._borderOpacity = objectData.content.borderOpacity;\n this._borderWidth = objectData.content.borderWidth;\n this._disabled = objectData.content.disabled;\n this._readOnly = objectData.content.readOnly;\n\n this._renderer = new gdjs.TextInputRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n getRendererObject() {\n return null;\n }\n\n updateFromObjectData(\n oldObjectData: TextInputObjectData,\n newObjectData: TextInputObjectData\n ): boolean {\n if (\n oldObjectData.content.initialValue !==\n newObjectData.content.initialValue\n ) {\n if (this._string === oldObjectData.content.initialValue) {\n this.setString(newObjectData.content.initialValue);\n }\n }\n if (\n oldObjectData.content.placeholder !== newObjectData.content.placeholder\n ) {\n this.setPlaceholder(newObjectData.content.placeholder);\n }\n if (\n oldObjectData.content.fontResourceName !==\n newObjectData.content.fontResourceName\n ) {\n this.setFontResourceName(newObjectData.content.fontResourceName);\n }\n if (oldObjectData.content.fontSize !== newObjectData.content.fontSize) {\n this.setFontSize(newObjectData.content.fontSize);\n }\n if (oldObjectData.content.inputType !== newObjectData.content.inputType) {\n this.setInputType(newObjectData.content.inputType);\n }\n if (oldObjectData.content.textColor !== newObjectData.content.textColor) {\n this.setTextColor(newObjectData.content.textColor);\n }\n if (oldObjectData.content.fillColor !== newObjectData.content.fillColor) {\n this.setFillColor(newObjectData.content.fillColor);\n }\n if (\n oldObjectData.content.fillOpacity !== newObjectData.content.fillOpacity\n ) {\n this.setFillOpacity(newObjectData.content.fillOpacity);\n }\n if (\n oldObjectData.content.borderColor !== newObjectData.content.borderColor\n ) {\n this.setBorderColor(newObjectData.content.borderColor);\n }\n if (\n oldObjectData.content.borderOpacity !==\n newObjectData.content.borderOpacity\n ) {\n this.setBorderOpacity(newObjectData.content.borderOpacity);\n }\n if (\n oldObjectData.content.borderWidth !== newObjectData.content.borderWidth\n ) {\n this.setBorderWidth(newObjectData.content.borderWidth);\n }\n if (oldObjectData.content.disabled !== newObjectData.content.disabled) {\n this.setDisabled(newObjectData.content.disabled);\n }\n if (oldObjectData.content.readOnly !== newObjectData.content.readOnly) {\n this.setReadOnly(newObjectData.content.readOnly);\n }\n return true;\n }\n\n getNetworkSyncData(): TextInputNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n opa: this.getOpacity(),\n wid: this.getWidth(),\n hei: this.getHeight(),\n txt: this.getText(),\n frn: this.getFontResourceName(),\n fs: this.getFontSize(),\n place: this.getPlaceholder(),\n it: this.getInputType(),\n tc: this.getTextColor(),\n fc: this.getFillColor(),\n fo: this.getFillOpacity(),\n bc: this.getBorderColor(),\n bo: this.getBorderOpacity(),\n bw: this.getBorderWidth(),\n dis: this.isDisabled(),\n ro: this.isReadOnly(),\n };\n }\n\n updateFromNetworkSyncData(syncData: TextInputNetworkSyncData): void {\n super.updateFromNetworkSyncData(syncData);\n\n if (syncData.opa !== undefined) this.setOpacity(syncData.opa);\n if (syncData.wid !== undefined) this.setWidth(syncData.wid);\n if (syncData.hei !== undefined) this.setHeight(syncData.hei);\n if (syncData.txt !== undefined) this.setText(syncData.txt);\n if (syncData.frn !== undefined) this.setFontResourceName(syncData.frn);\n if (syncData.fs !== undefined) this.setFontSize(syncData.fs);\n if (syncData.place !== undefined) this.setPlaceholder(syncData.place);\n if (syncData.it !== undefined) this.setInputType(syncData.it);\n if (syncData.tc !== undefined) this.setTextColor(syncData.tc);\n if (syncData.fc !== undefined) this.setFillColor(syncData.fc);\n if (syncData.fo !== undefined) this.setFillOpacity(syncData.fo);\n if (syncData.bc !== undefined) this.setBorderColor(syncData.bc);\n if (syncData.bo !== undefined) this.setBorderOpacity(syncData.bo);\n if (syncData.bw !== undefined) this.setBorderWidth(syncData.bw);\n if (syncData.dis !== undefined) this.setDisabled(syncData.dis);\n if (syncData.ro !== undefined) this.setReadOnly(syncData.ro);\n }\n\n updatePreRender(instanceContainer: RuntimeInstanceContainer): void {\n this._renderer.updatePreRender();\n }\n\n /**\n * Initialize the extra parameters that could be set for an instance.\n */\n extraInitializationFromInitialInstance(initialInstanceData: InstanceData) {\n for (const property of initialInstanceData.stringProperties) {\n if (property.name === 'initialValue') {\n this.setString(property.value);\n } else if (property.name === 'placeholder') {\n this.setPlaceholder(property.value);\n }\n }\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n onScenePaused(runtimeScene: gdjs.RuntimeScene): void {\n this._renderer.onScenePaused();\n }\n\n onSceneResumed(runtimeScene: gdjs.RuntimeScene): void {\n this._renderer.onSceneResumed();\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.onDestroy();\n }\n\n setOpacity(opacity: float): void {\n this.opacity = Math.max(0, Math.min(255, opacity));\n this._renderer.updateOpacity();\n }\n\n getOpacity(): float {\n return this.opacity;\n }\n\n setSize(width: number, height: number): void {\n this.setWidth(width);\n this.setHeight(height);\n }\n\n setWidth(width: float): void {\n this._width = width;\n }\n\n setHeight(height: float): void {\n this._height = height;\n }\n\n /**\n * Return the width of the object.\n * @return The width of the object\n */\n getWidth(): float {\n return this._width;\n }\n\n /**\n * Return the width of the object.\n * @return The height of the object\n */\n getHeight(): float {\n return this._height;\n }\n\n /**\n * Get the text entered in the text input.\n * @deprecated use `getText` instead\n */\n getString() {\n return this.getText();\n }\n\n /**\n * Replace the text inside the text input.\n * @deprecated use `setText` instead\n */\n setString(text: string) {\n this.setText(text);\n }\n\n getText() {\n return this._string;\n }\n\n setText(newString: string) {\n if (newString === this._string) return;\n\n this._string = newString;\n this._renderer.updateString();\n }\n\n /**\n * Called by the renderer when the value of the input shown on the screen\n * was changed (because the user typed something).\n * This does not propagate back the value to the renderer, which would\n * result in the cursor being sent back to the end of the text.\n *\n * Do not use this if you are not inside the renderer - use `setString` instead.\n */\n onRendererInputValueChanged(inputValue: string) {\n this._string = inputValue;\n }\n\n getFontResourceName() {\n return this._fontResourceName;\n }\n\n setFontResourceName(resourceName: string) {\n if (this._fontResourceName === resourceName) return;\n\n this._fontResourceName = resourceName;\n this._renderer.updateFont();\n }\n\n getFontSize() {\n return this._fontSize;\n }\n\n setFontSize(newSize: number) {\n this._fontSize = newSize;\n }\n\n /**\n * Get the placeholder shown when no text is entered\n */\n getPlaceholder() {\n return this._placeholder;\n }\n\n /**\n * Replace the text inside the text input.\n */\n setPlaceholder(newPlaceholder: string) {\n if (newPlaceholder === this._placeholder) return;\n\n this._placeholder = newPlaceholder;\n this._renderer.updatePlaceholder();\n }\n\n /**\n * Get the type of the input.\n */\n getInputType() {\n return this._inputType;\n }\n\n /**\n * Set the type of the input.\n */\n setInputType(newInputType: string) {\n const lowercasedNewInputType = newInputType.toLowerCase();\n if (lowercasedNewInputType === this._inputType) return;\n\n this._inputType = parseInputType(lowercasedNewInputType);\n this._renderer.updateInputType();\n }\n\n setTextColor(newColor: string) {\n this._textColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateTextColor();\n }\n\n getTextColor(): string {\n return (\n this._textColor[0] + ';' + this._textColor[1] + ';' + this._textColor[2]\n );\n }\n\n _getRawTextColor(): [float, float, float] {\n return this._textColor;\n }\n\n setFillColor(newColor: string) {\n this._fillColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateFillColorAndOpacity();\n }\n\n getFillColor(): string {\n return (\n this._fillColor[0] + ';' + this._fillColor[1] + ';' + this._fillColor[2]\n );\n }\n\n _getRawFillColor(): [float, float, float] {\n return this._fillColor;\n }\n\n setFillOpacity(newOpacity: float) {\n this._fillOpacity = Math.max(0, Math.min(255, newOpacity));\n this._renderer.updateFillColorAndOpacity();\n }\n\n getFillOpacity(): float {\n return this._fillOpacity;\n }\n\n setBorderColor(newColor: string) {\n this._borderColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateBorderColorAndOpacity();\n }\n\n getBorderColor(): string {\n return (\n this._borderColor[0] +\n ';' +\n this._borderColor[1] +\n ';' +\n this._borderColor[2]\n );\n }\n\n _getRawBorderColor(): [float, float, float] {\n return this._borderColor;\n }\n\n setBorderOpacity(newOpacity: float) {\n this._borderOpacity = Math.max(0, Math.min(255, newOpacity));\n this._renderer.updateBorderColorAndOpacity();\n }\n\n getBorderOpacity(): float {\n return this._borderOpacity;\n }\n\n setBorderWidth(width: float) {\n this._borderWidth = Math.max(0, width);\n this._renderer.updateBorderWidth();\n }\n\n getBorderWidth(): float {\n return this._borderWidth;\n }\n\n setDisabled(value: boolean) {\n this._disabled = value;\n this._renderer.updateDisabled();\n }\n\n isDisabled(): boolean {\n return this._disabled;\n }\n\n setReadOnly(value: boolean) {\n this._readOnly = value;\n this._renderer.updateReadOnly();\n }\n\n isReadOnly(): boolean {\n return this._readOnly;\n }\n\n isFocused(): boolean {\n return this._renderer.isFocused();\n }\n\n focus(): void {\n if (!this.isFocused()) {\n // If the input was not previously focused, reset input manager because there is\n // no reason to maintain its state. It avoids bugs where a key is pressed, the text\n // input is focused and then the input manager does not have access to the keyup event\n // and considers the key still pressed.\n this.getInstanceContainer()\n .getGame()\n .getInputManager()\n .clearAllPressedKeys();\n }\n this._renderer.focus();\n }\n }\n gdjs.registerObject(\n 'TextInput::TextInputObject',\n gdjs.TextInputRuntimeObject\n );\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["namespace gdjs {\n const supportedInputTypes = [\n 'text',\n 'email',\n 'password',\n 'number',\n 'telephone number',\n 'url',\n 'search',\n 'text area',\n ] as const;\n const supportedTextAlign = ['left', 'center', 'right'] as const;\n\n type SupportedInputType = typeof supportedInputTypes[number];\n type SupportedTextAlign = typeof supportedTextAlign[number];\n const parseInputType = (potentialInputType: string): SupportedInputType => {\n const lowercasedNewInputType = potentialInputType.toLowerCase();\n\n // @ts-ignore - we're actually checking that this value is correct.\n if (supportedInputTypes.includes(lowercasedNewInputType))\n return potentialInputType as SupportedInputType;\n\n return 'text';\n };\n\n const parseTextAlign = (\n potentialTextAlign: string | undefined\n ): SupportedTextAlign => {\n if (!potentialTextAlign) return 'left';\n const lowercasedNewTextAlign = potentialTextAlign.toLowerCase();\n\n // @ts-ignore - we're actually checking that this value is correct.\n if (supportedTextAlign.includes(lowercasedNewTextAlign))\n return potentialTextAlign as SupportedTextAlign;\n\n return 'left';\n };\n\n /** Base parameters for {@link gdjs.TextInputRuntimeObject} */\n export interface TextInputObjectData extends ObjectData {\n /** The base parameters of the TextInput */\n content: {\n initialValue: string;\n placeholder: string;\n fontResourceName: string;\n fontSize: float;\n inputType: SupportedInputType;\n textColor: string;\n fillColor: string;\n fillOpacity: float;\n borderColor: string;\n borderOpacity: float;\n borderWidth: float;\n disabled: boolean;\n readOnly: boolean;\n // ---- Values can be undefined because of support for these feature was added in v5.5.222.\n paddingX?: float;\n paddingY?: float;\n textAlign?: SupportedTextAlign;\n maxLength?: integer;\n // ----\n };\n }\n\n export type TextInputNetworkSyncDataType = {\n opa: float;\n wid: float;\n hei: float;\n txt: string;\n frn: string;\n fs: number;\n place: string;\n it: SupportedInputType;\n tc: string;\n fc: string;\n fo: float;\n bc: string;\n bo: float;\n bw: float;\n dis: boolean;\n ro: boolean;\n };\n\n export type TextInputNetworkSyncData = ObjectNetworkSyncData &\n TextInputNetworkSyncDataType;\n\n const DEFAULT_WIDTH = 300;\n const DEFAULT_HEIGHT = 30;\n\n const clampPadding = (value: float, dimension: float, borderWidth: float) => {\n return Math.max(0, Math.min(dimension / 2 - borderWidth, value));\n };\n\n /**\n * Shows a text input on the screen the player can type text into.\n */\n export class TextInputRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.TextContainer, gdjs.Resizable, gdjs.OpacityHandler {\n private _string: string;\n private _placeholder: string;\n private opacity: float = 255;\n private _width: float = DEFAULT_WIDTH;\n private _height: float = DEFAULT_HEIGHT;\n private _fontResourceName: string;\n private _fontSize: float;\n private _inputType: SupportedInputType;\n private _textColor: [float, float, float];\n private _fillColor: [float, float, float];\n private _fillOpacity: float;\n private _paddingX: integer;\n private _paddingY: integer;\n private _textAlign: SupportedTextAlign;\n private _maxLength: integer;\n private _borderColor: [float, float, float];\n private _borderOpacity: float;\n private _borderWidth: float;\n private _disabled: boolean;\n private _readOnly: boolean;\n private _isSubmitted: boolean;\n _renderer: TextInputRuntimeObjectRenderer;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: TextInputObjectData\n ) {\n super(instanceContainer, objectData);\n\n this._string = objectData.content.initialValue;\n this._placeholder = objectData.content.placeholder;\n this._fontResourceName = objectData.content.fontResourceName;\n this._fontSize = objectData.content.fontSize || 20;\n this._inputType = parseInputType(objectData.content.inputType);\n this._textColor = gdjs.rgbOrHexToRGBColor(objectData.content.textColor);\n this._fillColor = gdjs.rgbOrHexToRGBColor(objectData.content.fillColor);\n this._fillOpacity = objectData.content.fillOpacity;\n this._borderColor = gdjs.rgbOrHexToRGBColor(\n objectData.content.borderColor\n );\n this._borderOpacity = objectData.content.borderOpacity;\n this._borderWidth = objectData.content.borderWidth;\n this._disabled = objectData.content.disabled;\n this._readOnly = objectData.content.readOnly;\n this._textAlign = parseTextAlign(objectData.content.textAlign);\n this._maxLength = objectData.content.maxLength || 0;\n this._paddingX =\n objectData.content.paddingX !== undefined\n ? objectData.content.paddingX\n : 2;\n this._paddingY =\n objectData.content.paddingY !== undefined\n ? objectData.content.paddingY\n : 1;\n this._isSubmitted = false;\n this._renderer = new gdjs.TextInputRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n getRendererObject() {\n return null;\n }\n\n updateFromObjectData(\n oldObjectData: TextInputObjectData,\n newObjectData: TextInputObjectData\n ): boolean {\n if (\n oldObjectData.content.initialValue !==\n newObjectData.content.initialValue\n ) {\n if (this._string === oldObjectData.content.initialValue) {\n this.setString(newObjectData.content.initialValue);\n }\n }\n if (\n oldObjectData.content.placeholder !== newObjectData.content.placeholder\n ) {\n this.setPlaceholder(newObjectData.content.placeholder);\n }\n if (\n oldObjectData.content.fontResourceName !==\n newObjectData.content.fontResourceName\n ) {\n this.setFontResourceName(newObjectData.content.fontResourceName);\n }\n if (oldObjectData.content.fontSize !== newObjectData.content.fontSize) {\n this.setFontSize(newObjectData.content.fontSize);\n }\n if (oldObjectData.content.inputType !== newObjectData.content.inputType) {\n this.setInputType(newObjectData.content.inputType);\n }\n if (oldObjectData.content.textColor !== newObjectData.content.textColor) {\n this.setTextColor(newObjectData.content.textColor);\n }\n if (oldObjectData.content.fillColor !== newObjectData.content.fillColor) {\n this.setFillColor(newObjectData.content.fillColor);\n }\n if (\n oldObjectData.content.fillOpacity !== newObjectData.content.fillOpacity\n ) {\n this.setFillOpacity(newObjectData.content.fillOpacity);\n }\n if (\n oldObjectData.content.borderColor !== newObjectData.content.borderColor\n ) {\n this.setBorderColor(newObjectData.content.borderColor);\n }\n if (\n oldObjectData.content.borderOpacity !==\n newObjectData.content.borderOpacity\n ) {\n this.setBorderOpacity(newObjectData.content.borderOpacity);\n }\n if (\n oldObjectData.content.borderWidth !== newObjectData.content.borderWidth\n ) {\n this.setBorderWidth(newObjectData.content.borderWidth);\n }\n if (oldObjectData.content.disabled !== newObjectData.content.disabled) {\n this.setDisabled(newObjectData.content.disabled);\n }\n if (oldObjectData.content.readOnly !== newObjectData.content.readOnly) {\n this.setReadOnly(newObjectData.content.readOnly);\n }\n if (\n newObjectData.content.maxLength !== undefined &&\n oldObjectData.content.maxLength !== newObjectData.content.maxLength\n ) {\n this.setMaxLength(newObjectData.content.maxLength);\n }\n if (\n newObjectData.content.textAlign &&\n oldObjectData.content.textAlign !== newObjectData.content.textAlign\n ) {\n this._textAlign = newObjectData.content.textAlign;\n }\n if (\n newObjectData.content.paddingX !== undefined &&\n oldObjectData.content.paddingX !== newObjectData.content.paddingX\n ) {\n this.setPaddingX(newObjectData.content.paddingX);\n }\n if (\n newObjectData.content.paddingY !== undefined &&\n oldObjectData.content.paddingY !== newObjectData.content.paddingY\n ) {\n this.setPaddingY(newObjectData.content.paddingY);\n }\n\n return true;\n }\n\n getNetworkSyncData(): TextInputNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n opa: this.getOpacity(),\n wid: this.getWidth(),\n hei: this.getHeight(),\n txt: this.getText(),\n frn: this.getFontResourceName(),\n fs: this.getFontSize(),\n place: this.getPlaceholder(),\n it: this.getInputType(),\n tc: this.getTextColor(),\n fc: this.getFillColor(),\n fo: this.getFillOpacity(),\n bc: this.getBorderColor(),\n bo: this.getBorderOpacity(),\n bw: this.getBorderWidth(),\n dis: this.isDisabled(),\n ro: this.isReadOnly(),\n };\n }\n\n updateFromNetworkSyncData(syncData: TextInputNetworkSyncData): void {\n super.updateFromNetworkSyncData(syncData);\n\n if (syncData.opa !== undefined) this.setOpacity(syncData.opa);\n if (syncData.wid !== undefined) this.setWidth(syncData.wid);\n if (syncData.hei !== undefined) this.setHeight(syncData.hei);\n if (syncData.txt !== undefined) this.setText(syncData.txt);\n if (syncData.frn !== undefined) this.setFontResourceName(syncData.frn);\n if (syncData.fs !== undefined) this.setFontSize(syncData.fs);\n if (syncData.place !== undefined) this.setPlaceholder(syncData.place);\n if (syncData.it !== undefined) this.setInputType(syncData.it);\n if (syncData.tc !== undefined) this.setTextColor(syncData.tc);\n if (syncData.fc !== undefined) this.setFillColor(syncData.fc);\n if (syncData.fo !== undefined) this.setFillOpacity(syncData.fo);\n if (syncData.bc !== undefined) this.setBorderColor(syncData.bc);\n if (syncData.bo !== undefined) this.setBorderOpacity(syncData.bo);\n if (syncData.bw !== undefined) this.setBorderWidth(syncData.bw);\n if (syncData.dis !== undefined) this.setDisabled(syncData.dis);\n if (syncData.ro !== undefined) this.setReadOnly(syncData.ro);\n }\n\n updatePreRender(instanceContainer: RuntimeInstanceContainer): void {\n this._isSubmitted = false;\n this._renderer.updatePreRender();\n }\n\n /**\n * Initialize the extra parameters that could be set for an instance.\n */\n extraInitializationFromInitialInstance(initialInstanceData: InstanceData) {\n for (const property of initialInstanceData.stringProperties) {\n if (property.name === 'initialValue') {\n this.setString(property.value);\n } else if (property.name === 'placeholder') {\n this.setPlaceholder(property.value);\n }\n }\n if (initialInstanceData.customSize) {\n this.setWidth(initialInstanceData.width);\n this.setHeight(initialInstanceData.height);\n this._renderer.updatePadding();\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n onScenePaused(runtimeScene: gdjs.RuntimeScene): void {\n this._renderer.onScenePaused();\n }\n\n onSceneResumed(runtimeScene: gdjs.RuntimeScene): void {\n this._renderer.onSceneResumed();\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.onDestroy();\n }\n\n setOpacity(opacity: float): void {\n this.opacity = Math.max(0, Math.min(255, opacity));\n this._renderer.updateOpacity();\n }\n\n getOpacity(): float {\n return this.opacity;\n }\n\n setSize(width: number, height: number): void {\n this.setWidth(width);\n this.setHeight(height);\n }\n\n setWidth(width: float): void {\n this._width = width;\n this._renderer.updatePadding();\n }\n\n setHeight(height: float): void {\n this._height = height;\n this._renderer.updatePadding();\n }\n\n /**\n * Return the width of the object.\n * @return The width of the object\n */\n getWidth(): float {\n return this._width;\n }\n\n /**\n * Return the width of the object.\n * @return The height of the object\n */\n getHeight(): float {\n return this._height;\n }\n\n /**\n * Get the text entered in the text input.\n * @deprecated use `getText` instead\n */\n getString() {\n return this.getText();\n }\n\n /**\n * Replace the text inside the text input.\n * @deprecated use `setText` instead\n */\n setString(text: string) {\n this.setText(text);\n }\n\n getText() {\n return this._string;\n }\n\n setText(newString: string) {\n if (newString === this._string) return;\n\n this._string = newString;\n this._renderer.updateString();\n }\n\n /**\n * Called by the renderer when the value of the input shown on the screen\n * was changed (because the user typed something).\n * This does not propagate back the value to the renderer, which would\n * result in the cursor being sent back to the end of the text.\n *\n * Do not use this if you are not inside the renderer - use `setString` instead.\n */\n onRendererInputValueChanged(inputValue: string) {\n this._string = inputValue;\n }\n\n onRendererFormSubmitted() {\n this._isSubmitted = true;\n }\n\n getFontResourceName() {\n return this._fontResourceName;\n }\n\n setFontResourceName(resourceName: string) {\n if (this._fontResourceName === resourceName) return;\n\n this._fontResourceName = resourceName;\n this._renderer.updateFont();\n }\n\n getFontSize() {\n return this._fontSize;\n }\n\n setFontSize(newSize: number) {\n this._fontSize = newSize;\n }\n\n /**\n * Get the placeholder shown when no text is entered\n */\n getPlaceholder() {\n return this._placeholder;\n }\n\n /**\n * Replace the text inside the text input.\n */\n setPlaceholder(newPlaceholder: string) {\n if (newPlaceholder === this._placeholder) return;\n\n this._placeholder = newPlaceholder;\n this._renderer.updatePlaceholder();\n }\n\n /**\n * Get the type of the input.\n */\n getInputType() {\n return this._inputType;\n }\n\n /**\n * Set the type of the input.\n */\n setInputType(newInputType: string) {\n const lowercasedNewInputType = newInputType.toLowerCase();\n if (lowercasedNewInputType === this._inputType) return;\n\n this._inputType = parseInputType(lowercasedNewInputType);\n this._renderer.updateInputType();\n }\n\n setTextColor(newColor: string) {\n this._textColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateTextColor();\n }\n\n getTextColor(): string {\n return (\n this._textColor[0] + ';' + this._textColor[1] + ';' + this._textColor[2]\n );\n }\n\n _getRawTextColor(): [float, float, float] {\n return this._textColor;\n }\n\n setFillColor(newColor: string) {\n this._fillColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateFillColorAndOpacity();\n }\n\n getFillColor(): string {\n return (\n this._fillColor[0] + ';' + this._fillColor[1] + ';' + this._fillColor[2]\n );\n }\n\n _getRawFillColor(): [float, float, float] {\n return this._fillColor;\n }\n\n setFillOpacity(newOpacity: float) {\n this._fillOpacity = Math.max(0, Math.min(255, newOpacity));\n this._renderer.updateFillColorAndOpacity();\n }\n\n getFillOpacity(): float {\n return this._fillOpacity;\n }\n\n setBorderColor(newColor: string) {\n this._borderColor = gdjs.rgbOrHexToRGBColor(newColor);\n this._renderer.updateBorderColorAndOpacity();\n }\n\n getBorderColor(): string {\n return (\n this._borderColor[0] +\n ';' +\n this._borderColor[1] +\n ';' +\n this._borderColor[2]\n );\n }\n\n _getRawBorderColor(): [float, float, float] {\n return this._borderColor;\n }\n\n setBorderOpacity(newOpacity: float) {\n this._borderOpacity = Math.max(0, Math.min(255, newOpacity));\n this._renderer.updateBorderColorAndOpacity();\n }\n\n getBorderOpacity(): float {\n return this._borderOpacity;\n }\n\n setBorderWidth(width: float) {\n this._borderWidth = Math.max(0, width);\n this._renderer.updateBorderWidth();\n }\n\n getBorderWidth(): float {\n return this._borderWidth;\n }\n\n setDisabled(value: boolean) {\n this._disabled = value;\n this._renderer.updateDisabled();\n }\n\n isDisabled(): boolean {\n return this._disabled;\n }\n\n setReadOnly(value: boolean) {\n this._readOnly = value;\n this._renderer.updateReadOnly();\n }\n\n isReadOnly(): boolean {\n return this._readOnly;\n }\n\n isFocused(): boolean {\n return this._renderer.isFocused();\n }\n isSubmitted(): boolean {\n return this._isSubmitted;\n }\n\n getMaxLength(): integer {\n return this._maxLength;\n }\n setMaxLength(value: integer) {\n if (this._maxLength === value) return;\n\n this._maxLength = value;\n this._renderer.updateMaxLength();\n }\n\n getPaddingX(): integer {\n return clampPadding(this._paddingX, this._width, this._borderWidth);\n }\n setPaddingX(value: integer) {\n if (this._paddingX === value) return;\n if (value < 0) {\n this._paddingX = 0;\n return;\n }\n\n this._paddingX = value;\n this._renderer.updatePadding();\n }\n getPaddingY(): integer {\n return clampPadding(this._paddingY, this._height, this._borderWidth);\n }\n setPaddingY(value: integer) {\n if (this._paddingY === value) return;\n if (value < 0) {\n this._paddingY = 0;\n return;\n }\n\n this._paddingY = value;\n this._renderer.updatePadding();\n }\n\n getTextAlign(): SupportedTextAlign {\n return this._textAlign;\n }\n\n setTextAlign(newTextAlign: string) {\n const parsedTextAlign = parseTextAlign(newTextAlign);\n if (parsedTextAlign === this._textAlign) return;\n\n this._textAlign = parsedTextAlign;\n this._renderer.updateTextAlign();\n }\n\n focus(): void {\n if (!this.isFocused()) {\n // If the input was not previously focused, reset input manager because there is\n // no reason to maintain its state. It avoids bugs where a key is pressed, the text\n // input is focused and then the input manager does not have access to the keyup event\n // and considers the key still pressed.\n this.getInstanceContainer()\n .getGame()\n .getInputManager()\n .clearAllPressedKeys();\n }\n this._renderer.focus();\n }\n }\n gdjs.registerObject(\n 'TextInput::TextInputObject',\n gdjs.TextInputRuntimeObject\n );\n}\n"],
5
+ "mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,CACE,KAAM,GAAsB,CAC1B,OACA,QACA,WACA,SACA,mBACA,MACA,SACA,aAEI,EAAqB,CAAC,OAAQ,SAAU,SAIxC,EAAiB,AAAC,GAAmD,CACzE,KAAM,GAAyB,EAAmB,cAGlD,MAAI,GAAoB,SAAS,GACxB,EAEF,QAGH,EAAiB,AACrB,GACuB,CACvB,GAAI,CAAC,EAAoB,MAAO,OAChC,KAAM,GAAyB,EAAmB,cAGlD,MAAI,GAAmB,SAAS,GACvB,EAEF,QAmDH,EAAgB,IAChB,EAAiB,GAEjB,EAAe,CAAC,EAAc,EAAkB,IAC7C,KAAK,IAAI,EAAG,KAAK,IAAI,EAAY,EAAI,EAAa,IAMpD,eACG,GAAK,aACsD,CAwBnE,YACE,EACA,EACA,CACA,MAAM,EAAmB,GAzBnB,aAAiB,IACjB,YAAgB,EAChB,aAAiB,EAyBvB,KAAK,QAAU,EAAW,QAAQ,aAClC,KAAK,aAAe,EAAW,QAAQ,YACvC,KAAK,kBAAoB,EAAW,QAAQ,iBAC5C,KAAK,UAAY,EAAW,QAAQ,UAAY,GAChD,KAAK,WAAa,EAAe,EAAW,QAAQ,WACpD,KAAK,WAAa,EAAK,mBAAmB,EAAW,QAAQ,WAC7D,KAAK,WAAa,EAAK,mBAAmB,EAAW,QAAQ,WAC7D,KAAK,aAAe,EAAW,QAAQ,YACvC,KAAK,aAAe,EAAK,mBACvB,EAAW,QAAQ,aAErB,KAAK,eAAiB,EAAW,QAAQ,cACzC,KAAK,aAAe,EAAW,QAAQ,YACvC,KAAK,UAAY,EAAW,QAAQ,SACpC,KAAK,UAAY,EAAW,QAAQ,SACpC,KAAK,WAAa,EAAe,EAAW,QAAQ,WACpD,KAAK,WAAa,EAAW,QAAQ,WAAa,EAClD,KAAK,UACH,EAAW,QAAQ,WAAa,OAC5B,EAAW,QAAQ,SACnB,EACN,KAAK,UACH,EAAW,QAAQ,WAAa,OAC5B,EAAW,QAAQ,SACnB,EACN,KAAK,aAAe,GACpB,KAAK,UAAY,GAAI,GAAK,+BACxB,KACA,GAIF,KAAK,YAGP,mBAAoB,CAClB,MAAO,MAGT,qBACE,EACA,EACS,CACT,MACE,GAAc,QAAQ,eACtB,EAAc,QAAQ,cAElB,KAAK,UAAY,EAAc,QAAQ,cACzC,KAAK,UAAU,EAAc,QAAQ,cAIvC,EAAc,QAAQ,cAAgB,EAAc,QAAQ,aAE5D,KAAK,eAAe,EAAc,QAAQ,aAG1C,EAAc,QAAQ,mBACtB,EAAc,QAAQ,kBAEtB,KAAK,oBAAoB,EAAc,QAAQ,kBAE7C,EAAc,QAAQ,WAAa,EAAc,QAAQ,UAC3D,KAAK,YAAY,EAAc,QAAQ,UAErC,EAAc,QAAQ,YAAc,EAAc,QAAQ,WAC5D,KAAK,aAAa,EAAc,QAAQ,WAEtC,EAAc,QAAQ,YAAc,EAAc,QAAQ,WAC5D,KAAK,aAAa,EAAc,QAAQ,WAEtC,EAAc,QAAQ,YAAc,EAAc,QAAQ,WAC5D,KAAK,aAAa,EAAc,QAAQ,WAGxC,EAAc,QAAQ,cAAgB,EAAc,QAAQ,aAE5D,KAAK,eAAe,EAAc,QAAQ,aAG1C,EAAc,QAAQ,cAAgB,EAAc,QAAQ,aAE5D,KAAK,eAAe,EAAc,QAAQ,aAG1C,EAAc,QAAQ,gBACtB,EAAc,QAAQ,eAEtB,KAAK,iBAAiB,EAAc,QAAQ,eAG5C,EAAc,QAAQ,cAAgB,EAAc,QAAQ,aAE5D,KAAK,eAAe,EAAc,QAAQ,aAExC,EAAc,QAAQ,WAAa,EAAc,QAAQ,UAC3D,KAAK,YAAY,EAAc,QAAQ,UAErC,EAAc,QAAQ,WAAa,EAAc,QAAQ,UAC3D,KAAK,YAAY,EAAc,QAAQ,UAGvC,EAAc,QAAQ,YAAc,QACpC,EAAc,QAAQ,YAAc,EAAc,QAAQ,WAE1D,KAAK,aAAa,EAAc,QAAQ,WAGxC,EAAc,QAAQ,WACtB,EAAc,QAAQ,YAAc,EAAc,QAAQ,WAE1D,MAAK,WAAa,EAAc,QAAQ,WAGxC,EAAc,QAAQ,WAAa,QACnC,EAAc,QAAQ,WAAa,EAAc,QAAQ,UAEzD,KAAK,YAAY,EAAc,QAAQ,UAGvC,EAAc,QAAQ,WAAa,QACnC,EAAc,QAAQ,WAAa,EAAc,QAAQ,UAEzD,KAAK,YAAY,EAAc,QAAQ,UAGlC,GAGT,oBAA+C,CAC7C,MAAO,IACF,MAAM,qBACT,IAAK,KAAK,aACV,IAAK,KAAK,WACV,IAAK,KAAK,YACV,IAAK,KAAK,UACV,IAAK,KAAK,sBACV,GAAI,KAAK,cACT,MAAO,KAAK,iBACZ,GAAI,KAAK,eACT,GAAI,KAAK,eACT,GAAI,KAAK,eACT,GAAI,KAAK,iBACT,GAAI,KAAK,iBACT,GAAI,KAAK,mBACT,GAAI,KAAK,iBACT,IAAK,KAAK,aACV,GAAI,KAAK,cAIb,0BAA0B,EAA0C,CAClE,MAAM,0BAA0B,GAE5B,EAAS,MAAQ,QAAW,KAAK,WAAW,EAAS,KACrD,EAAS,MAAQ,QAAW,KAAK,SAAS,EAAS,KACnD,EAAS,MAAQ,QAAW,KAAK,UAAU,EAAS,KACpD,EAAS,MAAQ,QAAW,KAAK,QAAQ,EAAS,KAClD,EAAS,MAAQ,QAAW,KAAK,oBAAoB,EAAS,KAC9D,EAAS,KAAO,QAAW,KAAK,YAAY,EAAS,IACrD,EAAS,QAAU,QAAW,KAAK,eAAe,EAAS,OAC3D,EAAS,KAAO,QAAW,KAAK,aAAa,EAAS,IACtD,EAAS,KAAO,QAAW,KAAK,aAAa,EAAS,IACtD,EAAS,KAAO,QAAW,KAAK,aAAa,EAAS,IACtD,EAAS,KAAO,QAAW,KAAK,eAAe,EAAS,IACxD,EAAS,KAAO,QAAW,KAAK,eAAe,EAAS,IACxD,EAAS,KAAO,QAAW,KAAK,iBAAiB,EAAS,IAC1D,EAAS,KAAO,QAAW,KAAK,eAAe,EAAS,IACxD,EAAS,MAAQ,QAAW,KAAK,YAAY,EAAS,KACtD,EAAS,KAAO,QAAW,KAAK,YAAY,EAAS,IAG3D,gBAAgB,EAAmD,CACjE,KAAK,aAAe,GACpB,KAAK,UAAU,kBAMjB,uCAAuC,EAAmC,CACxE,SAAW,KAAY,GAAoB,iBACzC,AAAI,EAAS,OAAS,eACpB,KAAK,UAAU,EAAS,OACf,EAAS,OAAS,eAC3B,KAAK,eAAe,EAAS,OAGjC,AAAI,EAAoB,YACtB,MAAK,SAAS,EAAoB,OAClC,KAAK,UAAU,EAAoB,QACnC,KAAK,UAAU,iBAEb,EAAoB,UAAY,QAClC,KAAK,WAAW,EAAoB,SAIxC,cAAc,EAAuC,CACnD,KAAK,UAAU,gBAGjB,eAAe,EAAuC,CACpD,KAAK,UAAU,iBAGjB,aAAoB,CAClB,MAAM,cACN,KAAK,UAAU,YAGjB,WAAW,EAAsB,CAC/B,KAAK,QAAU,KAAK,IAAI,EAAG,KAAK,IAAI,IAAK,IACzC,KAAK,UAAU,gBAGjB,YAAoB,CAClB,MAAO,MAAK,QAGd,QAAQ,EAAe,EAAsB,CAC3C,KAAK,SAAS,GACd,KAAK,UAAU,GAGjB,SAAS,EAAoB,CAC3B,KAAK,OAAS,EACd,KAAK,UAAU,gBAGjB,UAAU,EAAqB,CAC7B,KAAK,QAAU,EACf,KAAK,UAAU,gBAOjB,UAAkB,CAChB,MAAO,MAAK,OAOd,WAAmB,CACjB,MAAO,MAAK,QAOd,WAAY,CACV,MAAO,MAAK,UAOd,UAAU,EAAc,CACtB,KAAK,QAAQ,GAGf,SAAU,CACR,MAAO,MAAK,QAGd,QAAQ,EAAmB,CACzB,AAAI,IAAc,KAAK,SAEvB,MAAK,QAAU,EACf,KAAK,UAAU,gBAWjB,4BAA4B,EAAoB,CAC9C,KAAK,QAAU,EAGjB,yBAA0B,CACxB,KAAK,aAAe,GAGtB,qBAAsB,CACpB,MAAO,MAAK,kBAGd,oBAAoB,EAAsB,CACxC,AAAI,KAAK,oBAAsB,GAE/B,MAAK,kBAAoB,EACzB,KAAK,UAAU,cAGjB,aAAc,CACZ,MAAO,MAAK,UAGd,YAAY,EAAiB,CAC3B,KAAK,UAAY,EAMnB,gBAAiB,CACf,MAAO,MAAK,aAMd,eAAe,EAAwB,CACrC,AAAI,IAAmB,KAAK,cAE5B,MAAK,aAAe,EACpB,KAAK,UAAU,qBAMjB,cAAe,CACb,MAAO,MAAK,WAMd,aAAa,EAAsB,CACjC,KAAM,GAAyB,EAAa,cAC5C,AAAI,IAA2B,KAAK,YAEpC,MAAK,WAAa,EAAe,GACjC,KAAK,UAAU,mBAGjB,aAAa,EAAkB,CAC7B,KAAK,WAAa,EAAK,mBAAmB,GAC1C,KAAK,UAAU,kBAGjB,cAAuB,CACrB,MACE,MAAK,WAAW,GAAK,IAAM,KAAK,WAAW,GAAK,IAAM,KAAK,WAAW,GAI1E,kBAA0C,CACxC,MAAO,MAAK,WAGd,aAAa,EAAkB,CAC7B,KAAK,WAAa,EAAK,mBAAmB,GAC1C,KAAK,UAAU,4BAGjB,cAAuB,CACrB,MACE,MAAK,WAAW,GAAK,IAAM,KAAK,WAAW,GAAK,IAAM,KAAK,WAAW,GAI1E,kBAA0C,CACxC,MAAO,MAAK,WAGd,eAAe,EAAmB,CAChC,KAAK,aAAe,KAAK,IAAI,EAAG,KAAK,IAAI,IAAK,IAC9C,KAAK,UAAU,4BAGjB,gBAAwB,CACtB,MAAO,MAAK,aAGd,eAAe,EAAkB,CAC/B,KAAK,aAAe,EAAK,mBAAmB,GAC5C,KAAK,UAAU,8BAGjB,gBAAyB,CACvB,MACE,MAAK,aAAa,GAClB,IACA,KAAK,aAAa,GAClB,IACA,KAAK,aAAa,GAItB,oBAA4C,CAC1C,MAAO,MAAK,aAGd,iBAAiB,EAAmB,CAClC,KAAK,eAAiB,KAAK,IAAI,EAAG,KAAK,IAAI,IAAK,IAChD,KAAK,UAAU,8BAGjB,kBAA0B,CACxB,MAAO,MAAK,eAGd,eAAe,EAAc,CAC3B,KAAK,aAAe,KAAK,IAAI,EAAG,GAChC,KAAK,UAAU,oBAGjB,gBAAwB,CACtB,MAAO,MAAK,aAGd,YAAY,EAAgB,CAC1B,KAAK,UAAY,EACjB,KAAK,UAAU,iBAGjB,YAAsB,CACpB,MAAO,MAAK,UAGd,YAAY,EAAgB,CAC1B,KAAK,UAAY,EACjB,KAAK,UAAU,iBAGjB,YAAsB,CACpB,MAAO,MAAK,UAGd,WAAqB,CACnB,MAAO,MAAK,UAAU,YAExB,aAAuB,CACrB,MAAO,MAAK,aAGd,cAAwB,CACtB,MAAO,MAAK,WAEd,aAAa,EAAgB,CAC3B,AAAI,KAAK,aAAe,GAExB,MAAK,WAAa,EAClB,KAAK,UAAU,mBAGjB,aAAuB,CACrB,MAAO,GAAa,KAAK,UAAW,KAAK,OAAQ,KAAK,cAExD,YAAY,EAAgB,CAC1B,GAAI,KAAK,YAAc,EACvB,IAAI,EAAQ,EAAG,CACb,KAAK,UAAY,EACjB,OAGF,KAAK,UAAY,EACjB,KAAK,UAAU,iBAEjB,aAAuB,CACrB,MAAO,GAAa,KAAK,UAAW,KAAK,QAAS,KAAK,cAEzD,YAAY,EAAgB,CAC1B,GAAI,KAAK,YAAc,EACvB,IAAI,EAAQ,EAAG,CACb,KAAK,UAAY,EACjB,OAGF,KAAK,UAAY,EACjB,KAAK,UAAU,iBAGjB,cAAmC,CACjC,MAAO,MAAK,WAGd,aAAa,EAAsB,CACjC,KAAM,GAAkB,EAAe,GACvC,AAAI,IAAoB,KAAK,YAE7B,MAAK,WAAa,EAClB,KAAK,UAAU,mBAGjB,OAAc,CACZ,AAAK,KAAK,aAKR,KAAK,uBACF,UACA,kBACA,sBAEL,KAAK,UAAU,SA7hBZ,EAAM,yBAgiBb,EAAK,eACH,6BACA,EAAK,0BAloBC",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
- var gdjs;(function(s){let r;(function(c){let l;(function(o){const a=new s.Logger("Audio events");o.getGlobalVolume=function(t){return t.getScene().getSoundManager().getGlobalVolume()},o.setGlobalVolume=function(t,e){t.getScene().getSoundManager().setGlobalVolume(e)},o.unloadAllAudio=function(t){t.getScene().getSoundManager().unloadAll()},o.playSound=function(t,e,n,i,g){t.getScene().getSoundManager().playSound(e,n,i,g)},o.playSoundOnChannel=function(t,e,n,i,g,u){t.getScene().getSoundManager().playSoundOnChannel(e,n,i,g,u)},o.stopSoundOnChannel=function(t,e){const n=t.getScene().getSoundManager().getSoundOnChannel(e);n?n.stop():a.error(`Cannot stop non-existing sound on channel ${e}.`)},o.pauseSoundOnChannel=function(t,e){const n=t.getScene().getSoundManager().getSoundOnChannel(e);n?n.pause():a.error(`Cannot pause non-existing sound on channel ${e}.`)},o.continueSoundOnChannel=function(t,e){const n=t.getScene().getSoundManager().getSoundOnChannel(e);n?n.playing()||n.play():a.error(`Cannot continue playing non-existing sound on channel ${e}.`)},o.isSoundOnChannelPlaying=function(t,e){const n=t.getScene().getSoundManager().getSoundOnChannel(e);return n?n.playing():!1},o.isSoundOnChannelPaused=function(t,e){const n=t.getScene().getSoundManager().getSoundOnChannel(e);return n?n.paused():(a.error(`Cannot check if non-existing sound on channel ${e} is paused.`),!1)},o.isSoundOnChannelStopped=function(t,e){const n=t.getScene().getSoundManager().getSoundOnChannel(e);return n?n.stopped():(a.error(`Cannot check if non-existing sound on channel ${e} is stopped.`),!0)},o.getSoundOnChannelVolume=function(t,e){const n=t.getScene().getSoundManager().getSoundOnChannel(e);return n?n.getVolume()*100:(a.error(`Cannot get the volume of a non-existing sound on channel ${e}.`),100)},o.setSoundOnChannelVolume=function(t,e,n){const i=t.getScene().getSoundManager().getSoundOnChannel(e);i?i.setVolume(n/100):a.error(`Cannot set the volume of a non-existing sound on channel ${e}.`)},o.getSoundOnChannelPlayingOffset=function(t,e){const n=t.getScene().getSoundManager().getSoundOnChannel(e);return n?n.getSeek():(a.error(`Cannot get the playing offset of a non-existing sound on channel ${e}.`),0)},o.setSoundOnChannelPlayingOffset=function(t,e,n){const i=t.getScene().getSoundManager().getSoundOnChannel(e);i?i.setSeek(n):a.error(`Cannot set the playing offset of a non-existing sound on channel ${e}.`)},o.getSoundOnChannelPitch=function(t,e){const n=t.getScene().getSoundManager().getSoundOnChannel(e);return n?n.getRate():(a.error(`Cannot get the pitch of a non-existing sound on channel ${e}.`),1)},o.setSoundOnChannelPitch=function(t,e,n){const i=t.getScene().getSoundManager().getSoundOnChannel(e);i?i.setRate(n):a.error(`Cannot get the pitch of a non-existing sound on channel ${e}.`)},o.preloadSound=(t,e)=>t.getScene().getSoundManager().loadAudio(e,!1),o.unloadSound=(t,e)=>t.getScene().getSoundManager().unloadAudio(e,!1),o.playMusic=function(t,e,n,i,g){t.getScene().getSoundManager().playMusic(e,n,i,g)},o.playMusicOnChannel=function(t,e,n,i,g,u){t.getScene().getSoundManager().playMusicOnChannel(e,n,i,g,u)},o.stopMusicOnChannel=function(t,e){const n=t.getScene().getSoundManager().getMusicOnChannel(e);n?n.stop():a.error(`Cannot stop a non-existing music on channel ${e}.`)},o.pauseMusicOnChannel=function(t,e){const n=t.getScene().getSoundManager().getMusicOnChannel(e);n?n.pause():a.error(`Cannot pause a non-existing music on channel ${e}.`)},o.continueMusicOnChannel=function(t,e){const n=t.getScene().getSoundManager().getMusicOnChannel(e);n?n.playing()||n.play():a.error(`Cannot stop a non-existing music on channel ${e}.`)},o.isMusicOnChannelPlaying=function(t,e){const n=t.getScene().getSoundManager().getMusicOnChannel(e);return n?n.playing():!1},o.isMusicOnChannelPaused=function(t,e){const n=t.getScene().getSoundManager().getMusicOnChannel(e);return n?n.paused():(a.error(`Cannot check if non-existing music on channel ${e} is paused.`),!1)},o.isMusicOnChannelStopped=function(t,e){const n=t.getScene().getSoundManager().getMusicOnChannel(e);return n?n.stopped():(a.error(`Cannot check if non-existing music on channel ${e} is stopped.`),!0)},o.getMusicOnChannelVolume=function(t,e){const n=t.getScene().getSoundManager().getMusicOnChannel(e);return n?n.getVolume()*100:(a.error(`Cannot get the volume of a non-existing music on channel ${e}.`),100)},o.setMusicOnChannelVolume=function(t,e,n){const i=t.getScene().getSoundManager().getMusicOnChannel(e);i?i.setVolume(n/100):a.error(`Cannot set the volume of a non-existing music on channel ${e}.`)},o.getMusicOnChannelPlayingOffset=function(t,e){const n=t.getScene().getSoundManager().getMusicOnChannel(e);return n?n.getSeek():(a.error(`Cannot get the playing offset of a non-existing music on channel ${e}.`),0)},o.setMusicOnChannelPlayingOffset=function(t,e,n){const i=t.getScene().getSoundManager().getMusicOnChannel(e);i?i.setSeek(n):a.error(`Cannot set the playing offset of a non-existing music on channel ${e}.`)},o.getMusicOnChannelPitch=function(t,e){const n=t.getScene().getSoundManager().getMusicOnChannel(e);return n?n.getRate():(a.error(`Cannot get the pitch of a non-existing music on channel ${e}.`),1)},o.setMusicOnChannelPitch=function(t,e,n){const i=t.getScene().getSoundManager().getMusicOnChannel(e);i?i.setRate(n):a.error(`Cannot get the pitch of a non-existing music on channel ${e}.`)},o.preloadMusic=(t,e)=>t.getScene().getSoundManager().loadAudio(e,!0),o.unloadMusic=(t,e)=>t.getScene().getSoundManager().unloadAudio(e,!0),o.fadeSoundVolume=(t,e,n,i)=>{const g=t.getScene().getSoundManager().getSoundOnChannel(e);g?g.fade(g.getVolume(),n/100,i*1e3):a.error(`Cannot fade the volume of a non-existing sound on channel ${e}.`)},o.fadeMusicVolume=(t,e,n,i)=>{const g=t.getScene().getSoundManager().getMusicOnChannel(e);g?g.fade(g.getVolume(),n/100,i*1e3):a.error(`Cannot fade the volume of a non-existing music on channel ${e}.`)}})(l=c.sound||(c.sound={}))})(r=s.evtTools||(s.evtTools={}))})(gdjs||(gdjs={}));
1
+ var gdjs;(function(u){let s;(function(i){let r;(function(o){o.getGlobalVolume=function(n){return n.getScene().getSoundManager().getGlobalVolume()},o.setGlobalVolume=function(n,t){n.getScene().getSoundManager().setGlobalVolume(t)},o.unloadAllAudio=function(n){n.getScene().getSoundManager().unloadAll()},o.playSound=function(n,t,e,g,a){n.getScene().getSoundManager().playSound(t,e,g,a)},o.playSoundOnChannel=function(n,t,e,g,a,c){n.getScene().getSoundManager().playSoundOnChannel(t,e,g,a,c)},o.stopSoundOnChannel=function(n,t){const e=n.getScene().getSoundManager().getSoundOnChannel(t);e&&e.stop()},o.pauseSoundOnChannel=function(n,t){const e=n.getScene().getSoundManager().getSoundOnChannel(t);e&&e.pause()},o.continueSoundOnChannel=function(n,t){const e=n.getScene().getSoundManager().getSoundOnChannel(t);e&&(e.playing()||e.play())},o.isSoundOnChannelPlaying=function(n,t){const e=n.getScene().getSoundManager().getSoundOnChannel(t);return e?e.playing():!1},o.isSoundOnChannelPaused=function(n,t){const e=n.getScene().getSoundManager().getSoundOnChannel(t);return e?e.paused():!1},o.isSoundOnChannelStopped=function(n,t){const e=n.getScene().getSoundManager().getSoundOnChannel(t);return e?e.stopped():!0},o.getSoundOnChannelVolume=function(n,t){const e=n.getScene().getSoundManager().getSoundOnChannel(t);return e?e.getVolume()*100:100},o.setSoundOnChannelVolume=function(n,t,e){const g=n.getScene().getSoundManager().getSoundOnChannel(t);g&&g.setVolume(e/100)},o.getSoundOnChannelPlayingOffset=function(n,t){const e=n.getScene().getSoundManager().getSoundOnChannel(t);return e?e.getSeek():0},o.setSoundOnChannelPlayingOffset=function(n,t,e){const g=n.getScene().getSoundManager().getSoundOnChannel(t);g&&g.setSeek(e)},o.getSoundOnChannelPitch=function(n,t){const e=n.getScene().getSoundManager().getSoundOnChannel(t);return e?e.getRate():1},o.setSoundOnChannelPitch=function(n,t,e){const g=n.getScene().getSoundManager().getSoundOnChannel(t);g&&g.setRate(e)},o.preloadSound=(n,t)=>n.getScene().getSoundManager().loadAudio(t,!1),o.unloadSound=(n,t)=>n.getScene().getSoundManager().unloadAudio(t,!1),o.playMusic=function(n,t,e,g,a){n.getScene().getSoundManager().playMusic(t,e,g,a)},o.playMusicOnChannel=function(n,t,e,g,a,c){n.getScene().getSoundManager().playMusicOnChannel(t,e,g,a,c)},o.stopMusicOnChannel=function(n,t){const e=n.getScene().getSoundManager().getMusicOnChannel(t);e&&e.stop()},o.pauseMusicOnChannel=function(n,t){const e=n.getScene().getSoundManager().getMusicOnChannel(t);e&&e.pause()},o.continueMusicOnChannel=function(n,t){const e=n.getScene().getSoundManager().getMusicOnChannel(t);e&&(e.playing()||e.play())},o.isMusicOnChannelPlaying=function(n,t){const e=n.getScene().getSoundManager().getMusicOnChannel(t);return e?e.playing():!1},o.isMusicOnChannelPaused=function(n,t){const e=n.getScene().getSoundManager().getMusicOnChannel(t);return e?e.paused():!1},o.isMusicOnChannelStopped=function(n,t){const e=n.getScene().getSoundManager().getMusicOnChannel(t);return e?e.stopped():!0},o.getMusicOnChannelVolume=function(n,t){const e=n.getScene().getSoundManager().getMusicOnChannel(t);return e?e.getVolume()*100:100},o.setMusicOnChannelVolume=function(n,t,e){const g=n.getScene().getSoundManager().getMusicOnChannel(t);g&&g.setVolume(e/100)},o.getMusicOnChannelPlayingOffset=function(n,t){const e=n.getScene().getSoundManager().getMusicOnChannel(t);return e?e.getSeek():0},o.setMusicOnChannelPlayingOffset=function(n,t,e){const g=n.getScene().getSoundManager().getMusicOnChannel(t);g&&g.setSeek(e)},o.getMusicOnChannelPitch=function(n,t){const e=n.getScene().getSoundManager().getMusicOnChannel(t);return e?e.getRate():1},o.setMusicOnChannelPitch=function(n,t,e){const g=n.getScene().getSoundManager().getMusicOnChannel(t);g&&g.setRate(e)},o.preloadMusic=(n,t)=>n.getScene().getSoundManager().loadAudio(t,!0),o.unloadMusic=(n,t)=>n.getScene().getSoundManager().unloadAudio(t,!0),o.fadeSoundVolume=(n,t,e,g)=>{const a=n.getScene().getSoundManager().getSoundOnChannel(t);a&&a.fade(a.getVolume(),e/100,g*1e3)},o.fadeMusicVolume=(n,t,e,g)=>{const a=n.getScene().getSoundManager().getMusicOnChannel(t);a&&a.fade(a.getVolume(),e/100,g*1e3)}})(r=i.sound||(i.sound={}))})(s=u.evtTools||(u.evtTools={}))})(gdjs||(gdjs={}));
2
2
  //# sourceMappingURL=soundtools.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../GDevelop/GDJS/Runtime/events-tools/soundtools.ts"],
4
- "sourcesContent": ["/*\n * GDevelop JS Platform\n * Copyright 2013-2016 Florian Rival (Florian.Rival@gmail.com). All rights reserved.\n * This project is released under the MIT License.\n */\nnamespace gdjs {\n export namespace evtTools {\n export namespace sound {\n const logger = new gdjs.Logger('Audio events');\n\n export const getGlobalVolume = function (\n runtimeScene: gdjs.RuntimeScene\n ): float {\n return runtimeScene.getScene().getSoundManager().getGlobalVolume();\n };\n\n export const setGlobalVolume = function (\n runtimeScene: gdjs.RuntimeScene,\n globalVolume: float\n ): void {\n runtimeScene.getScene().getSoundManager().setGlobalVolume(globalVolume);\n };\n\n export const unloadAllAudio = function (\n runtimeScene: gdjs.RuntimeScene\n ): void {\n runtimeScene.getScene().getSoundManager().unloadAll();\n };\n\n // Sounds:\n export const playSound = function (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string,\n loop: boolean,\n volume: float,\n pitch: float\n ): void {\n runtimeScene\n .getScene()\n .getSoundManager()\n .playSound(soundFile, loop, volume, pitch);\n };\n\n export const playSoundOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string,\n channel: integer,\n loop: boolean,\n volume: float,\n pitch: float\n ): void {\n runtimeScene\n .getScene()\n .getSoundManager()\n .playSoundOnChannel(soundFile, channel, loop, volume, pitch);\n };\n\n export const stopSoundOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) sound.stop();\n else {\n logger.error(`Cannot stop non-existing sound on channel ${channel}.`);\n }\n };\n\n export const pauseSoundOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) sound.pause();\n else {\n logger.error(\n `Cannot pause non-existing sound on channel ${channel}.`\n );\n }\n };\n\n export const continueSoundOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) {\n if (!sound.playing()) sound.play();\n } else {\n logger.error(\n `Cannot continue playing non-existing sound on channel ${channel}.`\n );\n }\n };\n\n export const isSoundOnChannelPlaying = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n return sound ? sound.playing() : false;\n };\n\n export const isSoundOnChannelPaused = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) return sound.paused();\n else {\n logger.error(\n `Cannot check if non-existing sound on channel ${channel} is paused.`\n );\n return false;\n }\n };\n\n export const isSoundOnChannelStopped = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) return sound.stopped();\n else {\n logger.error(\n `Cannot check if non-existing sound on channel ${channel} is stopped.`\n );\n return true;\n }\n };\n\n export const getSoundOnChannelVolume = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) return sound.getVolume() * 100;\n else {\n logger.error(\n `Cannot get the volume of a non-existing sound on channel ${channel}.`\n );\n return 100;\n }\n };\n\n export const setSoundOnChannelVolume = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n volume: float\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) sound.setVolume(volume / 100);\n else {\n logger.error(\n `Cannot set the volume of a non-existing sound on channel ${channel}.`\n );\n }\n };\n\n export const getSoundOnChannelPlayingOffset = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) return sound.getSeek();\n else {\n logger.error(\n `Cannot get the playing offset of a non-existing sound on channel ${channel}.`\n );\n return 0;\n }\n };\n\n export const setSoundOnChannelPlayingOffset = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n playingOffset: float\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) sound.setSeek(playingOffset);\n else {\n logger.error(\n `Cannot set the playing offset of a non-existing sound on channel ${channel}.`\n );\n }\n };\n\n export const getSoundOnChannelPitch = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) return sound.getRate();\n else {\n logger.error(\n `Cannot get the pitch of a non-existing sound on channel ${channel}.`\n );\n return 1;\n }\n };\n\n export const setSoundOnChannelPitch = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n pitch: float\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) sound.setRate(pitch);\n else {\n logger.error(\n `Cannot get the pitch of a non-existing sound on channel ${channel}.`\n );\n }\n };\n\n export const preloadSound = (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string\n ) =>\n runtimeScene\n .getScene()\n .getSoundManager()\n .loadAudio(soundFile, /* isMusic= */ false);\n\n export const unloadSound = (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string\n ) =>\n runtimeScene\n .getScene()\n .getSoundManager()\n .unloadAudio(soundFile, /* isMusic= */ false);\n\n // Musics:\n export const playMusic = function (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string,\n loop: boolean,\n volume: float,\n pitch: float\n ): void {\n runtimeScene\n .getScene()\n .getSoundManager()\n .playMusic(soundFile, loop, volume, pitch);\n };\n\n export const playMusicOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string,\n channel: integer,\n loop: boolean,\n volume: float,\n pitch: float\n ): void {\n runtimeScene\n .getScene()\n .getSoundManager()\n .playMusicOnChannel(soundFile, channel, loop, volume, pitch);\n };\n\n export const stopMusicOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) music.stop();\n else {\n logger.error(\n `Cannot stop a non-existing music on channel ${channel}.`\n );\n }\n };\n\n export const pauseMusicOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) music.pause();\n else {\n logger.error(\n `Cannot pause a non-existing music on channel ${channel}.`\n );\n }\n };\n\n export const continueMusicOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) {\n if (!music.playing()) music.play();\n } else {\n logger.error(\n `Cannot stop a non-existing music on channel ${channel}.`\n );\n }\n };\n\n export const isMusicOnChannelPlaying = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n return music ? music.playing() : false;\n };\n\n export const isMusicOnChannelPaused = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) return music.paused();\n else {\n logger.error(\n `Cannot check if non-existing music on channel ${channel} is paused.`\n );\n return false;\n }\n };\n\n export const isMusicOnChannelStopped = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) return music.stopped();\n else {\n logger.error(\n `Cannot check if non-existing music on channel ${channel} is stopped.`\n );\n return true;\n }\n };\n\n export const getMusicOnChannelVolume = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) return music.getVolume() * 100;\n else {\n logger.error(\n `Cannot get the volume of a non-existing music on channel ${channel}.`\n );\n return 100;\n }\n };\n\n export const setMusicOnChannelVolume = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n volume: float\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) music.setVolume(volume / 100);\n else {\n logger.error(\n `Cannot set the volume of a non-existing music on channel ${channel}.`\n );\n }\n };\n\n export const getMusicOnChannelPlayingOffset = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) return music.getSeek();\n else {\n logger.error(\n `Cannot get the playing offset of a non-existing music on channel ${channel}.`\n );\n return 0;\n }\n };\n\n export const setMusicOnChannelPlayingOffset = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n playingOffset: float\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) music.setSeek(playingOffset);\n else {\n logger.error(\n `Cannot set the playing offset of a non-existing music on channel ${channel}.`\n );\n }\n };\n\n export const getMusicOnChannelPitch = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) return music.getRate();\n else {\n logger.error(\n `Cannot get the pitch of a non-existing music on channel ${channel}.`\n );\n return 1;\n }\n };\n\n export const setMusicOnChannelPitch = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n pitch: float\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) music.setRate(pitch);\n else {\n logger.error(\n `Cannot get the pitch of a non-existing music on channel ${channel}.`\n );\n }\n };\n\n export const preloadMusic = (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string\n ) =>\n runtimeScene\n .getScene()\n .getSoundManager()\n .loadAudio(soundFile, /* isMusic= */ true);\n\n export const unloadMusic = (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string\n ) =>\n runtimeScene\n .getScene()\n .getSoundManager()\n .unloadAudio(soundFile, /* isMusic= */ true);\n\n export const fadeSoundVolume = (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n toVolume: float,\n timeOfFade: float /* in seconds */\n ) => {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) {\n sound.fade(sound.getVolume(), toVolume / 100, timeOfFade * 1000);\n } else {\n logger.error(\n `Cannot fade the volume of a non-existing sound on channel ${channel}.`\n );\n }\n };\n export const fadeMusicVolume = (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n toVolume: float,\n timeOfFade: float /* in seconds */\n ) => {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) {\n music.fade(music.getVolume(), toVolume / 100, timeOfFade * 1000);\n } else {\n logger.error(\n `Cannot fade the volume of a non-existing music on channel ${channel}.`\n );\n }\n };\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/*\n * GDevelop JS Platform\n * Copyright 2013-2016 Florian Rival (Florian.Rival@gmail.com). All rights reserved.\n * This project is released under the MIT License.\n */\nnamespace gdjs {\n export namespace evtTools {\n export namespace sound {\n export const getGlobalVolume = function (\n runtimeScene: gdjs.RuntimeScene\n ): float {\n return runtimeScene.getScene().getSoundManager().getGlobalVolume();\n };\n\n export const setGlobalVolume = function (\n runtimeScene: gdjs.RuntimeScene,\n globalVolume: float\n ): void {\n runtimeScene.getScene().getSoundManager().setGlobalVolume(globalVolume);\n };\n\n export const unloadAllAudio = function (\n runtimeScene: gdjs.RuntimeScene\n ): void {\n runtimeScene.getScene().getSoundManager().unloadAll();\n };\n\n // Sounds:\n export const playSound = function (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string,\n loop: boolean,\n volume: float,\n pitch: float\n ): void {\n runtimeScene\n .getScene()\n .getSoundManager()\n .playSound(soundFile, loop, volume, pitch);\n };\n\n export const playSoundOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string,\n channel: integer,\n loop: boolean,\n volume: float,\n pitch: float\n ): void {\n runtimeScene\n .getScene()\n .getSoundManager()\n .playSoundOnChannel(soundFile, channel, loop, volume, pitch);\n };\n\n export const stopSoundOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) sound.stop();\n };\n\n export const pauseSoundOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) sound.pause();\n };\n\n export const continueSoundOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) {\n if (!sound.playing()) sound.play();\n }\n };\n\n export const isSoundOnChannelPlaying = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n return sound ? sound.playing() : false;\n };\n\n export const isSoundOnChannelPaused = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) return sound.paused();\n else {\n return false;\n }\n };\n\n export const isSoundOnChannelStopped = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) return sound.stopped();\n else {\n return true;\n }\n };\n\n export const getSoundOnChannelVolume = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) return sound.getVolume() * 100;\n else {\n return 100;\n }\n };\n\n export const setSoundOnChannelVolume = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n volume: float\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) sound.setVolume(volume / 100);\n };\n\n export const getSoundOnChannelPlayingOffset = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) return sound.getSeek();\n else {\n return 0;\n }\n };\n\n export const setSoundOnChannelPlayingOffset = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n playingOffset: float\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) sound.setSeek(playingOffset);\n };\n\n export const getSoundOnChannelPitch = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) return sound.getRate();\n else {\n return 1;\n }\n };\n\n export const setSoundOnChannelPitch = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n pitch: float\n ): void {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) sound.setRate(pitch);\n };\n\n export const preloadSound = (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string\n ) =>\n runtimeScene\n .getScene()\n .getSoundManager()\n .loadAudio(soundFile, /* isMusic= */ false);\n\n export const unloadSound = (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string\n ) =>\n runtimeScene\n .getScene()\n .getSoundManager()\n .unloadAudio(soundFile, /* isMusic= */ false);\n\n // Musics:\n export const playMusic = function (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string,\n loop: boolean,\n volume: float,\n pitch: float\n ): void {\n runtimeScene\n .getScene()\n .getSoundManager()\n .playMusic(soundFile, loop, volume, pitch);\n };\n\n export const playMusicOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string,\n channel: integer,\n loop: boolean,\n volume: float,\n pitch: float\n ): void {\n runtimeScene\n .getScene()\n .getSoundManager()\n .playMusicOnChannel(soundFile, channel, loop, volume, pitch);\n };\n\n export const stopMusicOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) music.stop();\n };\n\n export const pauseMusicOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) music.pause();\n };\n\n export const continueMusicOnChannel = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) {\n if (!music.playing()) music.play();\n }\n };\n\n export const isMusicOnChannelPlaying = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n return music ? music.playing() : false;\n };\n\n export const isMusicOnChannelPaused = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) return music.paused();\n else {\n return false;\n }\n };\n\n export const isMusicOnChannelStopped = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): boolean {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) return music.stopped();\n else {\n return true;\n }\n };\n\n export const getMusicOnChannelVolume = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) return music.getVolume() * 100;\n else {\n return 100;\n }\n };\n\n export const setMusicOnChannelVolume = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n volume: float\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) music.setVolume(volume / 100);\n };\n\n export const getMusicOnChannelPlayingOffset = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) return music.getSeek();\n else {\n return 0;\n }\n };\n\n export const setMusicOnChannelPlayingOffset = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n playingOffset: float\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) music.setSeek(playingOffset);\n };\n\n export const getMusicOnChannelPitch = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer\n ): float {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) return music.getRate();\n else {\n return 1;\n }\n };\n\n export const setMusicOnChannelPitch = function (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n pitch: float\n ): void {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) music.setRate(pitch);\n };\n\n export const preloadMusic = (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string\n ) =>\n runtimeScene\n .getScene()\n .getSoundManager()\n .loadAudio(soundFile, /* isMusic= */ true);\n\n export const unloadMusic = (\n runtimeScene: gdjs.RuntimeScene,\n soundFile: string\n ) =>\n runtimeScene\n .getScene()\n .getSoundManager()\n .unloadAudio(soundFile, /* isMusic= */ true);\n\n export const fadeSoundVolume = (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n toVolume: float,\n timeOfFade: float /* in seconds */\n ) => {\n const sound = runtimeScene\n .getScene()\n .getSoundManager()\n .getSoundOnChannel(channel);\n if (sound) {\n sound.fade(sound.getVolume(), toVolume / 100, timeOfFade * 1000);\n }\n };\n export const fadeMusicVolume = (\n runtimeScene: gdjs.RuntimeScene,\n channel: integer,\n toVolume: float,\n timeOfFade: float /* in seconds */\n ) => {\n const music = runtimeScene\n .getScene()\n .getSoundManager()\n .getMusicOnChannel(channel);\n if (music) {\n music.fade(music.getVolume(), toVolume / 100, timeOfFade * 1000);\n }\n };\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -340,7 +340,6 @@ declare interface ProjectPropertiesData {
340
340
  antialiasingMode: 'none' | 'MSAA';
341
341
  antialisingEnabledOnMobile: boolean;
342
342
  sizeOnStartupMode: string;
343
- useExternalSourceFiles: boolean;
344
343
  version: string;
345
344
  name: string;
346
345
  author: string;