// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved. import UIKit import SessionUIKit import SessionUtilitiesKit extension SessionCarouselView { public struct Info { let slices: [UIView] let copyOfFirstSlice: UIView? let copyOfLastSlice: UIView? let sliceSize: CGSize let sliceCount: Int let shouldShowPageControl: Bool let pageControlStyle: PageControlStyle let shouldShowArrows: Bool let arrowsSize: CGSize let cornerRadius: CGFloat // MARK: - Initialization init( slices: [UIView] = [], copyOfFirstSlice: UIView? = nil, copyOfLastSlice: UIView? = nil, sliceSize: CGSize = .zero, shouldShowPageControl: Bool = true, pageControlStyle: PageControlStyle, shouldShowArrows: Bool = true, arrowsSize: CGSize = .zero, cornerRadius: CGFloat = 0 ) { self.slices = slices self.copyOfFirstSlice = copyOfFirstSlice self.copyOfLastSlice = copyOfLastSlice self.sliceSize = sliceSize self.sliceCount = slices.count self.shouldShowPageControl = shouldShowPageControl && (self.sliceCount > 1) self.pageControlStyle = pageControlStyle self.shouldShowArrows = shouldShowArrows && (self.sliceCount > 1) self.arrowsSize = arrowsSize self.cornerRadius = cornerRadius } } public struct PageControlStyle { enum DotSize: CGFloat { case mini = 0.5 case medium = 0.8 case original = 1 } let height: CGFloat? let size: DotSize let backgroundColor: UIColor let bottomInset: CGFloat // MARK: - Initialization init( height: CGFloat? = nil, size: DotSize = .original, backgroundColor: UIColor = .clear, bottomInset: CGFloat = 0 ) { self.height = height self.size = size self.backgroundColor = backgroundColor self.bottomInset = bottomInset } } }