refactor: polish code, logo

This commit is contained in:
Richard 2024-02-25 12:05:59 -08:00
parent 18723c1377
commit e7a1f5d235
7 changed files with 14 additions and 19 deletions

View file

@ -2,8 +2,7 @@ name: Release
on:
release:
types:
- published
types: [published]
jobs:
release:
@ -20,10 +19,7 @@ jobs:
- name: Build model
run: rojo build -o charm.rbxm
- name: Upload release
uses: softprops/action-gh-release@v2
if: ${{ github.event.release }}
- uses: AButler/upload-release-assets@v3.0
with:
files: charm.rbxm
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
files: "charm.rbxm"
repo-token: ${{ secrets.GITHUB_TOKEN }}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 247 KiB

After

Width:  |  Height:  |  Size: 255 KiB

Before After
Before After

View file

@ -17,7 +17,7 @@ export type Atom<T> = (() -> T) & ((state: T | ((T) -> T)) -> ()) & {
get: ((self: Atom<T>) -> T) & (<Result>(self: Atom<T>, selector: (T) -> Result) -> Result),
set: (self: Atom<T>, state: T | ((T) -> T)) -> (),
memo: (self: Atom<T>, equalityFn: (previous: T, current: T) -> boolean) -> Atom<T>,
writable: (self: Atom<T>, setter: ((update: T, previous: T) -> T?) & (update: T, previous: T) -> ()) -> Atom<T>,
writable: (self: Atom<T>, onSet: ((update: T, previous: T) -> T?) & (update: T, previous: T) -> ()) -> Atom<T>,
readonly: (self: Atom<T>) -> ReadonlyAtom<T>,
named: (self: Atom<T>, label: string) -> Atom<T>,
unmount: (self: Atom<T>) -> (),
@ -26,9 +26,8 @@ export type Atom<T> = (() -> T) & ((state: T | ((T) -> T)) -> ()) & {
export type ReadonlyAtom<T> = (() -> T) & {
get: ((self: ReadonlyAtom<T>) -> T) & (<Result>(self: ReadonlyAtom<T>, selector: (T) -> Result) -> Result),
memo: (self: ReadonlyAtom<T>, equalityFn: (previous: T, current: T) -> boolean) -> ReadonlyAtom<T>,
writable: ((self: Atom<T>) -> Atom<T>) & (
(self: Atom<T>, setter: ((update: T, previous: T) -> T?) & (update: T, previous: T) -> ()) -> Atom<T>
),
writable: ((self: Atom<T>) -> Atom<T>)
& ((self: Atom<T>, onSet: ((update: T, previous: T) -> T?) & (update: T, previous: T) -> ()) -> Atom<T>),
readonly: (self: ReadonlyAtom<T>) -> ReadonlyAtom<T>,
named: (self: ReadonlyAtom<T>, label: string) -> ReadonlyAtom<T>,
unmount: (self: ReadonlyAtom<T>) -> (),
@ -97,8 +96,8 @@ local function atom<State>(state: State): Atom<State>
return self
end
function atom:writable(setterFn: ((State, State) -> State?)?): Atom<State>
setter = setterFn
function atom:writable(onSet: ((State, State) -> State?)?): Atom<State>
setter = onSet
return self
end

View file

@ -16,7 +16,6 @@ local function derive<Result>(...): ReadonlyAtom<Result>
local atoms: { Atom<unknown> } = { ... }
local combiner: (...unknown) -> Result = table.remove(atoms) :: any
local size = #atoms
local dependencies: { unknown } = {}
for index, atom in atoms do

View file

@ -6,7 +6,7 @@ type Atom<T> = atom.Atom<T>
type UseAtomState =
(<State>(atom: Atom<State>) -> State)
& (<State, Result>(atom: Atom<State>, ((State) -> Result)?) -> State | Result)
& <State, Result>(atom: Atom<State>, selector: (State) -> Result) -> Result
& (<State, Result>(atom: Atom<State>, selector: (State) -> Result) -> Result)
local function useAtomState<State>(atom: Atom<State>, selector: ((State) -> State)?): State
local state, setState = React.useState(function()

View file

@ -55,9 +55,10 @@ local function split<Item, Key>(
for key, item in previousItems do
local id = if keyExtractor then keyExtractor(item) else key
local atom = atoms[id]
if itemsByKeys[id] == nil then
atoms[id]:unmount()
if itemsByKeys[id] == nil and atom then
atom:unmount()
atoms[id] = nil
end
end

View file

@ -3,7 +3,7 @@ type Atom<T> = atom.Atom<T>
local reference = require(script.Parent.utils.reference)
local function subscribe<State>(atom: Atom<State>, callback: (state: State, lastState: State) -> ()): (() -> (), () -> ())
local function subscribe<State>(atom: Atom<State>, callback: (state: State, previous: State) -> ()): (() -> (), () -> ())
local pending: thread? = nil
local state = atom:get()