{"version":3,"file":"description.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>\nimport { computed, provide, useSlots } from 'vue'\nimport { flattedChildren } from '@hd-front-end/utils'\nimport { useNamespace } from '@hd-front-end/hooks'\nimport { useFormSize } from '@hd-front-end/components/form'\nimport ElDescriptionsRow from './descriptions-row.vue'\nimport { descriptionsKey } from './token'\nimport { descriptionProps } from './description'\nimport { COMPONENT_NAME } from './constants'\n\nimport type { IDescriptionsInject } from './descriptions.type'\nimport type { DescriptionItemVNode } from './description-item'\n\ndefineOptions({\n  name: 'ElDescriptions',\n})\n\nconst props = defineProps(descriptionProps)\n\nconst ns = useNamespace('descriptions')\n\nconst descriptionsSize = useFormSize()\n\nconst slots = useSlots()\n\nprovide(descriptionsKey, props as IDescriptionsInject)\n\nconst descriptionKls = computed(() => [ns.b(), ns.m(descriptionsSize.value)])\n\nconst filledNode = (\n  node: DescriptionItemVNode,\n  span: number,\n  count: number,\n  isLast = false\n) => {\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  if (!slots.default) return []\n\n  const children = flattedChildren(slots.default()).filter(\n    (node): node is DescriptionItemVNode =>\n      (node as any)?.type?.name === COMPONENT_NAME\n  )\n  const rows: DescriptionItemVNode[][] = []\n  let temp: DescriptionItemVNode[] = []\n  let count = props.column\n  let totalSpan = 0 // all spans number of item\n  const rowspanTemp: number[] = [] // the number of row spans\n\n  children.forEach((node, index) => {\n    const span = node.props?.span || 1\n    const rowspan = node.props?.rowspan || 1\n    const rowNo = rows.length\n    rowspanTemp[rowNo] ||= 0\n\n    if (rowspan > 1) {\n      for (let i = 1; i < rowspan; i++) {\n        rowspanTemp[rowNo + i] ||= 0\n        rowspanTemp[rowNo + i]++\n        totalSpan++\n      }\n    }\n    if (rowspanTemp[rowNo] > 0) {\n      count -= rowspanTemp[rowNo]\n      rowspanTemp[rowNo] = 0\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":["_openBlock","_createElementBlock","_normalizeClass","title","extra","$slots","_unref","_createElementVNode","_renderSlot","_createTextVNode","border","_Fragment","_renderList","_createBlock"],"mappings":"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"}