{"version":3,"file":"use-space.mjs","sources":["../../../../../packages/components/space/src/use-space.ts"],"sourcesContent":["import { ref, computed, watchEffect } from 'vue'\nimport { isNumber } from '@element-ultra/utils'\nimport { useNamespace } from '@element-ultra/hooks'\nimport type { SpaceProps } from './space'\n\nimport type { CSSProperties, StyleValue } from 'vue'\nimport type { ComponentSize } from '@element-ultra/shared'\n\nconst SIZE_MAP: Record<ComponentSize, number> = {\n  small: 8,\n  default: 12,\n  large: 16,\n}\n\nexport function useSpace(props: SpaceProps) {\n  const ns = useNamespace('space')\n\n  const classes = computed(() => [ns.b(), ns.m(props.direction), props.class])\n\n  const horizontalSize = ref(0)\n  const verticalSize = ref(0)\n\n  const containerStyle = computed<StyleValue>(() => {\n    const wrapKls: CSSProperties =\n      props.wrap || props.fill\n        ? { flexWrap: 'wrap', marginBottom: `-${verticalSize.value}px` }\n        : {}\n    const alignment: CSSProperties = {\n      alignItems: props.alignment,\n    }\n    return [wrapKls, alignment, props.style]\n  })\n\n  const itemStyle = computed<StyleValue>(() => {\n    const itemBaseStyle: CSSProperties = {\n      paddingBottom: `${verticalSize.value}px`,\n      marginRight: `${horizontalSize.value}px`,\n    }\n\n    const fillStyle: CSSProperties = props.fill\n      ? { flexGrow: 1, minWidth: `${props.fillRatio}%` }\n      : {}\n\n    return [itemBaseStyle, fillStyle]\n  })\n\n  watchEffect(() => {\n    const { size = 'small', wrap, direction: dir, fill } = props\n\n    // when the specified size have been given\n    if (Array.isArray(size)) {\n      const [h = 0, v = 0] = size\n      horizontalSize.value = h\n      verticalSize.value = v\n    } else {\n      let val: number\n      if (isNumber(size)) {\n        val = size\n      } else {\n        val = SIZE_MAP[size] || SIZE_MAP.small\n      }\n\n      if ((wrap || fill) && dir === 'horizontal') {\n        horizontalSize.value = verticalSize.value = val\n      } else {\n        if (dir === 'horizontal') {\n          horizontalSize.value = val\n          verticalSize.value = 0\n        } else {\n          verticalSize.value = val\n          horizontalSize.value = 0\n        }\n      }\n    }\n  })\n\n  return {\n    classes,\n    containerStyle,\n    itemStyle,\n  }\n}\n"],"names":[],"mappings":"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"}