{"version":3,"file":"Descriptions.cjs","sources":["../../../../../../packages/components/descriptions/src/Descriptions.tsx"],"sourcesContent":["import type { Breakpoint, CustomSlotsType, ScreenMap } from '@antdv/types';\nimport type { VNode } from 'vue';\nimport type { DescriptionsProps } from './props';\nimport { responsiveArray } from '@antdv/constants';\nimport { useResponsiveObserver } from '@antdv/hooks';\nimport { cloneElement, devWarning, flattenChildren } from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  onBeforeMount,\n  onBeforeUnmount,\n  ref,\n  toRef,\n} from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport useStyle from '../style';\nimport { DEFAULT_COLUMN_MAP } from './constants';\nimport DescriptionsItem from './Item';\nimport { descriptionsProps } from './props';\nimport Row from './Row';\nimport { createProviderContext } from './useContext';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ADescriptions',\n  inheritAttrs: false,\n  props: descriptionsProps(),\n  slots: Object as CustomSlotsType<{\n    title?: any\n    extra?: any\n    default?: any\n  }>,\n  Item: DescriptionsItem,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('descriptions', props);\n    let token: number;\n    const screens = ref<ScreenMap>({});\n\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n\n    const responsiveObserve = useResponsiveObserver();\n\n    onBeforeMount(() => {\n      token = responsiveObserve.value.subscribe((screen) => {\n        if (typeof props.column !== 'object')\n          return;\n\n        screens.value = screen;\n      });\n    });\n\n    onBeforeUnmount(() => {\n      responsiveObserve.value.unsubscribe(token);\n    });\n    createProviderContext({\n      labelStyle: toRef(props, 'labelStyle'),\n      contentStyle: toRef(props, 'contentStyle'),\n    });\n    function getColumn(column: DescriptionsProps['column'], _screens: ScreenMap): number {\n      if (typeof column === 'number')\n        return column;\n\n      if (typeof column === 'object') {\n        for (let i = 0; i < responsiveArray.length; i++) {\n          const breakpoint: Breakpoint = responsiveArray[i];\n          if (_screens[breakpoint] && column[breakpoint] !== undefined)\n            return column[breakpoint] || DEFAULT_COLUMN_MAP[breakpoint];\n        }\n      }\n\n      return 3;\n    }\n\n    function getFilledItem(node: VNode, rowRestCol: number, span?: number): VNode {\n      let clone = node;\n\n      if (span === undefined || span > rowRestCol) {\n        clone = cloneElement(node, {\n          span: rowRestCol,\n        });\n        devWarning(\n          span === undefined,\n          'Descriptions',\n          'Sum of column `span` in a line not match `column` of Descriptions.',\n        );\n      }\n\n      return clone;\n    }\n    const mergeColumn = computed(() => getColumn(props.column, screens.value));\n    function getRows(children: VNode[], column: number) {\n      const childNodes = flattenChildren(children);\n      const rows: VNode[][] = [];\n\n      let tmpRow: VNode[] = [];\n      let rowRestCol = column;\n      childNodes.forEach((node, index) => {\n        const span: number = node.props?.span;\n        const mergedSpan = span || 1;\n\n        // Additional handle last one\n        if (index === childNodes.length - 1) {\n          tmpRow.push(getFilledItem(node, rowRestCol, span));\n          rows.push(tmpRow);\n          return;\n        }\n\n        if (mergedSpan < rowRestCol) {\n          rowRestCol -= mergedSpan;\n          tmpRow.push(node);\n        } else {\n          tmpRow.push(getFilledItem(node, rowRestCol, mergedSpan));\n          rows.push(tmpRow);\n          rowRestCol = column;\n          tmpRow = [];\n        }\n      });\n\n      return rows;\n    }\n    return () => {\n      const {\n        size,\n        bordered = false,\n        layout = 'horizontal',\n        colon = true,\n        title = slots.title?.(),\n        extra = slots.extra?.(),\n      } = props;\n\n      const children = slots.default?.();\n      const rows = getRows(children, mergeColumn.value);\n\n      return wrapSSR(\n        <div\n          {...attrs}\n          class={[\n            prefixCls.value,\n            {\n              [`${prefixCls.value}-${size}`]: size !== 'default',\n              [`${prefixCls.value}-bordered`]: !!bordered,\n              [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n            },\n            attrs.class,\n            hashId.value,\n          ]}\n        >\n          {(title || extra) && (\n            <div class={`${prefixCls.value}-header`}>\n              {title && <div class={`${prefixCls.value}-title`}>{title}</div>}\n              {extra && <div class={`${prefixCls.value}-extra`}>{extra}</div>}\n            </div>\n          )}\n          <div class={`${prefixCls.value}-view`}>\n            <table>\n              <tbody>\n                {rows.map((row, index) => {\n                  return (\n                    <Row\n                      key={index}\n                      index={index}\n                      colon={colon}\n                      prefixCls={prefixCls.value}\n                      vertical={layout === 'vertical'}\n                      bordered={bordered}\n                      row={row}\n                    />\n                  );\n                })}\n              </tbody>\n            </table>\n          </div>\n        </div>,\n      );\n    };\n  },\n});\n"],"names":["defineComponent","compatConfig","MODE","name","inheritAttrs","props","descriptionsProps","slots","Object","Item","DescriptionsItem","setup","attrs","prefixCls","direction","useConfigInject","token","screens","ref","wrapSSR","hashId","useStyle","responsiveObserve","useResponsiveObserver","onBeforeMount","value","subscribe","screen","column","onBeforeUnmount","unsubscribe","createProviderContext","labelStyle","toRef","contentStyle","getColumn","_screens","i","responsiveArray","length","breakpoint","undefined","DEFAULT_COLUMN_MAP","getFilledItem","node","rowRestCol","span","clone","cloneElement","devWarning","mergeColumn","computed","getRows","children","childNodes","flattenChildren","rows","tmpRow","forEach","index","mergedSpan","push","size","bordered","layout","colon","title","extra","default","_createVNode","class","map","row","Row"],"mappings":"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"}