{"version":3,"sources":["../../src/utils/createScope.ts","../../src/utils/processStateChanges.ts","../../src/utils/state/scope.ts"],"names":["_path","_root","_value","_storage","_parent","$tate","_children","concat_default","_load","_onValueChange","createSubscribe_default","_subscribeWithError","createSubscribeWithError","_callbacks","_subscribeWithLoad","createLoadableSubscribe","load","_valueToggler","addToBatch","alwaysFalse_default","set","noop"],"mappings":"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","file":"chunk-EMSOJCQE.cjs","sourcesContent":["import type {\n  LoadableState,\n  ScopeCallbackMap,\n  State,\n  ValueChangeCallbacks,\n} from '../types';\nimport concat from './concat';\nimport { $tate } from './constants';\nimport {\n  createLoadableSubscribe,\n  createSubscribeWithError,\n} from './createAsyncSubscribe';\nimport createSubscribe from './createSubscribe';\nimport { load } from './state/wrapped';\n\ntype Child = {\n  readonly _root: State | LoadableState<any, any, any>;\n  readonly _storage: ScopeMap;\n  readonly _path: readonly string[];\n  _parent: ScopeCallbackMap;\n};\n\ntype ScopeMap = Map<typeof $tate, State | LoadableState<any, any, any>> &\n  Map<string, Child>;\n\nfunction get(this: State) {\n  const path = this._path!;\n\n  const l = path.length;\n\n  let value = this._root!._value;\n\n  for (\n    let i = 0;\n    i < l && (value = value ? value[path[i]] : undefined) !== undefined;\n    i++\n  ) {}\n\n  return value;\n}\n\nfunction set(this: State, value: any) {\n  return this._root!.set(value, this._path, false);\n}\n\nconst childHandler: ProxyHandler<Child> = {\n  get(target, prop: string) {\n    const { _storage } = target;\n\n    if (_storage.has(prop)) {\n      return _storage.get(prop);\n    }\n\n    const rootState = target._root;\n\n    const currentState = target._parent;\n\n    let next;\n\n    if (prop != $tate) {\n      const nextState: ScopeCallbackMap = { _children: undefined };\n\n      next = new Proxy(\n        {\n          _storage: new Map(),\n          _root: rootState,\n          _path: concat(target._path, prop),\n          _parent: nextState,\n        },\n        childHandler\n      );\n\n      if (!currentState._children) {\n        currentState._children = new Map();\n      }\n\n      currentState._children.set(prop, nextState);\n    } else {\n      const callbacks: ValueChangeCallbacks = new Set();\n\n      next = Object.assign(\n        currentState,\n        '_load' in rootState\n          ? ({\n              _root: rootState,\n              _path: target._path,\n              get,\n              set,\n              _onValueChange: createSubscribe(callbacks),\n              _subscribeWithError: createSubscribeWithError(\n                callbacks,\n                rootState.error._callbacks,\n                rootState\n              ),\n              _subscribeWithLoad:\n                rootState._load &&\n                createLoadableSubscribe(callbacks, rootState),\n              _callbacks: callbacks,\n              load: rootState._load && load,\n              control: rootState.control,\n              error: rootState.error,\n              isLoaded: rootState.isLoaded,\n              _valueToggler: 0,\n              _children: currentState._children,\n            } as Partial<LoadableState<any, any, any>> as LoadableState<\n              any,\n              any,\n              any\n            >)\n          : ({\n              _root: rootState,\n              _path: target._path,\n              get,\n              set,\n              _onValueChange: createSubscribe(callbacks),\n              _callbacks: callbacks,\n              _valueToggler: 0,\n              _children: currentState._children,\n            } as State)\n      );\n    }\n\n    _storage.set(prop, next as any);\n\n    return next;\n  },\n};\n\nconst rootHandler: ProxyHandler<ScopeMap> = {\n  get(_storage, prop: string) {\n    if (_storage.has(prop)) {\n      return _storage.get(prop);\n    }\n\n    const state = _storage.get($tate)!;\n\n    const nextState: ScopeCallbackMap = { _children: undefined };\n\n    const next = new Proxy(\n      {\n        _storage: new Map(),\n        _root: state,\n        _path: [prop],\n        _parent: nextState,\n      },\n      childHandler\n    );\n\n    if (!state._children) {\n      state._children = new Map();\n    }\n\n    state._children.set(prop, nextState);\n\n    _storage.set(prop, next);\n\n    return next;\n  },\n};\n\nconst createScope = (state: State): any =>\n  new Proxy(new Map().set($tate, state), rootHandler);\n\nexport default createScope;\n","import type { ScopeCallbackMap, State } from '../types';\nimport alwaysFalse from './alwaysFalse';\nimport { addToBatch } from './batching';\n\nconst objectPrototype = Object.prototype;\n\nconst arrayPrototype = Array.prototype;\n\nconst datePrototype = Date.prototype;\n\nconst getPrototypeOf = Object.getPrototypeOf;\n\nconst handleMandatoryCheck = (\n  prevValue: any,\n  nextValue: any,\n  storage: Map<string, ScopeCallbackMap>\n): ((key: string) => boolean) | false => {\n  let equalList: Set<string> | false = new Set();\n\n  const it = storage.keys();\n\n  const next = it.next.bind(it);\n\n  for (let i = storage.size; i--; ) {\n    const key = next().value;\n\n    const state = storage.get(key)!;\n\n    const newValue = nextValue[key];\n\n    if (processStateChanges(prevValue[key], newValue, state)) {\n      equalList = false;\n\n      if (state._callbacks) {\n        addToBatch(state as State, newValue);\n      }\n    } else if (equalList) {\n      equalList.add(key);\n    }\n  }\n\n  return equalList && equalList.has.bind(equalList);\n};\n\nconst handlePrevNil = (\n  nextValue: any,\n  storage: Map<string, ScopeCallbackMap>\n) => {\n  const it = storage.keys();\n\n  const itNext = it.next.bind(it);\n\n  for (let i = storage.size; i--; ) {\n    const key = itNext().value;\n\n    const next = nextValue[key];\n\n    if (next !== undefined) {\n      const state = storage.get(key)!;\n\n      if (state._children && next && typeof next == 'object') {\n        handlePrevNil(next, state._children);\n      }\n\n      if (state._callbacks) {\n        addToBatch(state as State, next);\n      }\n    }\n  }\n};\n\nconst handleNextNil = (\n  prevValue: any,\n  storage: Map<string, ScopeCallbackMap>\n) => {\n  const it = storage.keys();\n\n  const next = it.next.bind(it);\n\n  for (let i = storage.size; i--; ) {\n    const key = next().value;\n\n    const prev = prevValue[key];\n\n    if (prev !== undefined) {\n      const state = storage.get(key)!;\n\n      if (state._children && prev && typeof prev == 'object') {\n        handleNextNil(prev, state._children);\n      }\n\n      if (state._callbacks) {\n        addToBatch(state as State, undefined);\n      }\n    }\n  }\n};\n\nconst processStateChanges = (\n  prevValue: any,\n  nextValue: any,\n  state: State | ScopeCallbackMap | undefined | false | null\n) => {\n  if (prevValue === nextValue) {\n    return false;\n  }\n\n  const children = state && state._children;\n\n  if (prevValue == null || nextValue == null) {\n    if (children) {\n      if (\n        nextValue === undefined &&\n        prevValue &&\n        typeof prevValue == 'object'\n      ) {\n        handleNextNil(prevValue, children);\n      } else if (\n        prevValue === undefined &&\n        nextValue &&\n        typeof nextValue == 'object'\n      ) {\n        handlePrevNil(nextValue, children);\n      }\n    }\n\n    return true;\n  }\n\n  if (typeof prevValue != 'object' && typeof nextValue != 'object') {\n    return true;\n  }\n\n  const aPrototype = getPrototypeOf(prevValue);\n\n  if (aPrototype != getPrototypeOf(nextValue)) {\n    if (children) {\n      handleMandatoryCheck(prevValue, nextValue, children);\n    }\n\n    return true;\n  }\n\n  if (aPrototype == objectPrototype) {\n    const isChecked = children\n      ? handleMandatoryCheck(prevValue, nextValue, children)\n      : alwaysFalse;\n\n    if (!isChecked) {\n      return true;\n    }\n\n    const aKeys = Object.keys(prevValue);\n\n    const l = aKeys.length;\n\n    if (l != Object.keys(nextValue).length) {\n      return true;\n    }\n\n    const getStorage = children ? children.get.bind(children) : alwaysFalse;\n\n    for (let i = 0; i < l; i++) {\n      const key = aKeys[i];\n\n      if (\n        !isChecked(key) &&\n        processStateChanges(prevValue[key], nextValue[key], getStorage(key))\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  if (aPrototype == arrayPrototype) {\n    const isChecked = children\n      ? handleMandatoryCheck(prevValue, nextValue, children)\n      : alwaysFalse;\n\n    if (!isChecked) {\n      return true;\n    }\n\n    const l = prevValue.length;\n\n    if (l != nextValue.length) {\n      return true;\n    }\n\n    const getStorage = children ? children.get.bind(children) : alwaysFalse;\n\n    for (let i = 0; i < l; i++) {\n      const key = '' + i;\n\n      if (\n        !isChecked(key) &&\n        processStateChanges(prevValue[i], nextValue[i], getStorage(key))\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  if (aPrototype == datePrototype) {\n    return prevValue.getTime() != nextValue.getTime();\n  }\n\n  return true;\n};\n\nexport default processStateChanges;\n","import noop from 'lodash.noop';\nimport type { State, ScopeCallbackMap } from '../../types';\nimport { addToBatch } from '../batching';\nimport processStateChanges from '../processStateChanges';\n\ntype ScopedState = State & ScopeCallbackMap;\n\nconst deepSet = (\n  value: any,\n  nextValue: any,\n  path: readonly string[],\n  index: number,\n  lastIndex: number,\n  pushValueArr: ((value: any) => void)[]\n): any => {\n  const key = path[index];\n\n  if (value != null && typeof value != 'object') {\n    value = null;\n  }\n\n  if (index < lastIndex) {\n    nextValue = deepSet(\n      value && value[key],\n      nextValue,\n      path,\n      index + 1,\n      lastIndex,\n      pushValueArr\n    );\n  }\n\n  pushValueArr[index](nextValue);\n\n  if (value != null ? !Array.isArray(value) : isNaN(+key)) {\n    return value ? { ...value, [key]: nextValue } : { [key]: nextValue };\n  }\n\n  const arr = value ? value.slice() : new Array(+key + 1);\n\n  arr[key] = nextValue;\n\n  return arr;\n};\n\nexport function set(\n  this: ScopedState,\n  nextValue: any,\n  path?: readonly string[]\n) {\n  const self = this;\n\n  let currentNode: ScopeCallbackMap | State | undefined = self;\n\n  let prevValue = self._value;\n\n  const l = path ? path.length : 0;\n\n  const nodesQueue: State[] = [];\n\n  const valuesArr: any[] = [];\n\n  const pushToValuesArr = valuesArr.push.bind(valuesArr);\n\n  const pushArr: ((value: any) => void)[] = new Array(l);\n\n  for (let i = 0; i < l; i++) {\n    const k = path![i];\n\n    currentNode = currentNode._children && currentNode._children.get(k);\n\n    if (currentNode) {\n      if (currentNode._callbacks) {\n        nodesQueue.push(currentNode as State);\n\n        pushArr[i] = pushToValuesArr;\n      } else {\n        pushArr[i] = noop;\n      }\n    } else {\n      for (; i < l; i++) {\n        prevValue = prevValue ? prevValue[path![i]] : undefined;\n\n        pushArr[i] = noop;\n      }\n\n      break;\n    }\n\n    prevValue = prevValue ? prevValue[k] : undefined;\n  }\n\n  if (processStateChanges(prevValue, nextValue, currentNode)) {\n    if (path) {\n      nextValue = deepSet(self._value, nextValue, path, 0, l - 1, pushArr);\n\n      for (let i = nodesQueue.length; i--; ) {\n        addToBatch(nodesQueue[i], valuesArr[i]);\n      }\n    }\n\n    addToBatch(self, nextValue);\n\n    self._value = nextValue;\n  }\n}\n"]}