{"version":3,"file":"description2.mjs","sources":["../../../../../../packages/components/descriptions/src/description.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\" setup>\n// @ts-nocheck\nimport { computed, provide, useSlots } from 'vue'\nimport { useNamespace, useSize } from '@park-ui/hooks'\nimport ElDescriptionsRow from './descriptions-row.vue'\nimport { descriptionsKey } from './token'\nimport { descriptionProps } from './description'\n\ndefineOptions({\n  name: 'ElDescriptions',\n})\n\nconst props = defineProps(descriptionProps)\n\nconst ns = useNamespace('descriptions')\n\nconst descriptionsSize = useSize()\n\nconst slots = useSlots()\n\nprovide(descriptionsKey, props)\n\nconst descriptionKls = computed(() => [ns.b(), ns.m(descriptionsSize.value)])\n\nconst 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\nconst 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\nconst 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</script>\n"],"names":[],"mappings":"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"}