//
//  FSPopoverViewDataSource.swift
//  FSPopoverView
//
//  Created by Sheng on 2022/4/3.
//  Copyright © 2023 Sheng. All rights reserved.
//

import UIKit

public protocol FSPopoverViewDataSource: AnyObject {
    
    func backgroundView(for popoverView: FSPopoverView) -> UIView?
    
    func contentView(for popoverView: FSPopoverView) -> UIView?
    
    func contentSize(for popoverView: FSPopoverView) -> CGSize
    
    func containerSafeAreaInsets(for popoverView: FSPopoverView) -> UIEdgeInsets
    
    func popoverViewShouldDismissOnTapOutside(_ popoverView: FSPopoverView) -> Bool
}

/// Optional
public extension FSPopoverViewDataSource {
    
    func backgroundView(for popoverView: FSPopoverView) -> UIView? {
        let view = UIView()
        view.backgroundColor = FSPopoverViewAppearance.shared.backgroundColor
        return view
    }
    
    func contentView(for popoverView: FSPopoverView) -> UIView? {
        return nil
    }
    
    func contentSize(for popoverView: FSPopoverView) -> CGSize {
        return .zero
    }
    
    func containerSafeAreaInsets(for popoverView: FSPopoverView) -> UIEdgeInsets {
        return .init(top: 18.0, left: 16.0, bottom: 18.0, right: 16.0)// 10,10,10,10
    }
    
    func popoverViewShouldDismissOnTapOutside(_ popoverView: FSPopoverView) -> Bool {
        return true
    }
}
