Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ let package = Package(
],
dependencies: [
.package(url: "https://github.com/colinc86/MathJaxSwift", from: "3.4.0"),
.package(url: "https://github.com/swhitty/SwiftDraw", branch: "0.20.1"),
.package(url: "https://github.com/swhitty/SwiftDraw", from: "0.20.1"),
.package(url: "https://github.com/Kitura/swift-html-entities", from: "4.0.1")
],
targets: [
Expand Down
2 changes: 1 addition & 1 deletion Sources/LaTeXSwiftUI/LaTeX.swift
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ public struct LaTeX: View {

public var body: some View {
VStack(spacing: 0) {
if renderer.rendered {
if renderer.rendered || renderer.syncRendered {
// If our blocks have been rendered, display them
bodyWithBlocks(renderer.blocks)
}
Expand Down
17 changes: 10 additions & 7 deletions Sources/LaTeXSwiftUI/Models/Renderer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,14 @@ internal class Renderer: ObservableObject {
/// Whether or not the view's blocks have been rendered.
@MainActor @Published var rendered: Bool = false

/// Whether or not the view's blocks have been rendered synchronously.
@MainActor var syncRendered: Bool = false

/// Whether or not the receiver is currently rendering.
@MainActor @Published var isRendering: Bool = false
@MainActor var isRendering: Bool = false

/// The rendered blocks.
@MainActor @Published var blocks: [ComponentBlock] = []
@MainActor var blocks: [ComponentBlock] = []

// MARK: Private properties

Expand Down Expand Up @@ -145,22 +148,21 @@ extension Renderer {
guard !isRendering else {
return []
}
guard !rendered else {
guard !rendered && !syncRendered else {
return blocks
}
isRendering = true

let texOptions = TeXInputProcessorOptions(processEscapes: processEscapes, errorMode: errorMode)
let renderedBlocks = render(
blocks = render(
blocks: parseBlocks(latex: latex, unencodeHTML: unencodeHTML, parsingMode: parsingMode),
font: font,
displayScale: displayScale,
renderingMode: renderingMode,
texOptions: texOptions)

blocks = renderedBlocks
isRendering = false
rendered = true
syncRendered = true
return blocks
}

Expand All @@ -187,7 +189,8 @@ extension Renderer {
) async {
let isRen = await isRendering
let ren = await rendered
guard !isRen && !ren else {
let renSync = await syncRendered
guard !isRen && !ren && !renSync else {
return
}
await MainActor.run {
Expand Down