import { cloneElement } from '../_util/vnode';
import { flattenChildren } from '../_util/props-util';
// function chaining(...fns) {
//   return function(...args) {
//     // eslint-disable-line
//     // eslint-disable-line
//     for (let i = 0; i < fns.length; i++) {
//       if (fns[i] && typeof fns[i] === 'function') {
//         fns[i].apply(this, args);
//       }
//     }
//   };
// }
// export default {
//   name: 'InputElement',
//   inheritAttrs: false,
//   props: {
//     value: PropTypes.any,
//     disabled: PropTypes.bool,
//     placeholder: PropTypes.string,
//   },
//   render() {
//     const { $slots = {}, $attrs = {}, placeholder } = this;
//     const listeners = getListeners(this);
//     const props = getOptionProps(this);
//     const value = props.value === undefined ? '' : props.value;
//     const children = getSlot(this)[0];
//     const { componentOptions = {} } = $slots.default[0];
//     const { listeners: events = {} } = componentOptions;
//     const newEvent = { ...events };

//     for (const [eventName, event] of Object.entries(listeners)) {
//       newEvent[eventName] = chaining(event, events[eventName]);
//     }
//     const attrs = { ...$attrs, value };
//     // https://github.com/vueComponent/ant-design-vue/issues/1761
//     delete props.placeholder;
//     if (placeholder) {
//       props.placeholder = placeholder;
//       attrs.placeholder = placeholder;
//     }
//     return cloneElement(children, {
//       domProps: {
//         value,
//       },
//       props,
//       on: newEvent,
//       attrs,
//       ref: 'ele',
//     });
//   },
// };

const InputElement = (_, { attrs, slots }) => {
  const children = flattenChildren(slots.default?.())[0];
  return cloneElement(children, { ...attrs });
};
InputElement.inheritAttrs = false;
export default InputElement;