UNPKG

aurelia-bootstrap

Version:
65 lines (55 loc) 2.02 kB
/* */ define(['exports', './binding-signaler'], function (exports, _bindingSignaler) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.SignalBindingBehavior = undefined; var SignalBindingBehavior = exports.SignalBindingBehavior = function () { SignalBindingBehavior.inject = function inject() { return [_bindingSignaler.BindingSignaler]; }; function SignalBindingBehavior(bindingSignaler) { this.signals = bindingSignaler.signals; } SignalBindingBehavior.prototype.bind = function bind(binding, source) { if (!binding.updateTarget) { throw new Error('Only property bindings and string interpolation bindings can be signaled. Trigger, delegate and call bindings cannot be signaled.'); } if (arguments.length === 3) { var name = arguments[2]; var bindings = this.signals[name] || (this.signals[name] = []); bindings.push(binding); binding.signalName = name; } else if (arguments.length > 3) { var names = Array.prototype.slice.call(arguments, 2); var i = names.length; while (i--) { var _name = names[i]; var _bindings = this.signals[_name] || (this.signals[_name] = []); _bindings.push(binding); } binding.signalName = names; } else { throw new Error('Signal name is required.'); } }; SignalBindingBehavior.prototype.unbind = function unbind(binding, source) { var name = binding.signalName; binding.signalName = null; if (Array.isArray(name)) { var names = name; var i = names.length; while (i--) { var n = names[i]; var bindings = this.signals[n]; bindings.splice(bindings.indexOf(binding), 1); } } else { var _bindings2 = this.signals[name]; _bindings2.splice(_bindings2.indexOf(binding), 1); } }; return SignalBindingBehavior; }(); });