//
//  CopyableLable.swift
//  Tusker
//
//  Created by Shadowfacts on 2/4/23.
//  Copyright © 2023 Shadowfacts. All rights reserved.
//

import UIKit

class CopyableLable: UILabel {
    
    private var _editMenuInteraction: Any!
    @available(iOS 16.0, *)
    private var editMenuInteraction: UIEditMenuInteraction {
        get { _editMenuInteraction as! UIEditMenuInteraction }
        set { _editMenuInteraction = newValue }
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        commonInit()
    }
    
    private func commonInit() {
        if #available(iOS 16.0, *) {
            editMenuInteraction = UIEditMenuInteraction(delegate: nil)
            addInteraction(editMenuInteraction)
            isUserInteractionEnabled = true
            addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(longPressed)))
        }
    }
    
    override func copy(_ sender: Any?) {
        UIPasteboard.general.string = text
    }
    
    @available(iOS 16.0, *)
    @objc private func longPressed(_ recognizer: UILongPressGestureRecognizer) {
        if recognizer.state == .began {
            editMenuInteraction.presentEditMenu(with: UIEditMenuConfiguration(identifier: nil, sourcePoint: CGPoint(x: bounds.midX, y: bounds.midY)))
        }
    }
    
}
