import Dependencies import Elementary import Vapor import VaporElementary extension Request { var isHtmxRequest: Bool { headers.contains(name: "hx-request") } func render( @HTMLBuilder html: () async throws -> C ) async rethrows -> HTMLResponse where C: Sendable { let html = try await html() return HTMLResponse { html } } // Render the html if we're an htmx request, otherwise render the main page. func render( mainPage: (C) async throws -> D, @HTMLBuilder html: () async throws -> C ) async rethrows -> HTMLResponse where C: Sendable { let html = try await html() guard isHtmxRequest else { return try await render { try await mainPage(html) } } return HTMLResponse { html } } }