{"version":3,"file":"collapse.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-plus/constants'\nimport { useNamespace } from '@element-plus/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":["_openBlock","_normalizeClass"],"mappings":";;;;;;;AAYA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,MACV,MAAM,CAAC,OAAO,QAAQ;AAAA,MAGtB,SAAS,MAAM;AAAA;AAAA;AAAA,EAGnB,OAAO,CAAC,oBAAoB;AAAA,EAC5B,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,KAAK,aAAa;AACxB,UAAM,cAAc,IAAI,GAAG,OAAO,MAAM;AAExC,UAAM,iBAAiB,CAAC,iBAAiB;AACvC,kBAAY,QAAQ,GAAG,OAAO;AAC9B,YAAM,QAAQ,MAAM,YAAY,YAAY,MAAM,KAAK,YAAY;AACnE,WAAK,oBAAoB;AACzB,WAAK,cAAc;AAAA;AAGrB,UAAM,kBAAkB,CAAC,SAAS;AAChC,UAAI,MAAM,WAAW;AACnB,uBACG,aAAY,MAAM,MAAM,YAAY,MAAM,OAAO,MAChD,YAAY,MAAM,OAAO,OACvB,KACA;AAAA,aAED;AACL,cAAM,eAAe,YAAY,MAAM,MAAM;AAC7C,cAAM,QAAQ,aAAa,QAAQ;AAEnC,YAAI,QAAQ,IAAI;AACd,uBAAa,OAAO,OAAO;AAAA,eACtB;AACL,uBAAa,KAAK;AAAA;AAEpB,uBAAe;AAAA;AAAA;AAInB,UACE,MAAM,MAAM,YACZ,MAAM;AACJ,kBAAY,QAAQ,GAAG,OAAO,MAAM;AAAA,OAEtC;AAAA,MACE,MAAM;AAAA;AAIV,YAA0B,YAAY;AAAA,MACpC;AAAA,MACA;AAAA;AAGF,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;2BA1EJ,wBAEM;SAFKA,gCAAM;AAAA,IAAI,OAAKC,eAAS;AAAA,IAAC;AAAA;KAClC;AAAA;;;;;;;"}