Files
divkit/client/ios/DivKit/Extensions/DivExtensions.swift
T
ventywing 9b151d2a54 Fallback match_parent child size on wrap_content constrained
Новый подход с фолбеком размеров с match_parent на wrap_content constrained
2022-10-07 12:44:02 +03:00

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 }
}
}