mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
47 lines
1.4 KiB
Swift
47 lines
1.4 KiB
Swift
import LayoutKit
|
|
import VGSL
|
|
|
|
extension DivContainer {
|
|
func makeChildren<T>(
|
|
context: DivBlockModelingContext,
|
|
mappedBy modificator: (Div, Block, DivBlockModelingContext) -> T
|
|
) -> [T] {
|
|
if let itemBuilder {
|
|
return itemBuilder.makeBlocks(context: context, mappedBy: modificator)
|
|
}
|
|
|
|
let expressionResolver = context.expressionResolver
|
|
let orientation = resolveOrientation(expressionResolver)
|
|
let filtredItems = nonNilItems.filter {
|
|
guard resolveLayoutMode(expressionResolver) == .wrap else {
|
|
return true
|
|
}
|
|
if orientation == .vertical, $0.isHorizontallyMatchParent {
|
|
context.addWarning(
|
|
message: "Vertical DivContainer with wrap layout mode contains item with match_parent width"
|
|
)
|
|
return false
|
|
}
|
|
if orientation == .horizontal, $0.isVerticallyMatchParent {
|
|
context.addWarning(
|
|
message: "Horizontal DivContainer with wrap layout mode contains item with match_parent height"
|
|
)
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
return filtredItems.makeBlocks(
|
|
context: context.modifying(
|
|
parentVisibility: resolveVisibility(context.expressionResolver)
|
|
),
|
|
sizeModifier: DivContainerSizeModifier(
|
|
context: context,
|
|
container: self,
|
|
orientation: orientation
|
|
),
|
|
mappedBy: modificator
|
|
)
|
|
}
|
|
}
|