{
  "version": 3,
  "sources": ["../src/Tilia.mjs"],
  "sourcesContent": ["// Generated by ReScript, PLEASE EDIT WITH CARE\n\n\nlet raise = (function (message) {\n  throw new Error(message)\n});\n\nlet reraise = (function (e) {\n  console.error(\"Reraising exception after flush\");\n  throw e\n});\n\nlet callCb = (function(cb, k, v) { cb(k, v) });\n\nfunction cleanTrace(stack) {\n  if (typeof stack !== \"string\") return stack;\n  \n  const cleaned = [\"Exception thrown in computed or observe\"];\n  let collapsing = false;\n\n  for (const line of stack.split(\"\\n\")) {\n    if (/src\\/Tilia\\.mjs:\\d+:\\d+/.test(line)) {\n      if (!collapsing) {\n        cleaned.push(\"    [... tilia internals]\");\n        collapsing = true;\n      }\n    } else {\n      cleaned.push(line);\n      collapsing = false;\n    }\n  }\n\n  return cleaned.join(\"\\n\");\n}\n;\n\nlet symbol = (function(s) {\n  return Symbol.for('tilia:' + s);\n});\n\nlet indexKey = symbol(\"indexKey\");\n\nlet metaKey = symbol(\"metaKey\");\n\nlet dynamicKey = symbol(\"dynamicKey\");\n\nlet ctxKey = symbol(\"ctx\");\n\nlet proxiable = (function(v) {\n  if ( typeof v === 'object' && v !== null) {\n    const proto = Object.getPrototypeOf(v)\n    return proto === Object.prototype || proto === Array.prototype || proto === null\n  }\n  return false;\n});\n\nlet dynamic = (function(v) {\n  return typeof v === 'object' && v !== null && v[dynamicKey] ? v : undefined;\n});\n\nfunction readonly(o, k) {\n  let d = Object.getOwnPropertyDescriptor(o, k);\n  if (d == null) {\n    return false;\n  } else {\n    return d.writable === false;\n  }\n}\n\nlet setError = (function (root, e) {\n  if (typeof e === \"object\" && e !== null) {\n    if (e.stack) {\n      console.error(cleanTrace(e.stack));\n    } else {\n      console.error(e);\n    }\n    root.error = e;\n  }\n});\n\nfunction observeKey(observed, key) {\n  let w = observed.get(key);\n  if (w !== null && w !== undefined) {\n    return w;\n  }\n  w === null;\n  let w$1 = {\n    state: \"Pristine\",\n    key: key,\n    observed: observed,\n    observers: new Set()\n  };\n  observed.set(key, w$1);\n  return w$1;\n}\n\nfunction flush(root) {\n  if (root.expired.size > 0) {\n    while (root.expired.size > 0) {\n      let expired = root.expired;\n      root.expired = new Set();\n      expired.forEach(observer => observer.notify());\n    };\n  }\n  let gc = root.gc;\n  if (gc.active.size >= gc.threshold) {\n    gc.quarantine.forEach(w => {\n      if (w.state === \"Pristine\" && w.observers.size === 0) {\n        w.state = \"Cleared\";\n        w.observed.delete(w.key);\n        return;\n      }\n    });\n    gc.quarantine = gc.active;\n    gc.active = new Set();\n  }\n  if (root.error === undefined) {\n    return;\n  }\n  let e = root.error;\n  root.error = undefined;\n  reraise(e);\n}\n\nfunction _clear(observer) {\n  let root = observer.root;\n  observer.observing.forEach(watchers => {\n    if (watchers.state === \"Pristine\" && watchers.observers.delete(observer) && watchers.observers.size === 0) {\n      root.gc.active.add(watchers);\n      return;\n    }\n  });\n  let o = root.observer;\n  if ((o == null) || o !== observer) {\n    return;\n  } else {\n    root.observer = undefined;\n    if (!root.lock) {\n      return flush(root);\n    } else {\n      return;\n    }\n  }\n}\n\nfunction _ready(observer, notifyIfChanged) {\n  observer.observing.find((w, idx) => {\n    let match = w.state;\n    switch (match) {\n      case \"Pristine\" :\n        w.observers.add(observer);\n        return false;\n      case \"Changed\" :\n      case \"Cleared\" :\n        break;\n    }\n    if (notifyIfChanged) {\n      _clear(observer);\n      observer.notify();\n      return true;\n    }\n    let w$1 = observeKey(w.observed, w.key);\n    w$1.observers.add(observer);\n    observer.observing[idx] = w$1;\n    return false;\n  });\n  let root = observer.root;\n  let o = root.observer;\n  if ((o == null) || o !== observer) {\n    return;\n  } else {\n    root.observer = undefined;\n    if (!root.lock) {\n      return flush(root);\n    } else {\n      return;\n    }\n  }\n}\n\nfunction notify(root, observed, key) {\n  let watchers = observed.get(key);\n  if (watchers == null) {\n    return;\n  }\n  observed.delete(key);\n  watchers.state = \"Changed\";\n  let expired = root.expired;\n  watchers.observers.forEach(observer => {\n    _clear(observer);\n    expired.add(observer);\n  });\n  let match = root.observer;\n  if (match !== null && match !== undefined) {\n    return;\n  }\n  match === null;\n  if (!root.lock) {\n    return flush(root);\n  }\n}\n\nfunction set(node, isArray, _fromComputed, target, _key, _value) {\n  while (true) {\n    let value = _value;\n    let key = _key;\n    let fromComputed = _fromComputed;\n    let hadKey = Reflect.has(target, key);\n    let prev = Reflect.get(target, key);\n    let proxiable$1 = proxiable(value);\n    let same;\n    if (proxiable$1) {\n      let m = Reflect.get(value, metaKey);\n      same = (m == null) ? prev === value : m.target === prev;\n    } else {\n      same = prev === value;\n    }\n    if (same) {\n      return true;\n    }\n    if (!Reflect.set(target, key, value)) {\n      return false;\n    }\n    let key$1 = isArray && key === \"length\" ? indexKey : key;\n    if (proxiable$1) {\n      node.proxied.delete(key$1);\n    }\n    if (!fromComputed) {\n      let clear = node.computes.get(key$1);\n      if (clear == null) {\n        clear === null;\n      } else {\n        node.computes.delete(key$1);\n        clear();\n      }\n    }\n    let match = dynamic(value);\n    if (match == null) {\n      match === null;\n    } else {\n      let w = node.observed.get(key$1);\n      if (w == null) {\n        return true;\n      }\n      if (!(w.state === \"Pristine\" && w.observers.size > 0)) {\n        return true;\n      }\n      Reflect.set(target, key$1, prev);\n      let compile$1 = callback => compile(node, isArray, target, key$1, callback);\n      let setter = v => {\n        set(node, isArray, true, target, key$1, v);\n      };\n      let get = _value => {\n        while (true) {\n          let value = _value;\n          let dynamic$1 = dynamic(value);\n          if (dynamic$1 == null) {\n            return value;\n          }\n          let v;\n          switch (dynamic$1.TAG) {\n            case \"Computed\" :\n              v = compile$1(dynamic$1._0);\n              break;\n            case \"Source\" :\n              let source = dynamic$1._0;\n              let v$1 = source.value;\n              let val = {\n                contents: v$1\n              };\n              let set = v => {\n                val.contents = v;\n                setter(v);\n              };\n              v = compile$1((set(v$1), () => {\n                let callback = source.source;\n                callback(val.contents, set);\n                return val.contents;\n              }));\n              break;\n            case \"Store\" :\n              let store = dynamic$1._0;\n              v = compile$1(() => store.store(setter));\n              break;\n            case \"Compiled\" :\n              let rebuild = dynamic$1._0.rebuild;\n              v = rebuild();\n              break;\n          }\n          if (!proxiable(v)) {\n            return v;\n          }\n          _value = v;\n          continue;\n        };\n      };\n      let v = get(value);\n      _value = v;\n      _key = key$1;\n      _fromComputed = true;\n      continue;\n    }\n    if (!fromComputed) {\n      let cbs = node.changes;\n      if (cbs == null) {\n        cbs === null;\n      } else {\n        cbs.forEach(cb => callCb(cb, key, value));\n      }\n    }\n    notify(node.root, node.observed, key$1);\n    if (!hadKey) {\n      notify(node.root, node.observed, indexKey);\n    }\n    return true;\n  };\n}\n\nfunction compile(node, isArray, target, key, callback) {\n  let lastValue = {\n    v: undefined\n  };\n  let observer = {\n    o: undefined\n  };\n  let compute = {\n    rebuild: undefined\n  };\n  let compiled = {\n    TAG: \"Compiled\",\n    _0: compute\n  };\n  Reflect.set(compiled, dynamicKey, true);\n  let notify = () => {\n    let v = Reflect.get(target, key);\n    if (v !== compiled) {\n      lastValue.v = v;\n    }\n    let w = node.observed.get(key);\n    if (w !== null && w !== undefined) {\n      if (w.observers.size > 0) {\n        set(node, isArray, true, target, key, rebuild());\n      } else {\n        w.state = \"Changed\";\n        node.observed.delete(key);\n        node.proxied.delete(key);\n        Reflect.set(target, key, compiled);\n      }\n      return;\n    }\n    w === null;\n    node.proxied.delete(key);\n    Reflect.set(target, key, compiled);\n  };\n  let rebuild = () => {\n    let curr = Reflect.get(target, key);\n    if (curr === compiled) {\n      Reflect.set(target, key, lastValue.v);\n    } else {\n      lastValue.v = curr;\n    }\n    let o_root = node.root;\n    let o_observing = [];\n    let o = {\n      root: o_root,\n      notify: notify,\n      observing: o_observing\n    };\n    observer.o = o;\n    let previous = node.root.observer;\n    node.root.observer = o;\n    let v;\n    try {\n      v = callback();\n    } catch (_e) {\n      setError(node.root, _e);\n      _clear(o);\n      if (previous == null) {\n        previous === null;\n      } else {\n        _clear(previous);\n      }\n      v = lastValue.v;\n    }\n    node.root.observer = previous;\n    if (o_observing.length === 0) {\n      _clear(o);\n      node.computes.delete(key);\n    } else {\n      _ready(o, false);\n    }\n    return v;\n  };\n  compute.rebuild = rebuild;\n  let clear = () => {\n    let o = observer.o;\n    if (o == null) {\n      return;\n    }\n    _clear(o);\n    ((o.observing.length = 0));\n  };\n  node.computes.set(key, clear);\n  return rebuild();\n}\n\nfunction proxify(root, _target) {\n  while (true) {\n    let target = _target;\n    let m = Reflect.get(target, metaKey);\n    if (m == null) {\n      m === null;\n    } else {\n      if (m.root === root) {\n        return m;\n      }\n      _target = m.target;\n      continue;\n    }\n    let node = {\n      root: root,\n      observed: new Map(),\n      proxied: new Map(),\n      computes: new Map(),\n      changes: undefined\n    };\n    let meta = ((node.target = target, node));\n    let isArray = Array.isArray(target);\n    let proxy = new Proxy(target, {\n      set: (extra, extra$1, extra$2) => set(node, isArray, false, extra, extra$1, extra$2),\n      deleteProperty: (extra, extra$1) => {\n        let res = Reflect.deleteProperty(extra, extra$1);\n        node.proxied.delete(extra$1);\n        let clear = node.computes.get(extra$1);\n        if (clear == null) {\n          clear === null;\n        } else {\n          node.computes.delete(extra$1);\n          clear();\n        }\n        let cbs = node.changes;\n        if (cbs == null) {\n          cbs === null;\n        } else {\n          cbs.forEach(cb => callCb(cb, extra$1, undefined));\n        }\n        notify(node.root, node.observed, extra$1);\n        return res;\n      },\n      get: (extra, extra$1) => {\n        if (extra$1 === metaKey) {\n          return meta;\n        }\n        if (extra$1 === dynamicKey) {\n          return undefined;\n        }\n        let value = Reflect.get(extra, extra$1);\n        let own = Object.hasOwn(extra, extra$1);\n        if (!(value === undefined || own)) {\n          return value;\n        }\n        let o = node.root.observer;\n        if (o == null) {\n          o === null;\n        } else if (isArray && extra$1 === \"length\") {\n          let w = observeKey(node.observed, indexKey);\n          o.observing.push(w);\n        } else {\n          let w$1 = observeKey(node.observed, extra$1);\n          o.observing.push(w$1);\n        }\n        if (!(proxiable(value) && !readonly(extra, extra$1))) {\n          return value;\n        }\n        let m = node.proxied.get(extra$1);\n        if (m !== null && m !== undefined) {\n          return m.proxy;\n        }\n        m === null;\n        let compile$1 = callback => compile(node, isArray, extra, extra$1, callback);\n        let setter = v => {\n          set(node, isArray, true, extra, extra$1, v);\n        };\n        let get = _value => {\n          while (true) {\n            let value = _value;\n            let dynamic$1 = dynamic(value);\n            if (dynamic$1 == null) {\n              return value;\n            }\n            let v;\n            switch (dynamic$1.TAG) {\n              case \"Computed\" :\n                v = compile$1(dynamic$1._0);\n                break;\n              case \"Source\" :\n                let source = dynamic$1._0;\n                let v$1 = source.value;\n                let val = {\n                  contents: v$1\n                };\n                let set = v => {\n                  val.contents = v;\n                  setter(v);\n                };\n                v = compile$1((set(v$1), () => {\n                  let callback = source.source;\n                  callback(val.contents, set);\n                  return val.contents;\n                }));\n                break;\n              case \"Store\" :\n                let store = dynamic$1._0;\n                v = compile$1(() => store.store(setter));\n                break;\n              case \"Compiled\" :\n                let rebuild = dynamic$1._0.rebuild;\n                v = rebuild();\n                break;\n            }\n            if (!proxiable(v)) {\n              return v;\n            }\n            _value = v;\n            continue;\n          };\n        };\n        let v = get(value);\n        Reflect.set(extra, extra$1, v);\n        if (!proxiable(v)) {\n          return v;\n        }\n        let m$1 = proxify(node.root, v);\n        node.proxied.set(extra$1, m$1);\n        return m$1.proxy;\n      },\n      ownKeys: extra => {\n        let root = node.root;\n        let observed = node.observed;\n        let keys = Reflect.ownKeys(extra);\n        let o = root.observer;\n        if (o == null) {\n          o === null;\n        } else {\n          let w = observeKey(observed, indexKey);\n          o.observing.push(w);\n        }\n        return keys;\n      }\n    });\n    meta.proxy = proxy;\n    return meta;\n  };\n}\n\nfunction makeTilia(root) {\n  return value => {\n    if (!proxiable(value)) {\n      raise(\"tilia: value is not an object or array\");\n    }\n    return proxify(root, value).proxy;\n  };\n}\n\nfunction makeDerived(p) {\n  return fn => {\n    let v = {\n      TAG: \"Computed\",\n      _0: () => fn(p.contents)\n    };\n    Reflect.set(v, dynamicKey, true);\n    return v;\n  };\n}\n\nfunction makeReactive(derived) {\n  return { derived }\n}\n;\n\nfunction makeCarve(root) {\n  return fn => {\n    let p = {\n      contents: {}\n    };\n    let ctx = makeReactive(makeDerived(p));\n    let value = fn(ctx);\n    if (!proxiable(value)) {\n      raise(\"tilia: value is not an object or array\");\n    }\n    let value$1 = proxify(root, value).proxy;\n    p.contents = value$1;\n    return value$1;\n  };\n}\n\nfunction makeObserve(root) {\n  return callback => {\n    let notify = () => {\n      let observer_observing = [];\n      let observer = {\n        root: root,\n        notify: notify,\n        observing: observer_observing\n      };\n      root.observer = observer;\n      let o = observer;\n      try {\n        callback();\n        return _ready(o, true);\n      } catch (_e) {\n        setError(root, _e);\n        return _clear(o);\n      }\n    };\n    notify();\n  };\n}\n\nfunction makeWatch(root, observe_) {\n  return (callback, effect) => {\n    let notify = () => {\n      let o = observe_(notify);\n      let v = callback();\n      o.root.observer = undefined;\n      if (root.lock) {\n        effect(v);\n      } else {\n        root.lock = true;\n        effect(v);\n        root.lock = false;\n      }\n      _ready(o, false);\n    };\n    let o = observe_(notify);\n    callback();\n    _ready(o, false);\n  };\n}\n\nfunction makeBatch(root) {\n  return callback => {\n    if (root.lock) {\n      return callback();\n    } else {\n      root.lock = true;\n      callback();\n      root.lock = false;\n      return flush(root);\n    }\n  };\n}\n\nlet orphanError = \"Cannot modify or access the value of an orphan computation. See https://tiliajs.com/errors#orphan\";\n\nfunction warningHandler() {\n  return {\n    set: (param, _key, _value) => raise(orphanError),\n    deleteProperty: (param, _key) => raise(orphanError),\n    get: (target, key) => {\n      if (key === dynamicKey || key === metaKey || key === \"TAG\" || key === \"_0\") {\n        return Reflect.get(target, key);\n      } else {\n        return raise(orphanError);\n      }\n    },\n    ownKeys: target => Reflect.ownKeys(target)\n  };\n}\n\nfunction computed(fn) {\n  let v = {\n    TAG: \"Computed\",\n    _0: fn\n  };\n  Reflect.set(v, dynamicKey, true);\n  return new Proxy(v, warningHandler());\n}\n\nfunction makeSource(tilia) {\n  return (value, source) => {\n    let d = dynamic(source);\n    let s;\n    s = (d == null) ? ({\n        source: source,\n        value: value\n      }) : (tilia({value, source: d}));\n    let v = {\n      TAG: \"Source\",\n      _0: s\n    };\n    Reflect.set(v, dynamicKey, true);\n    return v;\n  };\n}\n\nfunction makeStore(tilia) {\n  return callback => {\n    let d = dynamic(callback);\n    let s;\n    s = (d == null) ? ({\n        store: callback\n      }) : (tilia({store: d}));\n    let v = {\n      TAG: \"Store\",\n      _0: s\n    };\n    Reflect.set(v, dynamicKey, true);\n    return v;\n  };\n}\n\nfunction makeDerived$1(tilia) {\n  return fn => tilia({\n    value: computed(() => fn())\n  });\n}\n\nfunction _done(o) {\n  o.root.observer = undefined;\n}\n\nfunction connector(tilia, carve, observe, watch, batch, signal, derived, source, store, _observe) {\n  return {\n    tilia,\n    carve,\n    observe,\n    watch,\n    batch,\n    // extra\n    signal,\n    derived,\n    source,\n    store,\n    // internal\n    _observe,\n  };\n}\n;\n\nfunction make(gcOpt) {\n  let gc = gcOpt !== undefined ? gcOpt : 50;\n  let gc$1 = {\n    active: new Set(),\n    quarantine: new Set(),\n    threshold: gc\n  };\n  let root = {\n    observer: undefined,\n    expired: new Set(),\n    lock: false,\n    error: undefined,\n    id: Math.random(),\n    gc: gc$1\n  };\n  let tilia = makeTilia(root);\n  let _observe = extra => {\n    let observer_observing = [];\n    let observer = {\n      root: root,\n      notify: extra,\n      observing: observer_observing\n    };\n    root.observer = observer;\n    return observer;\n  };\n  return connector(tilia, makeCarve(root), makeObserve(root), makeWatch(root, _observe), makeBatch(root), value => {\n    let s = tilia({\n      value: value\n    });\n    let set = v => {\n      s.value = v;\n    };\n    return [\n      s,\n      set\n    ];\n  }, makeDerived$1(tilia), makeSource(tilia), makeStore(tilia), _observe);\n}\n\nlet ctx = Reflect.get(globalThis, ctxKey);\n\nlet _ctx;\n\nlet exit = 0;\n\nif (ctx == null) {\n  exit = 1;\n} else {\n  _ctx = ctx;\n}\n\nif (exit === 1) {\n  let ctx$1 = make(undefined);\n  Reflect.set(globalThis, ctxKey, ctx$1);\n  _ctx = ctx$1;\n}\n\nfunction readonly$1(data) {\n  let obj = {};\n  Object.defineProperty(obj, \"data\", {\n    writable: false,\n    enumerable: true,\n    configurable: false,\n    value: data\n  });\n  return obj;\n}\n\nfunction lift(s) {\n  return computed(() => s.value);\n}\n\nfunction changing(accessor, guard) {\n  let empty_upsert = [];\n  let empty_remove = [];\n  let empty = {\n    upsert: empty_upsert,\n    remove: empty_remove\n  };\n  let m = Reflect.get(accessor(), metaKey);\n  let meta;\n  meta = (m == null) ? raise(\"changing: argument is not a tilia proxy\") : m;\n  let root = meta.root;\n  let pending = new Map();\n  let counter = proxify(root, {\n    changed: 0\n  }).proxy;\n  let currentMeta = {\n    contents: meta\n  };\n  let register = (m, cb) => {\n    let cbs = m.changes;\n    let cbs$1;\n    let exit = 0;\n    if (cbs == null) {\n      exit = 1;\n    } else {\n      cbs$1 = cbs;\n    }\n    if (exit === 1) {\n      let cbs$2 = new Set();\n      m.changes = cbs$2;\n      cbs$1 = cbs$2;\n    }\n    cbs$1.add(cb);\n    return cbs$1;\n  };\n  let drain = () => {\n    let upsert = [];\n    let remove = [];\n    pending.forEach((v, k) => {\n      if (v == null) {\n        remove.push(k);\n      } else {\n        upsert.push(v);\n      }\n      pending.delete(k);\n    });\n    return {\n      upsert: upsert,\n      remove: remove\n    };\n  };\n  let cb = (key, value) => {\n    pending.set(key, value);\n    counter.changed = counter.changed + 1 | 0;\n  };\n  let currentCbs = {\n    contents: register(meta, cb)\n  };\n  let reregister = () => {\n    let m = Reflect.get(accessor(), metaKey);\n    if ((m == null) || m === currentMeta.contents) {\n      return;\n    } else {\n      currentCbs.contents.delete(cb);\n      currentCbs.contents = register(m, cb);\n      currentMeta.contents = m;\n      return;\n    }\n  };\n  let capture = guard !== undefined ? () => {\n      reregister();\n      if (guard()) {\n        Reflect.get(counter, \"changed\");\n        if (pending.size > 0) {\n          return drain();\n        } else {\n          return empty;\n        }\n      } else {\n        return empty;\n      }\n    } : () => {\n      reregister();\n      Reflect.get(counter, \"changed\");\n      if (pending.size > 0) {\n        return drain();\n      } else {\n        return empty;\n      }\n    };\n  let mute = fn => {\n    reregister();\n    currentCbs.contents.delete(cb);\n    if (root.lock) {\n      fn();\n    } else {\n      root.lock = true;\n      fn();\n      root.lock = false;\n      flush(root);\n    }\n    currentCbs.contents.add(cb);\n  };\n  return {\n    changes: capture,\n    mute: mute\n  };\n}\n\nlet tilia = _ctx.tilia;\n\nlet carve = _ctx.carve;\n\nlet observe = _ctx.observe;\n\nlet watch = _ctx.watch;\n\nlet batch = _ctx.batch;\n\nlet signal = _ctx.signal;\n\nlet derived = _ctx.derived;\n\nlet source = _ctx.source;\n\nlet store = _ctx.store;\n\nlet _observe = _ctx._observe;\n\nfunction _meta(p) {\n  return Reflect.get(p, metaKey);\n}\n\nexport {\n  make,\n  tilia,\n  carve,\n  observe,\n  watch,\n  batch,\n  signal,\n  derived,\n  readonly$1 as readonly,\n  computed,\n  lift,\n  source,\n  store,\n  changing,\n  _observe,\n  _done,\n  _ready,\n  _clear,\n  _meta,\n  _ctx,\n}\n/*  Not a pure module */\n"],
  "mappings": "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",
  "names": ["v", "_value", "value", "source", "set", "store", "notify", "m", "root", "derived", "ctx", "notify", "o", "tilia", "source", "carve", "observe", "watch", "batch", "signal", "derived", "store", "_observe", "tilia", "_observe", "set", "m", "cb", "exit"]
}
