Skip to content

Instantly share code, notes, and snippets.

View mykolaharmash's full-sized avatar

Mykola Harmash mykolaharmash

View GitHub Profile
@mykolaharmash
mykolaharmash / ColorSlider.swift
Last active February 7, 2025 17:15
Color Slider Component (SwiftUI)
// A Color Slider that is similar to one in
// iOS 18+ when configuring a tinted Home Screen
// Full video-walktrough on building this component: https://youtu.be/VFVyN5hNW24
import SwiftUI
fileprivate let SLIDER_HEIGHT = 34.0
fileprivate let KNOB_DIAMETER = SLIDER_HEIGHT + 4.0
struct ColorSlider: View {
@mykolaharmash
mykolaharmash / StateToggle.swift
Created October 27, 2020 15:17
@State and visibility toggle
import SwiftUI
struct CounterView: View {
@State var count = 0
var body: some View {
Text(String(count))
Button("+ 1", action: { count = count + 1 })
}
}
import SwiftUI
class Counter: ObservableObject {
@Published var count: Int
init(_ count: Int) {
self.count = count
}
func increment() {
import SwiftUI
class Counter: ObservableObject {
@Published var count: Int
init(_ count: Int) {
self.count = count
}
func increment() {
import SwiftUI
class Counter: ObservableObject {
@Published var count: Int
init(_ count: Int) {
self.count = count
}
func increment() {
@mykolaharmash
mykolaharmash / StateReferenceTypeFixed.swift
Created October 27, 2020 11:50
@State with reference type (fixed)
import SwiftUI
class Counter {
var count: Int
init(_ count: Int) {
self.count = count
}
func increment() {
@mykolaharmash
mykolaharmash / StateReferenceTypeBroken.swift
Last active October 27, 2020 11:49
@State with reference type (broken)
import SwiftUI
class Counter {
var count: Int
init(_ count: Int) {
self.count = count
}
func increment() {
import SwiftUI
struct Counter: View {
@State var count: Int = 0
init() {
print("Counter Created")
}
var body: some View {
@mykolaharmash
mykolaharmash / init.lua
Last active September 15, 2024 09:19
Hammerspoon Vim Navigation
-- put into ~/.hammerspoon
-- map Caps Lock key to Control in macOS settings (Keyboard -> Modifier Keys...)
-- Give all the accessability permissions in Hammerspoon preferences
-- NOTE: Changing "Key repeat rate" and "Delay until repeat" in macOS settings
-- require Hammerspoon restart to pick up those changes.
-- See: https://github.com/Hammerspoon/hammerspoon/issues/3264
local function pressFn(mods, key)
if key == nil then
key = mods
export class Maybe<T> {
value: T | null
constructor(value: T | null) {
this.value = value
}
static property<P>(value: P | undefined): Maybe<P> {
if (value === undefined) {
return new Maybe<P>(null)