Updates Demo for type identifiers

This commit is contained in:
Shaps Benkau 2023-02-10 09:46:11 +00:00
parent af01b159d9
commit 73f5663989
2 changed files with 134 additions and 58 deletions

View File

@ -0,0 +1,76 @@
import SwiftUI
@available(iOS, deprecated: 16)
@available(macOS, deprecated: 13)
@available(tvOS, deprecated: 16)
@available(watchOS, deprecated: 9)
public extension Backport where Wrapped: View {
/// Sets the preferred visibility of the non-transient system views
/// overlaying the app.
///
/// Use this modifier if you would like to customise the immersive
/// experience of your app by hiding or showing system overlays that may
/// affect user experience. The following example hides every persistent
/// system overlay.
///
/// struct ImmersiveView: View {
/// var body: some View {
/// Text("Maximum immersion")
/// .persistentSystemOverlays(.hidden)
/// }
/// }
///
/// Note that this modifier only sets a preference and, ultimately the
/// system will decide if it will honour it or not.
///
/// These non-transient system views include:
/// - The Home indicator
///
/// - Parameter visibility: A value that indicates the visibility of the
/// non-transient system views overlaying the app.
func persistentSystemOverlays(_ visibility: Backport<Any>.Visibility) -> some View {
content.preference(key: PersistentSystemOverlaysPreferenceKey.self, value: visibility)
}
}
private struct PersistentSystemOverlaysPreferenceKey: PreferenceKey {
typealias Value = Backport<Any>.Visibility
static var defaultValue: Value = .automatic
static func reduce(value: inout Value, nextValue: () -> Value) {
value = nextValue()
}
}
#if os(iOS)
private final class Representable: UIHostingController<AnyView> {
init<Content: View>(rootView: Content) {
let box = WeakBox()
super.init(
rootView: AnyView(
rootView
.onPreferenceChange(PersistentSystemOverlaysPreferenceKey.self) { visibility in
box.value?.persistentSystemOverlaysHidden = visibility == .hidden
}
)
)
box.value = self
}
@MainActor required dynamic init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private class WeakBox {
weak var value: Representable?
init() {}
}
private var persistentSystemOverlaysHidden = false {
didSet { setNeedsUpdateOfHomeIndicatorAutoHidden() }
}
override var prefersHomeIndicatorAutoHidden: Bool {
persistentSystemOverlaysHidden
}
}
#endif

View File

@ -9,13 +9,13 @@ public extension Backport<Any>.UTType {
"public.item": "doc",
"public.content": "doc.text",
"public.composite-content": "doc.on.doc",
"public.disk-image": "opticaldiscdrive",
"public.data": "cylinder.split.1x2",
"public.disk-image": "eject",
"public.data": "doc",
"public.directory": "folder",
"com.apple.resolvable": "doc.text.magnifyingglass",
"public.symlink": "doc.text.magnifyingglass",
"public.executable": "terminal",
"com.apple.mount-point": "mount",
"public.executable": "macwindow",
"com.apple.mount-point": "eject",
"com.apple.alias-file": "doc.text.magnifyingglass",
"com.apple.bookmark": "bookmark",
"public.url": "link.circle",
@ -25,38 +25,38 @@ public extension Backport<Any>.UTType {
"public.utf8-plain-text": "doc.plaintext",
"public.utf16-external-plain-text": "doc.plaintext",
"public.utf16-plain-text": "doc.plaintext",
"public.delimited-values-text": "rectangle.portrait",
"public.comma-separated-values-text": "rectangle.portrait",
"public.tab-separated-values-text": "rectangle.portrait",
"public.utf8-tab-separated-values-text": "rectangle.portrait",
"public.delimited-values-text": "doc",
"public.comma-separated-values-text": "doc",
"public.tab-separated-values-text": "doc",
"public.utf8-tab-separated-values-text": "doc",
"public.rtf": "doc.richtext",
"public.html": "curlybraces.square",
"public.xml": "curlybraces.square",
"public.yaml": "curlybraces.square",
"public.source-code": "curlybraces.square",
"public.assembly-source": "curlybraces.square",
"public.c-source": "curlybraces.square",
"public.objective-c-source": "curlybraces.square",
"public.swift-source": "curlybraces.square",
"public.c-plus-plus-source": "curlybraces.square",
"public.objective-c-plus-plus-source": "curlybraces.square",
"public.c-header": "curlybraces.square",
"public.c-plus-plus-header": "curlybraces.square",
"public.script": "curlybraces.square",
"com.apple.applescript.text": "curlybraces.square",
"com.apple.applescript.script": "curlybraces.square",
"com.apple.applescript.script-bundle": "curlybraces.square",
"com.netscape.javascript-source": "curlybraces.square",
"public.shell-script": "curlybraces.square",
"public.perl-script": "curlybraces.square",
"public.python-script": "curlybraces.square",
"public.ruby-script": "curlybraces.square",
"public.php-script": "curlybraces.square",
"public.make-source": "curlybraces.square",
"public.json": "curlybraces.square",
"com.apple.property-list": "list.bullet.rectangle",
"com.apple.xml-property-list": "list.bullet.rectangle",
"com.apple.binary-property-list": "list.bullet.rectangle",
"public.html": "keyboard",
"public.xml": "keyboard",
"public.yaml": "keyboard",
"public.source-code": "keyboard",
"public.assembly-source": "keyboard",
"public.c-source": "keyboard",
"public.objective-c-source": "keyboard",
"public.swift-source": "keyboard",
"public.c-plus-plus-source": "keyboard",
"public.objective-c-plus-plus-source": "keyboard",
"public.c-header": "keyboard",
"public.c-plus-plus-header": "keyboard",
"public.script": "keyboard",
"com.apple.applescript.text": "keyboard",
"com.apple.applescript.script": "keyboard",
"com.apple.applescript.script-bundle": "keyboard",
"com.netscape.javascript-source": "keyboard",
"public.shell-script": "keyboard",
"public.perl-script": "keyboard",
"public.python-script": "keyboard",
"public.ruby-script": "keyboard",
"public.php-script": "keyboard",
"public.make-source": "keyboard",
"public.json": "keyboard",
"com.apple.property-list": "list.bullet.below.rectangle",
"com.apple.xml-property-list": "list.bullet.below.rectangle",
"com.apple.binary-property-list": "list.bullet.below.rectangle",
"com.adobe.pdf": "doc.richtext",
"com.apple.rtfd": "doc.richtext",
"com.apple.flat-rtfd": "doc.richtext",
@ -75,12 +75,12 @@ public extension Backport<Any>.UTType {
"public.heif": "video",
"public.heic": "photo",
"org.webmproject.webp": "film",
"public.3d-content": "square.stack.3d.forward.dottedline",
"com.pixar.universal-scene-description": "square.stack.3d.forward.dottedline",
"com.pixar.universal-scene-description-mobile": "square.stack.3d.forward.dottedline",
"com.apple.reality": "cube.transparent",
"com.apple.scenekit.scene": "cube.transparent",
"com.apple.arobject": "cube.transparent",
"public.3d-content": "square.stack.3d.down.right",
"com.pixar.universal-scene-description": "square.stack.3d.down.right",
"com.pixar.universal-scene-description-mobile": "square.stack.3d.down.right",
"com.apple.reality": "cube",
"com.apple.scenekit.scene": "cube",
"com.apple.arobject": "cube",
"public.audiovisual-content": "tv.and.hifispeaker.fill",
"public.movie": "film",
"public.video": "film",
@ -101,39 +101,39 @@ public extension Backport<Any>.UTType {
"public.playlist": "music.note.list",
"public.m3u-playlist": "music.note.list",
"public.folder": "folder",
"public.volume": "externaldrive",
"com.apple.package": "sparkles.rectangle.stack",
"com.apple.bundle": "sparkles.rectangle.stack",
"com.apple.plugin": "sparkles.rectangle.stack",
"public.volume": "eject",
"com.apple.package": "rectangle.stack",
"com.apple.bundle": "rectangle.stack",
"com.apple.plugin": "rectangle.stack",
"com.apple.quicklook-generator": "eye",
"com.apple.xpc-service": "doc.badge.gearshape",
"com.apple.framework": "circles.hexagongrid",
"com.apple.xpc-service": "doc",
"com.apple.framework": "circle.grid.3x3",
"com.apple.application": "app",
"com.apple.application-bundle": "archivebox",
"com.apple.application-and-system-extension": "puzzlepiece",
"public.unix-executable": "terminal",
"com.apple.application-and-system-extension": "circle.grid.3x3",
"public.unix-executable": "macwindow",
"com.microsoft.windows-executable": "pc",
"com.apple.systempreference.prefpane": "gear",
"public.archive": "doc.zipper",
"org.gnu.gnu-zip-archive": "doc.zipper",
"public.bzip2-archive": "doc.zipper",
"public.zip-archive": "doc.zipper",
"com.apple.archive": "doc.zipper",
"public.archive": "archivebox",
"org.gnu.gnu-zip-archive": "archivebox",
"public.bzip2-archive": "archivebox",
"public.zip-archive": "archivebox",
"com.apple.archive": "archivebox",
"public.spreadsheet": "chart.bar",
"public.presentation": "chart.pie",
"public.database": "point.topleft.down.curvedto.point.bottomright.up",
"public.message": "message",
"public.contact": "person.crop.circle",
"public.vcard": "person.crop.square.fill.and.at.rectangle",
"public.vcard": "person.crop.rectangle",
"public.to-do-item": "checkmark.square",
"public.calendar-event": "calendar",
"public.email-message": "mail",
"public.email-message": "tray.full",
"com.apple.internet-location": "globe",
"public.font": "textformat.alt",
"public.bookmark": "bookmark",
"com.rsa.pkcs-12": "key",
"com.rsa.pkcs-12": "lock",
"public.x509-certificate": "shield.lefthalf.fill",
"org.idpf.epub-container": "book",
"public.log": "note.text",
"public.log": "doc.text",
]
}