mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
9b151d2a54
Новый подход с фолбеком размеров с match_parent на wrap_content constrained
56 lines
1.3 KiB
Swift
56 lines
1.3 KiB
Swift
import Foundation
|
|
|
|
extension Div {
|
|
var children: [Div] {
|
|
switch self {
|
|
case let .divContainer(div): return div.items
|
|
case let .divGrid(div): return div.items
|
|
case let .divGallery(div): return div.items
|
|
case let .divPager(div): return div.items
|
|
case let .divTabs(div): return div.items.map(\.div)
|
|
case let .divCustom(div): return div.items ?? []
|
|
case let .divState(div): return div.states.compactMap(\.div)
|
|
case .divImage, .divGifImage, .divText, .divSlider, .divIndicator, .divSeparator, .divInput:
|
|
return []
|
|
}
|
|
}
|
|
}
|
|
|
|
extension Div {
|
|
var isHorizontallyMatchParent: Bool {
|
|
switch value.width {
|
|
case .divMatchParentSize:
|
|
return true
|
|
case .divFixedSize, .divWrapContentSize:
|
|
return false
|
|
}
|
|
}
|
|
|
|
var isVerticallyMatchParent: Bool {
|
|
switch value.height {
|
|
case .divMatchParentSize:
|
|
return true
|
|
case .divFixedSize, .divWrapContentSize:
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
|
|
extension Sequence where Element == Div {
|
|
var hasHorizontallyMatchParent: Bool {
|
|
contains { $0.isHorizontallyMatchParent }
|
|
}
|
|
|
|
var allHorizontallyMatchParent: Bool {
|
|
allSatisfy { $0.isHorizontallyMatchParent }
|
|
}
|
|
|
|
var hasVerticallyMatchParent: Bool {
|
|
contains { $0.isVerticallyMatchParent }
|
|
}
|
|
|
|
var allVerticallyMatchParent: Bool {
|
|
allSatisfy { $0.isVerticallyMatchParent }
|
|
}
|
|
}
|