{"version":3,"file":"CollapsibleRoot.cjs","sources":["../../src/Collapsible/CollapsibleRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { type Ref, toRefs } from 'vue'\nimport { createContext, useForwardExpose } from '@/shared'\n\nexport interface CollapsibleRootProps extends PrimitiveProps {\n  /** The open state of the collapsible when it is initially rendered. <br> Use when you do not need to control its open state. */\n  defaultOpen?: boolean\n  /** The controlled open state of the collapsible. Can be binded with `v-model`. */\n  open?: boolean\n  /** When `true`, prevents the user from interacting with the collapsible. */\n  disabled?: boolean\n  /** When `true`, the element will be unmounted on closed state. */\n  unmountOnHide?: boolean\n}\n\nexport type CollapsibleRootEmits = {\n  /** Event handler called when the open state of the collapsible changes. */\n  'update:open': [value: boolean]\n}\n\ninterface CollapsibleRootContext {\n  contentId: string\n  disabled?: Ref<boolean>\n  open: Ref<boolean>\n  unmountOnHide: Ref<boolean>\n  onOpenToggle: () => void\n}\n\nexport const [injectCollapsibleRootContext, provideCollapsibleRootContext]\n  = createContext<CollapsibleRootContext>('CollapsibleRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\nimport { useVModel } from '@vueuse/core'\n\nconst props = withDefaults(defineProps<CollapsibleRootProps>(), {\n  open: undefined,\n  defaultOpen: false,\n  unmountOnHide: true,\n})\n\nconst emit = defineEmits<CollapsibleRootEmits>()\n\ndefineSlots<{\n  default: (props: {\n    /** Current open state */\n    open: typeof open.value\n  }) => any\n}>()\n\nconst open = useVModel(props, 'open', emit, {\n  defaultValue: props.defaultOpen,\n  passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst { disabled, unmountOnHide } = toRefs(props)\n\nprovideCollapsibleRootContext({\n  contentId: '',\n  disabled,\n  open,\n  unmountOnHide,\n  onOpenToggle: () => {\n    open.value = !open.value\n  },\n})\n\ndefineExpose({ open })\nuseForwardExpose()\n</script>\n\n<template>\n  <Primitive\n    :as=\"as\"\n    :as-child=\"props.asChild\"\n    :data-state=\"open ? 'open' : 'closed'\"\n    :data-disabled=\"disabled ? '' : undefined\"\n  >\n    <slot :open=\"open\" />\n  </Primitive>\n</template>\n"],"names":["createContext","useVModel","toRefs","useForwardExpose"],"mappings":";;;;;;;;AA6BO,MAAM,CAAC,4BAAA,EAA8B,6BAA6B,CAAA,GACrEA,mCAAsC,iBAAiB;;;;;;;;;;;;;AAO3D,IAAA,MAAM,KAAQ,GAAA,OAAA;AAMd,IAAA,MAAM,IAAO,GAAA,MAAA;AASb,IAAA,MAAM,IAAO,GAAAC,cAAA,CAAU,KAAO,EAAA,MAAA,EAAQ,IAAM,EAAA;AAAA,MAC1C,cAAc,KAAM,CAAA,WAAA;AAAA,MACpB,OAAA,EAAU,MAAM,IAAS,KAAA;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,EAAE,QAAA,EAAU,aAAc,EAAA,GAAIC,WAAO,KAAK,CAAA;AAEhD,IAA8B,6BAAA,CAAA;AAAA,MAC5B,SAAW,EAAA,EAAA;AAAA,MACX,QAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAc,MAAM;AAClB,QAAK,IAAA,CAAA,KAAA,GAAQ,CAAC,IAAK,CAAA,KAAA;AAAA;AACrB,KACD,CAAA;AAED,IAAa,QAAA,CAAA,EAAE,MAAM,CAAA;AACrB,IAAiBC,wCAAA,EAAA;;;;;;;;;;;;;;;;;;;;"}