var _excluded = ["triggerType", "showScan", "showConfirmButton", "searchSectionProps", "inputRender"];
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import React, { forwardRef, useMemo } from 'react';
import { PisellFind } from '@pisell/materials';
import LookupSearchInput from "../comprehensiveSearch/components/lookupSearchInput";

/**
 * 透传给内置 SearchSection 输入栏的额外配置。
 *
 * 受控相关字段（value/onChange/onSearch/onClear/onFocus/onBlur/loading/disabled/placeholder/size）
 * 由 PisellFindPro 自动从 PisellLookup 状态机接好，不需要也不应在此覆盖；
 * 这里只暴露纯展示 / 行为类配置（搜索图标、摄像头、搜索按钮等）。
 */

/**
 * PisellFindPro —— 私有物料侧的「增强版 Find」。
 *
 * 与 `PisellFind` 行为完全一致（搜索状态机 / 历史 / 容器形态 / 扫码枪监听均复用），
 * 唯一区别是把输入栏替换为 `ComprehensiveSearch` 的 `SearchSection`（摄像头 + 输入框 + 搜索按钮）。
 *
 * 实现方式：通过 materials 暴露的 `inputRender` 插槽注入 SearchSection，并把插槽上下文
 * （受控值 / 确认 / 清除 / 聚焦失焦 / loading 等）逐一接到 SearchSection 上，因此 inline、
 * popup、modal、drawer 各形态都能正常工作。
 *
 * - materials 内部仍可直接用 `PisellFind` / `PisellLookup`（默认 antd 输入框）；
 * - private-materials 内需要「综合搜索输入栏」外观时，改用本组件即可，无需让 materials 反向依赖。
 *
 * @example
 * ```tsx
 * <PisellFindPro
 *   triggerType="input"
 *   searchMode="confirm"
 *   onSearch={(keyword) => doSearch(keyword)}
 * />
 * ```
 */
export var PisellFindPro = /*#__PURE__*/forwardRef(function (props, ref) {
  var _props$triggerType = props.triggerType,
    triggerType = _props$triggerType === void 0 ? 'input' : _props$triggerType,
    _props$showScan = props.showScan,
    showScan = _props$showScan === void 0 ? false : _props$showScan,
    showConfirmButton = props.showConfirmButton,
    searchSectionProps = props.searchSectionProps,
    inputRender = props.inputRender,
    rest = _objectWithoutProperties(props, _excluded);

  /**
   * 默认输入栏：把 Lookup 插槽上下文接到 SearchSection。
   * 若外部显式传入 inputRender，则尊重外部实现。
   */
  var finalInputRender = useMemo(function () {
    if (inputRender) {
      return inputRender;
    }
    return function (ctx) {
      return /*#__PURE__*/React.createElement(LookupSearchInput, {
        ctx: ctx,
        showSearchButton: showConfirmButton !== false,
        searchSectionProps: searchSectionProps
      });
    };
  }, [inputRender, searchSectionProps, showConfirmButton]);
  return /*#__PURE__*/React.createElement(PisellFind, _extends({
    ref: ref,
    triggerType: triggerType,
    showScan: showScan,
    showConfirmButton: showConfirmButton,
    inputRender: finalInputRender
  }, rest));
});
PisellFindPro.displayName = 'PisellFindPro';
export default PisellFindPro;