import { jsx } from "react/jsx-runtime";
import { Component, useAccessorTreeState, AccessorTree } from "@contember/react-binding";
import { useDialog, Button } from "@contember/ui";
import { useCallback } from "react";
import { SelectFileDialog } from "./SelectFileDialog.js";
const SelectFileInput = Component(
  ({
    formatMessage,
    insertSelectedText,
    onSelectConfirm,
    selectButtonComponent: SelectButton = Button,
    selectButtonComponentExtraProps,
    selectButtonProps,
    selectButtonText: selectButtonTextProp,
    isMultiple,
    fileSelection
  }) => {
    const { openDialog } = useDialog();
    const selectButtonText = formatMessage(selectButtonTextProp, "upload.selectButton.text");
    const accessorTree = useAccessorTreeState();
    const onClick = useCallback(async (event) => {
      event.stopPropagation();
      const selectedEntities = await openDialog({
        type: "captivating",
        bare: true,
        content: (props) => /* @__PURE__ */ jsx(AccessorTree, { state: accessorTree, children: /* @__PURE__ */ jsx(
          SelectFileDialog,
          {
            formatMessage,
            onCancel: () => props.resolve(),
            onSelect: props.resolve,
            insertSelectedText,
            selectButtonText,
            isMultiple,
            ...fileSelection
          }
        ) })
      });
      if (selectedEntities !== void 0) {
        onSelectConfirm(selectedEntities);
      }
    }, [accessorTree, fileSelection, formatMessage, insertSelectedText, isMultiple, onSelectConfirm, openDialog, selectButtonText]);
    return /* @__PURE__ */ jsx(
      SelectButton,
      {
        ...selectButtonComponentExtraProps,
        size: "small",
        children: selectButtonText,
        onClick,
        ...selectButtonProps
      }
    );
  },
  () => {
    return null;
  },
  "SelectFileInput"
);
export {
  SelectFileInput
};
//# sourceMappingURL=SelectFileInput.js.map
