Files
booster 79e475b9b9 Add debug extensions support
commit_hash:62b29d946fb9ad8cf4883f3908b5ae64b7d22ddc
2025-02-10 20:42:22 +03:00

62 lines
1.8 KiB
Swift

#if os(iOS)
import UIKit
#elseif os(macOS)
import AppKit
#endif
import VGSL
public struct DebugParams {
public struct Measurements: Sendable {
public let divDataParsingTime: TimeMeasure
public let renderTime: TimeMeasure
public let templateParsingTime: TimeMeasure
public init(
divDataParsingTime: TimeMeasure,
renderTime: TimeMeasure,
templateParsingTime: TimeMeasure
) {
self.divDataParsingTime = divDataParsingTime
self.renderTime = renderTime
self.templateParsingTime = templateParsingTime
}
}
public let isDebugInfoEnabled: Bool
public let processMeasurements: ResultAction<(cardId: DivCardID, measurements: Measurements)>
public let showDebugInfo: (ViewType) -> Void
public let errorCounterInsets: EdgeInsets
public let widcardExtensionHandlers: [DivExtensionHandler]
public init(
isDebugInfoEnabled: Bool = false,
processMeasurements: @escaping ResultAction<(cardId: DivCardID, measurements: Measurements)> =
{ _ in },
showDebugInfo: @escaping (ViewType) -> Void = DebugParams.showDebugInfo(_:),
errorCounterInsets: EdgeInsets = .zero,
widcardExtensionHandlers: [DivExtensionHandler] = []
) {
self.isDebugInfoEnabled = isDebugInfoEnabled
self.showDebugInfo = showDebugInfo
self.errorCounterInsets = errorCounterInsets
self.processMeasurements = processMeasurements
self.widcardExtensionHandlers = widcardExtensionHandlers
}
}
#if os(iOS)
extension DebugParams {
public static func showDebugInfo(_ view: ViewType) {
let window = (UIApplication.shared.connectedScenes.first as? UIWindowScene)?.windows.first
view.frame.center = window?.center ?? .zero
window?.addSubview(view)
}
}
#elseif os(macOS)
extension DebugParams {
public static func showDebugInfo(_: ViewType) {}
}
#endif