Compare commits
No commits in common. "058166e0280839bc65ec2df71635d177a96e8927" and "d8e93e481d8b8fe511b328f61084c3501dd08725" have entirely different histories.
058166e028
...
d8e93e481d
|
@ -12,13 +12,11 @@ import GeminiProtocol
|
||||||
|
|
||||||
public struct BrowserView: View {
|
public struct BrowserView: View {
|
||||||
let navigator: NavigationManager
|
let navigator: NavigationManager
|
||||||
let scrollingEnabled: Bool
|
|
||||||
@State var task: GeminiDataTask?
|
@State var task: GeminiDataTask?
|
||||||
@State var state: ViewState = .loading
|
@State var state: ViewState = .loading
|
||||||
|
|
||||||
public init(navigator: NavigationManager, scrollingEnabled: Bool = true) {
|
public init(navigator: NavigationManager) {
|
||||||
self.navigator = navigator
|
self.navigator = navigator
|
||||||
self.scrollingEnabled = scrollingEnabled
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public var body: some View {
|
public var body: some View {
|
||||||
|
@ -28,21 +26,18 @@ public struct BrowserView: View {
|
||||||
|
|
||||||
@ViewBuilder
|
@ViewBuilder
|
||||||
private var mainView: some View {
|
private var mainView: some View {
|
||||||
VStack {
|
|
||||||
switch state {
|
switch state {
|
||||||
case .loading:
|
case .loading:
|
||||||
Spacer()
|
|
||||||
loadingView
|
loadingView
|
||||||
.onAppear(perform: self.loadDocument)
|
.onAppear(perform: self.loadDocument)
|
||||||
Spacer()
|
|
||||||
case let .error(message):
|
case let .error(message):
|
||||||
|
VStack {
|
||||||
Text("An error occurred")
|
Text("An error occurred")
|
||||||
.font(.headline)
|
.font(.headline)
|
||||||
Text(message)
|
Text(message)
|
||||||
case let .document(doc):
|
|
||||||
DocumentView(document: doc, scrollingEnabled: scrollingEnabled, changeURL: navigator.changeURL)
|
|
||||||
Spacer()
|
|
||||||
}
|
}
|
||||||
|
case let .document(doc):
|
||||||
|
DocumentView(document: doc, changeURL: navigator.changeURL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,14 +77,9 @@ public struct BrowserView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
private func urlChanged(_ newValue: URL) {
|
private func urlChanged(_ newValue: URL) {
|
||||||
if case .loading = state {
|
|
||||||
task?.cancel()
|
|
||||||
loadDocument()
|
|
||||||
} else {
|
|
||||||
state = .loading
|
state = .loading
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
extension BrowserView {
|
extension BrowserView {
|
||||||
enum ViewState {
|
enum ViewState {
|
||||||
|
|
|
@ -24,29 +24,13 @@ public class NavigationManager: NSObject, ObservableObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
public func changeURL(_ url: URL) {
|
public func changeURL(_ url: URL) {
|
||||||
var components = URLComponents(url: url, resolvingAgainstBaseURL: false)!
|
guard url.scheme == "gemini" else {
|
||||||
if let scheme = url.scheme {
|
|
||||||
if scheme != "gemini" {
|
|
||||||
delegate?.loadNonGeminiURL(url)
|
delegate?.loadNonGeminiURL(url)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if components.port == 1965 {
|
|
||||||
components.port = nil
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
components.scheme = "gemini"
|
|
||||||
}
|
|
||||||
|
|
||||||
// Foundation parses bare hosts (e.g. `example.com`) as having no host and a path of `example.com`
|
|
||||||
if components.host == nil {
|
|
||||||
components.host = components.path
|
|
||||||
components.path = "/"
|
|
||||||
}
|
|
||||||
|
|
||||||
let url = components.url!
|
|
||||||
|
|
||||||
backStack.append(currentURL)
|
backStack.append(currentURL)
|
||||||
currentURL = url
|
currentURL = cannonicalizeURL(url)
|
||||||
forwardStack = []
|
forwardStack = []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,6 +39,14 @@ public class NavigationManager: NSObject, ObservableObject {
|
||||||
currentURL = url
|
currentURL = url
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func cannonicalizeURL(_ url: URL) -> URL {
|
||||||
|
var components = URLComponents(url: url, resolvingAgainstBaseURL: false)!
|
||||||
|
if components.scheme == "gemini" && components.port == 1965 {
|
||||||
|
components.port = nil
|
||||||
|
}
|
||||||
|
return components.url!
|
||||||
|
}
|
||||||
|
|
||||||
@objc public func back() {
|
@objc public func back() {
|
||||||
guard !backStack.isEmpty else { return }
|
guard !backStack.isEmpty else { return }
|
||||||
forwardStack.insert(currentURL, at: 0)
|
forwardStack.insert(currentURL, at: 0)
|
||||||
|
|
Before Width: | Height: | Size: 332 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 16 KiB |
|
@ -1,49 +1,41 @@
|
||||||
{
|
{
|
||||||
"images" : [
|
"images" : [
|
||||||
{
|
{
|
||||||
"filename" : "20@2x-1.png",
|
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "2x",
|
"scale" : "2x",
|
||||||
"size" : "20x20"
|
"size" : "20x20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "20@3x.png",
|
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "3x",
|
"scale" : "3x",
|
||||||
"size" : "20x20"
|
"size" : "20x20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "29@2x-1.png",
|
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "2x",
|
"scale" : "2x",
|
||||||
"size" : "29x29"
|
"size" : "29x29"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "29@3x.png",
|
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "3x",
|
"scale" : "3x",
|
||||||
"size" : "29x29"
|
"size" : "29x29"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "40@2x-1.png",
|
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "2x",
|
"scale" : "2x",
|
||||||
"size" : "40x40"
|
"size" : "40x40"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "40@3x.png",
|
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "3x",
|
"scale" : "3x",
|
||||||
"size" : "40x40"
|
"size" : "40x40"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "60@2x.png",
|
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "2x",
|
"scale" : "2x",
|
||||||
"size" : "60x60"
|
"size" : "60x60"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "60@3x.png",
|
|
||||||
"idiom" : "iphone",
|
"idiom" : "iphone",
|
||||||
"scale" : "3x",
|
"scale" : "3x",
|
||||||
"size" : "60x60"
|
"size" : "60x60"
|
||||||
|
@ -54,7 +46,6 @@
|
||||||
"size" : "20x20"
|
"size" : "20x20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "20@2x.png",
|
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "2x",
|
"scale" : "2x",
|
||||||
"size" : "20x20"
|
"size" : "20x20"
|
||||||
|
@ -65,7 +56,6 @@
|
||||||
"size" : "29x29"
|
"size" : "29x29"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "29@2x.png",
|
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "2x",
|
"scale" : "2x",
|
||||||
"size" : "29x29"
|
"size" : "29x29"
|
||||||
|
@ -76,7 +66,6 @@
|
||||||
"size" : "40x40"
|
"size" : "40x40"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "40@2x.png",
|
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "2x",
|
"scale" : "2x",
|
||||||
"size" : "40x40"
|
"size" : "40x40"
|
||||||
|
@ -87,19 +76,16 @@
|
||||||
"size" : "76x76"
|
"size" : "76x76"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "76@2x.png",
|
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "2x",
|
"scale" : "2x",
|
||||||
"size" : "76x76"
|
"size" : "76x76"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "83.5@2x.png",
|
|
||||||
"idiom" : "ipad",
|
"idiom" : "ipad",
|
||||||
"scale" : "2x",
|
"scale" : "2x",
|
||||||
"size" : "83.5x83.5"
|
"size" : "83.5x83.5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "1024.png",
|
|
||||||
"idiom" : "ios-marketing",
|
"idiom" : "ios-marketing",
|
||||||
"scale" : "1x",
|
"scale" : "1x",
|
||||||
"size" : "1024x1024"
|
"size" : "1024x1024"
|
||||||
|
|
|
@ -1,167 +0,0 @@
|
||||||
//
|
|
||||||
// BrowserViewController.swift
|
|
||||||
// Gemini-iOS
|
|
||||||
//
|
|
||||||
// Created by Shadowfacts on 9/28/20.
|
|
||||||
//
|
|
||||||
|
|
||||||
import UIKit
|
|
||||||
import SwiftUI
|
|
||||||
import BrowserCore
|
|
||||||
import Combine
|
|
||||||
|
|
||||||
class BrowserViewController: UIViewController, UIScrollViewDelegate {
|
|
||||||
|
|
||||||
let navigator: NavigationManager
|
|
||||||
|
|
||||||
private var scrollView: UIScrollView!
|
|
||||||
|
|
||||||
private var browserHost: UIHostingController<BrowserView>!
|
|
||||||
private var navBarHost: UIHostingController<NavigationBar>!
|
|
||||||
private var toolBarHost: UIHostingController<ToolBar>!
|
|
||||||
|
|
||||||
private var prevScrollViewContentOffset: CGPoint?
|
|
||||||
|
|
||||||
private var barAnimator: UIViewPropertyAnimator?
|
|
||||||
|
|
||||||
private var cancellables = [AnyCancellable]()
|
|
||||||
|
|
||||||
init(navigator: NavigationManager) {
|
|
||||||
self.navigator = navigator
|
|
||||||
|
|
||||||
super.init(nibName: nil, bundle: nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
|
||||||
fatalError("init(coder:) has not been implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
override func viewDidLoad() {
|
|
||||||
super.viewDidLoad()
|
|
||||||
|
|
||||||
view.backgroundColor = .systemBackground
|
|
||||||
|
|
||||||
scrollView = UIScrollView()
|
|
||||||
scrollView.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
scrollView.keyboardDismissMode = .interactive
|
|
||||||
view.addSubview(scrollView)
|
|
||||||
scrollView.delegate = self
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
||||||
scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
||||||
scrollView.topAnchor.constraint(equalTo: view.topAnchor),
|
|
||||||
scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
|
|
||||||
])
|
|
||||||
|
|
||||||
browserHost = UIHostingController(rootView: BrowserView(navigator: navigator, scrollingEnabled: false))
|
|
||||||
browserHost.view.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
scrollView.addSubview(browserHost.view)
|
|
||||||
addChild(browserHost)
|
|
||||||
browserHost.didMove(toParent: self)
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
scrollView.contentLayoutGuide.leadingAnchor.constraint(equalTo: browserHost.view.leadingAnchor),
|
|
||||||
scrollView.contentLayoutGuide.trailingAnchor.constraint(equalTo: browserHost.view.trailingAnchor),
|
|
||||||
scrollView.contentLayoutGuide.topAnchor.constraint(equalTo: browserHost.view.topAnchor),
|
|
||||||
scrollView.contentLayoutGuide.bottomAnchor.constraint(equalTo: browserHost.view.bottomAnchor),
|
|
||||||
browserHost.view.widthAnchor.constraint(equalTo: view.widthAnchor),
|
|
||||||
|
|
||||||
// make sure the browser host view is at least the screen height so the loading indicator appears centered
|
|
||||||
browserHost.view.heightAnchor.constraint(greaterThanOrEqualTo: view.heightAnchor),
|
|
||||||
])
|
|
||||||
|
|
||||||
navBarHost = UIHostingController(rootView: NavigationBar(navigator: navigator))
|
|
||||||
navBarHost.view.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
view.addSubview(navBarHost.view)
|
|
||||||
addChild(navBarHost)
|
|
||||||
navBarHost.didMove(toParent: self)
|
|
||||||
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
navBarHost.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
||||||
navBarHost.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
||||||
navBarHost.view.topAnchor.constraint(equalTo: view.topAnchor),
|
|
||||||
])
|
|
||||||
|
|
||||||
toolBarHost = UIHostingController(rootView: ToolBar(navigator: navigator, shareCurrentURL: {
|
|
||||||
let vc = UIActivityViewController(activityItems: [self.navigator.currentURL], applicationActivities: nil)
|
|
||||||
self.present(vc, animated: true)
|
|
||||||
}))
|
|
||||||
toolBarHost.view.translatesAutoresizingMaskIntoConstraints = false
|
|
||||||
view.addSubview(toolBarHost.view)
|
|
||||||
addChild(toolBarHost)
|
|
||||||
toolBarHost.didMove(toParent: self)
|
|
||||||
NSLayoutConstraint.activate([
|
|
||||||
toolBarHost.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
|
|
||||||
toolBarHost.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
|
|
||||||
toolBarHost.view.bottomAnchor.constraint(equalTo: view.bottomAnchor),
|
|
||||||
])
|
|
||||||
|
|
||||||
navigator.$currentURL
|
|
||||||
.sink { (_) in
|
|
||||||
self.scrollView.contentOffset = .zero
|
|
||||||
self.navBarHost.view.transform = .identity
|
|
||||||
self.toolBarHost.view.transform = .identity
|
|
||||||
}
|
|
||||||
.store(in: &cancellables)
|
|
||||||
}
|
|
||||||
|
|
||||||
override func viewDidLayoutSubviews() {
|
|
||||||
super.viewDidLayoutSubviews()
|
|
||||||
|
|
||||||
let insets = UIEdgeInsets(
|
|
||||||
top: navBarHost.view.bounds.height - view.safeAreaInsets.top,
|
|
||||||
left: 0,
|
|
||||||
bottom: toolBarHost.view.bounds.height - view.safeAreaInsets.bottom,
|
|
||||||
right: 0
|
|
||||||
)
|
|
||||||
scrollView.contentInset = insets
|
|
||||||
scrollView.scrollIndicatorInsets = insets
|
|
||||||
}
|
|
||||||
|
|
||||||
// MARK: - UIScrollViewDelegate
|
|
||||||
|
|
||||||
func scrollViewDidScroll(_ scrollView: UIScrollView) {
|
|
||||||
var scrollViewDelta: CGFloat = 0
|
|
||||||
if let prev = prevScrollViewContentOffset {
|
|
||||||
scrollViewDelta = scrollView.contentOffset.y - prev.y
|
|
||||||
}
|
|
||||||
prevScrollViewContentOffset = scrollView.contentOffset
|
|
||||||
|
|
||||||
// When certain state changes happen, the scroll view seems to "scroll" by top the safe area inset.
|
|
||||||
// It's not actually user scrolling, and this screws up our animation, so we ignore it.
|
|
||||||
guard abs(scrollViewDelta) != view.safeAreaInsets.top,
|
|
||||||
scrollViewDelta != 0,
|
|
||||||
scrollView.contentOffset.y > 0 else { return }
|
|
||||||
|
|
||||||
let barAnimator: UIViewPropertyAnimator
|
|
||||||
if let animator = self.barAnimator {
|
|
||||||
barAnimator = animator
|
|
||||||
} else {
|
|
||||||
navBarHost.view.transform = .identity
|
|
||||||
toolBarHost.view.transform = .identity
|
|
||||||
barAnimator = UIViewPropertyAnimator(duration: 0.2, curve: .linear) {
|
|
||||||
self.navBarHost.view.transform = CGAffineTransform(translationX: 0, y: -self.navBarHost.view.frame.height)
|
|
||||||
self.toolBarHost.view.transform = CGAffineTransform(translationX: 0, y: self.toolBarHost.view.frame.height)
|
|
||||||
}
|
|
||||||
if scrollViewDelta < 0 {
|
|
||||||
barAnimator.fractionComplete = 1
|
|
||||||
}
|
|
||||||
barAnimator.addCompletion { (_) in
|
|
||||||
self.barAnimator = nil
|
|
||||||
}
|
|
||||||
self.barAnimator = barAnimator
|
|
||||||
}
|
|
||||||
|
|
||||||
let progressDelta = scrollViewDelta / navBarHost.view.bounds.height
|
|
||||||
barAnimator.fractionComplete = max(0, min(1, barAnimator.fractionComplete + progressDelta))
|
|
||||||
}
|
|
||||||
|
|
||||||
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
|
|
||||||
if let barAnimator = barAnimator {
|
|
||||||
if barAnimator.fractionComplete < 0.5 {
|
|
||||||
barAnimator.isReversed = true
|
|
||||||
}
|
|
||||||
barAnimator.startAnimation()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -8,22 +8,13 @@
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
import BrowserCore
|
import BrowserCore
|
||||||
|
|
||||||
// This is not currently used as SwiftUI's ScrollView has no mechanism for detecting when it stops deceleraing,
|
|
||||||
// which is necessary to preven tthe bars from being left in a partially visible state.
|
|
||||||
struct ContentView: View {
|
struct ContentView: View {
|
||||||
@ObservedObject private var navigator: NavigationManager
|
@ObservedObject private var navigator: NavigationManager
|
||||||
@State private var urlFieldContents: String
|
@State private var urlFieldContents: String
|
||||||
@State private var showPreferencesSheet = false
|
@State private var showPreferencesSheet = false
|
||||||
private let shareCurrentURL: () -> Void
|
private let shareCurrentURL: () -> Void
|
||||||
@State private var prevScrollOffset: CGFloat = 0
|
|
||||||
@State private var scrollOffset: CGFloat = 0 {
|
@Environment(\.colorScheme) var colorScheme: ColorScheme
|
||||||
didSet {
|
|
||||||
prevScrollOffset = oldValue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@State private var barOffset: CGFloat = 0
|
|
||||||
@State private var navBarHeight: CGFloat = 0
|
|
||||||
@State private var toolBarHeight: CGFloat = 0
|
|
||||||
|
|
||||||
init(navigator: NavigationManager, shareCurrentURL: @escaping () -> Void) {
|
init(navigator: NavigationManager, shareCurrentURL: @escaping () -> Void) {
|
||||||
self.navigator = navigator
|
self.navigator = navigator
|
||||||
|
@ -32,57 +23,18 @@ struct ContentView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
ZStack {
|
|
||||||
GeometryReader { (outer: GeometryProxy) in
|
|
||||||
ScrollView(.vertical) {
|
|
||||||
Color.clear.frame(height: navBarHeight)
|
|
||||||
|
|
||||||
BrowserView(navigator: navigator, scrollingEnabled: false)
|
|
||||||
.background(GeometryReader { (inner: GeometryProxy) in
|
|
||||||
Color.clear.preference(key: ScrollOffsetPrefKey.self, value: -inner.frame(in: .global).minY + outer.frame(in: .global).minY)
|
|
||||||
})
|
|
||||||
|
|
||||||
Color.clear.frame(height: toolBarHeight)
|
|
||||||
}
|
|
||||||
.onPreferenceChange(ScrollOffsetPrefKey.self) {
|
|
||||||
scrollOffset = $0
|
|
||||||
let delta = scrollOffset - prevScrollOffset
|
|
||||||
|
|
||||||
// When certain state changes happen, the scroll view seems to "scroll" by the top safe area inset.
|
|
||||||
// It's not actually user scrolling, and this screws up our animation, so we ignore it.
|
|
||||||
guard abs(delta) != outer.safeAreaInsets.top else { return }
|
|
||||||
|
|
||||||
if delta != 0 {
|
|
||||||
barOffset += delta
|
|
||||||
}
|
|
||||||
|
|
||||||
barOffset = max(0, min(navBarHeight + outer.safeAreaInsets.top, barOffset))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
VStack(spacing: 0) {
|
VStack(spacing: 0) {
|
||||||
NavigationBar(navigator: navigator)
|
urlBar
|
||||||
.background(GeometryReader { (geom: GeometryProxy) in
|
|
||||||
Color.clear.preference(key: NavBarHeightPrefKey.self, value: geom.frame(in: .global).height)
|
|
||||||
})
|
|
||||||
.offset(y: -barOffset)
|
|
||||||
|
|
||||||
Spacer()
|
barBorder
|
||||||
|
|
||||||
ToolBar(navigator: navigator, shareCurrentURL: shareCurrentURL)
|
Spacer(minLength: 0)
|
||||||
.background(GeometryReader { (geom: GeometryProxy) in
|
BrowserView(navigator: navigator)
|
||||||
Color.clear.preference(key: ToolBarHeightPrefKey.self, value: geom.frame(in: .global).height)
|
Spacer(minLength: 0)
|
||||||
})
|
|
||||||
.offset(y: barOffset)
|
barBorder
|
||||||
}
|
|
||||||
.onPreferenceChange(NavBarHeightPrefKey.self) {
|
bottomBar
|
||||||
navBarHeight = $0
|
|
||||||
print("nav bar height: \($0)")
|
|
||||||
}
|
|
||||||
.onPreferenceChange(ToolBarHeightPrefKey.self) {
|
|
||||||
toolBarHeight = $0
|
|
||||||
print("tool bar height: \($0)")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.onAppear(perform: tweakAppearance)
|
.onAppear(perform: tweakAppearance)
|
||||||
.onReceive(navigator.$currentURL, perform: { (new) in
|
.onReceive(navigator.$currentURL, perform: { (new) in
|
||||||
|
@ -93,6 +45,70 @@ struct ContentView: View {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var barBorder: some View {
|
||||||
|
Rectangle()
|
||||||
|
.frame(height: 1)
|
||||||
|
.foregroundColor(Color(white: colorScheme == .dark ? 0.25 : 0.75))
|
||||||
|
}
|
||||||
|
|
||||||
|
private var urlBar: some View {
|
||||||
|
TextField("URL", text: $urlFieldContents, onCommit: commitURL)
|
||||||
|
.keyboardType(.URL)
|
||||||
|
.autocapitalization(.none)
|
||||||
|
.disableAutocorrection(true)
|
||||||
|
.textFieldStyle(RoundedBorderTextFieldStyle())
|
||||||
|
.padding([.leading, .trailing, .bottom])
|
||||||
|
}
|
||||||
|
|
||||||
|
private var bottomBar: some View {
|
||||||
|
HStack {
|
||||||
|
// use a group because this exceeds the 10 view limit :/
|
||||||
|
Group {
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
Button(action: navigator.back) {
|
||||||
|
Image(systemName: "arrow.left")
|
||||||
|
.font(.system(size: 24))
|
||||||
|
}
|
||||||
|
.disabled(navigator.backStack.isEmpty)
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
Button(action: navigator.forward) {
|
||||||
|
Image(systemName: "arrow.right")
|
||||||
|
.font(.system(size: 24))
|
||||||
|
}
|
||||||
|
.disabled(navigator.forwardStack.isEmpty)
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
Button(action: navigator.reload) {
|
||||||
|
Image(systemName: "arrow.clockwise")
|
||||||
|
.font(.system(size: 24))
|
||||||
|
}
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
Button(action: shareCurrentURL) {
|
||||||
|
Image(systemName: "square.and.arrow.up")
|
||||||
|
.font(.system(size: 24))
|
||||||
|
}
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
Button(action: {
|
||||||
|
showPreferencesSheet = true
|
||||||
|
}, label: {
|
||||||
|
Image(systemName: "gear")
|
||||||
|
.font(.system(size: 24))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
}
|
||||||
|
.padding(.top, 4)
|
||||||
|
}
|
||||||
|
|
||||||
private func tweakAppearance() {
|
private func tweakAppearance() {
|
||||||
UIScrollView.appearance().keyboardDismissMode = .interactive
|
UIScrollView.appearance().keyboardDismissMode = .interactive
|
||||||
}
|
}
|
||||||
|
@ -103,34 +119,6 @@ struct ContentView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fileprivate struct ScrollOffsetPrefKey: PreferenceKey {
|
|
||||||
typealias Value = CGFloat
|
|
||||||
static var defaultValue: CGFloat = 0
|
|
||||||
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
|
|
||||||
value += nextValue()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fileprivate struct NavBarHeightPrefKey: PreferenceKey {
|
|
||||||
typealias Value = CGFloat
|
|
||||||
static var defaultValue: CGFloat = 0
|
|
||||||
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
|
|
||||||
value += nextValue()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fileprivate struct ToolBarHeightPrefKey: PreferenceKey {
|
|
||||||
typealias Value = CGFloat
|
|
||||||
static var defaultValue: CGFloat = 0
|
|
||||||
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
|
|
||||||
value += nextValue()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fileprivate enum ScrollDirection {
|
|
||||||
case up, down, none
|
|
||||||
}
|
|
||||||
|
|
||||||
struct ContentView_Previews: PreviewProvider {
|
struct ContentView_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
ContentView(navigator: NavigationManager(url: URL(string: "gemini://localhost/overview.gmi")!), shareCurrentURL: {})
|
ContentView(navigator: NavigationManager(url: URL(string: "gemini://localhost/overview.gmi")!), shareCurrentURL: {})
|
||||||
|
|
|
@ -4,8 +4,6 @@
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
<key>CFBundleDisplayName</key>
|
|
||||||
<string>Rocketeer</string>
|
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>$(EXECUTABLE_NAME)</string>
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
|
@ -17,7 +15,7 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>$(MARKETING_VERSION)</string>
|
<string>1.0</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
//
|
|
||||||
// NavigationBar.swift
|
|
||||||
// Gemini-iOS
|
|
||||||
//
|
|
||||||
// Created by Shadowfacts on 9/28/20.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
import BrowserCore
|
|
||||||
|
|
||||||
struct NavigationBar: View {
|
|
||||||
@ObservedObject var navigator: NavigationManager
|
|
||||||
@State private var urlFieldContents: String
|
|
||||||
|
|
||||||
@Environment(\.colorScheme) var colorScheme: ColorScheme
|
|
||||||
|
|
||||||
init(navigator: NavigationManager) {
|
|
||||||
self.navigator = navigator
|
|
||||||
self._urlFieldContents = State(initialValue: navigator.currentURL.absoluteString)
|
|
||||||
}
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
VStack(spacing: 0) {
|
|
||||||
TextField("URL", text: $urlFieldContents, onCommit: commitURL)
|
|
||||||
.keyboardType(.URL)
|
|
||||||
.autocapitalization(.none)
|
|
||||||
.disableAutocorrection(true)
|
|
||||||
.textFieldStyle(RoundedBorderTextFieldStyle())
|
|
||||||
.padding([.leading, .trailing, .bottom])
|
|
||||||
|
|
||||||
Rectangle()
|
|
||||||
.frame(height: 1)
|
|
||||||
.foregroundColor(Color(white: colorScheme == .dark ? 0.25 : 0.75))
|
|
||||||
}
|
|
||||||
.background(Color(UIColor.systemBackground).edgesIgnoringSafeArea(.top))
|
|
||||||
.onReceive(navigator.$currentURL) { (newURL) in
|
|
||||||
urlFieldContents = newURL.absoluteString
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private func commitURL() {
|
|
||||||
guard let url = URL(string: urlFieldContents) else { return }
|
|
||||||
navigator.changeURL(url)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct NavigationBar_Previews: PreviewProvider {
|
|
||||||
static var previews: some View {
|
|
||||||
NavigationBar(navigator: NavigationManager(url: URL(string: "gemini://localhost/overview.gmi")!))
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -25,25 +25,20 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
|
||||||
|
|
||||||
if let context = connectionOptions.urlContexts.first {
|
if let context = connectionOptions.urlContexts.first {
|
||||||
initialURL = context.url
|
initialURL = context.url
|
||||||
} else {
|
|
||||||
if ProcessInfo.processInfo.environment.keys.contains("DEFAULT_URL") {
|
|
||||||
initialURL = URL(string: ProcessInfo.processInfo.environment["DEFAULT_URL"]!)!
|
|
||||||
} else {
|
} else {
|
||||||
initialURL = URL(string: "gemini://gemini.circumlunar.space/")!
|
initialURL = URL(string: "gemini://gemini.circumlunar.space/")!
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
navigationManager = NavigationManager(url: initialURL)
|
navigationManager = NavigationManager(url: initialURL)
|
||||||
navigationManager.delegate = self
|
navigationManager.delegate = self
|
||||||
|
|
||||||
// Create the SwiftUI view that provides the window contents.
|
// Create the SwiftUI view that provides the window contents.
|
||||||
// let contentView = ContentView(navigator: navigationManager, shareCurrentURL: self.shareCurrentURL)
|
let contentView = ContentView(navigator: navigationManager, shareCurrentURL: self.shareCurrentURL)
|
||||||
|
|
||||||
// Use a UIHostingController as window root view controller.
|
// Use a UIHostingController as window root view controller.
|
||||||
if let windowScene = scene as? UIWindowScene {
|
if let windowScene = scene as? UIWindowScene {
|
||||||
let window = UIWindow(windowScene: windowScene)
|
let window = UIWindow(windowScene: windowScene)
|
||||||
// window.rootViewController = UIHostingController(rootView: contentView)
|
window.rootViewController = UIHostingController(rootView: contentView)
|
||||||
window.rootViewController = BrowserViewController(navigator: navigationManager)
|
|
||||||
self.window = window
|
self.window = window
|
||||||
window.makeKeyAndVisible()
|
window.makeKeyAndVisible()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
//
|
|
||||||
// ToolBar.swift
|
|
||||||
// Gemini-iOS
|
|
||||||
//
|
|
||||||
// Created by Shadowfacts on 9/28/20.
|
|
||||||
//
|
|
||||||
|
|
||||||
import SwiftUI
|
|
||||||
import BrowserCore
|
|
||||||
|
|
||||||
struct ToolBar: View {
|
|
||||||
@ObservedObject var navigator: NavigationManager
|
|
||||||
let shareCurrentURL: () -> Void
|
|
||||||
@State private var showPreferencesSheet = false
|
|
||||||
|
|
||||||
@Environment(\.colorScheme) var colorScheme: ColorScheme
|
|
||||||
|
|
||||||
var body: some View {
|
|
||||||
VStack(spacing: 4) {
|
|
||||||
Rectangle()
|
|
||||||
.frame(height: 1)
|
|
||||||
.foregroundColor(Color(white: colorScheme == .dark ? 0.25 : 0.75))
|
|
||||||
|
|
||||||
HStack {
|
|
||||||
// use a group because this exceeds the 10 view limit :/
|
|
||||||
Group {
|
|
||||||
Spacer()
|
|
||||||
|
|
||||||
Button(action: navigator.back) {
|
|
||||||
Image(systemName: "arrow.left")
|
|
||||||
.font(.system(size: 24))
|
|
||||||
}
|
|
||||||
.disabled(navigator.backStack.isEmpty)
|
|
||||||
|
|
||||||
Spacer()
|
|
||||||
|
|
||||||
Button(action: navigator.forward) {
|
|
||||||
Image(systemName: "arrow.right")
|
|
||||||
.font(.system(size: 24))
|
|
||||||
}
|
|
||||||
.disabled(navigator.forwardStack.isEmpty)
|
|
||||||
|
|
||||||
Spacer()
|
|
||||||
|
|
||||||
Button(action: navigator.reload) {
|
|
||||||
Image(systemName: "arrow.clockwise")
|
|
||||||
.font(.system(size: 24))
|
|
||||||
}
|
|
||||||
|
|
||||||
Spacer()
|
|
||||||
|
|
||||||
Button(action: shareCurrentURL) {
|
|
||||||
Image(systemName: "square.and.arrow.up")
|
|
||||||
.font(.system(size: 24))
|
|
||||||
}
|
|
||||||
|
|
||||||
Spacer()
|
|
||||||
|
|
||||||
Button(action: {
|
|
||||||
showPreferencesSheet = true
|
|
||||||
}, label: {
|
|
||||||
Image(systemName: "gear")
|
|
||||||
.font(.system(size: 24))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
Spacer()
|
|
||||||
}
|
|
||||||
|
|
||||||
Spacer(minLength: 4)
|
|
||||||
}
|
|
||||||
.background(Color(UIColor.systemBackground).edgesIgnoringSafeArea(.bottom))
|
|
||||||
.sheet(isPresented: $showPreferencesSheet, content: {
|
|
||||||
PreferencesView(presented: $showPreferencesSheet)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct ToolBar_Previews: PreviewProvider {
|
|
||||||
static var previews: some View {
|
|
||||||
ToolBar(navigator: NavigationManager(url: URL(string: "gemini://localhost/overview.gmi")!), shareCurrentURL: {})
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -42,9 +42,6 @@
|
||||||
D664673A24BD0B8E00B0B741 /* Fonts.swift in Sources */ = {isa = PBXBuildFile; fileRef = D664673924BD0B8E00B0B741 /* Fonts.swift */; };
|
D664673A24BD0B8E00B0B741 /* Fonts.swift in Sources */ = {isa = PBXBuildFile; fileRef = D664673924BD0B8E00B0B741 /* Fonts.swift */; };
|
||||||
D691A64E25217C6F00348C4B /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = D691A64D25217C6F00348C4B /* Preferences.swift */; };
|
D691A64E25217C6F00348C4B /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = D691A64D25217C6F00348C4B /* Preferences.swift */; };
|
||||||
D691A66725217FD800348C4B /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D691A66625217FD800348C4B /* PreferencesView.swift */; };
|
D691A66725217FD800348C4B /* PreferencesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D691A66625217FD800348C4B /* PreferencesView.swift */; };
|
||||||
D691A6772522382E00348C4B /* BrowserViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D691A6762522382E00348C4B /* BrowserViewController.swift */; };
|
|
||||||
D691A68725223A4700348C4B /* NavigationBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D691A68625223A4600348C4B /* NavigationBar.swift */; };
|
|
||||||
D691A6A0252242FC00348C4B /* ToolBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D691A69F252242FC00348C4B /* ToolBar.swift */; };
|
|
||||||
D69F00AC24BE9DD300E37622 /* GeminiDataTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = D69F00AB24BE9DD300E37622 /* GeminiDataTask.swift */; };
|
D69F00AC24BE9DD300E37622 /* GeminiDataTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = D69F00AB24BE9DD300E37622 /* GeminiDataTask.swift */; };
|
||||||
D69F00AE24BEA29100E37622 /* GeminiResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D69F00AD24BEA29100E37622 /* GeminiResponse.swift */; };
|
D69F00AE24BEA29100E37622 /* GeminiResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D69F00AD24BEA29100E37622 /* GeminiResponse.swift */; };
|
||||||
D6E1529824BFAAA400FDF9D3 /* BrowserWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E1529624BFAAA400FDF9D3 /* BrowserWindowController.swift */; };
|
D6E1529824BFAAA400FDF9D3 /* BrowserWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6E1529624BFAAA400FDF9D3 /* BrowserWindowController.swift */; };
|
||||||
|
@ -145,49 +142,21 @@
|
||||||
remoteGlobalIDString = D62664A724BBF26A00DF9B88;
|
remoteGlobalIDString = D62664A724BBF26A00DF9B88;
|
||||||
remoteInfo = GeminiFormat;
|
remoteInfo = GeminiFormat;
|
||||||
};
|
};
|
||||||
D68543F72522DEF0004C4AE0 /* PBXContainerItemProxy */ = {
|
D6E152B824BFFE2400FDF9D3 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
|
||||||
containerPortal = D626645324BBF1C200DF9B88 /* Project object */;
|
|
||||||
proxyType = 1;
|
|
||||||
remoteGlobalIDString = D6E152CF24C0007200FDF9D3;
|
|
||||||
remoteInfo = BrowserCore;
|
|
||||||
};
|
|
||||||
D68543F92522DEF3004C4AE0 /* PBXContainerItemProxy */ = {
|
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = D626645324BBF1C200DF9B88 /* Project object */;
|
containerPortal = D626645324BBF1C200DF9B88 /* Project object */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = D62664A724BBF26A00DF9B88;
|
remoteGlobalIDString = D62664A724BBF26A00DF9B88;
|
||||||
remoteInfo = GeminiFormat;
|
remoteInfo = GeminiFormat;
|
||||||
};
|
};
|
||||||
D68543FB2522DEF5004C4AE0 /* PBXContainerItemProxy */ = {
|
D6E152C524C0004C00FDF9D3 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = D626645324BBF1C200DF9B88 /* Project object */;
|
containerPortal = D626645324BBF1C200DF9B88 /* Project object */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = D626647624BBF22E00DF9B88;
|
remoteGlobalIDString = D626647624BBF22E00DF9B88;
|
||||||
remoteInfo = GeminiProtocol;
|
remoteInfo = GeminiProtocol;
|
||||||
};
|
};
|
||||||
D68543FD2522DEF7004C4AE0 /* PBXContainerItemProxy */ = {
|
D6E152C924C0004C00FDF9D3 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
|
||||||
containerPortal = D626645324BBF1C200DF9B88 /* Project object */;
|
|
||||||
proxyType = 1;
|
|
||||||
remoteGlobalIDString = D62664CD24BC081B00DF9B88;
|
|
||||||
remoteInfo = GeminiRenderer;
|
|
||||||
};
|
|
||||||
D68544062522DF36004C4AE0 /* PBXContainerItemProxy */ = {
|
|
||||||
isa = PBXContainerItemProxy;
|
|
||||||
containerPortal = D626645324BBF1C200DF9B88 /* Project object */;
|
|
||||||
proxyType = 1;
|
|
||||||
remoteGlobalIDString = D62664A724BBF26A00DF9B88;
|
|
||||||
remoteInfo = GeminiFormat;
|
|
||||||
};
|
|
||||||
D68544082522DF39004C4AE0 /* PBXContainerItemProxy */ = {
|
|
||||||
isa = PBXContainerItemProxy;
|
|
||||||
containerPortal = D626645324BBF1C200DF9B88 /* Project object */;
|
|
||||||
proxyType = 1;
|
|
||||||
remoteGlobalIDString = D626647624BBF22E00DF9B88;
|
|
||||||
remoteInfo = GeminiProtocol;
|
|
||||||
};
|
|
||||||
D685440A2522DF3C004C4AE0 /* PBXContainerItemProxy */ = {
|
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = D626645324BBF1C200DF9B88 /* Project object */;
|
containerPortal = D626645324BBF1C200DF9B88 /* Project object */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
|
@ -215,6 +184,13 @@
|
||||||
remoteGlobalIDString = D6E152CF24C0007200FDF9D3;
|
remoteGlobalIDString = D6E152CF24C0007200FDF9D3;
|
||||||
remoteInfo = BrowserCore;
|
remoteInfo = BrowserCore;
|
||||||
};
|
};
|
||||||
|
D6E152EF24C0009300FDF9D3 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = D626645324BBF1C200DF9B88 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = D6E152CF24C0007200FDF9D3;
|
||||||
|
remoteInfo = BrowserCore;
|
||||||
|
};
|
||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
@ -300,9 +276,6 @@
|
||||||
D664673924BD0B8E00B0B741 /* Fonts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fonts.swift; sourceTree = "<group>"; };
|
D664673924BD0B8E00B0B741 /* Fonts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fonts.swift; sourceTree = "<group>"; };
|
||||||
D691A64D25217C6F00348C4B /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = "<group>"; };
|
D691A64D25217C6F00348C4B /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = "<group>"; };
|
||||||
D691A66625217FD800348C4B /* PreferencesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = "<group>"; };
|
D691A66625217FD800348C4B /* PreferencesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesView.swift; sourceTree = "<group>"; };
|
||||||
D691A6762522382E00348C4B /* BrowserViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowserViewController.swift; sourceTree = "<group>"; };
|
|
||||||
D691A68625223A4600348C4B /* NavigationBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBar.swift; sourceTree = "<group>"; };
|
|
||||||
D691A69F252242FC00348C4B /* ToolBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolBar.swift; sourceTree = "<group>"; };
|
|
||||||
D69F00AB24BE9DD300E37622 /* GeminiDataTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeminiDataTask.swift; sourceTree = "<group>"; };
|
D69F00AB24BE9DD300E37622 /* GeminiDataTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeminiDataTask.swift; sourceTree = "<group>"; };
|
||||||
D69F00AD24BEA29100E37622 /* GeminiResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeminiResponse.swift; sourceTree = "<group>"; };
|
D69F00AD24BEA29100E37622 /* GeminiResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeminiResponse.swift; sourceTree = "<group>"; };
|
||||||
D69F00AF24BEA84D00E37622 /* NavigationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationManager.swift; sourceTree = "<group>"; };
|
D69F00AF24BEA84D00E37622 /* NavigationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationManager.swift; sourceTree = "<group>"; };
|
||||||
|
@ -553,10 +526,7 @@
|
||||||
children = (
|
children = (
|
||||||
D6E152A424BFFDF500FDF9D3 /* AppDelegate.swift */,
|
D6E152A424BFFDF500FDF9D3 /* AppDelegate.swift */,
|
||||||
D6E152A624BFFDF500FDF9D3 /* SceneDelegate.swift */,
|
D6E152A624BFFDF500FDF9D3 /* SceneDelegate.swift */,
|
||||||
D691A6762522382E00348C4B /* BrowserViewController.swift */,
|
|
||||||
D6E152A824BFFDF500FDF9D3 /* ContentView.swift */,
|
D6E152A824BFFDF500FDF9D3 /* ContentView.swift */,
|
||||||
D691A68625223A4600348C4B /* NavigationBar.swift */,
|
|
||||||
D691A69F252242FC00348C4B /* ToolBar.swift */,
|
|
||||||
D691A64D25217C6F00348C4B /* Preferences.swift */,
|
D691A64D25217C6F00348C4B /* Preferences.swift */,
|
||||||
D691A66625217FD800348C4B /* PreferencesView.swift */,
|
D691A66625217FD800348C4B /* PreferencesView.swift */,
|
||||||
D6E152AA24BFFDF600FDF9D3 /* Assets.xcassets */,
|
D6E152AA24BFFDF600FDF9D3 /* Assets.xcassets */,
|
||||||
|
@ -780,10 +750,10 @@
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
D68543FE2522DEF7004C4AE0 /* PBXTargetDependency */,
|
D6E152B924BFFE2400FDF9D3 /* PBXTargetDependency */,
|
||||||
D68543FC2522DEF5004C4AE0 /* PBXTargetDependency */,
|
D6E152C624C0004C00FDF9D3 /* PBXTargetDependency */,
|
||||||
D68543FA2522DEF3004C4AE0 /* PBXTargetDependency */,
|
D6E152CA24C0004C00FDF9D3 /* PBXTargetDependency */,
|
||||||
D68543F82522DEF0004C4AE0 /* PBXTargetDependency */,
|
D6E152F024C0009300FDF9D3 /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = "Gemini-iOS";
|
name = "Gemini-iOS";
|
||||||
productName = "Gemini-iOS";
|
productName = "Gemini-iOS";
|
||||||
|
@ -802,9 +772,6 @@
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
D685440B2522DF3C004C4AE0 /* PBXTargetDependency */,
|
|
||||||
D68544092522DF39004C4AE0 /* PBXTargetDependency */,
|
|
||||||
D68544072522DF36004C4AE0 /* PBXTargetDependency */,
|
|
||||||
);
|
);
|
||||||
name = BrowserCore;
|
name = BrowserCore;
|
||||||
productName = BrowserCore;
|
productName = BrowserCore;
|
||||||
|
@ -837,7 +804,7 @@
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastSwiftUpdateCheck = 1200;
|
LastSwiftUpdateCheck = 1200;
|
||||||
LastUpgradeCheck = 1220;
|
LastUpgradeCheck = 1200;
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
D626645A24BBF1C200DF9B88 = {
|
D626645A24BBF1C200DF9B88 = {
|
||||||
CreatedOnToolsVersion = 12.0;
|
CreatedOnToolsVersion = 12.0;
|
||||||
|
@ -1061,11 +1028,8 @@
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
D691A66725217FD800348C4B /* PreferencesView.swift in Sources */,
|
D691A66725217FD800348C4B /* PreferencesView.swift in Sources */,
|
||||||
D691A6772522382E00348C4B /* BrowserViewController.swift in Sources */,
|
|
||||||
D6E152A524BFFDF500FDF9D3 /* AppDelegate.swift in Sources */,
|
D6E152A524BFFDF500FDF9D3 /* AppDelegate.swift in Sources */,
|
||||||
D691A6A0252242FC00348C4B /* ToolBar.swift in Sources */,
|
|
||||||
D6E152A724BFFDF500FDF9D3 /* SceneDelegate.swift in Sources */,
|
D6E152A724BFFDF500FDF9D3 /* SceneDelegate.swift in Sources */,
|
||||||
D691A68725223A4700348C4B /* NavigationBar.swift in Sources */,
|
|
||||||
D691A64E25217C6F00348C4B /* Preferences.swift in Sources */,
|
D691A64E25217C6F00348C4B /* Preferences.swift in Sources */,
|
||||||
D6E152A924BFFDF500FDF9D3 /* ContentView.swift in Sources */,
|
D6E152A924BFFDF500FDF9D3 /* ContentView.swift in Sources */,
|
||||||
);
|
);
|
||||||
|
@ -1141,40 +1105,20 @@
|
||||||
target = D62664A724BBF26A00DF9B88 /* GeminiFormat */;
|
target = D62664A724BBF26A00DF9B88 /* GeminiFormat */;
|
||||||
targetProxy = D62664F224BC0D7700DF9B88 /* PBXContainerItemProxy */;
|
targetProxy = D62664F224BC0D7700DF9B88 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
D68543F82522DEF0004C4AE0 /* PBXTargetDependency */ = {
|
D6E152B924BFFE2400FDF9D3 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
|
||||||
target = D6E152CF24C0007200FDF9D3 /* BrowserCore */;
|
|
||||||
targetProxy = D68543F72522DEF0004C4AE0 /* PBXContainerItemProxy */;
|
|
||||||
};
|
|
||||||
D68543FA2522DEF3004C4AE0 /* PBXTargetDependency */ = {
|
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
target = D62664A724BBF26A00DF9B88 /* GeminiFormat */;
|
target = D62664A724BBF26A00DF9B88 /* GeminiFormat */;
|
||||||
targetProxy = D68543F92522DEF3004C4AE0 /* PBXContainerItemProxy */;
|
targetProxy = D6E152B824BFFE2400FDF9D3 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
D68543FC2522DEF5004C4AE0 /* PBXTargetDependency */ = {
|
D6E152C624C0004C00FDF9D3 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
target = D626647624BBF22E00DF9B88 /* GeminiProtocol */;
|
target = D626647624BBF22E00DF9B88 /* GeminiProtocol */;
|
||||||
targetProxy = D68543FB2522DEF5004C4AE0 /* PBXContainerItemProxy */;
|
targetProxy = D6E152C524C0004C00FDF9D3 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
D68543FE2522DEF7004C4AE0 /* PBXTargetDependency */ = {
|
D6E152CA24C0004C00FDF9D3 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
target = D62664CD24BC081B00DF9B88 /* GeminiRenderer */;
|
target = D62664CD24BC081B00DF9B88 /* GeminiRenderer */;
|
||||||
targetProxy = D68543FD2522DEF7004C4AE0 /* PBXContainerItemProxy */;
|
targetProxy = D6E152C924C0004C00FDF9D3 /* PBXContainerItemProxy */;
|
||||||
};
|
|
||||||
D68544072522DF36004C4AE0 /* PBXTargetDependency */ = {
|
|
||||||
isa = PBXTargetDependency;
|
|
||||||
target = D62664A724BBF26A00DF9B88 /* GeminiFormat */;
|
|
||||||
targetProxy = D68544062522DF36004C4AE0 /* PBXContainerItemProxy */;
|
|
||||||
};
|
|
||||||
D68544092522DF39004C4AE0 /* PBXTargetDependency */ = {
|
|
||||||
isa = PBXTargetDependency;
|
|
||||||
target = D626647624BBF22E00DF9B88 /* GeminiProtocol */;
|
|
||||||
targetProxy = D68544082522DF39004C4AE0 /* PBXContainerItemProxy */;
|
|
||||||
};
|
|
||||||
D685440B2522DF3C004C4AE0 /* PBXTargetDependency */ = {
|
|
||||||
isa = PBXTargetDependency;
|
|
||||||
target = D62664CD24BC081B00DF9B88 /* GeminiRenderer */;
|
|
||||||
targetProxy = D685440A2522DF3C004C4AE0 /* PBXContainerItemProxy */;
|
|
||||||
};
|
};
|
||||||
D6E152DB24C0007200FDF9D3 /* PBXTargetDependency */ = {
|
D6E152DB24C0007200FDF9D3 /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
|
@ -1191,6 +1135,11 @@
|
||||||
target = D6E152CF24C0007200FDF9D3 /* BrowserCore */;
|
target = D6E152CF24C0007200FDF9D3 /* BrowserCore */;
|
||||||
targetProxy = D6E152E324C0007200FDF9D3 /* PBXContainerItemProxy */;
|
targetProxy = D6E152E324C0007200FDF9D3 /* PBXContainerItemProxy */;
|
||||||
};
|
};
|
||||||
|
D6E152F024C0009300FDF9D3 /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = D6E152CF24C0007200FDF9D3 /* BrowserCore */;
|
||||||
|
targetProxy = D6E152EF24C0009300FDF9D3 /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
/* End PBXTargetDependency section */
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
/* Begin PBXVariantGroup section */
|
/* Begin PBXVariantGroup section */
|
||||||
|
@ -1327,11 +1276,10 @@
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_ENTITLEMENTS = Gemini/Gemini.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Gemini/Gemini.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "-";
|
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_ASSET_PATHS = "\"Gemini/Preview Content\"";
|
DEVELOPMENT_ASSET_PATHS = "\"Gemini/Preview Content\"";
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
INFOPLIST_FILE = Gemini/Info.plist;
|
INFOPLIST_FILE = Gemini/Info.plist;
|
||||||
|
@ -1340,7 +1288,7 @@
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.Gemini;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
};
|
};
|
||||||
|
@ -1353,11 +1301,10 @@
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_ENTITLEMENTS = Gemini/Gemini.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Gemini/Gemini.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "-";
|
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_ASSET_PATHS = "\"Gemini/Preview Content\"";
|
DEVELOPMENT_ASSET_PATHS = "\"Gemini/Preview Content\"";
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
ENABLE_HARDENED_RUNTIME = YES;
|
ENABLE_HARDENED_RUNTIME = YES;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
INFOPLIST_FILE = Gemini/Info.plist;
|
INFOPLIST_FILE = Gemini/Info.plist;
|
||||||
|
@ -1366,7 +1313,7 @@
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.Gemini;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
};
|
};
|
||||||
|
@ -1380,7 +1327,7 @@
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
|
@ -1393,13 +1340,13 @@
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini.GeminiProtocol;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.GeminiProtocol;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
SDKROOT = iphoneos;
|
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
VALID_ARCHS = "x86_64 arm64 armv7s armv7 arm64e";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
VERSION_INFO_PREFIX = "";
|
VERSION_INFO_PREFIX = "";
|
||||||
};
|
};
|
||||||
|
@ -1413,7 +1360,7 @@
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
|
@ -1426,12 +1373,12 @@
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini.GeminiProtocol;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.GeminiProtocol;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
SDKROOT = iphoneos;
|
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
VALID_ARCHS = "x86_64 arm64 armv7s armv7 arm64e";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
VERSION_INFO_PREFIX = "";
|
VERSION_INFO_PREFIX = "";
|
||||||
};
|
};
|
||||||
|
@ -1443,7 +1390,7 @@
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
INFOPLIST_FILE = GeminiProtocolTests/Info.plist;
|
INFOPLIST_FILE = GeminiProtocolTests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -1463,7 +1410,7 @@
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
INFOPLIST_FILE = GeminiProtocolTests/Info.plist;
|
INFOPLIST_FILE = GeminiProtocolTests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -1485,7 +1432,7 @@
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
|
@ -1498,13 +1445,13 @@
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini.GeminiFormat;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.GeminiFormat;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
SDKROOT = iphoneos;
|
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
VALID_ARCHS = "x86_64 arm64 armv7s armv7 arm64e";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
VERSION_INFO_PREFIX = "";
|
VERSION_INFO_PREFIX = "";
|
||||||
};
|
};
|
||||||
|
@ -1518,7 +1465,7 @@
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
|
@ -1531,12 +1478,12 @@
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini.GeminiFormat;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.GeminiFormat;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
SDKROOT = iphoneos;
|
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
VALID_ARCHS = "x86_64 arm64 armv7s armv7 arm64e";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
VERSION_INFO_PREFIX = "";
|
VERSION_INFO_PREFIX = "";
|
||||||
};
|
};
|
||||||
|
@ -1548,7 +1495,7 @@
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
INFOPLIST_FILE = GeminiFormatTests/Info.plist;
|
INFOPLIST_FILE = GeminiFormatTests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -1568,7 +1515,7 @@
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
INFOPLIST_FILE = GeminiFormatTests/Info.plist;
|
INFOPLIST_FILE = GeminiFormatTests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -1590,7 +1537,7 @@
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
|
@ -1603,13 +1550,13 @@
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini.GeminiRenderer;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.GeminiRenderer;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
SDKROOT = iphoneos;
|
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
VALID_ARCHS = "x86_64 arm64 armv7s armv7 arm64e";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
VERSION_INFO_PREFIX = "";
|
VERSION_INFO_PREFIX = "";
|
||||||
};
|
};
|
||||||
|
@ -1623,7 +1570,7 @@
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
|
@ -1636,12 +1583,12 @@
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini.GeminiRenderer;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.GeminiRenderer;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
SDKROOT = iphoneos;
|
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
VALID_ARCHS = "x86_64 arm64 armv7s armv7 arm64e";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
VERSION_INFO_PREFIX = "";
|
VERSION_INFO_PREFIX = "";
|
||||||
};
|
};
|
||||||
|
@ -1653,7 +1600,7 @@
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
INFOPLIST_FILE = GeminiRendererTests/Info.plist;
|
INFOPLIST_FILE = GeminiRendererTests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -1673,7 +1620,7 @@
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
INFOPLIST_FILE = GeminiRendererTests/Info.plist;
|
INFOPLIST_FILE = GeminiRendererTests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -1695,7 +1642,7 @@
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
DEVELOPMENT_ASSET_PATHS = "\"Gemini-iOS/Preview Content\"";
|
DEVELOPMENT_ASSET_PATHS = "\"Gemini-iOS/Preview Content\"";
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
INFOPLIST_FILE = "Gemini-iOS/Info.plist";
|
INFOPLIST_FILE = "Gemini-iOS/Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.5;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.5;
|
||||||
|
@ -1703,8 +1650,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 2020.1;
|
PRODUCT_BUNDLE_IDENTIFIER = "net.shadowfacts.Gemini-iOS";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini;
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
@ -1720,7 +1666,7 @@
|
||||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
DEVELOPMENT_ASSET_PATHS = "\"Gemini-iOS/Preview Content\"";
|
DEVELOPMENT_ASSET_PATHS = "\"Gemini-iOS/Preview Content\"";
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
ENABLE_PREVIEWS = YES;
|
ENABLE_PREVIEWS = YES;
|
||||||
INFOPLIST_FILE = "Gemini-iOS/Info.plist";
|
INFOPLIST_FILE = "Gemini-iOS/Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.5;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.5;
|
||||||
|
@ -1728,8 +1674,7 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
MARKETING_VERSION = 2020.1;
|
PRODUCT_BUNDLE_IDENTIFIER = "net.shadowfacts.Gemini-iOS";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini;
|
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
@ -1745,7 +1690,7 @@
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
|
@ -1758,12 +1703,12 @@
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini.BrowserCore;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.BrowserCore;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
SDKROOT = iphoneos;
|
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
VALID_ARCHS = "x86_64 arm64 armv7s armv7 arm64e";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
VERSION_INFO_PREFIX = "";
|
VERSION_INFO_PREFIX = "";
|
||||||
};
|
};
|
||||||
|
@ -1776,7 +1721,7 @@
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEFINES_MODULE = YES;
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||||
DYLIB_CURRENT_VERSION = 1;
|
DYLIB_CURRENT_VERSION = 1;
|
||||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||||
|
@ -1789,12 +1734,12 @@
|
||||||
"@loader_path/Frameworks",
|
"@loader_path/Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = space.vaccor.Gemini.BrowserCore;
|
PRODUCT_BUNDLE_IDENTIFIER = net.shadowfacts.BrowserCore;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||||
SDKROOT = iphoneos;
|
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
VALID_ARCHS = "x86_64 arm64 armv7s armv7 arm64e";
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
VERSION_INFO_PREFIX = "";
|
VERSION_INFO_PREFIX = "";
|
||||||
};
|
};
|
||||||
|
@ -1806,7 +1751,7 @@
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
INFOPLIST_FILE = BrowserCoreTests/Info.plist;
|
INFOPLIST_FILE = BrowserCoreTests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -1826,7 +1771,7 @@
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = V4WK9KR9U2;
|
DEVELOPMENT_TEAM = HGYVAQA9FW;
|
||||||
INFOPLIST_FILE = BrowserCoreTests/Info.plist;
|
INFOPLIST_FILE = BrowserCoreTests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
|
|
@ -1,90 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Scheme
|
|
||||||
LastUpgradeVersion = "1220"
|
|
||||||
version = "1.3">
|
|
||||||
<BuildAction
|
|
||||||
parallelizeBuildables = "YES"
|
|
||||||
buildImplicitDependencies = "YES">
|
|
||||||
<BuildActionEntries>
|
|
||||||
<BuildActionEntry
|
|
||||||
buildForTesting = "YES"
|
|
||||||
buildForRunning = "YES"
|
|
||||||
buildForProfiling = "YES"
|
|
||||||
buildForArchiving = "YES"
|
|
||||||
buildForAnalyzing = "YES">
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "D6E152A124BFFDF500FDF9D3"
|
|
||||||
BuildableName = "Gemini-iOS.app"
|
|
||||||
BlueprintName = "Gemini-iOS"
|
|
||||||
ReferencedContainer = "container:Gemini.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildActionEntry>
|
|
||||||
</BuildActionEntries>
|
|
||||||
</BuildAction>
|
|
||||||
<TestAction
|
|
||||||
buildConfiguration = "Debug"
|
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
||||||
<Testables>
|
|
||||||
</Testables>
|
|
||||||
</TestAction>
|
|
||||||
<LaunchAction
|
|
||||||
buildConfiguration = "Debug"
|
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
||||||
launchStyle = "0"
|
|
||||||
useCustomWorkingDirectory = "NO"
|
|
||||||
ignoresPersistentStateOnLaunch = "NO"
|
|
||||||
debugDocumentVersioning = "YES"
|
|
||||||
debugServiceExtension = "internal"
|
|
||||||
allowLocationSimulation = "YES">
|
|
||||||
<BuildableProductRunnable
|
|
||||||
runnableDebuggingMode = "0">
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "D6E152A124BFFDF500FDF9D3"
|
|
||||||
BuildableName = "Gemini-iOS.app"
|
|
||||||
BlueprintName = "Gemini-iOS"
|
|
||||||
ReferencedContainer = "container:Gemini.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildableProductRunnable>
|
|
||||||
<EnvironmentVariables>
|
|
||||||
<EnvironmentVariable
|
|
||||||
key = "DEFAULT_URL"
|
|
||||||
value = "gemini://gemini.circumlunar.space/docs/specification.gmi"
|
|
||||||
isEnabled = "NO">
|
|
||||||
</EnvironmentVariable>
|
|
||||||
<EnvironmentVariable
|
|
||||||
key = "DEFAULT_URL"
|
|
||||||
value = "gemini://drewdevault.com"
|
|
||||||
isEnabled = "YES">
|
|
||||||
</EnvironmentVariable>
|
|
||||||
</EnvironmentVariables>
|
|
||||||
</LaunchAction>
|
|
||||||
<ProfileAction
|
|
||||||
buildConfiguration = "Release"
|
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
||||||
savedToolIdentifier = ""
|
|
||||||
useCustomWorkingDirectory = "NO"
|
|
||||||
debugDocumentVersioning = "YES">
|
|
||||||
<BuildableProductRunnable
|
|
||||||
runnableDebuggingMode = "0">
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "D6E152A124BFFDF500FDF9D3"
|
|
||||||
BuildableName = "Gemini-iOS.app"
|
|
||||||
BlueprintName = "Gemini-iOS"
|
|
||||||
ReferencedContainer = "container:Gemini.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</BuildableProductRunnable>
|
|
||||||
</ProfileAction>
|
|
||||||
<AnalyzeAction
|
|
||||||
buildConfiguration = "Debug">
|
|
||||||
</AnalyzeAction>
|
|
||||||
<ArchiveAction
|
|
||||||
buildConfiguration = "Release"
|
|
||||||
revealArchiveInOrganizer = "YES">
|
|
||||||
</ArchiveAction>
|
|
||||||
</Scheme>
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "1220"
|
LastUpgradeVersion = "1200"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "1220"
|
LastUpgradeVersion = "1200"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
|
|
|
@ -7,12 +7,12 @@
|
||||||
<key>BrowserCore.xcscheme_^#shared#^_</key>
|
<key>BrowserCore.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>5</integer>
|
<integer>4</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Gemini-iOS.xcscheme_^#shared#^_</key>
|
<key>Gemini-iOS.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>2</integer>
|
<integer>3</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Gemini.xcscheme_^#shared#^_</key>
|
<key>Gemini.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
@ -27,12 +27,12 @@
|
||||||
<key>GeminiProtocol.xcscheme_^#shared#^_</key>
|
<key>GeminiProtocol.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>3</integer>
|
<integer>2</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>GeminiRenderer.xcscheme_^#shared#^_</key>
|
<key>GeminiRenderer.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>4</integer>
|
<integer>5</integer>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>SuppressBuildableAutocreation</key>
|
<key>SuppressBuildableAutocreation</key>
|
||||||
|
@ -62,11 +62,6 @@
|
||||||
<key>primary</key>
|
<key>primary</key>
|
||||||
<true/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
<key>D6E152A124BFFDF500FDF9D3</key>
|
|
||||||
<dict>
|
|
||||||
<key>primary</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Workspace
|
|
||||||
version = "1.0">
|
|
||||||
<FileRef
|
|
||||||
location = "container:Gemini.xcodeproj">
|
|
||||||
</FileRef>
|
|
||||||
</Workspace>
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>IDEDidComputeMac32BitWarning</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
|
@ -2,6 +2,8 @@
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>NSMainNibFile</key>
|
||||||
|
<string>MainMenu</string>
|
||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
|
@ -22,8 +24,6 @@
|
||||||
<string>1</string>
|
<string>1</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||||
<key>NSMainNibFile</key>
|
|
||||||
<string>MainMenu</string>
|
|
||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
<string>NSApplication</string>
|
<string>NSApplication</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
|
@ -12,27 +12,15 @@ public struct DocumentView: View {
|
||||||
private let document: Document
|
private let document: Document
|
||||||
private let blocks: [RenderingBlock]
|
private let blocks: [RenderingBlock]
|
||||||
private let changeURL: ((URL) -> Void)?
|
private let changeURL: ((URL) -> Void)?
|
||||||
private let scrollingEnabled: Bool
|
|
||||||
|
|
||||||
public init(document: Document, scrollingEnabled: Bool = true, changeURL: ((URL) -> Void)? = nil) {
|
public init(document: Document, changeURL: ((URL) -> Void)? = nil) {
|
||||||
self.document = document
|
self.document = document
|
||||||
self.blocks = document.renderingBlocks
|
self.blocks = document.renderingBlocks
|
||||||
self.changeURL = changeURL
|
self.changeURL = changeURL
|
||||||
self.scrollingEnabled = scrollingEnabled
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ViewBuilder
|
|
||||||
public var body: some View {
|
public var body: some View {
|
||||||
if scrollingEnabled {
|
|
||||||
ScrollView(.vertical) {
|
ScrollView(.vertical) {
|
||||||
scrollBody
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
scrollBody
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private var scrollBody: some View {
|
|
||||||
MaybeLazyVStack(alignment: .leading) {
|
MaybeLazyVStack(alignment: .leading) {
|
||||||
ForEach(blocks.indices) { (index) in
|
ForEach(blocks.indices) { (index) in
|
||||||
RenderingBlockView(block: blocks[index], changeURL: changeURL)
|
RenderingBlockView(block: blocks[index], changeURL: changeURL)
|
||||||
|
@ -40,6 +28,7 @@ public struct DocumentView: View {
|
||||||
}.padding([.leading, .trailing, .bottom])
|
}.padding([.leading, .trailing, .bottom])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct DocumentView_Previews: PreviewProvider {
|
struct DocumentView_Previews: PreviewProvider {
|
||||||
static var doc: Document {
|
static var doc: Document {
|
||||||
|
|