Files
divkit/client/ios/DivKit/Extensions/DivExtensions.swift
T
pkurchatov 6d4e785be4 Applied Swift 5.9 format
7efc9a489061fda48036f567437a3d692591ff4a
2024-02-27 10:59:51 +03:00

64 lines
1.3 KiB
Swift

import Foundation
extension Div {
var children: [Div] {
switch self {
case let .divContainer(div): div.nonNilItems
case let .divGrid(div): div.nonNilItems
case let .divGallery(div): div.nonNilItems
case let .divPager(div): div.nonNilItems
case let .divTabs(div): div.items.map(\.div)
case let .divCustom(div): div.items ?? []
case let .divState(div): div.states.compactMap(\.div)
case .divGifImage,
.divImage,
.divIndicator,
.divInput,
.divSelect,
.divSeparator,
.divSlider,
.divVideo,
.divText:
[]
}
}
}
extension Div {
var isHorizontallyMatchParent: Bool {
switch value.width {
case .divMatchParentSize:
true
case .divFixedSize, .divWrapContentSize:
false
}
}
var isVerticallyMatchParent: Bool {
switch value.height {
case .divMatchParentSize:
true
case .divFixedSize, .divWrapContentSize:
false
}
}
}
extension Sequence<Div> {
var hasHorizontallyMatchParent: Bool {
contains { $0.isHorizontallyMatchParent }
}
var allHorizontallyMatchParent: Bool {
allSatisfy(\.isHorizontallyMatchParent)
}
var hasVerticallyMatchParent: Bool {
contains { $0.isVerticallyMatchParent }
}
var allVerticallyMatchParent: Bool {
allSatisfy(\.isVerticallyMatchParent)
}
}