| import SwiftUI | |
| struct ContentView: View { | |
| @State var show = false | |
| @State var height: CGFloat = 250 | |
| var body: some View { | |
| List { | |
| Button("Pop Sheet") { | |
| height = 250 | |
| show.toggle() |
| import Foundation | |
| @available(macOS 14, iOS 17, tvOS 17, watchOS 10, *) | |
| /// Allows you to use an existing Predicate as a ``StandardPredicateExpression`` | |
| struct VariableWrappingExpression<T>: StandardPredicateExpression { | |
| let predicate: Predicate<T> | |
| let variable: PredicateExpressions.Variable<T> | |
| func evaluate(_ bindings: PredicateBindings) throws -> Bool { | |
| // resolve the variable |
On MacOS, cmd-tab only toggles between different apps. To toggle between different windows of the same app, you need to use cmd-` . However this is cumbersome for regular usage, as it requires stretching your fingers unnaturally. This rule allows to use cmd-CapsLock instead, which is much easier.
- Install Karabiner Elements and give it all permissions it asks for
cd ~/.config/karabiner/assets/complex_modificationsand put the json file below there- Restart Karabiner Elements
- Go to "Complex Modifications > Add rule"
| // ==UserScript== | |
| // @name Prevent keyboard shortcut hijacking | |
| // @description Prevent websites to hijack keyboard shortcuts, for example <Ctrl+F> on Discourse | |
| // @namespace Violentmonkey Scripts | |
| // @match *://*/* | |
| // @grant none | |
| // @version 1.0 | |
| // @author notDavid | |
| // ==/UserScript== |
| extension Task where Failure == Error { | |
| // Start a new Task with a timeout. If the timeout expires before the operation is | |
| // completed then the task is cancelled and an error is thrown. | |
| init(priority: TaskPriority? = nil, timeout: TimeInterval, operation: @escaping @Sendable () async throws -> Success) { | |
| self = Task(priority: priority) { | |
| try await withThrowingTaskGroup(of: Success.self) { group -> Success in | |
| group.addTask(operation: operation) | |
| group.addTask { | |
| try await _Concurrency.Task.sleep(nanoseconds: UInt64(timeout * 1_000_000_000)) |
Composition of <Route> elements in React Router is changing in v6 from how it worked in v4/5 and in Reach Router. React Router v6 is the successor of both React Router v5 and Reach Router.
This document explains our rationale for making the change as well as a pattern you will want to avoid in v6 and a note on how you can start preparing your v5 app for v6 today.
In React Router v5, we had an example of how you could create a element](https://github.com/remix-run/react-router/blob/320be7afe44249d5c025659bc00c3276a19f0af9/packages/react-router-dom/examples/Auth.js#L50-L52) to restrict access to certain routes on the page. This element was a simple [wrapper around an actual element that made a simple decision: is the user authenticated or not? If so, ren