| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var vue = require('vue');
- var item = require('./item.js');
- var useSpace = require('./use-space.js');
- var vnode = require('../../../utils/vue/vnode.js');
- var runtime = require('../../../utils/vue/props/runtime.js');
- var shared = require('@vue/shared');
- var types = require('../../../utils/types.js');
- var size = require('../../../constants/size.js');
- const spaceProps = runtime.buildProps({
- direction: {
- type: String,
- values: ["horizontal", "vertical"],
- default: "horizontal"
- },
- class: {
- type: runtime.definePropType([
- String,
- Object,
- Array
- ]),
- default: ""
- },
- style: {
- type: runtime.definePropType([String, Array, Object]),
- default: ""
- },
- alignment: {
- type: runtime.definePropType(String),
- default: "center"
- },
- prefixCls: {
- type: String
- },
- spacer: {
- type: runtime.definePropType([Object, String, Number, Array]),
- default: null,
- validator: (val) => vue.isVNode(val) || types.isNumber(val) || shared.isString(val)
- },
- wrap: Boolean,
- fill: Boolean,
- fillRatio: {
- type: Number,
- default: 100
- },
- size: {
- type: [String, Array, Number],
- values: size.componentSizes,
- validator: (val) => {
- return types.isNumber(val) || shared.isArray(val) && val.length === 2 && val.every(types.isNumber);
- }
- }
- });
- const Space = vue.defineComponent({
- name: "ElSpace",
- props: spaceProps,
- setup(props, { slots }) {
- const { classes, containerStyle, itemStyle } = useSpace.useSpace(props);
- function extractChildren(children, parentKey = "", extractedChildren = []) {
- const { prefixCls } = props;
- children.forEach((child, loopKey) => {
- if (vnode.isFragment(child)) {
- if (shared.isArray(child.children)) {
- child.children.forEach((nested, key) => {
- if (vnode.isFragment(nested) && shared.isArray(nested.children)) {
- extractChildren(
- nested.children,
- `${parentKey + key}-`,
- extractedChildren
- );
- } else {
- if (vue.isVNode(nested) && (nested == null ? void 0 : nested.type) === vue.Comment) {
- extractedChildren.push(nested);
- } else {
- extractedChildren.push(
- vue.createVNode(
- item["default"],
- {
- style: itemStyle.value,
- prefixCls,
- key: `nested-${parentKey + key}`
- },
- {
- default: () => [nested]
- },
- vnode.PatchFlags.PROPS | vnode.PatchFlags.STYLE,
- ["style", "prefixCls"]
- )
- );
- }
- }
- });
- }
- } else if (vnode.isValidElementNode(child)) {
- extractedChildren.push(
- vue.createVNode(
- item["default"],
- {
- style: itemStyle.value,
- prefixCls,
- key: `LoopKey${parentKey + loopKey}`
- },
- {
- default: () => [child]
- },
- vnode.PatchFlags.PROPS | vnode.PatchFlags.STYLE,
- ["style", "prefixCls"]
- )
- );
- }
- });
- return extractedChildren;
- }
- return () => {
- var _a;
- const { spacer, direction } = props;
- const children = vue.renderSlot(slots, "default", { key: 0 }, () => []);
- if (((_a = children.children) != null ? _a : []).length === 0)
- return null;
- if (shared.isArray(children.children)) {
- let extractedChildren = extractChildren(children.children);
- if (spacer) {
- const len = extractedChildren.length - 1;
- extractedChildren = extractedChildren.reduce(
- (acc, child, idx) => {
- const children2 = [...acc, child];
- if (idx !== len) {
- children2.push(
- vue.createVNode(
- "span",
- {
- style: [
- itemStyle.value,
- direction === "vertical" ? "width: 100%" : null
- ],
- key: idx
- },
- [
- vue.isVNode(spacer) ? spacer : vue.createTextVNode(spacer, vnode.PatchFlags.TEXT)
- ],
- vnode.PatchFlags.STYLE
- )
- );
- }
- return children2;
- },
- []
- );
- }
- return vue.createVNode(
- "div",
- {
- class: classes.value,
- style: containerStyle.value
- },
- extractedChildren,
- vnode.PatchFlags.STYLE | vnode.PatchFlags.CLASS
- );
- }
- return children.children;
- };
- }
- });
- exports["default"] = Space;
- exports.spaceProps = spaceProps;
- //# sourceMappingURL=space.js.map
|