const defaultOptions = {
	only: true
}


export default function markSlideListController(options = defaultOptions) {
	const instances = {};
	const opened = {};
	const moving = {};
	let index = 0;
	const pipelines = {
		moving: [],
		opened: [],
		closed: [],
	};
	init()

	function init() {
		if (options.only) {
			pipelines.moving.push(only)
		}
	}

	function pipelinesHandler(type, key) {
		pipelines[type].forEach(item => {
			item.call(this, key)
		})
	}

	function only() {
		for (let key in opened) {
			const item = opened[key]
			item.hide()
		}
	}
	this.reg = ({
		instance,
		cb
	}) => {
		instances[index] = instance
		cb(index++)
	}

	this.moving = (key) => {
		moving[key] = instances[key]
		delete opened[key]
		pipelinesHandler('moving', key)
	}
	this.opened = (key) => {
		opened[key] = instances[key]
		delete moving[key]
		pipelinesHandler('opened', key)
	}
	this.closed = (key) => {
		delete opened[key]
		delete moving[key]
		pipelinesHandler('closed', key)
	}
}
