import { PlusAddCreateNew16SecondaryIcon } from '@cloudtower/icons-react';
import { cx } from '@linaria/core';
import Button from '../Button/index.js';
import { AddRowButtonWrapper } from './style.js';
import { genEmptyRow } from './utils.js';
import { Typo } from '../Typo/index.js';
import useParrotTranslation from '../../hooks/useParrotTranslation.js';
import React__default, { useMemo } from 'react';

var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
  for (var prop in b || (b = {}))
    if (__hasOwnProp.call(b, prop))
      __defNormalProp(a, prop, b[prop]);
  if (__getOwnPropSymbols)
    for (var prop of __getOwnPropSymbols(b)) {
      if (__propIsEnum.call(b, prop))
        __defNormalProp(a, prop, b[prop]);
    }
  return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
  var target = {};
  for (var prop in source)
    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
      target[prop] = source[prop];
  if (source != null && __getOwnPropSymbols)
    for (var prop of __getOwnPropSymbols(source)) {
      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
        target[prop] = source[prop];
    }
  return target;
};
const AddRowButton = (props) => {
  const {
    config: { maximum, className, CustomizedButton, buttonProps, text },
    columns,
    addData,
    data
  } = props;
  const { t } = useParrotTranslation();
  const _a = buttonProps || {}, {
    disabled: disabledFromProp,
    onClick
  } = _a, restButtonProps = __objRest(_a, [
    "disabled",
    "onClick"
  ]);
  const onAdd = (e, data2) => {
    const newData = [...data2];
    const newRow = genEmptyRow(columns);
    newData.push(newRow);
    addData(newData);
    onClick == null ? void 0 : onClick(e);
  };
  const disabled = useMemo(
    () => disabledFromProp || typeof maximum === "number" && maximum <= data.length,
    [maximum, data.length, disabledFromProp]
  );
  const CustomizedButtonText = useMemo(() => {
    if (!text)
      return null;
    if (typeof text === "string")
      return text;
    return text();
  }, [text]);
  if (!columns.length) {
    return null;
  }
  return CustomizedButton ? /* @__PURE__ */ React__default.createElement(CustomizedButton, __spreadValues({}, props)) : /* @__PURE__ */ React__default.createElement(AddRowButtonWrapper, { className }, /* @__PURE__ */ React__default.createElement(
    Button,
    __spreadProps(__spreadValues({}, restButtonProps), {
      type: restButtonProps.type || "ordinary",
      size: restButtonProps.size || "small",
      prefixIcon: restButtonProps.prefixIcon || /* @__PURE__ */ React__default.createElement(PlusAddCreateNew16SecondaryIcon, null),
      className: cx(Typo.Label.l3_regular, restButtonProps.className),
      onClick: (e) => {
        onAdd(e, data);
      },
      disabled
    }),
    CustomizedButtonText || t("components.add")
  ), typeof maximum === "number" ? /* @__PURE__ */ React__default.createElement(
    "span",
    {
      className: cx(
        Typo.Label.l4_regular,
        "maximum-desc",
        disabled && "disabled"
      )
    },
    t("components.maximum_row_count_desc", {
      count: maximum
    })
  ) : null);
};
var AddRowButton$1 = AddRowButton;

export { AddRowButton$1 as default };
