@babylonjs/gui 9.25.0 → 9.26.0

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 (42) hide show
  1. package/2D/controls/colorpicker.pure.js +2 -2
  2. package/2D/controls/colorpicker.pure.js.map +1 -1
  3. package/2D/controls/container.pure.d.ts +9 -0
  4. package/2D/controls/container.pure.js +14 -2
  5. package/2D/controls/container.pure.js.map +1 -1
  6. package/2D/controls/control.pure.d.ts +26 -1
  7. package/2D/controls/control.pure.js +104 -71
  8. package/2D/controls/control.pure.js.map +1 -1
  9. package/2D/controls/flexPanel.d.ts +1 -0
  10. package/2D/controls/flexPanel.js +4 -0
  11. package/2D/controls/flexPanel.js.map +1 -0
  12. package/2D/controls/flexPanel.pure.d.ts +91 -0
  13. package/2D/controls/flexPanel.pure.js +318 -0
  14. package/2D/controls/flexPanel.pure.js.map +1 -0
  15. package/2D/controls/index.d.ts +1 -0
  16. package/2D/controls/index.js +1 -0
  17. package/2D/controls/index.js.map +1 -1
  18. package/2D/controls/inputText.pure.js +7 -6
  19. package/2D/controls/inputText.pure.js.map +1 -1
  20. package/2D/controls/inputTextArea.pure.js +14 -13
  21. package/2D/controls/inputTextArea.pure.js.map +1 -1
  22. package/2D/controls/line.pure.js +9 -9
  23. package/2D/controls/line.pure.js.map +1 -1
  24. package/2D/controls/pure.d.ts +1 -0
  25. package/2D/controls/pure.js +1 -0
  26. package/2D/controls/pure.js.map +1 -1
  27. package/2D/controls/sliders/baseSlider.js +11 -11
  28. package/2D/controls/sliders/baseSlider.js.map +1 -1
  29. package/2D/controls/sliders/imageScrollBar.js +3 -3
  30. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  31. package/2D/controls/sliders/scrollBar.pure.js +3 -3
  32. package/2D/controls/sliders/scrollBar.pure.js.map +1 -1
  33. package/2D/controls/stackPanel.pure.js +1 -1
  34. package/2D/controls/stackPanel.pure.js.map +1 -1
  35. package/2D/controls/textBlock.pure.js +10 -10
  36. package/2D/controls/textBlock.pure.js.map +1 -1
  37. package/2D/multiLinePoint.js +2 -2
  38. package/2D/multiLinePoint.js.map +1 -1
  39. package/2D/valueAndUnit.d.ts +15 -3
  40. package/2D/valueAndUnit.js +36 -11
  41. package/2D/valueAndUnit.js.map +1 -1
  42. package/package.json +3 -2
@@ -144,6 +144,15 @@ export declare class Container extends Control {
144
144
  * @internal
145
145
  */
146
146
  _layout(parentMeasure: Measure, context: ICanvasRenderingContext): boolean;
147
+ /** @internal */
148
+ protected _beforeChildLayout(): void;
149
+ /**
150
+ * Gets an optional parent-controlled layout box, relative to the content origin.
151
+ * @param _child defines the child to lay out
152
+ * @returns the layout box, or null for the child's own layout
153
+ * @internal
154
+ */
155
+ _getLayoutMeasureForChild(_child: Control): Nullable<Measure>;
147
156
  protected _postMeasure(): void;
148
157
  private _inverseTransformMatrix;
149
158
  private _inverseMeasure;
@@ -370,14 +370,15 @@ let Container = (() => {
370
370
  this._rebuildLayout = false;
371
371
  this._processMeasures(parentMeasure, context);
372
372
  if (!this._isClipped) {
373
+ this._beforeChildLayout();
373
374
  for (const child of this._children) {
374
375
  child._tempParentMeasure.copyFrom(this._measureForChildren);
375
376
  if (child._layout(this._measureForChildren, context)) {
376
377
  if (child.isVisible && !child.notRenderable) {
377
- if (this.adaptWidthToChildren && child._width.isPixel) {
378
+ if (this.adaptWidthToChildren && !child._width.isPercentage) {
378
379
  computedWidth = Math.max(computedWidth, child._currentMeasure.width + child._paddingLeftInPixels + child._paddingRightInPixels);
379
380
  }
380
- if (this.adaptHeightToChildren && child._height.isPixel) {
381
+ if (this.adaptHeightToChildren && !child._height.isPercentage) {
381
382
  computedHeight = Math.max(computedHeight, child._currentMeasure.height + child._paddingTopInPixels + child._paddingBottomInPixels);
382
383
  }
383
384
  }
@@ -417,6 +418,17 @@ let Container = (() => {
417
418
  }
418
419
  return true;
419
420
  }
421
+ /** @internal */
422
+ _beforeChildLayout() { }
423
+ /**
424
+ * Gets an optional parent-controlled layout box, relative to the content origin.
425
+ * @param _child defines the child to lay out
426
+ * @returns the layout box, or null for the child's own layout
427
+ * @internal
428
+ */
429
+ _getLayoutMeasureForChild(_child) {
430
+ return null;
431
+ }
420
432
  _postMeasure() {
421
433
  // Do nothing by default
422
434
  }
@@ -1 +1 @@
1
- {"version":3,"file":"container.pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/container.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\nimport { Control } from \"./control.pure\";\r\nimport { Measure } from \"../measure\";\r\nimport { type AdvancedDynamicTexture } from \"../advancedDynamicTexture\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { type PointerInfoBase } from \"core/Events/pointerEvents\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\nimport { DynamicTexture } from \"core/Materials/Textures/dynamicTexture.pure\";\r\nimport { Texture } from \"core/Materials/Textures/texture.pure\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { type BaseGradient } from \"./gradient/BaseGradient\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { Matrix2D } from \"../math2D\";\r\n\r\n/**\r\n * Root class for 2D containers\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/gui/gui#containers\r\n */\r\nexport class Container extends Control {\r\n /** @internal */\r\n public _children = new Array<Control>();\r\n /** @internal */\r\n protected _measureForChildren = Measure.Empty();\r\n /** @internal */\r\n protected _background = \"\";\r\n /** @internal */\r\n protected _backgroundGradient: Nullable<BaseGradient> = null;\r\n /** @internal */\r\n protected _adaptWidthToChildren = false;\r\n /** @internal */\r\n protected _adaptHeightToChildren = false;\r\n /** @internal */\r\n protected _renderToIntermediateTexture: boolean = false;\r\n /** @internal */\r\n protected _intermediateTexture: Nullable<DynamicTexture> = null;\r\n\r\n /**\r\n * Gets or sets a boolean indicating that the container will let internal controls handle picking instead of doing it directly using its bounding info\r\n */\r\n @serialize()\r\n public delegatePickingToChildren = false;\r\n\r\n /** Gets or sets boolean indicating if children should be rendered to an intermediate texture rather than directly to host, useful for alpha blending */\r\n @serialize()\r\n public get renderToIntermediateTexture(): boolean {\r\n return this._renderToIntermediateTexture;\r\n }\r\n public set renderToIntermediateTexture(value: boolean) {\r\n if (this._renderToIntermediateTexture === value) {\r\n return;\r\n }\r\n this._renderToIntermediateTexture = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating that layout cycle errors should be displayed on the console\r\n */\r\n public logLayoutCycleErrors = false;\r\n\r\n /**\r\n * Gets or sets the number of layout cycles (a change involved by a control while evaluating the layout) allowed\r\n */\r\n @serialize()\r\n public maxLayoutCycle = 3;\r\n\r\n /** Gets or sets a boolean indicating if the container should try to adapt to its children height */\r\n @serialize()\r\n public get adaptHeightToChildren(): boolean {\r\n return this._adaptHeightToChildren;\r\n }\r\n\r\n public set adaptHeightToChildren(value: boolean) {\r\n if (this._adaptHeightToChildren === value) {\r\n return;\r\n }\r\n\r\n this._adaptHeightToChildren = value;\r\n\r\n if (value) {\r\n this.height = \"100%\";\r\n }\r\n\r\n this._rebuildLayout = true;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the container should try to adapt to its children width */\r\n @serialize()\r\n public get adaptWidthToChildren(): boolean {\r\n return this._adaptWidthToChildren;\r\n }\r\n\r\n public set adaptWidthToChildren(value: boolean) {\r\n if (this._adaptWidthToChildren === value) {\r\n return;\r\n }\r\n\r\n this._adaptWidthToChildren = value;\r\n\r\n if (value) {\r\n this.width = \"100%\";\r\n }\r\n\r\n this._rebuildLayout = true;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background color */\r\n @serialize()\r\n public get background(): string {\r\n return this._background;\r\n }\r\n\r\n public set background(value: string) {\r\n if (this._background === value) {\r\n return;\r\n }\r\n\r\n this._background = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background gradient color. Takes precedence over background */\r\n @serialize()\r\n public get backgroundGradient() {\r\n return this._backgroundGradient;\r\n }\r\n\r\n public set backgroundGradient(value: Nullable<BaseGradient>) {\r\n if (this._backgroundGradient === value) {\r\n return;\r\n }\r\n this._backgroundGradient = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets the list of children */\r\n public get children(): Control[] {\r\n return this._children;\r\n }\r\n\r\n public override get isReadOnly() {\r\n return this._isReadOnly;\r\n }\r\n\r\n public override set isReadOnly(value: boolean) {\r\n this._isReadOnly = value;\r\n\r\n for (const child of this._children) {\r\n child.isReadOnly = value;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new Container\r\n * @param name defines the name of the container\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"Container\";\r\n }\r\n\r\n public override _flagDescendantsAsMatrixDirty(): void {\r\n for (const child of this.children) {\r\n child._isClipped = false;\r\n child._markMatrixAsDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Gets a child using its name\r\n * @param name defines the child name to look for\r\n * @returns the child control if found\r\n */\r\n public getChildByName(name: string): Nullable<Control> {\r\n for (const child of this.children) {\r\n if (child.name === name) {\r\n return child;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets a child using its type and its name\r\n * @param name defines the child name to look for\r\n * @param type defines the child type to look for\r\n * @returns the child control if found\r\n */\r\n public getChildByType(name: string, type: string): Nullable<Control> {\r\n for (const child of this.children) {\r\n if (child.name === name && child.typeName === type) {\r\n return child;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Search for a specific control in children\r\n * @param control defines the control to look for\r\n * @returns true if the control is in child list\r\n */\r\n public containsControl(control: Control): boolean {\r\n return this.children.indexOf(control) !== -1;\r\n }\r\n\r\n /**\r\n * Adds a new control to the current container\r\n * @param control defines the control to add\r\n * @returns the current container\r\n */\r\n public addControl(control: Nullable<Control>): Container {\r\n if (!control) {\r\n return this;\r\n }\r\n\r\n const index = this._children.indexOf(control);\r\n\r\n if (index !== -1) {\r\n return this;\r\n }\r\n control._link(this._host);\r\n\r\n control._markAllAsDirty();\r\n\r\n this._reOrderControl(control);\r\n\r\n this._markAsDirty();\r\n\r\n this.onControlAddedObservable.notifyObservers(control);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes all controls from the current container\r\n * @returns the current container\r\n */\r\n public clearControls(): Container {\r\n const children = this.children.slice();\r\n\r\n for (const child of children) {\r\n this.removeControl(child);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the current container\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control): Container {\r\n const index = this._children.indexOf(control);\r\n\r\n if (index !== -1) {\r\n this._children.splice(index, 1);\r\n\r\n control.parent = null;\r\n }\r\n\r\n control.linkWithMesh(null);\r\n\r\n if (this._host) {\r\n this._host._cleanControlAfterRemoval(control);\r\n }\r\n\r\n this._markAsDirty();\r\n\r\n this.onControlRemovedObservable.notifyObservers(control);\r\n return this;\r\n }\r\n\r\n /**\r\n * An event triggered when any control is added to this container.\r\n */\r\n public onControlAddedObservable = new Observable<Nullable<Control>>();\r\n\r\n /**\r\n * An event triggered when any control is removed from this container.\r\n */\r\n public onControlRemovedObservable = new Observable<Nullable<Control>>();\r\n\r\n /**\r\n * @internal\r\n */\r\n public _reOrderControl(control: Control): void {\r\n const linkedMesh = control.linkedMesh;\r\n\r\n this.removeControl(control);\r\n\r\n let wasAdded = false;\r\n for (let index = 0; index < this._children.length; index++) {\r\n if (this._children[index].zIndex > control.zIndex) {\r\n this._children.splice(index, 0, control);\r\n wasAdded = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!wasAdded) {\r\n this._children.push(control);\r\n }\r\n\r\n control.parent = this;\r\n\r\n if (linkedMesh) {\r\n control.linkWithMesh(linkedMesh);\r\n }\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _offsetLeft(offset: number) {\r\n super._offsetLeft(offset);\r\n\r\n for (const child of this._children) {\r\n child._offsetLeft(offset);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _offsetTop(offset: number) {\r\n super._offsetTop(offset);\r\n\r\n for (const child of this._children) {\r\n child._offsetTop(offset);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override _markAllAsDirty(): void {\r\n super._markAllAsDirty();\r\n\r\n for (let index = 0; index < this._children.length; index++) {\r\n this._children[index]._markAllAsDirty();\r\n }\r\n }\r\n\r\n protected _getBackgroundColor(context: ICanvasRenderingContext) {\r\n return this._backgroundGradient ? this._backgroundGradient.getCanvasGradient(context) : this._background;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n protected _localDraw(context: ICanvasRenderingContext): void {\r\n if (this._background || this._backgroundGradient) {\r\n context.save();\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX * this._host.idealRatio;\r\n context.shadowOffsetY = this.shadowOffsetY * this._host.idealRatio;\r\n }\r\n\r\n context.fillStyle = this._getBackgroundColor(context);\r\n\r\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n context.restore();\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _link(host: AdvancedDynamicTexture): void {\r\n super._link(host);\r\n\r\n for (const child of this._children) {\r\n child._link(host);\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected _beforeLayout() {\r\n // Do nothing\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _processMeasures(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n if (this._isDirty || !this._cachedParentMeasure.isEqualsTo(parentMeasure)) {\r\n super._processMeasures(parentMeasure, context);\r\n this._evaluateClippingState(parentMeasure);\r\n if (this._renderToIntermediateTexture) {\r\n if (this._intermediateTexture && this._host.getScene() != this._intermediateTexture.getScene()) {\r\n this._intermediateTexture.dispose();\r\n this._intermediateTexture = null;\r\n }\r\n if (!this._intermediateTexture) {\r\n this._intermediateTexture = new DynamicTexture(\r\n \"\",\r\n { width: this._currentMeasure.width, height: this._currentMeasure.height },\r\n this._host.getScene(),\r\n false,\r\n Texture.NEAREST_SAMPLINGMODE,\r\n Constants.TEXTUREFORMAT_RGBA,\r\n false\r\n );\r\n this._intermediateTexture.hasAlpha = true;\r\n } else {\r\n this._intermediateTexture.scaleTo(this._currentMeasure.width, this._currentMeasure.height);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _layout(parentMeasure: Measure, context: ICanvasRenderingContext): boolean {\r\n if (!this.isDirty && (!this.isVisible || this.notRenderable)) {\r\n return false;\r\n }\r\n\r\n this.host._numLayoutCalls++;\r\n\r\n if (this._isDirty) {\r\n this._currentMeasure.transformToRef(this._transformMatrix, this._prevCurrentMeasureTransformedIntoGlobalSpace);\r\n }\r\n\r\n let rebuildCount = 0;\r\n\r\n context.save();\r\n\r\n this._applyStates(context);\r\n\r\n this._beforeLayout();\r\n\r\n do {\r\n let computedWidth = -1;\r\n let computedHeight = -1;\r\n this._rebuildLayout = false;\r\n this._processMeasures(parentMeasure, context);\r\n\r\n if (!this._isClipped) {\r\n for (const child of this._children) {\r\n child._tempParentMeasure.copyFrom(this._measureForChildren);\r\n\r\n if (child._layout(this._measureForChildren, context)) {\r\n if (child.isVisible && !child.notRenderable) {\r\n if (this.adaptWidthToChildren && child._width.isPixel) {\r\n computedWidth = Math.max(computedWidth, child._currentMeasure.width + child._paddingLeftInPixels + child._paddingRightInPixels);\r\n }\r\n if (this.adaptHeightToChildren && child._height.isPixel) {\r\n computedHeight = Math.max(computedHeight, child._currentMeasure.height + child._paddingTopInPixels + child._paddingBottomInPixels);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.adaptWidthToChildren && computedWidth >= 0) {\r\n computedWidth += this.paddingLeftInPixels + this.paddingRightInPixels;\r\n const width = computedWidth + \"px\";\r\n if (this.width !== width) {\r\n this.parent?._markAsDirty();\r\n this.width = width;\r\n this._width.ignoreAdaptiveScaling = true;\r\n this._rebuildLayout = true;\r\n }\r\n }\r\n if (this.adaptHeightToChildren && computedHeight >= 0) {\r\n computedHeight += this.paddingTopInPixels + this.paddingBottomInPixels;\r\n const height = computedHeight + \"px\";\r\n if (this.height !== height) {\r\n this.parent?._markAsDirty();\r\n this.height = height;\r\n this._height.ignoreAdaptiveScaling = true;\r\n this._rebuildLayout = true;\r\n }\r\n }\r\n\r\n this._postMeasure();\r\n }\r\n rebuildCount++;\r\n } while (this._rebuildLayout && rebuildCount < this.maxLayoutCycle);\r\n\r\n if (this._rebuildLayout && rebuildCount >= this.maxLayoutCycle && this.logLayoutCycleErrors) {\r\n Logger.Error(`Layout cycle detected in GUI (Container name=${this.name}, uniqueId=${this.uniqueId})`);\r\n }\r\n\r\n context.restore();\r\n\r\n if (this._isDirty) {\r\n this.invalidateRect();\r\n\r\n this._isDirty = false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected override _postMeasure() {\r\n // Do nothing by default\r\n }\r\n\r\n private _inverseTransformMatrix = Matrix2D.Identity();\r\n private _inverseMeasure = new Measure(0, 0, 0, 0);\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _draw(context: ICanvasRenderingContext, invalidatedRectangle?: Measure): void {\r\n const renderToIntermediateTextureThisDraw = this._renderToIntermediateTexture && this._intermediateTexture;\r\n const contextToDrawTo = renderToIntermediateTextureThisDraw ? (<DynamicTexture>this._intermediateTexture).getContext() : context;\r\n\r\n if (renderToIntermediateTextureThisDraw) {\r\n contextToDrawTo.save();\r\n contextToDrawTo.translate(-this._currentMeasure.left, -this._currentMeasure.top);\r\n if (invalidatedRectangle) {\r\n this._transformMatrix.invertToRef(this._inverseTransformMatrix);\r\n invalidatedRectangle.transformToRef(this._inverseTransformMatrix, this._inverseMeasure);\r\n contextToDrawTo.clearRect(this._inverseMeasure.left, this._inverseMeasure.top, this._inverseMeasure.width, this._inverseMeasure.height);\r\n } else {\r\n contextToDrawTo.clearRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n }\r\n }\r\n\r\n this._localDraw(contextToDrawTo);\r\n\r\n context.save();\r\n\r\n if (this.clipChildren) {\r\n this._clipForChildren(contextToDrawTo);\r\n }\r\n\r\n for (const child of this._children) {\r\n // Only redraw parts of the screen that are invalidated\r\n if (invalidatedRectangle) {\r\n if (!child._intersectsRect(invalidatedRectangle)) {\r\n continue;\r\n }\r\n }\r\n child._render(contextToDrawTo, invalidatedRectangle);\r\n }\r\n\r\n if (renderToIntermediateTextureThisDraw) {\r\n contextToDrawTo.restore();\r\n context.save();\r\n context.globalAlpha = this.alpha;\r\n context.drawImage(contextToDrawTo.canvas, this._currentMeasure.left, this._currentMeasure.top);\r\n context.restore();\r\n }\r\n\r\n context.restore();\r\n }\r\n\r\n public override getDescendantsToRef(results: Control[], directDescendantsOnly: boolean = false, predicate?: (control: Control) => boolean): void {\r\n if (!this.children) {\r\n return;\r\n }\r\n\r\n for (let index = 0; index < this.children.length; index++) {\r\n const item = this.children[index];\r\n\r\n if (!predicate || predicate(item)) {\r\n results.push(item);\r\n }\r\n\r\n if (!directDescendantsOnly) {\r\n item.getDescendantsToRef(results, false, predicate);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _processPicking(\r\n x: number,\r\n y: number,\r\n pi: Nullable<PointerInfoBase>,\r\n type: number,\r\n pointerId: number,\r\n buttonIndex: number,\r\n deltaX?: number,\r\n deltaY?: number\r\n ): boolean {\r\n if (!this._isEnabled || !this.isVisible || this.notRenderable) {\r\n return false;\r\n }\r\n\r\n // checks if the picking position is within the container\r\n const contains = super.contains(x, y);\r\n\r\n // if clipChildren is off, we should still pass picking events to children even if we don't contain the pointer\r\n if (!contains && this.clipChildren) {\r\n return false;\r\n }\r\n\r\n if (this.delegatePickingToChildren) {\r\n let contains = false;\r\n for (let index = this._children.length - 1; index >= 0; index--) {\r\n const child = this._children[index];\r\n if (child.isEnabled && child.isHitTestVisible && child.isVisible && !child.notRenderable && child.contains(x, y)) {\r\n contains = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!contains) {\r\n return false;\r\n }\r\n }\r\n\r\n // Checking backwards to pick closest first\r\n for (let index = this._children.length - 1; index >= 0; index--) {\r\n const child = this._children[index];\r\n if (child._processPicking(x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY)) {\r\n if (child.hoverCursor) {\r\n this._host._changeCursor(child.hoverCursor);\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n if (!contains) {\r\n return false;\r\n }\r\n\r\n if (!this.isHitTestVisible) {\r\n return false;\r\n }\r\n\r\n return this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _additionalProcessing(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n super._additionalProcessing(parentMeasure, context);\r\n\r\n this._measureForChildren.copyFrom(this._currentMeasure);\r\n }\r\n\r\n protected _getAdaptDimTo(dim: \"width\" | \"height\"): boolean {\r\n if (dim === \"width\") {\r\n return this.adaptWidthToChildren;\r\n } else {\r\n return this.adaptHeightToChildren;\r\n }\r\n }\r\n\r\n public override isDimensionFullyDefined(dim: \"width\" | \"height\"): boolean {\r\n if (this._getAdaptDimTo(dim)) {\r\n for (const child of this.children) {\r\n if (!child.isDimensionFullyDefined(dim)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return super.isDimensionFullyDefined(dim);\r\n }\r\n\r\n /**\r\n * Serializes the current control\r\n * @param serializationObject defined the JSON serialized object\r\n * @param force force serialization even if isSerializable === false\r\n * @param allowCanvas defines if the control is allowed to use a Canvas2D object to serialize (true by default)\r\n */\r\n public override serialize(serializationObject: any, force: boolean = false, allowCanvas: boolean = true) {\r\n super.serialize(serializationObject, force, allowCanvas);\r\n if (!this.isSerializable && !force) {\r\n return;\r\n }\r\n\r\n if (this.backgroundGradient) {\r\n serializationObject.backgroundGradient = {};\r\n this.backgroundGradient.serialize(serializationObject.backgroundGradient);\r\n }\r\n\r\n if (!this.children.length) {\r\n return;\r\n }\r\n\r\n serializationObject.children = [];\r\n\r\n for (const child of this.children) {\r\n if (child.isSerializable || force) {\r\n const childSerializationObject = {};\r\n child.serialize(childSerializationObject, force, allowCanvas);\r\n serializationObject.children.push(childSerializationObject);\r\n }\r\n }\r\n }\r\n\r\n /** Releases associated resources */\r\n public override dispose() {\r\n super.dispose();\r\n\r\n for (let index = this.children.length - 1; index >= 0; index--) {\r\n this.children[index].dispose();\r\n }\r\n this._intermediateTexture?.dispose();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _parseFromContent(serializedObject: any, host: AdvancedDynamicTexture, urlRewriter?: (url: string) => string) {\r\n super._parseFromContent(serializedObject, host, urlRewriter);\r\n this._link(host);\r\n\r\n // Gradient\r\n if (serializedObject.backgroundGradient) {\r\n const className = Tools.Instantiate(\"BABYLON.GUI.\" + serializedObject.backgroundGradient.className);\r\n this._backgroundGradient = new className();\r\n this._backgroundGradient?.parse(serializedObject.backgroundGradient);\r\n }\r\n\r\n if (!serializedObject.children) {\r\n return;\r\n }\r\n\r\n for (const childData of serializedObject.children) {\r\n this.addControl(Control.Parse(childData, host, urlRewriter));\r\n }\r\n }\r\n\r\n public override isReady(): boolean {\r\n for (const child of this.children) {\r\n if (!child.isReady()) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the Container class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterContainer(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.Container\", Container);\r\n}\r\n"]}
1
+ {"version":3,"file":"container.pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/container.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { Logger } from \"core/Misc/logger\";\r\n\r\nimport { Control } from \"./control.pure\";\r\nimport { Measure } from \"../measure\";\r\nimport { type AdvancedDynamicTexture } from \"../advancedDynamicTexture\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { type PointerInfoBase } from \"core/Events/pointerEvents\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\nimport { DynamicTexture } from \"core/Materials/Textures/dynamicTexture.pure\";\r\nimport { Texture } from \"core/Materials/Textures/texture.pure\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { type BaseGradient } from \"./gradient/BaseGradient\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { Matrix2D } from \"../math2D\";\r\n\r\n/**\r\n * Root class for 2D containers\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/gui/gui#containers\r\n */\r\nexport class Container extends Control {\r\n /** @internal */\r\n public _children = new Array<Control>();\r\n /** @internal */\r\n protected _measureForChildren = Measure.Empty();\r\n /** @internal */\r\n protected _background = \"\";\r\n /** @internal */\r\n protected _backgroundGradient: Nullable<BaseGradient> = null;\r\n /** @internal */\r\n protected _adaptWidthToChildren = false;\r\n /** @internal */\r\n protected _adaptHeightToChildren = false;\r\n /** @internal */\r\n protected _renderToIntermediateTexture: boolean = false;\r\n /** @internal */\r\n protected _intermediateTexture: Nullable<DynamicTexture> = null;\r\n\r\n /**\r\n * Gets or sets a boolean indicating that the container will let internal controls handle picking instead of doing it directly using its bounding info\r\n */\r\n @serialize()\r\n public delegatePickingToChildren = false;\r\n\r\n /** Gets or sets boolean indicating if children should be rendered to an intermediate texture rather than directly to host, useful for alpha blending */\r\n @serialize()\r\n public get renderToIntermediateTexture(): boolean {\r\n return this._renderToIntermediateTexture;\r\n }\r\n public set renderToIntermediateTexture(value: boolean) {\r\n if (this._renderToIntermediateTexture === value) {\r\n return;\r\n }\r\n this._renderToIntermediateTexture = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating that layout cycle errors should be displayed on the console\r\n */\r\n public logLayoutCycleErrors = false;\r\n\r\n /**\r\n * Gets or sets the number of layout cycles (a change involved by a control while evaluating the layout) allowed\r\n */\r\n @serialize()\r\n public maxLayoutCycle = 3;\r\n\r\n /** Gets or sets a boolean indicating if the container should try to adapt to its children height */\r\n @serialize()\r\n public get adaptHeightToChildren(): boolean {\r\n return this._adaptHeightToChildren;\r\n }\r\n\r\n public set adaptHeightToChildren(value: boolean) {\r\n if (this._adaptHeightToChildren === value) {\r\n return;\r\n }\r\n\r\n this._adaptHeightToChildren = value;\r\n\r\n if (value) {\r\n this.height = \"100%\";\r\n }\r\n\r\n this._rebuildLayout = true;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the container should try to adapt to its children width */\r\n @serialize()\r\n public get adaptWidthToChildren(): boolean {\r\n return this._adaptWidthToChildren;\r\n }\r\n\r\n public set adaptWidthToChildren(value: boolean) {\r\n if (this._adaptWidthToChildren === value) {\r\n return;\r\n }\r\n\r\n this._adaptWidthToChildren = value;\r\n\r\n if (value) {\r\n this.width = \"100%\";\r\n }\r\n\r\n this._rebuildLayout = true;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background color */\r\n @serialize()\r\n public get background(): string {\r\n return this._background;\r\n }\r\n\r\n public set background(value: string) {\r\n if (this._background === value) {\r\n return;\r\n }\r\n\r\n this._background = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background gradient color. Takes precedence over background */\r\n @serialize()\r\n public get backgroundGradient() {\r\n return this._backgroundGradient;\r\n }\r\n\r\n public set backgroundGradient(value: Nullable<BaseGradient>) {\r\n if (this._backgroundGradient === value) {\r\n return;\r\n }\r\n this._backgroundGradient = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets the list of children */\r\n public get children(): Control[] {\r\n return this._children;\r\n }\r\n\r\n public override get isReadOnly() {\r\n return this._isReadOnly;\r\n }\r\n\r\n public override set isReadOnly(value: boolean) {\r\n this._isReadOnly = value;\r\n\r\n for (const child of this._children) {\r\n child.isReadOnly = value;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new Container\r\n * @param name defines the name of the container\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"Container\";\r\n }\r\n\r\n public override _flagDescendantsAsMatrixDirty(): void {\r\n for (const child of this.children) {\r\n child._isClipped = false;\r\n child._markMatrixAsDirty();\r\n }\r\n }\r\n\r\n /**\r\n * Gets a child using its name\r\n * @param name defines the child name to look for\r\n * @returns the child control if found\r\n */\r\n public getChildByName(name: string): Nullable<Control> {\r\n for (const child of this.children) {\r\n if (child.name === name) {\r\n return child;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets a child using its type and its name\r\n * @param name defines the child name to look for\r\n * @param type defines the child type to look for\r\n * @returns the child control if found\r\n */\r\n public getChildByType(name: string, type: string): Nullable<Control> {\r\n for (const child of this.children) {\r\n if (child.name === name && child.typeName === type) {\r\n return child;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Search for a specific control in children\r\n * @param control defines the control to look for\r\n * @returns true if the control is in child list\r\n */\r\n public containsControl(control: Control): boolean {\r\n return this.children.indexOf(control) !== -1;\r\n }\r\n\r\n /**\r\n * Adds a new control to the current container\r\n * @param control defines the control to add\r\n * @returns the current container\r\n */\r\n public addControl(control: Nullable<Control>): Container {\r\n if (!control) {\r\n return this;\r\n }\r\n\r\n const index = this._children.indexOf(control);\r\n\r\n if (index !== -1) {\r\n return this;\r\n }\r\n control._link(this._host);\r\n\r\n control._markAllAsDirty();\r\n\r\n this._reOrderControl(control);\r\n\r\n this._markAsDirty();\r\n\r\n this.onControlAddedObservable.notifyObservers(control);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes all controls from the current container\r\n * @returns the current container\r\n */\r\n public clearControls(): Container {\r\n const children = this.children.slice();\r\n\r\n for (const child of children) {\r\n this.removeControl(child);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the current container\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control): Container {\r\n const index = this._children.indexOf(control);\r\n\r\n if (index !== -1) {\r\n this._children.splice(index, 1);\r\n\r\n control.parent = null;\r\n }\r\n\r\n control.linkWithMesh(null);\r\n\r\n if (this._host) {\r\n this._host._cleanControlAfterRemoval(control);\r\n }\r\n\r\n this._markAsDirty();\r\n\r\n this.onControlRemovedObservable.notifyObservers(control);\r\n return this;\r\n }\r\n\r\n /**\r\n * An event triggered when any control is added to this container.\r\n */\r\n public onControlAddedObservable = new Observable<Nullable<Control>>();\r\n\r\n /**\r\n * An event triggered when any control is removed from this container.\r\n */\r\n public onControlRemovedObservable = new Observable<Nullable<Control>>();\r\n\r\n /**\r\n * @internal\r\n */\r\n public _reOrderControl(control: Control): void {\r\n const linkedMesh = control.linkedMesh;\r\n\r\n this.removeControl(control);\r\n\r\n let wasAdded = false;\r\n for (let index = 0; index < this._children.length; index++) {\r\n if (this._children[index].zIndex > control.zIndex) {\r\n this._children.splice(index, 0, control);\r\n wasAdded = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!wasAdded) {\r\n this._children.push(control);\r\n }\r\n\r\n control.parent = this;\r\n\r\n if (linkedMesh) {\r\n control.linkWithMesh(linkedMesh);\r\n }\r\n\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _offsetLeft(offset: number) {\r\n super._offsetLeft(offset);\r\n\r\n for (const child of this._children) {\r\n child._offsetLeft(offset);\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _offsetTop(offset: number) {\r\n super._offsetTop(offset);\r\n\r\n for (const child of this._children) {\r\n child._offsetTop(offset);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override _markAllAsDirty(): void {\r\n super._markAllAsDirty();\r\n\r\n for (let index = 0; index < this._children.length; index++) {\r\n this._children[index]._markAllAsDirty();\r\n }\r\n }\r\n\r\n protected _getBackgroundColor(context: ICanvasRenderingContext) {\r\n return this._backgroundGradient ? this._backgroundGradient.getCanvasGradient(context) : this._background;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n protected _localDraw(context: ICanvasRenderingContext): void {\r\n if (this._background || this._backgroundGradient) {\r\n context.save();\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX * this._host.idealRatio;\r\n context.shadowOffsetY = this.shadowOffsetY * this._host.idealRatio;\r\n }\r\n\r\n context.fillStyle = this._getBackgroundColor(context);\r\n\r\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n context.restore();\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _link(host: AdvancedDynamicTexture): void {\r\n super._link(host);\r\n\r\n for (const child of this._children) {\r\n child._link(host);\r\n }\r\n }\r\n\r\n /** @internal */\r\n protected _beforeLayout() {\r\n // Do nothing\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _processMeasures(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n if (this._isDirty || !this._cachedParentMeasure.isEqualsTo(parentMeasure)) {\r\n super._processMeasures(parentMeasure, context);\r\n this._evaluateClippingState(parentMeasure);\r\n if (this._renderToIntermediateTexture) {\r\n if (this._intermediateTexture && this._host.getScene() != this._intermediateTexture.getScene()) {\r\n this._intermediateTexture.dispose();\r\n this._intermediateTexture = null;\r\n }\r\n if (!this._intermediateTexture) {\r\n this._intermediateTexture = new DynamicTexture(\r\n \"\",\r\n { width: this._currentMeasure.width, height: this._currentMeasure.height },\r\n this._host.getScene(),\r\n false,\r\n Texture.NEAREST_SAMPLINGMODE,\r\n Constants.TEXTUREFORMAT_RGBA,\r\n false\r\n );\r\n this._intermediateTexture.hasAlpha = true;\r\n } else {\r\n this._intermediateTexture.scaleTo(this._currentMeasure.width, this._currentMeasure.height);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _layout(parentMeasure: Measure, context: ICanvasRenderingContext): boolean {\r\n if (!this.isDirty && (!this.isVisible || this.notRenderable)) {\r\n return false;\r\n }\r\n\r\n this.host._numLayoutCalls++;\r\n\r\n if (this._isDirty) {\r\n this._currentMeasure.transformToRef(this._transformMatrix, this._prevCurrentMeasureTransformedIntoGlobalSpace);\r\n }\r\n\r\n let rebuildCount = 0;\r\n\r\n context.save();\r\n\r\n this._applyStates(context);\r\n\r\n this._beforeLayout();\r\n\r\n do {\r\n let computedWidth = -1;\r\n let computedHeight = -1;\r\n this._rebuildLayout = false;\r\n this._processMeasures(parentMeasure, context);\r\n\r\n if (!this._isClipped) {\r\n this._beforeChildLayout();\r\n for (const child of this._children) {\r\n child._tempParentMeasure.copyFrom(this._measureForChildren);\r\n\r\n if (child._layout(this._measureForChildren, context)) {\r\n if (child.isVisible && !child.notRenderable) {\r\n if (this.adaptWidthToChildren && !child._width.isPercentage) {\r\n computedWidth = Math.max(computedWidth, child._currentMeasure.width + child._paddingLeftInPixels + child._paddingRightInPixels);\r\n }\r\n if (this.adaptHeightToChildren && !child._height.isPercentage) {\r\n computedHeight = Math.max(computedHeight, child._currentMeasure.height + child._paddingTopInPixels + child._paddingBottomInPixels);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.adaptWidthToChildren && computedWidth >= 0) {\r\n computedWidth += this.paddingLeftInPixels + this.paddingRightInPixels;\r\n const width = computedWidth + \"px\";\r\n if (this.width !== width) {\r\n this.parent?._markAsDirty();\r\n this.width = width;\r\n this._width.ignoreAdaptiveScaling = true;\r\n this._rebuildLayout = true;\r\n }\r\n }\r\n if (this.adaptHeightToChildren && computedHeight >= 0) {\r\n computedHeight += this.paddingTopInPixels + this.paddingBottomInPixels;\r\n const height = computedHeight + \"px\";\r\n if (this.height !== height) {\r\n this.parent?._markAsDirty();\r\n this.height = height;\r\n this._height.ignoreAdaptiveScaling = true;\r\n this._rebuildLayout = true;\r\n }\r\n }\r\n\r\n this._postMeasure();\r\n }\r\n rebuildCount++;\r\n } while (this._rebuildLayout && rebuildCount < this.maxLayoutCycle);\r\n\r\n if (this._rebuildLayout && rebuildCount >= this.maxLayoutCycle && this.logLayoutCycleErrors) {\r\n Logger.Error(`Layout cycle detected in GUI (Container name=${this.name}, uniqueId=${this.uniqueId})`);\r\n }\r\n\r\n context.restore();\r\n\r\n if (this._isDirty) {\r\n this.invalidateRect();\r\n\r\n this._isDirty = false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n protected _beforeChildLayout(): void {}\r\n\r\n /**\r\n * Gets an optional parent-controlled layout box, relative to the content origin.\r\n * @param _child defines the child to lay out\r\n * @returns the layout box, or null for the child's own layout\r\n * @internal\r\n */\r\n public _getLayoutMeasureForChild(_child: Control): Nullable<Measure> {\r\n return null;\r\n }\r\n\r\n protected override _postMeasure() {\r\n // Do nothing by default\r\n }\r\n\r\n private _inverseTransformMatrix = Matrix2D.Identity();\r\n private _inverseMeasure = new Measure(0, 0, 0, 0);\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _draw(context: ICanvasRenderingContext, invalidatedRectangle?: Measure): void {\r\n const renderToIntermediateTextureThisDraw = this._renderToIntermediateTexture && this._intermediateTexture;\r\n const contextToDrawTo = renderToIntermediateTextureThisDraw ? (<DynamicTexture>this._intermediateTexture).getContext() : context;\r\n\r\n if (renderToIntermediateTextureThisDraw) {\r\n contextToDrawTo.save();\r\n contextToDrawTo.translate(-this._currentMeasure.left, -this._currentMeasure.top);\r\n if (invalidatedRectangle) {\r\n this._transformMatrix.invertToRef(this._inverseTransformMatrix);\r\n invalidatedRectangle.transformToRef(this._inverseTransformMatrix, this._inverseMeasure);\r\n contextToDrawTo.clearRect(this._inverseMeasure.left, this._inverseMeasure.top, this._inverseMeasure.width, this._inverseMeasure.height);\r\n } else {\r\n contextToDrawTo.clearRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n }\r\n }\r\n\r\n this._localDraw(contextToDrawTo);\r\n\r\n context.save();\r\n\r\n if (this.clipChildren) {\r\n this._clipForChildren(contextToDrawTo);\r\n }\r\n\r\n for (const child of this._children) {\r\n // Only redraw parts of the screen that are invalidated\r\n if (invalidatedRectangle) {\r\n if (!child._intersectsRect(invalidatedRectangle)) {\r\n continue;\r\n }\r\n }\r\n child._render(contextToDrawTo, invalidatedRectangle);\r\n }\r\n\r\n if (renderToIntermediateTextureThisDraw) {\r\n contextToDrawTo.restore();\r\n context.save();\r\n context.globalAlpha = this.alpha;\r\n context.drawImage(contextToDrawTo.canvas, this._currentMeasure.left, this._currentMeasure.top);\r\n context.restore();\r\n }\r\n\r\n context.restore();\r\n }\r\n\r\n public override getDescendantsToRef(results: Control[], directDescendantsOnly: boolean = false, predicate?: (control: Control) => boolean): void {\r\n if (!this.children) {\r\n return;\r\n }\r\n\r\n for (let index = 0; index < this.children.length; index++) {\r\n const item = this.children[index];\r\n\r\n if (!predicate || predicate(item)) {\r\n results.push(item);\r\n }\r\n\r\n if (!directDescendantsOnly) {\r\n item.getDescendantsToRef(results, false, predicate);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _processPicking(\r\n x: number,\r\n y: number,\r\n pi: Nullable<PointerInfoBase>,\r\n type: number,\r\n pointerId: number,\r\n buttonIndex: number,\r\n deltaX?: number,\r\n deltaY?: number\r\n ): boolean {\r\n if (!this._isEnabled || !this.isVisible || this.notRenderable) {\r\n return false;\r\n }\r\n\r\n // checks if the picking position is within the container\r\n const contains = super.contains(x, y);\r\n\r\n // if clipChildren is off, we should still pass picking events to children even if we don't contain the pointer\r\n if (!contains && this.clipChildren) {\r\n return false;\r\n }\r\n\r\n if (this.delegatePickingToChildren) {\r\n let contains = false;\r\n for (let index = this._children.length - 1; index >= 0; index--) {\r\n const child = this._children[index];\r\n if (child.isEnabled && child.isHitTestVisible && child.isVisible && !child.notRenderable && child.contains(x, y)) {\r\n contains = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!contains) {\r\n return false;\r\n }\r\n }\r\n\r\n // Checking backwards to pick closest first\r\n for (let index = this._children.length - 1; index >= 0; index--) {\r\n const child = this._children[index];\r\n if (child._processPicking(x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY)) {\r\n if (child.hoverCursor) {\r\n this._host._changeCursor(child.hoverCursor);\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n if (!contains) {\r\n return false;\r\n }\r\n\r\n if (!this.isHitTestVisible) {\r\n return false;\r\n }\r\n\r\n return this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _additionalProcessing(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n super._additionalProcessing(parentMeasure, context);\r\n\r\n this._measureForChildren.copyFrom(this._currentMeasure);\r\n }\r\n\r\n protected _getAdaptDimTo(dim: \"width\" | \"height\"): boolean {\r\n if (dim === \"width\") {\r\n return this.adaptWidthToChildren;\r\n } else {\r\n return this.adaptHeightToChildren;\r\n }\r\n }\r\n\r\n public override isDimensionFullyDefined(dim: \"width\" | \"height\"): boolean {\r\n if (this._getAdaptDimTo(dim)) {\r\n for (const child of this.children) {\r\n if (!child.isDimensionFullyDefined(dim)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return super.isDimensionFullyDefined(dim);\r\n }\r\n\r\n /**\r\n * Serializes the current control\r\n * @param serializationObject defined the JSON serialized object\r\n * @param force force serialization even if isSerializable === false\r\n * @param allowCanvas defines if the control is allowed to use a Canvas2D object to serialize (true by default)\r\n */\r\n public override serialize(serializationObject: any, force: boolean = false, allowCanvas: boolean = true) {\r\n super.serialize(serializationObject, force, allowCanvas);\r\n if (!this.isSerializable && !force) {\r\n return;\r\n }\r\n\r\n if (this.backgroundGradient) {\r\n serializationObject.backgroundGradient = {};\r\n this.backgroundGradient.serialize(serializationObject.backgroundGradient);\r\n }\r\n\r\n if (!this.children.length) {\r\n return;\r\n }\r\n\r\n serializationObject.children = [];\r\n\r\n for (const child of this.children) {\r\n if (child.isSerializable || force) {\r\n const childSerializationObject = {};\r\n child.serialize(childSerializationObject, force, allowCanvas);\r\n serializationObject.children.push(childSerializationObject);\r\n }\r\n }\r\n }\r\n\r\n /** Releases associated resources */\r\n public override dispose() {\r\n super.dispose();\r\n\r\n for (let index = this.children.length - 1; index >= 0; index--) {\r\n this.children[index].dispose();\r\n }\r\n this._intermediateTexture?.dispose();\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _parseFromContent(serializedObject: any, host: AdvancedDynamicTexture, urlRewriter?: (url: string) => string) {\r\n super._parseFromContent(serializedObject, host, urlRewriter);\r\n this._link(host);\r\n\r\n // Gradient\r\n if (serializedObject.backgroundGradient) {\r\n const className = Tools.Instantiate(\"BABYLON.GUI.\" + serializedObject.backgroundGradient.className);\r\n this._backgroundGradient = new className();\r\n this._backgroundGradient?.parse(serializedObject.backgroundGradient);\r\n }\r\n\r\n if (!serializedObject.children) {\r\n return;\r\n }\r\n\r\n for (const childData of serializedObject.children) {\r\n this.addControl(Control.Parse(childData, host, urlRewriter));\r\n }\r\n }\r\n\r\n public override isReady(): boolean {\r\n for (const child of this.children) {\r\n if (!child.isReady()) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the Container class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterContainer(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.Container\", Container);\r\n}\r\n"]}
@@ -43,6 +43,7 @@ export declare class Control implements IAnimatable, IFocusableControl {
43
43
  private _fontFamily;
44
44
  private _fontStyle;
45
45
  private _fontWeight;
46
+ private static readonly _DefaultFontSize;
46
47
  private _fontSize;
47
48
  private _font;
48
49
  /** @internal */
@@ -406,7 +407,11 @@ export declare class Control implements IAnimatable, IFocusableControl {
406
407
  /** Gets or sets font size in pixels */
407
408
  get fontSizeInPixels(): number;
408
409
  set fontSizeInPixels(value: number);
409
- /** Gets or sets font size */
410
+ /**
411
+ * Gets or sets the font size in px, percent of parent height, em, or rem.
412
+ * For font declarations, em uses the parent font and rem uses the GUI root font.
413
+ * Relative font sizes on the root use the default 18px font, including adaptive scaling.
414
+ */
410
415
  get fontSize(): string | number;
411
416
  set fontSize(value: string | number);
412
417
  /** Gets or sets foreground color */
@@ -614,6 +619,18 @@ export declare class Control implements IAnimatable, IFocusableControl {
614
619
  * @param evt Defines the KeyboardEvent
615
620
  */
616
621
  processKeyboard(evt: IKeyboardEvent): void;
622
+ private _flexGrow;
623
+ /**
624
+ * Gets or sets the nonnegative share of free main-axis space in a FlexPanel.
625
+ */
626
+ get flexGrow(): number;
627
+ set flexGrow(value: number);
628
+ private _flexShrink;
629
+ /**
630
+ * Gets or sets the nonnegative shrink factor in a FlexPanel, weighted by the declared main-axis size.
631
+ */
632
+ get flexShrink(): number;
633
+ set flexShrink(value: number);
617
634
  /**
618
635
  * Creates a new control
619
636
  * @param name defines the name of the control
@@ -774,6 +791,14 @@ export declare class Control implements IAnimatable, IFocusableControl {
774
791
  */
775
792
  protected _processMeasures(parentMeasure: Measure, context: ICanvasRenderingContext): void;
776
793
  protected _evaluateClippingState(parentMeasure: Measure): void;
794
+ /**
795
+ * Resolves a GUI dimension using this control's computed font size.
796
+ * @param value defines the dimension to resolve
797
+ * @param reference defines the reference size for percentages
798
+ * @returns the dimension in pixels
799
+ * @internal
800
+ */
801
+ _getValueInPixel(value: ValueAndUnit, reference: number): number;
777
802
  /** @internal */
778
803
  _measure(): void;
779
804
  /**