import { jsxDEV } from "react/jsx-dev-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__ */ jsxDEV(AccessorTree, { state: accessorTree, children: /* @__PURE__ */ jsxDEV(
          SelectFileDialog,
          {
            formatMessage,
            onCancel: () => props.resolve(),
            onSelect: props.resolve,
            insertSelectedText,
            selectButtonText,
            isMultiple,
            ...fileSelection
          },
          void 0,
          false,
          {
            fileName: "/__w/interface/interface/packages/admin/src/components/bindingFacade/upload/internalComponents/selection/SelectFileInput.tsx",
            lineNumber: 61,
            columnNumber: 7
          },
          void 0
        ) }, void 0, false, {
          fileName: "/__w/interface/interface/packages/admin/src/components/bindingFacade/upload/internalComponents/selection/SelectFileInput.tsx",
          lineNumber: 60,
          columnNumber: 6
        }, void 0)
      });
      if (selectedEntities !== void 0) {
        onSelectConfirm(selectedEntities);
      }
    }, [accessorTree, fileSelection, formatMessage, insertSelectedText, isMultiple, onSelectConfirm, openDialog, selectButtonText]);
    return /* @__PURE__ */ jsxDEV(
      SelectButton,
      {
        ...selectButtonComponentExtraProps,
        size: "small",
        children: selectButtonText,
        onClick,
        ...selectButtonProps
      },
      void 0,
      false,
      {
        fileName: "/__w/interface/interface/packages/admin/src/components/bindingFacade/upload/internalComponents/selection/SelectFileInput.tsx",
        lineNumber: 79,
        columnNumber: 4
      },
      void 0
    );
  },
  () => {
    return null;
  },
  "SelectFileInput"
);
export {
  SelectFileInput
};
//# sourceMappingURL=SelectFileInput.js.map
