{"version":3,"file":"index.vue2.mjs","sources":["../../../../../packages/components/descriptions/src/index.vue"],"sourcesContent":["<template>\n  <div :class=\"descriptionKls\">\n    <div\n      v-if=\"title || extra || $slots.title || $slots.extra\"\n      :class=\"ns.e('header')\"\n    >\n      <div :class=\"ns.e('title')\">\n        <slot name=\"title\">{{ title }}</slot>\n      </div>\n      <div :class=\"ns.e('extra')\">\n        <slot name=\"extra\">{{ extra }}</slot>\n      </div>\n    </div>\n\n    <div :class=\"ns.e('body')\">\n      <table :class=\"[ns.e('table'), ns.is('bordered', border)]\">\n        <tbody>\n          <template v-for=\"(row, index) in getRows()\" :key=\"index\">\n            <el-descriptions-row :row=\"row\" />\n          </template>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, provide } from 'vue'\nimport { isValidComponentSize } from '@element-ultra/utils'\nimport { useSize, useNamespace } from '@element-ultra/hooks'\nimport DescriptionsRow from './descriptions-row.vue'\nimport { elDescriptionsKey } from './token'\n\nimport type { PropType } from 'vue'\nimport type { ComponentSize } from '@element-ultra/shared'\n\nexport default defineComponent({\n  name: 'ElDescriptions',\n  components: {\n    [DescriptionsRow.name]: DescriptionsRow,\n  },\n  props: {\n    border: {\n      type: Boolean,\n      default: false,\n    },\n    column: {\n      type: Number,\n      default: 3,\n    },\n    direction: {\n      type: String as PropType<'horizontal' | 'vertical'>,\n      default: 'horizontal',\n    },\n    size: {\n      type: String as PropType<ComponentSize>,\n      validator: isValidComponentSize,\n    },\n    title: {\n      type: String,\n      default: '',\n    },\n    extra: {\n      type: String,\n      default: '',\n    },\n  },\n  setup(props, { slots }) {\n    provide(elDescriptionsKey, props)\n\n    const descriptionsSize = useSize({ props })\n    const ns = useNamespace('descriptions')\n\n    const descriptionKls = computed(() => [\n      ns.b(),\n      ns.is(ns.m(descriptionsSize.value), !!descriptionsSize.value),\n    ])\n\n    const flattedChildren = (children) => {\n      const temp = Array.isArray(children) ? children : [children]\n      const res = []\n      temp.forEach((child) => {\n        if (Array.isArray(child.children)) {\n          res.push(...flattedChildren(child.children))\n        } else {\n          res.push(child)\n        }\n      })\n      return res\n    }\n\n    const filledNode = (node, span, count, isLast = false) => {\n      if (!node.props) {\n        node.props = {}\n      }\n      if (span > count) {\n        node.props.span = count\n      }\n      if (isLast) {\n        // set the last span\n        node.props.span = span\n      }\n      return node\n    }\n\n    const getRows = () => {\n      const children = flattedChildren(slots.default?.()).filter(\n        (node) => node?.type?.name === 'ElDescriptionsItem'\n      )\n      const rows = []\n      let temp = []\n      let count = props.column\n      let totalSpan = 0 // all spans number of item\n\n      children.forEach((node, index) => {\n        const span = node.props?.span || 1\n\n        if (index < children.length - 1) {\n          totalSpan += span > count ? count : span\n        }\n\n        if (index === children.length - 1) {\n          // calculate the last item span\n          const lastSpan = props.column - (totalSpan % props.column)\n          temp.push(filledNode(node, lastSpan, count, true))\n          rows.push(temp)\n          return\n        }\n\n        if (span < count) {\n          count -= span\n          temp.push(node)\n        } else {\n          temp.push(filledNode(node, span, count))\n          rows.push(temp)\n          count = props.column\n          temp = []\n        }\n      })\n\n      return rows\n    }\n\n    return {\n      descriptionKls,\n      getRows,\n      ns,\n    }\n  },\n})\n</script>\n"],"names":["_a"],"mappings":"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"}