npm.io
1.0.3 • Published 11h ago

@beautiful-eyes/reactiveclass

Licence
ISC
Version
1.0.3
Deps
1
Size
15 kB
Vulns
0
Weekly
0

@beautiful-eyes/reactiveclass

Reactivity primitives for Beautiful Eyes: ReactiveClass, @State, @Effect, @Input, and @Computed (passthrough today).

A write on one instance runs that instance's effects and DOM subscriptions. There is no global store.

npm install @beautiful-eyes/reactiveclass
import { ReactiveClass, State, Effect } from '@beautiful-eyes/reactiveclass';

class Counter extends ReactiveClass {
  @State() count = 0;

  @Effect((ctx: Counter) => [ctx.count])
  log(prev?: number) {
    console.log('was', prev, 'now', this.count);
  }
}
  • @State -- accessor for primitives; objects / arrays / Maps / Sets are wrapped with Proxify
  • @Effect(depFn) -- depFn must return an array; changed slots invoke the method
  • @Input -- like @State with an === skip, used for parent $props

Most apps should import these from @beautiful-eyes/core, which re-exports this package.