import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import { useSlotProps } from '@mui/base/utils';
import { unstable_composeClasses as composeClasses } from '@mui/utils';
import { PickersActionBar } from '../PickersActionBar';
import { getPickersLayoutUtilityClass } from './pickersLayoutClasses';
import { PickersShortcuts } from '../PickersShortcuts';
import { uncapitalizeObjectKeys } from '../internals/utils/slots-migration';
import { jsx as _jsx } from "react/jsx-runtime";
function toolbarHasView(toolbarProps) {
  return toolbarProps.view !== null;
}
var useUtilityClasses = function useUtilityClasses(ownerState) {
  var classes = ownerState.classes,
    isLandscape = ownerState.isLandscape;
  var slots = {
    root: ['root', isLandscape && 'landscape'],
    contentWrapper: ['contentWrapper'],
    toolbar: ['toolbar'],
    actionBar: ['actionBar'],
    tabs: ['tabs'],
    landscape: ['landscape'],
    shortcuts: ['shortcuts']
  };
  return composeClasses(slots, getPickersLayoutUtilityClass, classes);
};
var usePickerLayout = function usePickerLayout(props) {
  var _slots$actionBar, _slots$shortcuts;
  var _ref = props,
    wrapperVariant = _ref.wrapperVariant,
    onAccept = _ref.onAccept,
    onClear = _ref.onClear,
    onCancel = _ref.onCancel,
    onSetToday = _ref.onSetToday,
    view = _ref.view,
    views = _ref.views,
    onViewChange = _ref.onViewChange,
    value = _ref.value,
    onChange = _ref.onChange,
    onSelectShortcut = _ref.onSelectShortcut,
    isValid = _ref.isValid,
    isLandscape = _ref.isLandscape,
    disabled = _ref.disabled,
    readOnly = _ref.readOnly,
    children = _ref.children,
    components = _ref.components,
    componentsProps = _ref.componentsProps,
    innerSlots = _ref.slots,
    innerSlotProps = _ref.slotProps;
  var slots = innerSlots != null ? innerSlots : uncapitalizeObjectKeys(components);
  var slotProps = innerSlotProps != null ? innerSlotProps : componentsProps;
  var classes = useUtilityClasses(props);

  // Action bar

  var ActionBar = (_slots$actionBar = slots == null ? void 0 : slots.actionBar) != null ? _slots$actionBar : PickersActionBar;
  var actionBarProps = useSlotProps({
    elementType: ActionBar,
    externalSlotProps: slotProps == null ? void 0 : slotProps.actionBar,
    additionalProps: {
      onAccept: onAccept,
      onClear: onClear,
      onCancel: onCancel,
      onSetToday: onSetToday,
      actions: wrapperVariant === 'desktop' ? [] : ['cancel', 'accept'],
      className: classes.actionBar
    },
    ownerState: _extends({}, props, {
      wrapperVariant: wrapperVariant
    })
  });
  var actionBar = /*#__PURE__*/_jsx(ActionBar, _extends({}, actionBarProps));

  // Toolbar

  var Toolbar = slots == null ? void 0 : slots.toolbar;
  var toolbarProps = useSlotProps({
    elementType: Toolbar,
    externalSlotProps: slotProps == null ? void 0 : slotProps.toolbar,
    additionalProps: {
      isLandscape: isLandscape,
      onChange: onChange,
      value: value,
      view: view,
      onViewChange: onViewChange,
      views: views,
      disabled: disabled,
      readOnly: readOnly,
      className: classes.toolbar
    },
    ownerState: _extends({}, props, {
      wrapperVariant: wrapperVariant
    })
  });
  var toolbar = toolbarHasView(toolbarProps) && !!Toolbar ? /*#__PURE__*/_jsx(Toolbar, _extends({}, toolbarProps)) : null;

  // Content

  var content = children;

  // Tabs

  var Tabs = slots == null ? void 0 : slots.tabs;
  var tabs = view && Tabs ? /*#__PURE__*/_jsx(Tabs, _extends({
    view: view,
    onViewChange: onViewChange
  }, slotProps == null ? void 0 : slotProps.tabs)) : null;

  // Shortcuts

  var Shortcuts = (_slots$shortcuts = slots == null ? void 0 : slots.shortcuts) != null ? _slots$shortcuts : PickersShortcuts;
  var shortcutsProps = useSlotProps({
    elementType: Shortcuts,
    externalSlotProps: slotProps == null ? void 0 : slotProps.shortcuts,
    additionalProps: {
      isValid: isValid,
      isLandscape: isLandscape,
      onChange: onSelectShortcut,
      className: classes.shortcuts
    },
    ownerState: {
      isValid: isValid,
      isLandscape: isLandscape,
      onChange: onSelectShortcut,
      className: classes.shortcuts,
      wrapperVariant: wrapperVariant
    }
  });
  var shortcuts = view && !!Shortcuts ? /*#__PURE__*/_jsx(Shortcuts, _extends({}, shortcutsProps)) : null;
  return {
    toolbar: toolbar,
    content: content,
    tabs: tabs,
    actionBar: actionBar,
    shortcuts: shortcuts
  };
};
export default usePickerLayout;