{
  "version": 3,
  "sources": ["../../../src/components/accordion/Accordion.ts", "../../../src/states/create-select-state.ts", "../../../src/utils/assert.ts", "../../../src/utils/is-equal.ts", "../../../src/utils/create-dynamic.ts", "../../../src/utils/dynamic-prop.ts", "../../../src/utils/state-props.ts", "../../../src/utils/use-event-listener.ts", "../../../src/components/accordion/AccordionContext.ts", "../../../src/utils/focus-query.ts", "../../../src/utils/namespace.ts", "../../../src/utils/virtual-focus.ts", "../../../src/utils/focus-navigation.ts", "../../../src/utils/focus-navigator.ts", "../../../src/components/accordion/tags.ts", "../../../src/components/accordion/AccordionButton.ts", "../../../src/states/create-select-option-state.ts", "../../../src/components/button/index.ts", "../../../src/components/accordion/AccordionItemContext.ts", "../../../src/components/accordion/AccordionHeader.ts", "../../../src/components/accordion/AccordionItem.ts", "../../../src/components/accordion/AccordionPanel.ts", "../../../src/utils/create-unmountable.ts", "../../../src/components/alert/index.ts", "../../../src/components/alert-dialog/AlertDialog.ts", "../../../src/states/create-disclosure-state.ts", "../../../src/utils/use-focus-start-point.ts", "../../../src/utils/focus-start-point.ts", "../../../src/components/alert-dialog/AlertDialogContext.ts", "../../../src/components/alert-dialog/tags.ts", "../../../src/components/alert-dialog/AlertDialogDescription.ts", "../../../src/components/alert-dialog/AlertDialogOverlay.ts", "../../../src/components/alert-dialog/AlertDialogPanel.ts", "../../../src/components/alert-dialog/AlertDialogTitle.ts", "../../../src/components/checkbox/Checkbox.ts", "../../../src/states/create-check-state.ts", "../../../src/components/checkbox/CheckboxContext.ts", "../../../src/components/checkbox/tags.ts", "../../../src/components/checkbox/CheckboxDescription.ts", "../../../src/components/checkbox/CheckboxIndicator.ts", "../../../src/components/checkbox/CheckboxLabel.ts", "../../../src/components/color-scheme/index.ts", "../../../src/components/combobox/Combobox.ts", "../../../src/states/create-autocomplete-state.ts", "../../../src/utils/create-input-reader.ts", "../../../src/components/combobox/ComboboxContext.ts", "../../../src/components/combobox/tags.ts", "../../../src/components/combobox/ComboboxInput.ts", "../../../src/components/command/tags.ts", "../../../src/components/combobox/ComboboxLabel.ts", "../../../src/components/combobox/ComboboxOption.ts", "../../../src/states/create-autocomplete-option-state.ts", "../../../src/components/combobox/ComboboxOptions.ts", "../../../src/utils/wait-for-transition.ts", "../../../src/components/command/Command.ts", "../../../src/components/command/CommandContext.ts", "../../../src/components/command/CommandInput.ts", "../../../src/components/command/CommandLabel.ts", "../../../src/components/command/CommandOption.ts", "../../../src/components/command/CommandOptions.ts", "../../../src/components/command-bar/CommandBar.ts", "../../../src/components/command-bar/CommandBarContext.ts", "../../../src/components/command-bar/tags.ts", "../../../src/components/command-bar/CommandBarDescription.ts", "../../../src/components/command-bar/CommandBarOverlay.ts", "../../../src/components/command-bar/CommandBarPanel.ts", "../../../src/components/command-bar/CommandBarTitle.ts", "../../../src/components/context-menu/ContextMenu.ts", "../../../src/components/context-menu/ContextMenuContext.ts", "../../../src/components/context-menu/tags.ts", "../../../src/components/context-menu/ContextMenuBoundary.ts", "../../../src/components/context-menu/ContextMenuOverlay.ts", "../../../src/components/context-menu/ContextMenuPanel.ts", "../../../src/components/dialog/Dialog.ts", "../../../src/components/dialog/DialogContext.ts", "../../../src/components/dialog/tags.ts", "../../../src/components/dialog/DialogDescription.ts", "../../../src/components/dialog/DialogOverlay.ts", "../../../src/components/dialog/DialogPanel.ts", "../../../src/components/dialog/DialogTitle.ts", "../../../src/components/disclosure/Disclosure.ts", "../../../src/components/disclosure/DisclosureContext.ts", "../../../src/components/disclosure/tags.ts", "../../../src/components/disclosure/DisclosureButton.ts", "../../../src/components/disclosure/DisclosurePanel.ts", "../../../src/components/feed/Feed.ts", "../../../src/components/feed/FeedContext.ts", "../../../src/components/feed/tags.ts", "../../../src/components/feed/FeedArticle.ts", "../../../src/components/feed/FeedArticleContext.ts", "../../../src/components/feed/FeedArticleDescription.ts", "../../../src/components/feed/FeedArticleLabel.ts", "../../../src/components/feed/FeedContent.ts", "../../../src/components/feed/FeedContentContext.ts", "../../../src/components/feed/FeedLabel.ts", "../../../src/components/listbox/Listbox.ts", "../../../src/components/listbox/ListboxContext.ts", "../../../src/components/listbox/tags.ts", "../../../src/components/listbox/ListboxButton.ts", "../../../src/components/listbox/ListboxLabel.ts", "../../../src/components/listbox/ListboxOption.ts", "../../../src/components/listbox/ListboxOptionsContext.ts", "../../../src/components/listbox/ListboxOptions.ts", "../../../src/utils/create-type-ahead.ts", "../../../src/components/menu/Menu.ts", "../../../src/components/menu/MenuContext.ts", "../../../src/components/menu/tags.ts", "../../../src/components/menu/MenuChild.ts", "../../../src/components/menu/MenuItem.ts", "../../../src/components/popover/Popover.ts", "../../../src/components/popover/PopoverContext.ts", "../../../src/components/popover/tags.ts", "../../../src/components/popover/PopoverButton.ts", "../../../src/components/popover/PopoverOverlay.ts", "../../../src/components/popover/PopoverPanel.ts", "../../../src/components/radio-group/RadioGroup.ts", "../../../src/components/radio-group/RadioGroupContext.ts", "../../../src/components/radio-group/RadioGroupRootContext.ts", "../../../src/components/radio-group/tags.ts", "../../../src/components/radio-group/RadioGroupDescription.ts", "../../../src/components/radio-group/RadioGroupLabel.ts", "../../../src/components/radio-group/RadioGroupOption.ts", "../../../src/components/select/Select.ts", "../../../src/components/select/SelectContext.ts", "../../../src/components/select/tags.ts", "../../../src/components/select/SelectOption.ts", "../../../src/components/tabs/Tab.ts", "../../../src/components/tabs/TabGroupContext.ts", "../../../src/components/tabs/TabListContext.ts", "../../../src/components/tabs/tags.ts", "../../../src/components/tabs/TabGroup.ts", "../../../src/components/tabs/TabList.ts", "../../../src/components/tabs/TabPanel.ts", "../../../src/components/toast/index.ts", "../../../src/components/toggle/index.ts", "../../../src/states/create-toggle-state.ts", "../../../src/components/toolbar/index.ts", "../../../src/components/transition/index.ts", "../../../src/states/create-transition-state.ts", "../../../src/states/create-input-state.ts", "../../../src/utils/Fragment.ts"],
  "sourcesContent": ["import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, createMemo, mergeProps, onCleanup } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  MultipleSelectStateControlledOptions,\n  MultipleSelectStateUncontrolledOptions,\n  SelectStateRenderProps,\n  SingleSelectStateControlledOptions,\n  SingleSelectStateUncontrolledOptions,\n} from '../../states/create-select-state';\nimport {\n  SelectStateProvider,\n  createMultipleSelectState,\n  createSingleSelectState,\n} from '../../states/create-select-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createHasActiveState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { AccordionContext, createAccordionFocusNavigator } from './AccordionContext';\nimport { ACCORDION_TAG } from './tags';\n\nexport type AccordionSingleControlledBaseProps<V> = Prettify<\n  SingleSelectStateControlledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type AccordionSingleControlledProps<\n  V,\n  T extends ValidConstructor = 'div',\n> = HeadlessPropsWithRef<T, AccordionSingleControlledBaseProps<V>>;\n\nexport type AccordionSingleUncontrolledBaseProps<V> = Prettify<\n  SingleSelectStateUncontrolledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type AccordionSingleUncontrolledProps<\n  V,\n  T extends ValidConstructor = 'div',\n> = HeadlessPropsWithRef<T, AccordionSingleUncontrolledBaseProps<V>>;\n\nexport type AccordionMultipleControlledBaseProps<V> = Prettify<\n  MultipleSelectStateControlledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type AccordionMultipleControlledProps<\n  V,\n  T extends ValidConstructor = 'div',\n> = HeadlessPropsWithRef<T, AccordionMultipleControlledBaseProps<V>>;\n\nexport type AccordionMultipleUncontrolledBaseProps<V> = Prettify<\n  MultipleSelectStateUncontrolledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type AccordionMultipleUncontrolledProps<\n  V,\n  T extends ValidConstructor = 'div',\n> = HeadlessPropsWithRef<T, AccordionMultipleUncontrolledBaseProps<V>>;\n\nexport type AccordionProps<V, T extends ValidConstructor = 'div'> =\n  | AccordionSingleControlledProps<V, T>\n  | AccordionSingleUncontrolledProps<V, T>\n  | AccordionMultipleControlledProps<V, T>\n  | AccordionMultipleUncontrolledProps<V, T>;\n\nfunction isAccordionUncontrolled<V, T extends ValidConstructor = 'div'>(\n  props: AccordionProps<V, T>,\n): props is AccordionSingleUncontrolledProps<V, T> | AccordionMultipleUncontrolledProps<V, T> {\n  return 'defaultValue' in props;\n}\n\nfunction isAccordionMultiple<V, T extends ValidConstructor = 'div'>(\n  props: AccordionProps<V, T>,\n): props is AccordionMultipleUncontrolledProps<V, T> | AccordionMultipleControlledProps<V, T> {\n  return !!props.multiple;\n}\n\n/**\n * A set of vertically stacked sections, each of which can be expanded to\n * reveal its content. Wraps a select state, so `defaultValue`/`value` hold the\n * id of the open section, or an array of ids when `multiple` is set.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/accordion.md}\n */\nexport function Accordion<V, T extends ValidConstructor = 'div'>(\n  props: AccordionProps<V, T>,\n): JSX.Element {\n  return createMemo(() => {\n    const state = isAccordionMultiple(props)\n      ? createMultipleSelectState(props)\n      : createSingleSelectState(props);\n    const controller = createAccordionFocusNavigator();\n    const [ref, setRef] = createForwardRef(props);\n\n    createEffect(() => {\n      const current = ref();\n      if (current instanceof HTMLElement) {\n        controller.setRef(current);\n        onCleanup(() => {\n          controller.clearRef();\n        });\n        useEventListener(current, 'keydown', (e) => {\n          if (!state.disabled()) {\n            switch (e.key) {\n              case 'ArrowUp': {\n                e.preventDefault();\n                controller.setPrevChecked(true);\n                break;\n              }\n              case 'ArrowDown': {\n                e.preventDefault();\n                controller.setNextChecked(true);\n                break;\n              }\n              case 'Home': {\n                e.preventDefault();\n                controller.setFirstChecked();\n                break;\n              }\n              case 'End': {\n                e.preventDefault();\n                controller.setLastChecked();\n                break;\n              }\n              default:\n                break;\n            }\n          }\n        });\n        useEventListener(current, 'focusin', (e) => {\n          if (e.target && e.target !== current) {\n            controller.setCurrent(e.target as HTMLElement);\n          }\n        });\n      }\n    });\n\n    return createComponent(AccordionContext.Provider, {\n      value: controller,\n      get children() {\n        return createDynamic(\n          () => props.as ?? ('div' as T),\n          mergeProps(\n            isAccordionUncontrolled(props)\n              ? omitProps(props, [\n                  'as',\n                  'by',\n                  'children',\n                  'defaultValue',\n                  'disabled',\n                  'multiple',\n                  'onChange',\n                  'ref',\n                  'toggleable',\n                ])\n              : omitProps(props, [\n                  'as',\n                  'by',\n                  'children',\n                  'value',\n                  'disabled',\n                  'multiple',\n                  'onChange',\n                  'ref',\n                  'toggleable',\n                ]),\n            ACCORDION_TAG,\n            {\n              ref: setRef,\n              id: controller.getId(),\n            },\n            createDisabledState(() => state.disabled()),\n            createARIADisabledState(() => state.disabled()),\n            createHasSelectedState(() => state.hasSelected()),\n            createHasActiveState(() => state.hasActive()),\n            {\n              get children() {\n                return createComponent(SelectStateProvider, {\n                  state,\n                  get children() {\n                    return props.children;\n                  },\n                });\n              },\n            },\n          ) as DynamicProps<T>,\n        );\n      },\n    });\n  }) as unknown as JSX.Element;\n}\n", "import type { Accessor, JSX } from 'solid-js';\nimport {\n  createComponent,\n  createContext,\n  createMemo,\n  createSignal,\n  untrack,\n  useContext,\n} from 'solid-js';\nimport assert from '../utils/assert';\nimport isEqual from '../utils/is-equal';\nimport type { Ref } from '../utils/types';\n\nexport interface SelectStateProperties<T> {\n  isSelected: (value: T) => boolean;\n  select: (value: T) => void;\n  hasSelected: () => boolean;\n  isActive: (value: T) => boolean;\n  hasActive: () => boolean;\n  focus: (value: T) => void;\n  blur: () => void;\n  disabled: () => boolean;\n}\n\nexport interface SingleSelectStateControlledOptions<T> {\n  multiple?: false;\n  toggleable?: boolean;\n  /** `undefined` means nothing is selected, which is also what `toggleable` produces. */\n  value: T | undefined;\n  onChange?: (value?: T) => void;\n  disabled?: boolean;\n  by?: (a: T, b: T) => boolean;\n}\n\nexport interface SingleSelectStateUncontrolledOptions<T> {\n  multiple?: false;\n  toggleable?: boolean;\n  /** `undefined` starts with nothing selected. */\n  defaultValue: T | undefined;\n  onChange?: (value?: T) => void;\n  disabled?: boolean;\n  by?: (a: T, b: T) => boolean;\n}\n\nexport type SingleSelectStateOptions<T> =\n  | SingleSelectStateControlledOptions<T>\n  | SingleSelectStateUncontrolledOptions<T>;\n\n/**\n * Creates a selection state that holds at most one value, and tracks which\n * value is active. Backs `Accordion`, `Select`, `Listbox`, `RadioGroup` and\n * `TabGroup`.\n *\n * Pass `by` when the values are objects, since the default comparison is by\n * reference.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#select-state}\n */\nexport function createSingleSelectState<T>(\n  options: SingleSelectStateOptions<T>,\n): SelectStateProperties<T> {\n  const [active, setActive] = createSignal<Ref<T>>();\n\n  let selectedValue: Accessor<T | undefined>;\n  let setSelectedValue: (value: T | undefined) => void;\n\n  const equals = options.by ?? isEqual;\n\n  if ('defaultValue' in options) {\n    const [selected, setSelected] = createSignal<T | undefined>(options.defaultValue);\n    selectedValue = selected;\n    setSelectedValue = (value): void => {\n      setSelected(() => value);\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  } else {\n    selectedValue = createMemo(() => options.value);\n    setSelectedValue = (value): void => {\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  }\n\n  const isDisabled = createMemo(() => !!options.disabled);\n\n  return {\n    isSelected(value): boolean {\n      return isEqual(value, selectedValue());\n    },\n    select(value): void {\n      if (!untrack(isDisabled)) {\n        if (options.toggleable && equals(untrack(selectedValue) as T, value)) {\n          setSelectedValue(undefined);\n        } else {\n          setSelectedValue(value);\n        }\n      }\n    },\n    hasSelected(): boolean {\n      return selectedValue() != null;\n    },\n    disabled: isDisabled,\n    hasActive(): boolean {\n      return !!active();\n    },\n    isActive(value): boolean {\n      const ref = active();\n      return ref ? equals(value, ref.value) : false;\n    },\n    focus(value): void {\n      if (!untrack(isDisabled)) {\n        setActive({\n          value,\n        });\n      }\n    },\n    blur(): void {\n      if (!untrack(isDisabled)) {\n        setActive(undefined);\n      }\n    },\n  };\n}\n\nexport interface MultipleSelectStateControlledOptions<T> {\n  multiple: true;\n  toggleable?: boolean;\n  value: T[];\n  onChange?: (value: T[]) => void;\n  disabled?: boolean;\n  by?: (a: T, b: T) => boolean;\n}\n\nexport interface MultipleSelectStateUncontrolledOptions<T> {\n  multiple: true;\n  toggleable?: boolean;\n  defaultValue: T[];\n  onChange?: (value: T[]) => void;\n  disabled?: boolean;\n  by?: (a: T, b: T) => boolean;\n}\n\nexport type MultipleSelectStateOptions<T> =\n  | MultipleSelectStateControlledOptions<T>\n  | MultipleSelectStateUncontrolledOptions<T>;\n\n/**\n * Creates a selection state that holds an array of values, and tracks which\n * value is active. Requires `multiple: true`.\n *\n * Pass `by` when the values are objects, since the default comparison is by\n * reference.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#select-state}\n */\nexport function createMultipleSelectState<T>(\n  options: MultipleSelectStateOptions<T>,\n): SelectStateProperties<T> {\n  const [active, setActive] = createSignal<Ref<T>>();\n\n  let selectedValues: Accessor<T[]>;\n  let setSelectedValues: (value: T[]) => void;\n\n  const equals = options.by ?? isEqual;\n\n  if ('defaultValue' in options) {\n    const [selected, setSelected] = createSignal<T[]>(options.defaultValue);\n    selectedValues = selected;\n    setSelectedValues = (value): void => {\n      setSelected(() => value);\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  } else {\n    selectedValues = createMemo(() => options.value);\n    setSelectedValues = (value): void => {\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  }\n\n  const isDisabled = createMemo(() => !!options.disabled);\n\n  return {\n    isSelected(value): boolean {\n      const values = selectedValues();\n      // Looks up for the value\n      for (let i = 0, len = values.length; i < len; i += 1) {\n        if (equals(value, values[i])) {\n          return true;\n        }\n      }\n      return false;\n    },\n    select(value): void {\n      if (!untrack(isDisabled)) {\n        const newValues: T[] = [];\n        const currentValues = untrack(selectedValues);\n        let hasValue = false;\n        for (let i = 0, len = currentValues.length; i < len; i += 1) {\n          const item = currentValues[i];\n          // Compare ahead\n          const isSame = equals(item, value);\n          // If it's the same then we mark the the target value\n          // as already existing in the array\n          if (isSame) {\n            hasValue = true;\n          }\n          // If it's the same and the list is toggleable\n          // don't push the item\n          if (!(options.toggleable && isSame)) {\n            newValues.push(item);\n          }\n        }\n        // The value doesn't exist, push the new value\n        if (!hasValue) {\n          newValues.push(value);\n        }\n        setSelectedValues(newValues);\n      }\n    },\n    hasSelected: createMemo(() => selectedValues().length > 0),\n    disabled: isDisabled,\n    hasActive: createMemo(() => !!active()),\n    isActive(value): boolean {\n      const ref = active();\n      if (ref) {\n        return equals(value, ref.value);\n      }\n      return false;\n    },\n    focus(value): void {\n      if (!untrack(isDisabled)) {\n        setActive({\n          value,\n        });\n      }\n    },\n    blur(): void {\n      if (!untrack(isDisabled)) {\n        setActive(undefined);\n      }\n    },\n  };\n}\n\nexport interface SelectStateRenderProps<T> {\n  children?: JSX.Element | ((state: SelectStateProperties<T>) => JSX.Element);\n}\n\nexport interface SelectStateProviderProps<T> extends SelectStateRenderProps<T> {\n  state: SelectStateProperties<T>;\n}\n\nconst SelectStateContext = createContext<SelectStateProperties<unknown>>();\n\nexport function SelectStateProvider<T>(props: SelectStateProviderProps<T>): JSX.Element {\n  return createComponent(SelectStateContext.Provider, {\n    // The context erases the value type; every consumer re-applies its own `T`\n    // through `useSelectState`.\n    value: props.state as SelectStateProperties<unknown>,\n    get children() {\n      const current = props.children;\n      if (typeof current === 'function') {\n        return current(props.state);\n      }\n      return current;\n    },\n  });\n}\n\n/**\n * Reads the nearest select state from context. Throws when there is none.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#select-state}\n */\nexport function useSelectState<T>(): SelectStateProperties<T> {\n  const ctx = useContext(SelectStateContext);\n  assert(ctx, new Error('Missing <SelectStateProvider>'));\n  return ctx;\n}\n\n/**\n * Passes the nearest select state to a render prop. A function child is\n * treated as a render prop only when it declares exactly one parameter.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#select-state}\n */\nexport function SelectStateChild<T>(props: SelectStateRenderProps<T>): JSX.Element {\n  const state = useSelectState<T>();\n  return createMemo(() => {\n    const current = props.children;\n    if (typeof current === 'function' && current.length === 1) {\n      return createMemo(() => current(state));\n    }\n    return current;\n  }) as unknown as JSX.Element;\n}\n", "export default function assert(cond: unknown, error: Error): asserts cond {\n  if (!cond) {\n    throw error;\n  }\n}\n", "// Object.is is too slow\n// === is too inaccurate\nexport default function isEqual(a: unknown, b: unknown): boolean {\n  return a === b || (a !== a && b !== b);\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { Dynamic } from 'solid-js/web';\nimport type { DynamicProps, ValidConstructor } from './dynamic-prop';\n\n// This is just a shorthand for creating dynamic components\nexport default function createDynamic<T extends ValidConstructor>(\n  source: () => T,\n  props: DynamicProps<T>,\n): JSX.Element {\n  return createComponent(\n    Dynamic,\n    mergeProps(\n      {\n        get component() {\n          return source();\n        },\n      },\n      props,\n    ) as any,\n  );\n}\n", "import type { JSX, Signal } from 'solid-js';\nimport { createEffect, createSignal } from 'solid-js';\nimport type { OmitAndMerge } from './types';\n\nexport type ValidElements = keyof JSX.IntrinsicElements;\nexport type ValidComponent<P> = (props: P) => JSX.Element;\nexport type ValidConstructor = ValidElements | ValidComponent<any> | (string & {});\n\nexport type DynamicProps<T extends ValidConstructor> = T extends ValidElements\n  ? JSX.IntrinsicElements[T]\n  : T extends ValidComponent<infer U>\n    ? U\n    : Record<string, unknown>;\n\ntype UnboxIntrinsicElements<T> = T extends JSX.HTMLAttributes<infer U> ? U : never;\n\ntype RefCallback<T> = (el: T) => void;\ntype RefField<T> = T | RefCallback<T>;\n\ntype UnboxComponentProp<U> = U extends { ref: infer X } ? X : never;\n\nexport type DynamicNode<T extends ValidConstructor> = T extends ValidElements\n  ? UnboxIntrinsicElements<JSX.IntrinsicElements[T]>\n  : T extends ValidComponent<infer U>\n    ? UnboxComponentProp<U>\n    : never;\n\n// Just a dynamic way to make a `ref` property\n// based on the constructor\nexport interface WithRef<T extends ValidConstructor> {\n  ref?: RefField<DynamicNode<T>>;\n}\n\nexport interface DynamicComponent<T extends ValidConstructor> {\n  as?: T;\n}\n\nexport interface DynamicComponentWithRef<T extends ValidConstructor> extends WithRef<T> {\n  as?: T;\n}\n\nexport type HeadlessProps<T extends ValidConstructor, V = unknown> = OmitAndMerge<\n  V & DynamicComponent<T>,\n  DynamicProps<T>\n>;\n\nexport type HeadlessPropsWithRef<T extends ValidConstructor, V = unknown> = OmitAndMerge<\n  V & DynamicComponentWithRef<T>,\n  DynamicProps<T>\n>;\n\nfunction isRefFunction<U extends ValidConstructor>(\n  callback?: RefField<DynamicNode<U>>,\n): callback is RefCallback<DynamicNode<U>> {\n  return typeof callback === 'function';\n}\n\n// `props.ref` could have been used however it doesn't enforce\n// proper timing. We want to make sure that `ref` is called in\n// a way that it behaves the same way as if it were called\n// natively on an element (which runs in the same scope as the component)\n// This is useful if the ref function itself has ownership-based calls\n// like createEffect\nexport function createForwardRef<U extends ValidConstructor>(\n  props: WithRef<U>,\n): Signal<DynamicNode<U> | undefined> {\n  const [ref, setRef] = createSignal<DynamicNode<U>>();\n\n  createEffect(() => {\n    const current = ref();\n    // Technically Solid compiles refs on components into\n    // a function, despite the fact that its type definition\n    // says that it is either a function or the ref type\n    if (current && 'ref' in props && isRefFunction(props.ref)) {\n      props.ref(current);\n    }\n  });\n\n  return [ref, setRef];\n}\n", "type Booleanish = '' | undefined;\n\nfunction toBooleanish(value?: boolean): Booleanish {\n  return value ? '' : undefined;\n}\n\n/**\n * ARIA states\n */\n\ninterface ARIADisabledProps {\n  disabled?: boolean;\n  'aria-disabled'?: boolean;\n}\n\nexport function createARIADisabledState(disabled: () => boolean | undefined): ARIADisabledProps {\n  return {\n    get disabled(): boolean | undefined {\n      return disabled();\n    },\n    get 'aria-disabled'(): boolean | undefined {\n      return disabled();\n    },\n  };\n}\n\ninterface ARIAExpandedProps {\n  'aria-expanded'?: boolean;\n}\n\nexport function createARIAExpandedState(expanded: () => boolean | undefined): ARIAExpandedProps {\n  return {\n    get 'aria-expanded'(): boolean | undefined {\n      return expanded();\n    },\n  };\n}\n\ninterface ARIACheckedProps {\n  'aria-checked': boolean | 'mixed';\n}\n\nexport function createARIACheckedState(checked: () => boolean | undefined): ARIACheckedProps {\n  return {\n    get 'aria-checked'(): boolean | 'mixed' {\n      return checked() ?? 'mixed';\n    },\n  };\n}\ninterface ARIASelectedProps {\n  'aria-selected': boolean;\n}\n\nexport function createARIASelectedState(selected: () => boolean): ARIASelectedProps {\n  return {\n    get 'aria-selected'(): boolean {\n      return selected();\n    },\n  };\n}\n\ninterface ARIAPressedProps {\n  'aria-pressed': boolean;\n}\n\nexport function createARIAPressedState(pressed: () => boolean): ARIAPressedProps {\n  return {\n    get 'aria-pressed'(): boolean {\n      return pressed();\n    },\n  };\n}\n\n/**\n * Terracotta States\n */\n\ninterface DisabledProps {\n  'tc-disabled'?: Booleanish;\n}\n\nexport function createDisabledState(disabled: () => boolean | undefined): DisabledProps {\n  return {\n    get 'tc-disabled'(): Booleanish {\n      return toBooleanish(disabled());\n    },\n  };\n}\n\ninterface ExpandedProps {\n  'tc-expanded'?: Booleanish;\n}\n\nexport function createExpandedState(expanded: () => boolean | undefined): ExpandedProps {\n  return {\n    get 'tc-expanded'(): Booleanish {\n      return toBooleanish(expanded());\n    },\n  };\n}\n\ninterface CheckedProps {\n  'tc-checked': Booleanish | 'mixed';\n}\n\nexport function createCheckedState(isChecked: () => boolean | undefined): CheckedProps {\n  return {\n    get 'tc-checked'(): Booleanish | 'mixed' {\n      const result = isChecked();\n      return result == null ? 'mixed' : toBooleanish(result);\n    },\n  };\n}\n\ninterface SelectedProps {\n  'tc-selected': Booleanish;\n}\n\nexport function createSelectedState(isSelected: () => boolean): SelectedProps {\n  return {\n    get 'tc-selected'(): Booleanish {\n      return toBooleanish(isSelected());\n    },\n  };\n}\n\ninterface ActiveProps {\n  'tc-active': Booleanish;\n}\n\nexport function createActiveState(isActive: () => boolean): ActiveProps {\n  return {\n    get 'tc-active'(): Booleanish {\n      return toBooleanish(isActive());\n    },\n  };\n}\n\ninterface MatchesProps {\n  'tc-matches': Booleanish;\n}\n\nexport function createMatchesState(matches: () => boolean): MatchesProps {\n  return {\n    get 'tc-matches'(): Booleanish {\n      return toBooleanish(matches());\n    },\n  };\n}\n\ninterface HasSelectedProps {\n  'tc-has-selected': Booleanish;\n}\n\nexport function createHasSelectedState(hasSelected: () => boolean): HasSelectedProps {\n  return {\n    get 'tc-has-selected'(): Booleanish {\n      return toBooleanish(hasSelected());\n    },\n  };\n}\n\ninterface HasActiveProps {\n  'tc-has-active': Booleanish;\n}\n\nexport function createHasActiveState(hasActive: () => boolean): HasActiveProps {\n  return {\n    get 'tc-has-active'(): Booleanish {\n      return toBooleanish(hasActive());\n    },\n  };\n}\n\ninterface HasQueryProps {\n  'tc-has-query': Booleanish;\n}\n\nexport function createHasQueryState(hasQuery: () => boolean): HasQueryProps {\n  return {\n    get 'tc-has-query'(): Booleanish {\n      return toBooleanish(hasQuery());\n    },\n  };\n}\n\ninterface PressedProps {\n  'tc-pressed': Booleanish;\n}\n\nexport function createPressedState(pressed: () => boolean): PressedProps {\n  return {\n    get 'tc-pressed'(): Booleanish {\n      return toBooleanish(pressed());\n    },\n  };\n}\n", "import { onCleanup } from 'solid-js';\n\nfunction useEventListener<K extends keyof HTMLElementEventMap>(\n  node: HTMLElement,\n  type: K,\n  listener: (ev: HTMLElementEventMap[K]) => void,\n  options?: boolean | AddEventListenerOptions,\n): void;\nfunction useEventListener<K extends keyof WindowEventMap>(\n  node: Window,\n  type: K,\n  listener: (ev: WindowEventMap[K]) => void,\n  options?: boolean | AddEventListenerOptions,\n): void;\nfunction useEventListener<K extends keyof DocumentEventMap>(\n  node: Document,\n  type: K,\n  listener: (ev: DocumentEventMap[K]) => void,\n  options?: boolean | AddEventListenerOptions,\n): void;\nfunction useEventListener(\n  node: HTMLElement | Window | Document,\n  type: string,\n  listener: EventListenerOrEventListenerObject,\n  options?: boolean | AddEventListenerOptions,\n): void {\n  node.addEventListener(type, listener, options);\n  onCleanup(() => {\n    node.removeEventListener(type, listener, options);\n  });\n}\n\nexport default useEventListener;\n", "import { createContext, createUniqueId, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\nimport FocusNavigator from '../../utils/focus-navigator';\n\nexport const AccordionContext = createContext<FocusNavigator>();\n\n/**\n * Reads the nearest `Accordion`'s internal context, which holds the focus\n * navigator shared by its buttons. Throws when called outside an `Accordion`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/accordion.md}\n */\nexport function useAccordionContext(componentName: string): FocusNavigator {\n  const context = useContext(AccordionContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Accordion>`));\n  return context;\n}\n\nexport function createAccordionFocusNavigator(): FocusNavigator {\n  return new FocusNavigator(createUniqueId());\n}\n", "// A close approximation of the elements the browser lets the user tab to.\n// It cannot be exact — focusability also depends on layout and on the\n// browser's own idea of what is interactive — but the cases below are the ones\n// that come up in practice.\nconst QUERY = [\n  'a[href]',\n  'area[href]',\n  // A hidden input is never focusable, no matter what else it carries.\n  'input:not([disabled]):not([type=\"hidden\"])',\n  'select:not([disabled])',\n  'textarea:not([disabled])',\n  'button:not([disabled])',\n  // The first `summary` of a `details` is focusable. Finding out which one that\n  // is costs more than it saves, so every `summary` is offered.\n  'summary',\n  'iframe',\n  'audio[controls]',\n  'video[controls]',\n  '[tabindex]:not([tabindex=\"-1\"])',\n  // `[contenteditable]` on its own would also match `contenteditable=\"false\"`,\n  // which is explicitly not editable and not focusable.\n  '[contenteditable=\"\"]',\n  '[contenteditable=\"true\"]',\n].join(', ');\n\n/**\n * `hidden` removes an element from the layout and `inert` takes it out of the\n * tab order and the accessibility tree, and both apply to the whole subtree\n * underneath. Reading the attributes rather than the properties sees them\n * whichever way they were set, since both are reflected.\n */\nfunction blocksFocus(node: Element): boolean {\n  return node.hasAttribute('inert') || node.hasAttribute('hidden');\n}\n\n/**\n * Whether anything between the node and the document root takes it out of the\n * tab order. The walk has to run past the element the query started from: a\n * panel is often the child of the thing that hides it, such as a `Transition`\n * that marks itself `inert` while it leaves.\n *\n * Results are cached per call, so a subtree of many elements pays for each of\n * its shared ancestors once.\n */\nfunction isBlocked(node: Element, cache: Map<Element, boolean>): boolean {\n  const chain: Element[] = [];\n  let current: Element | null = node;\n  let blocked = false;\n\n  while (current) {\n    const cached = cache.get(current);\n    if (cached !== undefined) {\n      blocked = cached;\n      break;\n    }\n    chain.push(current);\n    if (blocksFocus(current)) {\n      blocked = true;\n      break;\n    }\n    current = current.parentElement;\n  }\n\n  for (let i = 0, len = chain.length; i < len; i += 1) {\n    cache.set(chain[i], blocked);\n  }\n\n  return blocked;\n}\n\n/**\n * Whether the element is hidden by CSS — `display: none` anywhere above it,\n * `visibility: hidden`, or a collapsed `content-visibility`.\n *\n * `checkVisibility` answers all of that in one call the browser can serve from\n * whatever it already knows. Reading computed styles instead would mean a\n * lookup for the element and every one of its ancestors, on a path that runs\n * on each arrow key. Where the method is missing the check is skipped rather\n * than emulated: what it would catch is content the author hid themselves, and\n * anything Terracotta hides carries `inert` or `hidden` regardless.\n */\nfunction isVisible(node: Element): boolean {\n  return typeof node.checkVisibility === 'function' ? node.checkVisibility() : true;\n}\n\nexport default function getFocusableElements(\n  node: HTMLElement,\n  filter?: HTMLElement,\n): HTMLElement[] {\n  const nodes = node.querySelectorAll(QUERY);\n  const replicated: Element[] = [];\n  const cache = new Map<Element, boolean>();\n\n  for (let i = 0, len = nodes.length; i < len; i += 1) {\n    const current = nodes[i];\n    if (!filter?.contains(current) && isVisible(current) && !isBlocked(current, cache)) {\n      replicated.push(current);\n    }\n  }\n\n  return replicated as HTMLElement[];\n}\n", "export const DATA_SET_NAMESPACE = 'tc';\n\nexport const DISABLED_NODE = `[${DATA_SET_NAMESPACE}-disabled]`;\nexport const SELECTED_NODE = `[${DATA_SET_NAMESPACE}-selected]`;\nexport const CHECKED_NODE = `[${DATA_SET_NAMESPACE}-checked]`;\nexport const MATCHES_NODE = `[${DATA_SET_NAMESPACE}-matches]`;\n\ntype TerracottaTag = {\n  [key in `${typeof DATA_SET_NAMESPACE}-${string}`]: string;\n};\n\nexport function createTag(tag: string): TerracottaTag {\n  return {\n    [`${DATA_SET_NAMESPACE}-${tag}`]: '',\n  };\n}\n", "import { onCleanup } from 'solid-js';\n\ntype FocusListener = (el: HTMLElement) => void;\n\nconst LISTENERS = new Set<FocusListener>();\n\nexport function useVirtualFocus(listener: FocusListener): void {\n  LISTENERS.add(listener);\n\n  onCleanup(() => {\n    LISTENERS.delete(listener);\n  });\n}\n\n// This is just a way to emulate focus without actually losing the focused element\n// This is useful in combination with `aria-activedescendant`\n// References\n// https://www.w3.org/WAI/GL/wiki/Using_aria-activedescendant_to_allow_changes_in_focus_within_widgets_to_be_communicated_to_Assistive_Technology\n// https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-activedescendant\nexport function focusVirtually(el: HTMLElement): void {\n  for (const listener of LISTENERS.keys()) {\n    listener(el);\n  }\n}\n", "import getFocusableElements from './focus-query';\nimport { DISABLED_NODE } from './namespace';\nimport { focusVirtually } from './virtual-focus';\n\nconst enum Direction {\n  Next = 1,\n  Prev = -1,\n}\n\nfunction isFocusable(el: HTMLElement): boolean {\n  return !el.matches(DISABLED_NODE);\n}\n\n// Gets the next focusable element\nfunction getNextFocusable(\n  nodes: HTMLElement[] | NodeListOf<HTMLElement>,\n  anchor: number,\n  direction: Direction,\n  loop: boolean,\n): HTMLElement | undefined {\n  let current = anchor + direction;\n  if (loop) {\n    if (direction === Direction.Next && current === nodes.length) {\n      current = 0;\n    }\n    if (direction === Direction.Prev && current === -1) {\n      current = nodes.length - 1;\n    }\n    while (anchor !== current) {\n      if (isFocusable(nodes[current])) {\n        return nodes[current];\n      }\n      current += direction;\n      if (direction === Direction.Next && current >= nodes.length) {\n        current = 0;\n      }\n      if (direction === Direction.Prev && current < 0) {\n        current = nodes.length - 1;\n      }\n    }\n    return undefined;\n  }\n  while (current >= 0 && current < nodes.length) {\n    if (isFocusable(nodes[current])) {\n      return nodes[current];\n    }\n    current += direction;\n  }\n  return undefined;\n}\n\nexport function focusNode(\n  node: HTMLElement | undefined,\n  virtual: boolean,\n): HTMLElement | undefined {\n  if (node) {\n    if (virtual) {\n      focusVirtually(node);\n    } else {\n      node.focus();\n    }\n  }\n  return node;\n}\n\nexport function focusNext(\n  nodes: HTMLElement[] | NodeListOf<HTMLElement>,\n  targetNode: HTMLElement,\n  loop: boolean,\n  virtual: boolean,\n): HTMLElement | undefined {\n  for (let i = 0, len = nodes.length; i < len; i += 1) {\n    if (targetNode === nodes[i] || nodes[i].contains(targetNode)) {\n      return focusNode(getNextFocusable(nodes, i, Direction.Next, loop), virtual);\n    }\n  }\n  return undefined;\n}\n\nexport function focusPrev(\n  nodes: HTMLElement[] | NodeListOf<HTMLElement>,\n  targetNode: HTMLElement,\n  loop: boolean,\n  virtual: boolean,\n): HTMLElement | undefined {\n  for (let i = 0, len = nodes.length; i < len; i += 1) {\n    if (nodes[i].contains(targetNode)) {\n      return focusNode(getNextFocusable(nodes, i, Direction.Prev, loop), virtual);\n    }\n  }\n  return undefined;\n}\n\nexport function focusFirst(\n  nodes: HTMLElement[] | NodeListOf<HTMLElement>,\n  virtual: boolean,\n): HTMLElement | undefined {\n  if (nodes.length) {\n    return focusNode(getNextFocusable(nodes, -1, Direction.Next, false), virtual);\n  }\n  return undefined;\n}\n\nexport function focusLast(\n  nodes: HTMLElement[] | NodeListOf<HTMLElement>,\n  virtual: boolean,\n): HTMLElement | undefined {\n  if (nodes.length) {\n    return focusNode(getNextFocusable(nodes, nodes.length, Direction.Prev, false), virtual);\n  }\n  return undefined;\n}\n\nexport function focusMatch(\n  nodes: HTMLElement[] | NodeListOf<HTMLElement>,\n  character: string,\n  virtual: boolean,\n): HTMLElement | undefined {\n  const lower = character.toLowerCase();\n  for (let i = 0, l = nodes.length; i < l; i += 1) {\n    const content = nodes[i].textContent;\n    if (content.toLowerCase().startsWith(lower)) {\n      return focusNode(nodes[i], virtual);\n    }\n  }\n  return undefined;\n}\n\nexport function lockFocus(\n  ref: HTMLElement,\n  reverse: boolean,\n  virtual: boolean,\n): HTMLElement | undefined {\n  const nodes = getFocusableElements(ref);\n  if (reverse) {\n    if (!(document.activeElement && ref.contains(document.activeElement))) {\n      return focusLast(nodes, virtual);\n    }\n    return focusPrev(nodes, document.activeElement as HTMLElement, true, virtual);\n  }\n  if (!(document.activeElement && ref.contains(document.activeElement))) {\n    return focusFirst(nodes, virtual);\n  }\n  return focusNext(nodes, document.activeElement as HTMLElement, true, virtual);\n}\n", "import {\n  focusFirst,\n  focusLast,\n  focusMatch,\n  focusNext,\n  focusNode,\n  focusPrev,\n} from './focus-navigation';\nimport { DATA_SET_NAMESPACE, DISABLED_NODE } from './namespace';\n\nconst OWNER = `${DATA_SET_NAMESPACE}-owner` as const;\n\nfunction queryNodes(el: Element, ownerID: string, condition = ''): NodeListOf<HTMLElement> {\n  // We only query nodes that are:\n  // - owned by the root component via ownerID\n  // - node isn't disabled\n  // - extra condition\n  const query = `[${OWNER}=\"${ownerID}\"]:not(${DISABLED_NODE})${condition}`;\n  const nodes = el.querySelectorAll<HTMLElement>(query);\n  return nodes;\n}\n\ntype OwnerAttribute = {\n  [key in typeof OWNER]: string;\n};\n\nexport function createOwnerAttribute(ownerID: string): OwnerAttribute {\n  return {\n    [OWNER]: ownerID,\n  };\n}\n\nexport interface FocusNavigatorOptions {\n  virtual: boolean;\n  base: string;\n}\n\nexport default class FocusNavigator {\n  private readonly ownerID: string;\n\n  private readonly options: FocusNavigatorOptions;\n\n  private internalRef?: HTMLElement;\n\n  private current: HTMLElement | undefined;\n\n  constructor(ownerID: string, options: Partial<FocusNavigatorOptions> = {}) {\n    this.ownerID = ownerID;\n    this.options = {\n      virtual: options.virtual ?? false,\n      base: options.base ?? '',\n    };\n  }\n\n  setRef(ref: HTMLElement): void {\n    this.internalRef = ref;\n  }\n\n  clearRef(): void {\n    this.internalRef = undefined;\n  }\n\n  private query(ref: HTMLElement, condition = ''): NodeListOf<HTMLElement> {\n    return queryNodes(ref, this.ownerID, `${this.options.base}${condition}`);\n  }\n\n  setCurrent(node: HTMLElement): void {\n    this.current = node;\n  }\n\n  setChecked(node: HTMLElement): void {\n    this.current = focusNode(node, this.options.virtual);\n  }\n\n  setNextChecked(loop: boolean): void {\n    if (this.internalRef instanceof HTMLElement) {\n      // Nothing is current when the effect that would have set it ran before\n      // the popup element existed. Start from the top rather than throwing, so\n      // the very first arrow key still moves.\n      if (!this.current) {\n        this.setFirstChecked();\n        return;\n      }\n      const current = focusNext(\n        this.query(this.internalRef),\n        this.current,\n        loop,\n        this.options.virtual,\n      );\n      if (current) {\n        this.current = current;\n      }\n    }\n  }\n\n  setPrevChecked(loop: boolean): void {\n    if (this.internalRef instanceof HTMLElement) {\n      // As in `setNextChecked`, but arriving from the other end.\n      if (!this.current) {\n        this.setLastChecked();\n        return;\n      }\n      const current = focusPrev(\n        this.query(this.internalRef),\n        this.current,\n        loop,\n        this.options.virtual,\n      );\n      if (current) {\n        this.current = current;\n      }\n    }\n  }\n\n  setFirstChecked(condition = ''): void {\n    if (this.internalRef instanceof HTMLElement) {\n      const current = focusFirst(this.query(this.internalRef, condition), this.options.virtual);\n      if (current) {\n        this.current = current;\n      }\n    }\n  }\n\n  setLastChecked(condition = ''): void {\n    if (this.internalRef instanceof HTMLElement) {\n      const current = focusLast(this.query(this.internalRef, condition), this.options.virtual);\n      if (current) {\n        this.current = current;\n      }\n    }\n  }\n\n  setFirstMatch(character: string): void {\n    if (this.internalRef instanceof HTMLElement) {\n      const current = focusMatch(this.query(this.internalRef), character, this.options.virtual);\n      if (current) {\n        this.current = current;\n      }\n    }\n  }\n\n  getId(): string {\n    return this.ownerID;\n  }\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const ACCORDION_TAG = createTag('accordion');\nexport const ACCORDION_BUTTON_TAG = createTag('accordion-button');\nexport const ACCORDION_HEADER_TAG = createTag('accordion-header');\nexport const ACCORDION_ITEM_TAG = createTag('accordion-item');\nexport const ACCORDION_PANEL_TAG = createTag('accordion-panel');\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { SelectOptionStateRenderProps } from '../../states/create-select-option-state';\nimport {\n  SelectOptionStateChild,\n  useSelectOptionState,\n} from '../../states/create-select-option-state';\nimport type { HeadlessPropsWithRef, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createOwnerAttribute } from '../../utils/focus-navigator';\nimport {\n  createARIADisabledState,\n  createARIAExpandedState,\n  createActiveState,\n  createDisabledState,\n  createExpandedState,\n  createSelectedState,\n} from '../../utils/state-props';\nimport type { OmitAndMerge } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport { useAccordionContext } from './AccordionContext';\nimport { useAccordionItemContext } from './AccordionItemContext';\nimport { ACCORDION_BUTTON_TAG } from './tags';\n\nexport type AccordionButtonProps<T extends ValidConstructor = 'button'> = HeadlessPropsWithRef<\n  T,\n  OmitAndMerge<SelectOptionStateRenderProps, ButtonProps<T>>\n>;\n\n/**\n * The control that expands and collapses its `AccordionItem`. Carries `aria-\n * expanded` and `aria-controls`, and takes part in the accordion's arrow-key\n * navigation.\n *\n * Renders a `<button>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/accordion.md}\n */\nexport function AccordionButton<T extends ValidConstructor = 'button'>(\n  props: AccordionButtonProps<T>,\n): JSX.Element {\n  const rootContext = useAccordionContext('AccordionButton');\n  const itemContext = useAccordionItemContext('AccordionButton');\n  const state = useSelectOptionState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  const isDisabled = (): boolean | undefined => state.disabled() || props.disabled;\n\n  createEffect(() => {\n    const current = internalRef();\n\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        if (!isDisabled()) {\n          state.select();\n        }\n      });\n      useEventListener(current, 'focus', () => {\n        if (!isDisabled()) {\n          state.focus();\n        }\n      });\n      useEventListener(current, 'blur', () => {\n        if (!isDisabled()) {\n          state.blur();\n        }\n      });\n    }\n  });\n\n  return createComponent(\n    Button,\n    mergeProps(\n      omitProps(props, ['children', 'ref', 'disabled']),\n      ACCORDION_BUTTON_TAG,\n      {\n        id: itemContext.buttonID,\n        ref: setInternalRef,\n        get 'aria-controls'() {\n          return state.isSelected() ? itemContext.panelID : undefined;\n        },\n      },\n      createOwnerAttribute(rootContext.getId()),\n      createDisabledState(isDisabled),\n      createARIADisabledState(isDisabled),\n      createSelectedState(() => state.isSelected()),\n      createExpandedState(() => state.isSelected()),\n      createARIAExpandedState(() => state.isSelected()),\n      createActiveState(() => state.isActive()),\n      {\n        get children() {\n          return createComponent(SelectOptionStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as ButtonProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createContext, createMemo, untrack, useContext } from 'solid-js';\nimport assert from '../utils/assert';\nimport { useSelectState } from './create-select-state';\n\nexport interface SelectOptionStateOptions<T> {\n  value: T;\n  disabled?: boolean;\n}\n\nexport interface SelectOptionStateProperties {\n  isSelected: () => boolean;\n  select: () => void;\n  isActive: () => boolean;\n  focus: () => void;\n  blur: () => void;\n  disabled: () => boolean;\n}\n\n/**\n * Creates one option's view of the nearest select state, so the option can ask\n * whether it is selected or active without knowing about the others.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#select-option-state}\n */\nexport function createSelectOptionState<T>(\n  options: SelectOptionStateOptions<T>,\n): SelectOptionStateProperties {\n  const state = useSelectState<T>();\n  // `disabled` is optional, so it is coerced before the logical OR: `??` would\n  // wrongly stop at an explicit `false` instead of falling back to the parent.\n  const isDisabled = createMemo(() => !!options.disabled || state.disabled());\n  const isActive = createMemo(() => state.isActive(options.value));\n  return {\n    isSelected: createMemo(() => state.isSelected(options.value)),\n    isActive,\n    select(): void {\n      if (!untrack(isDisabled)) {\n        state.select(options.value);\n      }\n    },\n    focus(): void {\n      if (!untrack(isDisabled)) {\n        state.focus(options.value);\n      }\n    },\n    blur(): void {\n      if (!untrack(isDisabled) && isActive()) {\n        state.blur();\n      }\n    },\n    disabled: isDisabled,\n  };\n}\n\nexport interface SelectOptionStateRenderProps {\n  children?: JSX.Element | ((state: SelectOptionStateProperties) => JSX.Element);\n}\n\nexport interface SelectOptionStateProviderProps extends SelectOptionStateRenderProps {\n  state: SelectOptionStateProperties;\n}\n\nconst SelectOptionStateContext = createContext<SelectOptionStateProperties>();\n\nexport function SelectOptionStateProvider(props: SelectOptionStateProviderProps): JSX.Element {\n  return createComponent(SelectOptionStateContext.Provider, {\n    value: props.state,\n    get children() {\n      const current = props.children;\n      if (typeof current === 'function') {\n        return current(props.state);\n      }\n      return current;\n    },\n  });\n}\n\n/**\n * Reads the nearest select option state from context. Throws when there is\n * none.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#select-option-state}\n */\nexport function useSelectOptionState(): SelectOptionStateProperties {\n  const ctx = useContext(SelectOptionStateContext);\n  assert(ctx, new Error('Missing <SelectOptionStateProvider>'));\n  return ctx;\n}\n\n/**\n * Passes the nearest select option state to a render prop. A function child is\n * treated as a render prop only when it declares exactly one parameter.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#select-option-state}\n */\nexport function SelectOptionStateChild(props: SelectOptionStateRenderProps): JSX.Element {\n  const state = useSelectOptionState();\n  return createMemo(() => {\n    const current = props.children;\n    if (typeof current === 'function' && current.length === 1) {\n      return createMemo(() => current(state));\n    }\n    return current;\n  }) as unknown as JSX.Element;\n}\n", "import type { JSX } from 'solid-js';\nimport { createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createTag } from '../../utils/namespace';\nimport { createARIADisabledState, createDisabledState } from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\n\nconst BUTTON_TAG = createTag('button');\n\ninterface ButtonBaseProps {\n  disabled?: boolean;\n}\n\nexport type ButtonProps<T extends ValidConstructor = 'button'> = HeadlessPropsWithRef<\n  T,\n  ButtonBaseProps\n>;\n\n/**\n * Button behaviour on any element. On a real `<button>` this only adds the\n * disabled handling; on anything else it also supplies `role=\"button\"`,\n * `tabindex`, and <kbd>Enter</kbd>/<kbd>Space</kbd> activation.\n *\n * Renders a `<button>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/button.md}\n */\nexport function Button<T extends ValidConstructor = 'button'>(props: ButtonProps<T>): JSX.Element {\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      // This behavior is redundant for buttons\n      if (current.tagName !== 'BUTTON') {\n        useEventListener(current, 'keydown', (e) => {\n          switch (e.key) {\n            case 'Enter':\n            case ' ': {\n              current.click();\n              break;\n            }\n          }\n        });\n      }\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('button' as T),\n    mergeProps(\n      BUTTON_TAG,\n      {\n        get tabindex() {\n          return props.disabled ? -1 : 0;\n        },\n        role: 'button',\n      },\n      createDisabledState(() => props.disabled),\n      createARIADisabledState(() => props.disabled),\n      omitProps(props, ['as', 'ref']),\n      {\n        ref: setInternalRef,\n      },\n    ) as DynamicProps<T>,\n  );\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface AccordionItemContextData {\n  buttonID: string;\n  panelID: string;\n}\n\nexport const AccordionItemContext = createContext<AccordionItemContextData>();\n\n/**\n * Reads the nearest `AccordionItem`'s internal context, which holds the\n * generated ids that link its button and panel. Throws when called outside an\n * `AccordionItem`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/accordion.md}\n */\nexport function useAccordionItemContext(componentName: string): AccordionItemContextData {\n  const context = useContext(AccordionItemContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <AccordionItem>`));\n  return context;\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { SelectOptionStateRenderProps } from '../../states/create-select-option-state';\nimport {\n  SelectOptionStateChild,\n  useSelectOptionState,\n} from '../../states/create-select-option-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createActiveState,\n  createDisabledState,\n  createExpandedState,\n  createSelectedState,\n} from '../../utils/state-props';\nimport { useAccordionItemContext } from './AccordionItemContext';\nimport { ACCORDION_HEADER_TAG } from './tags';\n\nexport type AccordionHeaderProps<T extends ValidConstructor = 'h3'> = HeadlessProps<\n  T,\n  SelectOptionStateRenderProps\n>;\n\n/**\n * The heading that wraps an `AccordionButton`. Needed so screen readers can\n * list the sections by their headings.\n *\n * Renders an `<h3>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/accordion.md}\n */\nexport function AccordionHeader<T extends ValidConstructor = 'h3'>(\n  props: AccordionHeaderProps<T>,\n): JSX.Element {\n  useAccordionItemContext('AccordionHeader');\n  const state = useSelectOptionState();\n  return createDynamic<T>(\n    () => props.as ?? ('h3' as T),\n    mergeProps(\n      omitProps(props, ['as', 'children']),\n      ACCORDION_HEADER_TAG,\n      createDisabledState(() => state.disabled()),\n      createSelectedState(() => state.isSelected()),\n      createExpandedState(() => state.isSelected()),\n      createActiveState(() => state.isActive()),\n      {\n        get children() {\n          return createComponent(SelectOptionStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  SelectOptionStateOptions,\n  SelectOptionStateRenderProps,\n} from '../../states/create-select-option-state';\nimport {\n  SelectOptionStateProvider,\n  createSelectOptionState,\n} from '../../states/create-select-option-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createActiveState,\n  createDisabledState,\n  createExpandedState,\n  createSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport { useAccordionContext } from './AccordionContext';\nimport { AccordionItemContext } from './AccordionItemContext';\nimport { ACCORDION_ITEM_TAG } from './tags';\n\nexport type AccordionItemprops<V> = Prettify<\n  SelectOptionStateOptions<V> & SelectOptionStateRenderProps\n>;\n\nexport type AccordionItemProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  AccordionItemprops<V>\n>;\n\n/**\n * One section of an `Accordion`. The required `value` prop is the id this\n * section is selected by.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/accordion.md}\n */\nexport function AccordionItem<V, T extends ValidConstructor = 'div'>(\n  props: AccordionItemProps<V, T>,\n): JSX.Element {\n  useAccordionContext('AccordionItem');\n  const buttonID = createUniqueId();\n  const panelID = createUniqueId();\n  const state = createSelectOptionState(props);\n\n  return createComponent(AccordionItemContext.Provider, {\n    value: { buttonID, panelID },\n    get children() {\n      return createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          omitProps(props, ['as', 'children', 'value', 'disabled']),\n          ACCORDION_ITEM_TAG,\n          createDisabledState(() => state.disabled()),\n          createARIADisabledState(() => state.disabled()),\n          createSelectedState(() => state.isSelected()),\n          createExpandedState(() => state.isSelected()),\n          createActiveState(() => state.isActive()),\n          {\n            get children() {\n              return createComponent(SelectOptionStateProvider, {\n                state,\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n        ) as DynamicProps<T>,\n      );\n    },\n  });\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { SelectOptionStateRenderProps } from '../../states/create-select-option-state';\nimport {\n  SelectOptionStateChild,\n  useSelectOptionState,\n} from '../../states/create-select-option-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createActiveState,\n  createDisabledState,\n  createExpandedState,\n  createSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport { useAccordionItemContext } from './AccordionItemContext';\nimport { ACCORDION_PANEL_TAG } from './tags';\n\nexport type AccordionPanelBaseProps = Prettify<SelectOptionStateRenderProps & UnmountableProps>;\n\nexport type AccordionPanelProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  AccordionPanelBaseProps\n>;\n\n/**\n * The content revealed when its `AccordionItem` is expanded. Unmounts while\n * collapsed unless `unmount={false}` is set.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/accordion.md}\n */\nexport function AccordionPanel<T extends ValidConstructor = 'div'>(\n  props: AccordionPanelProps<T>,\n): JSX.Element {\n  const context = useAccordionItemContext('AccordionPanel');\n  const state = useSelectOptionState();\n\n  return createUnmountable(\n    props,\n    () => state.isSelected(),\n    () =>\n      createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          omitProps(props, ['as', 'children', 'unmount']),\n          ACCORDION_PANEL_TAG,\n          {\n            id: context.panelID,\n            'aria-labelledby': context.buttonID,\n          },\n          createDisabledState(() => state.disabled()),\n          createSelectedState(() => state.isSelected()),\n          createExpandedState(() => state.isSelected()),\n          createActiveState(() => state.isActive()),\n          {\n            get children() {\n              return createComponent(SelectOptionStateChild, {\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n        ) as DynamicProps<T>,\n      ),\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { Show, children, createComponent } from 'solid-js';\nimport createDynamic from './create-dynamic';\n\n// An `unmountable` is a kind of component\n// where one can decide if it should conditionally\n// render or not.\n// This is only used for disclosure-based properties\n// as some implementations may allow users to use various\n// ways to hide the element (e.g. opacity, display, visibility)\nexport interface UnmountableProps {\n  unmount?: boolean | 'offscreen';\n}\n\ninterface OffscreenProps {\n  when?: boolean;\n  children: JSX.Element;\n}\n\nfunction Offscreen(props: OffscreenProps): JSX.Element {\n  const result = children(() => props.children);\n\n  return createComponent(Show, {\n    get when() {\n      return props.when;\n    },\n    keyed: true,\n    get children() {\n      return result as unknown as JSX.Element;\n    },\n  });\n}\n\nexport function createUnmountable(\n  props: UnmountableProps,\n  shouldMount: () => boolean,\n  render: () => JSX.Element,\n): JSX.Element {\n  return createDynamic(() => (props.unmount === 'offscreen' ? Offscreen : Show), {\n    get when() {\n      // `unmount` defaults to true, so an omitted prop has to mean \"remove me\n      // while hidden\". Only an explicit `false` keeps the children mounted\n      // regardless of the condition.\n      const mode = props.unmount ?? true;\n      return mode === false || shouldMount();\n    },\n    get children() {\n      return render();\n    },\n  });\n}\n", "import type { JSX } from 'solid-js';\nimport { createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createTag } from '../../utils/namespace';\n\nconst ALERT_TAG = createTag('alert');\n\nexport type AlertProps<T extends ValidConstructor = 'div'> = HeadlessProps<T>;\n\n/**\n * A live region for a message that needs attention as soon as it appears, such\n * as a form error. Assistive technology announces its content without moving\n * focus.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/alert.md}\n */\nexport function Alert<T extends ValidConstructor = 'div'>(props: AlertProps<T>): JSX.Element {\n  const alertID = createUniqueId();\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      {\n        id: alertID,\n      },\n      omitProps(props, ['as']),\n      ALERT_TAG,\n      {\n        role: 'alert',\n      },\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  DisclosureStateControlledOptions,\n  DisclosureStateRenderProps,\n  DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n  DisclosureStateProvider,\n  createDisclosureState,\n} from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createExpandedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useFocusStartPoint from '../../utils/use-focus-start-point';\nimport { AlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_TAG } from './tags';\n\nexport type AlertDialogControlledBaseProps = Prettify<\n  DisclosureStateControlledOptions & DisclosureStateRenderProps & UnmountableProps\n>;\n\nexport type AlertDialogControlledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  AlertDialogControlledBaseProps\n>;\n\nexport type AlertDialogUncontrolledBaseProps = Prettify<\n  DisclosureStateUncontrolledOptions & DisclosureStateRenderProps & UnmountableProps\n>;\n\nexport type AlertDialogUncontrolledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  AlertDialogUncontrolledBaseProps\n>;\n\nexport type AlertDialogProps<T extends ValidConstructor = 'div'> =\n  | AlertDialogControlledProps<T>\n  | AlertDialogUncontrolledProps<T>;\n\nfunction isAlertDialogUncontrolled<T extends ValidConstructor = 'div'>(\n  props: AlertDialogProps<T>,\n): props is AlertDialogUncontrolledProps<T> {\n  return 'defaultOpen' in props;\n}\n\n/**\n * A modal that interrupts the user to confirm an action. Same behaviour as\n * `Dialog`, but with `role=\"alertdialog\"`, so it is announced immediately. Use\n * it only for messages that require a response.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/alert-dialog.md}\n */\nexport function AlertDialog<T extends ValidConstructor = 'div'>(\n  props: AlertDialogProps<T>,\n): JSX.Element {\n  const ownerID = createUniqueId();\n  const panelID = createUniqueId();\n  const titleID = createUniqueId();\n  const descriptionID = createUniqueId();\n\n  const fsp = useFocusStartPoint();\n\n  const state = createDisclosureState(props);\n\n  createEffect(() => {\n    if (state.isOpen()) {\n      fsp.save();\n    } else {\n      fsp.load();\n    }\n  });\n\n  return createComponent(AlertDialogContext.Provider, {\n    value: {\n      ownerID,\n      panelID,\n      titleID,\n      descriptionID,\n    },\n    get children() {\n      return createUnmountable(\n        props,\n        () => state.isOpen(),\n        () =>\n          createDynamic(\n            () => props.as ?? ('div' as T),\n            mergeProps(\n              isAlertDialogUncontrolled(props)\n                ? omitProps(props, [\n                    'as',\n                    'children',\n                    'defaultOpen',\n                    'disabled',\n                    'onChange',\n                    'onClose',\n                    'onOpen',\n                    'unmount',\n                  ])\n                : omitProps(props, [\n                    'as',\n                    'children',\n                    'isOpen',\n                    'disabled',\n                    'onChange',\n                    'onClose',\n                    'onOpen',\n                    'unmount',\n                  ]),\n              ALERT_DIALOG_TAG,\n              {\n                id: ownerID,\n                role: 'alertdialog',\n                'aria-modal': true,\n                'aria-labelledby': titleID,\n                'aria-describedby': descriptionID,\n                get children() {\n                  return createComponent(DisclosureStateProvider, {\n                    state,\n                    get children() {\n                      return props.children;\n                    },\n                  });\n                },\n              },\n              createDisabledState(() => state.disabled()),\n              createARIADisabledState(() => state.disabled()),\n              createExpandedState(() => state.isOpen()),\n            ) as DynamicProps<T>,\n          ),\n      );\n    },\n  });\n}\n", "import type { Accessor, JSX } from 'solid-js';\nimport {\n  createComponent,\n  createContext,\n  createMemo,\n  createSignal,\n  untrack,\n  useContext,\n} from 'solid-js';\nimport assert from '../utils/assert';\n\nexport interface DisclosureStateControlledOptions {\n  isOpen: boolean;\n  disabled?: boolean;\n  onChange?: (state: boolean) => void;\n  onClose?: () => void;\n  onOpen?: () => void;\n}\nexport interface DisclosureStateUncontrolledOptions {\n  defaultOpen: boolean;\n  disabled?: boolean;\n  onChange?: (state: boolean) => void;\n  onClose?: () => void;\n  onOpen?: () => void;\n}\n\nexport type DisclosureStateOptions =\n  | DisclosureStateControlledOptions\n  | DisclosureStateUncontrolledOptions;\n\nexport interface DisclosureStateProperties {\n  isOpen: () => boolean;\n  setState: (newState: boolean) => void;\n  disabled: () => boolean;\n  close: () => void;\n  open: () => void;\n  toggle: () => void;\n}\n\n/**\n * Creates an open/closed state. Backs `Disclosure`, `Dialog`, `AlertDialog`,\n * `Popover`, `ContextMenu`, `CommandBar` and the popups of `Listbox` and\n * `Combobox`.\n *\n * Pass `defaultOpen` for uncontrolled state or `isOpen` for controlled; the\n * two are mutually exclusive.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#disclosure-state}\n */\nexport function createDisclosureState(options: DisclosureStateOptions): DisclosureStateProperties {\n  let signal: Accessor<boolean>;\n  let setSignal: (value: boolean) => void;\n\n  if ('defaultOpen' in options) {\n    const [isOpen, setIsOpen] = createSignal(options.defaultOpen);\n    signal = isOpen;\n    setSignal = (value): void => {\n      setIsOpen(value);\n      if (value && options.onOpen) {\n        options.onOpen();\n      }\n      if (options.onChange) {\n        options.onChange(value);\n      }\n      if (!value && options.onClose) {\n        options.onClose();\n      }\n    };\n  } else {\n    signal = createMemo(() => options.isOpen);\n    setSignal = (value): void => {\n      if (value && options.onOpen) {\n        options.onOpen();\n      }\n      if (options.onChange) {\n        options.onChange(value);\n      }\n      if (!value && options.onClose) {\n        options.onClose();\n      }\n    };\n  }\n\n  const isDisabled = createMemo(() => !!options.disabled);\n\n  return {\n    isOpen(): boolean {\n      return signal();\n    },\n    setState(value): void {\n      if (!untrack(isDisabled)) {\n        setSignal(value);\n      }\n    },\n    disabled: isDisabled,\n    open(): void {\n      if (!untrack(isDisabled)) {\n        setSignal(true);\n      }\n    },\n    close(): void {\n      if (!untrack(isDisabled)) {\n        setSignal(false);\n      }\n    },\n    toggle(): void {\n      if (!untrack(isDisabled)) {\n        setSignal(!untrack(signal));\n      }\n    },\n  };\n}\n\nexport interface DisclosureStateRenderProps {\n  children?: JSX.Element | ((state: DisclosureStateProperties) => JSX.Element);\n}\n\nexport interface DisclosureStateProviderProps extends DisclosureStateRenderProps {\n  state: DisclosureStateProperties;\n}\n\nconst DisclosureStateContext = createContext<DisclosureStateProperties>();\n\nexport function DisclosureStateProvider(props: DisclosureStateProviderProps): JSX.Element {\n  return createComponent(DisclosureStateContext.Provider, {\n    value: props.state,\n    get children() {\n      const current = props.children;\n      if (typeof current === 'function') {\n        return current(props.state);\n      }\n      return current;\n    },\n  });\n}\n\n/**\n * Reads the nearest disclosure state from context. Throws when there is none.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#disclosure-state}\n */\nexport function useDisclosureState(): DisclosureStateProperties {\n  const ctx = useContext(DisclosureStateContext);\n  assert(ctx, new Error('Missing <DisclosureStateProvider>'));\n  return ctx;\n}\n\n/**\n * Passes the nearest disclosure state to a render prop. A function child is\n * treated as a render prop only when it declares exactly one parameter.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#disclosure-state}\n */\nexport function DisclosureStateChild(props: DisclosureStateRenderProps): JSX.Element {\n  const state = useDisclosureState();\n  return createMemo(() => {\n    const current = props.children;\n    if (typeof current === 'function' && current.length === 1) {\n      return createMemo(() => current(state));\n    }\n    return current;\n  }) as unknown as JSX.Element;\n}\n", "import { onCleanup } from 'solid-js';\nimport { isServer } from 'solid-js/web';\nimport { getFocusStartPoint, setFocusStartPoint } from './focus-start-point';\n\nclass FocusStartPoint {\n  private returnElement: Element | null | undefined;\n\n  private fsp: HTMLElement | null | undefined;\n\n  constructor() {\n    if (!isServer) {\n      this.returnElement = document.activeElement;\n      this.fsp = getFocusStartPoint();\n      onCleanup(() => {\n        this.load();\n      });\n    }\n  }\n\n  load(): void {\n    if (this.returnElement instanceof HTMLElement) {\n      this.returnElement.focus();\n    } else {\n      setFocusStartPoint(this.fsp);\n    }\n  }\n\n  save(): void {\n    this.returnElement = document.activeElement;\n    this.fsp = getFocusStartPoint();\n  }\n}\n\nexport default function useFocusStartPoint(): FocusStartPoint {\n  return new FocusStartPoint();\n}\n", "// document.activeElement isn't accurate for this specific behavior\n\nexport function getFocusStartPoint(): HTMLElement | null | undefined {\n  const selection = window.getSelection();\n  if (selection) {\n    const node = selection.focusNode;\n    if (node) {\n      return node.parentElement;\n    }\n  }\n  return undefined;\n}\n\nexport function setFocusStartPoint(element?: HTMLElement | null): void {\n  if (element) {\n    const tabindex = element.getAttribute('tabindex');\n\n    element.setAttribute('tabindex', '-1');\n    element.focus();\n    element.blur();\n\n    if (tabindex) {\n      element.setAttribute('tabindex', tabindex);\n    } else {\n      element.removeAttribute('tabindex');\n    }\n  }\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface AlertDialogContextData {\n  ownerID: string;\n  panelID: string;\n  titleID: string;\n  descriptionID: string;\n}\n\nexport const AlertDialogContext = createContext<AlertDialogContextData>();\n\n/**\n * Reads the nearest `AlertDialog`'s internal context, which holds the\n * generated ids for its title, description and panel. Throws when called\n * outside an `AlertDialog`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/alert-dialog.md}\n */\nexport function useAlertDialogContext(componentName: string): AlertDialogContextData {\n  const context = useContext(AlertDialogContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <AlertDialog>`));\n  return context;\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const ALERT_DIALOG_TAG = createTag('alert-dialog');\nexport const ALERT_DIALOG_DESCRIPTION_TAG = createTag('alert-dialog-description');\nexport const ALERT_DIALOG_OVERLAY_TAG = createTag('alert-dialog-overlay');\nexport const ALERT_DIALOG_PANEL_TAG = createTag('alert-dialog-panel');\nexport const ALERT_DIALOG_TITLE_TAG = createTag('alert-dialog-title');\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_DESCRIPTION_TAG } from './tags';\n\nexport type AlertDialogDescriptionProps<T extends ValidConstructor = 'p'> = HeadlessProps<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The accessible description of an `AlertDialog`, wired up through `aria-\n * describedby`.\n *\n * Renders a `<p>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/alert-dialog.md}\n */\nexport function AlertDialogDescription<T extends ValidConstructor = 'p'>(\n  props: AlertDialogDescriptionProps<T>,\n): JSX.Element {\n  const context = useAlertDialogContext('AlertDialogDescription');\n  const state = useDisclosureState();\n  return createDynamic(\n    () => props.as ?? ('p' as T),\n    mergeProps(\n      omitProps(props, ['as', 'children']),\n      ALERT_DIALOG_DESCRIPTION_TAG,\n      {\n        id: context.descriptionID,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_OVERLAY_TAG } from './tags';\n\nexport type AlertDialogOverlayProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The backdrop behind an `AlertDialog`. Clicking it closes the dialog, so give\n * it a size — it has no styles of its own and renders 0x0 without them.\n *\n * A full-screen overlay is positioned, so it paints above an unpositioned\n * sibling: give `AlertDialogPanel` a `position` or a `z-index` of its own, or\n * the overlay covers it and swallows the clicks meant for it.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/alert-dialog.md}\n */\nexport function AlertDialogOverlay<T extends ValidConstructor = 'div'>(\n  props: AlertDialogOverlayProps<T>,\n): JSX.Element {\n  useAlertDialogContext('AlertDialogOverlay');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        state.close();\n      });\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      omitProps(props, ['as', 'children', 'ref']),\n      ALERT_DIALOG_OVERLAY_TAG,\n      {\n        ref: setInternalRef,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { focusFirst, lockFocus } from '../../utils/focus-navigation';\nimport getFocusableElements from '../../utils/focus-query';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_PANEL_TAG } from './tags';\n\nexport type AlertDialogPanelProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The content of an `AlertDialog`. Traps `Tab` while the dialog is open and\n * restores focus to the trigger on close.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/alert-dialog.md}\n */\nexport function AlertDialogPanel<T extends ValidConstructor = 'div'>(\n  props: AlertDialogPanelProps<T>,\n): JSX.Element {\n  const context = useAlertDialogContext('AlertDialogPanel');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      if (state.isOpen()) {\n        focusFirst(getFocusableElements(current), false);\n\n        useEventListener(current, 'keydown', (e) => {\n          if (!props.disabled) {\n            // Keys this panel acts on are not passed on: a `Dialog` or another panel\n            // around this one traps `Tab` and closes on `Escape` too, and would\n            // otherwise move focus a second time or close both layers at once.\n            switch (e.key) {\n              case 'Tab': {\n                e.preventDefault();\n                e.stopPropagation();\n                lockFocus(current, e.shiftKey, false);\n                break;\n              }\n              case 'Escape': {\n                e.stopPropagation();\n                state.close();\n                break;\n              }\n              default:\n                break;\n            }\n          }\n        });\n      }\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      omitProps(props, ['as', 'children', 'ref']),\n      ALERT_DIALOG_PANEL_TAG,\n      {\n        id: context.panelID,\n        ref: setInternalRef,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport { useAlertDialogContext } from './AlertDialogContext';\nimport { ALERT_DIALOG_TITLE_TAG } from './tags';\n\nexport type AlertDialogTitleProps<T extends ValidConstructor = 'h2'> = HeadlessPropsWithRef<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The accessible name of an `AlertDialog`, wired up through `aria-labelledby`.\n *\n * Renders an `<h2>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/alert-dialog.md}\n */\nexport function AlertDialogTitle<T extends ValidConstructor = 'h2'>(\n  props: AlertDialogTitleProps<T>,\n): JSX.Element {\n  const context = useAlertDialogContext('AlertDialogTitle');\n  const state = useDisclosureState();\n\n  return createDynamic(\n    () => props.as ?? ('h2' as T),\n    mergeProps(\n      omitProps(props, ['as', 'children']),\n      ALERT_DIALOG_TITLE_TAG,\n      {\n        id: context.titleID,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  CheckStateControlledOptions,\n  CheckStateRenderProps,\n  CheckStateUncontrolledOptions,\n} from '../../states/create-check-state';\nimport { CheckStateProvider, createCheckState } from '../../states/create-check-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createCheckedState,\n  createDisabledState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport { CheckboxContext } from './CheckboxContext';\nimport { CHECKBOX_TAG } from './tags';\n\nexport type CheckboxControlledBaseProps = Prettify<\n  CheckStateControlledOptions & CheckStateRenderProps\n>;\n\nexport type CheckboxControlledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  CheckboxControlledBaseProps\n>;\n\nexport type CheckboxUncontrolledBaseProps = Prettify<\n  CheckStateUncontrolledOptions & CheckStateRenderProps\n>;\n\nexport type CheckboxUncontrolledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  CheckboxUncontrolledBaseProps\n>;\n\nexport type CheckboxProps<T extends ValidConstructor = 'div'> =\n  | CheckboxControlledProps<T>\n  | CheckboxUncontrolledProps<T>;\n\nfunction isCheckboxUncontrolled<T extends ValidConstructor = 'div'>(\n  props: CheckboxProps<T>,\n): props is CheckboxUncontrolledProps<T> {\n  return 'defaultChecked' in props;\n}\n\n/**\n * A checkbox that can be checked, unchecked, or indeterminate. It is a wrapper\n * only: the tickable control is `CheckboxIndicator`, and the state lives in\n * `defaultChecked`/`checked`, where `undefined` means indeterminate.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/checkbox.md}\n */\nexport function Checkbox<T extends ValidConstructor = 'div'>(props: CheckboxProps<T>): JSX.Element {\n  const ownerID = createUniqueId();\n  const labelID = createUniqueId();\n  const indicatorID = createUniqueId();\n  const descriptionID = createUniqueId();\n\n  const state = createCheckState(props);\n\n  return createComponent(CheckboxContext.Provider, {\n    value: {\n      ownerID,\n      labelID,\n      indicatorID,\n      descriptionID,\n    },\n    get children() {\n      return createDynamic(\n        () => props.as ?? 'div',\n        mergeProps(\n          CHECKBOX_TAG,\n          createDisabledState(() => state.disabled()),\n          createARIADisabledState(() => state.disabled()),\n          createCheckedState(() => state.checked()),\n          isCheckboxUncontrolled(props)\n            ? omitProps(props, ['as', 'children', 'defaultChecked', 'disabled', 'onChange'])\n            : omitProps(props, ['as', 'children', 'checked', 'disabled', 'onChange']),\n          {\n            get children() {\n              return createComponent(CheckStateProvider, {\n                state,\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n        ) as DynamicProps<T>,\n      );\n    },\n  });\n}\n", "import type { Accessor, JSX } from 'solid-js';\nimport {\n  createComponent,\n  createContext,\n  createMemo,\n  createSignal,\n  untrack,\n  useContext,\n} from 'solid-js';\nimport assert from '../utils/assert';\n\nexport interface CheckStateControlledOptions {\n  checked: boolean | undefined;\n  disabled?: boolean;\n  onChange?: (state?: boolean) => void;\n}\n\nexport interface CheckStateUncontrolledOptions {\n  defaultChecked: boolean | undefined;\n  disabled?: boolean;\n  onChange?: (state?: boolean) => void;\n}\n\nexport type CheckStateOptions = CheckStateControlledOptions | CheckStateUncontrolledOptions;\n\nexport interface CheckStateProperties {\n  checked: () => boolean | undefined;\n  setState: (newState?: boolean) => void;\n  disabled: () => boolean;\n  check: () => void;\n  uncheck: () => void;\n  reset: () => void;\n  toggle: () => void;\n}\n\n/**\n * Creates a tri-state checkbox value: `true`, `false`, or `undefined` for\n * indeterminate. Backs `Checkbox`.\n *\n * Pass `defaultChecked` for uncontrolled state or `checked` for controlled.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#check-state}\n */\nexport function createCheckState(options: CheckStateOptions): CheckStateProperties {\n  // Reference to the signal read\n  let signal: Accessor<boolean | undefined>;\n  // Reference to the signal write\n  let setSignal: (value: boolean | undefined) => void;\n\n  // Type branding\n  // Check if state is uncontrolled\n  if ('defaultChecked' in options) {\n    // Uncontrolled toggle means the toggle\n    // manages its own state.\n    const [isOpen, setIsOpen] = createSignal<boolean | undefined>(options.defaultChecked);\n    signal = isOpen;\n    setSignal = (value): void => {\n      setIsOpen(value);\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  } else {\n    // Controlled means relying on 3P state\n    signal = createMemo(() => options.checked);\n    setSignal = (value): void => {\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  }\n\n  const isDisabled = createMemo(() => !!options.disabled);\n\n  return {\n    checked(): boolean | undefined {\n      return signal();\n    },\n    setState(value): void {\n      if (!untrack(isDisabled)) {\n        setSignal(value);\n      }\n    },\n    disabled: isDisabled,\n    check(): void {\n      if (!untrack(isDisabled)) {\n        setSignal(true);\n      }\n    },\n    uncheck(): void {\n      if (!untrack(isDisabled)) {\n        setSignal(false);\n      }\n    },\n    reset(): void {\n      if (!untrack(isDisabled)) {\n        setSignal(undefined);\n      }\n    },\n    toggle(): void {\n      if (!untrack(isDisabled)) {\n        setSignal(!untrack(signal));\n      }\n    },\n  };\n}\n\nexport interface CheckStateRenderProps {\n  children?: JSX.Element | ((state: CheckStateProperties) => JSX.Element);\n}\n\nexport interface CheckStateProviderProps extends CheckStateRenderProps {\n  state: CheckStateProperties;\n}\n\nconst CheckStateContext = createContext<CheckStateProperties>();\n\nexport function CheckStateProvider(props: CheckStateProviderProps): JSX.Element {\n  return createComponent(CheckStateContext.Provider, {\n    value: props.state,\n    get children() {\n      const current = props.children;\n      if (typeof current === 'function') {\n        return current(props.state);\n      }\n      return current;\n    },\n  });\n}\n\n/**\n * Reads the nearest check state from context. Throws when there is none.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#check-state}\n */\nexport function useCheckState(): CheckStateProperties {\n  const ctx = useContext(CheckStateContext);\n  assert(ctx, new Error('Missing <CheckStateProvider>'));\n  return ctx;\n}\n\n/**\n * Passes the nearest check state to a render prop. A function child is treated\n * as a render prop only when it declares exactly one parameter.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#check-state}\n */\nexport function CheckStateChild(props: CheckStateRenderProps): JSX.Element {\n  const state = useCheckState();\n  return createMemo(() => {\n    const current = props.children;\n    if (typeof current === 'function' && current.length === 1) {\n      return createMemo(() => current(state));\n    }\n    return current;\n  }) as unknown as JSX.Element;\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface CheckboxContextData {\n  ownerID: string;\n  labelID: string;\n  indicatorID: string;\n  descriptionID: string;\n}\n\nexport const CheckboxContext = createContext<CheckboxContextData>();\n\n/**\n * Reads the nearest `Checkbox`'s internal context, which holds the generated\n * ids for its label, description and indicator. Throws when called outside a\n * `Checkbox`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/checkbox.md}\n */\nexport function useCheckboxContext(componentName: string): CheckboxContextData {\n  const context = useContext(CheckboxContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Checkbox>`));\n  return context;\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const CHECKBOX_TAG = createTag('checkbox');\nexport const CHECKBOX_DESCRIPTION = createTag('checkbox-description');\nexport const CHECKBOX_INDICATOR = createTag('checkbox-indicator');\nexport const CHECKBOX_LABEL = createTag('checkbox-label');\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { CheckStateRenderProps } from '../../states/create-check-state';\nimport { CheckStateChild, useCheckState } from '../../states/create-check-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createCheckedState, createDisabledState } from '../../utils/state-props';\nimport { useCheckboxContext } from './CheckboxContext';\nimport { CHECKBOX_DESCRIPTION } from './tags';\n\nexport type CheckboxDescriptionProps<T extends ValidConstructor = 'p'> = HeadlessProps<\n  T,\n  CheckStateRenderProps\n>;\n\n/**\n * The accessible description of a `Checkbox`, wired up through `aria-\n * describedby`.\n *\n * Renders a `<p>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/checkbox.md}\n */\nexport function CheckboxDescription<T extends ValidConstructor = 'p'>(\n  props: CheckboxDescriptionProps<T>,\n): JSX.Element {\n  const context = useCheckboxContext('CheckboxDescription');\n  const state = useCheckState();\n  return createDynamic(\n    () => props.as ?? ('p' as T),\n    mergeProps(\n      omitProps(props, ['as', 'children']),\n      CHECKBOX_DESCRIPTION,\n      {\n        id: context.descriptionID,\n        get children() {\n          return createComponent(CheckStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createCheckedState(() => state.checked()),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { CheckStateRenderProps } from '../../states/create-check-state';\nimport { CheckStateChild, useCheckState } from '../../states/create-check-state';\nimport type { HeadlessPropsWithRef, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n  createARIACheckedState,\n  createARIADisabledState,\n  createCheckedState,\n  createDisabledState,\n} from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport { useCheckboxContext } from './CheckboxContext';\nimport { CHECKBOX_INDICATOR } from './tags';\n\nexport type CheckboxIndicatorProps<T extends ValidConstructor = 'button'> = HeadlessPropsWithRef<\n  T,\n  CheckStateRenderProps\n>;\n\n/**\n * The control the user actually clicks. Carries `role=\"checkbox\"` and `aria-\n * checked`, which is `\"mixed\"` while the state is indeterminate.\n *\n * Renders a `<button>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/checkbox.md}\n */\nexport function CheckboxIndicator<T extends ValidConstructor = 'button'>(\n  props: CheckboxIndicatorProps<T>,\n): JSX.Element {\n  const context = useCheckboxContext('CheckboxIndicator');\n  const state = useCheckState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        state.toggle();\n      });\n    }\n  });\n\n  return createComponent(\n    Button,\n    mergeProps(\n      omitProps(props, ['children', 'ref']),\n      CHECKBOX_INDICATOR,\n      {\n        id: context.indicatorID,\n        role: 'checkbox',\n        'aria-labelledby': context.labelID,\n        'aria-describedby': context.descriptionID,\n        ref: setInternalRef,\n      },\n      createDisabledState(() => state.disabled()),\n      createARIADisabledState(() => state.disabled()),\n      createCheckedState(() => state.checked()),\n      createARIACheckedState(() => state.checked()),\n      {\n        get children() {\n          return createComponent(CheckStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as ButtonProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { CheckStateRenderProps } from '../../states/create-check-state';\nimport { CheckStateChild, useCheckState } from '../../states/create-check-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createCheckedState, createDisabledState } from '../../utils/state-props';\nimport { useCheckboxContext } from './CheckboxContext';\nimport { CHECKBOX_LABEL } from './tags';\n\nexport type CheckboxLabelProps<T extends ValidConstructor = 'label'> = HeadlessProps<\n  T,\n  CheckStateRenderProps\n>;\n\n/**\n * The accessible name of a `Checkbox`, wired up through `aria-labelledby`.\n *\n * Renders a `<label>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/checkbox.md}\n */\nexport function CheckboxLabel<T extends ValidConstructor = 'label'>(\n  props: CheckboxLabelProps<T>,\n): JSX.Element {\n  const context = useCheckboxContext('CheckboxLabel');\n  const state = useCheckState();\n  return createDynamic(\n    () => props.as ?? ('label' as T),\n    mergeProps(\n      omitProps(props, ['as', 'children']),\n      CHECKBOX_LABEL,\n      {\n        id: context.labelID,\n        for: context.indicatorID,\n        get children() {\n          return createComponent(CheckStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createCheckedState(() => state.checked()),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { Accessor, JSX } from 'solid-js';\nimport {\n  createComponent,\n  createContext,\n  createEffect,\n  createMemo,\n  createSignal,\n  useContext,\n} from 'solid-js';\nimport { usePrefersDark } from 'solid-use/media-query';\nimport usePageVisibility from 'solid-use/page-visibility';\nimport assert from '../../utils/assert';\nimport useEventListener from '../../utils/use-event-listener';\n\nexport type NativeColorScheme = 'light' | 'dark';\nexport type ColorScheme = NativeColorScheme | 'system';\n\nexport interface ColorSchemeProviderControlledProps {\n  value: ColorScheme;\n  onChange?: (scheme: ColorScheme) => void;\n  children?: JSX.Element;\n}\nexport interface ColorSchemeProviderUncontrolledProps {\n  initialValue: ColorScheme;\n  onChange?: (scheme: ColorScheme) => void;\n  children?: JSX.Element;\n}\n\nexport type ColorSchemeProviderProps =\n  | ColorSchemeProviderControlledProps\n  | ColorSchemeProviderUncontrolledProps;\n\ninterface ColorSchemeContextData {\n  value: ColorScheme;\n  setValue: (newScheme: ColorScheme) => void;\n  native: NativeColorScheme;\n  preferred: NativeColorScheme;\n}\n\nconst ColorSchemeContext = createContext<ColorSchemeContextData>();\n\nconst STORAGE_KEY = 'theme-preference';\n\n/**\n * Holds the chosen colour scheme, writes it to `localStorage` under `theme-\n * preference`, and reflects it as a `dark` class on the document element. Pass\n * `initialValue` to let it own the preference, or `value` and `onChange` to\n * store the preference somewhere else, such as a user account.\n *\n * Renders nothing of its own.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/color-scheme.md}\n */\nexport function ColorSchemeProvider(props: ColorSchemeProviderProps): JSX.Element {\n  let get: Accessor<ColorScheme>;\n  let set: (scheme: ColorScheme) => void;\n\n  if ('initialValue' in props) {\n    const [scheme, setScheme] = createSignal<ColorScheme>(props.initialValue);\n    get = scheme;\n    set = (value): void => {\n      setScheme(value);\n      if (props.onChange) {\n        props.onChange(value);\n      }\n    };\n  } else {\n    get = (): ColorScheme => props.value;\n    set = (value): void => {\n      if (props.onChange) {\n        props.onChange(value);\n      }\n    };\n  }\n\n  const prefersDark = usePrefersDark();\n  const isVisible = usePageVisibility();\n\n  const shouldToggle = createMemo(() => (get() === 'system' && prefersDark()) || get() === 'dark');\n\n  // Since storage events only work for other windows\n  // we need to make the main window sync\n  createEffect(() => {\n    isVisible();\n\n    const onChange = (): void => {\n      const value = localStorage.getItem(STORAGE_KEY);\n\n      if (value) {\n        set(value as ColorScheme);\n      } else {\n        set('system');\n      }\n    };\n    onChange();\n    useEventListener(window, 'storage', onChange, false);\n  });\n\n  // Sync storage when signal changes\n  createEffect(() => {\n    localStorage.setItem(STORAGE_KEY, get());\n  });\n\n  // Sync document class\n  createEffect(() => {\n    document.documentElement.classList.toggle('dark', shouldToggle());\n  });\n\n  return createComponent(ColorSchemeContext.Provider, {\n    value: {\n      get value() {\n        return get();\n      },\n      setValue(val) {\n        set(val);\n      },\n      get preferred() {\n        return shouldToggle() ? 'dark' : 'light';\n      },\n      get native() {\n        return prefersDark() ? 'dark' : 'light';\n      },\n    },\n    get children() {\n      return props.children;\n    },\n  });\n}\n\nfunction useColorSchemeContext(): ColorSchemeContextData {\n  const ctx = useContext(ColorSchemeContext);\n  assert(ctx, new Error('Missing <ColorSchemeProvider>'));\n  return ctx;\n}\n\n/**\n * Reads and writes the chosen colour scheme: `'light'`, `'dark'` or\n * `'system'`. Returns a signal-like tuple. Throws when called outside a {@link\n * ColorSchemeProvider}.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/color-scheme.md}\n */\nexport function useColorScheme(): [() => ColorScheme, (newScheme: ColorScheme) => void] {\n  const ctx = useColorSchemeContext();\n  return [(): ColorScheme => ctx.value, ctx.setValue];\n}\n\n/**\n * Reads what the operating system currently prefers, ignoring the user's\n * choice. Returns an accessor for `'light'` or `'dark'`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/color-scheme.md}\n */\nexport function useNativeColorScheme(): () => NativeColorScheme {\n  const ctx = useColorSchemeContext();\n  return () => ctx.native;\n}\n\n/**\n * Reads the scheme that is actually in effect: the user's choice, or the\n * system preference when that choice is `'system'`. This is the one to style\n * from.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/color-scheme.md}\n */\nexport function usePreferredColorScheme(): () => NativeColorScheme {\n  const ctx = useColorSchemeContext();\n  return () => ctx.preferred;\n}\n", "import type { JSX } from 'solid-js';\nimport {\n  createComponent,\n  createEffect,\n  createMemo,\n  createSignal,\n  createUniqueId,\n  mergeProps,\n} from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  MultipleAutocompleteStateControlledOptions,\n  MultipleAutocompleteStateUncontrolledOptions,\n  SingleAutocompleteStateControlledOptions,\n  SingleAutocompleteStateUncontrolledOptions,\n} from '../../states/create-autocomplete-state';\nimport {\n  AutocompleteStateProvider,\n  createMultipleAutocompleteState,\n  createSingleAutocompleteState,\n} from '../../states/create-autocomplete-state';\nimport type {\n  DisclosureStateControlledOptions,\n  DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n  DisclosureStateProvider,\n  createDisclosureState,\n} from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createExpandedState,\n  createHasActiveState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport { ComboboxContext, createComboboxOptionFocusNavigator } from './ComboboxContext';\nimport { COMBOBOX_TAG } from './tags';\n\nexport interface ComboboxBaseProps {\n  onDisclosureChange?: (value: boolean) => void;\n}\n\nexport interface ComboboxMultipleBaseProps<V> {\n  onSelectChange?: (value: V[]) => void;\n}\n\nexport interface ComboboxSingleBaseProps<V> {\n  onSelectChange?: (value?: V) => void;\n}\n\n// SCSCD = Single, Controlled Select, Controlled Disclosure\nexport type ComboboxSCSCDBaseProps<V> = Prettify<\n  ComboboxBaseProps &\n    ComboboxSingleBaseProps<V> &\n    Omit<SingleAutocompleteStateControlledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateControlledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ComboboxSCSCDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ComboboxSCSCDBaseProps<V>\n>;\n\n// SCSCD = Single, Controlled Select, Uncontrolled Disclosure\nexport type ComboboxSCSUDBaseProps<V> = Prettify<\n  ComboboxBaseProps &\n    ComboboxSingleBaseProps<V> &\n    Omit<SingleAutocompleteStateControlledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ComboboxSCSUDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ComboboxSCSUDBaseProps<V>\n>;\n\n// SCSCD = Single, Uncontrolled Select, Controlled Disclosure\nexport type ComboboxSUSCDBaseProps<V> = Prettify<\n  ComboboxBaseProps &\n    ComboboxSingleBaseProps<V> &\n    Omit<SingleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateControlledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ComboboxSUSCDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ComboboxSUSCDBaseProps<V>\n>;\n\n// SCSCD = Single, Uncontrolled Select, Uncontrolled Disclosure\nexport type ComboboxSUSUDBaseProps<V> = Prettify<\n  ComboboxBaseProps &\n    ComboboxSingleBaseProps<V> &\n    Omit<SingleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ComboboxSUSUDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ComboboxSUSUDBaseProps<V>\n>;\n\nexport type ComboboxSingleProps<V, T extends ValidConstructor = 'div'> =\n  | ComboboxSCSCDProps<V, T>\n  | ComboboxSCSUDProps<V, T>\n  | ComboboxSUSCDProps<V, T>\n  | ComboboxSUSUDProps<V, T>;\n\n// MCSCD = Multiple, Controlled Select, Controlled Disclosure\nexport type ComboboxMCSCDBaseProps<V> = Prettify<\n  ComboboxBaseProps &\n    ComboboxMultipleBaseProps<V> &\n    Omit<MultipleAutocompleteStateControlledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateControlledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ComboboxMCSCDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ComboboxMCSCDBaseProps<V>\n>;\n\n// MCSCD = Multiple, Controlled Select, Uncontrolled Disclosure\nexport type ComboboxMCSUDBaseProps<V> = Prettify<\n  ComboboxBaseProps &\n    ComboboxMultipleBaseProps<V> &\n    Omit<MultipleAutocompleteStateControlledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ComboboxMCSUDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ComboboxMCSUDBaseProps<V>\n>;\n\n// MCSCD = Multiple, Uncontrolled Select, Controlled Disclosure\nexport type ComboboxMUSCDBaseProps<V> = Prettify<\n  ComboboxBaseProps &\n    ComboboxMultipleBaseProps<V> &\n    Omit<MultipleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateControlledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ComboboxMUSCDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ComboboxMUSCDBaseProps<V>\n>;\n\n// MCSCD = Multiple, Uncontrolled Select, Uncontrolled Disclosure\nexport type ComboboxMUSUDBaseProps<V> = Prettify<\n  ComboboxBaseProps &\n    ComboboxMultipleBaseProps<V> &\n    Omit<MultipleAutocompleteStateUncontrolledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ComboboxMUSUDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ComboboxMUSUDBaseProps<V>\n>;\n\nexport type ComboboxMultipleProps<V, T extends ValidConstructor = 'div'> =\n  | ComboboxMCSCDProps<V, T>\n  | ComboboxMCSUDProps<V, T>\n  | ComboboxMUSCDProps<V, T>\n  | ComboboxMUSUDProps<V, T>;\n\ntype ComboboxSelectUncontrolledProps<V, T extends ValidConstructor = 'div'> =\n  | ComboboxMUSCDProps<V, T>\n  | ComboboxMUSUDProps<V, T>\n  | ComboboxSUSCDProps<V, T>\n  | ComboboxSUSUDProps<V, T>;\n\ntype ComboboxDisclosureUncontrolledProps<V, T extends ValidConstructor = 'div'> =\n  | ComboboxMCSUDProps<V, T>\n  | ComboboxMUSUDProps<V, T>\n  | ComboboxSCSUDProps<V, T>\n  | ComboboxSUSUDProps<V, T>;\n\nexport type ComboboxProps<V, T extends ValidConstructor = 'div'> =\n  | ComboboxMultipleProps<V, T>\n  | ComboboxSingleProps<V, T>;\n\nfunction isComboboxMultiple<V, T extends ValidConstructor = 'div'>(\n  props: ComboboxProps<V, T>,\n): props is ComboboxMultipleProps<V, T> {\n  return !!props.multiple;\n}\n\nfunction isComboboxSelectUncontrolled<V, T extends ValidConstructor = 'div'>(\n  props: ComboboxProps<V, T>,\n): props is ComboboxSelectUncontrolledProps<V, T> {\n  return 'defaultValue' in props;\n}\n\nfunction isComboboxDisclosureUncontrolled<V, T extends ValidConstructor = 'div'>(\n  props: ComboboxProps<V, T>,\n): props is ComboboxDisclosureUncontrolledProps<V, T> {\n  return 'defaultOpen' in props;\n}\n\nfunction getProps<V, T extends ValidConstructor = 'div'>(\n  props: ComboboxProps<V, T>,\n): DynamicProps<T> {\n  if (isComboboxSelectUncontrolled(props)) {\n    if (isComboboxDisclosureUncontrolled(props)) {\n      return omitProps(props, [\n        'as',\n        'by',\n        'children',\n        'defaultOpen',\n        'defaultValue',\n        'disabled',\n        'matchBy',\n        'multiple',\n        'onClose',\n        'onDisclosureChange',\n        'onOpen',\n        'onSelectChange',\n        'toggleable',\n      ]) as DynamicProps<T>;\n    }\n    return omitProps(props, [\n      'as',\n      'by',\n      'children',\n      'defaultValue',\n      'disabled',\n      'isOpen',\n      'matchBy',\n      'multiple',\n      'onClose',\n      'onDisclosureChange',\n      'onOpen',\n      'onSelectChange',\n      'toggleable',\n    ]) as DynamicProps<T>;\n  }\n  if (isComboboxDisclosureUncontrolled(props)) {\n    return omitProps(props, [\n      'as',\n      'by',\n      'children',\n      'defaultOpen',\n      'disabled',\n      'matchBy',\n      'multiple',\n      'onClose',\n      'onDisclosureChange',\n      'onOpen',\n      'onSelectChange',\n      'toggleable',\n      'value',\n    ]) as DynamicProps<T>;\n  }\n  return omitProps(props, [\n    'as',\n    'by',\n    'children',\n    'disabled',\n    'isOpen',\n    'matchBy',\n    'multiple',\n    'onClose',\n    'onDisclosureChange',\n    'onOpen',\n    'onSelectChange',\n    'toggleable',\n    'value',\n  ]) as DynamicProps<T>;\n}\n\n/**\n * A text input paired with a popup listbox that filters as you type. It owns\n * two states at once, so its callbacks are `onDisclosureChange` for the popup\n * and `onSelectChange` for the value. The required `by` and `matchBy` props\n * decide value equality and which options survive the current query.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/combobox.md}\n */\nexport function Combobox<V, T extends ValidConstructor = 'div'>(\n  props: ComboboxProps<V, T>,\n): JSX.Element {\n  return createMemo(() => {\n    const labelID = createUniqueId();\n    const inputID = createUniqueId();\n    const optionsID = createUniqueId();\n\n    const disclosureState = createDisclosureState(\n      mergeProps(props, {\n        onChange(value: boolean) {\n          if (props.onDisclosureChange) {\n            props.onDisclosureChange(value);\n          }\n        },\n      }),\n    );\n\n    const autocompleteState = isComboboxMultiple(props)\n      ? createMultipleAutocompleteState(\n          mergeProps(props, {\n            onChange(value: V[]) {\n              if (props.onSelectChange) {\n                props.onSelectChange(value);\n              }\n            },\n          }),\n        )\n      : createSingleAutocompleteState(\n          mergeProps(props, {\n            onChange(value?: V) {\n              if (props.onSelectChange) {\n                props.onSelectChange(value);\n              }\n            },\n          }),\n        );\n\n    const controller = createComboboxOptionFocusNavigator();\n    const [activeDescendant, setActiveDescendant] = createSignal<string>();\n    const [selectedDescendant, setSelectedDescendant] = createSignal<string | undefined>(\n      undefined,\n      {\n        equals: false,\n      },\n    );\n\n    createEffect(() => {\n      if (!autocompleteState.hasActive()) {\n        setActiveDescendant(undefined);\n      }\n    });\n\n    return createComponent(ComboboxContext.Provider, {\n      value: {\n        get multiple() {\n          return props.multiple;\n        },\n        labelID,\n        inputID,\n        optionsID,\n        controller,\n        inputHovering: false,\n        optionsHovering: false,\n        get activeDescendant() {\n          return activeDescendant();\n        },\n        set activeDescendant(value: string | undefined) {\n          setActiveDescendant(value);\n        },\n        get selectedDescendant() {\n          return selectedDescendant();\n        },\n        set selectedDescendant(value: string | undefined) {\n          setSelectedDescendant(value);\n        },\n      },\n      get children() {\n        return createComponent(AutocompleteStateProvider, {\n          state: autocompleteState,\n          get children() {\n            return createComponent(DisclosureStateProvider, {\n              state: disclosureState,\n              get children() {\n                return createDynamic(\n                  () => props.as ?? 'div',\n                  mergeProps(\n                    COMBOBOX_TAG,\n                    {\n                      'aria-labelledby': labelID,\n                      get children() {\n                        return props.children;\n                      },\n                    },\n                    createDisabledState(() => autocompleteState.disabled()),\n                    createARIADisabledState(() => autocompleteState.disabled()),\n                    createHasSelectedState(() => autocompleteState.hasSelected()),\n                    createHasActiveState(() => autocompleteState.hasActive()),\n                    createExpandedState(() => disclosureState.isOpen()),\n                    getProps(props),\n                  ) as DynamicProps<T>,\n                );\n              },\n            });\n          },\n        });\n      },\n    });\n  }) as unknown as JSX.Element;\n}\n", "import type { Accessor, JSX } from 'solid-js';\nimport {\n  createComponent,\n  createContext,\n  createMemo,\n  createSignal,\n  untrack,\n  useContext,\n} from 'solid-js';\nimport assert from '../utils/assert';\nimport createInputReader from '../utils/create-input-reader';\nimport isEqual from '../utils/is-equal';\nimport type { Ref } from '../utils/types';\n\nexport interface AutocompleteStateProperties<T> {\n  isSelected: (value: T) => boolean;\n  select: (value: T) => void;\n  hasSelected: () => boolean;\n  isActive: (value: T) => boolean;\n  hasActive: () => boolean;\n  focus: (value: T) => void;\n  blur: () => void;\n  disabled: () => boolean;\n  query: () => string;\n  setQuery: (value: string) => void;\n  matches: (value: T) => boolean;\n  hasQuery: () => boolean;\n}\n\nexport interface SingleAutocompleteStateControlledOptions<T> {\n  multiple?: false;\n  toggleable?: boolean;\n  /** `undefined` means nothing is selected, which is also what `toggleable` produces. */\n  value: T | undefined;\n  matchBy: (value: T, query: string) => boolean;\n  onChange?: (value?: T) => void;\n  disabled?: boolean;\n  by?: (a: T, b: T) => boolean;\n}\n\nexport interface SingleAutocompleteStateUncontrolledOptions<T> {\n  multiple?: false;\n  toggleable?: boolean;\n  /** `undefined` starts with nothing selected. */\n  defaultValue: T | undefined;\n  matchBy: (value: T, query: string) => boolean;\n  onChange?: (value?: T) => void;\n  disabled?: boolean;\n  by?: (a: T, b: T) => boolean;\n}\n\nexport type SingleAutocompleteStateOptions<T> =\n  | SingleAutocompleteStateControlledOptions<T>\n  | SingleAutocompleteStateUncontrolledOptions<T>;\n\n/**\n * Creates a single-selection state with a debounced text query on top. Backs\n * `Combobox` and `Command`.\n *\n * The required `matchBy` decides which values survive the current query.\n * Writes to the query are debounced by 250ms, so `query()` lags typing.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#autocomplete-state}\n */\nexport function createSingleAutocompleteState<T>(\n  options: SingleAutocompleteStateOptions<T>,\n): AutocompleteStateProperties<T> {\n  const [active, setActive] = createSignal<Ref<T>>();\n\n  let selectedValue: Accessor<T | undefined>;\n  let setSelectedValue: (value: T | undefined) => void;\n\n  const equals = options.by ?? isEqual;\n\n  if ('defaultValue' in options) {\n    const [selected, setSelected] = createSignal<T | undefined>(options.defaultValue);\n    selectedValue = selected;\n    setSelectedValue = (value): void => {\n      setSelected(() => value);\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  } else {\n    selectedValue = createMemo(() => options.value);\n    setSelectedValue = (value): void => {\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  }\n\n  const isDisabled = createMemo(() => !!options.disabled);\n\n  const [input, setInput] = createInputReader();\n\n  return {\n    isSelected(value): boolean {\n      return isEqual(value, selectedValue());\n    },\n    select(value): void {\n      if (!untrack(isDisabled)) {\n        if (options.toggleable && equals(untrack(selectedValue) as T, value)) {\n          setSelectedValue(undefined);\n        } else {\n          setSelectedValue(value);\n        }\n      }\n    },\n    hasSelected(): boolean {\n      return selectedValue() != null;\n    },\n    disabled: isDisabled,\n    hasActive(): boolean {\n      return !!active();\n    },\n    isActive(value): boolean {\n      const ref = active();\n      return ref ? equals(value, ref.value) : false;\n    },\n    focus(value): void {\n      if (!untrack(isDisabled)) {\n        setActive({\n          value,\n        });\n      }\n    },\n    blur(): void {\n      if (!untrack(isDisabled)) {\n        setActive(undefined);\n      }\n    },\n    query(): string {\n      return input();\n    },\n    setQuery(value): void {\n      if (!untrack(isDisabled)) {\n        setInput(value);\n      }\n    },\n    matches(value): boolean {\n      return options.matchBy(value, input());\n    },\n    hasQuery: createMemo(() => !!input()),\n  };\n}\n\nexport interface MultipleAutocompleteStateControlledOptions<T> {\n  multiple: true;\n  toggleable?: boolean;\n  value: T[];\n  matchBy: (value: T, query: string) => boolean;\n  onChange?: (value: T[]) => void;\n  disabled?: boolean;\n  by?: (a: T, b: T) => boolean;\n}\n\nexport interface MultipleAutocompleteStateUncontrolledOptions<T> {\n  multiple: true;\n  toggleable?: boolean;\n  defaultValue: T[];\n  matchBy: (value: T, query: string) => boolean;\n  onChange?: (value: T[]) => void;\n  disabled?: boolean;\n  by?: (a: T, b: T) => boolean;\n}\n\nexport type MultipleAutocompleteStateOptions<T> =\n  | MultipleAutocompleteStateControlledOptions<T>\n  | MultipleAutocompleteStateUncontrolledOptions<T>;\n\n/**\n * Creates a multiple-selection state with a debounced text query on top.\n * Requires `multiple: true`.\n *\n * The required `matchBy` decides which values survive the current query.\n * Writes to the query are debounced by 250ms, so `query()` lags typing.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#autocomplete-state}\n */\nexport function createMultipleAutocompleteState<T>(\n  options: MultipleAutocompleteStateOptions<T>,\n): AutocompleteStateProperties<T> {\n  const [active, setActive] = createSignal<Ref<T>>();\n\n  let selectedValues: Accessor<T[]>;\n  let setSelectedValues: (value: T[]) => void;\n\n  const equals = options.by ?? isEqual;\n\n  if ('defaultValue' in options) {\n    const [selected, setSelected] = createSignal<T[]>(options.defaultValue);\n    selectedValues = selected;\n    setSelectedValues = (value): void => {\n      setSelected(() => value);\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  } else {\n    selectedValues = createMemo(() => options.value);\n    setSelectedValues = (value): void => {\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  }\n\n  const isDisabled = createMemo(() => !!options.disabled);\n\n  const [input, setInput] = createInputReader();\n\n  return {\n    isSelected(value): boolean {\n      const values = selectedValues();\n      // Looks up for the value\n      for (let i = 0, len = values.length; i < len; i += 1) {\n        if (equals(value, values[i])) {\n          return true;\n        }\n      }\n      return false;\n    },\n    select(value): void {\n      if (!untrack(isDisabled)) {\n        const newValues: T[] = [];\n        const currentValues = untrack(selectedValues);\n        let hasValue = false;\n        for (let i = 0, len = currentValues.length; i < len; i += 1) {\n          const item = currentValues[i];\n          // Compare ahead\n          const isSame = equals(item, value);\n          // If it's the same then we mark the the target value\n          // as already existing in the array\n          if (isSame) {\n            hasValue = true;\n          }\n          // If it's the same and the list is toggleable\n          // don't push the item\n          if (!(options.toggleable && isSame)) {\n            newValues.push(item);\n          }\n        }\n        // The value doesn't exist, push the new value\n        if (!hasValue) {\n          newValues.push(value);\n        }\n        setSelectedValues(newValues);\n      }\n    },\n    hasSelected: createMemo(() => selectedValues().length > 0),\n    disabled: isDisabled,\n    hasActive: createMemo(() => !!active()),\n    isActive(value): boolean {\n      const ref = active();\n      if (ref) {\n        return equals(value, ref.value);\n      }\n      return false;\n    },\n    focus(value): void {\n      if (!untrack(isDisabled)) {\n        setActive({\n          value,\n        });\n      }\n    },\n    blur(): void {\n      if (!untrack(isDisabled)) {\n        setActive(undefined);\n      }\n    },\n    query(): string {\n      return input();\n    },\n    setQuery(value): void {\n      setInput(value);\n    },\n    matches(value): boolean {\n      return options.matchBy(value, input());\n    },\n    hasQuery: createMemo(() => !!input()),\n  };\n}\n\nexport interface AutocompleteStateRenderProps<T> {\n  children?: JSX.Element | ((state: AutocompleteStateProperties<T>) => JSX.Element);\n}\n\nexport interface AutocompleteStateProviderProps<T> extends AutocompleteStateRenderProps<T> {\n  state: AutocompleteStateProperties<T>;\n}\n\nconst AutocompleteStateContext = createContext<AutocompleteStateProperties<unknown>>();\n\nexport function AutocompleteStateProvider<T>(\n  props: AutocompleteStateProviderProps<T>,\n): JSX.Element {\n  return createComponent(AutocompleteStateContext.Provider, {\n    // The context erases the value type; every consumer re-applies its own `T`\n    // through `useAutocompleteState`.\n    value: props.state as AutocompleteStateProperties<unknown>,\n    get children() {\n      const current = props.children;\n      if (typeof current === 'function') {\n        return current(props.state);\n      }\n      return current;\n    },\n  });\n}\n\n/**\n * Reads the nearest autocomplete state from context. Throws when there is\n * none.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#autocomplete-state}\n */\nexport function useAutocompleteState<T>(): AutocompleteStateProperties<T> {\n  const ctx = useContext(AutocompleteStateContext);\n  assert(ctx, new Error('Missing <AutocompleteStateProvider>'));\n  return ctx;\n}\n\n/**\n * Passes the nearest autocomplete state to a render prop. A function child is\n * treated as a render prop only when it declares exactly one parameter.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#autocomplete-state}\n */\nexport function AutocompleteStateChild<T>(props: AutocompleteStateRenderProps<T>): JSX.Element {\n  const state = useAutocompleteState<T>();\n  return createMemo(() => {\n    const current = props.children;\n    if (typeof current === 'function' && current.length === 1) {\n      return createMemo(() => current(state));\n    }\n    return current;\n  }) as unknown as JSX.Element;\n}\n", "import { createSignal, onCleanup } from 'solid-js';\n\nconst INPUT_READER_DEBOUNCE_TIMEOUT = 250;\n\nexport default function createInputReader(\n  time = INPUT_READER_DEBOUNCE_TIMEOUT,\n): [read: () => string, write: (value: string) => void] {\n  let timeout: ReturnType<typeof setTimeout> | undefined;\n\n  onCleanup(() => {\n    if (timeout) {\n      clearTimeout(timeout);\n    }\n  });\n\n  const [signal, setSignal] = createSignal<string>('');\n\n  return [\n    signal,\n    (value) => {\n      if (timeout) {\n        clearTimeout(timeout);\n      }\n      timeout = setTimeout(() => {\n        setSignal(value);\n      }, time);\n    },\n  ];\n}\n", "import { createContext, createUniqueId, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\nimport FocusNavigator from '../../utils/focus-navigator';\nimport { MATCHES_NODE } from '../../utils/namespace';\n\ninterface ComboboxContextData {\n  multiple?: boolean;\n  controller: FocusNavigator;\n  activeDescendant: string | undefined;\n  selectedDescendant: string | undefined;\n  inputID: string;\n  labelID: string;\n  optionsID: string;\n  anchor?: HTMLElement | null;\n  inputHovering: boolean;\n  optionsHovering: boolean;\n}\n\nexport const ComboboxContext = createContext<ComboboxContextData>();\n\n/**\n * Reads the nearest `Combobox`'s internal context, which holds the generated\n * ids and the focus navigator shared by its options. Throws when called\n * outside a `Combobox`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/combobox.md}\n */\nexport function useComboboxContext(componentName: string): ComboboxContextData {\n  const context = useContext(ComboboxContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Combobox>`));\n  return context;\n}\n\nexport function createComboboxOptionFocusNavigator(): FocusNavigator {\n  return new FocusNavigator(createUniqueId(), {\n    virtual: true,\n    base: MATCHES_NODE,\n  });\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const COMBOBOX_TAG = createTag('combobox');\nexport const COMBOBOX_INPUT_TAG = createTag('combobox-input');\nexport const COMBOBOX_OPTIONS_TAG = createTag('combobox-options');\nexport const COMBOBOX_OPTION_TAG = createTag('combobox-option');\nexport const COMBOBOX_LABEL_TAG = createTag('combobox-label');\n", "import type { JSX } from 'solid-js';\nimport { createEffect, mergeProps, untrack } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport { useAutocompleteState } from '../../states/create-autocomplete-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createARIAExpandedState,\n  createDisabledState,\n  createExpandedState,\n  createHasActiveState,\n  createHasQueryState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { COMMAND_INPUT_TAG } from '../command/tags';\nimport { useComboboxContext } from './ComboboxContext';\n\nexport type ComboboxInputProps<T extends ValidConstructor = 'input'> = HeadlessPropsWithRef<T>;\n\n/**\n * The text field of a `Combobox`. Typing sets the query, which is debounced by\n * 250ms, and the arrow keys move the active option through `aria-\n * activedescendant` while focus stays in the input.\n *\n * Renders an `<input>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/combobox.md}\n */\nexport function ComboboxInput<T extends ValidConstructor = 'input'>(\n  props: ComboboxInputProps<T>,\n): JSX.Element {\n  const context = useComboboxContext('ComboboxInput');\n  const autocompleteState = useAutocompleteState();\n  const disclosureState = useDisclosureState();\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  const isDisabled = (): boolean | undefined => autocompleteState.disabled() || props.disabled;\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      context.anchor = current;\n\n      if (current instanceof HTMLInputElement) {\n        useEventListener(current, 'input', () => {\n          if (!isDisabled()) {\n            autocompleteState.setQuery(current.value);\n          }\n        });\n      }\n\n      useEventListener(current, 'keydown', (e) => {\n        if (!isDisabled()) {\n          // Keys this panel acts on are not passed on: a `Dialog` or another panel\n          // around this one traps `Tab` and closes on `Escape` too, and would\n          // otherwise move focus a second time or close both layers at once.\n          switch (e.key) {\n            case 'Escape': {\n              e.stopPropagation();\n              disclosureState.close();\n              break;\n            }\n            case 'ArrowUp': {\n              e.preventDefault();\n              if (disclosureState.isOpen()) {\n                context.controller.setPrevChecked(true);\n              } else {\n                disclosureState.open();\n              }\n              break;\n            }\n            case 'ArrowDown': {\n              e.preventDefault();\n              if (disclosureState.isOpen()) {\n                context.controller.setNextChecked(true);\n              } else {\n                disclosureState.open();\n              }\n              break;\n            }\n            case 'Enter': {\n              e.preventDefault();\n              if (disclosureState.isOpen()) {\n                context.selectedDescendant = context.activeDescendant;\n              }\n              break;\n            }\n            default:\n              break;\n          }\n        }\n      });\n      useEventListener(current, 'click', () => {\n        if (!isDisabled()) {\n          disclosureState.toggle();\n        }\n      });\n      useEventListener(current, 'blur', (e) => {\n        if (context.optionsHovering) {\n          return;\n        }\n        autocompleteState.blur();\n        if (\n          (e.relatedTarget && !current.contains(e.relatedTarget as Node)) ||\n          (e.target && !current.contains(e.target as Node))\n        ) {\n          disclosureState.close();\n        }\n      });\n      useEventListener(current, 'mouseenter', () => {\n        context.inputHovering = true;\n      });\n      useEventListener(current, 'mouseleave', () => {\n        context.inputHovering = false;\n      });\n    }\n  });\n\n  createEffect(() => {\n    if (autocompleteState.query() !== '') {\n      if (untrack(() => disclosureState.isOpen())) {\n        context.controller.setFirstChecked();\n      } else {\n        disclosureState.open();\n      }\n    }\n  });\n\n  createEffect(() => {\n    if (context.activeDescendant) {\n      const current = document.getElementById(context.activeDescendant);\n      if (current) {\n        context.controller.setCurrent(current);\n      }\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('input' as T),\n    mergeProps(\n      COMMAND_INPUT_TAG,\n      {\n        id: context.inputID,\n        ref: setInternalRef,\n        // Guarantee it's a text\n        type: 'text',\n        // Guarantee it's interactive\n        tabindex: 0,\n        role: 'combobox',\n\n        // Controls the options listbox\n        'aria-haspopup': 'listbox',\n        'aria-controls': context.optionsID,\n        'aria-labelledby': context.labelID,\n\n        get 'aria-expanded'() {\n          return disclosureState.isOpen();\n        },\n        get 'aria-activedescendant'() {\n          return context.activeDescendant;\n        },\n      },\n      createDisabledState(isDisabled),\n      createARIADisabledState(isDisabled),\n      createExpandedState(() => disclosureState.isOpen()),\n      createARIAExpandedState(() => disclosureState.isOpen()),\n      createHasSelectedState(() => autocompleteState.hasSelected()),\n      createHasActiveState(() => autocompleteState.hasActive()),\n      createHasQueryState(() => autocompleteState.hasQuery()),\n      omitProps(props, ['as', 'ref']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const COMMAND_TAG = createTag('command');\nexport const COMMAND_INPUT_TAG = createTag('command-input');\nexport const COMMAND_OPTIONS_TAG = createTag('command-options');\nexport const COMMAND_OPTION_TAG = createTag('command-option');\nexport const COMMAND_LABEL_TAG = createTag('command-label');\n", "import type { JSX } from 'solid-js';\nimport { mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport { useAutocompleteState } from '../../states/create-autocomplete-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createDisabledState,\n  createExpandedState,\n  createHasActiveState,\n  createHasQueryState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport { useComboboxContext } from './ComboboxContext';\nimport { COMBOBOX_LABEL_TAG } from './tags';\n\nexport type ComboboxLabelProps<T extends ValidConstructor = 'label'> = HeadlessProps<T>;\n\n/**\n * The accessible name of a `Combobox`, wired up through `aria-labelledby`.\n *\n * Renders a `<label>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/combobox.md}\n */\nexport function ComboboxLabel<T extends ValidConstructor = 'label'>(\n  props: ComboboxLabelProps<T>,\n): JSX.Element {\n  const context = useComboboxContext('ComboboxLabel');\n  const autocompleteState = useAutocompleteState();\n  const disclosureState = useDisclosureState();\n\n  return createDynamic(\n    () => props.as ?? ('label' as T),\n    mergeProps(\n      COMBOBOX_LABEL_TAG,\n      {\n        id: context.labelID,\n      },\n      createDisabledState(() => autocompleteState.disabled()),\n      createExpandedState(() => disclosureState.isOpen()),\n      createHasSelectedState(() => autocompleteState.hasSelected()),\n      createHasActiveState(() => autocompleteState.hasActive()),\n      createHasQueryState(() => autocompleteState.hasQuery()),\n      omitProps(props, ['as']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport {\n  createComponent,\n  createEffect,\n  createRenderEffect,\n  createUniqueId,\n  mergeProps,\n} from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  AutocompleteOptionStateOptions,\n  AutocompleteOptionStateRenderProps,\n} from '../../states/create-autocomplete-option-state';\nimport {\n  AutocompleteOptionStateProvider,\n  createAutocompleteOptionState,\n} from '../../states/create-autocomplete-option-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createOwnerAttribute } from '../../utils/focus-navigator';\nimport {\n  createARIADisabledState,\n  createARIASelectedState,\n  createActiveState,\n  createDisabledState,\n  createMatchesState,\n  createSelectedState,\n} from '../../utils/state-props';\nimport type { OmitAndMerge, Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useVirtualFocus } from '../../utils/virtual-focus';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport { useComboboxContext } from './ComboboxContext';\nimport { COMBOBOX_OPTION_TAG } from './tags';\n\nexport type ComboboxOptionBaseProps<V> = Prettify<\n  AutocompleteOptionStateOptions<V> & AutocompleteOptionStateRenderProps\n>;\n\nexport type ComboboxOptionProps<V, T extends ValidConstructor = 'li'> = HeadlessPropsWithRef<\n  T,\n  OmitAndMerge<ComboboxOptionBaseProps<V>, ButtonProps<T>>\n>;\n\n/**\n * One option of a `Combobox`. Carries `tc-matches` while it matches the\n * current query, so options can be hidden with CSS instead of being unmounted.\n *\n * Renders an `<li>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/combobox.md}\n */\nexport function ComboboxOption<V, T extends ValidConstructor = 'li'>(\n  props: ComboboxOptionProps<V, T>,\n): JSX.Element {\n  const context = useComboboxContext('ComboboxOptions');\n  const disclosure = useDisclosureState();\n  const state = createAutocompleteOptionState(props);\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  const id = createUniqueId();\n\n  createEffect(() => {\n    if (!state.disabled() && context.selectedDescendant === id) {\n      state.select();\n      if (!context.multiple) {\n        disclosure.close();\n      }\n    }\n  });\n\n  function focusOption(): void {\n    context.activeDescendant = id;\n    state.focus();\n  }\n\n  // I would really love to use createEffect but for some reason\n  // the timing is never accurate\n  createRenderEffect(() => {\n    const current = internalRef();\n\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        if (!state.disabled()) {\n          state.select();\n          focusOption();\n          if (!context.multiple) {\n            disclosure.close();\n          }\n        }\n      });\n      useEventListener(current, 'mouseenter', () => {\n        if (!state.disabled()) {\n          focusOption();\n        }\n      });\n      useEventListener(current, 'mouseleave', () => {\n        state.blur();\n      });\n      useVirtualFocus((el) => {\n        if (el === current) {\n          focusOption();\n        }\n      });\n    }\n  });\n\n  return createComponent(\n    Button,\n    mergeProps(\n      COMBOBOX_OPTION_TAG,\n      createOwnerAttribute(context.controller.getId()),\n      {\n        id,\n        get as() {\n          return props.as ?? ('li' as T);\n        },\n        role: 'option',\n        tabindex: -1,\n        ref: setInternalRef,\n      },\n      createDisabledState(() => state.disabled()),\n      createARIADisabledState(() => state.disabled()),\n      createSelectedState(() => state.isSelected()),\n      createARIASelectedState(() => state.isSelected()),\n      createActiveState(() => state.isActive()),\n      createMatchesState(() => state.matches()),\n      omitProps(props, ['as', 'children', 'disabled', 'value', 'ref']),\n      {\n        get children() {\n          return createComponent(AutocompleteOptionStateProvider, {\n            state,\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as ButtonProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createContext, createMemo, untrack, useContext } from 'solid-js';\nimport assert from '../utils/assert';\nimport { useAutocompleteState } from './create-autocomplete-state';\n\nexport interface AutocompleteOptionStateOptions<T> {\n  value: T;\n  disabled?: boolean;\n}\n\nexport interface AutocompleteOptionStateProperties {\n  isSelected: () => boolean;\n  select: () => void;\n  isActive: () => boolean;\n  focus: () => void;\n  blur: () => void;\n  disabled: () => boolean;\n  matches: () => boolean;\n}\n\n/**\n * Creates one option's view of the nearest autocomplete state, so the option\n * can ask whether it is selected, active, or a match for the current query.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#autocomplete-option-state}\n */\nexport function createAutocompleteOptionState<T>(\n  options: AutocompleteOptionStateOptions<T>,\n): AutocompleteOptionStateProperties {\n  const state = useAutocompleteState<T>();\n  // `disabled` is optional, so it is coerced before the logical OR: `??` would\n  // wrongly stop at an explicit `false` instead of falling back to the parent.\n  const isDisabled = createMemo(() => !!options.disabled || state.disabled());\n  const isActive = createMemo(() => state.isActive(options.value));\n  return {\n    isSelected: createMemo(() => state.isSelected(options.value)),\n    isActive,\n    select(): void {\n      if (!untrack(isDisabled)) {\n        state.select(options.value);\n      }\n    },\n    focus(): void {\n      if (!untrack(isDisabled)) {\n        state.focus(options.value);\n      }\n    },\n    blur(): void {\n      if (!untrack(isDisabled) && isActive()) {\n        state.blur();\n      }\n    },\n    matches: createMemo(() => state.matches(options.value)),\n    disabled: isDisabled,\n  };\n}\n\nexport interface AutocompleteOptionStateRenderProps {\n  children?: JSX.Element | ((state: AutocompleteOptionStateProperties) => JSX.Element);\n}\n\nexport interface AutocompleteOptionStateProviderProps extends AutocompleteOptionStateRenderProps {\n  state: AutocompleteOptionStateProperties;\n}\n\nconst AutocompleteOptionStateContext = createContext<AutocompleteOptionStateProperties>();\n\nexport function AutocompleteOptionStateProvider(\n  props: AutocompleteOptionStateProviderProps,\n): JSX.Element {\n  return createComponent(AutocompleteOptionStateContext.Provider, {\n    value: props.state,\n    get children() {\n      const current = props.children;\n      if (typeof current === 'function') {\n        return current(props.state);\n      }\n      return current;\n    },\n  });\n}\n\n/**\n * Reads the nearest autocomplete option state from context. Throws when there\n * is none.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#autocomplete-option-state}\n */\nexport function useAutocompleteOptionState(): AutocompleteOptionStateProperties {\n  const ctx = useContext(AutocompleteOptionStateContext);\n  assert(ctx, new Error('Missing <AutocompleteOptionStateProvider>'));\n  return ctx;\n}\n\n/**\n * Passes the nearest autocomplete option state to a render prop. A function\n * child is treated as a render prop only when it declares exactly one\n * parameter.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#autocomplete-option-state}\n */\nexport function AutocompleteOptionStateChild(\n  props: AutocompleteOptionStateRenderProps,\n): JSX.Element {\n  const state = useAutocompleteOptionState();\n  return createMemo(() => {\n    const current = props.children;\n    if (typeof current === 'function' && current.length === 1) {\n      return createMemo(() => current(state));\n    }\n    return current;\n  }) as unknown as JSX.Element;\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps, onCleanup, onMount, untrack } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { AutocompleteStateRenderProps } from '../../states/create-autocomplete-state';\nimport {\n  AutocompleteStateChild,\n  useAutocompleteState,\n} from '../../states/create-autocomplete-state';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { SELECTED_NODE } from '../../utils/namespace';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createExpandedState,\n  createHasActiveState,\n  createHasQueryState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { afterTransition } from '../../utils/wait-for-transition';\nimport { useComboboxContext } from './ComboboxContext';\nimport { COMBOBOX_OPTIONS_TAG } from './tags';\n\nexport type ComboboxOptionsBaseProps<V> = Prettify<\n  UnmountableProps & AutocompleteStateRenderProps<V>\n>;\n\nexport type ComboboxOptionsProps<V, T extends ValidConstructor = 'ul'> = HeadlessPropsWithRef<\n  T,\n  ComboboxOptionsBaseProps<V>\n>;\n\n/**\n * The popup list of a `Combobox`. Unmounts while closed unless\n * `unmount={false}` is set.\n *\n * Renders a `<ul>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/combobox.md}\n */\nexport function ComboboxOptions<V, T extends ValidConstructor = 'ul'>(\n  props: ComboboxOptionsProps<V, T>,\n): JSX.Element {\n  const context = useComboboxContext('ComboboxOptions');\n  const autocompleteState = useAutocompleteState();\n  const disclosureState = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      context.controller.setRef(current);\n      onCleanup(() => {\n        context.controller.clearRef();\n      });\n\n      useEventListener(current, 'focusin', () => {\n        if (context.anchor) {\n          context.anchor.focus();\n        }\n      });\n      useEventListener(current, 'mouseenter', () => {\n        context.optionsHovering = true;\n      });\n      useEventListener(current, 'mouseleave', () => {\n        context.optionsHovering = false;\n      });\n    }\n  });\n\n  createEffect(() => {\n    if (!disclosureState.isOpen()) {\n      setInternalRef(undefined);\n    }\n  });\n\n  onMount(() => {\n    createEffect(() => {\n      const current = internalRef();\n      if (current instanceof HTMLElement && disclosureState.isOpen()) {\n        // Waiting for the popup to finish transitioning in is what makes this\n        // land at all: the options only exist once it has mounted.\n        afterTransition(current, () => {\n          if (untrack(() => autocompleteState.hasSelected())) {\n            context.controller.setFirstChecked(SELECTED_NODE);\n          } else {\n            context.controller.setFirstChecked();\n          }\n        });\n      }\n    });\n  });\n\n  return createUnmountable(\n    props,\n    () => disclosureState.isOpen(),\n    () =>\n      createDynamic(\n        () => props.as ?? ('ul' as T),\n        mergeProps(\n          COMBOBOX_OPTIONS_TAG,\n          {\n            id: context.optionsID,\n            role: 'listbox',\n            'aria-multiselectable': context.multiple,\n            ref: setInternalRef,\n            // TODO should Combobox support \"horizontal\"?\n            'aria-orientation': 'vertical',\n            tabindex: -1,\n          },\n          createDisabledState(() => autocompleteState.disabled()),\n          createARIADisabledState(() => autocompleteState.disabled()),\n          createExpandedState(() => disclosureState.isOpen()),\n          createHasSelectedState(() => autocompleteState.hasSelected()),\n          createHasActiveState(() => autocompleteState.hasActive()),\n          createHasQueryState(() => autocompleteState.hasQuery()),\n          omitProps(props, ['as', 'children', 'ref']),\n          {\n            get children() {\n              return createComponent(AutocompleteStateChild, {\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n        ) as DynamicProps<T>,\n      ),\n  );\n}\n", "/**\n * Resolves once `el` has no animation left running, which is how the\n * transition-aware components wait for a CSS transition or animation to finish\n * without listening for `transitionend`.\n *\n * Environments without `getAnimations` (older browsers, jsdom) resolve\n * immediately rather than throwing.\n */\nexport default async function waitForTransition(el: Element): Promise<void> {\n  // `getAnimations` flushes style, so reading it straight away would freeze the\n  // current styles of every element that has not applied its own classes yet —\n  // a sibling that has just mounted would then transition *into* its starting\n  // state before transitioning out of it. Yielding first lets the whole group\n  // apply its classes against the same style baseline.\n  await Promise.resolve();\n  try {\n    const animations = el.getAnimations();\n    if (animations.length > 0) {\n      const finished: Promise<Animation>[] = [];\n      for (const animation of animations) {\n        finished.push(animation.finished);\n      }\n      await Promise.all(finished);\n    }\n  } catch {\n    // do nothing\n  }\n}\n\n/**\n * Runs `callback` once `el` has finished animating.\n *\n * `waitForTransition` swallows its own failures, so the rejection handler is\n * only there to keep the promise from floating.\n */\nexport function afterTransition(el: Element, callback: () => void): void {\n  waitForTransition(el).then(callback, () => {\n    // `waitForTransition` never rejects\n  });\n}\n", "import type { JSX } from 'solid-js';\nimport {\n  createComponent,\n  createEffect,\n  createMemo,\n  createSignal,\n  createUniqueId,\n  mergeProps,\n} from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  AutocompleteStateRenderProps,\n  MultipleAutocompleteStateControlledOptions,\n  MultipleAutocompleteStateUncontrolledOptions,\n  SingleAutocompleteStateControlledOptions,\n  SingleAutocompleteStateUncontrolledOptions,\n} from '../../states/create-autocomplete-state';\nimport {\n  AutocompleteStateProvider,\n  createMultipleAutocompleteState,\n  createSingleAutocompleteState,\n} from '../../states/create-autocomplete-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createHasActiveState,\n  createHasQueryState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport { CommandContext, createCommandOptionFocusNavigator } from './CommandContext';\nimport { COMMAND_TAG } from './tags';\n\nexport interface CommandBaseProps {\n  horizontal?: boolean;\n}\n\nexport type SingleCommandControlledBaseProps<V> = Prettify<\n  CommandBaseProps & SingleAutocompleteStateControlledOptions<V> & AutocompleteStateRenderProps<V>\n>;\n\nexport type SingleCommandControlledProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  SingleCommandControlledBaseProps<V>\n>;\n\nexport type SingleCommandUncontrolledBaseProps<V> = Prettify<\n  CommandBaseProps & SingleAutocompleteStateUncontrolledOptions<V> & AutocompleteStateRenderProps<V>\n>;\n\nexport type SingleCommandUncontrolledProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  SingleCommandUncontrolledBaseProps<V>\n>;\n\nexport type SingleCommandProps<V, T extends ValidConstructor = 'div'> =\n  | SingleCommandControlledProps<V, T>\n  | SingleCommandUncontrolledProps<V, T>;\n\nexport type MultipleCommandControlledBaseProps<V> = Prettify<\n  CommandBaseProps & MultipleAutocompleteStateControlledOptions<V> & AutocompleteStateRenderProps<V>\n>;\n\nexport type MultipleCommandControlledProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  MultipleCommandControlledBaseProps<V>\n>;\n\nexport type MultipleCommandUncontrolledBaseProps<V> = Prettify<\n  CommandBaseProps &\n    MultipleAutocompleteStateUncontrolledOptions<V> &\n    AutocompleteStateRenderProps<V>\n>;\n\nexport type MultipleCommandUncontrolledProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  MultipleCommandUncontrolledBaseProps<V>\n>;\n\nexport type MultipleCommandProps<V, T extends ValidConstructor = 'div'> =\n  | MultipleCommandControlledProps<V, T>\n  | MultipleCommandUncontrolledProps<V, T>;\n\nexport type CommandProps<V, T extends ValidConstructor = 'div'> =\n  | SingleCommandProps<V, T>\n  | MultipleCommandProps<V, T>;\n\nfunction isCommandMultiple<V, T extends ValidConstructor = 'div'>(\n  props: CommandProps<V, T>,\n): props is MultipleCommandProps<V, T> {\n  return !!props.multiple;\n}\n\nfunction isCommandUncontrolled<V, T extends ValidConstructor = 'div'>(\n  props: CommandProps<V, T>,\n): props is SingleCommandUncontrolledProps<V, T> | MultipleCommandUncontrolledProps<V, T> {\n  return 'defaultValue' in props;\n}\n\n/**\n * An always-visible filtered listbox — the body of a command palette. Same\n * autocomplete state as `Combobox`, but with no popup of its own, so it can be\n * dropped inside a `CommandBar` or rendered inline.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command.md}\n */\nexport function Command<V, T extends ValidConstructor = 'div'>(\n  props: CommandProps<V, T>,\n): JSX.Element {\n  return createMemo(() => {\n    const controller = createCommandOptionFocusNavigator();\n    const state = isCommandMultiple(props)\n      ? createMultipleAutocompleteState(props)\n      : createSingleAutocompleteState(props);\n    const [activeDescendant, setActiveDescendant] = createSignal<string>();\n    const [selectedDescendant, setSelectedDescendant] = createSignal<string | undefined>(\n      undefined,\n      {\n        equals: false,\n      },\n    );\n\n    const inputID = createUniqueId();\n    const optionsID = createUniqueId();\n    const labelID = createUniqueId();\n\n    createEffect(() => {\n      if (!state.hasActive()) {\n        setActiveDescendant(undefined);\n      }\n    });\n\n    return createComponent(CommandContext.Provider, {\n      value: {\n        multiple: !!props.multiple,\n        controller,\n        get activeDescendant() {\n          return activeDescendant();\n        },\n        set activeDescendant(value: string | undefined) {\n          setActiveDescendant(value);\n        },\n        get selectedDescendant() {\n          return selectedDescendant();\n        },\n        set selectedDescendant(value: string | undefined) {\n          setSelectedDescendant(value);\n        },\n        inputID,\n        optionsID,\n        labelID,\n        optionsHovering: false,\n      },\n      get children() {\n        return createDynamic(\n          () => props.as ?? 'div',\n          mergeProps(\n            COMMAND_TAG,\n            {\n              id: controller.getId(),\n              'aria-labelledby': labelID,\n            },\n            createDisabledState(() => state.disabled()),\n            createARIADisabledState(() => state.disabled()),\n            createHasSelectedState(() => state.hasSelected()),\n            createHasActiveState(() => state.hasActive()),\n            createHasQueryState(() => state.hasQuery()),\n            isCommandUncontrolled(props)\n              ? omitProps(props, [\n                  'as',\n                  'by',\n                  'children',\n                  'defaultValue',\n                  'disabled',\n                  'horizontal',\n                  'multiple',\n                  'onChange',\n                  'toggleable',\n                ])\n              : omitProps(props, [\n                  'as',\n                  'by',\n                  'children',\n                  'value',\n                  'disabled',\n                  'horizontal',\n                  'multiple',\n                  'onChange',\n                  'toggleable',\n                ]),\n            {\n              get children() {\n                return createComponent(AutocompleteStateProvider, {\n                  state,\n                  get children() {\n                    return props.children;\n                  },\n                });\n              },\n            },\n          ) as DynamicProps<T>,\n        );\n      },\n    });\n  }) as unknown as JSX.Element;\n}\n", "import { createContext, createUniqueId, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\nimport FocusNavigator from '../../utils/focus-navigator';\nimport { MATCHES_NODE } from '../../utils/namespace';\n\ninterface CommandContextData {\n  multiple: boolean;\n  controller: FocusNavigator;\n  activeDescendant: string | undefined;\n  selectedDescendant: string | undefined;\n  inputID: string;\n  labelID: string;\n  optionsID: string;\n  anchor?: HTMLElement | null;\n  optionsHovering: boolean;\n}\n\nexport const CommandContext = createContext<CommandContextData>();\n\n/**\n * Reads the nearest `Command`'s internal context, which holds the generated\n * ids and the focus navigator shared by its options. Throws when called\n * outside a `Command`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command.md}\n */\nexport function useCommandContext(componentName: string): CommandContextData {\n  const context = useContext(CommandContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Command>`));\n  return context;\n}\n\nexport function createCommandOptionFocusNavigator(): FocusNavigator {\n  return new FocusNavigator(createUniqueId(), {\n    virtual: true,\n    base: MATCHES_NODE,\n  });\n}\n", "import type { JSX } from 'solid-js';\nimport { createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport { useAutocompleteState } from '../../states/create-autocomplete-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { SELECTED_NODE } from '../../utils/namespace';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createHasActiveState,\n  createHasQueryState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useCommandContext } from './CommandContext';\nimport { COMMAND_INPUT_TAG } from './tags';\n\nexport type CommandInputProps<T extends ValidConstructor = 'input'> = HeadlessPropsWithRef<T>;\n\n/**\n * The query field of a `Command`. Typing sets the query, which is debounced by\n * 250ms, and the arrow keys move the active option without moving focus out of\n * the input.\n *\n * Renders an `<input>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command.md}\n */\nexport function CommandInput<T extends ValidConstructor = 'input'>(\n  props: CommandInputProps<T>,\n): JSX.Element {\n  const context = useCommandContext('CommandInput');\n  const state = useAutocompleteState();\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  const isDisabled = (): boolean | undefined => state.disabled() || props.disabled;\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      context.anchor = current;\n\n      if (current instanceof HTMLInputElement) {\n        useEventListener(current, 'input', () => {\n          if (!isDisabled()) {\n            state.setQuery(current.value);\n          }\n        });\n      }\n      useEventListener(current, 'keydown', (e) => {\n        if (!isDisabled()) {\n          switch (e.key) {\n            case 'ArrowUp': {\n              e.preventDefault();\n              context.controller.setPrevChecked(true);\n              break;\n            }\n            case 'ArrowDown': {\n              e.preventDefault();\n              context.controller.setNextChecked(true);\n              break;\n            }\n            case 'Enter': {\n              e.preventDefault();\n              context.selectedDescendant = context.activeDescendant;\n              break;\n            }\n          }\n        }\n      });\n      useEventListener(current, 'focus', () => {\n        if (context.activeDescendant) {\n          const ref = document.getElementById(context.activeDescendant);\n          if (ref) {\n            context.controller.setCurrent(ref);\n          }\n        } else if (state.hasSelected()) {\n          context.controller.setFirstChecked(SELECTED_NODE);\n        } else {\n          context.controller.setFirstChecked();\n        }\n      });\n      useEventListener(current, 'blur', () => {\n        if (!context.optionsHovering) {\n          state.blur();\n        }\n      });\n    }\n  });\n\n  createEffect(() => {\n    if (state.query() !== '') {\n      context.controller.setFirstChecked();\n    }\n  });\n\n  createEffect(() => {\n    if (context.activeDescendant) {\n      const ref = document.getElementById(context.activeDescendant);\n      if (ref) {\n        context.controller.setCurrent(ref);\n      }\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('input' as T),\n    mergeProps(\n      COMMAND_INPUT_TAG,\n      {\n        id: context.inputID,\n        ref: setInternalRef,\n        // Guarantee it's a text\n        type: 'text',\n        // Guarantee it's interactive\n        tabindex: 0,\n        role: 'combobox',\n\n        // Controls the options listbox\n        'aria-controls': context.optionsID,\n        // Since combobox roles have aria-expanded=false\n        // as default but Command has a visible listbox\n        // we set this to true\n        'aria-expanded': true,\n        get 'aria-activedescendant'() {\n          return context.activeDescendant;\n        },\n      },\n      createDisabledState(isDisabled),\n      createARIADisabledState(isDisabled),\n      createHasSelectedState(() => state.hasSelected()),\n      createHasActiveState(() => state.hasActive()),\n      createHasQueryState(() => state.hasQuery()),\n      omitProps(props, ['as', 'ref']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport { useAutocompleteState } from '../../states/create-autocomplete-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createDisabledState,\n  createHasActiveState,\n  createHasQueryState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport { useCommandContext } from './CommandContext';\nimport { COMMAND_LABEL_TAG } from './tags';\n\nexport type CommandLabelProps<T extends ValidConstructor = 'label'> = HeadlessProps<T>;\n\n/**\n * The accessible name of a `Command`, wired up through `aria-labelledby`.\n *\n * Renders a `<label>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command.md}\n */\nexport function CommandLabel<T extends ValidConstructor = 'label'>(\n  props: CommandLabelProps<T>,\n): JSX.Element {\n  const context = useCommandContext('CommandLabel');\n  const state = useAutocompleteState();\n\n  return createDynamic(\n    () => props.as ?? ('label' as T),\n    mergeProps(\n      omitProps(props, ['as']),\n      COMMAND_LABEL_TAG,\n      {\n        id: context.labelID,\n      },\n      createDisabledState(() => state.disabled()),\n      createHasSelectedState(() => state.hasSelected()),\n      createHasActiveState(() => state.hasActive()),\n      createHasQueryState(() => state.hasQuery()),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  AutocompleteOptionStateOptions,\n  AutocompleteOptionStateRenderProps,\n} from '../../states/create-autocomplete-option-state';\nimport {\n  AutocompleteOptionStateProvider,\n  createAutocompleteOptionState,\n} from '../../states/create-autocomplete-option-state';\nimport type { HeadlessPropsWithRef, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createOwnerAttribute } from '../../utils/focus-navigator';\nimport {\n  createARIADisabledState,\n  createARIASelectedState,\n  createActiveState,\n  createDisabledState,\n  createMatchesState,\n  createSelectedState,\n} from '../../utils/state-props';\nimport type { OmitAndMerge, Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useVirtualFocus } from '../../utils/virtual-focus';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport { useCommandContext } from './CommandContext';\nimport { COMMAND_OPTION_TAG } from './tags';\n\nexport type CommandOptionBaseProps<V> = Prettify<\n  AutocompleteOptionStateOptions<V> & AutocompleteOptionStateRenderProps\n>;\n\nexport type CommandOptionProps<V, T extends ValidConstructor = 'li'> = HeadlessPropsWithRef<\n  T,\n  OmitAndMerge<CommandOptionBaseProps<V>, ButtonProps<T>>\n>;\n\n/**\n * One result in a `Command`. Carries `tc-matches` while it matches the current\n * query.\n *\n * Renders an `<li>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command.md}\n */\nexport function CommandOption<V, T extends ValidConstructor = 'li'>(\n  props: CommandOptionProps<V, T>,\n): JSX.Element {\n  const context = useCommandContext('CommandOption');\n  const [internalRef, setInternalRef] = createForwardRef(props);\n  const state = createAutocompleteOptionState(props);\n  const id = createUniqueId();\n\n  createEffect(() => {\n    if (!state.disabled() && context.selectedDescendant === id) {\n      state.select();\n    }\n  });\n\n  function focusOption(): void {\n    context.activeDescendant = id;\n    state.focus();\n  }\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        if (!state.disabled()) {\n          state.select();\n          focusOption();\n        }\n      });\n      useEventListener(current, 'mouseenter', () => {\n        if (!state.disabled()) {\n          focusOption();\n        }\n      });\n      useEventListener(current, 'mouseleave', () => {\n        state.blur();\n      });\n      useVirtualFocus((el) => {\n        if (el === current) {\n          focusOption();\n        }\n      });\n    }\n  });\n\n  return createComponent(\n    Button,\n    mergeProps(\n      COMMAND_OPTION_TAG,\n      createOwnerAttribute(context.controller.getId()),\n      {\n        id,\n        get as() {\n          return props.as ?? ('li' as T);\n        },\n        role: 'option',\n        tabindex: -1,\n        ref: setInternalRef,\n      },\n      createDisabledState(() => state.disabled()),\n      createARIADisabledState(() => state.disabled()),\n      createSelectedState(() => state.isSelected()),\n      createARIASelectedState(() => state.isSelected()),\n      createActiveState(() => state.isActive()),\n      createMatchesState(() => state.matches()),\n      omitProps(props, ['as', 'children', 'value', 'ref']),\n      {\n        get children() {\n          return createComponent(AutocompleteOptionStateProvider, {\n            state,\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as ButtonProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps, onCleanup } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { AutocompleteStateRenderProps } from '../../states/create-autocomplete-state';\nimport {\n  AutocompleteStateChild,\n  useAutocompleteState,\n} from '../../states/create-autocomplete-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createHasActiveState,\n  createHasQueryState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useCommandContext } from './CommandContext';\nimport { COMMAND_OPTIONS_TAG } from './tags';\n\nexport type CommandOptionsProps<V, T extends ValidConstructor = 'ul'> = HeadlessPropsWithRef<\n  T,\n  AutocompleteStateRenderProps<V>\n>;\n\n/**\n * The list of results in a `Command`.\n *\n * Renders a `<ul>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command.md}\n */\nexport function CommandOptions<V, T extends ValidConstructor = 'ul'>(\n  props: CommandOptionsProps<V, T>,\n): JSX.Element {\n  const context = useCommandContext('CommandOptions');\n  const state = useAutocompleteState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      context.controller.setRef(current);\n      onCleanup(() => {\n        context.controller.clearRef();\n      });\n      useEventListener(current, 'focusin', () => {\n        if (context.anchor) {\n          context.anchor.focus();\n        }\n      });\n      useEventListener(current, 'mouseenter', () => {\n        context.optionsHovering = true;\n      });\n      useEventListener(current, 'mouseleave', () => {\n        context.optionsHovering = false;\n      });\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('ul' as T),\n    mergeProps(\n      COMMAND_OPTIONS_TAG,\n      {\n        id: context.optionsID,\n        role: 'listbox',\n        'aria-multiselectable': context.multiple,\n        ref: setInternalRef,\n        // TODO should Command support \"horizontal\"?\n        'aria-orientation': 'vertical',\n        tabindex: -1,\n      },\n      createDisabledState(() => state.disabled()),\n      createARIADisabledState(() => state.disabled()),\n      createHasSelectedState(() => state.hasSelected()),\n      createHasActiveState(() => state.hasActive()),\n      createHasQueryState(() => state.hasQuery()),\n      omitProps(props, ['as', 'children', 'ref']),\n      {\n        get children() {\n          return createComponent(AutocompleteStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  DisclosureStateControlledOptions,\n  DisclosureStateRenderProps,\n  DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n  DisclosureStateProvider,\n  createDisclosureState,\n} from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createExpandedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport useFocusStartPoint from '../../utils/use-focus-start-point';\nimport { CommandBarContext } from './CommandBarContext';\nimport { COMMAND_BAR_TAG } from './tags';\n\nexport type CommandBarControlledBaseProps = Prettify<\n  DisclosureStateControlledOptions & DisclosureStateRenderProps & UnmountableProps\n>;\n\nexport type CommandBarControlledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  CommandBarControlledBaseProps\n>;\n\nexport type CommandBarUncontrolledBaseProps = Prettify<\n  DisclosureStateUncontrolledOptions & DisclosureStateRenderProps & UnmountableProps\n>;\n\nexport type CommandBarUncontrolledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  CommandBarUncontrolledBaseProps\n>;\n\nexport type CommandBarProps<T extends ValidConstructor = 'div'> =\n  | CommandBarControlledProps<T>\n  | CommandBarUncontrolledProps<T>;\n\nfunction isCommandBarUncontrolled<T extends ValidConstructor = 'div'>(\n  props: CommandBarProps<T>,\n): props is CommandBarUncontrolledProps<T> {\n  return 'defaultOpen' in props;\n}\n\n/**\n * A modal opened by a keyboard shortcut,\n * <kbd>Cmd</kbd>/<kbd>Ctrl</kbd>+<kbd>K</kbd> by default. It is a dialog, not\n * a palette on its own: put a `Command` inside it for the searchable part.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command-bar.md}\n */\nexport function CommandBar<T extends ValidConstructor = 'div'>(\n  props: CommandBarProps<T>,\n): JSX.Element {\n  const ownerID = createUniqueId();\n  const panelID = createUniqueId();\n  const titleID = createUniqueId();\n  const descriptionID = createUniqueId();\n  const fsp = useFocusStartPoint();\n\n  const state = createDisclosureState(props);\n\n  createEffect(() => {\n    if (state.isOpen()) {\n      fsp.save();\n    } else {\n      fsp.load();\n    }\n  });\n\n  createEffect(() => {\n    useEventListener(window, 'keydown', (e) => {\n      if ((e.metaKey || e.ctrlKey) && e.key === 'k' && !e.defaultPrevented) {\n        e.preventDefault();\n        state.open();\n      }\n    });\n  });\n\n  return createComponent(CommandBarContext.Provider, {\n    value: {\n      ownerID,\n      panelID,\n      titleID,\n      descriptionID,\n    },\n    get children() {\n      return createUnmountable(\n        props,\n        () => state.isOpen(),\n        () =>\n          createDynamic(\n            () => props.as ?? ('div' as T),\n            mergeProps(\n              COMMAND_BAR_TAG,\n              createDisabledState(() => state.disabled()),\n              createARIADisabledState(() => state.disabled()),\n              createExpandedState(() => state.isOpen()),\n              {\n                id: ownerID,\n                role: 'dialog',\n                'aria-modal': true,\n                'aria-labelledby': titleID,\n                'aria-describedby': descriptionID,\n                get children() {\n                  return createComponent(DisclosureStateProvider, {\n                    state,\n                    get children() {\n                      return props.children;\n                    },\n                  });\n                },\n              },\n              isCommandBarUncontrolled(props)\n                ? omitProps(props, [\n                    'as',\n                    'children',\n                    'defaultOpen',\n                    'disabled',\n                    'onChange',\n                    'onClose',\n                    'onOpen',\n                    'unmount',\n                  ])\n                : omitProps(props, [\n                    'as',\n                    'children',\n                    'isOpen',\n                    'disabled',\n                    'onChange',\n                    'onClose',\n                    'onOpen',\n                    'unmount',\n                  ]),\n            ) as DynamicProps<T>,\n          ),\n      );\n    },\n  });\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface CommandBarContextData {\n  ownerID: string;\n  panelID: string;\n  titleID: string;\n  descriptionID: string;\n  onOpen?: () => void;\n  onClose?: () => void;\n}\n\nexport const CommandBarContext = createContext<CommandBarContextData>();\n\n/**\n * Reads the nearest `CommandBar`'s internal context, which holds the generated\n * ids for its title, description and panel. Throws when called outside a\n * `CommandBar`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command-bar.md}\n */\nexport function useCommandBarContext(componentName: string): CommandBarContextData {\n  const context = useContext(CommandBarContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <CommandBar>`));\n  return context;\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const COMMAND_BAR_TAG = createTag('command-bar');\nexport const COMMAND_BAR_DESCRIPTION_TAG = createTag('command-bar-description');\nexport const COMMAND_BAR_OVERLAY_TAG = createTag('command-bar-overlay');\nexport const COMMAND_BAR_PANEL_TAG = createTag('command-bar-panel');\nexport const COMMAND_BAR_TITLE_TAG = createTag('command-bar-title');\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport { useCommandBarContext } from './CommandBarContext';\nimport { COMMAND_BAR_DESCRIPTION_TAG } from './tags';\n\nexport type CommandBarDescriptionProps<T extends ValidConstructor = 'p'> = HeadlessProps<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The accessible description of a `CommandBar`, wired up through `aria-\n * describedby`.\n *\n * Renders a `<p>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command-bar.md}\n */\nexport function CommandBarDescription<T extends ValidConstructor = 'p'>(\n  props: CommandBarDescriptionProps<T>,\n): JSX.Element {\n  const context = useCommandBarContext('CommandBarDescription');\n  const state = useDisclosureState();\n  return createDynamic(\n    () => props.as ?? ('p' as T),\n    mergeProps(\n      COMMAND_BAR_DESCRIPTION_TAG,\n      {\n        id: context.descriptionID,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      omitProps(props, ['as', 'children']),\n      createExpandedState(() => state.isOpen()),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useCommandBarContext } from './CommandBarContext';\nimport { COMMAND_BAR_OVERLAY_TAG } from './tags';\n\nexport type CommandBarOverlayProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The backdrop behind a `CommandBar`. Clicking it closes the bar, so give it a\n * size — it has no styles of its own.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command-bar.md}\n */\nexport function CommandBarOverlay<T extends ValidConstructor = 'p'>(\n  props: CommandBarOverlayProps<T>,\n): JSX.Element {\n  useCommandBarContext('CommandBarOverlay');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        state.close();\n      });\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      COMMAND_BAR_OVERLAY_TAG,\n      {\n        ref: setInternalRef,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n      omitProps(props, ['as', 'children', 'ref']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { focusFirst, lockFocus } from '../../utils/focus-navigation';\nimport getFocusableElements from '../../utils/focus-query';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { afterTransition } from '../../utils/wait-for-transition';\nimport { useCommandBarContext } from './CommandBarContext';\nimport { COMMAND_BAR_PANEL_TAG } from './tags';\n\nexport type CommandBarPanelProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The content of a `CommandBar`. Traps `Tab` while open and restores focus on\n * close.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command-bar.md}\n */\nexport function CommandBarPanel<T extends ValidConstructor = 'div'>(\n  props: CommandBarPanelProps<T>,\n): JSX.Element {\n  const context = useCommandBarContext('CommandBarPanel');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      if (state.isOpen()) {\n        afterTransition(current, () => {\n          focusFirst(getFocusableElements(current), false);\n        });\n\n        useEventListener(current, 'keydown', (e) => {\n          if (!props.disabled) {\n            // Keys this panel acts on are not passed on: a `Dialog` or another panel\n            // around this one traps `Tab` and closes on `Escape` too, and would\n            // otherwise move focus a second time or close both layers at once.\n            switch (e.key) {\n              case 'Tab': {\n                e.preventDefault();\n                e.stopPropagation();\n                lockFocus(current, e.shiftKey, false);\n                break;\n              }\n              case 'Escape': {\n                e.stopPropagation();\n                state.close();\n                break;\n              }\n              default:\n                break;\n            }\n          }\n        });\n      }\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      COMMAND_BAR_PANEL_TAG,\n      {\n        id: context.panelID,\n        ref: setInternalRef,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n      omitProps(props, ['as', 'children', 'ref']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport { useCommandBarContext } from './CommandBarContext';\nimport { COMMAND_BAR_TITLE_TAG } from './tags';\n\nexport type CommandBarTitleProps<T extends ValidConstructor = 'h2'> = HeadlessProps<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The accessible name of a `CommandBar`, wired up through `aria-labelledby`.\n *\n * Renders an `<h2>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/command-bar.md}\n */\nexport function CommandBarTitle<T extends ValidConstructor = 'h2'>(\n  props: CommandBarTitleProps<T>,\n): JSX.Element {\n  const context = useCommandBarContext('CommandBarTitle');\n  const state = useDisclosureState();\n  return createDynamic(\n    () => props.as ?? ('h2' as T),\n    mergeProps(\n      COMMAND_BAR_TITLE_TAG,\n      {\n        id: context.titleID,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n      omitProps(props, ['as', 'children']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  DisclosureStateControlledOptions,\n  DisclosureStateRenderProps,\n  DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n  DisclosureStateProvider,\n  createDisclosureState,\n} from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createExpandedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useFocusStartPoint from '../../utils/use-focus-start-point';\nimport { ContextMenuContext } from './ContextMenuContext';\nimport { CONTEXT_MENU_TAG } from './tags';\n\nexport type ContextMenuControlledBaseProps = Prettify<\n  DisclosureStateControlledOptions & DisclosureStateRenderProps\n>;\n\nexport type ContextMenuControlledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ContextMenuControlledBaseProps\n>;\n\nexport type ContextMenuUncontrolledBaseProps = Prettify<\n  DisclosureStateUncontrolledOptions & DisclosureStateRenderProps\n>;\n\nexport type ContextMenuUncontrolledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ContextMenuUncontrolledBaseProps\n>;\n\nexport type ContextMenuProps<T extends ValidConstructor = 'div'> =\n  | ContextMenuControlledProps<T>\n  | ContextMenuUncontrolledProps<T>;\n\nfunction isContextMenuUncontrolled<T extends ValidConstructor = 'div'>(\n  props: ContextMenuProps<T>,\n): props is ContextMenuUncontrolledProps<T> {\n  return 'defaultOpen' in props;\n}\n\n/**\n * A menu opened by right-click. It only manages open state and the trap; the\n * menu's own arrow-key navigation comes from putting a `Menu` inside the\n * panel.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/context-menu.md}\n */\nexport function ContextMenu<T extends ValidConstructor = 'div'>(\n  props: ContextMenuProps<T>,\n): JSX.Element {\n  const ownerID = createUniqueId();\n  const boundaryID = createUniqueId();\n  const panelID = createUniqueId();\n\n  const fsp = useFocusStartPoint();\n\n  const state = createDisclosureState(props);\n\n  createEffect(() => {\n    if (state.isOpen()) {\n      fsp.save();\n    } else {\n      fsp.load();\n    }\n  });\n\n  return createComponent(ContextMenuContext.Provider, {\n    value: {\n      ownerID,\n      boundaryID,\n      panelID,\n    },\n    get children() {\n      return createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          CONTEXT_MENU_TAG,\n          createDisabledState(() => state.disabled()),\n          createARIADisabledState(() => state.disabled()),\n          createExpandedState(() => state.isOpen()),\n          isContextMenuUncontrolled(props)\n            ? omitProps(props, [\n                'as',\n                'children',\n                'defaultOpen',\n                'disabled',\n                'onChange',\n                'onClose',\n                'onOpen',\n              ])\n            : omitProps(props, [\n                'as',\n                'children',\n                'isOpen',\n                'disabled',\n                'onChange',\n                'onClose',\n                'onOpen',\n              ]),\n          {\n            get children() {\n              return createComponent(DisclosureStateProvider, {\n                state,\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n        ) as DynamicProps<T>,\n      );\n    },\n  });\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface ContextMenuContextData {\n  ownerID: string;\n  boundaryID: string;\n  panelID: string;\n  anchor?: HTMLElement | null;\n}\n\nexport const ContextMenuContext = createContext<ContextMenuContextData>();\n\n/**\n * Reads the nearest `ContextMenu`'s internal context, which holds the\n * generated ids for its boundary and panel. Throws when called outside a\n * `ContextMenu`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/context-menu.md}\n */\nexport function useContextMenuContext(componentName: string): ContextMenuContextData {\n  const context = useContext(ContextMenuContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <ContextMenu>`));\n  return context;\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const CONTEXT_MENU_TAG = createTag('context-menu');\nexport const CONTEXT_MENU_BOUNDARY_TAG = createTag('context-menu-boundary');\nexport const CONTEXT_MENU_OVERLAY_TAG = createTag('context-menu-overlay');\nexport const CONTEXT_MENU_PANEL_TAG = createTag('context-menu-panel');\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createARIAExpandedState,\n  createDisabledState,\n  createExpandedState,\n} from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useContextMenuContext } from './ContextMenuContext';\nimport { CONTEXT_MENU_BOUNDARY_TAG } from './tags';\n\nexport type ContextMenuBoundaryProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The region that listens for right-clicks. Opening the menu suppresses the\n * browser's own context menu inside this element only.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/context-menu.md}\n */\nexport function ContextMenuBoundary<T extends ValidConstructor = 'div'>(\n  props: ContextMenuBoundaryProps<T>,\n): JSX.Element {\n  const context = useContextMenuContext('ContextMenuBoundary');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      context.anchor = current;\n      useEventListener(current, 'contextmenu', (e) => {\n        if (!state.disabled()) {\n          e.preventDefault();\n          state.open();\n        }\n      });\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      CONTEXT_MENU_BOUNDARY_TAG,\n      {\n        id: context.boundaryID,\n        ref: setInternalRef,\n        get 'aria-controls'() {\n          return state.isOpen() ? context.panelID : undefined;\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createARIADisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n      createARIAExpandedState(() => state.isOpen()),\n      omitProps(props, ['as', 'children', 'ref']),\n      {\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useContextMenuContext } from './ContextMenuContext';\nimport { CONTEXT_MENU_OVERLAY_TAG } from './tags';\n\nexport type ContextMenuOverlayProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The backdrop behind a `ContextMenu`. Clicking it closes the menu, so give it\n * a size — it has no styles of its own. It is never unmounted, unlike the\n * panel, so hide it with CSS or a `<Show>` while closed, or it will swallow\n * clicks on the page.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/context-menu.md}\n */\nexport function ContextMenuOverlay<T extends ValidConstructor = 'div'>(\n  props: ContextMenuOverlayProps<T>,\n): JSX.Element {\n  useContextMenuContext('ContextMenuOverlay');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        state.close();\n      });\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      CONTEXT_MENU_OVERLAY_TAG,\n      {\n        ref: setInternalRef,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n      omitProps(props, ['as', 'children', 'ref']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { focusFirst, lockFocus } from '../../utils/focus-navigation';\nimport getFocusableElements from '../../utils/focus-query';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { afterTransition } from '../../utils/wait-for-transition';\nimport { useContextMenuContext } from './ContextMenuContext';\nimport { CONTEXT_MENU_PANEL_TAG } from './tags';\n\nexport type ContextMenuPanelBaseProps = Prettify<DisclosureStateRenderProps & UnmountableProps>;\n\nexport type ContextMenuPanelProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  ContextMenuPanelBaseProps\n>;\n\n/**\n * The floating panel of a `ContextMenu`. Traps `Tab` while open and closes on\n * <kbd>Escape</kbd>. Position it yourself — the library sets no coordinates.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/context-menu.md}\n */\nexport function ContextMenuPanel<T extends ValidConstructor = 'div'>(\n  props: ContextMenuPanelProps<T>,\n): JSX.Element {\n  const context = useContextMenuContext('ContextMenuPanel');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      if (state.isOpen()) {\n        afterTransition(current, () => {\n          focusFirst(getFocusableElements(current), false);\n        });\n        useEventListener(current, 'keydown', (e) => {\n          if (!props.disabled) {\n            // Keys this panel acts on are not passed on: a `Dialog` or another panel\n            // around this one traps `Tab` and closes on `Escape` too, and would\n            // otherwise move focus a second time or close both layers at once.\n            switch (e.key) {\n              case 'Tab': {\n                e.preventDefault();\n                e.stopPropagation();\n                lockFocus(current, e.shiftKey, false);\n                break;\n              }\n              case 'Escape': {\n                e.stopPropagation();\n                state.close();\n                break;\n              }\n              default:\n                break;\n            }\n          }\n        });\n        useEventListener(document, 'click', (e) => {\n          if (!current.contains(e.target as Node)) {\n            state.close();\n          }\n        });\n      }\n    }\n  });\n\n  return createUnmountable(\n    props,\n    () => state.isOpen(),\n    () =>\n      createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          CONTEXT_MENU_PANEL_TAG,\n          {\n            id: context.panelID,\n            ref: setInternalRef,\n            get children() {\n              return createComponent(DisclosureStateChild, {\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n          createDisabledState(() => state.disabled()),\n          createExpandedState(() => state.isOpen()),\n          omitProps(props, ['as', 'unmount', 'children', 'ref']),\n        ) as DynamicProps<T>,\n      ),\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  DisclosureStateControlledOptions,\n  DisclosureStateRenderProps,\n  DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n  DisclosureStateProvider,\n  createDisclosureState,\n} from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createExpandedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useFocusStartPoint from '../../utils/use-focus-start-point';\nimport { DialogContext } from './DialogContext';\nimport { DIALOG_TAG } from './tags';\n\nexport type DialogControlledBaseProps = Prettify<\n  DisclosureStateControlledOptions & DisclosureStateRenderProps & UnmountableProps\n>;\n\nexport type DialogControlledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  DialogControlledBaseProps\n>;\n\nexport type DialogUncontrolledBaseProps = Prettify<\n  DisclosureStateUncontrolledOptions & DisclosureStateRenderProps & UnmountableProps\n>;\n\nexport type DialogUncontrolledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  DialogUncontrolledBaseProps\n>;\n\nexport type DialogProps<T extends ValidConstructor = 'div'> =\n  | DialogControlledProps<T>\n  | DialogUncontrolledProps<T>;\n\nfunction isDialogUncontrolled<T extends ValidConstructor = 'div'>(\n  props: DialogProps<T>,\n): props is DialogUncontrolledProps<T> {\n  return 'defaultOpen' in props;\n}\n\n/**\n * A modal dialog. While it is open the panel traps `Tab`, <kbd>Escape</kbd>\n * closes it, and focus returns to whatever opened it. Rendering it into a\n * portal is up to you.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/dialog.md}\n */\nexport function Dialog<T extends ValidConstructor = 'div'>(props: DialogProps<T>): JSX.Element {\n  const ownerID = createUniqueId();\n  const panelID = createUniqueId();\n  const titleID = createUniqueId();\n  const descriptionID = createUniqueId();\n\n  const fsp = useFocusStartPoint();\n\n  const state = createDisclosureState(props);\n\n  createEffect(() => {\n    if (state.isOpen()) {\n      fsp.save();\n    } else {\n      fsp.load();\n    }\n  });\n\n  return createComponent(DialogContext.Provider, {\n    value: {\n      ownerID,\n      panelID,\n      titleID,\n      descriptionID,\n    },\n    get children() {\n      return createUnmountable(\n        props,\n        () => state.isOpen(),\n        () =>\n          createDynamic(\n            () => props.as ?? ('div' as T),\n            mergeProps(\n              DIALOG_TAG,\n              {\n                id: ownerID,\n                role: 'dialog',\n                'aria-modal': true,\n                'aria-labelledby': titleID,\n                'aria-describedby': descriptionID,\n                get children() {\n                  return createComponent(DisclosureStateProvider, {\n                    state,\n                    get children() {\n                      return props.children;\n                    },\n                  });\n                },\n              },\n              createDisabledState(() => state.disabled()),\n              createARIADisabledState(() => state.disabled()),\n              createExpandedState(() => state.isOpen()),\n              isDialogUncontrolled(props)\n                ? omitProps(props, [\n                    'as',\n                    'children',\n                    'defaultOpen',\n                    'disabled',\n                    'onChange',\n                    'onClose',\n                    'onOpen',\n                    'unmount',\n                  ])\n                : omitProps(props, [\n                    'as',\n                    'children',\n                    'isOpen',\n                    'disabled',\n                    'onChange',\n                    'onClose',\n                    'onOpen',\n                    'unmount',\n                  ]),\n            ) as DynamicProps<T>,\n          ),\n      );\n    },\n  });\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface DialogContextData {\n  ownerID: string;\n  panelID: string;\n  titleID: string;\n  descriptionID: string;\n}\n\nexport const DialogContext = createContext<DialogContextData>();\n\n/**\n * Reads the nearest `Dialog`'s internal context, which holds the generated ids\n * for its title, description and panel. Throws when called outside a `Dialog`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/dialog.md}\n */\nexport function useDialogContext(componentName: string): DialogContextData {\n  const context = useContext(DialogContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Dialog>`));\n  return context;\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const DIALOG_TAG = createTag('dialog');\nexport const DIALOG_DESCRIPTION_TAG = createTag('dialog-description');\nexport const DIALOG_OVERLAY_TAG = createTag('dialog-overlay');\nexport const DIALOG_PANEL_TAG = createTag('dialog-panel');\nexport const DIALOG_TITLE_TAG = createTag('dialog-title');\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport { useDialogContext } from './DialogContext';\nimport { DIALOG_DESCRIPTION_TAG } from './tags';\n\nexport type DialogDescriptionProps<T extends ValidConstructor = 'p'> = HeadlessProps<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The accessible description of a `Dialog`, wired up through `aria-\n * describedby`.\n *\n * Renders a `<p>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/dialog.md}\n */\nexport function DialogDescription<T extends ValidConstructor = 'p'>(\n  props: DialogDescriptionProps<T>,\n): JSX.Element {\n  const context = useDialogContext('DialogDescription');\n  const state = useDisclosureState();\n  return createDynamic(\n    () => props.as ?? ('p' as T),\n    mergeProps(\n      DIALOG_DESCRIPTION_TAG,\n      {\n        id: context.descriptionID,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n      omitProps(props, ['as', 'children']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useDialogContext } from './DialogContext';\nimport { DIALOG_OVERLAY_TAG } from './tags';\n\nexport type DialogOverlayProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The backdrop behind a `Dialog`. Clicking it closes the dialog, so give it a\n * size — it has no styles of its own and renders 0x0 without them. It needs no\n * `<Show>` guard: `Dialog` unmounts its whole subtree while closed.\n *\n * A full-screen overlay is positioned, so it paints above an unpositioned\n * sibling: give `DialogPanel` a `position` or a `z-index` of its own, or the\n * overlay covers it and swallows the clicks meant for it.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/dialog.md}\n */\nexport function DialogOverlay<T extends ValidConstructor = 'div'>(\n  props: DialogOverlayProps<T>,\n): JSX.Element {\n  useDialogContext('DialogOverlay');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        state.close();\n      });\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      DIALOG_OVERLAY_TAG,\n      {\n        ref: setInternalRef,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n      omitProps(props, ['as', 'children', 'ref']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { focusFirst, lockFocus } from '../../utils/focus-navigation';\nimport getFocusableElements from '../../utils/focus-query';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { afterTransition } from '../../utils/wait-for-transition';\nimport { useDialogContext } from './DialogContext';\nimport { DIALOG_PANEL_TAG } from './tags';\n\nexport type DialogPanelProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The content of a `Dialog`, and the element that traps focus.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/dialog.md}\n */\nexport function DialogPanel<T extends ValidConstructor = 'div'>(\n  props: DialogPanelProps<T>,\n): JSX.Element {\n  const context = useDialogContext('DialogPanel');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement && state.isOpen()) {\n      afterTransition(current, () => {\n        focusFirst(getFocusableElements(current), false);\n      });\n      useEventListener(current, 'keydown', (e) => {\n        if (!props.disabled) {\n          // Keys this panel acts on are not passed on: a `Dialog` or another panel\n          // around this one traps `Tab` and closes on `Escape` too, and would\n          // otherwise move focus a second time or close both layers at once.\n          switch (e.key) {\n            case 'Tab': {\n              e.preventDefault();\n              e.stopPropagation();\n              lockFocus(current, e.shiftKey, false);\n              break;\n            }\n            case 'Escape': {\n              e.stopPropagation();\n              state.close();\n              break;\n            }\n            default:\n              break;\n          }\n        }\n      });\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      DIALOG_PANEL_TAG,\n      {\n        id: context.panelID,\n        ref: setInternalRef,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n      omitProps(props, ['as', 'children', 'ref']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport { useDialogContext } from './DialogContext';\nimport { DIALOG_TITLE_TAG } from './tags';\n\nexport type DialogTitleProps<T extends ValidConstructor = 'h2'> = HeadlessPropsWithRef<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The accessible name of a `Dialog`, wired up through `aria-labelledby`.\n *\n * Renders an `<h2>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/dialog.md}\n */\nexport function DialogTitle<T extends ValidConstructor = 'h2'>(\n  props: DialogTitleProps<T>,\n): JSX.Element {\n  const context = useDialogContext('DialogTitle');\n  const state = useDisclosureState();\n  return createDynamic(\n    () => props.as ?? ('h2' as T),\n    mergeProps(\n      DIALOG_TITLE_TAG,\n      {\n        id: context.titleID,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n      omitProps(props, ['as', 'children']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  DisclosureStateControlledOptions,\n  DisclosureStateRenderProps,\n  DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n  DisclosureStateProvider,\n  createDisclosureState,\n} from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createExpandedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport { DisclosureContext } from './DisclosureContext';\nimport { DISCLOSURE_TAG } from './tags';\n\nexport type DisclosureControlledBaseProps = Prettify<\n  DisclosureStateControlledOptions & DisclosureStateRenderProps\n>;\n\nexport type DisclosureControlledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  DisclosureControlledBaseProps\n>;\n\nexport type DisclosureUncontrolledBaseProps = Prettify<\n  DisclosureStateUncontrolledOptions & DisclosureStateRenderProps\n>;\n\nexport type DisclosureUncontrolledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  DisclosureUncontrolledBaseProps\n>;\n\nexport type DisclosureProps<T extends ValidConstructor = 'div'> =\n  | DisclosureControlledProps<T>\n  | DisclosureUncontrolledProps<T>;\n\nfunction isDisclosureUncontrolled<T extends ValidConstructor = 'div'>(\n  props: DisclosureProps<T>,\n): props is DisclosureUncontrolledProps<T> {\n  return 'defaultOpen' in props;\n}\n\n/**\n * A button that shows and hides a section. The simplest stateful component in\n * the library, and the base the dialog-like components are built on.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/disclosure.md}\n */\nexport function Disclosure<T extends ValidConstructor = 'div'>(\n  props: DisclosureProps<T>,\n): JSX.Element {\n  const ownerID = createUniqueId();\n  const buttonID = createUniqueId();\n  const panelID = createUniqueId();\n  const state = createDisclosureState(props);\n\n  return createComponent(DisclosureContext.Provider, {\n    value: {\n      ownerID,\n      buttonID,\n      panelID,\n    },\n    get children() {\n      return createDynamic(\n        () => props.as ?? 'div',\n        mergeProps(\n          DISCLOSURE_TAG,\n          createDisabledState(() => state.disabled()),\n          createARIADisabledState(() => state.disabled()),\n          createExpandedState(() => state.isOpen()),\n          isDisclosureUncontrolled(props)\n            ? omitProps(props, [\n                'as',\n                'children',\n                'defaultOpen',\n                'disabled',\n                'onChange',\n                'onClose',\n                'onOpen',\n              ])\n            : omitProps(props, [\n                'as',\n                'children',\n                'isOpen',\n                'disabled',\n                'onChange',\n                'onClose',\n                'onOpen',\n              ]),\n          {\n            get children() {\n              return createComponent(DisclosureStateProvider, {\n                state,\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n        ) as DynamicProps<T>,\n      );\n    },\n  });\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface DisclosureContextData {\n  ownerID: string;\n  buttonID: string;\n  panelID: string;\n}\n\nexport const DisclosureContext = createContext<DisclosureContextData>();\n\n/**\n * Reads the nearest `Disclosure`'s internal context, which holds the generated\n * ids for its button and panel. Throws when called outside a `Disclosure`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/disclosure.md}\n */\nexport function useDisclosureContext(componentName: string): DisclosureContextData {\n  const context = useContext(DisclosureContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Disclosure>`));\n  return context;\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const DISCLOSURE_TAG = createTag('disclosure');\nexport const DISCLOSURE_BUTTON_TAG = createTag('disclosure-button');\nexport const DISCLOSURE_PANEL_TAG = createTag('disclosure-panel');\n", "import type { JSX } from 'solid-js';\nimport { createEffect, mergeProps } from 'solid-js';\nimport { createComponent } from 'solid-js/web';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createARIAExpandedState,\n  createDisabledState,\n  createExpandedState,\n} from '../../utils/state-props';\nimport type { OmitAndMerge } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport { useDisclosureContext } from './DisclosureContext';\nimport { DISCLOSURE_BUTTON_TAG } from './tags';\n\nexport type DisclosureButtonProps<T extends ValidConstructor = 'button'> = HeadlessPropsWithRef<\n  T,\n  OmitAndMerge<DisclosureStateRenderProps, ButtonProps<T>>\n>;\n\n/**\n * The control that toggles a `Disclosure`. Carries `aria-expanded`, and `aria-\n * controls` while the panel is mounted.\n *\n * Renders a `<button>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/disclosure.md}\n */\nexport function DisclosureButton<T extends ValidConstructor = 'button'>(\n  props: DisclosureButtonProps<T>,\n): JSX.Element {\n  const context = useDisclosureContext('DisclosureButton');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  const isDisabled = (): boolean | undefined => state.disabled() || props.disabled;\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        if (!isDisabled()) {\n          state.toggle();\n        }\n      });\n    }\n  });\n\n  return createComponent(\n    Button,\n    mergeProps(\n      DISCLOSURE_BUTTON_TAG,\n      {\n        id: context.buttonID,\n        ref: setInternalRef,\n        get 'aria-controls'() {\n          return state.isOpen() ? context.panelID : undefined;\n        },\n      },\n      createDisabledState(isDisabled),\n      createARIADisabledState(isDisabled),\n      createExpandedState(() => state.isOpen()),\n      createARIAExpandedState(() => state.isOpen()),\n      omitProps(props, ['children', 'ref']),\n      {\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as ButtonProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport { useDisclosureContext } from './DisclosureContext';\nimport { DISCLOSURE_PANEL_TAG } from './tags';\n\nexport type DisclosurePanelBaseProps = Prettify<DisclosureStateRenderProps & UnmountableProps>;\n\nexport type DisclosurePanelProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  DisclosurePanelBaseProps\n>;\n\n/**\n * The section a `Disclosure` shows and hides. Unmounts while closed unless\n * `unmount={false}` is set.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/disclosure.md}\n */\nexport function DisclosurePanel<T extends ValidConstructor = 'div'>(\n  props: DisclosurePanelProps<T>,\n): JSX.Element {\n  const context = useDisclosureContext('DisclosurePanel');\n  const state = useDisclosureState();\n\n  return createUnmountable(\n    props,\n    () => state.isOpen(),\n    () =>\n      createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          DISCLOSURE_PANEL_TAG,\n          {\n            id: context.panelID,\n            get children() {\n              return createComponent(DisclosureStateChild, {\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n          createDisabledState(() => state.disabled()),\n          createExpandedState(() => state.isOpen()),\n          omitProps(props, ['as', 'unmount', 'children']),\n        ) as DynamicProps<T>,\n      ),\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { focusNext, focusPrev } from '../../utils/focus-navigation';\nimport getFocusableElements from '../../utils/focus-query';\nimport { FeedContext } from './FeedContext';\nimport { FEED_TAG } from './tags';\n\nexport interface FeedBaseProps {\n  size: number;\n  busy?: boolean;\n}\n\nexport type FeedProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<T, FeedBaseProps>;\n\n/**\n * A stream of articles with the feed keyboard pattern: <kbd>Page Down</kbd>\n * and <kbd>Page Up</kbd> move between articles,\n * <kbd>Ctrl</kbd>+<kbd>Home</kbd> and <kbd>Ctrl</kbd>+<kbd>End</kbd> jump to\n * the ends. Set `size` to the total number of articles, or `-1` when it is\n * unknown, and `busy` while more are loading.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/feed.md}\n */\nexport function Feed<T extends ValidConstructor = 'div'>(props: FeedProps<T>): JSX.Element {\n  const ownerID = createUniqueId();\n  const labelID = createUniqueId();\n  const contentID = createUniqueId();\n\n  const [ref, setRef] = createForwardRef(props);\n\n  return createComponent(FeedContext.Provider, {\n    value: {\n      ownerID,\n      labelID,\n      contentID,\n      get size() {\n        return props.size;\n      },\n      get busy() {\n        return !!props.busy;\n      },\n      focusNext() {\n        const current = ref();\n        if (current instanceof HTMLElement) {\n          focusNext(getFocusableElements(document.documentElement), current, false, false);\n        }\n      },\n      focusPrev() {\n        const current = ref();\n        if (current instanceof HTMLElement) {\n          focusPrev(getFocusableElements(document.documentElement), current, false, false);\n        }\n      },\n    },\n    get children() {\n      return createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          FEED_TAG,\n          {\n            id: ownerID,\n            ref: setRef,\n          },\n          omitProps(props, ['as', 'busy', 'size']),\n        ) as DynamicProps<T>,\n      );\n    },\n  });\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface FeedContextData {\n  ownerID: string;\n  labelID: string;\n  contentID: string;\n  size: number;\n  busy: boolean;\n  focusPrev: () => void;\n  focusNext: () => void;\n}\n\nexport const FeedContext = createContext<FeedContextData>();\n\n/**\n * Reads the nearest `Feed`'s internal context, which holds the generated ids\n * and the focus navigator shared by its articles. Throws when called outside a\n * `Feed`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/feed.md}\n */\nexport function useFeedContext(componentName: string): FeedContextData {\n  const context = useContext(FeedContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Feed>`));\n  return context;\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const FEED_TAG = createTag('feed');\nexport const FEED_ARTICLE_TAG = createTag('feed-article');\nexport const FEED_ARTICLE_DESCRIPTION_TAG = createTag('feed-article-description');\nexport const FEED_ARTICLE_LABEL_TAG = createTag('feed-article-label');\nexport const FEED_CONTENT_TAG = createTag('feed-content');\nexport const FEED_LABEL_TAG = createTag('feed-label');\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createOwnerAttribute } from '../../utils/focus-navigator';\nimport { FeedArticleContext } from './FeedArticleContext';\nimport { useFeedContext } from './FeedContext';\nimport { FEED_ARTICLE_TAG } from './tags';\n\nexport type FeedArticleProps<T extends ValidConstructor = 'article'> = HeadlessPropsWithRef<\n  T,\n  { index: number }\n>;\n\n/**\n * One entry in a `Feed`. The required `index` prop is its zero-based position,\n * which becomes `aria-posinset`.\n *\n * Renders an `<article>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/feed.md}\n */\nexport function FeedArticle<T extends ValidConstructor = 'article'>(\n  props: FeedArticleProps<T>,\n): JSX.Element {\n  const rootContext = useFeedContext('FeedArticle');\n\n  const ownerID = createUniqueId();\n  const labelID = createUniqueId();\n  const descriptionID = createUniqueId();\n\n  return createComponent(FeedArticleContext.Provider, {\n    value: {\n      ownerID,\n      labelID,\n      descriptionID,\n    },\n    get children() {\n      return createDynamic(\n        () => props.as ?? ('article' as T),\n        mergeProps(\n          FEED_ARTICLE_TAG,\n          createOwnerAttribute(rootContext.ownerID),\n          {\n            id: ownerID,\n            'aria-labelledby': labelID,\n            'aria-describedby': descriptionID,\n            tabindex: 0,\n            get 'aria-posinset'() {\n              return props.index + 1;\n            },\n            get 'aria-setsize'() {\n              return rootContext.size;\n            },\n          },\n          omitProps(props, ['as']),\n        ) as DynamicProps<T>,\n      );\n    },\n  });\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface FeedArticleContextData {\n  ownerID: string;\n  labelID: string;\n  descriptionID: string;\n}\n\nexport const FeedArticleContext = createContext<FeedArticleContextData>();\n\n/**\n * Reads the nearest `FeedArticle`'s internal context, which holds the\n * generated ids for its label and description. Throws when called outside a\n * `FeedArticle`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/feed.md}\n */\nexport function useFeedArticleContext(componentName: string): FeedArticleContextData {\n  const context = useContext(FeedArticleContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <FeedArticle>`));\n  return context;\n}\n", "import type { JSX } from 'solid-js';\nimport { mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { useFeedArticleContext } from './FeedArticleContext';\nimport { FEED_ARTICLE_DESCRIPTION_TAG } from './tags';\n\nexport type FeedArticleDescriptionProps<T extends ValidConstructor = 'p'> = HeadlessProps<T>;\n\n/**\n * The accessible description of a `FeedArticle`, wired up through `aria-\n * describedby`.\n *\n * Renders a `<p>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/feed.md}\n */\nexport function FeedArticleDescription<T extends ValidConstructor = 'p'>(\n  props: FeedArticleDescriptionProps<T>,\n): JSX.Element {\n  const context = useFeedArticleContext('FeedArticleDescription');\n  return createDynamic(\n    () => props.as ?? ('p' as T),\n    mergeProps(\n      FEED_ARTICLE_DESCRIPTION_TAG,\n      {\n        id: context.descriptionID,\n      },\n      omitProps(props, ['as']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { useFeedArticleContext } from './FeedArticleContext';\nimport { FEED_ARTICLE_LABEL_TAG } from './tags';\n\nexport type FeedArticleLabelProps<T extends ValidConstructor = 'span'> = HeadlessProps<T>;\n\n/**\n * The accessible name of a `FeedArticle`, wired up through `aria-labelledby`.\n *\n * Renders a `<span>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/feed.md}\n */\nexport function FeedArticleLabel<T extends ValidConstructor = 'span'>(\n  props: FeedArticleLabelProps<T>,\n): JSX.Element {\n  const context = useFeedArticleContext('FeedArticleLabel');\n  return createDynamic(\n    () => props.as ?? ('span' as T),\n    mergeProps(\n      FEED_ARTICLE_LABEL_TAG,\n      {\n        id: context.labelID,\n      },\n      omitProps(props, ['as']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps, onCleanup } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport useEventListener from '../../utils/use-event-listener';\nimport { FeedContentContext, createFeedArticleFocusNavigator } from './FeedContentContext';\nimport { useFeedContext } from './FeedContext';\nimport { FEED_CONTENT_TAG } from './tags';\n\nexport type FeedContentProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<T>;\n\n/**\n * The scrolling region that holds the articles of a `Feed`. Everything outside\n * it, such as a load-more button, stays out of the feed's navigation.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/feed.md}\n */\nexport function FeedContent<T extends ValidConstructor = 'div'>(\n  props: FeedContentProps<T>,\n): JSX.Element {\n  const context = useFeedContext('FeedContent');\n  const controller = createFeedArticleFocusNavigator(context.ownerID);\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      controller.setRef(current);\n      onCleanup(() => {\n        controller.clearRef();\n      });\n      useEventListener(current, 'keydown', (e) => {\n        if (e.ctrlKey) {\n          switch (e.key) {\n            case 'Home': {\n              e.preventDefault();\n              context.focusPrev();\n              break;\n            }\n            case 'End': {\n              e.preventDefault();\n              context.focusNext();\n              break;\n            }\n            default:\n              break;\n          }\n        }\n        switch (e.key) {\n          case 'PageUp': {\n            e.preventDefault();\n            controller.setPrevChecked(false);\n            break;\n          }\n          case 'PageDown': {\n            e.preventDefault();\n            controller.setNextChecked(false);\n            break;\n          }\n          default:\n            break;\n        }\n      });\n      useEventListener(current, 'focusin', (e) => {\n        if (e.target && e.target !== current) {\n          controller.setCurrent(e.target as HTMLElement);\n        }\n      });\n    }\n  });\n\n  return createComponent(FeedContentContext.Provider, {\n    value: controller,\n    get children() {\n      return createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          FEED_CONTENT_TAG,\n          {\n            id: context.contentID,\n            role: 'feed',\n            'aria-labelledby': context.labelID,\n            get 'aria-busy'() {\n              return context.busy;\n            },\n            ref: setInternalRef,\n          },\n          omitProps(props, ['as']),\n        ) as DynamicProps<T>,\n      );\n    },\n  });\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\nimport FocusNavigator from '../../utils/focus-navigator';\n\nexport const FeedContentContext = createContext<FocusNavigator>();\n\n/**\n * Reads the nearest `FeedContent`'s internal context, which holds the focus\n * navigator shared by its articles. Throws when called outside a\n * `FeedContent`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/feed.md}\n */\nexport function useFeedContentContext(componentName: string): FocusNavigator {\n  const context = useContext(FeedContentContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <FeedContent>`));\n  return context;\n}\n\nexport function createFeedArticleFocusNavigator(owner: string): FocusNavigator {\n  return new FocusNavigator(owner);\n}\n", "import type { JSX } from 'solid-js';\nimport { mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { useFeedContext } from './FeedContext';\nimport { FEED_LABEL_TAG } from './tags';\n\nexport type FeedLabelProps<T extends ValidConstructor = 'span'> = HeadlessProps<T>;\n\n/**\n * The accessible name of a `Feed`, wired up through `aria-labelledby`.\n *\n * Renders a `<span>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/feed.md}\n */\nexport function FeedLabel<T extends ValidConstructor = 'span'>(\n  props: FeedLabelProps<T>,\n): JSX.Element {\n  const context = useFeedContext('FeedLabel');\n  return createDynamic(\n    () => props.as ?? ('span' as T),\n    mergeProps(\n      FEED_LABEL_TAG,\n      {\n        id: context.labelID,\n      },\n      omitProps(props, ['as']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, createMemo, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  DisclosureStateControlledOptions,\n  DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n  DisclosureStateProvider,\n  createDisclosureState,\n} from '../../states/create-disclosure-state';\nimport type {\n  MultipleSelectStateControlledOptions,\n  MultipleSelectStateUncontrolledOptions,\n  SingleSelectStateControlledOptions,\n  SingleSelectStateUncontrolledOptions,\n} from '../../states/create-select-state';\nimport {\n  SelectStateProvider,\n  createMultipleSelectState,\n  createSingleSelectState,\n} from '../../states/create-select-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createExpandedState,\n  createHasActiveState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useFocusStartPoint from '../../utils/use-focus-start-point';\nimport { ListboxContext } from './ListboxContext';\nimport { LISTBOX_TAG } from './tags';\n\nexport interface ListboxBaseProps {\n  horizontal?: boolean;\n  onDisclosureChange?: (value: boolean) => void;\n}\n\nexport interface ListboxMultipleBaseProps<V> {\n  onSelectChange?: (value: V[]) => void;\n}\n\nexport interface ListboxSingleBaseProps<V> {\n  onSelectChange?: (value?: V) => void;\n}\n\n// SCSCD = Single, Controlled Select, Controlled Disclosure\nexport type ListboxSCSCDBaseProps<V> = Prettify<\n  ListboxBaseProps &\n    ListboxSingleBaseProps<V> &\n    Omit<SingleSelectStateControlledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateControlledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ListboxSCSCDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ListboxSCSCDBaseProps<V>\n>;\n\n// SCSCD = Single, Controlled Select, Uncontrolled Disclosure\nexport type ListboxSCSUDBaseProps<V> = Prettify<\n  ListboxBaseProps &\n    ListboxSingleBaseProps<V> &\n    Omit<SingleSelectStateControlledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ListboxSCSUDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ListboxSCSUDBaseProps<V>\n>;\n\n// SCSCD = Single, Uncontrolled Select, Controlled Disclosure\nexport type ListboxSUSCDBaseProps<V> = Prettify<\n  ListboxBaseProps &\n    ListboxSingleBaseProps<V> &\n    Omit<SingleSelectStateUncontrolledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateControlledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ListboxSUSCDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ListboxSUSCDBaseProps<V>\n>;\n\n// SCSCD = Single, Uncontrolled Select, Uncontrolled Disclosure\nexport type ListboxSUSUDBaseProps<V> = Prettify<\n  ListboxBaseProps &\n    ListboxSingleBaseProps<V> &\n    Omit<SingleSelectStateUncontrolledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ListboxSUSUDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ListboxSUSUDBaseProps<V>\n>;\n\nexport type ListboxSingleProps<V, T extends ValidConstructor = 'div'> =\n  | ListboxSCSCDProps<V, T>\n  | ListboxSCSUDProps<V, T>\n  | ListboxSUSCDProps<V, T>\n  | ListboxSUSUDProps<V, T>;\n\n// MCSCD = Multiple, Controlled Select, Controlled Disclosure\nexport type ListboxMCSCDBaseProps<V> = Prettify<\n  ListboxBaseProps &\n    ListboxMultipleBaseProps<V> &\n    Omit<MultipleSelectStateControlledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateControlledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ListboxMCSCDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ListboxMCSCDBaseProps<V>\n>;\n\n// MCSCD = Multiple, Controlled Select, Uncontrolled Disclosure\nexport type ListboxMCSUDBaseProps<V> = Prettify<\n  ListboxBaseProps &\n    ListboxMultipleBaseProps<V> &\n    Omit<MultipleSelectStateControlledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ListboxMCSUDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ListboxMCSUDBaseProps<V>\n>;\n\n// MCSCD = Multiple, Uncontrolled Select, Controlled Disclosure\nexport type ListboxMUSCDBaseProps<V> = Prettify<\n  ListboxBaseProps &\n    ListboxMultipleBaseProps<V> &\n    Omit<MultipleSelectStateUncontrolledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateControlledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ListboxMUSCDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ListboxMUSCDBaseProps<V>\n>;\n\n// MCSCD = Multiple, Uncontrolled Select, Uncontrolled Disclosure\nexport type ListboxMUSUDBaseProps<V> = Prettify<\n  ListboxBaseProps &\n    ListboxMultipleBaseProps<V> &\n    Omit<MultipleSelectStateUncontrolledOptions<V>, 'onChange'> &\n    Omit<DisclosureStateUncontrolledOptions, 'onChange'> & {\n      children?: JSX.Element;\n    }\n>;\n\nexport type ListboxMUSUDProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  ListboxMUSUDBaseProps<V>\n>;\n\nexport type ListboxMultipleProps<V, T extends ValidConstructor = 'div'> =\n  | ListboxMCSCDProps<V, T>\n  | ListboxMCSUDProps<V, T>\n  | ListboxMUSCDProps<V, T>\n  | ListboxMUSUDProps<V, T>;\n\ntype ListboxSelectUncontrolledProps<V, T extends ValidConstructor = 'div'> =\n  | ListboxMUSCDProps<V, T>\n  | ListboxMUSUDProps<V, T>\n  | ListboxSUSCDProps<V, T>\n  | ListboxSUSUDProps<V, T>;\n\ntype ListboxDisclosureUncontrolledProps<V, T extends ValidConstructor = 'div'> =\n  | ListboxMCSUDProps<V, T>\n  | ListboxMUSUDProps<V, T>\n  | ListboxSCSUDProps<V, T>\n  | ListboxSUSUDProps<V, T>;\n\nexport type ListboxProps<V, T extends ValidConstructor = 'div'> =\n  | ListboxMultipleProps<V, T>\n  | ListboxSingleProps<V, T>;\n\nfunction isListboxMultiple<V, T extends ValidConstructor = 'div'>(\n  props: ListboxProps<V, T>,\n): props is ListboxMultipleProps<V, T> {\n  return !!props.multiple;\n}\n\nfunction isListboxSelectUncontrolled<V, T extends ValidConstructor = 'div'>(\n  props: ListboxProps<V, T>,\n): props is ListboxSelectUncontrolledProps<V, T> {\n  return 'defaultValue' in props;\n}\n\nfunction isListboxDisclosureUncontrolled<V, T extends ValidConstructor = 'div'>(\n  props: ListboxProps<V, T>,\n): props is ListboxDisclosureUncontrolledProps<V, T> {\n  return 'defaultOpen' in props;\n}\n\nfunction getProps<V, T extends ValidConstructor = 'div'>(\n  props: ListboxProps<V, T>,\n): DynamicProps<T> {\n  if (isListboxSelectUncontrolled(props)) {\n    if (isListboxDisclosureUncontrolled(props)) {\n      return omitProps(props, [\n        'as',\n        'by',\n        'children',\n        'defaultOpen',\n        'defaultValue',\n        'disabled',\n        'horizontal',\n        'multiple',\n        'onClose',\n        'onDisclosureChange',\n        'onOpen',\n        'onSelectChange',\n        'toggleable',\n      ]) as DynamicProps<T>;\n    }\n    return omitProps(props, [\n      'as',\n      'by',\n      'children',\n      'isOpen',\n      'defaultValue',\n      'disabled',\n      'horizontal',\n      'multiple',\n      'onClose',\n      'onDisclosureChange',\n      'onOpen',\n      'onSelectChange',\n      'toggleable',\n    ]) as DynamicProps<T>;\n  }\n  if (isListboxDisclosureUncontrolled(props)) {\n    return omitProps(props, [\n      'as',\n      'by',\n      'children',\n      'defaultOpen',\n      'value',\n      'disabled',\n      'horizontal',\n      'multiple',\n      'onClose',\n      'onDisclosureChange',\n      'onOpen',\n      'onSelectChange',\n      'toggleable',\n    ]) as DynamicProps<T>;\n  }\n  return omitProps(props, [\n    'as',\n    'by',\n    'children',\n    'isOpen',\n    'value',\n    'disabled',\n    'horizontal',\n    'multiple',\n    'onClose',\n    'onDisclosureChange',\n    'onOpen',\n    'onSelectChange',\n    'toggleable',\n  ]) as DynamicProps<T>;\n}\n\n/**\n * A dropdown select: a button showing the current value, plus a popup list of\n * options. It owns two states at once, so its callbacks are\n * `onDisclosureChange` for the popup and `onSelectChange` for the value.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/listbox.md}\n */\nexport function Listbox<V, T extends ValidConstructor = 'div'>(\n  props: ListboxProps<V, T>,\n): JSX.Element {\n  return createMemo(() => {\n    const ownerID = createUniqueId();\n    const labelID = createUniqueId();\n    const buttonID = createUniqueId();\n    const optionsID = createUniqueId();\n\n    const disclosureState = createDisclosureState(\n      mergeProps(props, {\n        onChange(value: boolean) {\n          if (props.onDisclosureChange) {\n            props.onDisclosureChange(value);\n          }\n        },\n      }),\n    );\n\n    const selectState = isListboxMultiple(props)\n      ? createMultipleSelectState(\n          mergeProps(props, {\n            onChange(value: V[]) {\n              if (props.onSelectChange) {\n                props.onSelectChange(value);\n              }\n            },\n          }),\n        )\n      : createSingleSelectState(\n          mergeProps(props, {\n            onChange(value?: V) {\n              if (props.onSelectChange) {\n                props.onSelectChange(value);\n              }\n            },\n          }),\n        );\n\n    const fsp = useFocusStartPoint();\n\n    createEffect(() => {\n      if (disclosureState.isOpen()) {\n        fsp.save();\n      } else {\n        fsp.load();\n      }\n    });\n    return createComponent(ListboxContext.Provider, {\n      value: {\n        get multiple() {\n          return props.multiple;\n        },\n        ownerID,\n        labelID,\n        buttonID,\n        optionsID,\n        get horizontal() {\n          return props.horizontal;\n        },\n        buttonHovering: false,\n        optionsHovering: false,\n      },\n      get children() {\n        return createComponent(SelectStateProvider, {\n          state: selectState,\n          get children() {\n            return createComponent(DisclosureStateProvider, {\n              state: disclosureState,\n              get children() {\n                return createDynamic(\n                  () => props.as ?? 'div',\n                  mergeProps(\n                    LISTBOX_TAG,\n                    {\n                      id: ownerID,\n                      'aria-labelledby': labelID,\n                    },\n                    createDisabledState(() => selectState.disabled()),\n                    createARIADisabledState(() => selectState.disabled()),\n                    createHasSelectedState(() => selectState.hasSelected()),\n                    createHasActiveState(() => selectState.hasActive()),\n                    createExpandedState(() => disclosureState.isOpen()),\n                    getProps(props),\n                    {\n                      get children() {\n                        return props.children;\n                      },\n                    },\n                  ) as DynamicProps<T>,\n                );\n              },\n            });\n          },\n        });\n      },\n    });\n  }) as unknown as JSX.Element;\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface ListboxContextData {\n  horizontal?: boolean;\n  multiple?: boolean;\n  ownerID: string;\n  labelID: string;\n  buttonID: string;\n  optionsID: string;\n  buttonHovering: boolean;\n  optionsHovering: boolean;\n  anchor?: HTMLElement | null;\n}\n\nexport const ListboxContext = createContext<ListboxContextData>();\n\n/**\n * Reads the nearest `Listbox`'s internal context, which holds the generated\n * ids for its button, label and options. Throws when called outside a\n * `Listbox`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/listbox.md}\n */\nexport function useListboxContext(componentName: string): ListboxContextData {\n  const context = useContext(ListboxContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Listbox>`));\n  return context;\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const LISTBOX_TAG = createTag('listbox');\nexport const LISTBOX_BUTTON_TAG = createTag('listbox-button');\nexport const LISTBOX_LABEL_TAG = createTag('listbox-label');\nexport const LISTBOX_OPTIONS_TAG = createTag('listbox-options');\nexport const LISTBOX_OPTION_TAG = createTag('listbox-option');\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport { useSelectState } from '../../states/create-select-state';\nimport type { HeadlessPropsWithRef, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createARIAExpandedState,\n  createDisabledState,\n  createExpandedState,\n  createHasActiveState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport type { OmitAndMerge } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport { useListboxContext } from './ListboxContext';\nimport { LISTBOX_BUTTON_TAG } from './tags';\n\nexport type ListboxButtonProps<T extends ValidConstructor = 'button'> = HeadlessPropsWithRef<\n  T,\n  OmitAndMerge<DisclosureStateRenderProps, ButtonProps<T>>\n>;\n\n/**\n * The trigger of a `Listbox`. Carries `aria-expanded` and `aria-haspopup`, and\n * opens the popup with the arrow keys as well as by click.\n *\n * Renders a `<button>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/listbox.md}\n */\nexport function ListboxButton<T extends ValidConstructor = 'button'>(\n  props: ListboxButtonProps<T>,\n): JSX.Element {\n  const context = useListboxContext('ListboxButton');\n  const disclosureState = useDisclosureState();\n  const selectState = useSelectState();\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  const isDisabled = (): boolean | undefined => disclosureState.disabled() || props.disabled;\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      context.anchor = current;\n\n      useEventListener(current, 'click', () => {\n        if (!isDisabled()) {\n          disclosureState.toggle();\n        }\n      });\n      useEventListener(current, 'keydown', (e) => {\n        if (!isDisabled()) {\n          switch (e.key) {\n            case 'ArrowUp':\n            case 'ArrowDown': {\n              e.preventDefault();\n              disclosureState.toggle();\n              break;\n            }\n          }\n        }\n      });\n      useEventListener(current, 'mouseenter', () => {\n        context.buttonHovering = true;\n      });\n      useEventListener(current, 'mouseleave', () => {\n        context.buttonHovering = false;\n      });\n    }\n  });\n\n  return createComponent(\n    Button,\n    mergeProps(\n      LISTBOX_BUTTON_TAG,\n      {\n        id: context.buttonID,\n        'aria-haspopup': 'listbox',\n        'aria-controls': context.optionsID,\n        ref: setInternalRef,\n      },\n      createDisabledState(isDisabled),\n      createARIADisabledState(isDisabled),\n      createExpandedState(() => disclosureState.isOpen()),\n      createARIAExpandedState(() => disclosureState.isOpen()),\n      createHasSelectedState(() => selectState.hasSelected()),\n      createHasActiveState(() => selectState.hasActive()),\n      omitProps(props, ['children', 'ref']),\n      {\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as ButtonProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport { useSelectState } from '../../states/create-select-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createDisabledState,\n  createExpandedState,\n  createHasActiveState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport { useListboxContext } from './ListboxContext';\nimport { LISTBOX_LABEL_TAG } from './tags';\n\nexport type ListboxLabelProps<T extends ValidConstructor = 'label'> = HeadlessProps<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The accessible name of a `Listbox`, wired up through `aria-labelledby`.\n *\n * Renders a `<label>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/listbox.md}\n */\nexport function ListboxLabel<T extends ValidConstructor = 'label'>(\n  props: ListboxLabelProps<T>,\n): JSX.Element {\n  const context = useListboxContext('ListboxLabel');\n  const disclosureState = useDisclosureState();\n  const selectState = useSelectState();\n\n  return createDynamic(\n    () => props.as ?? ('label' as T),\n    mergeProps(\n      LISTBOX_LABEL_TAG,\n      {\n        id: context.labelID,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => disclosureState.disabled()),\n      createExpandedState(() => disclosureState.isOpen()),\n      createHasSelectedState(() => selectState.hasSelected()),\n      createHasActiveState(() => selectState.hasActive()),\n      omitProps(props, ['as', 'children']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createRenderEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport type {\n  SelectOptionStateOptions,\n  SelectOptionStateRenderProps,\n} from '../../states/create-select-option-state';\nimport {\n  SelectOptionStateProvider,\n  createSelectOptionState,\n} from '../../states/create-select-option-state';\nimport type { HeadlessPropsWithRef, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createOwnerAttribute } from '../../utils/focus-navigator';\nimport {\n  createARIADisabledState,\n  createARIASelectedState,\n  createActiveState,\n  createDisabledState,\n  createSelectedState,\n} from '../../utils/state-props';\nimport type { OmitAndMerge, Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport { useListboxContext } from './ListboxContext';\nimport { useListboxOptionsContext } from './ListboxOptionsContext';\nimport { LISTBOX_OPTION_TAG } from './tags';\n\nexport type ListboxOptionBaseProps<V> = Prettify<\n  SelectOptionStateOptions<V> & SelectOptionStateRenderProps\n>;\n\nexport type ListboxOptionProps<V, T extends ValidConstructor = 'li'> = HeadlessPropsWithRef<\n  T,\n  OmitAndMerge<ListboxOptionBaseProps<V>, ButtonProps<T>>\n>;\n\n/**\n * One option of a `Listbox`. The required `value` prop is what selecting it\n * produces.\n *\n * Renders an `<li>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/listbox.md}\n */\nexport function ListboxOption<V, T extends ValidConstructor = 'li'>(\n  props: ListboxOptionProps<V, T>,\n): JSX.Element {\n  const rootContext = useListboxContext('ListboxOptions');\n  const context = useListboxOptionsContext('ListboxOptions');\n  const disclosure = useDisclosureState();\n  const state = createSelectOptionState(props);\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  // I would really love to use createEffect but for some reason\n  // the timing is never accurate\n  createRenderEffect(() => {\n    const current = internalRef();\n\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        if (!state.disabled()) {\n          state.select();\n          if (!rootContext.multiple) {\n            disclosure.close();\n          }\n        }\n      });\n      useEventListener(current, 'focus', () => {\n        state.focus();\n      });\n      useEventListener(current, 'blur', () => {\n        state.blur();\n      });\n      useEventListener(current, 'mouseenter', () => {\n        if (!state.disabled()) {\n          current.focus({ preventScroll: true });\n        }\n      });\n      useEventListener(current, 'mouseleave', () => {\n        if (!state.disabled()) {\n          state.blur();\n        }\n      });\n    }\n  });\n\n  return createComponent(\n    Button,\n    mergeProps(\n      LISTBOX_OPTION_TAG,\n      createOwnerAttribute(context.getId()),\n      {\n        get as() {\n          return props.as ?? ('li' as T);\n        },\n        role: 'option',\n        tabindex: -1,\n        ref: setInternalRef,\n      },\n      createDisabledState(() => state.disabled()),\n      createARIADisabledState(() => state.disabled()),\n      createSelectedState(() => state.isSelected()),\n      createARIASelectedState(() => state.isSelected()),\n      createActiveState(() => state.isActive()),\n      omitProps(props, ['as', 'children', 'disabled', 'value', 'ref']),\n      {\n        get children() {\n          return createComponent(SelectOptionStateProvider, {\n            state,\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as ButtonProps<T>,\n  );\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\nimport FocusNavigator from '../../utils/focus-navigator';\n\nexport const ListboxOptionsContext = createContext<FocusNavigator>();\n\n/**\n * Reads the nearest `ListboxOptions`' internal context, which holds the focus\n * navigator shared by its options. Throws when called outside a\n * `ListboxOptions`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/listbox.md}\n */\nexport function useListboxOptionsContext(componentName: string): FocusNavigator {\n  const context = useContext(ListboxOptionsContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <ListboxOptions>`));\n  return context;\n}\n\nexport function createListboxOptionsFocusNavigator(owner: string): FocusNavigator {\n  return new FocusNavigator(owner);\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps, onCleanup, onMount, untrack } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport { useDisclosureState } from '../../states/create-disclosure-state';\nimport type { SelectStateRenderProps } from '../../states/create-select-state';\nimport { SelectStateProvider, useSelectState } from '../../states/create-select-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport createTypeAhead from '../../utils/create-type-ahead';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { SELECTED_NODE } from '../../utils/namespace';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createExpandedState,\n  createHasActiveState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { afterTransition } from '../../utils/wait-for-transition';\nimport { useListboxContext } from './ListboxContext';\nimport { ListboxOptionsContext, createListboxOptionsFocusNavigator } from './ListboxOptionsContext';\nimport { LISTBOX_OPTIONS_TAG } from './tags';\n\nexport type ListboxOptionsBaseProps<V> = Prettify<UnmountableProps & SelectStateRenderProps<V>>;\n\nexport type ListboxOptionsProps<V, T extends ValidConstructor = 'ul'> = HeadlessPropsWithRef<\n  T,\n  ListboxOptionsBaseProps<V>\n>;\n\n/**\n * The popup list of a `Listbox`. Unmounts while closed unless\n * `unmount={false}` is set.\n *\n * Renders a `<ul>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/listbox.md}\n */\nexport function ListboxOptions<V, T extends ValidConstructor = 'ul'>(\n  props: ListboxOptionsProps<V, T>,\n): JSX.Element {\n  const context = useListboxContext('ListboxOptions');\n  const selectState = useSelectState();\n  const disclosureState = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  const controller = createListboxOptionsFocusNavigator(context.optionsID);\n\n  const pushCharacter = createTypeAhead((value) => {\n    controller.setFirstMatch(value);\n  });\n\n  // This is a potential bug. The reason is that\n  // the ListboxOptions is focusing too early in such\n  // a way that the ListboxOption has yet to register\n  // the focus event\n  onMount(() => {\n    createEffect(() => {\n      const current = internalRef();\n      if (current instanceof HTMLElement && disclosureState.isOpen()) {\n        controller.setRef(current);\n        onCleanup(() => {\n          controller.clearRef();\n        });\n\n        afterTransition(current, () => {\n          if (untrack(() => selectState.hasSelected())) {\n            controller.setFirstChecked(SELECTED_NODE);\n          } else {\n            controller.setFirstChecked();\n          }\n        });\n\n        useEventListener(current, 'keydown', (e) => {\n          if (!selectState.disabled()) {\n            // Keys this panel acts on are not passed on: a `Dialog` or another panel\n            // around this one traps `Tab` and closes on `Escape` too, and would\n            // otherwise move focus a second time or close both layers at once.\n            switch (e.key) {\n              case 'Escape': {\n                e.stopPropagation();\n                disclosureState.close();\n                break;\n              }\n              case 'ArrowLeft': {\n                if (context.horizontal) {\n                  e.preventDefault();\n                  controller.setPrevChecked(true);\n                }\n                break;\n              }\n              case 'ArrowUp': {\n                if (!context.horizontal) {\n                  e.preventDefault();\n                  controller.setPrevChecked(true);\n                }\n                break;\n              }\n              case 'ArrowRight': {\n                if (context.horizontal) {\n                  e.preventDefault();\n                  controller.setNextChecked(true);\n                }\n                break;\n              }\n              case 'ArrowDown': {\n                if (!context.horizontal) {\n                  e.preventDefault();\n                  controller.setNextChecked(true);\n                }\n                break;\n              }\n              case 'Home': {\n                e.preventDefault();\n                controller.setFirstChecked();\n                break;\n              }\n              case 'End': {\n                e.preventDefault();\n                controller.setLastChecked();\n                break;\n              }\n              case ' ':\n              case 'Enter': {\n                e.preventDefault();\n                break;\n              }\n              default: {\n                if (e.key.length === 1) {\n                  pushCharacter(e.key);\n                }\n                break;\n              }\n            }\n          }\n        });\n        useEventListener(current, 'focusout', (e) => {\n          if (context.buttonHovering || context.optionsHovering) {\n            return;\n          }\n          if (\n            (e.relatedTarget && !current.contains(e.relatedTarget as Node)) ||\n            (e.target && !current.contains(e.target as Node))\n          ) {\n            disclosureState.close();\n          }\n        });\n        useEventListener(current, 'focusin', (e) => {\n          if (e.target && e.target !== current) {\n            controller.setCurrent(e.target as HTMLElement);\n          }\n        });\n        useEventListener(current, 'mouseenter', () => {\n          context.optionsHovering = true;\n        });\n        useEventListener(current, 'mouseleave', () => {\n          context.optionsHovering = false;\n        });\n      }\n    });\n  });\n\n  return createUnmountable(\n    props,\n    () => disclosureState.isOpen(),\n    () =>\n      createComponent(ListboxOptionsContext.Provider, {\n        value: controller,\n        get children() {\n          return createDynamic(\n            () => props.as ?? ('ul' as T),\n            mergeProps(\n              LISTBOX_OPTIONS_TAG,\n              {\n                id: context.optionsID,\n                role: 'listbox',\n                'aria-multiselectable': context.multiple,\n                'aria-labelledby': context.buttonID,\n                ref: setInternalRef,\n                get 'aria-orientation'() {\n                  return context.horizontal ? 'horizontal' : 'vertical';\n                },\n                get tabindex() {\n                  return selectState.disabled() ? -1 : 0;\n                },\n              },\n              createDisabledState(() => selectState.disabled()),\n              createARIADisabledState(() => selectState.disabled()),\n              createExpandedState(() => disclosureState.isOpen()),\n              createHasSelectedState(() => selectState.hasSelected()),\n              createHasActiveState(() => selectState.hasActive()),\n              omitProps(props, ['as', 'children', 'ref']),\n              {\n                get children() {\n                  return createComponent(SelectStateProvider, {\n                    state: selectState,\n                    get children() {\n                      return props.children;\n                    },\n                  });\n                },\n              },\n            ) as DynamicProps<T>,\n          );\n        },\n      }),\n  );\n}\n", "import { onCleanup } from 'solid-js';\n\nconst TYPE_AHEAD_DEBOUNCE_TIMEOUT = 250;\n\nexport default function createTypeAhead(\n  callback: (value: string) => void,\n  time = TYPE_AHEAD_DEBOUNCE_TIMEOUT,\n): (value: string) => void {\n  let characters = '';\n  let timeout: ReturnType<typeof setTimeout> | undefined;\n\n  onCleanup(() => {\n    if (timeout) {\n      clearTimeout(timeout);\n    }\n  });\n\n  return (value) => {\n    characters += value;\n    if (timeout) {\n      clearTimeout(timeout);\n    }\n    timeout = setTimeout(() => {\n      callback(characters);\n      characters = '';\n    }, time);\n  };\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps, onCleanup } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport createTypeAhead from '../../utils/create-type-ahead';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport useEventListener from '../../utils/use-event-listener';\nimport { MenuContext, createMenuItemFocusNavigator } from './MenuContext';\nimport { MENU_TAG } from './tags';\n\nexport type MenuProps<T extends ValidConstructor = 'ul'> = HeadlessPropsWithRef<T>;\n\n/**\n * A menu of actions, navigated with the arrow keys and type-ahead. It has no\n * open state of its own; put it inside a `Popover` or `ContextMenu` for that.\n *\n * Per the ARIA menu pattern every item sits at `tabindex=\"-1\"`, so the menu has\n * no tab stop and you must move focus to an item yourself when it appears.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/menu.md}\n */\nexport function Menu<T extends ValidConstructor = 'ul'>(props: MenuProps<T>): JSX.Element {\n  const controller = createMenuItemFocusNavigator();\n\n  const [ref, setRef] = createForwardRef(props);\n\n  const pushCharacter = createTypeAhead((value) => {\n    controller.setFirstMatch(value);\n  });\n\n  createEffect(() => {\n    const current = ref();\n    if (current instanceof HTMLElement) {\n      controller.setRef(current);\n      onCleanup(() => {\n        controller.clearRef();\n      });\n\n      useEventListener(current, 'keydown', (e) => {\n        switch (e.key) {\n          case 'ArrowUp':\n          case 'ArrowLeft': {\n            e.preventDefault();\n            controller.setPrevChecked(true);\n            break;\n          }\n          case 'ArrowDown':\n          case 'ArrowRight': {\n            e.preventDefault();\n            controller.setNextChecked(true);\n            break;\n          }\n          case 'Home': {\n            e.preventDefault();\n            controller.setFirstChecked();\n            break;\n          }\n          case 'End': {\n            e.preventDefault();\n            controller.setLastChecked();\n            break;\n          }\n          case ' ':\n          case 'Enter': {\n            e.preventDefault();\n            break;\n          }\n          default: {\n            if (e.key.length === 1) {\n              pushCharacter(e.key);\n            }\n            break;\n          }\n        }\n      });\n      useEventListener(current, 'focusin', (e) => {\n        if (e.target && e.target !== current) {\n          controller.setCurrent(e.target as HTMLElement);\n        }\n      });\n    }\n  });\n\n  return createComponent(MenuContext.Provider, {\n    value: controller,\n    get children() {\n      return createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          MENU_TAG,\n          {\n            id: controller.getId(),\n            role: 'menu',\n            ref: setRef,\n          },\n          omitProps(props, ['as', 'ref']),\n        ) as DynamicProps<T>,\n      );\n    },\n  });\n}\n", "import { createContext, createUniqueId, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\nimport FocusNavigator from '../../utils/focus-navigator';\n\nexport const MenuContext = createContext<FocusNavigator>();\n\n/**\n * Reads the nearest `Menu`'s internal context, which holds the focus navigator\n * shared by its items. Throws when called outside a `Menu`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/menu.md}\n */\nexport function useMenuContext(componentName: string): FocusNavigator {\n  const context = useContext(MenuContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Menu>`));\n  return context;\n}\n\nexport function createMenuItemFocusNavigator(): FocusNavigator {\n  return new FocusNavigator(createUniqueId());\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const MENU_TAG = createTag('menu');\nexport const MENU_ITEM_TAG = createTag('menu-item');\n", "import type { JSX } from 'solid-js';\nimport { createMemo } from 'solid-js';\n\nexport interface MenuProperties {\n  disabled: () => boolean;\n}\n\nexport type MenuChildRenderProp = (properties: MenuProperties) => JSX.Element;\n\nexport interface MenuChildProps {\n  disabled?: boolean;\n  children?: JSX.Element | MenuChildRenderProp;\n}\n\n/**\n * The render prop a `MenuItem` passes to its children, available as a\n * standalone component. It renders no element of its own, and reports its own\n * `disabled` prop rather than the surrounding item's.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/menu.md}\n */\nexport function MenuChild(props: MenuChildProps): JSX.Element {\n  return createMemo(() => {\n    const body = props.children;\n    if (typeof body === 'function') {\n      return body({\n        disabled: () => !!props.disabled,\n      });\n    }\n    return body;\n  }) as unknown as JSX.Element;\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createOwnerAttribute } from '../../utils/focus-navigator';\nimport { createARIADisabledState, createDisabledState } from '../../utils/state-props';\nimport { Button } from '../button';\nimport type { MenuChildProps } from './MenuChild';\nimport { MenuChild } from './MenuChild';\nimport { useMenuContext } from './MenuContext';\nimport { MENU_ITEM_TAG } from './tags';\n\nexport type MenuItemProps<T extends ValidConstructor = 'li'> = HeadlessPropsWithRef<\n  T,\n  MenuChildProps\n>;\n\n/**\n * One action in a `Menu`. The arrow keys and type-ahead skip disabled items.\n *\n * Renders an `<li>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/menu.md}\n */\nexport function MenuItem<T extends ValidConstructor = 'li'>(props: MenuItemProps<T>): JSX.Element {\n  const context = useMenuContext('MenuItem');\n\n  const [, setInternalRef] = createForwardRef(props);\n\n  return createComponent(\n    Button,\n    mergeProps(\n      MENU_ITEM_TAG,\n      createOwnerAttribute(context.getId()),\n      {\n        get as() {\n          return props.as ?? ('li' as T);\n        },\n        role: 'menuitem',\n        tabindex: -1,\n        ref: setInternalRef,\n      },\n      createDisabledState(() => props.disabled),\n      createARIADisabledState(() => props.disabled),\n      omitProps(props, ['as', 'disabled', 'ref', 'children']),\n      {\n        get children() {\n          return createComponent(MenuChild, {\n            get disabled() {\n              return props.disabled;\n            },\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  DisclosureStateControlledOptions,\n  DisclosureStateRenderProps,\n  DisclosureStateUncontrolledOptions,\n} from '../../states/create-disclosure-state';\nimport {\n  DisclosureStateProvider,\n  createDisclosureState,\n} from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createExpandedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useFocusStartPoint from '../../utils/use-focus-start-point';\nimport { PopoverContext } from './PopoverContext';\nimport { POPOVER_TAG } from './tags';\n\nexport type PopoverControlledBaseProps = Prettify<\n  DisclosureStateRenderProps & DisclosureStateControlledOptions\n>;\n\nexport type PopoverControlledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  PopoverControlledBaseProps\n>;\n\nexport type PopoverUncontrolledBaseProps = Prettify<\n  DisclosureStateRenderProps & DisclosureStateUncontrolledOptions\n>;\n\nexport type PopoverUncontrolledProps<T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  PopoverUncontrolledBaseProps\n>;\n\nexport type PopoverProps<T extends ValidConstructor = 'div'> =\n  | PopoverControlledProps<T>\n  | PopoverUncontrolledProps<T>;\n\nfunction isPopoverUncontrolled<T extends ValidConstructor = 'div'>(\n  props: PopoverProps<T>,\n): props is PopoverUncontrolledProps<T> {\n  return 'defaultOpen' in props;\n}\n\n/**\n * A floating panel anchored to a button. Like a `Dialog` in that the panel can\n * trap `Tab`, but the page behind stays usable and the panel also closes when\n * focus leaves it.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/popover.md}\n */\nexport function Popover<T extends ValidConstructor = 'div'>(props: PopoverProps<T>): JSX.Element {\n  const ownerID = createUniqueId();\n  const buttonID = createUniqueId();\n  const panelID = createUniqueId();\n\n  const fsp = useFocusStartPoint();\n\n  const state = createDisclosureState(props);\n\n  createEffect(() => {\n    if (state.isOpen()) {\n      fsp.save();\n    } else {\n      fsp.load();\n    }\n  });\n\n  return createComponent(PopoverContext.Provider, {\n    value: {\n      ownerID,\n      buttonID,\n      panelID,\n      hovering: false,\n    },\n    get children() {\n      return createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          POPOVER_TAG,\n          createDisabledState(() => state.disabled()),\n          createARIADisabledState(() => state.disabled()),\n          createExpandedState(() => state.isOpen()),\n          isPopoverUncontrolled(props)\n            ? omitProps(props, [\n                'as',\n                'children',\n                'defaultOpen',\n                'disabled',\n                'onChange',\n                'onClose',\n                'onOpen',\n              ])\n            : omitProps(props, [\n                'as',\n                'children',\n                'isOpen',\n                'disabled',\n                'onChange',\n                'onClose',\n                'onOpen',\n              ]),\n          {\n            get children() {\n              return createComponent(DisclosureStateProvider, {\n                state,\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n        ) as DynamicProps<T>,\n      );\n    },\n  });\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface PopoverContextData {\n  ownerID: string;\n  buttonID: string;\n  panelID: string;\n  hovering: boolean;\n  anchor?: HTMLElement | null;\n}\n\nexport const PopoverContext = createContext<PopoverContextData>();\n\n/**\n * Reads the nearest `Popover`'s internal context, which holds the generated\n * ids for its button and panel. Throws when called outside a `Popover`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/popover.md}\n */\nexport function usePopoverContext(componentName: string): PopoverContextData {\n  const context = useContext(PopoverContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Popover>`));\n  return context;\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const POPOVER_TAG = createTag('popover');\nexport const POPOVER_BUTTON_TAG = createTag('popover-button');\nexport const POPOVER_OVERLAY_TAG = createTag('popover-overlay');\nexport const POPOVER_PANEL_TAG = createTag('popover-panel');\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport type { HeadlessPropsWithRef, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createARIAExpandedState,\n  createDisabledState,\n  createExpandedState,\n} from '../../utils/state-props';\nimport type { OmitAndMerge } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport { usePopoverContext } from './PopoverContext';\nimport { POPOVER_BUTTON_TAG } from './tags';\n\nexport type PopoverButtonProps<T extends ValidConstructor = 'button'> = HeadlessPropsWithRef<\n  T,\n  OmitAndMerge<DisclosureStateRenderProps, ButtonProps<T>>\n>;\n\n/**\n * The trigger of a `Popover`. Carries `aria-expanded`, and `aria-controls`\n * while the panel is mounted.\n *\n * Renders a `<button>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/popover.md}\n */\nexport function PopoverButton<T extends ValidConstructor = 'button'>(\n  props: PopoverButtonProps<T>,\n): JSX.Element {\n  const context = usePopoverContext('PopoverButton');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  const isDisabled = (): boolean | undefined => state.disabled() || props.disabled;\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      context.anchor = current;\n      useEventListener(current, 'click', () => {\n        if (!isDisabled()) {\n          state.toggle();\n        }\n      });\n      useEventListener(current, 'mouseenter', () => {\n        context.hovering = true;\n      });\n      useEventListener(current, 'mouseleave', () => {\n        context.hovering = false;\n      });\n    }\n  });\n\n  return createComponent(\n    Button,\n    mergeProps(\n      POPOVER_BUTTON_TAG,\n      {\n        id: context.buttonID,\n        ref: setInternalRef,\n        get 'aria-controls'() {\n          return state.isOpen() ? context.panelID : undefined;\n        },\n      },\n      createDisabledState(isDisabled),\n      createARIADisabledState(isDisabled),\n      createExpandedState(() => state.isOpen()),\n      createARIAExpandedState(() => state.isOpen()),\n      omitProps(props, ['children', 'ref']),\n      {\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as ButtonProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { usePopoverContext } from './PopoverContext';\nimport { POPOVER_OVERLAY_TAG } from './tags';\n\nexport type PopoverOverlayProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  DisclosureStateRenderProps\n>;\n\n/**\n * The backdrop behind a `Popover`. Clicking it closes the popover, so give it\n * a size — it has no styles of its own. It is never unmounted, unlike the\n * panel, so hide it with CSS or a `<Show>` while closed, or it will swallow\n * clicks on the page.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/popover.md}\n */\nexport function PopoverOverlay<T extends ValidConstructor = 'div'>(\n  props: PopoverOverlayProps<T>,\n): JSX.Element {\n  usePopoverContext('PopoverOverlay');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        state.close();\n      });\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      POPOVER_OVERLAY_TAG,\n      {\n        ref: setInternalRef,\n        get children() {\n          return createComponent(DisclosureStateChild, {\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createExpandedState(() => state.isOpen()),\n      omitProps(props, ['as', 'children', 'ref']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { DisclosureStateRenderProps } from '../../states/create-disclosure-state';\nimport { DisclosureStateChild, useDisclosureState } from '../../states/create-disclosure-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { focusFirst, lockFocus } from '../../utils/focus-navigation';\nimport getFocusableElements from '../../utils/focus-query';\nimport { createDisabledState, createExpandedState } from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { afterTransition } from '../../utils/wait-for-transition';\nimport { usePopoverContext } from './PopoverContext';\nimport { POPOVER_PANEL_TAG } from './tags';\n\nexport type PopoverPanelBaseProps = Prettify<DisclosureStateRenderProps & UnmountableProps>;\n\nexport type PopoverPanelProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  PopoverPanelBaseProps\n>;\n\n/**\n * The floating panel of a `Popover`. Position it yourself — the library sets\n * no coordinates.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/popover.md}\n */\nexport function PopoverPanel<T extends ValidConstructor = 'div'>(\n  props: PopoverPanelProps<T>,\n): JSX.Element {\n  const context = usePopoverContext('PopoverPanel');\n  const state = useDisclosureState();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement && state.isOpen()) {\n      afterTransition(current, () => {\n        focusFirst(getFocusableElements(current), false);\n      });\n      useEventListener(current, 'keydown', (e) => {\n        if (!state.disabled()) {\n          // Keys this panel acts on are not passed on: a `Dialog` or another panel\n          // around this one traps `Tab` and closes on `Escape` too, and would\n          // otherwise move focus a second time or close both layers at once.\n          switch (e.key) {\n            case 'Tab': {\n              e.preventDefault();\n              e.stopPropagation();\n              lockFocus(current, e.shiftKey, false);\n              break;\n            }\n            case 'Escape': {\n              e.stopPropagation();\n              state.close();\n              break;\n            }\n          }\n        }\n      });\n      useEventListener(current, 'focusout', (e) => {\n        if (context.hovering) {\n          return;\n        }\n        if (\n          (e.relatedTarget && !current.contains(e.relatedTarget as Node)) ||\n          (e.target && !current.contains(e.target as Node))\n        ) {\n          state.close();\n        }\n      });\n    }\n  });\n\n  return createUnmountable(\n    props,\n    () => state.isOpen(),\n    () =>\n      createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          POPOVER_PANEL_TAG,\n          {\n            id: context.panelID,\n            ref: setInternalRef,\n            get children() {\n              return createComponent(DisclosureStateChild, {\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n          createDisabledState(() => state.disabled()),\n          createExpandedState(() => state.isOpen()),\n          omitProps(props, ['as', 'unmount', 'children', 'ref']),\n        ) as DynamicProps<T>,\n      ),\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, createUniqueId, mergeProps, onCleanup } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  SelectStateRenderProps,\n  SingleSelectStateControlledOptions,\n  SingleSelectStateUncontrolledOptions,\n} from '../../states/create-select-state';\nimport { SelectStateProvider, createSingleSelectState } from '../../states/create-select-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createHasActiveState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { RadioGroupContext } from './RadioGroupContext';\nimport {\n  RadioGroupRootContext,\n  createRadioGroupOptionFocusNavigator,\n} from './RadioGroupRootContext';\nimport { RADIO_GROUP_TAG } from './tags';\n\nexport type RadioGroupControlledBaseProps<V> = Prettify<\n  SingleSelectStateControlledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type RadioGroupControlledProps<V, T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  RadioGroupControlledBaseProps<V>\n>;\n\nexport type RadioGroupUncontrolledBaseProps<V> = Prettify<\n  SingleSelectStateUncontrolledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type RadioGroupUncontrolledProps<\n  V,\n  T extends ValidConstructor = 'div',\n> = HeadlessPropsWithRef<T, RadioGroupUncontrolledBaseProps<V>>;\n\nexport type RadioGroupProps<V, T extends ValidConstructor = 'div'> =\n  | RadioGroupControlledProps<V, T>\n  | RadioGroupUncontrolledProps<V, T>;\n\nfunction isRadioGroupUncontrolled<V, T extends ValidConstructor = 'div'>(\n  props: RadioGroupProps<V, T>,\n): props is RadioGroupUncontrolledProps<V, T> {\n  return 'defaultValue' in props;\n}\n\n/**\n * A single-choice group. The whole group is one tab stop; the arrow keys move\n * between options and select as they go.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/radio-group.md}\n */\nexport function RadioGroup<V, T extends ValidConstructor = 'div'>(\n  props: RadioGroupProps<V, T>,\n): JSX.Element {\n  const controller = createRadioGroupOptionFocusNavigator();\n  const descriptionID = createUniqueId();\n  const labelID = createUniqueId();\n  const state = createSingleSelectState(props);\n\n  const [ref, setRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = ref();\n    if (current instanceof HTMLElement) {\n      controller.setRef(current);\n      onCleanup(() => {\n        controller.clearRef();\n      });\n      useEventListener(current, 'keydown', (e) => {\n        if (!state.disabled()) {\n          switch (e.key) {\n            case 'ArrowLeft':\n            case 'ArrowUp': {\n              e.preventDefault();\n              controller.setPrevChecked(true);\n              break;\n            }\n            case 'ArrowRight':\n            case 'ArrowDown': {\n              e.preventDefault();\n              controller.setNextChecked(true);\n              break;\n            }\n          }\n        }\n      });\n      useEventListener(current, 'focusin', (e) => {\n        if (e.target && e.target !== current) {\n          controller.setCurrent(e.target as HTMLElement);\n        }\n      });\n    }\n  });\n\n  return createComponent(RadioGroupRootContext.Provider, {\n    value: controller,\n    get children() {\n      return createComponent(RadioGroupContext.Provider, {\n        value: {\n          descriptionID,\n          labelID,\n        },\n        get children() {\n          return createDynamic(\n            () => props.as ?? ('div' as T),\n            mergeProps(\n              RADIO_GROUP_TAG,\n              {\n                role: 'radiogroup',\n                'aria-labelledby': labelID,\n                'aria-describedby': descriptionID,\n                ref: setRef,\n              },\n              createDisabledState(() => state.disabled()),\n              createARIADisabledState(() => state.disabled()),\n              createHasActiveState(() => state.hasActive()),\n              createHasSelectedState(() => state.hasSelected()),\n              isRadioGroupUncontrolled(props)\n                ? omitProps(props, [\n                    'as',\n                    'by',\n                    'children',\n                    'defaultValue',\n                    'disabled',\n                    'multiple',\n                    'onChange',\n                    'ref',\n                    'toggleable',\n                  ])\n                : omitProps(props, [\n                    'as',\n                    'by',\n                    'children',\n                    'value',\n                    'disabled',\n                    'multiple',\n                    'onChange',\n                    'ref',\n                    'toggleable',\n                  ]),\n              {\n                get children() {\n                  return createComponent(SelectStateProvider, {\n                    state,\n                    get children() {\n                      return props.children;\n                    },\n                  });\n                },\n              },\n            ) as DynamicProps<T>,\n          );\n        },\n      });\n    },\n  });\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface RadioGroupContextData {\n  labelID: string;\n  descriptionID: string;\n}\n\nexport const RadioGroupContext = createContext<RadioGroupContextData>();\n\n/**\n * Reads the nearest `RadioGroupOption`'s internal context, which holds the\n * generated ids for its label and description. Throws when called outside a\n * `RadioGroupOption`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/radio-group.md}\n */\nexport function useRadioGroupContext(componentName: string): RadioGroupContextData {\n  const context = useContext(RadioGroupContext);\n  assert(\n    context,\n    new Error(`<${componentName}> must be used inside a <RadioGroup> or <RadioGroupOption>`),\n  );\n  return context;\n}\n", "import { createContext, createUniqueId, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\nimport FocusNavigator from '../../utils/focus-navigator';\n\nexport const RadioGroupRootContext = createContext<FocusNavigator>();\n\n/**\n * Reads the nearest `RadioGroup`'s internal context, which holds the focus\n * navigator shared by its options. Throws when called outside a `RadioGroup`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/radio-group.md}\n */\nexport function useRadioGroupRootContext(componentName: string): FocusNavigator {\n  const context = useContext(RadioGroupRootContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <RadioGroup>`));\n  return context;\n}\n\nexport function createRadioGroupOptionFocusNavigator(): FocusNavigator {\n  return new FocusNavigator(createUniqueId());\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const RADIO_GROUP_TAG = createTag('radio-group');\nexport const RADIO_GROUP_DESCRIPTION_TAG = createTag('radio-group-description');\nexport const RADIO_GROUP_LABEL_TAG = createTag('radio-group-label');\nexport const RADIO_GROUP_OPTION_TAG = createTag('radio-group-option');\n", "import type { JSX } from 'solid-js';\nimport { mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { useRadioGroupContext } from './RadioGroupContext';\nimport { RADIO_GROUP_DESCRIPTION_TAG } from './tags';\n\nexport type RadioGroupDescriptionProps<T extends ValidConstructor = 'div'> = HeadlessProps<T>;\n\n/**\n * The accessible description of a `RadioGroup` or of one `RadioGroupOption`,\n * depending on which it is nested in. Wired up through `aria-describedby`.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/radio-group.md}\n */\nexport function RadioGroupDescription<T extends ValidConstructor = 'div'>(\n  props: RadioGroupDescriptionProps<T>,\n): JSX.Element {\n  const context = useRadioGroupContext('RadioGroupDescription');\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      RADIO_GROUP_DESCRIPTION_TAG,\n      {\n        id: context.descriptionID,\n      },\n      omitProps(props, ['as']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { useRadioGroupContext } from './RadioGroupContext';\nimport { RADIO_GROUP_LABEL_TAG } from './tags';\n\nexport type RadioGroupLabelProps<T extends ValidConstructor = 'label'> = HeadlessProps<T>;\n\n/**\n * The accessible name of a `RadioGroup` or of one `RadioGroupOption`,\n * depending on which it is nested in. Wired up through `aria-labelledby`.\n *\n * Renders a `<label>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/radio-group.md}\n */\nexport function RadioGroupLabel<T extends ValidConstructor = 'label'>(\n  props: RadioGroupLabelProps<T>,\n): JSX.Element {\n  const context = useRadioGroupContext('RadioGroupLabel');\n\n  return createDynamic(\n    () => props.as ?? ('label' as T),\n    mergeProps(\n      RADIO_GROUP_LABEL_TAG,\n      {\n        id: context.labelID,\n      },\n      omitProps(props, ['as']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  SelectOptionStateOptions,\n  SelectOptionStateRenderProps,\n} from '../../states/create-select-option-state';\nimport {\n  SelectOptionStateProvider,\n  createSelectOptionState,\n} from '../../states/create-select-option-state';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createOwnerAttribute } from '../../utils/focus-navigator';\nimport {\n  createARIACheckedState,\n  createARIADisabledState,\n  createActiveState,\n  createCheckedState,\n  createDisabledState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { Button } from '../button';\nimport { RadioGroupContext } from './RadioGroupContext';\nimport { useRadioGroupRootContext } from './RadioGroupRootContext';\nimport { RADIO_GROUP_OPTION_TAG } from './tags';\n\nexport type RadioGroupOptionBaseProps<V> = Prettify<\n  SelectOptionStateOptions<V> & SelectOptionStateRenderProps\n>;\n\nexport type RadioGroupOptionProps<V, T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  RadioGroupOptionBaseProps<V>\n>;\n\n/**\n * One choice in a `RadioGroup`. The required `value` prop is what selecting it\n * produces.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/radio-group.md}\n */\nexport function RadioGroupOption<V, T extends ValidConstructor = 'div'>(\n  props: RadioGroupOptionProps<V, T>,\n): JSX.Element {\n  const context = useRadioGroupRootContext('RadioGroupOption');\n\n  const descriptionID = createUniqueId();\n  const labelID = createUniqueId();\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n  const state = createSelectOptionState(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        state.select();\n      });\n      useEventListener(current, 'focus', () => {\n        state.focus();\n        state.select();\n      });\n      useEventListener(current, 'blur', () => {\n        state.blur();\n      });\n    }\n  });\n\n  return createComponent(RadioGroupContext.Provider, {\n    value: { descriptionID, labelID },\n    get children() {\n      return createComponent(\n        Button,\n        mergeProps(\n          RADIO_GROUP_OPTION_TAG,\n          createOwnerAttribute(context.getId()),\n          {\n            get as() {\n              return props.as ?? ('div' as T);\n            },\n            role: 'radio',\n            'aria-labelledby': labelID,\n            'aria-describedby': descriptionID,\n            ref: setInternalRef,\n            get tabindex() {\n              const selected = state.isSelected();\n              return state.disabled() || !selected ? -1 : 0;\n            },\n          },\n          createDisabledState(() => state.disabled()),\n          createARIADisabledState(() => state.disabled()),\n          createCheckedState(() => state.isSelected()),\n          createARIACheckedState(() => state.isSelected()),\n          createActiveState(() => state.isActive()),\n          omitProps(props, ['as', 'children', 'value', 'disabled', 'ref']),\n          {\n            get children() {\n              return createComponent(SelectOptionStateProvider, {\n                state,\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n        ) as DynamicProps<T>,\n      );\n    },\n  });\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, createMemo, mergeProps, onCleanup } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  MultipleSelectStateControlledOptions,\n  MultipleSelectStateUncontrolledOptions,\n  SelectStateRenderProps,\n  SingleSelectStateControlledOptions,\n  SingleSelectStateUncontrolledOptions,\n} from '../../states/create-select-state';\nimport {\n  SelectStateProvider,\n  createMultipleSelectState,\n  createSingleSelectState,\n} from '../../states/create-select-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport createTypeAhead from '../../utils/create-type-ahead';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { SELECTED_NODE } from '../../utils/namespace';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createHasActiveState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { SelectContext, createSelectOptionFocusNavigator } from './SelectContext';\nimport { SELECT_TAG } from './tags';\n\nexport interface SelectBaseProps {\n  horizontal?: boolean;\n}\n\nexport type SingleSelectControlledBaseProps<V> = Prettify<\n  SelectBaseProps & SingleSelectStateControlledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type SingleSelectControlledProps<\n  V,\n  T extends ValidConstructor = 'ul',\n> = HeadlessPropsWithRef<T, SingleSelectControlledBaseProps<V>>;\n\nexport type SingleSelectUncontrolledBaseProps<V> = Prettify<\n  SelectBaseProps & SingleSelectStateUncontrolledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type SingleSelectUncontrolledProps<\n  V,\n  T extends ValidConstructor = 'ul',\n> = HeadlessPropsWithRef<T, SingleSelectUncontrolledBaseProps<V>>;\n\nexport type SingleSelectProps<V, T extends ValidConstructor = 'ul'> =\n  | SingleSelectControlledProps<V, T>\n  | SingleSelectUncontrolledProps<V, T>;\n\nexport type MultipleSelectControlledBaseProps<V> = Prettify<\n  SelectBaseProps & MultipleSelectStateControlledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type MultipleSelectControlledProps<\n  V,\n  T extends ValidConstructor = 'ul',\n> = HeadlessPropsWithRef<T, MultipleSelectControlledBaseProps<V>>;\n\nexport type MultipleSelectUncontrolledBaseProps<V> = Prettify<\n  SelectBaseProps & MultipleSelectStateUncontrolledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type MultipleSelectUncontrolledProps<\n  V,\n  T extends ValidConstructor = 'ul',\n> = HeadlessPropsWithRef<T, MultipleSelectUncontrolledBaseProps<V>>;\n\nexport type MultipleSelectProps<V, T extends ValidConstructor = 'ul'> =\n  | MultipleSelectControlledProps<V, T>\n  | MultipleSelectUncontrolledProps<V, T>;\n\nexport type SelectProps<V, T extends ValidConstructor = 'ul'> =\n  | SingleSelectProps<V, T>\n  | MultipleSelectProps<V, T>;\n\nfunction isSelectMultiple<V, T extends ValidConstructor = 'ul'>(\n  props: SelectProps<V, T>,\n): props is MultipleSelectProps<V, T> {\n  return !!props.multiple;\n}\n\nfunction isSelectUncontrolled<V, T extends ValidConstructor = 'ul'>(\n  props: SelectProps<V, T>,\n): props is SingleSelectUncontrolledProps<V, T> | MultipleSelectUncontrolledProps<V, T> {\n  return 'defaultValue' in props;\n}\n\n/**\n * An always-visible listbox. The same selection behaviour as `Listbox` without\n * the popup, so it has one state instead of two and a single `onChange`.\n *\n * Renders a `<ul>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/select.md}\n */\nexport function Select<V, T extends ValidConstructor = 'ul'>(\n  props: SelectProps<V, T>,\n): JSX.Element {\n  return createMemo(() => {\n    const controller = createSelectOptionFocusNavigator();\n    const [ref, setRef] = createForwardRef(props);\n    const state = isSelectMultiple(props)\n      ? createMultipleSelectState(props)\n      : createSingleSelectState(props);\n\n    const pushCharacter = createTypeAhead((value) => {\n      controller.setFirstMatch(value);\n    });\n\n    createEffect(() => {\n      const current = ref();\n      if (current instanceof HTMLElement) {\n        controller.setRef(current);\n        onCleanup(() => {\n          controller.clearRef();\n        });\n        useEventListener(current, 'keydown', (e) => {\n          if (!state.disabled()) {\n            switch (e.key) {\n              case 'ArrowUp': {\n                if (!props.horizontal) {\n                  e.preventDefault();\n                  controller.setPrevChecked(true);\n                }\n                break;\n              }\n              case 'ArrowLeft': {\n                if (props.horizontal) {\n                  e.preventDefault();\n                  controller.setPrevChecked(true);\n                }\n                break;\n              }\n              case 'ArrowDown': {\n                if (!props.horizontal) {\n                  e.preventDefault();\n                  controller.setNextChecked(true);\n                }\n                break;\n              }\n              case 'ArrowRight': {\n                if (props.horizontal) {\n                  e.preventDefault();\n                  controller.setNextChecked(true);\n                }\n                break;\n              }\n              case 'Home': {\n                e.preventDefault();\n                controller.setFirstChecked();\n                break;\n              }\n              case 'End': {\n                e.preventDefault();\n                controller.setLastChecked();\n                break;\n              }\n              case ' ':\n              case 'Enter': {\n                e.preventDefault();\n                break;\n              }\n              default: {\n                if (e.key.length === 1) {\n                  pushCharacter(e.key);\n                }\n                break;\n              }\n            }\n          }\n        });\n        useEventListener(current, 'focus', () => {\n          if (state.hasSelected()) {\n            controller.setFirstChecked(SELECTED_NODE);\n          } else {\n            controller.setFirstChecked();\n          }\n        });\n        useEventListener(current, 'focusin', (e) => {\n          if (e.target && e.target !== current) {\n            controller.setCurrent(e.target as HTMLElement);\n          }\n        });\n      }\n    });\n\n    return createComponent(SelectContext.Provider, {\n      value: {\n        controller,\n        get horizontal() {\n          return !!props.horizontal;\n        },\n      },\n      get children() {\n        return createDynamic(\n          () => props.as ?? ('ul' as T),\n          mergeProps(\n            SELECT_TAG,\n            {\n              id: controller.getId(),\n              role: 'listbox',\n              get 'aria-multiselectable'() {\n                return props.multiple;\n              },\n              ref: setRef,\n              get 'aria-orientation'() {\n                return props.horizontal ? 'horizontal' : 'vertical';\n              },\n              get tabindex() {\n                return state.hasActive() ? -1 : 0;\n              },\n            },\n            createDisabledState(() => state.disabled()),\n            createARIADisabledState(() => state.disabled()),\n            createHasSelectedState(() => state.hasSelected()),\n            createHasActiveState(() => state.hasActive()),\n            isSelectUncontrolled(props)\n              ? omitProps(props, [\n                  'as',\n                  'by',\n                  'children',\n                  'defaultValue',\n                  'disabled',\n                  'horizontal',\n                  'multiple',\n                  'onChange',\n                  'ref',\n                  'toggleable',\n                ])\n              : omitProps(props, [\n                  'as',\n                  'by',\n                  'children',\n                  'value',\n                  'disabled',\n                  'horizontal',\n                  'multiple',\n                  'onChange',\n                  'ref',\n                  'toggleable',\n                ]),\n            {\n              get children() {\n                return createComponent(SelectStateProvider, {\n                  state,\n                  get children() {\n                    return props.children;\n                  },\n                });\n              },\n            },\n          ) as DynamicProps<T>,\n        );\n      },\n    });\n  }) as unknown as JSX.Element;\n}\n", "import { createContext, createUniqueId, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\nimport FocusNavigator from '../../utils/focus-navigator';\n\ninterface SelectContextData {\n  horizontal: boolean;\n  controller: FocusNavigator;\n}\n\nexport const SelectContext = createContext<SelectContextData>();\n\n/**\n * Reads the nearest `Select`'s internal context, which holds the focus\n * navigator shared by its options. Throws when called outside a `Select`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/select.md}\n */\nexport function useSelectContext(componentName: string): SelectContextData {\n  const context = useContext(SelectContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Select>`));\n  return context;\n}\n\nexport function createSelectOptionFocusNavigator(): FocusNavigator {\n  return new FocusNavigator(createUniqueId());\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const SELECT_TAG = createTag('select');\nexport const SELECT_OPTION_TAG = createTag('select-option');\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  SelectOptionStateOptions,\n  SelectOptionStateRenderProps,\n} from '../../states/create-select-option-state';\nimport {\n  SelectOptionStateProvider,\n  createSelectOptionState,\n} from '../../states/create-select-option-state';\nimport type { HeadlessPropsWithRef, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createOwnerAttribute } from '../../utils/focus-navigator';\nimport {\n  createARIADisabledState,\n  createARIASelectedState,\n  createActiveState,\n  createDisabledState,\n  createSelectedState,\n} from '../../utils/state-props';\nimport type { OmitAndMerge, Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\nimport { useSelectContext } from './SelectContext';\nimport { SELECT_OPTION_TAG } from './tags';\n\nexport type SelectOptionBaseProps<V> = Prettify<\n  SelectOptionStateOptions<V> & SelectOptionStateRenderProps\n>;\n\nexport type SelectOptionProps<V, T extends ValidConstructor = 'li'> = HeadlessPropsWithRef<\n  T,\n  OmitAndMerge<SelectOptionBaseProps<V>, ButtonProps<T>>\n>;\n\n/**\n * One option of a `Select`. The required `value` prop is what selecting it\n * produces.\n *\n * Renders an `<li>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/select.md}\n */\nexport function SelectOption<V, T extends ValidConstructor = 'li'>(\n  props: SelectOptionProps<V, T>,\n): JSX.Element {\n  const context = useSelectContext('SelectOption');\n  const [internalRef, setInternalRef] = createForwardRef(props);\n  const state = createSelectOptionState(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        state.select();\n      });\n      useEventListener(current, 'focus', () => {\n        state.focus();\n      });\n      useEventListener(current, 'blur', () => {\n        state.blur();\n      });\n      useEventListener(current, 'mouseenter', () => {\n        if (!state.disabled()) {\n          current.focus();\n        }\n      });\n      useEventListener(current, 'mouseleave', () => {\n        if (!state.disabled()) {\n          current.blur();\n        }\n      });\n    }\n  });\n\n  return createComponent(\n    Button,\n    mergeProps(\n      SELECT_OPTION_TAG,\n      createOwnerAttribute(context.controller.getId()),\n      {\n        get as() {\n          return props.as ?? ('li' as T);\n        },\n        role: 'option',\n        get tabindex() {\n          return state.isActive() ? 0 : -1;\n        },\n        ref: setInternalRef,\n      },\n      createDisabledState(() => state.disabled()),\n      createARIADisabledState(() => state.disabled()),\n      createSelectedState(() => state.isSelected()),\n      createARIASelectedState(() => state.isSelected()),\n      createActiveState(() => state.isActive()),\n      omitProps(props, ['as', 'children', 'value', 'ref']),\n      {\n        get children() {\n          return createComponent(SelectOptionStateProvider, {\n            state,\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n    ) as ButtonProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  SelectOptionStateOptions,\n  SelectOptionStateRenderProps,\n} from '../../states/create-select-option-state';\nimport {\n  SelectOptionStateProvider,\n  createSelectOptionState,\n} from '../../states/create-select-option-state';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createOwnerAttribute } from '../../utils/focus-navigator';\nimport {\n  createARIADisabledState,\n  createARIASelectedState,\n  createActiveState,\n  createDisabledState,\n  createSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport { Button } from '../button';\nimport { useTabGroupContext } from './TabGroupContext';\nimport { useTabListContext } from './TabListContext';\nimport { TAB_TAG } from './tags';\n\nexport type TabBaseProps<V> = Prettify<SelectOptionStateOptions<V> & SelectOptionStateRenderProps>;\n\nexport type TabProps<V, T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  TabBaseProps<V>\n>;\n\n/**\n * One tab in a `TabList`. The required `value` prop links it to the `TabPanel`\n * with the same value.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/tabs.md}\n */\nexport function Tab<V, T extends ValidConstructor = 'div'>(props: TabProps<V, T>): JSX.Element {\n  const rootContext = useTabGroupContext('Tab');\n  const listContext = useTabListContext('Tab');\n\n  const [internalRef, setInternalRef] = createForwardRef(props);\n  const state = createSelectOptionState(props);\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        state.select();\n      });\n      useEventListener(current, 'focus', () => {\n        state.focus();\n        state.select();\n      });\n      useEventListener(current, 'blur', () => {\n        state.blur();\n        state.select();\n      });\n    }\n  });\n  return createComponent(\n    Button,\n    mergeProps(\n      TAB_TAG,\n      createOwnerAttribute(listContext.getId()),\n      {\n        get as() {\n          return props.as ?? ('div' as T);\n        },\n        role: 'tab',\n        ref: setInternalRef,\n        get id() {\n          return rootContext.getId('tab', props.value);\n        },\n        get 'aria-controls'() {\n          return rootContext.getId('tab-panel', props.value);\n        },\n        get tabindex() {\n          const selected = state.isSelected();\n          return state.disabled() || !selected ? -1 : 0;\n        },\n        get children() {\n          return createComponent(SelectOptionStateProvider, {\n            state,\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createDisabledState(() => state.disabled()),\n      createARIADisabledState(() => state.disabled()),\n      createSelectedState(() => state.isSelected()),\n      createARIASelectedState(() => state.isSelected()),\n      createActiveState(() => state.isActive()),\n      omitProps(props, ['as', 'children', 'value', 'disabled', 'ref']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import { createContext, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\n\ninterface TabGroupContextData<V> {\n  horizontal: boolean;\n  getId(kind: string, value: V): string;\n}\n\nexport const TabGroupContext = createContext<TabGroupContextData<unknown>>();\n\n/**\n * Reads the nearest `TabGroup`'s internal context, which holds the id prefix\n * that links each tab to its panel. Throws when called outside a `TabGroup`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/tabs.md}\n */\nexport function useTabGroupContext<V>(componentName: string): TabGroupContextData<V> {\n  const context = useContext(TabGroupContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <TabGroup>`));\n  return context;\n}\n", "import { createContext, createUniqueId, useContext } from 'solid-js';\nimport assert from '../../utils/assert';\nimport FocusNavigator from '../../utils/focus-navigator';\n\nexport const TabListContext = createContext<FocusNavigator>();\n\n/**\n * Reads the nearest `TabList`'s internal context, which holds the focus\n * navigator shared by its tabs. Throws when called outside a `TabList`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/tabs.md}\n */\nexport function useTabListContext(componentName: string): FocusNavigator {\n  const context = useContext(TabListContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <TabList>`));\n  return context;\n}\n\nexport function createTabFocusNavigator(): FocusNavigator {\n  return new FocusNavigator(createUniqueId());\n}\n", "import { createTag } from '../../utils/namespace';\n\nexport const TAB_GROUP_TAG = createTag('tab-group');\nexport const TAB_LIST_TAG = createTag('tab-list');\nexport const TAB_TAG = createTag('tab');\nexport const TAB_PANEL_TAG = createTag('tab-panel');\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createMemo, createUniqueId, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  SelectStateRenderProps,\n  SingleSelectStateControlledOptions,\n  SingleSelectStateUncontrolledOptions,\n} from '../../states/create-select-state';\nimport { SelectStateProvider, createSingleSelectState } from '../../states/create-select-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport {\n  createARIADisabledState,\n  createDisabledState,\n  createHasActiveState,\n  createHasSelectedState,\n} from '../../utils/state-props';\nimport type { Prettify } from '../../utils/types';\nimport { TabGroupContext } from './TabGroupContext';\nimport { TAB_GROUP_TAG } from './tags';\n\nexport interface TabGroupBaseProps {\n  horizontal: boolean;\n}\n\nexport type TabGroupControlledBaseProps<V> = Prettify<\n  TabGroupBaseProps & SingleSelectStateControlledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type TabGroupControlledProps<V, T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  TabGroupControlledBaseProps<V>\n>;\n\nexport type TabGroupUncontrolledBaseProps<V> = Prettify<\n  TabGroupBaseProps & SingleSelectStateUncontrolledOptions<V> & SelectStateRenderProps<V>\n>;\n\nexport type TabGroupUncontrolledProps<V, T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  TabGroupUncontrolledBaseProps<V>\n>;\n\nexport type TabGroupProps<V, T extends ValidConstructor = 'div'> =\n  | TabGroupControlledProps<V, T>\n  | TabGroupUncontrolledProps<V, T>;\n\nfunction isTabGroupUncontrolled<V, T extends ValidConstructor = 'div'>(\n  props: TabGroupProps<V, T>,\n): props is TabGroupUncontrolledProps<V, T> {\n  return 'defaultValue' in props;\n}\n\n/**\n * A tabbed interface. The `value` is the id of the selected tab, and the\n * arrow keys select as they move. The `horizontal` prop is required: it picks\n * which arrow keys navigate, and sets `aria-orientation`.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/tabs.md}\n */\nexport function TabGroup<V, T extends ValidConstructor = 'div'>(\n  props: TabGroupProps<V, T>,\n): JSX.Element {\n  return createMemo(() => {\n    const ownerID = createUniqueId();\n    const state = createSingleSelectState(props);\n    const [, setInternalRef] = createForwardRef(props);\n\n    const ids = new Map<V, number>();\n\n    return createComponent(TabGroupContext.Provider, {\n      value: {\n        get horizontal() {\n          return props.horizontal;\n        },\n        getId(kind: string, value: V): string {\n          let currentID = ids.get(value);\n          if (currentID == null) {\n            currentID = ids.size;\n            ids.set(value, currentID);\n          }\n          return `${ownerID}__${kind}-${currentID}`;\n        },\n      },\n      get children() {\n        return createDynamic(\n          () => props.as ?? ('div' as T),\n          mergeProps(\n            TAB_GROUP_TAG,\n            createDisabledState(() => state.disabled()),\n            createARIADisabledState(() => state.disabled()),\n            createHasSelectedState(() => state.hasSelected()),\n            createHasActiveState(() => state.hasActive()),\n            {\n              ref: setInternalRef,\n              get children() {\n                return createComponent(SelectStateProvider, {\n                  state,\n                  get children() {\n                    return props.children;\n                  },\n                });\n              },\n            },\n            isTabGroupUncontrolled(props)\n              ? omitProps(props, [\n                  'as',\n                  'children',\n                  'defaultValue',\n                  'disabled',\n                  'onChange',\n                  'by',\n                  'ref',\n                  'toggleable',\n                  'horizontal',\n                ])\n              : omitProps(props, [\n                  'as',\n                  'children',\n                  'value',\n                  'disabled',\n                  'onChange',\n                  'by',\n                  'ref',\n                  'toggleable',\n                  'horizontal',\n                ]),\n          ) as DynamicProps<T>,\n        );\n      },\n    });\n  }) as unknown as JSX.Element;\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps, onCleanup } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { SelectStateRenderProps } from '../../states/create-select-state';\nimport { SelectStateChild, useSelectState } from '../../states/create-select-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createHasActiveState, createHasSelectedState } from '../../utils/state-props';\nimport useEventListener from '../../utils/use-event-listener';\nimport { useTabGroupContext } from './TabGroupContext';\nimport { TabListContext, createTabFocusNavigator } from './TabListContext';\nimport { TAB_LIST_TAG } from './tags';\n\nexport type TabListProps<V, T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  SelectStateRenderProps<V>\n>;\n\n/**\n * The row of tabs in a `TabGroup`, and the element that owns their arrow-key\n * navigation.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/tabs.md}\n */\nexport function TabList<V, T extends ValidConstructor = 'div'>(\n  props: TabListProps<V, T>,\n): JSX.Element {\n  const rootContext = useTabGroupContext('TabList');\n  const controller = createTabFocusNavigator();\n  const state = useSelectState();\n  const [ref, setRef] = createForwardRef(props);\n\n  createEffect(() => {\n    const current = ref();\n    if (current instanceof HTMLElement) {\n      controller.setRef(current);\n      onCleanup(() => {\n        controller.clearRef();\n      });\n      useEventListener(current, 'keydown', (e) => {\n        if (!state.disabled()) {\n          switch (e.key) {\n            case 'ArrowUp': {\n              if (!rootContext.horizontal) {\n                e.preventDefault();\n                controller.setPrevChecked(true);\n              }\n              break;\n            }\n            case 'ArrowLeft': {\n              if (rootContext.horizontal) {\n                e.preventDefault();\n                controller.setPrevChecked(true);\n              }\n              break;\n            }\n            case 'ArrowDown': {\n              if (!rootContext.horizontal) {\n                e.preventDefault();\n                controller.setNextChecked(true);\n              }\n              break;\n            }\n            case 'ArrowRight': {\n              if (rootContext.horizontal) {\n                e.preventDefault();\n                controller.setNextChecked(true);\n              }\n              break;\n            }\n            case 'Home': {\n              e.preventDefault();\n              controller.setFirstChecked();\n              break;\n            }\n            case 'End': {\n              e.preventDefault();\n              controller.setLastChecked();\n              break;\n            }\n          }\n        }\n      });\n      useEventListener(current, 'focusin', (e) => {\n        if (e.target && e.target !== current) {\n          controller.setCurrent(e.target as HTMLElement);\n        }\n      });\n    }\n  });\n\n  return createComponent(TabListContext.Provider, {\n    value: controller,\n    get children() {\n      return createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          TAB_LIST_TAG,\n          {\n            role: 'tablist',\n            get 'aria-orientation'() {\n              return rootContext.horizontal ? 'horizontal' : 'vertical';\n            },\n            ref: setRef,\n            get children() {\n              return createComponent(SelectStateChild, {\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n          createHasSelectedState(() => state.hasSelected()),\n          createHasActiveState(() => state.hasActive()),\n          omitProps(props, ['as', 'ref', 'children']),\n        ) as DynamicProps<T>,\n      );\n    },\n  });\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { SelectOptionStateOptions } from '../../states/create-select-option-state';\nimport {\n  SelectOptionStateProvider,\n  createSelectOptionState,\n} from '../../states/create-select-option-state';\nimport createDynamic from '../../utils/create-dynamic';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createActiveState, createSelectedState } from '../../utils/state-props';\nimport { useTabGroupContext } from './TabGroupContext';\nimport { TAB_PANEL_TAG } from './tags';\n\nexport interface TabPanelBaseProps<V> extends Exclude<SelectOptionStateOptions<V>, 'disabled'> {\n  unmount?: boolean;\n}\n\nexport type TabPanelProps<V, T extends ValidConstructor = 'div'> = HeadlessProps<\n  T,\n  TabPanelBaseProps<V>\n>;\n\n/**\n * The content shown for the `Tab` with the same `value`. Unmounts while its\n * tab is unselected unless `unmount={false}` is set.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/tabs.md}\n */\nexport function TabPanel<V, T extends ValidConstructor = 'div'>(\n  props: TabPanelProps<V, T>,\n): JSX.Element {\n  const rootContext = useTabGroupContext('TabPanel');\n  const state = createSelectOptionState(props);\n\n  return createUnmountable(\n    props,\n    () => state.isSelected(),\n    () =>\n      createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(\n          TAB_PANEL_TAG,\n          {\n            role: 'tabpanel',\n            get tabindex() {\n              return state.isSelected() ? 0 : -1;\n            },\n            get id() {\n              return rootContext.getId('tab-panel', props.value);\n            },\n            get 'aria-labelledby'() {\n              return rootContext.getId('tab', props.value);\n            },\n            get children() {\n              return createComponent(SelectOptionStateProvider, {\n                state,\n                get children() {\n                  return props.children;\n                },\n              });\n            },\n          },\n          createSelectedState(() => state.isSelected()),\n          createActiveState(() => state.isActive()),\n          omitProps(props, ['as', 'disabled', 'unmount', 'value']),\n        ) as DynamicProps<T>,\n      ),\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport {\n  createComponent,\n  createContext,\n  createEffect,\n  createSignal,\n  createUniqueId,\n  mergeProps,\n  onCleanup,\n  useContext,\n} from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport assert from '../../utils/assert';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { DynamicProps, HeadlessProps, ValidConstructor } from '../../utils/dynamic-prop';\nimport { createTag } from '../../utils/namespace';\n\nconst TOAST_TAG = createTag('toast');\nconst TOASTER_TAG = createTag('toaster');\n\ninterface ToastContextData {\n  ownerID: string;\n}\n\nconst ToastContext = createContext<ToastContextData>();\n\nfunction useToastContext(componentName: string): ToastContextData {\n  const context = useContext(ToastContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Toaster>`));\n  return context;\n}\n\nexport type ToastProps<T extends ValidConstructor = 'div'> = HeadlessProps<T>;\n\n/**\n * One notification inside a {@link Toaster}. Carries `role=\"status\"`, so it is\n * announced without stealing focus.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/toast.md}\n */\nexport function Toast<T extends ValidConstructor = 'div'>(props: ToastProps<T>): JSX.Element {\n  useToastContext('Toast');\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      TOAST_TAG,\n      {\n        role: 'status',\n        'aria-live': 'polite',\n      },\n      omitProps(props, ['as']),\n    ) as DynamicProps<T>,\n  );\n}\n\nexport type ToasterProps<T extends ValidConstructor = 'div'> = HeadlessProps<T>;\n\n/**\n * The region that holds the toasts. It does not read the queue for you:\n * subscribe with {@link useToaster} and map over the result yourself.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/toast.md}\n */\nexport function Toaster<T extends ValidConstructor = 'div'>(props: ToasterProps<T>): JSX.Element {\n  const ownerID = createUniqueId();\n\n  return createComponent(ToastContext.Provider, {\n    value: {\n      ownerID,\n    },\n    get children() {\n      return createDynamic(\n        () => props.as ?? ('div' as T),\n        mergeProps(TOASTER_TAG, omitProps(props, ['as'])) as DynamicProps<T>,\n      );\n    },\n  });\n}\nexport interface ToastData<T> {\n  id: string;\n  data: T;\n}\n\nexport type ToasterListener<T> = (queue: ToastData<T>[]) => void;\n\n/**\n * The queue behind a {@link Toaster}. Create one at module scope and share it,\n * so any code can push a toast with `create`, drop one with `remove`, or empty\n * the queue with `clear`.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/toast.md}\n */\nexport class ToasterStore<T> {\n  private static toasterID = 0;\n\n  private readonly id: number;\n\n  private queue: ToastData<T>[] = [];\n\n  private readonly listeners = new Set<ToasterListener<T>>();\n\n  private toastID = 0;\n\n  constructor() {\n    this.id = ToasterStore.toasterID;\n    ToasterStore.toasterID += 1;\n  }\n\n  subscribe(callback: ToasterListener<T>): () => void {\n    this.listeners.add(callback);\n    return () => {\n      this.listeners.delete(callback);\n    };\n  }\n\n  private notify(): void {\n    const clone = [...this.queue];\n    for (const listener of this.listeners.keys()) {\n      listener(clone);\n    }\n  }\n\n  create(data: T): string {\n    const id = `toast-${this.id}-${this.toastID}`;\n    this.toastID += 1;\n    this.queue.push({\n      id,\n      data,\n    });\n    this.notify();\n    return id;\n  }\n\n  remove(id: string): void {\n    this.queue = this.queue.filter((item) => item.id !== id);\n    this.notify();\n  }\n\n  clear(): void {\n    this.queue = [];\n    this.notify();\n  }\n\n  getQueue(): ToastData<T>[] {\n    return this.queue;\n  }\n}\n\n/**\n * Subscribes to a {@link ToasterStore} and returns its queue as a signal. The\n * store is passed in rather than read from context, so the same queue can be\n * reached from anywhere in the app, including outside the component tree.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/toast.md}\n */\nexport function useToaster<T>(toaster: ToasterStore<T>): () => ToastData<T>[] {\n  const [signal, setSignal] = createSignal(toaster.getQueue());\n\n  createEffect(() => {\n    onCleanup(\n      toaster.subscribe((queue) => {\n        setSignal(queue);\n      }),\n    );\n  });\n\n  return signal;\n}\n", "import type { JSX } from 'solid-js';\nimport { createComponent, createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type {\n  ToggleStateControlledOptions,\n  ToggleStateRenderProps,\n  ToggleStateUncontrolledOptions,\n} from '../../states/create-toggle-state';\nimport { ToggleStateProvider, createToggleState } from '../../states/create-toggle-state';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { createTag } from '../../utils/namespace';\nimport {\n  createARIADisabledState,\n  createARIAPressedState,\n  createDisabledState,\n  createPressedState,\n} from '../../utils/state-props';\nimport type { OmitAndMerge, Prettify } from '../../utils/types';\nimport useEventListener from '../../utils/use-event-listener';\nimport type { ButtonProps } from '../button';\nimport { Button } from '../button';\n\nconst TOGGLE_TAG = createTag('toggle');\n\nexport type ToggleControlledBaseProps = Prettify<\n  ToggleStateControlledOptions & ToggleStateRenderProps\n>;\n\nexport type ToggleControlledProps<T extends ValidConstructor = 'button'> = HeadlessPropsWithRef<\n  T,\n  OmitAndMerge<ToggleControlledBaseProps, ButtonProps<T>>\n>;\n\nexport type ToggleUncontrolledBaseProps = Prettify<\n  ToggleStateUncontrolledOptions & ToggleStateRenderProps\n>;\n\nexport type ToggleUncontrolledProps<T extends ValidConstructor = 'button'> = HeadlessPropsWithRef<\n  T,\n  OmitAndMerge<ToggleUncontrolledBaseProps, ButtonProps<T>>\n>;\n\nexport type ToggleProps<T extends ValidConstructor = 'button'> =\n  | ToggleControlledProps<T>\n  | ToggleUncontrolledProps<T>;\n\nfunction isToggleUncontrolled<T extends ValidConstructor = 'button'>(\n  props: ToggleProps<T>,\n): props is ToggleUncontrolledProps<T> {\n  return 'defaultPressed' in props;\n}\n\n/**\n * A two-state button, pressed or unpressed, reported through `aria-pressed`.\n * Use it for controls that stay on until pressed again, such as bold in a text\n * editor.\n *\n * Renders a `<button>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/toggle.md}\n */\nexport function Toggle<T extends ValidConstructor = 'button'>(props: ToggleProps<T>): JSX.Element {\n  const [ref, setRef] = createForwardRef(props);\n  const state = createToggleState(props);\n\n  createEffect(() => {\n    const current = ref();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'click', () => {\n        state.toggle();\n      });\n    }\n  });\n\n  return createComponent(\n    Button,\n    mergeProps(\n      TOGGLE_TAG,\n      {\n        ref: setRef,\n        get children() {\n          return createComponent(ToggleStateProvider, {\n            state,\n            get children() {\n              return props.children;\n            },\n          });\n        },\n      },\n      createPressedState(() => state.pressed()),\n      createARIAPressedState(() => state.pressed()),\n      createDisabledState(() => state.disabled()),\n      createARIADisabledState(() => state.disabled()),\n      isToggleUncontrolled(props)\n        ? omitProps(props, ['onChange', 'defaultPressed', 'ref', 'disabled', 'children'])\n        : omitProps(props, ['onChange', 'pressed', 'ref', 'disabled', 'children']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { Accessor, JSX } from 'solid-js';\nimport {\n  createComponent,\n  createContext,\n  createMemo,\n  createSignal,\n  untrack,\n  useContext,\n} from 'solid-js';\nimport assert from '../utils/assert';\n\nexport interface ToggleStateControlledOptions {\n  pressed: boolean;\n  disabled?: boolean;\n  onChange?: (state: boolean) => void;\n}\n\nexport interface ToggleStateUncontrolledOptions {\n  defaultPressed: boolean;\n  disabled?: boolean;\n  onChange?: (state: boolean) => void;\n}\n\nexport type ToggleStateOptions = ToggleStateControlledOptions | ToggleStateUncontrolledOptions;\n\nexport interface ToggleStateProperties {\n  pressed: () => boolean;\n  setState: (newState: boolean) => void;\n  disabled: () => boolean;\n  check: () => void;\n  uncheck: () => void;\n  toggle: () => void;\n}\n\n/**\n * Creates a pressed/unpressed state. Backs `Toggle`.\n *\n * Pass `defaultPressed` for uncontrolled state or `pressed` for controlled.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#toggle-state}\n */\nexport function createToggleState(options: ToggleStateOptions): ToggleStateProperties {\n  // Reference to the signal read\n  let signal: Accessor<boolean>;\n  // Reference to the signal write\n  let setSignal: (value: boolean) => void;\n\n  // Type branding\n  // Toggle if state is uncontrolled\n  if ('defaultPressed' in options) {\n    // Uncontrolled toggle means the toggle\n    // manages its own state.\n    const [isOpen, setIsOpen] = createSignal<boolean>(options.defaultPressed);\n    signal = isOpen;\n    setSignal = (value): void => {\n      setIsOpen(value);\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  } else {\n    // Controlled means relying on 3P state\n    signal = createMemo(() => options.pressed);\n    setSignal = (value): void => {\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  }\n\n  const isDisabled = createMemo(() => !!options.disabled);\n\n  return {\n    pressed(): boolean {\n      return signal();\n    },\n    setState(value): void {\n      if (!untrack(isDisabled)) {\n        setSignal(value);\n      }\n    },\n    disabled: isDisabled,\n    check(): void {\n      if (!untrack(isDisabled)) {\n        setSignal(true);\n      }\n    },\n    uncheck(): void {\n      if (!untrack(isDisabled)) {\n        setSignal(false);\n      }\n    },\n    toggle(): void {\n      if (!untrack(isDisabled)) {\n        setSignal(!untrack(signal));\n      }\n    },\n  };\n}\n\nexport interface ToggleStateRenderProps {\n  children?: JSX.Element | ((state: ToggleStateProperties) => JSX.Element);\n}\n\nexport interface ToggleStateProviderProps extends ToggleStateRenderProps {\n  state: ToggleStateProperties;\n}\n\nconst ToggleStateContext = createContext<ToggleStateProperties>();\n\nexport function ToggleStateProvider(props: ToggleStateProviderProps): JSX.Element {\n  return createComponent(ToggleStateContext.Provider, {\n    value: props.state,\n    get children() {\n      const current = props.children;\n      if (typeof current === 'function') {\n        return current(props.state);\n      }\n      return current;\n    },\n  });\n}\n\n/**\n * Reads the nearest toggle state from context. Throws when there is none.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#toggle-state}\n */\nexport function useToggleState(): ToggleStateProperties {\n  const ctx = useContext(ToggleStateContext);\n  assert(ctx, new Error('Missing <ToggleStateProvider>'));\n  return ctx;\n}\n\n/**\n * Passes the nearest toggle state to a render prop. A function child is\n * treated as a render prop only when it declares exactly one parameter.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#toggle-state}\n */\nexport function ToggleStateChild(props: ToggleStateRenderProps): JSX.Element {\n  const state = useToggleState();\n  return createMemo(() => {\n    const current = props.children;\n    if (typeof current === 'function' && current.length === 1) {\n      return createMemo(() => current(state));\n    }\n    return current;\n  }) as unknown as JSX.Element;\n}\n", "import type { JSX } from 'solid-js';\nimport { createEffect, mergeProps } from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport createDynamic from '../../utils/create-dynamic';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport { focusFirst, focusLast, focusNext, focusPrev } from '../../utils/focus-navigation';\nimport getFocusableElements from '../../utils/focus-query';\nimport { createTag } from '../../utils/namespace';\nimport useEventListener from '../../utils/use-event-listener';\n\nconst TOOLBAR_TAG = createTag('toolbar');\n\nexport type ToolbarProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  { horizontal?: boolean }\n>;\n\n/**\n * A group of controls that share one tab stop. The arrow keys move between\n * them, so a toolbar of ten buttons costs the keyboard user one `Tab` instead\n * of ten.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/toolbar.md}\n */\nexport function Toolbar<T extends ValidConstructor = 'div'>(props: ToolbarProps<T>): JSX.Element {\n  const [internalRef, setInternalRef] = createForwardRef(props);\n\n  const isHorizontal = (): boolean => props.horizontal ?? true;\n\n  let focusedElement: HTMLElement | undefined;\n\n  function getNextFocusable(): void {\n    const ref = internalRef();\n    if (\n      ref instanceof HTMLElement &&\n      document.activeElement &&\n      ref.contains(document.activeElement)\n    ) {\n      focusNext(getFocusableElements(ref), document.activeElement as HTMLElement, false, false);\n    }\n  }\n\n  function getPrevFocusable(): void {\n    const ref = internalRef();\n    if (\n      ref instanceof HTMLElement &&\n      document.activeElement &&\n      ref.contains(document.activeElement)\n    ) {\n      focusPrev(getFocusableElements(ref), document.activeElement as HTMLElement, false, false);\n    }\n  }\n\n  createEffect(() => {\n    const current = internalRef();\n    if (current instanceof HTMLElement) {\n      useEventListener(current, 'keydown', (e) => {\n        switch (e.key) {\n          case 'ArrowLeft': {\n            if (isHorizontal()) {\n              e.preventDefault();\n              getPrevFocusable();\n            }\n            break;\n          }\n          case 'ArrowUp': {\n            if (!isHorizontal()) {\n              e.preventDefault();\n              getPrevFocusable();\n            }\n            break;\n          }\n          case 'ArrowRight': {\n            if (isHorizontal()) {\n              e.preventDefault();\n              getNextFocusable();\n            }\n            break;\n          }\n          case 'ArrowDown': {\n            if (!isHorizontal()) {\n              e.preventDefault();\n              getNextFocusable();\n            }\n            break;\n          }\n          case 'Home': {\n            if (focusFirst(getFocusableElements(current), false)) {\n              e.preventDefault();\n            }\n            break;\n          }\n          case 'End': {\n            if (focusLast(getFocusableElements(current), false)) {\n              e.preventDefault();\n            }\n            break;\n          }\n        }\n      });\n      useEventListener(current, 'focus', () => {\n        if (focusedElement) {\n          focusedElement.focus();\n        } else {\n          focusFirst(getFocusableElements(current), false);\n        }\n      });\n      useEventListener(current, 'focusin', (e) => {\n        if (e.target && e.target !== current) {\n          focusedElement = e.target as HTMLElement;\n        }\n      });\n    }\n  });\n\n  return createDynamic(\n    () => props.as ?? ('div' as T),\n    mergeProps(\n      TOOLBAR_TAG,\n      {\n        role: 'toolbar',\n        tabindex: 0,\n        ref: setInternalRef,\n        get 'aria-orientation'() {\n          return isHorizontal() ? 'horizontal' : 'vertical';\n        },\n      },\n      omitProps(props, ['as', 'horizontal', 'ref']),\n    ) as DynamicProps<T>,\n  );\n}\n", "import type { JSX } from 'solid-js';\nimport {\n  createComponent,\n  createContext,\n  createEffect,\n  createMemo,\n  createSignal,\n  mergeProps,\n  on,\n  onCleanup,\n  useContext,\n} from 'solid-js';\nimport { omitProps } from 'solid-use/props';\nimport type { TransitionHooks, TransitionStates } from '../../states/create-transition-state';\nimport { TransitionState } from '../../states/create-transition-state';\nimport assert from '../../utils/assert';\nimport createDynamic from '../../utils/create-dynamic';\nimport type { UnmountableProps } from '../../utils/create-unmountable';\nimport { createUnmountable } from '../../utils/create-unmountable';\nimport type {\n  DynamicProps,\n  HeadlessPropsWithRef,\n  ValidConstructor,\n} from '../../utils/dynamic-prop';\nimport { createForwardRef } from '../../utils/dynamic-prop';\nimport type { Prettify } from '../../utils/types';\n\nexport interface TransitionRootBaseProps {\n  show: boolean;\n}\n\nconst TransitionRootContext = createContext<TransitionRootBaseProps>();\nconst TransitionStateContext = createContext<{ value?: TransitionState }>({});\n\nfunction useTransitionRootContext(componentName: string): TransitionRootBaseProps {\n  const context = useContext(TransitionRootContext);\n  assert(context, new Error(`<${componentName}> must be used inside a <Transition>`));\n  return context;\n}\n\nexport interface TransitionBaseChildProps extends UnmountableProps, TransitionHooks {\n  appear?: boolean;\n  enter?: string;\n  enterFrom?: string;\n  enterTo?: string;\n  entered?: string;\n  leave?: string;\n  leaveFrom?: string;\n  leaveTo?: string;\n}\n\nexport type TransitionChildProps<T extends ValidConstructor = 'div'> = HeadlessPropsWithRef<\n  T,\n  TransitionBaseChildProps\n>;\n\nfunction getClassList(classes?: string): string[] {\n  return classes ? classes.split(' ') : [];\n}\n\n/**\n * A transition runs detached from the effect that started it, so a hook that\n * throws mid-transition must not take the effect down with it.\n */\nfunction ignoreTransitionError(): void {\n  // do nothing\n}\n\n/**\n * A {@link Transition} that follows its parent transition instead of its own\n * `show` prop, so several elements can animate together on different timings.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/transition.md}\n */\nexport function TransitionChild<T extends ValidConstructor = 'div'>(\n  props: TransitionChildProps<T>,\n): JSX.Element {\n  const root = useTransitionRootContext('TransitionChild');\n  const parent = useContext(TransitionStateContext).value;\n\n  const [current, setCurrent] = createSignal<TransitionStates>();\n  const [internalRef, setInternalRef] = createForwardRef(props);\n  /**\n   * Whether this element has finished leaving. It starts `false` so that the\n   * enter path never has to write it: a write while the component is being\n   * resolved would invalidate whichever computation is resolving it, and that\n   * computation is the one that built this component in the first place.\n   */\n  const [left, setLeft] = createSignal(false);\n\n  /**\n   * Where the element wants to be. A child without `appear` waits for its\n   * parent to finish entering before it mounts at all.\n   */\n  function shown(): boolean {\n    if (props.appear) {\n      return root.show;\n    }\n    if (parent) {\n      return root.show && parent.visible();\n    }\n    return root.show;\n  }\n\n  /**\n   * Mounted state, derived rather than assigned: an element that is no longer\n   * wanted stays mounted until its leave transition has finished with it.\n   */\n  const visible = createMemo<boolean>((wasVisible = false) => {\n    if (shown()) {\n      return true;\n    }\n    if (!wasVisible) {\n      return false;\n    }\n    return !left();\n  });\n\n  // Nested transitions only start once this one has finished entering, and have\n  // to be done before this one starts leaving.\n  const [ready, setReady] = createSignal(false);\n\n  const state = new TransitionState(ready, {\n    onTransition(value) {\n      props.onTransition?.(value);\n      setCurrent(value);\n    },\n    beforeEnter() {\n      props.beforeEnter?.();\n      setReady(false);\n      setLeft(false);\n    },\n    beforeLeave() {\n      props.beforeLeave?.();\n    },\n    afterEnter() {\n      props.afterEnter?.();\n      setReady(true);\n    },\n    afterLeave() {\n      props.afterLeave?.();\n      setLeft(true);\n    },\n  });\n\n  /**\n   * An element on its way out, or one kept mounted by `unmount={false}`, is\n   * still in the DOM: without `inert` its content stays clickable and reachable\n   * by Tab while it fades away. The enter phases stay interactive so that a\n   * panel nested inside can take focus as it opens.\n   */\n  function isInert(): true | undefined {\n    const value = current();\n    if (value === undefined) {\n      // Nothing has transitioned yet, so the only element on screen is one that\n      // `unmount={false}` mounted while hidden.\n      return root.show ? undefined : true;\n    }\n    return value === 'leave-from' || value === 'leave-to' ? true : undefined;\n  }\n\n  createEffect(() => {\n    state.setClasses({\n      enter: getClassList(props.enter),\n      enterFrom: getClassList(props.enterFrom),\n      enterTo: getClassList(props.enterTo),\n      entered: getClassList(props.entered),\n      leave: getClassList(props.leave),\n      leaveFrom: getClassList(props.leaveFrom),\n      leaveTo: getClassList(props.leaveTo),\n    });\n  });\n\n  if (parent) {\n    parent.register(state);\n\n    onCleanup(() => {\n      parent.unregister(state);\n    });\n\n    createEffect(\n      on(internalRef, (element) => {\n        if (element instanceof HTMLElement && element.isConnected) {\n          state.setElement(element);\n        }\n      }),\n    );\n  }\n\n  createEffect(\n    on([internalRef, () => root.show], ([element, flag]) => {\n      // `unmount` throws the element away and builds a new one, and the ref\n      // still holds the old one when `show` flips back to true. Transitioning\n      // that detached element would put the classes somewhere invisible and\n      // leave the element that actually mounts unanimated, so wait for the ref\n      // to catch up.\n      if (element instanceof HTMLElement && element.isConnected) {\n        state.setElement(element);\n\n        if (flag) {\n          state.show().catch(ignoreTransitionError);\n        } else {\n          state.hide().catch(ignoreTransitionError);\n        }\n      }\n    }),\n  );\n\n  return createComponent(TransitionStateContext.Provider, {\n    value: { value: state },\n    get children() {\n      return createUnmountable(props, visible, () =>\n        createDynamic(\n          () => props.as ?? ('div' as T),\n          mergeProps(\n            omitProps(props, [\n              'as',\n              'enter',\n              'enterFrom',\n              'enterTo',\n              'leave',\n              'leaveFrom',\n              'leaveTo',\n              'unmount',\n              'afterEnter',\n              'afterLeave',\n              'appear',\n              'beforeEnter',\n              'beforeLeave',\n              'entered',\n              'onTransition',\n              'ref',\n            ]),\n            {\n              ref: setInternalRef,\n              get 'tc-transition'() {\n                return current();\n              },\n              get inert() {\n                return isInert();\n              },\n            },\n          ) as DynamicProps<T>,\n        ),\n      );\n    },\n  });\n}\n\nexport type TransitionProps<T extends ValidConstructor = 'div'> = Prettify<\n  TransitionRootBaseProps & TransitionChildProps<T>\n>;\n\n/**\n * Applies enter and leave classes around a `show` prop, and keeps its children\n * mounted until the leave transition finishes. It only adds and removes\n * classes; the animation itself is yours to write.\n *\n * Renders a `<div>` by default.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/components/transition.md}\n */\nexport function Transition<T extends ValidConstructor = 'div'>(\n  props: TransitionProps<T>,\n): JSX.Element {\n  return createComponent(TransitionRootContext.Provider, {\n    value: props,\n    get children() {\n      return createComponent(TransitionStateContext.Provider, {\n        value: { value: undefined },\n        get children() {\n          return createComponent(\n            TransitionChild,\n            omitProps(props, ['show']) as TransitionChildProps<T>,\n          );\n        },\n      });\n    },\n  });\n}\n", "import waitForTransition from '../utils/wait-for-transition';\n\n/**\n * The class names for one transition, already split into lists.\n *\n * `enter` and `leave` carry the CSS `transition` or `animation` declaration and\n * stay on for the whole of their phase; the `*From` and `*To` pairs are the\n * start and end states swapped between them. `entered` is the resting state,\n * applied once entering has finished.\n */\nexport interface TransitionClasses {\n  enter: string[];\n  enterFrom: string[];\n  enterTo: string[];\n  entered: string[];\n  leave: string[];\n  leaveFrom: string[];\n  leaveTo: string[];\n}\n\n/**\n * Callbacks fired around a transition.\n *\n * A run that gets interrupted never reaches its `afterEnter` or `afterLeave`,\n * which is what keeps a caller from unmounting an element that is on its way\n * back in.\n */\nexport interface TransitionHooks {\n  /** Fired for every phase change, including the ones a caller cannot hook. */\n  onTransition?: (state: TransitionStates) => void;\n  beforeEnter?: () => void;\n  afterEnter?: () => void;\n  beforeLeave?: () => void;\n  afterLeave?: () => void;\n}\n\n/** The phase a transition is in, published as the `tc-transition` attribute. */\nexport type TransitionStates = 'enter-from' | 'enter-to' | 'entered' | 'leave-from' | 'leave-to';\n\n// `classList` rejects the empty string, and splitting an empty class prop on\n// spaces produces exactly that, so both helpers drop empty entries first.\nfunction addClassList(ref: HTMLElement, classes: string[]): void {\n  const filtered = classes.filter((value) => value);\n  if (filtered.length) {\n    ref.classList.add(...filtered);\n  }\n}\nfunction removeClassList(ref: HTMLElement, classes: string[]): void {\n  const filtered = classes.filter((value) => value);\n  if (filtered.length) {\n    ref.classList.remove(...filtered);\n  }\n}\n\n/**\n * Forces the browser to compute the element's style as it stands.\n *\n * A transition only runs when a property changes between two computed styles.\n * Committing the starting state on its own, before the class carrying the\n * `transition` declaration goes on, is what makes the browser treat that state\n * as where the transition begins rather than as something to animate towards.\n */\nfunction commitStyle(ref: HTMLElement): string {\n  // The property read does not matter: any of them recomputes the whole style.\n  return getComputedStyle(ref).transitionProperty;\n}\n\n/**\n * Runs one element's enter and leave transitions.\n *\n * The state holds no reactivity of its own: a caller feeds it an element and a\n * set of classes, calls {@link show} or {@link hide}, and observes progress\n * through {@link TransitionHooks}. That is what lets the same machinery drive\n * both a `<Transition>` and a `<TransitionChild>`.\n *\n * Each step waits on the element's running animations rather than on a\n * `transitionend` listener, so an element with nothing to animate simply moves\n * on to the next step instead of waiting for an event that never arrives.\n *\n * States nest: a parent enters before its children and leaves after them, so a\n * group animates in from the outside and out from the inside.\n */\nexport class TransitionState {\n  /**\n   * @param visible Whether this state has finished entering. Children read it to\n   * decide when they may mount.\n   * @param hooks Called as the transition progresses.\n   */\n  constructor(\n    public visible: () => boolean,\n    private readonly hooks: TransitionHooks,\n  ) {}\n\n  private readonly children = new Set<TransitionState>();\n\n  register(child: TransitionState): void {\n    this.children.add(child);\n  }\n\n  unregister(child: TransitionState): void {\n    this.children.delete(child);\n  }\n\n  private element?: HTMLElement;\n\n  /**\n   * The element to transition. It arrives after construction, because the\n   * caller only has a ref once its element has rendered, and it changes again\n   * whenever an `unmount`ing element is rebuilt.\n   */\n  setElement(element: HTMLElement): void {\n    if (this.element === element) {\n      return;\n    }\n    this.element = element;\n    // Whatever was running belonged to the element that has just been replaced,\n    // so it no longer describes anything on screen.\n    this.token += 1;\n    this.showing = undefined;\n    this.hiding = undefined;\n  }\n\n  private classes?: TransitionClasses;\n\n  /**\n   * Classes are re-read on every transition rather than captured once, so\n   * changing a class prop applies to the next transition instead of restarting\n   * the current one.\n   */\n  setClasses(classes: TransitionClasses): void {\n    this.classes = classes;\n  }\n\n  /**\n   * Bumped whenever a transition starts. A run whose token no longer matches\n   * has been superseded by one going the other way, and stops at its next step\n   * instead of finishing and undoing the newer transition.\n   */\n  private token = 0;\n\n  // The transition currently running in each direction, kept so that repeated\n  // calls join the run in flight instead of restarting it, and cleared by the\n  // opposite direction when it interrupts.\n  private showing?: Promise<void>;\n\n  private hiding?: Promise<void>;\n\n  /**\n   * Enters, then lets the children enter behind it.\n   *\n   * Every wait is followed by a token check: if a leave has started in the\n   * meantime, this run abandons its remaining steps rather than putting classes\n   * back on an element that is now going the other way.\n   */\n  private async _show(\n    token: number,\n    element: HTMLElement,\n    classes?: TransitionClasses,\n  ): Promise<void> {\n    this.hooks.beforeEnter?.();\n    if (classes) {\n      // A leave that was interrupted part-way through still has its classes on\n      // the element.\n      removeClassList(element, classes.leave);\n      removeClassList(element, classes.leaveFrom);\n      removeClassList(element, classes.leaveTo);\n    }\n    this.hooks.onTransition?.('enter-from');\n    if (classes) {\n      // The starting state goes on first and is committed on its own. Applying\n      // it together with `enter` would leave the browser transitioning *into*\n      // the starting state — the element would fade out before fading in —\n      // whenever the element's style had already been computed once, which is\n      // what happens to a panel that has just been mounted by something else.\n      addClassList(element, classes.enterFrom);\n      commitStyle(element);\n      addClassList(element, classes.enter);\n    }\n    await waitForTransition(element);\n    if (this.token !== token) {\n      return;\n    }\n    if (classes) {\n      removeClassList(element, classes.enterFrom);\n    }\n    this.hooks.onTransition?.('enter-to');\n    if (classes) {\n      addClassList(element, classes.enterTo);\n    }\n    await waitForTransition(element);\n    if (this.token !== token) {\n      return;\n    }\n    if (classes) {\n      removeClassList(element, classes.enter);\n      removeClassList(element, classes.enterTo);\n    }\n    this.hooks.onTransition?.('entered');\n    if (classes) {\n      addClassList(element, classes.entered);\n    }\n    await waitForTransition(element);\n    if (this.token !== token) {\n      return;\n    }\n    this.hooks.afterEnter?.();\n\n    await Promise.all([...this.children].map(async (state) => state.show()));\n    if (this.token !== token) {\n      return;\n    }\n    this.showing = undefined;\n  }\n\n  /**\n   * Enters, interrupting a leave if one is running.\n   *\n   * Resolves once this element and everything nested inside it has entered, or\n   * as soon as the run is superseded by a {@link hide}.\n   */\n  async show(): Promise<void> {\n    const element = this.element;\n    if (!element) {\n      return;\n    }\n    if (this.showing) {\n      return this.showing;\n    }\n    // Interrupts a leave that is still running, so that showing something again\n    // mid-transition takes effect now rather than after it has finished hiding.\n    this.token += 1;\n    this.hiding = undefined;\n    this.showing = this._show(this.token, element, this.classes);\n    return this.showing;\n  }\n\n  /**\n   * Lets the children leave first, then leaves.\n   *\n   * Waiting for the children is what keeps a group together: the parent is\n   * still on screen, and still animating, until the last thing inside it has\n   * gone.\n   */\n  private async _hide(\n    token: number,\n    element: HTMLElement,\n    classes?: TransitionClasses,\n  ): Promise<void> {\n    this.hooks.beforeLeave?.();\n    await Promise.all([...this.children].map(async (state) => state.hide()));\n    if (this.token !== token) {\n      return;\n    }\n\n    if (classes) {\n      // An enter that was interrupted part-way through still has its classes on\n      // the element.\n      removeClassList(element, classes.enter);\n      removeClassList(element, classes.enterFrom);\n      removeClassList(element, classes.enterTo);\n      removeClassList(element, classes.entered);\n    }\n    this.hooks.onTransition?.('leave-from');\n    if (classes) {\n      // Same order as the enter, and for the same reason.\n      addClassList(element, classes.leaveFrom);\n      commitStyle(element);\n      addClassList(element, classes.leave);\n    }\n    await waitForTransition(element);\n    if (this.token !== token) {\n      return;\n    }\n\n    if (classes) {\n      removeClassList(element, classes.leaveFrom);\n    }\n    this.hooks.onTransition?.('leave-to');\n    if (classes) {\n      addClassList(element, classes.leaveTo);\n    }\n    await waitForTransition(element);\n    if (this.token !== token) {\n      return;\n    }\n    if (classes) {\n      removeClassList(element, classes.leave);\n      removeClassList(element, classes.leaveTo);\n    }\n    this.hooks.afterLeave?.();\n\n    this.hiding = undefined;\n  }\n\n  /**\n   * Leaves, interrupting an enter if one is running.\n   *\n   * Resolves once everything nested inside has left and this element has\n   * finished its own leave, or as soon as the run is superseded by a\n   * {@link show}.\n   */\n  async hide(): Promise<void> {\n    const element = this.element;\n    if (!element) {\n      return;\n    }\n    if (this.hiding) {\n      return this.hiding;\n    }\n    // Interrupts an enter that is still running, so that hiding something\n    // mid-transition takes effect now rather than after it has finished showing.\n    this.token += 1;\n    this.showing = undefined;\n    this.hiding = this._hide(this.token, element, this.classes);\n    return this.hiding;\n  }\n}\n", "import type { Accessor, JSX } from 'solid-js';\nimport { createComponent, createContext, createMemo, createSignal, useContext } from 'solid-js';\nimport assert from '../utils/assert';\n\nexport interface InputStateControlledOptions {\n  value: string | undefined;\n  disabled?: boolean;\n  onChange?: (state?: string) => void;\n}\n\nexport interface InputStateUncontrolledOptions {\n  defaultValue: string | undefined;\n  disabled?: boolean;\n  onChange?: (state?: string) => void;\n}\n\nexport type InputStateOptions = InputStateControlledOptions | InputStateUncontrolledOptions;\n\nexport interface InputStateProperties {\n  value: () => string | undefined;\n  setState: (newState?: string) => void;\n  disabled: () => boolean;\n}\n\n/**\n * Creates a plain string state. Exported for building text-input components.\n *\n * Pass `defaultValue` for uncontrolled state or `value` for controlled.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#input-state}\n */\nexport function createInputState(options: InputStateOptions): InputStateProperties {\n  let signal: Accessor<string | undefined>;\n  let setSignal: (value: string | undefined) => void;\n\n  if ('defaultValue' in options) {\n    const [input, setInput] = createSignal<string | undefined>(options.defaultValue);\n    signal = input;\n    setSignal = (value): void => {\n      setInput(value);\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  } else {\n    signal = (): string | undefined => options.value;\n    setSignal = (value): void => {\n      if (options.onChange) {\n        options.onChange(value);\n      }\n    };\n  }\n\n  return {\n    value(): string | undefined {\n      return signal();\n    },\n    setState(value): void {\n      if (!options.disabled) {\n        setSignal(value);\n      }\n    },\n    disabled(): boolean {\n      return !!options.disabled;\n    },\n  };\n}\n\nexport interface InputStateRenderProps {\n  children?: JSX.Element | ((state: InputStateProperties) => JSX.Element);\n}\n\nexport interface InputStateProviderProps extends InputStateRenderProps {\n  state: InputStateProperties;\n}\n\nconst InputStateContext = createContext<InputStateProperties>();\n\n/**\n * Publishes an input state to its descendants, so `useInputState` and\n * `InputStateChild` can reach it. No component in the library creates an input\n * state, so this is the only way to make one available to a subtree.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#input-state}\n */\nexport function InputStateProvider(props: InputStateProviderProps): JSX.Element {\n  return createComponent(InputStateContext.Provider, {\n    value: props.state,\n    get children() {\n      const current = props.children;\n      if (typeof current === 'function') {\n        return current(props.state);\n      }\n      return current;\n    },\n  });\n}\n\n/**\n * Reads the nearest input state from context. Throws when there is none.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#input-state}\n */\nexport function useInputState(): InputStateProperties {\n  const ctx = useContext(InputStateContext);\n  assert(ctx, new Error('Missing <InputStateProvider>'));\n  return ctx;\n}\n\n/**\n * Passes the nearest input state to a render prop. A function child is treated\n * as a render prop only when it declares exactly one parameter.\n *\n * @see {@link https://github.com/lxsmnsyc/terracotta/blob/main/docs/states.md#input-state}\n */\nexport function InputStateChild(props: InputStateRenderProps): JSX.Element {\n  const state = useInputState();\n  return createMemo(() => {\n    const current = props.children;\n    if (typeof current === 'function' && current.length === 1) {\n      return createMemo(() => current(state));\n    }\n    return current;\n  }) as unknown as JSX.Element;\n}\n", "import type { JSX } from 'solid-js';\nimport { createMemo } from 'solid-js';\n\nexport interface FragmentProps {\n  children?: JSX.Element;\n}\n\n// Solid doesn't have this\nexport default function Fragment(props: FragmentProps): JSX.Element {\n  return createMemo(() => props.children) as unknown as JSX.Element;\n}\n"],
  "mappings": "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",
  "names": ["createComponent", "createEffect", "createMemo", "mergeProps", "onCleanup", "createComponent", "createSignal", "createContext", "useContext", "onCleanup", "createContext", "useContext", "createMemo", "createEffect", "onCleanup", "createComponent", "mergeProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createComponent", "createContext", "createMemo", "untrack", "useContext", "createMemo", "untrack", "createContext", "createComponent", "useContext", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "omitProps", "createContext", "useContext", "createContext", "useContext", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "mergeProps", "omitProps", "mergeProps", "omitProps", "createComponent", "createComponent", "createUniqueId", "mergeProps", "omitProps", "createUniqueId", "createComponent", "mergeProps", "omitProps", "createComponent", "mergeProps", "omitProps", "createComponent", "createComponent", "mergeProps", "omitProps", "createComponent", "createUniqueId", "mergeProps", "omitProps", "createUniqueId", "mergeProps", "omitProps", "createComponent", "createEffect", "createUniqueId", "mergeProps", "omitProps", "createComponent", "createContext", "createMemo", "createSignal", "untrack", "useContext", "createSignal", "createMemo", "untrack", "createContext", "createComponent", "useContext", "onCleanup", "onCleanup", "createContext", "useContext", "createContext", "useContext", "createUniqueId", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "mergeProps", "omitProps", "mergeProps", "omitProps", "createComponent", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "omitProps", "createComponent", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "omitProps", "createComponent", "createComponent", "mergeProps", "omitProps", "mergeProps", "omitProps", "createComponent", "createComponent", "createUniqueId", "mergeProps", "omitProps", "createComponent", "createContext", "createMemo", "createSignal", "untrack", "useContext", "createSignal", "createMemo", "untrack", "createContext", "createComponent", "useContext", "createContext", "useContext", "createContext", "useContext", "createUniqueId", "createComponent", "mergeProps", "omitProps", "createComponent", "mergeProps", "omitProps", "mergeProps", "omitProps", "createComponent", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "mergeProps", "omitProps", "mergeProps", "omitProps", "createComponent", "createComponent", "createContext", "createEffect", "createMemo", "createSignal", "useContext", "createContext", "createSignal", "isVisible", "createMemo", "createEffect", "createComponent", "useContext", "createComponent", "createEffect", "createMemo", "createSignal", "createUniqueId", "mergeProps", "omitProps", "createComponent", "createContext", "createMemo", "createSignal", "untrack", "useContext", "createSignal", "onCleanup", "createSignal", "createMemo", "untrack", "createContext", "createComponent", "useContext", "createContext", "createUniqueId", "useContext", "createContext", "useContext", "createUniqueId", "omitProps", "createMemo", "createUniqueId", "mergeProps", "createSignal", "createEffect", "createComponent", "createEffect", "mergeProps", "untrack", "omitProps", "createEffect", "untrack", "mergeProps", "omitProps", "mergeProps", "omitProps", "mergeProps", "omitProps", "createComponent", "createEffect", "createUniqueId", "mergeProps", "omitProps", "createComponent", "createContext", "createMemo", "untrack", "useContext", "createMemo", "untrack", "createContext", "createComponent", "useContext", "createUniqueId", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "mergeProps", "onCleanup", "untrack", "omitProps", "createEffect", "onCleanup", "untrack", "mergeProps", "omitProps", "createComponent", "createComponent", "createEffect", "createMemo", "createSignal", "createUniqueId", "mergeProps", "omitProps", "createContext", "createUniqueId", "useContext", "createContext", "useContext", "createUniqueId", "createMemo", "createSignal", "createUniqueId", "createEffect", "createComponent", "mergeProps", "omitProps", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "omitProps", "mergeProps", "omitProps", "mergeProps", "omitProps", "createComponent", "createEffect", "createUniqueId", "mergeProps", "omitProps", "createUniqueId", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "mergeProps", "onCleanup", "omitProps", "createEffect", "onCleanup", "mergeProps", "omitProps", "createComponent", "createComponent", "createEffect", "createUniqueId", "mergeProps", "omitProps", "createContext", "useContext", "createContext", "useContext", "createUniqueId", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "mergeProps", "omitProps", "mergeProps", "createComponent", "omitProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "createComponent", "omitProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "createComponent", "omitProps", "createComponent", "mergeProps", "omitProps", "mergeProps", "createComponent", "omitProps", "createComponent", "createEffect", "createUniqueId", "mergeProps", "omitProps", "createContext", "useContext", "createContext", "useContext", "createUniqueId", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "omitProps", "createComponent", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "createComponent", "omitProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "createComponent", "omitProps", "createComponent", "createEffect", "createUniqueId", "mergeProps", "omitProps", "createContext", "useContext", "createContext", "useContext", "createUniqueId", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "mergeProps", "omitProps", "mergeProps", "createComponent", "omitProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "createComponent", "omitProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "createComponent", "omitProps", "createComponent", "mergeProps", "omitProps", "mergeProps", "createComponent", "omitProps", "createComponent", "createUniqueId", "mergeProps", "omitProps", "createContext", "useContext", "createContext", "useContext", "createUniqueId", "createComponent", "mergeProps", "omitProps", "createEffect", "mergeProps", "createComponent", "omitProps", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "mergeProps", "omitProps", "mergeProps", "createComponent", "omitProps", "createComponent", "createUniqueId", "mergeProps", "omitProps", "createContext", "useContext", "createContext", "useContext", "createUniqueId", "createComponent", "mergeProps", "omitProps", "createComponent", "createUniqueId", "mergeProps", "omitProps", "createContext", "useContext", "createContext", "useContext", "createUniqueId", "createComponent", "mergeProps", "omitProps", "mergeProps", "omitProps", "mergeProps", "omitProps", "mergeProps", "omitProps", "mergeProps", "omitProps", "createComponent", "createEffect", "mergeProps", "onCleanup", "omitProps", "createContext", "useContext", "createContext", "createEffect", "onCleanup", "createComponent", "mergeProps", "omitProps", "mergeProps", "omitProps", "mergeProps", "omitProps", "createComponent", "createEffect", "createMemo", "createUniqueId", "mergeProps", "omitProps", "createContext", "useContext", "createContext", "useContext", "getProps", "omitProps", "createMemo", "createUniqueId", "mergeProps", "createEffect", "createComponent", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "mergeProps", "omitProps", "mergeProps", "createComponent", "omitProps", "createComponent", "createRenderEffect", "mergeProps", "omitProps", "createContext", "useContext", "createContext", "useContext", "createRenderEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "mergeProps", "onCleanup", "onMount", "untrack", "omitProps", "onCleanup", "onMount", "createEffect", "onCleanup", "untrack", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "mergeProps", "onCleanup", "omitProps", "createContext", "createUniqueId", "useContext", "createContext", "useContext", "createUniqueId", "createEffect", "onCleanup", "createComponent", "mergeProps", "omitProps", "createMemo", "createComponent", "mergeProps", "omitProps", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "createUniqueId", "mergeProps", "omitProps", "createContext", "useContext", "createContext", "useContext", "createUniqueId", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "createComponent", "omitProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "mergeProps", "createComponent", "omitProps", "createComponent", "createEffect", "createUniqueId", "mergeProps", "onCleanup", "omitProps", "createContext", "useContext", "createContext", "useContext", "createContext", "createUniqueId", "useContext", "createContext", "useContext", "createUniqueId", "createUniqueId", "createEffect", "onCleanup", "createComponent", "mergeProps", "omitProps", "mergeProps", "omitProps", "mergeProps", "omitProps", "mergeProps", "omitProps", "mergeProps", "omitProps", "createComponent", "createEffect", "createUniqueId", "mergeProps", "omitProps", "createUniqueId", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "createMemo", "mergeProps", "onCleanup", "omitProps", "createContext", "createUniqueId", "useContext", "createContext", "useContext", "createUniqueId", "createMemo", "createEffect", "onCleanup", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "mergeProps", "omitProps", "createContext", "useContext", "createContext", "useContext", "createContext", "createUniqueId", "useContext", "createContext", "useContext", "createUniqueId", "createEffect", "createComponent", "mergeProps", "omitProps", "createComponent", "createMemo", "createUniqueId", "mergeProps", "omitProps", "createMemo", "createUniqueId", "createComponent", "mergeProps", "omitProps", "createComponent", "createEffect", "mergeProps", "onCleanup", "omitProps", "createEffect", "onCleanup", "createComponent", "mergeProps", "omitProps", "createComponent", "mergeProps", "omitProps", "mergeProps", "createComponent", "omitProps", "createComponent", "createContext", "createEffect", "createSignal", "createUniqueId", "mergeProps", "onCleanup", "useContext", "omitProps", "createContext", "useContext", "mergeProps", "omitProps", "createUniqueId", "createComponent", "createSignal", "createEffect", "onCleanup", "createComponent", "createEffect", "mergeProps", "omitProps", "createComponent", "createContext", "createMemo", "createSignal", "untrack", "useContext", "createSignal", "createMemo", "untrack", "createContext", "createComponent", "useContext", "createEffect", "createComponent", "mergeProps", "omitProps", "createEffect", "mergeProps", "omitProps", "getNextFocusable", "createEffect", "mergeProps", "omitProps", "createComponent", "createContext", "createEffect", "createMemo", "createSignal", "mergeProps", "onCleanup", "useContext", "omitProps", "createContext", "useContext", "createSignal", "createMemo", "createEffect", "onCleanup", "createComponent", "mergeProps", "omitProps", "createComponent", "createContext", "createMemo", "createSignal", "useContext", "createSignal", "createContext", "createComponent", "useContext", "createMemo", "createMemo"]
}
