!(function(global, undefined) {
"use strict";
var AA;
var hasOwn = {}.hasOwnProperty;
var forEach = [].forEach;
global.AA = AA = {
linkWorks: false
};
if (typeof Object.observe !== 'function') {
AA.link = function() {
console.log('Object.observe is not defined. I\'ll get to your browser soon...');
};
return;
}
AA.linkWorks = true;
function updateObjectFromDOM(object, className, event) {
var newValue = event.target.value;
if (newValue !== object[className]) {
object[className] = event.target.value;
}
}
function updateDomFromObject(domNode, prop, changes) {
var newValue = changes[0].object[prop];
var contentProperty;
if (typeof domNode.value === 'undefined') {
contentProperty = 'textContent';
} else {
contentProperty = 'value';
}
if (newValue !== domNode[contentProperty]) {
domNode[contentProperty] = newValue;
}
}
AA.link = function(domNode, object) {
for (var prop in object) {
if (hasOwn.call(object, prop)) {
var targetNodes = domNode.querySelectorAll('.' + prop);
forEach.call(targetNodes, function(targetNode) {
targetNode.addEventListener('change', updateObjectFromDOM.bind(null, object, prop));
targetNode.addEventListener('keyup', updateObjectFromDOM.bind(null, object, prop));
Object.observe(object, updateDomFromObject.bind(null, targetNode, prop));
});
}
}
}
}).call(null, (1,eval)("this"));