1 line
66 KiB
JSON
1 line
66 KiB
JSON
{"ast":null,"code":"\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport { useCallback, useMemo } from 'react';\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport classNames from 'classnames';\nimport { INTERNAL_COL_DEFINE } from 'rc-table';\nimport { arrAdd, arrDel } from \"rc-tree/es/util\";\nimport { conductCheck } from \"rc-tree/es/utils/conductUtil\";\nimport { convertDataToEntities } from \"rc-tree/es/utils/treeUtil\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport useMultipleSelect from '../../_util/hooks/useMultipleSelect';\nimport { devUseWarning } from '../../_util/warning';\nimport Checkbox from '../../checkbox';\nimport Dropdown from '../../dropdown';\nimport Radio from '../../radio';\n// TODO: warning if use ajax!!!\nexport const SELECTION_COLUMN = {};\nexport const SELECTION_ALL = 'SELECT_ALL';\nexport const SELECTION_INVERT = 'SELECT_INVERT';\nexport const SELECTION_NONE = 'SELECT_NONE';\nconst EMPTY_LIST = [];\nconst flattenData = (childrenColumnName, data) => {\n let list = [];\n (data || []).forEach(record => {\n list.push(record);\n if (record && typeof record === 'object' && childrenColumnName in record) {\n list = [].concat(_toConsumableArray(list), _toConsumableArray(flattenData(childrenColumnName, record[childrenColumnName])));\n }\n });\n return list;\n};\nconst useSelection = (config, rowSelection) => {\n const {\n preserveSelectedRowKeys,\n selectedRowKeys,\n defaultSelectedRowKeys,\n getCheckboxProps,\n onChange: onSelectionChange,\n onSelect,\n onSelectAll,\n onSelectInvert,\n onSelectNone,\n onSelectMultiple,\n columnWidth: selectionColWidth,\n type: selectionType,\n selections,\n fixed,\n renderCell: customizeRenderCell,\n hideSelectAll,\n checkStrictly = true\n } = rowSelection || {};\n const {\n prefixCls,\n data,\n pageData,\n getRecordByKey,\n getRowKey,\n expandType,\n childrenColumnName,\n locale: tableLocale,\n getPopupContainer\n } = config;\n const warning = devUseWarning('Table');\n // ========================= MultipleSelect =========================\n const [multipleSelect, updatePrevSelectedIndex] = useMultipleSelect(item => item);\n // ========================= Keys =========================\n const [mergedSelectedKeys, setMergedSelectedKeys] = useMergedState(selectedRowKeys || defaultSelectedRowKeys || EMPTY_LIST, {\n value: selectedRowKeys\n });\n // ======================== Caches ========================\n const preserveRecordsRef = React.useRef(new Map());\n const updatePreserveRecordsCache = useCallback(keys => {\n if (preserveSelectedRowKeys) {\n const newCache = new Map();\n // Keep key if mark as preserveSelectedRowKeys\n keys.forEach(key => {\n let record = getRecordByKey(key);\n if (!record && preserveRecordsRef.current.has(key)) {\n record = preserveRecordsRef.current.get(key);\n }\n newCache.set(key, record);\n });\n // Refresh to new cache\n preserveRecordsRef.current = newCache;\n }\n }, [getRecordByKey, preserveSelectedRowKeys]);\n // Update cache with selectedKeys\n React.useEffect(() => {\n updatePreserveRecordsCache(mergedSelectedKeys);\n }, [mergedSelectedKeys]);\n const {\n keyEntities\n } = useMemo(() => {\n if (checkStrictly) {\n return {\n keyEntities: null\n };\n }\n let convertData = data;\n if (preserveSelectedRowKeys) {\n const keysSet = new Set(data.map((record, index) => getRowKey(record, index)));\n // remove preserveRecords that duplicate data\n const preserveRecords = Array.from(preserveRecordsRef.current).reduce((total, _ref) => {\n let [key, value] = _ref;\n return keysSet.has(key) ? total : total.concat(value);\n }, []);\n convertData = [].concat(_toConsumableArray(convertData), _toConsumableArray(preserveRecords));\n }\n return convertDataToEntities(convertData, {\n externalGetKey: getRowKey,\n childrenPropName: childrenColumnName\n });\n }, [data, getRowKey, checkStrictly, childrenColumnName, preserveSelectedRowKeys]);\n // Get flatten data\n const flattedData = useMemo(() => flattenData(childrenColumnName, pageData), [childrenColumnName, pageData]);\n // Get all checkbox props\n const checkboxPropsMap = useMemo(() => {\n const map = new Map();\n flattedData.forEach((record, index) => {\n const key = getRowKey(record, index);\n const checkboxProps = (getCheckboxProps ? getCheckboxProps(record) : null) || {};\n map.set(key, checkboxProps);\n process.env.NODE_ENV !== \"production\" ? warning(!('checked' in checkboxProps || 'defaultChecked' in checkboxProps), 'usage', 'Do not set `checked` or `defaultChecked` in `getCheckboxProps`. Please use `selectedRowKeys` instead.') : void 0;\n });\n return map;\n }, [flattedData, getRowKey, getCheckboxProps]);\n const isCheckboxDisabled = useCallback(r => {\n var _a;\n return !!((_a = checkboxPropsMap.get(getRowKey(r))) === null || _a === void 0 ? void 0 : _a.disabled);\n }, [checkboxPropsMap, getRowKey]);\n const [derivedSelectedKeys, derivedHalfSelectedKeys] = useMemo(() => {\n if (checkStrictly) {\n return [mergedSelectedKeys || [], []];\n }\n const {\n checkedKeys,\n halfCheckedKeys\n } = conductCheck(mergedSelectedKeys, true, keyEntities, isCheckboxDisabled);\n return [checkedKeys || [], halfCheckedKeys];\n }, [mergedSelectedKeys, checkStrictly, keyEntities, isCheckboxDisabled]);\n const derivedSelectedKeySet = useMemo(() => {\n const keys = selectionType === 'radio' ? derivedSelectedKeys.slice(0, 1) : derivedSelectedKeys;\n return new Set(keys);\n }, [derivedSelectedKeys, selectionType]);\n const derivedHalfSelectedKeySet = useMemo(() => selectionType === 'radio' ? new Set() : new Set(derivedHalfSelectedKeys), [derivedHalfSelectedKeys, selectionType]);\n // Reset if rowSelection reset\n React.useEffect(() => {\n if (!rowSelection) {\n setMergedSelectedKeys(EMPTY_LIST);\n }\n }, [!!rowSelection]);\n const setSelectedKeys = useCallback((keys, method) => {\n let availableKeys;\n let records;\n updatePreserveRecordsCache(keys);\n if (preserveSelectedRowKeys) {\n availableKeys = keys;\n records = keys.map(key => preserveRecordsRef.current.get(key));\n } else {\n // Filter key which not exist in the `dataSource`\n availableKeys = [];\n records = [];\n keys.forEach(key => {\n const record = getRecordByKey(key);\n if (record !== undefined) {\n availableKeys.push(key);\n records.push(record);\n }\n });\n }\n setMergedSelectedKeys(availableKeys);\n onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(availableKeys, records, {\n type: method\n });\n }, [setMergedSelectedKeys, getRecordByKey, onSelectionChange, preserveSelectedRowKeys]);\n // ====================== Selections ======================\n // Trigger single `onSelect` event\n const triggerSingleSelection = useCallback((key, selected, keys, event) => {\n if (onSelect) {\n const rows = keys.map(k => getRecordByKey(k));\n onSelect(getRecordByKey(key), selected, rows, event);\n }\n setSelectedKeys(keys, 'single');\n }, [onSelect, getRecordByKey, setSelectedKeys]);\n const mergedSelections = useMemo(() => {\n if (!selections || hideSelectAll) {\n return null;\n }\n const selectionList = selections === true ? [SELECTION_ALL, SELECTION_INVERT, SELECTION_NONE] : selections;\n return selectionList.map(selection => {\n if (selection === SELECTION_ALL) {\n return {\n key: 'all',\n text: tableLocale.selectionAll,\n onSelect() {\n setSelectedKeys(data.map((record, index) => getRowKey(record, index)).filter(key => {\n const checkProps = checkboxPropsMap.get(key);\n return !(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled) || derivedSelectedKeySet.has(key);\n }), 'all');\n }\n };\n }\n if (selection === SELECTION_INVERT) {\n return {\n key: 'invert',\n text: tableLocale.selectInvert,\n onSelect() {\n const keySet = new Set(derivedSelectedKeySet);\n pageData.forEach((record, index) => {\n const key = getRowKey(record, index);\n const checkProps = checkboxPropsMap.get(key);\n if (!(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled)) {\n if (keySet.has(key)) {\n keySet.delete(key);\n } else {\n keySet.add(key);\n }\n }\n });\n const keys = Array.from(keySet);\n if (onSelectInvert) {\n warning.deprecated(false, 'onSelectInvert', 'onChange');\n onSelectInvert(keys);\n }\n setSelectedKeys(keys, 'invert');\n }\n };\n }\n if (selection === SELECTION_NONE) {\n return {\n key: 'none',\n text: tableLocale.selectNone,\n onSelect() {\n onSelectNone === null || onSelectNone === void 0 ? void 0 : onSelectNone();\n setSelectedKeys(Array.from(derivedSelectedKeySet).filter(key => {\n const checkProps = checkboxPropsMap.get(key);\n return checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled;\n }), 'none');\n }\n };\n }\n return selection;\n }).map(selection => Object.assign(Object.assign({}, selection), {\n onSelect: function () {\n var _a2;\n var _a;\n for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) {\n rest[_key] = arguments[_key];\n }\n (_a = selection.onSelect) === null || _a === void 0 ? void 0 : (_a2 = _a).call.apply(_a2, [selection].concat(rest));\n updatePrevSelectedIndex(null);\n }\n }));\n }, [selections, derivedSelectedKeySet, pageData, getRowKey, onSelectInvert, setSelectedKeys]);\n // ======================= Columns ========================\n const transformColumns = useCallback(columns => {\n var _a;\n // >>>>>>>>>>> Skip if not exists `rowSelection`\n if (!rowSelection) {\n process.env.NODE_ENV !== \"production\" ? warning(!columns.includes(SELECTION_COLUMN), 'usage', '`rowSelection` is not config but `SELECTION_COLUMN` exists in the `columns`.') : void 0;\n return columns.filter(col => col !== SELECTION_COLUMN);\n }\n // >>>>>>>>>>> Support selection\n let cloneColumns = _toConsumableArray(columns);\n const keySet = new Set(derivedSelectedKeySet);\n // Record key only need check with enabled\n const recordKeys = flattedData.map(getRowKey).filter(key => !checkboxPropsMap.get(key).disabled);\n const checkedCurrentAll = recordKeys.every(key => keySet.has(key));\n const checkedCurrentSome = recordKeys.some(key => keySet.has(key));\n const onSelectAllChange = () => {\n const changeKeys = [];\n if (checkedCurrentAll) {\n recordKeys.forEach(key => {\n keySet.delete(key);\n changeKeys.push(key);\n });\n } else {\n recordKeys.forEach(key => {\n if (!keySet.has(key)) {\n keySet.add(key);\n changeKeys.push(key);\n }\n });\n }\n const keys = Array.from(keySet);\n onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll(!checkedCurrentAll, keys.map(k => getRecordByKey(k)), changeKeys.map(k => getRecordByKey(k)));\n setSelectedKeys(keys, 'all');\n updatePrevSelectedIndex(null);\n };\n // ===================== Render =====================\n // Title Cell\n let title;\n let columnTitleCheckbox;\n if (selectionType !== 'radio') {\n let customizeSelections;\n if (mergedSelections) {\n const menu = {\n getPopupContainer,\n items: mergedSelections.map((selection, index) => {\n const {\n key,\n text,\n onSelect: onSelectionClick\n } = selection;\n return {\n key: key !== null && key !== void 0 ? key : index,\n onClick: () => {\n onSelectionClick === null || onSelectionClick === void 0 ? void 0 : onSelectionClick(recordKeys);\n },\n label: text\n };\n })\n };\n customizeSelections = /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-selection-extra`\n }, /*#__PURE__*/React.createElement(Dropdown, {\n menu: menu,\n getPopupContainer: getPopupContainer\n }, /*#__PURE__*/React.createElement(\"span\", null, /*#__PURE__*/React.createElement(DownOutlined, null))));\n }\n const allDisabledData = flattedData.map((record, index) => {\n const key = getRowKey(record, index);\n const checkboxProps = checkboxPropsMap.get(key) || {};\n return Object.assign({\n checked: keySet.has(key)\n }, checkboxProps);\n }).filter(_ref2 => {\n let {\n disabled\n } = _ref2;\n return disabled;\n });\n const allDisabled = !!allDisabledData.length && allDisabledData.length === flattedData.length;\n const allDisabledAndChecked = allDisabled && allDisabledData.every(_ref3 => {\n let {\n checked\n } = _ref3;\n return checked;\n });\n const allDisabledSomeChecked = allDisabled && allDisabledData.some(_ref4 => {\n let {\n checked\n } = _ref4;\n return checked;\n });\n columnTitleCheckbox = /*#__PURE__*/React.createElement(Checkbox, {\n checked: !allDisabled ? !!flattedData.length && checkedCurrentAll : allDisabledAndChecked,\n indeterminate: !allDisabled ? !checkedCurrentAll && checkedCurrentSome : !allDisabledAndChecked && allDisabledSomeChecked,\n onChange: onSelectAllChange,\n disabled: flattedData.length === 0 || allDisabled,\n \"aria-label\": customizeSelections ? 'Custom selection' : 'Select all',\n skipGroup: true\n });\n title = !hideSelectAll && ( /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-selection`\n }, columnTitleCheckbox, customizeSelections));\n }\n // Body Cell\n let renderCell;\n if (selectionType === 'radio') {\n renderCell = (_, record, index) => {\n const key = getRowKey(record, index);\n const checked = keySet.has(key);\n return {\n node: ( /*#__PURE__*/React.createElement(Radio, Object.assign({}, checkboxPropsMap.get(key), {\n checked: checked,\n onClick: e => e.stopPropagation(),\n onChange: event => {\n if (!keySet.has(key)) {\n triggerSingleSelection(key, true, [key], event.nativeEvent);\n }\n }\n }))),\n checked\n };\n };\n } else {\n renderCell = (_, record, index) => {\n var _a;\n const key = getRowKey(record, index);\n const checked = keySet.has(key);\n const indeterminate = derivedHalfSelectedKeySet.has(key);\n const checkboxProps = checkboxPropsMap.get(key);\n let mergedIndeterminate;\n if (expandType === 'nest') {\n mergedIndeterminate = indeterminate;\n process.env.NODE_ENV !== \"production\" ? warning(typeof (checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.indeterminate) !== 'boolean', 'usage', 'set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.') : void 0;\n } else {\n mergedIndeterminate = (_a = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.indeterminate) !== null && _a !== void 0 ? _a : indeterminate;\n }\n // Record checked\n return {\n node: ( /*#__PURE__*/React.createElement(Checkbox, Object.assign({}, checkboxProps, {\n indeterminate: mergedIndeterminate,\n checked: checked,\n skipGroup: true,\n onClick: e => e.stopPropagation(),\n onChange: _ref5 => {\n let {\n nativeEvent\n } = _ref5;\n const {\n shiftKey\n } = nativeEvent;\n const currentSelectedIndex = recordKeys.findIndex(item => item === key);\n const isMultiple = derivedSelectedKeys.some(item => recordKeys.includes(item));\n if (shiftKey && checkStrictly && isMultiple) {\n const changedKeys = multipleSelect(currentSelectedIndex, recordKeys, keySet);\n const keys = Array.from(keySet);\n onSelectMultiple === null || onSelectMultiple === void 0 ? void 0 : onSelectMultiple(!checked, keys.map(recordKey => getRecordByKey(recordKey)), changedKeys.map(recordKey => getRecordByKey(recordKey)));\n setSelectedKeys(keys, 'multiple');\n } else {\n // Single record selected\n const originCheckedKeys = derivedSelectedKeys;\n if (checkStrictly) {\n const checkedKeys = checked ? arrDel(originCheckedKeys, key) : arrAdd(originCheckedKeys, key);\n triggerSingleSelection(key, !checked, checkedKeys, nativeEvent);\n } else {\n // Always fill first\n const result = conductCheck([].concat(_toConsumableArray(originCheckedKeys), [key]), true, keyEntities, isCheckboxDisabled);\n const {\n checkedKeys,\n halfCheckedKeys\n } = result;\n let nextCheckedKeys = checkedKeys;\n // If remove, we do it again to correction\n if (checked) {\n const tempKeySet = new Set(checkedKeys);\n tempKeySet.delete(key);\n nextCheckedKeys = conductCheck(Array.from(tempKeySet), {\n checked: false,\n halfCheckedKeys\n }, keyEntities, isCheckboxDisabled).checkedKeys;\n }\n triggerSingleSelection(key, !checked, nextCheckedKeys, nativeEvent);\n }\n }\n if (checked) {\n updatePrevSelectedIndex(null);\n } else {\n updatePrevSelectedIndex(currentSelectedIndex);\n }\n }\n }))),\n checked\n };\n };\n }\n const renderSelectionCell = (_, record, index) => {\n const {\n node,\n checked\n } = renderCell(_, record, index);\n if (customizeRenderCell) {\n return customizeRenderCell(checked, record, index, node);\n }\n return node;\n };\n // Insert selection column if not exist\n if (!cloneColumns.includes(SELECTION_COLUMN)) {\n // Always after expand icon\n if (cloneColumns.findIndex(col => {\n var _a;\n return ((_a = col[INTERNAL_COL_DEFINE]) === null || _a === void 0 ? void 0 : _a.columnType) === 'EXPAND_COLUMN';\n }) === 0) {\n const [expandColumn, ...restColumns] = cloneColumns;\n cloneColumns = [expandColumn, SELECTION_COLUMN].concat(_toConsumableArray(restColumns));\n } else {\n // Normal insert at first column\n cloneColumns = [SELECTION_COLUMN].concat(_toConsumableArray(cloneColumns));\n }\n }\n // Deduplicate selection column\n const selectionColumnIndex = cloneColumns.indexOf(SELECTION_COLUMN);\n process.env.NODE_ENV !== \"production\" ? warning(cloneColumns.filter(col => col === SELECTION_COLUMN).length <= 1, 'usage', 'Multiple `SELECTION_COLUMN` exist in `columns`.') : void 0;\n cloneColumns = cloneColumns.filter((column, index) => column !== SELECTION_COLUMN || index === selectionColumnIndex);\n // Fixed column logic\n const prevCol = cloneColumns[selectionColumnIndex - 1];\n const nextCol = cloneColumns[selectionColumnIndex + 1];\n let mergedFixed = fixed;\n if (mergedFixed === undefined) {\n if ((nextCol === null || nextCol === void 0 ? void 0 : nextCol.fixed) !== undefined) {\n mergedFixed = nextCol.fixed;\n } else if ((prevCol === null || prevCol === void 0 ? void 0 : prevCol.fixed) !== undefined) {\n mergedFixed = prevCol.fixed;\n }\n }\n if (mergedFixed && prevCol && ((_a = prevCol[INTERNAL_COL_DEFINE]) === null || _a === void 0 ? void 0 : _a.columnType) === 'EXPAND_COLUMN' && prevCol.fixed === undefined) {\n prevCol.fixed = mergedFixed;\n }\n const columnCls = classNames(`${prefixCls}-selection-col`, {\n [`${prefixCls}-selection-col-with-dropdown`]: selections && selectionType === 'checkbox'\n });\n const renderColumnTitle = () => {\n if (!(rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.columnTitle)) {\n return title;\n }\n if (typeof rowSelection.columnTitle === 'function') {\n return rowSelection.columnTitle(columnTitleCheckbox);\n }\n return rowSelection.columnTitle;\n };\n // Replace with real selection column\n const selectionColumn = {\n fixed: mergedFixed,\n width: selectionColWidth,\n className: `${prefixCls}-selection-column`,\n title: renderColumnTitle(),\n render: renderSelectionCell,\n onCell: rowSelection.onCell,\n [INTERNAL_COL_DEFINE]: {\n className: columnCls\n }\n };\n return cloneColumns.map(col => col === SELECTION_COLUMN ? selectionColumn : col);\n }, [getRowKey, flattedData, rowSelection, derivedSelectedKeys, derivedSelectedKeySet, derivedHalfSelectedKeySet, selectionColWidth, mergedSelections, expandType, checkboxPropsMap, onSelectMultiple, triggerSingleSelection, isCheckboxDisabled]);\n return [transformColumns, derivedSelectedKeySet];\n};\nexport default useSelection;","map":{"version":3,"names":["_toConsumableArray","React","useCallback","useMemo","DownOutlined","classNames","INTERNAL_COL_DEFINE","arrAdd","arrDel","conductCheck","convertDataToEntities","useMergedState","useMultipleSelect","devUseWarning","Checkbox","Dropdown","Radio","SELECTION_COLUMN","SELECTION_ALL","SELECTION_INVERT","SELECTION_NONE","EMPTY_LIST","flattenData","childrenColumnName","data","list","forEach","record","push","concat","useSelection","config","rowSelection","preserveSelectedRowKeys","selectedRowKeys","defaultSelectedRowKeys","getCheckboxProps","onChange","onSelectionChange","onSelect","onSelectAll","onSelectInvert","onSelectNone","onSelectMultiple","columnWidth","selectionColWidth","type","selectionType","selections","fixed","renderCell","customizeRenderCell","hideSelectAll","checkStrictly","prefixCls","pageData","getRecordByKey","getRowKey","expandType","locale","tableLocale","getPopupContainer","warning","multipleSelect","updatePrevSelectedIndex","item","mergedSelectedKeys","setMergedSelectedKeys","value","preserveRecordsRef","useRef","Map","updatePreserveRecordsCache","keys","newCache","key","current","has","get","set","useEffect","keyEntities","convertData","keysSet","Set","map","index","preserveRecords","Array","from","reduce","total","_ref","externalGetKey","childrenPropName","flattedData","checkboxPropsMap","checkboxProps","process","env","NODE_ENV","isCheckboxDisabled","r","_a","disabled","derivedSelectedKeys","derivedHalfSelectedKeys","checkedKeys","halfCheckedKeys","derivedSelectedKeySet","slice","derivedHalfSelectedKeySet","setSelectedKeys","method","availableKeys","records","undefined","triggerSingleSelection","selected","event","rows","k","mergedSelections","selectionList","selection","text","selectionAll","filter","checkProps","selectInvert","keySet","delete","add","deprecated","selectNone","Object","assign","_a2","_len","arguments","length","rest","_key","call","apply","transformColumns","columns","includes","col","cloneColumns","recordKeys","checkedCurrentAll","every","checkedCurrentSome","some","onSelectAllChange","changeKeys","title","columnTitleCheckbox","customizeSelections","menu","items","onSelectionClick","onClick","label","createElement","className","allDisabledData","checked","_ref2","allDisabled","allDisabledAndChecked","_ref3","allDisabledSomeChecked","_ref4","indeterminate","skipGroup","_","node","e","stopPropagation","nativeEvent","mergedIndeterminate","_ref5","shiftKey","currentSelectedIndex","findIndex","isMultiple","changedKeys","recordKey","originCheckedKeys","result","nextCheckedKeys","tempKeySet","renderSelectionCell","columnType","expandColumn","restColumns","selectionColumnIndex","indexOf","column","prevCol","nextCol","mergedFixed","columnCls","renderColumnTitle","columnTitle","selectionColumn","width","render","onCell"],"sources":["C:/Users/Аришина)/source/repos/PromoCursed/node_modules/antd/es/table/hooks/useSelection.js"],"sourcesContent":["\"use client\";\n\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport { useCallback, useMemo } from 'react';\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport classNames from 'classnames';\nimport { INTERNAL_COL_DEFINE } from 'rc-table';\nimport { arrAdd, arrDel } from \"rc-tree/es/util\";\nimport { conductCheck } from \"rc-tree/es/utils/conductUtil\";\nimport { convertDataToEntities } from \"rc-tree/es/utils/treeUtil\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport useMultipleSelect from '../../_util/hooks/useMultipleSelect';\nimport { devUseWarning } from '../../_util/warning';\nimport Checkbox from '../../checkbox';\nimport Dropdown from '../../dropdown';\nimport Radio from '../../radio';\n// TODO: warning if use ajax!!!\nexport const SELECTION_COLUMN = {};\nexport const SELECTION_ALL = 'SELECT_ALL';\nexport const SELECTION_INVERT = 'SELECT_INVERT';\nexport const SELECTION_NONE = 'SELECT_NONE';\nconst EMPTY_LIST = [];\nconst flattenData = (childrenColumnName, data) => {\n let list = [];\n (data || []).forEach(record => {\n list.push(record);\n if (record && typeof record === 'object' && childrenColumnName in record) {\n list = [].concat(_toConsumableArray(list), _toConsumableArray(flattenData(childrenColumnName, record[childrenColumnName])));\n }\n });\n return list;\n};\nconst useSelection = (config, rowSelection) => {\n const {\n preserveSelectedRowKeys,\n selectedRowKeys,\n defaultSelectedRowKeys,\n getCheckboxProps,\n onChange: onSelectionChange,\n onSelect,\n onSelectAll,\n onSelectInvert,\n onSelectNone,\n onSelectMultiple,\n columnWidth: selectionColWidth,\n type: selectionType,\n selections,\n fixed,\n renderCell: customizeRenderCell,\n hideSelectAll,\n checkStrictly = true\n } = rowSelection || {};\n const {\n prefixCls,\n data,\n pageData,\n getRecordByKey,\n getRowKey,\n expandType,\n childrenColumnName,\n locale: tableLocale,\n getPopupContainer\n } = config;\n const warning = devUseWarning('Table');\n // ========================= MultipleSelect =========================\n const [multipleSelect, updatePrevSelectedIndex] = useMultipleSelect(item => item);\n // ========================= Keys =========================\n const [mergedSelectedKeys, setMergedSelectedKeys] = useMergedState(selectedRowKeys || defaultSelectedRowKeys || EMPTY_LIST, {\n value: selectedRowKeys\n });\n // ======================== Caches ========================\n const preserveRecordsRef = React.useRef(new Map());\n const updatePreserveRecordsCache = useCallback(keys => {\n if (preserveSelectedRowKeys) {\n const newCache = new Map();\n // Keep key if mark as preserveSelectedRowKeys\n keys.forEach(key => {\n let record = getRecordByKey(key);\n if (!record && preserveRecordsRef.current.has(key)) {\n record = preserveRecordsRef.current.get(key);\n }\n newCache.set(key, record);\n });\n // Refresh to new cache\n preserveRecordsRef.current = newCache;\n }\n }, [getRecordByKey, preserveSelectedRowKeys]);\n // Update cache with selectedKeys\n React.useEffect(() => {\n updatePreserveRecordsCache(mergedSelectedKeys);\n }, [mergedSelectedKeys]);\n const {\n keyEntities\n } = useMemo(() => {\n if (checkStrictly) {\n return {\n keyEntities: null\n };\n }\n let convertData = data;\n if (preserveSelectedRowKeys) {\n const keysSet = new Set(data.map((record, index) => getRowKey(record, index)));\n // remove preserveRecords that duplicate data\n const preserveRecords = Array.from(preserveRecordsRef.current).reduce((total, _ref) => {\n let [key, value] = _ref;\n return keysSet.has(key) ? total : total.concat(value);\n }, []);\n convertData = [].concat(_toConsumableArray(convertData), _toConsumableArray(preserveRecords));\n }\n return convertDataToEntities(convertData, {\n externalGetKey: getRowKey,\n childrenPropName: childrenColumnName\n });\n }, [data, getRowKey, checkStrictly, childrenColumnName, preserveSelectedRowKeys]);\n // Get flatten data\n const flattedData = useMemo(() => flattenData(childrenColumnName, pageData), [childrenColumnName, pageData]);\n // Get all checkbox props\n const checkboxPropsMap = useMemo(() => {\n const map = new Map();\n flattedData.forEach((record, index) => {\n const key = getRowKey(record, index);\n const checkboxProps = (getCheckboxProps ? getCheckboxProps(record) : null) || {};\n map.set(key, checkboxProps);\n process.env.NODE_ENV !== \"production\" ? warning(!('checked' in checkboxProps || 'defaultChecked' in checkboxProps), 'usage', 'Do not set `checked` or `defaultChecked` in `getCheckboxProps`. Please use `selectedRowKeys` instead.') : void 0;\n });\n return map;\n }, [flattedData, getRowKey, getCheckboxProps]);\n const isCheckboxDisabled = useCallback(r => {\n var _a;\n return !!((_a = checkboxPropsMap.get(getRowKey(r))) === null || _a === void 0 ? void 0 : _a.disabled);\n }, [checkboxPropsMap, getRowKey]);\n const [derivedSelectedKeys, derivedHalfSelectedKeys] = useMemo(() => {\n if (checkStrictly) {\n return [mergedSelectedKeys || [], []];\n }\n const {\n checkedKeys,\n halfCheckedKeys\n } = conductCheck(mergedSelectedKeys, true, keyEntities, isCheckboxDisabled);\n return [checkedKeys || [], halfCheckedKeys];\n }, [mergedSelectedKeys, checkStrictly, keyEntities, isCheckboxDisabled]);\n const derivedSelectedKeySet = useMemo(() => {\n const keys = selectionType === 'radio' ? derivedSelectedKeys.slice(0, 1) : derivedSelectedKeys;\n return new Set(keys);\n }, [derivedSelectedKeys, selectionType]);\n const derivedHalfSelectedKeySet = useMemo(() => selectionType === 'radio' ? new Set() : new Set(derivedHalfSelectedKeys), [derivedHalfSelectedKeys, selectionType]);\n // Reset if rowSelection reset\n React.useEffect(() => {\n if (!rowSelection) {\n setMergedSelectedKeys(EMPTY_LIST);\n }\n }, [!!rowSelection]);\n const setSelectedKeys = useCallback((keys, method) => {\n let availableKeys;\n let records;\n updatePreserveRecordsCache(keys);\n if (preserveSelectedRowKeys) {\n availableKeys = keys;\n records = keys.map(key => preserveRecordsRef.current.get(key));\n } else {\n // Filter key which not exist in the `dataSource`\n availableKeys = [];\n records = [];\n keys.forEach(key => {\n const record = getRecordByKey(key);\n if (record !== undefined) {\n availableKeys.push(key);\n records.push(record);\n }\n });\n }\n setMergedSelectedKeys(availableKeys);\n onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(availableKeys, records, {\n type: method\n });\n }, [setMergedSelectedKeys, getRecordByKey, onSelectionChange, preserveSelectedRowKeys]);\n // ====================== Selections ======================\n // Trigger single `onSelect` event\n const triggerSingleSelection = useCallback((key, selected, keys, event) => {\n if (onSelect) {\n const rows = keys.map(k => getRecordByKey(k));\n onSelect(getRecordByKey(key), selected, rows, event);\n }\n setSelectedKeys(keys, 'single');\n }, [onSelect, getRecordByKey, setSelectedKeys]);\n const mergedSelections = useMemo(() => {\n if (!selections || hideSelectAll) {\n return null;\n }\n const selectionList = selections === true ? [SELECTION_ALL, SELECTION_INVERT, SELECTION_NONE] : selections;\n return selectionList.map(selection => {\n if (selection === SELECTION_ALL) {\n return {\n key: 'all',\n text: tableLocale.selectionAll,\n onSelect() {\n setSelectedKeys(data.map((record, index) => getRowKey(record, index)).filter(key => {\n const checkProps = checkboxPropsMap.get(key);\n return !(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled) || derivedSelectedKeySet.has(key);\n }), 'all');\n }\n };\n }\n if (selection === SELECTION_INVERT) {\n return {\n key: 'invert',\n text: tableLocale.selectInvert,\n onSelect() {\n const keySet = new Set(derivedSelectedKeySet);\n pageData.forEach((record, index) => {\n const key = getRowKey(record, index);\n const checkProps = checkboxPropsMap.get(key);\n if (!(checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled)) {\n if (keySet.has(key)) {\n keySet.delete(key);\n } else {\n keySet.add(key);\n }\n }\n });\n const keys = Array.from(keySet);\n if (onSelectInvert) {\n warning.deprecated(false, 'onSelectInvert', 'onChange');\n onSelectInvert(keys);\n }\n setSelectedKeys(keys, 'invert');\n }\n };\n }\n if (selection === SELECTION_NONE) {\n return {\n key: 'none',\n text: tableLocale.selectNone,\n onSelect() {\n onSelectNone === null || onSelectNone === void 0 ? void 0 : onSelectNone();\n setSelectedKeys(Array.from(derivedSelectedKeySet).filter(key => {\n const checkProps = checkboxPropsMap.get(key);\n return checkProps === null || checkProps === void 0 ? void 0 : checkProps.disabled;\n }), 'none');\n }\n };\n }\n return selection;\n }).map(selection => Object.assign(Object.assign({}, selection), {\n onSelect: function () {\n var _a2;\n var _a;\n for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) {\n rest[_key] = arguments[_key];\n }\n (_a = selection.onSelect) === null || _a === void 0 ? void 0 : (_a2 = _a).call.apply(_a2, [selection].concat(rest));\n updatePrevSelectedIndex(null);\n }\n }));\n }, [selections, derivedSelectedKeySet, pageData, getRowKey, onSelectInvert, setSelectedKeys]);\n // ======================= Columns ========================\n const transformColumns = useCallback(columns => {\n var _a;\n // >>>>>>>>>>> Skip if not exists `rowSelection`\n if (!rowSelection) {\n process.env.NODE_ENV !== \"production\" ? warning(!columns.includes(SELECTION_COLUMN), 'usage', '`rowSelection` is not config but `SELECTION_COLUMN` exists in the `columns`.') : void 0;\n return columns.filter(col => col !== SELECTION_COLUMN);\n }\n // >>>>>>>>>>> Support selection\n let cloneColumns = _toConsumableArray(columns);\n const keySet = new Set(derivedSelectedKeySet);\n // Record key only need check with enabled\n const recordKeys = flattedData.map(getRowKey).filter(key => !checkboxPropsMap.get(key).disabled);\n const checkedCurrentAll = recordKeys.every(key => keySet.has(key));\n const checkedCurrentSome = recordKeys.some(key => keySet.has(key));\n const onSelectAllChange = () => {\n const changeKeys = [];\n if (checkedCurrentAll) {\n recordKeys.forEach(key => {\n keySet.delete(key);\n changeKeys.push(key);\n });\n } else {\n recordKeys.forEach(key => {\n if (!keySet.has(key)) {\n keySet.add(key);\n changeKeys.push(key);\n }\n });\n }\n const keys = Array.from(keySet);\n onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll(!checkedCurrentAll, keys.map(k => getRecordByKey(k)), changeKeys.map(k => getRecordByKey(k)));\n setSelectedKeys(keys, 'all');\n updatePrevSelectedIndex(null);\n };\n // ===================== Render =====================\n // Title Cell\n let title;\n let columnTitleCheckbox;\n if (selectionType !== 'radio') {\n let customizeSelections;\n if (mergedSelections) {\n const menu = {\n getPopupContainer,\n items: mergedSelections.map((selection, index) => {\n const {\n key,\n text,\n onSelect: onSelectionClick\n } = selection;\n return {\n key: key !== null && key !== void 0 ? key : index,\n onClick: () => {\n onSelectionClick === null || onSelectionClick === void 0 ? void 0 : onSelectionClick(recordKeys);\n },\n label: text\n };\n })\n };\n customizeSelections = /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-selection-extra`\n }, /*#__PURE__*/React.createElement(Dropdown, {\n menu: menu,\n getPopupContainer: getPopupContainer\n }, /*#__PURE__*/React.createElement(\"span\", null, /*#__PURE__*/React.createElement(DownOutlined, null))));\n }\n const allDisabledData = flattedData.map((record, index) => {\n const key = getRowKey(record, index);\n const checkboxProps = checkboxPropsMap.get(key) || {};\n return Object.assign({\n checked: keySet.has(key)\n }, checkboxProps);\n }).filter(_ref2 => {\n let {\n disabled\n } = _ref2;\n return disabled;\n });\n const allDisabled = !!allDisabledData.length && allDisabledData.length === flattedData.length;\n const allDisabledAndChecked = allDisabled && allDisabledData.every(_ref3 => {\n let {\n checked\n } = _ref3;\n return checked;\n });\n const allDisabledSomeChecked = allDisabled && allDisabledData.some(_ref4 => {\n let {\n checked\n } = _ref4;\n return checked;\n });\n columnTitleCheckbox = /*#__PURE__*/React.createElement(Checkbox, {\n checked: !allDisabled ? !!flattedData.length && checkedCurrentAll : allDisabledAndChecked,\n indeterminate: !allDisabled ? !checkedCurrentAll && checkedCurrentSome : !allDisabledAndChecked && allDisabledSomeChecked,\n onChange: onSelectAllChange,\n disabled: flattedData.length === 0 || allDisabled,\n \"aria-label\": customizeSelections ? 'Custom selection' : 'Select all',\n skipGroup: true\n });\n title = !hideSelectAll && ( /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-selection`\n }, columnTitleCheckbox, customizeSelections));\n }\n // Body Cell\n let renderCell;\n if (selectionType === 'radio') {\n renderCell = (_, record, index) => {\n const key = getRowKey(record, index);\n const checked = keySet.has(key);\n return {\n node: ( /*#__PURE__*/React.createElement(Radio, Object.assign({}, checkboxPropsMap.get(key), {\n checked: checked,\n onClick: e => e.stopPropagation(),\n onChange: event => {\n if (!keySet.has(key)) {\n triggerSingleSelection(key, true, [key], event.nativeEvent);\n }\n }\n }))),\n checked\n };\n };\n } else {\n renderCell = (_, record, index) => {\n var _a;\n const key = getRowKey(record, index);\n const checked = keySet.has(key);\n const indeterminate = derivedHalfSelectedKeySet.has(key);\n const checkboxProps = checkboxPropsMap.get(key);\n let mergedIndeterminate;\n if (expandType === 'nest') {\n mergedIndeterminate = indeterminate;\n process.env.NODE_ENV !== \"production\" ? warning(typeof (checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.indeterminate) !== 'boolean', 'usage', 'set `indeterminate` using `rowSelection.getCheckboxProps` is not allowed with tree structured dataSource.') : void 0;\n } else {\n mergedIndeterminate = (_a = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.indeterminate) !== null && _a !== void 0 ? _a : indeterminate;\n }\n // Record checked\n return {\n node: ( /*#__PURE__*/React.createElement(Checkbox, Object.assign({}, checkboxProps, {\n indeterminate: mergedIndeterminate,\n checked: checked,\n skipGroup: true,\n onClick: e => e.stopPropagation(),\n onChange: _ref5 => {\n let {\n nativeEvent\n } = _ref5;\n const {\n shiftKey\n } = nativeEvent;\n const currentSelectedIndex = recordKeys.findIndex(item => item === key);\n const isMultiple = derivedSelectedKeys.some(item => recordKeys.includes(item));\n if (shiftKey && checkStrictly && isMultiple) {\n const changedKeys = multipleSelect(currentSelectedIndex, recordKeys, keySet);\n const keys = Array.from(keySet);\n onSelectMultiple === null || onSelectMultiple === void 0 ? void 0 : onSelectMultiple(!checked, keys.map(recordKey => getRecordByKey(recordKey)), changedKeys.map(recordKey => getRecordByKey(recordKey)));\n setSelectedKeys(keys, 'multiple');\n } else {\n // Single record selected\n const originCheckedKeys = derivedSelectedKeys;\n if (checkStrictly) {\n const checkedKeys = checked ? arrDel(originCheckedKeys, key) : arrAdd(originCheckedKeys, key);\n triggerSingleSelection(key, !checked, checkedKeys, nativeEvent);\n } else {\n // Always fill first\n const result = conductCheck([].concat(_toConsumableArray(originCheckedKeys), [key]), true, keyEntities, isCheckboxDisabled);\n const {\n checkedKeys,\n halfCheckedKeys\n } = result;\n let nextCheckedKeys = checkedKeys;\n // If remove, we do it again to correction\n if (checked) {\n const tempKeySet = new Set(checkedKeys);\n tempKeySet.delete(key);\n nextCheckedKeys = conductCheck(Array.from(tempKeySet), {\n checked: false,\n halfCheckedKeys\n }, keyEntities, isCheckboxDisabled).checkedKeys;\n }\n triggerSingleSelection(key, !checked, nextCheckedKeys, nativeEvent);\n }\n }\n if (checked) {\n updatePrevSelectedIndex(null);\n } else {\n updatePrevSelectedIndex(currentSelectedIndex);\n }\n }\n }))),\n checked\n };\n };\n }\n const renderSelectionCell = (_, record, index) => {\n const {\n node,\n checked\n } = renderCell(_, record, index);\n if (customizeRenderCell) {\n return customizeRenderCell(checked, record, index, node);\n }\n return node;\n };\n // Insert selection column if not exist\n if (!cloneColumns.includes(SELECTION_COLUMN)) {\n // Always after expand icon\n if (cloneColumns.findIndex(col => {\n var _a;\n return ((_a = col[INTERNAL_COL_DEFINE]) === null || _a === void 0 ? void 0 : _a.columnType) === 'EXPAND_COLUMN';\n }) === 0) {\n const [expandColumn, ...restColumns] = cloneColumns;\n cloneColumns = [expandColumn, SELECTION_COLUMN].concat(_toConsumableArray(restColumns));\n } else {\n // Normal insert at first column\n cloneColumns = [SELECTION_COLUMN].concat(_toConsumableArray(cloneColumns));\n }\n }\n // Deduplicate selection column\n const selectionColumnIndex = cloneColumns.indexOf(SELECTION_COLUMN);\n process.env.NODE_ENV !== \"production\" ? warning(cloneColumns.filter(col => col === SELECTION_COLUMN).length <= 1, 'usage', 'Multiple `SELECTION_COLUMN` exist in `columns`.') : void 0;\n cloneColumns = cloneColumns.filter((column, index) => column !== SELECTION_COLUMN || index === selectionColumnIndex);\n // Fixed column logic\n const prevCol = cloneColumns[selectionColumnIndex - 1];\n const nextCol = cloneColumns[selectionColumnIndex + 1];\n let mergedFixed = fixed;\n if (mergedFixed === undefined) {\n if ((nextCol === null || nextCol === void 0 ? void 0 : nextCol.fixed) !== undefined) {\n mergedFixed = nextCol.fixed;\n } else if ((prevCol === null || prevCol === void 0 ? void 0 : prevCol.fixed) !== undefined) {\n mergedFixed = prevCol.fixed;\n }\n }\n if (mergedFixed && prevCol && ((_a = prevCol[INTERNAL_COL_DEFINE]) === null || _a === void 0 ? void 0 : _a.columnType) === 'EXPAND_COLUMN' && prevCol.fixed === undefined) {\n prevCol.fixed = mergedFixed;\n }\n const columnCls = classNames(`${prefixCls}-selection-col`, {\n [`${prefixCls}-selection-col-with-dropdown`]: selections && selectionType === 'checkbox'\n });\n const renderColumnTitle = () => {\n if (!(rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.columnTitle)) {\n return title;\n }\n if (typeof rowSelection.columnTitle === 'function') {\n return rowSelection.columnTitle(columnTitleCheckbox);\n }\n return rowSelection.columnTitle;\n };\n // Replace with real selection column\n const selectionColumn = {\n fixed: mergedFixed,\n width: selectionColWidth,\n className: `${prefixCls}-selection-column`,\n title: renderColumnTitle(),\n render: renderSelectionCell,\n onCell: rowSelection.onCell,\n [INTERNAL_COL_DEFINE]: {\n className: columnCls\n }\n };\n return cloneColumns.map(col => col === SELECTION_COLUMN ? selectionColumn : col);\n }, [getRowKey, flattedData, rowSelection, derivedSelectedKeys, derivedSelectedKeySet, derivedHalfSelectedKeySet, selectionColWidth, mergedSelections, expandType, checkboxPropsMap, onSelectMultiple, triggerSingleSelection, isCheckboxDisabled]);\n return [transformColumns, derivedSelectedKeySet];\n};\nexport default useSelection;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |