{"version":3,"file":"collapse.vue.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":["_openBlock","_createElementBlock","_normalizeClass"],"mappings":";;;;AACa,SAAA,YAAA,IAAE,EAAA,MAAA,EAAG,MAAC,EAAA,MAAA,EAAA,OAAA,QAAA,EAAA;SAASA,WAAS,EAAAC,kBAAA;AAAA,IAAA,KAAA;AAAA,IAAA;AAAA,MAAC,KAAA,EAAAC,cAAA,CAAoB,IAAC,CAAA,EAAA,CAAM,GAAA,CAAA;AAAA,MAAA,IAAA,EAAA,SAAA;AAAA,MAC7D,sBAAa,EAAA,MAAA;AAAA,KAAA;AAAA;;;;;;;;;;;"}