{"version":3,"file":"space.mjs","sources":["../../../components/space/space.tsx"],"sourcesContent":["import { defineComponent, computed, CSSProperties, Fragment } from 'vue';\nimport props from './props';\nimport { useTNodeJSX, useChildSlots, usePrefixClass, useFlatChildrenSlots } from '@tdesign/shared-hooks';\n\nimport { isArray, isNumber, isString } from 'lodash-es';\n\nimport { getFlexGapPolyFill } from '@tdesign/common-js/utils/helper';\nimport { SizeEnum } from '../common';\n\nconst sizeMap = { small: '8px', medium: '16px', large: '24px' };\nconst defaultNeedPolyfill = getFlexGapPolyFill();\n\nexport default defineComponent({\n  name: 'TSpace',\n  props: {\n    ...props,\n    /** 强制使用 margin 间距代替 gap 属性间距（某些浏览器不支持 gap 属性） */\n    forceFlexGapPolyfill: Boolean,\n  },\n  setup(props) {\n    const COMPONENT_NAME = usePrefixClass('space');\n    const renderTNodeJSX = useTNodeJSX();\n    const getChildSlots = useChildSlots();\n    const getFlatChildren = useFlatChildrenSlots();\n\n    const needPolyfill = computed(() => props.forceFlexGapPolyfill || defaultNeedPolyfill);\n\n    const renderStyle = computed<CSSProperties>(() => {\n      let renderGap = '';\n      if (isArray(props.size)) {\n        renderGap = props.size\n          .map((s) => {\n            if (isNumber(s)) return `${s}px`;\n            if (isString(s) && ['small', 'medium', 'large'].includes(s)) return sizeMap[s as SizeEnum];\n            return s;\n          })\n          .join(' ');\n      } else if (isString(props.size)) {\n        renderGap = ['small', 'medium', 'large'].includes(props.size) ? sizeMap[props.size as SizeEnum] : props.size;\n      } else if (isNumber(props.size)) {\n        renderGap = `${props.size}px`;\n      }\n\n      const style: { [key: string]: string | number } = {};\n      if (needPolyfill.value) {\n        const [columnGap, rowGap] = renderGap.split(' ');\n        style['--td-space-column-gap'] = columnGap;\n        style['--td-space-row-gap'] = rowGap || columnGap;\n      } else {\n        style.gap = renderGap;\n      }\n      return style;\n    });\n    function renderChildren() {\n      const children = getFlatChildren(getChildSlots());\n      const separatorContent = renderTNodeJSX('separator');\n      return children.map((child, index) => {\n        const showSeparator = index + 1 !== children.length && separatorContent;\n        return (\n          <Fragment>\n            <div class={`${COMPONENT_NAME.value}-item`}>{child}</div>\n            {showSeparator && <div class={`${COMPONENT_NAME.value}-item-separator`}>{separatorContent}</div>}\n          </Fragment>\n        );\n      });\n    }\n\n    return () => {\n      const spaceClassNames = [\n        `${COMPONENT_NAME.value}`,\n        {\n          [`${COMPONENT_NAME.value}-align-${props.align}`]: props.align,\n          [`${COMPONENT_NAME.value}-${props.direction}`]: props.direction,\n          [`${COMPONENT_NAME.value}--break-line`]: props.breakLine,\n          [`${COMPONENT_NAME.value}--polyfill`]: needPolyfill.value,\n        },\n      ];\n\n      return (\n        <div class={spaceClassNames} style={renderStyle.value}>\n          {renderChildren()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["sizeMap","small","medium","large","defaultNeedPolyfill","getFlexGapPolyFill","defineComponent","name","props","_objectSpread","forceFlexGapPolyfill","Boolean","setup","COMPONENT_NAME","usePrefixClass","renderTNodeJSX","useTNodeJSX","getChildSlots","useChildSlots","getFlatChildren","useFlatChildrenSlots","needPolyfill","computed","renderStyle","renderGap","isArray","size","map","s","isNumber","concat","isString","includes","join","style","value","_renderGap$split","split","_renderGap$split2","_slicedToArray","columnGap","rowGap","gap","renderChildren","children","separatorContent","child","index","showSeparator","length","_createVNode","_Fragment","spaceClassNames","_defineProperty","align","direction","breakLine"],"mappings":"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"}