Merge commit '7621e2f8dec938cf48181c8b10afc9b01f444e68' into beta

This commit is contained in:
Ilya Laktyushin
2025-12-06 02:17:48 +04:00
commit 8344b97e03
28070 changed files with 7995182 additions and 0 deletions
@@ -0,0 +1,57 @@
import Foundation
import UIKit
import AsyncDisplayKit
public final class ContextMenuControllerPresentationArguments {
public let sourceNodeAndRect: () -> (ASDisplayNode, CGRect, ASDisplayNode, CGRect)?
public let bounce: Bool
public init(sourceNodeAndRect: @escaping () -> (ASDisplayNode, CGRect, ASDisplayNode, CGRect)?, bounce: Bool = true) {
self.sourceNodeAndRect = sourceNodeAndRect
self.bounce = bounce
}
}
public protocol ContextMenuController: ViewController, StandalonePresentableController {
var centerHorizontally: Bool { get set }
var dismissed: (() -> Void)? { get set }
var dismissOnTap: ((UIView, CGPoint) -> Bool)? { get set }
}
public struct ContextMenuControllerArguments {
public var actions: [ContextMenuAction]
public var catchTapsOutside: Bool
public var hasHapticFeedback: Bool
public var blurred: Bool
public var skipCoordnateConversion: Bool
public var isDark: Bool
public init(actions: [ContextMenuAction], catchTapsOutside: Bool, hasHapticFeedback: Bool, blurred: Bool, skipCoordnateConversion: Bool, isDark: Bool) {
self.actions = actions
self.catchTapsOutside = catchTapsOutside
self.hasHapticFeedback = hasHapticFeedback
self.blurred = blurred
self.skipCoordnateConversion = skipCoordnateConversion
self.isDark = isDark
}
}
private var contextMenuControllerProvider: ((ContextMenuControllerArguments) -> ContextMenuController)?
public func setContextMenuControllerProvider(_ f: @escaping (ContextMenuControllerArguments) -> ContextMenuController) {
contextMenuControllerProvider = f
}
public func makeContextMenuController(actions: [ContextMenuAction], catchTapsOutside: Bool = false, hasHapticFeedback: Bool = false, blurred: Bool = false, isDark: Bool = true, skipCoordnateConversion: Bool = false) -> ContextMenuController {
guard let contextMenuControllerProvider = contextMenuControllerProvider else {
preconditionFailure()
}
return contextMenuControllerProvider(ContextMenuControllerArguments(
actions: actions,
catchTapsOutside: catchTapsOutside,
hasHapticFeedback: hasHapticFeedback,
blurred: blurred,
skipCoordnateConversion: skipCoordnateConversion,
isDark: isDark
))
}