import {Cascader} from "antd";
import React, {useEffect} from "react";


const prevSelectValues: Id[][] = [];

// function buildValues(options: OptionItem[], selectedValues: Id[][], allValue = -1) {
// 	const values: Id[][] = []
// 	selectedValues.forEach(item => {
// 		if (item.length === 0) {
// 			return;
// 		}
// 		if (item.length == 1) {
// 			if (item[0] == allValue) {
// 				values.push([allValue]);
// 				return;
// 			}
// 			// 只有1个值 表示选择了一级分类下的所有二级分类
// 			const op = options.find(option => option.value === item[0]);
// 			if (!op || !op.children || op.children.length === 0) {
// 				// 没有找到或者没有二级分类
// 				return;
// 			}
// 			// 只有一级分类
// 			op.children.forEach(child => {
// 				values.push([item[0], child.value]);
// 			})
// 			return;
// 		}
// 		values.push(item)
// 	})
// 	return values
// }

// 获取两个数组的差集
// function getValuesDiff(values: Id[][], prevValues: Id[][]) {
// 	if (values.length != prevValues.length) {
// 		const moreItems = values.length > prevValues.length ? values : prevValues;
// 		const lessItems = values.length > prevValues.length ? prevValues : values;
// 		const lessItemsKeys = lessItems.map(s => s.join('-'));
// 		for (let i = 0; i < moreItems.length; i++) {
// 			const item = moreItems[i], index = lessItemsKeys.indexOf(item.join('-'));
// 			if (index === -1) {
// 				return item;
// 			}
// 		}
// 	}
// 	return null;
// }
//
// function getAllValue(options: OptionItem[]) {
// 	const values: Id[][] = []
// 	options.forEach(option => {
// 		if (option.children && option.children.length > 0) {
// 			option.children.forEach(child => {
// 				values.push([option.value, child.value]);
// 			})
// 		} else {
// 			values.push([option.value]);
// 		}
// 	})
// 	return values
// }

export default function ArticleCascader(props: {
	options: OptionItem[];
	onChange: (values: Id[][]) => void;
}) {
	const [selectValues, _setSelectValues] = React.useState<Id[][]>([])
	useEffect(() => {
		// 清除上一次的选中值
		prevSelectValues.length = 0;
	}, [])

	const setSelectValues = (value: Id[][]) => {
		_setSelectValues(value)
		//console.log(value,value.some(s=>s[0] == -1))
		props.onChange?.(value)
	}
	const handleChange = (values: Id[][]) => {
		setSelectValues(values.filter(s=>s.length > 1 || s[0] != -1))
	}

	return (<Cascader
		options={props.options}
		className="article-cascader min-w-[230px]"
		placeholder="请选择你要筛选的新闻来源"
		value={selectValues}
		onChange={handleChange}
		displayRender={label => label.join('-')}
		expandTrigger="click"
		multiple
		maxTagCount="responsive"

	/>)
}