UNPKG

mframejs

Version:
179 lines 9.53 kB
Object.defineProperty(exports, "__esModule", { value: true }); var subscribeClassProperty_1 = require("./property/subscribeClassProperty"); var bindingEngine_1 = require("./bindingEngine"); var exported_1 = require("../interface/exported"); var createBindingContext_1 = require("./createBindingContext"); var subscribeChangeBaseClass = (function () { function class_1(_class, key, meta) { this._class = _class; this.key = key; this.meta = meta; } class_1.prototype.call = function (newValue, oldValue) { if (oldValue !== newValue) { var key = this.key; var _class = this._class; var META = this.meta; if (_class.$bindingContext && key in _class.$bindingContext.$context) { if (_class.$bindingContext.$context[key] !== newValue) { _class.$bindingContext.$context[key] = newValue; } } if (_class[key + "Changed"]) { _class[key + "Changed"](newValue, oldValue); } if (_class["attributesChanged"]) { _class["attributesChanged"](key, newValue, oldValue); } if (META[key].options.changeHandler) { _class[META[key].options.changeHandler](key, newValue, oldValue); } } }; return class_1; }()); function subscribeClassMetaBinding(_class) { var META = _class.__proto__[exported_1.CONSTANTS.META_BINDABLE]; if (META) { var keys = Object.keys(META); var _loop_1 = function (key) { if (!_class.__metaBinding) { _class.__metaBinding = {}; } if (!_class.__metaBinding[key]) { _class.__metaBinding[key] = {}; _class.__metaBinding[key].key = key; _class.__metaBinding[key].options = {}; } var CLASSMETA = _class.__metaBinding[key]; var subscribeInternal = new subscribeChangeBaseClass(_class, key, META); subscribeClassProperty_1.subscribeClassProperty(createBindingContext_1.createBindingContext(_class), key, subscribeInternal); CLASSMETA.options.subscribeInternal = subscribeInternal; if (META[key].observableOnly === true) { } else { if (_class.$attributes && !_class.$attribute) { if (_class.$element && _class.$bindingContext) { var el = _class.$element; var att = META[key].options.attribute + ".bind"; var attrValue = el.getAttribute(att); if (attrValue) { var subscribeExternal = Object.create({ call: function (newValue, oldValue) { if (oldValue !== newValue) { _class[key] = newValue; } } }); subscribeClassProperty_1.subscribeClassProperty(_class.$bindingContext, attrValue, subscribeExternal); CLASSMETA.options.subscribeExternal = subscribeExternal; } else { att = "" + META[key].options.attribute; attrValue = el.getAttribute(att); if (attrValue) { if (attrValue.indexOf('${') !== -1 || attrValue.indexOf('@{') !== -1) { var val = bindingEngine_1.BindingEngine.tokenizeParseAndTraverseAST(attrValue, _class.$bindingContext); if (val) { _class[key] = val; } } else { _class[key] = attrValue; } } } } } else { if (_class.$element && _class.$bindingContext) { if (keys.length === 1 && key === 'value') { var el = _class.$element; var att = _class.$attribute.name; var haveBind = att.indexOf('.bind'); var attrValue = el.getAttribute(att); if (haveBind !== -1) { var subscribeExternal = Object.create({ call: function (newValue, oldValue) { if (oldValue !== newValue) { _class[key] = newValue; } } }); subscribeClassProperty_1.subscribeClassProperty(_class.$bindingContext, attrValue, subscribeExternal); CLASSMETA.options.subscribeExternal = subscribeExternal; } else { attrValue = el.getAttribute(att); if (attrValue) { if (attrValue.indexOf('${') !== -1 || attrValue.indexOf('@{') !== -1) { var val = bindingEngine_1.BindingEngine.tokenizeParseAndTraverseAST(attrValue, _class.$bindingContext); if (val) { _class[key] = val; } } else { _class[key] = attrValue; } } } } else { var el = _class.$element; var attributeName = _class.$attribute.name; var att_1 = META[key].options.attribute + ".bind"; var attrValues = el.getAttribute(attributeName) ? el.getAttribute(attributeName).split(';') : null; if (attrValues) { var attrValue_1; attrValues.forEach(function (value) { var test = value.split(':'); if (test && test[0].trim() === att_1) { attrValue_1 = test[1]; } }); if (attrValue_1) { var subscribeExternal = Object.create({ call: function (newValue, oldValue) { if (oldValue !== newValue) { _class[key] = newValue; } } }); subscribeClassProperty_1.subscribeClassProperty(_class.$bindingContext, attrValue_1, subscribeExternal); CLASSMETA.options.subscribeExternal = subscribeExternal; } else { att_1 = "" + META[key].options.attribute; var attrValue_2; attrValues.forEach(function (value) { var test = value.split(':'); if (test && test[0].trim() === att_1) { attrValue_2 = test[1]; } }); if (attrValue_2) { if (attrValue_2.indexOf('${') !== -1 || attrValue_2.indexOf('@{') !== -1) { var val = bindingEngine_1.BindingEngine.tokenizeParseAndTraverseAST(attrValue_2, _class.$bindingContext); if (val) { _class[key] = val; } } else { _class[key] = attrValue_2; } } } } } } } } }; for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { var key = keys_1[_i]; _loop_1(key); } } } exports.subscribeClassMetaBinding = subscribeClassMetaBinding; //# sourceMappingURL=subscribeClassMetaBinding.js.map