diff --git a/.mapping.json b/.mapping.json index e217fc1ae..8e05d3749 100644 --- a/.mapping.json +++ b/.mapping.json @@ -15951,6 +15951,7 @@ "json-builder/kotlin/src/generated/kotlin/divkit/dsl/InputValidatorRegex.kt":"divkit/public/json-builder/kotlin/src/generated/kotlin/divkit/dsl/InputValidatorRegex.kt", "json-builder/kotlin/src/generated/kotlin/divkit/dsl/IntegerValue.kt":"divkit/public/json-builder/kotlin/src/generated/kotlin/divkit/dsl/IntegerValue.kt", "json-builder/kotlin/src/generated/kotlin/divkit/dsl/IntegerVariable.kt":"divkit/public/json-builder/kotlin/src/generated/kotlin/divkit/dsl/IntegerVariable.kt", + "json-builder/kotlin/src/generated/kotlin/divkit/dsl/LayoutProvider.kt":"divkit/public/json-builder/kotlin/src/generated/kotlin/divkit/dsl/LayoutProvider.kt", "json-builder/kotlin/src/generated/kotlin/divkit/dsl/LineStyle.kt":"divkit/public/json-builder/kotlin/src/generated/kotlin/divkit/dsl/LineStyle.kt", "json-builder/kotlin/src/generated/kotlin/divkit/dsl/LinearGradient.kt":"divkit/public/json-builder/kotlin/src/generated/kotlin/divkit/dsl/LinearGradient.kt", "json-builder/kotlin/src/generated/kotlin/divkit/dsl/MatchParentSize.kt":"divkit/public/json-builder/kotlin/src/generated/kotlin/divkit/dsl/MatchParentSize.kt", diff --git a/client/ios/Configurations/Version.xcconfig b/client/ios/Configurations/Version.xcconfig index 9bc1fd67e..f69f596d7 100644 --- a/client/ios/Configurations/Version.xcconfig +++ b/client/ios/Configurations/Version.xcconfig @@ -1,2 +1,2 @@ -MARKETING_VERSION = 30.8.0 +MARKETING_VERSION = 30.9.0 CURRENT_PROJECT_VERSION = 30 diff --git a/client/ios/DivKit/DivKitInfo.swift b/client/ios/DivKit/DivKitInfo.swift index c63a15e6d..366d29b93 100644 --- a/client/ios/DivKit/DivKitInfo.swift +++ b/client/ios/DivKit/DivKitInfo.swift @@ -1,3 +1,3 @@ public enum DivKitInfo { - public static let version = "30.8.0" + public static let version = "30.9.0" } diff --git a/client/web/divkit/package.json b/client/web/divkit/package.json index 3d038e547..b2e8f6e2c 100644 --- a/client/web/divkit/package.json +++ b/client/web/divkit/package.json @@ -1,6 +1,6 @@ { "name": "@divkitframework/divkit", - "version": "30.8.0", + "version": "30.9.0", "description": "DivKit for the web", "keywords": [ "server-driven-ui", diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Container.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Container.kt index 70356278b..0d84d9e0a 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Container.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Container.kt @@ -60,6 +60,7 @@ class Container internal constructor( itemBuilder = additive.itemBuilder ?: properties.itemBuilder, items = additive.items ?: properties.items, layoutMode = additive.layoutMode ?: properties.layoutMode, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, lineSeparator = additive.lineSeparator ?: properties.lineSeparator, longtapActions = additive.longtapActions ?: properties.longtapActions, margins = additive.margins ?: properties.margins, @@ -187,6 +188,10 @@ class Container internal constructor( * Default value: `no_wrap`. */ val layoutMode: Property?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). */ @@ -289,6 +294,7 @@ class Container internal constructor( result.tryPutProperty("item_builder", itemBuilder) result.tryPutProperty("items", items) result.tryPutProperty("layout_mode", layoutMode) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("line_separator", lineSeparator) result.tryPutProperty("longtap_actions", longtapActions) result.tryPutProperty("margins", margins) @@ -415,6 +421,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -460,6 +467,7 @@ fun DivScope.row( id: String? = null, itemBuilder: CollectionItemBuilder? = null, layoutMode: Container.LayoutMode? = null, + layoutProvider: LayoutProvider? = null, lineSeparator: Container.Separator? = null, longtapActions: List? = null, margins: EdgeInsets? = null, @@ -503,6 +511,7 @@ fun DivScope.row( itemBuilder = itemBuilder, items = items.toList(), layoutMode = layoutMode, + layoutProvider = layoutProvider, lineSeparator = lineSeparator, longtapActions = longtapActions, margins = margins, @@ -548,6 +557,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -593,6 +603,7 @@ fun DivScope.row( id: String? = null, itemBuilder: CollectionItemBuilder? = null, layoutMode: Container.LayoutMode? = null, + layoutProvider: LayoutProvider? = null, lineSeparator: Container.Separator? = null, longtapActions: List? = null, margins: EdgeInsets? = null, @@ -636,6 +647,7 @@ fun DivScope.row( itemBuilder = itemBuilder, items = items, layoutMode = layoutMode, + layoutProvider = layoutProvider, lineSeparator = lineSeparator, longtapActions = longtapActions, margins = margins, @@ -681,6 +693,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -726,6 +739,7 @@ fun DivScope.column( id: String? = null, itemBuilder: CollectionItemBuilder? = null, layoutMode: Container.LayoutMode? = null, + layoutProvider: LayoutProvider? = null, lineSeparator: Container.Separator? = null, longtapActions: List? = null, margins: EdgeInsets? = null, @@ -769,6 +783,7 @@ fun DivScope.column( itemBuilder = itemBuilder, items = items.toList(), layoutMode = layoutMode, + layoutProvider = layoutProvider, lineSeparator = lineSeparator, longtapActions = longtapActions, margins = margins, @@ -814,6 +829,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -859,6 +875,7 @@ fun DivScope.column( id: String? = null, itemBuilder: CollectionItemBuilder? = null, layoutMode: Container.LayoutMode? = null, + layoutProvider: LayoutProvider? = null, lineSeparator: Container.Separator? = null, longtapActions: List? = null, margins: EdgeInsets? = null, @@ -902,6 +919,7 @@ fun DivScope.column( itemBuilder = itemBuilder, items = items, layoutMode = layoutMode, + layoutProvider = layoutProvider, lineSeparator = lineSeparator, longtapActions = longtapActions, margins = margins, @@ -947,6 +965,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -992,6 +1011,7 @@ fun DivScope.stack( id: String? = null, itemBuilder: CollectionItemBuilder? = null, layoutMode: Container.LayoutMode? = null, + layoutProvider: LayoutProvider? = null, lineSeparator: Container.Separator? = null, longtapActions: List? = null, margins: EdgeInsets? = null, @@ -1035,6 +1055,7 @@ fun DivScope.stack( itemBuilder = itemBuilder, items = items.toList(), layoutMode = layoutMode, + layoutProvider = layoutProvider, lineSeparator = lineSeparator, longtapActions = longtapActions, margins = margins, @@ -1080,6 +1101,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -1125,6 +1147,7 @@ fun DivScope.stack( id: String? = null, itemBuilder: CollectionItemBuilder? = null, layoutMode: Container.LayoutMode? = null, + layoutProvider: LayoutProvider? = null, lineSeparator: Container.Separator? = null, longtapActions: List? = null, margins: EdgeInsets? = null, @@ -1168,6 +1191,7 @@ fun DivScope.stack( itemBuilder = itemBuilder, items = items, layoutMode = layoutMode, + layoutProvider = layoutProvider, lineSeparator = lineSeparator, longtapActions = longtapActions, margins = margins, @@ -1214,6 +1238,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -1260,6 +1285,7 @@ fun DivScope.container( itemBuilder: CollectionItemBuilder? = null, items: List
    ? = null, layoutMode: Container.LayoutMode? = null, + layoutProvider: LayoutProvider? = null, lineSeparator: Container.Separator? = null, longtapActions: List? = null, margins: EdgeInsets? = null, @@ -1304,6 +1330,7 @@ fun DivScope.container( itemBuilder = valueOrNull(itemBuilder), items = valueOrNull(items), layoutMode = valueOrNull(layoutMode), + layoutProvider = valueOrNull(layoutProvider), lineSeparator = valueOrNull(lineSeparator), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), @@ -1351,6 +1378,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -1397,6 +1425,7 @@ fun DivScope.containerProps( itemBuilder: CollectionItemBuilder? = null, items: List
    ? = null, layoutMode: Container.LayoutMode? = null, + layoutProvider: LayoutProvider? = null, lineSeparator: Container.Separator? = null, longtapActions: List? = null, margins: EdgeInsets? = null, @@ -1440,6 +1469,7 @@ fun DivScope.containerProps( itemBuilder = valueOrNull(itemBuilder), items = valueOrNull(items), layoutMode = valueOrNull(layoutMode), + layoutProvider = valueOrNull(layoutProvider), lineSeparator = valueOrNull(lineSeparator), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), @@ -1486,6 +1516,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -1532,6 +1563,7 @@ fun TemplateScope.containerRefs( itemBuilder: ReferenceProperty? = null, items: ReferenceProperty>? = null, layoutMode: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, lineSeparator: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, @@ -1575,6 +1607,7 @@ fun TemplateScope.containerRefs( itemBuilder = itemBuilder, items = items, layoutMode = layoutMode, + layoutProvider = layoutProvider, lineSeparator = lineSeparator, longtapActions = longtapActions, margins = margins, @@ -1621,6 +1654,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -1667,6 +1701,7 @@ fun Container.override( itemBuilder: CollectionItemBuilder? = null, items: List
    ? = null, layoutMode: Container.LayoutMode? = null, + layoutProvider: LayoutProvider? = null, lineSeparator: Container.Separator? = null, longtapActions: List? = null, margins: EdgeInsets? = null, @@ -1711,6 +1746,7 @@ fun Container.override( itemBuilder = valueOrNull(itemBuilder) ?: properties.itemBuilder, items = valueOrNull(items) ?: properties.items, layoutMode = valueOrNull(layoutMode) ?: properties.layoutMode, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, lineSeparator = valueOrNull(lineSeparator) ?: properties.lineSeparator, longtapActions = valueOrNull(longtapActions) ?: properties.longtapActions, margins = valueOrNull(margins) ?: properties.margins, @@ -1758,6 +1794,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -1804,6 +1841,7 @@ fun Container.defer( itemBuilder: ReferenceProperty? = null, items: ReferenceProperty>? = null, layoutMode: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, lineSeparator: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, @@ -1848,6 +1886,7 @@ fun Container.defer( itemBuilder = itemBuilder ?: properties.itemBuilder, items = items ?: properties.items, layoutMode = layoutMode ?: properties.layoutMode, + layoutProvider = layoutProvider ?: properties.layoutProvider, lineSeparator = lineSeparator ?: properties.lineSeparator, longtapActions = longtapActions ?: properties.longtapActions, margins = margins ?: properties.margins, @@ -1922,6 +1961,7 @@ fun Container.evaluate( itemBuilder = properties.itemBuilder, items = properties.items, layoutMode = layoutMode ?: properties.layoutMode, + layoutProvider = properties.layoutProvider, lineSeparator = properties.lineSeparator, longtapActions = properties.longtapActions, margins = properties.margins, @@ -1969,6 +2009,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -2015,6 +2056,7 @@ fun Component.override( itemBuilder: CollectionItemBuilder? = null, items: List
    ? = null, layoutMode: Container.LayoutMode? = null, + layoutProvider: LayoutProvider? = null, lineSeparator: Container.Separator? = null, longtapActions: List? = null, margins: EdgeInsets? = null, @@ -2060,6 +2102,7 @@ fun Component.override( itemBuilder = valueOrNull(itemBuilder), items = valueOrNull(items), layoutMode = valueOrNull(layoutMode), + layoutProvider = valueOrNull(layoutProvider), lineSeparator = valueOrNull(lineSeparator), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), @@ -2107,6 +2150,7 @@ On the web, support for the `aspect-ratio` CSS property is required to use this * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param items Nested elements. * @param layoutMode Element placement method. The `wrap` value transfers elements to the next line if they don't fit in the previous one. If the `wrap` value is set:
  • A separate line is allocated for each element along the main axis with the size value set to `match_parent`.
  • Elements along the cross axis with the size value `match_parent` are ignored.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param lineSeparator Separator between elements along the cross axis. Not used if the `layout_mode` parameter is set to `no_wrap`. Only new browsers are supported on the web (the `gap` property must be supported for flex blocks). * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. @@ -2153,6 +2197,7 @@ fun Component.defer( itemBuilder: ReferenceProperty? = null, items: ReferenceProperty>? = null, layoutMode: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, lineSeparator: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, @@ -2198,6 +2243,7 @@ fun Component.defer( itemBuilder = itemBuilder, items = items, layoutMode = layoutMode, + layoutProvider = layoutProvider, lineSeparator = lineSeparator, longtapActions = longtapActions, margins = margins, @@ -2273,6 +2319,7 @@ fun Component.evaluate( itemBuilder = null, items = null, layoutMode = layoutMode, + layoutProvider = null, lineSeparator = null, longtapActions = null, margins = null, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Custom.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Custom.kt index 49047b809..ab3c5a8ab 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Custom.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Custom.kt @@ -51,6 +51,7 @@ class Custom internal constructor( height = additive.height ?: properties.height, id = additive.id ?: properties.id, items = additive.items ?: properties.items, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, margins = additive.margins ?: properties.margins, paddings = additive.paddings ?: properties.paddings, rowSpan = additive.rowSpan ?: properties.rowSpan, @@ -132,6 +133,10 @@ class Custom internal constructor( * Nested elements. */ val items: Property>?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * External margins from the element stroke. */ @@ -213,6 +218,7 @@ class Custom internal constructor( result.tryPutProperty("height", height) result.tryPutProperty("id", id) result.tryPutProperty("items", items) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("margins", margins) result.tryPutProperty("paddings", paddings) result.tryPutProperty("row_span", rowSpan) @@ -249,6 +255,7 @@ class Custom internal constructor( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Nested elements. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -283,6 +290,7 @@ fun DivScope.custom( height: Size? = null, id: String? = null, items: List
    ? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, rowSpan: Int? = null, @@ -315,6 +323,7 @@ fun DivScope.custom( height = valueOrNull(height), id = valueOrNull(id), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), paddings = valueOrNull(paddings), rowSpan = valueOrNull(rowSpan), @@ -349,6 +358,7 @@ fun DivScope.custom( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Nested elements. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -383,6 +393,7 @@ fun DivScope.customProps( height: Size? = null, id: String? = null, items: List
    ? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, rowSpan: Int? = null, @@ -414,6 +425,7 @@ fun DivScope.customProps( height = valueOrNull(height), id = valueOrNull(id), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), paddings = valueOrNull(paddings), rowSpan = valueOrNull(rowSpan), @@ -447,6 +459,7 @@ fun DivScope.customProps( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Nested elements. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -481,6 +494,7 @@ fun TemplateScope.customRefs( height: ReferenceProperty? = null, id: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, rowSpan: ReferenceProperty? = null, @@ -512,6 +526,7 @@ fun TemplateScope.customRefs( height = height, id = id, items = items, + layoutProvider = layoutProvider, margins = margins, paddings = paddings, rowSpan = rowSpan, @@ -545,6 +560,7 @@ fun TemplateScope.customRefs( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Nested elements. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -579,6 +595,7 @@ fun Custom.override( height: Size? = null, id: String? = null, items: List
    ? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, rowSpan: Int? = null, @@ -611,6 +628,7 @@ fun Custom.override( height = valueOrNull(height) ?: properties.height, id = valueOrNull(id) ?: properties.id, items = valueOrNull(items) ?: properties.items, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, margins = valueOrNull(margins) ?: properties.margins, paddings = valueOrNull(paddings) ?: properties.paddings, rowSpan = valueOrNull(rowSpan) ?: properties.rowSpan, @@ -645,6 +663,7 @@ fun Custom.override( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Nested elements. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -679,6 +698,7 @@ fun Custom.defer( height: ReferenceProperty? = null, id: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, rowSpan: ReferenceProperty? = null, @@ -711,6 +731,7 @@ fun Custom.defer( height = height ?: properties.height, id = id ?: properties.id, items = items ?: properties.items, + layoutProvider = layoutProvider ?: properties.layoutProvider, margins = margins ?: properties.margins, paddings = paddings ?: properties.paddings, rowSpan = rowSpan ?: properties.rowSpan, @@ -763,6 +784,7 @@ fun Custom.evaluate( height = properties.height, id = properties.id, items = properties.items, + layoutProvider = properties.layoutProvider, margins = properties.margins, paddings = properties.paddings, rowSpan = rowSpan ?: properties.rowSpan, @@ -797,6 +819,7 @@ fun Custom.evaluate( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Nested elements. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -831,6 +854,7 @@ fun Component.override( height: Size? = null, id: String? = null, items: List
    ? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, rowSpan: Int? = null, @@ -864,6 +888,7 @@ fun Component.override( height = valueOrNull(height), id = valueOrNull(id), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), paddings = valueOrNull(paddings), rowSpan = valueOrNull(rowSpan), @@ -898,6 +923,7 @@ fun Component.override( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Nested elements. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -932,6 +958,7 @@ fun Component.defer( height: ReferenceProperty? = null, id: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, rowSpan: ReferenceProperty? = null, @@ -965,6 +992,7 @@ fun Component.defer( height = height, id = id, items = items, + layoutProvider = layoutProvider, margins = margins, paddings = paddings, rowSpan = rowSpan, @@ -1018,6 +1046,7 @@ fun Component.evaluate( height = null, id = null, items = null, + layoutProvider = null, margins = null, paddings = null, rowSpan = rowSpan, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Gallery.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Gallery.kt index 8870ec4bb..50801ceed 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Gallery.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Gallery.kt @@ -55,6 +55,7 @@ class Gallery internal constructor( itemBuilder = additive.itemBuilder ?: properties.itemBuilder, itemSpacing = additive.itemSpacing ?: properties.itemSpacing, items = additive.items ?: properties.items, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, margins = additive.margins ?: properties.margins, orientation = additive.orientation ?: properties.orientation, paddings = additive.paddings ?: properties.paddings, @@ -159,6 +160,10 @@ class Gallery internal constructor( * Gallery elements. Scrolling to elements can be implemented using:
  • `div-action://set_current_item?id=&item=` — scrolling to the element with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — scrolling to the next element inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — scrolling to the previous element inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. */ val items: Property>?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * External margins from the element stroke. */ @@ -264,6 +269,7 @@ class Gallery internal constructor( result.tryPutProperty("item_builder", itemBuilder) result.tryPutProperty("item_spacing", itemSpacing) result.tryPutProperty("items", items) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("margins", margins) result.tryPutProperty("orientation", orientation) result.tryPutProperty("paddings", paddings) @@ -340,6 +346,7 @@ class Gallery internal constructor( * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param itemSpacing Spacing between elements. * @param items Gallery elements. Scrolling to elements can be implemented using:

  • `div-action://set_current_item?id=&item=` — scrolling to the element with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — scrolling to the next element inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — scrolling to the previous element inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Gallery orientation. * @param paddings Internal margins from the element stroke. @@ -382,6 +389,7 @@ fun DivScope.gallery( itemBuilder: CollectionItemBuilder? = null, itemSpacing: Int? = null, items: List

    ? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, orientation: Gallery.Orientation? = null, paddings: EdgeInsets? = null, @@ -422,6 +430,7 @@ fun DivScope.gallery( itemBuilder = valueOrNull(itemBuilder), itemSpacing = valueOrNull(itemSpacing), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), orientation = valueOrNull(orientation), paddings = valueOrNull(paddings), @@ -464,6 +473,7 @@ fun DivScope.gallery( * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param itemSpacing Spacing between elements. * @param items Gallery elements. Scrolling to elements can be implemented using:
  • `div-action://set_current_item?id=&item=` — scrolling to the element with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — scrolling to the next element inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — scrolling to the previous element inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Gallery orientation. * @param paddings Internal margins from the element stroke. @@ -506,6 +516,7 @@ fun DivScope.galleryProps( itemBuilder: CollectionItemBuilder? = null, itemSpacing: Int? = null, items: List

    ? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, orientation: Gallery.Orientation? = null, paddings: EdgeInsets? = null, @@ -545,6 +556,7 @@ fun DivScope.galleryProps( itemBuilder = valueOrNull(itemBuilder), itemSpacing = valueOrNull(itemSpacing), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), orientation = valueOrNull(orientation), paddings = valueOrNull(paddings), @@ -586,6 +598,7 @@ fun DivScope.galleryProps( * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param itemSpacing Spacing between elements. * @param items Gallery elements. Scrolling to elements can be implemented using:
  • `div-action://set_current_item?id=&item=` — scrolling to the element with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — scrolling to the next element inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — scrolling to the previous element inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Gallery orientation. * @param paddings Internal margins from the element stroke. @@ -628,6 +641,7 @@ fun TemplateScope.galleryRefs( itemBuilder: ReferenceProperty? = null, itemSpacing: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, orientation: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -667,6 +681,7 @@ fun TemplateScope.galleryRefs( itemBuilder = itemBuilder, itemSpacing = itemSpacing, items = items, + layoutProvider = layoutProvider, margins = margins, orientation = orientation, paddings = paddings, @@ -708,6 +723,7 @@ fun TemplateScope.galleryRefs( * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param itemSpacing Spacing between elements. * @param items Gallery elements. Scrolling to elements can be implemented using:

  • `div-action://set_current_item?id=&item=` — scrolling to the element with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — scrolling to the next element inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — scrolling to the previous element inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Gallery orientation. * @param paddings Internal margins from the element stroke. @@ -750,6 +766,7 @@ fun Gallery.override( itemBuilder: CollectionItemBuilder? = null, itemSpacing: Int? = null, items: List

    ? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, orientation: Gallery.Orientation? = null, paddings: EdgeInsets? = null, @@ -790,6 +807,7 @@ fun Gallery.override( itemBuilder = valueOrNull(itemBuilder) ?: properties.itemBuilder, itemSpacing = valueOrNull(itemSpacing) ?: properties.itemSpacing, items = valueOrNull(items) ?: properties.items, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, margins = valueOrNull(margins) ?: properties.margins, orientation = valueOrNull(orientation) ?: properties.orientation, paddings = valueOrNull(paddings) ?: properties.paddings, @@ -832,6 +850,7 @@ fun Gallery.override( * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param itemSpacing Spacing between elements. * @param items Gallery elements. Scrolling to elements can be implemented using:
  • `div-action://set_current_item?id=&item=` — scrolling to the element with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — scrolling to the next element inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — scrolling to the previous element inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Gallery orientation. * @param paddings Internal margins from the element stroke. @@ -874,6 +893,7 @@ fun Gallery.defer( itemBuilder: ReferenceProperty? = null, itemSpacing: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, orientation: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -914,6 +934,7 @@ fun Gallery.defer( itemBuilder = itemBuilder ?: properties.itemBuilder, itemSpacing = itemSpacing ?: properties.itemSpacing, items = items ?: properties.items, + layoutProvider = layoutProvider ?: properties.layoutProvider, margins = margins ?: properties.margins, orientation = orientation ?: properties.orientation, paddings = paddings ?: properties.paddings, @@ -992,6 +1013,7 @@ fun Gallery.evaluate( itemBuilder = properties.itemBuilder, itemSpacing = itemSpacing ?: properties.itemSpacing, items = properties.items, + layoutProvider = properties.layoutProvider, margins = properties.margins, orientation = orientation ?: properties.orientation, paddings = properties.paddings, @@ -1034,6 +1056,7 @@ fun Gallery.evaluate( * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param itemSpacing Spacing between elements. * @param items Gallery elements. Scrolling to elements can be implemented using:

  • `div-action://set_current_item?id=&item=` — scrolling to the element with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — scrolling to the next element inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — scrolling to the previous element inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Gallery orientation. * @param paddings Internal margins from the element stroke. @@ -1076,6 +1099,7 @@ fun Component.override( itemBuilder: CollectionItemBuilder? = null, itemSpacing: Int? = null, items: List

    ? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, orientation: Gallery.Orientation? = null, paddings: EdgeInsets? = null, @@ -1117,6 +1141,7 @@ fun Component.override( itemBuilder = valueOrNull(itemBuilder), itemSpacing = valueOrNull(itemSpacing), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), orientation = valueOrNull(orientation), paddings = valueOrNull(paddings), @@ -1159,6 +1184,7 @@ fun Component.override( * @param itemBuilder Sets collection elements dynamically using `data` and `prototypes`. * @param itemSpacing Spacing between elements. * @param items Gallery elements. Scrolling to elements can be implemented using:
  • `div-action://set_current_item?id=&item=` — scrolling to the element with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — scrolling to the next element inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — scrolling to the previous element inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Gallery orientation. * @param paddings Internal margins from the element stroke. @@ -1201,6 +1227,7 @@ fun Component.defer( itemBuilder: ReferenceProperty? = null, itemSpacing: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, orientation: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -1242,6 +1269,7 @@ fun Component.defer( itemBuilder = itemBuilder, itemSpacing = itemSpacing, items = items, + layoutProvider = layoutProvider, margins = margins, orientation = orientation, paddings = paddings, @@ -1321,6 +1349,7 @@ fun Component.evaluate( itemBuilder = null, itemSpacing = itemSpacing, items = null, + layoutProvider = null, margins = null, orientation = orientation, paddings = null, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/GifImage.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/GifImage.kt index feddeb236..b032ac534 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/GifImage.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/GifImage.kt @@ -56,6 +56,7 @@ class GifImage internal constructor( gifUrl = additive.gifUrl ?: properties.gifUrl, height = additive.height ?: properties.height, id = additive.id ?: properties.id, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, longtapActions = additive.longtapActions ?: properties.longtapActions, margins = additive.margins ?: properties.margins, paddings = additive.paddings ?: properties.paddings, @@ -165,6 +166,10 @@ class GifImage internal constructor( * Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. */ val id: Property?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. */ @@ -274,6 +279,7 @@ class GifImage internal constructor( result.tryPutProperty("gif_url", gifUrl) result.tryPutProperty("height", height) result.tryPutProperty("id", id) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("longtap_actions", longtapActions) result.tryPutProperty("margins", margins) result.tryPutProperty("paddings", paddings) @@ -320,6 +326,7 @@ class GifImage internal constructor( * @param gifUrl Direct URL to a GIF image. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -364,6 +371,7 @@ fun DivScope.gifImage( gifUrl: Url? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -406,6 +414,7 @@ fun DivScope.gifImage( gifUrl = valueOrNull(gifUrl), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -450,6 +459,7 @@ fun DivScope.gifImage( * @param gifUrl Direct URL to a GIF image. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -494,6 +504,7 @@ fun DivScope.gifImageProps( gifUrl: Url? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -535,6 +546,7 @@ fun DivScope.gifImageProps( gifUrl = valueOrNull(gifUrl), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -578,6 +590,7 @@ fun DivScope.gifImageProps( * @param gifUrl Direct URL to a GIF image. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -622,6 +635,7 @@ fun TemplateScope.gifImageRefs( gifUrl: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -663,6 +677,7 @@ fun TemplateScope.gifImageRefs( gifUrl = gifUrl, height = height, id = id, + layoutProvider = layoutProvider, longtapActions = longtapActions, margins = margins, paddings = paddings, @@ -706,6 +721,7 @@ fun TemplateScope.gifImageRefs( * @param gifUrl Direct URL to a GIF image. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -750,6 +766,7 @@ fun GifImage.override( gifUrl: Url? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -792,6 +809,7 @@ fun GifImage.override( gifUrl = valueOrNull(gifUrl) ?: properties.gifUrl, height = valueOrNull(height) ?: properties.height, id = valueOrNull(id) ?: properties.id, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, longtapActions = valueOrNull(longtapActions) ?: properties.longtapActions, margins = valueOrNull(margins) ?: properties.margins, paddings = valueOrNull(paddings) ?: properties.paddings, @@ -836,6 +854,7 @@ fun GifImage.override( * @param gifUrl Direct URL to a GIF image. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -880,6 +899,7 @@ fun GifImage.defer( gifUrl: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -922,6 +942,7 @@ fun GifImage.defer( gifUrl = gifUrl ?: properties.gifUrl, height = height ?: properties.height, id = id ?: properties.id, + layoutProvider = layoutProvider ?: properties.layoutProvider, longtapActions = longtapActions ?: properties.longtapActions, margins = margins ?: properties.margins, paddings = paddings ?: properties.paddings, @@ -998,6 +1019,7 @@ fun GifImage.evaluate( gifUrl = gifUrl ?: properties.gifUrl, height = properties.height, id = properties.id, + layoutProvider = properties.layoutProvider, longtapActions = properties.longtapActions, margins = properties.margins, paddings = properties.paddings, @@ -1042,6 +1064,7 @@ fun GifImage.evaluate( * @param gifUrl Direct URL to a GIF image. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -1086,6 +1109,7 @@ fun Component.override( gifUrl: Url? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -1129,6 +1153,7 @@ fun Component.override( gifUrl = valueOrNull(gifUrl), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -1173,6 +1198,7 @@ fun Component.override( * @param gifUrl Direct URL to a GIF image. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -1217,6 +1243,7 @@ fun Component.defer( gifUrl: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -1260,6 +1287,7 @@ fun Component.defer( gifUrl = gifUrl, height = height, id = id, + layoutProvider = layoutProvider, longtapActions = longtapActions, margins = margins, paddings = paddings, @@ -1337,6 +1365,7 @@ fun Component.evaluate( gifUrl = gifUrl, height = null, id = null, + layoutProvider = null, longtapActions = null, margins = null, paddings = null, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Grid.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Grid.kt index a7d37e17c..f5dce95a9 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Grid.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Grid.kt @@ -56,6 +56,7 @@ class Grid internal constructor( height = additive.height ?: properties.height, id = additive.id ?: properties.id, items = additive.items ?: properties.items, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, longtapActions = additive.longtapActions ?: properties.longtapActions, margins = additive.margins ?: properties.margins, paddings = additive.paddings ?: properties.paddings, @@ -161,6 +162,10 @@ class Grid internal constructor( * Contents. */ val items: Property>?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. */ @@ -251,6 +256,7 @@ class Grid internal constructor( result.tryPutProperty("height", height) result.tryPutProperty("id", id) result.tryPutProperty("items", items) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("longtap_actions", longtapActions) result.tryPutProperty("margins", margins) result.tryPutProperty("paddings", paddings) @@ -293,6 +299,7 @@ class Grid internal constructor( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Contents. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -333,6 +340,7 @@ fun DivScope.grid( height: Size? = null, id: String? = null, items: List

    ? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -371,6 +379,7 @@ fun DivScope.grid( height = valueOrNull(height), id = valueOrNull(id), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -411,6 +420,7 @@ fun DivScope.grid( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Contents. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -451,6 +461,7 @@ fun DivScope.gridProps( height: Size? = null, id: String? = null, items: List
    ? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -488,6 +499,7 @@ fun DivScope.gridProps( height = valueOrNull(height), id = valueOrNull(id), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -527,6 +539,7 @@ fun DivScope.gridProps( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Contents. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -567,6 +580,7 @@ fun TemplateScope.gridRefs( height: ReferenceProperty? = null, id: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -604,6 +618,7 @@ fun TemplateScope.gridRefs( height = height, id = id, items = items, + layoutProvider = layoutProvider, longtapActions = longtapActions, margins = margins, paddings = paddings, @@ -643,6 +658,7 @@ fun TemplateScope.gridRefs( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Contents. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -683,6 +699,7 @@ fun Grid.override( height: Size? = null, id: String? = null, items: List
    ? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -721,6 +738,7 @@ fun Grid.override( height = valueOrNull(height) ?: properties.height, id = valueOrNull(id) ?: properties.id, items = valueOrNull(items) ?: properties.items, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, longtapActions = valueOrNull(longtapActions) ?: properties.longtapActions, margins = valueOrNull(margins) ?: properties.margins, paddings = valueOrNull(paddings) ?: properties.paddings, @@ -761,6 +779,7 @@ fun Grid.override( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Contents. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -801,6 +820,7 @@ fun Grid.defer( height: ReferenceProperty? = null, id: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -839,6 +859,7 @@ fun Grid.defer( height = height ?: properties.height, id = id ?: properties.id, items = items ?: properties.items, + layoutProvider = layoutProvider ?: properties.layoutProvider, longtapActions = longtapActions ?: properties.longtapActions, margins = margins ?: properties.margins, paddings = paddings ?: properties.paddings, @@ -903,6 +924,7 @@ fun Grid.evaluate( height = properties.height, id = properties.id, items = properties.items, + layoutProvider = properties.layoutProvider, longtapActions = properties.longtapActions, margins = properties.margins, paddings = properties.paddings, @@ -943,6 +965,7 @@ fun Grid.evaluate( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Contents. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -983,6 +1006,7 @@ fun Component.override( height: Size? = null, id: String? = null, items: List
    ? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -1022,6 +1046,7 @@ fun Component.override( height = valueOrNull(height), id = valueOrNull(id), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -1062,6 +1087,7 @@ fun Component.override( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Contents. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -1102,6 +1128,7 @@ fun Component.defer( height: ReferenceProperty? = null, id: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -1141,6 +1168,7 @@ fun Component.defer( height = height, id = id, items = items, + layoutProvider = layoutProvider, longtapActions = longtapActions, margins = margins, paddings = paddings, @@ -1206,6 +1234,7 @@ fun Component.evaluate( height = null, id = null, items = null, + layoutProvider = null, longtapActions = null, margins = null, paddings = null, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Image.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Image.kt index a7b347df0..587307d58 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Image.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Image.kt @@ -59,6 +59,7 @@ class Image internal constructor( height = additive.height ?: properties.height, highPriorityPreviewShow = additive.highPriorityPreviewShow ?: properties.highPriorityPreviewShow, id = additive.id ?: properties.id, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, longtapActions = additive.longtapActions ?: properties.longtapActions, margins = additive.margins ?: properties.margins, paddings = additive.paddings ?: properties.paddings, @@ -183,6 +184,10 @@ class Image internal constructor( * Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. */ val id: Property?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. */ @@ -304,6 +309,7 @@ class Image internal constructor( result.tryPutProperty("height", height) result.tryPutProperty("high_priority_preview_show", highPriorityPreviewShow) result.tryPutProperty("id", id) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("longtap_actions", longtapActions) result.tryPutProperty("margins", margins) result.tryPutProperty("paddings", paddings) @@ -355,6 +361,7 @@ class Image internal constructor( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param highPriorityPreviewShow It sets the priority of displaying the preview — the preview is decoded in the main stream and displayed as the first frame. Use the parameter carefully — it will worsen the preview display time and can worsen the application launch time. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -404,6 +411,7 @@ fun DivScope.image( height: Size? = null, highPriorityPreviewShow: Boolean? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -451,6 +459,7 @@ fun DivScope.image( height = valueOrNull(height), highPriorityPreviewShow = valueOrNull(highPriorityPreviewShow), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -500,6 +509,7 @@ fun DivScope.image( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param highPriorityPreviewShow It sets the priority of displaying the preview — the preview is decoded in the main stream and displayed as the first frame. Use the parameter carefully — it will worsen the preview display time and can worsen the application launch time. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -549,6 +559,7 @@ fun DivScope.imageProps( height: Size? = null, highPriorityPreviewShow: Boolean? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -595,6 +606,7 @@ fun DivScope.imageProps( height = valueOrNull(height), highPriorityPreviewShow = valueOrNull(highPriorityPreviewShow), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -643,6 +655,7 @@ fun DivScope.imageProps( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param highPriorityPreviewShow It sets the priority of displaying the preview — the preview is decoded in the main stream and displayed as the first frame. Use the parameter carefully — it will worsen the preview display time and can worsen the application launch time. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -692,6 +705,7 @@ fun TemplateScope.imageRefs( height: ReferenceProperty? = null, highPriorityPreviewShow: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -738,6 +752,7 @@ fun TemplateScope.imageRefs( height = height, highPriorityPreviewShow = highPriorityPreviewShow, id = id, + layoutProvider = layoutProvider, longtapActions = longtapActions, margins = margins, paddings = paddings, @@ -786,6 +801,7 @@ fun TemplateScope.imageRefs( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param highPriorityPreviewShow It sets the priority of displaying the preview — the preview is decoded in the main stream and displayed as the first frame. Use the parameter carefully — it will worsen the preview display time and can worsen the application launch time. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -835,6 +851,7 @@ fun Image.override( height: Size? = null, highPriorityPreviewShow: Boolean? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -882,6 +899,7 @@ fun Image.override( height = valueOrNull(height) ?: properties.height, highPriorityPreviewShow = valueOrNull(highPriorityPreviewShow) ?: properties.highPriorityPreviewShow, id = valueOrNull(id) ?: properties.id, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, longtapActions = valueOrNull(longtapActions) ?: properties.longtapActions, margins = valueOrNull(margins) ?: properties.margins, paddings = valueOrNull(paddings) ?: properties.paddings, @@ -931,6 +949,7 @@ fun Image.override( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param highPriorityPreviewShow It sets the priority of displaying the preview — the preview is decoded in the main stream and displayed as the first frame. Use the parameter carefully — it will worsen the preview display time and can worsen the application launch time. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -980,6 +999,7 @@ fun Image.defer( height: ReferenceProperty? = null, highPriorityPreviewShow: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -1027,6 +1047,7 @@ fun Image.defer( height = height ?: properties.height, highPriorityPreviewShow = highPriorityPreviewShow ?: properties.highPriorityPreviewShow, id = id ?: properties.id, + layoutProvider = layoutProvider ?: properties.layoutProvider, longtapActions = longtapActions ?: properties.longtapActions, margins = margins ?: properties.margins, paddings = paddings ?: properties.paddings, @@ -1114,6 +1135,7 @@ fun Image.evaluate( height = properties.height, highPriorityPreviewShow = highPriorityPreviewShow ?: properties.highPriorityPreviewShow, id = properties.id, + layoutProvider = properties.layoutProvider, longtapActions = properties.longtapActions, margins = properties.margins, paddings = properties.paddings, @@ -1163,6 +1185,7 @@ fun Image.evaluate( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param highPriorityPreviewShow It sets the priority of displaying the preview — the preview is decoded in the main stream and displayed as the first frame. Use the parameter carefully — it will worsen the preview display time and can worsen the application launch time. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -1212,6 +1235,7 @@ fun Component.override( height: Size? = null, highPriorityPreviewShow: Boolean? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -1260,6 +1284,7 @@ fun Component.override( height = valueOrNull(height), highPriorityPreviewShow = valueOrNull(highPriorityPreviewShow), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -1309,6 +1334,7 @@ fun Component.override( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param highPriorityPreviewShow It sets the priority of displaying the preview — the preview is decoded in the main stream and displayed as the first frame. Use the parameter carefully — it will worsen the preview display time and can worsen the application launch time. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -1358,6 +1384,7 @@ fun Component.defer( height: ReferenceProperty? = null, highPriorityPreviewShow: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -1406,6 +1433,7 @@ fun Component.defer( height = height, highPriorityPreviewShow = highPriorityPreviewShow, id = id, + layoutProvider = layoutProvider, longtapActions = longtapActions, margins = margins, paddings = paddings, @@ -1494,6 +1522,7 @@ fun Component.evaluate( height = null, highPriorityPreviewShow = highPriorityPreviewShow, id = null, + layoutProvider = null, longtapActions = null, margins = null, paddings = null, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Indicator.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Indicator.kt index 870d2c4a6..ecf247dfd 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Indicator.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Indicator.kt @@ -56,6 +56,7 @@ class Indicator internal constructor( inactiveMinimumShape = additive.inactiveMinimumShape ?: properties.inactiveMinimumShape, inactiveShape = additive.inactiveShape ?: properties.inactiveShape, itemsPlacement = additive.itemsPlacement ?: properties.itemsPlacement, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, margins = additive.margins ?: properties.margins, minimumItemSize = additive.minimumItemSize ?: properties.minimumItemSize, paddings = additive.paddings ?: properties.paddings, @@ -168,6 +169,10 @@ class Indicator internal constructor( * Indicator items placement mode:
  • Default: Indicators' width is fixed and defined by the `shape` parameters.
  • Stretch: Indicators are expanded to fill the entire width.
  • */ val itemsPlacement: Property?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * External margins from the element stroke. */ @@ -276,6 +281,7 @@ class Indicator internal constructor( result.tryPutProperty("inactive_minimum_shape", inactiveMinimumShape) result.tryPutProperty("inactive_shape", inactiveShape) result.tryPutProperty("items_placement", itemsPlacement) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("margins", margins) result.tryPutProperty("minimum_item_size", minimumItemSize) result.tryPutProperty("paddings", paddings) @@ -329,6 +335,7 @@ class Indicator internal constructor( * @param inactiveMinimumShape Inactive indicator shape, minimum size. Used when all the indicators don't fit on the screen. * @param inactiveShape Indicator shape. * @param itemsPlacement Indicator items placement mode:
  • Default: Indicators' width is fixed and defined by the `shape` parameters.
  • Stretch: Indicators are expanded to fill the entire width.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param minimumItemSize A size multiplier for a minimal indicator. It is used when the required number of indicators don't fit on the screen. * @param paddings Internal margins from the element stroke. @@ -372,6 +379,7 @@ fun DivScope.indicator( inactiveMinimumShape: RoundedRectangleShape? = null, inactiveShape: RoundedRectangleShape? = null, itemsPlacement: IndicatorItemPlacement? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, minimumItemSize: Double? = null, paddings: EdgeInsets? = null, @@ -413,6 +421,7 @@ fun DivScope.indicator( inactiveMinimumShape = valueOrNull(inactiveMinimumShape), inactiveShape = valueOrNull(inactiveShape), itemsPlacement = valueOrNull(itemsPlacement), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), minimumItemSize = valueOrNull(minimumItemSize), paddings = valueOrNull(paddings), @@ -456,6 +465,7 @@ fun DivScope.indicator( * @param inactiveMinimumShape Inactive indicator shape, minimum size. Used when all the indicators don't fit on the screen. * @param inactiveShape Indicator shape. * @param itemsPlacement Indicator items placement mode:
  • Default: Indicators' width is fixed and defined by the `shape` parameters.
  • Stretch: Indicators are expanded to fill the entire width.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param minimumItemSize A size multiplier for a minimal indicator. It is used when the required number of indicators don't fit on the screen. * @param paddings Internal margins from the element stroke. @@ -499,6 +509,7 @@ fun DivScope.indicatorProps( inactiveMinimumShape: RoundedRectangleShape? = null, inactiveShape: RoundedRectangleShape? = null, itemsPlacement: IndicatorItemPlacement? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, minimumItemSize: Double? = null, paddings: EdgeInsets? = null, @@ -539,6 +550,7 @@ fun DivScope.indicatorProps( inactiveMinimumShape = valueOrNull(inactiveMinimumShape), inactiveShape = valueOrNull(inactiveShape), itemsPlacement = valueOrNull(itemsPlacement), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), minimumItemSize = valueOrNull(minimumItemSize), paddings = valueOrNull(paddings), @@ -581,6 +593,7 @@ fun DivScope.indicatorProps( * @param inactiveMinimumShape Inactive indicator shape, minimum size. Used when all the indicators don't fit on the screen. * @param inactiveShape Indicator shape. * @param itemsPlacement Indicator items placement mode:
  • Default: Indicators' width is fixed and defined by the `shape` parameters.
  • Stretch: Indicators are expanded to fill the entire width.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param minimumItemSize A size multiplier for a minimal indicator. It is used when the required number of indicators don't fit on the screen. * @param paddings Internal margins from the element stroke. @@ -624,6 +637,7 @@ fun TemplateScope.indicatorRefs( inactiveMinimumShape: ReferenceProperty? = null, inactiveShape: ReferenceProperty? = null, itemsPlacement: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, minimumItemSize: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -664,6 +678,7 @@ fun TemplateScope.indicatorRefs( inactiveMinimumShape = inactiveMinimumShape, inactiveShape = inactiveShape, itemsPlacement = itemsPlacement, + layoutProvider = layoutProvider, margins = margins, minimumItemSize = minimumItemSize, paddings = paddings, @@ -706,6 +721,7 @@ fun TemplateScope.indicatorRefs( * @param inactiveMinimumShape Inactive indicator shape, minimum size. Used when all the indicators don't fit on the screen. * @param inactiveShape Indicator shape. * @param itemsPlacement Indicator items placement mode:
  • Default: Indicators' width is fixed and defined by the `shape` parameters.
  • Stretch: Indicators are expanded to fill the entire width.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param minimumItemSize A size multiplier for a minimal indicator. It is used when the required number of indicators don't fit on the screen. * @param paddings Internal margins from the element stroke. @@ -749,6 +765,7 @@ fun Indicator.override( inactiveMinimumShape: RoundedRectangleShape? = null, inactiveShape: RoundedRectangleShape? = null, itemsPlacement: IndicatorItemPlacement? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, minimumItemSize: Double? = null, paddings: EdgeInsets? = null, @@ -790,6 +807,7 @@ fun Indicator.override( inactiveMinimumShape = valueOrNull(inactiveMinimumShape) ?: properties.inactiveMinimumShape, inactiveShape = valueOrNull(inactiveShape) ?: properties.inactiveShape, itemsPlacement = valueOrNull(itemsPlacement) ?: properties.itemsPlacement, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, margins = valueOrNull(margins) ?: properties.margins, minimumItemSize = valueOrNull(minimumItemSize) ?: properties.minimumItemSize, paddings = valueOrNull(paddings) ?: properties.paddings, @@ -833,6 +851,7 @@ fun Indicator.override( * @param inactiveMinimumShape Inactive indicator shape, minimum size. Used when all the indicators don't fit on the screen. * @param inactiveShape Indicator shape. * @param itemsPlacement Indicator items placement mode:
  • Default: Indicators' width is fixed and defined by the `shape` parameters.
  • Stretch: Indicators are expanded to fill the entire width.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param minimumItemSize A size multiplier for a minimal indicator. It is used when the required number of indicators don't fit on the screen. * @param paddings Internal margins from the element stroke. @@ -876,6 +895,7 @@ fun Indicator.defer( inactiveMinimumShape: ReferenceProperty? = null, inactiveShape: ReferenceProperty? = null, itemsPlacement: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, minimumItemSize: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -917,6 +937,7 @@ fun Indicator.defer( inactiveMinimumShape = inactiveMinimumShape ?: properties.inactiveMinimumShape, inactiveShape = inactiveShape ?: properties.inactiveShape, itemsPlacement = itemsPlacement ?: properties.itemsPlacement, + layoutProvider = layoutProvider ?: properties.layoutProvider, margins = margins ?: properties.margins, minimumItemSize = minimumItemSize ?: properties.minimumItemSize, paddings = paddings ?: properties.paddings, @@ -988,6 +1009,7 @@ fun Indicator.evaluate( inactiveMinimumShape = properties.inactiveMinimumShape, inactiveShape = properties.inactiveShape, itemsPlacement = properties.itemsPlacement, + layoutProvider = properties.layoutProvider, margins = properties.margins, minimumItemSize = minimumItemSize ?: properties.minimumItemSize, paddings = properties.paddings, @@ -1031,6 +1053,7 @@ fun Indicator.evaluate( * @param inactiveMinimumShape Inactive indicator shape, minimum size. Used when all the indicators don't fit on the screen. * @param inactiveShape Indicator shape. * @param itemsPlacement Indicator items placement mode:
  • Default: Indicators' width is fixed and defined by the `shape` parameters.
  • Stretch: Indicators are expanded to fill the entire width.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param minimumItemSize A size multiplier for a minimal indicator. It is used when the required number of indicators don't fit on the screen. * @param paddings Internal margins from the element stroke. @@ -1074,6 +1097,7 @@ fun Component.override( inactiveMinimumShape: RoundedRectangleShape? = null, inactiveShape: RoundedRectangleShape? = null, itemsPlacement: IndicatorItemPlacement? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, minimumItemSize: Double? = null, paddings: EdgeInsets? = null, @@ -1116,6 +1140,7 @@ fun Component.override( inactiveMinimumShape = valueOrNull(inactiveMinimumShape), inactiveShape = valueOrNull(inactiveShape), itemsPlacement = valueOrNull(itemsPlacement), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), minimumItemSize = valueOrNull(minimumItemSize), paddings = valueOrNull(paddings), @@ -1159,6 +1184,7 @@ fun Component.override( * @param inactiveMinimumShape Inactive indicator shape, minimum size. Used when all the indicators don't fit on the screen. * @param inactiveShape Indicator shape. * @param itemsPlacement Indicator items placement mode:
  • Default: Indicators' width is fixed and defined by the `shape` parameters.
  • Stretch: Indicators are expanded to fill the entire width.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param minimumItemSize A size multiplier for a minimal indicator. It is used when the required number of indicators don't fit on the screen. * @param paddings Internal margins from the element stroke. @@ -1202,6 +1228,7 @@ fun Component.defer( inactiveMinimumShape: ReferenceProperty? = null, inactiveShape: ReferenceProperty? = null, itemsPlacement: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, minimumItemSize: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -1244,6 +1271,7 @@ fun Component.defer( inactiveMinimumShape = inactiveMinimumShape, inactiveShape = inactiveShape, itemsPlacement = itemsPlacement, + layoutProvider = layoutProvider, margins = margins, minimumItemSize = minimumItemSize, paddings = paddings, @@ -1316,6 +1344,7 @@ fun Component.evaluate( inactiveMinimumShape = null, inactiveShape = null, itemsPlacement = null, + layoutProvider = null, margins = null, minimumItemSize = minimumItemSize, paddings = null, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Input.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Input.kt index 2f1ff0d00..87d208688 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Input.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Input.kt @@ -58,6 +58,7 @@ class Input internal constructor( id = additive.id ?: properties.id, isEnabled = additive.isEnabled ?: properties.isEnabled, keyboardType = additive.keyboardType ?: properties.keyboardType, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, letterSpacing = additive.letterSpacing ?: properties.letterSpacing, lineHeight = additive.lineHeight ?: properties.lineHeight, margins = additive.margins ?: properties.margins, @@ -185,6 +186,10 @@ class Input internal constructor( * Default value: `multi_line_text`. */ val keyboardType: Property?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * Spacing between characters. * Default value: `0`. @@ -326,6 +331,7 @@ class Input internal constructor( result.tryPutProperty("id", id) result.tryPutProperty("is_enabled", isEnabled) result.tryPutProperty("keyboard_type", keyboardType) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("letter_spacing", letterSpacing) result.tryPutProperty("line_height", lineHeight) result.tryPutProperty("margins", margins) @@ -426,6 +432,7 @@ class Input internal constructor( * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param isEnabled Indicates if the text editing is enabled. * @param keyboardType Keyboard type. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Units specified in `font_size_unit`. * @param margins External margins from the element stroke. @@ -479,6 +486,7 @@ fun DivScope.input( id: String? = null, isEnabled: Boolean? = null, keyboardType: Input.KeyboardType? = null, + layoutProvider: LayoutProvider? = null, letterSpacing: Double? = null, lineHeight: Int? = null, margins: EdgeInsets? = null, @@ -530,6 +538,7 @@ fun DivScope.input( id = valueOrNull(id), isEnabled = valueOrNull(isEnabled), keyboardType = valueOrNull(keyboardType), + layoutProvider = valueOrNull(layoutProvider), letterSpacing = valueOrNull(letterSpacing), lineHeight = valueOrNull(lineHeight), margins = valueOrNull(margins), @@ -583,6 +592,7 @@ fun DivScope.input( * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param isEnabled Indicates if the text editing is enabled. * @param keyboardType Keyboard type. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Units specified in `font_size_unit`. * @param margins External margins from the element stroke. @@ -636,6 +646,7 @@ fun DivScope.inputProps( id: String? = null, isEnabled: Boolean? = null, keyboardType: Input.KeyboardType? = null, + layoutProvider: LayoutProvider? = null, letterSpacing: Double? = null, lineHeight: Int? = null, margins: EdgeInsets? = null, @@ -686,6 +697,7 @@ fun DivScope.inputProps( id = valueOrNull(id), isEnabled = valueOrNull(isEnabled), keyboardType = valueOrNull(keyboardType), + layoutProvider = valueOrNull(layoutProvider), letterSpacing = valueOrNull(letterSpacing), lineHeight = valueOrNull(lineHeight), margins = valueOrNull(margins), @@ -738,6 +750,7 @@ fun DivScope.inputProps( * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param isEnabled Indicates if the text editing is enabled. * @param keyboardType Keyboard type. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Units specified in `font_size_unit`. * @param margins External margins from the element stroke. @@ -791,6 +804,7 @@ fun TemplateScope.inputRefs( id: ReferenceProperty? = null, isEnabled: ReferenceProperty? = null, keyboardType: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, letterSpacing: ReferenceProperty? = null, lineHeight: ReferenceProperty? = null, margins: ReferenceProperty? = null, @@ -841,6 +855,7 @@ fun TemplateScope.inputRefs( id = id, isEnabled = isEnabled, keyboardType = keyboardType, + layoutProvider = layoutProvider, letterSpacing = letterSpacing, lineHeight = lineHeight, margins = margins, @@ -893,6 +908,7 @@ fun TemplateScope.inputRefs( * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param isEnabled Indicates if the text editing is enabled. * @param keyboardType Keyboard type. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Units specified in `font_size_unit`. * @param margins External margins from the element stroke. @@ -946,6 +962,7 @@ fun Input.override( id: String? = null, isEnabled: Boolean? = null, keyboardType: Input.KeyboardType? = null, + layoutProvider: LayoutProvider? = null, letterSpacing: Double? = null, lineHeight: Int? = null, margins: EdgeInsets? = null, @@ -997,6 +1014,7 @@ fun Input.override( id = valueOrNull(id) ?: properties.id, isEnabled = valueOrNull(isEnabled) ?: properties.isEnabled, keyboardType = valueOrNull(keyboardType) ?: properties.keyboardType, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, letterSpacing = valueOrNull(letterSpacing) ?: properties.letterSpacing, lineHeight = valueOrNull(lineHeight) ?: properties.lineHeight, margins = valueOrNull(margins) ?: properties.margins, @@ -1050,6 +1068,7 @@ fun Input.override( * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param isEnabled Indicates if the text editing is enabled. * @param keyboardType Keyboard type. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Units specified in `font_size_unit`. * @param margins External margins from the element stroke. @@ -1103,6 +1122,7 @@ fun Input.defer( id: ReferenceProperty? = null, isEnabled: ReferenceProperty? = null, keyboardType: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, letterSpacing: ReferenceProperty? = null, lineHeight: ReferenceProperty? = null, margins: ReferenceProperty? = null, @@ -1154,6 +1174,7 @@ fun Input.defer( id = id ?: properties.id, isEnabled = isEnabled ?: properties.isEnabled, keyboardType = keyboardType ?: properties.keyboardType, + layoutProvider = layoutProvider ?: properties.layoutProvider, letterSpacing = letterSpacing ?: properties.letterSpacing, lineHeight = lineHeight ?: properties.lineHeight, margins = margins ?: properties.margins, @@ -1261,6 +1282,7 @@ fun Input.evaluate( id = properties.id, isEnabled = isEnabled ?: properties.isEnabled, keyboardType = keyboardType ?: properties.keyboardType, + layoutProvider = properties.layoutProvider, letterSpacing = letterSpacing ?: properties.letterSpacing, lineHeight = lineHeight ?: properties.lineHeight, margins = properties.margins, @@ -1314,6 +1336,7 @@ fun Input.evaluate( * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param isEnabled Indicates if the text editing is enabled. * @param keyboardType Keyboard type. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Units specified in `font_size_unit`. * @param margins External margins from the element stroke. @@ -1367,6 +1390,7 @@ fun Component.override( id: String? = null, isEnabled: Boolean? = null, keyboardType: Input.KeyboardType? = null, + layoutProvider: LayoutProvider? = null, letterSpacing: Double? = null, lineHeight: Int? = null, margins: EdgeInsets? = null, @@ -1419,6 +1443,7 @@ fun Component.override( id = valueOrNull(id), isEnabled = valueOrNull(isEnabled), keyboardType = valueOrNull(keyboardType), + layoutProvider = valueOrNull(layoutProvider), letterSpacing = valueOrNull(letterSpacing), lineHeight = valueOrNull(lineHeight), margins = valueOrNull(margins), @@ -1472,6 +1497,7 @@ fun Component.override( * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param isEnabled Indicates if the text editing is enabled. * @param keyboardType Keyboard type. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Units specified in `font_size_unit`. * @param margins External margins from the element stroke. @@ -1525,6 +1551,7 @@ fun Component.defer( id: ReferenceProperty? = null, isEnabled: ReferenceProperty? = null, keyboardType: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, letterSpacing: ReferenceProperty? = null, lineHeight: ReferenceProperty? = null, margins: ReferenceProperty? = null, @@ -1577,6 +1604,7 @@ fun Component.defer( id = id, isEnabled = isEnabled, keyboardType = keyboardType, + layoutProvider = layoutProvider, letterSpacing = letterSpacing, lineHeight = lineHeight, margins = margins, @@ -1685,6 +1713,7 @@ fun Component.evaluate( id = null, isEnabled = isEnabled, keyboardType = keyboardType, + layoutProvider = null, letterSpacing = letterSpacing, lineHeight = lineHeight, margins = null, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/LayoutProvider.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/LayoutProvider.kt new file mode 100644 index 000000000..90351b5ca --- /dev/null +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/LayoutProvider.kt @@ -0,0 +1,151 @@ +@file:Suppress( + "unused", + "UNUSED_PARAMETER", +) + +package divkit.dsl + +import com.fasterxml.jackson.annotation.JsonAnyGetter +import com.fasterxml.jackson.annotation.JsonIgnore +import com.fasterxml.jackson.annotation.JsonValue +import divkit.dsl.annotation.* +import divkit.dsl.core.* +import divkit.dsl.scope.* +import kotlin.Any +import kotlin.String +import kotlin.Suppress +import kotlin.collections.List +import kotlin.collections.Map + +/** + * Can be created using the method [layoutProvider]. + */ +@Generated +class LayoutProvider internal constructor( + @JsonIgnore + val properties: Properties, +) { + @JsonAnyGetter + internal fun getJsonProperties(): Map = properties.mergeWith(emptyMap()) + + operator fun plus(additive: Properties): LayoutProvider = LayoutProvider( + Properties( + heightVariableName = additive.heightVariableName ?: properties.heightVariableName, + widthVariableName = additive.widthVariableName ?: properties.widthVariableName, + ) + ) + + class Properties internal constructor( + /** + * Variable name to store element height. + */ + val heightVariableName: Property?, + /** + * Variable name to store element width. + */ + val widthVariableName: Property?, + ) { + internal fun mergeWith(properties: Map): Map { + val result = mutableMapOf() + result.putAll(properties) + result.tryPutProperty("height_variable_name", heightVariableName) + result.tryPutProperty("width_variable_name", widthVariableName) + return result + } + } +} + +/** + * @param heightVariableName Variable name to store element height. + * @param widthVariableName Variable name to store element width. + */ +@Generated +fun DivScope.layoutProvider( + `use named arguments`: Guard = Guard.instance, + heightVariableName: String? = null, + widthVariableName: String? = null, +): LayoutProvider = LayoutProvider( + LayoutProvider.Properties( + heightVariableName = valueOrNull(heightVariableName), + widthVariableName = valueOrNull(widthVariableName), + ) +) + +/** + * @param heightVariableName Variable name to store element height. + * @param widthVariableName Variable name to store element width. + */ +@Generated +fun DivScope.layoutProviderProps( + `use named arguments`: Guard = Guard.instance, + heightVariableName: String? = null, + widthVariableName: String? = null, +) = LayoutProvider.Properties( + heightVariableName = valueOrNull(heightVariableName), + widthVariableName = valueOrNull(widthVariableName), +) + +/** + * @param heightVariableName Variable name to store element height. + * @param widthVariableName Variable name to store element width. + */ +@Generated +fun TemplateScope.layoutProviderRefs( + `use named arguments`: Guard = Guard.instance, + heightVariableName: ReferenceProperty? = null, + widthVariableName: ReferenceProperty? = null, +) = LayoutProvider.Properties( + heightVariableName = heightVariableName, + widthVariableName = widthVariableName, +) + +/** + * @param heightVariableName Variable name to store element height. + * @param widthVariableName Variable name to store element width. + */ +@Generated +fun LayoutProvider.override( + `use named arguments`: Guard = Guard.instance, + heightVariableName: String? = null, + widthVariableName: String? = null, +): LayoutProvider = LayoutProvider( + LayoutProvider.Properties( + heightVariableName = valueOrNull(heightVariableName) ?: properties.heightVariableName, + widthVariableName = valueOrNull(widthVariableName) ?: properties.widthVariableName, + ) +) + +/** + * @param heightVariableName Variable name to store element height. + * @param widthVariableName Variable name to store element width. + */ +@Generated +fun LayoutProvider.defer( + `use named arguments`: Guard = Guard.instance, + heightVariableName: ReferenceProperty? = null, + widthVariableName: ReferenceProperty? = null, +): LayoutProvider = LayoutProvider( + LayoutProvider.Properties( + heightVariableName = heightVariableName ?: properties.heightVariableName, + widthVariableName = widthVariableName ?: properties.widthVariableName, + ) +) + +/** + * @param heightVariableName Variable name to store element height. + * @param widthVariableName Variable name to store element width. + */ +@Generated +fun LayoutProvider.evaluate( + `use named arguments`: Guard = Guard.instance, + heightVariableName: ExpressionProperty? = null, + widthVariableName: ExpressionProperty? = null, +): LayoutProvider = LayoutProvider( + LayoutProvider.Properties( + heightVariableName = heightVariableName ?: properties.heightVariableName, + widthVariableName = widthVariableName ?: properties.widthVariableName, + ) +) + +@Generated +fun LayoutProvider.asList() = listOf(this) diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Pager.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Pager.kt index 260bd071a..9e025cbdd 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Pager.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Pager.kt @@ -54,6 +54,7 @@ class Pager internal constructor( itemSpacing = additive.itemSpacing ?: properties.itemSpacing, items = additive.items ?: properties.items, layoutMode = additive.layoutMode ?: properties.layoutMode, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, margins = additive.margins ?: properties.margins, orientation = additive.orientation ?: properties.orientation, paddings = additive.paddings ?: properties.paddings, @@ -153,6 +154,10 @@ class Pager internal constructor( * Type of calculation of the main page width:
  • `fixed` — from the fixed width of the next page `neighbour_page_width`;
  • `percentage` — from the percentage value `page_width`.
  • */ val layoutMode: Property?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * External margins from the element stroke. */ @@ -251,6 +256,7 @@ class Pager internal constructor( result.tryPutProperty("item_spacing", itemSpacing) result.tryPutProperty("items", items) result.tryPutProperty("layout_mode", layoutMode) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("margins", margins) result.tryPutProperty("orientation", orientation) result.tryPutProperty("paddings", paddings) @@ -301,6 +307,7 @@ class Pager internal constructor( * @param itemSpacing Spacing between elements. * @param items Pager elements. Page-by-page transition options can be implemented using:
  • `div-action://set_current_item?id=&item=` — set the current page with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next page inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous page inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. * @param layoutMode Type of calculation of the main page width:

  • `fixed` — from the fixed width of the next page `neighbour_page_width`;
  • `percentage` — from the percentage value `page_width`.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Pager orientation. * @param paddings Internal margins from the element stroke. @@ -341,6 +348,7 @@ fun DivScope.pager( itemSpacing: FixedSize? = null, items: List
    ? = null, layoutMode: PagerLayoutMode? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, orientation: Pager.Orientation? = null, paddings: EdgeInsets? = null, @@ -379,6 +387,7 @@ fun DivScope.pager( itemSpacing = valueOrNull(itemSpacing), items = valueOrNull(items), layoutMode = valueOrNull(layoutMode), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), orientation = valueOrNull(orientation), paddings = valueOrNull(paddings), @@ -419,6 +428,7 @@ fun DivScope.pager( * @param itemSpacing Spacing between elements. * @param items Pager elements. Page-by-page transition options can be implemented using:
  • `div-action://set_current_item?id=&item=` — set the current page with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next page inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous page inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. * @param layoutMode Type of calculation of the main page width:

  • `fixed` — from the fixed width of the next page `neighbour_page_width`;
  • `percentage` — from the percentage value `page_width`.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Pager orientation. * @param paddings Internal margins from the element stroke. @@ -459,6 +469,7 @@ fun DivScope.pagerProps( itemSpacing: FixedSize? = null, items: List
    ? = null, layoutMode: PagerLayoutMode? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, orientation: Pager.Orientation? = null, paddings: EdgeInsets? = null, @@ -496,6 +507,7 @@ fun DivScope.pagerProps( itemSpacing = valueOrNull(itemSpacing), items = valueOrNull(items), layoutMode = valueOrNull(layoutMode), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), orientation = valueOrNull(orientation), paddings = valueOrNull(paddings), @@ -535,6 +547,7 @@ fun DivScope.pagerProps( * @param itemSpacing Spacing between elements. * @param items Pager elements. Page-by-page transition options can be implemented using:
  • `div-action://set_current_item?id=&item=` — set the current page with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next page inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous page inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. * @param layoutMode Type of calculation of the main page width:

  • `fixed` — from the fixed width of the next page `neighbour_page_width`;
  • `percentage` — from the percentage value `page_width`.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Pager orientation. * @param paddings Internal margins from the element stroke. @@ -575,6 +588,7 @@ fun TemplateScope.pagerRefs( itemSpacing: ReferenceProperty? = null, items: ReferenceProperty>? = null, layoutMode: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, orientation: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -612,6 +626,7 @@ fun TemplateScope.pagerRefs( itemSpacing = itemSpacing, items = items, layoutMode = layoutMode, + layoutProvider = layoutProvider, margins = margins, orientation = orientation, paddings = paddings, @@ -651,6 +666,7 @@ fun TemplateScope.pagerRefs( * @param itemSpacing Spacing between elements. * @param items Pager elements. Page-by-page transition options can be implemented using:
  • `div-action://set_current_item?id=&item=` — set the current page with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next page inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous page inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. * @param layoutMode Type of calculation of the main page width:

  • `fixed` — from the fixed width of the next page `neighbour_page_width`;
  • `percentage` — from the percentage value `page_width`.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Pager orientation. * @param paddings Internal margins from the element stroke. @@ -691,6 +707,7 @@ fun Pager.override( itemSpacing: FixedSize? = null, items: List
    ? = null, layoutMode: PagerLayoutMode? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, orientation: Pager.Orientation? = null, paddings: EdgeInsets? = null, @@ -729,6 +746,7 @@ fun Pager.override( itemSpacing = valueOrNull(itemSpacing) ?: properties.itemSpacing, items = valueOrNull(items) ?: properties.items, layoutMode = valueOrNull(layoutMode) ?: properties.layoutMode, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, margins = valueOrNull(margins) ?: properties.margins, orientation = valueOrNull(orientation) ?: properties.orientation, paddings = valueOrNull(paddings) ?: properties.paddings, @@ -769,6 +787,7 @@ fun Pager.override( * @param itemSpacing Spacing between elements. * @param items Pager elements. Page-by-page transition options can be implemented using:
  • `div-action://set_current_item?id=&item=` — set the current page with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next page inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous page inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. * @param layoutMode Type of calculation of the main page width:

  • `fixed` — from the fixed width of the next page `neighbour_page_width`;
  • `percentage` — from the percentage value `page_width`.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Pager orientation. * @param paddings Internal margins from the element stroke. @@ -809,6 +828,7 @@ fun Pager.defer( itemSpacing: ReferenceProperty? = null, items: ReferenceProperty>? = null, layoutMode: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, orientation: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -847,6 +867,7 @@ fun Pager.defer( itemSpacing = itemSpacing ?: properties.itemSpacing, items = items ?: properties.items, layoutMode = layoutMode ?: properties.layoutMode, + layoutProvider = layoutProvider ?: properties.layoutProvider, margins = margins ?: properties.margins, orientation = orientation ?: properties.orientation, paddings = paddings ?: properties.paddings, @@ -913,6 +934,7 @@ fun Pager.evaluate( itemSpacing = properties.itemSpacing, items = properties.items, layoutMode = properties.layoutMode, + layoutProvider = properties.layoutProvider, margins = properties.margins, orientation = orientation ?: properties.orientation, paddings = properties.paddings, @@ -953,6 +975,7 @@ fun Pager.evaluate( * @param itemSpacing Spacing between elements. * @param items Pager elements. Page-by-page transition options can be implemented using:
  • `div-action://set_current_item?id=&item=` — set the current page with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next page inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous page inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. * @param layoutMode Type of calculation of the main page width:

  • `fixed` — from the fixed width of the next page `neighbour_page_width`;
  • `percentage` — from the percentage value `page_width`.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Pager orientation. * @param paddings Internal margins from the element stroke. @@ -993,6 +1016,7 @@ fun Component.override( itemSpacing: FixedSize? = null, items: List
    ? = null, layoutMode: PagerLayoutMode? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, orientation: Pager.Orientation? = null, paddings: EdgeInsets? = null, @@ -1032,6 +1056,7 @@ fun Component.override( itemSpacing = valueOrNull(itemSpacing), items = valueOrNull(items), layoutMode = valueOrNull(layoutMode), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), orientation = valueOrNull(orientation), paddings = valueOrNull(paddings), @@ -1072,6 +1097,7 @@ fun Component.override( * @param itemSpacing Spacing between elements. * @param items Pager elements. Page-by-page transition options can be implemented using:
  • `div-action://set_current_item?id=&item=` — set the current page with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next page inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous page inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. * @param layoutMode Type of calculation of the main page width:

  • `fixed` — from the fixed width of the next page `neighbour_page_width`;
  • `percentage` — from the percentage value `page_width`.
  • + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param orientation Pager orientation. * @param paddings Internal margins from the element stroke. @@ -1112,6 +1138,7 @@ fun Component.defer( itemSpacing: ReferenceProperty? = null, items: ReferenceProperty>? = null, layoutMode: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, orientation: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -1151,6 +1178,7 @@ fun Component.defer( itemSpacing = itemSpacing, items = items, layoutMode = layoutMode, + layoutProvider = layoutProvider, margins = margins, orientation = orientation, paddings = paddings, @@ -1218,6 +1246,7 @@ fun Component.evaluate( itemSpacing = null, items = null, layoutMode = null, + layoutProvider = null, margins = null, orientation = orientation, paddings = null, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Select.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Select.kt index ae7579d78..68212bf7d 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Select.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Select.kt @@ -55,6 +55,7 @@ class Select internal constructor( hintColor = additive.hintColor ?: properties.hintColor, hintText = additive.hintText ?: properties.hintText, id = additive.id ?: properties.id, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, letterSpacing = additive.letterSpacing ?: properties.letterSpacing, lineHeight = additive.lineHeight ?: properties.lineHeight, margins = additive.margins ?: properties.margins, @@ -161,6 +162,10 @@ class Select internal constructor( * Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. */ val id: Property?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * Spacing between characters. * Default value: `0`. @@ -265,6 +270,7 @@ class Select internal constructor( result.tryPutProperty("hint_color", hintColor) result.tryPutProperty("hint_text", hintText) result.tryPutProperty("id", id) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("letter_spacing", letterSpacing) result.tryPutProperty("line_height", lineHeight) result.tryPutProperty("margins", margins) @@ -353,6 +359,7 @@ class Select internal constructor( * @param hintColor Hint color. * @param hintText Hint text. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Measured in units set in `font_size_unit`. * @param margins External margins from the element stroke. @@ -395,6 +402,7 @@ fun DivScope.select( hintColor: Color? = null, hintText: String? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, letterSpacing: Double? = null, lineHeight: Int? = null, margins: EdgeInsets? = null, @@ -436,6 +444,7 @@ fun DivScope.select( hintColor = valueOrNull(hintColor), hintText = valueOrNull(hintText), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), letterSpacing = valueOrNull(letterSpacing), lineHeight = valueOrNull(lineHeight), margins = valueOrNull(margins), @@ -479,6 +488,7 @@ fun DivScope.select( * @param hintColor Hint color. * @param hintText Hint text. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Measured in units set in `font_size_unit`. * @param margins External margins from the element stroke. @@ -521,6 +531,7 @@ fun DivScope.selectProps( hintColor: Color? = null, hintText: String? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, letterSpacing: Double? = null, lineHeight: Int? = null, margins: EdgeInsets? = null, @@ -561,6 +572,7 @@ fun DivScope.selectProps( hintColor = valueOrNull(hintColor), hintText = valueOrNull(hintText), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), letterSpacing = valueOrNull(letterSpacing), lineHeight = valueOrNull(lineHeight), margins = valueOrNull(margins), @@ -603,6 +615,7 @@ fun DivScope.selectProps( * @param hintColor Hint color. * @param hintText Hint text. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Measured in units set in `font_size_unit`. * @param margins External margins from the element stroke. @@ -645,6 +658,7 @@ fun TemplateScope.selectRefs( hintColor: ReferenceProperty? = null, hintText: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, letterSpacing: ReferenceProperty? = null, lineHeight: ReferenceProperty? = null, margins: ReferenceProperty? = null, @@ -685,6 +699,7 @@ fun TemplateScope.selectRefs( hintColor = hintColor, hintText = hintText, id = id, + layoutProvider = layoutProvider, letterSpacing = letterSpacing, lineHeight = lineHeight, margins = margins, @@ -727,6 +742,7 @@ fun TemplateScope.selectRefs( * @param hintColor Hint color. * @param hintText Hint text. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Measured in units set in `font_size_unit`. * @param margins External margins from the element stroke. @@ -769,6 +785,7 @@ fun Select.override( hintColor: Color? = null, hintText: String? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, letterSpacing: Double? = null, lineHeight: Int? = null, margins: EdgeInsets? = null, @@ -810,6 +827,7 @@ fun Select.override( hintColor = valueOrNull(hintColor) ?: properties.hintColor, hintText = valueOrNull(hintText) ?: properties.hintText, id = valueOrNull(id) ?: properties.id, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, letterSpacing = valueOrNull(letterSpacing) ?: properties.letterSpacing, lineHeight = valueOrNull(lineHeight) ?: properties.lineHeight, margins = valueOrNull(margins) ?: properties.margins, @@ -853,6 +871,7 @@ fun Select.override( * @param hintColor Hint color. * @param hintText Hint text. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Measured in units set in `font_size_unit`. * @param margins External margins from the element stroke. @@ -895,6 +914,7 @@ fun Select.defer( hintColor: ReferenceProperty? = null, hintText: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, letterSpacing: ReferenceProperty? = null, lineHeight: ReferenceProperty? = null, margins: ReferenceProperty? = null, @@ -936,6 +956,7 @@ fun Select.defer( hintColor = hintColor ?: properties.hintColor, hintText = hintText ?: properties.hintText, id = id ?: properties.id, + layoutProvider = layoutProvider ?: properties.layoutProvider, letterSpacing = letterSpacing ?: properties.letterSpacing, lineHeight = lineHeight ?: properties.lineHeight, margins = margins ?: properties.margins, @@ -1017,6 +1038,7 @@ fun Select.evaluate( hintColor = hintColor ?: properties.hintColor, hintText = hintText ?: properties.hintText, id = properties.id, + layoutProvider = properties.layoutProvider, letterSpacing = letterSpacing ?: properties.letterSpacing, lineHeight = lineHeight ?: properties.lineHeight, margins = properties.margins, @@ -1060,6 +1082,7 @@ fun Select.evaluate( * @param hintColor Hint color. * @param hintText Hint text. * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. Measured in units set in `font_size_unit`. * @param margins External margins from the element stroke. @@ -1102,6 +1125,7 @@ fun Component.override( hintColor = valueOrNull(hintColor), hintText = valueOrNull(hintText), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), letterSpacing = valueOrNull(letterSpacing), lineHeight = valueOrNull(lineHeight), margins = valueOrNull(margins), @@ -1187,6 +1212,7 @@ fun Component.defer( hintColor: ReferenceProperty? = null, hintText: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, letterSpacing: ReferenceProperty? = null, lineHeight: ReferenceProperty? = null, margins: ReferenceProperty? = null, @@ -1271,6 +1298,7 @@ fun Component.evaluate( hintColor = hintColor, hintText = hintText, id = null, + layoutProvider = null, letterSpacing = letterSpacing, lineHeight = lineHeight, margins = null, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Separator.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Separator.kt index 01a179279..e673106ba 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Separator.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Separator.kt @@ -53,6 +53,7 @@ class Separator internal constructor( focus = additive.focus ?: properties.focus, height = additive.height ?: properties.height, id = additive.id ?: properties.id, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, longtapActions = additive.longtapActions ?: properties.longtapActions, margins = additive.margins ?: properties.margins, paddings = additive.paddings ?: properties.paddings, @@ -144,6 +145,10 @@ class Separator internal constructor( * Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. */ val id: Property?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. */ @@ -231,6 +236,7 @@ class Separator internal constructor( result.tryPutProperty("focus", focus) result.tryPutProperty("height", height) result.tryPutProperty("id", id) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("longtap_actions", longtapActions) result.tryPutProperty("margins", margins) result.tryPutProperty("paddings", paddings) @@ -321,6 +327,7 @@ class Separator internal constructor( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -358,6 +365,7 @@ fun DivScope.separator( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -393,6 +401,7 @@ fun DivScope.separator( focus = valueOrNull(focus), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -430,6 +439,7 @@ fun DivScope.separator( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -467,6 +477,7 @@ fun DivScope.separatorProps( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -501,6 +512,7 @@ fun DivScope.separatorProps( focus = valueOrNull(focus), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -537,6 +549,7 @@ fun DivScope.separatorProps( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -574,6 +587,7 @@ fun TemplateScope.separatorRefs( focus: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -608,6 +622,7 @@ fun TemplateScope.separatorRefs( focus = focus, height = height, id = id, + layoutProvider = layoutProvider, longtapActions = longtapActions, margins = margins, paddings = paddings, @@ -644,6 +659,7 @@ fun TemplateScope.separatorRefs( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -681,6 +697,7 @@ fun Separator.override( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -716,6 +733,7 @@ fun Separator.override( focus = valueOrNull(focus) ?: properties.focus, height = valueOrNull(height) ?: properties.height, id = valueOrNull(id) ?: properties.id, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, longtapActions = valueOrNull(longtapActions) ?: properties.longtapActions, margins = valueOrNull(margins) ?: properties.margins, paddings = valueOrNull(paddings) ?: properties.paddings, @@ -753,6 +771,7 @@ fun Separator.override( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -790,6 +809,7 @@ fun Separator.defer( focus: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -825,6 +845,7 @@ fun Separator.defer( focus = focus ?: properties.focus, height = height ?: properties.height, id = id ?: properties.id, + layoutProvider = layoutProvider ?: properties.layoutProvider, longtapActions = longtapActions ?: properties.longtapActions, margins = margins ?: properties.margins, paddings = paddings ?: properties.paddings, @@ -880,6 +901,7 @@ fun Separator.evaluate( focus = properties.focus, height = properties.height, id = properties.id, + layoutProvider = properties.layoutProvider, longtapActions = properties.longtapActions, margins = properties.margins, paddings = properties.paddings, @@ -917,6 +939,7 @@ fun Separator.evaluate( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -954,6 +977,7 @@ fun Component.override( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, longtapActions: List? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, @@ -990,6 +1014,7 @@ fun Component.override( focus = valueOrNull(focus), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), longtapActions = valueOrNull(longtapActions), margins = valueOrNull(margins), paddings = valueOrNull(paddings), @@ -1027,6 +1052,7 @@ fun Component.override( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. @@ -1064,6 +1090,7 @@ fun Component.defer( focus: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -1100,6 +1127,7 @@ fun Component.defer( focus = focus, height = height, id = id, + layoutProvider = layoutProvider, longtapActions = longtapActions, margins = margins, paddings = paddings, @@ -1156,6 +1184,7 @@ fun Component.evaluate( focus = null, height = null, id = null, + layoutProvider = null, longtapActions = null, margins = null, paddings = null, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Slider.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Slider.kt index 3c9457bd7..dbf646978 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Slider.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Slider.kt @@ -48,6 +48,7 @@ class Slider internal constructor( focus = additive.focus ?: properties.focus, height = additive.height ?: properties.height, id = additive.id ?: properties.id, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, margins = additive.margins ?: properties.margins, maxValue = additive.maxValue ?: properties.maxValue, minValue = additive.minValue ?: properties.minValue, @@ -131,6 +132,10 @@ class Slider internal constructor( * Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. */ val id: Property?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * External margins from the element stroke. */ @@ -267,6 +272,7 @@ class Slider internal constructor( result.tryPutProperty("focus", focus) result.tryPutProperty("height", height) result.tryPutProperty("id", id) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("margins", margins) result.tryPutProperty("max_value", maxValue) result.tryPutProperty("min_value", minValue) @@ -438,6 +444,7 @@ class Slider internal constructor( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param maxValue Maximum value. It must be greater than the minimum value. * @param minValue Minimum value. @@ -483,6 +490,7 @@ fun DivScope.slider( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, maxValue: Int? = null, minValue: Int? = null, @@ -526,6 +534,7 @@ fun DivScope.slider( focus = valueOrNull(focus), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), maxValue = valueOrNull(maxValue), minValue = valueOrNull(minValue), @@ -571,6 +580,7 @@ fun DivScope.slider( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param maxValue Maximum value. It must be greater than the minimum value. * @param minValue Minimum value. @@ -616,6 +626,7 @@ fun DivScope.sliderProps( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, maxValue: Int? = null, minValue: Int? = null, @@ -658,6 +669,7 @@ fun DivScope.sliderProps( focus = valueOrNull(focus), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), maxValue = valueOrNull(maxValue), minValue = valueOrNull(minValue), @@ -702,6 +714,7 @@ fun DivScope.sliderProps( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param maxValue Maximum value. It must be greater than the minimum value. * @param minValue Minimum value. @@ -747,6 +760,7 @@ fun TemplateScope.sliderRefs( focus: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, maxValue: ReferenceProperty? = null, minValue: ReferenceProperty? = null, @@ -789,6 +803,7 @@ fun TemplateScope.sliderRefs( focus = focus, height = height, id = id, + layoutProvider = layoutProvider, margins = margins, maxValue = maxValue, minValue = minValue, @@ -833,6 +848,7 @@ fun TemplateScope.sliderRefs( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param maxValue Maximum value. It must be greater than the minimum value. * @param minValue Minimum value. @@ -878,6 +894,7 @@ fun Slider.override( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, maxValue: Int? = null, minValue: Int? = null, @@ -921,6 +938,7 @@ fun Slider.override( focus = valueOrNull(focus) ?: properties.focus, height = valueOrNull(height) ?: properties.height, id = valueOrNull(id) ?: properties.id, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, margins = valueOrNull(margins) ?: properties.margins, maxValue = valueOrNull(maxValue) ?: properties.maxValue, minValue = valueOrNull(minValue) ?: properties.minValue, @@ -966,6 +984,7 @@ fun Slider.override( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param maxValue Maximum value. It must be greater than the minimum value. * @param minValue Minimum value. @@ -1011,6 +1030,7 @@ fun Slider.defer( focus: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, maxValue: ReferenceProperty? = null, minValue: ReferenceProperty? = null, @@ -1054,6 +1074,7 @@ fun Slider.defer( focus = focus ?: properties.focus, height = height ?: properties.height, id = id ?: properties.id, + layoutProvider = layoutProvider ?: properties.layoutProvider, margins = margins ?: properties.margins, maxValue = maxValue ?: properties.maxValue, minValue = minValue ?: properties.minValue, @@ -1121,6 +1142,7 @@ fun Slider.evaluate( focus = properties.focus, height = properties.height, id = properties.id, + layoutProvider = properties.layoutProvider, margins = properties.margins, maxValue = maxValue ?: properties.maxValue, minValue = minValue ?: properties.minValue, @@ -1166,6 +1188,7 @@ fun Slider.evaluate( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param maxValue Maximum value. It must be greater than the minimum value. * @param minValue Minimum value. @@ -1211,6 +1234,7 @@ fun Component.override( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, maxValue: Int? = null, minValue: Int? = null, @@ -1255,6 +1279,7 @@ fun Component.override( focus = valueOrNull(focus), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), maxValue = valueOrNull(maxValue), minValue = valueOrNull(minValue), @@ -1300,6 +1325,7 @@ fun Component.override( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param maxValue Maximum value. It must be greater than the minimum value. * @param minValue Minimum value. @@ -1345,6 +1371,7 @@ fun Component.defer( focus: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, maxValue: ReferenceProperty? = null, minValue: ReferenceProperty? = null, @@ -1389,6 +1416,7 @@ fun Component.defer( focus = focus, height = height, id = id, + layoutProvider = layoutProvider, margins = margins, maxValue = maxValue, minValue = minValue, @@ -1457,6 +1485,7 @@ fun Component.evaluate( focus = null, height = null, id = null, + layoutProvider = null, margins = null, maxValue = maxValue, minValue = minValue, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/State.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/State.kt index bc7249d98..79014c053 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/State.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/State.kt @@ -50,6 +50,7 @@ class State internal constructor( focus = additive.focus ?: properties.focus, height = additive.height ?: properties.height, id = additive.id ?: properties.id, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, margins = additive.margins ?: properties.margins, paddings = additive.paddings ?: properties.paddings, rowSpan = additive.rowSpan ?: properties.rowSpan, @@ -131,6 +132,10 @@ class State internal constructor( * Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. */ val id: Property?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * External margins from the element stroke. */ @@ -225,6 +230,7 @@ class State internal constructor( result.tryPutProperty("focus", focus) result.tryPutProperty("height", height) result.tryPutProperty("id", id) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("margins", margins) result.tryPutProperty("paddings", paddings) result.tryPutProperty("row_span", rowSpan) @@ -325,6 +331,7 @@ class State internal constructor( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -361,6 +368,7 @@ fun DivScope.state( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, rowSpan: Int? = null, @@ -395,6 +403,7 @@ fun DivScope.state( focus = valueOrNull(focus), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), paddings = valueOrNull(paddings), rowSpan = valueOrNull(rowSpan), @@ -431,6 +440,7 @@ fun DivScope.state( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -467,6 +477,7 @@ fun DivScope.stateProps( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, rowSpan: Int? = null, @@ -500,6 +511,7 @@ fun DivScope.stateProps( focus = valueOrNull(focus), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), paddings = valueOrNull(paddings), rowSpan = valueOrNull(rowSpan), @@ -535,6 +547,7 @@ fun DivScope.stateProps( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -571,6 +584,7 @@ fun TemplateScope.stateRefs( focus: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, rowSpan: ReferenceProperty? = null, @@ -604,6 +618,7 @@ fun TemplateScope.stateRefs( focus = focus, height = height, id = id, + layoutProvider = layoutProvider, margins = margins, paddings = paddings, rowSpan = rowSpan, @@ -639,6 +654,7 @@ fun TemplateScope.stateRefs( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -675,6 +691,7 @@ fun State.override( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, rowSpan: Int? = null, @@ -709,6 +726,7 @@ fun State.override( focus = valueOrNull(focus) ?: properties.focus, height = valueOrNull(height) ?: properties.height, id = valueOrNull(id) ?: properties.id, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, margins = valueOrNull(margins) ?: properties.margins, paddings = valueOrNull(paddings) ?: properties.paddings, rowSpan = valueOrNull(rowSpan) ?: properties.rowSpan, @@ -745,6 +763,7 @@ fun State.override( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -781,6 +800,7 @@ fun State.defer( focus: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, rowSpan: ReferenceProperty? = null, @@ -815,6 +835,7 @@ fun State.defer( focus = focus ?: properties.focus, height = height ?: properties.height, id = id ?: properties.id, + layoutProvider = layoutProvider ?: properties.layoutProvider, margins = margins ?: properties.margins, paddings = paddings ?: properties.paddings, rowSpan = rowSpan ?: properties.rowSpan, @@ -873,6 +894,7 @@ fun State.evaluate( focus = properties.focus, height = properties.height, id = properties.id, + layoutProvider = properties.layoutProvider, margins = properties.margins, paddings = properties.paddings, rowSpan = rowSpan ?: properties.rowSpan, @@ -909,6 +931,7 @@ fun State.evaluate( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -945,6 +968,7 @@ fun Component.override( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, rowSpan: Int? = null, @@ -980,6 +1004,7 @@ fun Component.override( focus = valueOrNull(focus), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), paddings = valueOrNull(paddings), rowSpan = valueOrNull(rowSpan), @@ -1016,6 +1041,7 @@ fun Component.override( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param rowSpan Merges cells in a string of the [grid](div-grid.md) element. @@ -1052,6 +1078,7 @@ fun Component.defer( focus: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, rowSpan: ReferenceProperty? = null, @@ -1087,6 +1114,7 @@ fun Component.defer( focus = focus, height = height, id = id, + layoutProvider = layoutProvider, margins = margins, paddings = paddings, rowSpan = rowSpan, @@ -1146,6 +1174,7 @@ fun Component.evaluate( focus = null, height = null, id = null, + layoutProvider = null, margins = null, paddings = null, rowSpan = rowSpan, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Tabs.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Tabs.kt index 187c64c0d..1f6b965f9 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Tabs.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Tabs.kt @@ -51,6 +51,7 @@ class Tabs internal constructor( height = additive.height ?: properties.height, id = additive.id ?: properties.id, items = additive.items ?: properties.items, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, margins = additive.margins ?: properties.margins, paddings = additive.paddings ?: properties.paddings, restrictParentScroll = additive.restrictParentScroll ?: properties.restrictParentScroll, @@ -142,6 +143,10 @@ class Tabs internal constructor( * Tabs. Transition between tabs can be implemented using:
  • `div-action://set_current_item?id=&item=` — set the current tab with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next tab inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous tab inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. */ val items: Property>?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * External margins from the element stroke. */ @@ -261,6 +266,7 @@ class Tabs internal constructor( result.tryPutProperty("height", height) result.tryPutProperty("id", id) result.tryPutProperty("items", items) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("margins", margins) result.tryPutProperty("paddings", paddings) result.tryPutProperty("restrict_parent_scroll", restrictParentScroll) @@ -562,6 +568,7 @@ class Tabs internal constructor( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Tabs. Transition between tabs can be implemented using:

  • `div-action://set_current_item?id=&item=` — set the current tab with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next tab inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous tab inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param restrictParentScroll If the parameter is enabled, tabs won't transmit the scroll gesture to the parent element. @@ -604,6 +611,7 @@ fun DivScope.tabs( height: Size? = null, id: String? = null, items: List? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, restrictParentScroll: Boolean? = null, @@ -644,6 +652,7 @@ fun DivScope.tabs( height = valueOrNull(height), id = valueOrNull(id), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), paddings = valueOrNull(paddings), restrictParentScroll = valueOrNull(restrictParentScroll), @@ -686,6 +695,7 @@ fun DivScope.tabs( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Tabs. Transition between tabs can be implemented using:

  • `div-action://set_current_item?id=&item=` — set the current tab with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next tab inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous tab inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param restrictParentScroll If the parameter is enabled, tabs won't transmit the scroll gesture to the parent element. @@ -728,6 +738,7 @@ fun DivScope.tabsProps( height: Size? = null, id: String? = null, items: List? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, restrictParentScroll: Boolean? = null, @@ -767,6 +778,7 @@ fun DivScope.tabsProps( height = valueOrNull(height), id = valueOrNull(id), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), paddings = valueOrNull(paddings), restrictParentScroll = valueOrNull(restrictParentScroll), @@ -808,6 +820,7 @@ fun DivScope.tabsProps( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Tabs. Transition between tabs can be implemented using:

  • `div-action://set_current_item?id=&item=` — set the current tab with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next tab inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous tab inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param restrictParentScroll If the parameter is enabled, tabs won't transmit the scroll gesture to the parent element. @@ -850,6 +863,7 @@ fun TemplateScope.tabsRefs( height: ReferenceProperty? = null, id: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, restrictParentScroll: ReferenceProperty? = null, @@ -889,6 +903,7 @@ fun TemplateScope.tabsRefs( height = height, id = id, items = items, + layoutProvider = layoutProvider, margins = margins, paddings = paddings, restrictParentScroll = restrictParentScroll, @@ -930,6 +945,7 @@ fun TemplateScope.tabsRefs( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Tabs. Transition between tabs can be implemented using:

  • `div-action://set_current_item?id=&item=` — set the current tab with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next tab inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous tab inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param restrictParentScroll If the parameter is enabled, tabs won't transmit the scroll gesture to the parent element. @@ -972,6 +988,7 @@ fun Tabs.override( height: Size? = null, id: String? = null, items: List? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, restrictParentScroll: Boolean? = null, @@ -1012,6 +1029,7 @@ fun Tabs.override( height = valueOrNull(height) ?: properties.height, id = valueOrNull(id) ?: properties.id, items = valueOrNull(items) ?: properties.items, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, margins = valueOrNull(margins) ?: properties.margins, paddings = valueOrNull(paddings) ?: properties.paddings, restrictParentScroll = valueOrNull(restrictParentScroll) ?: properties.restrictParentScroll, @@ -1054,6 +1072,7 @@ fun Tabs.override( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Tabs. Transition between tabs can be implemented using:

  • `div-action://set_current_item?id=&item=` — set the current tab with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next tab inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous tab inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param restrictParentScroll If the parameter is enabled, tabs won't transmit the scroll gesture to the parent element. @@ -1096,6 +1115,7 @@ fun Tabs.defer( height: ReferenceProperty? = null, id: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, restrictParentScroll: ReferenceProperty? = null, @@ -1136,6 +1156,7 @@ fun Tabs.defer( height = height ?: properties.height, id = id ?: properties.id, items = items ?: properties.items, + layoutProvider = layoutProvider ?: properties.layoutProvider, margins = margins ?: properties.margins, paddings = paddings ?: properties.paddings, restrictParentScroll = restrictParentScroll ?: properties.restrictParentScroll, @@ -1208,6 +1229,7 @@ fun Tabs.evaluate( height = properties.height, id = properties.id, items = properties.items, + layoutProvider = properties.layoutProvider, margins = properties.margins, paddings = properties.paddings, restrictParentScroll = restrictParentScroll ?: properties.restrictParentScroll, @@ -1250,6 +1272,7 @@ fun Tabs.evaluate( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Tabs. Transition between tabs can be implemented using:

  • `div-action://set_current_item?id=&item=` — set the current tab with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next tab inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous tab inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param restrictParentScroll If the parameter is enabled, tabs won't transmit the scroll gesture to the parent element. @@ -1292,6 +1315,7 @@ fun Component.override( height: Size? = null, id: String? = null, items: List? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, paddings: EdgeInsets? = null, restrictParentScroll: Boolean? = null, @@ -1333,6 +1357,7 @@ fun Component.override( height = valueOrNull(height), id = valueOrNull(id), items = valueOrNull(items), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), paddings = valueOrNull(paddings), restrictParentScroll = valueOrNull(restrictParentScroll), @@ -1375,6 +1400,7 @@ fun Component.override( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param items Tabs. Transition between tabs can be implemented using:

  • `div-action://set_current_item?id=&item=` — set the current tab with an ordinal number `item` inside an element, with the specified `id`;
  • `div-action://set_next_item?id=[&overflow={clamp\|ring}]` — go to the next tab inside an element, with the specified `id`;
  • `div-action://set_previous_item?id=[&overflow={clamp\|ring}]` — go to the previous tab inside an element, with the specified `id`.
  • The optional `overflow` parameter is used to set navigation when the first or last element is reached:

  • `clamp` — transition will stop at the border element;
  • `ring` — go to the beginning or end, depending on the current element.
  • By default, `clamp`. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param paddings Internal margins from the element stroke. * @param restrictParentScroll If the parameter is enabled, tabs won't transmit the scroll gesture to the parent element. @@ -1417,6 +1443,7 @@ fun Component.defer( height: ReferenceProperty? = null, id: ReferenceProperty? = null, items: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, paddings: ReferenceProperty? = null, restrictParentScroll: ReferenceProperty? = null, @@ -1458,6 +1485,7 @@ fun Component.defer( height = height, id = id, items = items, + layoutProvider = layoutProvider, margins = margins, paddings = paddings, restrictParentScroll = restrictParentScroll, @@ -1531,6 +1559,7 @@ fun Component.evaluate( height = null, id = null, items = null, + layoutProvider = null, margins = null, paddings = null, restrictParentScroll = restrictParentScroll, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Text.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Text.kt index ebaad1830..25520d0ba 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Text.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Text.kt @@ -63,6 +63,7 @@ class Text internal constructor( height = additive.height ?: properties.height, id = additive.id ?: properties.id, images = additive.images ?: properties.images, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, letterSpacing = additive.letterSpacing ?: properties.letterSpacing, lineHeight = additive.lineHeight ?: properties.lineHeight, longtapActions = additive.longtapActions ?: properties.longtapActions, @@ -210,6 +211,10 @@ class Text internal constructor( * Images embedded in text. */ val images: Property>?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * Spacing between characters. * Default value: `0`. @@ -372,6 +377,7 @@ class Text internal constructor( result.tryPutProperty("height", height) result.tryPutProperty("id", id) result.tryPutProperty("images", images) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("letter_spacing", letterSpacing) result.tryPutProperty("line_height", lineHeight) result.tryPutProperty("longtap_actions", longtapActions) @@ -714,6 +720,7 @@ class Text internal constructor( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param images Images embedded in text. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. @@ -775,6 +782,7 @@ fun DivScope.text( height: Size? = null, id: String? = null, images: List? = null, + layoutProvider: LayoutProvider? = null, letterSpacing: Double? = null, lineHeight: Int? = null, longtapActions: List? = null, @@ -834,6 +842,7 @@ fun DivScope.text( height = valueOrNull(height), id = valueOrNull(id), images = valueOrNull(images), + layoutProvider = valueOrNull(layoutProvider), letterSpacing = valueOrNull(letterSpacing), lineHeight = valueOrNull(lineHeight), longtapActions = valueOrNull(longtapActions), @@ -894,6 +903,7 @@ fun DivScope.text( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param images Images embedded in text. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. @@ -955,6 +965,7 @@ fun DivScope.textProps( height: Size? = null, id: String? = null, images: List? = null, + layoutProvider: LayoutProvider? = null, letterSpacing: Double? = null, lineHeight: Int? = null, longtapActions: List? = null, @@ -1013,6 +1024,7 @@ fun DivScope.textProps( height = valueOrNull(height), id = valueOrNull(id), images = valueOrNull(images), + layoutProvider = valueOrNull(layoutProvider), letterSpacing = valueOrNull(letterSpacing), lineHeight = valueOrNull(lineHeight), longtapActions = valueOrNull(longtapActions), @@ -1072,6 +1084,7 @@ fun DivScope.textProps( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param images Images embedded in text. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. @@ -1133,6 +1146,7 @@ fun TemplateScope.textRefs( height: ReferenceProperty? = null, id: ReferenceProperty? = null, images: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, letterSpacing: ReferenceProperty? = null, lineHeight: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, @@ -1191,6 +1205,7 @@ fun TemplateScope.textRefs( height = height, id = id, images = images, + layoutProvider = layoutProvider, letterSpacing = letterSpacing, lineHeight = lineHeight, longtapActions = longtapActions, @@ -1250,6 +1265,7 @@ fun TemplateScope.textRefs( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param images Images embedded in text. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. @@ -1311,6 +1327,7 @@ fun Text.override( height: Size? = null, id: String? = null, images: List? = null, + layoutProvider: LayoutProvider? = null, letterSpacing: Double? = null, lineHeight: Int? = null, longtapActions: List? = null, @@ -1370,6 +1387,7 @@ fun Text.override( height = valueOrNull(height) ?: properties.height, id = valueOrNull(id) ?: properties.id, images = valueOrNull(images) ?: properties.images, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, letterSpacing = valueOrNull(letterSpacing) ?: properties.letterSpacing, lineHeight = valueOrNull(lineHeight) ?: properties.lineHeight, longtapActions = valueOrNull(longtapActions) ?: properties.longtapActions, @@ -1430,6 +1448,7 @@ fun Text.override( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param images Images embedded in text. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. @@ -1491,6 +1510,7 @@ fun Text.defer( height: ReferenceProperty? = null, id: ReferenceProperty? = null, images: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, letterSpacing: ReferenceProperty? = null, lineHeight: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, @@ -1550,6 +1570,7 @@ fun Text.defer( height = height ?: properties.height, id = id ?: properties.id, images = images ?: properties.images, + layoutProvider = layoutProvider ?: properties.layoutProvider, letterSpacing = letterSpacing ?: properties.letterSpacing, lineHeight = lineHeight ?: properties.lineHeight, longtapActions = longtapActions ?: properties.longtapActions, @@ -1668,6 +1689,7 @@ fun Text.evaluate( height = properties.height, id = properties.id, images = properties.images, + layoutProvider = properties.layoutProvider, letterSpacing = letterSpacing ?: properties.letterSpacing, lineHeight = lineHeight ?: properties.lineHeight, longtapActions = properties.longtapActions, @@ -1728,6 +1750,7 @@ fun Text.evaluate( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param images Images embedded in text. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. @@ -1789,6 +1812,7 @@ fun Component.override( height: Size? = null, id: String? = null, images: List? = null, + layoutProvider: LayoutProvider? = null, letterSpacing: Double? = null, lineHeight: Int? = null, longtapActions: List? = null, @@ -1849,6 +1873,7 @@ fun Component.override( height = valueOrNull(height), id = valueOrNull(id), images = valueOrNull(images), + layoutProvider = valueOrNull(layoutProvider), letterSpacing = valueOrNull(letterSpacing), lineHeight = valueOrNull(lineHeight), longtapActions = valueOrNull(longtapActions), @@ -1909,6 +1934,7 @@ fun Component.override( * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. * @param images Images embedded in text. + * @param layoutProvider Provides element real size values after a layout cycle. * @param letterSpacing Spacing between characters. * @param lineHeight Line spacing of the text. * @param longtapActions Action when long-clicking an element. Doesn't work on devices that don't support touch gestures. @@ -1970,6 +1996,7 @@ fun Component.defer( height: ReferenceProperty? = null, id: ReferenceProperty? = null, images: ReferenceProperty>? = null, + layoutProvider: ReferenceProperty? = null, letterSpacing: ReferenceProperty? = null, lineHeight: ReferenceProperty? = null, longtapActions: ReferenceProperty>? = null, @@ -2030,6 +2057,7 @@ fun Component.defer( height = height, id = id, images = images, + layoutProvider = layoutProvider, letterSpacing = letterSpacing, lineHeight = lineHeight, longtapActions = longtapActions, @@ -2149,6 +2177,7 @@ fun Component.evaluate( height = null, id = null, images = null, + layoutProvider = null, letterSpacing = letterSpacing, lineHeight = lineHeight, longtapActions = null, diff --git a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Video.kt b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Video.kt index 356113481..db252d562 100644 --- a/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Video.kt +++ b/json-builder/kotlin/src/generated/kotlin/divkit/dsl/Video.kt @@ -54,6 +54,7 @@ class Video internal constructor( focus = additive.focus ?: properties.focus, height = additive.height ?: properties.height, id = additive.id ?: properties.id, + layoutProvider = additive.layoutProvider ?: properties.layoutProvider, margins = additive.margins ?: properties.margins, muted = additive.muted ?: properties.muted, paddings = additive.paddings ?: properties.paddings, @@ -157,6 +158,10 @@ class Video internal constructor( * Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. */ val id: Property?, + /** + * Provides element real size values after a layout cycle. + */ + val layoutProvider: Property?, /** * External margins from the element stroke. */ @@ -278,6 +283,7 @@ class Video internal constructor( result.tryPutProperty("focus", focus) result.tryPutProperty("height", height) result.tryPutProperty("id", id) + result.tryPutProperty("layout_provider", layoutProvider) result.tryPutProperty("margins", margins) result.tryPutProperty("muted", muted) result.tryPutProperty("paddings", paddings) @@ -326,6 +332,7 @@ class Video internal constructor( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param muted This option mutes video. * @param paddings Internal margins from the element stroke. @@ -371,6 +378,7 @@ fun DivScope.video( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, muted: Boolean? = null, paddings: EdgeInsets? = null, @@ -415,6 +423,7 @@ fun DivScope.video( focus = valueOrNull(focus), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), muted = valueOrNull(muted), paddings = valueOrNull(paddings), @@ -461,6 +470,7 @@ fun DivScope.video( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param muted This option mutes video. * @param paddings Internal margins from the element stroke. @@ -506,6 +516,7 @@ fun DivScope.videoProps( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, muted: Boolean? = null, paddings: EdgeInsets? = null, @@ -549,6 +560,7 @@ fun DivScope.videoProps( focus = valueOrNull(focus), height = valueOrNull(height), id = valueOrNull(id), + layoutProvider = valueOrNull(layoutProvider), margins = valueOrNull(margins), muted = valueOrNull(muted), paddings = valueOrNull(paddings), @@ -594,6 +606,7 @@ fun DivScope.videoProps( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param muted This option mutes video. * @param paddings Internal margins from the element stroke. @@ -639,6 +652,7 @@ fun TemplateScope.videoRefs( focus: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, muted: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -682,6 +696,7 @@ fun TemplateScope.videoRefs( focus = focus, height = height, id = id, + layoutProvider = layoutProvider, margins = margins, muted = muted, paddings = paddings, @@ -727,6 +742,7 @@ fun TemplateScope.videoRefs( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param muted This option mutes video. * @param paddings Internal margins from the element stroke. @@ -772,6 +788,7 @@ fun Video.override( focus: Focus? = null, height: Size? = null, id: String? = null, + layoutProvider: LayoutProvider? = null, margins: EdgeInsets? = null, muted: Boolean? = null, paddings: EdgeInsets? = null, @@ -816,6 +833,7 @@ fun Video.override( focus = valueOrNull(focus) ?: properties.focus, height = valueOrNull(height) ?: properties.height, id = valueOrNull(id) ?: properties.id, + layoutProvider = valueOrNull(layoutProvider) ?: properties.layoutProvider, margins = valueOrNull(margins) ?: properties.margins, muted = valueOrNull(muted) ?: properties.muted, paddings = valueOrNull(paddings) ?: properties.paddings, @@ -862,6 +880,7 @@ fun Video.override( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param muted This option mutes video. * @param paddings Internal margins from the element stroke. @@ -907,6 +926,7 @@ fun Video.defer( focus: ReferenceProperty? = null, height: ReferenceProperty? = null, id: ReferenceProperty? = null, + layoutProvider: ReferenceProperty? = null, margins: ReferenceProperty? = null, muted: ReferenceProperty? = null, paddings: ReferenceProperty? = null, @@ -951,6 +971,7 @@ fun Video.defer( focus = focus ?: properties.focus, height = height ?: properties.height, id = id ?: properties.id, + layoutProvider = layoutProvider ?: properties.layoutProvider, margins = margins ?: properties.margins, muted = muted ?: properties.muted, paddings = paddings ?: properties.paddings, @@ -1027,6 +1048,7 @@ fun Video.evaluate( focus = properties.focus, height = properties.height, id = properties.id, + layoutProvider = properties.layoutProvider, margins = properties.margins, muted = muted ?: properties.muted, paddings = properties.paddings, @@ -1073,6 +1095,7 @@ fun Video.evaluate( * @param focus Parameters when focusing on an element or losing focus. * @param height Element height. For Android: if there is text in this or in a child element, specify height in `sp` to scale the element together with the text. To learn more about units of size measurement, see [Layout inside the card](../../layout). * @param id Element ID. It must be unique within the root element. It is used as `accessibilityIdentifier` on iOS. + * @param layoutProvider Provides element real size values after a layout cycle. * @param margins External margins from the element stroke. * @param muted This option mutes video. * @param paddings Internal margins from the element stroke. @@ -1118,6 +1141,7 @@ fun Component