Source: core/Picker.js

import { StateGroup } from '@uino/base-thing';

const __ = {
	private: Symbol('private'),
}

/**
 * @class Picker
 * The picker.
 * @memberof THING
 * @public
 */
class Picker {

	/**
	 * The picker to pick object(s).
	 */
	constructor() {
		this[__.private] = {};
		let _private = this[__.private];

		_private.stateGroup = new StateGroup();

		// Enable pick as default
		this.enable = true;
	}

	dispose() {
		let _private = this[__.private];

		_private.stateGroup = null;
	}

	/**
	 * Get the state group.
	 * @type {Object}
	 * @private
	 */
	get stateGroup() {
		return this[__.private].stateGroup;
	}

	/**
	 * Enable/Disable picker.
	 * @type {Boolean}
	 * @example
	 * THING.App.current.picker.enable = false;
	 * let ret = THING.App.current.picker.enable == false;
	 * // @expect(ret == true);
	 * @public
	 */
	get enable() {
		return this[__.private].stateGroup.isEnable();
	}
	set enable(value) {
		this[__.private].stateGroup.enable(value, 'default', 1000);
	}

}

export { Picker }