{"version":3,"file":"Cascader.mjs","sources":["../../../../../../packages/components/cascader/src/Cascader.tsx"],"sourcesContent":["import type { VueNode } from '@antdv/types';\nimport type { SelectCommonPlacement } from '@antdv/vue-components';\nimport type { ShowSearchType } from '@antdv/vue-components/vc-cascader/src/Cascader';\nimport type { CascaderRef } from './interface';\nimport type { CascaderProps } from './props';\nimport { LeftOutlined, LoadingOutlined, RightOutlined } from '@ant-design/icons-vue';\nimport { classNames, devWarning, getMergedStatus, getStatusClassNames, initDefaultProps } from '@antdv/utils';\nimport { getTransitionDirection, getTransitionName, VcCascader } from '@antdv/vue-components';\nimport { computed, defineComponent, ref, watchEffect } from 'vue';\nimport { useInjectDisabled } from '../../config-provider/src/context';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\n\nimport { useInjectFormItemContext } from '../../form';\n\nimport { FormItemInputContext } from '../../form/src/FormItemContext';\nimport getIcons from '../../select/src/iconUtil';\nimport useSelectStyle from '../../select/style';\nimport { useCompactItemContext } from '../../space/src/context';\nimport useStyle from '../style';\nimport { cascaderProps } from './props';\n\n// Align the design since we use `rc-select` in root. This help:\n// - List search content will show all content\n// - Hover opacity style\n// - Search filter match case\n\nfunction highlightKeyword(str: string, lowerKeyword: string, prefixCls?: string) {\n  const cells = str\n    .toLowerCase()\n    .split(lowerKeyword)\n    .reduce((list, cur, index) => (index === 0 ? [cur] : [...list, lowerKeyword, cur]), []);\n  const fillCells: VueNode[] = [];\n  let start = 0;\n\n  cells.forEach((cell, index) => {\n    const end = start + cell.length;\n    let originWorld: VueNode = str.slice(start, end);\n    start = end;\n\n    if (index % 2 === 1) {\n      originWorld = (\n        <span class={`${prefixCls}-menu-item-keyword`} key=\"seperator\">\n          {originWorld}\n        </span>\n      );\n    }\n\n    fillCells.push(originWorld);\n  });\n\n  return fillCells;\n}\n\nconst defaultSearchRender: ShowSearchType['render'] = ({\n  inputValue,\n  path,\n  prefixCls,\n  fieldNames,\n}) => {\n  const optionList: VueNode[] = [];\n\n  // We do lower here to save perf\n  const lower = inputValue.toLowerCase();\n\n  path.forEach((node, index) => {\n    if (index !== 0)\n      optionList.push(' / ');\n\n    let label = (node as any)[fieldNames.label!];\n    const type = typeof label;\n    if (type === 'string' || type === 'number')\n      label = highlightKeyword(String(label), lower, prefixCls);\n\n    optionList.push(label);\n  });\n  return optionList;\n};\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACascader',\n  inheritAttrs: false,\n  props: initDefaultProps(cascaderProps(), {\n    bordered: true,\n    choiceTransitionName: '',\n    allowClear: true,\n  }),\n  setup(props, { attrs, expose, slots, emit }) {\n    // ====================== Warning ======================\n    if (process.env.NODE_ENV !== 'production') {\n      devWarning(\n        !props.dropdownClassName,\n        'Cascader',\n        '`dropdownClassName` is deprecated. Please use `popupClassName` instead.',\n      );\n    }\n    const formItemContext = useInjectFormItemContext();\n    const formItemInputContext = FormItemInputContext.useInject();\n    const mergedStatus = computed(() => getMergedStatus(formItemInputContext.status, props.status));\n    const {\n      prefixCls: cascaderPrefixCls,\n      rootPrefixCls,\n      getPrefixCls,\n      direction,\n      getPopupContainer,\n      renderEmpty,\n      size: contextSize,\n      disabled,\n    } = useConfigInject('cascader', props);\n    const prefixCls = computed(() => getPrefixCls('select', props.prefixCls));\n    const { compactSize, compactItemClassnames } = useCompactItemContext(prefixCls, direction);\n    const mergedSize = computed(() => compactSize.value || contextSize.value);\n    const contextDisabled = useInjectDisabled();\n    const mergedDisabled = computed(() => disabled.value ?? contextDisabled.value);\n\n    const [wrapSelectSSR, hashId] = useSelectStyle(prefixCls);\n    const [wrapCascaderSSR] = useStyle(cascaderPrefixCls);\n\n    const isRtl = computed(() => direction.value === 'rtl');\n    // =================== Warning =====================\n    if (process.env.NODE_ENV !== 'production') {\n      watchEffect(() => {\n        devWarning(\n          !props.multiple || !props.displayRender || !slots.displayRender,\n          'Cascader',\n          '`displayRender` not work on `multiple`. Please use `tagRender` instead.',\n        );\n      });\n    }\n    // ==================== Search =====================\n    const mergedShowSearch = computed(() => {\n      if (!props.showSearch)\n        return props.showSearch;\n\n      let searchConfig: ShowSearchType = {\n        render: defaultSearchRender,\n      };\n\n      if (typeof props.showSearch === 'object') {\n        searchConfig = {\n          ...searchConfig,\n          ...props.showSearch,\n        };\n      }\n\n      return searchConfig;\n    });\n\n    // =================== Dropdown ====================\n    const mergedDropdownClassName = computed(() =>\n      classNames(\n        props.popupClassName || props.dropdownClassName,\n        `${cascaderPrefixCls.value}-dropdown`,\n        {\n          [`${cascaderPrefixCls.value}-dropdown-rtl`]: isRtl.value,\n        },\n        hashId.value,\n      ),\n    );\n\n    const selectRef = ref<CascaderRef>();\n    expose({\n      focus() {\n        selectRef.value?.focus();\n      },\n      blur() {\n        selectRef.value?.blur();\n      },\n    } as CascaderRef);\n\n    const handleChange: CascaderProps['onChange'] = (...args) => {\n      emit('update:value', args[0]);\n      emit('change', ...args);\n      formItemContext.onFieldChange();\n    };\n    const handleBlur: CascaderProps['onBlur'] = (...args) => {\n      emit('blur', ...args);\n      formItemContext.onFieldBlur();\n    };\n    const mergedShowArrow = computed(() =>\n      props.showArrow !== undefined ? props.showArrow : props.loading || !props.multiple,\n    );\n    const placement = computed(() => {\n      if (props.placement !== undefined)\n        return props.placement;\n\n      return direction.value === 'rtl'\n        ? ('bottomRight' as SelectCommonPlacement)\n        : ('bottomLeft' as SelectCommonPlacement);\n    });\n    return () => {\n      const {\n        notFoundContent = slots.notFoundContent?.(),\n        expandIcon = slots.expandIcon?.(),\n        multiple,\n        bordered,\n        allowClear,\n        choiceTransitionName,\n        transitionName,\n        id = formItemContext.id.value,\n        ...restProps\n      } = props;\n      // =================== No Found ====================\n      const mergedNotFoundContent = notFoundContent || renderEmpty('Cascader');\n\n      // ===================== Icon ======================\n      let mergedExpandIcon = expandIcon;\n      if (!expandIcon)\n        mergedExpandIcon = isRtl.value ? <LeftOutlined /> : <RightOutlined />;\n\n      const loadingIcon = (\n        <span class={`${prefixCls.value}-menu-item-loading-icon`}>\n          <LoadingOutlined spin />\n        </span>\n      );\n\n      // ===================== Icons =====================\n      const { suffixIcon, removeIcon, clearIcon } = getIcons(\n        {\n          ...props,\n          hasFeedback: formItemInputContext.hasFeedback,\n          feedbackIcon: formItemInputContext.feedbackIcon,\n          multiple,\n          prefixCls: prefixCls.value,\n          showArrow: mergedShowArrow.value,\n        },\n        slots,\n      );\n      return wrapCascaderSSR(\n        wrapSelectSSR(\n          <VcCascader\n            {...restProps}\n            {...attrs}\n            id={id}\n            prefixCls={prefixCls.value}\n            class={[\n              cascaderPrefixCls.value,\n              {\n                [`${prefixCls.value}-lg`]: mergedSize.value === 'large',\n                [`${prefixCls.value}-sm`]: mergedSize.value === 'small',\n                [`${prefixCls.value}-rtl`]: isRtl.value,\n                [`${prefixCls.value}-borderless`]: !bordered,\n                [`${prefixCls.value}-in-form-item`]: formItemInputContext.isFormItemInput,\n              },\n              getStatusClassNames(\n                prefixCls.value,\n                mergedStatus.value,\n                formItemInputContext.hasFeedback,\n              ),\n              compactItemClassnames.value,\n              attrs.class,\n              hashId.value,\n            ]}\n            disabled={mergedDisabled.value}\n            direction={direction.value}\n            placement={placement.value}\n            notFoundContent={mergedNotFoundContent}\n            allowClear={allowClear}\n            showSearch={mergedShowSearch.value}\n            expandIcon={mergedExpandIcon}\n            inputIcon={suffixIcon}\n            removeIcon={removeIcon}\n            clearIcon={clearIcon}\n            loadingIcon={loadingIcon}\n            checkable={!!multiple}\n            dropdownClassName={mergedDropdownClassName.value}\n            dropdownPrefixCls={cascaderPrefixCls.value}\n            choiceTransitionName={getTransitionName(rootPrefixCls.value, '', choiceTransitionName)}\n            transitionName={getTransitionName(\n              rootPrefixCls.value,\n              getTransitionDirection(placement.value),\n              transitionName,\n            )}\n            getPopupContainer={getPopupContainer?.value}\n            customSlots={{\n              ...slots,\n              checkable: () => <span class={`${cascaderPrefixCls.value}-checkbox-inner`} />,\n            }}\n            tagRender={props.tagRender || slots.tagRender}\n            displayRender={props.displayRender || slots.displayRender}\n            maxTagPlaceholder={props.maxTagPlaceholder || slots.maxTagPlaceholder}\n            showArrow={formItemInputContext.hasFeedback || props.showArrow}\n            onChange={handleChange}\n            onBlur={handleBlur}\n            v-slots={slots}\n            ref={selectRef}\n          />,\n        ),\n      );\n    };\n  },\n});\n"],"names":["highlightKeyword","str","lowerKeyword","prefixCls","cells","toLowerCase","split","reduce","list","cur","index","fillCells","start","forEach","cell","end","length","originWorld","slice","_originWorld","_createVNode","push","defaultSearchRender","inputValue","path","fieldNames","optionList","lower","node","label","type","String","compatConfig","MODE","name","inheritAttrs","props","initDefaultProps","cascaderProps","bordered","choiceTransitionName","allowClear","setup","attrs","expose","slots","emit","process","env","NODE_ENV","devWarning","dropdownClassName","formItemContext","useInjectFormItemContext","formItemInputContext","FormItemInputContext","useInject","mergedStatus","computed","getMergedStatus","status","cascaderPrefixCls","rootPrefixCls","getPrefixCls","direction","getPopupContainer","renderEmpty","size","contextSize","disabled","useConfigInject","compactSize","compactItemClassnames","useCompactItemContext","mergedSize","value","contextDisabled","useInjectDisabled","mergedDisabled","wrapSelectSSR","hashId","useSelectStyle","wrapCascaderSSR","useStyle","isRtl","watchEffect","multiple","displayRender","mergedShowSearch","showSearch","searchConfig","render","mergedDropdownClassName","classNames","popupClassName","selectRef","ref","focus","blur","handleChange","args","onFieldChange","handleBlur","onFieldBlur","mergedShowArrow","showArrow","undefined","loading","placement","notFoundContent","expandIcon","transitionName","id","restProps","mergedNotFoundContent","mergedExpandIcon","LeftOutlined","RightOutlined","loadingIcon","LoadingOutlined","suffixIcon","removeIcon","clearIcon","getIcons","hasFeedback","feedbackIcon","VcCascader","isFormItemInput","getStatusClassNames","class","getTransitionName","getTransitionDirection","checkable","tagRender","maxTagPlaceholder"],"mappings":"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"}