{"version":3,"file":"description2.mjs","sources":["../../../../../../packages/components/descriptions/src/description.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"descriptionKls\"\n    data-test-name=\"description\"\n    data-test-variant=\"\"\n    data-test-state=\"\"\n  >\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            <b-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 { flattedChildren } from '@bigin/utils'\nimport { useNamespace, useSize } from '@bigin/hooks'\nimport BDescriptionsRow from './descriptions-row.vue'\nimport { descriptionsKey } from './token'\nimport { descriptionProps } from './description'\n\ndefineOptions({\n  name: 'BDescriptions',\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 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 === 'BDescriptionsItem'\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":";;;;;;;;;;;mCAwCc,CAAA;AAAA,EACZ,IAAM,EAAA,eAAA;AACR,CAAA,CAAA,CAAA;;;;;;AAIM,IAAA,MAAA,EAAA,GAAK,aAAa,cAAc,CAAA,CAAA;AAEtC,IAAA,MAAM,mBAAmB,OAAQ,EAAA,CAAA;AAEjC,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AAEvB,IAAA,OAAA,CAAQ,iBAAiB,KAAK,CAAA,CAAA;AAE9B,IAAA,MAAM,cAAiB,GAAA,QAAA,CAAS,MAAM,CAAC,EAAG,CAAA,CAAA,EAAK,EAAA,EAAA,CAAG,CAAE,CAAA,gBAAA,CAAiB,KAAK,CAAC,CAAC,CAAA,CAAA;AAE5E,IAAA,MAAM,aAAa,CAAC,IAAA,EAAM,IAAM,EAAA,KAAA,EAAO,SAAS,KAAU,KAAA;AACpD,MAAA,IAAA,CAAC,KAAK,KAAO,EAAA;AACf,QAAA,IAAA,CAAK,QAAQ,EAAC,CAAA;AAAA,OAChB;AACA,MAAA,IAAI,OAAO,KAAO,EAAA;AAChB,QAAA,IAAA,CAAK,MAAM,IAAO,GAAA,KAAA,CAAA;AAAA,OACpB;AACA,MAAA,IAAI,MAAQ,EAAA;AAEV,QAAA,IAAA,CAAK,MAAM,IAAO,GAAA,IAAA,CAAA;AAAA,OACpB;AACO,MAAA,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAA,MAAM,UAAU,MAAM;AACpB,MAAA,MAAM,QAAW,GAAA,eAAA,CAAgB,KAAM,CAAA,OAAA,IAAW,CAAE,CAAA,MAAA;AAAA,QAClD,CAAC,IAAA,KAAS,IAAM,EAAA,IAAA,EAAM,IAAS,KAAA,mBAAA;AAAA,OACjC,CAAA;AACA,MAAA,MAAM,OAAO,EAAC,CAAA;AACd,MAAA,IAAI,OAAO,EAAC,CAAA;AACZ,MAAA,IAAI,QAAQ,KAAM,CAAA,MAAA,CAAA;AAClB,MAAA,IAAI,SAAY,GAAA,CAAA,CAAA;AAEP,MAAA,QAAA,CAAA,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAU,KAAA;AAC1B,QAAA,MAAA,IAAA,GAAO,IAAK,CAAA,KAAA,EAAO,IAAQ,IAAA,CAAA,CAAA;AAE7B,QAAA,IAAA,KAAA,GAAQ,QAAS,CAAA,MAAA,GAAS,CAAG,EAAA;AAClB,UAAA,SAAA,IAAA,IAAA,GAAO,QAAQ,KAAQ,GAAA,IAAA,CAAA;AAAA,SACtC;AAEI,QAAA,IAAA,KAAA,KAAU,QAAS,CAAA,MAAA,GAAS,CAAG,EAAA;AAEjC,UAAA,MAAM,QAAW,GAAA,KAAA,CAAM,MAAU,GAAA,SAAA,GAAY,KAAM,CAAA,MAAA,CAAA;AACnD,UAAA,IAAA,CAAK,KAAK,UAAW,CAAA,IAAA,EAAM,QAAU,EAAA,KAAA,EAAO,IAAI,CAAC,CAAA,CAAA;AACjD,UAAA,IAAA,CAAK,KAAK,IAAI,CAAA,CAAA;AACd,UAAA,OAAA;AAAA,SACF;AAEA,QAAA,IAAI,OAAO,KAAO,EAAA;AACP,UAAA,KAAA,IAAA,IAAA,CAAA;AACT,UAAA,IAAA,CAAK,KAAK,IAAI,CAAA,CAAA;AAAA,SACT,MAAA;AACL,UAAA,IAAA,CAAK,IAAK,CAAA,UAAA,CAAW,IAAM,EAAA,IAAA,EAAM,KAAK,CAAC,CAAA,CAAA;AACvC,UAAA,IAAA,CAAK,KAAK,IAAI,CAAA,CAAA;AACd,UAAA,KAAA,GAAQ,KAAM,CAAA,MAAA,CAAA;AACd,UAAA,IAAA,GAAO,EAAC,CAAA;AAAA,SACV;AAAA,OACD,CAAA,CAAA;AAEM,MAAA,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}