element-plus
Version:
A Component Library for Vue 3
1 lines • 3.1 kB
Source Map (JSON)
{"version":3,"file":"use-space.mjs","names":[],"sources":["../../../../../../packages/components/space/src/use-space.ts"],"sourcesContent":["import { computed, ref, watchEffect } from 'vue'\nimport { isArray, isNumber } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport type { SpaceProps } from './space'\nimport type { CSSProperties, StyleValue } from 'vue'\n\nconst SIZE_MAP = {\n small: 8,\n default: 12,\n large: 16,\n} as const\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 ? { flexWrap: 'wrap' } : {}\n const alignment: CSSProperties = {\n alignItems: props.alignment,\n }\n const gap: CSSProperties = {\n rowGap: `${verticalSize.value}px`,\n columnGap: `${horizontalSize.value}px`,\n }\n return [wrapKls, alignment, gap, props.style]\n })\n\n const itemStyle = computed<StyleValue>(() => {\n return props.fill ? { flexGrow: 1, minWidth: `${props.fillRatio}%` } : {}\n })\n\n watchEffect(() => {\n const { size = 'small', wrap, direction: dir, fill } = props\n\n // when the specified size have been given\n if (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 || 'small'] || 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"],"mappings":";;;;;AAOA,MAAM,WAAW;CACf,OAAO;CACP,SAAS;CACT,OAAO;CACR;AAED,SAAgB,SAAS,OAAmB;CAC1C,MAAM,KAAK,aAAa,QAAQ;CAEhC,MAAM,UAAU,eAAe;EAAC,GAAG,GAAG;EAAE,GAAG,EAAE,MAAM,UAAU;EAAE,MAAM;EAAM,CAAC;CAE5E,MAAM,iBAAiB,IAAI,EAAE;CAC7B,MAAM,eAAe,IAAI,EAAE;CAE3B,MAAM,iBAAiB,eAA2B;AAUhD,SAAO;GARL,MAAM,QAAQ,MAAM,OAAO,EAAE,UAAU,QAAQ,GAAG,EAAE;GACrB,EAC/B,YAAY,MAAM,WACnB;GAC0B;IACzB,QAAQ,GAAG,aAAa,MAAM;IAC9B,WAAW,GAAG,eAAe,MAAM;IACpC;GACgC,MAAM;GAAM;GAC7C;CAEF,MAAM,YAAY,eAA2B;AAC3C,SAAO,MAAM,OAAO;GAAE,UAAU;GAAG,UAAU,GAAG,MAAM,UAAU;GAAI,GAAG,EAAE;GACzE;AAEF,mBAAkB;EAChB,MAAM,EAAE,OAAO,SAAS,MAAM,WAAW,KAAK,SAAS;AAGvD,MAAI,QAAQ,KAAK,EAAE;GACjB,MAAM,CAAC,IAAI,GAAG,IAAI,KAAK;AACvB,kBAAe,QAAQ;AACvB,gBAAa,QAAQ;SAChB;GACL,IAAI;AACJ,OAAI,SAAS,KAAK,CAChB,OAAM;OAEN,OAAM,SAAS,QAAQ,YAAY,SAAS;AAG9C,QAAK,QAAQ,SAAS,QAAQ,aAC5B,gBAAe,QAAQ,aAAa,QAAQ;YAExC,QAAQ,cAAc;AACxB,mBAAe,QAAQ;AACvB,iBAAa,QAAQ;UAChB;AACL,iBAAa,QAAQ;AACrB,mBAAe,QAAQ;;;GAI7B;AAEF,QAAO;EACL;EACA;EACA;EACD"}