{
  "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+color-utils@1.32.0/node_modules/@zag-js/color-utils/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+color-picker@1.32.0/node_modules/@zag-js/color-picker/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/color-picker.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 { getValuePercent, getPercentValue, snapValueToStep, clampValue, toFixedNumber, mod } 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, key + \"\" , value);\n\n// src/color-format-gradient.ts\nvar generateRGB_R = (orientation, dir, zValue) => {\n  const maskImage = `linear-gradient(to ${orientation[Number(!dir)]}, transparent, #000)`;\n  const result = {\n    areaStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(${zValue},0,0),rgb(${zValue},255,0))`\n    },\n    areaGradientStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(${zValue},0,255),rgb(${zValue},255,255))`,\n      WebkitMaskImage: maskImage,\n      maskImage\n    }\n  };\n  return result;\n};\nvar generateRGB_G = (orientation, dir, zValue) => {\n  const maskImage = `linear-gradient(to ${orientation[Number(!dir)]}, transparent, #000)`;\n  const result = {\n    areaStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,${zValue},0),rgb(255,${zValue},0))`\n    },\n    areaGradientStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,${zValue},255),rgb(255,${zValue},255))`,\n      WebkitMaskImage: maskImage,\n      maskImage\n    }\n  };\n  return result;\n};\nvar generateRGB_B = (orientation, dir, zValue) => {\n  const maskImage = `linear-gradient(to ${orientation[Number(!dir)]}, transparent, #000)`;\n  const result = {\n    areaStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,0,${zValue}),rgb(255,0,${zValue}))`\n    },\n    areaGradientStyles: {\n      backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,255,${zValue}),rgb(255,255,${zValue}))`,\n      WebkitMaskImage: maskImage,\n      maskImage\n    }\n  };\n  return result;\n};\nvar generateHSL_H = (orientation, dir, zValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      background: [\n        `linear-gradient(to ${orientation[Number(dir)]}, hsla(0,0%,0%,1) 0%, hsla(0,0%,0%,0) 50%, hsla(0,0%,100%,0) 50%, hsla(0,0%,100%,1) 100%)`,\n        `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,50%),hsla(0,0%,50%,0))`,\n        `hsl(${zValue}, 100%, 50%)`\n      ].join(\",\")\n    }\n  };\n  return result;\n};\nvar generateHSL_S = (orientation, dir, alphaValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      background: [\n        `linear-gradient(to ${orientation[Number(!dir)]}, hsla(0,0%,0%,${alphaValue}) 0%, hsla(0,0%,0%,0) 50%, hsla(0,0%,100%,0) 50%, hsla(0,0%,100%,${alphaValue}) 100%)`,\n        `linear-gradient(to ${orientation[Number(dir)]},hsla(0,100%,50%,${alphaValue}),hsla(60,100%,50%,${alphaValue}),hsla(120,100%,50%,${alphaValue}),hsla(180,100%,50%,${alphaValue}),hsla(240,100%,50%,${alphaValue}),hsla(300,100%,50%,${alphaValue}),hsla(359,100%,50%,${alphaValue}))`,\n        \"hsl(0, 0%, 50%)\"\n      ].join(\",\")\n    }\n  };\n  return result;\n};\nvar generateHSL_L = (orientation, dir, zValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      backgroundImage: [\n        `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,${zValue}%),hsla(0,0%,${zValue}%,0))`,\n        `linear-gradient(to ${orientation[Number(dir)]},hsl(0,100%,${zValue}%),hsl(60,100%,${zValue}%),hsl(120,100%,${zValue}%),hsl(180,100%,${zValue}%),hsl(240,100%,${zValue}%),hsl(300,100%,${zValue}%),hsl(360,100%,${zValue}%))`\n      ].join(\",\")\n    }\n  };\n  return result;\n};\nvar generateHSB_H = (orientation, dir, zValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      background: [\n        `linear-gradient(to ${orientation[Number(dir)]},hsl(0,0%,0%),hsla(0,0%,0%,0))`,\n        `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,100%),hsla(0,0%,100%,0))`,\n        `hsl(${zValue}, 100%, 50%)`\n      ].join(\",\")\n    }\n  };\n  return result;\n};\nvar generateHSB_S = (orientation, dir, alphaValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      background: [\n        `linear-gradient(to ${orientation[Number(!dir)]},hsla(0,0%,0%,${alphaValue}),hsla(0,0%,0%,0))`,\n        `linear-gradient(to ${orientation[Number(dir)]},hsla(0,100%,50%,${alphaValue}),hsla(60,100%,50%,${alphaValue}),hsla(120,100%,50%,${alphaValue}),hsla(180,100%,50%,${alphaValue}),hsla(240,100%,50%,${alphaValue}),hsla(300,100%,50%,${alphaValue}),hsla(359,100%,50%,${alphaValue}))`,\n        `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,0%),hsl(0,0%,100%))`\n      ].join(\",\")\n    }\n  };\n  return result;\n};\nvar generateHSB_B = (orientation, dir, alphaValue) => {\n  const result = {\n    areaStyles: {},\n    areaGradientStyles: {\n      background: [\n        `linear-gradient(to ${orientation[Number(!dir)]},hsla(0,0%,100%,${alphaValue}),hsla(0,0%,100%,0))`,\n        `linear-gradient(to ${orientation[Number(dir)]},hsla(0,100%,50%,${alphaValue}),hsla(60,100%,50%,${alphaValue}),hsla(120,100%,50%,${alphaValue}),hsla(180,100%,50%,${alphaValue}),hsla(240,100%,50%,${alphaValue}),hsla(300,100%,50%,${alphaValue}),hsla(359,100%,50%,${alphaValue}))`,\n        \"#000\"\n      ].join(\",\")\n    }\n  };\n  return result;\n};\n\n// src/area-gradient.ts\nfunction getColorAreaGradient(color, options) {\n  const { xChannel, yChannel, dir: dirProp = \"ltr\" } = options;\n  const { zChannel } = color.getColorAxes({ xChannel, yChannel });\n  const zValue = color.getChannelValue(zChannel);\n  const { minValue: zMin, maxValue: zMax } = color.getChannelRange(zChannel);\n  const orientation = [\"top\", dirProp === \"rtl\" ? \"left\" : \"right\"];\n  let dir = false;\n  let background = { areaStyles: {}, areaGradientStyles: {} };\n  let alphaValue = (zValue - zMin) / (zMax - zMin);\n  let isHSL = color.getFormat() === \"hsla\";\n  switch (zChannel) {\n    case \"red\": {\n      dir = xChannel === \"green\";\n      background = generateRGB_R(orientation, dir, zValue);\n      break;\n    }\n    case \"green\": {\n      dir = xChannel === \"red\";\n      background = generateRGB_G(orientation, dir, zValue);\n      break;\n    }\n    case \"blue\": {\n      dir = xChannel === \"red\";\n      background = generateRGB_B(orientation, dir, zValue);\n      break;\n    }\n    case \"hue\": {\n      dir = xChannel !== \"saturation\";\n      if (isHSL) {\n        background = generateHSL_H(orientation, dir, zValue);\n      } else {\n        background = generateHSB_H(orientation, dir, zValue);\n      }\n      break;\n    }\n    case \"saturation\": {\n      dir = xChannel === \"hue\";\n      if (isHSL) {\n        background = generateHSL_S(orientation, dir, alphaValue);\n      } else {\n        background = generateHSB_S(orientation, dir, alphaValue);\n      }\n      break;\n    }\n    case \"brightness\": {\n      dir = xChannel === \"hue\";\n      background = generateHSB_B(orientation, dir, alphaValue);\n      break;\n    }\n    case \"lightness\": {\n      dir = xChannel === \"hue\";\n      background = generateHSL_L(orientation, dir, zValue);\n      break;\n    }\n  }\n  return background;\n}\nvar isEqualObject = (a, b) => {\n  if (Object.keys(a).length !== Object.keys(b).length) return false;\n  for (let key in a) if (a[key] !== b[key]) return false;\n  return true;\n};\nvar Color = class {\n  toHexInt() {\n    return this.toFormat(\"rgba\").toHexInt();\n  }\n  getChannelValue(channel) {\n    if (channel in this) return this[channel];\n    throw new Error(\"Unsupported color channel: \" + channel);\n  }\n  getChannelValuePercent(channel, valueToCheck) {\n    const value = valueToCheck ?? this.getChannelValue(channel);\n    const { minValue, maxValue } = this.getChannelRange(channel);\n    return getValuePercent(value, minValue, maxValue);\n  }\n  getChannelPercentValue(channel, percentToCheck) {\n    const { minValue, maxValue, step } = this.getChannelRange(channel);\n    const percentValue = getPercentValue(percentToCheck, minValue, maxValue, step);\n    return snapValueToStep(percentValue, minValue, maxValue, step);\n  }\n  withChannelValue(channel, value) {\n    const { minValue, maxValue } = this.getChannelRange(channel);\n    if (channel in this) {\n      let clone = this.clone();\n      clone[channel] = clampValue(value, minValue, maxValue);\n      return clone;\n    }\n    throw new Error(\"Unsupported color channel: \" + channel);\n  }\n  getColorAxes(xyChannels) {\n    let { xChannel, yChannel } = xyChannels;\n    let xCh = xChannel || this.getChannels().find((c) => c !== yChannel);\n    let yCh = yChannel || this.getChannels().find((c) => c !== xCh);\n    let zCh = this.getChannels().find((c) => c !== xCh && c !== yCh);\n    return { xChannel: xCh, yChannel: yCh, zChannel: zCh };\n  }\n  incrementChannel(channel, stepSize) {\n    const { minValue, maxValue, step } = this.getChannelRange(channel);\n    const value = snapValueToStep(\n      clampValue(this.getChannelValue(channel) + stepSize, minValue, maxValue),\n      minValue,\n      maxValue,\n      step\n    );\n    return this.withChannelValue(channel, value);\n  }\n  decrementChannel(channel, stepSize) {\n    return this.incrementChannel(channel, -stepSize);\n  }\n  isEqual(color) {\n    const isSame = isEqualObject(this.toJSON(), color.toJSON());\n    return isSame && this.getChannelValue(\"alpha\") === color.getChannelValue(\"alpha\");\n  }\n};\nvar HEX_COLOR_REGEX = /^#[\\da-f]+$/i;\nvar RGB_COLOR_REGEX = /^rgba?\\((.*)\\)$/;\nvar HEX_STARTING_REGEX = /[^#]/gi;\nvar _RGBColor = class _RGBColor extends Color {\n  constructor(red, green, blue, alpha) {\n    super();\n    this.red = red;\n    this.green = green;\n    this.blue = blue;\n    this.alpha = alpha;\n  }\n  static parse(value) {\n    let colors = [];\n    if (HEX_COLOR_REGEX.test(value) && [4, 5, 7, 9].includes(value.length)) {\n      const values = (value.length < 6 ? value.replace(HEX_STARTING_REGEX, \"$&$&\") : value).slice(1).split(\"\");\n      while (values.length > 0) {\n        colors.push(parseInt(values.splice(0, 2).join(\"\"), 16));\n      }\n      colors[3] = colors[3] !== void 0 ? colors[3] / 255 : void 0;\n    }\n    const match = value.match(RGB_COLOR_REGEX);\n    if (match?.[1]) {\n      colors = match[1].split(\",\").map((value2) => Number(value2.trim())).map((num, i) => clampValue(num, 0, i < 3 ? 255 : 1));\n    }\n    return colors.length < 3 ? void 0 : new _RGBColor(colors[0], colors[1], colors[2], colors[3] ?? 1);\n  }\n  toString(format) {\n    switch (format) {\n      case \"hex\":\n        return \"#\" + (this.red.toString(16).padStart(2, \"0\") + this.green.toString(16).padStart(2, \"0\") + this.blue.toString(16).padStart(2, \"0\")).toUpperCase();\n      case \"hexa\":\n        return \"#\" + (this.red.toString(16).padStart(2, \"0\") + this.green.toString(16).padStart(2, \"0\") + this.blue.toString(16).padStart(2, \"0\") + Math.round(this.alpha * 255).toString(16).padStart(2, \"0\")).toUpperCase();\n      case \"rgb\":\n        return `rgb(${this.red}, ${this.green}, ${this.blue})`;\n      case \"css\":\n      case \"rgba\":\n        return `rgba(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`;\n      case \"hsl\":\n        return this.toHSL().toString(\"hsl\");\n      case \"hsb\":\n        return this.toHSB().toString(\"hsb\");\n      default:\n        return this.toFormat(format).toString(format);\n    }\n  }\n  toFormat(format) {\n    switch (format) {\n      case \"rgba\":\n        return this;\n      case \"hsba\":\n        return this.toHSB();\n      case \"hsla\":\n        return this.toHSL();\n      default:\n        throw new Error(\"Unsupported color conversion: rgb -> \" + format);\n    }\n  }\n  toHexInt() {\n    return this.red << 16 | this.green << 8 | this.blue;\n  }\n  /**\n   * Converts an RGB color value to HSB.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#From_RGB.\n   * @returns An HSBColor object.\n   */\n  toHSB() {\n    const red = this.red / 255;\n    const green = this.green / 255;\n    const blue = this.blue / 255;\n    const min = Math.min(red, green, blue);\n    const brightness = Math.max(red, green, blue);\n    const chroma = brightness - min;\n    const saturation = brightness === 0 ? 0 : chroma / brightness;\n    let hue = 0;\n    if (chroma !== 0) {\n      switch (brightness) {\n        case red:\n          hue = (green - blue) / chroma + (green < blue ? 6 : 0);\n          break;\n        case green:\n          hue = (blue - red) / chroma + 2;\n          break;\n        case blue:\n          hue = (red - green) / chroma + 4;\n          break;\n      }\n      hue /= 6;\n    }\n    return new HSBColor(\n      toFixedNumber(hue * 360, 2),\n      toFixedNumber(saturation * 100, 2),\n      toFixedNumber(brightness * 100, 2),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  /**\n   * Converts an RGB color value to HSL.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#From_RGB.\n   * @returns An HSLColor object.\n   */\n  toHSL() {\n    const red = this.red / 255;\n    const green = this.green / 255;\n    const blue = this.blue / 255;\n    const min = Math.min(red, green, blue);\n    const max = Math.max(red, green, blue);\n    const lightness = (max + min) / 2;\n    const chroma = max - min;\n    let hue = -1;\n    let saturation = -1;\n    if (chroma === 0) {\n      hue = saturation = 0;\n    } else {\n      saturation = chroma / (lightness < 0.5 ? max + min : 2 - max - min);\n      switch (max) {\n        case red:\n          hue = (green - blue) / chroma + (green < blue ? 6 : 0);\n          break;\n        case green:\n          hue = (blue - red) / chroma + 2;\n          break;\n        case blue:\n          hue = (red - green) / chroma + 4;\n          break;\n      }\n      hue /= 6;\n    }\n    return new HSLColor(\n      toFixedNumber(hue * 360, 2),\n      toFixedNumber(saturation * 100, 2),\n      toFixedNumber(lightness * 100, 2),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  clone() {\n    return new _RGBColor(this.red, this.green, this.blue, this.alpha);\n  }\n  getChannelFormatOptions(channel) {\n    switch (channel) {\n      case \"red\":\n      case \"green\":\n      case \"blue\":\n        return { style: \"decimal\" };\n      case \"alpha\":\n        return { style: \"percent\" };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  formatChannelValue(channel, locale) {\n    let options = this.getChannelFormatOptions(channel);\n    let value = this.getChannelValue(channel);\n    return new Intl.NumberFormat(locale, options).format(value);\n  }\n  getChannelRange(channel) {\n    switch (channel) {\n      case \"red\":\n      case \"green\":\n      case \"blue\":\n        return { minValue: 0, maxValue: 255, step: 1, pageSize: 17 };\n      case \"alpha\":\n        return { minValue: 0, maxValue: 1, step: 0.01, pageSize: 0.1 };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  toJSON() {\n    return { r: this.red, g: this.green, b: this.blue, a: this.alpha };\n  }\n  getFormat() {\n    return \"rgba\";\n  }\n  getChannels() {\n    return _RGBColor.colorChannels;\n  }\n};\n__publicField(_RGBColor, \"colorChannels\", [\"red\", \"green\", \"blue\"]);\nvar RGBColor = _RGBColor;\n\n// src/hsl-color.ts\nvar HSL_REGEX = /hsl\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%)\\)|hsla\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d(.\\d+)?)\\)/;\nvar _HSLColor = class _HSLColor extends Color {\n  constructor(hue, saturation, lightness, alpha) {\n    super();\n    this.hue = hue;\n    this.saturation = saturation;\n    this.lightness = lightness;\n    this.alpha = alpha;\n  }\n  static parse(value) {\n    let m;\n    if (m = value.match(HSL_REGEX)) {\n      const [h, s, l, a] = (m[1] ?? m[2]).split(\",\").map((n) => Number(n.trim().replace(\"%\", \"\")));\n      return new _HSLColor(mod(h, 360), clampValue(s, 0, 100), clampValue(l, 0, 100), clampValue(a ?? 1, 0, 1));\n    }\n  }\n  toString(format) {\n    switch (format) {\n      case \"hex\":\n        return this.toRGB().toString(\"hex\");\n      case \"hexa\":\n        return this.toRGB().toString(\"hexa\");\n      case \"hsl\":\n        return `hsl(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.lightness, 2)}%)`;\n      case \"css\":\n      case \"hsla\":\n        return `hsla(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.lightness, 2)}%, ${this.alpha})`;\n      case \"hsb\":\n        return this.toHSB().toString(\"hsb\");\n      case \"rgb\":\n        return this.toRGB().toString(\"rgb\");\n      default:\n        return this.toFormat(format).toString(format);\n    }\n  }\n  toFormat(format) {\n    switch (format) {\n      case \"hsla\":\n        return this;\n      case \"hsba\":\n        return this.toHSB();\n      case \"rgba\":\n        return this.toRGB();\n      default:\n        throw new Error(\"Unsupported color conversion: hsl -> \" + format);\n    }\n  }\n  /**\n   * Converts a HSL color to HSB.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_HSV.\n   * @returns An HSBColor object.\n   */\n  toHSB() {\n    let saturation = this.saturation / 100;\n    let lightness = this.lightness / 100;\n    let brightness = lightness + saturation * Math.min(lightness, 1 - lightness);\n    saturation = brightness === 0 ? 0 : 2 * (1 - lightness / brightness);\n    return new HSBColor(\n      toFixedNumber(this.hue, 2),\n      toFixedNumber(saturation * 100, 2),\n      toFixedNumber(brightness * 100, 2),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  /**\n   * Converts a HSL color to RGB.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_RGB_alternative.\n   * @returns An RGBColor object.\n   */\n  toRGB() {\n    let hue = this.hue;\n    let saturation = this.saturation / 100;\n    let lightness = this.lightness / 100;\n    let a = saturation * Math.min(lightness, 1 - lightness);\n    let fn = (n, k = (n + hue / 30) % 12) => lightness - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n    return new RGBColor(\n      Math.round(fn(0) * 255),\n      Math.round(fn(8) * 255),\n      Math.round(fn(4) * 255),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  clone() {\n    return new _HSLColor(this.hue, this.saturation, this.lightness, this.alpha);\n  }\n  getChannelFormatOptions(channel) {\n    switch (channel) {\n      case \"hue\":\n        return { style: \"unit\", unit: \"degree\", unitDisplay: \"narrow\" };\n      case \"saturation\":\n      case \"lightness\":\n      case \"alpha\":\n        return { style: \"percent\" };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  formatChannelValue(channel, locale) {\n    let options = this.getChannelFormatOptions(channel);\n    let value = this.getChannelValue(channel);\n    if (channel === \"saturation\" || channel === \"lightness\") {\n      value /= 100;\n    }\n    return new Intl.NumberFormat(locale, options).format(value);\n  }\n  getChannelRange(channel) {\n    switch (channel) {\n      case \"hue\":\n        return { minValue: 0, maxValue: 360, step: 1, pageSize: 15 };\n      case \"saturation\":\n      case \"lightness\":\n        return { minValue: 0, maxValue: 100, step: 1, pageSize: 10 };\n      case \"alpha\":\n        return { minValue: 0, maxValue: 1, step: 0.01, pageSize: 0.1 };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  toJSON() {\n    return { h: this.hue, s: this.saturation, l: this.lightness, a: this.alpha };\n  }\n  getFormat() {\n    return \"hsla\";\n  }\n  getChannels() {\n    return _HSLColor.colorChannels;\n  }\n};\n__publicField(_HSLColor, \"colorChannels\", [\"hue\", \"saturation\", \"lightness\"]);\nvar HSLColor = _HSLColor;\n\n// src/hsb-color.ts\nvar HSB_REGEX = /hsb\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%)\\)|hsba\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d(.\\d+)?)\\)/;\nvar _HSBColor = class _HSBColor extends Color {\n  constructor(hue, saturation, brightness, alpha) {\n    super();\n    this.hue = hue;\n    this.saturation = saturation;\n    this.brightness = brightness;\n    this.alpha = alpha;\n  }\n  static parse(value) {\n    let m;\n    if (m = value.match(HSB_REGEX)) {\n      const [h, s, b, a] = (m[1] ?? m[2]).split(\",\").map((n) => Number(n.trim().replace(\"%\", \"\")));\n      return new _HSBColor(mod(h, 360), clampValue(s, 0, 100), clampValue(b, 0, 100), clampValue(a ?? 1, 0, 1));\n    }\n  }\n  toString(format) {\n    switch (format) {\n      case \"css\":\n        return this.toHSL().toString(\"css\");\n      case \"hex\":\n        return this.toRGB().toString(\"hex\");\n      case \"hexa\":\n        return this.toRGB().toString(\"hexa\");\n      case \"hsb\":\n        return `hsb(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.brightness, 2)}%)`;\n      case \"hsba\":\n        return `hsba(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.brightness, 2)}%, ${this.alpha})`;\n      case \"hsl\":\n        return this.toHSL().toString(\"hsl\");\n      case \"rgb\":\n        return this.toRGB().toString(\"rgb\");\n      default:\n        return this.toFormat(format).toString(format);\n    }\n  }\n  toFormat(format) {\n    switch (format) {\n      case \"hsba\":\n        return this;\n      case \"hsla\":\n        return this.toHSL();\n      case \"rgba\":\n        return this.toRGB();\n      default:\n        throw new Error(\"Unsupported color conversion: hsb -> \" + format);\n    }\n  }\n  /**\n   * Converts a HSB color to HSL.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_HSL.\n   * @returns An HSLColor object.\n   */\n  toHSL() {\n    let saturation = this.saturation / 100;\n    let brightness = this.brightness / 100;\n    let lightness = brightness * (1 - saturation / 2);\n    saturation = lightness === 0 || lightness === 1 ? 0 : (brightness - lightness) / Math.min(lightness, 1 - lightness);\n    return new HSLColor(\n      toFixedNumber(this.hue, 2),\n      toFixedNumber(saturation * 100, 2),\n      toFixedNumber(lightness * 100, 2),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  /**\n   * Converts a HSV color value to RGB.\n   * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB_alternative.\n   * @returns An RGBColor object.\n   */\n  toRGB() {\n    let hue = this.hue;\n    let saturation = this.saturation / 100;\n    let brightness = this.brightness / 100;\n    let fn = (n, k = (n + hue / 60) % 6) => brightness - saturation * brightness * Math.max(Math.min(k, 4 - k, 1), 0);\n    return new RGBColor(\n      Math.round(fn(5) * 255),\n      Math.round(fn(3) * 255),\n      Math.round(fn(1) * 255),\n      toFixedNumber(this.alpha, 2)\n    );\n  }\n  clone() {\n    return new _HSBColor(this.hue, this.saturation, this.brightness, this.alpha);\n  }\n  getChannelFormatOptions(channel) {\n    switch (channel) {\n      case \"hue\":\n        return { style: \"unit\", unit: \"degree\", unitDisplay: \"narrow\" };\n      case \"saturation\":\n      case \"brightness\":\n      case \"alpha\":\n        return { style: \"percent\" };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  formatChannelValue(channel, locale) {\n    let options = this.getChannelFormatOptions(channel);\n    let value = this.getChannelValue(channel);\n    if (channel === \"saturation\" || channel === \"brightness\") {\n      value /= 100;\n    }\n    return new Intl.NumberFormat(locale, options).format(value);\n  }\n  getChannelRange(channel) {\n    switch (channel) {\n      case \"hue\":\n        return { minValue: 0, maxValue: 360, step: 1, pageSize: 15 };\n      case \"saturation\":\n      case \"brightness\":\n        return { minValue: 0, maxValue: 100, step: 1, pageSize: 10 };\n      case \"alpha\":\n        return { minValue: 0, maxValue: 1, step: 0.01, pageSize: 0.1 };\n      default:\n        throw new Error(\"Unknown color channel: \" + channel);\n    }\n  }\n  toJSON() {\n    return { h: this.hue, s: this.saturation, b: this.brightness, a: this.alpha };\n  }\n  getFormat() {\n    return \"hsba\";\n  }\n  getChannels() {\n    return _HSBColor.colorChannels;\n  }\n};\n__publicField(_HSBColor, \"colorChannels\", [\"hue\", \"saturation\", \"brightness\"]);\nvar HSBColor = _HSBColor;\n\n// src/native-color.ts\nvar nativeColors = \"aliceblue:f0f8ff,antiquewhite:faebd7,aqua:00ffff,aquamarine:7fffd4,azure:f0ffff,beige:f5f5dc,bisque:ffe4c4,black:000000,blanchedalmond:ffebcd,blue:0000ff,blueviolet:8a2be2,brown:a52a2a,burlywood:deb887,cadetblue:5f9ea0,chartreuse:7fff00,chocolate:d2691e,coral:ff7f50,cornflowerblue:6495ed,cornsilk:fff8dc,crimson:dc143c,cyan:00ffff,darkblue:00008b,darkcyan:008b8b,darkgoldenrod:b8860b,darkgray:a9a9a9,darkgreen:006400,darkkhaki:bdb76b,darkmagenta:8b008b,darkolivegreen:556b2f,darkorange:ff8c00,darkorchid:9932cc,darkred:8b0000,darksalmon:e9967a,darkseagreen:8fbc8f,darkslateblue:483d8b,darkslategray:2f4f4f,darkturquoise:00ced1,darkviolet:9400d3,deeppink:ff1493,deepskyblue:00bfff,dimgray:696969,dodgerblue:1e90ff,firebrick:b22222,floralwhite:fffaf0,forestgreen:228b22,fuchsia:ff00ff,gainsboro:dcdcdc,ghostwhite:f8f8ff,gold:ffd700,goldenrod:daa520,gray:808080,green:008000,greenyellow:adff2f,honeydew:f0fff0,hotpink:ff69b4,indianred:cd5c5c,indigo:4b0082,ivory:fffff0,khaki:f0e68c,lavender:e6e6fa,lavenderblush:fff0f5,lawngreen:7cfc00,lemonchiffon:fffacd,lightblue:add8e6,lightcoral:f08080,lightcyan:e0ffff,lightgoldenrodyellow:fafad2,lightgrey:d3d3d3,lightgreen:90ee90,lightpink:ffb6c1,lightsalmon:ffa07a,lightseagreen:20b2aa,lightskyblue:87cefa,lightslategray:778899,lightsteelblue:b0c4de,lightyellow:ffffe0,lime:00ff00,limegreen:32cd32,linen:faf0e6,magenta:ff00ff,maroon:800000,mediumaquamarine:66cdaa,mediumblue:0000cd,mediumorchid:ba55d3,mediumpurple:9370d8,mediumseagreen:3cb371,mediumslateblue:7b68ee,mediumspringgreen:00fa9a,mediumturquoise:48d1cc,mediumvioletred:c71585,midnightblue:191970,mintcream:f5fffa,mistyrose:ffe4e1,moccasin:ffe4b5,navajowhite:ffdead,navy:000080,oldlace:fdf5e6,olive:808000,olivedrab:6b8e23,orange:ffa500,orangered:ff4500,orchid:da70d6,palegoldenrod:eee8aa,palegreen:98fb98,paleturquoise:afeeee,palevioletred:d87093,papayawhip:ffefd5,peachpuff:ffdab9,peru:cd853f,pink:ffc0cb,plum:dda0dd,powderblue:b0e0e6,purple:800080,rebeccapurple:663399,red:ff0000,rosybrown:bc8f8f,royalblue:4169e1,saddlebrown:8b4513,salmon:fa8072,sandybrown:f4a460,seagreen:2e8b57,seashell:fff5ee,sienna:a0522d,silver:c0c0c0,skyblue:87ceeb,slateblue:6a5acd,slategray:708090,snow:fffafa,springgreen:00ff7f,steelblue:4682b4,tan:d2b48c,teal:008080,thistle:d8bfd8,tomato:ff6347,turquoise:40e0d0,violet:ee82ee,wheat:f5deb3,white:ffffff,whitesmoke:f5f5f5,yellow:ffff00,yellowgreen:9acd32\";\nvar makeMap = (str) => {\n  const map = /* @__PURE__ */ new Map();\n  const list = str.split(\",\");\n  for (let i = 0; i < list.length; i++) {\n    const [key, val] = list[i].split(\":\");\n    map.set(key, `#${val}`);\n    if (key.includes(\"gray\")) map.set(key.replace(\"gray\", \"grey\"), `#${val}`);\n  }\n  return map;\n};\nvar nativeColorMap = makeMap(nativeColors);\n\n// src/parse-color.ts\nvar parseColor = (value) => {\n  if (nativeColorMap.has(value)) {\n    return parseColor(nativeColorMap.get(value));\n  }\n  const result = RGBColor.parse(value) || HSBColor.parse(value) || HSLColor.parse(value);\n  if (!result) {\n    const error = new Error(\"Invalid color value: \" + value);\n    Error.captureStackTrace?.(error, parseColor);\n    throw error;\n  }\n  return result;\n};\nvar normalizeColor = (v) => {\n  return typeof v === \"string\" ? parseColor(v) : v;\n};\n\nexport { Color, getColorAreaGradient, normalizeColor, parseColor };\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 { parseColor, getColorAreaGradient, normalizeColor } from '@zag-js/color-utils';\nimport { raf, getInitialFocus, dispatchInputValueEvent, disableTextSelection, trackPointerMove, trackFormControl, setElementValue, getRelativePoint, queryAll, dataAttr, visuallyHiddenStyle, getEventStep, getEventKey, isLeftClick, isModifierKey, getEventPoint, query } from '@zag-js/dom-query';\nimport { getPlacement, getPlacementStyles } from '@zag-js/popper';\nimport { createGuards, createMachine } from '@zag-js/core';\nimport { trackDismissableElement } from '@zag-js/dismissable';\nimport { tryCatch, createSplitProps } from '@zag-js/utils';\nimport { createProps } from '@zag-js/types';\n\n// src/color-picker.anatomy.ts\nvar anatomy = createAnatomy(\"color-picker\", [\n  \"root\",\n  \"label\",\n  \"control\",\n  \"trigger\",\n  \"positioner\",\n  \"content\",\n  \"area\",\n  \"areaThumb\",\n  \"valueText\",\n  \"areaBackground\",\n  \"channelSlider\",\n  \"channelSliderLabel\",\n  \"channelSliderTrack\",\n  \"channelSliderThumb\",\n  \"channelSliderValueText\",\n  \"channelInput\",\n  \"transparencyGrid\",\n  \"swatchGroup\",\n  \"swatchTrigger\",\n  \"swatchIndicator\",\n  \"swatch\",\n  \"eyeDropperTrigger\",\n  \"formatTrigger\",\n  \"formatSelect\"\n]);\nvar parts = anatomy.build();\nvar getRootId = (ctx) => ctx.ids?.root ?? `color-picker:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `color-picker:${ctx.id}:label`;\nvar getHiddenInputId = (ctx) => ctx.ids?.hiddenInput ?? `color-picker:${ctx.id}:hidden-input`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `color-picker:${ctx.id}:control`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `color-picker:${ctx.id}:trigger`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `color-picker:${ctx.id}:content`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `color-picker:${ctx.id}:positioner`;\nvar getFormatSelectId = (ctx) => ctx.ids?.formatSelect ?? `color-picker:${ctx.id}:format-select`;\nvar getAreaId = (ctx) => ctx.ids?.area ?? `color-picker:${ctx.id}:area`;\nvar getAreaGradientId = (ctx) => ctx.ids?.areaGradient ?? `color-picker:${ctx.id}:area-gradient`;\nvar getAreaThumbId = (ctx) => ctx.ids?.areaThumb ?? `color-picker:${ctx.id}:area-thumb`;\nvar getChannelSliderTrackId = (ctx, channel) => ctx.ids?.channelSliderTrack?.(channel) ?? `color-picker:${ctx.id}:slider-track:${channel}`;\nvar getChannelSliderThumbId = (ctx, channel) => ctx.ids?.channelSliderThumb?.(channel) ?? `color-picker:${ctx.id}:slider-thumb:${channel}`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getAreaThumbEl = (ctx) => ctx.getById(getAreaThumbId(ctx));\nvar getChannelSliderThumbEl = (ctx, channel) => ctx.getById(getChannelSliderThumbId(ctx, channel));\nvar getFormatSelectEl = (ctx) => ctx.getById(getFormatSelectId(ctx));\nvar getHiddenInputEl = (ctx) => ctx.getById(getHiddenInputId(ctx));\nvar getAreaEl = (ctx) => ctx.getById(getAreaId(ctx));\nvar getAreaValueFromPoint = (ctx, point, dir) => {\n  const areaEl = getAreaEl(ctx);\n  if (!areaEl) return;\n  const { getPercentValue } = getRelativePoint(point, areaEl);\n  return {\n    x: getPercentValue({ dir, orientation: \"horizontal\" }),\n    y: getPercentValue({ orientation: \"vertical\" })\n  };\n};\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getChannelSliderTrackEl = (ctx, channel) => ctx.getById(getChannelSliderTrackId(ctx, channel));\nvar getChannelSliderValueFromPoint = (ctx, point, channel, dir) => {\n  const trackEl = getChannelSliderTrackEl(ctx, channel);\n  if (!trackEl) return;\n  const { getPercentValue } = getRelativePoint(point, trackEl);\n  return {\n    x: getPercentValue({ dir, orientation: \"horizontal\" }),\n    y: getPercentValue({ orientation: \"vertical\" })\n  };\n};\nvar getChannelInputEls = (ctx) => {\n  return [\n    ...queryAll(getContentEl(ctx), \"input[data-channel]\"),\n    ...queryAll(getControlEl(ctx), \"input[data-channel]\")\n  ];\n};\nfunction getChannelDisplayColor(color, channel) {\n  switch (channel) {\n    case \"hue\":\n      return parseColor(`hsl(${color.getChannelValue(\"hue\")}, 100%, 50%)`);\n    case \"lightness\":\n    case \"brightness\":\n    case \"saturation\":\n    case \"red\":\n    case \"green\":\n    case \"blue\":\n      return color.withChannelValue(\"alpha\", 1);\n    case \"alpha\": {\n      return color;\n    }\n    default:\n      throw new Error(\"Unknown color channel: \" + channel);\n  }\n}\nfunction getChannelValue(color, channel) {\n  if (channel == null) return \"\";\n  if (channel === \"hex\") {\n    return color.toString(\"hex\");\n  }\n  if (channel === \"css\") {\n    return color.toString(\"css\");\n  }\n  if (channel in color) {\n    return color.getChannelValue(channel).toString();\n  }\n  const isHSL = color.getFormat() === \"hsla\";\n  switch (channel) {\n    case \"hue\":\n      return isHSL ? color.toFormat(\"hsla\").getChannelValue(\"hue\").toString() : color.toFormat(\"hsba\").getChannelValue(\"hue\").toString();\n    case \"saturation\":\n      return isHSL ? color.toFormat(\"hsla\").getChannelValue(\"saturation\").toString() : color.toFormat(\"hsba\").getChannelValue(\"saturation\").toString();\n    case \"lightness\":\n      return color.toFormat(\"hsla\").getChannelValue(\"lightness\").toString();\n    case \"brightness\":\n      return color.toFormat(\"hsba\").getChannelValue(\"brightness\").toString();\n    case \"red\":\n    case \"green\":\n    case \"blue\":\n      return color.toFormat(\"rgba\").getChannelValue(channel).toString();\n    default:\n      return color.getChannelValue(channel).toString();\n  }\n}\nfunction getChannelRange(color, channel) {\n  switch (channel) {\n    case \"hex\":\n      const minColor = parseColor(\"#000000\");\n      const maxColor = parseColor(\"#FFFFFF\");\n      return {\n        minValue: minColor.toHexInt(),\n        maxValue: maxColor.toHexInt(),\n        pageSize: 10,\n        step: 1\n      };\n    case \"css\":\n      return void 0;\n    case \"hue\":\n    case \"saturation\":\n    case \"lightness\":\n      return color.toFormat(\"hsla\").getChannelRange(channel);\n    case \"brightness\":\n      return color.toFormat(\"hsba\").getChannelRange(channel);\n    case \"red\":\n    case \"green\":\n    case \"blue\":\n      return color.toFormat(\"rgba\").getChannelRange(channel);\n    default:\n      return color.getChannelRange(channel);\n  }\n}\n\n// src/utils/get-slider-background.ts\nfunction getSliderBackgroundDirection(orientation, dir) {\n  if (orientation === \"vertical\") {\n    return \"top\";\n  } else if (dir === \"ltr\") {\n    return \"right\";\n  } else {\n    return \"left\";\n  }\n}\nvar getSliderBackground = (props2) => {\n  const { channel, value, dir, orientation } = props2;\n  const bgDirection = getSliderBackgroundDirection(orientation, dir);\n  const { minValue, maxValue } = value.getChannelRange(channel);\n  switch (channel) {\n    case \"hue\":\n      return `linear-gradient(to ${bgDirection}, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%)`;\n    case \"lightness\": {\n      let start = value.withChannelValue(channel, minValue).toString(\"css\");\n      let middle = value.withChannelValue(channel, (maxValue - minValue) / 2).toString(\"css\");\n      let end = value.withChannelValue(channel, maxValue).toString(\"css\");\n      return `linear-gradient(to ${bgDirection}, ${start}, ${middle}, ${end})`;\n    }\n    case \"saturation\":\n    case \"brightness\":\n    case \"red\":\n    case \"green\":\n    case \"blue\":\n    case \"alpha\": {\n      let start = value.withChannelValue(channel, minValue).toString(\"css\");\n      let end = value.withChannelValue(channel, maxValue).toString(\"css\");\n      return `linear-gradient(to ${bgDirection}, ${start}, ${end})`;\n    }\n    default:\n      throw new Error(\"Unknown color channel: \" + channel);\n  }\n};\n\n// src/color-picker.connect.ts\nfunction connect(service, normalize) {\n  const { context, send, prop, computed, state, scope } = service;\n  const value = context.get(\"value\");\n  const format = context.get(\"format\");\n  const areaValue = computed(\"areaValue\");\n  const valueAsString = computed(\"valueAsString\");\n  const disabled = computed(\"disabled\");\n  const readOnly = !!prop(\"readOnly\");\n  const invalid = !!prop(\"invalid\");\n  const required = !!prop(\"required\");\n  const interactive = computed(\"interactive\");\n  const dragging = state.hasTag(\"dragging\");\n  const open = state.hasTag(\"open\");\n  const focused = state.hasTag(\"focused\");\n  const getAreaChannels = (props2) => {\n    const channels = areaValue.getChannels();\n    return {\n      xChannel: props2.xChannel ?? channels[1],\n      yChannel: props2.yChannel ?? channels[2]\n    };\n  };\n  const currentPlacement = context.get(\"currentPlacement\");\n  const popperStyles = getPlacementStyles({\n    ...prop(\"positioning\"),\n    placement: currentPlacement\n  });\n  function getSwatchTriggerState(props2) {\n    const color = normalizeColor(props2.value).toFormat(context.get(\"format\"));\n    return {\n      value: color,\n      valueAsString: color.toString(\"hex\"),\n      checked: color.isEqual(value),\n      disabled: props2.disabled || !interactive\n    };\n  }\n  return {\n    dragging,\n    open,\n    valueAsString,\n    value,\n    inline: !!prop(\"inline\"),\n    setOpen(nextOpen) {\n      if (prop(\"inline\")) return;\n      const open2 = state.hasTag(\"open\");\n      if (open2 === nextOpen) return;\n      send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n    },\n    setValue(value2) {\n      send({ type: \"VALUE.SET\", value: normalizeColor(value2), src: \"set-color\" });\n    },\n    getChannelValue(channel) {\n      return getChannelValue(value, channel);\n    },\n    getChannelValueText(channel, locale) {\n      return value.formatChannelValue(channel, locale);\n    },\n    setChannelValue(channel, channelValue) {\n      const color = value.withChannelValue(channel, channelValue);\n      send({ type: \"VALUE.SET\", value: color, src: \"set-channel\" });\n    },\n    format: context.get(\"format\"),\n    setFormat(format2) {\n      const formatValue = value.toFormat(format2);\n      send({ type: \"VALUE.SET\", value: formatValue, src: \"set-format\" });\n    },\n    alpha: value.getChannelValue(\"alpha\"),\n    setAlpha(alphaValue) {\n      const color = value.withChannelValue(\"alpha\", alphaValue);\n      send({ type: \"VALUE.SET\", value: color, src: \"set-alpha\" });\n    },\n    getRootProps() {\n      return normalize.element({\n        ...parts.root.attrs,\n        dir: prop(\"dir\"),\n        id: getRootId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-invalid\": dataAttr(invalid),\n        style: {\n          \"--value\": value.toString(\"css\")\n        }\n      });\n    },\n    getLabelProps() {\n      return normalize.element({\n        ...parts.label.attrs,\n        dir: prop(\"dir\"),\n        id: getLabelId(scope),\n        htmlFor: getHiddenInputId(scope),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-required\": dataAttr(required),\n        \"data-focus\": dataAttr(focused),\n        onClick(event) {\n          event.preventDefault();\n          const inputEl = query(getControlEl(scope), \"[data-channel=hex]\");\n          inputEl?.focus({ preventScroll: true });\n        }\n      });\n    },\n    getControlProps() {\n      return normalize.element({\n        ...parts.control.attrs,\n        id: getControlId(scope),\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(focused)\n      });\n    },\n    getTriggerProps() {\n      return normalize.button({\n        ...parts.trigger.attrs,\n        id: getTriggerId(scope),\n        dir: prop(\"dir\"),\n        disabled,\n        \"aria-label\": `select color. current color is ${valueAsString}`,\n        \"aria-controls\": getContentId(scope),\n        \"aria-labelledby\": getLabelId(scope),\n        \"aria-haspopup\": prop(\"inline\") ? void 0 : \"dialog\",\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-placement\": currentPlacement,\n        \"aria-expanded\": open,\n        \"data-state\": open ? \"open\" : \"closed\",\n        \"data-focus\": dataAttr(focused),\n        type: \"button\",\n        onClick() {\n          if (!interactive) return;\n          send({ type: \"TRIGGER.CLICK\" });\n        },\n        onBlur() {\n          if (!interactive) return;\n          send({ type: \"TRIGGER.BLUR\" });\n        },\n        style: {\n          position: \"relative\"\n        }\n      });\n    },\n    getPositionerProps() {\n      return normalize.element({\n        ...parts.positioner.attrs,\n        id: getPositionerId(scope),\n        dir: prop(\"dir\"),\n        style: popperStyles.floating\n      });\n    },\n    getContentProps() {\n      return normalize.element({\n        ...parts.content.attrs,\n        id: getContentId(scope),\n        dir: prop(\"dir\"),\n        role: prop(\"inline\") ? void 0 : \"dialog\",\n        tabIndex: -1,\n        \"data-placement\": currentPlacement,\n        \"data-state\": open ? \"open\" : \"closed\",\n        hidden: !open\n      });\n    },\n    getValueTextProps() {\n      return normalize.element({\n        ...parts.valueText.attrs,\n        dir: prop(\"dir\"),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-focus\": dataAttr(focused)\n      });\n    },\n    getAreaProps(props2 = {}) {\n      const { xChannel, yChannel } = getAreaChannels(props2);\n      const { areaStyles } = getColorAreaGradient(areaValue, {\n        xChannel,\n        yChannel,\n        dir: prop(\"dir\")\n      });\n      return normalize.element({\n        ...parts.area.attrs,\n        id: getAreaId(scope),\n        role: \"group\",\n        \"data-invalid\": dataAttr(invalid),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        onPointerDown(event) {\n          if (!interactive) return;\n          if (!isLeftClick(event)) return;\n          if (isModifierKey(event)) return;\n          const point = getEventPoint(event);\n          const channel = { xChannel, yChannel };\n          send({ type: \"AREA.POINTER_DOWN\", point, channel, id: \"area\" });\n          event.preventDefault();\n        },\n        style: {\n          position: \"relative\",\n          touchAction: \"none\",\n          forcedColorAdjust: \"none\",\n          ...areaStyles\n        }\n      });\n    },\n    getAreaBackgroundProps(props2 = {}) {\n      const { xChannel, yChannel } = getAreaChannels(props2);\n      const { areaGradientStyles } = getColorAreaGradient(areaValue, {\n        xChannel,\n        yChannel,\n        dir: prop(\"dir\")\n      });\n      return normalize.element({\n        ...parts.areaBackground.attrs,\n        id: getAreaGradientId(scope),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-disabled\": dataAttr(disabled),\n        \"data-readonly\": dataAttr(readOnly),\n        style: {\n          position: \"relative\",\n          touchAction: \"none\",\n          forcedColorAdjust: \"none\",\n          ...areaGradientStyles\n        }\n      });\n    },\n    getAreaThumbProps(props2 = {}) {\n      const { xChannel, yChannel } = getAreaChannels(props2);\n      const channel = { xChannel, yChannel };\n      const xPercent = areaValue.getChannelValuePercent(xChannel);\n      const yPercent = 1 - areaValue.getChannelValuePercent(yChannel);\n      const isRtl = prop(\"dir\") === \"rtl\";\n      const finalXPercent = isRtl ? 1 - xPercent : xPercent;\n      const xValue = areaValue.getChannelValue(xChannel);\n      const yValue = areaValue.getChannelValue(yChannel);\n      const color = areaValue.withChannelValue(\"alpha\", 1).toString(\"css\");\n      return normalize.element({\n        ...parts.areaThumb.attrs,\n        id: getAreaThumbId(scope),\n        dir: prop(\"dir\"),\n        tabIndex: disabled ? void 0 : 0,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        role: \"slider\",\n        \"aria-valuemin\": 0,\n        \"aria-valuemax\": 100,\n        \"aria-valuenow\": xValue,\n        \"aria-label\": `${xChannel} and ${yChannel}`,\n        \"aria-roledescription\": \"2d slider\",\n        \"aria-valuetext\": `${xChannel} ${xValue}, ${yChannel} ${yValue}`,\n        style: {\n          position: \"absolute\",\n          left: `${finalXPercent * 100}%`,\n          top: `${yPercent * 100}%`,\n          transform: \"translate(-50%, -50%)\",\n          touchAction: \"none\",\n          forcedColorAdjust: \"none\",\n          \"--color\": color,\n          background: color\n        },\n        onFocus() {\n          if (!interactive) return;\n          send({ type: \"AREA.FOCUS\", id: \"area\", channel });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          const step = getEventStep(event);\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"AREA.ARROW_UP\", channel, step });\n            },\n            ArrowDown() {\n              send({ type: \"AREA.ARROW_DOWN\", channel, step });\n            },\n            ArrowLeft() {\n              send({ type: \"AREA.ARROW_LEFT\", channel, step });\n            },\n            ArrowRight() {\n              send({ type: \"AREA.ARROW_RIGHT\", channel, step });\n            },\n            PageUp() {\n              send({ type: \"AREA.PAGE_UP\", channel, step });\n            },\n            PageDown() {\n              send({ type: \"AREA.PAGE_DOWN\", channel, step });\n            },\n            Escape(event2) {\n              event2.stopPropagation();\n            }\n          };\n          const exec = keyMap[getEventKey(event, {\n            dir: prop(\"dir\")\n          })];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getTransparencyGridProps(props2 = {}) {\n      const { size = \"12px\" } = props2;\n      return normalize.element({\n        ...parts.transparencyGrid.attrs,\n        style: {\n          \"--size\": size,\n          width: \"100%\",\n          height: \"100%\",\n          position: \"absolute\",\n          backgroundColor: \"#fff\",\n          backgroundImage: \"conic-gradient(#eeeeee 0 25%, transparent 0 50%, #eeeeee 0 75%, transparent 0)\",\n          backgroundSize: \"var(--size) var(--size)\",\n          inset: \"0px\",\n          zIndex: \"auto\",\n          pointerEvents: \"none\"\n        }\n      });\n    },\n    getChannelSliderProps(props2) {\n      const { orientation = \"horizontal\", channel, format: format2 } = props2;\n      return normalize.element({\n        ...parts.channelSlider.attrs,\n        \"data-channel\": channel,\n        \"data-orientation\": orientation,\n        role: \"presentation\",\n        onPointerDown(event) {\n          if (!interactive) return;\n          if (!isLeftClick(event)) return;\n          if (isModifierKey(event)) return;\n          const point = getEventPoint(event);\n          send({ type: \"CHANNEL_SLIDER.POINTER_DOWN\", channel, format: format2, point, id: channel, orientation });\n          event.preventDefault();\n        },\n        style: {\n          position: \"relative\",\n          touchAction: \"none\"\n        }\n      });\n    },\n    getChannelSliderTrackProps(props2) {\n      const { orientation = \"horizontal\", channel, format: format2 } = props2;\n      const normalizedValue = format2 ? value.toFormat(format2) : areaValue;\n      return normalize.element({\n        ...parts.channelSliderTrack.attrs,\n        id: getChannelSliderTrackId(scope, channel),\n        role: \"group\",\n        \"data-channel\": channel,\n        \"data-orientation\": orientation,\n        style: {\n          position: \"relative\",\n          forcedColorAdjust: \"none\",\n          backgroundImage: getSliderBackground({\n            orientation,\n            channel,\n            dir: prop(\"dir\"),\n            value: normalizedValue\n          })\n        }\n      });\n    },\n    getChannelSliderLabelProps(props2) {\n      const { channel } = props2;\n      return normalize.element({\n        ...parts.channelSliderLabel.attrs,\n        \"data-channel\": channel,\n        onClick(event) {\n          if (!interactive) return;\n          event.preventDefault();\n          const thumbId = getChannelSliderThumbId(scope, channel);\n          scope.getById(thumbId)?.focus({ preventScroll: true });\n        },\n        style: {\n          userSelect: \"none\",\n          WebkitUserSelect: \"none\"\n        }\n      });\n    },\n    getChannelSliderValueTextProps(props2) {\n      return normalize.element({\n        ...parts.channelSliderValueText.attrs,\n        \"data-channel\": props2.channel\n      });\n    },\n    getChannelSliderThumbProps(props2) {\n      const { orientation = \"horizontal\", channel, format: format2 } = props2;\n      const normalizedValue = format2 ? value.toFormat(format2) : areaValue;\n      const channelRange = normalizedValue.getChannelRange(channel);\n      const channelValue = normalizedValue.getChannelValue(channel);\n      const offset = (channelValue - channelRange.minValue) / (channelRange.maxValue - channelRange.minValue);\n      const isRtl = prop(\"dir\") === \"rtl\";\n      const finalOffset = orientation === \"horizontal\" && isRtl ? 1 - offset : offset;\n      const placementStyles = orientation === \"horizontal\" ? { left: `${finalOffset * 100}%`, top: \"50%\" } : { top: `${offset * 100}%`, left: \"50%\" };\n      return normalize.element({\n        ...parts.channelSliderThumb.attrs,\n        id: getChannelSliderThumbId(scope, channel),\n        role: \"slider\",\n        \"aria-label\": channel,\n        tabIndex: disabled ? void 0 : 0,\n        \"data-channel\": channel,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-orientation\": orientation,\n        \"aria-disabled\": dataAttr(disabled),\n        \"aria-orientation\": orientation,\n        \"aria-valuemax\": channelRange.maxValue,\n        \"aria-valuemin\": channelRange.minValue,\n        \"aria-valuenow\": channelValue,\n        \"aria-valuetext\": `${channel} ${channelValue}`,\n        style: {\n          forcedColorAdjust: \"none\",\n          position: \"absolute\",\n          background: getChannelDisplayColor(areaValue, channel).toString(\"css\"),\n          ...placementStyles\n        },\n        onFocus() {\n          if (!interactive) return;\n          send({ type: \"CHANNEL_SLIDER.FOCUS\", channel });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          const step = getEventStep(event) * channelRange.step;\n          const keyMap = {\n            ArrowUp() {\n              send({ type: \"CHANNEL_SLIDER.ARROW_UP\", channel, step });\n            },\n            ArrowDown() {\n              send({ type: \"CHANNEL_SLIDER.ARROW_DOWN\", channel, step });\n            },\n            ArrowLeft() {\n              send({ type: \"CHANNEL_SLIDER.ARROW_LEFT\", channel, step });\n            },\n            ArrowRight() {\n              send({ type: \"CHANNEL_SLIDER.ARROW_RIGHT\", channel, step });\n            },\n            PageUp() {\n              send({ type: \"CHANNEL_SLIDER.PAGE_UP\", channel });\n            },\n            PageDown() {\n              send({ type: \"CHANNEL_SLIDER.PAGE_DOWN\", channel });\n            },\n            Home() {\n              send({ type: \"CHANNEL_SLIDER.HOME\", channel });\n            },\n            End() {\n              send({ type: \"CHANNEL_SLIDER.END\", channel });\n            },\n            Escape(event2) {\n              event2.stopPropagation();\n            }\n          };\n          const exec = keyMap[getEventKey(event, {\n            dir: prop(\"dir\")\n          })];\n          if (exec) {\n            exec(event);\n            event.preventDefault();\n          }\n        }\n      });\n    },\n    getChannelInputProps(props2) {\n      const { channel } = props2;\n      const isTextField = channel === \"hex\" || channel === \"css\";\n      const channelRange = getChannelRange(value, channel);\n      return normalize.input({\n        ...parts.channelInput.attrs,\n        dir: prop(\"dir\"),\n        type: isTextField ? \"text\" : \"number\",\n        \"data-channel\": channel,\n        \"aria-label\": channel,\n        spellCheck: false,\n        autoComplete: \"off\",\n        disabled,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        readOnly,\n        defaultValue: getChannelValue(value, channel),\n        min: channelRange?.minValue,\n        max: channelRange?.maxValue,\n        step: channelRange?.step,\n        onBeforeInput(event) {\n          if (isTextField || !interactive) return;\n          const value2 = event.currentTarget.value;\n          if (value2.match(/[^0-9.]/g)) {\n            event.preventDefault();\n          }\n        },\n        onFocus(event) {\n          if (!interactive) return;\n          send({ type: \"CHANNEL_INPUT.FOCUS\", channel });\n          event.currentTarget.select();\n        },\n        onBlur(event) {\n          if (!interactive) return;\n          const value2 = isTextField ? event.currentTarget.value : event.currentTarget.valueAsNumber;\n          send({ type: \"CHANNEL_INPUT.BLUR\", channel, value: value2, isTextField });\n        },\n        onKeyDown(event) {\n          if (event.defaultPrevented) return;\n          if (!interactive) return;\n          if (event.key === \"Enter\") {\n            const value2 = isTextField ? event.currentTarget.value : event.currentTarget.valueAsNumber;\n            send({ type: \"CHANNEL_INPUT.CHANGE\", channel, value: value2, isTextField });\n            event.preventDefault();\n          }\n        },\n        style: {\n          appearance: \"none\",\n          WebkitAppearance: \"none\",\n          MozAppearance: \"textfield\"\n        }\n      });\n    },\n    getHiddenInputProps() {\n      return normalize.input({\n        type: \"text\",\n        disabled,\n        name: prop(\"name\"),\n        tabIndex: -1,\n        readOnly,\n        required,\n        id: getHiddenInputId(scope),\n        style: visuallyHiddenStyle,\n        defaultValue: valueAsString\n      });\n    },\n    getEyeDropperTriggerProps() {\n      return normalize.button({\n        ...parts.eyeDropperTrigger.attrs,\n        type: \"button\",\n        dir: prop(\"dir\"),\n        disabled,\n        \"data-disabled\": dataAttr(disabled),\n        \"data-invalid\": dataAttr(invalid),\n        \"data-readonly\": dataAttr(readOnly),\n        \"aria-label\": \"Pick a color from the screen\",\n        onClick() {\n          if (!interactive) return;\n          send({ type: \"EYEDROPPER.CLICK\" });\n        }\n      });\n    },\n    getSwatchGroupProps() {\n      return normalize.element({\n        ...parts.swatchGroup.attrs,\n        role: \"group\"\n      });\n    },\n    getSwatchTriggerState,\n    getSwatchTriggerProps(props2) {\n      const swatchState = getSwatchTriggerState(props2);\n      return normalize.button({\n        ...parts.swatchTrigger.attrs,\n        disabled: swatchState.disabled,\n        dir: prop(\"dir\"),\n        type: \"button\",\n        \"aria-label\": `select ${swatchState.valueAsString} as the color`,\n        \"data-state\": swatchState.checked ? \"checked\" : \"unchecked\",\n        \"data-value\": swatchState.valueAsString,\n        \"data-disabled\": dataAttr(swatchState.disabled),\n        onClick() {\n          if (swatchState.disabled) return;\n          send({ type: \"SWATCH_TRIGGER.CLICK\", value: swatchState.value });\n        },\n        style: {\n          \"--color\": swatchState.valueAsString,\n          position: \"relative\"\n        }\n      });\n    },\n    getSwatchIndicatorProps(props2) {\n      const swatchState = getSwatchTriggerState(props2);\n      return normalize.element({\n        ...parts.swatchIndicator.attrs,\n        dir: prop(\"dir\"),\n        hidden: !swatchState.checked\n      });\n    },\n    getSwatchProps(props2) {\n      const { respectAlpha = true } = props2;\n      const swatchState = getSwatchTriggerState(props2);\n      const color = swatchState.value.toString(respectAlpha ? \"css\" : \"hex\");\n      return normalize.element({\n        ...parts.swatch.attrs,\n        dir: prop(\"dir\"),\n        \"data-state\": swatchState.checked ? \"checked\" : \"unchecked\",\n        \"data-value\": swatchState.valueAsString,\n        style: {\n          \"--color\": color,\n          position: \"relative\",\n          background: color\n        }\n      });\n    },\n    getFormatTriggerProps() {\n      return normalize.button({\n        ...parts.formatTrigger.attrs,\n        dir: prop(\"dir\"),\n        type: \"button\",\n        \"aria-label\": `change color format to ${getNextFormat(format)}`,\n        onClick(event) {\n          if (event.currentTarget.disabled) return;\n          const nextFormat = getNextFormat(format);\n          send({ type: \"FORMAT.SET\", format: nextFormat, src: \"format-trigger\" });\n        }\n      });\n    },\n    getFormatSelectProps() {\n      return normalize.select({\n        ...parts.formatSelect.attrs,\n        \"aria-label\": \"change color format\",\n        dir: prop(\"dir\"),\n        defaultValue: prop(\"format\"),\n        disabled,\n        onChange(event) {\n          const format2 = assertFormat(event.currentTarget.value);\n          send({ type: \"FORMAT.SET\", format: format2, src: \"format-select\" });\n        }\n      });\n    }\n  };\n}\nvar formats = [\"hsba\", \"hsla\", \"rgba\"];\nvar formatRegex = new RegExp(`^(${formats.join(\"|\")})$`);\nfunction getNextFormat(format) {\n  const index = formats.indexOf(format);\n  return formats[index + 1] ?? formats[0];\n}\nfunction assertFormat(format) {\n  if (formatRegex.test(format)) return format;\n  throw new Error(`Unsupported color format: ${format}`);\n}\nvar parse = (colorString) => {\n  return parseColor(colorString);\n};\n\n// src/utils/is-valid-hex.ts\nvar HEX_REGEX = /^[0-9a-fA-F]{3,8}$/;\nfunction isValidHex(value) {\n  return HEX_REGEX.test(value);\n}\nfunction prefixHex(value) {\n  if (value.startsWith(\"#\")) return value;\n  if (isValidHex(value)) return `#${value}`;\n  return value;\n}\n\n// src/color-picker.machine.ts\nvar { and } = createGuards();\nvar machine = createMachine({\n  props({ props: props2 }) {\n    return {\n      dir: \"ltr\",\n      defaultValue: parse(\"#000000\"),\n      defaultFormat: \"rgba\",\n      openAutoFocus: true,\n      ...props2,\n      positioning: {\n        placement: \"bottom\",\n        ...props2.positioning\n      }\n    };\n  },\n  initialState({ prop }) {\n    const open = prop(\"open\") || prop(\"defaultOpen\") || prop(\"inline\");\n    return open ? \"open\" : \"idle\";\n  },\n  context({ prop, bindable, getContext }) {\n    return {\n      value: bindable(() => ({\n        defaultValue: prop(\"defaultValue\"),\n        value: prop(\"value\"),\n        isEqual(a, b) {\n          return a.toString(\"css\") === b?.toString(\"css\");\n        },\n        hash(a) {\n          return a.toString(\"css\");\n        },\n        onChange(value) {\n          const ctx = getContext();\n          const valueAsString = value.toString(ctx.get(\"format\"));\n          prop(\"onValueChange\")?.({ value, valueAsString });\n        }\n      })),\n      format: bindable(() => ({\n        defaultValue: prop(\"defaultFormat\"),\n        value: prop(\"format\"),\n        onChange(format) {\n          prop(\"onFormatChange\")?.({ format });\n        }\n      })),\n      activeId: bindable(() => ({ defaultValue: null })),\n      activeChannel: bindable(() => ({ defaultValue: null })),\n      activeOrientation: bindable(() => ({ defaultValue: null })),\n      fieldsetDisabled: bindable(() => ({ defaultValue: false })),\n      restoreFocus: bindable(() => ({ defaultValue: true })),\n      currentPlacement: bindable(() => ({\n        defaultValue: void 0\n      }))\n    };\n  },\n  computed: {\n    rtl: ({ prop }) => prop(\"dir\") === \"rtl\",\n    disabled: ({ prop, context }) => !!prop(\"disabled\") || context.get(\"fieldsetDisabled\"),\n    interactive: ({ prop }) => !(prop(\"disabled\") || prop(\"readOnly\")),\n    valueAsString: ({ context }) => context.get(\"value\").toString(context.get(\"format\")),\n    areaValue: ({ context }) => {\n      const format = context.get(\"format\").startsWith(\"hsl\") ? \"hsla\" : \"hsba\";\n      return context.get(\"value\").toFormat(format);\n    }\n  },\n  effects: [\"trackFormControl\"],\n  watch({ prop, context, action, track }) {\n    track([() => context.hash(\"value\")], () => {\n      action([\"syncInputElements\", \"dispatchChangeEvent\"]);\n    });\n    track([() => context.get(\"format\")], () => {\n      action([\"syncFormatSelectElement\"]);\n    });\n    track([() => prop(\"open\")], () => {\n      action([\"toggleVisibility\"]);\n    });\n  },\n  on: {\n    \"VALUE.SET\": {\n      actions: [\"setValue\"]\n    },\n    \"FORMAT.SET\": {\n      actions: [\"setFormat\"]\n    },\n    \"CHANNEL_INPUT.CHANGE\": {\n      actions: [\"setChannelColorFromInput\"]\n    },\n    \"EYEDROPPER.CLICK\": {\n      actions: [\"openEyeDropper\"]\n    },\n    \"SWATCH_TRIGGER.CLICK\": {\n      actions: [\"setValue\"]\n    }\n  },\n  states: {\n    idle: {\n      tags: [\"closed\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\",\n          actions: [\"setInitialFocus\"]\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\"]\n          }\n        ],\n        \"CHANNEL_INPUT.FOCUS\": {\n          target: \"focused\",\n          actions: [\"setActiveChannel\"]\n        }\n      }\n    },\n    focused: {\n      tags: [\"closed\", \"focused\"],\n      on: {\n        \"CONTROLLED.OPEN\": {\n          target: \"open\",\n          actions: [\"setInitialFocus\"]\n        },\n        OPEN: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\"]\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnOpen\"]\n          },\n          {\n            target: \"open\",\n            actions: [\"invokeOnOpen\", \"setInitialFocus\"]\n          }\n        ],\n        \"CHANNEL_INPUT.FOCUS\": {\n          actions: [\"setActiveChannel\"]\n        },\n        \"CHANNEL_INPUT.BLUR\": {\n          target: \"idle\",\n          actions: [\"setChannelColorFromInput\"]\n        },\n        \"TRIGGER.BLUR\": {\n          target: \"idle\"\n        }\n      }\n    },\n    open: {\n      tags: [\"open\"],\n      effects: [\"trackPositioning\", \"trackDismissableElement\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"setReturnFocus\"]\n          },\n          {\n            target: \"idle\"\n          }\n        ],\n        \"TRIGGER.CLICK\": [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"AREA.POINTER_DOWN\": {\n          target: \"open:dragging\",\n          actions: [\"setActiveChannel\", \"setAreaColorFromPoint\", \"focusAreaThumb\"]\n        },\n        \"AREA.FOCUS\": {\n          actions: [\"setActiveChannel\"]\n        },\n        \"CHANNEL_SLIDER.POINTER_DOWN\": {\n          target: \"open:dragging\",\n          actions: [\"setActiveChannel\", \"setChannelColorFromPoint\", \"focusChannelThumb\"]\n        },\n        \"CHANNEL_SLIDER.FOCUS\": {\n          actions: [\"setActiveChannel\"]\n        },\n        \"AREA.ARROW_LEFT\": {\n          actions: [\"decrementAreaXChannel\"]\n        },\n        \"AREA.ARROW_RIGHT\": {\n          actions: [\"incrementAreaXChannel\"]\n        },\n        \"AREA.ARROW_UP\": {\n          actions: [\"incrementAreaYChannel\"]\n        },\n        \"AREA.ARROW_DOWN\": {\n          actions: [\"decrementAreaYChannel\"]\n        },\n        \"AREA.PAGE_UP\": {\n          actions: [\"incrementAreaXChannel\"]\n        },\n        \"AREA.PAGE_DOWN\": {\n          actions: [\"decrementAreaXChannel\"]\n        },\n        \"CHANNEL_SLIDER.ARROW_LEFT\": {\n          actions: [\"decrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.ARROW_RIGHT\": {\n          actions: [\"incrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.ARROW_UP\": {\n          actions: [\"incrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.ARROW_DOWN\": {\n          actions: [\"decrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.PAGE_UP\": {\n          actions: [\"incrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.PAGE_DOWN\": {\n          actions: [\"decrementChannel\"]\n        },\n        \"CHANNEL_SLIDER.HOME\": {\n          actions: [\"setChannelToMin\"]\n        },\n        \"CHANNEL_SLIDER.END\": {\n          actions: [\"setChannelToMax\"]\n        },\n        \"CHANNEL_INPUT.BLUR\": {\n          actions: [\"setChannelColorFromInput\"]\n        },\n        INTERACT_OUTSIDE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"setReturnFocus\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        \"SWATCH_TRIGGER.CLICK\": [\n          {\n            guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n            actions: [\"setValue\", \"invokeOnClose\"]\n          },\n          {\n            guard: \"closeOnSelect\",\n            target: \"focused\",\n            actions: [\"setValue\", \"invokeOnClose\", \"setReturnFocus\"]\n          },\n          {\n            actions: [\"setValue\"]\n          }\n        ]\n      }\n    },\n    \"open:dragging\": {\n      tags: [\"open\"],\n      exit: [\"clearActiveChannel\"],\n      effects: [\"trackPointerMove\", \"disableTextSelection\", \"trackPositioning\", \"trackDismissableElement\"],\n      on: {\n        \"CONTROLLED.CLOSE\": [\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"setReturnFocus\"]\n          },\n          {\n            target: \"idle\"\n          }\n        ],\n        \"AREA.POINTER_MOVE\": {\n          actions: [\"setAreaColorFromPoint\", \"focusAreaThumb\"]\n        },\n        \"AREA.POINTER_UP\": {\n          target: \"open\",\n          actions: [\"invokeOnChangeEnd\"]\n        },\n        \"CHANNEL_SLIDER.POINTER_MOVE\": {\n          actions: [\"setChannelColorFromPoint\", \"focusChannelThumb\"]\n        },\n        \"CHANNEL_SLIDER.POINTER_UP\": {\n          target: \"open\",\n          actions: [\"invokeOnChangeEnd\"]\n        },\n        INTERACT_OUTSIDE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            guard: \"shouldRestoreFocus\",\n            target: \"focused\",\n            actions: [\"invokeOnClose\", \"setReturnFocus\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ],\n        CLOSE: [\n          {\n            guard: \"isOpenControlled\",\n            actions: [\"invokeOnClose\"]\n          },\n          {\n            target: \"idle\",\n            actions: [\"invokeOnClose\"]\n          }\n        ]\n      }\n    }\n  },\n  implementations: {\n    guards: {\n      closeOnSelect: ({ prop }) => !!prop(\"closeOnSelect\"),\n      isOpenControlled: ({ prop }) => prop(\"open\") != null || !!prop(\"inline\"),\n      shouldRestoreFocus: ({ context }) => !!context.get(\"restoreFocus\")\n    },\n    effects: {\n      trackPositioning({ context, prop, scope }) {\n        if (prop(\"inline\")) return;\n        if (!context.get(\"currentPlacement\")) {\n          context.set(\"currentPlacement\", prop(\"positioning\")?.placement);\n        }\n        const anchorEl = getTriggerEl(scope);\n        const getPositionerEl2 = () => getPositionerEl(scope);\n        return getPlacement(anchorEl, getPositionerEl2, {\n          ...prop(\"positioning\"),\n          defer: true,\n          onComplete(data) {\n            context.set(\"currentPlacement\", data.placement);\n          }\n        });\n      },\n      trackDismissableElement({ context, scope, prop, send }) {\n        if (prop(\"inline\")) return;\n        const getContentEl2 = () => getContentEl(scope);\n        return trackDismissableElement(getContentEl2, {\n          type: \"popover\",\n          exclude: getTriggerEl(scope),\n          defer: true,\n          onInteractOutside(event) {\n            prop(\"onInteractOutside\")?.(event);\n            if (event.defaultPrevented) return;\n            context.set(\"restoreFocus\", !(event.detail.focusable || event.detail.contextmenu));\n          },\n          onPointerDownOutside: prop(\"onPointerDownOutside\"),\n          onFocusOutside: prop(\"onFocusOutside\"),\n          onDismiss() {\n            send({ type: \"INTERACT_OUTSIDE\" });\n          }\n        });\n      },\n      trackFormControl({ context, scope, send }) {\n        const inputEl = getHiddenInputEl(scope);\n        return trackFormControl(inputEl, {\n          onFieldsetDisabledChange(disabled) {\n            context.set(\"fieldsetDisabled\", disabled);\n          },\n          onFormReset() {\n            send({ type: \"VALUE.SET\", value: context.initial(\"value\"), src: \"form.reset\" });\n          }\n        });\n      },\n      trackPointerMove({ context, scope, event, send }) {\n        return trackPointerMove(scope.getDoc(), {\n          onPointerMove({ point }) {\n            const type = context.get(\"activeId\") === \"area\" ? \"AREA.POINTER_MOVE\" : \"CHANNEL_SLIDER.POINTER_MOVE\";\n            send({ type, point, format: event.format });\n          },\n          onPointerUp() {\n            const type = context.get(\"activeId\") === \"area\" ? \"AREA.POINTER_UP\" : \"CHANNEL_SLIDER.POINTER_UP\";\n            send({ type });\n          }\n        });\n      },\n      disableTextSelection({ scope }) {\n        return disableTextSelection({\n          doc: scope.getDoc(),\n          target: getContentEl(scope)\n        });\n      }\n    },\n    actions: {\n      openEyeDropper({ scope, context }) {\n        const win = scope.getWin();\n        const isSupported = \"EyeDropper\" in win;\n        if (!isSupported) return;\n        const picker = new win.EyeDropper();\n        picker.open().then(({ sRGBHex }) => {\n          const format = context.get(\"value\").getFormat();\n          const color = parseColor(sRGBHex).toFormat(format);\n          context.set(\"value\", color);\n        }).catch(() => void 0);\n      },\n      setActiveChannel({ context, event }) {\n        context.set(\"activeId\", event.id);\n        if (event.channel) context.set(\"activeChannel\", event.channel);\n        if (event.orientation) context.set(\"activeOrientation\", event.orientation);\n      },\n      clearActiveChannel({ context }) {\n        context.set(\"activeChannel\", null);\n        context.set(\"activeId\", null);\n        context.set(\"activeOrientation\", null);\n      },\n      setAreaColorFromPoint({ context, event, computed, scope, prop }) {\n        const v = event.format ? context.get(\"value\").toFormat(event.format) : computed(\"areaValue\");\n        const { xChannel, yChannel } = event.channel || context.get(\"activeChannel\");\n        const percent = getAreaValueFromPoint(scope, event.point, prop(\"dir\"));\n        if (!percent) return;\n        const xValue = v.getChannelPercentValue(xChannel, percent.x);\n        const yValue = v.getChannelPercentValue(yChannel, 1 - percent.y);\n        const color = v.withChannelValue(xChannel, xValue).withChannelValue(yChannel, yValue);\n        context.set(\"value\", color);\n      },\n      setChannelColorFromPoint({ context, event, computed, scope, prop }) {\n        const channel = event.channel || context.get(\"activeId\");\n        const normalizedValue = event.format ? context.get(\"value\").toFormat(event.format) : computed(\"areaValue\");\n        const percent = getChannelSliderValueFromPoint(scope, event.point, channel, prop(\"dir\"));\n        if (!percent) return;\n        const orientation = context.get(\"activeOrientation\") || \"horizontal\";\n        const channelPercent = orientation === \"horizontal\" ? percent.x : percent.y;\n        const value = normalizedValue.getChannelPercentValue(channel, channelPercent);\n        const color = normalizedValue.withChannelValue(channel, value);\n        context.set(\"value\", color);\n      },\n      setValue({ context, event }) {\n        context.set(\"value\", event.value);\n      },\n      setFormat({ context, event }) {\n        context.set(\"format\", event.format);\n      },\n      dispatchChangeEvent({ scope, computed }) {\n        dispatchInputValueEvent(getHiddenInputEl(scope), { value: computed(\"valueAsString\") });\n      },\n      syncInputElements({ context, scope }) {\n        syncChannelInputs(scope, context.get(\"value\"));\n      },\n      invokeOnChangeEnd({ context, prop, computed }) {\n        prop(\"onValueChangeEnd\")?.({\n          value: context.get(\"value\"),\n          valueAsString: computed(\"valueAsString\")\n        });\n      },\n      setChannelColorFromInput({ context, event, scope, prop }) {\n        const { channel, isTextField, value } = event;\n        const currentAlpha = context.get(\"value\").getChannelValue(\"alpha\");\n        let color;\n        if (channel === \"alpha\") {\n          let valueAsNumber = parseFloat(value);\n          valueAsNumber = Number.isNaN(valueAsNumber) ? currentAlpha : valueAsNumber;\n          color = context.get(\"value\").withChannelValue(\"alpha\", valueAsNumber);\n        } else if (isTextField) {\n          color = tryCatch(\n            () => {\n              const parseValue = channel === \"hex\" ? prefixHex(value) : value;\n              return parse(parseValue).withChannelValue(\"alpha\", currentAlpha);\n            },\n            () => context.get(\"value\")\n          );\n        } else {\n          const current = context.get(\"value\").toFormat(context.get(\"format\"));\n          const valueAsNumber = Number.isNaN(value) ? current.getChannelValue(channel) : value;\n          color = current.withChannelValue(channel, valueAsNumber);\n        }\n        syncChannelInputs(scope, context.get(\"value\"), color);\n        context.set(\"value\", color);\n        prop(\"onValueChangeEnd\")?.({\n          value: color,\n          valueAsString: color.toString(context.get(\"format\"))\n        });\n      },\n      incrementChannel({ context, event }) {\n        const color = context.get(\"value\").incrementChannel(event.channel, event.step);\n        context.set(\"value\", color);\n      },\n      decrementChannel({ context, event }) {\n        const color = context.get(\"value\").decrementChannel(event.channel, event.step);\n        context.set(\"value\", color);\n      },\n      incrementAreaXChannel({ context, event, computed }) {\n        const { xChannel } = event.channel;\n        const color = computed(\"areaValue\").incrementChannel(xChannel, event.step);\n        context.set(\"value\", color);\n      },\n      decrementAreaXChannel({ context, event, computed }) {\n        const { xChannel } = event.channel;\n        const color = computed(\"areaValue\").decrementChannel(xChannel, event.step);\n        context.set(\"value\", color);\n      },\n      incrementAreaYChannel({ context, event, computed }) {\n        const { yChannel } = event.channel;\n        const color = computed(\"areaValue\").incrementChannel(yChannel, event.step);\n        context.set(\"value\", color);\n      },\n      decrementAreaYChannel({ context, event, computed }) {\n        const { yChannel } = event.channel;\n        const color = computed(\"areaValue\").decrementChannel(yChannel, event.step);\n        context.set(\"value\", color);\n      },\n      setChannelToMax({ context, event }) {\n        const value = context.get(\"value\");\n        const range = value.getChannelRange(event.channel);\n        const color = value.withChannelValue(event.channel, range.maxValue);\n        context.set(\"value\", color);\n      },\n      setChannelToMin({ context, event }) {\n        const value = context.get(\"value\");\n        const range = value.getChannelRange(event.channel);\n        const color = value.withChannelValue(event.channel, range.minValue);\n        context.set(\"value\", color);\n      },\n      focusAreaThumb({ scope }) {\n        raf(() => {\n          getAreaThumbEl(scope)?.focus({ preventScroll: true });\n        });\n      },\n      focusChannelThumb({ event, scope }) {\n        raf(() => {\n          getChannelSliderThumbEl(scope, event.channel)?.focus({ preventScroll: true });\n        });\n      },\n      setInitialFocus({ prop, scope }) {\n        if (!prop(\"openAutoFocus\")) return;\n        raf(() => {\n          const element = getInitialFocus({\n            root: getContentEl(scope),\n            getInitialEl: prop(\"initialFocusEl\")\n          });\n          element?.focus({ preventScroll: true });\n        });\n      },\n      setReturnFocus({ scope }) {\n        raf(() => {\n          getTriggerEl(scope)?.focus({ preventScroll: true });\n        });\n      },\n      syncFormatSelectElement({ context, scope }) {\n        syncFormatSelect(scope, context.get(\"format\"));\n      },\n      invokeOnOpen({ prop, context }) {\n        if (prop(\"inline\")) return;\n        prop(\"onOpenChange\")?.({ open: true, value: context.get(\"value\") });\n      },\n      invokeOnClose({ prop, context }) {\n        if (prop(\"inline\")) return;\n        prop(\"onOpenChange\")?.({ open: false, value: context.get(\"value\") });\n      },\n      toggleVisibility({ prop, event, send }) {\n        send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n      }\n    }\n  }\n});\nfunction syncChannelInputs(scope, currentValue, nextValue) {\n  const channelInputEls = getChannelInputEls(scope);\n  raf(() => {\n    channelInputEls.forEach((inputEl) => {\n      const channel = inputEl.dataset.channel;\n      setElementValue(inputEl, getChannelValue(nextValue || currentValue, channel));\n    });\n  });\n}\nfunction syncFormatSelect(scope, format) {\n  const selectEl = getFormatSelectEl(scope);\n  if (!selectEl) return;\n  raf(() => setElementValue(selectEl, format));\n}\nvar props = createProps()([\n  \"closeOnSelect\",\n  \"dir\",\n  \"disabled\",\n  \"format\",\n  \"defaultFormat\",\n  \"getRootNode\",\n  \"id\",\n  \"ids\",\n  \"initialFocusEl\",\n  \"inline\",\n  \"name\",\n  \"positioning\",\n  \"onFocusOutside\",\n  \"onFormatChange\",\n  \"onInteractOutside\",\n  \"onOpenChange\",\n  \"onPointerDownOutside\",\n  \"onValueChange\",\n  \"onValueChangeEnd\",\n  \"defaultOpen\",\n  \"open\",\n  \"positioning\",\n  \"required\",\n  \"readOnly\",\n  \"value\",\n  \"defaultValue\",\n  \"invalid\",\n  \"openAutoFocus\"\n]);\nvar splitProps = createSplitProps(props);\nvar areaProps = createProps()([\"xChannel\", \"yChannel\"]);\nvar splitAreaProps = createSplitProps(areaProps);\nvar channelProps = createProps()([\"channel\", \"orientation\"]);\nvar splitChannelProps = createSplitProps(channelProps);\nvar swatchTriggerProps = createProps()([\"value\", \"disabled\"]);\nvar splitSwatchTriggerProps = createSplitProps(swatchTriggerProps);\nvar swatchProps = createProps()([\"value\", \"respectAlpha\"]);\nvar splitSwatchProps = createSplitProps(swatchProps);\nvar transparencyGridProps = createProps()([\"size\"]);\nvar splitTransparencyGridProps = createSplitProps(transparencyGridProps);\n\nexport { anatomy, areaProps, channelProps, connect, machine, parse, props, splitAreaProps, splitChannelProps, splitProps, splitSwatchProps, splitSwatchTriggerProps, splitTransparencyGridProps, swatchProps, swatchTriggerProps, transparencyGridProps };\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 colorPicker from \"@zag-js/color-picker\";\nimport type { ColorFormat } from \"@zag-js/color-picker\";\nimport type { Direction } from \"@zag-js/types\";\nimport { VanillaMachine, normalizeProps } from \"@zag-js/vanilla\";\n\nimport {\n  Component,\n  getString,\n  getBoolean,\n  getNumber,\n  generateId,\n  renderPart,\n} from \"../lib\";\nexport class ColorPicker extends Component<colorPicker.Props, colorPicker.Api> {\n  initMachine(props: colorPicker.Props): VanillaMachine<any> {\n    return new VanillaMachine(colorPicker.machine, props);\n  }\n  initApi(): colorPicker.Api {\n    return colorPicker.connect(this.machine.service, normalizeProps);\n  }\n  render() {\n    const parts = [\n      \"root\",\n      \"label\",\n      \"hidden-input\",\n      \"control\",\n      \"trigger\",\n      \"positioner\",\n      \"content\",\n      \"area\",\n      \"area-background\",\n      \"area-thumb\",\n      \"swatch-group\",\n      \"eye-dropper-trigger\",\n    ];\n    for (const part of parts) renderPart(this.el, part, this.api);\n    const items = [\n      \"channel-input\",\n      \"channel-slider\",\n      \"channel-slider-track\",\n      \"channel-slider-thumb\",\n    ];\n    for (const item of items)\n      renderPart(this.el, item, this.api, { channel: \"string\" });\n\n    const swatchTriggers = [\"swatch-trigger\"];\n    for (const trigger of swatchTriggers)\n      renderPart(this.el, trigger, this.api, { value: \"string\" });\n\n    const grids = [\"transparency-grid\"];\n    for (const grid of grids)\n      renderPart(this.el, grid, this.api, { size: \"string\" });\n\n    const swatchOutside = Array.from(\n      this.el.querySelectorAll<HTMLElement>(\"[data-part='swatch']\"),\n    ).filter((el) => !el.closest(\"[data-part='control']\"));\n\n    swatchOutside.forEach((part) => {\n      renderPart(part.parentElement!, \"swatch\", this.api, { value: \"string\" });\n    });\n\n    const swatchInside = Array.from(\n      this.el.querySelectorAll<HTMLElement>(\"[data-part='swatch']\"),\n    ).filter((el) => el.closest(\"[data-part='control']\"));\n\n    swatchInside.forEach((part) => {\n      renderPart(part.parentElement!, \"swatch\", this.api, {\n        value: this.api.value,\n      });\n    });\n  }\n}\nexport function initColorPicker(\n  doc: HTMLElement | Document = document,\n  selector = \".color-picker-js\",\n): void {\n  doc.querySelectorAll<HTMLElement>(selector).forEach((rootEl) => {\n    const directions = [\"ltr\", \"rtl\"] as const;\n    const formats = [\"rgba\", \"hsla\", \"hsba\"] 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    const colorPickerComponent = new ColorPicker(rootEl, {\n      id: generateId(rootEl, \"colorPicker\"),\n      defaultValue:\n        getString(rootEl, \"defaultValue\") !== undefined\n          ? colorPicker.parse(getString(rootEl, \"defaultValue\")!)\n          : undefined,\n      defaultFormat: getString<ColorFormat>(rootEl, \"defaultFormat\", formats),\n      closeOnSelect: getBoolean(rootEl, \"closeOnSelect\"),\n      defaultOpen: getBoolean(rootEl, \"defaultOpen\"),\n      dir: getString<Direction>(rootEl, \"dir\", directions),\n      disabled: getBoolean(rootEl, \"disabled\"),\n      format: getString<ColorFormat>(rootEl, \"format\", formats),\n      invalid: getBoolean(rootEl, \"invalid\"),\n      name: getString(rootEl, \"name\") || generateId(rootEl, \"color\"),\n      open: getBoolean(rootEl, \"open\"),\n      openAutoFocus: getBoolean(rootEl, \"openAutoFocus\"),\n      readOnly: getBoolean(rootEl, \"readOnly\"),\n      required: getBoolean(rootEl, \"required\"),\n      value:\n        getString(rootEl, \"value\") !== undefined\n          ? colorPicker.parse(getString(rootEl, \"value\")!)\n          : undefined,\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 {\n              mainAxis: mainAxis,\n              crossAxis: crossAxis,\n            };\n          }\n          return undefined;\n        })(),\n        sameWidth: getBoolean(rootEl, \"sameWidth\"),\n        overlap: getBoolean(rootEl, \"overlap\"),\n        fitViewport: getBoolean(rootEl, \"fitViewport\"),\n        slide: getBoolean(rootEl, \"slide\"),\n      },\n      onFocusOutside(details) {\n        const eventName = getString(rootEl, \"onFocusOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onFormatChange(details) {\n        const eventName = getString(rootEl, \"onFormatChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onInteractOutside(details) {\n        const eventName = getString(rootEl, \"onInteractOutside\");\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      onPointerDownOutside(details) {\n        const eventName = getString(rootEl, \"onPointerDownOutside\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChange(details) {\n        const eventName = getString(rootEl, \"onValueChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n      onValueChangeEnd(details) {\n        const eventName = getString(rootEl, \"onFocusChange\");\n        if (eventName) {\n          rootEl.dispatchEvent(new CustomEvent(eventName, { detail: details }));\n        }\n      },\n    });\n    colorPickerComponent.init();\n  });\n}\n"],
  "mappings": "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",
  "names": ["createAnatomy", "name", "parts", "values", "isEmpty", "part", "newName", "prev", "toKebabCase", "value", "v", "toArray", "v", "isArrayLike", "value", "isArrayEqual", "a", "b", "i", "isEqual", "keys", "length", "key", "isObjectLike", "v", "isString", "v", "isFunction", "isNull", "hasProp", "obj", "prop", "baseGetTag", "fnToString", "objectCtorString", "isPlainObject", "isObjectLike", "isFrameworkElement", "proto", "Ctor", "isReactElement", "x", "isVueElement", "runIfFn", "a", "identity", "v", "noop", "callAll", "fns", "a", "fn", "tryCatch", "fn", "fallback", "error", "floor", "abs", "round", "min", "max", "pow", "sign", "isNaN", "v", "nan", "mod", "m", "roundValue", "v", "vmin", "step", "round", "nan", "clampValue", "vmax", "min", "max", "getValuePercent", "v", "vmin", "vmax", "nan", "getPercentValue", "p", "step", "clampValue", "roundValue", "roundToStepPrecision", "rv", "ss", "pi", "pw", "pow", "round", "snapValueToStep", "v", "vmin", "vmax", "step", "min2", "max2", "remainder", "snapped", "abs", "sign", "roundToStepPrecision", "isNaN", "stepsInRange", "floor", "largestValidStep", "toFixedNumber", "v", "d", "b", "pow2", "round", "compact", "obj", "isPlainObject", "keys", "key", "filtered", "value", "splitProps", "props", "keys", "rest", "result", "keySet", "ownKeys", "key", "createSplitProps", "_tick", "_tick", "warn", "a", "m", "c", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "generateRGB_R", "orientation", "dir", "zValue", "maskImage", "generateRGB_G", "generateRGB_B", "generateHSL_H", "generateHSL_S", "alphaValue", "generateHSL_L", "generateHSB_H", "generateHSB_S", "generateHSB_B", "getColorAreaGradient", "color", "options", "xChannel", "yChannel", "dirProp", "zChannel", "zMin", "zMax", "background", "isHSL", "isEqualObject", "a", "b", "Color", "channel", "valueToCheck", "minValue", "maxValue", "getValuePercent", "percentToCheck", "step", "percentValue", "getPercentValue", "snapValueToStep", "clone", "clampValue", "xyChannels", "xCh", "c", "yCh", "zCh", "stepSize", "HEX_COLOR_REGEX", "RGB_COLOR_REGEX", "HEX_STARTING_REGEX", "_RGBColor", "red", "green", "blue", "alpha", "colors", "values", "match", "value2", "num", "i", "format", "min", "brightness", "chroma", "saturation", "hue", "HSBColor", "toFixedNumber", "max", "lightness", "HSLColor", "locale", "RGBColor", "HSL_REGEX", "_HSLColor", "m", "h", "s", "l", "n", "mod", "fn", "k", "HSB_REGEX", "_HSBColor", "nativeColors", "makeMap", "str", "map", "list", "val", "nativeColorMap", "parseColor", "result", "error", "normalizeColor", "v", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "clamp", "value", "noop", "isObject", "v", "dataAttr", "guard", "ELEMENT_NODE", "DOCUMENT_NODE", "DOCUMENT_FRAGMENT_NODE", "isHTMLElement", "el", "isObject", "isDocument", "isWindow", "getNodeName", "node", "isHTMLElement", "isRootElement", "isNode", "el", "isObject", "isShadowRoot", "DOCUMENT_FRAGMENT_NODE", "isElementVisible", "el", "isHTMLElement", "isActiveElement", "element", "rootNode", "getActiveElement", "contains", "parent", "child", "isHTMLElement", "rootNode", "isShadowRoot", "next", "getDocument", "el", "isDocument", "isWindow", "getDocumentElement", "getWindow", "getActiveElement", "activeElement", "getParentNode", "node", "getNodeName", "result", "getRootNode", "styleCache", "getComputedStyle", "INTERACTIVE_CONTAINER_ROLE", "isInteractiveContainerRole", "role", "getAriaControls", "element", "isControlledElement", "container", "visitedIds", "checkElement", "searchRoot", "controllingElements", "controller", "controlledIds", "id", "controlledElement", "modal", "isDom", "getPlatform", "pt", "v", "isDom", "getPlatform", "isTouchDevice", "isDom", "isIPhone", "pt", "isIPad", "isMac", "isIos", "isMac", "pt", "getComposedPath", "event", "getEventTarget", "isLeftClick", "isContextMenuEvent", "isMac", "isModifierKey", "isTouchEvent", "event", "keyMap", "rtlKeyMap", "getEventKey", "options", "dir", "orientation", "key", "pageKeys", "arrowKeys", "getEventStep", "event", "getEventPoint", "type", "point", "isTouchEvent", "addDomEvent", "target", "eventName", "handler", "options", "node", "getDescriptor", "el", "options", "type", "property", "proto", "getWindow", "getElementType", "setElementValue", "value", "dispatchInputValueEvent", "el", "options", "value", "bubbles", "win", "getWindow", "setElementValue", "getClosestForm", "el", "isFormElement", "trackFormReset", "callback", "form", "onReset", "e", "trackFieldsetDisabled", "fieldset", "win", "getWindow", "obs", "trackFormControl", "options", "onFieldsetDisabledChange", "onFormReset", "cleanups", "cleanup", "isFrame", "isHTMLElement", "parseTabIndex", "el", "attr", "hasNegativeTabIndex", "el", "parseTabIndex", "getShadowRootForNode", "element", "getShadowRoot", "result", "collectElementsWithShadowDOM", "elements", "filterFn", "allElements", "toProcess", "processed", "positionMap", "i", "processIndex", "shadowRoot", "shadowElements", "focusableSelector", "hostIndex", "insertPosition", "isFocusable", "element", "isHTMLElement", "focusableSelector", "isElementVisible", "getTabbables", "container", "options", "includeContainer", "getShadowRoot", "elements", "focusableSelector", "isTabbable", "tabbableElements", "element", "isFrame", "frameBody", "allElements", "collectElementsWithShadowDOM", "el", "isHTMLElement", "isFocusable", "hasNegativeTabIndex", "getInitialFocus", "options", "root", "getInitialEl", "filter", "enabled", "node", "tabbables", "getTabbables", "AnimationFrame", "_AnimationFrame", "__publicField", "fn", "raf", "frame", "nextTick", "set", "raf2", "fn2", "id", "getNearestOverflowAncestor", "el", "parentNode", "getParentNode", "isRootElement", "getDocument", "isHTMLElement", "isOverflowElement", "OVERFLOW_RE", "nonOverflowValues", "isOverflowElement", "el", "win", "getWindow", "overflow", "overflowX", "overflowY", "display", "getRelativePoint", "point", "element", "left", "top", "width", "height", "offset", "percent", "clamp", "getPercentValue", "options", "dir", "orientation", "inverted", "invertX", "invertY", "state", "userSelect", "elementMap", "disableTextSelectionImpl", "options", "target", "doc", "docNode", "rootEl", "isIos", "restoreTextSelection", "nextTick", "prevUserSelect", "disableTextSelection", "defer", "restOptions", "func", "raf", "v", "cleanups", "node", "fn", "trackPointerMove", "handlers", "onPointerMove", "onPointerUp", "handleMove", "event", "point", "getEventPoint", "distance", "moveBuffer", "handleUp", "addDomEvent", "cleanup", "queryAll", "root", "selector", "query", "setStyle", "el", "style", "noop", "prev", "acc", "key", "visuallyHiddenStyle", "waitForPromise", "promise", "controller", "timeout", "signal", "resolve", "reject", "timeoutId", "result", "error", "waitForElement", "target", "options", "rootNode", "win", "getWindow", "doc", "getDocument", "el", "observer", "el2", "sides", "min", "max", "round", "floor", "createCoords", "v", "oppositeSideMap", "oppositeAlignmentMap", "clamp", "start", "value", "end", "evaluate", "param", "getSide", "placement", "getAlignment", "getOppositeAxis", "axis", "getAxisLength", "yAxisSides", "getSideAxis", "getAlignmentAxis", "getAlignmentSides", "rects", "rtl", "alignment", "alignmentAxis", "length", "mainAlignmentSide", "getOppositePlacement", "getExpandedPlacements", "oppositePlacement", "getOppositeAlignmentPlacement", "lrPlacement", "rlPlacement", "tbPlacement", "btPlacement", "getSideList", "side", "isStart", "getOppositeAxisPlacements", "flipAlignment", "direction", "list", "expandPaddingObject", "padding", "getPaddingObject", "rectToClientRect", "rect", "x", "y", "width", "height", "computeCoordsFromPlacement", "_ref", "placement", "rtl", "reference", "floating", "sideAxis", "getSideAxis", "alignmentAxis", "getAlignmentAxis", "alignLength", "getAxisLength", "side", "getSide", "isVertical", "commonX", "commonY", "commonAlign", "coords", "getAlignment", "computePosition", "config", "strategy", "middleware", "platform", "validMiddleware", "rects", "x", "y", "statefulPlacement", "middlewareData", "resetCount", "i", "name", "fn", "nextX", "nextY", "data", "reset", "detectOverflow", "state", "options", "_await$platform$isEle", "elements", "boundary", "rootBoundary", "elementContext", "altBoundary", "padding", "evaluate", "paddingObject", "getPaddingObject", "element", "clippingClientRect", "rectToClientRect", "rect", "offsetParent", "offsetScale", "elementClientRect", "arrow", "axis", "length", "arrowDimensions", "isYAxis", "minProp", "maxProp", "clientProp", "endDiff", "startDiff", "arrowOffsetParent", "clientSize", "centerToReference", "largestPossiblePadding", "minPadding", "min", "maxPadding", "min$1", "max", "center", "offset", "clamp", "shouldAddOffset", "alignmentOffset", "flip", "options", "state", "_middlewareData$arrow", "_middlewareData$flip", "placement", "middlewareData", "rects", "initialPlacement", "platform", "elements", "checkMainAxis", "checkCrossAxis", "specifiedFallbackPlacements", "fallbackStrategy", "fallbackAxisSideDirection", "flipAlignment", "detectOverflowOptions", "evaluate", "side", "getSide", "initialSideAxis", "getSideAxis", "isBasePlacement", "rtl", "fallbackPlacements", "getOppositePlacement", "getExpandedPlacements", "hasFallbackAxisSideDirection", "getOppositeAxisPlacements", "placements", "overflow", "detectOverflow", "overflows", "overflowsData", "sides", "getAlignmentSides", "_middlewareData$flip2", "_overflowsData$filter", "nextIndex", "nextPlacement", "d", "resetPlacement", "a", "b", "_overflowsData$filter2", "currentSideAxis", "acc", "getSideOffsets", "rect", "isAnySideFullyClipped", "hide", "strategy", "offsets", "originSides", "convertValueToCoords", "state", "options", "placement", "platform", "elements", "rtl", "side", "getSide", "alignment", "getAlignment", "isVertical", "getSideAxis", "mainAxisMulti", "crossAxisMulti", "rawValue", "evaluate", "mainAxis", "crossAxis", "alignmentAxis", "offset", "_middlewareData$offse", "_middlewareData$arrow", "x", "y", "middlewareData", "diffCoords", "shift", "checkMainAxis", "checkCrossAxis", "limiter", "_ref", "detectOverflowOptions", "coords", "overflow", "detectOverflow", "getOppositeAxis", "mainAxisCoord", "crossAxisCoord", "minSide", "maxSide", "min", "max", "clamp", "limitedCoords", "limitShift", "rects", "rawOffset", "computedOffset", "len", "limitMin", "limitMax", "_middlewareData$offse2", "isOriginSide", "size", "_state$middlewareData", "_state$middlewareData2", "apply", "isYAxis", "width", "height", "heightSide", "widthSide", "maximumClippingHeight", "maximumClippingWidth", "overflowAvailableHeight", "overflowAvailableWidth", "noShift", "availableHeight", "availableWidth", "xMin", "xMax", "yMin", "yMax", "nextDimensions", "hasWindow", "getNodeName", "node", "isNode", "getWindow", "_node$ownerDocument", "getDocumentElement", "_ref", "value", "isElement", "isHTMLElement", "isShadowRoot", "invalidOverflowDisplayValues", "isOverflowElement", "element", "overflow", "overflowX", "overflowY", "display", "getComputedStyle", "tableElements", "isTableElement", "topLayerSelectors", "isTopLayer", "selector", "transformProperties", "willChangeValues", "containValues", "isContainingBlock", "elementOrCss", "webkit", "isWebKit", "css", "getContainingBlock", "currentNode", "getParentNode", "isLastTraversableNode", "lastTraversableNodeNames", "getNodeScroll", "result", "getNearestOverflowAncestor", "parentNode", "getOverflowAncestors", "list", "traverseIframes", "_node$ownerDocument2", "scrollableAncestor", "isBody", "win", "frameElement", "getFrameElement", "getCssDimensions", "element", "css", "getComputedStyle", "width", "height", "hasOffset", "isHTMLElement", "offsetWidth", "offsetHeight", "shouldFallback", "round", "unwrapElement", "isElement", "getScale", "domElement", "createCoords", "rect", "$", "x", "y", "noOffsets", "getVisualOffsets", "win", "getWindow", "isWebKit", "shouldAddVisualOffsets", "isFixed", "floatingOffsetParent", "getBoundingClientRect", "includeScale", "isFixedStrategy", "offsetParent", "clientRect", "scale", "visualOffsets", "offsetWin", "currentWin", "currentIFrame", "getFrameElement", "iframeScale", "iframeRect", "left", "top", "rectToClientRect", "getWindowScrollBarX", "leftScroll", "getNodeScroll", "getDocumentElement", "getHTMLOffset", "documentElement", "scroll", "htmlRect", "convertOffsetParentRelativeRectToViewportRelativeRect", "_ref", "elements", "strategy", "topLayer", "isTopLayer", "offsets", "isOffsetParentAnElement", "getNodeName", "isOverflowElement", "offsetRect", "htmlOffset", "getClientRects", "getDocumentRect", "html", "body", "max", "SCROLLBAR_MAX", "getViewportRect", "visualViewport", "visualViewportBased", "windowScrollbarX", "doc", "bodyStyles", "bodyMarginInline", "clippingStableScrollbarWidth", "absoluteOrFixed", "getInnerBoundingClientRect", "getClientRectFromClippingAncestor", "clippingAncestor", "hasFixedPositionAncestor", "stopNode", "parentNode", "getParentNode", "isLastTraversableNode", "getClippingElementAncestors", "cache", "cachedResult", "result", "getOverflowAncestors", "el", "currentContainingBlockComputedStyle", "elementIsFixed", "currentNode", "computedStyle", "currentNodeIsContaining", "isContainingBlock", "ancestor", "getClippingRect", "boundary", "rootBoundary", "clippingAncestors", "firstClippingAncestor", "clippingRect", "accRect", "min", "getDimensions", "getRectRelativeToOffsetParent", "setLeftRTLScrollbarOffset", "isStaticPositioned", "getTrueOffsetParent", "polyfill", "rawOffsetParent", "getOffsetParent", "svgOffsetParent", "isTableElement", "getContainingBlock", "getElementRects", "data", "getOffsetParentFn", "getDimensionsFn", "floatingDimensions", "isRTL", "platform", "rectsAreEqual", "a", "b", "observeMove", "onMove", "io", "timeoutId", "root", "cleanup", "_io", "refresh", "skip", "threshold", "elementRectForRootMargin", "insetTop", "floor", "insetRight", "insetBottom", "insetLeft", "options", "isFirstUpdate", "handleObserve", "entries", "ratio", "autoUpdate", "reference", "floating", "update", "ancestorScroll", "ancestorResize", "elementResize", "layoutShift", "animationFrame", "referenceEl", "ancestors", "cleanupIo", "reobserveFrame", "resizeObserver", "firstEntry", "_resizeObserver", "frameId", "prevRefRect", "frameLoop", "nextRefRect", "_resizeObserver2", "offset", "shift", "flip", "size", "hide", "arrow", "limitShift", "computePosition", "reference", "floating", "options", "cache", "mergedOptions", "platform", "platformWithCache", "createDOMRect", "x", "y", "width", "height", "rect", "getDOMRect", "anchorRect", "getAnchorElement", "anchorElement", "getAnchorRect", "isHTMLElement", "anchor", "toVar", "value", "cssVars", "getSideAxis", "side", "createTransformOriginMiddleware", "opts", "arrowEl", "state", "elements", "middlewareData", "placement", "rects", "axis", "arrowX", "arrowY", "arrowWidth", "arrowHeight", "transformX", "transformY", "shiftY", "halfAnchorHeight", "arrowOffset", "gutter", "sideOffsetValue", "isOverlappingAnchor", "adjacentTransformOrigin", "overlapTransformOrigin", "useOverlap", "rectMiddleware", "shiftArrowMiddleware", "dir", "getPlacementDetails", "placement", "side", "align", "defaultOptions", "roundByDpr", "win", "value", "dpr", "resolveBoundaryOption", "boundary", "getArrowMiddleware", "arrowElement", "doc", "opts", "element", "arrow", "getOffsetMiddleware", "isNull", "offset", "placement", "arrowOffset", "gutter", "mainAxis", "hasAlign", "getPlacementDetails", "shift2", "crossAxis", "compact", "getFlipMiddleware", "flip", "getShiftMiddleware", "shift", "limitShift", "getSizeMiddleware", "size", "elements", "rects", "availableHeight", "availableWidth", "floating", "referenceWidth", "referenceHeight", "hideWhenDetachedMiddleware", "hide", "getAutoUpdateOptions", "getPlacementImpl", "referenceOrVirtual", "anchor", "reference", "getAnchorElement", "options", "arrowEl", "middleware", "shiftArrowMiddleware", "createTransformOriginMiddleware", "rectMiddleware", "strategy", "onComplete", "onPositioned", "updatePosition", "pos", "computePosition", "getWindow", "x", "y", "contentEl", "styles", "getComputedStyle", "update", "autoUpdateOptions", "cancelAutoUpdate", "autoUpdate", "noop", "getPlacement", "referenceOrFn", "floatingOrFn", "defer", "func", "raf", "v", "cleanups", "fn", "ARROW_FLOATING_STYLE", "getPlacementStyles", "sameWidth", "fitViewport", "cssVars", "createGuards", "guards", "params", "str", "guard", "MachineStatus", "MachineStatus2", "INIT_STATE", "createScope", "props", "getRootNode", "getDoc", "getDocument", "getActiveElement", "isActiveElement", "id", "getWindowFrames", "win", "frames", "cb", "i", "frame", "event", "listener", "options", "getParentWindow", "parent", "POINTER_OUTSIDE_EVENT", "FOCUS_OUTSIDE_EVENT", "isComposedPathFocusable", "composedPath", "node", "isHTMLElement", "isFocusable", "isPointerEvent", "isEventPointWithin", "rect", "isPointInRect", "point", "isEventWithinScrollbar", "ancestor", "isScrollableY", "onScrollbarY", "isScrollableX", "onScrollbarX", "trackInteractOutsideImpl", "exclude", "onFocusOutside", "onPointerDownOutside", "onInteractOutside", "defer", "followControlledElements", "doc", "getDocument", "getWindow", "parentWin", "isEventOutside", "target", "contains", "isControlledElement", "triggerEl", "triggerAncestor", "getNearestOverflowAncestor", "nodeAncestor", "pointerdownCleanups", "isInShadowRoot", "isShadowRoot", "onPointerDown", "handler", "clickEvent", "func", "isTouchDevice", "raf", "v", "evt", "getEventTarget", "handler2", "callAll", "fireCustomEvent", "isContextMenuEvent", "fn", "addDomEvent", "cleanups", "timer", "onFocusin", "trackInteractOutside", "nodeOrFn", "el", "type", "init", "trackEscapeKeydown", "node", "fn", "handleKeyDown", "event", "addDomEvent", "getDocument", "LAYER_REQUEST_DISMISS_EVENT", "layerStack", "layer", "index", "highestBlockingIndex", "type", "target", "contains", "branch", "nestedCount", "parent", "addListenerOnce", "fireCustomEvent", "el", "detail", "win", "callback", "originalBodyPointerEvents", "assignPointerEventToLayers", "clearPointerEvent", "disablePointerEventsOutside", "persistentElements", "doc", "cleanups", "promise", "abort", "waitForElement", "node2", "isHTMLElement", "el2", "setStyle", "trackDismissableElementImpl", "options", "warnOnMissingNode", "warn", "onDismiss", "onRequestDismiss", "pointerBlocking", "excludeContainers", "debug", "onPointerDownOutside", "getEventTarget", "onFocusOutside", "onEscapeKeyDown", "exclude", "containers", "_containers", "trackInteractOutside", "trackDismissableElement", "nodeOrFn", "defer", "func", "raf", "v", "isFunction", "createNormalizer", "fn", "_target", "key", "props", "createProps", "anatomy", "createAnatomy", "parts", "getRootId", "ctx", "getLabelId", "getHiddenInputId", "getControlId", "getTriggerId", "getContentId", "getPositionerId", "getFormatSelectId", "getAreaId", "getAreaGradientId", "getAreaThumbId", "getChannelSliderTrackId", "channel", "getChannelSliderThumbId", "getContentEl", "getAreaThumbEl", "getChannelSliderThumbEl", "getFormatSelectEl", "getHiddenInputEl", "getAreaEl", "getAreaValueFromPoint", "point", "dir", "areaEl", "getPercentValue", "getRelativePoint", "getControlEl", "getTriggerEl", "getPositionerEl", "getChannelSliderTrackEl", "getChannelSliderValueFromPoint", "trackEl", "getChannelInputEls", "queryAll", "getChannelDisplayColor", "color", "parseColor", "getChannelValue", "isHSL", "getChannelRange", "minColor", "maxColor", "getSliderBackgroundDirection", "orientation", "getSliderBackground", "props2", "value", "bgDirection", "minValue", "maxValue", "start", "middle", "end", "connect", "service", "normalize", "context", "send", "prop", "computed", "state", "scope", "format", "areaValue", "valueAsString", "disabled", "readOnly", "invalid", "required", "interactive", "dragging", "open", "focused", "getAreaChannels", "channels", "currentPlacement", "popperStyles", "getPlacementStyles", "getSwatchTriggerState", "normalizeColor", "nextOpen", "value2", "locale", "channelValue", "format2", "formatValue", "alphaValue", "dataAttr", "event", "query", "xChannel", "yChannel", "areaStyles", "getColorAreaGradient", "isLeftClick", "isModifierKey", "getEventPoint", "areaGradientStyles", "xPercent", "yPercent", "finalXPercent", "xValue", "yValue", "step", "getEventStep", "exec", "event2", "getEventKey", "size", "normalizedValue", "thumbId", "channelRange", "offset", "isRtl", "finalOffset", "placementStyles", "isTextField", "visuallyHiddenStyle", "swatchState", "respectAlpha", "getNextFormat", "nextFormat", "assertFormat", "formats", "formatRegex", "index", "parse", "colorString", "HEX_REGEX", "isValidHex", "prefixHex", "and", "createGuards", "machine", "bindable", "getContext", "a", "b", "action", "track", "anchorEl", "getPlacement", "data", "trackDismissableElement", "inputEl", "trackFormControl", "trackPointerMove", "type", "disableTextSelection", "win", "sRGBHex", "v", "percent", "channelPercent", "dispatchInputValueEvent", "syncChannelInputs", "currentAlpha", "valueAsNumber", "tryCatch", "parseValue", "current", "range", "raf", "getInitialFocus", "syncFormatSelect", "currentValue", "nextValue", "channelInputEls", "setElementValue", "selectEl", "props", "createProps", "splitProps", "createSplitProps", "areaProps", "splitAreaProps", "channelProps", "splitChannelProps", "swatchTriggerProps", "splitSwatchTriggerProps", "swatchProps", "splitSwatchProps", "transparencyGridProps", "splitTransparencyGridProps", "TRACK_MEMO_SYMBOL", "GET_ORIGINAL_SYMBOL", "getProto", "objectsToTrack", "isObjectToTrack", "obj", "getUntracked", "obj", "isObjectToTrack", "GET_ORIGINAL_SYMBOL", "markToTrack", "mark", "objectsToTrack", "glob", "globalRef", "key", "value", "g", "refSet", "isReactElement", "x", "isVueElement", "isDOMElement", "isElement", "isObject", "canProxy", "isDev", "proxyStateMap", "globalRef", "buildProxyFunction", "objectIs", "newProxy", "target", "handler", "snapCache", "createSnapshot", "version", "cache", "snap", "markToTrack", "key", "value", "refSet", "snapshot", "proxyCache", "versionHolder", "proxyFunction2", "initialObject", "isObject", "found", "listeners", "notifyUpdate", "op", "nextVersion", "listener", "checkVersion", "ensureVersion", "nextCheckVersion", "propProxyStates", "propProxyState", "propVersion", "createPropListener", "prop", "newOp", "addPropListener", "isDev", "remove", "removePropListener", "entry", "addListener", "prevRemove", "baseObject", "proxyObject", "prevValue", "deleted", "receiver", "hasPrevValue", "getUntracked", "nextValue", "canProxy", "proxy", "childProxyState", "proxyState", "desc", "proxyFunction", "subscribe", "callback", "notifyInSync", "promise", "ops", "isListenerActive", "removeListener", "__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "propMap", "caseSensitiveSvgAttrs", "toStyleString", "style", "string", "match", "normalizeProps", "createNormalizer", "props", "acc", "normalizedKey", "prevAttrsMap", "assignableProps", "caseSensitiveSvgAttrs2", "isSvgElement", "node", "getAttributeName", "attrName", "spreadProps", "attrs", "oldAttrs", "attrKeys", "addEvt", "e", "f", "remEvt", "onEvents", "attr", "others", "setup", "teardown", "apply", "oldValue", "evt", "bindable", "initial", "eq", "store", "proxy", "controlled", "nextValue", "prev", "next", "isFunction", "prevValue", "_fn", "defaultValue", "createRefs", "refs", "ref", "VanillaMachine", "machine", "userProps", "state", "values", "tag", "args", "event", "MachineStatus", "currentState", "eventType", "transitions", "transition", "target", "changed", "keys", "strs", "fns", "s", "fn", "warn", "str", "cleanups", "cleanup", "toArray", "t", "result", "isString", "index", "deps", "dep", "isEqual", "identity", "id", "ids", "getRootNode", "runIfFn", "createScope", "prop", "__props", "compact", "context", "ctx", "computed", "item", "unsub", "subscribe", "current", "nextState", "prevState", "INIT_STATE", "cleanup2", "Component", "el", "props", "spreadProps", "node", "attrs", "normalizedAttrs", "attrName", "value", "lowerAttrName", "renderPart", "root", "name", "api", "propsToSend", "camelizedName", "word", "index", "getterName", "parts", "e", "componentRoot", "part", "props", "isPropMap", "prop", "type", "getter", "getString", "getBoolean", "getNumber", "getStringList", "key", "result", "childrenValue", "v", "getString", "element", "attrName", "validValues", "value", "getStringList", "v", "getNumber", "raw", "parsed", "getBoolean", "generateId", "fallbackId", "ColorPicker", "Component", "props", "VanillaMachine", "machine", "connect", "normalizeProps", "parts", "part", "renderPart", "items", "item", "swatchTriggers", "trigger", "grids", "grid", "el", "initColorPicker", "doc", "selector", "rootEl", "directions", "formats", "placements", "strategies", "generateId", "getString", "parse", "getBoolean", "getNumber", "mainAxis", "crossAxis", "details", "eventName"]
}
