Here I used @State CGSize values to represent both the viewState and the dragState
struct Example1: View {
@State var viewState: CGSize = .zero
@State var dragState: CGSize = .zero
// | |
// AppView.swift | |
// | |
// | |
// Created by Saroar Khandoker on 05.05.2021. | |
// | |
import AuthClient | |
import AuthClientLive | |
import AuthenticationView |
extension DragGesture.Value { | |
var velocity: CGPoint { | |
let decelerationRate = UIScrollView.DecelerationRate.normal.rawValue, | |
d = decelerationRate/(1000.0*(1.0 - decelerationRate)) | |
return CGPoint(x: (location.x - predictedEndLocation.x)/d, | |
y: (location.y - predictedEndLocation.y)/d) | |
} |
import SwiftUI | |
struct Dial: View { | |
@Binding public var value: Double | |
public var minValue: Double = 0 | |
public var maxValue: Double = .greatestFiniteMagnitude | |
public var divisor: Double = 1 | |
public var stepping: Double = 1 | |
@State private var dialAngle: Angle = .zero | |
@State private var dialShadowAngle: Angle = .zero |
// decrypting Amtrak's real-time train location geoJSON feed | |
// based on https://github.com/Vivalize/Amtrak-Train-Stats | |
const fetch = require('node-fetch'); | |
const CryptoJS = require('crypto-js'); | |
// this is the xhr call done by https://www.amtrak.com/track-your-train.html containing encrypted train location data | |
const dataUrl = 'https://maps.amtrak.com/services/MapDataService/trains/getTrainsData'; | |
// these constants are pulled from RoutesList.v.json, which is an object with keys 'arr', 's', and 'v' | |
const sValue = '9a3686ac'; // found at s[8] |
Also see the original Pieter Noordhuis's guide
You need:
// MIT Licensed | |
// Author: jwilson8767 | |
/** | |
* Waits for an element satisfying selector to exist, then resolves promise with the element. | |
* Useful for resolving race conditions. | |
* | |
* @param selector | |
* @returns {Promise} | |
*/ |
# after appcleaner does his magic, do this | |
sudo rm -rf "/Library/Application Support/Paragon Software/" | |
sudo rm /Library/LaunchDaemons/com.paragon-software.installer.plist | |
sudo rm /Library/LaunchDaemons/com.paragon-software.ntfs.loader.plist | |
sudo rm /Library/LaunchDaemons/com.paragon-software.ntfsd.plist | |
sudo rm /Library/LaunchAgents/com.paragon-software.ntfs.notification-agent.plist | |
sudo rm -rf /Library/Filesystems/ufsd_NTFS.fs/ | |
sudo rm -rf /Library/PrivilegedHelperTools/com.paragon-software.installer | |
sudo rm -rf /Library/Extensions/ufsd_NTFS.kext/ |
Configure the session when a SharePlay activity starts, and handle events that occur during the lifetime of the activity.
When one person in a group starts an activity, other people’s devices display system UI to prompt them to join that activity. When each person joins, the system prepares a GroupSession object for the activity and delivers it to their app. Your app uses that session object to:
- Prepare any required UI.
- Start the activity, monitor its state, and respond to changes.
- Synchronize activity-related information. >
select.form-control + .chosen-container.chosen-container-single .chosen-single { | |
display: block; | |
width: 100%; | |
height: 34px; | |
padding: 6px 12px; | |
font-size: 14px; | |
line-height: 1.428571429; | |
color: #555; | |
vertical-align: middle; | |
background-color: #fff; |