{"version":3,"file":"accordion.mjs","sources":["../src/accordion/AccordionRoot.ts","../src/accordion/AccordionItem.ts","../src/accordion/AccordionContent.ts","../src/accordion/AccordionContent.vue","../src/accordion/AccordionHeader.ts","../src/accordion/AccordionHeader.vue","../src/accordion/AccordionItem.vue","../src/accordion/AccordionRoot.vue","../src/accordion/AccordionTrigger.ts","../src/accordion/AccordionTrigger.vue"],"sourcesContent":["import { type AriaAttributes, computed, type MaybeRefOrGetter, type Ref } from 'vue'\nimport { createCollection } from '../collection/index.ts'\nimport { type Direction, useDirection } from '../direction/index.ts'\nimport { createContext, type MutableRefObject, useControllableStateV2, useId, useRef } from '../hooks/index.ts'\nimport { type EmitsToHookProps, mergePrimitiveAttrs, type PrimitiveDefaultProps, type RadixPrimitiveReturns } from '../shared/index.ts'\n\nexport type AccordionType = 'single' | 'multiple' | undefined\nexport type IsSingle<T extends AccordionType> = T extends 'single' | undefined ? true : false\n\nexport interface AccordionRootProps<T extends AccordionType> extends AccordionImplProps {\n  type?: T\n\n  value?: T extends 'multiple' ? AccordionMultipleProps['value'] : AccordionSingleProps['value']\n\n  defaultValue?: T extends 'multiple' ? AccordionMultipleProps['defaultValue'] : AccordionSingleProps['defaultValue']\n\n  collapsible?: AccordionSingleProps['collapsible']\n}\n\ntype SingleValue = AccordionSingleProps['value']\ntype MultipleValue = AccordionMultipleProps['value']\ntype Value<T extends AccordionType> = T extends 'multiple' ? MultipleValue : SingleValue\ntype DefValue<T extends AccordionType> = T extends 'multiple' ? Exclude<SingleValue, undefined> : MultipleValue\ntype EmitValue<T> = T extends 'multiple' ? Exclude<AccordionMultipleProps['value'], undefined> : Exclude<AccordionSingleProps['value'], undefined>\n\nexport const DEFAULT_ACCORDION_ROOT_PROPS = {\n  collapsible: undefined,\n  disabled: undefined,\n} satisfies PrimitiveDefaultProps<AccordionRootProps<AccordionType>>\n\nexport type AccordionRootEmits<T extends AccordionType> = {\n  /**\n   * The callback that fires when the state of the toggle group changes.\n   */\n  'update:value': [value: EmitValue<T>]\n}\n\ninterface AccordionSingleProps {\n  /**\n   * The controlled stateful value of the accordion item whose content is expanded.\n   */\n  value?: string\n  /**\n   * The value of the item whose content is expanded when the accordion is initially rendered. Use\n   * `defaultValue` if you do not need to control the state of an accordion.\n   */\n  defaultValue?: string\n  /**\n   * Whether an accordion item can be collapsed after it has been opened.\n   * @default false\n   */\n  collapsible?: boolean\n}\n\ninterface AccordionMultipleProps {\n  /**\n   * The controlled stateful value of the accordion items whose contents are expanded.\n   */\n  value?: string[]\n  /**\n   * The value of the items whose contents are expanded when the accordion is initially rendered. Use\n   * `defaultValue` if you do not need to control the state of an accordion.\n   */\n  defaultValue?: string[]\n}\n\nexport interface AccordionImplProps {\n  /**\n   * Whether or not an accordion is disabled from user interaction.\n   *\n   * @defaultValue false\n   */\n  disabled?: boolean\n  /**\n   * The layout in which the Accordion operates.\n   * @default vertical\n   */\n  orientation?: AriaAttributes['aria-orientation']\n  /**\n   * The language read direction.\n   */\n  dir?: Direction\n}\n\nexport const ACCORDION_KEYS = ['Home', 'End', 'ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight']\n\nexport const [Collection, useCollection] = createCollection<HTMLButtonElement>('Accordion')\n\nexport interface AccordionContext {\n  id: string\n  collapsible?: boolean\n\n  disabled?: () => boolean | undefined\n  direction: Ref<Direction>\n  orientation: Exclude<AccordionImplProps['orientation'], undefined>\n\n  value: Ref<string[]>\n  onItemOpen: (value: string) => void\n  onItemClose: (value: string) => void\n}\n\nexport const [provideAccordionContext, useAccordionContext] = createContext<AccordionContext>('AccordionContext')\n\nexport interface UseAccordionRootProps<T extends AccordionType> extends EmitsToHookProps<AccordionRootEmits<T>> {\n  elRef?: MutableRefObject<HTMLElement | undefined>\n\n  value?: () => T extends 'multiple' ? AccordionMultipleProps['value'] : AccordionSingleProps['value']\n  defaultValue?: T extends 'multiple' ? AccordionMultipleProps['defaultValue'] : AccordionSingleProps['defaultValue']\n\n  collapsible?: AccordionSingleProps['collapsible']\n\n  type?: T\n  disabled?: () => boolean | undefined\n  orientation?: AccordionImplProps['orientation']\n  dir?: MaybeRefOrGetter<Direction | undefined>\n}\n\nconst TYPE_MULTIPLE = 'multiple' as const satisfies AccordionType\n\nexport function useAccordionRoot<T extends AccordionType>(props: UseAccordionRootProps<T>): RadixPrimitiveReturns {\n  const isMultiple = props.type === TYPE_MULTIPLE\n  const {\n    orientation = 'vertical',\n    defaultValue = isMultiple ? [] : undefined,\n  } = props\n\n  const direction = useDirection(props.dir)\n  const value = useControllableStateV2<Value<T>, EmitValue<T>, DefValue<T>>(\n    props.value,\n    props.onUpdateValue,\n    defaultValue as DefValue<T>,\n  )\n\n  const elRef = props.elRef || useRef<HTMLElement>()\n  const setElRef = props.elRef ? undefined : (value: HTMLElement | undefined) => elRef.value = value\n\n  const getItems = useCollection(Collection.provideCollectionContext(elRef))\n\n  function onKeydown(event: KeyboardEvent) {\n    if (event.defaultPrevented)\n      return\n\n    if (!ACCORDION_KEYS.includes(event.key))\n      return\n    const target = event.target as HTMLElement\n    const triggerCollection = getItems().filter(item => !item.disabled)\n    const triggerIndex = triggerCollection.findIndex(item => item === target)\n    const triggerCount = triggerCollection.length\n\n    if (triggerIndex === -1)\n      return\n\n    // Prevents page scroll while user is navigating\n    event.preventDefault()\n\n    let nextIndex = triggerIndex\n    const homeIndex = 0\n    const endIndex = triggerCount - 1\n\n    const moveNext = () => {\n      nextIndex = triggerIndex + 1\n      if (nextIndex > endIndex) {\n        nextIndex = homeIndex\n      }\n    }\n\n    const movePrev = () => {\n      nextIndex = triggerIndex - 1\n      if (nextIndex < homeIndex) {\n        nextIndex = endIndex\n      }\n    }\n\n    switch (event.key) {\n      case 'Home':\n        nextIndex = homeIndex\n        break\n      case 'End':\n        nextIndex = endIndex\n        break\n      case 'ArrowRight':\n        if (orientation === 'horizontal') {\n          if (direction.value === 'ltr') {\n            moveNext()\n          }\n          else {\n            movePrev()\n          }\n        }\n        break\n      case 'ArrowDown':\n        if (orientation === 'vertical') {\n          moveNext()\n        }\n        break\n      case 'ArrowLeft':\n        if (orientation === 'horizontal') {\n          if (direction.value === 'ltr') {\n            movePrev()\n          }\n          else {\n            moveNext()\n          }\n        }\n        break\n      case 'ArrowUp':\n        if (orientation === 'vertical') {\n          movePrev()\n        }\n        break\n    }\n\n    const clampedIndex = nextIndex % triggerCount\n    triggerCollection[clampedIndex]?.focus()\n  }\n\n  provideAccordionContext({\n    id: useId(),\n    collapsible: props.collapsible,\n\n    disabled: props.disabled,\n    direction,\n    orientation: orientation ?? 'vertical',\n    value: isMultiple\n      ? value as Ref<string[]>\n      : computed<string[]>(() => value.value ? [value.value as string] : []),\n    onItemOpen: isMultiple\n      ? (itemValue) => {\n          value.value = [...value.value || [], itemValue] as DefValue<T>\n        }\n      : (itemValue) => {\n          value.value = itemValue as DefValue<T>\n        },\n    onItemClose: isMultiple\n      ? (itemValue) => {\n          value.value = ((value.value || []) as string[]).filter(value => value !== itemValue) as DefValue<T>\n        }\n      : () => {\n          if (props.collapsible) {\n            value.value = '' as DefValue<T>\n          }\n        },\n  })\n\n  return {\n    attrs(extraAttrs) {\n      const _disabled = props.disabled?.()\n      const attrs = {\n        'elRef': setElRef,\n        'data-disabled': _disabled ? '' : undefined,\n        'data-orientation': orientation,\n        'onKeydown': onKeydown,\n      }\n\n      if (extraAttrs && extraAttrs.length > 0) {\n        mergePrimitiveAttrs(attrs, extraAttrs)\n      }\n\n      return attrs\n    },\n  }\n}\n","import type { PrimitiveDefaultProps, RadixPrimitiveReturns } from '../shared/index.ts'\nimport { computed, type Ref } from 'vue'\nimport { useCollapsibleRoot } from '../collapsible/index.ts'\nimport { createContext, useId } from '../hooks/index.ts'\nimport { useAccordionContext } from './AccordionRoot.ts'\n\nexport interface AccordionItemProps {\n  /**\n   * Whether or not an accordion item is disabled from user interaction.\n   *\n   * @defaultValue false\n   */\n  disabled?: boolean\n  /**\n   * A string value for the accordion item. All items within an accordion should use a unique value.\n   */\n  value: string\n}\n\nexport const DEFAULT_ACCORDION_ITEM_PROPS = {\n  disabled: undefined,\n} satisfies PrimitiveDefaultProps<AccordionItemProps>\n\nexport interface AccordionItemContext {\n  open: Ref<boolean>\n  disabled: Ref<boolean | undefined>\n  triggerId: string\n}\n\nexport const [provideAccordionItemContext, useAccordionItemContext] = createContext<AccordionItemContext>('AccordionItem')\n\nexport interface UseAccordionItemProps {\n  value: () => string\n  disabled?: () => boolean | undefined\n}\n\nexport function useAccordionItem(props: UseAccordionItemProps): RadixPrimitiveReturns {\n  const context = useAccordionContext('AccordionItem')\n  const open = computed(() => {\n    const value = props.value()\n    return (value && context.value.value.includes(value)) || false\n  })\n  const disabled = computed(() => context.disabled?.() || props.disabled?.())\n\n  function onUpdateOpen(open: boolean) {\n    if (open)\n      context.onItemOpen(props.value())\n    else\n      context.onItemClose(props.value())\n  }\n\n  provideAccordionItemContext({\n    open,\n    disabled,\n    triggerId: useId(),\n  })\n\n  const collapsibleRoot = useCollapsibleRoot({\n    open() {\n      return open.value\n    },\n    onUpdateOpen,\n    disabled() {\n      return disabled.value\n    },\n  })\n\n  return {\n    attrs(extraAttrs = []) {\n      const collapsibleRootAttrs = {\n        'data-orientation': context.orientation,\n      }\n\n      return collapsibleRoot.attrs([collapsibleRootAttrs, ...extraAttrs])\n    },\n  }\n}\n","import type { Ref } from 'vue'\nimport type { RadixPrimitiveGetAttrs, RadixPrimitiveReturns } from '../shared/index.ts'\nimport { type CollapsibleContentProps, DEFAULT_COLLAPSIBLE_CONTENT_PROPS, useCollapsibleContent, type UseCollapsibleContentProps } from '../collapsible/index.ts'\nimport { mergePrimitiveAttrs } from '../shared/index.ts'\nimport { useAccordionItemContext } from './AccordionItem.ts'\nimport { useAccordionContext } from './AccordionRoot.ts'\n\nexport type AccordionContentProps = CollapsibleContentProps\n\nexport const DEFAULT_ACCORDION_CONTENT_PROPS = DEFAULT_COLLAPSIBLE_CONTENT_PROPS\n\nexport interface UseAccordionContentProps extends UseCollapsibleContentProps {}\n\nexport function useAccordionContent(props: UseAccordionContentProps): RadixPrimitiveReturns<{\n  isOpen: Ref<boolean>\n  attrs: RadixPrimitiveGetAttrs\n}> {\n  const collapsibleContent = useCollapsibleContent(props)\n\n  const accordionContext = useAccordionContext('AccordionContent')\n  const itemContext = useAccordionItemContext('AccordionContent')\n\n  const style = {\n    '--radix-accordion-content-height': 'var(--radix-collapsible-content-height)',\n    '--radix-accordion-content-width': 'var(--radix-collapsible-content-width)',\n  }\n\n  return {\n    isOpen: collapsibleContent.isOpen,\n    attrs(extraAttrs = []) {\n      const attrs = {\n        'role': 'region',\n        'aria-labelledby': itemContext.triggerId,\n        'data-orientation': accordionContext.orientation,\n        'style': style,\n      }\n\n      mergePrimitiveAttrs(attrs, [collapsibleContent.attrs(), ...extraAttrs])\n\n      return attrs\n    },\n  }\n}\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport { type AccordionContentProps, DEFAULT_ACCORDION_CONTENT_PROPS, useAccordionContent } from './AccordionContent.ts'\n\ndefineOptions({\n  name: 'AccordionContent',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<AccordionContentProps>(), DEFAULT_ACCORDION_CONTENT_PROPS)\n\nconst accordionContent = useAccordionContent(convertPropsToHookProps(props))\n</script>\n\n<template>\n  <Primitive v-bind=\"normalizeAttrs(accordionContent.attrs([$attrs]))\">\n    <slot v-if=\"accordionContent.isOpen.value\" />\n  </Primitive>\n</template>\n","import type { PrimitiveProps } from '../primitive/index.ts'\nimport type { RadixPrimitiveReturns } from '../shared/index.ts'\nimport { mergePrimitiveAttrs } from '../shared/index.ts'\nimport { useAccordionItemContext } from './AccordionItem.ts'\nimport { useAccordionContext } from './AccordionRoot.ts'\n\nexport interface AccordionHeaderProps {\n  as?: PrimitiveProps['as']\n}\n\nexport function useAccordionHeader(): RadixPrimitiveReturns {\n  const accordionContext = useAccordionContext('AccordionHeader')\n  const itemContext = useAccordionItemContext('AccordionHeader')\n\n  return {\n    attrs(extraAttrs) {\n      const attrs = {\n        'data-orientation': accordionContext.orientation,\n        'data-state': itemContext.open.value ? 'open' : 'closed',\n        'data-disabled': itemContext.disabled.value ? '' : undefined,\n      }\n\n      if (extraAttrs && extraAttrs.length > 0) {\n        mergePrimitiveAttrs(attrs, extraAttrs)\n      }\n\n      return attrs\n    },\n  }\n}\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { normalizeAttrs } from '../shared/index.ts'\nimport { type AccordionHeaderProps, useAccordionHeader } from './AccordionHeader.ts'\n\ndefineOptions({\n  name: 'AccordionHeader',\n  inheritAttrs: false,\n})\n\nwithDefaults(defineProps<AccordionHeaderProps>(), {\n  as: 'h3',\n})\n\nconst accordionHeader = useAccordionHeader()\n</script>\n\n<template>\n  <Primitive v-bind=\"normalizeAttrs(accordionHeader.attrs([$attrs, { as }]))\">\n    <slot />\n  </Primitive>\n</template>\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport { type AccordionItemProps, DEFAULT_ACCORDION_ITEM_PROPS, useAccordionItem } from './AccordionItem.ts'\n\ndefineOptions({\n  name: 'AccordionItem',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<AccordionItemProps>(), DEFAULT_ACCORDION_ITEM_PROPS)\n\nconst accordionItem = useAccordionItem(convertPropsToHookProps(props, ['value', 'disabled']))\n</script>\n\n<template>\n  <Primitive v-bind=\"normalizeAttrs(accordionItem.attrs([$attrs]))\">\n    <slot />\n  </Primitive>\n</template>\n","<script setup lang=\"ts\" generic=\"T extends AccordionType = undefined\">\nimport { Primitive } from '../primitive/index.ts'\nimport { convertPropsToHookProps, type EmitsToHookProps, normalizeAttrs } from '../shared/index.ts'\nimport { type AccordionRootEmits, type AccordionRootProps, type AccordionType, DEFAULT_ACCORDION_ROOT_PROPS, useAccordionRoot } from './AccordionRoot.ts'\n\ndefineOptions({\n  name: 'AccordionRoot',\n  inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<AccordionRootProps<T>>(), DEFAULT_ACCORDION_ROOT_PROPS)\nconst emit = defineEmits<AccordionRootEmits<T>>()\n\nconst accordionRoot = useAccordionRoot(convertPropsToHookProps(\n  props,\n  ['value', 'disabled', 'dir'],\n  (): Required<EmitsToHookProps<AccordionRootEmits<T>>> => ({\n    onUpdateValue(value) {\n      emit('update:value', value)\n    },\n  }),\n))\n</script>\n\n<template>\n  <Primitive v-bind=\"normalizeAttrs(accordionRoot.attrs([$attrs]))\">\n    <slot />\n  </Primitive>\n</template>\n","import type { PrimitiveProps } from '../primitive/index.ts'\nimport type { RadixPrimitiveReturns } from '../shared/index.ts'\nimport { useCollapsibleTrigger } from '../collapsible/index.ts'\nimport { DATA_COLLECTION_ITEM } from '../collection/index.ts'\nimport { useAccordionItemContext } from './AccordionItem.ts'\nimport { useAccordionContext } from './AccordionRoot.ts'\n\nexport interface AccordionTriggerProps {\n  as?: PrimitiveProps['as']\n}\n\nexport function useAccordionTrigger(): RadixPrimitiveReturns {\n  const collapsibleTrigger = useCollapsibleTrigger()\n\n  const accordionContext = useAccordionContext('AccordionTrigger')\n  const itemContext = useAccordionItemContext('AccordionHeader')\n\n  return {\n    attrs(extraAttrs = []) {\n      const collapsibleTriggerAttrs = {\n        'id': itemContext.triggerId,\n        'aria-disabled': (itemContext.open.value && !accordionContext.collapsible) || undefined,\n        'data-orientation': accordionContext.orientation,\n        [DATA_COLLECTION_ITEM]: true,\n      }\n\n      return collapsibleTrigger.attrs([collapsibleTriggerAttrs, ...extraAttrs])\n    },\n  }\n}\n","<script setup lang=\"ts\">\nimport { Primitive } from '../primitive/index.ts'\nimport { normalizeAttrs } from '../shared/index.ts'\nimport { type AccordionTriggerProps, useAccordionTrigger } from './AccordionTrigger.ts'\n\ndefineOptions({\n  name: 'AccordionTrigger',\n  inheritAttrs: false,\n})\n\nwithDefaults(defineProps<AccordionTriggerProps>(), {\n  as: 'button',\n})\n\nconst accordionTrigger = useAccordionTrigger()\n</script>\n\n<template>\n  <Primitive v-bind=\"normalizeAttrs(accordionTrigger.attrs([$attrs, { as }]))\">\n    <slot />\n  </Primitive>\n</template>\n"],"names":["value","open"],"mappings":"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"}