object/command.js

import { Observable } from "domodel"

/**
 * @global
 */
class Command extends Observable {

	/**
	 * @param   {object}  model
	 * @param   {Binding} binding
	 */
	constructor(model, binding) {
		this._model = model
		this._binding = binding
	}

	/**
	 * @type {object}
	 */
	get model() {
		return this._model
	}

	/**
	 * @type {Binding}
	 */
	get binding() {
		return this._binding
	}

	/**
	 * @param   {object} data
	 */
	insertNode(data) {
		data.range.insertNode(data.fragment)
	}

	/**
	 * @param   {object} data
	 * @returns {boolean}
	 */
	testSelection(data) {
		return false
	}

	/**
	 * @abstract
	 * @param   {object} data
	 */
	beforeExtract(data) {}

	/**
	 * @abstract
	 * @param   {object} data
	 * @returns {BBNode}
	 */
	createBBNode(data) {}

}

export default Command