{"version":3,"file":"Space.cjs","sources":["../../../../../../packages/components/space/src/Space.tsx"],"sourcesContent":["import type { CustomSlotsType } from '@antdv/types';\nimport type { CSSProperties } from 'vue';\nimport type { SpaceSize } from './interface';\nimport { useFlexGapSupport } from '@antdv/hooks';\nimport { classNames, filterEmpty } from '@antdv/utils';\n\nimport { computed, defineComponent, Fragment, ref, watch } from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport useStyle from '../style';\nimport { spaceProps } from './props';\n\nconst spaceSize = {\n  small: 8,\n  middle: 16,\n  large: 24,\n};\n\nfunction getNumberSize(size: SpaceSize) {\n  return typeof size === 'string' ? spaceSize[size] : size || 0;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASpace',\n  inheritAttrs: false,\n  props: spaceProps(),\n  slots: Object as CustomSlotsType<{\n    split?: any\n    default?: any\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, space, direction: directionConfig } = useConfigInject('space', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const supportFlexGap = useFlexGapSupport();\n    const size = computed(() => props.size ?? space?.value?.size ?? 'small');\n    const horizontalSize = ref<number>();\n    const verticalSize = ref<number>();\n    watch(\n      size,\n      () => {\n        [horizontalSize.value, verticalSize.value] = (\n          (Array.isArray(size.value) ? size.value : [size.value, size.value]) as [\n            SpaceSize,\n            SpaceSize,\n          ]\n        ).map(item => getNumberSize(item));\n      },\n      { immediate: true },\n    );\n\n    const mergedAlign = computed(() =>\n      props.align === undefined && props.direction === 'horizontal' ? 'center' : props.align,\n    );\n    const cn = computed(() => {\n      return classNames(prefixCls.value, hashId.value, `${prefixCls.value}-${props.direction}`, {\n        [`${prefixCls.value}-rtl`]: directionConfig.value === 'rtl',\n        [`${prefixCls.value}-align-${mergedAlign.value}`]: mergedAlign.value,\n      });\n    });\n\n    const marginDirection = computed(() =>\n      directionConfig.value === 'rtl' ? 'marginLeft' : 'marginRight',\n    );\n    const style = computed(() => {\n      const gapStyle: CSSProperties = {};\n      if (supportFlexGap.value) {\n        gapStyle.columnGap = `${horizontalSize.value}px`;\n        gapStyle.rowGap = `${verticalSize.value}px`;\n      }\n      return {\n        ...gapStyle,\n        ...(props.wrap && { flexWrap: 'wrap', marginBottom: `${-verticalSize.value}px` }),\n      } as CSSProperties;\n    });\n    return () => {\n      const { wrap, direction = 'horizontal' } = props;\n      const children = slots.default?.();\n      const items = filterEmpty(children);\n      const len = items.length;\n\n      if (len === 0)\n        return null;\n\n      const split = slots.split?.();\n      const itemClassName = `${prefixCls.value}-item`;\n      const horizontalSizeVal = horizontalSize.value;\n      const latestIndex = len - 1;\n      return (\n        <div\n          {...attrs}\n          class={[cn.value, attrs.class]}\n          style={[style.value, attrs.style as CSSProperties]}\n        >\n          {items.map((child, index) => {\n            let originIndex = children.indexOf(child);\n            if (originIndex === -1)\n              originIndex = `$$space-${index}`;\n\n            let itemStyle: CSSProperties = {};\n            if (!supportFlexGap.value) {\n              if (direction === 'vertical') {\n                if (index < latestIndex)\n                  itemStyle = { marginBottom: `${horizontalSizeVal / (split ? 2 : 1)}px` };\n              } else {\n                itemStyle = {\n                  ...(index < latestIndex && {\n                    [marginDirection.value]: `${horizontalSizeVal / (split ? 2 : 1)}px`,\n                  }),\n                  ...(wrap && { paddingBottom: `${verticalSize.value}px` }),\n                };\n              }\n            }\n\n            return wrapSSR(\n              <Fragment key={originIndex}>\n                <div class={itemClassName} style={itemStyle}>\n                  {child}\n                </div>\n                {index < latestIndex && split && (\n                  <span class={`${itemClassName}-split`} style={itemStyle}>\n                    {split}\n                  </span>\n                )}\n              </Fragment>,\n            );\n          })}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["spaceSize","small","middle","large","getNumberSize","size","defineComponent","compatConfig","MODE","name","inheritAttrs","props","spaceProps","slots","Object","setup","attrs","prefixCls","space","direction","directionConfig","useConfigInject","wrapSSR","hashId","useStyle","supportFlexGap","useFlexGapSupport","computed","value","horizontalSize","ref","verticalSize","watch","Array","isArray","map","item","immediate","mergedAlign","align","undefined","cn","classNames","marginDirection","style","gapStyle","columnGap","rowGap","wrap","flexWrap","marginBottom","children","default","items","filterEmpty","len","length","split","itemClassName","horizontalSizeVal","latestIndex","_createVNode","class","child","index","originIndex","indexOf","itemStyle","paddingBottom","_Fragment"],"mappings":";;;;;;;;;;;;;;AAWA,MAAMA,SAAY,GAAA;AAAA,EAChBC,KAAO,EAAA,CAAA;AAAA,EACPC,MAAQ,EAAA,EAAA;AAAA,EACRC,KAAO,EAAA,EAAA;AACT,CAAA,CAAA;AAEA,SAASC,cAAcC,IAAiB,EAAA;AACtC,EAAA,OAAO,OAAOA,IAAS,KAAA,QAAA,GAAWL,SAAUK,CAAAA,IAAI,IAAIA,IAAQ,IAAA,CAAA,CAAA;AAC9D,CAAA;AAEA,6BAA+BC,mBAAA,CAAA;AAAA,EAC7BC,YAAc,EAAA;AAAA,IAAEC,IAAM,EAAA,CAAA;AAAA,GAAE;AAAA,EACxBC,IAAM,EAAA,QAAA;AAAA,EACNC,YAAc,EAAA,KAAA;AAAA,EACdC,OAAOC,gBAAW,EAAA;AAAA,EAClBC,KAAOC,EAAAA,MAAAA;AAAAA,EAIPC,MAAMJ,KAAO,EAAA;AAAA,IAAEE,KAAAA;AAAAA,IAAOG,KAAAA;AAAAA,GAAS,EAAA;AAC7B,IAAM,MAAA;AAAA,MAAEC,SAAAA;AAAAA,MAAWC,KAAAA;AAAAA,MAAOC,SAAWC,EAAAA,eAAAA;AAAAA,KAAgB,GAAIC,uBAAgB,CAAA,OAAA,EAASV,KAAK,CAAA,CAAA;AACvF,IAAA,MAAM,CAACW,OAAAA,EAASC,MAAM,CAAA,GAAIC,cAASP,SAAS,CAAA,CAAA;AAC5C,IAAA,MAAMQ,iBAAiBC,yBAAkB,EAAA,CAAA;AACzC,IAAMrB,MAAAA,IAAAA,GAAOsB,aAAS,MAAA;;AAAMhB,MAAAA,OAAAA,CAAAA,EAAAA,GAAAA,CAAAA,EAAAA,GAAAA,KAAAA,CAAMN,SAANM,IAAcO,GAAAA,EAAAA,GAAAA,CAAAA,EAAAA,GAAAA,KAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAOU,KAAPV,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAcb,SAA5BM,IAAoC,GAAA,EAAA,GAAA,OAAA,CAAA;AAAA,KAAO,CAAA,CAAA;AACvE,IAAA,MAAMkB,iBAAiBC,OAAY,EAAA,CAAA;AACnC,IAAA,MAAMC,eAAeD,OAAY,EAAA,CAAA;AACjCE,IAAAA,SAAAA,CACE3B,MACA,MAAM;AACJ,MAACwB,CAAAA,cAAAA,CAAeD,OAAOG,YAAaH,CAAAA,KAAK,KACtCK,KAAMC,CAAAA,OAAAA,CAAQ7B,IAAKuB,CAAAA,KAAK,CAAIvB,GAAAA,IAAAA,CAAKuB,QAAQ,CAACvB,IAAAA,CAAKuB,OAAOvB,IAAKuB,CAAAA,KAAK,GAIjEO,GAAIC,CAAAA,CAAAA,IAAAA,KAAQhC,aAAcgC,CAAAA,IAAI,CAAC,CAAA,CAAA;AAAA,KAEnC,EAAA;AAAA,MAAEC,SAAW,EAAA,IAAA;AAAA,KACf,CAAA,CAAA;AAEA,IAAMC,MAAAA,WAAAA,GAAcX,YAAS,CAAA,MAC3BhB,KAAM4B,CAAAA,KAAAA,KAAUC,KAAa7B,CAAAA,IAAAA,KAAAA,CAAMQ,SAAc,KAAA,YAAA,GAAe,QAAWR,GAAAA,KAAAA,CAAM4B,KACnF,CAAA,CAAA;AACA,IAAME,MAAAA,EAAAA,GAAKd,aAAS,MAAM;AACxB,MAAOe,OAAAA,iBAAAA,CAAWzB,SAAUW,CAAAA,KAAAA,EAAOL,MAAOK,CAAAA,KAAAA,EAAQ,CAAEX,EAAAA,SAAAA,CAAUW,KAAM,CAAA,CAAA,EAAGjB,KAAMQ,CAAAA,SAAU,CAAG,CAAA,EAAA;AAAA,QACxF,CAAE,CAAEF,EAAAA,SAAAA,CAAUW,KAAM,CAAK,IAAA,CAAA,GAAGR,gBAAgBQ,KAAU,KAAA,KAAA;AAAA,QACtD,CAAE,GAAEX,SAAUW,CAAAA,KAAM,UAASU,WAAYV,CAAAA,KAAM,CAAC,CAAA,GAAGU,WAAYV,CAAAA,KAAAA;AAAAA,OAChE,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAED,IAAA,MAAMe,kBAAkBhB,YAAS,CAAA,MAC/BP,gBAAgBQ,KAAU,KAAA,KAAA,GAAQ,eAAe,aACnD,CAAA,CAAA;AACA,IAAMgB,MAAAA,KAAAA,GAAQjB,aAAS,MAAM;AAC3B,MAAA,MAAMkB,WAA0B,EAAC,CAAA;AACjC,MAAA,IAAIpB,eAAeG,KAAO,EAAA;AACxBiB,QAASC,QAAAA,CAAAA,SAAAA,GAAa,CAAEjB,EAAAA,cAAAA,CAAeD,KAAM,CAAA,EAAA,CAAA,CAAA;AAC7CiB,QAASE,QAAAA,CAAAA,MAAAA,GAAU,CAAEhB,EAAAA,YAAAA,CAAaH,KAAM,CAAA,EAAA,CAAA,CAAA;AAAA,OAC1C;AACA,MAAO,OAAA;AAAA,QACL,GAAGiB,QAAAA;AAAAA,QACH,GAAIlC,MAAMqC,IAAQ,IAAA;AAAA,UAAEC,QAAU,EAAA,MAAA;AAAA,UAAQC,YAAe,EAAA,CAAA,EAAE,CAACnB,YAAAA,CAAaH,KAAM,CAAA,EAAA,CAAA;AAAA,SAAI;AAAA,OACjF,CAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,MAAM;;AACX,MAAM,MAAA;AAAA,QAAEoB,IAAAA;AAAAA,QAAM7B,SAAY,GAAA,YAAA;AAAA,OAAiBR,GAAAA,KAAAA,CAAAA;AAC3C,MAAMwC,MAAAA,QAAAA,GAAAA,CAAWtC,WAAMuC,OAANvC,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AACjB,MAAMwC,MAAAA,KAAAA,GAAQC,oBAAYH,QAAQ,CAAA,CAAA;AAClC,MAAA,MAAMI,MAAMF,KAAMG,CAAAA,MAAAA,CAAAA;AAElB,MAAA,IAAID,GAAQ,KAAA,CAAA;AACV,QAAO,OAAA,IAAA,CAAA;AAET,MAAME,MAAAA,KAAAA,GAAAA,CAAQ5C,WAAM4C,KAAN5C,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA;AACd,MAAM6C,MAAAA,aAAAA,GAAiB,CAAEzC,EAAAA,SAAAA,CAAUW,KAAM,CAAA,KAAA,CAAA,CAAA;AACzC,MAAA,MAAM+B,oBAAoB9B,cAAeD,CAAAA,KAAAA,CAAAA;AACzC,MAAA,MAAMgC,cAAcL,GAAM,GAAA,CAAA,CAAA;AAC1B,MAAA,OAAAM,gBAAA,KAAA,EAAA;AAAA,QAAA,GAEQ7C,KAAAA;AAAAA,QAAK,OACF,EAAA,CAACyB,EAAGb,CAAAA,KAAAA,EAAOZ,MAAM8C,KAAK,CAAA;AAAA,QAAC,OACvB,EAAA,CAAClB,KAAMhB,CAAAA,KAAAA,EAAOZ,MAAM4B,KAAK,CAAA;AAAA,SAE/BS,CAAAA,KAAAA,CAAMlB,GAAI,CAAA,CAAC4B,OAAOC,KAAU,KAAA;AAC3B,QAAIC,IAAAA,WAAAA,GAAcd,QAASe,CAAAA,OAAAA,CAAQH,KAAK,CAAA,CAAA;AACxC,QAAA,IAAIE,WAAgB,KAAA,CAAA,CAAA;AAClBA,UAAAA,WAAAA,GAAe,WAAUD,KAAM,CAAA,CAAA,CAAA;AAEjC,QAAA,IAAIG,YAA2B,EAAC,CAAA;AAChC,QAAI,IAAA,CAAC1C,eAAeG,KAAO,EAAA;AACzB,UAAA,IAAIT,cAAc,UAAY,EAAA;AAC5B,YAAA,IAAI6C,KAAQJ,GAAAA,WAAAA;AACVO,cAAY,SAAA,GAAA;AAAA,gBAAEjB,YAAe,EAAA,CAAA,EAAES,iBAAqBF,IAAAA,KAAAA,GAAQ,IAAI,CAAG,CAAA,CAAA,EAAA,CAAA;AAAA,eAAI,CAAA;AAAA,WACpE,MAAA;AACLU,YAAY,SAAA,GAAA;AAAA,cACV,GAAIH,QAAQJ,WAAe,IAAA;AAAA,gBACzB,CAACjB,gBAAgBf,KAAK,GAAI,GAAE+B,iBAAqBF,IAAAA,KAAAA,GAAQ,IAAI,CAAG,CAAA,CAAA,EAAA,CAAA;AAAA,eAClE;AAAA,cACA,GAAIT,IAAQ,IAAA;AAAA,gBAAEoB,aAAAA,EAAgB,CAAErC,EAAAA,YAAAA,CAAaH,KAAM,CAAA,EAAA,CAAA;AAAA,eAAI;AAAA,aACzD,CAAA;AAAA,WACF;AAAA,SACF;AAEA,QAAON,OAAAA,OAAAA,CAAOuC,gBAAAQ,YAAA,EAAA;AAAA,UAAA,KACGJ,EAAAA,WAAAA;AAAAA,SAAW,EAAA,CAAAJ,eAAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OACZH,EAAAA,aAAAA;AAAAA,UAAa,OAASS,EAAAA,SAAAA;AAAAA,SAAS,EACxCJ,CAAAA,KAAK,IAEPC,KAAQJ,GAAAA,WAAAA,IAAeH,KAAKI,IAAAA,eAAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EACb,GAAEH,aAAc,CAAA,MAAA,CAAA;AAAA,UAAO,OAASS,EAAAA,SAAAA;AAAAA,WAC3CV,CAAAA,KAAK,CAET,CAAA,CAAA,CAEL,CAAA,CAAA;AAAA,OACD,CAAC,CAAA,CAAA,CAAA;AAAA,KAGR,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}