Release
This commit is contained in:
70
client/islets/core/y-block-mixin/y-block-mixin.js
Normal file
70
client/islets/core/y-block-mixin/y-block-mixin.js
Normal file
@@ -0,0 +1,70 @@
|
||||
modules.define(
|
||||
'y-block-mixin',
|
||||
['inherit', 'y-event-emitter', 'y-event-manager'],
|
||||
function (provide, inherit, YEventEmitter, YEventManager) {
|
||||
|
||||
var YBlockMixin = inherit(YEventEmitter, {
|
||||
__constructor: function (blockInstance, options) {
|
||||
this._block = blockInstance;
|
||||
this._options = options;
|
||||
this._eventManager = new YEventManager(this);
|
||||
},
|
||||
|
||||
_getBlock: function () {
|
||||
return this._block;
|
||||
},
|
||||
|
||||
_bindTo: function (emitter, event, callback) {
|
||||
this._eventManager.bindTo(emitter, event, callback);
|
||||
return this;
|
||||
}
|
||||
}, {
|
||||
|
||||
/**
|
||||
* Возвращает имя миксина.
|
||||
* Этот метод следует перекрывать при создании новых миксинов.
|
||||
*
|
||||
* @static
|
||||
* @returns {String|null}
|
||||
*
|
||||
* @example
|
||||
* provide(inherit(YBlockMixin, {}, {
|
||||
* getMixinName: function() {
|
||||
* return 'auto-focus';
|
||||
* }
|
||||
* });
|
||||
*/
|
||||
getMixinName: function () {
|
||||
return 'y-block-mixin';
|
||||
},
|
||||
|
||||
fromBlock: function (blockInstance, options) {
|
||||
var mixinName = this.getMixinName();
|
||||
var mixins = this._getMixinsFromDomNode(blockInstance.getDomNode());
|
||||
if (!mixins[mixinName]) {
|
||||
var Mixin = this;
|
||||
mixins[mixinName] = new Mixin(blockInstance, options);
|
||||
}
|
||||
return mixins[mixinName];
|
||||
},
|
||||
|
||||
/**
|
||||
* Возвращает инстанции миксинов для данного DOM-элемента.
|
||||
*
|
||||
* @param {jQuery} domNode
|
||||
* @param {Boolean} [skipCreating]
|
||||
*/
|
||||
_getMixinsFromDomNode: function (domNode, skipCreating) {
|
||||
var data = domNode.data(this._mixinsStorageKey);
|
||||
if (!data && !skipCreating) {
|
||||
data = {};
|
||||
domNode.data(this._mixinsStorageKey, data);
|
||||
}
|
||||
return data;
|
||||
|
||||
},
|
||||
|
||||
_mixinsStorageKey: 'y-block-mixin'
|
||||
});
|
||||
provide(YBlockMixin);
|
||||
});
|
||||
Reference in New Issue
Block a user