2018-10-18 07:24:20 +00:00
|
|
|
import EventEmitter from './event-emitter';
|
|
|
|
|
2017-02-06 17:01:04 +00:00
|
|
|
/**
|
|
|
|
* Base class for component controllers.
|
|
|
|
*/
|
2018-10-18 07:24:20 +00:00
|
|
|
export default class Component extends EventEmitter {
|
2017-02-06 17:01:04 +00:00
|
|
|
/**
|
|
|
|
* Contructor.
|
2017-04-28 13:04:29 +00:00
|
|
|
*
|
2017-02-06 17:01:04 +00:00
|
|
|
* @param {HTMLElement} $element The main component element
|
2018-02-12 12:16:49 +00:00
|
|
|
* @param {$rootScope.Scope} $scope The element scope
|
2017-02-06 17:01:04 +00:00
|
|
|
*/
|
2018-02-12 12:16:49 +00:00
|
|
|
constructor($element, $scope) {
|
2018-10-18 07:24:20 +00:00
|
|
|
super($element, $scope);
|
2017-02-06 17:01:04 +00:00
|
|
|
this.element = $element[0];
|
2018-02-20 09:00:19 +00:00
|
|
|
this.element.$ctrl = this;
|
|
|
|
this.$element = $element;
|
|
|
|
this.$ = $scope;
|
2017-02-06 17:01:04 +00:00
|
|
|
}
|
2018-10-18 07:24:20 +00:00
|
|
|
/**
|
|
|
|
* The component owner window.
|
|
|
|
*/
|
|
|
|
get window() {
|
|
|
|
return this.document.defaultView;
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* The component owner document.
|
|
|
|
*/
|
|
|
|
get document() {
|
|
|
|
return this.element.ownerDocument;
|
|
|
|
}
|
2017-02-06 17:01:04 +00:00
|
|
|
}
|
2018-02-12 12:16:49 +00:00
|
|
|
Component.$inject = ['$element', '$scope'];
|