{"version":3,"file":"warningPropsUtil.mjs","sources":["../../../../../../../packages/vue-components/vc-select/src/utils/warningPropsUtil.ts"],"sourcesContent":["import type { VNode } from 'vue';\nimport type { LabelInValueType, RawValueType, SelectProps } from '../Select';\nimport { isValidElement, noteOnce, warning } from '@antdv/utils';\nimport { isMultiple } from '../BaseSelect';\nimport { toArray } from './commonUtil';\nimport { convertChildrenToData } from './legacyUtil';\n\nfunction warningProps(props: SelectProps) {\n  const {\n    mode,\n    options,\n    children,\n    backfill,\n    allowClear,\n    placeholder,\n    getInputElement,\n    showSearch,\n    onSearch,\n    defaultOpen,\n    autofocus,\n    labelInValue,\n    value,\n    inputValue,\n    optionLabelProp,\n  } = props;\n\n  const multiple = isMultiple(mode);\n  const mergedShowSearch = showSearch !== undefined ? showSearch : multiple || mode === 'combobox';\n  const mergedOptions = options || convertChildrenToData(children);\n\n  // `tags` should not set option as disabled\n  warning(\n    mode !== 'tags' || mergedOptions.every((opt: { disabled?: boolean }) => !opt.disabled),\n    'Please avoid setting option to disabled in tags mode since user can always type text as tag.',\n  );\n\n  // `combobox` should not use `optionLabelProp`\n  warning(\n    mode !== 'combobox' || !optionLabelProp,\n    '`combobox` mode not support `optionLabelProp`. Please set `value` on Option directly.',\n  );\n\n  // Only `combobox` support `backfill`\n  warning(mode === 'combobox' || !backfill, '`backfill` only works with `combobox` mode.');\n\n  // Only `combobox` support `getInputElement`\n  warning(\n    mode === 'combobox' || !getInputElement,\n    '`getInputElement` only work with `combobox` mode.',\n  );\n\n  // Customize `getInputElement` should not use `allowClear` & `placeholder`\n  noteOnce(\n    mode !== 'combobox' || !getInputElement || !allowClear || !placeholder,\n    'Customize `getInputElement` should customize clear and placeholder logic instead of configuring `allowClear` and `placeholder`.',\n  );\n\n  // `onSearch` should use in `combobox` or `showSearch`\n  if (onSearch && !mergedShowSearch && mode !== 'combobox' && mode !== 'tags')\n    warning(false, '`onSearch` should work with `showSearch` instead of use alone.');\n\n  noteOnce(\n    !defaultOpen || autofocus,\n    '`defaultOpen` makes Select open without focus which means it will not close by click outside. You can set `autofocus` if needed.',\n  );\n\n  if (value !== undefined && value !== null) {\n    const values = toArray<RawValueType | LabelInValueType>(value);\n    warning(\n      !labelInValue\n        || values.every(val => typeof val === 'object' && ('key' in val || 'value' in val)),\n      '`value` should in shape of `{ value: string | number, label?: any }` when you set `labelInValue` to `true`',\n    );\n\n    warning(\n      !multiple || Array.isArray(value),\n      '`value` should be array when `mode` is `multiple` or `tags`',\n    );\n  }\n\n  // Syntactic sugar should use correct children type\n  if (children) {\n    let invalidateChildType = null;\n    children.some((node: any) => {\n      if (!isValidElement(node) || !node.type)\n        return false;\n\n      const { type } = node as { type: { isSelectOption?: boolean; isSelectOptGroup?: boolean } };\n\n      if (type.isSelectOption)\n        return false;\n\n      if (type.isSelectOptGroup) {\n        const childs = node.children?.default() || [];\n        const allChildrenValid = childs.every((subNode: VNode) => {\n          if (\n            !isValidElement(subNode)\n            || !node.type\n            || (subNode.type as { isSelectOption?: boolean }).isSelectOption\n          ) {\n            return true;\n          }\n\n          invalidateChildType = subNode.type;\n          return false;\n        });\n\n        if (allChildrenValid)\n          return false;\n\n        return true;\n      }\n      invalidateChildType = type;\n      return true;\n    });\n\n    if (invalidateChildType) {\n      warning(\n        false,\n        `\\`children\\` should be \\`Select.Option\\` or \\`Select.OptGroup\\` instead of \\`${\n          invalidateChildType.displayName || invalidateChildType.name || invalidateChildType\n        }\\`.`,\n      );\n    }\n\n    warning(\n      inputValue === undefined,\n      '`inputValue` is deprecated, please use `searchValue` instead.',\n    );\n  }\n}\n\nexport default warningProps;\n"],"names":[],"mappings":"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"}