import ComposableArchitecture import Dependencies import Foundation import ModificationBasic import SuggestionBasic import SwiftUI public enum PromptToCodeCustomization { public static var CustomizedUI: any PromptToCodeCustomizedUI = NoPromptToCodeCustomizedUI() } public struct PromptToCodeCustomizationContextWrapper: View { @State var context: AnyObject let content: (AnyObject) -> Content init(context: O, @ViewBuilder content: @escaping (O) -> Content) { self.context = context self.content = { context in content(context as! O) } } public var body: some View { content(context) } } public protocol PromptToCodeCustomizedUI { typealias PromptToCodeCustomizedViews = ( extraMenuItems: AnyView?, extraButtons: AnyView?, extraAcceptButtonVariants: AnyView?, inputField: AnyView? ) func callAsFunction( state: Shared, isInputFieldFocused: Binding, @ViewBuilder view: @escaping (PromptToCodeCustomizedViews) -> V ) -> PromptToCodeCustomizationContextWrapper } struct NoPromptToCodeCustomizedUI: PromptToCodeCustomizedUI { private class Context {} func callAsFunction( state: Shared, isInputFieldFocused: Binding, @ViewBuilder view: @escaping (PromptToCodeCustomizedViews) -> V ) -> PromptToCodeCustomizationContextWrapper { PromptToCodeCustomizationContextWrapper(context: Context()) { _ in view(( extraMenuItems: nil, extraButtons: nil, extraAcceptButtonVariants: nil, inputField: nil )) } } }