{
  "version": 3,
  "sources": ["../../../../node_modules/.pnpm/@zag-js+anatomy@1.32.0/node_modules/@zag-js/anatomy/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+utils@1.32.0/node_modules/@zag-js/utils/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+collection@1.32.0/node_modules/@zag-js/collection/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+dom-query@1.32.0/node_modules/@zag-js/dom-query/dist/index.mjs", "../../../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs", "../../../../node_modules/.pnpm/@floating-ui+core@1.7.3/node_modules/@floating-ui/core/dist/floating-ui.core.mjs", "../../../../node_modules/.pnpm/@floating-ui+utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs", "../../../../node_modules/.pnpm/@floating-ui+dom@1.7.4/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs", "../../../../node_modules/.pnpm/@zag-js+popper@1.32.0/node_modules/@zag-js/popper/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+core@1.32.0/node_modules/@zag-js/core/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+interact-outside@1.32.0/node_modules/@zag-js/interact-outside/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+dismissable@1.32.0/node_modules/@zag-js/dismissable/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+types@1.32.0/node_modules/@zag-js/types/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+select@1.32.0/node_modules/@zag-js/select/dist/index.mjs", "../../../../node_modules/.pnpm/proxy-compare@3.0.1/node_modules/proxy-compare/dist/index.js", "../../../../node_modules/.pnpm/@zag-js+store@1.32.0/node_modules/@zag-js/store/dist/index.mjs", "../../../../node_modules/.pnpm/@zag-js+vanilla@1.32.0/node_modules/@zag-js/vanilla/dist/index.mjs", "../../src/lib/component.ts", "../../src/lib/util.ts", "../../src/components/select.ts"],
  "sourcesContent": ["// src/create-anatomy.ts\nvar createAnatomy = (name, parts = []) => ({\n  parts: (...values) => {\n    if (isEmpty(parts)) {\n      return createAnatomy(name, values);\n    }\n    throw new Error(\"createAnatomy().parts(...) should only be called once. Did you mean to use .extendWith(...) ?\");\n  },\n  extendWith: (...values) => createAnatomy(name, [...parts, ...values]),\n  omit: (...values) => createAnatomy(name, parts.filter((part) => !values.includes(part))),\n  rename: (newName) => createAnatomy(newName, parts),\n  keys: () => parts,\n  build: () => [...new Set(parts)].reduce(\n    (prev, part) => Object.assign(prev, {\n      [part]: {\n        selector: [\n          `&[data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`,\n          `& [data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`\n        ].join(\", \"),\n        attrs: { \"data-scope\": toKebabCase(name), \"data-part\": toKebabCase(part) }\n      }\n    }),\n    {}\n  )\n});\nvar toKebabCase = (value) => value.replace(/([A-Z])([A-Z])/g, \"$1-$2\").replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[\\s_]+/g, \"-\").toLowerCase();\nvar isEmpty = (v) => v.length === 0;\n\nexport { createAnatomy };\n", "var __defProp = Object.defineProperty;\nvar __typeError = (msg) => {\n  throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n\n// src/array.ts\nfunction toArray(v) {\n  if (v == null) return [];\n  return Array.isArray(v) ? v : [v];\n}\nvar fromLength = (length) => Array.from(Array(length).keys());\nvar first = (v) => v[0];\nvar last = (v) => v[v.length - 1];\nvar isEmpty = (v) => v.length === 0;\nvar has = (v, t) => v.indexOf(t) !== -1;\nvar add = (v, ...items) => v.concat(items);\nvar remove = (v, ...items) => v.filter((t) => !items.includes(t));\nvar removeAt = (v, i) => v.filter((_, idx) => idx !== i);\nvar insertAt = (v, i, ...items) => [...v.slice(0, i), ...items, ...v.slice(i)];\nvar uniq = (v) => Array.from(new Set(v));\nvar diff = (a, b) => {\n  const set = new Set(b);\n  return a.filter((t) => !set.has(t));\n};\nvar addOrRemove = (v, item) => has(v, item) ? remove(v, item) : add(v, item);\nfunction clear(v) {\n  while (v.length > 0) v.pop();\n  return v;\n}\nfunction nextIndex(v, idx, opts = {}) {\n  const { step = 1, loop = true } = opts;\n  const next2 = idx + step;\n  const len = v.length;\n  const last2 = len - 1;\n  if (idx === -1) return step > 0 ? 0 : last2;\n  if (next2 < 0) return loop ? last2 : 0;\n  if (next2 >= len) return loop ? 0 : idx > len ? len : idx;\n  return next2;\n}\nfunction next(v, idx, opts = {}) {\n  return v[nextIndex(v, idx, opts)];\n}\nfunction prevIndex(v, idx, opts = {}) {\n  const { step = 1, loop = true } = opts;\n  return nextIndex(v, idx, { step: -step, loop });\n}\nfunction prev(v, index, opts = {}) {\n  return v[prevIndex(v, index, opts)];\n}\nfunction chunk(v, size) {\n  return v.reduce((rows, value, index) => {\n    if (index % size === 0) rows.push([value]);\n    else last(rows)?.push(value);\n    return rows;\n  }, []);\n}\nfunction flatArray(arr) {\n  return arr.reduce((flat, item) => {\n    if (Array.isArray(item)) {\n      return flat.concat(flatArray(item));\n    }\n    return flat.concat(item);\n  }, []);\n}\nfunction partition(arr, fn) {\n  return arr.reduce(\n    ([pass, fail], value) => {\n      if (fn(value)) pass.push(value);\n      else fail.push(value);\n      return [pass, fail];\n    },\n    [[], []]\n  );\n}\n\n// src/equal.ts\nvar isArrayLike = (value) => value?.constructor.name === \"Array\";\nvar isArrayEqual = (a, b) => {\n  if (a.length !== b.length) return false;\n  for (let i = 0; i < a.length; i++) {\n    if (!isEqual(a[i], b[i])) return false;\n  }\n  return true;\n};\nvar isEqual = (a, b) => {\n  if (Object.is(a, b)) return true;\n  if (a == null && b != null || a != null && b == null) return false;\n  if (typeof a?.isEqual === \"function\" && typeof b?.isEqual === \"function\") {\n    return a.isEqual(b);\n  }\n  if (typeof a === \"function\" && typeof b === \"function\") {\n    return a.toString() === b.toString();\n  }\n  if (isArrayLike(a) && isArrayLike(b)) {\n    return isArrayEqual(Array.from(a), Array.from(b));\n  }\n  if (!(typeof a === \"object\") || !(typeof b === \"object\")) return false;\n  const keys = Object.keys(b ?? /* @__PURE__ */ Object.create(null));\n  const length = keys.length;\n  for (let i = 0; i < length; i++) {\n    const hasKey = Reflect.has(a, keys[i]);\n    if (!hasKey) return false;\n  }\n  for (let i = 0; i < length; i++) {\n    const key = keys[i];\n    if (!isEqual(a[key], b[key])) return false;\n  }\n  return true;\n};\n\n// src/guard.ts\nvar isDev = () => process.env.NODE_ENV !== \"production\";\nvar isArray = (v) => Array.isArray(v);\nvar isBoolean = (v) => v === true || v === false;\nvar isObjectLike = (v) => v != null && typeof v === \"object\";\nvar isObject = (v) => isObjectLike(v) && !isArray(v);\nvar isNumber = (v) => typeof v === \"number\" && !Number.isNaN(v);\nvar isString = (v) => typeof v === \"string\";\nvar isFunction = (v) => typeof v === \"function\";\nvar isNull = (v) => v == null;\nvar hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nvar baseGetTag = (v) => Object.prototype.toString.call(v);\nvar fnToString = Function.prototype.toString;\nvar objectCtorString = fnToString.call(Object);\nvar isPlainObject = (v) => {\n  if (!isObjectLike(v) || baseGetTag(v) != \"[object Object]\" || isFrameworkElement(v)) return false;\n  const proto = Object.getPrototypeOf(v);\n  if (proto === null) return true;\n  const Ctor = hasProp(proto, \"constructor\") && proto.constructor;\n  return typeof Ctor == \"function\" && Ctor instanceof Ctor && fnToString.call(Ctor) == objectCtorString;\n};\nvar isReactElement = (x) => typeof x === \"object\" && x !== null && \"$$typeof\" in x && \"props\" in x;\nvar isVueElement = (x) => typeof x === \"object\" && x !== null && \"__v_isVNode\" in x;\nvar isFrameworkElement = (x) => isReactElement(x) || isVueElement(x);\n\n// src/functions.ts\nvar runIfFn = (v, ...a) => {\n  const res = typeof v === \"function\" ? v(...a) : v;\n  return res ?? void 0;\n};\nvar cast = (v) => v;\nvar identity = (v) => v();\nvar noop = () => {\n};\nvar callAll = (...fns) => (...a) => {\n  fns.forEach(function(fn) {\n    fn?.(...a);\n  });\n};\nvar uuid = /* @__PURE__ */ (() => {\n  let id = 0;\n  return () => {\n    id++;\n    return id.toString(36);\n  };\n})();\nfunction match(key, record, ...args) {\n  if (key in record) {\n    const fn = record[key];\n    return isFunction(fn) ? fn(...args) : fn;\n  }\n  const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`);\n  Error.captureStackTrace?.(error, match);\n  throw error;\n}\nvar tryCatch = (fn, fallback) => {\n  try {\n    return fn();\n  } catch (error) {\n    if (error instanceof Error) {\n      Error.captureStackTrace?.(error, tryCatch);\n    }\n    return fallback?.();\n  }\n};\nfunction throttle(fn, wait = 0) {\n  let lastCall = 0;\n  let timeout = null;\n  return ((...args) => {\n    const now = Date.now();\n    const timeSinceLastCall = now - lastCall;\n    if (timeSinceLastCall >= wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      fn(...args);\n      lastCall = now;\n    } else if (!timeout) {\n      timeout = setTimeout(() => {\n        fn(...args);\n        lastCall = Date.now();\n        timeout = null;\n      }, wait - timeSinceLastCall);\n    }\n  });\n}\nfunction debounce(fn, wait = 0) {\n  let timeout = null;\n  return ((...args) => {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = null;\n    }\n    timeout = setTimeout(() => {\n      fn(...args);\n    }, wait);\n  });\n}\nvar toChar = (code) => String.fromCharCode(code + (code > 25 ? 39 : 97));\nfunction toName(code) {\n  let name = \"\";\n  let x;\n  for (x = Math.abs(code); x > 52; x = x / 52 | 0) name = toChar(x % 52) + name;\n  return toChar(x % 52) + name;\n}\nfunction toPhash(h, x) {\n  let i = x.length;\n  while (i) h = h * 33 ^ x.charCodeAt(--i);\n  return h;\n}\nvar hash = (value) => toName(toPhash(5381, value) >>> 0);\n\n// src/number.ts\nvar { floor, abs, round, min, max, pow, sign } = Math;\nvar isNaN = (v) => Number.isNaN(v);\nvar nan = (v) => isNaN(v) ? 0 : v;\nvar mod = (v, m) => (v % m + m) % m;\nvar wrap = (v, vmax) => (v % vmax + vmax) % vmax;\nvar getMinValueAtIndex = (i, v, vmin) => i === 0 ? vmin : v[i - 1];\nvar getMaxValueAtIndex = (i, v, vmax) => i === v.length - 1 ? vmax : v[i + 1];\nvar isValueAtMax = (v, vmax) => nan(v) >= vmax;\nvar isValueAtMin = (v, vmin) => nan(v) <= vmin;\nvar isValueWithinRange = (v, vmin, vmax) => {\n  const value = nan(v);\n  const minCheck = vmin == null || value >= vmin;\n  const maxCheck = vmax == null || value <= vmax;\n  return minCheck && maxCheck;\n};\nvar roundValue = (v, vmin, step) => round((nan(v) - vmin) / step) * step + vmin;\nvar clampValue = (v, vmin, vmax) => min(max(nan(v), vmin), vmax);\nvar clampPercent = (v) => clampValue(v, 0, 1);\nvar getValuePercent = (v, vmin, vmax) => (nan(v) - vmin) / (vmax - vmin);\nvar getPercentValue = (p, vmin, vmax, step) => clampValue(roundValue(p * (vmax - vmin) + vmin, vmin, step), vmin, vmax);\nvar roundToStepPrecision = (v, step) => {\n  let rv = v;\n  let ss = step.toString();\n  let pi = ss.indexOf(\".\");\n  let p = pi >= 0 ? ss.length - pi : 0;\n  if (p > 0) {\n    let pw = pow(10, p);\n    rv = round(rv * pw) / pw;\n  }\n  return rv;\n};\nvar roundToDpr = (v, dpr) => typeof dpr === \"number\" ? floor(v * dpr + 0.5) / dpr : round(v);\nvar snapValueToStep = (v, vmin, vmax, step) => {\n  const min2 = vmin != null ? Number(vmin) : 0;\n  const max2 = Number(vmax);\n  const remainder = (v - min2) % step;\n  let snapped = abs(remainder) * 2 >= step ? v + sign(remainder) * (step - abs(remainder)) : v - remainder;\n  snapped = roundToStepPrecision(snapped, step);\n  if (!isNaN(min2) && snapped < min2) {\n    snapped = min2;\n  } else if (!isNaN(max2) && snapped > max2) {\n    const stepsInRange = floor((max2 - min2) / step);\n    const largestValidStep = min2 + stepsInRange * step;\n    snapped = stepsInRange <= 0 || largestValidStep < min2 ? max2 : largestValidStep;\n  }\n  return roundToStepPrecision(snapped, step);\n};\nvar setValueAtIndex = (vs, i, v) => {\n  if (vs[i] === v) return vs;\n  return [...vs.slice(0, i), v, ...vs.slice(i + 1)];\n};\nfunction getValueSetterAtIndex(index, ctx) {\n  const minValueAtIndex = getMinValueAtIndex(index, ctx.values, ctx.min);\n  const maxValueAtIndex = getMaxValueAtIndex(index, ctx.values, ctx.max);\n  let nextValues = ctx.values.slice();\n  return function setValue(value) {\n    let nextValue = snapValueToStep(value, minValueAtIndex, maxValueAtIndex, ctx.step);\n    nextValues = setValueAtIndex(nextValues, index, value);\n    nextValues[index] = nextValue;\n    return nextValues;\n  };\n}\nfunction getNextStepValue(index, ctx) {\n  const nextValue = ctx.values[index] + ctx.step;\n  return getValueSetterAtIndex(index, ctx)(nextValue);\n}\nfunction getPreviousStepValue(index, ctx) {\n  const nextValue = ctx.values[index] - ctx.step;\n  return getValueSetterAtIndex(index, ctx)(nextValue);\n}\nvar getClosestValueIndex = (vs, t) => {\n  let i = vs.findIndex((v) => t - v < 0);\n  if (i === 0) return i;\n  if (i === -1) return vs.length - 1;\n  let vLeft = vs[i - 1];\n  let vRight = vs[i];\n  if (abs(vLeft - t) < abs(vRight - t)) return i - 1;\n  return i;\n};\nvar getClosestValue = (vs, t) => vs[getClosestValueIndex(vs, t)];\nvar getValueRanges = (vs, vmin, vmax, gap) => vs.map((v, i) => ({\n  min: i === 0 ? vmin : vs[i - 1] + gap,\n  max: i === vs.length - 1 ? vmax : vs[i + 1] - gap,\n  value: v\n}));\nvar getValueTransformer = (va, vb) => {\n  const [a, b] = va;\n  const [c, d] = vb;\n  return (v) => a === b || c === d ? c : c + (d - c) / (b - a) * (v - a);\n};\nvar toFixedNumber = (v, d = 0, b = 10) => {\n  const pow2 = Math.pow(b, d);\n  return round(v * pow2) / pow2;\n};\nvar countDecimals = (value) => {\n  if (!Number.isFinite(value)) return 0;\n  let e = 1, p = 0;\n  while (Math.round(value * e) / e !== value) {\n    e *= 10;\n    p += 1;\n  }\n  return p;\n};\nvar decimalOp = (a, op, b) => {\n  let result = op === \"+\" ? a + b : a - b;\n  if (a % 1 !== 0 || b % 1 !== 0) {\n    const multiplier = 10 ** Math.max(countDecimals(a), countDecimals(b));\n    a = Math.round(a * multiplier);\n    b = Math.round(b * multiplier);\n    result = op === \"+\" ? a + b : a - b;\n    result /= multiplier;\n  }\n  return result;\n};\nvar incrementValue = (v, s) => decimalOp(nan(v), \"+\", s);\nvar decrementValue = (v, s) => decimalOp(nan(v), \"-\", s);\nvar toPx = (v) => typeof v === \"number\" ? `${v}px` : v;\n\n// src/object.ts\nfunction compact(obj) {\n  if (!isPlainObject(obj) || obj === void 0) return obj;\n  const keys = Reflect.ownKeys(obj).filter((key) => typeof key === \"string\");\n  const filtered = {};\n  for (const key of keys) {\n    const value = obj[key];\n    if (value !== void 0) {\n      filtered[key] = compact(value);\n    }\n  }\n  return filtered;\n}\nvar json = (v) => JSON.parse(JSON.stringify(v));\nfunction pick(obj, keys) {\n  const filtered = {};\n  for (const key of keys) {\n    const value = obj[key];\n    if (value !== void 0) {\n      filtered[key] = value;\n    }\n  }\n  return filtered;\n}\nfunction splitProps(props, keys) {\n  const rest = {};\n  const result = {};\n  const keySet = new Set(keys);\n  const ownKeys = Reflect.ownKeys(props);\n  for (const key of ownKeys) {\n    if (keySet.has(key)) {\n      result[key] = props[key];\n    } else {\n      rest[key] = props[key];\n    }\n  }\n  return [result, rest];\n}\nvar createSplitProps = (keys) => {\n  return function split(props) {\n    return splitProps(props, keys);\n  };\n};\nfunction omit(obj, keys) {\n  return createSplitProps(keys)(obj)[1];\n}\n\n// src/store.ts\nfunction createStore(initialState, compare = Object.is) {\n  let state = { ...initialState };\n  const listeners = /* @__PURE__ */ new Set();\n  const subscribe = (listener) => {\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  };\n  const publish = () => {\n    listeners.forEach((listener) => listener());\n  };\n  const get = (key) => {\n    return state[key];\n  };\n  const set = (key, value) => {\n    if (!compare(state[key], value)) {\n      state[key] = value;\n      publish();\n    }\n  };\n  const update = (updates) => {\n    let hasChanges = false;\n    for (const key in updates) {\n      const value = updates[key];\n      if (value !== void 0 && !compare(state[key], value)) {\n        state[key] = value;\n        hasChanges = true;\n      }\n    }\n    if (hasChanges) {\n      publish();\n    }\n  };\n  const snapshot = () => ({ ...state });\n  return {\n    subscribe,\n    get,\n    set,\n    update,\n    snapshot\n  };\n}\n\n// src/timers.ts\nvar currentTime = () => performance.now();\nvar _tick;\nvar Timer = class {\n  constructor(onTick) {\n    this.onTick = onTick;\n    __publicField(this, \"frameId\", null);\n    __publicField(this, \"pausedAtMs\", null);\n    __publicField(this, \"context\");\n    __publicField(this, \"cancelFrame\", () => {\n      if (this.frameId === null) return;\n      cancelAnimationFrame(this.frameId);\n      this.frameId = null;\n    });\n    __publicField(this, \"setStartMs\", (startMs) => {\n      this.context.startMs = startMs;\n    });\n    __publicField(this, \"start\", () => {\n      if (this.frameId !== null) return;\n      const now = currentTime();\n      if (this.pausedAtMs !== null) {\n        this.context.startMs += now - this.pausedAtMs;\n        this.pausedAtMs = null;\n      } else {\n        this.context.startMs = now;\n      }\n      this.frameId = requestAnimationFrame(__privateGet(this, _tick));\n    });\n    __publicField(this, \"pause\", () => {\n      if (this.frameId === null) return;\n      this.cancelFrame();\n      this.pausedAtMs = currentTime();\n    });\n    __publicField(this, \"stop\", () => {\n      if (this.frameId === null) return;\n      this.cancelFrame();\n      this.pausedAtMs = null;\n    });\n    __privateAdd(this, _tick, (now) => {\n      this.context.now = now;\n      this.context.deltaMs = now - this.context.startMs;\n      const shouldContinue = this.onTick(this.context);\n      if (shouldContinue === false) {\n        this.stop();\n        return;\n      }\n      this.frameId = requestAnimationFrame(__privateGet(this, _tick));\n    });\n    this.context = { now: 0, startMs: currentTime(), deltaMs: 0 };\n  }\n  get elapsedMs() {\n    if (this.pausedAtMs !== null) {\n      return this.pausedAtMs - this.context.startMs;\n    }\n    return currentTime() - this.context.startMs;\n  }\n};\n_tick = new WeakMap();\nfunction setRafInterval(fn, intervalMs) {\n  const timer = new Timer(({ now, deltaMs }) => {\n    if (deltaMs >= intervalMs) {\n      const startMs = intervalMs > 0 ? now - deltaMs % intervalMs : now;\n      timer.setStartMs(startMs);\n      fn({ startMs, deltaMs });\n    }\n  });\n  timer.start();\n  return () => timer.stop();\n}\nfunction setRafTimeout(fn, delayMs) {\n  const timer = new Timer(({ deltaMs }) => {\n    if (deltaMs >= delayMs) {\n      fn();\n      return false;\n    }\n  });\n  timer.start();\n  return () => timer.stop();\n}\n\n// src/warning.ts\nfunction warn(...a) {\n  const m = a.length === 1 ? a[0] : a[1];\n  const c = a.length === 2 ? a[0] : true;\n  if (c && process.env.NODE_ENV !== \"production\") {\n    console.warn(m);\n  }\n}\nfunction invariant(...a) {\n  const m = a.length === 1 ? a[0] : a[1];\n  const c = a.length === 2 ? a[0] : true;\n  if (c && process.env.NODE_ENV !== \"production\") {\n    throw new Error(m);\n  }\n}\nfunction ensure(c, m) {\n  if (c == null) throw new Error(m());\n}\nfunction ensureProps(props, keys, scope) {\n  let missingKeys = [];\n  for (const key of keys) {\n    if (props[key] == null) missingKeys.push(key);\n  }\n  if (missingKeys.length > 0)\n    throw new Error(`[zag-js${scope ? ` > ${scope}` : \"\"}] missing required props: ${missingKeys.join(\", \")}`);\n}\n\nexport { Timer, add, addOrRemove, callAll, cast, chunk, clampPercent, clampValue, clear, compact, createSplitProps, createStore, debounce, decrementValue, diff, ensure, ensureProps, first, flatArray, fromLength, getClosestValue, getClosestValueIndex, getMaxValueAtIndex, getMinValueAtIndex, getNextStepValue, getPercentValue, getPreviousStepValue, getValuePercent, getValueRanges, getValueSetterAtIndex, getValueTransformer, has, hasProp, hash, identity, incrementValue, insertAt, invariant, isArray, isBoolean, isDev, isEmpty, isEqual, isFunction, isNaN, isNull, isNumber, isObject, isObjectLike, isPlainObject, isString, isValueAtMax, isValueAtMin, isValueWithinRange, json, last, match, mod, nan, next, nextIndex, noop, omit, partition, pick, prev, prevIndex, remove, removeAt, roundToDpr, roundToStepPrecision, roundValue, runIfFn, setRafInterval, setRafTimeout, setValueAtIndex, snapValueToStep, splitProps, throttle, toArray, toFixedNumber, toPx, tryCatch, uniq, uuid, warn, wrap };\n", "import { hasProp, isObject, isEqual, chunk, prevIndex, nextIndex } from '@zag-js/utils';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar fallback = {\n  itemToValue(item) {\n    if (typeof item === \"string\") return item;\n    if (isObject(item) && hasProp(item, \"value\")) return item.value;\n    return \"\";\n  },\n  itemToString(item) {\n    if (typeof item === \"string\") return item;\n    if (isObject(item) && hasProp(item, \"label\")) return item.label;\n    return fallback.itemToValue(item);\n  },\n  isItemDisabled(item) {\n    if (isObject(item) && hasProp(item, \"disabled\")) return !!item.disabled;\n    return false;\n  }\n};\nvar ListCollection = class _ListCollection {\n  constructor(options) {\n    this.options = options;\n    /**\n     * The items in the collection\n     */\n    __publicField(this, \"items\");\n    __publicField(this, \"indexMap\", null);\n    /**\n     * Copy the collection\n     */\n    __publicField(this, \"copy\", (items) => {\n      return new _ListCollection({ ...this.options, items: items ?? [...this.items] });\n    });\n    /**\n     * Check if the collection is equal to another collection\n     */\n    __publicField(this, \"isEqual\", (other) => {\n      return isEqual(this.items, other.items);\n    });\n    /**\n     * Function to update the collection items\n     */\n    __publicField(this, \"setItems\", (items) => {\n      return this.copy(items);\n    });\n    /**\n     * Returns all the values in the collection\n     */\n    __publicField(this, \"getValues\", (items = this.items) => {\n      const values = [];\n      for (const item of items) {\n        const value = this.getItemValue(item);\n        if (value != null) values.push(value);\n      }\n      return values;\n    });\n    /**\n     * Get the item based on its value\n     */\n    __publicField(this, \"find\", (value) => {\n      if (value == null) return null;\n      const index = this.indexOf(value);\n      return index !== -1 ? this.at(index) : null;\n    });\n    /**\n     * Get the items based on its values\n     */\n    __publicField(this, \"findMany\", (values) => {\n      const result = [];\n      for (const value of values) {\n        const item = this.find(value);\n        if (item != null) result.push(item);\n      }\n      return result;\n    });\n    /**\n     * Get the item based on its index\n     */\n    __publicField(this, \"at\", (index) => {\n      if (!this.options.groupBy && !this.options.groupSort) {\n        return this.items[index] ?? null;\n      }\n      let idx = 0;\n      const groups = this.group();\n      for (const [, items] of groups) {\n        for (const item of items) {\n          if (idx === index) return item;\n          idx++;\n        }\n      }\n      return null;\n    });\n    __publicField(this, \"sortFn\", (valueA, valueB) => {\n      const indexA = this.indexOf(valueA);\n      const indexB = this.indexOf(valueB);\n      return (indexA ?? 0) - (indexB ?? 0);\n    });\n    /**\n     * Sort the values based on their index\n     */\n    __publicField(this, \"sort\", (values) => {\n      return [...values].sort(this.sortFn.bind(this));\n    });\n    /**\n     * Convert an item to a value\n     */\n    __publicField(this, \"getItemValue\", (item) => {\n      if (item == null) return null;\n      return this.options.itemToValue?.(item) ?? fallback.itemToValue(item);\n    });\n    /**\n     * Whether an item is disabled\n     */\n    __publicField(this, \"getItemDisabled\", (item) => {\n      if (item == null) return false;\n      return this.options.isItemDisabled?.(item) ?? fallback.isItemDisabled(item);\n    });\n    /**\n     * Convert an item to a string\n     */\n    __publicField(this, \"stringifyItem\", (item) => {\n      if (item == null) return null;\n      return this.options.itemToString?.(item) ?? fallback.itemToString(item);\n    });\n    /**\n     * Convert a value to a string\n     */\n    __publicField(this, \"stringify\", (value) => {\n      if (value == null) return null;\n      return this.stringifyItem(this.find(value));\n    });\n    /**\n     * Convert an array of items to a string\n     */\n    __publicField(this, \"stringifyItems\", (items, separator = \", \") => {\n      const strs = [];\n      for (const item of items) {\n        const str = this.stringifyItem(item);\n        if (str != null) strs.push(str);\n      }\n      return strs.join(separator);\n    });\n    /**\n     * Convert an array of items to a string\n     */\n    __publicField(this, \"stringifyMany\", (value, separator) => {\n      return this.stringifyItems(this.findMany(value), separator);\n    });\n    /**\n     * Whether the collection has a value\n     */\n    __publicField(this, \"has\", (value) => {\n      return this.indexOf(value) !== -1;\n    });\n    /**\n     * Whether the collection has an item\n     */\n    __publicField(this, \"hasItem\", (item) => {\n      if (item == null) return false;\n      return this.has(this.getItemValue(item));\n    });\n    /**\n     * Group items by the groupBy function provided in options\n     * Returns an array of [groupKey, items] tuples\n     */\n    __publicField(this, \"group\", () => {\n      const { groupBy, groupSort } = this.options;\n      if (!groupBy) return [[\"\", [...this.items]]];\n      const groups = /* @__PURE__ */ new Map();\n      this.items.forEach((item, index) => {\n        const groupKey = groupBy(item, index);\n        if (!groups.has(groupKey)) {\n          groups.set(groupKey, []);\n        }\n        groups.get(groupKey).push(item);\n      });\n      let entries = Array.from(groups.entries());\n      if (groupSort) {\n        entries.sort(([a], [b]) => {\n          if (typeof groupSort === \"function\") return groupSort(a, b);\n          if (Array.isArray(groupSort)) {\n            const indexA = groupSort.indexOf(a);\n            const indexB = groupSort.indexOf(b);\n            if (indexA === -1) return 1;\n            if (indexB === -1) return -1;\n            return indexA - indexB;\n          }\n          if (groupSort === \"asc\") return a.localeCompare(b);\n          if (groupSort === \"desc\") return b.localeCompare(a);\n          return 0;\n        });\n      }\n      return entries;\n    });\n    /**\n     * Returns the next value in the collection\n     */\n    __publicField(this, \"getNextValue\", (value, step = 1, clamp = false) => {\n      let index = this.indexOf(value);\n      if (index === -1) return null;\n      index = clamp ? Math.min(index + step, this.size - 1) : index + step;\n      while (index <= this.size && this.getItemDisabled(this.at(index))) index++;\n      return this.getItemValue(this.at(index));\n    });\n    /**\n     * Returns the previous value in the collection\n     */\n    __publicField(this, \"getPreviousValue\", (value, step = 1, clamp = false) => {\n      let index = this.indexOf(value);\n      if (index === -1) return null;\n      index = clamp ? Math.max(index - step, 0) : index - step;\n      while (index >= 0 && this.getItemDisabled(this.at(index))) index--;\n      return this.getItemValue(this.at(index));\n    });\n    /**\n     * Get the index of an item based on its key\n     */\n    __publicField(this, \"indexOf\", (value) => {\n      if (value == null) return -1;\n      if (!this.options.groupBy && !this.options.groupSort) {\n        return this.items.findIndex((item) => this.getItemValue(item) === value);\n      }\n      if (!this.indexMap) {\n        this.indexMap = /* @__PURE__ */ new Map();\n        let idx = 0;\n        const groups = this.group();\n        for (const [, items] of groups) {\n          for (const item of items) {\n            const itemValue = this.getItemValue(item);\n            if (itemValue != null) {\n              this.indexMap.set(itemValue, idx);\n            }\n            idx++;\n          }\n        }\n      }\n      return this.indexMap.get(value) ?? -1;\n    });\n    __publicField(this, \"getByText\", (text, current) => {\n      const currentIndex = current != null ? this.indexOf(current) : -1;\n      const isSingleKey = text.length === 1;\n      for (let i = 0; i < this.items.length; i++) {\n        const item = this.items[(currentIndex + i + 1) % this.items.length];\n        if (isSingleKey && this.getItemValue(item) === current) continue;\n        if (this.getItemDisabled(item)) continue;\n        if (match(this.stringifyItem(item), text)) return item;\n      }\n      return void 0;\n    });\n    /**\n     * Search for a value based on a query\n     */\n    __publicField(this, \"search\", (queryString, options) => {\n      const { state, currentValue, timeout = 350 } = options;\n      const search = state.keysSoFar + queryString;\n      const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n      const query = isRepeated ? search[0] : search;\n      const item = this.getByText(query, currentValue);\n      const value = this.getItemValue(item);\n      function cleanup() {\n        clearTimeout(state.timer);\n        state.timer = -1;\n      }\n      function update(value2) {\n        state.keysSoFar = value2;\n        cleanup();\n        if (value2 !== \"\") {\n          state.timer = +setTimeout(() => {\n            update(\"\");\n            cleanup();\n          }, timeout);\n        }\n      }\n      update(search);\n      return value;\n    });\n    /**\n     * Update an item in the collection\n     */\n    __publicField(this, \"update\", (value, item) => {\n      let index = this.indexOf(value);\n      if (index === -1) return this;\n      return this.copy([...this.items.slice(0, index), item, ...this.items.slice(index + 1)]);\n    });\n    /**\n     * Update an item in the collection if it exists, otherwise append it\n     */\n    __publicField(this, \"upsert\", (value, item, mode = \"append\") => {\n      let index = this.indexOf(value);\n      if (index === -1) {\n        const fn = mode === \"append\" ? this.append : this.prepend;\n        return fn(item);\n      }\n      return this.copy([...this.items.slice(0, index), item, ...this.items.slice(index + 1)]);\n    });\n    /**\n     * Insert items at a specific index\n     */\n    __publicField(this, \"insert\", (index, ...items) => {\n      return this.copy(insert(this.items, index, ...items));\n    });\n    /**\n     * Insert items before a specific value\n     */\n    __publicField(this, \"insertBefore\", (value, ...items) => {\n      let toIndex = this.indexOf(value);\n      if (toIndex === -1) {\n        if (this.items.length === 0) toIndex = 0;\n        else return this;\n      }\n      return this.copy(insert(this.items, toIndex, ...items));\n    });\n    /**\n     * Insert items after a specific value\n     */\n    __publicField(this, \"insertAfter\", (value, ...items) => {\n      let toIndex = this.indexOf(value);\n      if (toIndex === -1) {\n        if (this.items.length === 0) toIndex = 0;\n        else return this;\n      }\n      return this.copy(insert(this.items, toIndex + 1, ...items));\n    });\n    /**\n     * Prepend items to the collection\n     */\n    __publicField(this, \"prepend\", (...items) => {\n      return this.copy(insert(this.items, 0, ...items));\n    });\n    /**\n     * Append items to the collection\n     */\n    __publicField(this, \"append\", (...items) => {\n      return this.copy(insert(this.items, this.items.length, ...items));\n    });\n    /**\n     * Filter the collection\n     */\n    __publicField(this, \"filter\", (fn) => {\n      const filteredItems = this.items.filter((item, index) => fn(this.stringifyItem(item), index, item));\n      return this.copy(filteredItems);\n    });\n    /**\n     * Remove items from the collection\n     */\n    __publicField(this, \"remove\", (...itemsOrValues) => {\n      const values = itemsOrValues.map(\n        (itemOrValue) => typeof itemOrValue === \"string\" ? itemOrValue : this.getItemValue(itemOrValue)\n      );\n      return this.copy(\n        this.items.filter((item) => {\n          const value = this.getItemValue(item);\n          if (value == null) return false;\n          return !values.includes(value);\n        })\n      );\n    });\n    /**\n     * Move an item to a specific index\n     */\n    __publicField(this, \"move\", (value, toIndex) => {\n      const fromIndex = this.indexOf(value);\n      if (fromIndex === -1) return this;\n      return this.copy(move(this.items, [fromIndex], toIndex));\n    });\n    /**\n     * Move items before a specific value\n     */\n    __publicField(this, \"moveBefore\", (value, ...values) => {\n      let toIndex = this.items.findIndex((item) => this.getItemValue(item) === value);\n      if (toIndex === -1) return this;\n      let indices = values.map((value2) => this.items.findIndex((item) => this.getItemValue(item) === value2)).sort((a, b) => a - b);\n      return this.copy(move(this.items, indices, toIndex));\n    });\n    /**\n     * Move items after a specific value\n     */\n    __publicField(this, \"moveAfter\", (value, ...values) => {\n      let toIndex = this.items.findIndex((item) => this.getItemValue(item) === value);\n      if (toIndex === -1) return this;\n      let indices = values.map((value2) => this.items.findIndex((item) => this.getItemValue(item) === value2)).sort((a, b) => a - b);\n      return this.copy(move(this.items, indices, toIndex + 1));\n    });\n    /**\n     * Reorder items\n     */\n    __publicField(this, \"reorder\", (fromIndex, toIndex) => {\n      return this.copy(move(this.items, [fromIndex], toIndex));\n    });\n    /**\n     * Compare two values\n     */\n    __publicField(this, \"compareValue\", (a, b) => {\n      const indexA = this.indexOf(a);\n      const indexB = this.indexOf(b);\n      if (indexA < indexB) return -1;\n      if (indexA > indexB) return 1;\n      return 0;\n    });\n    /**\n     * Get the range of values between two values\n     */\n    __publicField(this, \"range\", (from, to) => {\n      let keys = [];\n      let key = from;\n      while (key != null) {\n        let item = this.find(key);\n        if (item) keys.push(key);\n        if (key === to) return keys;\n        key = this.getNextValue(key);\n      }\n      return [];\n    });\n    /**\n     * Get the range of values between two values\n     */\n    __publicField(this, \"getValueRange\", (from, to) => {\n      if (from && to) {\n        if (this.compareValue(from, to) <= 0) {\n          return this.range(from, to);\n        }\n        return this.range(to, from);\n      }\n      return [];\n    });\n    /**\n     * Convert the collection to a string\n     */\n    __publicField(this, \"toString\", () => {\n      let result = \"\";\n      for (const item of this.items) {\n        const value = this.getItemValue(item);\n        const label = this.stringifyItem(item);\n        const disabled = this.getItemDisabled(item);\n        const itemString = [value, label, disabled].filter(Boolean).join(\":\");\n        result += itemString + \",\";\n      }\n      return result;\n    });\n    /**\n     * Convert the collection to a JSON object\n     */\n    __publicField(this, \"toJSON\", () => {\n      return {\n        size: this.size,\n        first: this.firstValue,\n        last: this.lastValue\n      };\n    });\n    this.items = [...options.items];\n  }\n  /**\n   * Returns the number of items in the collection\n   */\n  get size() {\n    return this.items.length;\n  }\n  /**\n   * Returns the first value in the collection\n   */\n  get firstValue() {\n    let index = 0;\n    while (this.getItemDisabled(this.at(index))) index++;\n    return this.getItemValue(this.at(index));\n  }\n  /**\n   * Returns the last value in the collection\n   */\n  get lastValue() {\n    let index = this.size - 1;\n    while (this.getItemDisabled(this.at(index))) index--;\n    return this.getItemValue(this.at(index));\n  }\n  *[Symbol.iterator]() {\n    yield* this.items;\n  }\n};\nvar match = (label, query) => {\n  return !!label?.toLowerCase().startsWith(query.toLowerCase());\n};\nfunction isListCollection(v) {\n  return v instanceof ListCollection;\n}\nfunction insert(items, index, ...values) {\n  return [...items.slice(0, index), ...values, ...items.slice(index)];\n}\nfunction move(items, indices, toIndex) {\n  indices = [...indices].sort((a, b) => a - b);\n  const itemsToMove = indices.map((i) => items[i]);\n  for (let i = indices.length - 1; i >= 0; i--) {\n    items = [...items.slice(0, indices[i]), ...items.slice(indices[i] + 1)];\n  }\n  toIndex = Math.max(0, toIndex - indices.filter((i) => i < toIndex).length);\n  return [...items.slice(0, toIndex), ...itemsToMove, ...items.slice(toIndex)];\n}\n\n// src/grid-collection.ts\nvar GridCollection = class extends ListCollection {\n  constructor(options) {\n    const { columnCount } = options;\n    super(options);\n    __publicField(this, \"columnCount\");\n    __publicField(this, \"rows\", null);\n    /**\n     * Returns the row data in the grid\n     */\n    __publicField(this, \"getRows\", () => {\n      if (!this.rows) {\n        this.rows = chunk([...this.items], this.columnCount);\n      }\n      return this.rows;\n    });\n    /**\n     * Returns the number of rows in the grid\n     */\n    __publicField(this, \"getRowCount\", () => {\n      return Math.ceil(this.items.length / this.columnCount);\n    });\n    /**\n     * Returns the index of the specified row and column in the grid\n     */\n    __publicField(this, \"getCellIndex\", (row, column) => {\n      return row * this.columnCount + column;\n    });\n    /**\n     * Returns the item at the specified row and column in the grid\n     */\n    __publicField(this, \"getCell\", (row, column) => {\n      return this.at(this.getCellIndex(row, column));\n    });\n    /**\n     * Returns the row and column index for a given value\n     */\n    __publicField(this, \"getValueCell\", (value) => {\n      const index = this.indexOf(value);\n      if (index === -1) return null;\n      const row = Math.floor(index / this.columnCount);\n      const column = index % this.columnCount;\n      return { row, column };\n    });\n    /**\n     * Returns the value of the last enabled column in a row\n     */\n    __publicField(this, \"getLastEnabledColumnIndex\", (row) => {\n      for (let col = this.columnCount - 1; col >= 0; col--) {\n        const cell = this.getCell(row, col);\n        if (cell && !this.getItemDisabled(cell)) {\n          return col;\n        }\n      }\n      return null;\n    });\n    /**\n     * Returns the index of the first enabled column in a row\n     */\n    __publicField(this, \"getFirstEnabledColumnIndex\", (row) => {\n      for (let col = 0; col < this.columnCount; col++) {\n        const cell = this.getCell(row, col);\n        if (cell && !this.getItemDisabled(cell)) {\n          return col;\n        }\n      }\n      return null;\n    });\n    /**\n     * Returns the value of the previous row in the grid, based on the current value\n     */\n    __publicField(this, \"getPreviousRowValue\", (value, loop = false) => {\n      const currentCell = this.getValueCell(value);\n      if (currentCell === null) return null;\n      const rows = this.getRows();\n      const rowCount = rows.length;\n      let prevRowIndex = currentCell.row;\n      let prevColumnIndex = currentCell.column;\n      for (let i = 1; i <= rowCount; i++) {\n        prevRowIndex = prevIndex(rows, prevRowIndex, { loop });\n        const prevRow = rows[prevRowIndex];\n        if (!prevRow) continue;\n        const prevCell = prevRow[prevColumnIndex];\n        if (!prevCell) {\n          const lastColumnIndex = this.getLastEnabledColumnIndex(prevRowIndex);\n          if (lastColumnIndex != null) {\n            prevColumnIndex = lastColumnIndex;\n          }\n        }\n        const cell = this.getCell(prevRowIndex, prevColumnIndex);\n        if (!this.getItemDisabled(cell)) {\n          return this.getItemValue(cell);\n        }\n      }\n      return this.firstValue;\n    });\n    /**\n     * Returns the value of the next row in the grid, based on the current value\n     */\n    __publicField(this, \"getNextRowValue\", (value, loop = false) => {\n      const currentCell = this.getValueCell(value);\n      if (currentCell === null) return null;\n      const rows = this.getRows();\n      const rowCount = rows.length;\n      let nextRowIndex = currentCell.row;\n      let nextColumnIndex = currentCell.column;\n      for (let i = 1; i <= rowCount; i++) {\n        nextRowIndex = nextIndex(rows, nextRowIndex, { loop });\n        const nextRow = rows[nextRowIndex];\n        if (!nextRow) continue;\n        const nextCell = nextRow[nextColumnIndex];\n        if (!nextCell) {\n          const lastColumnIndex = this.getLastEnabledColumnIndex(nextRowIndex);\n          if (lastColumnIndex != null) {\n            nextColumnIndex = lastColumnIndex;\n          }\n        }\n        const cell = this.getCell(nextRowIndex, nextColumnIndex);\n        if (!this.getItemDisabled(cell)) {\n          return this.getItemValue(cell);\n        }\n      }\n      return this.lastValue;\n    });\n    this.columnCount = columnCount;\n  }\n};\nfunction isGridCollection(v) {\n  return hasProp(v, \"columnCount\") && hasProp(v, \"getRows\");\n}\nvar Selection = class _Selection extends Set {\n  constructor(values = []) {\n    super(values);\n    __publicField(this, \"selectionMode\", \"single\");\n    __publicField(this, \"deselectable\", true);\n    __publicField(this, \"copy\", () => {\n      const clone = new _Selection([...this]);\n      return this.sync(clone);\n    });\n    __publicField(this, \"sync\", (other) => {\n      other.selectionMode = this.selectionMode;\n      other.deselectable = this.deselectable;\n      return other;\n    });\n    __publicField(this, \"isEmpty\", () => {\n      return this.size === 0;\n    });\n    __publicField(this, \"isSelected\", (value) => {\n      if (this.selectionMode === \"none\" || value == null) {\n        return false;\n      }\n      return this.has(value);\n    });\n    __publicField(this, \"canSelect\", (collection, value) => {\n      return this.selectionMode !== \"none\" || !collection.getItemDisabled(collection.find(value));\n    });\n    __publicField(this, \"firstSelectedValue\", (collection) => {\n      let firstValue = null;\n      for (let value of this) {\n        if (!firstValue || collection.compareValue(value, firstValue) < 0) {\n          firstValue = value;\n        }\n      }\n      return firstValue;\n    });\n    __publicField(this, \"lastSelectedValue\", (collection) => {\n      let lastValue = null;\n      for (let value of this) {\n        if (!lastValue || collection.compareValue(value, lastValue) > 0) {\n          lastValue = value;\n        }\n      }\n      return lastValue;\n    });\n    __publicField(this, \"extendSelection\", (collection, anchorValue, targetValue) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (this.selectionMode === \"single\") {\n        return this.replaceSelection(collection, targetValue);\n      }\n      const selection = this.copy();\n      const lastSelected = Array.from(this).pop();\n      for (let key of collection.getValueRange(anchorValue, lastSelected ?? targetValue)) {\n        selection.delete(key);\n      }\n      for (let key of collection.getValueRange(targetValue, anchorValue)) {\n        if (this.canSelect(collection, key)) {\n          selection.add(key);\n        }\n      }\n      return selection;\n    });\n    __publicField(this, \"toggleSelection\", (collection, value) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (this.selectionMode === \"single\" && !this.isSelected(value)) {\n        return this.replaceSelection(collection, value);\n      }\n      const selection = this.copy();\n      if (selection.has(value)) {\n        selection.delete(value);\n      } else if (selection.canSelect(collection, value)) {\n        selection.add(value);\n      }\n      return selection;\n    });\n    __publicField(this, \"replaceSelection\", (collection, value) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (value == null) {\n        return this;\n      }\n      if (!this.canSelect(collection, value)) {\n        return this;\n      }\n      const selection = new _Selection([value]);\n      return this.sync(selection);\n    });\n    __publicField(this, \"setSelection\", (values) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      let selection = new _Selection();\n      for (let value of values) {\n        if (value != null) {\n          selection.add(value);\n          if (this.selectionMode === \"single\") {\n            break;\n          }\n        }\n      }\n      return this.sync(selection);\n    });\n    __publicField(this, \"clearSelection\", () => {\n      const selection = this.copy();\n      if (selection.deselectable && selection.size > 0) {\n        selection.clear();\n      }\n      return selection;\n    });\n    __publicField(this, \"select\", (collection, value, forceToggle) => {\n      if (this.selectionMode === \"none\") {\n        return this;\n      }\n      if (this.selectionMode === \"single\") {\n        if (this.isSelected(value) && this.deselectable) {\n          return this.toggleSelection(collection, value);\n        } else {\n          return this.replaceSelection(collection, value);\n        }\n      } else if (this.selectionMode === \"multiple\" || forceToggle) {\n        return this.toggleSelection(collection, value);\n      } else {\n        return this.replaceSelection(collection, value);\n      }\n    });\n    __publicField(this, \"deselect\", (value) => {\n      const selection = this.copy();\n      selection.delete(value);\n      return selection;\n    });\n    __publicField(this, \"isEqual\", (other) => {\n      return isEqual(Array.from(this), Array.from(other));\n    });\n  }\n};\n\n// src/tree-visit.ts\nfunction access(node, indexPath, options) {\n  for (let i = 0; i < indexPath.length; i++) node = options.getChildren(node, indexPath.slice(i + 1))[indexPath[i]];\n  return node;\n}\nfunction ancestorIndexPaths(indexPaths) {\n  const sortedPaths = sortIndexPaths(indexPaths);\n  const result = [];\n  const seen = /* @__PURE__ */ new Set();\n  for (const indexPath of sortedPaths) {\n    const key = indexPath.join();\n    if (!seen.has(key)) {\n      seen.add(key);\n      result.push(indexPath);\n    }\n  }\n  return result;\n}\nfunction compareIndexPaths(a, b) {\n  for (let i = 0; i < Math.min(a.length, b.length); i++) {\n    if (a[i] < b[i]) return -1;\n    if (a[i] > b[i]) return 1;\n  }\n  return a.length - b.length;\n}\nfunction sortIndexPaths(indexPaths) {\n  return indexPaths.sort(compareIndexPaths);\n}\nfunction find(node, options) {\n  let found;\n  visit(node, {\n    ...options,\n    onEnter: (child, indexPath) => {\n      if (options.predicate(child, indexPath)) {\n        found = child;\n        return \"stop\";\n      }\n    }\n  });\n  return found;\n}\nfunction findAll(node, options) {\n  const found = [];\n  visit(node, {\n    onEnter: (child, indexPath) => {\n      if (options.predicate(child, indexPath)) found.push(child);\n    },\n    getChildren: options.getChildren\n  });\n  return found;\n}\nfunction findIndexPath(node, options) {\n  let found;\n  visit(node, {\n    onEnter: (child, indexPath) => {\n      if (options.predicate(child, indexPath)) {\n        found = [...indexPath];\n        return \"stop\";\n      }\n    },\n    getChildren: options.getChildren\n  });\n  return found;\n}\nfunction reduce(node, options) {\n  let result = options.initialResult;\n  visit(node, {\n    ...options,\n    onEnter: (child, indexPath) => {\n      result = options.nextResult(result, child, indexPath);\n    }\n  });\n  return result;\n}\nfunction flatMap(node, options) {\n  return reduce(node, {\n    ...options,\n    initialResult: [],\n    nextResult: (result, child, indexPath) => {\n      result.push(...options.transform(child, indexPath));\n      return result;\n    }\n  });\n}\nfunction filter(node, options) {\n  const { predicate, create, getChildren } = options;\n  const filterRecursive = (node2, indexPath) => {\n    const children = getChildren(node2, indexPath);\n    const filteredChildren = [];\n    children.forEach((child, index) => {\n      const childIndexPath = [...indexPath, index];\n      const filteredChild = filterRecursive(child, childIndexPath);\n      if (filteredChild) filteredChildren.push(filteredChild);\n    });\n    const isRoot = indexPath.length === 0;\n    const nodeMatches = predicate(node2, indexPath);\n    const hasFilteredChildren = filteredChildren.length > 0;\n    if (isRoot || nodeMatches || hasFilteredChildren) {\n      return create(node2, filteredChildren, indexPath);\n    }\n    return null;\n  };\n  return filterRecursive(node, []) || create(node, [], []);\n}\nfunction flatten(rootNode, options) {\n  const nodes = [];\n  let idx = 0;\n  const idxMap = /* @__PURE__ */ new Map();\n  const parentMap = /* @__PURE__ */ new Map();\n  visit(rootNode, {\n    getChildren: options.getChildren,\n    onEnter: (node, indexPath) => {\n      if (!idxMap.has(node)) {\n        idxMap.set(node, idx++);\n      }\n      const children = options.getChildren(node, indexPath);\n      children.forEach((child) => {\n        if (!parentMap.has(child)) {\n          parentMap.set(child, node);\n        }\n        if (!idxMap.has(child)) {\n          idxMap.set(child, idx++);\n        }\n      });\n      const _children = children.length > 0 ? children.map((child) => idxMap.get(child)) : void 0;\n      const parent = parentMap.get(node);\n      const _parent = parent ? idxMap.get(parent) : void 0;\n      const _index = idxMap.get(node);\n      nodes.push({ ...node, _children, _parent, _index });\n    }\n  });\n  return nodes;\n}\nfunction insertOperation(index, nodes) {\n  return { type: \"insert\", index, nodes };\n}\nfunction removeOperation(indexes) {\n  return { type: \"remove\", indexes };\n}\nfunction replaceOperation() {\n  return { type: \"replace\" };\n}\nfunction splitIndexPath(indexPath) {\n  return [indexPath.slice(0, -1), indexPath[indexPath.length - 1]];\n}\nfunction getInsertionOperations(indexPath, nodes, operations = /* @__PURE__ */ new Map()) {\n  const [parentIndexPath, index] = splitIndexPath(indexPath);\n  for (let i = parentIndexPath.length - 1; i >= 0; i--) {\n    const parentKey = parentIndexPath.slice(0, i).join();\n    switch (operations.get(parentKey)?.type) {\n      case \"remove\":\n        continue;\n    }\n    operations.set(parentKey, replaceOperation());\n  }\n  const operation = operations.get(parentIndexPath.join());\n  switch (operation?.type) {\n    case \"remove\":\n      operations.set(parentIndexPath.join(), {\n        type: \"removeThenInsert\",\n        removeIndexes: operation.indexes,\n        insertIndex: index,\n        insertNodes: nodes\n      });\n      break;\n    default:\n      operations.set(parentIndexPath.join(), insertOperation(index, nodes));\n  }\n  return operations;\n}\nfunction getRemovalOperations(indexPaths) {\n  const operations = /* @__PURE__ */ new Map();\n  const indexesToRemove = /* @__PURE__ */ new Map();\n  for (const indexPath of indexPaths) {\n    const parentKey = indexPath.slice(0, -1).join();\n    const value = indexesToRemove.get(parentKey) ?? [];\n    value.push(indexPath[indexPath.length - 1]);\n    indexesToRemove.set(\n      parentKey,\n      value.sort((a, b) => a - b)\n    );\n  }\n  for (const indexPath of indexPaths) {\n    for (let i = indexPath.length - 2; i >= 0; i--) {\n      const parentKey = indexPath.slice(0, i).join();\n      if (!operations.has(parentKey)) {\n        operations.set(parentKey, replaceOperation());\n      }\n    }\n  }\n  for (const [parentKey, indexes] of indexesToRemove) {\n    operations.set(parentKey, removeOperation(indexes));\n  }\n  return operations;\n}\nfunction getReplaceOperations(indexPath, node) {\n  const operations = /* @__PURE__ */ new Map();\n  const [parentIndexPath, index] = splitIndexPath(indexPath);\n  for (let i = parentIndexPath.length - 1; i >= 0; i--) {\n    const parentKey = parentIndexPath.slice(0, i).join();\n    operations.set(parentKey, replaceOperation());\n  }\n  operations.set(parentIndexPath.join(), {\n    type: \"removeThenInsert\",\n    removeIndexes: [index],\n    insertIndex: index,\n    insertNodes: [node]\n  });\n  return operations;\n}\nfunction mutate(node, operations, options) {\n  return map(node, {\n    ...options,\n    getChildren: (node2, indexPath) => {\n      const key = indexPath.join();\n      const operation = operations.get(key);\n      switch (operation?.type) {\n        case \"replace\":\n        case \"remove\":\n        case \"removeThenInsert\":\n        case \"insert\":\n          return options.getChildren(node2, indexPath);\n        default:\n          return [];\n      }\n    },\n    transform: (node2, children, indexPath) => {\n      const key = indexPath.join();\n      const operation = operations.get(key);\n      switch (operation?.type) {\n        case \"remove\":\n          return options.create(\n            node2,\n            children.filter((_, index) => !operation.indexes.includes(index)),\n            indexPath\n          );\n        case \"removeThenInsert\":\n          const updatedChildren = children.filter((_, index) => !operation.removeIndexes.includes(index));\n          const adjustedIndex = operation.removeIndexes.reduce(\n            (index, removedIndex) => removedIndex < index ? index - 1 : index,\n            operation.insertIndex\n          );\n          return options.create(node2, splice(updatedChildren, adjustedIndex, 0, ...operation.insertNodes), indexPath);\n        case \"insert\":\n          return options.create(node2, splice(children, operation.index, 0, ...operation.nodes), indexPath);\n        case \"replace\":\n          return options.create(node2, children, indexPath);\n        default:\n          return node2;\n      }\n    }\n  });\n}\nfunction splice(array, start, deleteCount, ...items) {\n  return [...array.slice(0, start), ...items, ...array.slice(start + deleteCount)];\n}\nfunction map(node, options) {\n  const childrenMap = {};\n  visit(node, {\n    ...options,\n    onLeave: (child, indexPath) => {\n      const keyIndexPath = [0, ...indexPath];\n      const key = keyIndexPath.join();\n      const transformed = options.transform(child, childrenMap[key] ?? [], indexPath);\n      const parentKey = keyIndexPath.slice(0, -1).join();\n      const parentChildren = childrenMap[parentKey] ?? [];\n      parentChildren.push(transformed);\n      childrenMap[parentKey] = parentChildren;\n    }\n  });\n  return childrenMap[\"\"][0];\n}\nfunction insert2(node, options) {\n  const { nodes, at } = options;\n  if (at.length === 0) throw new Error(`Can't insert nodes at the root`);\n  const state = getInsertionOperations(at, nodes);\n  return mutate(node, state, options);\n}\nfunction replace(node, options) {\n  if (options.at.length === 0) return options.node;\n  const operations = getReplaceOperations(options.at, options.node);\n  return mutate(node, operations, options);\n}\nfunction remove(node, options) {\n  if (options.indexPaths.length === 0) return node;\n  for (const indexPath of options.indexPaths) {\n    if (indexPath.length === 0) throw new Error(`Can't remove the root node`);\n  }\n  const operations = getRemovalOperations(options.indexPaths);\n  return mutate(node, operations, options);\n}\nfunction move2(node, options) {\n  if (options.indexPaths.length === 0) return node;\n  for (const indexPath of options.indexPaths) {\n    if (indexPath.length === 0) throw new Error(`Can't move the root node`);\n  }\n  if (options.to.length === 0) throw new Error(`Can't move nodes to the root`);\n  const _ancestorIndexPaths = ancestorIndexPaths(options.indexPaths);\n  const nodesToInsert = _ancestorIndexPaths.map((indexPath) => access(node, indexPath, options));\n  const operations = getInsertionOperations(options.to, nodesToInsert, getRemovalOperations(_ancestorIndexPaths));\n  return mutate(node, operations, options);\n}\nfunction visit(node, options) {\n  const { onEnter, onLeave, getChildren } = options;\n  let indexPath = [];\n  let stack = [{ node }];\n  const getIndexPath = options.reuseIndexPath ? () => indexPath : () => indexPath.slice();\n  while (stack.length > 0) {\n    let wrapper = stack[stack.length - 1];\n    if (wrapper.state === void 0) {\n      const enterResult = onEnter?.(wrapper.node, getIndexPath());\n      if (enterResult === \"stop\") return;\n      wrapper.state = enterResult === \"skip\" ? -1 : 0;\n    }\n    const children = wrapper.children || getChildren(wrapper.node, getIndexPath());\n    wrapper.children || (wrapper.children = children);\n    if (wrapper.state !== -1) {\n      if (wrapper.state < children.length) {\n        let currentIndex = wrapper.state;\n        indexPath.push(currentIndex);\n        stack.push({ node: children[currentIndex] });\n        wrapper.state = currentIndex + 1;\n        continue;\n      }\n      const leaveResult = onLeave?.(wrapper.node, getIndexPath());\n      if (leaveResult === \"stop\") return;\n    }\n    indexPath.pop();\n    stack.pop();\n  }\n}\n\n// src/tree-collection.ts\nvar TreeCollection = class _TreeCollection {\n  constructor(options) {\n    this.options = options;\n    __publicField(this, \"rootNode\");\n    __publicField(this, \"isEqual\", (other) => {\n      return isEqual(this.rootNode, other.rootNode);\n    });\n    __publicField(this, \"getNodeChildren\", (node) => {\n      return this.options.nodeToChildren?.(node) ?? fallbackMethods.nodeToChildren(node) ?? [];\n    });\n    __publicField(this, \"resolveIndexPath\", (valueOrIndexPath) => {\n      return typeof valueOrIndexPath === \"string\" ? this.getIndexPath(valueOrIndexPath) : valueOrIndexPath;\n    });\n    __publicField(this, \"resolveNode\", (valueOrIndexPath) => {\n      const indexPath = this.resolveIndexPath(valueOrIndexPath);\n      return indexPath ? this.at(indexPath) : void 0;\n    });\n    __publicField(this, \"getNodeChildrenCount\", (node) => {\n      return this.options.nodeToChildrenCount?.(node) ?? fallbackMethods.nodeToChildrenCount(node);\n    });\n    __publicField(this, \"getNodeValue\", (node) => {\n      return this.options.nodeToValue?.(node) ?? fallbackMethods.nodeToValue(node);\n    });\n    __publicField(this, \"getNodeDisabled\", (node) => {\n      return this.options.isNodeDisabled?.(node) ?? fallbackMethods.isNodeDisabled(node);\n    });\n    __publicField(this, \"stringify\", (value) => {\n      const node = this.findNode(value);\n      if (!node) return null;\n      return this.stringifyNode(node);\n    });\n    __publicField(this, \"stringifyNode\", (node) => {\n      return this.options.nodeToString?.(node) ?? fallbackMethods.nodeToString(node);\n    });\n    __publicField(this, \"getFirstNode\", (rootNode = this.rootNode) => {\n      let firstChild;\n      visit(rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (!firstChild && indexPath.length > 0 && !this.getNodeDisabled(node)) {\n            firstChild = node;\n            return \"stop\";\n          }\n        }\n      });\n      return firstChild;\n    });\n    __publicField(this, \"getLastNode\", (rootNode = this.rootNode, opts = {}) => {\n      let lastChild;\n      visit(rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isSameNode(node, rootNode)) return;\n          if (opts.skip?.({ value: this.getNodeValue(node), node, indexPath })) return \"skip\";\n          if (indexPath.length > 0 && !this.getNodeDisabled(node)) {\n            lastChild = node;\n          }\n        }\n      });\n      return lastChild;\n    });\n    __publicField(this, \"at\", (indexPath) => {\n      return access(this.rootNode, indexPath, {\n        getChildren: this.getNodeChildren\n      });\n    });\n    __publicField(this, \"findNode\", (value, rootNode = this.rootNode) => {\n      return find(rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => this.getNodeValue(node) === value\n      });\n    });\n    __publicField(this, \"findNodes\", (values, rootNode = this.rootNode) => {\n      const v = new Set(values.filter((v2) => v2 != null));\n      return findAll(rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => v.has(this.getNodeValue(node))\n      });\n    });\n    __publicField(this, \"sort\", (values) => {\n      return values.reduce((acc, value) => {\n        const indexPath = this.getIndexPath(value);\n        if (indexPath) acc.push({ value, indexPath });\n        return acc;\n      }, []).sort((a, b) => compareIndexPaths(a.indexPath, b.indexPath)).map(({ value }) => value);\n    });\n    __publicField(this, \"getIndexPath\", (value) => {\n      return findIndexPath(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => this.getNodeValue(node) === value\n      });\n    });\n    __publicField(this, \"getValue\", (indexPath) => {\n      const node = this.at(indexPath);\n      return node ? this.getNodeValue(node) : void 0;\n    });\n    __publicField(this, \"getValuePath\", (indexPath) => {\n      if (!indexPath) return [];\n      const valuePath = [];\n      let currentPath = [...indexPath];\n      while (currentPath.length > 0) {\n        const node = this.at(currentPath);\n        if (node) valuePath.unshift(this.getNodeValue(node));\n        currentPath.pop();\n      }\n      return valuePath;\n    });\n    __publicField(this, \"getDepth\", (value) => {\n      const indexPath = findIndexPath(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        predicate: (node) => this.getNodeValue(node) === value\n      });\n      return indexPath?.length ?? 0;\n    });\n    __publicField(this, \"isSameNode\", (node, other) => {\n      return this.getNodeValue(node) === this.getNodeValue(other);\n    });\n    __publicField(this, \"isRootNode\", (node) => {\n      return this.isSameNode(node, this.rootNode);\n    });\n    __publicField(this, \"contains\", (parentIndexPath, valueIndexPath) => {\n      if (!parentIndexPath || !valueIndexPath) return false;\n      return valueIndexPath.slice(0, parentIndexPath.length).every((_, i) => parentIndexPath[i] === valueIndexPath[i]);\n    });\n    __publicField(this, \"getNextNode\", (value, opts = {}) => {\n      let found = false;\n      let nextNode;\n      visit(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isRootNode(node)) return;\n          const nodeValue = this.getNodeValue(node);\n          if (opts.skip?.({ value: nodeValue, node, indexPath })) {\n            if (nodeValue === value) {\n              found = true;\n            }\n            return \"skip\";\n          }\n          if (found && !this.getNodeDisabled(node)) {\n            nextNode = node;\n            return \"stop\";\n          }\n          if (nodeValue === value) {\n            found = true;\n          }\n        }\n      });\n      return nextNode;\n    });\n    __publicField(this, \"getPreviousNode\", (value, opts = {}) => {\n      let previousNode;\n      let found = false;\n      visit(this.rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isRootNode(node)) return;\n          const nodeValue = this.getNodeValue(node);\n          if (opts.skip?.({ value: nodeValue, node, indexPath })) {\n            return \"skip\";\n          }\n          if (nodeValue === value) {\n            found = true;\n            return \"stop\";\n          }\n          if (!this.getNodeDisabled(node)) {\n            previousNode = node;\n          }\n        }\n      });\n      return found ? previousNode : void 0;\n    });\n    __publicField(this, \"getParentNodes\", (valueOrIndexPath) => {\n      const indexPath = this.resolveIndexPath(valueOrIndexPath)?.slice();\n      if (!indexPath) return [];\n      const result = [];\n      while (indexPath.length > 0) {\n        indexPath.pop();\n        const parentNode = this.at(indexPath);\n        if (parentNode && !this.isRootNode(parentNode)) {\n          result.unshift(parentNode);\n        }\n      }\n      return result;\n    });\n    __publicField(this, \"getDescendantNodes\", (valueOrIndexPath, options) => {\n      const parentNode = this.resolveNode(valueOrIndexPath);\n      if (!parentNode) return [];\n      const result = [];\n      visit(parentNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, nodeIndexPath) => {\n          if (nodeIndexPath.length === 0) return;\n          if (!options?.withBranch && this.isBranchNode(node)) return;\n          result.push(node);\n        }\n      });\n      return result;\n    });\n    __publicField(this, \"getDescendantValues\", (valueOrIndexPath, options) => {\n      const children = this.getDescendantNodes(valueOrIndexPath, options);\n      return children.map((child) => this.getNodeValue(child));\n    });\n    __publicField(this, \"getParentIndexPath\", (indexPath) => {\n      return indexPath.slice(0, -1);\n    });\n    __publicField(this, \"getParentNode\", (valueOrIndexPath) => {\n      const indexPath = this.resolveIndexPath(valueOrIndexPath);\n      return indexPath ? this.at(this.getParentIndexPath(indexPath)) : void 0;\n    });\n    __publicField(this, \"visit\", (opts) => {\n      const { skip, ...rest } = opts;\n      visit(this.rootNode, {\n        ...rest,\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (this.isRootNode(node)) return;\n          if (skip?.({ value: this.getNodeValue(node), node, indexPath })) return \"skip\";\n          return rest.onEnter?.(node, indexPath);\n        }\n      });\n    });\n    __publicField(this, \"getPreviousSibling\", (indexPath) => {\n      const parentNode = this.getParentNode(indexPath);\n      if (!parentNode) return;\n      const siblings = this.getNodeChildren(parentNode);\n      let idx = indexPath[indexPath.length - 1];\n      while (--idx >= 0) {\n        const sibling = siblings[idx];\n        if (!this.getNodeDisabled(sibling)) return sibling;\n      }\n      return;\n    });\n    __publicField(this, \"getNextSibling\", (indexPath) => {\n      const parentNode = this.getParentNode(indexPath);\n      if (!parentNode) return;\n      const siblings = this.getNodeChildren(parentNode);\n      let idx = indexPath[indexPath.length - 1];\n      while (++idx < siblings.length) {\n        const sibling = siblings[idx];\n        if (!this.getNodeDisabled(sibling)) return sibling;\n      }\n      return;\n    });\n    __publicField(this, \"getSiblingNodes\", (indexPath) => {\n      const parentNode = this.getParentNode(indexPath);\n      return parentNode ? this.getNodeChildren(parentNode) : [];\n    });\n    __publicField(this, \"getValues\", (rootNode = this.rootNode) => {\n      const values = flatMap(rootNode, {\n        getChildren: this.getNodeChildren,\n        transform: (node) => [this.getNodeValue(node)]\n      });\n      return values.slice(1);\n    });\n    __publicField(this, \"isValidDepth\", (indexPath, depth) => {\n      if (depth == null) return true;\n      if (typeof depth === \"function\") return depth(indexPath.length);\n      return indexPath.length === depth;\n    });\n    __publicField(this, \"isBranchNode\", (node) => {\n      return this.getNodeChildren(node).length > 0 || this.getNodeChildrenCount(node) != null;\n    });\n    __publicField(this, \"getBranchValues\", (rootNode = this.rootNode, opts = {}) => {\n      let values = [];\n      visit(rootNode, {\n        getChildren: this.getNodeChildren,\n        onEnter: (node, indexPath) => {\n          if (indexPath.length === 0) return;\n          const nodeValue = this.getNodeValue(node);\n          if (opts.skip?.({ value: nodeValue, node, indexPath })) return \"skip\";\n          if (this.isBranchNode(node) && this.isValidDepth(indexPath, opts.depth)) {\n            values.push(this.getNodeValue(node));\n          }\n        }\n      });\n      return values;\n    });\n    __publicField(this, \"flatten\", (rootNode = this.rootNode) => {\n      return flatten(rootNode, { getChildren: this.getNodeChildren });\n    });\n    __publicField(this, \"_create\", (node, children) => {\n      if (this.getNodeChildren(node).length > 0 || children.length > 0) {\n        return { ...node, children };\n      }\n      return { ...node };\n    });\n    __publicField(this, \"_insert\", (rootNode, indexPath, nodes) => {\n      return this.copy(\n        insert2(rootNode, { at: indexPath, nodes, getChildren: this.getNodeChildren, create: this._create })\n      );\n    });\n    __publicField(this, \"copy\", (rootNode) => {\n      return new _TreeCollection({ ...this.options, rootNode });\n    });\n    __publicField(this, \"_replace\", (rootNode, indexPath, node) => {\n      return this.copy(\n        replace(rootNode, { at: indexPath, node, getChildren: this.getNodeChildren, create: this._create })\n      );\n    });\n    __publicField(this, \"_move\", (rootNode, indexPaths, to) => {\n      return this.copy(move2(rootNode, { indexPaths, to, getChildren: this.getNodeChildren, create: this._create }));\n    });\n    __publicField(this, \"_remove\", (rootNode, indexPaths) => {\n      return this.copy(remove(rootNode, { indexPaths, getChildren: this.getNodeChildren, create: this._create }));\n    });\n    __publicField(this, \"replace\", (indexPath, node) => {\n      return this._replace(this.rootNode, indexPath, node);\n    });\n    __publicField(this, \"remove\", (indexPaths) => {\n      return this._remove(this.rootNode, indexPaths);\n    });\n    __publicField(this, \"insertBefore\", (indexPath, nodes) => {\n      const parentNode = this.getParentNode(indexPath);\n      return parentNode ? this._insert(this.rootNode, indexPath, nodes) : void 0;\n    });\n    __publicField(this, \"insertAfter\", (indexPath, nodes) => {\n      const parentNode = this.getParentNode(indexPath);\n      if (!parentNode) return;\n      const nextIndex2 = [...indexPath.slice(0, -1), indexPath[indexPath.length - 1] + 1];\n      return this._insert(this.rootNode, nextIndex2, nodes);\n    });\n    __publicField(this, \"move\", (fromIndexPaths, toIndexPath) => {\n      return this._move(this.rootNode, fromIndexPaths, toIndexPath);\n    });\n    __publicField(this, \"filter\", (predicate) => {\n      const filteredRoot = filter(this.rootNode, {\n        predicate,\n        getChildren: this.getNodeChildren,\n        create: this._create\n      });\n      return this.copy(filteredRoot);\n    });\n    __publicField(this, \"toJSON\", () => {\n      return this.getValues(this.rootNode);\n    });\n    this.rootNode = options.rootNode;\n  }\n};\nfunction flattenedToTree(nodes, options = fallbackMethods) {\n  if (nodes.length === 0) {\n    throw new Error(\"[zag-js/tree] Cannot create tree from empty flattened array\");\n  }\n  const rootFlatNode = nodes.find((node) => node._parent === void 0);\n  if (!rootFlatNode) {\n    throw new Error(\"[zag-js/tree] No root node found in flattened data\");\n  }\n  const nodeMap = /* @__PURE__ */ new Map();\n  nodes.forEach((node) => {\n    nodeMap.set(node._index, node);\n  });\n  const buildNode = (idx) => {\n    const flatNode = nodeMap.get(idx);\n    if (!flatNode) return {};\n    const { _children, _parent, _index, ...cleanNode } = flatNode;\n    const children = [];\n    _children?.forEach((childIndex) => {\n      children.push(buildNode(childIndex));\n    });\n    return {\n      ...cleanNode,\n      ...children.length > 0 && { children }\n    };\n  };\n  const rootNode = buildNode(rootFlatNode._index);\n  return new TreeCollection({ ...options, rootNode });\n}\nfunction filePathToTree(paths) {\n  const rootNode = {\n    label: \"\",\n    value: \"ROOT\",\n    children: []\n  };\n  paths.forEach((path) => {\n    const parts = path.split(\"/\");\n    let currentNode = rootNode;\n    parts.forEach((part, index) => {\n      let childNode = currentNode.children?.find((child) => child.label === part);\n      if (!childNode) {\n        childNode = {\n          value: parts.slice(0, index + 1).join(\"/\"),\n          label: part\n        };\n        currentNode.children || (currentNode.children = []);\n        currentNode.children.push(childNode);\n      }\n      currentNode = childNode;\n    });\n  });\n  return new TreeCollection({ rootNode });\n}\nvar fallbackMethods = {\n  nodeToValue(node) {\n    if (typeof node === \"string\") return node;\n    if (isObject(node) && hasProp(node, \"value\")) return node.value;\n    return \"\";\n  },\n  nodeToString(node) {\n    if (typeof node === \"string\") return node;\n    if (isObject(node) && hasProp(node, \"label\")) return node.label;\n    return fallbackMethods.nodeToValue(node);\n  },\n  isNodeDisabled(node) {\n    if (isObject(node) && hasProp(node, \"disabled\")) return !!node.disabled;\n    return false;\n  },\n  nodeToChildren(node) {\n    return node.children;\n  },\n  nodeToChildrenCount(node) {\n    if (isObject(node) && hasProp(node, \"childrenCount\")) return node.childrenCount;\n  }\n};\n\nexport { GridCollection, ListCollection, Selection, TreeCollection, filePathToTree, flattenedToTree, isGridCollection, isListCollection };\n", "var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// src/caret.ts\nfunction isCaretAtStart(input) {\n  if (!input) return false;\n  try {\n    return input.selectionStart === 0 && input.selectionEnd === 0;\n  } catch {\n    return input.value === \"\";\n  }\n}\nfunction setCaretToEnd(input) {\n  if (!input) return;\n  const start = input.selectionStart ?? 0;\n  const end = input.selectionEnd ?? 0;\n  if (Math.abs(end - start) !== 0) return;\n  if (start !== 0) return;\n  input.setSelectionRange(input.value.length, input.value.length);\n}\n\n// src/shared.ts\nvar clamp = (value) => Math.max(0, Math.min(1, value));\nvar wrap = (v, idx) => {\n  return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nvar pipe = (...fns) => (arg) => fns.reduce((acc, fn) => fn(acc), arg);\nvar noop = () => void 0;\nvar isObject = (v) => typeof v === \"object\" && v !== null;\nvar MAX_Z_INDEX = 2147483647;\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/node.ts\nvar ELEMENT_NODE = 1;\nvar DOCUMENT_NODE = 9;\nvar DOCUMENT_FRAGMENT_NODE = 11;\nvar isHTMLElement = (el) => isObject(el) && el.nodeType === ELEMENT_NODE && typeof el.nodeName === \"string\";\nvar isDocument = (el) => isObject(el) && el.nodeType === DOCUMENT_NODE;\nvar isWindow = (el) => isObject(el) && el === el.window;\nvar isVisualViewport = (el) => isObject(el) && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n  if (isHTMLElement(node)) return node.localName || \"\";\n  return \"#document\";\n};\nfunction isRootElement(node) {\n  return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => isObject(el) && el.nodeType !== void 0;\nvar isShadowRoot = (el) => isNode(el) && el.nodeType === DOCUMENT_FRAGMENT_NODE && \"host\" in el;\nvar isInputElement = (el) => isHTMLElement(el) && el.localName === \"input\";\nvar isAnchorElement = (el) => !!el?.matches(\"a[href]\");\nvar isElementVisible = (el) => {\n  if (!isHTMLElement(el)) return false;\n  return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n};\nfunction isActiveElement(element) {\n  if (!element) return false;\n  const rootNode = element.getRootNode();\n  return getActiveElement(rootNode) === element;\n}\nvar TEXTAREA_SELECT_REGEX = /(textarea|select)/;\nfunction isEditableElement(el) {\n  if (el == null || !isHTMLElement(el)) return false;\n  try {\n    return isInputElement(el) && el.selectionStart != null || TEXTAREA_SELECT_REGEX.test(el.localName) || el.isContentEditable || el.getAttribute(\"contenteditable\") === \"true\" || el.getAttribute(\"contenteditable\") === \"\";\n  } catch {\n    return false;\n  }\n}\nfunction contains(parent, child) {\n  if (!parent || !child) return false;\n  if (!isHTMLElement(parent) || !isHTMLElement(child)) return false;\n  const rootNode = child.getRootNode?.();\n  if (parent === child) return true;\n  if (parent.contains(child)) return true;\n  if (rootNode && isShadowRoot(rootNode)) {\n    let next = child;\n    while (next) {\n      if (parent === next) return true;\n      next = next.parentNode || next.host;\n    }\n  }\n  return false;\n}\nfunction getDocument(el) {\n  if (isDocument(el)) return el;\n  if (isWindow(el)) return el.document;\n  return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n  return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n  if (isShadowRoot(el)) return getWindow(el.host);\n  if (isDocument(el)) return el.defaultView ?? window;\n  if (isHTMLElement(el)) return el.ownerDocument?.defaultView ?? window;\n  return window;\n}\nfunction getActiveElement(rootNode) {\n  let activeElement = rootNode.activeElement;\n  while (activeElement?.shadowRoot) {\n    const el = activeElement.shadowRoot.activeElement;\n    if (!el || el === activeElement) break;\n    else activeElement = el;\n  }\n  return activeElement;\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === \"html\") return node;\n  const result = node.assignedSlot || node.parentNode || isShadowRoot(node) && node.host || getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getRootNode(node) {\n  let result;\n  try {\n    result = node.getRootNode({ composed: true });\n    if (isDocument(result) || isShadowRoot(result)) return result;\n  } catch {\n  }\n  return node.ownerDocument ?? document;\n}\n\n// src/computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n  if (!styleCache.has(el)) {\n    styleCache.set(el, getWindow(el).getComputedStyle(el));\n  }\n  return styleCache.get(el);\n}\n\n// src/controller.ts\nvar INTERACTIVE_CONTAINER_ROLE = /* @__PURE__ */ new Set([\"menu\", \"listbox\", \"dialog\", \"grid\", \"tree\", \"region\"]);\nvar isInteractiveContainerRole = (role) => INTERACTIVE_CONTAINER_ROLE.has(role);\nvar getAriaControls = (element) => element.getAttribute(\"aria-controls\")?.split(\" \") || [];\nfunction isControlledElement(container, element) {\n  const visitedIds = /* @__PURE__ */ new Set();\n  const rootNode = getRootNode(container);\n  const checkElement = (searchRoot) => {\n    const controllingElements = searchRoot.querySelectorAll(\"[aria-controls]\");\n    for (const controller of controllingElements) {\n      if (controller.getAttribute(\"aria-expanded\") !== \"true\") continue;\n      const controlledIds = getAriaControls(controller);\n      for (const id of controlledIds) {\n        if (!id || visitedIds.has(id)) continue;\n        visitedIds.add(id);\n        const controlledElement = rootNode.getElementById(id);\n        if (controlledElement) {\n          const role = controlledElement.getAttribute(\"role\");\n          const modal = controlledElement.getAttribute(\"aria-modal\") === \"true\";\n          if (role && isInteractiveContainerRole(role) && !modal) {\n            if (controlledElement === element || controlledElement.contains(element)) {\n              return true;\n            }\n            if (checkElement(controlledElement)) {\n              return true;\n            }\n          }\n        }\n      }\n    }\n    return false;\n  };\n  return checkElement(container);\n}\nfunction findControlledElements(searchRoot, callback) {\n  const rootNode = getRootNode(searchRoot);\n  const visitedIds = /* @__PURE__ */ new Set();\n  const findRecursive = (root) => {\n    const controllingElements = root.querySelectorAll(\"[aria-controls]\");\n    for (const controller of controllingElements) {\n      if (controller.getAttribute(\"aria-expanded\") !== \"true\") continue;\n      const controlledIds = getAriaControls(controller);\n      for (const id of controlledIds) {\n        if (!id || visitedIds.has(id)) continue;\n        visitedIds.add(id);\n        const controlledElement = rootNode.getElementById(id);\n        if (controlledElement) {\n          const role = controlledElement.getAttribute(\"role\");\n          const modal = controlledElement.getAttribute(\"aria-modal\") === \"true\";\n          if (role && INTERACTIVE_CONTAINER_ROLE.has(role) && !modal) {\n            callback(controlledElement);\n            findRecursive(controlledElement);\n          }\n        }\n      }\n    }\n  };\n  findRecursive(searchRoot);\n}\nfunction getControlledElements(container) {\n  const controlledElements = /* @__PURE__ */ new Set();\n  findControlledElements(container, (controlledElement) => {\n    if (!container.contains(controlledElement)) {\n      controlledElements.add(controlledElement);\n    }\n  });\n  return Array.from(controlledElements);\n}\nfunction isInteractiveContainerElement(element) {\n  const role = element.getAttribute(\"role\");\n  return Boolean(role && INTERACTIVE_CONTAINER_ROLE.has(role));\n}\nfunction isControllerElement(element) {\n  return element.hasAttribute(\"aria-controls\") && element.getAttribute(\"aria-expanded\") === \"true\";\n}\nfunction hasControllerElements(element) {\n  if (isControllerElement(element)) return true;\n  return Boolean(element.querySelector?.('[aria-controls][aria-expanded=\"true\"]'));\n}\nfunction isControlledByExpandedController(element) {\n  if (!element.id) return false;\n  const rootNode = getRootNode(element);\n  const escapedId = CSS.escape(element.id);\n  const selector = `[aria-controls~=\"${escapedId}\"][aria-expanded=\"true\"], [aria-controls=\"${escapedId}\"][aria-expanded=\"true\"]`;\n  const controller = rootNode.querySelector(selector);\n  return Boolean(controller && isInteractiveContainerElement(element));\n}\n\n// src/data-url.ts\nfunction getDataUrl(svg, opts) {\n  const { type, quality = 0.92, background } = opts;\n  if (!svg) throw new Error(\"[zag-js > getDataUrl]: Could not find the svg element\");\n  const win = getWindow(svg);\n  const doc = win.document;\n  const svgBounds = svg.getBoundingClientRect();\n  const svgClone = svg.cloneNode(true);\n  if (!svgClone.hasAttribute(\"viewBox\")) {\n    svgClone.setAttribute(\"viewBox\", `0 0 ${svgBounds.width} ${svgBounds.height}`);\n  }\n  const serializer = new win.XMLSerializer();\n  const source = '<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n' + serializer.serializeToString(svgClone);\n  const svgString = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n  if (type === \"image/svg+xml\") {\n    return Promise.resolve(svgString).then((str) => {\n      svgClone.remove();\n      return str;\n    });\n  }\n  const dpr = win.devicePixelRatio || 1;\n  const canvas = doc.createElement(\"canvas\");\n  const image = new win.Image();\n  image.src = svgString;\n  canvas.width = svgBounds.width * dpr;\n  canvas.height = svgBounds.height * dpr;\n  const context = canvas.getContext(\"2d\");\n  if (type === \"image/jpeg\" || background) {\n    context.fillStyle = background || \"white\";\n    context.fillRect(0, 0, canvas.width, canvas.height);\n  }\n  return new Promise((resolve) => {\n    image.onload = () => {\n      context?.drawImage(image, 0, 0, canvas.width, canvas.height);\n      resolve(canvas.toDataURL(type, quality));\n      svgClone.remove();\n    };\n  });\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n  const agent = navigator.userAgentData;\n  return agent?.platform ?? navigator.platform;\n}\nfunction getUserAgent() {\n  const ua2 = navigator.userAgentData;\n  if (ua2 && Array.isArray(ua2.brands)) {\n    return ua2.brands.map(({ brand, version }) => `${brand}/${version}`).join(\" \");\n  }\n  return navigator.userAgent;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(getUserAgent());\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isIPhone = () => pt(/^iPhone/i);\nvar isIPad = () => pt(/^iPad/i) || isMac() && navigator.maxTouchPoints > 1;\nvar isIos = () => isIPhone() || isIPad();\nvar isApple = () => isMac() || isIos();\nvar isMac = () => pt(/^Mac/i);\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/Firefox/i);\nvar isChrome = () => ua(/Chrome/i);\nvar isWebKit = () => ua(/AppleWebKit/i) && !isChrome();\nvar isAndroid = () => ua(/Android/i);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n  const { selectionStart, selectionEnd, value } = event.currentTarget;\n  const data = event.data;\n  return value.slice(0, selectionStart) + (data ?? \"\") + value.slice(selectionEnd);\n}\nfunction getComposedPath(event) {\n  return event.composedPath?.() ?? event.nativeEvent?.composedPath?.();\n}\nfunction getEventTarget(event) {\n  const composedPath = getComposedPath(event);\n  return composedPath?.[0] ?? event.target;\n}\nfunction isOpeningInNewTab(event) {\n  const element = event.currentTarget;\n  if (!element) return false;\n  const validElement = element.matches(\"a[href], button[type='submit'], input[type='submit']\");\n  if (!validElement) return false;\n  const isMiddleClick = event.button === 1;\n  const isModKeyClick = isCtrlOrMetaKey(event);\n  return isMiddleClick || isModKeyClick;\n}\nfunction isDownloadingEvent(event) {\n  const element = event.currentTarget;\n  if (!element) return false;\n  const localName = element.localName;\n  if (!event.altKey) return false;\n  if (localName === \"a\") return true;\n  if (localName === \"button\" && element.type === \"submit\") return true;\n  if (localName === \"input\" && element.type === \"submit\") return true;\n  return false;\n}\nfunction isComposingEvent(event) {\n  return getNativeEvent(event).isComposing || event.keyCode === 229;\n}\nfunction isKeyboardClick(e) {\n  return e.detail === 0 || e.clientX === 0 && e.clientY === 0;\n}\nfunction isCtrlOrMetaKey(e) {\n  if (isMac()) return e.metaKey;\n  return e.ctrlKey;\n}\nfunction isPrintableKey(e) {\n  return e.key.length === 1 && !e.ctrlKey && !e.metaKey;\n}\nfunction isVirtualPointerEvent(e) {\n  return e.width === 0 && e.height === 0 || e.width === 1 && e.height === 1 && e.pressure === 0 && e.detail === 0 && e.pointerType === \"mouse\";\n}\nfunction isVirtualClick(e) {\n  if (e.pointerType === \"\" && e.isTrusted) return true;\n  if (isAndroid() && e.pointerType) {\n    return e.type === \"click\" && e.buttons === 1;\n  }\n  return e.detail === 0 && !e.pointerType;\n}\nvar isLeftClick = (e) => e.button === 0;\nvar isContextMenuEvent = (e) => {\n  return e.button === 2 || isMac() && e.ctrlKey && e.button === 0;\n};\nvar isModifierKey = (e) => e.ctrlKey || e.altKey || e.metaKey;\nvar isTouchEvent = (event) => \"touches\" in event && event.touches.length > 0;\nvar keyMap = {\n  Up: \"ArrowUp\",\n  Down: \"ArrowDown\",\n  Esc: \"Escape\",\n  \" \": \"Space\",\n  \",\": \"Comma\",\n  Left: \"ArrowLeft\",\n  Right: \"ArrowRight\"\n};\nvar rtlKeyMap = {\n  ArrowLeft: \"ArrowRight\",\n  ArrowRight: \"ArrowLeft\"\n};\nfunction getEventKey(event, options = {}) {\n  const { dir = \"ltr\", orientation = \"horizontal\" } = options;\n  let key = event.key;\n  key = keyMap[key] ?? key;\n  const isRtl = dir === \"rtl\" && orientation === \"horizontal\";\n  if (isRtl && key in rtlKeyMap) key = rtlKeyMap[key];\n  return key;\n}\nfunction getNativeEvent(event) {\n  return event.nativeEvent ?? event;\n}\nvar pageKeys = /* @__PURE__ */ new Set([\"PageUp\", \"PageDown\"]);\nvar arrowKeys = /* @__PURE__ */ new Set([\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"]);\nfunction getEventStep(event) {\n  if (event.ctrlKey || event.metaKey) {\n    return 0.1;\n  } else {\n    const isPageKey = pageKeys.has(event.key);\n    const isSkipKey = isPageKey || event.shiftKey && arrowKeys.has(event.key);\n    return isSkipKey ? 10 : 1;\n  }\n}\nfunction getEventPoint(event, type = \"client\") {\n  const point = isTouchEvent(event) ? event.touches[0] || event.changedTouches[0] : event;\n  return { x: point[`${type}X`], y: point[`${type}Y`] };\n}\nvar addDomEvent = (target, eventName, handler, options) => {\n  const node = typeof target === \"function\" ? target() : target;\n  node?.addEventListener(eventName, handler, options);\n  return () => {\n    node?.removeEventListener(eventName, handler, options);\n  };\n};\nvar isSelfTarget = (event) => {\n  const composedPath = getComposedPath(event);\n  const target = composedPath?.[0] ?? event.target;\n  return event.currentTarget === target;\n};\n\n// src/form.ts\nfunction getDescriptor(el, options) {\n  const { type = \"HTMLInputElement\", property = \"value\" } = options;\n  const proto = getWindow(el)[type].prototype;\n  return Object.getOwnPropertyDescriptor(proto, property) ?? {};\n}\nfunction getElementType(el) {\n  if (el.localName === \"input\") return \"HTMLInputElement\";\n  if (el.localName === \"textarea\") return \"HTMLTextAreaElement\";\n  if (el.localName === \"select\") return \"HTMLSelectElement\";\n}\nfunction setElementValue(el, value, property = \"value\") {\n  if (!el) return;\n  const type = getElementType(el);\n  if (type) {\n    const descriptor = getDescriptor(el, { type, property });\n    descriptor.set?.call(el, value);\n  }\n  el.setAttribute(property, value);\n}\nfunction setElementChecked(el, checked) {\n  if (!el) return;\n  const descriptor = getDescriptor(el, { type: \"HTMLInputElement\", property: \"checked\" });\n  descriptor.set?.call(el, checked);\n  if (checked) el.setAttribute(\"checked\", \"\");\n  else el.removeAttribute(\"checked\");\n}\nfunction dispatchInputValueEvent(el, options) {\n  const { value, bubbles = true } = options;\n  if (!el) return;\n  const win = getWindow(el);\n  if (!(el instanceof win.HTMLInputElement)) return;\n  setElementValue(el, `${value}`);\n  el.dispatchEvent(new win.Event(\"input\", { bubbles }));\n}\nfunction dispatchInputCheckedEvent(el, options) {\n  const { checked, bubbles = true } = options;\n  if (!el) return;\n  const win = getWindow(el);\n  if (!(el instanceof win.HTMLInputElement)) return;\n  setElementChecked(el, checked);\n  el.dispatchEvent(new win.Event(\"click\", { bubbles }));\n}\nfunction getClosestForm(el) {\n  return isFormElement(el) ? el.form : el.closest(\"form\");\n}\nfunction isFormElement(el) {\n  return el.matches(\"textarea, input, select, button\");\n}\nfunction trackFormReset(el, callback) {\n  if (!el) return;\n  const form = getClosestForm(el);\n  const onReset = (e) => {\n    if (e.defaultPrevented) return;\n    callback();\n  };\n  form?.addEventListener(\"reset\", onReset, { passive: true });\n  return () => form?.removeEventListener(\"reset\", onReset);\n}\nfunction trackFieldsetDisabled(el, callback) {\n  const fieldset = el?.closest(\"fieldset\");\n  if (!fieldset) return;\n  callback(fieldset.disabled);\n  const win = getWindow(fieldset);\n  const obs = new win.MutationObserver(() => callback(fieldset.disabled));\n  obs.observe(fieldset, {\n    attributes: true,\n    attributeFilter: [\"disabled\"]\n  });\n  return () => obs.disconnect();\n}\nfunction trackFormControl(el, options) {\n  if (!el) return;\n  const { onFieldsetDisabledChange, onFormReset } = options;\n  const cleanups = [trackFormReset(el, onFormReset), trackFieldsetDisabled(el, onFieldsetDisabledChange)];\n  return () => cleanups.forEach((cleanup) => cleanup?.());\n}\n\n// src/tabbable.ts\nvar isFrame = (el) => isHTMLElement(el) && el.tagName === \"IFRAME\";\nvar NATURALLY_TABBABLE_REGEX = /^(audio|video|details)$/;\nfunction parseTabIndex(el) {\n  const attr = el.getAttribute(\"tabindex\");\n  if (!attr) return NaN;\n  return parseInt(attr, 10);\n}\nvar hasTabIndex = (el) => !Number.isNaN(parseTabIndex(el));\nvar hasNegativeTabIndex = (el) => parseTabIndex(el) < 0;\nfunction getShadowRootForNode(element, getShadowRoot) {\n  if (!getShadowRoot) return null;\n  if (getShadowRoot === true) {\n    return element.shadowRoot || null;\n  }\n  const result = getShadowRoot(element);\n  return (result === true ? element.shadowRoot : result) || null;\n}\nfunction collectElementsWithShadowDOM(elements, getShadowRoot, filterFn) {\n  const allElements = [...elements];\n  const toProcess = [...elements];\n  const processed = /* @__PURE__ */ new Set();\n  const positionMap = /* @__PURE__ */ new Map();\n  elements.forEach((el, i) => positionMap.set(el, i));\n  let processIndex = 0;\n  while (processIndex < toProcess.length) {\n    const element = toProcess[processIndex++];\n    if (!element || processed.has(element)) continue;\n    processed.add(element);\n    const shadowRoot = getShadowRootForNode(element, getShadowRoot);\n    if (shadowRoot) {\n      const shadowElements = Array.from(shadowRoot.querySelectorAll(focusableSelector)).filter(filterFn);\n      const hostIndex = positionMap.get(element);\n      if (hostIndex !== void 0) {\n        const insertPosition = hostIndex + 1;\n        allElements.splice(insertPosition, 0, ...shadowElements);\n        shadowElements.forEach((el, i) => {\n          positionMap.set(el, insertPosition + i);\n        });\n        for (let i = insertPosition + shadowElements.length; i < allElements.length; i++) {\n          positionMap.set(allElements[i], i);\n        }\n      } else {\n        const insertPosition = allElements.length;\n        allElements.push(...shadowElements);\n        shadowElements.forEach((el, i) => {\n          positionMap.set(el, insertPosition + i);\n        });\n      }\n      toProcess.push(...shadowElements);\n    }\n  }\n  return allElements;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, options = {}) => {\n  if (!container) return [];\n  const { includeContainer = false, getShadowRoot } = options;\n  const elements = Array.from(container.querySelectorAll(focusableSelector));\n  const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n  if (include && isHTMLElement(container) && isFocusable(container)) {\n    elements.unshift(container);\n  }\n  const focusableElements = [];\n  for (const element of elements) {\n    if (!isFocusable(element)) continue;\n    if (isFrame(element) && element.contentDocument) {\n      const frameBody = element.contentDocument.body;\n      focusableElements.push(...getFocusables(frameBody, { getShadowRoot }));\n      continue;\n    }\n    focusableElements.push(element);\n  }\n  if (getShadowRoot) {\n    return collectElementsWithShadowDOM(focusableElements, getShadowRoot, isFocusable);\n  }\n  return focusableElements;\n};\nfunction isFocusable(element) {\n  if (!isHTMLElement(element) || element.closest(\"[inert]\")) return false;\n  return element.matches(focusableSelector) && isElementVisible(element);\n}\nfunction getFirstFocusable(container, options = {}) {\n  const [first] = getFocusables(container, options);\n  return first || null;\n}\nfunction getTabbables(container, options = {}) {\n  if (!container) return [];\n  const { includeContainer, getShadowRoot } = options;\n  const elements = Array.from(container.querySelectorAll(focusableSelector));\n  if (includeContainer && isTabbable(container)) {\n    elements.unshift(container);\n  }\n  const tabbableElements = [];\n  for (const element of elements) {\n    if (!isTabbable(element)) continue;\n    if (isFrame(element) && element.contentDocument) {\n      const frameBody = element.contentDocument.body;\n      tabbableElements.push(...getTabbables(frameBody, { getShadowRoot }));\n      continue;\n    }\n    tabbableElements.push(element);\n  }\n  if (getShadowRoot) {\n    const allElements = collectElementsWithShadowDOM(tabbableElements, getShadowRoot, isTabbable);\n    if (!allElements.length && includeContainer) {\n      return elements;\n    }\n    return allElements;\n  }\n  if (!tabbableElements.length && includeContainer) {\n    return elements;\n  }\n  return tabbableElements;\n}\nfunction isTabbable(el) {\n  if (isHTMLElement(el) && el.tabIndex > 0) return true;\n  return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, options = {}) {\n  const [first] = getTabbables(container, options);\n  return first || null;\n}\nfunction getLastTabbable(container, options = {}) {\n  const elements = getTabbables(container, options);\n  return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, options = {}) {\n  const elements = getTabbables(container, options);\n  const first = elements[0] || null;\n  const last = elements[elements.length - 1] || null;\n  return [first, last];\n}\nfunction getNextTabbable(container, options = {}) {\n  const { current, getShadowRoot } = options;\n  const tabbables = getTabbables(container, { getShadowRoot });\n  const doc = container?.ownerDocument || document;\n  const currentElement = current ?? getActiveElement(doc);\n  if (!currentElement) return null;\n  const index = tabbables.indexOf(currentElement);\n  return tabbables[index + 1] || null;\n}\nfunction getTabIndex(node) {\n  if (node.tabIndex < 0) {\n    if ((NATURALLY_TABBABLE_REGEX.test(node.localName) || isEditableElement(node)) && !hasTabIndex(node)) {\n      return 0;\n    }\n  }\n  return node.tabIndex;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(options) {\n  const { root, getInitialEl, filter, enabled = true } = options;\n  if (!enabled) return;\n  let node = null;\n  node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n  node || (node = root?.querySelector(\"[data-autofocus],[autofocus]\"));\n  if (!node) {\n    const tabbables = getTabbables(root);\n    node = filter ? tabbables.filter(filter)[0] : tabbables[0];\n  }\n  return node || root || void 0;\n}\nfunction isValidTabEvent(event) {\n  const container = event.currentTarget;\n  if (!container) return false;\n  const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n  if (isActiveElement(firstTabbable) && event.shiftKey) return false;\n  if (isActiveElement(lastTabbable) && !event.shiftKey) return false;\n  if (!firstTabbable && !lastTabbable) return false;\n  return true;\n}\n\n// src/raf.ts\nvar AnimationFrame = class _AnimationFrame {\n  constructor() {\n    __publicField(this, \"id\", null);\n    __publicField(this, \"fn_cleanup\");\n    __publicField(this, \"cleanup\", () => {\n      this.cancel();\n    });\n  }\n  static create() {\n    return new _AnimationFrame();\n  }\n  request(fn) {\n    this.cancel();\n    this.id = globalThis.requestAnimationFrame(() => {\n      this.id = null;\n      this.fn_cleanup = fn?.();\n    });\n  }\n  cancel() {\n    if (this.id !== null) {\n      globalThis.cancelAnimationFrame(this.id);\n      this.id = null;\n    }\n    this.fn_cleanup?.();\n    this.fn_cleanup = void 0;\n  }\n  isActive() {\n    return this.id !== null;\n  }\n};\nfunction raf(fn) {\n  const frame = AnimationFrame.create();\n  frame.request(fn);\n  return frame.cleanup;\n}\nfunction nextTick(fn) {\n  const set = /* @__PURE__ */ new Set();\n  function raf2(fn2) {\n    const id = globalThis.requestAnimationFrame(fn2);\n    set.add(() => globalThis.cancelAnimationFrame(id));\n  }\n  raf2(() => raf2(fn));\n  return function cleanup() {\n    set.forEach((fn2) => fn2());\n  };\n}\nfunction queueBeforeEvent(el, type, cb) {\n  const cancelTimer = raf(() => {\n    el.removeEventListener(type, exec, true);\n    cb();\n  });\n  const exec = () => {\n    cancelTimer();\n    cb();\n  };\n  el.addEventListener(type, exec, { once: true, capture: true });\n  return cancelTimer;\n}\n\n// src/mutation-observer.ts\nfunction observeAttributesImpl(node, options) {\n  if (!node) return;\n  const { attributes, callback: fn } = options;\n  const win = node.ownerDocument.defaultView || window;\n  const obs = new win.MutationObserver((changes) => {\n    for (const change of changes) {\n      if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n        fn(change);\n      }\n    }\n  });\n  obs.observe(node, { attributes: true, attributeFilter: attributes });\n  return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n      cleanups.push(observeAttributesImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction observeChildrenImpl(node, options) {\n  const { callback: fn } = options;\n  if (!node) return;\n  const win = node.ownerDocument.defaultView || window;\n  const obs = new win.MutationObserver(fn);\n  obs.observe(node, { childList: true, subtree: true });\n  return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n      cleanups.push(observeChildrenImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/navigate.ts\nfunction navigate(items, current, options = {}) {\n  if (!current) return null;\n  const { orientation = \"both\", loop = true, dir = \"ltr\", key } = options;\n  if (!items.length || !key) return null;\n  const isVertical = key === \"ArrowUp\" || key === \"ArrowDown\";\n  const isHorizontal = key === \"ArrowLeft\" || key === \"ArrowRight\";\n  if (!isVertical && !isHorizontal && key !== \"Home\" && key !== \"End\") return null;\n  if (orientation === \"vertical\" && isHorizontal || orientation === \"horizontal\" && isVertical) return null;\n  if (key === \"Home\") return items[0] || null;\n  if (key === \"End\") return items[items.length - 1] || null;\n  const idx = items.indexOf(current);\n  if (idx === -1) return null;\n  let isForward;\n  if (orientation === \"both\") {\n    isForward = key === \"ArrowDown\" || (dir === \"ltr\" ? key === \"ArrowRight\" : key === \"ArrowLeft\");\n  } else {\n    isForward = isVertical ? key === \"ArrowDown\" : dir === \"ltr\" ? key === \"ArrowRight\" : key === \"ArrowLeft\";\n  }\n  const nextIdx = isForward ? loop ? (idx + 1) % items.length : Math.min(idx + 1, items.length - 1) : loop ? (idx - 1 + items.length) % items.length : Math.max(0, idx - 1);\n  return items[nextIdx] || null;\n}\nfunction clickIfLink(el) {\n  const click = () => {\n    const win = getWindow(el);\n    el.dispatchEvent(new win.MouseEvent(\"click\"));\n  };\n  if (isFirefox()) {\n    queueBeforeEvent(el, \"keyup\", click);\n  } else {\n    queueMicrotask(click);\n  }\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n  const parentNode = getParentNode(el);\n  if (isRootElement(parentNode)) return getDocument(parentNode).body;\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) return parentNode;\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n  const scrollableAncestor = getNearestOverflowAncestor(el);\n  const isBody = scrollableAncestor === el.ownerDocument.body;\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getElementRect = (el) => {\n  if (isHTMLElement(el)) return el.getBoundingClientRect();\n  if (isVisualViewport(el)) return { top: 0, left: 0, bottom: el.height, right: el.width };\n  return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n  if (!isHTMLElement(el)) return true;\n  const ancestorRect = getElementRect(ancestor);\n  const elRect = el.getBoundingClientRect();\n  return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nvar nonOverflowValues = /* @__PURE__ */ new Set([\"inline\", \"contents\"]);\nfunction isOverflowElement(el) {\n  const win = getWindow(el);\n  const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n  return OVERFLOW_RE.test(overflow + overflowY + overflowX) && !nonOverflowValues.has(display);\n}\nfunction isScrollable(el) {\n  return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n  const { rootEl, ...scrollOptions } = options || {};\n  if (!el || !rootEl) return;\n  if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) return;\n  el.scrollIntoView(scrollOptions);\n}\nfunction getScrollPosition(element) {\n  if (isHTMLElement(element)) {\n    return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n  }\n  return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/point.ts\nfunction getRelativePoint(point, element) {\n  const { left, top, width, height } = element.getBoundingClientRect();\n  const offset = { x: point.x - left, y: point.y - top };\n  const percent = { x: clamp(offset.x / width), y: clamp(offset.y / height) };\n  function getPercentValue(options = {}) {\n    const { dir = \"ltr\", orientation = \"horizontal\", inverted } = options;\n    const invertX = typeof inverted === \"object\" ? inverted.x : inverted;\n    const invertY = typeof inverted === \"object\" ? inverted.y : inverted;\n    if (orientation === \"horizontal\") {\n      return dir === \"rtl\" || invertX ? 1 - percent.x : percent.x;\n    }\n    return invertY ? 1 - percent.y : percent.y;\n  }\n  return { offset, percent, getPercentValue };\n}\n\n// src/pointer-lock.ts\nfunction requestPointerLock(doc, fn) {\n  const body = doc.body;\n  const supported = \"pointerLockElement\" in doc || \"mozPointerLockElement\" in doc;\n  const isLocked = () => !!doc.pointerLockElement;\n  function onPointerChange() {\n    fn?.(isLocked());\n  }\n  function onPointerError(event) {\n    if (isLocked()) fn?.(false);\n    console.error(\"PointerLock error occurred:\", event);\n    doc.exitPointerLock();\n  }\n  if (!supported) return;\n  try {\n    body.requestPointerLock();\n  } catch {\n  }\n  const cleanup = [\n    addDomEvent(doc, \"pointerlockchange\", onPointerChange, false),\n    addDomEvent(doc, \"pointerlockerror\", onPointerError, false)\n  ];\n  return () => {\n    cleanup.forEach((cleanup2) => cleanup2());\n    doc.exitPointerLock();\n  };\n}\n\n// src/text-selection.ts\nvar state = \"default\";\nvar userSelect = \"\";\nvar elementMap = /* @__PURE__ */ new WeakMap();\nfunction disableTextSelectionImpl(options = {}) {\n  const { target, doc } = options;\n  const docNode = doc ?? document;\n  const rootEl = docNode.documentElement;\n  if (isIos()) {\n    if (state === \"default\") {\n      userSelect = rootEl.style.webkitUserSelect;\n      rootEl.style.webkitUserSelect = \"none\";\n    }\n    state = \"disabled\";\n  } else if (target) {\n    elementMap.set(target, target.style.userSelect);\n    target.style.userSelect = \"none\";\n  }\n  return () => restoreTextSelection({ target, doc: docNode });\n}\nfunction restoreTextSelection(options = {}) {\n  const { target, doc } = options;\n  const docNode = doc ?? document;\n  const rootEl = docNode.documentElement;\n  if (isIos()) {\n    if (state !== \"disabled\") return;\n    state = \"restoring\";\n    setTimeout(() => {\n      nextTick(() => {\n        if (state === \"restoring\") {\n          if (rootEl.style.webkitUserSelect === \"none\") {\n            rootEl.style.webkitUserSelect = userSelect || \"\";\n          }\n          userSelect = \"\";\n          state = \"default\";\n        }\n      });\n    }, 300);\n  } else {\n    if (target && elementMap.has(target)) {\n      const prevUserSelect = elementMap.get(target);\n      if (target.style.userSelect === \"none\") {\n        target.style.userSelect = prevUserSelect ?? \"\";\n      }\n      if (target.getAttribute(\"style\") === \"\") {\n        target.removeAttribute(\"style\");\n      }\n      elementMap.delete(target);\n    }\n  }\n}\nfunction disableTextSelection(options = {}) {\n  const { defer, target, ...restOptions } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof target === \"function\" ? target() : target;\n      cleanups.push(disableTextSelectionImpl({ ...restOptions, target: node }));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/pointer-move.ts\nfunction trackPointerMove(doc, handlers) {\n  const { onPointerMove, onPointerUp } = handlers;\n  const handleMove = (event) => {\n    const point = getEventPoint(event);\n    const distance = Math.sqrt(point.x ** 2 + point.y ** 2);\n    const moveBuffer = event.pointerType === \"touch\" ? 10 : 5;\n    if (distance < moveBuffer) return;\n    if (event.pointerType === \"mouse\" && event.buttons === 0) {\n      handleUp(event);\n      return;\n    }\n    onPointerMove({ point, event });\n  };\n  const handleUp = (event) => {\n    const point = getEventPoint(event);\n    onPointerUp({ point, event });\n  };\n  const cleanups = [\n    addDomEvent(doc, \"pointermove\", handleMove, false),\n    addDomEvent(doc, \"pointerup\", handleUp, false),\n    addDomEvent(doc, \"pointercancel\", handleUp, false),\n    addDomEvent(doc, \"contextmenu\", handleUp, false),\n    disableTextSelection({ doc })\n  ];\n  return () => {\n    cleanups.forEach((cleanup) => cleanup());\n  };\n}\n\n// src/press.ts\nfunction trackPress(options) {\n  const {\n    pointerNode,\n    keyboardNode = pointerNode,\n    onPress,\n    onPressStart,\n    onPressEnd,\n    isValidKey = (e) => e.key === \"Enter\"\n  } = options;\n  if (!pointerNode) return noop;\n  const win = getWindow(pointerNode);\n  let removeStartListeners = noop;\n  let removeEndListeners = noop;\n  let removeAccessibleListeners = noop;\n  const getInfo = (event) => ({\n    point: getEventPoint(event),\n    event\n  });\n  function startPress(event) {\n    onPressStart?.(getInfo(event));\n  }\n  function cancelPress(event) {\n    onPressEnd?.(getInfo(event));\n  }\n  const startPointerPress = (startEvent) => {\n    removeEndListeners();\n    const endPointerPress = (endEvent) => {\n      const target = getEventTarget(endEvent);\n      if (contains(pointerNode, target)) {\n        onPress?.(getInfo(endEvent));\n      } else {\n        onPressEnd?.(getInfo(endEvent));\n      }\n    };\n    const removePointerUpListener = addDomEvent(win, \"pointerup\", endPointerPress, { passive: !onPress, once: true });\n    const removePointerCancelListener = addDomEvent(win, \"pointercancel\", cancelPress, {\n      passive: !onPressEnd,\n      once: true\n    });\n    removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n    if (isActiveElement(keyboardNode) && startEvent.pointerType === \"mouse\") {\n      startEvent.preventDefault();\n    }\n    startPress(startEvent);\n  };\n  const removePointerListener = addDomEvent(pointerNode, \"pointerdown\", startPointerPress, { passive: !onPressStart });\n  const removeFocusListener = addDomEvent(keyboardNode, \"focus\", startAccessiblePress);\n  removeStartListeners = pipe(removePointerListener, removeFocusListener);\n  function startAccessiblePress() {\n    const handleKeydown = (keydownEvent) => {\n      if (!isValidKey(keydownEvent)) return;\n      const handleKeyup = (keyupEvent) => {\n        if (!isValidKey(keyupEvent)) return;\n        const evt2 = new win.PointerEvent(\"pointerup\");\n        const info = getInfo(evt2);\n        onPress?.(info);\n        onPressEnd?.(info);\n      };\n      removeEndListeners();\n      removeEndListeners = addDomEvent(keyboardNode, \"keyup\", handleKeyup);\n      const evt = new win.PointerEvent(\"pointerdown\");\n      startPress(evt);\n    };\n    const handleBlur = () => {\n      const evt = new win.PointerEvent(\"pointercancel\");\n      cancelPress(evt);\n    };\n    const removeKeydownListener = addDomEvent(keyboardNode, \"keydown\", handleKeydown);\n    const removeBlurListener = addDomEvent(keyboardNode, \"blur\", handleBlur);\n    removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n  }\n  return () => {\n    removeStartListeners();\n    removeEndListeners();\n    removeAccessibleListeners();\n  };\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n  const { triggerElement, onFocus, onFocusEnter, getShadowRoot } = options;\n  const doc = container?.ownerDocument || document;\n  const body = doc.body;\n  function onKeyDown(event) {\n    if (event.key !== \"Tab\") return;\n    let elementToFocus = null;\n    const [firstTabbable, lastTabbable] = getTabbableEdges(container, { includeContainer: true, getShadowRoot });\n    const nextTabbableAfterTrigger = getNextTabbable(body, { current: triggerElement, getShadowRoot });\n    const noTabbableElements = !firstTabbable && !lastTabbable;\n    if (event.shiftKey && isActiveElement(nextTabbableAfterTrigger)) {\n      onFocusEnter?.();\n      elementToFocus = lastTabbable;\n    } else if (event.shiftKey && (isActiveElement(firstTabbable) || noTabbableElements)) {\n      elementToFocus = triggerElement;\n    } else if (!event.shiftKey && isActiveElement(triggerElement)) {\n      onFocusEnter?.();\n      elementToFocus = firstTabbable;\n    } else if (!event.shiftKey && (isActiveElement(lastTabbable) || noTabbableElements)) {\n      elementToFocus = nextTabbableAfterTrigger;\n    }\n    if (!elementToFocus) return;\n    event.preventDefault();\n    if (typeof onFocus === \"function\") {\n      onFocus(elementToFocus);\n    } else {\n      elementToFocus.focus();\n    }\n  }\n  return addDomEvent(doc, \"keydown\", onKeyDown, true);\n}\nfunction proxyTabFocus(container, options) {\n  const { defer, triggerElement, ...restOptions } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof container === \"function\" ? container() : container;\n      const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n      cleanups.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n  return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n  return root?.querySelector(selector) ?? null;\n}\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n  return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n  const item = itemById(v, id, itemToId);\n  return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n  let idx = indexOfId(v, id);\n  idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n  return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n  let idx = indexOfId(v, id);\n  if (idx === -1) return loop ? v[v.length - 1] : null;\n  idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n  return v[idx];\n}\n\n// src/resize-observer.ts\nfunction createSharedResizeObserver(options) {\n  const listeners = /* @__PURE__ */ new WeakMap();\n  let observer;\n  const entries = /* @__PURE__ */ new WeakMap();\n  const getObserver = (win) => {\n    if (observer) return observer;\n    observer = new win.ResizeObserver((observedEntries) => {\n      for (const entry of observedEntries) {\n        entries.set(entry.target, entry);\n        const elementListeners = listeners.get(entry.target);\n        if (elementListeners) {\n          for (const listener of elementListeners) {\n            listener(entry);\n          }\n        }\n      }\n    });\n    return observer;\n  };\n  const observe = (element, listener) => {\n    let elementListeners = listeners.get(element) || /* @__PURE__ */ new Set();\n    elementListeners.add(listener);\n    listeners.set(element, elementListeners);\n    const win = getWindow(element);\n    getObserver(win).observe(element, options);\n    return () => {\n      const elementListeners2 = listeners.get(element);\n      if (!elementListeners2) return;\n      elementListeners2.delete(listener);\n      if (elementListeners2.size === 0) {\n        listeners.delete(element);\n        getObserver(win).unobserve(element);\n      }\n    };\n  };\n  const unobserve = (element) => {\n    listeners.delete(element);\n    observer?.unobserve(element);\n  };\n  return {\n    observe,\n    unobserve\n  };\n}\nvar resizeObserverContentBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"content-box\"\n});\nvar resizeObserverBorderBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"border-box\"\n});\nvar resizeObserverDevicePixelContentBox = /* @__PURE__ */ createSharedResizeObserver({\n  box: \"device-pixel-content-box\"\n});\n\n// src/scope.ts\nfunction createScope(methods) {\n  const dom = {\n    getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n    getDoc: (ctx) => getDocument(dom.getRootNode(ctx)),\n    getWin: (ctx) => dom.getDoc(ctx).defaultView ?? window,\n    getActiveElement: (ctx) => getActiveElement(dom.getRootNode(ctx)),\n    isActiveElement,\n    getById: (ctx, id) => dom.getRootNode(ctx).getElementById(id),\n    setValue: (elem, value) => {\n      if (elem == null || value == null) return;\n      setElementValue(elem, value.toString());\n    }\n  };\n  return { ...dom, ...methods };\n}\n\n// src/searchable.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n  const code = char.charCodeAt(0);\n  if (code > 0 && code < 128) return char;\n  if (code >= 128 && code <= 255) return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n  return \"\";\n}).join(\"\").trim();\nvar getValueText = (el) => {\n  return sanitize(el.dataset?.valuetext ?? el.textContent ?? \"\");\n};\nvar match = (valueText, query2) => {\n  return valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n  const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n  let items = currentId ? wrap(v, index) : v;\n  const isSingleKey = text.length === 1;\n  if (isSingleKey) {\n    items = items.filter((item) => itemToId(item) !== currentId);\n  }\n  return items.find((item) => match(getValueText(item), text));\n}\n\n// src/set.ts\nfunction setAttribute(el, attr, v) {\n  const prev = el.getAttribute(attr);\n  const exists = prev != null;\n  el.setAttribute(attr, v);\n  return () => {\n    if (!exists) {\n      el.removeAttribute(attr);\n    } else {\n      el.setAttribute(attr, prev);\n    }\n  };\n}\nfunction setProperty(el, prop, v) {\n  const exists = prop in el;\n  const prev = el[prop];\n  el[prop] = v;\n  return () => {\n    if (!exists) {\n      delete el[prop];\n    } else {\n      el[prop] = prev;\n    }\n  };\n}\nfunction setStyle(el, style) {\n  if (!el) return noop;\n  const prev = Object.keys(style).reduce((acc, key) => {\n    acc[key] = el.style.getPropertyValue(key);\n    return acc;\n  }, {});\n  Object.assign(el.style, style);\n  return () => {\n    Object.assign(el.style, prev);\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  };\n}\nfunction setStyleProperty(el, prop, value) {\n  if (!el) return noop;\n  const prev = el.style.getPropertyValue(prop);\n  el.style.setProperty(prop, value);\n  return () => {\n    el.style.setProperty(prop, prev);\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  };\n}\n\n// src/typeahead.ts\nfunction getByTypeaheadImpl(baseItems, options) {\n  const { state: state2, activeId, key, timeout = 350, itemToId } = options;\n  const search = state2.keysSoFar + key;\n  const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n  const query2 = isRepeated ? search[0] : search;\n  let items = baseItems.slice();\n  const next = getByText(items, query2, activeId, itemToId);\n  function cleanup() {\n    clearTimeout(state2.timer);\n    state2.timer = -1;\n  }\n  function update(value) {\n    state2.keysSoFar = value;\n    cleanup();\n    if (value !== \"\") {\n      state2.timer = +setTimeout(() => {\n        update(\"\");\n        cleanup();\n      }, timeout);\n    }\n  }\n  update(search);\n  return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n  defaultOptions: { keysSoFar: \"\", timer: -1 },\n  isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n  return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/visual-viewport.ts\nfunction trackVisualViewport(doc, fn) {\n  const win = doc?.defaultView || window;\n  const onResize = () => {\n    fn?.(getViewportSize(win));\n  };\n  onResize();\n  return addDomEvent(win.visualViewport ?? win, \"resize\", onResize);\n}\nfunction getViewportSize(win) {\n  return {\n    width: win.visualViewport?.width || win.innerWidth,\n    height: win.visualViewport?.height || win.innerHeight\n  };\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n  border: \"0\",\n  clip: \"rect(0 0 0 0)\",\n  height: \"1px\",\n  margin: \"-1px\",\n  overflow: \"hidden\",\n  padding: \"0\",\n  position: \"absolute\",\n  width: \"1px\",\n  whiteSpace: \"nowrap\",\n  wordWrap: \"normal\"\n};\nfunction setVisuallyHidden(el) {\n  Object.assign(el.style, visuallyHiddenStyle);\n}\n\n// src/wait-for.ts\nfunction waitForPromise(promise, controller, timeout) {\n  const { signal } = controller;\n  const wrappedPromise = new Promise((resolve, reject) => {\n    const timeoutId = setTimeout(() => {\n      reject(new Error(`Timeout of ${timeout}ms exceeded`));\n    }, timeout);\n    signal.addEventListener(\"abort\", () => {\n      clearTimeout(timeoutId);\n      reject(new Error(\"Promise aborted\"));\n    });\n    promise.then((result) => {\n      if (!signal.aborted) {\n        clearTimeout(timeoutId);\n        resolve(result);\n      }\n    }).catch((error) => {\n      if (!signal.aborted) {\n        clearTimeout(timeoutId);\n        reject(error);\n      }\n    });\n  });\n  const abort = () => controller.abort();\n  return [wrappedPromise, abort];\n}\nfunction waitForElement(target, options) {\n  const { timeout, rootNode } = options;\n  const win = getWindow(rootNode);\n  const doc = getDocument(rootNode);\n  const controller = new win.AbortController();\n  return waitForPromise(\n    new Promise((resolve) => {\n      const el = target();\n      if (el) {\n        resolve(el);\n        return;\n      }\n      const observer = new win.MutationObserver(() => {\n        const el2 = target();\n        if (el2 && el2.isConnected) {\n          observer.disconnect();\n          resolve(el2);\n        }\n      });\n      observer.observe(doc.body, {\n        childList: true,\n        subtree: true\n      });\n    }),\n    controller,\n    timeout\n  );\n}\n\nexport { AnimationFrame, MAX_Z_INDEX, addDomEvent, ariaAttr, clickIfLink, contains, createScope, dataAttr, defaultItemToId, disableTextSelection, dispatchInputCheckedEvent, dispatchInputValueEvent, findControlledElements, getActiveElement, getBeforeInputValue, getByText, getByTypeahead, getComputedStyle, getControlledElements, getDataUrl, getDocument, getDocumentElement, getEventKey, getEventPoint, getEventStep, getEventTarget, getFirstFocusable, getFirstTabbable, getFocusables, getInitialFocus, getLastTabbable, getNativeEvent, getNearestOverflowAncestor, getNextTabbable, getNodeName, getOverflowAncestors, getParentNode, getPlatform, getRelativePoint, getRootNode, getScrollPosition, getTabIndex, getTabbableEdges, getTabbables, getUserAgent, getWindow, hasControllerElements, indexOfId, isActiveElement, isAnchorElement, isAndroid, isApple, isCaretAtStart, isChrome, isComposingEvent, isContextMenuEvent, isControlledByExpandedController, isControlledElement, isControllerElement, isCtrlOrMetaKey, isDocument, isDom, isDownloadingEvent, isEditableElement, isElementVisible, isFirefox, isFocusable, isHTMLElement, isIPad, isIPhone, isInView, isInputElement, isInteractiveContainerElement, isIos, isKeyboardClick, isLeftClick, isMac, isModifierKey, isNode, isOpeningInNewTab, isOverflowElement, isPrintableKey, isRootElement, isSafari, isSelfTarget, isShadowRoot, isTabbable, isTouchDevice, isTouchEvent, isValidTabEvent, isVirtualClick, isVirtualPointerEvent, isVisualViewport, isWebKit, isWindow, itemById, navigate, nextById, nextTick, observeAttributes, observeChildren, prevById, proxyTabFocus, query, queryAll, queueBeforeEvent, raf, requestPointerLock, resizeObserverBorderBox, resizeObserverContentBox, resizeObserverDevicePixelContentBox, restoreTextSelection, scrollIntoView, setAttribute, setCaretToEnd, setElementChecked, setElementValue, setProperty, setStyle, setStyleProperty, setVisuallyHidden, trackFormControl, trackPointerMove, trackPress, trackVisualViewport, visuallyHiddenStyle, waitForElement, waitForPromise };\n", "/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n", "import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n", "function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n", "import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element \u2014\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n", "import { autoUpdate, offset, flip, shift, limitShift, arrow, size, hide, computePosition } from '@floating-ui/dom';\nimport { raf, isHTMLElement, getWindow, getComputedStyle } from '@zag-js/dom-query';\nimport { noop, isNull, compact } from '@zag-js/utils';\n\n// src/get-placement.ts\nfunction createDOMRect(x = 0, y = 0, width = 0, height = 0) {\n  if (typeof DOMRect === \"function\") {\n    return new DOMRect(x, y, width, height);\n  }\n  const rect = {\n    x,\n    y,\n    width,\n    height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x\n  };\n  return { ...rect, toJSON: () => rect };\n}\nfunction getDOMRect(anchorRect) {\n  if (!anchorRect) return createDOMRect();\n  const { x, y, width, height } = anchorRect;\n  return createDOMRect(x, y, width, height);\n}\nfunction getAnchorElement(anchorElement, getAnchorRect) {\n  return {\n    contextElement: isHTMLElement(anchorElement) ? anchorElement : anchorElement?.contextElement,\n    getBoundingClientRect: () => {\n      const anchor = anchorElement;\n      const anchorRect = getAnchorRect?.(anchor);\n      if (anchorRect || !anchor) {\n        return getDOMRect(anchorRect);\n      }\n      return anchor.getBoundingClientRect();\n    }\n  };\n}\n\n// src/middleware.ts\nvar toVar = (value) => ({ variable: value, reference: `var(${value})` });\nvar cssVars = {\n  arrowSize: toVar(\"--arrow-size\"),\n  arrowSizeHalf: toVar(\"--arrow-size-half\"),\n  arrowBg: toVar(\"--arrow-background\"),\n  transformOrigin: toVar(\"--transform-origin\"),\n  arrowOffset: toVar(\"--arrow-offset\")\n};\nvar getSideAxis = (side) => side === \"top\" || side === \"bottom\" ? \"y\" : \"x\";\nfunction createTransformOriginMiddleware(opts, arrowEl) {\n  return {\n    name: \"transformOrigin\",\n    fn(state) {\n      const { elements, middlewareData, placement, rects, y } = state;\n      const side = placement.split(\"-\")[0];\n      const axis = getSideAxis(side);\n      const arrowX = middlewareData.arrow?.x || 0;\n      const arrowY = middlewareData.arrow?.y || 0;\n      const arrowWidth = arrowEl?.clientWidth || 0;\n      const arrowHeight = arrowEl?.clientHeight || 0;\n      const transformX = arrowX + arrowWidth / 2;\n      const transformY = arrowY + arrowHeight / 2;\n      const shiftY = Math.abs(middlewareData.shift?.y || 0);\n      const halfAnchorHeight = rects.reference.height / 2;\n      const arrowOffset = arrowHeight / 2;\n      const gutter = opts.offset?.mainAxis ?? opts.gutter;\n      const sideOffsetValue = typeof gutter === \"number\" ? gutter + arrowOffset : gutter ?? arrowOffset;\n      const isOverlappingAnchor = shiftY > sideOffsetValue;\n      const adjacentTransformOrigin = {\n        top: `${transformX}px calc(100% + ${sideOffsetValue}px)`,\n        bottom: `${transformX}px ${-sideOffsetValue}px`,\n        left: `calc(100% + ${sideOffsetValue}px) ${transformY}px`,\n        right: `${-sideOffsetValue}px ${transformY}px`\n      }[side];\n      const overlapTransformOrigin = `${transformX}px ${rects.reference.y + halfAnchorHeight - y}px`;\n      const useOverlap = Boolean(opts.overlap) && axis === \"y\" && isOverlappingAnchor;\n      elements.floating.style.setProperty(\n        cssVars.transformOrigin.variable,\n        useOverlap ? overlapTransformOrigin : adjacentTransformOrigin\n      );\n      return {\n        data: {\n          transformOrigin: useOverlap ? overlapTransformOrigin : adjacentTransformOrigin\n        }\n      };\n    }\n  };\n}\nvar rectMiddleware = {\n  name: \"rects\",\n  fn({ rects }) {\n    return {\n      data: rects\n    };\n  }\n};\nvar shiftArrowMiddleware = (arrowEl) => {\n  if (!arrowEl) return;\n  return {\n    name: \"shiftArrow\",\n    fn({ placement, middlewareData }) {\n      if (!middlewareData.arrow) return {};\n      const { x, y } = middlewareData.arrow;\n      const dir = placement.split(\"-\")[0];\n      Object.assign(arrowEl.style, {\n        left: x != null ? `${x}px` : \"\",\n        top: y != null ? `${y}px` : \"\",\n        [dir]: `calc(100% + ${cssVars.arrowOffset.reference})`\n      });\n      return {};\n    }\n  };\n};\n\n// src/placement.ts\nfunction isValidPlacement(v) {\n  return /^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(v);\n}\nfunction getPlacementDetails(placement) {\n  const [side, align] = placement.split(\"-\");\n  return { side, align, hasAlign: align != null };\n}\nfunction getPlacementSide(placement) {\n  return placement.split(\"-\")[0];\n}\n\n// src/get-placement.ts\nvar defaultOptions = {\n  strategy: \"absolute\",\n  placement: \"bottom\",\n  listeners: true,\n  gutter: 8,\n  flip: true,\n  slide: true,\n  overlap: false,\n  sameWidth: false,\n  fitViewport: false,\n  overflowPadding: 8,\n  arrowPadding: 4\n};\nfunction roundByDpr(win, value) {\n  const dpr = win.devicePixelRatio || 1;\n  return Math.round(value * dpr) / dpr;\n}\nfunction resolveBoundaryOption(boundary) {\n  if (typeof boundary === \"function\") return boundary();\n  if (boundary === \"clipping-ancestors\") return \"clippingAncestors\";\n  return boundary;\n}\nfunction getArrowMiddleware(arrowElement, doc, opts) {\n  const element = arrowElement || doc.createElement(\"div\");\n  return arrow({ element, padding: opts.arrowPadding });\n}\nfunction getOffsetMiddleware(arrowElement, opts) {\n  if (isNull(opts.offset ?? opts.gutter)) return;\n  return offset(({ placement }) => {\n    const arrowOffset = (arrowElement?.clientHeight || 0) / 2;\n    const gutter = opts.offset?.mainAxis ?? opts.gutter;\n    const mainAxis = typeof gutter === \"number\" ? gutter + arrowOffset : gutter ?? arrowOffset;\n    const { hasAlign } = getPlacementDetails(placement);\n    const shift2 = !hasAlign ? opts.shift : void 0;\n    const crossAxis = opts.offset?.crossAxis ?? shift2;\n    return compact({\n      crossAxis,\n      mainAxis,\n      alignmentAxis: opts.shift\n    });\n  });\n}\nfunction getFlipMiddleware(opts) {\n  if (!opts.flip) return;\n  const boundary = resolveBoundaryOption(opts.boundary);\n  return flip({\n    ...boundary ? { boundary } : void 0,\n    padding: opts.overflowPadding,\n    fallbackPlacements: opts.flip === true ? void 0 : opts.flip\n  });\n}\nfunction getShiftMiddleware(opts) {\n  if (!opts.slide && !opts.overlap) return;\n  const boundary = resolveBoundaryOption(opts.boundary);\n  return shift({\n    ...boundary ? { boundary } : void 0,\n    mainAxis: opts.slide,\n    crossAxis: opts.overlap,\n    padding: opts.overflowPadding,\n    limiter: limitShift()\n  });\n}\nfunction getSizeMiddleware(opts) {\n  return size({\n    padding: opts.overflowPadding,\n    apply({ elements, rects, availableHeight, availableWidth }) {\n      const floating = elements.floating;\n      const referenceWidth = Math.round(rects.reference.width);\n      const referenceHeight = Math.round(rects.reference.height);\n      availableWidth = Math.floor(availableWidth);\n      availableHeight = Math.floor(availableHeight);\n      floating.style.setProperty(\"--reference-width\", `${referenceWidth}px`);\n      floating.style.setProperty(\"--reference-height\", `${referenceHeight}px`);\n      floating.style.setProperty(\"--available-width\", `${availableWidth}px`);\n      floating.style.setProperty(\"--available-height\", `${availableHeight}px`);\n    }\n  });\n}\nfunction hideWhenDetachedMiddleware(opts) {\n  if (!opts.hideWhenDetached) return;\n  return hide({ strategy: \"referenceHidden\", boundary: resolveBoundaryOption(opts.boundary) ?? \"clippingAncestors\" });\n}\nfunction getAutoUpdateOptions(opts) {\n  if (!opts) return {};\n  if (opts === true) {\n    return { ancestorResize: true, ancestorScroll: true, elementResize: true, layoutShift: true };\n  }\n  return opts;\n}\nfunction getPlacementImpl(referenceOrVirtual, floating, opts = {}) {\n  const anchor = opts.getAnchorElement?.() ?? referenceOrVirtual;\n  const reference = getAnchorElement(anchor, opts.getAnchorRect);\n  if (!floating || !reference) return;\n  const options = Object.assign({}, defaultOptions, opts);\n  const arrowEl = floating.querySelector(\"[data-part=arrow]\");\n  const middleware = [\n    getOffsetMiddleware(arrowEl, options),\n    getFlipMiddleware(options),\n    getShiftMiddleware(options),\n    getArrowMiddleware(arrowEl, floating.ownerDocument, options),\n    shiftArrowMiddleware(arrowEl),\n    createTransformOriginMiddleware(\n      { gutter: options.gutter, offset: options.offset, overlap: options.overlap },\n      arrowEl\n    ),\n    getSizeMiddleware(options),\n    hideWhenDetachedMiddleware(options),\n    rectMiddleware\n  ];\n  const { placement, strategy, onComplete, onPositioned } = options;\n  const updatePosition = async () => {\n    if (!reference || !floating) return;\n    const pos = await computePosition(reference, floating, {\n      placement,\n      middleware,\n      strategy\n    });\n    onComplete?.(pos);\n    onPositioned?.({ placed: true });\n    const win = getWindow(floating);\n    const x = roundByDpr(win, pos.x);\n    const y = roundByDpr(win, pos.y);\n    floating.style.setProperty(\"--x\", `${x}px`);\n    floating.style.setProperty(\"--y\", `${y}px`);\n    if (options.hideWhenDetached) {\n      const isHidden = pos.middlewareData.hide?.referenceHidden;\n      if (isHidden) {\n        floating.style.setProperty(\"visibility\", \"hidden\");\n        floating.style.setProperty(\"pointer-events\", \"none\");\n      } else {\n        floating.style.removeProperty(\"visibility\");\n        floating.style.removeProperty(\"pointer-events\");\n      }\n    }\n    const contentEl = floating.firstElementChild;\n    if (contentEl) {\n      const styles = getComputedStyle(contentEl);\n      floating.style.setProperty(\"--z-index\", styles.zIndex);\n    }\n  };\n  const update = async () => {\n    if (opts.updatePosition) {\n      await opts.updatePosition({ updatePosition, floatingElement: floating });\n      onPositioned?.({ placed: true });\n    } else {\n      await updatePosition();\n    }\n  };\n  const autoUpdateOptions = getAutoUpdateOptions(options.listeners);\n  const cancelAutoUpdate = options.listeners ? autoUpdate(reference, floating, update, autoUpdateOptions) : noop;\n  update();\n  return () => {\n    cancelAutoUpdate?.();\n    onPositioned?.({ placed: false });\n  };\n}\nfunction getPlacement(referenceOrFn, floatingOrFn, opts = {}) {\n  const { defer, ...options } = opts;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const reference = typeof referenceOrFn === \"function\" ? referenceOrFn() : referenceOrFn;\n      const floating = typeof floatingOrFn === \"function\" ? floatingOrFn() : floatingOrFn;\n      cleanups.push(getPlacementImpl(reference, floating, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\n// src/get-styles.ts\nvar ARROW_FLOATING_STYLE = {\n  bottom: \"rotate(45deg)\",\n  left: \"rotate(135deg)\",\n  top: \"rotate(225deg)\",\n  right: \"rotate(315deg)\"\n};\nfunction getPlacementStyles(options = {}) {\n  const { placement, sameWidth, fitViewport, strategy = \"absolute\" } = options;\n  return {\n    arrow: {\n      position: \"absolute\",\n      width: cssVars.arrowSize.reference,\n      height: cssVars.arrowSize.reference,\n      [cssVars.arrowSizeHalf.variable]: `calc(${cssVars.arrowSize.reference} / 2)`,\n      [cssVars.arrowOffset.variable]: `calc(${cssVars.arrowSizeHalf.reference} * -1)`\n    },\n    arrowTip: {\n      // @ts-expect-error - Fix this\n      transform: placement ? ARROW_FLOATING_STYLE[placement.split(\"-\")[0]] : void 0,\n      background: cssVars.arrowBg.reference,\n      top: \"0\",\n      left: \"0\",\n      width: \"100%\",\n      height: \"100%\",\n      position: \"absolute\",\n      zIndex: \"inherit\"\n    },\n    floating: {\n      position: strategy,\n      isolation: \"isolate\",\n      minWidth: sameWidth ? void 0 : \"max-content\",\n      width: sameWidth ? \"var(--reference-width)\" : void 0,\n      maxWidth: fitViewport ? \"var(--available-width)\" : void 0,\n      maxHeight: fitViewport ? \"var(--available-height)\" : void 0,\n      pointerEvents: !placement ? \"none\" : void 0,\n      top: \"0px\",\n      left: \"0px\",\n      // move off-screen if placement is not defined\n      transform: placement ? \"translate3d(var(--x), var(--y), 0)\" : \"translate3d(0, -100vh, 0)\",\n      zIndex: \"var(--z-index)\"\n    }\n  };\n}\n\nexport { getPlacement, getPlacementSide, getPlacementStyles, isValidPlacement };\n", "import { callAll, isEqual, isString } from '@zag-js/utils';\nimport { isActiveElement, getActiveElement, getDocument } from '@zag-js/dom-query';\n\n// src/merge-props.ts\nvar clsx = (...args) => args.map((str) => str?.trim?.()).filter(Boolean).join(\" \");\nvar CSS_REGEX = /((?:--)?(?:\\w+-?)+)\\s*:\\s*([^;]*)/g;\nvar serialize = (style) => {\n  const res = {};\n  let match;\n  while (match = CSS_REGEX.exec(style)) {\n    res[match[1]] = match[2];\n  }\n  return res;\n};\nvar css = (a, b) => {\n  if (isString(a)) {\n    if (isString(b)) return `${a};${b}`;\n    a = serialize(a);\n  } else if (isString(b)) {\n    b = serialize(b);\n  }\n  return Object.assign({}, a ?? {}, b ?? {});\n};\nfunction mergeProps(...args) {\n  let result = {};\n  for (let props of args) {\n    if (!props) continue;\n    for (let key in result) {\n      if (key.startsWith(\"on\") && typeof result[key] === \"function\" && typeof props[key] === \"function\") {\n        result[key] = callAll(props[key], result[key]);\n        continue;\n      }\n      if (key === \"className\" || key === \"class\") {\n        result[key] = clsx(result[key], props[key]);\n        continue;\n      }\n      if (key === \"style\") {\n        result[key] = css(result[key], props[key]);\n        continue;\n      }\n      result[key] = props[key] !== void 0 ? props[key] : result[key];\n    }\n    for (let key in props) {\n      if (result[key] === void 0) {\n        result[key] = props[key];\n      }\n    }\n    const symbols = Object.getOwnPropertySymbols(props);\n    for (let symbol of symbols) {\n      result[symbol] = props[symbol];\n    }\n  }\n  return result;\n}\nfunction memo(getDeps, fn, opts) {\n  let deps = [];\n  let result;\n  return (depArgs) => {\n    const newDeps = getDeps(depArgs);\n    const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => !isEqual(deps[index], dep));\n    if (!depsChanged) return result;\n    deps = newDeps;\n    result = fn(newDeps, depArgs);\n    opts?.onChange?.(result);\n    return result;\n  };\n}\n\n// src/create-machine.ts\nfunction createGuards() {\n  return {\n    and: (...guards) => {\n      return function andGuard(params) {\n        return guards.every((str) => params.guard(str));\n      };\n    },\n    or: (...guards) => {\n      return function orGuard(params) {\n        return guards.some((str) => params.guard(str));\n      };\n    },\n    not: (guard) => {\n      return function notGuard(params) {\n        return !params.guard(guard);\n      };\n    }\n  };\n}\nfunction createMachine(config) {\n  return config;\n}\nfunction setup() {\n  return {\n    guards: createGuards(),\n    createMachine: (config) => {\n      return createMachine(config);\n    },\n    choose: (transitions) => {\n      return function chooseFn({ choose }) {\n        return choose(transitions)?.actions;\n      };\n    }\n  };\n}\n\n// src/types.ts\nvar MachineStatus = /* @__PURE__ */ ((MachineStatus2) => {\n  MachineStatus2[\"NotStarted\"] = \"Not Started\";\n  MachineStatus2[\"Started\"] = \"Started\";\n  MachineStatus2[\"Stopped\"] = \"Stopped\";\n  return MachineStatus2;\n})(MachineStatus || {});\nvar INIT_STATE = \"__init__\";\nfunction createScope(props) {\n  const getRootNode = () => props.getRootNode?.() ?? document;\n  const getDoc = () => getDocument(getRootNode());\n  const getWin = () => getDoc().defaultView ?? window;\n  const getActiveElementFn = () => getActiveElement(getRootNode());\n  const getById = (id) => getRootNode().getElementById(id);\n  return {\n    ...props,\n    getRootNode,\n    getDoc,\n    getWin,\n    getActiveElement: getActiveElementFn,\n    isActiveElement,\n    getById\n  };\n}\n\nexport { INIT_STATE, MachineStatus, createGuards, createMachine, createScope, memo, mergeProps, setup };\n", "import { raf, getDocument, getWindow, isShadowRoot, addDomEvent, isTouchDevice, getEventTarget, isFocusable, isContextMenuEvent, isHTMLElement, contains, isControlledElement, getNearestOverflowAncestor } from '@zag-js/dom-query';\nimport { callAll } from '@zag-js/utils';\n\n// src/index.ts\n\n// src/frame-utils.ts\nfunction getWindowFrames(win) {\n  const frames = {\n    each(cb) {\n      for (let i = 0; i < win.frames?.length; i += 1) {\n        const frame = win.frames[i];\n        if (frame) cb(frame);\n      }\n    },\n    addEventListener(event, listener, options) {\n      frames.each((frame) => {\n        try {\n          frame.document.addEventListener(event, listener, options);\n        } catch {\n        }\n      });\n      return () => {\n        try {\n          frames.removeEventListener(event, listener, options);\n        } catch {\n        }\n      };\n    },\n    removeEventListener(event, listener, options) {\n      frames.each((frame) => {\n        try {\n          frame.document.removeEventListener(event, listener, options);\n        } catch {\n        }\n      });\n    }\n  };\n  return frames;\n}\nfunction getParentWindow(win) {\n  const parent = win.frameElement != null ? win.parent : null;\n  return {\n    addEventListener: (event, listener, options) => {\n      try {\n        parent?.addEventListener(event, listener, options);\n      } catch {\n      }\n      return () => {\n        try {\n          parent?.removeEventListener(event, listener, options);\n        } catch {\n        }\n      };\n    },\n    removeEventListener: (event, listener, options) => {\n      try {\n        parent?.removeEventListener(event, listener, options);\n      } catch {\n      }\n    }\n  };\n}\n\n// src/index.ts\nvar POINTER_OUTSIDE_EVENT = \"pointerdown.outside\";\nvar FOCUS_OUTSIDE_EVENT = \"focus.outside\";\nfunction isComposedPathFocusable(composedPath) {\n  for (const node of composedPath) {\n    if (isHTMLElement(node) && isFocusable(node)) return true;\n  }\n  return false;\n}\nvar isPointerEvent = (event) => \"clientY\" in event;\nfunction isEventPointWithin(node, event) {\n  if (!isPointerEvent(event) || !node) return false;\n  const rect = node.getBoundingClientRect();\n  if (rect.width === 0 || rect.height === 0) return false;\n  return rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;\n}\nfunction isPointInRect(rect, point) {\n  return rect.y <= point.y && point.y <= rect.y + rect.height && rect.x <= point.x && point.x <= rect.x + rect.width;\n}\nfunction isEventWithinScrollbar(event, ancestor) {\n  if (!ancestor || !isPointerEvent(event)) return false;\n  const isScrollableY = ancestor.scrollHeight > ancestor.clientHeight;\n  const onScrollbarY = isScrollableY && event.clientX > ancestor.offsetLeft + ancestor.clientWidth;\n  const isScrollableX = ancestor.scrollWidth > ancestor.clientWidth;\n  const onScrollbarX = isScrollableX && event.clientY > ancestor.offsetTop + ancestor.clientHeight;\n  const rect = {\n    x: ancestor.offsetLeft,\n    y: ancestor.offsetTop,\n    width: ancestor.clientWidth + (isScrollableY ? 16 : 0),\n    height: ancestor.clientHeight + (isScrollableX ? 16 : 0)\n  };\n  const point = {\n    x: event.clientX,\n    y: event.clientY\n  };\n  if (!isPointInRect(rect, point)) return false;\n  return onScrollbarY || onScrollbarX;\n}\nfunction trackInteractOutsideImpl(node, options) {\n  const {\n    exclude,\n    onFocusOutside,\n    onPointerDownOutside,\n    onInteractOutside,\n    defer,\n    followControlledElements = true\n  } = options;\n  if (!node) return;\n  const doc = getDocument(node);\n  const win = getWindow(node);\n  const frames = getWindowFrames(win);\n  const parentWin = getParentWindow(win);\n  function isEventOutside(event, target) {\n    if (!isHTMLElement(target)) return false;\n    if (!target.isConnected) return false;\n    if (contains(node, target)) return false;\n    if (isEventPointWithin(node, event)) return false;\n    if (followControlledElements && isControlledElement(node, target)) return false;\n    const triggerEl = doc.querySelector(`[aria-controls=\"${node.id}\"]`);\n    if (triggerEl) {\n      const triggerAncestor = getNearestOverflowAncestor(triggerEl);\n      if (isEventWithinScrollbar(event, triggerAncestor)) return false;\n    }\n    const nodeAncestor = getNearestOverflowAncestor(node);\n    if (isEventWithinScrollbar(event, nodeAncestor)) return false;\n    return !exclude?.(target);\n  }\n  const pointerdownCleanups = /* @__PURE__ */ new Set();\n  const isInShadowRoot = isShadowRoot(node?.getRootNode());\n  function onPointerDown(event) {\n    function handler(clickEvent) {\n      const func = defer && !isTouchDevice() ? raf : (v) => v();\n      const evt = clickEvent ?? event;\n      const composedPath = evt?.composedPath?.() ?? [evt?.target];\n      func(() => {\n        const target = isInShadowRoot ? composedPath[0] : getEventTarget(event);\n        if (!node || !isEventOutside(event, target)) return;\n        if (onPointerDownOutside || onInteractOutside) {\n          const handler2 = callAll(onPointerDownOutside, onInteractOutside);\n          node.addEventListener(POINTER_OUTSIDE_EVENT, handler2, { once: true });\n        }\n        fireCustomEvent(node, POINTER_OUTSIDE_EVENT, {\n          bubbles: false,\n          cancelable: true,\n          detail: {\n            originalEvent: evt,\n            contextmenu: isContextMenuEvent(evt),\n            focusable: isComposedPathFocusable(composedPath),\n            target\n          }\n        });\n      });\n    }\n    if (event.pointerType === \"touch\") {\n      pointerdownCleanups.forEach((fn) => fn());\n      pointerdownCleanups.add(addDomEvent(doc, \"click\", handler, { once: true }));\n      pointerdownCleanups.add(parentWin.addEventListener(\"click\", handler, { once: true }));\n      pointerdownCleanups.add(frames.addEventListener(\"click\", handler, { once: true }));\n    } else {\n      handler();\n    }\n  }\n  const cleanups = /* @__PURE__ */ new Set();\n  const timer = setTimeout(() => {\n    cleanups.add(addDomEvent(doc, \"pointerdown\", onPointerDown, true));\n    cleanups.add(parentWin.addEventListener(\"pointerdown\", onPointerDown, true));\n    cleanups.add(frames.addEventListener(\"pointerdown\", onPointerDown, true));\n  }, 0);\n  function onFocusin(event) {\n    const func = defer ? raf : (v) => v();\n    func(() => {\n      const composedPath = event?.composedPath?.() ?? [event?.target];\n      const target = isInShadowRoot ? composedPath[0] : getEventTarget(event);\n      if (!node || !isEventOutside(event, target)) return;\n      if (onFocusOutside || onInteractOutside) {\n        const handler = callAll(onFocusOutside, onInteractOutside);\n        node.addEventListener(FOCUS_OUTSIDE_EVENT, handler, { once: true });\n      }\n      fireCustomEvent(node, FOCUS_OUTSIDE_EVENT, {\n        bubbles: false,\n        cancelable: true,\n        detail: {\n          originalEvent: event,\n          contextmenu: false,\n          focusable: isFocusable(target),\n          target\n        }\n      });\n    });\n  }\n  if (!isTouchDevice()) {\n    cleanups.add(addDomEvent(doc, \"focusin\", onFocusin, true));\n    cleanups.add(parentWin.addEventListener(\"focusin\", onFocusin, true));\n    cleanups.add(frames.addEventListener(\"focusin\", onFocusin, true));\n  }\n  return () => {\n    clearTimeout(timer);\n    pointerdownCleanups.forEach((fn) => fn());\n    cleanups.forEach((fn) => fn());\n  };\n}\nfunction trackInteractOutside(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n      cleanups.push(trackInteractOutsideImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction fireCustomEvent(el, type, init) {\n  const win = el.ownerDocument.defaultView || window;\n  const event = new win.CustomEvent(type, init);\n  return el.dispatchEvent(event);\n}\n\nexport { trackInteractOutside };\n", "import { raf, contains, getDocument, waitForElement, isHTMLElement, setStyle, addDomEvent, getEventTarget } from '@zag-js/dom-query';\nimport { trackInteractOutside } from '@zag-js/interact-outside';\nimport { isFunction, warn } from '@zag-js/utils';\n\n// src/dismissable-layer.ts\nfunction trackEscapeKeydown(node, fn) {\n  const handleKeyDown = (event) => {\n    if (event.key !== \"Escape\") return;\n    if (event.isComposing) return;\n    fn?.(event);\n  };\n  return addDomEvent(getDocument(node), \"keydown\", handleKeyDown, { capture: true });\n}\nvar LAYER_REQUEST_DISMISS_EVENT = \"layer:request-dismiss\";\nvar layerStack = {\n  layers: [],\n  branches: [],\n  count() {\n    return this.layers.length;\n  },\n  pointerBlockingLayers() {\n    return this.layers.filter((layer) => layer.pointerBlocking);\n  },\n  topMostPointerBlockingLayer() {\n    return [...this.pointerBlockingLayers()].slice(-1)[0];\n  },\n  hasPointerBlockingLayer() {\n    return this.pointerBlockingLayers().length > 0;\n  },\n  isBelowPointerBlockingLayer(node) {\n    const index = this.indexOf(node);\n    const highestBlockingIndex = this.topMostPointerBlockingLayer() ? this.indexOf(this.topMostPointerBlockingLayer()?.node) : -1;\n    return index < highestBlockingIndex;\n  },\n  isTopMost(node) {\n    const layer = this.layers[this.count() - 1];\n    return layer?.node === node;\n  },\n  getNestedLayers(node) {\n    return Array.from(this.layers).slice(this.indexOf(node) + 1);\n  },\n  getLayersByType(type) {\n    return this.layers.filter((layer) => layer.type === type);\n  },\n  getNestedLayersByType(node, type) {\n    const index = this.indexOf(node);\n    if (index === -1) return [];\n    return this.layers.slice(index + 1).filter((layer) => layer.type === type);\n  },\n  getParentLayerOfType(node, type) {\n    const index = this.indexOf(node);\n    if (index <= 0) return void 0;\n    return this.layers.slice(0, index).reverse().find((layer) => layer.type === type);\n  },\n  countNestedLayersOfType(node, type) {\n    return this.getNestedLayersByType(node, type).length;\n  },\n  isInNestedLayer(node, target) {\n    return this.getNestedLayers(node).some((layer) => contains(layer.node, target));\n  },\n  isInBranch(target) {\n    return Array.from(this.branches).some((branch) => contains(branch, target));\n  },\n  add(layer) {\n    this.layers.push(layer);\n    this.syncLayers();\n  },\n  addBranch(node) {\n    this.branches.push(node);\n  },\n  remove(node) {\n    const index = this.indexOf(node);\n    if (index < 0) return;\n    if (index < this.count() - 1) {\n      const _layers = this.getNestedLayers(node);\n      _layers.forEach((layer) => layerStack.dismiss(layer.node, node));\n    }\n    this.layers.splice(index, 1);\n    this.syncLayers();\n  },\n  removeBranch(node) {\n    const index = this.branches.indexOf(node);\n    if (index >= 0) this.branches.splice(index, 1);\n  },\n  syncLayers() {\n    this.layers.forEach((layer, index) => {\n      layer.node.style.setProperty(\"--layer-index\", `${index}`);\n      layer.node.removeAttribute(\"data-nested\");\n      layer.node.removeAttribute(\"data-has-nested\");\n      const parentOfSameType = this.getParentLayerOfType(layer.node, layer.type);\n      if (parentOfSameType) {\n        layer.node.setAttribute(\"data-nested\", layer.type);\n      }\n      const nestedCount = this.countNestedLayersOfType(layer.node, layer.type);\n      if (nestedCount > 0) {\n        layer.node.setAttribute(\"data-has-nested\", layer.type);\n      }\n      layer.node.style.setProperty(\"--nested-layer-count\", `${nestedCount}`);\n    });\n  },\n  indexOf(node) {\n    return this.layers.findIndex((layer) => layer.node === node);\n  },\n  dismiss(node, parent) {\n    const index = this.indexOf(node);\n    if (index === -1) return;\n    const layer = this.layers[index];\n    addListenerOnce(node, LAYER_REQUEST_DISMISS_EVENT, (event) => {\n      layer.requestDismiss?.(event);\n      if (!event.defaultPrevented) {\n        layer?.dismiss();\n      }\n    });\n    fireCustomEvent(node, LAYER_REQUEST_DISMISS_EVENT, {\n      originalLayer: node,\n      targetLayer: parent,\n      originalIndex: index,\n      targetIndex: parent ? this.indexOf(parent) : -1\n    });\n    this.syncLayers();\n  },\n  clear() {\n    this.remove(this.layers[0].node);\n  }\n};\nfunction fireCustomEvent(el, type, detail) {\n  const win = el.ownerDocument.defaultView || window;\n  const event = new win.CustomEvent(type, { cancelable: true, bubbles: true, detail });\n  return el.dispatchEvent(event);\n}\nfunction addListenerOnce(el, type, callback) {\n  el.addEventListener(type, callback, { once: true });\n}\nvar originalBodyPointerEvents;\nfunction assignPointerEventToLayers() {\n  layerStack.layers.forEach(({ node }) => {\n    node.style.pointerEvents = layerStack.isBelowPointerBlockingLayer(node) ? \"none\" : \"auto\";\n  });\n}\nfunction clearPointerEvent(node) {\n  node.style.pointerEvents = \"\";\n}\nfunction disablePointerEventsOutside(node, persistentElements) {\n  const doc = getDocument(node);\n  const cleanups = [];\n  if (layerStack.hasPointerBlockingLayer() && !doc.body.hasAttribute(\"data-inert\")) {\n    originalBodyPointerEvents = document.body.style.pointerEvents;\n    queueMicrotask(() => {\n      doc.body.style.pointerEvents = \"none\";\n      doc.body.setAttribute(\"data-inert\", \"\");\n    });\n  }\n  persistentElements?.forEach((el) => {\n    const [promise, abort] = waitForElement(\n      () => {\n        const node2 = el();\n        return isHTMLElement(node2) ? node2 : null;\n      },\n      { timeout: 1e3 }\n    );\n    promise.then((el2) => cleanups.push(setStyle(el2, { pointerEvents: \"auto\" })));\n    cleanups.push(abort);\n  });\n  return () => {\n    if (layerStack.hasPointerBlockingLayer()) return;\n    queueMicrotask(() => {\n      doc.body.style.pointerEvents = originalBodyPointerEvents;\n      doc.body.removeAttribute(\"data-inert\");\n      if (doc.body.style.length === 0) doc.body.removeAttribute(\"style\");\n    });\n    cleanups.forEach((fn) => fn());\n  };\n}\n\n// src/dismissable-layer.ts\nfunction trackDismissableElementImpl(node, options) {\n  const { warnOnMissingNode = true } = options;\n  if (warnOnMissingNode && !node) {\n    warn(\"[@zag-js/dismissable] node is `null` or `undefined`\");\n    return;\n  }\n  if (!node) {\n    return;\n  }\n  const { onDismiss, onRequestDismiss, pointerBlocking, exclude: excludeContainers, debug, type = \"dialog\" } = options;\n  const layer = { dismiss: onDismiss, node, type, pointerBlocking, requestDismiss: onRequestDismiss };\n  layerStack.add(layer);\n  assignPointerEventToLayers();\n  function onPointerDownOutside(event) {\n    const target = getEventTarget(event.detail.originalEvent);\n    if (layerStack.isBelowPointerBlockingLayer(node) || layerStack.isInBranch(target)) return;\n    options.onPointerDownOutside?.(event);\n    options.onInteractOutside?.(event);\n    if (event.defaultPrevented) return;\n    if (debug) {\n      console.log(\"onPointerDownOutside:\", event.detail.originalEvent);\n    }\n    onDismiss?.();\n  }\n  function onFocusOutside(event) {\n    const target = getEventTarget(event.detail.originalEvent);\n    if (layerStack.isInBranch(target)) return;\n    options.onFocusOutside?.(event);\n    options.onInteractOutside?.(event);\n    if (event.defaultPrevented) return;\n    if (debug) {\n      console.log(\"onFocusOutside:\", event.detail.originalEvent);\n    }\n    onDismiss?.();\n  }\n  function onEscapeKeyDown(event) {\n    if (!layerStack.isTopMost(node)) return;\n    options.onEscapeKeyDown?.(event);\n    if (!event.defaultPrevented && onDismiss) {\n      event.preventDefault();\n      onDismiss();\n    }\n  }\n  function exclude(target) {\n    if (!node) return false;\n    const containers = typeof excludeContainers === \"function\" ? excludeContainers() : excludeContainers;\n    const _containers = Array.isArray(containers) ? containers : [containers];\n    const persistentElements = options.persistentElements?.map((fn) => fn()).filter(isHTMLElement);\n    if (persistentElements) _containers.push(...persistentElements);\n    return _containers.some((node2) => contains(node2, target)) || layerStack.isInNestedLayer(node, target);\n  }\n  const cleanups = [\n    pointerBlocking ? disablePointerEventsOutside(node, options.persistentElements) : void 0,\n    trackEscapeKeydown(node, onEscapeKeyDown),\n    trackInteractOutside(node, { exclude, onFocusOutside, onPointerDownOutside, defer: options.defer })\n  ];\n  return () => {\n    layerStack.remove(node);\n    assignPointerEventToLayers();\n    clearPointerEvent(node);\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction trackDismissableElement(nodeOrFn, options) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = isFunction(nodeOrFn) ? nodeOrFn() : nodeOrFn;\n      cleanups.push(trackDismissableElementImpl(node, options));\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\nfunction trackDismissableBranch(nodeOrFn, options = {}) {\n  const { defer } = options;\n  const func = defer ? raf : (v) => v();\n  const cleanups = [];\n  cleanups.push(\n    func(() => {\n      const node = isFunction(nodeOrFn) ? nodeOrFn() : nodeOrFn;\n      if (!node) {\n        warn(\"[@zag-js/dismissable] branch node is `null` or `undefined`\");\n        return;\n      }\n      layerStack.addBranch(node);\n      cleanups.push(() => {\n        layerStack.removeBranch(node);\n      });\n    })\n  );\n  return () => {\n    cleanups.forEach((fn) => fn?.());\n  };\n}\n\nexport { trackDismissableBranch, trackDismissableElement };\n", "// src/prop-types.ts\nfunction createNormalizer(fn) {\n  return new Proxy({}, {\n    get(_target, key) {\n      if (key === \"style\")\n        return (props) => {\n          return fn({ style: props }).style;\n        };\n      return fn;\n    }\n  });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\n\nexport { createNormalizer, createProps };\n", "import { createAnatomy } from '@zag-js/anatomy';\nimport { ListCollection } from '@zag-js/collection';\nimport { raf, getInitialFocus, observeAttributes, trackFormControl, getByTypeahead, scrollIntoView, contains, getEventTarget, isValidTabEvent, getEventKey, isEditableElement, visuallyHiddenStyle, dataAttr, ariaAttr } from '@zag-js/dom-query';\nimport { getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { addOrRemove, isEqual, createSplitProps, ensure } from '@zag-js/utils';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { createProps } from '@zag-js/types';\n\n// src/select.anatomy.ts\nvar anatomy = createAnatomy(\"select\").parts(\n  \"label\",\n  \"positioner\",\n  \"trigger\",\n  \"indicator\",\n  \"clearTrigger\",\n  \"item\",\n  \"itemText\",\n  \"itemIndicator\",\n  \"itemGroup\",\n  \"itemGroupLabel\",\n  \"list\",\n  \"content\",\n  \"root\",\n  \"control\",\n  \"valueText\"\n);\nvar parts = anatomy.build();\nvar collection = (options) => {\n  return new ListCollection(options);\n};\ncollection.empty = () => {\n  return new ListCollection({ items: [] });\n};\n\n// src/select.dom.ts\nvar getRootId = (ctx) => ctx.ids?.root ?? `select:${ctx.id}`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `select:${ctx.id}:content`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `select:${ctx.id}:trigger`;\nvar getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `select:${ctx.id}:clear-trigger`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `select:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `select:${ctx.id}:control`;\nvar getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `select:${ctx.id}:option:${id}`;\nvar getHiddenSelectId = (ctx) => ctx.ids?.hiddenSelect ?? `select:${ctx.id}:select`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `select:${ctx.id}:positioner`;\nvar getItemGroupId = (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `select:${ctx.id}:optgroup:${id}`;\nvar getItemGroupLabelId = (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `select:${ctx.id}:optgroup-label:${id}`;\nvar getHiddenSelectEl = (ctx) => ctx.getById(getHiddenSelectId(ctx));\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getItemEl = (ctx, id) => {\n  if (id == null) return null;\n  return ctx.getById(getItemId(ctx, id));\n};\n\n// src/select.connect.ts\nfunction connect(service, normalize) {\n  const { context, prop, scope, state, computed, send } = service;\n  const disabled = prop(\"disabled\") || context.get(\"fieldsetDisabled\");\n  const invalid = !!prop(\"invalid\");\n  const required = !!prop(\"required\");\n  const readOnly = !!prop(\"readOnly\");\n  const composite = prop(\"composite\");\n  const collection2 = prop(\"collection\");\n  const open = state.hasTag(\"open\");\n  const focused = state.matches(\"focused\");\n  const highlightedValue = context.get(\"highlightedValue\");\n  const highlightedItem = context.get(\"highlightedItem\");\n  const selectedItems = context.get(\"selectedItems\");\n  const currentPlacement = context.get(\"currentPlacement\");\n  const isTypingAhead = computed(\"isTypingAhead\");\n  const interactive = computed(\"isInteractive\");\n  const ariaActiveDescendant = highlightedValue ? getItemId(scope, highlightedValue) : void 0;\n  function getItemState(props2) {\n    const _disabled = collection2.getItemDisabled(props2.item);\n    const value = collection2.getItemValue(props2.item);\n    ensure(value, () => `[zag-js] No value found for item ${JSON.stringify(props2.item)}`);\n    return {\n      value,\n      disabled: Boolean(disabled || _disabled),\n      highlighted: highlightedValue === value,\n      selected: context.get(\"value\").includes(value)\n    };\n  }\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: currentPlacement\n  });\n  return {\n    open,\n    focused,\n    empty: context.get(\"value\").length === 0,\n    highlightedItem,\n    highlightedValue,\n    selectedItems,\n    hasSelectedItems: computed(\"hasSelectedItems\"),\n    value: context.get(\"value\"),\n    valueAsString: computed(\"valueAsString\"),\n    collection: collection2,\n    multiple: !!prop(\"multiple\"),\n    disabled: !!disabled,\n    reposition(options = {}) {\n      send({ type: \"POSITIONING.SET\", options });\n    },\n    focus() {\n      getTriggerEl(scope)?.focus({ preventScroll: true });\n    },\n    setOpen(nextOpen) {\n      const open2 = state.hasTag(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    selectValue(value) {\n      send({ type: \"ITEM.SELECT\", value });\n    },\n    setValue(value) {\n      send({ type: \"VALUE.SET\", value });\n    },\n    selectAll() {\n      send({ type: \"VALUE.SET\", value: collection2.getValues() });\n    },\n    setHighlightValue(value) {\n      send({ type: \"HIGHLIGHTED_VALUE.SET\", value });\n    },\n    clearHighlightValue() {\n      send({ type: \"HIGHLIGHTED_VALUE.CLEAR\" });\n    },\n    clearValue(value) {\n      if (value) {\n        send({ type: \"ITEM.CLEAR\", value });\n      } else {\n        send({ type: \"VALUE.CLEAR\" });\n      }\n    },\n    getItemState,\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getLabelProps() {\n      return normalize.label({\n        dir: prop(\"dir\"),\n        id: getLabelId(scope),\n        ...parts.label.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-required\": dataAttr(required),\n        htmlFor: getHiddenSelectId(scope),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (disabled) return;\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        dir: prop(\"dir\"),\n        id: getControlId(scope),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(focused),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid)\n      });\n    },\n    getValueTextProps() {\n      return normalize.element({\n        ...parts.valueText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-focus\": dataAttr(focused)\n      });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        id: getTriggerId(scope),\n        disabled,\n        dir: prop(\"dir\"),\n        type: \"button\",\n        role: \"combobox\",\n        \"aria-controls\": getContentId(scope),\n        \"aria-expanded\": open,\n        \"aria-haspopup\": \"listbox\",\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"aria-invalid\": invalid,\n        \"aria-required\": required,\n        \"aria-labelledby\": getLabelId(scope),\n        ...parts.trigger.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-placement\": currentPlacement,\n        \"data-placeholder-shown\": dataAttr(!computed(\"hasSelectedItems\")),\n        onClick(event) {\n          if (!interactive) return;\n          if (event.defaultPrevented) return;\n          send({ type: \"TRIGGER.CLICK\" });\n        },\n        onFocus() {\n          send({ type: \"TRIGGER.FOCUS\" });\n        },\n        onBlur() {\n          send({ type: \"TRIGGER.BLUR\" });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"TRIGGER.ARROW_UP\" });\n            },\n            ArrowDown(event2) {\n              send({ type: event2.altKey ? \"OPEN\" : \"TRIGGER.ARROW_DOWN\" });\n            },\n            ArrowLeft() {\n              send({ type: \"TRIGGER.ARROW_LEFT\" });\n            },\n            ArrowRight() {\n              send({ type: \"TRIGGER.ARROW_RIGHT\" });\n            },\n            Home() {\n              send({ type: \"TRIGGER.HOME\" });\n            },\n            End() {\n              send({ type: \"TRIGGER.END\" });\n            },\n            Enter() {\n              send({ type: \"TRIGGER.ENTER\" });\n            },\n            Space(event2) {\n              if (isTypingAhead) {\n                send({ type: \"TRIGGER.TYPEAHEAD\", key: event2.key });\n              } else {\n                send({ type: \"TRIGGER.ENTER\" });\n              }\n            }\n          };\n          const exec = keyMap[getEventKey(event, {\n            dir: prop(\"dir\"),\n            orientation: \"vertical\"\n          })];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n            return;\n          }\n          if (getByTypeahead.isValidEvent(event)) {\n            send({ type: \"TRIGGER.TYPEAHEAD\", key: event.key });\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getIndicatorProps() {\n      return normalize.element({\n        ...parts.indicator.attrs,\n        dir: prop(\"dir\"),\n        \"aria-hidden\": true,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly)\n      });\n    },\n    getItemProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        id: getItemId(scope, itemState.value),\n        role: \"option\",\n        ...parts.item.attrs,\n        dir: prop(\"dir\"),\n        \"data-value\": itemState.value,\n        \"aria-selected\": itemState.selected,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-highlighted\": dataAttr(itemState.highlighted),\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"aria-disabled\": ariaAttr(itemState.disabled),\n        onPointerMove(event) {\n          if (itemState.disabled || event.pointerType !== \"mouse\") return;\n          if (itemState.value === highlightedValue) return;\n          send({ type: \"ITEM.POINTER_MOVE\", value: itemState.value });\n        },\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          if (itemState.disabled) return;\n          send({ type: \"ITEM.CLICK\", src: \"pointerup\", value: itemState.value });\n        },\n        onPointerLeave(event) {\n          if (itemState.disabled) return;\n          if (props2.persistFocus) return;\n          if (event.pointerType !== \"mouse\") return;\n          const pointerMoved = service.event.previous()?.type.includes(\"POINTER\");\n          if (!pointerMoved) return;\n          send({ type: \"ITEM.POINTER_LEAVE\" });\n        }\n      });\n    },\n    getItemTextProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        ...parts.itemText.attrs,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        \"data-disabled\": dataAttr(itemState.disabled),\n        \"data-highlighted\": dataAttr(itemState.highlighted)\n      });\n    },\n    getItemIndicatorProps(props2) {\n      const itemState = getItemState(props2);\n      return normalize.element({\n        \"aria-hidden\": true,\n        ...parts.itemIndicator.attrs,\n        \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n        hidden: !itemState.selected\n      });\n    },\n    getItemGroupLabelProps(props2) {\n      const { htmlFor } = props2;\n      return normalize.element({\n        ...parts.itemGroupLabel.attrs,\n        id: getItemGroupLabelId(scope, htmlFor),\n        dir: prop(\"dir\"),\n        role: \"presentation\"\n      });\n    },\n    getItemGroupProps(props2) {\n      const { id } = props2;\n      return normalize.element({\n        ...parts.itemGroup.attrs,\n        \"data-disabled\": dataAttr(disabled),\n        id: getItemGroupId(scope, id),\n        \"aria-labelledby\": getItemGroupLabelId(scope, id),\n        role: \"group\",\n        dir: prop(\"dir\")\n      });\n    },\n    getClearTriggerProps() {\n      return normalize.button({\n        ...parts.clearTrigger.attrs,\n        id: getClearTriggerId(scope),\n        type: \"button\",\n        \"aria-label\": \"Clear value\",\n        \"data-invalid\": dataAttr(invalid),\n        disabled,\n        hidden: !computed(\"hasSelectedItems\"),\n        dir: prop(\"dir\"),\n        onClick(event) {\n          if (event.defaultPrevented) return;\n          send({ type: \"CLEAR.CLICK\" });\n        }\n      });\n    },\n    getHiddenSelectProps() {\n      const value = context.get(\"value\");\n      const defaultValue = prop(\"multiple\") ? value : value?.[0];\n      return normalize.select({\n        name: prop(\"name\"),\n        form: prop(\"form\"),\n        disabled,\n        multiple: prop(\"multiple\"),\n        required: prop(\"required\"),\n        \"aria-hidden\": true,\n        id: getHiddenSelectId(scope),\n        defaultValue,\n        style: visuallyHiddenStyle,\n        tabIndex: -1,\n        // Some browser extensions will focus the hidden select.\n        // Let's forward the focus to the trigger.\n        onFocus() {\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        },\n        \"aria-labelledby\": getLabelId(scope)\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        dir: prop(\"dir\"),\n        id: getPositionerId(scope),\n        style: popperStyles.floating\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        hidden: !open,\n        dir: prop(\"dir\"),\n        id: getContentId(scope),\n        role: composite ? \"listbox\" : \"dialog\",\n        ...parts.content.attrs,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-placement\": currentPlacement,\n        \"data-activedescendant\": ariaActiveDescendant,\n        \"aria-activedescendant\": composite ? ariaActiveDescendant : void 0,\n        \"aria-multiselectable\": prop(\"multiple\") && composite ? true : void 0,\n        \"aria-labelledby\": getLabelId(scope),\n        tabIndex: 0,\n        onKeyDown(event) {\n          if (!interactive) return;\n          if (!contains(event.currentTarget, getEventTarget(event))) return;\n          if (event.key === \"Tab\") {\n            const valid = isValidTabEvent(event);\n            if (!valid) {\n              event.preventDefault();\n              return;\n            }\n          }\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"CONTENT.ARROW_UP\" });\n            },\n            ArrowDown() {\n              send({ type: \"CONTENT.ARROW_DOWN\" });\n            },\n            Home() {\n              send({ type: \"CONTENT.HOME\" });\n            },\n            End() {\n              send({ type: \"CONTENT.END\" });\n            },\n            Enter() {\n              send({ type: \"ITEM.CLICK\", src: \"keydown.enter\" });\n            },\n            Space(event2) {\n              if (isTypingAhead) {\n                send({ type: \"CONTENT.TYPEAHEAD\", key: event2.key });\n              } else {\n                keyMap.Enter?.(event2);\n              }\n            }\n          };\n          const exec = keyMap[getEventKey(event)];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n            return;\n          }\n          const target = getEventTarget(event);\n          if (isEditableElement(target)) {\n            return;\n          }\n          if (getByTypeahead.isValidEvent(event)) {\n            send({ type: \"CONTENT.TYPEAHEAD\", key: event.key });\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getListProps() {\n      return normalize.element({\n        ...parts.list.attrs,\n        tabIndex: 0,\n        role: !composite ? \"listbox\" : void 0,\n        \"aria-labelledby\": getTriggerId(scope),\n        \"aria-activedescendant\": !composite ? ariaActiveDescendant : void 0,\n        \"aria-multiselectable\": !composite && prop(\"multiple\") ? true : void 0\n      });\n    }\n  };\n}\nvar { and, not, or } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      loopFocus: false,\n      closeOnSelect: !props2.multiple,\n      composite: true,\n      defaultValue: [],\n      ...props2,\n      collection: props2.collection ?? collection.empty(),\n      positioning: {\n        placement: \"bottom-start\",\n        gutter: 8,\n        ...props2.positioning\n      }\n    };\n  },\n  context({ prop, bindable }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        isEqual,\n        onChange(value) {\n          const items = prop(\"collection\").findMany(value);\n          return prop(\"onValueChange\")?.({ value, items });\n        }\n      })),\n      highlightedValue: bindable(() => ({\n        defaultValue: prop(\"defaultHighlightedValue\") || null,\n        value: prop(\"highlightedValue\"),\n        onChange(value) {\n          prop(\"onHighlightChange\")?.({\n            highlightedValue: value,\n            highlightedItem: prop(\"collection\").find(value),\n            highlightedIndex: prop(\"collection\").indexOf(value)\n          });\n        }\n      })),\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      })),\n      fieldsetDisabled: bindable(() => ({\n        defaultValue: false\n      })),\n      highlightedItem: bindable(() => ({\n        defaultValue: null\n      })),\n      selectedItems: bindable(() => {\n        const value = prop(\"value\") ?? prop(\"defaultValue\") ?? [];\n        const items = prop(\"collection\").findMany(value);\n        return { defaultValue: items };\n      })\n    };\n  },\n  refs() {\n    return {\n      typeahead: { ...getByTypeahead.defaultOptions }\n    };\n  },\n  computed: {\n    hasSelectedItems: ({ context }) => context.get(\"value\").length > 0,\n    isTypingAhead: ({ refs }) => refs.get(\"typeahead\").keysSoFar !== \"\",\n    isDisabled: ({ prop, context }) => !!prop(\"disabled\") || !!context.get(\"fieldsetDisabled\"),\n    isInteractive: ({ prop }) => !(prop(\"disabled\") || prop(\"readOnly\")),\n    valueAsString: ({ context, prop }) => prop(\"collection\").stringifyItems(context.get(\"selectedItems\"))\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\");\n    return open ? \"open\" : \"idle\";\n  },\n  entry: [\"syncSelectElement\"],\n  watch({ context, prop, track, action }) {\n    track([() => context.get(\"value\").toString()], () => {\n      action([\"syncSelectedItems\", \"syncSelectElement\", \"dispatchChangeEvent\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n    track([() => context.get(\"highlightedValue\")], () => {\n      action([\"syncHighlightedItem\"]);\n    });\n    track([() => prop(\"collection\").toString()], () => {\n      action([\"syncCollection\"]);\n    });\n  },\n  on: {\n    \"HIGHLIGHTED_VALUE.SET\": {\n      actions: [\"setHighlightedItem\"]\n    },\n    \"HIGHLIGHTED_VALUE.CLEAR\": {\n      actions: [\"clearHighlightedItem\"]\n    },\n    \"ITEM.SELECT\": {\n      actions: [\"selectItem\"]\n    },\n    \"ITEM.CLEAR\": {\n      actions: [\"clearItem\"]\n    },\n    \"VALUE.SET\": {\n      actions: [\"setSelectedItems\"]\n    },\n    \"VALUE.CLEAR\": {\n      actions: [\"clearSelectedItems\"]\n    },\n    \"CLEAR.CLICK\": {\n      actions: [\"clearSelectedItems\", \"focusTriggerEl\"]\n    }\n  },\n  effects: [\"trackFormControlState\"],\n  states: {\n    idle: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: \"isTriggerClickEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          }\n        ],\n        \"TRIGGER.FOCUS\": {\n          target: \"focused\"\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\"]\n          }\n        ]\n      }\n    },\n    focused: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": [\n          {\n            guard: \"isTriggerClickEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\"]\n          },\n          {\n            guard: \"isTriggerArrowUpEvent\",\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightComputedLastItem\"]\n          },\n          {\n            guard: or(\"isTriggerArrowDownEvent\", \"isTriggerEnterEvent\"),\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"highlightComputedFirstItem\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\"]\n          }\n        ],\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\"]\n          }\n        ],\n        \"TRIGGER.BLUR\": {\n          target: \"idle\"\n        },\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightFirstSelectedItem\"]\n          }\n        ],\n        \"TRIGGER.ENTER\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedFirstItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_UP\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedLastItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_DOWN\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"setInitialFocus\", \"invokeOnOpen\", \"highlightComputedFirstItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_LEFT\": [\n          {\n            guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n            actions: [\"selectPreviousItem\"]\n          },\n          {\n            guard: not(\"multiple\"),\n            actions: [\"selectLastItem\"]\n          }\n        ],\n        \"TRIGGER.ARROW_RIGHT\": [\n          {\n            guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n            actions: [\"selectNextItem\"]\n          },\n          {\n            guard: not(\"multiple\"),\n            actions: [\"selectFirstItem\"]\n          }\n        ],\n        \"TRIGGER.HOME\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectFirstItem\"]\n        },\n        \"TRIGGER.END\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectLastItem\"]\n        },\n        \"TRIGGER.TYPEAHEAD\": {\n          guard: not(\"multiple\"),\n          actions: [\"selectMatchingItem\"]\n        }\n      }\n    },\n    open: {\n      tags: [\"open\"],\n      exit: [\"scrollContentToTop\"],\n      effects: [\"trackDismissableElement\", \"computePlacement\", \"scrollToHighlightedItem\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"clearHighlightedItem\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: \"restoreFocus\",\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n          }\n        ],\n        \"ITEM.CLICK\": [\n          {\n            guard: and(\"closeOnSelect\", \"isOpenControlled\"),\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"focusTriggerEl\", \"clearHighlightedItem\"]\n          },\n          {\n            actions: [\"selectHighlightedItem\"]\n          }\n        ],\n        \"CONTENT.HOME\": {\n          actions: [\"highlightFirstItem\"]\n        },\n        \"CONTENT.END\": {\n          actions: [\"highlightLastItem\"]\n        },\n        \"CONTENT.ARROW_DOWN\": [\n          {\n            guard: and(\"hasHighlightedItem\", \"loop\", \"isLastItemHighlighted\"),\n            actions: [\"highlightFirstItem\"]\n          },\n          {\n            guard: \"hasHighlightedItem\",\n            actions: [\"highlightNextItem\"]\n          },\n          {\n            actions: [\"highlightFirstItem\"]\n          }\n        ],\n        \"CONTENT.ARROW_UP\": [\n          {\n            guard: and(\"hasHighlightedItem\", \"loop\", \"isFirstItemHighlighted\"),\n            actions: [\"highlightLastItem\"]\n          },\n          {\n            guard: \"hasHighlightedItem\",\n            actions: [\"highlightPreviousItem\"]\n          },\n          {\n            actions: [\"highlightLastItem\"]\n          }\n        ],\n        \"CONTENT.TYPEAHEAD\": {\n          actions: [\"highlightMatchingItem\"]\n        },\n        \"ITEM.POINTER_MOVE\": {\n          actions: [\"highlightItem\"]\n        },\n        \"ITEM.POINTER_LEAVE\": {\n          actions: [\"clearHighlightedItem\"]\n        },\n        \"POSITIONING.SET\": {\n          actions: [\"reposition\"]\n        }\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      loop: ({ prop }) => !!prop(\"loopFocus\"),\n      multiple: ({ prop }) => !!prop(\"multiple\"),\n      hasSelectedItems: ({ computed }) => !!computed(\"hasSelectedItems\"),\n      hasHighlightedItem: ({ context }) => context.get(\"highlightedValue\") != null,\n      isFirstItemHighlighted: ({ context, prop }) => context.get(\"highlightedValue\") === prop(\"collection\").firstValue,\n      isLastItemHighlighted: ({ context, prop }) => context.get(\"highlightedValue\") === prop(\"collection\").lastValue,\n      closeOnSelect: ({ prop, event }) => !!(event.closeOnSelect ?? prop(\"closeOnSelect\")),\n      restoreFocus: ({ event }) => restoreFocusFn(event),\n      // guard assertions (for controlled mode)\n      isOpenControlled: ({ prop }) => prop(\"open\") !== void 0,\n      isTriggerClickEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.CLICK\",\n      isTriggerEnterEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ENTER\",\n      isTriggerArrowUpEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ARROW_UP\",\n      isTriggerArrowDownEvent: ({ event }) => event.previousEvent?.type === \"TRIGGER.ARROW_DOWN\"\n    },\n    effects: {\n      trackFormControlState({ context, scope }) {\n        return trackFormControl(getHiddenSelectEl(scope), {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            const value = context.initial(\"value\");\n            context.set(\"value\", value);\n          }\n        });\n      },\n      trackDismissableElement({ scope, send, prop }) {\n        const contentEl = () => getContentEl(scope);\n        let restoreFocus = true;\n        return trackDismissableElement(contentEl, {\n          type: \"listbox\",\n          defer: true,\n          exclude: [getTriggerEl(scope), getClearTriggerEl(scope)],\n          onFocusOutside: prop(\"onFocusOutside\"),\n          onPointerDownOutside: prop(\"onPointerDownOutside\"),\n          onInteractOutside(event) {\n            prop(\"onInteractOutside\")?.(event);\n            restoreFocus = !(event.detail.focusable || event.detail.contextmenu);\n          },\n          onDismiss() {\n            send({ type: \"CLOSE\", src: \"interact-outside\", restoreFocus });\n          }\n        });\n      },\n      computePlacement({ context, prop, scope }) {\n        const positioning = prop(\"positioning\");\n        context.set(\"currentPlacement\", positioning.placement);\n        const triggerEl = () => getTriggerEl(scope);\n        const positionerEl = () => getPositionerEl(scope);\n        return getPlacement(triggerEl, positionerEl, {\n          defer: true,\n          ...positioning,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      scrollToHighlightedItem({ context, prop, scope, event }) {\n        const exec = (immediate) => {\n          const highlightedValue = context.get(\"highlightedValue\");\n          if (highlightedValue == null) return;\n          if (event.current().type.includes(\"POINTER\")) return;\n          const contentEl2 = getContentEl(scope);\n          const scrollToIndexFn = prop(\"scrollToIndexFn\");\n          if (scrollToIndexFn) {\n            const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n            scrollToIndexFn?.({\n              index: highlightedIndex,\n              immediate,\n              getElement: () => getItemEl(scope, highlightedValue)\n            });\n            return;\n          }\n          const itemEl = getItemEl(scope, highlightedValue);\n          scrollIntoView(itemEl, { rootEl: contentEl2, block: \"nearest\" });\n        };\n        raf(() => exec(true));\n        const contentEl = () => getContentEl(scope);\n        return observeAttributes(contentEl, {\n          defer: true,\n          attributes: [\"data-activedescendant\"],\n          callback() {\n            exec(false);\n          }\n        });\n      }\n    },\n    actions: {\n      reposition({ context, prop, scope, event }) {\n        const positionerEl = () => getPositionerEl(scope);\n        getPlacement(getTriggerEl(scope), positionerEl, {\n          ...prop(\"positioning\"),\n          ...event.options,\n          defer: true,\n          listeners: false,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      toggleVisibility({ send, prop, event }) {\n        send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n      },\n      highlightPreviousItem({ context, prop }) {\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (highlightedValue == null) return;\n        const value = prop(\"collection\").getPreviousValue(highlightedValue, 1, prop(\"loopFocus\"));\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightNextItem({ context, prop }) {\n        const highlightedValue = context.get(\"highlightedValue\");\n        if (highlightedValue == null) return;\n        const value = prop(\"collection\").getNextValue(highlightedValue, 1, prop(\"loopFocus\"));\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightFirstItem({ context, prop }) {\n        const value = prop(\"collection\").firstValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightLastItem({ context, prop }) {\n        const value = prop(\"collection\").lastValue;\n        context.set(\"highlightedValue\", value);\n      },\n      setInitialFocus({ scope }) {\n        raf(() => {\n          const element = getInitialFocus({\n            root: getContentEl(scope)\n          });\n          element?.focus({ preventScroll: true });\n        });\n      },\n      focusTriggerEl({ event, scope }) {\n        if (!restoreFocusFn(event)) return;\n        raf(() => {\n          const element = getTriggerEl(scope);\n          element?.focus({ preventScroll: true });\n        });\n      },\n      selectHighlightedItem({ context, prop, event }) {\n        let value = event.value ?? context.get(\"highlightedValue\");\n        if (value == null || !prop(\"collection\").has(value)) return;\n        prop(\"onSelect\")?.({ value });\n        const nullable = prop(\"deselectable\") && !prop(\"multiple\") && context.get(\"value\").includes(value);\n        value = nullable ? null : value;\n        context.set(\"value\", (prev) => {\n          if (value == null) return [];\n          if (prop(\"multiple\")) return addOrRemove(prev, value);\n          return [value];\n        });\n      },\n      highlightComputedFirstItem({ context, prop, computed }) {\n        const collection2 = prop(\"collection\");\n        const value = computed(\"hasSelectedItems\") ? collection2.sort(context.get(\"value\"))[0] : collection2.firstValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightComputedLastItem({ context, prop, computed }) {\n        const collection2 = prop(\"collection\");\n        const value = computed(\"hasSelectedItems\") ? collection2.sort(context.get(\"value\"))[0] : collection2.lastValue;\n        context.set(\"highlightedValue\", value);\n      },\n      highlightFirstSelectedItem({ context, prop, computed }) {\n        if (!computed(\"hasSelectedItems\")) return;\n        const value = prop(\"collection\").sort(context.get(\"value\"))[0];\n        context.set(\"highlightedValue\", value);\n      },\n      highlightItem({ context, event }) {\n        context.set(\"highlightedValue\", event.value);\n      },\n      highlightMatchingItem({ context, prop, event, refs }) {\n        const value = prop(\"collection\").search(event.key, {\n          state: refs.get(\"typeahead\"),\n          currentValue: context.get(\"highlightedValue\")\n        });\n        if (value == null) return;\n        context.set(\"highlightedValue\", value);\n      },\n      setHighlightedItem({ context, event }) {\n        context.set(\"highlightedValue\", event.value);\n      },\n      clearHighlightedItem({ context }) {\n        context.set(\"highlightedValue\", null);\n      },\n      selectItem({ context, prop, event }) {\n        prop(\"onSelect\")?.({ value: event.value });\n        const nullable = prop(\"deselectable\") && !prop(\"multiple\") && context.get(\"value\").includes(event.value);\n        const value = nullable ? null : event.value;\n        context.set(\"value\", (prev) => {\n          if (value == null) return [];\n          if (prop(\"multiple\")) return addOrRemove(prev, value);\n          return [value];\n        });\n      },\n      clearItem({ context, event }) {\n        context.set(\"value\", (prev) => prev.filter((v) => v !== event.value));\n      },\n      setSelectedItems({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      clearSelectedItems({ context }) {\n        context.set(\"value\", []);\n      },\n      selectPreviousItem({ context, prop }) {\n        const [firstItem] = context.get(\"value\");\n        const value = prop(\"collection\").getPreviousValue(firstItem);\n        if (value) context.set(\"value\", [value]);\n      },\n      selectNextItem({ context, prop }) {\n        const [firstItem] = context.get(\"value\");\n        const value = prop(\"collection\").getNextValue(firstItem);\n        if (value) context.set(\"value\", [value]);\n      },\n      selectFirstItem({ context, prop }) {\n        const value = prop(\"collection\").firstValue;\n        if (value) context.set(\"value\", [value]);\n      },\n      selectLastItem({ context, prop }) {\n        const value = prop(\"collection\").lastValue;\n        if (value) context.set(\"value\", [value]);\n      },\n      selectMatchingItem({ context, prop, event, refs }) {\n        const value = prop(\"collection\").search(event.key, {\n          state: refs.get(\"typeahead\"),\n          currentValue: context.get(\"value\")[0]\n        });\n        if (value == null) return;\n        context.set(\"value\", [value]);\n      },\n      scrollContentToTop({ prop, scope }) {\n        if (prop(\"scrollToIndexFn\")) {\n          const firstValue = prop(\"collection\").firstValue;\n          prop(\"scrollToIndexFn\")?.({\n            index: 0,\n            immediate: true,\n            getElement: () => getItemEl(scope, firstValue)\n          });\n        } else {\n          getContentEl(scope)?.scrollTo(0, 0);\n        }\n      },\n      invokeOnOpen({ prop, context }) {\n        prop(\"onOpenChange\")?.({ open: true, value: context.get(\"value\") });\n      },\n      invokeOnClose({ prop, context }) {\n        prop(\"onOpenChange\")?.({ open: false, value: context.get(\"value\") });\n      },\n      syncSelectElement({ context, prop, scope }) {\n        const selectEl = getHiddenSelectEl(scope);\n        if (!selectEl) return;\n        if (context.get(\"value\").length === 0 && !prop(\"multiple\")) {\n          selectEl.selectedIndex = -1;\n          return;\n        }\n        for (const option of selectEl.options) {\n          option.selected = context.get(\"value\").includes(option.value);\n        }\n      },\n      syncCollection({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const highlightedItem = collection2.find(context.get(\"highlightedValue\"));\n        if (highlightedItem) context.set(\"highlightedItem\", highlightedItem);\n        const selectedItems = collection2.findMany(context.get(\"value\"));\n        context.set(\"selectedItems\", selectedItems);\n      },\n      syncSelectedItems({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const prevSelectedItems = context.get(\"selectedItems\");\n        const value = context.get(\"value\");\n        const selectedItems = value.map((value2) => {\n          const item = prevSelectedItems.find((item2) => collection2.getItemValue(item2) === value2);\n          return item || collection2.find(value2);\n        });\n        context.set(\"selectedItems\", selectedItems);\n      },\n      syncHighlightedItem({ context, prop }) {\n        const collection2 = prop(\"collection\");\n        const highlightedValue = context.get(\"highlightedValue\");\n        const highlightedItem = highlightedValue ? collection2.find(highlightedValue) : null;\n        context.set(\"highlightedItem\", highlightedItem);\n      },\n      dispatchChangeEvent({ scope }) {\n        queueMicrotask(() => {\n          const node = getHiddenSelectEl(scope);\n          if (!node) return;\n          const win = scope.getWin();\n          const changeEvent = new win.Event(\"change\", { bubbles: true, composed: true });\n          node.dispatchEvent(changeEvent);\n        });\n      }\n    }\n  }\n});\nfunction restoreFocusFn(event) {\n  const v = event.restoreFocus ?? event.previousEvent?.restoreFocus;\n  return v == null || !!v;\n}\nvar props = createProps()([\n  \"closeOnSelect\",\n  \"collection\",\n  \"composite\",\n  \"defaultHighlightedValue\",\n  \"defaultOpen\",\n  \"defaultValue\",\n  \"deselectable\",\n  \"dir\",\n  \"disabled\",\n  \"form\",\n  \"getRootNode\",\n  \"highlightedValue\",\n  \"id\",\n  \"ids\",\n  \"invalid\",\n  \"loopFocus\",\n  \"multiple\",\n  \"name\",\n  \"onFocusOutside\",\n  \"onHighlightChange\",\n  \"onInteractOutside\",\n  \"onOpenChange\",\n  \"onPointerDownOutside\",\n  \"onSelect\",\n  \"onValueChange\",\n  \"open\",\n  \"positioning\",\n  \"readOnly\",\n  \"required\",\n  \"scrollToIndexFn\",\n  \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"item\", \"persistFocus\"]);\nvar splitItemProps = createSplitProps(itemProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\n\nexport { anatomy, collection, connect, itemGroupLabelProps, itemGroupProps, itemProps, machine, props, splitItemGroupLabelProps, splitItemGroupProps, splitItemProps, splitProps };\n", "/* eslint @typescript-eslint/no-explicit-any: off */\n// symbols\nconst TRACK_MEMO_SYMBOL = Symbol();\nconst GET_ORIGINAL_SYMBOL = Symbol();\n// properties\nconst AFFECTED_PROPERTY = 'a';\nconst IS_TARGET_COPIED_PROPERTY = 'f';\nconst PROXY_PROPERTY = 'p';\nconst PROXY_CACHE_PROPERTY = 'c';\nconst TARGET_CACHE_PROPERTY = 't';\nconst HAS_KEY_PROPERTY = 'h';\nconst ALL_OWN_KEYS_PROPERTY = 'w';\nconst HAS_OWN_KEY_PROPERTY = 'o';\nconst KEYS_PROPERTY = 'k';\n// function to create a new bare proxy\nlet newProxy = (target, handler) => new Proxy(target, handler);\n// get object prototype\nconst getProto = Object.getPrototypeOf;\nconst objectsToTrack = new WeakMap();\n// check if obj is a plain object or an array\nconst isObjectToTrack = (obj) => obj &&\n    (objectsToTrack.has(obj)\n        ? objectsToTrack.get(obj)\n        : getProto(obj) === Object.prototype || getProto(obj) === Array.prototype);\n// check if it is object\nconst isObject = (x) => typeof x === 'object' && x !== null;\n// Properties that are both non-configurable and non-writable will break\n// the proxy get trap when we try to return a recursive/child compare proxy\n// from them. We can avoid this by making a copy of the target object with\n// all descriptors marked as configurable, see `copyTargetObject`.\n// See: https://github.com/dai-shi/proxy-compare/pull/8\nconst needsToCopyTargetObject = (obj) => Object.values(Object.getOwnPropertyDescriptors(obj)).some((descriptor) => !descriptor.configurable && !descriptor.writable);\n// Make a copy with all descriptors marked as configurable.\nconst copyTargetObject = (obj) => {\n    if (Array.isArray(obj)) {\n        // Arrays need a special way to copy\n        return Array.from(obj);\n    }\n    // For non-array objects, we create a new object keeping the prototype\n    // with changing all configurable options (otherwise, proxies will complain)\n    const descriptors = Object.getOwnPropertyDescriptors(obj);\n    Object.values(descriptors).forEach((desc) => {\n        desc.configurable = true;\n    });\n    return Object.create(getProto(obj), descriptors);\n};\nconst createProxyHandler = (origObj, isTargetCopied) => {\n    const state = {\n        [IS_TARGET_COPIED_PROPERTY]: isTargetCopied,\n    };\n    let trackObject = false; // for trackMemo\n    const recordUsage = (type, key) => {\n        if (!trackObject) {\n            let used = state[AFFECTED_PROPERTY].get(origObj);\n            if (!used) {\n                used = {};\n                state[AFFECTED_PROPERTY].set(origObj, used);\n            }\n            if (type === ALL_OWN_KEYS_PROPERTY) {\n                used[ALL_OWN_KEYS_PROPERTY] = true;\n            }\n            else {\n                let set = used[type];\n                if (!set) {\n                    set = new Set();\n                    used[type] = set;\n                }\n                set.add(key);\n            }\n        }\n    };\n    const recordObjectAsUsed = () => {\n        trackObject = true;\n        state[AFFECTED_PROPERTY].delete(origObj);\n    };\n    const handler = {\n        get(target, key) {\n            if (key === GET_ORIGINAL_SYMBOL) {\n                return origObj;\n            }\n            recordUsage(KEYS_PROPERTY, key);\n            return createProxy(Reflect.get(target, key), state[AFFECTED_PROPERTY], state[PROXY_CACHE_PROPERTY], state[TARGET_CACHE_PROPERTY]);\n        },\n        has(target, key) {\n            if (key === TRACK_MEMO_SYMBOL) {\n                recordObjectAsUsed();\n                return true;\n            }\n            recordUsage(HAS_KEY_PROPERTY, key);\n            return Reflect.has(target, key);\n        },\n        getOwnPropertyDescriptor(target, key) {\n            recordUsage(HAS_OWN_KEY_PROPERTY, key);\n            return Reflect.getOwnPropertyDescriptor(target, key);\n        },\n        ownKeys(target) {\n            recordUsage(ALL_OWN_KEYS_PROPERTY);\n            return Reflect.ownKeys(target);\n        },\n    };\n    if (isTargetCopied) {\n        handler.set = handler.deleteProperty = () => false;\n    }\n    return [handler, state];\n};\nconst getOriginalObject = (obj) => \n// unwrap proxy\nobj[GET_ORIGINAL_SYMBOL] ||\n    // otherwise\n    obj;\n/**\n * Create a proxy.\n *\n * This function will create a proxy at top level and proxy nested objects as you access them,\n * in order to keep track of which properties were accessed via get/has proxy handlers:\n *\n * NOTE: Printing of WeakMap is hard to inspect and not very readable\n * for this purpose you can use the `affectedToPathList` helper.\n *\n * @param {object} obj - Object that will be wrapped on the proxy.\n * @param {WeakMap<object, unknown>} affected -\n * WeakMap that will hold the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap<object, unknown>} [proxyCache] -\n * WeakMap that will help keep referential identity for proxies.\n * @returns {Proxy<object>} - Object wrapped in a proxy.\n *\n * @example\n * import { createProxy } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n * const proxy = createProxy(original, affected);\n *\n * proxy.a // Will mark as used and track its value.\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"a\"\n *\n * proxy.d // Will mark \"d\" as accessed to track and proxy itself ({ e: \"3\" }).\n * // This will update the affected WeakMap with original as key\n * // and a Set with \"d\"\n */\nexport const createProxy = (obj, affected, proxyCache, targetCache) => {\n    if (!isObjectToTrack(obj))\n        return obj;\n    let targetAndCopied = targetCache && targetCache.get(obj);\n    if (!targetAndCopied) {\n        const target = getOriginalObject(obj);\n        if (needsToCopyTargetObject(target)) {\n            targetAndCopied = [target, copyTargetObject(target)];\n        }\n        else {\n            targetAndCopied = [target];\n        }\n        targetCache === null || targetCache === void 0 ? void 0 : targetCache.set(obj, targetAndCopied);\n    }\n    const [target, copiedTarget] = targetAndCopied;\n    let handlerAndState = proxyCache && proxyCache.get(target);\n    if (!handlerAndState ||\n        handlerAndState[1][IS_TARGET_COPIED_PROPERTY] !== !!copiedTarget) {\n        handlerAndState = createProxyHandler(target, !!copiedTarget);\n        handlerAndState[1][PROXY_PROPERTY] = newProxy(copiedTarget || target, handlerAndState[0]);\n        if (proxyCache) {\n            proxyCache.set(target, handlerAndState);\n        }\n    }\n    handlerAndState[1][AFFECTED_PROPERTY] = affected;\n    handlerAndState[1][PROXY_CACHE_PROPERTY] = proxyCache;\n    handlerAndState[1][TARGET_CACHE_PROPERTY] = targetCache;\n    return handlerAndState[1][PROXY_PROPERTY];\n};\nconst isAllOwnKeysChanged = (prevObj, nextObj) => {\n    const prevKeys = Reflect.ownKeys(prevObj);\n    const nextKeys = Reflect.ownKeys(nextObj);\n    return (prevKeys.length !== nextKeys.length ||\n        prevKeys.some((k, i) => k !== nextKeys[i]));\n};\n/**\n * Compare changes on objects.\n *\n * This will compare the affected properties on tracked objects inside the proxy\n * to check if there were any changes made to it,\n * by default if no property was accessed on the proxy it will attempt to do a\n * reference equality check for the objects provided (Object.is(a, b)). If you access a property\n * on the proxy, then isChanged will only compare the affected properties.\n *\n * @param {object} prevObj - The previous object to compare.\n * @param {object} nextObj - Object to compare with the previous one.\n * @param {WeakMap<object, unknown>} affected -\n * WeakMap that holds the tracking of which properties in the proxied object were accessed.\n * @param {WeakMap<object, unknown>} [cache] -\n * WeakMap that holds a cache of the comparisons for better performance with repetitive comparisons,\n * and to avoid infinite loop with circular structures.\n * @returns {boolean} - Boolean indicating if the affected property on the object has changed.\n *\n * @example\n * import { createProxy, isChanged } from 'proxy-compare';\n *\n * const obj = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(obj, affected);\n *\n * proxy.a\n *\n * isChanged(obj, { a: \"1\" }, affected) // false\n *\n * proxy.a = \"2\"\n *\n * isChanged(obj, { a: \"1\" }, affected) // true\n */\nexport const isChanged = (prevObj, nextObj, affected, cache, // for object with cycles\nisEqual = Object.is) => {\n    if (isEqual(prevObj, nextObj)) {\n        return false;\n    }\n    if (!isObject(prevObj) || !isObject(nextObj))\n        return true;\n    const used = affected.get(getOriginalObject(prevObj));\n    if (!used)\n        return true;\n    if (cache) {\n        const hit = cache.get(prevObj);\n        if (hit === nextObj) {\n            return false;\n        }\n        // for object with cycles\n        cache.set(prevObj, nextObj);\n    }\n    let changed = null;\n    for (const key of used[HAS_KEY_PROPERTY] || []) {\n        changed = Reflect.has(prevObj, key) !== Reflect.has(nextObj, key);\n        if (changed)\n            return changed;\n    }\n    if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n        changed = isAllOwnKeysChanged(prevObj, nextObj);\n        if (changed)\n            return changed;\n    }\n    else {\n        for (const key of used[HAS_OWN_KEY_PROPERTY] || []) {\n            const hasPrev = !!Reflect.getOwnPropertyDescriptor(prevObj, key);\n            const hasNext = !!Reflect.getOwnPropertyDescriptor(nextObj, key);\n            changed = hasPrev !== hasNext;\n            if (changed)\n                return changed;\n        }\n    }\n    for (const key of used[KEYS_PROPERTY] || []) {\n        changed = isChanged(prevObj[key], nextObj[key], affected, cache, isEqual);\n        if (changed)\n            return changed;\n    }\n    if (changed === null)\n        throw new Error('invalid used');\n    return changed;\n};\n// explicitly track object with memo\nexport const trackMemo = (obj) => {\n    if (isObjectToTrack(obj)) {\n        return TRACK_MEMO_SYMBOL in obj;\n    }\n    return false;\n};\n/**\n * Unwrap proxy to get the original object.\n *\n * Used to retrieve the original object used to create the proxy instance with `createProxy`.\n *\n * @param {Proxy<object>} obj -  The proxy wrapper of the originial object.\n * @returns {object | null} - Return either the unwrapped object if exists.\n *\n * @example\n * import { createProxy, getUntracked } from 'proxy-compare';\n *\n * const original = { a: \"1\", c: \"2\", d: { e: \"3\" } };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n * const originalFromProxy = getUntracked(proxy)\n *\n * Object.is(original, originalFromProxy) // true\n * isChanged(original, originalFromProxy, affected) // false\n */\nexport const getUntracked = (obj) => {\n    if (isObjectToTrack(obj)) {\n        return obj[GET_ORIGINAL_SYMBOL] || null;\n    }\n    return null;\n};\n/**\n * Mark object to be tracked.\n *\n * This function marks an object that will be passed into `createProxy`\n * as marked to track or not. By default only Array and Object are marked to track,\n * so this is useful for example to mark a class instance to track or to mark a object\n * to be untracked when creating your proxy.\n *\n * @param obj - Object to mark as tracked or not.\n * @param mark - Boolean indicating whether you want to track this object or not.\n * @returns - No return.\n *\n * @example\n * import { createProxy, markToTrack, isChanged } from 'proxy-compare';\n *\n * const nested = { e: \"3\" }\n *\n * markToTrack(nested, false)\n *\n * const original = { a: \"1\", c: \"2\", d: nested };\n * const affected = new WeakMap();\n *\n * const proxy = createProxy(original, affected);\n *\n * proxy.d.e\n *\n * isChanged(original, { d: { e: \"3\" } }, affected) // true\n */\nexport const markToTrack = (obj, mark = true) => {\n    objectsToTrack.set(obj, mark);\n};\n/**\n * Convert `affected` to path list\n *\n * `affected` is a weak map which is not printable.\n * This function is can convert it to printable path list.\n * It's for debugging purpose.\n *\n * @param obj - An object that is used with `createProxy`.\n * @param affected - A weak map that is used with `createProxy`.\n * @param onlyWithValues - An optional boolean to exclude object getters.\n * @returns - An array of paths.\n */\nexport const affectedToPathList = (obj, affected, onlyWithValues) => {\n    const list = [];\n    const seen = new WeakSet();\n    const walk = (x, path) => {\n        var _a, _b, _c;\n        if (seen.has(x)) {\n            // for object with cycles\n            return;\n        }\n        if (isObject(x)) {\n            seen.add(x);\n        }\n        const used = isObject(x) && affected.get(getOriginalObject(x));\n        if (used) {\n            (_a = used[HAS_KEY_PROPERTY]) === null || _a === void 0 ? void 0 : _a.forEach((key) => {\n                const segment = `:has(${String(key)})`;\n                list.push(path ? [...path, segment] : [segment]);\n            });\n            if (used[ALL_OWN_KEYS_PROPERTY] === true) {\n                const segment = ':ownKeys';\n                list.push(path ? [...path, segment] : [segment]);\n            }\n            else {\n                (_b = used[HAS_OWN_KEY_PROPERTY]) === null || _b === void 0 ? void 0 : _b.forEach((key) => {\n                    const segment = `:hasOwn(${String(key)})`;\n                    list.push(path ? [...path, segment] : [segment]);\n                });\n            }\n            (_c = used[KEYS_PROPERTY]) === null || _c === void 0 ? void 0 : _c.forEach((key) => {\n                if (!onlyWithValues ||\n                    'value' in (Object.getOwnPropertyDescriptor(x, key) || {})) {\n                    walk(x[key], path ? [...path, key] : [key]);\n                }\n            });\n        }\n        else if (path) {\n            list.push(path);\n        }\n    };\n    walk(obj);\n    return list;\n};\n/**\n * replace newProxy function.\n *\n * This can be used if you want to use proxy-polyfill.\n * Note that proxy-polyfill can't polyfill everything.\n * Use it at your own risk.\n */\nexport const replaceNewProxy = (fn) => {\n    newProxy = fn;\n};\n", "import { markToTrack, getUntracked } from 'proxy-compare';\n\n// src/global.ts\nfunction glob() {\n  if (typeof globalThis !== \"undefined\") return globalThis;\n  if (typeof self !== \"undefined\") return self;\n  if (typeof window !== \"undefined\") return window;\n  if (typeof global !== \"undefined\") return global;\n}\nfunction globalRef(key, value) {\n  const g = glob();\n  if (!g) return value();\n  g[key] || (g[key] = value());\n  return g[key];\n}\nvar refSet = globalRef(\"__zag__refSet\", () => /* @__PURE__ */ new WeakSet());\n\n// src/utils.ts\nvar isReactElement = (x) => typeof x === \"object\" && x !== null && \"$$typeof\" in x && \"props\" in x;\nvar isVueElement = (x) => typeof x === \"object\" && x !== null && \"__v_isVNode\" in x;\nvar isDOMElement = (x) => typeof x === \"object\" && x !== null && \"nodeType\" in x && typeof x.nodeName === \"string\";\nvar isElement = (x) => isReactElement(x) || isVueElement(x) || isDOMElement(x);\nvar isObject = (x) => x !== null && typeof x === \"object\";\nvar canProxy = (x) => isObject(x) && !refSet.has(x) && (Array.isArray(x) || !(Symbol.iterator in x)) && !isElement(x) && !(x instanceof WeakMap) && !(x instanceof WeakSet) && !(x instanceof Error) && !(x instanceof Number) && !(x instanceof Date) && !(x instanceof String) && !(x instanceof RegExp) && !(x instanceof ArrayBuffer) && !(x instanceof Promise) && !(x instanceof File) && !(x instanceof Blob) && !(x instanceof AbortController);\nvar isDev = () => process.env.NODE_ENV !== \"production\";\n\n// src/clone.ts\nfunction set(obj, key, val) {\n  if (typeof val.value === \"object\" && !canProxy(val.value)) val.value = clone(val.value);\n  if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === \"__proto__\") {\n    Object.defineProperty(obj, key, val);\n  } else obj[key] = val.value;\n}\nfunction clone(x) {\n  if (typeof x !== \"object\") return x;\n  var i = 0, k, list, tmp, str = Object.prototype.toString.call(x);\n  if (str === \"[object Object]\") {\n    tmp = Object.create(Object.getPrototypeOf(x) || null);\n  } else if (str === \"[object Array]\") {\n    tmp = Array(x.length);\n  } else if (str === \"[object Set]\") {\n    tmp = /* @__PURE__ */ new Set();\n    x.forEach(function(val) {\n      tmp.add(clone(val));\n    });\n  } else if (str === \"[object Map]\") {\n    tmp = /* @__PURE__ */ new Map();\n    x.forEach(function(val, key) {\n      tmp.set(clone(key), clone(val));\n    });\n  } else if (str === \"[object Date]\") {\n    tmp = /* @__PURE__ */ new Date(+x);\n  } else if (str === \"[object RegExp]\") {\n    tmp = new RegExp(x.source, x.flags);\n  } else if (str === \"[object DataView]\") {\n    tmp = new x.constructor(clone(x.buffer));\n  } else if (str === \"[object ArrayBuffer]\") {\n    tmp = x.slice(0);\n  } else if (str === \"[object Blob]\") {\n    tmp = x.slice();\n  } else if (str.slice(-6) === \"Array]\") {\n    tmp = new x.constructor(x);\n  }\n  if (tmp) {\n    for (list = Object.getOwnPropertySymbols(x); i < list.length; i++) {\n      set(tmp, list[i], Object.getOwnPropertyDescriptor(x, list[i]));\n    }\n    for (i = 0, list = Object.getOwnPropertyNames(x); i < list.length; i++) {\n      if (Object.hasOwnProperty.call(tmp, k = list[i]) && tmp[k] === x[k]) continue;\n      set(tmp, k, Object.getOwnPropertyDescriptor(x, k));\n    }\n  }\n  return tmp || x;\n}\nvar proxyStateMap = globalRef(\"__zag__proxyStateMap\", () => /* @__PURE__ */ new WeakMap());\nvar buildProxyFunction = (objectIs = Object.is, newProxy = (target, handler) => new Proxy(target, handler), snapCache = /* @__PURE__ */ new WeakMap(), createSnapshot = (target, version) => {\n  const cache = snapCache.get(target);\n  if (cache?.[0] === version) {\n    return cache[1];\n  }\n  const snap = Array.isArray(target) ? [] : Object.create(Object.getPrototypeOf(target));\n  markToTrack(snap, true);\n  snapCache.set(target, [version, snap]);\n  Reflect.ownKeys(target).forEach((key) => {\n    const value = Reflect.get(target, key);\n    if (refSet.has(value)) {\n      markToTrack(value, false);\n      snap[key] = value;\n    } else if (proxyStateMap.has(value)) {\n      snap[key] = snapshot(value);\n    } else {\n      snap[key] = value;\n    }\n  });\n  return Object.freeze(snap);\n}, proxyCache = /* @__PURE__ */ new WeakMap(), versionHolder = [1, 1], proxyFunction2 = (initialObject) => {\n  if (!isObject(initialObject)) {\n    throw new Error(\"object required\");\n  }\n  const found = proxyCache.get(initialObject);\n  if (found) {\n    return found;\n  }\n  let version = versionHolder[0];\n  const listeners = /* @__PURE__ */ new Set();\n  const notifyUpdate = (op, nextVersion = ++versionHolder[0]) => {\n    if (version !== nextVersion) {\n      version = nextVersion;\n      listeners.forEach((listener) => listener(op, nextVersion));\n    }\n  };\n  let checkVersion = versionHolder[1];\n  const ensureVersion = (nextCheckVersion = ++versionHolder[1]) => {\n    if (checkVersion !== nextCheckVersion && !listeners.size) {\n      checkVersion = nextCheckVersion;\n      propProxyStates.forEach(([propProxyState]) => {\n        const propVersion = propProxyState[1](nextCheckVersion);\n        if (propVersion > version) {\n          version = propVersion;\n        }\n      });\n    }\n    return version;\n  };\n  const createPropListener = (prop) => (op, nextVersion) => {\n    const newOp = [...op];\n    newOp[1] = [prop, ...newOp[1]];\n    notifyUpdate(newOp, nextVersion);\n  };\n  const propProxyStates = /* @__PURE__ */ new Map();\n  const addPropListener = (prop, propProxyState) => {\n    if (isDev() && propProxyStates.has(prop)) {\n      throw new Error(\"prop listener already exists\");\n    }\n    if (listeners.size) {\n      const remove = propProxyState[3](createPropListener(prop));\n      propProxyStates.set(prop, [propProxyState, remove]);\n    } else {\n      propProxyStates.set(prop, [propProxyState]);\n    }\n  };\n  const removePropListener = (prop) => {\n    const entry = propProxyStates.get(prop);\n    if (entry) {\n      propProxyStates.delete(prop);\n      entry[1]?.();\n    }\n  };\n  const addListener = (listener) => {\n    listeners.add(listener);\n    if (listeners.size === 1) {\n      propProxyStates.forEach(([propProxyState, prevRemove], prop) => {\n        if (isDev() && prevRemove) {\n          throw new Error(\"remove already exists\");\n        }\n        const remove = propProxyState[3](createPropListener(prop));\n        propProxyStates.set(prop, [propProxyState, remove]);\n      });\n    }\n    const removeListener = () => {\n      listeners.delete(listener);\n      if (listeners.size === 0) {\n        propProxyStates.forEach(([propProxyState, remove], prop) => {\n          if (remove) {\n            remove();\n            propProxyStates.set(prop, [propProxyState]);\n          }\n        });\n      }\n    };\n    return removeListener;\n  };\n  const baseObject = Array.isArray(initialObject) ? [] : Object.create(Object.getPrototypeOf(initialObject));\n  const handler = {\n    deleteProperty(target, prop) {\n      const prevValue = Reflect.get(target, prop);\n      removePropListener(prop);\n      const deleted = Reflect.deleteProperty(target, prop);\n      if (deleted) {\n        notifyUpdate([\"delete\", [prop], prevValue]);\n      }\n      return deleted;\n    },\n    set(target, prop, value, receiver) {\n      const hasPrevValue = Reflect.has(target, prop);\n      const prevValue = Reflect.get(target, prop, receiver);\n      if (hasPrevValue && (objectIs(prevValue, value) || proxyCache.has(value) && objectIs(prevValue, proxyCache.get(value)))) {\n        return true;\n      }\n      removePropListener(prop);\n      if (isObject(value)) {\n        value = getUntracked(value) || value;\n      }\n      let nextValue = value;\n      if (Object.getOwnPropertyDescriptor(target, prop)?.set) ; else {\n        if (!proxyStateMap.has(value) && canProxy(value)) {\n          nextValue = proxy(value);\n        }\n        const childProxyState = !refSet.has(nextValue) && proxyStateMap.get(nextValue);\n        if (childProxyState) {\n          addPropListener(prop, childProxyState);\n        }\n      }\n      Reflect.set(target, prop, nextValue, receiver);\n      notifyUpdate([\"set\", [prop], value, prevValue]);\n      return true;\n    }\n  };\n  const proxyObject = newProxy(baseObject, handler);\n  proxyCache.set(initialObject, proxyObject);\n  const proxyState = [baseObject, ensureVersion, createSnapshot, addListener];\n  proxyStateMap.set(proxyObject, proxyState);\n  Reflect.ownKeys(initialObject).forEach((key) => {\n    const desc = Object.getOwnPropertyDescriptor(initialObject, key);\n    if (desc.get || desc.set) {\n      Object.defineProperty(baseObject, key, desc);\n    } else {\n      proxyObject[key] = initialObject[key];\n    }\n  });\n  return proxyObject;\n}) => [\n  // public functions\n  proxyFunction2,\n  // shared state\n  proxyStateMap,\n  refSet,\n  // internal things\n  objectIs,\n  newProxy,\n  canProxy,\n  snapCache,\n  createSnapshot,\n  proxyCache,\n  versionHolder\n];\nvar [proxyFunction] = buildProxyFunction();\nfunction proxy(initialObject = {}) {\n  return proxyFunction(initialObject);\n}\nfunction subscribe(proxyObject, callback, notifyInSync) {\n  const proxyState = proxyStateMap.get(proxyObject);\n  if (isDev() && !proxyState) {\n    console.warn(\"Please use proxy object\");\n  }\n  let promise;\n  const ops = [];\n  const addListener = proxyState[3];\n  let isListenerActive = false;\n  const listener = (op) => {\n    ops.push(op);\n    if (notifyInSync) {\n      callback(ops.splice(0));\n      return;\n    }\n    if (!promise) {\n      promise = Promise.resolve().then(() => {\n        promise = void 0;\n        if (isListenerActive) {\n          callback(ops.splice(0));\n        }\n      });\n    }\n  };\n  const removeListener = addListener(listener);\n  isListenerActive = true;\n  return () => {\n    isListenerActive = false;\n    removeListener();\n  };\n}\nfunction snapshot(proxyObject) {\n  const proxyState = proxyStateMap.get(proxyObject);\n  if (isDev() && !proxyState) {\n    console.warn(\"Please use proxy object\");\n  }\n  const [target, ensureVersion, createSnapshot] = proxyState;\n  return createSnapshot(target, ensureVersion());\n}\nfunction ref(obj) {\n  refSet.add(obj);\n  return obj;\n}\n\n// src/proxy-computed.ts\nfunction proxyWithComputed(initialObject, computedFns) {\n  const keys = Object.keys(computedFns);\n  keys.forEach((key) => {\n    if (Object.getOwnPropertyDescriptor(initialObject, key)) {\n      throw new Error(\"object property already defined\");\n    }\n    const computedFn = computedFns[key];\n    const { get, set: set2 } = typeof computedFn === \"function\" ? { get: computedFn } : computedFn;\n    const desc = {};\n    desc.get = () => get(snapshot(proxyObject));\n    if (set2) {\n      desc.set = (newValue) => set2(proxyObject, newValue);\n    }\n    Object.defineProperty(initialObject, key, desc);\n  });\n  const proxyObject = proxy(initialObject);\n  return proxyObject;\n}\n\nexport { clone, globalRef, proxy, proxyWithComputed, ref, snapshot, subscribe };\n", "import { createScope, MachineStatus, INIT_STATE } from '@zag-js/core';\nexport { mergeProps } from '@zag-js/core';\nimport { createNormalizer } from '@zag-js/types';\nimport { subscribe, proxy } from '@zag-js/store';\nimport { runIfFn, compact, isFunction, warn, toArray, isString, isEqual, identity } from '@zag-js/utils';\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar propMap = {\n  onFocus: \"onFocusin\",\n  onBlur: \"onFocusout\",\n  onChange: \"onInput\",\n  onDoubleClick: \"onDblclick\",\n  htmlFor: \"for\",\n  className: \"class\",\n  defaultValue: \"value\",\n  defaultChecked: \"checked\"\n};\nvar caseSensitiveSvgAttrs = /* @__PURE__ */ new Set([\"viewBox\", \"preserveAspectRatio\"]);\nvar toStyleString = (style) => {\n  let string = \"\";\n  for (let key in style) {\n    const value = style[key];\n    if (value === null || value === void 0) continue;\n    if (!key.startsWith(\"--\")) key = key.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);\n    string += `${key}:${value};`;\n  }\n  return string;\n};\nvar normalizeProps = createNormalizer((props) => {\n  return Object.entries(props).reduce((acc, [key, value]) => {\n    if (value === void 0) return acc;\n    if (key in propMap) {\n      key = propMap[key];\n    }\n    if (key === \"style\" && typeof value === \"object\") {\n      acc.style = toStyleString(value);\n      return acc;\n    }\n    const normalizedKey = caseSensitiveSvgAttrs.has(key) ? key : key.toLowerCase();\n    acc[normalizedKey] = value;\n    return acc;\n  }, {});\n});\n\n// src/spread-props.ts\nvar prevAttrsMap = /* @__PURE__ */ new WeakMap();\nvar assignableProps = /* @__PURE__ */ new Set([\"value\", \"checked\", \"selected\"]);\nvar caseSensitiveSvgAttrs2 = /* @__PURE__ */ new Set([\n  \"viewBox\",\n  \"preserveAspectRatio\",\n  \"clipPath\",\n  \"clipRule\",\n  \"fillRule\",\n  \"strokeWidth\",\n  \"strokeLinecap\",\n  \"strokeLinejoin\",\n  \"strokeDasharray\",\n  \"strokeDashoffset\",\n  \"strokeMiterlimit\"\n]);\nvar isSvgElement = (node) => {\n  return node.tagName === \"svg\" || node.namespaceURI === \"http://www.w3.org/2000/svg\";\n};\nvar getAttributeName = (node, attrName) => {\n  const shouldPreserveCase = isSvgElement(node) && caseSensitiveSvgAttrs2.has(attrName);\n  return shouldPreserveCase ? attrName : attrName.toLowerCase();\n};\nfunction spreadProps(node, attrs) {\n  const oldAttrs = prevAttrsMap.get(node) || {};\n  const attrKeys = Object.keys(attrs);\n  const addEvt = (e, f) => {\n    node.addEventListener(e.toLowerCase(), f);\n  };\n  const remEvt = (e, f) => {\n    node.removeEventListener(e.toLowerCase(), f);\n  };\n  const onEvents = (attr) => attr.startsWith(\"on\");\n  const others = (attr) => !attr.startsWith(\"on\");\n  const setup = (attr) => addEvt(attr.substring(2), attrs[attr]);\n  const teardown = (attr) => remEvt(attr.substring(2), attrs[attr]);\n  const apply = (attrName) => {\n    const value = attrs[attrName];\n    const oldValue = oldAttrs[attrName];\n    if (value === oldValue) return;\n    if (attrName === \"class\") {\n      node.className = value ?? \"\";\n      return;\n    }\n    if (assignableProps.has(attrName)) {\n      node[attrName] = value ?? \"\";\n      return;\n    }\n    if (typeof value === \"boolean\") {\n      node.toggleAttribute(getAttributeName(node, attrName), value);\n      return;\n    }\n    if (value != null) {\n      node.setAttribute(getAttributeName(node, attrName), value);\n      return;\n    }\n    node.removeAttribute(getAttributeName(node, attrName));\n  };\n  for (const key in oldAttrs) {\n    if (attrs[key] == null) {\n      if (key === \"class\") {\n        node.className = \"\";\n      } else if (assignableProps.has(key)) {\n        node[key] = \"\";\n      } else {\n        node.removeAttribute(getAttributeName(node, key));\n      }\n    }\n  }\n  const oldEvents = Object.keys(oldAttrs).filter(onEvents);\n  oldEvents.forEach((evt) => {\n    remEvt(evt.substring(2), oldAttrs[evt]);\n  });\n  attrKeys.filter(onEvents).forEach(setup);\n  attrKeys.filter(others).forEach(apply);\n  prevAttrsMap.set(node, attrs);\n  return function cleanup() {\n    attrKeys.filter(onEvents).forEach(teardown);\n  };\n}\nfunction bindable(props) {\n  const initial = props().value ?? props().defaultValue;\n  if (props().debug) {\n    console.log(`[bindable > ${props().debug}] initial`, initial);\n  }\n  const eq = props().isEqual ?? Object.is;\n  const store = proxy({ value: initial });\n  const controlled = () => props().value !== void 0;\n  return {\n    initial,\n    ref: store,\n    get() {\n      return controlled() ? props().value : store.value;\n    },\n    set(nextValue) {\n      const prev = store.value;\n      const next = isFunction(nextValue) ? nextValue(prev) : nextValue;\n      if (props().debug) {\n        console.log(`[bindable > ${props().debug}] setValue`, { next, prev });\n      }\n      if (!controlled()) store.value = next;\n      if (!eq(next, prev)) {\n        props().onChange?.(next, prev);\n      }\n    },\n    invoke(nextValue, prevValue) {\n      props().onChange?.(nextValue, prevValue);\n    },\n    hash(value) {\n      return props().hash?.(value) ?? String(value);\n    }\n  };\n}\nbindable.cleanup = (_fn) => {\n};\nbindable.ref = (defaultValue) => {\n  let value = defaultValue;\n  return {\n    get: () => value,\n    set: (next) => {\n      value = next;\n    }\n  };\n};\n\n// src/refs.ts\nfunction createRefs(refs) {\n  const ref = { current: refs };\n  return {\n    get(key) {\n      return ref.current[key];\n    },\n    set(key, value) {\n      ref.current[key] = value;\n    }\n  };\n}\n\n// src/machine.ts\nvar VanillaMachine = class {\n  constructor(machine, userProps = {}) {\n    this.machine = machine;\n    __publicField(this, \"scope\");\n    __publicField(this, \"context\");\n    __publicField(this, \"prop\");\n    __publicField(this, \"state\");\n    __publicField(this, \"refs\");\n    __publicField(this, \"computed\");\n    __publicField(this, \"event\", { type: \"\" });\n    __publicField(this, \"previousEvent\", { type: \"\" });\n    __publicField(this, \"effects\", /* @__PURE__ */ new Map());\n    __publicField(this, \"transition\", null);\n    __publicField(this, \"cleanups\", []);\n    __publicField(this, \"subscriptions\", []);\n    __publicField(this, \"getEvent\", () => ({\n      ...this.event,\n      current: () => this.event,\n      previous: () => this.previousEvent\n    }));\n    __publicField(this, \"getStateConfig\", (state) => {\n      return this.machine.states[state];\n    });\n    __publicField(this, \"getState\", () => ({\n      ...this.state,\n      matches: (...values) => values.includes(this.state.get()),\n      hasTag: (tag) => !!this.getStateConfig(this.state.get())?.tags?.includes(tag)\n    }));\n    __publicField(this, \"debug\", (...args) => {\n      if (this.machine.debug) console.log(...args);\n    });\n    __publicField(this, \"notify\", () => {\n      this.publish();\n    });\n    __publicField(this, \"send\", (event) => {\n      if (this.status !== MachineStatus.Started) return;\n      queueMicrotask(() => {\n        if (!event) return;\n        this.previousEvent = this.event;\n        this.event = event;\n        this.debug(\"send\", event);\n        let currentState = this.state.get();\n        const eventType = event.type;\n        const transitions = this.getStateConfig(currentState)?.on?.[eventType] ?? this.machine.on?.[eventType];\n        const transition = this.choose(transitions);\n        if (!transition) return;\n        this.transition = transition;\n        const target = transition.target ?? currentState;\n        this.debug(\"transition\", transition);\n        const changed = target !== currentState;\n        if (changed) {\n          this.state.set(target);\n        } else if (transition.reenter && !changed) {\n          this.state.invoke(currentState, currentState);\n        } else {\n          this.action(transition.actions);\n        }\n      });\n    });\n    __publicField(this, \"action\", (keys) => {\n      const strs = isFunction(keys) ? keys(this.getParams()) : keys;\n      if (!strs) return;\n      const fns = strs.map((s) => {\n        const fn = this.machine.implementations?.actions?.[s];\n        if (!fn) warn(`[zag-js] No implementation found for action \"${JSON.stringify(s)}\"`);\n        return fn;\n      });\n      for (const fn of fns) {\n        fn?.(this.getParams());\n      }\n    });\n    __publicField(this, \"guard\", (str) => {\n      if (isFunction(str)) return str(this.getParams());\n      return this.machine.implementations?.guards?.[str](this.getParams());\n    });\n    __publicField(this, \"effect\", (keys) => {\n      const strs = isFunction(keys) ? keys(this.getParams()) : keys;\n      if (!strs) return;\n      const fns = strs.map((s) => {\n        const fn = this.machine.implementations?.effects?.[s];\n        if (!fn) warn(`[zag-js] No implementation found for effect \"${JSON.stringify(s)}\"`);\n        return fn;\n      });\n      const cleanups = [];\n      for (const fn of fns) {\n        const cleanup = fn?.(this.getParams());\n        if (cleanup) cleanups.push(cleanup);\n      }\n      return () => cleanups.forEach((fn) => fn?.());\n    });\n    __publicField(this, \"choose\", (transitions) => {\n      return toArray(transitions).find((t) => {\n        let result = !t.guard;\n        if (isString(t.guard)) result = !!this.guard(t.guard);\n        else if (isFunction(t.guard)) result = t.guard(this.getParams());\n        return result;\n      });\n    });\n    __publicField(this, \"subscribe\", (fn) => {\n      this.subscriptions.push(fn);\n      return () => {\n        const index = this.subscriptions.indexOf(fn);\n        if (index > -1) this.subscriptions.splice(index, 1);\n      };\n    });\n    __publicField(this, \"status\", MachineStatus.NotStarted);\n    __publicField(this, \"publish\", () => {\n      this.callTrackers();\n      this.subscriptions.forEach((fn) => fn(this.service));\n    });\n    __publicField(this, \"trackers\", []);\n    __publicField(this, \"setupTrackers\", () => {\n      this.machine.watch?.(this.getParams());\n    });\n    __publicField(this, \"callTrackers\", () => {\n      this.trackers.forEach(({ deps, fn }) => {\n        const next = deps.map((dep) => dep());\n        if (!isEqual(fn.prev, next)) {\n          fn();\n          fn.prev = next;\n        }\n      });\n    });\n    __publicField(this, \"getParams\", () => ({\n      state: this.getState(),\n      context: this.context,\n      event: this.getEvent(),\n      prop: this.prop,\n      send: this.send,\n      action: this.action,\n      guard: this.guard,\n      track: (deps, fn) => {\n        fn.prev = deps.map((dep) => dep());\n        this.trackers.push({ deps, fn });\n      },\n      refs: this.refs,\n      computed: this.computed,\n      flush: identity,\n      scope: this.scope,\n      choose: this.choose\n    }));\n    const { id, ids, getRootNode } = runIfFn(userProps);\n    this.scope = createScope({ id, ids, getRootNode });\n    const prop = (key) => {\n      const __props = runIfFn(userProps);\n      const props = machine.props?.({ props: compact(__props), scope: this.scope }) ?? __props;\n      return props[key];\n    };\n    this.prop = prop;\n    const context = machine.context?.({\n      prop,\n      bindable,\n      scope: this.scope,\n      flush(fn) {\n        queueMicrotask(fn);\n      },\n      getContext() {\n        return ctx;\n      },\n      getComputed() {\n        return computed;\n      },\n      getRefs() {\n        return refs;\n      },\n      getEvent: this.getEvent.bind(this)\n    });\n    if (context) {\n      Object.values(context).forEach((item) => {\n        const unsub = subscribe(item.ref, () => this.notify());\n        this.cleanups.push(unsub);\n      });\n    }\n    const ctx = {\n      get(key) {\n        return context?.[key].get();\n      },\n      set(key, value) {\n        context?.[key].set(value);\n      },\n      initial(key) {\n        return context?.[key].initial;\n      },\n      hash(key) {\n        const current = context?.[key].get();\n        return context?.[key].hash(current);\n      }\n    };\n    this.context = ctx;\n    const computed = (key) => {\n      return machine.computed?.[key]({\n        context: ctx,\n        event: this.getEvent(),\n        prop,\n        refs: this.refs,\n        scope: this.scope,\n        computed\n      }) ?? {};\n    };\n    this.computed = computed;\n    const refs = createRefs(machine.refs?.({ prop, context: ctx }) ?? {});\n    this.refs = refs;\n    const state = bindable(() => ({\n      defaultValue: machine.initialState({ prop }),\n      onChange: (nextState, prevState) => {\n        if (prevState) {\n          const exitEffects = this.effects.get(prevState);\n          exitEffects?.();\n          this.effects.delete(prevState);\n        }\n        if (prevState) {\n          this.action(this.getStateConfig(prevState)?.exit);\n        }\n        this.action(this.transition?.actions);\n        const cleanup = this.effect(this.getStateConfig(nextState)?.effects);\n        if (cleanup) this.effects.set(nextState, cleanup);\n        if (prevState === INIT_STATE) {\n          this.action(machine.entry);\n          const cleanup2 = this.effect(machine.effects);\n          if (cleanup2) this.effects.set(INIT_STATE, cleanup2);\n        }\n        this.action(this.getStateConfig(nextState)?.entry);\n      }\n    }));\n    this.state = state;\n    this.cleanups.push(subscribe(this.state.ref, () => this.notify()));\n  }\n  start() {\n    this.status = MachineStatus.Started;\n    this.debug(\"initializing...\");\n    this.state.invoke(this.state.initial, INIT_STATE);\n    this.setupTrackers();\n  }\n  stop() {\n    this.effects.forEach((fn) => fn?.());\n    this.effects.clear();\n    this.transition = null;\n    this.action(this.machine.exit);\n    this.cleanups.forEach((unsub) => unsub());\n    this.cleanups = [];\n    this.subscriptions = [];\n    this.status = MachineStatus.Stopped;\n    this.debug(\"unmounting...\");\n  }\n  get service() {\n    return {\n      state: this.getState(),\n      send: this.send,\n      context: this.context,\n      prop: this.prop,\n      scope: this.scope,\n      refs: this.refs,\n      computed: this.computed,\n      event: this.getEvent(),\n      getStatus: () => this.status\n    };\n  }\n};\n\nexport { VanillaMachine, normalizeProps, spreadProps };\n", "import { VanillaMachine } from \"@zag-js/vanilla\";\n\ninterface ComponentInterface<Api> {\n  el: HTMLElement;\n  machine: VanillaMachine<any>;\n  api: Api;\n\n  init(): void;\n  destroy(): void;\n  render(): void;\n}\n\nexport abstract class Component<Props, Api> implements ComponentInterface<Api> {\n  el: HTMLElement;\n  machine: VanillaMachine<any>;\n  api: Api;\n\n  constructor(el: HTMLElement | null, props: Props) {\n    if (!el) throw new Error(\"Root element not found\");\n    this.el = el;\n    this.machine = this.initMachine(props);\n    this.api = this.initApi();\n  }\n\n  abstract initMachine(props: Props): VanillaMachine<any>;\n  abstract initApi(): Api;\n  abstract render(): void;\n\n  init = () => {\n    this.render();\n    this.machine.subscribe(() => {\n      this.api = this.initApi();\n      this.render();\n    });\n    this.machine.start();\n  };\n\n  destroy = () => {\n    this.machine.stop();\n  };\n}\n", "/**\n * Corex utility functions for working with Zag.js components.\n *\n * Note: `normalizeProps` is provided by @zag-js/vanilla and is imported from there.\n * `spreadProps` is wrapped to ensure ARIA boolean attributes are converted to strings\n * for accessibility compliance.\n */\nimport { spreadProps as zagSpreadProps } from \"@zag-js/vanilla\";\n\n/**\n * Wrapper around zag's spreadProps that converts boolean ARIA attributes to strings\n * (\"true\" or \"false\") for accessibility compliance. All other attributes are passed\n * through unchanged.\n *\n * The vanilla spreadProps removes boolean false attributes, but ARIA attributes\n * should always be present as strings when provided by the API.\n *\n * Exception: `aria-readonly` is omitted when false as it's invalid on certain roles\n * (e.g., role=\"button\").\n */\nexport function spreadProps(\n  node: Element,\n  attrs: Record<string, any>,\n): () => void {\n  const normalizedAttrs: Record<string, any> = {};\n\n  for (const [attrName, value] of Object.entries(attrs)) {\n    if (typeof value === \"boolean\") {\n      const lowerAttrName = attrName.toLowerCase();\n      if (lowerAttrName.startsWith(\"aria-\")) {\n        if (lowerAttrName === \"aria-readonly\" && !value) continue;\n        normalizedAttrs[attrName] = String(value);\n      } else {\n        normalizedAttrs[attrName] = value;\n      }\n    } else {\n      normalizedAttrs[attrName] = value;\n    }\n  }\n\n  return zagSpreadProps(node, normalizedAttrs);\n}\n\ntype PropertyType = \"string\" | \"boolean\" | \"number\" | \"string[]\";\ntype PropMap = Record<string, PropertyType>;\n/**\n * Renders a specific part of the UI based on the component's props.\n * If `propsToSend` is a PropMap, attributes are read from the DOM.\n * If `propsToSend` is a plain object, it is passed directly to the API.\n *\n * NOTE: This version treats the passed `root` element itself as a candidate\n * part (so you can call renderPart(li, 'item', api, { item }) for a single li).\n */\nexport const renderPart = (\n  root: HTMLElement,\n  name: string,\n  api: any,\n  propsToSend?: PropMap | Record<string, any | ((el: HTMLElement) => any)>,\n) => {\n  const camelizedName = name\n    .split(\"-\")\n    .map((word, index) =>\n      index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1),\n    )\n    .join(\"\");\n  const getterName = `get${camelizedName.charAt(0).toUpperCase()}${camelizedName.slice(1)}Props`;\n  if (typeof api[getterName] !== \"function\") return;\n\n  // Collect parts: include root itself if it matches, plus any descendants\n  const parts: HTMLElement[] = [];\n  try {\n    if (\n      (root as Element).matches &&\n      (root as Element).matches(`[data-part='${name}']`)\n    ) {\n      parts.push(root);\n    }\n  } catch (e) {\n    console.log(e);\n  }\n  parts.push(\n    ...Array.from(root.querySelectorAll<HTMLElement>(`[data-part='${name}']`)),\n  );\n\n  // Find the component root (closest ancestor with class containing \"-js\")\n  const componentRoot = root.closest('[class*=\"-js\"]') as HTMLElement | null;\n\n  const scopedParts = componentRoot\n    ? parts.filter((part) => part.closest('[class*=\"-js\"]') === componentRoot)\n    : parts;\n\n  scopedParts.forEach((part) => {\n    let props: Record<string, any> | undefined;\n    if (propsToSend) {\n      if (isPropMap(propsToSend)) {\n        props = {};\n        for (const [prop, type] of Object.entries(propsToSend)) {\n          const getter =\n            type === \"string\"\n              ? getString\n              : type === \"boolean\"\n                ? getBoolean\n                : type === \"number\"\n                  ? getNumber\n                  : type === \"string[]\"\n                    ? getStringList\n                    : getString;\n          props[prop] = getter(part, prop);\n        }\n      } else {\n        props = {};\n        for (const [key, value] of Object.entries(propsToSend)) {\n          props[key] = typeof value === \"function\" ? value(part) : value;\n        }\n      }\n    }\n    const result = props ? api[getterName](props) : api[getterName]();\n    spreadProps(part, result);\n    if (name === \"preview\") {\n      const childrenValue = part.getAttribute(\"children\");\n      if (childrenValue !== null) part.textContent = childrenValue;\n    }\n  });\n};\nfunction isPropMap(value: any): value is PropMap {\n  if (typeof value !== \"object\" || value === null) return false;\n  return Object.values(value).every(\n    (v) =>\n      v === \"string\" || v === \"boolean\" || v === \"number\" || v === \"string[]\",\n  );\n}\n\n/**\n * Renders a list of items inside the root element. Each item is identified by the `name`, and the\n * properties for each item are retrieved from the API based on its `data-value`, `data-disabled`, and `data-index` attributes.\n * @param root - The root HTML element containing the items.\n * @param name - The name of the item part to render.\n * @param api - The API object used to retrieve the properties for each item.\n * ```\n */\nexport function renderList<T extends { value: string; label?: string }>(\n  root: HTMLElement,\n  name: string,\n  api: any,\n  items: T[],\n) {\n  const parts = root.querySelectorAll<HTMLElement>(`[data-part='${name}']`);\n  const getter = api[`get${capitalize(name)}Props`];\n  parts.forEach((el, index) => {\n    const value = el.getAttribute(\"data-value\") || items[index]?.value;\n    const item = items.find((item) => item.value === value);\n    if (!item) return;\n    const props = getter({ item });\n    spreadProps(el, props);\n  });\n}\n\nfunction capitalize(str: string): string {\n  return str.replace(/(^|-)([a-z])/g, (_m, _p, l) => l.toUpperCase());\n}\ninterface Node {\n  id: string;\n  name: string;\n  children?: Node[];\n}\n/**\n * Recursively searches for a node in a hierarchical structure based on its `id`.\n * @param tree - The tree structure to search through.\n * @param id - The ID of the node to find.\n * @returns The node if found, or `null` if no node with the specified ID exists.\n * ```\n */\nexport function findNodeById(tree: Node, id: string): Node | null {\n  if (tree.id === id) return tree;\n  if (!tree.children) return null;\n  for (const child of tree.children) {\n    const found = findNodeById(child, id);\n    if (found) return found;\n  }\n  return null;\n}\n/**\n * Tree View Component: Renders a node from the provided hierarchical tree view into the specified part in the UI.\n * The part is identified by the `name`, and the node is retrieved from the tree using its `id` attribute.\n * @param root - The root HTML element in which the node resides.\n * @param name - The name of the node part to render.\n * @param api - The API object used to retrieve the properties for the node.\n * @param tree - The hierarchical tree structure containing the nodes.\n *\n * Example:\n * ```ts\n * const root = document.getElementById('root');\n * const tree = { id: '1', name: 'root', children: [{ id: '2', name: 'child' }] };\n * renderNode(root, 'node', api, tree); // Renders the node with properties from the tree\n * ```\n */\nexport const renderNode = (\n  root: HTMLElement,\n  name: string,\n  api: any,\n  tree: Node,\n) => {\n  const parts = root.querySelectorAll<HTMLElement>(`[data-part='${name}']`);\n  // Convert part name to API method name, e.g., \"branch-control\" \u2192 \"getBranchControlProps\"\n  const camelizedName = name.replace(\n    /(^|-)([a-z])/g,\n    (_match, _prefix, letter) => letter.toUpperCase(),\n  );\n  const getterName = `get${camelizedName}Props`;\n  // Helper to recursively find node and index path\n  const findNodeById = (\n    node: Node,\n    id: string,\n    path: number[] = [],\n  ): { node: Node; indexPath: number[] } | null => {\n    if (node.id === id) return { node, indexPath: path };\n    if (node.children) {\n      for (let i = 0; i < node.children.length; i++) {\n        const found = findNodeById(node.children[i], id, [...path, i]);\n        if (found) return found;\n      }\n    }\n    return null;\n  };\n  parts.forEach((part) => {\n    const id = part.getAttribute(\"data-id\");\n    if (!id) return;\n    const found = findNodeById(tree, id);\n    if (!found) return;\n    const { node, indexPath } = found;\n    const getPropsFn =\n      typeof api[getterName] === \"function\" ? api[getterName] : api.getProps;\n    const props = getPropsFn({ indexPath, node });\n    spreadProps(part, props);\n    const label = part.getAttribute(\"children\");\n    if (label != null) {\n      part.textContent = label;\n    }\n  });\n};\n/**\n * Extract a string data attribute with validation for specific type\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @param validValues - Optional array of allowed values\n * @returns Validated string value or undefined\n */\nexport const getString = <T extends string>(\n  element: HTMLElement,\n  attrName: string,\n  validValues?: readonly T[],\n): T | undefined => {\n  const value = element.dataset[attrName];\n  if (\n    value !== undefined &&\n    (!validValues || (validValues as readonly string[]).includes(value))\n  ) {\n    return value as T;\n  }\n  return undefined;\n};\n/**\n * Extract a list of string values from a data attribute\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @returns Array of strings or undefined\n */\nexport const getStringList = (\n  element: HTMLElement,\n  attrName: string,\n): string[] | undefined => {\n  const value = element.dataset[attrName];\n  if (typeof value === \"string\") {\n    return value\n      .split(\",\")\n      .map((v) => v.trim())\n      .filter((v) => v.length > 0);\n  }\n  return undefined;\n};\n/**\n * Extract a number data attribute with optional validation\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @param validValues - Optional array of allowed numeric values\n * @returns Parsed number value or undefined\n */\nexport const getNumber = (\n  element: HTMLElement,\n  attrName: string,\n  validValues?: readonly number[],\n): number | undefined => {\n  const raw = element.dataset[attrName];\n  if (raw === undefined) return undefined;\n  const parsed = Number(raw);\n  if (Number.isNaN(parsed)) return undefined;\n  if (validValues && !validValues.includes(parsed)) return 0;\n  return parsed;\n};\n/**\n * Extract a boolean data attribute\n * @param element - The HTML element to extract from\n * @param attrName - The data attribute name (without 'data-' prefix)\n * @returns Boolean value or undefined\n */\nexport const getBoolean = (\n  element: HTMLElement,\n  attrName: string,\n): boolean | undefined => {\n  const value = element.dataset[attrName];\n  if (value === \"\") return true;\n  if (value === \"true\") return true;\n  if (value === \"false\") return false;\n  if (element.hasAttribute(attrName)) return true;\n  if (element.hasAttribute(`data-${attrName}`)) return true;\n\n  return undefined;\n};\n/**\n * Generate a random ID if none is provided\n * @param element - Optional HTML element to get an existing id\n * @param fallbackId - Optional fallback base string (e.g. \"checkbox\")\n * @returns ID string (existing or generated)\n */\nexport const generateId = (\n  element?: HTMLElement,\n  fallbackId: string = \"element\",\n): string => {\n  if (element?.id) return element.id;\n  return `${fallbackId}-${Math.random().toString(36).substring(2, 9)}`;\n};\n\nexport function valuesEqual<T>(a: T, b: T): boolean {\n  return a === b;\n}\n\nexport function arraysEqualUnordered(\n  a: string[] = [],\n  b: string[] = [],\n): boolean {\n  if (a === b) return true;\n  if (!Array.isArray(a) || !Array.isArray(b)) return false;\n  if (a.length !== b.length) return false;\n  return a.every((v) => b.includes(v));\n}\n\n/**\n * Parse element IDs from child parts with data-part and data-id attributes\n * @param root - The root element containing the parts\n * @param partNames - Array of part names to look for (e.g., ['root', 'control', 'label'])\n * @returns Object with parsed IDs or undefined if no IDs found\n *\n * Example:\n * ```html\n * <div class=\"checkbox-js\">\n *   <div data-part=\"root\" data-id=\"my-root\"></div>\n *   <div data-part=\"control\" data-id=\"my-control\"></div>\n * </div>\n * ```\n * ```ts\n * const ids = getPartIds(element, ['root', 'control', 'label']);\n * // Returns: { root: 'my-root', control: 'my-control' }\n * ```\n */\nexport const getPartIds = (\n  root: HTMLElement,\n  partNames: readonly string[],\n): Record<string, string> | undefined => {\n  const ids: Record<string, string> = {};\n  let hasAnyId = false;\n\n  for (const partName of partNames) {\n    const part = root.querySelector<HTMLElement>(`[data-part=\"${partName}\"]`);\n    const id = part?.dataset.id;\n\n    if (id) {\n      // Convert kebab-case to camelCase: hidden-input -> hiddenInput\n      const camelKey = partName.replace(/-([a-z])/g, (_, letter) =>\n        letter.toUpperCase(),\n      );\n      ids[camelKey] = id;\n      hasAnyId = true;\n    }\n  }\n\n  return hasAnyId ? ids : undefined;\n};\n", "import * as select from \"@zag-js/select\";\nimport type { Direction } from \"@zag-js/types\";\nimport type { ListCollection } from \"@zag-js/collection\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  generateId,\n  renderPart,\n  getString,\n  getBoolean,\n  getNumber,\n  getStringList,\n  arraysEqualUnordered,\n} from \"../lib\";\n\ninterface SelectItem {\n  value: string;\n  label?: string;\n  group?: string;\n  disabled?: boolean;\n}\n\ninterface Group {\n  value: string;\n  label?: string;\n}\n\nfunction flattenJsonItems(data: any, parentGroup?: string): SelectItem[] {\n  if (!data) return [];\n  const items: SelectItem[] = [];\n\n  if (data.children && Array.isArray(data.children)) {\n    data.children.forEach((child: any) => {\n      items.push(...flattenJsonItems(child, data.name || parentGroup));\n    });\n  } else {\n    items.push({\n      value: data.id,\n      label: data.name,\n      group: parentGroup ?? undefined,\n      disabled: data.disabled,\n    });\n  }\n\n  return items;\n}\n\nfunction loadJsonItems(path: string): SelectItem[] {\n  try {\n    const script = document.querySelector(\n      `script[type=\"application/json\"][data-select=\"${path}\"]`,\n    );\n    if (!script) throw new Error(`No inline JSON script found for ${path}`);\n    const data = JSON.parse(script.textContent || \"{}\");\n    return flattenJsonItems(data);\n  } catch (e) {\n    console.error(\"Failed to load JSON items:\", e);\n    return [];\n  }\n}\n\nfunction getDomGroups(rootEl: HTMLElement): Group[] {\n  const groups: Group[] = [];\n  rootEl.querySelectorAll('[data-part=\"item-group\"]').forEach((el) => {\n    const value = el.getAttribute(\"data-id\") || \"\";\n    groups.push({ value });\n  });\n  return groups;\n}\n\nexport class Select extends Component<select.Props, select.Api> {\n  collection!: ListCollection<SelectItem>;\n  items: SelectItem[] = [];\n  groups: Group[] = [];\n  private domInitialized = false;\n\n  constructor(el: HTMLElement, props: select.Props) {\n    super(el, props);\n  }\n\n  setItems(items: SelectItem[]) {\n    this.items = items;\n  }\n\n  getCollection(\n    items: SelectItem[],\n    hasGroups: boolean = false,\n  ): ListCollection<SelectItem> {\n    if (hasGroups) {\n      return select.collection({\n        items,\n        itemToValue: (item) => item.value,\n        itemToString: (item) => item.label || item.value,\n        groupBy: (item) => item.group || \"Default\",\n      });\n    }\n    return select.collection({\n      items,\n      itemToValue: (item) => item.value,\n      itemToString: (item) => item.label || item.value,\n    });\n  }\n\n  initMachine(props: select.Props): VanillaMachine<any> {\n    return new VanillaMachine(select.machine, props);\n  }\n\n  initApi(): select.Api {\n    return select.connect(this.machine.service, normalizeProps);\n  }\n\n  private renderJsonDom() {\n    const rootEl = this.el;\n    if (!rootEl) return;\n\n    let contentEl = rootEl.querySelector<HTMLElement>('[data-part=\"content\"]');\n    if (!contentEl) {\n      contentEl = document.createElement(\"div\");\n      contentEl.setAttribute(\"data-part\", \"content\");\n      rootEl.appendChild(contentEl);\n    } else {\n      contentEl.innerHTML = \"\";\n    }\n\n    const groupMap: Record<string, HTMLElement> = {};\n\n    if (this.groups.length === 0) {\n      const uniqueGroups = new Set<string>();\n      this.items.forEach((item) => {\n        if (item.group) uniqueGroups.add(item.group);\n      });\n      this.groups = Array.from(uniqueGroups).map((value) => ({\n        value,\n        label: value,\n      }));\n    }\n\n    const groupsWithItems = new Set<string>();\n    this.items.forEach((item) => {\n      if (item.group) groupsWithItems.add(item.group);\n    });\n\n    this.groups.forEach((g) => {\n      if (!groupsWithItems.has(g.value)) return;\n\n      const groupEl = document.createElement(\"div\");\n      groupEl.setAttribute(\"data-part\", \"item-group\");\n      groupEl.setAttribute(\"data-id\", g.value);\n\n      const labelEl = document.createElement(\"div\");\n      labelEl.setAttribute(\"data-part\", \"item-group-label\");\n      labelEl.setAttribute(\"data-id\", g.value);\n      labelEl.textContent = g.label || g.value;\n\n      contentEl.appendChild(labelEl);\n      contentEl.appendChild(groupEl);\n\n      groupMap[g.value] = groupEl;\n    });\n\n    this.items.forEach((item) => {\n      const itemEl = document.createElement(\"div\");\n      itemEl.setAttribute(\"data-part\", \"item\");\n      itemEl.setAttribute(\"data-value\", item.value);\n      itemEl.setAttribute(\"data-label\", item.label || item.value);\n      if (item.disabled) itemEl.setAttribute(\"data-disabled\", \"true\");\n      itemEl.textContent = item.label || item.value;\n\n      if (item.group && groupMap[item.group]) {\n        groupMap[item.group].appendChild(itemEl);\n      } else {\n        contentEl.appendChild(itemEl);\n      }\n    });\n  }\n\n  private renderDomItems() {\n    const contentEl = this.el.querySelector('[data-part=\"content\"]');\n    if (!contentEl) return;\n\n    const allDomItems = Array.from(\n      contentEl.querySelectorAll('[data-part=\"item\"]'),\n    ) as HTMLElement[];\n\n    const visibleGroups = new Set<string>();\n\n    allDomItems.forEach((el) => {\n      const value = el.getAttribute(\"data-value\");\n      const match = this.items.find((item) => item.value === value);\n      if (match) {\n        el.style.display = \"\";\n        const groupEl = el.closest(\n          '[data-part=\"item-group\"]',\n        ) as HTMLElement | null;\n        if (groupEl) {\n          const groupId = groupEl.getAttribute(\"data-id\");\n          if (groupId) visibleGroups.add(groupId);\n        }\n      } else {\n        el.style.display = \"none\";\n      }\n    });\n\n    const allGroupLabels = Array.from(\n      contentEl.querySelectorAll('[data-part=\"item-group-label\"]'),\n    ) as HTMLElement[];\n\n    allGroupLabels.forEach((labelEl) => {\n      const groupId = labelEl.getAttribute(\"data-id\");\n      if (groupId && visibleGroups.has(groupId)) {\n        labelEl.style.display = \"\";\n      } else {\n        labelEl.style.display = \"none\";\n      }\n    });\n\n    const allGroups = Array.from(\n      contentEl.querySelectorAll('[data-part=\"item-group\"]'),\n    ) as HTMLElement[];\n\n    allGroups.forEach((groupEl) => {\n      const groupId = groupEl.getAttribute(\"data-id\");\n      if (groupId && visibleGroups.has(groupId)) {\n        groupEl.style.display = \"\";\n      } else {\n        groupEl.style.display = \"none\";\n      }\n    });\n  }\n\n  renderHiddenSelect() {\n    const control = this.el.querySelector<HTMLElement>('[data-part=\"control\"]');\n    if (!control) return;\n    let hiddenSelect = control.querySelector<HTMLSelectElement>(\n      '[data-part=\"hidden-select\"]',\n    );\n    if (!hiddenSelect) {\n      hiddenSelect = document.createElement(\"select\");\n      hiddenSelect.setAttribute(\"data-part\", \"hidden-select\");\n      control.appendChild(hiddenSelect);\n    }\n    hiddenSelect.innerHTML = \"\";\n    for (const item of this.items) {\n      const option = document.createElement(\"option\");\n      option.value = item.value;\n      option.textContent = item.label || item.value;\n      if (this.api.value.includes(item.value)) {\n        option.selected = true;\n      }\n      hiddenSelect.appendChild(option);\n    }\n  }\n\n  render() {\n    const isJson = getString(this.el, \"json\") !== undefined;\n    if (isJson && !this.domInitialized) {\n      this.renderJsonDom();\n      this.domInitialized = true;\n    } else if (!isJson) {\n      this.renderDomItems();\n    }\n\n    this.renderHiddenSelect();\n\n    if (!getString(this.el, \"noTriggerUpdate\")) {\n      this.updateTriggerText();\n    }\n\n    const parts = [\n      \"root\",\n      \"label\",\n      \"control\",\n      \"trigger\",\n      \"positioner\",\n      \"content\",\n      \"clear-trigger\",\n      \"list\",\n      \"hidden-select\",\n    ];\n    for (const part of parts) {\n      renderPart(this.el, part, this.api);\n    }\n\n    const itemParts = [\"item\"];\n    for (const part of itemParts) {\n      renderPart(this.el, part, this.api, {\n        item: (el: HTMLElement) => {\n          const value = el.getAttribute(\"data-value\");\n          const item = this.items.find((i) => i.value === value);\n          if (!item) {\n            console.warn(`[Select] No matching item for value: ${value}`);\n            return undefined;\n          }\n          return {\n            ...item,\n            label: item.label || el.getAttribute(\"data-label\") || item.value,\n            disabled: getBoolean(el, \"disabled\") || item.disabled,\n          };\n        },\n      });\n    }\n\n    renderPart(this.el, \"item-group\", this.api, {\n      group: (el: HTMLElement) => {\n        const id = el.getAttribute(\"data-id\");\n        const group = this.groups.find((g) => g.value === id);\n        return group;\n      },\n      id: (el: HTMLElement) => el.getAttribute(\"data-id\"),\n    });\n\n    renderPart(this.el, \"item-group-label\", this.api, {\n      group: (el: HTMLElement) => {\n        const id = el.getAttribute(\"data-id\");\n        return this.groups.find((g) => g.value === id);\n      },\n      htmlFor: (el: HTMLElement) => el.getAttribute(\"data-id\"),\n    });\n  }\n\n  private updateTriggerText() {\n    const trigger = this.el.querySelector(\n      '[data-part=\"trigger\"]',\n    ) as HTMLElement;\n    if (!trigger) return;\n    Array.from(trigger.childNodes).forEach((node) => {\n      if (node.nodeType === Node.TEXT_NODE) {\n        trigger.removeChild(node);\n      }\n    });\n    const selectedItems = this.items.filter((item) =>\n      this.api.value.includes(item.value),\n    );\n    const displayText =\n      selectedItems.length > 0\n        ? selectedItems.map((item) => item.label || item.value).join(\", \")\n        : getString(this.el, \"placeholder\") || \"Select\";\n    const textNode = document.createTextNode(displayText);\n    const firstChild = trigger.firstElementChild;\n    if (firstChild) {\n      trigger.insertBefore(textNode, firstChild);\n    } else {\n      trigger.appendChild(textNode);\n    }\n  }\n}\n\nexport function initSelect(\n  doc: HTMLElement | Document = document,\n  selector = \".select-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const groupElements = rootEl.querySelectorAll<HTMLElement>(\n      '[data-part=\"item-group\"]',\n    );\n    groupElements.forEach((groupEl, index) => {\n      const groupId =\n        getString(groupEl, \"id\") ??\n        generateId(groupEl, `select-group-${index}`);\n      groupEl.setAttribute(\"data-id\", groupId);\n\n      const labelEl = groupEl.querySelector<HTMLElement>(\n        '[data-part=\"item-group-label\"]',\n      );\n      if (labelEl) labelEl.setAttribute(\"data-id\", groupId);\n    });\n\n    const itemElements =\n      rootEl.querySelectorAll<HTMLElement>('[data-part=\"item\"]');\n    itemElements.forEach((itemEl, index) => {\n      const value =\n        getString(itemEl, \"value\") ??\n        generateId(itemEl, `select-item-${index}`);\n      itemEl.setAttribute(\"data-value\", value);\n\n      if (!itemEl.hasAttribute(\"data-label\")) {\n        const label = itemEl.textContent?.trim() || value;\n        itemEl.setAttribute(\"data-label\", label);\n      }\n    });\n\n    const jsonPath = getString(rootEl, \"json\");\n    const items: SelectItem[] = jsonPath\n      ? loadJsonItems(jsonPath)\n      : Array.from(itemElements).map((itemEl) => {\n          const value = getString(itemEl, \"value\")!;\n          const label =\n            itemEl.getAttribute(\"data-label\") ||\n            itemEl.textContent?.trim() ||\n            value;\n          const groupEl = itemEl.closest(\n            '[data-part=\"item-group\"]',\n          ) as HTMLElement | null;\n          const group = groupEl ? getString(groupEl, \"id\") : undefined;\n          const disabled = getBoolean(itemEl, \"disabled\");\n          return { value, label, group, disabled };\n        });\n\n    const groups = getDomGroups(rootEl);\n    const hasGroups = groups.length > 0 || items.some((i) => i.group);\n\n    const collection = hasGroups\n      ? select.collection({\n          items,\n          itemToValue: (item) => item.value,\n          itemToString: (item) => item.label || item.value,\n          groupBy: (item) => item.group || \"Default\",\n        })\n      : select.collection({\n          items,\n          itemToValue: (item) => item.value,\n          itemToString: (item) => item.label || item.value,\n        });\n\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const placements = [\n      \"top\",\n      \"right\",\n      \"bottom\",\n      \"left\",\n      \"top-start\",\n      \"top-end\",\n      \"right-start\",\n      \"right-end\",\n      \"bottom-start\",\n      \"bottom-end\",\n      \"left-start\",\n      \"left-end\",\n    ] as const;\n    const strategies = [\"absolute\", \"fixed\"] as const;\n\n    const selectComponent = new Select(rootEl, {\n      id: generateId(rootEl, \"select\"),\n      collection,\n      closeOnSelect: getBoolean(rootEl, \"closeOnSelect\"),\n      composite: getBoolean(rootEl, \"composite\"),\n      defaultHighlightedValue: getString(rootEl, \"defaultHighlightedValue\"),\n      defaultOpen: getBoolean(rootEl, \"defaultOpen\"),\n      defaultValue: getStringList(rootEl, \"defaultValue\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      form: getString(rootEl, \"form\"),\n      highlightedValue: getString(rootEl, \"highlightedValue\"),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      loopFocus: getBoolean(rootEl, \"loopFocus\"),\n      multiple: getBoolean(rootEl, \"multiple\"),\n      name: getString(rootEl, \"name\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      open: getBoolean(rootEl, \"open\"),\n      value: getStringList(rootEl, \"value\"),\n      positioning: {\n        hideWhenDetached: getBoolean(rootEl, \"hideWhenDetached\"),\n        placement: getString(rootEl, \"placement\", placements),\n        strategy: getString(rootEl, \"strategy\", strategies),\n        flip: getBoolean(rootEl, \"flip\"),\n        gutter: getNumber(rootEl, \"gutter\"),\n        arrowPadding: getNumber(rootEl, \"arrowPadding\"),\n        overflowPadding: getNumber(rootEl, \"overflowPadding\"),\n        offset: (() => {\n          const mainAxis = getNumber(rootEl, \"offsetMainAxis\");\n          const crossAxis = getNumber(rootEl, \"offsetCrossAxis\");\n          if (mainAxis !== undefined || crossAxis !== undefined) {\n            return { mainAxis, crossAxis };\n          }\n          return undefined;\n        })(),\n        sameWidth: getBoolean(rootEl, \"sameWidth\") || true,\n        overlap: getBoolean(rootEl, \"overlap\"),\n        fitViewport: getBoolean(rootEl, \"fitViewport\"),\n        slide: getBoolean(rootEl, \"slide\"),\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onOpenChange(details) {\n        const eventName = getString(rootEl, \"onOpenChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onHighlightChange(details) {\n        const eventName = getString(rootEl, \"onHighlightChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onFocusOutside(event) {\n        const eventName = getString(rootEl, \"onFocusOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onInteractOutside(event) {\n        const eventName = getString(rootEl, \"onInteractOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onPointerDownOutside(event) {\n        const eventName = getString(rootEl, \"onPointerDownOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(\n            new CustomEvent(eventName, { detail: event.detail }),\n          );\n        }\n      },\n      onSelect(details) {\n        const eventName = getString(rootEl, \"onSelect\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n\n    selectComponent.collection = collection;\n    selectComponent.setItems(items);\n    selectComponent.groups = groups;\n    selectComponent.init();\n\n    selectComponent.el.addEventListener(\"select:set-value\", (event) => {\n      const { value } = (event as CustomEvent<{ value: string[] }>).detail;\n      const current = selectComponent.api.value;\n      if (!arraysEqualUnordered(current, value)) {\n        selectComponent.api.setValue(value);\n      }\n    });\n  });\n}\n"],
  "mappings": "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",
  "names": ["parts", "props", "clamp", "options", "__defProp", "__defNormalProp", "__publicField", "noop", "isObject", "isObject", "isObject", "getComputedStyle", "__publicField", "match", "noop", "min", "max", "round", "floor", "platform", "min", "max", "offset", "platform", "placements", "sides", "side", "nextIndex", "placement", "overflow", "platform", "x", "y", "min", "max", "offset", "getNodeName", "isNode", "getWindow", "getDocumentElement", "isHTMLElement", "isShadowRoot", "isOverflowElement", "getComputedStyle", "getParentNode", "getNearestOverflowAncestor", "getComputedStyle", "isHTMLElement", "round", "getWindow", "getDocumentElement", "getNodeName", "isOverflowElement", "max", "getParentNode", "min", "floor", "offset", "shift", "flip", "size", "hide", "arrow", "limitShift", "computePosition", "getSideAxis", "arrow", "offset", "shift2", "flip", "shift", "limitShift", "size", "hide", "computePosition", "getComputedStyle", "props", "getRootNode", "fireCustomEvent", "props", "keyMap", "bindable", "splitProps", "isReactElement", "isVueElement", "isElement", "isObject", "isObject", "remove", "__defProp", "__defNormalProp", "__publicField", "match", "props", "machine", "state", "getRootNode", "props", "spreadProps", "parts", "props", "props", "match", "parts", "collection", "placements"]
}
