{"version":3,"file":"valueUtil.mjs","sources":["../../../../../../../packages/vue-components/vc-select/src/utils/valueUtil.ts"],"sourcesContent":["import type { FlattenOptionData } from '../interface';\nimport type { BaseOptionType, DefaultOptionType, FieldNames, RawValueType } from '../Select';\nimport { warning } from '@antdv/utils';\n\nfunction getKey(data: BaseOptionType, index: number) {\n  const { key } = data;\n  let value: RawValueType;\n\n  if ('value' in data)\n    ({ value } = data);\n\n  if (key !== null && key !== undefined)\n    return key;\n\n  if (value !== undefined)\n    return value;\n\n  return `rc-index-key-${index}`;\n}\n\nexport function fillFieldNames(fieldNames: FieldNames | undefined, childrenAsData: boolean) {\n  const { label, value, options } = fieldNames || {};\n\n  return {\n    label: label || (childrenAsData ? 'children' : 'label'),\n    value: value || 'value',\n    options: options || 'options',\n  };\n}\n\n/**\n * Flat options into flatten list.\n * We use `optionOnly` here is aim to avoid user use nested option group.\n * Here is simply set `key` to the index if not provided.\n */\nexport function flattenOptions<OptionType extends BaseOptionType = DefaultOptionType>(\n  options: OptionType[],\n  { fieldNames, childrenAsData }: { fieldNames?: FieldNames; childrenAsData?: boolean } = {},\n): Array<FlattenOptionData<OptionType>> {\n  const flattenList: Array<FlattenOptionData<OptionType>> = [];\n\n  const {\n    label: fieldLabel,\n    value: fieldValue,\n    options: fieldOptions,\n  } = fillFieldNames(fieldNames, false);\n\n  function dig(list: OptionType[], isGroupOption: boolean) {\n    list.forEach((data) => {\n      const label = data[fieldLabel];\n\n      if (isGroupOption || !(fieldOptions in data)) {\n        const value = data[fieldValue];\n        // Option\n        flattenList.push({\n          key: getKey(data, flattenList.length),\n          groupOption: isGroupOption,\n          data,\n          label,\n          value,\n        });\n      } else {\n        let grpLabel = label;\n        if (grpLabel === undefined && childrenAsData)\n          grpLabel = data.label;\n\n        // Option Group\n        flattenList.push({\n          key: getKey(data, flattenList.length),\n          group: true,\n          data,\n          label: grpLabel,\n        });\n\n        dig(data[fieldOptions], true);\n      }\n    });\n  }\n\n  dig(options, false);\n\n  return flattenList;\n}\n\n/**\n * Inject `props` into `option` for legacy usage\n */\nexport function injectPropsWithOption<T extends object>(option: T): T {\n  const newOption = { ...option };\n  if (!('props' in newOption)) {\n    Object.defineProperty(newOption, 'props', {\n      get() {\n        warning(\n          false,\n          'Return type is option instead of Option instance. Please read value directly instead of reading from `props`.',\n        );\n        return newOption;\n      },\n    });\n  }\n\n  return newOption;\n}\n\nexport function getSeparatedContent(text: string, tokens: string[]): string[] {\n  if (!tokens || !tokens.length)\n    return null;\n\n  let match = false;\n\n  function separate(str: string, [token, ...restTokens]: string[]) {\n    if (!token)\n      return [str];\n\n    const list = str.split(token);\n    match = match || list.length > 1;\n\n    return list\n      .reduce((prevList, unitStr) => [...prevList, ...separate(unitStr, restTokens)], [])\n      .filter(unit => unit);\n  }\n\n  const list = separate(text, tokens);\n  return match ? list : null;\n}\n"],"names":["list"],"mappings":"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"}