mirror of
https://github.com/littensy/charm.git
synced 2026-10-20 17:51:37 +00:00
refactor: polish code, logo
This commit is contained in:
parent
18723c1377
commit
e7a1f5d235
7 changed files with 14 additions and 19 deletions
12
.github/workflows/release.yml
vendored
12
.github/workflows/release.yml
vendored
|
|
@ -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 }}
|
||||
|
|
|
|||
BIN
images/logo.png
BIN
images/logo.png
Binary file not shown.
|
Before Width: | Height: | Size: 247 KiB After Width: | Height: | Size: 255 KiB |
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue