{"version":3,"file":"79278540.mjs","sources":["../../src/ui/context.tsx","../../src/ui/useChanges.ts"],"sourcesContent":["import * as React from 'react'\n\nconst depth = React.createContext(0)\n\nexport const AutoDepth = depth.Provider\nexport const useAutoDepth = () => React.useContext(depth)\n","import { useLayoutEffect } from 'react-layout-effect'\nimport { useMemoOne as useMemo } from 'use-memo-one'\nimport { emptyArray } from '../common'\nimport { no } from '../no'\nimport { Change, ChangeObserver, ObserverTarget } from '../observable'\nimport { $O } from '../symbols'\n\n/** Listen for shallow changes to an observable object. */\nexport function useChanges(\n  target: ObserverTarget,\n  onChange: (change: Change) => void,\n  deps?: readonly any[]\n) {\n  const observable = target[$O]\n  if (!observable) {\n    throw Error('Expected an observable object')\n  }\n\n  const observer = useMemo<ChangeObserver>(\n    () => ({ onChange } as any),\n    emptyArray\n  )\n\n  useLayoutEffect(() => {\n    observer.onChange = no(onChange)\n  }, deps)\n\n  useLayoutEffect(() => {\n    const observers = observable.get($O)\n    observers.add(observer)\n    return () => {\n      observers.delete(observer)\n    }\n  }, [observable])\n}\n"],"names":["useMemo"],"mappings":";;;;;;AAEA,MAAM,QAAQ,MAAM,cAAc;MAErB,YAAY,MAAM;MAClB,eAAe,MAAM,MAAM,WAAW;;oBCIjD,QACA,UACA,MACA;AACA,QAAM,aAAa,OAAO;AAC1B,MAAI,CAAC,YAAY;AACf,UAAM,MAAM;AAAA;AAGd,QAAM,WAAWA,WACf,QAAS,YACT;AAGF,kBAAgB,MAAM;AACpB,aAAS,WAAW,GAAG;AAAA,KACtB;AAEH,kBAAgB,MAAM;AACpB,UAAM,YAAY,WAAW,IAAI;AACjC,cAAU,IAAI;AACd,WAAO,MAAM;AACX,gBAAU,OAAO;AAAA;AAAA,KAElB,CAAC;AAAA;;;;"}