From aa151dbba2d134b02095d1581f1d60a746e15c69 Mon Sep 17 00:00:00 2001 From: Stephen B <158498287+StephenDev0@users.noreply.github.com> Date: Sun, 6 Jul 2025 20:01:18 -0400 Subject: [PATCH] Auto scroll --- StikJIT/JSSupport/RunJSView.swift | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/StikJIT/JSSupport/RunJSView.swift b/StikJIT/JSSupport/RunJSView.swift index 46c6004..dbe48c1 100644 --- a/StikJIT/JSSupport/RunJSView.swift +++ b/StikJIT/JSSupport/RunJSView.swift @@ -8,8 +8,7 @@ import SwiftUI import JavaScriptCore - -class RunJSViewModel : ObservableObject { +class RunJSViewModel: ObservableObject { var context: JSContext? @Published var logs: [String] = [] @Published var scriptName: String = "Script" @@ -67,20 +66,26 @@ class RunJSViewModel : ObservableObject { self.logs.append("Script Execution Completed.") } } - } -struct RunJSView : View { - @ObservedObject var model : RunJSViewModel - @State var webViewShow = false - +struct RunJSView: View { + @ObservedObject var model: RunJSViewModel + var body: some View { - List { - ForEach(model.logs, id: \.self) { logStr in - Text(logStr) + ScrollViewReader { proxy in + List { + ForEach(Array(model.logs.enumerated()), id: \.offset) { index, logStr in + Text(logStr) + .id(index) + } + } + .navigationTitle("Running \(model.scriptName)") + .onChange(of: model.logs.count) { newCount in + guard newCount > 0 else { return } + withAnimation { + proxy.scrollTo(newCount - 1, anchor: .bottom) + } } } - .navigationTitle("Running \(model.scriptName)") } - }