{"version":3,"file":"collapse.vue2.mjs","sources":["../../../../../packages/components/collapse/src/collapse.vue"],"sourcesContent":["<template>\n  <div :class=\"ns.b()\" role=\"tablist\" aria-multiselectable=\"true\">\n    <slot></slot>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, watch, provide } from 'vue'\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '@element-ultra/shared'\nimport { useNamespace } from '@element-ultra/hooks'\nimport type { CollapseProvider } from './collapse.type'\n\nexport default defineComponent({\n  name: 'ElCollapse',\n  props: {\n    accordion: Boolean,\n    modelValue: {\n      type: [Array, String, Number] as PropType<\n        string | number | Array<string | number>\n      >,\n      default: () => [],\n    },\n  },\n  emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT],\n  setup(props, { emit }) {\n    const ns = useNamespace('collapse')\n    const activeNames = ref([].concat(props.modelValue))\n\n    const setActiveNames = (_activeNames) => {\n      activeNames.value = [].concat(_activeNames)\n      const value = props.accordion ? activeNames.value[0] : activeNames.value\n      emit(UPDATE_MODEL_EVENT, value)\n      emit(CHANGE_EVENT, value)\n    }\n\n    const handleItemClick = (name) => {\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.slice(0)\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\n    watch(\n      () => props.modelValue,\n      () => {\n        activeNames.value = [].concat(props.modelValue)\n      },\n      {\n        deep: true,\n      }\n    )\n\n    provide<CollapseProvider>('collapse', {\n      activeNames,\n      handleItemClick,\n    })\n\n    return {\n      ns,\n      activeNames,\n      setActiveNames,\n      handleItemClick,\n    }\n  },\n})\n</script>\n"],"names":[],"mappings":";;;;;;AAYA,gBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,YAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,SAAW,EAAA,OAAA;AAAA,IACX,UAAY,EAAA;AAAA,MACV,IAAM,EAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,MAAM,CAAA;AAAA,MAG5B,OAAA,EAAS,MAAM,EAAC;AAAA,KAClB;AAAA,GACF;AAAA,EACA,KAAA,EAAO,CAAC,kBAAA,EAAoB,YAAY,CAAA;AAAA,EACxC,KAAM,CAAA,KAAA,EAAO,EAAE,IAAA,EAAQ,EAAA;AACrB,IAAM,MAAA,EAAA,GAAK,aAAa,UAAU,CAAA,CAAA;AAClC,IAAA,MAAM,cAAc,GAAI,CAAA,GAAG,MAAO,CAAA,KAAA,CAAM,UAAU,CAAC,CAAA,CAAA;AAEnD,IAAM,MAAA,cAAA,GAAiB,CAAC,YAAiB,KAAA;AACvC,MAAA,WAAA,CAAY,KAAQ,GAAA,EAAG,CAAA,MAAA,CAAO,YAAY,CAAA,CAAA;AAC1C,MAAA,MAAM,QAAQ,KAAM,CAAA,SAAA,GAAY,YAAY,KAAM,CAAA,CAAC,IAAI,WAAY,CAAA,KAAA,CAAA;AACnE,MAAA,IAAA,CAAK,oBAAoB,KAAK,CAAA,CAAA;AAC9B,MAAA,IAAA,CAAK,cAAc,KAAK,CAAA,CAAA;AAAA,KAC1B,CAAA;AAEA,IAAM,MAAA,eAAA,GAAkB,CAAC,IAAS,KAAA;AAChC,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAA,cAAA;AAAA,UAAA,CACG,WAAY,CAAA,KAAA,CAAM,CAAC,CAAA,IAAK,YAAY,KAAM,CAAA,CAAC,CAAM,KAAA,CAAA,KAChD,WAAY,CAAA,KAAA,CAAM,CAAC,CAAA,KAAM,OACvB,EACA,GAAA,IAAA;AAAA,SACN,CAAA;AAAA,OACK,MAAA;AACL,QAAA,MAAM,YAAe,GAAA,WAAA,CAAY,KAAM,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AAC9C,QAAM,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,MAAM;AACJ,QAAA,WAAA,CAAY,KAAQ,GAAA,EAAG,CAAA,MAAA,CAAO,MAAM,UAAU,CAAA,CAAA;AAAA,OAChD;AAAA,MACA;AAAA,QACE,IAAM,EAAA,IAAA;AAAA,OACR;AAAA,KACF,CAAA;AAEA,IAAA,OAAA,CAA0B,UAAY,EAAA;AAAA,MACpC,WAAA;AAAA,MACA,eAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAO,OAAA;AAAA,MACL,EAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}