UNPKG

wana

Version:

Easy observable state for React

1 lines 3.05 kB
{"version":3,"file":"815e560c.mjs","sources":["../../src/common.ts","../../src/globals.ts","../../src/symbols.ts"],"sourcesContent":["export interface Disposable {\n /** Release any memory that would otherwise leak */\n dispose: () => void\n}\n\nexport type Falsy = false | null | undefined\n\nexport const emptyArray: readonly any[] = Object.freeze([])\n\nexport const setHidden = (obj: any, key: any, value: any) =>\n Object.defineProperty(obj, key, { value, configurable: true })\n\nexport function rethrowError(error: Error) {\n throw error\n}\n\nexport const noop = () => {}\n\nexport const nope = () => false\n\nexport const flop: any = () => {\n throw Error('Not yet implemented')\n}\n\nexport const hasOwn = Function.call.bind({}.hasOwnProperty) as (\n obj: object,\n key: keyof any\n) => boolean\n\nexport const getOwnDescriptor = Object.getOwnPropertyDescriptor\n\nexport function getDescriptor(self: object, key: any) {\n let desc: PropertyDescriptor | undefined\n let proto = self\n do {\n if ((desc = getOwnDescriptor(proto, key))) {\n return desc\n }\n } while ((proto = Object.getPrototypeOf(proto)))\n}\n","import { Auto } from './auto'\nimport { Change, ObserverTarget } from './observable'\n\ntype OnRender = (\n auto: Auto,\n depth: number,\n component: React.FunctionComponent<any>\n) => void\n\ntype Globals = {\n /** Notify the current observer. */\n observe: ((target: ObserverTarget, key: any) => void) | null\n /** The `Auto` object for the current `withAuto` component being rendered. */\n auto: Auto | null\n /** For debugging re-renders. Only called in development. */\n onRender: OnRender | null\n /** For spying on every change event. */\n onChange: ((change: Change) => void) | null\n}\n\nexport const globals: Globals = {\n observe: null,\n auto: null,\n onRender: null,\n onChange: null,\n}\n\n/** Tell the current observer to track the given object/key pair */\nexport const observe = (target: ObserverTarget, key: any) =>\n !!globals.observe && (globals.observe(target, key), true)\n","/** For accessing the proxied state */\nexport const $$ = Symbol.for('wana:state')\n\n/** For storing observers and the observable proxy */\nexport const $O = Symbol.for('wana:observable')\n\n/** For observing \"size\" changes */\nexport const SIZE = Symbol.for('wana:size')\n\n/** For injecting custom proxy traps */\nexport const $T = Symbol.for('wana:traps')\n"],"names":[],"mappings":"MAOa,aAA6B,OAAO,OAAO;MAE3C,YAAY,CAAC,KAAU,KAAU,UAC5C,OAAO,eAAe,KAAK,KAAK,CAAE,OAAO,cAAc;sBAE5B,OAAc;AACzC,QAAM;AAAA;MAGK,OAAO,MAAM;AAAA;MAEb,OAAO,MAAM;MAEb,OAAY,MAAM;AAC7B,QAAM,MAAM;AAAA;MAGD,SAAS,SAAS,KAAK,KAAK,GAAG;MAK/B,mBAAmB,OAAO;uBAET,MAAc,KAAU;AACpD,MAAI;AACJ,MAAI,QAAQ;AACZ,KAAG;AACD,QAAK,OAAO,iBAAiB,OAAO,MAAO;AACzC,aAAO;AAAA;AAAA,WAED,QAAQ,OAAO,eAAe;AAAA;;MClB7B,UAAmB;AAAA,EAC9B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AAAA;MAIC,UAAU,CAAC,QAAwB,QAC9C,CAAC,CAAC,QAAQ,oBAAoB,QAAQ,QAAQ,MAAM;;MC5BzC,KAAK,OAAO,IAAI;MAGhB,KAAK,OAAO,IAAI;MAGhB,OAAO,OAAO,IAAI;MAGlB,KAAK,OAAO,IAAI;;;;"}