{"version":3,"file":"collapse.mjs","sources":["../../../../../../packages/components/collapse/src/collapse.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"ns.b()\"\n    role=\"tablist\"\n    aria-multiselectable=\"true\"\n    data-test-name=\"collapse\"\n    data-test-variant=\"\"\n    data-test-state=\"\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { provide, ref, watch } from 'vue'\nimport { ensureArray } from '@bigin/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@bigin/constants'\nimport { useNamespace } from '@bigin/hooks'\nimport { collapseContextKey } from '@bigin/tokens'\nimport { collapseEmits, collapseProps } from './collapse'\nimport type { CollapseActiveName } from './collapse'\n\ndefineOptions({\n  name: 'BCollapse',\n})\nconst props = defineProps(collapseProps)\nconst emit = defineEmits(collapseEmits)\n\nconst ns = useNamespace('collapse')\nconst activeNames = ref(ensureArray(props.modelValue))\n\nconst setActiveNames = (_activeNames: CollapseActiveName[]) => {\n  activeNames.value = _activeNames\n  const value = props.accordion ? activeNames.value[0] : activeNames.value\n  emit(UPDATE_MODEL_EVENT, value)\n  emit(CHANGE_EVENT, value)\n}\n\nconst handleItemClick = (name: CollapseActiveName) => {\n  if (props.accordion) {\n    setActiveNames([\n      (activeNames.value[0] || activeNames.value[0] === 0) &&\n      activeNames.value[0] === name\n        ? ''\n        : name,\n    ])\n  } else {\n    const _activeNames = [...activeNames.value]\n    const index = _activeNames.indexOf(name)\n\n    if (index > -1) {\n      _activeNames.splice(index, 1)\n    } else {\n      _activeNames.push(name)\n    }\n    setActiveNames(_activeNames)\n  }\n}\n\nwatch(\n  () => props.modelValue,\n  () => (activeNames.value = ensureArray(props.modelValue)),\n  { deep: true }\n)\n\nprovide(collapseContextKey, {\n  activeNames,\n  handleItemClick,\n})\n\ndefineExpose({\n  /** @description active names */\n  activeNames,\n  /** @description set active names */\n  setActiveNames,\n})\n</script>\n"],"names":["ensureArray"],"mappings":";;;;;;;;;;;;mCAsBc,CAAA;AAAA,EACZ,IAAM,EAAA,WAAA;AACR,CAAA,CAAA,CAAA;;;;;;;AAIM,IAAA,MAAA,EAAA,GAAK,aAAa,UAAU,CAAA,CAAA;AAClC,IAAA,MAAM,WAAc,GAAA,GAAA,CAAIA,SAAY,CAAA,KAAA,CAAM,UAAU,CAAC,CAAA,CAAA;AAE/C,IAAA,MAAA,cAAA,GAAiB,CAAC,YAAuC,KAAA;AAC7D,MAAA,WAAA,CAAY,KAAQ,GAAA,YAAA,CAAA;AACpB,MAAA,MAAM,QAAQ,KAAM,CAAA,SAAA,GAAY,WAAY,CAAA,KAAA,CAAM,KAAK,WAAY,CAAA,KAAA,CAAA;AACnE,MAAA,IAAA,CAAK,oBAAoB,KAAK,CAAA,CAAA;AAC9B,MAAA,IAAA,CAAK,cAAc,KAAK,CAAA,CAAA;AAAA,KAC1B,CAAA;AAEM,IAAA,MAAA,eAAA,GAAkB,CAAC,IAA6B,KAAA;AACpD,MAAA,IAAI,MAAM,SAAW,EAAA;AACJ,QAAA,cAAA,CAAA;AAAA,UACZ,CAAA,WAAA,CAAY,KAAM,CAAA,CAAA,CAAA,IAAM,WAAY,CAAA,KAAA,CAAM,CAAO,CAAA,KAAA,CAAA,KAClD,WAAY,CAAA,KAAA,CAAM,CAAO,CAAA,KAAA,IAAA,GACrB,EACA,GAAA,IAAA;AAAA,SACL,CAAA,CAAA;AAAA,OACI,MAAA;AACL,QAAA,MAAM,YAAe,GAAA,CAAC,GAAG,WAAA,CAAY,KAAK,CAAA,CAAA;AACpC,QAAA,MAAA,KAAA,GAAQ,YAAa,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAEvC,QAAA,IAAI,QAAQ,CAAI,CAAA,EAAA;AACD,UAAA,YAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAA;AAAA,SACvB,MAAA;AACL,UAAA,YAAA,CAAa,KAAK,IAAI,CAAA,CAAA;AAAA,SACxB;AACA,QAAA,cAAA,CAAe,YAAY,CAAA,CAAA;AAAA,OAC7B;AAAA,KACF,CAAA;AAEA,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,UAAA;AAAA,MACZ,MAAO,WAAA,CAAY,KAAQ,GAAAA,SAAA,CAAY,MAAM,UAAU,CAAA;AAAA,MACvD,EAAE,MAAM,IAAK,EAAA;AAAA,KACf,CAAA;AAEA,IAAA,OAAA,CAAQ,kBAAoB,EAAA;AAAA,MAC1B,WAAA;AAAA,MACA,eAAA;AAAA,KACD,CAAA,CAAA;AAEY,IAAA,MAAA,CAAA;AAAA,MAEX,WAAA;AAAA,MAEA,cAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;"}